From 522dee807f40a6958a8a15534a2ed631398f6afb Mon Sep 17 00:00:00 2001 From: Marcelo Roberto Jimenez Date: Sat, 8 Jul 2006 12:38:45 +0000 Subject: [PATCH] Merging trunk to branch 1.4.x git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/branches/branch-1.4.x@49 119443c7-1b9e-41f8-b6fc-b9c35fce742c --- ChangeLog | 16 +- Makefile.am | 2 +- THANKS | 17 +- build/inc/config.h | 58 +- build/libupnp.bpf | 50 ++ build/libupnp.bpr | 128 +++++ build/libupnp.dsp | 287 ++++++++++ build/libupnp.dsw | 29 + configure.ac | 10 +- docs/dist/IXML_Programming_Guide.pdf | Bin 0 -> 242304 bytes docs/dist/Makefile.am | 508 ++++++++++++++++++ docs/dist/UPnP_Programming_Guide.pdf | Bin 0 -> 371203 bytes docs/dist/html/ixml/DOMInterfaces.html | 48 ++ docs/dist/html/ixml/General.html | 16 + docs/dist/html/ixml/IXMLAPI.html | 67 +++ docs/dist/html/ixml/InterfaceitAttr.html | 27 + .../html/ixml/InterfaceitCDATASection.html | 33 ++ docs/dist/html/ixml/InterfaceitDocument.html | 103 ++++ docs/dist/html/ixml/InterfaceitElement.html | 96 ++++ .../html/ixml/InterfaceitNamedNodeMap.html | 59 ++ docs/dist/html/ixml/InterfaceitNode.html | 114 ++++ docs/dist/html/ixml/InterfaceitNodeList.html | 35 ++ docs/dist/html/ixml/Introduction.html | 40 ++ docs/dist/html/ixml/License.html | 45 ++ docs/dist/html/ixml/icon1.gif | Bin 0 -> 326 bytes docs/dist/html/ixml/icon2.gif | Bin 0 -> 326 bytes docs/dist/html/ixml/index.html | 41 ++ docs/dist/html/ixml/ixmlAttr_free.html | 23 + .../dist/html/ixml/ixmlCDATASection_free.html | 23 + .../dist/html/ixml/ixmlCDATASection_init.html | 23 + docs/dist/html/ixml/ixmlCloneDOMString.html | 25 + .../ixml/ixmlDocument_createAttribute.html | 24 + .../ixml/ixmlDocument_createAttributeEx.html | 38 ++ .../ixml/ixmlDocument_createAttributeNS.html | 27 + .../ixmlDocument_createAttributeNSEx.html | 40 ++ .../ixml/ixmlDocument_createCDATASection.html | 27 + .../ixmlDocument_createCDATASectionEx.html | 39 ++ .../ixml/ixmlDocument_createDocument.html | 23 + .../ixml/ixmlDocument_createDocumentEx.html | 32 ++ .../html/ixml/ixmlDocument_createElement.html | 29 + .../ixml/ixmlDocument_createElementEx.html | 42 ++ .../ixml/ixmlDocument_createElementNS.html | 29 + .../ixml/ixmlDocument_createElementNSEx.html | 42 ++ .../ixml/ixmlDocument_createTextNode.html | 25 + .../ixml/ixmlDocument_createTextNodeEx.html | 37 ++ docs/dist/html/ixml/ixmlDocument_free.html | 26 + .../ixml/ixmlDocument_getElementById.html | 26 + .../ixmlDocument_getElementsByTagName.html | 27 + .../ixmlDocument_getElementsByTagNameNS.html | 34 ++ .../html/ixml/ixmlDocument_importNode.html | 43 ++ docs/dist/html/ixml/ixmlDocument_init.html | 23 + docs/dist/html/ixml/ixmlDocumenttoString.html | 33 ++ docs/dist/html/ixml/ixmlElement_free.html | 23 + .../html/ixml/ixmlElement_getAttribute.html | 26 + .../html/ixml/ixmlElement_getAttributeNS.html | 27 + .../ixml/ixmlElement_getAttributeNode.html | 28 + .../ixml/ixmlElement_getAttributeNodeNS.html | 26 + .../ixmlElement_getElementsByTagName.html | 29 + .../ixmlElement_getElementsByTagNameNS.html | 31 ++ .../html/ixml/ixmlElement_getTagName.html | 25 + .../html/ixml/ixmlElement_hasAttribute.html | 28 + .../html/ixml/ixmlElement_hasAttributeNS.html | 29 + docs/dist/html/ixml/ixmlElement_init.html | 23 + .../ixml/ixmlElement_removeAttribute.html | 30 ++ .../ixml/ixmlElement_removeAttributeNS.html | 31 ++ .../ixml/ixmlElement_removeAttributeNode.html | 35 ++ .../html/ixml/ixmlElement_setAttribute.html | 39 ++ .../html/ixml/ixmlElement_setAttributeNS.html | 44 ++ .../ixml/ixmlElement_setAttributeNode.html | 40 ++ .../ixml/ixmlElement_setAttributeNodeNS.html | 39 ++ docs/dist/html/ixml/ixmlFreeDOMString.html | 23 + docs/dist/html/ixml/ixmlLoadDocument.html | 25 + docs/dist/html/ixml/ixmlLoadDocumentEx.html | 37 ++ .../dist/html/ixml/ixmlNamedNodeMap_free.html | 24 + .../html/ixml/ixmlNamedNodeMap_getLength.html | 24 + .../ixml/ixmlNamedNodeMap_getNamedItem.html | 24 + .../ixml/ixmlNamedNodeMap_getNamedItemNS.html | 30 ++ .../dist/html/ixml/ixmlNamedNodeMap_item.html | 27 + .../ixmlNamedNodeMap_removeNamedItem.html | 26 + .../ixmlNamedNodeMap_removeNamedItemNS.html | 30 ++ .../ixml/ixmlNamedNodeMap_setNamedItem.html | 29 + .../ixml/ixmlNamedNodeMap_setNamedItemNS.html | 28 + docs/dist/html/ixml/ixmlNodeList_free.html | 25 + docs/dist/html/ixml/ixmlNodeList_item.html | 27 + docs/dist/html/ixml/ixmlNodeList_length.html | 24 + docs/dist/html/ixml/ixmlNode_appendChild.html | 36 ++ docs/dist/html/ixml/ixmlNode_cloneNode.html | 28 + docs/dist/html/ixml/ixmlNode_free.html | 23 + .../html/ixml/ixmlNode_getAttributes.html | 26 + .../html/ixml/ixmlNode_getChildNodes.html | 26 + .../html/ixml/ixmlNode_getFirstChild.html | 25 + .../dist/html/ixml/ixmlNode_getLastChild.html | 25 + .../dist/html/ixml/ixmlNode_getLocalName.html | 29 + .../html/ixml/ixmlNode_getNamespaceURI.html | 29 + .../html/ixml/ixmlNode_getNextSibling.html | 25 + docs/dist/html/ixml/ixmlNode_getNodeName.html | 25 + docs/dist/html/ixml/ixmlNode_getNodeType.html | 39 ++ .../dist/html/ixml/ixmlNode_getNodeValue.html | 24 + .../html/ixml/ixmlNode_getOwnerDocument.html | 28 + .../html/ixml/ixmlNode_getParentNode.html | 25 + docs/dist/html/ixml/ixmlNode_getPrefix.html | 28 + .../ixml/ixmlNode_getPreviousSibling.html | 25 + .../html/ixml/ixmlNode_hasAttributes.html | 25 + .../html/ixml/ixmlNode_hasChildNodes.html | 24 + .../dist/html/ixml/ixmlNode_insertBefore.html | 49 ++ docs/dist/html/ixml/ixmlNode_removeChild.html | 38 ++ .../dist/html/ixml/ixmlNode_replaceChild.html | 46 ++ .../dist/html/ixml/ixmlNode_setNodeValue.html | 33 ++ docs/dist/html/ixml/ixmlNodetoString.html | 32 ++ docs/dist/html/ixml/ixmlParseBuffer.html | 25 + docs/dist/html/ixml/ixmlParseBufferEx.html | 37 ++ docs/dist/html/ixml/ixmlPrintDocument.html | 36 ++ docs/dist/html/ixml/ixmlPrintNode.html | 33 ++ docs/dist/html/ixml/ixmlRelaxParser.html | 27 + docs/dist/html/ixml/toc.html | 19 + docs/dist/html/upnp/AboutCallbacks.html | 26 + .../upnp/ConstantsStructuresandTypes.html | 79 +++ docs/dist/html/upnp/Control.html | 43 ++ docs/dist/html/upnp/ControlPointHTTPAPI.html | 67 +++ docs/dist/html/upnp/Discovery.html | 27 + docs/dist/html/upnp/Errorcodes.html | 126 +++++ docs/dist/html/upnp/Eventing.html | 67 +++ docs/dist/html/upnp/General.html | 16 + .../upnp/InitializationandRegistration.html | 63 +++ docs/dist/html/upnp/Introduction.html | 30 ++ docs/dist/html/upnp/License.html | 45 ++ docs/dist/html/upnp/OptionalToolAPIs.html | 55 ++ docs/dist/html/upnp/TheAPI.html | 43 ++ docs/dist/html/upnp/UPNPREG_BUF_DESC.html | 21 + .../dist/html/upnp/UPNPREG_FILENAME_DESC.html | 21 + docs/dist/html/upnp/UPNPREG_URL_DESC.html | 20 + .../upnp/UPNP_CONTROL_ACTION_COMPLETE.html | 22 + .../upnp/UPNP_CONTROL_ACTION_REQUEST.html | 23 + .../upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html | 22 + .../upnp/UPNP_CONTROL_GET_VAR_REQUEST.html | 23 + .../UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html | 23 + .../UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html | 23 + .../upnp/UPNP_DISCOVERY_SEARCH_RESULT.html | 23 + .../upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html | 22 + .../upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html | 23 + docs/dist/html/upnp/UPNP_EVENT_RECEIVED.html | 22 + .../upnp/UPNP_EVENT_RENEWAL_COMPLETE.html | 22 + .../upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html | 22 + .../upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html | 23 + .../upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html | 27 + .../upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html | 22 + .../upnp/UPNP_E_ALREADY_REGISTERED-120.html | 18 + .../html/upnp/UPNP_E_BAD_HTTPMSG-119.html | 21 + .../html/upnp/UPNP_E_BAD_RESPONSE-113.html | 18 + docs/dist/html/upnp/UPNP_E_CANCELED-210.html | 18 + .../html/upnp/UPNP_E_EXT_NOT_XML-504.html | 17 + .../html/upnp/UPNP_E_FILE_NOT_FOUND-502.html | 18 + .../html/upnp/UPNP_E_FILE_READ_ERROR-503.html | 16 + docs/dist/html/upnp/UPNP_E_FINISH-116.html | 18 + docs/dist/html/upnp/UPNP_E_INIT-105.html | 19 + .../html/upnp/UPNP_E_INIT_FAILED-117.html | 17 + .../html/upnp/UPNP_E_INTERNAL_ERROR-911.html | 17 + .../html/upnp/UPNP_E_INVALID_ACTION-115.html | 18 + .../upnp/UPNP_E_INVALID_ARGUMENT-501.html | 18 + .../html/upnp/UPNP_E_INVALID_DESC-107.html | 18 + .../html/upnp/UPNP_E_INVALID_HANDLE-100.html | 17 + .../html/upnp/UPNP_E_INVALID_PARAM-101.html | 18 + .../html/upnp/UPNP_E_INVALID_SERVICE-111.html | 19 + .../html/upnp/UPNP_E_INVALID_URL-108.html | 19 + docs/dist/html/upnp/UPNP_E_LISTEN-206.html | 18 + .../html/upnp/UPNP_E_NETWORK_ERROR-200.html | 20 + .../upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html | 17 + docs/dist/html/upnp/UPNP_E_NOT_FOUND-507.html | 17 + .../html/upnp/UPNP_E_OUTOF_HANDLE-102.html | 18 + .../html/upnp/UPNP_E_OUTOF_MEMORY-104.html | 18 + .../html/upnp/UPNP_E_OUTOF_SOCKET-205.html | 21 + .../html/upnp/UPNP_E_SOCKET_BIND-203.html | 21 + .../html/upnp/UPNP_E_SOCKET_CONNECT-204.html | 21 + .../html/upnp/UPNP_E_SOCKET_ERROR-208.html | 18 + .../html/upnp/UPNP_E_SOCKET_READ-202.html | 20 + .../html/upnp/UPNP_E_SOCKET_WRITE-201.html | 20 + .../upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html | 17 + docs/dist/html/upnp/UPNP_E_SUCCESS0.html | 19 + docs/dist/html/upnp/UPNP_E_TIMEDOUT-207.html | 18 + .../UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html | 17 + docs/dist/html/upnp/UPNP_S_ALL.html | 20 + docs/dist/html/upnp/UPNP_S_DEVICE.html | 21 + docs/dist/html/upnp/UPNP_S_ROOT.html | 20 + docs/dist/html/upnp/UPNP_S_SERVICE.html | 21 + docs/dist/html/upnp/UPnP_EventType.html | 83 +++ .../html/upnp/UpnpAcceptSubscription.html | 55 ++ .../html/upnp/UpnpAcceptSubscriptionExt.html | 54 ++ docs/dist/html/upnp/UpnpAddToAction.html | 40 ++ .../html/upnp/UpnpAddToActionResponse.html | 42 ++ docs/dist/html/upnp/UpnpAddToPropertySet.html | 38 ++ docs/dist/html/upnp/UpnpAddVirtualDir.html | 32 ++ docs/dist/html/upnp/UpnpCancelHttpGet.html | 27 + docs/dist/html/upnp/UpnpClient_Handle.html | 22 + docs/dist/html/upnp/UpnpCloseHttpGet.html | 27 + docs/dist/html/upnp/UpnpCloseHttpPost.html | 42 ++ .../dist/html/upnp/UpnpCreatePropertySet.html | 28 + docs/dist/html/upnp/UpnpDevice_Handle.html | 22 + docs/dist/html/upnp/UpnpDownloadUrlItem.html | 50 ++ docs/dist/html/upnp/UpnpDownloadXmlDoc.html | 48 ++ docs/dist/html/upnp/UpnpEnableWebserver.html | 28 + docs/dist/html/upnp/UpnpFinish.html | 29 + docs/dist/html/upnp/UpnpGetErrorMessage.html | 26 + .../html/upnp/UpnpGetServerIpAddress.html | 26 + docs/dist/html/upnp/UpnpGetServerPort.html | 26 + .../html/upnp/UpnpGetServiceVarStatus.html | 48 ++ .../upnp/UpnpGetServiceVarStatusAsync.html | 41 ++ docs/dist/html/upnp/UpnpHttpGetProgress.html | 32 ++ docs/dist/html/upnp/UpnpInit.html | 54 ++ .../html/upnp/UpnpIsWebserverEnabled.html | 27 + docs/dist/html/upnp/UpnpMakeAction.html | 30 ++ .../html/upnp/UpnpMakeActionResponse.html | 30 ++ docs/dist/html/upnp/UpnpNotify.html | 50 ++ docs/dist/html/upnp/UpnpNotifyExt.html | 50 ++ docs/dist/html/upnp/UpnpOpenHttpGet.html | 60 +++ docs/dist/html/upnp/UpnpOpenHttpGetEx.html | 66 +++ docs/dist/html/upnp/UpnpOpenHttpGetProxy.html | 62 +++ docs/dist/html/upnp/UpnpOpenHttpPost.html | 57 ++ docs/dist/html/upnp/UpnpReadHttpGet.html | 45 ++ docs/dist/html/upnp/UpnpRegisterClient.html | 42 ++ .../html/upnp/UpnpRegisterRootDevice.html | 62 +++ .../html/upnp/UpnpRegisterRootDevice2.html | 106 ++++ .../html/upnp/UpnpRemoveAllVirtualDirs.html | 23 + docs/dist/html/upnp/UpnpRemoveVirtualDir.html | 29 + .../dist/html/upnp/UpnpRenewSubscription.html | 52 ++ .../html/upnp/UpnpRenewSubscriptionAsync.html | 76 +++ docs/dist/html/upnp/UpnpResolveURL.html | 37 ++ docs/dist/html/upnp/UpnpSearchAsync.html | 50 ++ docs/dist/html/upnp/UpnpSendAction.html | 53 ++ docs/dist/html/upnp/UpnpSendActionAsync.html | 52 ++ docs/dist/html/upnp/UpnpSendActionEx.html | 56 ++ .../dist/html/upnp/UpnpSendActionExAsync.html | 55 ++ .../dist/html/upnp/UpnpSendAdvertisement.html | 37 ++ docs/dist/html/upnp/UpnpSetContentLength.html | 23 + .../html/upnp/UpnpSetMaxContentLength.html | 32 ++ .../upnp/UpnpSetMaxSubscriptionTimeOut.html | 37 ++ .../html/upnp/UpnpSetMaxSubscriptions.html | 37 ++ .../html/upnp/UpnpSetVirtualDirCallbacks.html | 33 ++ .../html/upnp/UpnpSetWebServerRootDir.html | 38 ++ docs/dist/html/upnp/UpnpSubscribe.html | 55 ++ docs/dist/html/upnp/UpnpSubscribeAsync.html | 79 +++ docs/dist/html/upnp/UpnpUnRegisterClient.html | 35 ++ .../html/upnp/UpnpUnRegisterRootDevice.html | 37 ++ docs/dist/html/upnp/UpnpUnSubscribe.html | 51 ++ docs/dist/html/upnp/UpnpUnSubscribeAsync.html | 74 +++ .../html/upnp/UpnpVirtualDirCallbacks.html | 133 +++++ docs/dist/html/upnp/UpnpWriteHttpPost.html | 40 ++ docs/dist/html/upnp/Upnp_Action_Request.html | 108 ++++ docs/dist/html/upnp/Upnp_DescType.html | 34 ++ docs/dist/html/upnp/Upnp_Discovery.html | 115 ++++ docs/dist/html/upnp/Upnp_Event.html | 51 ++ docs/dist/html/upnp/Upnp_Event_Subscribe.html | 64 +++ docs/dist/html/upnp/Upnp_FunPtr.html | 42 ++ docs/dist/html/upnp/Upnp_SID44.html | 22 + docs/dist/html/upnp/Upnp_SType.html | 40 ++ .../html/upnp/Upnp_State_Var_Complete.html | 60 +++ .../html/upnp/Upnp_State_Var_Request.html | 93 ++++ .../html/upnp/Upnp_Subscription_Request.html | 52 ++ docs/dist/html/upnp/WebServerAPI.html | 47 ++ docs/dist/html/upnp/icon1.gif | Bin 0 -> 326 bytes docs/dist/html/upnp/icon2.gif | Bin 0 -> 326 bytes docs/dist/html/upnp/index.html | 42 ++ docs/dist/html/upnp/toc.html | 19 + threadutil/inc/ThreadPool.h | 4 + upnp/doc/Makefile.am | 9 +- upnp/doc/upnpsdk.dxx | 6 +- upnp/src/genlib/net/http/httpparser.c | 28 +- upnp/src/genlib/net/http/webserver.c | 34 +- upnp/src/inc/inet_pton.h | 6 +- upnp/src/inet_pton.c | 19 +- upnp/src/soap/soap_device.c | 2 +- 270 files changed, 9854 insertions(+), 106 deletions(-) create mode 100644 build/libupnp.bpf create mode 100644 build/libupnp.bpr create mode 100644 build/libupnp.dsp create mode 100644 build/libupnp.dsw create mode 100644 docs/dist/IXML_Programming_Guide.pdf create mode 100644 docs/dist/Makefile.am create mode 100644 docs/dist/UPnP_Programming_Guide.pdf create mode 100644 docs/dist/html/ixml/DOMInterfaces.html create mode 100644 docs/dist/html/ixml/General.html create mode 100644 docs/dist/html/ixml/IXMLAPI.html create mode 100644 docs/dist/html/ixml/InterfaceitAttr.html create mode 100644 docs/dist/html/ixml/InterfaceitCDATASection.html create mode 100644 docs/dist/html/ixml/InterfaceitDocument.html create mode 100644 docs/dist/html/ixml/InterfaceitElement.html create mode 100644 docs/dist/html/ixml/InterfaceitNamedNodeMap.html create mode 100644 docs/dist/html/ixml/InterfaceitNode.html create mode 100644 docs/dist/html/ixml/InterfaceitNodeList.html create mode 100644 docs/dist/html/ixml/Introduction.html create mode 100644 docs/dist/html/ixml/License.html create mode 100644 docs/dist/html/ixml/icon1.gif create mode 100644 docs/dist/html/ixml/icon2.gif create mode 100644 docs/dist/html/ixml/index.html create mode 100644 docs/dist/html/ixml/ixmlAttr_free.html create mode 100644 docs/dist/html/ixml/ixmlCDATASection_free.html create mode 100644 docs/dist/html/ixml/ixmlCDATASection_init.html create mode 100644 docs/dist/html/ixml/ixmlCloneDOMString.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createAttribute.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createAttributeEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createAttributeNS.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createAttributeNSEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createCDATASection.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createCDATASectionEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createDocument.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createDocumentEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createElement.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createElementEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createElementNS.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createElementNSEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createTextNode.html create mode 100644 docs/dist/html/ixml/ixmlDocument_createTextNodeEx.html create mode 100644 docs/dist/html/ixml/ixmlDocument_free.html create mode 100644 docs/dist/html/ixml/ixmlDocument_getElementById.html create mode 100644 docs/dist/html/ixml/ixmlDocument_getElementsByTagName.html create mode 100644 docs/dist/html/ixml/ixmlDocument_getElementsByTagNameNS.html create mode 100644 docs/dist/html/ixml/ixmlDocument_importNode.html create mode 100644 docs/dist/html/ixml/ixmlDocument_init.html create mode 100644 docs/dist/html/ixml/ixmlDocumenttoString.html create mode 100644 docs/dist/html/ixml/ixmlElement_free.html create mode 100644 docs/dist/html/ixml/ixmlElement_getAttribute.html create mode 100644 docs/dist/html/ixml/ixmlElement_getAttributeNS.html create mode 100644 docs/dist/html/ixml/ixmlElement_getAttributeNode.html create mode 100644 docs/dist/html/ixml/ixmlElement_getAttributeNodeNS.html create mode 100644 docs/dist/html/ixml/ixmlElement_getElementsByTagName.html create mode 100644 docs/dist/html/ixml/ixmlElement_getElementsByTagNameNS.html create mode 100644 docs/dist/html/ixml/ixmlElement_getTagName.html create mode 100644 docs/dist/html/ixml/ixmlElement_hasAttribute.html create mode 100644 docs/dist/html/ixml/ixmlElement_hasAttributeNS.html create mode 100644 docs/dist/html/ixml/ixmlElement_init.html create mode 100644 docs/dist/html/ixml/ixmlElement_removeAttribute.html create mode 100644 docs/dist/html/ixml/ixmlElement_removeAttributeNS.html create mode 100644 docs/dist/html/ixml/ixmlElement_removeAttributeNode.html create mode 100644 docs/dist/html/ixml/ixmlElement_setAttribute.html create mode 100644 docs/dist/html/ixml/ixmlElement_setAttributeNS.html create mode 100644 docs/dist/html/ixml/ixmlElement_setAttributeNode.html create mode 100644 docs/dist/html/ixml/ixmlElement_setAttributeNodeNS.html create mode 100644 docs/dist/html/ixml/ixmlFreeDOMString.html create mode 100644 docs/dist/html/ixml/ixmlLoadDocument.html create mode 100644 docs/dist/html/ixml/ixmlLoadDocumentEx.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_free.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_getLength.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItem.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItemNS.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_item.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItem.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItemNS.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItem.html create mode 100644 docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItemNS.html create mode 100644 docs/dist/html/ixml/ixmlNodeList_free.html create mode 100644 docs/dist/html/ixml/ixmlNodeList_item.html create mode 100644 docs/dist/html/ixml/ixmlNodeList_length.html create mode 100644 docs/dist/html/ixml/ixmlNode_appendChild.html create mode 100644 docs/dist/html/ixml/ixmlNode_cloneNode.html create mode 100644 docs/dist/html/ixml/ixmlNode_free.html create mode 100644 docs/dist/html/ixml/ixmlNode_getAttributes.html create mode 100644 docs/dist/html/ixml/ixmlNode_getChildNodes.html create mode 100644 docs/dist/html/ixml/ixmlNode_getFirstChild.html create mode 100644 docs/dist/html/ixml/ixmlNode_getLastChild.html create mode 100644 docs/dist/html/ixml/ixmlNode_getLocalName.html create mode 100644 docs/dist/html/ixml/ixmlNode_getNamespaceURI.html create mode 100644 docs/dist/html/ixml/ixmlNode_getNextSibling.html create mode 100644 docs/dist/html/ixml/ixmlNode_getNodeName.html create mode 100644 docs/dist/html/ixml/ixmlNode_getNodeType.html create mode 100644 docs/dist/html/ixml/ixmlNode_getNodeValue.html create mode 100644 docs/dist/html/ixml/ixmlNode_getOwnerDocument.html create mode 100644 docs/dist/html/ixml/ixmlNode_getParentNode.html create mode 100644 docs/dist/html/ixml/ixmlNode_getPrefix.html create mode 100644 docs/dist/html/ixml/ixmlNode_getPreviousSibling.html create mode 100644 docs/dist/html/ixml/ixmlNode_hasAttributes.html create mode 100644 docs/dist/html/ixml/ixmlNode_hasChildNodes.html create mode 100644 docs/dist/html/ixml/ixmlNode_insertBefore.html create mode 100644 docs/dist/html/ixml/ixmlNode_removeChild.html create mode 100644 docs/dist/html/ixml/ixmlNode_replaceChild.html create mode 100644 docs/dist/html/ixml/ixmlNode_setNodeValue.html create mode 100644 docs/dist/html/ixml/ixmlNodetoString.html create mode 100644 docs/dist/html/ixml/ixmlParseBuffer.html create mode 100644 docs/dist/html/ixml/ixmlParseBufferEx.html create mode 100644 docs/dist/html/ixml/ixmlPrintDocument.html create mode 100644 docs/dist/html/ixml/ixmlPrintNode.html create mode 100644 docs/dist/html/ixml/ixmlRelaxParser.html create mode 100644 docs/dist/html/ixml/toc.html create mode 100644 docs/dist/html/upnp/AboutCallbacks.html create mode 100644 docs/dist/html/upnp/ConstantsStructuresandTypes.html create mode 100644 docs/dist/html/upnp/Control.html create mode 100644 docs/dist/html/upnp/ControlPointHTTPAPI.html create mode 100644 docs/dist/html/upnp/Discovery.html create mode 100644 docs/dist/html/upnp/Errorcodes.html create mode 100644 docs/dist/html/upnp/Eventing.html create mode 100644 docs/dist/html/upnp/General.html create mode 100644 docs/dist/html/upnp/InitializationandRegistration.html create mode 100644 docs/dist/html/upnp/Introduction.html create mode 100644 docs/dist/html/upnp/License.html create mode 100644 docs/dist/html/upnp/OptionalToolAPIs.html create mode 100644 docs/dist/html/upnp/TheAPI.html create mode 100644 docs/dist/html/upnp/UPNPREG_BUF_DESC.html create mode 100644 docs/dist/html/upnp/UPNPREG_FILENAME_DESC.html create mode 100644 docs/dist/html/upnp/UPNPREG_URL_DESC.html create mode 100644 docs/dist/html/upnp/UPNP_CONTROL_ACTION_COMPLETE.html create mode 100644 docs/dist/html/upnp/UPNP_CONTROL_ACTION_REQUEST.html create mode 100644 docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html create mode 100644 docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_REQUEST.html create mode 100644 docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html create mode 100644 docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html create mode 100644 docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_RESULT.html create mode 100644 docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_RECEIVED.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_RENEWAL_COMPLETE.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html create mode 100644 docs/dist/html/upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html create mode 100644 docs/dist/html/upnp/UPNP_E_ALREADY_REGISTERED-120.html create mode 100644 docs/dist/html/upnp/UPNP_E_BAD_HTTPMSG-119.html create mode 100644 docs/dist/html/upnp/UPNP_E_BAD_RESPONSE-113.html create mode 100644 docs/dist/html/upnp/UPNP_E_CANCELED-210.html create mode 100644 docs/dist/html/upnp/UPNP_E_EXT_NOT_XML-504.html create mode 100644 docs/dist/html/upnp/UPNP_E_FILE_NOT_FOUND-502.html create mode 100644 docs/dist/html/upnp/UPNP_E_FILE_READ_ERROR-503.html create mode 100644 docs/dist/html/upnp/UPNP_E_FINISH-116.html create mode 100644 docs/dist/html/upnp/UPNP_E_INIT-105.html create mode 100644 docs/dist/html/upnp/UPNP_E_INIT_FAILED-117.html create mode 100644 docs/dist/html/upnp/UPNP_E_INTERNAL_ERROR-911.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_ACTION-115.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_ARGUMENT-501.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_DESC-107.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_HANDLE-100.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_PARAM-101.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_SERVICE-111.html create mode 100644 docs/dist/html/upnp/UPNP_E_INVALID_URL-108.html create mode 100644 docs/dist/html/upnp/UPNP_E_LISTEN-206.html create mode 100644 docs/dist/html/upnp/UPNP_E_NETWORK_ERROR-200.html create mode 100644 docs/dist/html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html create mode 100644 docs/dist/html/upnp/UPNP_E_NOT_FOUND-507.html create mode 100644 docs/dist/html/upnp/UPNP_E_OUTOF_HANDLE-102.html create mode 100644 docs/dist/html/upnp/UPNP_E_OUTOF_MEMORY-104.html create mode 100644 docs/dist/html/upnp/UPNP_E_OUTOF_SOCKET-205.html create mode 100644 docs/dist/html/upnp/UPNP_E_SOCKET_BIND-203.html create mode 100644 docs/dist/html/upnp/UPNP_E_SOCKET_CONNECT-204.html create mode 100644 docs/dist/html/upnp/UPNP_E_SOCKET_ERROR-208.html create mode 100644 docs/dist/html/upnp/UPNP_E_SOCKET_READ-202.html create mode 100644 docs/dist/html/upnp/UPNP_E_SOCKET_WRITE-201.html create mode 100644 docs/dist/html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html create mode 100644 docs/dist/html/upnp/UPNP_E_SUCCESS0.html create mode 100644 docs/dist/html/upnp/UPNP_E_TIMEDOUT-207.html create mode 100644 docs/dist/html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html create mode 100644 docs/dist/html/upnp/UPNP_S_ALL.html create mode 100644 docs/dist/html/upnp/UPNP_S_DEVICE.html create mode 100644 docs/dist/html/upnp/UPNP_S_ROOT.html create mode 100644 docs/dist/html/upnp/UPNP_S_SERVICE.html create mode 100644 docs/dist/html/upnp/UPnP_EventType.html create mode 100644 docs/dist/html/upnp/UpnpAcceptSubscription.html create mode 100644 docs/dist/html/upnp/UpnpAcceptSubscriptionExt.html create mode 100644 docs/dist/html/upnp/UpnpAddToAction.html create mode 100644 docs/dist/html/upnp/UpnpAddToActionResponse.html create mode 100644 docs/dist/html/upnp/UpnpAddToPropertySet.html create mode 100644 docs/dist/html/upnp/UpnpAddVirtualDir.html create mode 100644 docs/dist/html/upnp/UpnpCancelHttpGet.html create mode 100644 docs/dist/html/upnp/UpnpClient_Handle.html create mode 100644 docs/dist/html/upnp/UpnpCloseHttpGet.html create mode 100644 docs/dist/html/upnp/UpnpCloseHttpPost.html create mode 100644 docs/dist/html/upnp/UpnpCreatePropertySet.html create mode 100644 docs/dist/html/upnp/UpnpDevice_Handle.html create mode 100644 docs/dist/html/upnp/UpnpDownloadUrlItem.html create mode 100644 docs/dist/html/upnp/UpnpDownloadXmlDoc.html create mode 100644 docs/dist/html/upnp/UpnpEnableWebserver.html create mode 100644 docs/dist/html/upnp/UpnpFinish.html create mode 100644 docs/dist/html/upnp/UpnpGetErrorMessage.html create mode 100644 docs/dist/html/upnp/UpnpGetServerIpAddress.html create mode 100644 docs/dist/html/upnp/UpnpGetServerPort.html create mode 100644 docs/dist/html/upnp/UpnpGetServiceVarStatus.html create mode 100644 docs/dist/html/upnp/UpnpGetServiceVarStatusAsync.html create mode 100644 docs/dist/html/upnp/UpnpHttpGetProgress.html create mode 100644 docs/dist/html/upnp/UpnpInit.html create mode 100644 docs/dist/html/upnp/UpnpIsWebserverEnabled.html create mode 100644 docs/dist/html/upnp/UpnpMakeAction.html create mode 100644 docs/dist/html/upnp/UpnpMakeActionResponse.html create mode 100644 docs/dist/html/upnp/UpnpNotify.html create mode 100644 docs/dist/html/upnp/UpnpNotifyExt.html create mode 100644 docs/dist/html/upnp/UpnpOpenHttpGet.html create mode 100644 docs/dist/html/upnp/UpnpOpenHttpGetEx.html create mode 100644 docs/dist/html/upnp/UpnpOpenHttpGetProxy.html create mode 100644 docs/dist/html/upnp/UpnpOpenHttpPost.html create mode 100644 docs/dist/html/upnp/UpnpReadHttpGet.html create mode 100644 docs/dist/html/upnp/UpnpRegisterClient.html create mode 100644 docs/dist/html/upnp/UpnpRegisterRootDevice.html create mode 100644 docs/dist/html/upnp/UpnpRegisterRootDevice2.html create mode 100644 docs/dist/html/upnp/UpnpRemoveAllVirtualDirs.html create mode 100644 docs/dist/html/upnp/UpnpRemoveVirtualDir.html create mode 100644 docs/dist/html/upnp/UpnpRenewSubscription.html create mode 100644 docs/dist/html/upnp/UpnpRenewSubscriptionAsync.html create mode 100644 docs/dist/html/upnp/UpnpResolveURL.html create mode 100644 docs/dist/html/upnp/UpnpSearchAsync.html create mode 100644 docs/dist/html/upnp/UpnpSendAction.html create mode 100644 docs/dist/html/upnp/UpnpSendActionAsync.html create mode 100644 docs/dist/html/upnp/UpnpSendActionEx.html create mode 100644 docs/dist/html/upnp/UpnpSendActionExAsync.html create mode 100644 docs/dist/html/upnp/UpnpSendAdvertisement.html create mode 100644 docs/dist/html/upnp/UpnpSetContentLength.html create mode 100644 docs/dist/html/upnp/UpnpSetMaxContentLength.html create mode 100644 docs/dist/html/upnp/UpnpSetMaxSubscriptionTimeOut.html create mode 100644 docs/dist/html/upnp/UpnpSetMaxSubscriptions.html create mode 100644 docs/dist/html/upnp/UpnpSetVirtualDirCallbacks.html create mode 100644 docs/dist/html/upnp/UpnpSetWebServerRootDir.html create mode 100644 docs/dist/html/upnp/UpnpSubscribe.html create mode 100644 docs/dist/html/upnp/UpnpSubscribeAsync.html create mode 100644 docs/dist/html/upnp/UpnpUnRegisterClient.html create mode 100644 docs/dist/html/upnp/UpnpUnRegisterRootDevice.html create mode 100644 docs/dist/html/upnp/UpnpUnSubscribe.html create mode 100644 docs/dist/html/upnp/UpnpUnSubscribeAsync.html create mode 100644 docs/dist/html/upnp/UpnpVirtualDirCallbacks.html create mode 100644 docs/dist/html/upnp/UpnpWriteHttpPost.html create mode 100644 docs/dist/html/upnp/Upnp_Action_Request.html create mode 100644 docs/dist/html/upnp/Upnp_DescType.html create mode 100644 docs/dist/html/upnp/Upnp_Discovery.html create mode 100644 docs/dist/html/upnp/Upnp_Event.html create mode 100644 docs/dist/html/upnp/Upnp_Event_Subscribe.html create mode 100644 docs/dist/html/upnp/Upnp_FunPtr.html create mode 100644 docs/dist/html/upnp/Upnp_SID44.html create mode 100644 docs/dist/html/upnp/Upnp_SType.html create mode 100644 docs/dist/html/upnp/Upnp_State_Var_Complete.html create mode 100644 docs/dist/html/upnp/Upnp_State_Var_Request.html create mode 100644 docs/dist/html/upnp/Upnp_Subscription_Request.html create mode 100644 docs/dist/html/upnp/WebServerAPI.html create mode 100644 docs/dist/html/upnp/icon1.gif create mode 100644 docs/dist/html/upnp/icon2.gif create mode 100644 docs/dist/html/upnp/index.html create mode 100644 docs/dist/html/upnp/toc.html diff --git a/ChangeLog b/ChangeLog index 1d65171..5f3db5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-07-07 Oxy + + * full support for Windows added, static library and DLL are fully + working, code compiles with Borland Builder C++ and MS Visual + C/C++ + +2006-07-05 Nektarios K. Papadopoulos + + * Include prebuilt documentation (html,pdf), dropping doc++ + dependancy. + 2006-07-03 Marcelo Jimenez * Patch for FreeBSD, thanks to Markus Strobl. @@ -11,11 +22,6 @@ * Fix for va_list initialization in x86_64 architectures. -2006-06-12 Oxy - - * Windows support added, it compiles and exports DLL-symbols but - it is not fully tested yet - 2006-06-08 Oxy * Patch to fix memory leaks and reasons for crashes added (thanks diff --git a/Makefile.am b/Makefile.am index 5a85a4f..f1713da 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-samples -SUBDIRS = ixml threadutil upnp +SUBDIRS = ixml threadutil upnp docs/dist EXTRA_DIST = libupnp.pc.in LICENSE THANKS diff --git a/THANKS b/THANKS index 9f0e451..9f4511e 100644 --- a/THANKS +++ b/THANKS @@ -6,8 +6,15 @@ suggesting various improvements or submitting actual code. Here is a list of these people. Help us keep it complete and exempt of errors. -Patches: Loigu, Arno Willig, Oskar Liljeblad, Chaos, - Nektarios K. Papadopoulos, John Dennis, Jiri Zouhar, - Marcelo Jimenez -Solaris Port: Oxy -Hints and useful bugreports: Siva Chandran +- Markus Strobl +- Loigu +- Arno Willig +- Oskar Liljeblad +- Chaos +- Nektarios K. Papadopoulos +- John Dennis +- Jiri Zouhar +- Marcelo Jimenez +- Oxy +- Siva Chandran + diff --git a/build/inc/config.h b/build/inc/config.h index e8f0795..b4118a5 100644 --- a/build/inc/config.h +++ b/build/inc/config.h @@ -294,7 +294,7 @@ /** @name DBGONLY - The {\bf DBGONLY} macro allows code to be marked so that it + The {\bf DBGONLY} macro allows code to be marked so that it is only included in the DEBUG build and not the release. To use this macro, put the code inside of the parentheses: @@ -305,55 +305,53 @@ */ //@{ -#ifndef WIN32 - #ifdef DEBUG - # define DBGONLY(x) x - #else - # define DBGONLY(x) - #endif -#endif +#ifdef DEBUG + #define DBGONLY(x) x +#else + #define DBGONLY(x) +#endif //@} -#undef EXCLUDE_WEB_SERVER -#undef EXCLUDE_MINISERVER +#undef EXCLUDE_WEB_SERVER +#undef EXCLUDE_MINISERVER #ifdef INTERNAL_WEB_SERVER -# define EXCLUDE_WEB_SERVER 0 -# define EXCLUDE_MINISERVER 0 + #define EXCLUDE_WEB_SERVER 0 + #define EXCLUDE_MINISERVER 0 #else -# define EXCLUDE_WEB_SERVER 1 -# define EXCLUDE_MINISERVER 1 + #define EXCLUDE_WEB_SERVER 1 + #define EXCLUDE_MINISERVER 1 #endif #if EXCLUDE_GENA == 1 && EXCLUDE_SOAP == 1 && EXCLUDE_WEB_SERVER == 1 -# undef EXCLUDE_MINISERVER -# define EXCLUDE_MINISERVER 1 -# if INTERNAL_WEB_SERVER -# error "conflicting settings: use configure --disable-webserver" -# endif + #undef EXCLUDE_MINISERVER + #define EXCLUDE_MINISERVER 1 + #if INTERNAL_WEB_SERVER + # error "conflicting settings: use configure --disable-webserver" + #endif #endif #if EXCLUDE_GENA == 0 || EXCLUDE_SOAP == 0 || EXCLUDE_WEB_SERVER == 0 -# undef EXCLUDE_MINISERVER -# define EXCLUDE_MINISERVER 0 -# if EXCLUDE_WEB_SERVER == 0 && !defined INTERNAL_WEB_SERVER -# error "conflicting settings : use configure --enable-webserver" -# endif + #undef EXCLUDE_MINISERVER + #define EXCLUDE_MINISERVER 0 + #if EXCLUDE_WEB_SERVER == 0 && !defined INTERNAL_WEB_SERVER + #error "conflicting settings : use configure --enable-webserver" + #endif #endif #ifdef INCLUDE_CLIENT_APIS -# define CLIENTONLY(x) x -#else -# define CLIENTONLY(x) + #define CLIENTONLY(x) x +#else + #define CLIENTONLY(x) #endif #ifdef INCLUDE_DEVICE_APIS -# define DEVICEONLY(x) x -#else -# define DEVICEONLY(x) + #define DEVICEONLY(x) x +#else + #define DEVICEONLY(x) #endif //@} diff --git a/build/libupnp.bpf b/build/libupnp.bpf new file mode 100644 index 0000000..5b12438 --- /dev/null +++ b/build/libupnp.bpf @@ -0,0 +1,50 @@ +USEUNIT("..\ixml\src\nodeList.c"); +USEUNIT("..\ixml\src\attr.c"); +USEUNIT("..\ixml\src\document.c"); +USEUNIT("..\ixml\src\element.c"); +USEUNIT("..\ixml\src\ixml.c"); +USEUNIT("..\ixml\src\ixmlmembuf.c"); +USEUNIT("..\ixml\src\ixmlparser.c"); +USEUNIT("..\ixml\src\namedNodeMap.c"); +USEUNIT("..\ixml\src\node.c"); +USEUNIT("..\threadutil\src\TimerThread.c"); +USEUNIT("..\threadutil\src\FreeList.c"); +USEUNIT("..\threadutil\src\iasnprintf.c"); +USEUNIT("..\threadutil\src\LinkedList.c"); +USEUNIT("..\threadutil\src\ThreadPool.c"); +USEUNIT("..\upnp\src\win_dll.c"); +USEUNIT("..\upnp\src\inet_pton.c"); +USEUNIT("..\upnp\src\api\upnptools.c"); +USEUNIT("..\upnp\src\api\upnpapi.c"); +USEUNIT("..\upnp\src\gena\gena_device.c"); +USEUNIT("..\upnp\src\gena\gena_callback2.c"); +USEUNIT("..\upnp\src\gena\gena_ctrlpt.c"); +USEUNIT("..\upnp\src\genlib\client_table\client_table.c"); +USEUNIT("..\upnp\src\genlib\miniserver\miniserver.c"); +USEUNIT("..\upnp\src\genlib\net\sock.c"); +USEUNIT("..\upnp\src\genlib\net\http\webserver.c"); +USEUNIT("..\upnp\src\genlib\net\http\httpparser.c"); +USEUNIT("..\upnp\src\genlib\net\http\httpreadwrite.c"); +USEUNIT("..\upnp\src\genlib\net\http\parsetools.c"); +USEUNIT("..\upnp\src\genlib\net\http\statcodes.c"); +USEUNIT("..\upnp\src\genlib\net\uri\uri.c"); +USEUNIT("..\upnp\src\genlib\service_table\service_table.c"); +USEUNIT("..\upnp\src\genlib\util\util.c"); +USEUNIT("..\upnp\src\genlib\util\membuffer.c"); +USEUNIT("..\upnp\src\genlib\util\strintmap.c"); +USEUNIT("..\upnp\src\genlib\util\upnp_timeout.c"); +USEUNIT("..\upnp\src\soap\soap_device.c"); +USEUNIT("..\upnp\src\soap\soap_common.c"); +USEUNIT("..\upnp\src\soap\soap_ctrlpt.c"); +USEUNIT("..\upnp\src\ssdp\ssdp_server.c"); +USEUNIT("..\upnp\src\ssdp\ssdp_ctrlpt.c"); +USEUNIT("..\upnp\src\ssdp\ssdp_device.c"); +USEUNIT("..\upnp\src\urlconfig\urlconfig.c"); +USEUNIT("..\upnp\src\uuid\uuid.c"); +USEUNIT("..\upnp\src\uuid\md5.c"); +USEUNIT("..\upnp\src\uuid\sysdep.c"); +USELIB("..\..\..\pthreads-w32-1-10-0-release\pthreadBC1.lib"); +//--------------------------------------------------------------------------- +This file is used by the project manager only and should be treated like the project file + + DllEntryPoint \ No newline at end of file diff --git a/build/libupnp.bpr b/build/libupnp.bpr new file mode 100644 index 0000000..06938c1 --- /dev/null +++ b/build/libupnp.bpr @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1031 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=1 +Item0=..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=3 +Item0=WIN32;LIBUPNP_EXPORTS +Item1=WIN32;EXPORT_SPEC +Item2=WIN32 + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 + + \ No newline at end of file diff --git a/build/libupnp.dsp b/build/libupnp.dsp new file mode 100644 index 0000000..d24987b --- /dev/null +++ b/build/libupnp.dsp @@ -0,0 +1,287 @@ +# Microsoft Developer Studio Project File - Name="libupnp" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=libupnp - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "libupnp.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "libupnp.mak" CFG="libupnp - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "libupnp - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") +!MESSAGE "libupnp - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "libupnp - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "E:\svnupnp\trunk\ixml\src\inc" /I "E:\svnupnp\trunk\ixml\inc" /I "E:\svnupnp\trunk\threadutil\inc" /I "E:\svnupnp\trunk\upnp\inc" /I "E:\svnupnp\trunk\upnp\src\inc" /I "E:\svnupnp\trunk\build\inc" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib E:\svnupnp\trunk\libupnp\build\bin\pthreadvc2.lib ws2_32.lib /nologo /dll /machine:I386 + +!ELSEIF "$(CFG)" == "libupnp - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "E:\svnupnp\trunk\ixml\src\inc" /I "E:\svnupnp\trunk\ixml\inc" /I "E:\svnupnp\trunk\threadutil\inc" /I "E:\svnupnp\trunk\upnp\inc" /I "E:\svnupnp\trunk\upnp\src\inc" /I "E:\svnupnp\trunk\build\inc" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib E:\svnupnp\trunk\libupnp\build\bin\pthreadvc2.lib ws2_32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "libupnp - Win32 Release" +# Name "libupnp - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\ixml\src\attr.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\client_table\client_table.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\document.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\element.c +# End Source File +# Begin Source File + +SOURCE=..\threadutil\src\FreeList.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\gena\gena_callback2.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\gena\gena_ctrlpt.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\gena\gena_device.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\http\httpparser.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\http\httpreadwrite.c +# End Source File +# Begin Source File + +SOURCE=..\threadutil\src\iasnprintf.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\inet_pton.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\ixml.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\ixmlmembuf.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\ixmlparser.c +# End Source File +# Begin Source File + +SOURCE=..\threadutil\src\LinkedList.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\uuid\md5.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\util\membuffer.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\miniserver\miniserver.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\namedNodeMap.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\node.c +# End Source File +# Begin Source File + +SOURCE=..\ixml\src\nodeList.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\http\parsetools.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\service_table\service_table.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\soap\soap_common.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\soap\soap_ctrlpt.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\soap\soap_device.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\sock.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\ssdp\ssdp_ctrlpt.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\ssdp\ssdp_device.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\ssdp\ssdp_server.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\http\statcodes.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\util\strintmap.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\uuid\sysdep.c +# End Source File +# Begin Source File + +SOURCE=..\threadutil\src\ThreadPool.c +# End Source File +# Begin Source File + +SOURCE=..\threadutil\src\TimerThread.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\util\upnp_timeout.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\api\upnpapi.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\api\upnptools.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\uri\uri.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\urlconfig\urlconfig.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\util\util.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\uuid\uuid.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\genlib\net\http\webserver.c +# End Source File +# Begin Source File + +SOURCE=..\upnp\src\win_dll.c +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# Begin Source File + +SOURCE=..\..\..\..\libupnp_win32.patch +# End Source File +# End Target +# End Project diff --git a/build/libupnp.dsw b/build/libupnp.dsw new file mode 100644 index 0000000..d0f2c17 --- /dev/null +++ b/build/libupnp.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! + +############################################################################### + +Project: "libupnp"=.\libupnp.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/configure.ac b/configure.ac index 23f2223..f5738dd 100644 --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,7 @@ AC_PREREQ(2.59) -AC_INIT([libupnp], [1.4.0], [virtual_worlds@gmx.de]) +AC_INIT([libupnp], [1.4.1], [virtual_worlds@gmx.de]) # *Independently* of the above libupnp package version, the libtool version # of the 3 libraries need to be updated whenever there is a change released : # "current:revision:age" (this is NOT the same as the package version), where: @@ -19,9 +19,9 @@ AC_INIT([libupnp], [1.4.0], [virtual_worlds@gmx.de]) # - interfaces added: age++ # - interfaces removed: age=0 # *please update only once, before a formal release, not for each change* -AC_SUBST([LT_VERSION_IXML], [2:1:0]) -AC_SUBST([LT_VERSION_THREADUTIL], [2:1:0]) -AC_SUBST([LT_VERSION_UPNP], [2:1:0]) +AC_SUBST([LT_VERSION_IXML], [2:2:0]) +AC_SUBST([LT_VERSION_THREADUTIL], [2:2:0]) +AC_SUBST([LT_VERSION_UPNP], [2:2:0]) AC_CONFIG_AUX_DIR(config.aux) @@ -129,6 +129,7 @@ AM_PROG_CC_C_O AC_PROG_LIBTOOL AC_PROG_INSTALL AC_PROG_MAKE_SET +AC_PROG_EGREP # @@ -186,6 +187,7 @@ AC_CONFIG_FILES([Makefile threadutil/Makefile upnp/Makefile upnp/doc/Makefile + docs/dist/Makefile libupnp.pc ]) diff --git a/docs/dist/IXML_Programming_Guide.pdf b/docs/dist/IXML_Programming_Guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b1f5e1f58c2e385e03bf99be879af77384dee1be GIT binary patch literal 242304 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

&I@>SA0PE^?l+g>CN*@CFpxWH(Y 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�&4{@}j4Ja?OUCN!&$b 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 M!O3|=;VQ*{0VWV*b^rhX literal 0 HcmV?d00001 diff --git a/docs/dist/Makefile.am b/docs/dist/Makefile.am new file mode 100644 index 0000000..a948ba2 --- /dev/null +++ b/docs/dist/Makefile.am @@ -0,0 +1,508 @@ +EXTRA_DIST = ./UPnP_Programming_Guide.pdf \ + ./IXML_Programming_Guide.pdf \ + ./html/upnp/icon1.gif \ + ./html/upnp/icon2.gif \ + ./html/upnp/toc.html \ + ./html/upnp/General.html \ + ./html/upnp/index.html \ + ./html/upnp/Introduction.html \ + ./html/upnp/License.html \ + ./html/upnp/AboutCallbacks.html \ + ./html/upnp/TheAPI.html \ + ./html/upnp/Errorcodes.html \ + ./html/upnp/UPNP_E_SUCCESS0.html \ + ./html/upnp/UPNP_E_INVALID_HANDLE-100.html \ + ./html/upnp/UPNP_E_INVALID_PARAM-101.html \ + ./html/upnp/UPNP_E_OUTOF_HANDLE-102.html \ + ./html/upnp/UPNP_E_OUTOF_MEMORY-104.html \ + ./html/upnp/UPNP_E_INIT-105.html \ + ./html/upnp/UPNP_E_INVALID_DESC-107.html \ + ./html/upnp/UPNP_E_INVALID_URL-108.html \ + ./html/upnp/UPNP_E_INVALID_SERVICE-111.html \ + ./html/upnp/UPNP_E_BAD_RESPONSE-113.html \ + ./html/upnp/UPNP_E_INVALID_ACTION-115.html \ + ./html/upnp/UPNP_E_FINISH-116.html \ + ./html/upnp/UPNP_E_INIT_FAILED-117.html \ + ./html/upnp/UPNP_E_BAD_HTTPMSG-119.html \ + ./html/upnp/UPNP_E_ALREADY_REGISTERED-120.html \ + ./html/upnp/UPNP_E_NETWORK_ERROR-200.html \ + ./html/upnp/UPNP_E_SOCKET_WRITE-201.html \ + ./html/upnp/UPNP_E_SOCKET_READ-202.html \ + ./html/upnp/UPNP_E_SOCKET_BIND-203.html \ + ./html/upnp/UPNP_E_SOCKET_CONNECT-204.html \ + ./html/upnp/UPNP_E_OUTOF_SOCKET-205.html \ + ./html/upnp/UPNP_E_LISTEN-206.html \ + ./html/upnp/UPNP_E_TIMEDOUT-207.html \ + ./html/upnp/UPNP_E_SOCKET_ERROR-208.html \ + ./html/upnp/UPNP_E_CANCELED-210.html \ + ./html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html \ + ./html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html \ + ./html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html \ + ./html/upnp/UPNP_E_INVALID_ARGUMENT-501.html \ + ./html/upnp/UPNP_E_FILE_NOT_FOUND-502.html \ + ./html/upnp/UPNP_E_FILE_READ_ERROR-503.html \ + ./html/upnp/UPNP_E_EXT_NOT_XML-504.html \ + ./html/upnp/UPNP_E_NOT_FOUND-507.html \ + ./html/upnp/UPNP_E_INTERNAL_ERROR-911.html \ + ./html/upnp/ConstantsStructuresandTypes.html \ + ./html/upnp/UpnpClient_Handle.html \ + ./html/upnp/UpnpDevice_Handle.html \ + ./html/upnp/UPnP_EventType.html \ + ./html/upnp/UPNP_CONTROL_ACTION_REQUEST.html \ + ./html/upnp/UPNP_CONTROL_ACTION_COMPLETE.html \ + ./html/upnp/UPNP_CONTROL_GET_VAR_REQUEST.html \ + ./html/upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html \ + ./html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html \ + ./html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html \ + ./html/upnp/UPNP_DISCOVERY_SEARCH_RESULT.html \ + ./html/upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html \ + ./html/upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html \ + ./html/upnp/UPNP_EVENT_RECEIVED.html \ + ./html/upnp/UPNP_EVENT_RENEWAL_COMPLETE.html \ + ./html/upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html \ + ./html/upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html \ + ./html/upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html \ + ./html/upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html \ + ./html/upnp/Upnp_SID44.html \ + ./html/upnp/Upnp_SType.html \ + ./html/upnp/UPNP_S_ALL.html \ + ./html/upnp/UPNP_S_ROOT.html \ + ./html/upnp/UPNP_S_DEVICE.html \ + ./html/upnp/UPNP_S_SERVICE.html \ + ./html/upnp/Upnp_DescType.html \ + ./html/upnp/UPNPREG_URL_DESC.html \ + ./html/upnp/UPNPREG_FILENAME_DESC.html \ + ./html/upnp/UPNPREG_BUF_DESC.html \ + ./html/upnp/Upnp_Action_Request.html \ + ./html/upnp/Upnp_State_Var_Request.html \ + ./html/upnp/Upnp_State_Var_Complete.html \ + ./html/upnp/Upnp_Event.html \ + ./html/upnp/Upnp_Discovery.html \ + ./html/upnp/Upnp_Event_Subscribe.html \ + ./html/upnp/Upnp_Subscription_Request.html \ + ./html/upnp/UpnpVirtualDirCallbacks.html \ + ./html/upnp/Upnp_FunPtr.html \ + ./html/upnp/InitializationandRegistration.html \ + ./html/upnp/UpnpInit.html \ + ./html/upnp/UpnpFinish.html \ + ./html/upnp/UpnpGetServerPort.html \ + ./html/upnp/UpnpGetServerIpAddress.html \ + ./html/upnp/UpnpRegisterClient.html \ + ./html/upnp/UpnpRegisterRootDevice.html \ + ./html/upnp/UpnpRegisterRootDevice2.html \ + ./html/upnp/UpnpUnRegisterClient.html \ + ./html/upnp/UpnpUnRegisterRootDevice.html \ + ./html/upnp/UpnpSetContentLength.html \ + ./html/upnp/UpnpSetMaxContentLength.html \ + ./html/upnp/Discovery.html \ + ./html/upnp/UpnpSearchAsync.html \ + ./html/upnp/UpnpSendAdvertisement.html \ + ./html/upnp/Control.html \ + ./html/upnp/UpnpGetServiceVarStatus.html \ + ./html/upnp/UpnpGetServiceVarStatusAsync.html \ + ./html/upnp/UpnpSendAction.html \ + ./html/upnp/UpnpSendActionEx.html \ + ./html/upnp/UpnpSendActionAsync.html \ + ./html/upnp/UpnpSendActionExAsync.html \ + ./html/upnp/Eventing.html \ + ./html/upnp/UpnpAcceptSubscription.html \ + ./html/upnp/UpnpAcceptSubscriptionExt.html \ + ./html/upnp/UpnpNotify.html \ + ./html/upnp/UpnpNotifyExt.html \ + ./html/upnp/UpnpRenewSubscription.html \ + ./html/upnp/UpnpRenewSubscriptionAsync.html \ + ./html/upnp/UpnpSetMaxSubscriptions.html \ + ./html/upnp/UpnpSetMaxSubscriptionTimeOut.html \ + ./html/upnp/UpnpSubscribe.html \ + ./html/upnp/UpnpSubscribeAsync.html \ + ./html/upnp/UpnpUnSubscribe.html \ + ./html/upnp/UpnpUnSubscribeAsync.html \ + ./html/upnp/ControlPointHTTPAPI.html \ + ./html/upnp/UpnpDownloadUrlItem.html \ + ./html/upnp/UpnpOpenHttpGet.html \ + ./html/upnp/UpnpOpenHttpGetProxy.html \ + ./html/upnp/UpnpOpenHttpGetEx.html \ + ./html/upnp/UpnpReadHttpGet.html \ + ./html/upnp/UpnpHttpGetProgress.html \ + ./html/upnp/UpnpCancelHttpGet.html \ + ./html/upnp/UpnpCloseHttpGet.html \ + ./html/upnp/UpnpOpenHttpPost.html \ + ./html/upnp/UpnpWriteHttpPost.html \ + ./html/upnp/UpnpCloseHttpPost.html \ + ./html/upnp/UpnpDownloadXmlDoc.html \ + ./html/upnp/WebServerAPI.html \ + ./html/upnp/UpnpSetWebServerRootDir.html \ + ./html/upnp/UpnpSetVirtualDirCallbacks.html \ + ./html/upnp/UpnpEnableWebserver.html \ + ./html/upnp/UpnpIsWebserverEnabled.html \ + ./html/upnp/UpnpAddVirtualDir.html \ + ./html/upnp/UpnpRemoveVirtualDir.html \ + ./html/upnp/UpnpRemoveAllVirtualDirs.html \ + ./html/upnp/OptionalToolAPIs.html \ + ./html/upnp/UpnpResolveURL.html \ + ./html/upnp/UpnpMakeAction.html \ + ./html/upnp/UpnpAddToAction.html \ + ./html/upnp/UpnpMakeActionResponse.html \ + ./html/upnp/UpnpAddToActionResponse.html \ + ./html/upnp/UpnpAddToPropertySet.html \ + ./html/upnp/UpnpCreatePropertySet.html \ + ./html/upnp/UpnpGetErrorMessage.html \ + ./html/ixml/icon1.gif \ + ./html/ixml/icon2.gif \ + ./html/ixml/toc.html \ + ./html/ixml/General.html \ + ./html/ixml/index.html \ + ./html/ixml/Introduction.html \ + ./html/ixml/License.html \ + ./html/ixml/DOMInterfaces.html \ + ./html/ixml/InterfaceitNode.html \ + ./html/ixml/ixmlNode_getNodeName.html \ + ./html/ixml/ixmlNode_getNodeValue.html \ + ./html/ixml/ixmlNode_setNodeValue.html \ + ./html/ixml/ixmlNode_getNodeType.html \ + ./html/ixml/ixmlNode_getParentNode.html \ + ./html/ixml/ixmlNode_getChildNodes.html \ + ./html/ixml/ixmlNode_getFirstChild.html \ + ./html/ixml/ixmlNode_getLastChild.html \ + ./html/ixml/ixmlNode_getPreviousSibling.html \ + ./html/ixml/ixmlNode_getNextSibling.html \ + ./html/ixml/ixmlNode_getAttributes.html \ + ./html/ixml/ixmlNode_getOwnerDocument.html \ + ./html/ixml/ixmlNode_getNamespaceURI.html \ + ./html/ixml/ixmlNode_getPrefix.html \ + ./html/ixml/ixmlNode_getLocalName.html \ + ./html/ixml/ixmlNode_insertBefore.html \ + ./html/ixml/ixmlNode_replaceChild.html \ + ./html/ixml/ixmlNode_removeChild.html \ + ./html/ixml/ixmlNode_appendChild.html \ + ./html/ixml/ixmlNode_hasChildNodes.html \ + ./html/ixml/ixmlNode_cloneNode.html \ + ./html/ixml/ixmlNode_hasAttributes.html \ + ./html/ixml/ixmlNode_free.html \ + ./html/ixml/InterfaceitAttr.html \ + ./html/ixml/ixmlAttr_free.html \ + ./html/ixml/InterfaceitCDATASection.html \ + ./html/ixml/ixmlCDATASection_init.html \ + ./html/ixml/ixmlCDATASection_free.html \ + ./html/ixml/InterfaceitDocument.html \ + ./html/ixml/ixmlDocument_init.html \ + ./html/ixml/ixmlDocument_createDocumentEx.html \ + ./html/ixml/ixmlDocument_createDocument.html \ + ./html/ixml/ixmlDocument_createElementEx.html \ + ./html/ixml/ixmlDocument_createElement.html \ + ./html/ixml/ixmlDocument_createTextNodeEx.html \ + ./html/ixml/ixmlDocument_createTextNode.html \ + ./html/ixml/ixmlDocument_createCDATASectionEx.html \ + ./html/ixml/ixmlDocument_createCDATASection.html \ + ./html/ixml/ixmlDocument_createAttribute.html \ + ./html/ixml/ixmlDocument_createAttributeEx.html \ + ./html/ixml/ixmlDocument_getElementsByTagName.html \ + ./html/ixml/ixmlDocument_createElementNSEx.html \ + ./html/ixml/ixmlDocument_createElementNS.html \ + ./html/ixml/ixmlDocument_createAttributeNSEx.html \ + ./html/ixml/ixmlDocument_createAttributeNS.html \ + ./html/ixml/ixmlDocument_getElementsByTagNameNS.html \ + ./html/ixml/ixmlDocument_getElementById.html \ + ./html/ixml/ixmlDocument_free.html \ + ./html/ixml/ixmlDocument_importNode.html \ + ./html/ixml/InterfaceitElement.html \ + ./html/ixml/ixmlElement_init.html \ + ./html/ixml/ixmlElement_getTagName.html \ + ./html/ixml/ixmlElement_getAttribute.html \ + ./html/ixml/ixmlElement_setAttribute.html \ + ./html/ixml/ixmlElement_removeAttribute.html \ + ./html/ixml/ixmlElement_getAttributeNode.html \ + ./html/ixml/ixmlElement_setAttributeNode.html \ + ./html/ixml/ixmlElement_removeAttributeNode.html \ + ./html/ixml/ixmlElement_getElementsByTagName.html \ + ./html/ixml/ixmlElement_getAttributeNS.html \ + ./html/ixml/ixmlElement_setAttributeNS.html \ + ./html/ixml/ixmlElement_removeAttributeNS.html \ + ./html/ixml/ixmlElement_getAttributeNodeNS.html \ + ./html/ixml/ixmlElement_setAttributeNodeNS.html \ + ./html/ixml/ixmlElement_getElementsByTagNameNS.html \ + ./html/ixml/ixmlElement_hasAttribute.html \ + ./html/ixml/ixmlElement_hasAttributeNS.html \ + ./html/ixml/ixmlElement_free.html \ + ./html/ixml/InterfaceitNamedNodeMap.html \ + ./html/ixml/ixmlNamedNodeMap_getLength.html \ + ./html/ixml/ixmlNamedNodeMap_getNamedItem.html \ + ./html/ixml/ixmlNamedNodeMap_setNamedItem.html \ + ./html/ixml/ixmlNamedNodeMap_removeNamedItem.html \ + ./html/ixml/ixmlNamedNodeMap_item.html \ + ./html/ixml/ixmlNamedNodeMap_getNamedItemNS.html \ + ./html/ixml/ixmlNamedNodeMap_setNamedItemNS.html \ + ./html/ixml/ixmlNamedNodeMap_removeNamedItemNS.html \ + ./html/ixml/ixmlNamedNodeMap_free.html \ + ./html/ixml/InterfaceitNodeList.html \ + ./html/ixml/ixmlNodeList_item.html \ + ./html/ixml/ixmlNodeList_length.html \ + ./html/ixml/ixmlNodeList_free.html \ + ./html/ixml/IXMLAPI.html \ + ./html/ixml/ixmlPrintDocument.html \ + ./html/ixml/ixmlPrintNode.html \ + ./html/ixml/ixmlDocumenttoString.html \ + ./html/ixml/ixmlNodetoString.html \ + ./html/ixml/ixmlRelaxParser.html \ + ./html/ixml/ixmlParseBuffer.html \ + ./html/ixml/ixmlParseBufferEx.html \ + ./html/ixml/ixmlLoadDocument.html \ + ./html/ixml/ixmlLoadDocumentEx.html \ + ./html/ixml/ixmlCloneDOMString.html \ + ./html/ixml/ixmlFreeDOMString.html + +if WITH_DOCDIR + docsdir = @DOCDIR@ + nobase_docs_DATA = ./UPnP_Programming_Guide.pdf \ + ./IXML_Programming_Guide.pdf \ + ./html/upnp/icon1.gif \ + ./html/upnp/icon2.gif \ + ./html/upnp/toc.html \ + ./html/upnp/General.html \ + ./html/upnp/index.html \ + ./html/upnp/Introduction.html \ + ./html/upnp/License.html \ + ./html/upnp/AboutCallbacks.html \ + ./html/upnp/TheAPI.html \ + ./html/upnp/Errorcodes.html \ + ./html/upnp/UPNP_E_SUCCESS0.html \ + ./html/upnp/UPNP_E_INVALID_HANDLE-100.html \ + ./html/upnp/UPNP_E_INVALID_PARAM-101.html \ + ./html/upnp/UPNP_E_OUTOF_HANDLE-102.html \ + ./html/upnp/UPNP_E_OUTOF_MEMORY-104.html \ + ./html/upnp/UPNP_E_INIT-105.html \ + ./html/upnp/UPNP_E_INVALID_DESC-107.html \ + ./html/upnp/UPNP_E_INVALID_URL-108.html \ + ./html/upnp/UPNP_E_INVALID_SERVICE-111.html \ + ./html/upnp/UPNP_E_BAD_RESPONSE-113.html \ + ./html/upnp/UPNP_E_INVALID_ACTION-115.html \ + ./html/upnp/UPNP_E_FINISH-116.html \ + ./html/upnp/UPNP_E_INIT_FAILED-117.html \ + ./html/upnp/UPNP_E_BAD_HTTPMSG-119.html \ + ./html/upnp/UPNP_E_ALREADY_REGISTERED-120.html \ + ./html/upnp/UPNP_E_NETWORK_ERROR-200.html \ + ./html/upnp/UPNP_E_SOCKET_WRITE-201.html \ + ./html/upnp/UPNP_E_SOCKET_READ-202.html \ + ./html/upnp/UPNP_E_SOCKET_BIND-203.html \ + ./html/upnp/UPNP_E_SOCKET_CONNECT-204.html \ + ./html/upnp/UPNP_E_OUTOF_SOCKET-205.html \ + ./html/upnp/UPNP_E_LISTEN-206.html \ + ./html/upnp/UPNP_E_TIMEDOUT-207.html \ + ./html/upnp/UPNP_E_SOCKET_ERROR-208.html \ + ./html/upnp/UPNP_E_CANCELED-210.html \ + ./html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html \ + ./html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html \ + ./html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html \ + ./html/upnp/UPNP_E_INVALID_ARGUMENT-501.html \ + ./html/upnp/UPNP_E_FILE_NOT_FOUND-502.html \ + ./html/upnp/UPNP_E_FILE_READ_ERROR-503.html \ + ./html/upnp/UPNP_E_EXT_NOT_XML-504.html \ + ./html/upnp/UPNP_E_NOT_FOUND-507.html \ + ./html/upnp/UPNP_E_INTERNAL_ERROR-911.html \ + ./html/upnp/ConstantsStructuresandTypes.html \ + ./html/upnp/UpnpClient_Handle.html \ + ./html/upnp/UpnpDevice_Handle.html \ + ./html/upnp/UPnP_EventType.html \ + ./html/upnp/UPNP_CONTROL_ACTION_REQUEST.html \ + ./html/upnp/UPNP_CONTROL_ACTION_COMPLETE.html \ + ./html/upnp/UPNP_CONTROL_GET_VAR_REQUEST.html \ + ./html/upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html \ + ./html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html \ + ./html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html \ + ./html/upnp/UPNP_DISCOVERY_SEARCH_RESULT.html \ + ./html/upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html \ + ./html/upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html \ + ./html/upnp/UPNP_EVENT_RECEIVED.html \ + ./html/upnp/UPNP_EVENT_RENEWAL_COMPLETE.html \ + ./html/upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html \ + ./html/upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html \ + ./html/upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html \ + ./html/upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html \ + ./html/upnp/Upnp_SID44.html \ + ./html/upnp/Upnp_SType.html \ + ./html/upnp/UPNP_S_ALL.html \ + ./html/upnp/UPNP_S_ROOT.html \ + ./html/upnp/UPNP_S_DEVICE.html \ + ./html/upnp/UPNP_S_SERVICE.html \ + ./html/upnp/Upnp_DescType.html \ + ./html/upnp/UPNPREG_URL_DESC.html \ + ./html/upnp/UPNPREG_FILENAME_DESC.html \ + ./html/upnp/UPNPREG_BUF_DESC.html \ + ./html/upnp/Upnp_Action_Request.html \ + ./html/upnp/Upnp_State_Var_Request.html \ + ./html/upnp/Upnp_State_Var_Complete.html \ + ./html/upnp/Upnp_Event.html \ + ./html/upnp/Upnp_Discovery.html \ + ./html/upnp/Upnp_Event_Subscribe.html \ + ./html/upnp/Upnp_Subscription_Request.html \ + ./html/upnp/UpnpVirtualDirCallbacks.html \ + ./html/upnp/Upnp_FunPtr.html \ + ./html/upnp/InitializationandRegistration.html \ + ./html/upnp/UpnpInit.html \ + ./html/upnp/UpnpFinish.html \ + ./html/upnp/UpnpGetServerPort.html \ + ./html/upnp/UpnpGetServerIpAddress.html \ + ./html/upnp/UpnpRegisterClient.html \ + ./html/upnp/UpnpRegisterRootDevice.html \ + ./html/upnp/UpnpRegisterRootDevice2.html \ + ./html/upnp/UpnpUnRegisterClient.html \ + ./html/upnp/UpnpUnRegisterRootDevice.html \ + ./html/upnp/UpnpSetContentLength.html \ + ./html/upnp/UpnpSetMaxContentLength.html \ + ./html/upnp/Discovery.html \ + ./html/upnp/UpnpSearchAsync.html \ + ./html/upnp/UpnpSendAdvertisement.html \ + ./html/upnp/Control.html \ + ./html/upnp/UpnpGetServiceVarStatus.html \ + ./html/upnp/UpnpGetServiceVarStatusAsync.html \ + ./html/upnp/UpnpSendAction.html \ + ./html/upnp/UpnpSendActionEx.html \ + ./html/upnp/UpnpSendActionAsync.html \ + ./html/upnp/UpnpSendActionExAsync.html \ + ./html/upnp/Eventing.html \ + ./html/upnp/UpnpAcceptSubscription.html \ + ./html/upnp/UpnpAcceptSubscriptionExt.html \ + ./html/upnp/UpnpNotify.html \ + ./html/upnp/UpnpNotifyExt.html \ + ./html/upnp/UpnpRenewSubscription.html \ + ./html/upnp/UpnpRenewSubscriptionAsync.html \ + ./html/upnp/UpnpSetMaxSubscriptions.html \ + ./html/upnp/UpnpSetMaxSubscriptionTimeOut.html \ + ./html/upnp/UpnpSubscribe.html \ + ./html/upnp/UpnpSubscribeAsync.html \ + ./html/upnp/UpnpUnSubscribe.html \ + ./html/upnp/UpnpUnSubscribeAsync.html \ + ./html/upnp/ControlPointHTTPAPI.html \ + ./html/upnp/UpnpDownloadUrlItem.html \ + ./html/upnp/UpnpOpenHttpGet.html \ + ./html/upnp/UpnpOpenHttpGetProxy.html \ + ./html/upnp/UpnpOpenHttpGetEx.html \ + ./html/upnp/UpnpReadHttpGet.html \ + ./html/upnp/UpnpHttpGetProgress.html \ + ./html/upnp/UpnpCancelHttpGet.html \ + ./html/upnp/UpnpCloseHttpGet.html \ + ./html/upnp/UpnpOpenHttpPost.html \ + ./html/upnp/UpnpWriteHttpPost.html \ + ./html/upnp/UpnpCloseHttpPost.html \ + ./html/upnp/UpnpDownloadXmlDoc.html \ + ./html/upnp/WebServerAPI.html \ + ./html/upnp/UpnpSetWebServerRootDir.html \ + ./html/upnp/UpnpSetVirtualDirCallbacks.html \ + ./html/upnp/UpnpEnableWebserver.html \ + ./html/upnp/UpnpIsWebserverEnabled.html \ + ./html/upnp/UpnpAddVirtualDir.html \ + ./html/upnp/UpnpRemoveVirtualDir.html \ + ./html/upnp/UpnpRemoveAllVirtualDirs.html \ + ./html/upnp/OptionalToolAPIs.html \ + ./html/upnp/UpnpResolveURL.html \ + ./html/upnp/UpnpMakeAction.html \ + ./html/upnp/UpnpAddToAction.html \ + ./html/upnp/UpnpMakeActionResponse.html \ + ./html/upnp/UpnpAddToActionResponse.html \ + ./html/upnp/UpnpAddToPropertySet.html \ + ./html/upnp/UpnpCreatePropertySet.html \ + ./html/upnp/UpnpGetErrorMessage.html \ + ./html/ixml/icon1.gif \ + ./html/ixml/icon2.gif \ + ./html/ixml/toc.html \ + ./html/ixml/General.html \ + ./html/ixml/index.html \ + ./html/ixml/Introduction.html \ + ./html/ixml/License.html \ + ./html/ixml/DOMInterfaces.html \ + ./html/ixml/InterfaceitNode.html \ + ./html/ixml/ixmlNode_getNodeName.html \ + ./html/ixml/ixmlNode_getNodeValue.html \ + ./html/ixml/ixmlNode_setNodeValue.html \ + ./html/ixml/ixmlNode_getNodeType.html \ + ./html/ixml/ixmlNode_getParentNode.html \ + ./html/ixml/ixmlNode_getChildNodes.html \ + ./html/ixml/ixmlNode_getFirstChild.html \ + ./html/ixml/ixmlNode_getLastChild.html \ + ./html/ixml/ixmlNode_getPreviousSibling.html \ + ./html/ixml/ixmlNode_getNextSibling.html \ + ./html/ixml/ixmlNode_getAttributes.html \ + ./html/ixml/ixmlNode_getOwnerDocument.html \ + ./html/ixml/ixmlNode_getNamespaceURI.html \ + ./html/ixml/ixmlNode_getPrefix.html \ + ./html/ixml/ixmlNode_getLocalName.html \ + ./html/ixml/ixmlNode_insertBefore.html \ + ./html/ixml/ixmlNode_replaceChild.html \ + ./html/ixml/ixmlNode_removeChild.html \ + ./html/ixml/ixmlNode_appendChild.html \ + ./html/ixml/ixmlNode_hasChildNodes.html \ + ./html/ixml/ixmlNode_cloneNode.html \ + ./html/ixml/ixmlNode_hasAttributes.html \ + ./html/ixml/ixmlNode_free.html \ + ./html/ixml/InterfaceitAttr.html \ + ./html/ixml/ixmlAttr_free.html \ + ./html/ixml/InterfaceitCDATASection.html \ + ./html/ixml/ixmlCDATASection_init.html \ + ./html/ixml/ixmlCDATASection_free.html \ + ./html/ixml/InterfaceitDocument.html \ + ./html/ixml/ixmlDocument_init.html \ + ./html/ixml/ixmlDocument_createDocumentEx.html \ + ./html/ixml/ixmlDocument_createDocument.html \ + ./html/ixml/ixmlDocument_createElementEx.html \ + ./html/ixml/ixmlDocument_createElement.html \ + ./html/ixml/ixmlDocument_createTextNodeEx.html \ + ./html/ixml/ixmlDocument_createTextNode.html \ + ./html/ixml/ixmlDocument_createCDATASectionEx.html \ + ./html/ixml/ixmlDocument_createCDATASection.html \ + ./html/ixml/ixmlDocument_createAttribute.html \ + ./html/ixml/ixmlDocument_createAttributeEx.html \ + ./html/ixml/ixmlDocument_getElementsByTagName.html \ + ./html/ixml/ixmlDocument_createElementNSEx.html \ + ./html/ixml/ixmlDocument_createElementNS.html \ + ./html/ixml/ixmlDocument_createAttributeNSEx.html \ + ./html/ixml/ixmlDocument_createAttributeNS.html \ + ./html/ixml/ixmlDocument_getElementsByTagNameNS.html \ + ./html/ixml/ixmlDocument_getElementById.html \ + ./html/ixml/ixmlDocument_free.html \ + ./html/ixml/ixmlDocument_importNode.html \ + ./html/ixml/InterfaceitElement.html \ + ./html/ixml/ixmlElement_init.html \ + ./html/ixml/ixmlElement_getTagName.html \ + ./html/ixml/ixmlElement_getAttribute.html \ + ./html/ixml/ixmlElement_setAttribute.html \ + ./html/ixml/ixmlElement_removeAttribute.html \ + ./html/ixml/ixmlElement_getAttributeNode.html \ + ./html/ixml/ixmlElement_setAttributeNode.html \ + ./html/ixml/ixmlElement_removeAttributeNode.html \ + ./html/ixml/ixmlElement_getElementsByTagName.html \ + ./html/ixml/ixmlElement_getAttributeNS.html \ + ./html/ixml/ixmlElement_setAttributeNS.html \ + ./html/ixml/ixmlElement_removeAttributeNS.html \ + ./html/ixml/ixmlElement_getAttributeNodeNS.html \ + ./html/ixml/ixmlElement_setAttributeNodeNS.html \ + ./html/ixml/ixmlElement_getElementsByTagNameNS.html \ + ./html/ixml/ixmlElement_hasAttribute.html \ + ./html/ixml/ixmlElement_hasAttributeNS.html \ + ./html/ixml/ixmlElement_free.html \ + ./html/ixml/InterfaceitNamedNodeMap.html \ + ./html/ixml/ixmlNamedNodeMap_getLength.html \ + ./html/ixml/ixmlNamedNodeMap_getNamedItem.html \ + ./html/ixml/ixmlNamedNodeMap_setNamedItem.html \ + ./html/ixml/ixmlNamedNodeMap_removeNamedItem.html \ + ./html/ixml/ixmlNamedNodeMap_item.html \ + ./html/ixml/ixmlNamedNodeMap_getNamedItemNS.html \ + ./html/ixml/ixmlNamedNodeMap_setNamedItemNS.html \ + ./html/ixml/ixmlNamedNodeMap_removeNamedItemNS.html \ + ./html/ixml/ixmlNamedNodeMap_free.html \ + ./html/ixml/InterfaceitNodeList.html \ + ./html/ixml/ixmlNodeList_item.html \ + ./html/ixml/ixmlNodeList_length.html \ + ./html/ixml/ixmlNodeList_free.html \ + ./html/ixml/IXMLAPI.html \ + ./html/ixml/ixmlPrintDocument.html \ + ./html/ixml/ixmlPrintNode.html \ + ./html/ixml/ixmlDocumenttoString.html \ + ./html/ixml/ixmlNodetoString.html \ + ./html/ixml/ixmlRelaxParser.html \ + ./html/ixml/ixmlParseBuffer.html \ + ./html/ixml/ixmlParseBufferEx.html \ + ./html/ixml/ixmlLoadDocument.html \ + ./html/ixml/ixmlLoadDocumentEx.html \ + ./html/ixml/ixmlCloneDOMString.html \ + ./html/ixml/ixmlFreeDOMString.html +endif diff --git a/docs/dist/UPnP_Programming_Guide.pdf b/docs/dist/UPnP_Programming_Guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8e71ee6a8660451c5ca5b55ade1035773096ffee GIT binary patch literal 371203 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 z zk~cAG#z&|;n5O4bXS$Uv*~OesP~NAI>wJ%|GH@Uc8lP7 zNzdEBM4mYx5DvFda&PM;m6XM$c=oeoC6*LVg^NoCWtzpJKJ)0VDt|w*wr+=<8|VqE zkc3t4D5)V0nv`&)+>E2`MEG1hjw#yC5`!ur*e66W-3J+rx!3#%_!uZb>^u{JRW zPBZ8ajhmG=GzX^d^fI3`4vuOjV74j``IPdgs@BZDUAwgYg!|wu%VQeU+T;rYss~}r-tM$Y+l%j193!x21p~vt zWLxv#8#QhybuNNg?TNTPV8!*;{S~56LBft|{kiN-JK7rqwoCrJqyzy{^6}GqJg*-f z>MCOnb6`Yx35ne=Mpo#+Tv>iny&kOmbwIznj3IUpDNkm8K%)JPpGil@=tXOq$<9ro zKS*1KqLDE}c^7<4Z%sk9a-PeKBKP6ipw!BpXnK2uwlef$jqLg!A{4F`DC%rxc>9wA zF<2<@n#B?b4F`P<%7`yFTSoXts^j5D@L*Db7UkfgX}**LyW9Zx=Nksj|(oy0U1DD>Sj)BZ8yR7$TyY%CeKFbdgEau@> zuk?QTy+`O}16*;Nz6zS?8r{J3HxI}s%=r3GicDqTn__+3oG#)55B=J0es{@X3uU&) z-`HIkz34l`5jn=5CrQv8xof@o+3ni}UG|L+5fC^Ps&|$;I;EHSw$>`;d^7e;4QP)V z`0r)EsWC1P z$*^iBjVzcgYM7!jM-vn`;Kz6;G~#Pot~~JXlSKX=yCX`uF%dE3dS*dK!OWDczgP;XH86hj6hRMw zKY{#g_oN*_1)fcXSQX9~2^RbwKbczQHV(}-4PG;b{y~z ztim~_jJ|jB_inX7xK&ysA7@~(lL(9)mKVt+9#?v{DGBTvP&|LN7ut96fXwC}>8xU= zAAZm%U#V+sJM?D`enBJDsNOzNQ%BSUj!Lr*ghfxEcFFfICm1qlLRU8q%Fmxh_b-o! zTCDCI{IC58znP<2#4Jc*Eqsc+bF_etZ6;?iLmAG617>8v<^1n0Z! zndaX^fhe$J{L--wVf6Id1XEn$JXg5*L}kix#x6;g^l?(1C6iKta$DYww&IJS7etc3 zcqEGzEs3HenxaObvVpSe9rm}o_;XyFkxasphF$zMHhWEG>4zlN*Nq!FM^}Iv z*b#gR0wM@cPiKD&hTZxoQ4$;9Hq5s*sPvXYrEmuRl_{WcgfLi;>Dcr$26tBvXX%OU zj)cjfE>Ic2AY6>Kx&TybB(w^6az|DQI-92V!dxcDW+?xe@rx~h6-q56!T*J)xyv~rB}yVO{p3u#bU1!?lh>W3mY%-ub-3dA0g4j6;8%2KdDX4k)p zsIBXzV7C@VO$yMI5zZ|M5WZteLHq>CGNOR1E3^GU+< zlH4%&JMHE#a=_znFm4|A>!PK5PJUvHPxqGzzfZ5)q!f6nLSElf5DkN@{I;0$<}pyG z)pAtkH|s20E>ch-s&uC1ca}BiD0)s7>K5^B9qSW&a5{e)4}&kEN*HD5MNW*ijx=%M z2j#E+5EMv0;qVAyP=khlGtL002g88qOhMpM$M(hi0^n07V-Teg3T}}g#4Iu8E$@`z?V#p>4Yq7B$5&BZ7hDgL#f+uKO;?+0!#y9Ahos~ z(fxZ=OdmK9us;D>bCwa+ggd!XepML__fbF7RZbJr5YMZX0al7N7uz+mSC06NqMJe z>_R6NFFta9p~oipE$$H%l=%pxkJ{IIEfX(=J<=*fx>0ngC?Usi%R9SFzq#8skmNyE zc(zH-g%uk87teV!nKrdEe<9R*{My*pw;SccoW53R3uvvK)Unam!DMIr?H; zK_KN=_Ghw45;zDiQK0IoFCc70Uu{^R;s!eIwCo#ZO2Ot4tez$aQe(_7t8jAK>L-nY z>S&Fw7Dl~gJoDmTI~mDV>G1xb7jX2qq&_&n@90k5pY%%0?iWKdlOgfUcw4(FVZXeN zNZpqmuD^APMJM2Hi+6F)_iB|A%Z&?-Wi?&>8iU;vu7xBjFwo-7CtPBBXz%wN?=+Z! z-8FmvL(Z@4`%psOf+vpIyY$VyL>u3r-f9%XK|@{i zVfGdbweP{o4RtIHNmm~!D9lQ^YnTb9jLqKay7%%H-0D3pkkbdlO`&C7E!cPyp5Z<$ zG{z|;Rd?%gf1&u!eki_D(2TpEaz(K?@UT$cWub>i1Orw09nqgTETKus9Z0KQ4RuhV zrXU2M$P}jy#aX1{fp2-kB+Vqj_(gW~DlA87JHvrtE+(lBgRFTNzbm;3v}x5Jz7@yJxz;yODd0*N(1CggfZSu`>B zAdy-s*DyfMAWoT50oXX-r_#DU;6cLb+?V(Uq)Xw|!U+QnswWr~sLnx>kR@6$xy65o zki{$~W|uU#Y@dYtY8~QMuL^8!7*e)qZSw{{P5h;-+U>AB8v0z{_JQV{d`h$&=llo= zo^F5c&x{RXHA%&Z%^;D`G5ac&ehR6|V|~R3ql86O`^YZrfI@}YJQy=sy?!rm3 z9L=DZ!H{-i$G0oon`kf?HD67>zBxBdO@3gg0}OlM5pr=wmKwLGPq?;TS5!_MzR_t3 zz_Vs19B~Eq1$cV5vUnB> z4p;9QPeP|odM%Ty!Baw^j4?>RL5DkIPEzfBl%X8ALMag<+n5sX52ba~8TS$fs2 zyZ{*oBC{ow!2mB$)L=M;ZLC~$M~o9bb{rYR)=b zT!_(0AGwR#ugwo|teRL7ncs)0q~?&=_+~uV+pv}WrwVF$^URf#4`+1;EGngGn)2E^0GrJQY&ILP+4l8t8Yfl}cYc9)CjtA;O}N{OfC6v* z?KvWaIVRB2xqw_fx!KJMY)LpCS8lKxQ8$DyDRIApS{`c51n(n<$7LQpC{;Tt9d5qkAGfBT9eWU#(>Qn*!feGW;qQA8 z&H-Ks!*0bF^z^jz&0NVzPhQDISs(pr0ToWbxvdPpvxN#k=Hr?ngFipz@ zlHNh|2Hcc!Tr-~WP1s7I9l%ZLX0CL&{|!Q)*oK-#=?Hga=jZJmz`>tYfwA>!fxOm? zD6l7=+m|%-1d!%`h{g3kJlUZCJVr7XdhNaT(e>8r1q(L56I#scb_AS7FyJhL0cU~S z4y#V&6jsTqIuF~JSaB+L%!5Ux{QbCv^YT!CT2&tK0XA zsUY3|6Qyf$nIf?1g3r?i*EI}@BK!n2%b<4|I(qXHW~Y2g^XSn!#S`??o2LgSzNBDW zls+0xzMoUzpwl(shmnWw;59~AGgkEa;b6+{gR2YF$4t+*nsEP0pm+qS)6RH!jGs0A zP`!V>@ZExE|7yXK%j}I69sY*>`ekzLpbDGT%fDJsY@tvLjU1;U+XO0vN!mC6d6 zJ7|?@#%xF|`%_F{3tck#KKf%_tL&r=;kJAK;LXW5Y4Dpb+cv<>ZUB7=aoR~PPF6?l z_(}2W3?lPwGc5%&iDZ+n6cW2YVY?Jv4zaXyGB1`0NEY=I4@LD9q48#vJT+KbycJY7 zmt`-WOzt6c7ce6@-@=mRw@+vGJUG@oxor96 z+rrwCzEE?R|BJbIijs8QwndYbwlgd3th8<0s^=A0 zYn{_hYxf}@Mm+ox@%<6edLN^Y-u2^|6G1ieMAe`=;}KGfnEr@*G)7-Aag!Aw-PB4B z>GY!$b3~D_P)?(>q6f-T<{^9?o!Gk3F={wT4x25Gl1B#BFLHSUU3NJh-TpxfXceaV z-dFB&VAWIh2|fl&5exNWERJs8kpbqzo1wS)r{{-{cIA2HL7B=jI^Zwmrm^qH`SL$O zeI?SDG<#G6q`|nsVF%$eYt8f*9)zg6cm|An0({I;$jdM(XG;cqb6;)}+yGjIsgzVN z!F_Sd*e_~+;PO`awy@tJ1gWha2l_6(k8W_O${rL-y*h?O{BZtx21x7-hK~P`p5M*Nulp;~KzmvmkovezC=gg6{UX6U^*Jg+xLxDV8a*t>V z*bToQwpYu6wdCg0Jp91>#Jv3@H_c32>3HC&O;1Ep0Z#v^x$#qQDBN>Vi1G1?k_8heRi(Q*2w{KPv=9#D%9Ha{d7~{}Z164=aQJ zZA}jAU;T9c=N8sqeGC3g~3d^Y&~VJX|J8VkWK{~ETodMlq)D^{dnX8LxV&lAKkFw%%sDI=X?Tif12z$*f`st znEDkR%edpWa_&tp<&q8?9~!baqT_VShS-OILUAx-kqIY~9(HtRCz^M=le9uZy0-#> z-G3zlX38lm9}_>;bKf_jO`6r!@0S+may2F<=~4<76&(p7HP_P@qO)FbDN`x^p|FPT z6C<-2R@E(cI~{v zT_}U2-Lv(C$lL~bZTVZQa4D?Kk499|1?A z+|Y-8lSuso@h&gr@+eC*c>-SBx-& zEj1uVC@#<;Qp!XUCc4BTDZ!%@(@0s8!eS($E4X;){257EVVWCETfctua>#AXP?cQ= zn^r`G(D`DXERgOqxjF>>$l{%|am% zMDn&@4ES6C%LP(rF0)_P{H&V2nSSGD8mv?uw^i2F2V53gA(*>*0dXc^!d%e%eC|%b zzE=#7Y(pHR2=Ofef*sRAm`!W}!Nc1XXD+%^2Ob!!Pe;`FVF$h4#wyBA`l)gaxSnQb zGg~-ENCx?jxC>pCKan~4dcddxD=*VCW7^v~FNuyf?~@zfp@kzMk~bwP$1ry!k96Uu z`JhI;4R$lzVBC>=%O(IrtT`^(YcSUQOd^>jr;-kJtM%OVT~*Zd zK|33^Vr+tyrtWAKbM^r%ilA?T)qfS!Uxmrs_3ltR zu|F=L>L5*DeS0a932n=N5&YrAaPxIq`{%$)Qk!3=)ecxn_*JNX6((Oreci~wz>|fO zgIfke*~EI?pH2)P-+WK?^dR0F(U8!_3TT{Qt-!KKU*tNa-v<=Ec&Ry`%EKimuX+S`tf4LK9F8|?!F!A*&XL6ODPUFZ_-R)sPbrU=vhrMh{XxWJQ>CRx$Wf~IDmv>F?MMjaN^%W(vMtcXDf9_5) zz>VOC01Q5Pud(|qscZ!2nvisww*v%ZlrS z*5K@v8b=ZsQ>OP@hx}(FcFDPS4;RtV$NL;XTG+y_y(S77E{XXCqRw~OT#wt^#;Yyf zi|wy7;ny&}*T(jx^)Hu8C3yPQWWk^149An7uAEe8TY>_l-fnIEvG~W+>rcb`GI`(c! zaZ}q$we|2*mej1&;z%}cTfn${>TxvsJLZ2O<0we0O8aGC z63F;eVw;H%{+@aXrpdOf9?ckEee9xRN}C-B0D12tzFdfv7!NL55;+K4F1D&(1m6*f z*qSAW@whvtA6;5)f$7g54MZW(yFts^tPGDl*<7(O=nFc_7wi$AZfq&AOkqY7ffP@& z3k6vSTcR2t4FfEji)6HmzBD<4M8Ckc77m`E(ZWYH))ivXJ{e&;{Sd@X%rUZ*#}+_n zQUTzSK84wp%e)RyHti|TU*P$JFJ+|dol04T1V2(oaBISY2toN>BC|A?8K0ojA4p6| zB$PXAdGHrq&Pg%y{OM0FzHj$mU7%rud0N|_T&l$im(_NMUmAf{vmoEB-$`%*WsGlRm=rdJ= zD9NF`gJ*&hE}tgVZs#AsGrzEv@~WtaavL&;QF{$OYzCBuB$@%l<@Im^hFv&1U}4mS zzr1TXe(BlLM^4N&35iqFD)UJ$w>S`Ipa5U}ZD5_xqjpk>Rc5kVDJ5f{XtsB5-}((g zi1NSE1GYbA)&Cqd|2OpD50w1B(u1#@kbh^7^}kNI|8aqTzU=>1dhqYI-v2s&_$MV` zW@P=>Tkn?kd8~*Znc6#1%}y17M1ZN*DdCUQx3T-*jhiYD4}p>PmK&H|=rV~uKUx9FI1==L^OeX~8QBMSL8x56R=E#ec5 z@>m#V!MdyA@|&fvyY0JYmM1%w%#^PWoL3L;v!Cjqq%B*scGkP&!+9G|a>lctj4}5f z1qLVoim{Kp-+c;r3whO~)zpX57`jh%4B-Lru3x8{w+1~=q95!2cvSv3m!=WGsl#8u zNBlHnpK3~JUIr-L4_4wPH94s92h{@wC4aZS<`?RoFip36~d^msf5-MN=7Gp7aL^+uX zcT~&f+Z8-T9?E!11;Su9FBsB_u}N=H;nkM zyKjokyB?LI$oI|%!fcfT$;w#jDT|@DQS2K$LS&WQ+R@gGzO~u-3|~VA9wEKuHx$f& zgH8Yhh4frED~V{)PP3S%q-@Bb$JXC1%j7ZQHan7XbE?=T93NM))k4ces#d?LQ`CP$|w%M)>KSV>B{nId0Xx!X>qFQ&|#=;tr-Cit@SxS zbhrCx5R$mc@NqD~2)|$wkgN{Z z8^(6=+X(`~436T{92x+lM3jTuIrEBrBOb%;ChbDT5WvYV9~Pi>6DL2%O@^6)>NJ12bMReBAkR$LTeEtY=%gJ5yzLZ#g!z&5sxBt5vtO@BY*0)Zm} zq0aEAUk=|C93Wi>mbB-wS%Ctg>ze@yv=fID*ghCPoK3$rdIPSvM*L0N1=9a+<3e-B z8YGov1^ehzdT4`2F{TT)aKCZ)(u7J6hzc~c1w~KzHTwWC=rqB5W&ila_3X^?>f7MB z>)#SBvT4})6(W%PE5+E}`YLihFMqtWyT7!(2qa?}+*ZklGbv(a&hBT-WyKw$9GY>x zI%9}ycg>t15Ghy9)}!;a9eTZ;2cjS zY1Y@AL91G=YCUAa_{#wgL;H5@+>%mXT7RTfpb-6C`4W~bakCubGbM@DhM9{-_HAQR zX5?S?k;1;~pMmEH*K8*3yj>f=x%Xn@>XKSeI4|Y@sf-I(Yz^u=|>S;8#JN@4lRv zxzlmAbWIA_jjYd_X4&&f#C1nzF_l!$zdlDOHV@mco#Vtpk?}BcUGNcf1uPxN(;<{* zg14hNrFR#~{A2#{2hk#~_A9mb`yyISeqTguCEF(E{EKLP6Us-l4hJ5$P-8 z#&I9SJm`NGCUJ95BcNi~EsHZUs6VdBB{ZHewa+a!EL!+U4Zv2+f77{st+i~+oW{Lj zaq-2d52+OsCtyqAexIM~;hentXxV)I12uQ|yzn#HNDVfzEU7e|gJy%P5@;Bg-)(}( z#6JprrLXi@R4xpCU^u!7Zl&P-woaK5UcV_adOhQXJj;woT4^nobp1KxlO@1H@x6T{ zSC&+d7820cT6+3Qm4s@}QQ7d|VZXy$vxVIOC*S{ER$I5%(wY63rRcS!gU0(5v~_e^ zV~l&6(by82@D@VFIIT7ti<#PwKSz})jxX7t682-$$1j1&&c6X2S=>ZH?w!xWUo+u+ zk1Fe#le2_yX%x%Slkp_3CFYi*<9iGJ94(?%2_Tg=PNp1HDsa|XDH(%811%^#Y_ZXg zTXvc=>#M>UI|-Uqh|^bWHcgh&>3tzjJAfD|@lwjF!l|^mJl>4=5 zRg?p*iptO>M`+bTrz9*zAC{hR$C9K&Iur?kZI#u2=;J3>GjrLyXMXKpB^7nJ$<>Rd z+3JQ)JUBe|@u~nH4c%x%a29KIIM(7ZoeKMXlhZlUf{unM9H*bOVw@gc;%$?wV5y)e zi-m$8njTkUeOvHGqD(YD%o%Su((cC(~rRWR`7v}^d$66Boc zaq*64l4Wivp=LNqtBU;RQXmb64@;Fewa098Ck&&eaJRNK^AJdz?{PlL>Ckj|*t6*M zM=Ow1XCv!#IYQo@h~QmWr^9~4sc+M_I>kL$c5-JEbHtH#C0?mh7qz=`S+K_iAc>xq z!hvWKnCZrccqNTpwrYm=dT0`{n>NuS!o$rKkjl!kc%ybJ?f1%BqP{1%Vtx69`F&x zhS~scQI$o?V3^E|0j8ps(7JTqX%^K3_kZ;gdazt>b)@A0^`uxctLs0#>#1xS-vX`t zdX3o(3TYQqH-AIJ(;?IP8{Ga^y~=-s z+yBFRSl-ay+R;wm&>oMT?LRDO{>8RF+n>w2e_6Ht#|8d%-2T_z{D0Hp|2KQ~477iz zjbUN@mldmjXk&I+5k04>uJVpC+NdOI4?HD`Qa0|04SdGWGBZ8#wm~KVjKYs4Ki(A+ zh`#d9JKDI}*m}^!4rG+HHHlu|pLWk_M#p+7cQ&7T^lKnp<6TWL1H_3pT^<(DI=n*| z_dZ-QAAu$Vyj<7xKO8UDp7w;i+7sXyAkj81Qi&|)612_Rhy z+eulY_!A8`Px$-S(`jgg(LPHJ1+}{OWD85l`R57rdS<+*0W$hY3uczV z^N$(U-iH|rLUojDGmW6BD97{jU4_ZLBRd#F1&Gn5>OU{nda8@`yw=kxRN)Fu+_D-7 z;E2PbR_Us1fkc)O+##TZa$&C`tX@@k>sas6PI2Cp!I8$3*!H?f#2}$_0iDzCjjDa{ z$ETJ)%e%uD4sl%>B(mw@q@ zL-^>o`+M+eS{8C~ZU--G(>I{xU?O0p9mfU?B_!nfwO;pv@%3Y%pN7JS=SRGvhcr;_ zE||HMOHsu|l)HDb_87%;}bxGU+{;+wX zE|EXqabYR+sHmp*CI?~9X!4#MWCc_SR=}9DYmwUK;Bym54G}5w+a6$KL!F|M*Ztgq zS2lybof7oM^a>`^?cqhaHUz}TKd(u_DQ4|WIRFxRMI~pKrC4cSDnHKW^`Fku;M`q* zw2VdsgP|+yW$6`IOFEz-2Y4rPxp$8g>7q3wt&#d_9;;4FWVhivJ%3MSV@rjg4HglD z9w7!^s5c!HhG8M4#~?8{?+^$14IaA=m&L9b&2O}fn5Sa+VHE)D7M01b-t%of)SJ~Y zN=lu<h*l&{7Id2TaiP;Ax zl$I2diUYlgU!`S>2Rx!ApPA%4jK!-?eHjoKgUBq{xMLO6cZCVMaFn*8md?zhNfV3n zo0nheXAZ3L`=vI~v04!@SntJIE}P zAX|*8mKoqIIxx^qCANA4W%>_GDcdEGG4aawBV%Hu9mNj5^YYbfowXdr(oLur>1^l zOW%uL1(x^0;~-6S6cYff2N@OBEoeSnt4huTn(+1sZ$jv+2oUI@UGOVO5}cSu!;g>@ zUc`&f)iH0@G0l%jXz2`Az=SgK3e-;O#f7Fq1VwPBlw&(n;|f_f(eKdBn5|!&GpXl z3{Kxtbvqee`tYcPtBIEwTgP_K`mdjP@}vta9_&Gdzk%Vatm_)@fD0MkwxjRpu$jm} ztZeBWz{1hRNhuHJ*XYe3qE7l5_B-iJ4yJT>FUfw=pg^^)dO7o0`>641jZO-x@lAJC zV;ear$~n&(Sa{hOF|C&BU|S>HotkrF(1<;Xv%zae^;{#1$ExKPXzA*MWpVjAw&D^? zmzHPe$8P9mW8k~2Xir0O}=Bzh88SM7o#c$siNp&xupNiE0j9szDR78w~%EA zW}Zol1*+UOl$gA6a3HiQnqc@jgQ`wx0!ZS1|C9$acj7v)JLCyFRVLq!1iPr^XM%x- zET5<+Ieh>DV;w=1;jOnW`_z0-{cob!Mdj*hGw^@#J@((WUYd$82D$dVk2niB$tcFH zJ^M=mYMO~d{DMHauCtoq+vKbemt?}Mz0!l=Yeh`L4!)ynjS5FXZ|f#~@NfEfJ(1ppJ+4iNJS zzl|OPX2~IzaZA~qsCVzYRuw{M10WC~i7RfFXy{^q>bLjz*~L4 zg=Fw`TJ(U!1h(F15}#u_PgzFS17vWEM3Jt$+EqI+EU@ifp5q+bi?=_lRxH@-Q z%cjC<+~?sJKuQxw%!-LKu%&4qPfa~nb0fv;ppEPlO}ce*D+|jutmv5)>$^lZG}i!( zV?U(W)|03|r&(@m8O=@F?HY+J-cfph{ID0b=QPzW9y6EC%PDrDx8NL*EwOb;TTEZ; z?dp&e6Vob+p;+=tqN>T>P&>1ruXP7&qC4O%ei1I4QqRBDQvB>OfbzO3|ntfkMT@C9X5oCiLM1Zr{s}aNVafCuk_!GsLj0?zdP4-hUG!eDlHiI&0$U0h^monq{u1xtZBq| z^g0?h3S~96Pe=Nu-QtI<5Ij@#@bfFJz|X)r#B|n*61p?8YeB4pz6Rg9W*gZ@ASoN! zCPGHcWEuu;OJ7fj(jP=!FBC{01#}8jF_GRmU13}rNcZv-8^~BI9H|_1s}yYx-xm(a zce#>Cr=f)sxyg4N0!53>TZrr|BRHi_6v}X5X!%rKgkRdLIwe1&yqQ(&*W& zwY!G(BjNX*#48@?O3&U`o|Q}8aO`WT_>aMxjkP8Q4Iz<_cWcqSDOr%kvFcx2x3u?6-kb_s0B$H&Lck9SA! zPy6RQyL`K(Ihf(b!1(&wpd)ypKs=FsJuWW;bA2(>a=Go-0?gmZ3p(abbFQcZwTH5# zCx=M&;JbO~M1A=T2zca-Xw@>^Ii7Er&?RMjdy3+^Rm3=5{B5_xh%hK+>J^>ZSzEZC zjs5gNM1`p+FJrj9Ey4Q*@^Ad6;VqX0h&$@VlhiVlPMt*&yG5u1G!FlK;?*!B((N=W% zrGp4lKsF&g3981!a>BWEVvJ8?y_Ou+44qDTU;)^s{hyBQm0P)JU!$v@^?@kv#X%_P zF_+lr<=bO@#MI{1yURZ7i8qAf^#6G(Ol8sq6G$hdy-*QQgJEY>vUf_JEpsL|z3ntE^7zH_Nqk z*XgAx9m!Ms2i5%x6r(dNN_#z|ZAHQx`8mog_~)LT=SAs$ugp`oN|`IeV4!ChP8k|j ziina-&mZb$Oj3O^2r5vw$(KzZ>y&It)7_kKqzWo`kWoh(huvJ0P#w~wP}`JC?W--> zmruyev3`1(geOtUs$)#{|9nuPEv7GwaQ;me!sf@8Xwyz+`y9hlt2bIaLv+P*9-|<1 zac*!hUNL$?F{KJ!#gyv)aivZN64)QD+Gc>!O*D)Lf)Neid!+>At!Z!!9_0%_;gZ-A z1ZWG_#S{O^u5ENs=s7dvNCciJ((Lyw(za|w^q09_dO$zzS4IOXe)qJwoFd3$#CYIF z^zWj5r^S-ia31b`q z&IIvOxfl6AMs3ip3BFDwx_1>((^1?=QMNgTSe+o2)KK@_hy*><6)~FP=gtZW`k`Bp z?yrggcOFtwWVqvjb7#d7h2O>Dd2(rv5_O6>@aWTTnoI)bk% z{Y3prZV&*$@f%hVh7G5c^{atM|2%!UouEzJY#t*)wj(ji)~19?u=YQrfyS3VCN_f5_eT#402abX#fW^w5^8U0sYZr&qu3o8zDlnO7)(()h7`L$p zh&cp;c@Hh30%DY~Rw%z^Q*xLaltI!C?0qJ${Xl{wxLbVoicX%U?U80q{(S_D(S#7Y z?Zb1e(UMKh1AdonNaM9~QE#9@xOtz;f!7YP@5v*STR+>O0-l4!Gdsg;ek@TKn^Q3-$aR)4{!7T{|f_vtB0maV#0J#D{xQjL$T3i7rR1O{XGvwAyam~yG4je!%f z4{-|B*s=NyyfHA_%Cb?&=a%)Ye8bP)Eq%lWJ6A2ZLTF!BG_|sME8~`QqQ*47X!x|C zGp1cwqu_xt?iSTUVfriJ0rIE7F@5pbU<&0;>%M;3_uJipTM4asZ4Ls(8aV2W()!@} z-wCKmtYwyt8x%~%Af!7eYo*PXqwGIsJX3$gDJhIo?c`eSe&6k8%to%AkrLGW=Bh(@ zc)xIe`;-kN8YB#Z+=$43o4QS-xQ_ew#|_7LbqvD;Z5biTWs9~`2%^YwhoRdeQ&iIk zDnZ20e=-RwU2ChWyIotWB>Vu6 zj1F1pP_ZQ057DrwG*+#pMwRJPZF8Akd=C~Gn&a|cCSs30!P0nTn!*c0@dAm(?7+nv zDe;h)9ayj~N23 zuCsk1C|&R_8sM~)DV!wl8QuK-r7*1TDchk9IzYzwQ&bSLRJKO{$PkWBHfQ)7(juoO zNkCO9(cuLly7<^H(x1yvxZkAGKvd6;zpayLLLI()1go;<&7+-`uR4&G{oe<{^3X3#4qHqg9owecGZYxVzDdveymaJc zh2EL-jURxx@`d#T>(Fn`%pchOEIB%1QY76P?d~}RE&Qo{l!nknwaaqlvSw2}DG46N`blG%uKf}Ex zhf9KB`}1A}o^VUIjp&NH`bHW5`#v;$SFtfnm(t=o+;!b?RMnPE$L8IKk^!!6bzKM? zOL+Vy%kW?k$g(9!l|1wTc~}0GpHA}h^V8|o7#YCueXDD)57Q|ct3?+=FDZ}V_JEH5 zBejC3L7ri&YobRK^VaP#b3#6A=HUY|ohD_*H7N0aJamdK#apcp~#pd)Mzk9#K-)M8SL zQR}OB`^R&IxiW{>4F-FvaEDdS3FHn3Z}D806@9%-Gjy}*(gmz5IZ&!$3vK6qEz5d zPht51#lR?euUaI!)^v9wXoA59Mhw?q0O`0&{n9LViAkGZeZ6`j^q#cH?uL_>iZ3iMyFH^Y}Z!v7$dVW9mlk{Jfte@`;=U$FO|7x>p(?|*H#|HVd& zo)(YpA8+mpeE&C=TK@;8m<+UkC!e8Z`j<^H57d5IuMHx4E>&$4t^{ITc%-l_Ny#AA zhsc~EgNfdDi^dbjBRU$e`+RyBKk!#bilb`mYy$)UTr+dLPE4MSv+T>T#3gkl=Mxp| zj!baojKgcihb)592@|u_O_dDWQ8hl#+-g9FbvT zvBUD=zzWi8mBey4+0-1h0Gb!$5K+m+f?^Ie3^6@O;^O2L5dq)2DQ7?lg=Nk6Pd_z0 zo{}*VH=!p$rhHuaUc}(+2*|PSb#WXHVrmiGLlJYvaXL@SmXhH0B#XuzzkOo&f-EJ> zuwDht!gD!w7ft-S{q}vy@v7+=P0&nz?|7lHBcN|_v$@UQ?4js)Dmdodo7^zLSjznI z+T+C&l|G4OQXTGznduXC$Xs5UB z%G6&G)vcgph_SzfuJGgqC3@#O2__Zu!K+$P7ZfAffbQ;U1bR5~$pjGxhU@gDXp4S0 z=Vh(~klReuA|L_2|nw*((41(P>s<9W!_w}_7 zxa-_7Ld?ruqn7)?I;1t7jp*3e#U+a!H>;JAwcxUDDl7fjXzpBDU8OtZ8VmWZ8M_PJ@wXpKeI#lUi@neXGb z>{mVw&^Hf=#z14+UIC9k)+r{1(e*6-^$%d7<^!E_Q(UW&a2(bk@7H%GT$6XR2XL$> zA?07*uV*5UE^MJEEnQyRlt=5$E>2anf+8gYLv^Q-Uo`-J zj*jQiE5vqId&61WUb$CXOfY-IrMQ$uO{1-?4F}ARAk@d~3c8|9H>B+kgw}T$V4!aO z4m%Vy=hR?&0y|4}s7t0x~&)xDb4LSd*4te!jXqnw?*-2ZUWT6MzpDpZPl=#vmIhsOo`%RyeUvUa(JhI3b29 z_&Db@aj-m}3I`B487MI3Hb^V#^H6X}>z1>Gwli&Bqo$%J$UFs}l9FGG{o#+qjW{Y2 z%VLgur}9+Vf?!%%9-pqH0Ky9u3}e%V3gv3oCTE$&DBx2v)*Vh{_%t$AIo=qv&w3%p z^Qxk?))UI6zOpJ+HXPq#XJQRr=91JxQirwxuvKPSNV^n84)!pO?Y?iW*yE7-01!O@ zRMX%UCAfltBm#Ybze!y^OxS+){o3&i_|)zpQT09NmUs${!if%OmB%dop(S~0xJ_`R z#SS?$)z-zSkIw`J;nF!NCRbp?5I&?;!lSs26Jtqi zgV@5rgMQDsSD%D}uh}!V4Fr%NnXRS`de-=un$R$)Z47;@u61k-n(e*bY7(4D8Gw$9=X6iFZvApVZb_q5c$Ud9wP$tr%-53a}`4;oLLI$XI=z@Sv=lid`98 z4}JK%Qn3yeN0IrNa>_u&5u783#-0xM;uf}cP;;MOMnHzV>bJEYFl+E>pB99NqF+%s zFQ6gv4YQE=V5sAH>-8R^`ufLt#jq%>0AJXHE&7KGh z!A!lP*+yTdd@0~R^NKldqvYQ8F}Vkc_hT7aI+q-mZ>9H}_oe_!9$yhed(JsTWfUX>Mp#gG~>|ha%#F7zaxp6bgE>g%5eEVe5~Q8NBD&ABqRmA&$J&hYT;yzY+BOozNw zw&9m6Z_Pbb2+sGmfs!zCv*{uDBIci;ebETWQ3@jMdp#>s)MJ#K8KRPIMTkzK&eeoS?A zsb~RpG4_z{^F73c?CoY`SRV>rwe{M5Oh6OCOlECwu_=NNj&=AyAj52p>80D?H6(-O zyL==at)GrKho&nS5{Q}>J5t!d_8`iwLY`>JZ2#=I;unO}8E--@ZF|YQ2HNtzkJ{*C zLPUD~Vl!6-*<7b=#qp+}nbj-JL6vI=$5Xh}Uj45;flE@J__hHXp6>TI2j!qU1Q}M$ zP6IX{51t$qzo`=a&n=}E2{XW}U2@4C9P{C+4Yt%E@3u!nU3MbN$rKZ@MwHB6Kt9ko zsAVqy266q5VuwG0$N$ppWT5>&6g&KRf&Wj$_5X)%=U+R){}e1U{p;yy2kLTPJB{A?ae4EP4~N2*E&-Hjau*$QIEu-x6%(e87mxFHA#I_+?o7 z&gkZ5$IP)42jb}-ONvy%I2MpPeksG9<^C2giAp-Me=gQ5Xhou(lR=yLJMI-J1#(F% zLnGsD^(2^2?7PV`#I=tF6g+M(+uk~V+oqzofqkpG_1KbB-LuFFUgazg7bVY-_b1>VL#i(Vq45O;(CZxwifh!{k zwY6zLaww0eHVTX7WmttApb9^9IW%JTft~thun^vvCs263$h4a$*^|{{==1D@&h~1} zxE;MA`do4|h9wj!1nbKSO<{wtOq&d)&`#~bS4kdOOV$NLrb>T;K(n6KI3ktS6#A{A#Q*w@;QjArj~JKTH_wtU&eK3q=Du4 zoY%c|t2zoCkePlEI2M-Ji}6+E}XCm*aIv z7WQ=PTLWuKpi|A@)&|DLk}f&QB^d@6A`>!LQ|c(W5Pd=Gf7o#EF zVG7T%P%ZZ$k}^aa%Aznk1ptw(I)B{mrpikzU0WK)zxaYz_fEWNc8k|2z_u!CTubFU z*=Y}$0tG`|(B;YQ88R!d1z+va@Bt4e+>4J8{f2O@R0G?VP9s9X!s)m0Wee&;f(SgC z-Okq!{keG4o!8HpVgpQb%kGh5aMQU)TPc4V74O^^46T_NfsPl1qcZPJyr{RKaA3sd zc;%4WQw*IEMi+0xw_OYePvNBDsq8k?Mi!0!qMckTV2{1~>+}Mv1zT{lSs(*m7e+c( zowd}R&%B?eyj;=XwQ90YKEJjlF^{&}hPb9o(<`01^?isy;WvC*B_a6Jj4I^L#Om5< zmf$Wx4r6!*5r5uT@&(yfI&cH3mq2I675wbi9vYCLFeHp zBqym>xLp}W$j9xsrXeo zjd=Blk@Sg39)kFI;Pi7nH$@Ke1`4^X(V;H8?>i0ujdk1WIBq42xpRK`dSH&`1>e|6 zqhO^+jTog_IqLj!;(}h==|_Y~A1OOi!yF8br@+ud;gF?$R*A1-$+fAqF}RE0%Q06$ zG{=gZ{$s6B!}7yCB;J%AxE5VM?m*YfpwU)8=Mo1}UYcAhTxX(0dHpt7?h->iO=I6jhFL4 zgvzbOGsN{@Yuu<6Gz!L47WMi)agDRj&=DKO`C*Euq#k0HVSU_?$J+-T=~8}{8Hx#w z8!q&!BTV<}B^$UnngaZ*o%R$CF;F$q31hQ-`zI*DZ?nP!I+&S>&8&~?MPPb+Vh!O* z8qaIGSTZ^Z3ePd=5`2IZ8PJ$HWrNF%GfJPdNW9X}n=Z*;w|vh^gk>Lx{dx+_s(=Jt zw1#i9D$%o2qa(JLpxGgvVPtajXVQ$)+CkP25t`;p39mCJg`@&1$LstSKakm4s(|tN zZarLShU*Vc%^+fFZ6%t|PNjG7fDG^Z%rx7R){II&!we*h@{>XD{jgSi(aJ(7ym!md zXU5-@OlIHfz(!$LH^!hbJ&_eRZ~ThWj|CJ(MxW)XpY1&1(|-IGu-HXspNh zwNkeT5YlpmFf}-$#Ny_&PBXT8kevstoO`xRLKOrkO8AI4yxBlwXiD%oo10K02;v5h zF7;#GyIYtKVZoBQo6PM2OR`$7{kPFzbGb1k&ser1?X#$7qk_}&RQh;zR)kOKeI35y z<`j_P(3=IcMMV~j?yV=PPFtt@k|V@GZ916NAe~sfg!3b@FzWtCkcK2f%2jkn_Vi`8 zZd-PrRZ}>k9U$#v(wFfNS0bb+k0G^4?v?b4E+j{aE@YHXX~7jdh0G4X!t?#v+izI< zbrkPyR!I6HbM!CgA$VQ^gUhMSEbWi7v@V-$mumU^<|Rc-TyKn(^`bOx>jF*u=wfmf zHGMPrDNUHuCUCpDPt3}C5kC zCF>1DR}D~iigtHV)qEEN^_V1=a!nq6OK1;Y{zH4d*SU$#El(h zlkq&w9{KDZ-EGL1KLQ1NZ3&yHKv?Dhoqc)jW|nO#>xg5a_oHu%%2ke!rK!@*`<{am znR8BZET)}8)@iz|eLPzw!gthd0gvLh5`L*}6((rvV=14>WEsCnmv(1L2KGHg4$Qgx z5ovsb^HK46rq|f(VYV?g@%_@OGR=8q$i~t=dB<`~PC;Xc)6cR9FY6~Sqvqjr6{0;_ z_o6RfqKt9cz9HTPdUx;yV;Ao)U!o!J#jhgO*ahJH?yWDVZf<2};(N?tzwJ~Z_Rx-W z^#X?%IL2w?2>xTNUe%&U?eiv5=4(>iC7%wILX_ZkMr|L66MY{D4zQBMHojtJH(+Ux zh9|NCcM`7Pq1`k5%4EYg`)5j)84EN2uyFHMy)9m3C$txYs(n8BYBV-D<2xZuL~TEB zO?i)MyDdP1qK(0Z1x?0DwioU_Z&T4{5FUTo8?R@V*t>oXA;vT_UxDpK?Cw58_L!Cf zyvPC6Gl`@q2;w{`TL~KE^OdC%(If2gHYt`L>vIj-w7KJmkf>{BEEfr(7wtt=%noxG z7k$?Y&&O~s?_gOQY{0vN7#`7AyU(|v)HY&_TNY>GJGV=4(X5;0GdA~@Bc+*9TyxOA z*epmrh+=X(6&qZhMD`=N$H^pO%n>j~?S=2Y2VEh6RS;M1MMG}^gn^| z|H%FM-&Gzn(Ein__W$a};9n&P|K9c>1KnR+!~X>1jPxx3>h@rR+Mk9ZOMe*m{b?xD zQpq939HIHs%9&)sk8-Bb$WT7#=vPNq=WihSe8G{;awkrGpYEQXAbYT@J%g(YV;)JN z)T5n!C$a=IcIlwWf!8WCe?ir@HZy=Mcte%x@TDTNWB5z1BqL(q7mHd?h`UinQ49Z{Q) zZ{fsPr%cpr1>9Hryf1htKa{IpJ@jQ7G7bzZQN9B;y`Y7H7Fr=UsMZz2TXZn$21cor zf))Nh%)M1`B-?hiD`u8jQj3|Hnbj?3W@ct)W@ct)W>$+@%*@Qpzs|N#c-!8#&-w3- zd;L-oRS#J!Dl2n-IoFtDD5+{mW+~I2iuls5=YYO_7uP)fQ5aSb?a%+RR8bgx4o)<2 zK-O)FK3K`ciaAuZljIGEP|6FfgrGz`D(tmL*s>B5`!=Xadamg`dcz6uQfEv~noo=r zJ@s%Df7RwvFME`ZACqU^HL>`WQ)w~Gb{QljQ_C1wyTB3(2D+E8r)hYrTvo5fWiY6J zpQfV=$XOQ9*pCgmOxhp`bzo%4q!~ASYeIOGV3KoaD!b0;h|HGLJpSt=)D4^L@E7<* zn|84DgGO(wLi}_h0rk%G zAc^>(gkGkA<=;fx^`yv+=&~enR!6-kNK%PlPt4}BMJNEjAR#|@EmdaRatpk;Su7)E zc+SC-=@>;432NP4r^nGc!Z*mTw{AEqZt?LaOqH|fM}v%sTNhbDuoUl zZ;dXNd)yC`f$FO>E!;!D(0NtnjP@u^94rqn>qZ(>BHgW;7+zg~K5kHIm@ouq+^QK^W+)p=f6~53GpK+FzLtL0 zeV#sEXXLzBwXh7uMK!Kr1Oe#QRuBtwB)e zs%-s=Ivik{j|9SS#0fpnc-y0ggmp{|@cPm25~x}t*DB&%?tat36LyImtX)CY!qpm7 zqu;3Am^7rL7kU$Kr{Ws^VNNxglnr<5XWf0E5VtUbtaOYSWIB}g2mFmTI-?AxqAa#s zLB~VcG6jc}Ou1xZ+DOIti~Fq&@**kvPpVB6H4AF`$m;mmXMDwd>d)FG)6R`Y`imyD zrQ5PSJqDw^>t;*}=WGV5qnKg}xCF^Zn!R-=up4MuSAHS>T0pJxU|eU)19Tc05_}h=t0wzDOa5DBc#yoxHM^A9VoH) zK%m zJbBb&XETee@FnIV>+J2B&(sKkpNaP~SKEevAD&0WgH`mCG_1!{gybwKKn2r#kd*<| z3YHZOx!G`((bUY&%F@(4UlAlgst^h};@;a6vJJFGTF0Ug=a9VFs&G-EW~@jYnZzQ> zoO4<~vmHug7>r=fR7)N^jAeC{F+cShuiQPxq2h8HiFN4KZPI@9J*c_(g3;-Be1*mf z^%5SBkN3UV;B2QFRWj^EPPnF?Q#zJ(zS*yno1u~Q)~26GfjHAtA!iC*7YHFYj3&Xv zNw0vp?VuTZ(aJufHei}*zj<-vgM?ot$c&QBc}p&3PT8JJ%dL~6pa5IUtdQTHo&dzf zBr`Y66HzKW*y}K=X_FA7(XL@}vD{ai^t<0D-b38)<~>%Ue7kY8 zK4q^)9~)3^R~Z~{-m1~p!O`m_x;`^LhXtpmJ%0WU*`9Do5L-_ihc`1FSpL~&OlW8B=&_}InX8mNoh*HLoCy2+*ZAE#dZ>X(fV zrm3~dO=sL|topsLSXNI0*Ww+;ijN0Y?GMt4BG)v0y=F3*-ou!aSq{PYM7Hb3I9>pN zZXoDxEnd;;_w8q{Xn1j|sm!anQR#RRS=!P;`cjjiH%G*v_D_gbokysV ziFYa)y|vXY}k+&-%Us2l8yv|7m-pMrs8 z>mvnQ1EK>Bacf=8y!yah0>6Y@0wY)?Vy!5sn13WEn;kH2(CwsH2BVV^r($A}M`ENU zFkq+CU&KoJyCj0qFm{@6MDl?UhG5Mu(7_+LTojysFW7D-Fjun{W-*fj9{UD=bDk6G z#liay`08C!hdy+st9V=tMZjd;RKX9slENG zl|)B1i%e-51=E+LrBkk`+&ygH7$)`0s}s8=#6KL1Vpj# zMR10SDiJBh9{uelsIHaRUWuqVQh}&(t`E2^IO3tRt(FyP2!ySuuT$LsDhRSEV!w+< ze9gRcy|9fccyJmZH-Mitwr9`hp(>Six=E<1iAFEsct}C*)?s_FE+!x97>y3k>w$bO zLLkp2KmJxF&H#tb1I|tg-)AqeRO;_me6D8ZS{OTxRkH2uqeouytd;9KB$0WNHk*~z zD~#Oq+B$UhV4Nu@sdhQ&Qjsv)|8i$jC|>U>mnIT!P$v#l7#9G5BaNKD=C=3Ev04D- zVWrH8Fa91&zcA$s^Dq_d$V?lbR5l)HC(*c3Axi_d4JUzufO6+l> zYCinVqA0B`3{u!r?!c1cj`LHk1{aOJMI99aJkl>E>98JSe)+ggvEVpU3ihd#>d01+ zhJ-REc0z9o6+SIi(U!fA0cW?n?nP?`6&EdM%;nnOo66Ldz7*Bj!%D6qTplON*as{J zWX9aipDo(>WYDj)y4r#r3B^)41P{nzqK_H<|)|28o%f_F_NzE9Ps!m6a;L z-wu$$4Y8^2uA&*rz)Ja>>6~<}a|w|5FM%`^#K9qda1g%}Q=5yP3i$9Zp#RcaNhlx* ziLmEDSNIC!`ECyR9bY7;2$B|`Fuh11z?n;MEA#dmJ?dN*jw4lJPi*>>ccy%yz=Wwo zV%R&%4!U|R!Maa(Qyy+$e*BQ1UAt`X<&@8t0~vw7FR30hUtlv~*xYRu8=YE`Wxq~$ zdqirwrQFOFe>&J9H>>H*^04SWLX!pJ0C2J%56EV@dxy$4gbWCarQQ5E80H2qAm9{! zF`ByoOd0S3T`w51wV5{b>&E|@uP#n`jHo}k09=6ow4&ieTd>8+N8Cua#T@NNF~t!f z#-YpD?SFDG`~18=F)@XcVS~P9I*S=1C1s0bf@OkUT^v1Dv~?O7zU$VNk!Z5xV2&56 z(7N8rR6db%0jPyemw60Usq>(pkg5XXn0<9*(#G0~X6l4BZ*9t5`dqW0vl9(iI{%6< z!hg;!V$J*J`fzbR2#^A*T>K{M11bmZs|qf-3hw0jaDDdPgPw>y^AI_``V_a$?o#Mm zAMj+TczVI+in-E^YPvxJUyQEMtIYbEmpA<8Ky~4%4Vs3#>7B zih#NV>4mErJdHjpp|!=S80=AF@vsgFUeL(7Q|NOh1mry2`b}L=T06Yv@T!vytn5M$ zOJIH@0;ep!{Favn{63cD`_|*IFRBT4kWt}POvHVzX9rh1`Ub27^xlKj5>xS0BJIR15j#q!H?!4-iI3}+V2U+@bn?=)>Fu*Ky5m4_C)pp%s= zSPjG%e>S#ucEjC8JtUF9F~h$b(#ry`#TyBhf zPfC!?C?nGp8!pF?=(-lMzd)71tooz0c~s-ePHPPPWd32H$q}(?QTO`^x!7b)*J!Sm z#c0&em8Zzl`X8tsXoGy-~Li5t^H834fg@*bsD3b56j-) z%oWkKrzQ395}StnnX8@iu=qJ=aCO~KGL;n1-9zDVi+#EWcrPy-&|dr-u-Gj(;^Ii2 zsi=?R4yKI^Bce*xy5Hi8GJ55VVs>ls(>2^f{IC?xb?Lfxf~RT{0FJTt1|WNtQuB?Npj}V5uY{=lU$paFJ`AAc*(t^LzU+ z0m~>f@Qcq2HR}PcC|it}TSE{K3x=I>rzbv;P$~f9?nH-1!^Ep{wScr>@CkI3s+7h@ z*5naLld>pvFvcCX`I~D!k6W-7|Im5k`eyFq7L**F*DoU?syhNFV+9l01ix4!9jlIF zWq3S1B@p|xxw!{*2Th9-{FZ2O>We9{pTOHeEY5BGgliWCzkH#~4UZE0IVoYv-&tI~ z{X&tr|7z$yS!tIQ$$_gTZ_GY=B@J674{D4>37=RsDZ{BSmf|m5g|Z^F_Fo$`i$?f5 zZv0UAph*ad$itm1ixF;k{%%!<`bL#}mg#5~S#zu4JuLD9D#oKPPT;F4TKSmQ z-lee-nsUkF)Q&e*xh@^JHIUZyL7&>~ZT3VwAL%mEj=2S4g+0;yxD?w}5J|B>;we~y zl=Ep1R#;D2sFTMrA=m|EcAFbR4NI4GA(Q$I!SO<#&2R7CXKl6R zpmae<4o`f~+ZSdr*bOc%8uItv$HjCb4JmU8+Vplgs?qzbha40wqgYhatDSCnYj%$i zdVFkogr*;&MvdXOzkhzhH!X(b{RL6~O^@++wEZuL`fp(QABg&2rL_MTQ8WI_WEs@I zSynLqA$R@z*ZyVW_oBGs>~CDIoamBZOk&&7 zKR6;8QV}N%nbhGvSfB3LBM>`Tw71&9adC^uUq2*P5Po0kER`^vv>;h3Kn_KRzk-|=<( z&BMWc^}wGXjNwsI8y-0~|S3M&7LWc4Putf!3kn| z^uUy*f18FSh{IX>m*22;zs5iT_d_W4J<9{dEQrRx_)v4)REhpOAL_C4?8yyHtp*=a zDZ8Y5pz+ib5Rz{wU*ot379I~>!e3I#M8NN@BD>RhU>{sQ6slrZ*cS(DW0{B}!%3oP zh{X1bMO-=o41Emy7;jx3Lcd9pRuurPQb+{sv=acJJ8~j3kx4o-2Zu(t%PK5&&4{m0 zWhi8<`Px!ep-y#)zl35?8rU}oa7DTcbubn%0OC8l9OEf>44=uY2g%~lO#L|Y5iK?@G<*`3+J~As)fX#ii>x&I_ zLyaJ-K(ErzuU@~G7mH|9V0n@UmtqNfFgH6J8dkGqFE;ICg*8R%eKs4>kXfG5X;z%| zmv;K_{u;tXkZS`T+5x9cW%UiI4XWx=SzPjNbqi$&r3>x&nz+K?yr8X;Z0^4EExS&p zQP|K1QYd~agtv(7cF?{3K+<`o^IFUTCz9oGK%>C_P2XT93CRX~e74s?Acrx^jXvPB zG^3>!Bwqa#wE+oAeb~N@l;a5qHI~tje()~CM(32!*Ck0B=+6K33>7*m%O>Rbu50(M z51r}*C|8DS@LP%XYZ_m!*8lAN=>7hw`&`>OXW!K@$$7T5{1F*Gq0&ZwcV>X~N8_}C z9p8R3U`X;62zp|~<36Oi{xElMj}(zpSng zIJGUfx^S{J$mtS?j9mZ;zBNv;^?W^NP4G}rB-p}eT+!ea!r#lQ49j($VoNK=1Mtsu zgRu6>(735}f(=F4&o&+(7~z&+SUKh1tii~vYh`~jr8O9GfWN8oPJOu_n;=9R)7b}4 z@kG&*=J(IR5Jplphc;2wYY50Gk_7#>!xR^k?5trh33!xov8qp`iL$<9GAId6$fiV2 zWEJJeU-1GQ)u+5z_?pYNewsA;t{t>ZFxexs0N)R+|MUCBsslp@nnKogW(iimpu#%L zCFs{KFDcXT6~c;(gOjb@KDlmT=vVyA5fy`4QPT3$5kkGaBtt7^c!q(KJ+Cmm)mH*d zhpFi;W!64yKjZLKG6YqCm?)I>JbYvGP?Y>?<8jef{tSkhbMDO?oJ?lUSN_b`8~)ol zxSY<`4i3q44Jg5LjT`Rsp)|aRlvG2#{U^7GU2Pa!=cD%OG1Xrym-G8Pc79)W#?1=S zXX_Z8zqJ;N(mTH{j-}PW(Rx-sN54)_KJ%qj(206hA15zQM`n)fjJ4m}<7SMH4l7`| zGWFtHd^VaARNL+6g9H0!`{@&SqdqsCi5oVDm$)<9Edmak$o^kzWn5}JHnRCzE7;ds zVc=vOi`d-w59F~je`$mf3N_tV{zeI&NtyrM3JovzYGB$25KsRUB<;}Cl9}RU&vdUF zM_kgu-?MGEn-cYLumjobZ)qWY`d+A$!X!~*B-F1?0^=rb`R2g52h)~D6W&(BLfU+m zUFMXB$V>M)A~J5V()noAz1}&*qWFcBq~}`5#!PQ`-L$y0qpHr2#;e?v=+O0hJnyKv9^xk z*YX&f!KI8qf?$G8QTMN~6V^#Ubf+Y>5B4AcZJv4XC_rR$W;P?k%3+iee(H#tQ*Fmh zC15ifd8PT$tJ_t=cMyz`=~{43%ACV%r|6?c(0#Afh@q;#9Usm`T}bZQ;!qrF7QT1< zMW5^U2t~%fo4%m?9rA}^Szb>QgN+8w^=>%l#(h z)tclODV--I4^2QmzZ4l=(g_pJyI=OMTSVAA6qX4I{~7@plfnz994a1ZD-TusZv~_! zw|egda^NP)bq8Z1G-;N|-_5~ZYf@VqQ7&Lj#}_z*7{)L6ma@S33K|}@Ogeo2wd)A9 zr{Ti$8^rw2CUN-PMGTFe+FGjF!8UsG?$}`2KiN~1KJB1+il6U6!N#TZdce5xy0{1_ z-Z4{DT`(YvD5ovjq~Q8sdDTZ>YWN|I<%EYK{^+RX2uBScMJtX5M>?Ja%bT`@b058MG6*vpk*`CIZe@jA<>L#Wt{b;>|IeX zBPe|0G)Ab*G%){FhDSxW)mb9TuObYA3TfG=0b zqEvOYr$X;+iTcZoin+ck;iCaaNYz~3lmN3uOC$U9D?a5)$Qc)*hifaXMXTHE9!e1O z$hAoevrhkWU!IxrLM#Hd{MB#EijPwe8kz!X7FIMfsGHe%u50;{_QSH8N-|OPrCf!P z7sDH1^^lkBFTnMGRy_Q{Z~p;Y|0%`8UxDlY>xzf}V&LnawP0iTE0qJom+0dkg;iC{ zze$cisEQ%LXwRoop4DBhxIbv%`zeLAq0K#DkYXe#7 zUrGml7gZ|M$@+Gc&NhvXC-P{j`qT)TMMO0A_|nJ-QPnKtX~SpriX=$oq0y(CA~h1Z zvZwuE;^<8(?{1HFwswsxvOr#(WhRCdI!eceHqAHZ>(xtB1)7N~Y%?&CV)Xx(`B0Qq+BCdfiy=(q{N{so0ghb+uk}sZXmi(FP!t?JyX+!s2uL>4k z6}6qgzKerK{^#X-jR^!F`NEyU!Ae1frGTI^Yu<91JM@Nc2c4W&tLMDFIf}uQgd=wO zc>(rD_aeU9W>4_x{oZTY4?~e(0z;OT&R@3fM{YmjW?~b*9k~XY>t^M;wy>J?XZ8tF z57plw*M5+yZxj<0#cv5PKpnIV`aS4DT+ysq9UK z99!-ZiMpH@p%_eJ*0fZ;TV=b;)NW^)v7)pj+XlC?DotgA`$W1^X6c#z+CpegN?6Zv zm-nqFVP$}LJU3J4eRO0{IC~icA&3!hEE5}je0*SYM-akPzkE$NR0BYsf$qmpgsp^8 zk5$T$B}Vo;l=0`)?K1U=7a%`A%*_Jui#^5^cx?{n2Ez*E=|-`Ec4yTEaBzlO?}~Af@^~20^V7SS!3~c)sS5U z0Qbre*lQrpHkza=qoDF~JS7{0eB3`5$(dUXf7n#(3zts|769=}WE-xNWaW9?#DM7n zUgfm+N>V)TXRYYq-)TC}dx?QTmuw%<{s4=`m?zXM`W~ONgE%v_PC0WJRbAY>cQr5>^9n1zBZ@m7+9rKi$oP}VW0sN^KlOnVDEzRrp<98 ztPlA_{2EZ=9xEQlGFDUG^NmH&>;3L#eK13yM<@#xMd0`Rk%&Vz088_ioo&|d6a?>c zIwCoUE~VEHeOP%htXmmxSomoj3U>?~9D~fg-0T|^E)P)@%3St%Z^@8kGrB~M@AgU) zP50YDGrgDvvmdFaoaGo3D~vY8X8%Ie&taiHu9wd@m5H8dE|kv z8)5^+YO@lJdcYm1*n}6a>0U>+#o$g_xG3y=pZ8 z43;^mCLW8eC2qJ}!z*#ll1d%tComkXYpyOK%TpeiR()9D#BhH8`l}QEo95v0CYo|j z#kLO{FRWEuDN)yps|1IdNzW-MbERAI{)1t&N{?xly^3z*kAJxsAl)~46? z`}gU}=~i|o>8q&RU3bG#`wXsMkTJ@Y^NRYqrggfSY#GB8l{cxGnK3Q&@<2O(W5yQh=e{fP zx*$12Sgq`a2v9_{htU{&Il@p(2r8cL;yLss z7;^!t$9-M-by|dBQ2a7@eXD5&_*#q?JUe#o1Rh$Y4bo=mYz?m!`RVQYaB)-r^KrYG z6<$&101S5V+{@(}Xr1+}W91x6Q}^>=)=RN6y|Cu`qfKwMEL}&FuZ14Vjzr|gH&Ku9 zU&}5`6wzj}Mav8$jR92ZL90)=s%gkd{}})o{%0+~A58S`0q|?o{-4kS`~?91ae)7} zbNTPI0Dso4{*$_Ze^Tc91&sf>TS?E%{Eq_Q`QLK$n*KKBKSj8l^p%_E)6p8`PLjHC zADY>~Xo_PJ=ENjRgdJM5}c{EE`X?CsYaU@r2E6=BlX#La|rTR z$MX{jU(tD1MPmCxr+RM8?#Urc`2ydwG(1aYBkW@{GzyqpQ@gs|nAzLYrcB{JkLLE| ziNDcnNR>;+e@bq2P8QdT@^~_jK(e~I!7sAs4oUDzg6w{{(YI#2H8;lk#!}VY5bpTb zQuAp9*v6sF=()p&n9Q890GL2-F-dO}{UF)bQ|A5YL#Hmhx*K6)s6(FdX4Pe}(as+W z-9o~o?DY#0W1lOPR^BLXsLDy*daYlwbI9?$zw-U`$3$|oRgc-RR{o?C>xJsA?&q0N zqfh!Eg&{}l@U#8eP$jsOFh~Xx;XYG-9J+4od#wEYdQQ8|(x!$+25$u7Bq(B>v|<&6 zp)>>vX~OA;45+%Q!T2C0(7<*kQ-dagZ>FP+tW*HqZq7|pknFUdNF|(%W*0j*cYDX# zfgnHBXoqxmaVl8~CuE)vMD=V$X~9Oq1XiA)UIxQ}dBKR_UkJu{ED?&( zPHtwsz1;|dr|bzaGDFc>n<1o7ZOIMwNNIf@PS6@3Drb72B$)KBdN`OO&=XCe<$v58 zfeH!6EBd=W=ye@q=nsH!WC*f|RmIyKBPFAT?cLGYW5aJ0B9WukIq}$6um~Qk%(0ZG zf2$)fV1!@B>K`ldWwxiENb!+2oX{%BAl@%}0~t1|_e^MEEmxdv$CNZcEO`Y|Z3Jm^ zRIoTs27GtB5RTZwM)%(ceeh8)`N}Lii8|QGKYm$}tT%4iSX(y6oRR+)o`ERlZX(&B zIsjsXh^j67w3^k2{=JS|=$p_gN?`e#4UuGf67?F$Lk^@nM5tJVj~53G4J?-7G<=24 z5JPT=-vFo4xYR^%O8ZT|I}3TC&o1%9ArbsMyfb7$A91=^r18`}sd2aV+Y85h&**xj z03p62=L_Vp3c>s%_O1?Pc*Ok{B^hEMPmi;!trJvfUja8ag(=ryx(SYu!Q}es{!5(| zo|E-qx{% zE&$Z0a^Ao^{S?QOh2l?~OJnB)80(h|TzzVJhpR*pHN;g;`SgLpA=gObfdO+#+OxUH zfAaFogE)vVWSij1>Sfb9ID49o`!!S4eK=60B1N1W5D4IlO!vduayEz`=yQwt1!+BC z5uWf{vwaOEwP!|?qrX-B3Nnm_LTQ0WP3k!Q&O_15k=A+-RJ-B+3M{ATKF>KFFD@q3 zk;r!MnT?Do^(ycELRDGZOlMnts17BlRPa1KaY-x)1W6SjBRZL?-UOkn*M+`o6+WNJ zyU$+h6Ik=$ju48_d8d&%?3pj*KG$$S(?|*jVM_i*GQm*Ep$4nF`CAQ8DzTLnIYvl18xeK5x!vJyW8bfNu3zK9cCLI6+&z0zfo z+D%MO9CuzLwg>$jGkx9wiUA&h`w$o`Q1vNa|D_Iuh+5A^BoNFn(3@(pvCHt?{ckS} zB=cG@ZEm2B8mIkd!bv-VnxhjJdp%TxeBmA2_50)b_8OJJLBnWcI z+`Ny8t=Xx-+7 zj-_sFfh|Z_Icqgakq};TAAY(A+&WUbh%IRKBPeQQf{rLI{Viq9gQ1FaMAC#xQ8%lM zz^373m2ftPR*1fW#Wf4ra1MFi2%S4@B_aY_Ii0>Mhh?77On%Vr)N3RCnT%*uwQ4oqgY(#nZfe-Hl5rn|cuc})a zkHO@m_q_tZ_!n@b3AVcbPu<7GWag~HD#2ZzXh48(X|RWMw6jWCwO4K|n=d}x3Q>X=sLK$4@+CHS8_rgEGjFYn3_2v!nMq#8-txCHpM`wbX0>^T=u6%i(Ws*9| z%sDxDPptH5Fbi(CMsVGEMxzu}KXRi;@DUv7&Jh5;?JVpp7iHUy$U~2p^BDVtwRNiN z#80NcOAei$%W}#gKC%j^{Wykg!uZiI}(DCIoklbWbGKNbQDzo0YGoI^jZ3KK#U9j>YLZVmLSr>rXl`-iL93cWB4hh&0AZXwmk~hDZiQkTTIu5e2QOnOfbs@)1rPUk6KEyri)$L*IL>^-O#M@ z)82kM+bY7^%D@4RC3=rZ8}n{P;nNGr-b0D1a+VW!40SuUmW6t^3A&6Y5|zf#(Fuva zunak7+mK*#Dau-3FLP5t7lBco;*3btT+Fb6$5A`76n6_r?4|_4TjeHMyVu&)QyyclzKU^KHOA3$5^lDtCuXMh@r_n}?bw^VgwUag#c;?a)0RnNNwD=_3q{d3 z(+ftvv(Zdm+QO^T%k}G|Pw=)u6UGJjq5?@@5J7e^z|vN)l^d7ue8gu?-c#_%F@H;05f(lp8kJWGzpm^jQ4RQLl zvorcaRW=^7j@fHZF+N^fy!)YQ9E1PJ9F3*QP|d6t==yZ1M@yl<+HuotQv(jvsSu+F zO;3(G@w4t<^t=-Y!G6*79M>Rmr$Nlt2JjgEZm2kJan`uBJp@#3U>>jq6)_l@g{LA{ z6TVxuGBK?%N>^G2>~I`$ zut5AUYS9ej!c-2$S`tR(Y~PHjY^3|tGT1zx#;x4fb?u@?HKtkC9G&nHxf}vs>f;v} zICeRg3H)>INB^w_k9C3qOE??sr@kgLiVKR6=~r@(V`JvLdbie{86|PnsHCQX@P>;k z2%#iMY+bwu!n&m_F0>6uCcp#)=Zq>=qBcfcHPUCY_D{3a_R}vfHqli7O}uLUB*lQz z{4&fyE7yiL=BAw}`ecdrP9PL*Qp9ex+o8MP2-FXjdE~URl;lBoiA}={hXsRzJ zy}I7mdV-*QN@sO$o8a{O;TRLSEsR+|J6`v9%s3z<_(M@UV8?Z%4v1tW->vpm%n5x) z81$*ckzXk0KrPA)2$B< zJY7IT(i^zlP2A{KrKsTyRt&Fqz#@P6o@|7~TSSf)NUq$EdU6a3{@`E?8kRT!2_E{o z1UTxA#EKckA03T;?sAkd`pfLCU{S8VpT!ExP34Q~!95zm(3nm{olSgQ4aXB4Ll2Ke znjY3C6INk^P|iM_;r$KXxXfaZV7Oz`V3HyNpqI=hei*AckV#Ci7+NQ+CN72b{#U_p zKOhY!dM7@tDt9ZJ+u!%jF#??=y zC%{AtIJ8+oha@yz`ogaug~Cj%7j{?(H%`vDG)~M^WeOsH8LEV64;|~n++lmp7r~^2 zYtHvWP2ht%kMPXl`O_J6dKD^@^q^X>N;K#j8xDU6e0S%({vERlz<}^Tg`p1uQr5Fe zP1&TODO6U`G_ZxV&Ea0h4ZE{%! z@EoIn`0nfqt%rT}r)*G_xB}S2HZ%E9rn{v(QwI`7zXpoQ44 z?H9UO#r(8`E#?@J;S3w1G;Tf7H-VvD(Y~GAJ*yW(2NvwwkiKZ)s2@MR?*xP$luvi( zuX18g|6qDy$P;42Y=$FD2a^>A&$;`pF|J!jo|kp zq_ge5wfnD8I#nakjZ@O*kMBAY*^%I^c15Wky2>|WX=;7Kg$Dl^y3MAd9n z!{Gs%kJdg2fH*A(4uZtac*2yaEv%NLkc_5%*=sD4k{T;3zq?EcF>0;ev56KQ;3F4+ z!J~wc;t-m+kYGwO}X>T z4x0A9dmr3m-ZbBZD3}Xw@uEFdoLp4jaCrO4XZH4iTCj4CEpmv)y30E$?cS4smy`|< zs1)vooH9eFpsBMv##{Bt(Vp_KBg>#yXtGNm;Cp0;mHT7iG`yoDrLryyp=VDmZmbz! zE)~?NAviY-rl}N2lbcu!xSl|iTI6#lfgMiHFv0G)aQ9i1z=ewvP%trZHCyh++@+9M zjMYW(fgQWrwj39~U2N;UOx0~PHm!W!;yWs;tN8q_nYlF4h0ht?!}FL zXePk3q?F{C6anw0$6cgR{?Sog9S#WbK%xUj)ej<2Rb3Po_);?bZ_ir7Qt24M96*i` zgM@)D5wL65lY6IzdcN+jW&-Uw678?pBV{pD!EueTiB18qTeA@&mhe}alE0Mn?1K5%-C@JQ;3Y|~hFWHd2G>v( zc*PTMmgGT*?1pqQVW{}X{F;x#{b=SThOe8kIVsi+di}ObhBW?h;KxpPYQBQs$O?REVly0=?s9cC2;Yi2l&dB zdkmzv7U7Z7YeQ&#c^U)auK%Sj*cg8c*M0)qZ=M`Y@0Go9ukNVk5Kq%z&4BsVWec}c zNv?`hu~U`HZMyLFr!s3bshjgolam9X-PQVH9tp0i;Kw=-GtkN;@7odS9%7}Ba zV;p-Y@ri$iKbK!t~F90B%Fx6uu4r{0U7*zs5yNClJ!@T~B$q{0_z&IT{>M zQD1f_2p3?6mzwJsn>+ZvM=n;VutEEk8zxMy$rCQf z!Rrc4Fqu3!{1LuU?FT2GpTjQCf{qUy`9B~DB!d{ zD_8g`dTDtX%?vgvMx1Kv1x)aY=|w0M^kSY4iRw3ss_3-rOU55PBif%}8)6rB0G;ew zvl;iEW=h8!8uRRIfjG)A;keMZTo`GWWJ_nA%#ju&w$CSVDM%1N)Vxk}${mj|)ToJ% zOgE8Yk}@S>mdZ|(ddQ=;Fo66aBa-PG6ND}|NM2xNEE2gj&R5ou^v=KENK_EF_W)oD z3E8v1aiwOR+7U@ZG|SPx-Pq`-ikbIb4Zf(zR4xw$0N4ekCV!Xe^9C35KDptKxsj2n z|ND{Eu8*JQX@(H zdEvpw#wRkoV8AEz@<2X?oi~_bvKO0RNOO-hFwXV<;%z_3-%sy%ejD2>trc74^BXgL zj}43F0uvLJ&vzccJ)P?uvP#G2V;xm|jx8R6EeZNdho888y(4(6g6l~x&A>AU1y2T% zzc@{dFJIan*jr6%rbo#@7D6P8U4N+~%hEqyTr!rbM;&H}qT^M=LIc}Z(GID&K^DMd z9RhcRya8?Imrv!?rLKmmX<*K?(3x|Hu{x-3-I@6fEszC`tts49G1_uf8fT`CUEe_+ z5^whkw+RC*z>Hk6?C-Qe>#6ZvU7qcBLeZrWB@3w{EDg*5o@+uN>5jO#$xv62F5}v0McOc zq$^UOh#smDa0XN*hnkRCbZRqUSkFcjd#D4MSHh6n82MBewud#r`pgw~a%Ha=Z@fSR zjYo))whblUhC4fs&R}=%k!XY@r+|)>Q-w-jlP)#Tptj)e)<{&;@jYkH#fCm~?l|YX z53~xi?;bWj-(+uzNdh_wjUIwvvp@|nvZ!_^$-FQDAKq6ZKSy{M^*iuO;M_ceBY^s` zO6m@o#eCn&pi<;7`j<51yDJlr=Bbr5kD$i%GFyK{u3IB#eS0wUImx5ShEgglLW!bW z^4*>vpF_%!Wfr>Y_lbVgWF<9PR-C3A#1%jM#JU{9Ov^bz+{g?wg?iJZ5H)%BK55Z5 z)OQEx>F+^Wcx#=~1h1X)6e7lof>DC^jGIFfBFZ}>Oe4c0zE@)pNmLTyHxPP3`+Gpj zHyp(g^K8Zy^3@IC8|Zd4g~~y%BkWU)2`1n*S7w5IXy_>g!D;U>UJ?5tYkwt)48dN4 z)mq{(+rg^t$fr{^GZmiw#(A%2E&3c80Ap<;R2)~J`|dsF_w6O{ zU;+xdfc{=+uXs;`AX|GRCK(q0@~4TYtS;0r zdBvi|J3BRMFh^!FhTRwB_4(|y1ZLN^Z_fr&w8qH}o^B6&_))wTbv*0{3C{u9XQ$8B z(YVn^lMqNxA5Y5rdn^?&vF{kM!`M#jIXQ@`r`KUmZm|7GOtPXl9r z9N@o|UHth`@z0vtKRYx0S&i{e$}1TEst?cjk4GHOt6Exr_2EA*v~#27n)QU`hzj46 znpy?hJx7Rt=k;uO$ygAx{BH7y%h0-5-0YAEGvG`o!NjT|lM&tBwqeU~J;1+p;&8of zrurpp$Y{#*s9o8MKeytw(X>18x`AD z#kMN8Z95g)woktATkGDn_gVYwwf6mU&-2V@&NliSqoa-fD_(UithA3y8j;s96M%1WTg#$PIG@;~ zbW6S*qj5kx*NItS_bG&}R?&$B68q&WUpMGK9=3W&@5D_*MfoF`;Eu^Op5=dL+v>^n zLhE19NcQ#8Q6XIQ__{#m)e*22Uel4W{d~T3fx+aVu+f&E_5ECxCbhzkuz=KLjXriq zN$?IUb(r*cIi-Atp9+U;rd)DQ9S;j!o^exCa%II6EEY2RrPOIy!a>aBvTkR3EWNp;XtYS=n@~S z@@HyZpngMQ_AjW8K(H2|)wVMB6iA7zG_bOr{8AGgnFe&S5Aw1cB#sc>zK581MRJpA zVUP{?pG~IftQSRsqJS#cjE)^_O~y;S#1zNx?&-&fO3PSS8ZlVM5v!0GmC5Nx3(fF2|4;KIo|FCY$wpvHQGEZ#c^Lk0@5`pve7khmLH(6&Ea z)Q%!gg}Yc&=KjPu4L`kezYa`GJ7_QHv`|L(Vf#8Q(xa;^K00o-EUjLxSala-nvfh5 z<%gL{39|00x`w39$`wQqx~Bue{OT%?=?iI< zf<47jYErCmo%O9n0(gPT)aCBWk6eDV*kt4bG7OI^)&hV+u8_3iYQ#50g(ecCvb(O5 zBocf&-&~mlzzH)M6n>J^eL@WcTZR)rap9o>pT?rnUT(oZ--6xMB)JK8tbrmXwlk^D zuIN%n@p&#w(h|GQ1X7dKAr@C<(q4_xNL$r3sFH5>aZFLssDk>o1i9WMVJp4FKb%^b360FKrz?^e$P@bhH&VJ}B=mI=JE}bz7I# zi6-vSj1u-0<7<`wE@wjmgPw=l=xGB?Hh$eX#>YvYW768R*mZpBzRUgYbIz%18ln5(_L+syQ=&#VoNzqcjhW!c=_#;?tF%R)1|jGG zb6Y(a-bV!=GIGo;8aY-B^4Yq9S(`bX`Ph4NLRQ<%HAAP6}B@f(RxU83#OBUzK`p08X2O)*A6nE^2GQKg<#!5xXX>%)IDPoh#cxk|JQ6`U z^jvBJThJ-cr%1#5idJ~>imU$WwDU!csgVyW-qBKN?0)*#iWiB@i(Y!s?S6i8uQ<;! zA-BoAbiSfJOBHv=h!F*Wo@ybcR)mL$bom>xXZ2Vq%l-mdEGfs7ru2C?XrS;c3kZ@e zb9wHllGm1~c15<{J-1Quaf&I+)MDFZapTD%K0JBuAv8YoT@qULgU8a!)3&Mhyvsy& zoZBe>Dv&;lp%r6!(pz!9?Xy@b*K)#M+t%>1!}2Vw4g^Q%brHM&<+NG(iXxVe+f*v924g&c7p(~be8 zFGenj$!T{68<3i}(~iyb!v_L|W0u@OUCaD5l3>w^AeT(rliuPWNk|{gkKV`2RbJwn zjK_5(&`4+?*G-@xa9_0|KU8M>qpyrD!b%7y4DgNp(yEY`cic131Y>WLuRDe1L>T)z zCd+h>za~KpdNPSC8eU0sYYVnsDlfbQo@DWQUW$o4`)REkc{^R11|uOxBuSO0Ugs+^ ze=aJ6(O}OAT1Kr_@#XpSDx-I)^GFYGi|Y6Mkm{LPd{q+H&-=#oJIHn6Y~TYZ0Oj`k zKS7)Sy<_4}VD=wPNKF5pW8$Bn&HvUh@gGb`{{Soh5ruwIh5u<;uYVJHej0`TH&YQK z%fIe`XxCV=UupPEL!f#XYe^l@6w9}sE@=`cu1}yjaVwPysZnSp?HDdZcDIq`2~0VX zZ`3%SJ{%z&yE)J^&`}P)H}7(}{e$hc=fLe-2bRQMz{G16CF7PB53a7axFtv2$UYsr z_I!y{;ixdXq^QP;VLC?!&1@`H9N8M<@GusfYomB))CS^u6r_D}H!u6`a#dB}71q{`(>w;1>hM8=$UocDkeDY1*-8((=2tw{(B{|{zXk?)3cHPKpb7q?02kRO;(P{Kmr=W7iQ{_D=z8LI$n)hiaW2f6W!}j7^!<= z;=$eZTEu?Jnx~#MXxxlD)%Um_?FYSI7awgWLegNoVrDe7ZMomAov*{YD3RA1m1=7_E+B}`z}P@7XQj}z!0y5hc)8vmoo?YDjX@dQRSm%aV zY?PW>%rOqU%!A}_rQFq|Ao;eRWyfh??nL`jEqx|j+V5%6N1X59J6W^=(6wB}glm;< z&L$lV?NVWFD7yf2w&ji$FBrkI_aah^KAEe`&$FZo;0m~|a;$&ye3xa&o7U!o1P+YD z<>^~xGsJ~{T!?x&)wNH;0tgGDYVJ5Sqt87s?QM6Wfxn)Ard`ro(TrL5eD=8BT1!Kq zFAG%c|4h5225yYeIb(kubaw!q?#Z#WT9d)9KWWcI|C_W0cG4j{oPGT@_)Cvio`Sv|f zK4#-*L7)D!FFq`G?m%i0D|l5Mw*F8Mf!p>_EI&q52{veAsmGr9habH1Ss_aq;WLQG=FU+!$3H|xfkcdMs}(FvPOnyB z3=k+58RS@&ouHJZD$z@4N3V`9@C-#@GY$s%(Jk>rjDggR?_)eYUaoFmJJ;xc3UJO( zRCBpDE?E*WUW@N0#^$%=?|-o)M_QtX{H>M>|O7p}xlW_?& zi_HP!u!4keuOLQ*<|L2zs&=h8}-i z<{z+&u6ufev@?#By+q}9HGA7A2x+RF1$nrXu-LN@VI*W^`&@S*1`k#}YDrp3CjzHCEDip&rh6Eaa?Suw22rFziCpn2@(ST=$H*QliK1G%1fOsJ9&|c6ar)K;?Jp1xlePM(}Mp0*+ z%F7AZl9Kl-jw~RLYpk$V-e$rEB1d>0cro)s5#jjlPx^jL1hE1RoR z<)__D0+imRI6q?Zfws7;t7-EnBXDOwV(5-;jVVxvYrYUdOewE|%OD0-`5Fd4=^Z+c zA=Cm>#oxp^wJrStvM)n@iM?M4RAL9KAI{SR>TiU*FgMK7LlpVS&nJTNW~FMHN!)l^ zjRyiuB^-OAn9V=qkyDabFeGv-E)N>GhbPvMOinbfjWxgAUOV{6igF)A9h|klExT;8 zSr_XSU-x&;C`~UE8wykGx$y2)*c>thSs$S&CU>pT(mQ(LuxQPEVOM?)e&c-#}pYi)LW@bM=HHHO%~ z+`Lzv0)2oX`ze$di|wD7`b}^>QLmO6@0%VicMPsV%}K&iD~kPt;xVk`fB1cI=9XzE zCkssf@|EOn4&Rl+A$FMC$t05Gr+-$_oWk zT^NBt@z^{EZKff&v5xEGBLa*Qy)VTIZ)AxmQ%_P~r+LU%4pWww*LJoq-9m`cvFJMS zH-h&|%5emmsmmB5hD)L}2=JhkZ`_o!pfq2@DvL=gwU?OZ7oLsuj(4<+59|jxn{3=x=1byJ zB(HMf-qDbH4DI?L;S<4C2ovi6j;NXcd#CK5fb%~g>VMBE`%e({{|!!A=6~XpWn^Ld zm$}w!8j^o-tvgOs55mi%cf z?AT#O!B~2HXUQH~zcB5na9Et#_Zc#I%s4#^4#&PG(;>AHwJs%UpWemG-Z1=4)~w&(Th_eprQYfvkrym7ha`^h}oh}6rJeDpTIZV-m~Gl%93)WynKxQy+S!!sI;DNI!q6l5nXgHr8 z>EbVy&tj{fU*XLHNK~4HG+8yh-bCZbHF@0^&WBJ8QqYKj%lZ{y(rU~)#<8`Go$F~_ zkKG#Ve=Yw$x`F4S&C|xBi;Txs6M->l?E>lnNjoVi;Sy$vP|2M zad_U`ehW4rNY1rxTKb`1f>v54EWpwg_s`6RMSWNyS9@JcKoFbtL1Tgks-*S5 zoTS8aJokXIZ5kx^uwaD<^W!w;6BjhG1To*fMX z)$;^XhOzB&gw3_CoVJ9KssmXuz5Q4NO~ckJa6G8TI8R2SV*Ju<)KLC@Hi^FXF69!17zcObdao;}4q5n||IDG@y7RUnAC^cD4d1@T_>KP9 zst?LVk#%)BA#GrAX+an}YTF?jdODwt&vV?9ho<_XWndPO0!QGnRrdP{PEixHo#A!4zy#enM6FB&eF=UMI*5E(5m@b9zb(DHx*cJJKf9b51-nq& zDY{Vq`fXiYD$)z32D>_<1sPK;`jf9p5`k{Jn}h2zVu+OC%;2M>&w>>2I|+wL>Lq4g zTM9$^)~IXyZyI1mjP$7N5XF1?6Pq75&6Ng(&J{;XG~QA$D4`uU2G-R#(Od3Ql%F>0 zsEdc5^M`hvo2rZG9OZ+T;JWJ$#5xY{7su=KTPN8@rEr10!Rhf~H?>A)e`B}omHy%2 z_y^D3@c=3R;<*^qi7z}7){F2T6~_Y)NFd@P8QK~7`8*+GzR2OhSj6rB*c&BH6EXY{2uQ$aawMV=od2jJ*Hr@0m=`mYM8uuzoOk~jh%pz&uUU_ zCO_dMit8?WJ=lfnd47T#!sy!9S&ObL;8~nW=&fn@Hkpb>v%eHcf6!C zv+-6lw3uH@!xKPCo}C*%Ili#6WdX@V7xiqhEF9Sd!!wElUzWd6>TN~!Q0f5zR7gnk zrS|b5p>p_;hyun2r+}CE7qNV_SAGc_CIbDEy2v$(80sREU63$oraV`qHqx^r7miDI z51gI@3$P0pDH7D2gJ1`=LU#A5?l~$7fTG#D4hdCg72JGs5`)Eo`}J+|zFHz7#}d4O z#mH2H;I+wfd~QNZzD_vt=3Bnb(QvlP)wS1$hl}&$VxSItS5&l&;$RlAVho8APo=FEp#-{4&sy z@q%VU%OWOfaa%cohB5ZJY5w1K3l)YKiZ{>7U0Hoizj8DQiR5`id7_hbPdS>RTSY(+ z-GAYQ1bBhr&Nw8xhn+EHYO&`{^)6e3BVD%{I48&jR$9e!05L5j%WyFiDetQe_C3S7 z(!x^)fQ>kKZHB6o25cgbcAXE1!=OvWTjJtIcX~}k=<6}ax}yR`DA4PyMN6t>1T>)* zI>F9I1`0x5=4*GcLr_8yP)W8t%KzA=Xv?vHUF1TcUkE!o$TBQ%?7R3(o7nDAzmu*W z3;esqiN>-02Gw!!Byf(!h?43mG(Axyd(S@s^|EwK&_Kc99f|p(Skm|xCwiN#&c*#& zR2w=?h=E_dVM2_T)xGptMbdV zvQVa$9=G;~C%&3R>-8?xznif<&3|4P$ShYeLwkPD$KR~Zi65mVF%ujE{~^eUubJA) z<(w0{Vei2ZhP54z;}x7F`dScIx3jzF1t6k8TvH045d|sX5&s+{h`yCX%K}8!eMC@QSB>ZQu}#&pFtUN?Y>z=sF0;cn--h-ST>yH^{(x z&D#J@`egoulvdmNy@|!WacNb*aDIem(}4Z&#BAs=Ir`;Fbc`>JbOAa_ZAtU3h^44; z++B4zJ!a{QE-$B}wyqYv*9%DBAT|)2EXE7E{6y5?1~ZAQh_7ijRDlJxI((^mhq4$3 z+Lbym=9xsYdm4maNnbm3!W?#N%|0{GW6 zS}l5_jhZnBte~Okd5fdpXULvD&Z3Ue`R|rdR7rxY8heazom*ZyKf-*H1qzIY5*-N? zs0z;n$~~WHZ#(T^$#s8W1Yb5GvKKji1i_%C_Q*mKOOJ0n0bpq;)?v5fQ=?+}X<0v# zv7>qEW_3P;zj$A?K{_p7%f1=R;2){pR2LIpa z6MuH_f22?RR|f6RI%zC_n$rmZA`Jg#*yF!z=>A7z|KCF$zcK&Ih1%LRG(Ra8=%1X( zsk~LJYSga^N*jz;kYdxU%cQi%(`WwX)S(Pfr$6`dQ*=8I1V-#hTlsNlV1$^3@$oZX zp5}PzqIKSnas^OTM3YqIOVg)nLaw!74lEtnUy#$pUB4S_DfzsV^&+fJ5337U zjx|kN28MZtnJ2U6sVD0hx43`a4O}E`X4FlaVOU!w9a#b+bKg5Zb|{c`J3cxyLviUP zR0v`L8b=zTQ4$SF%xrR4mtY+cUKHjiYzUo@)a5-+i2GN*sHIST3c5<+TIkR+j`Ql# ze#14f^bQ7qT#P|b-8U<%S1B+~fIlaGk-nOI`t2Mea}$6hLZ{57y>POC7`rVEJ(@-< zu60Z@GBGJ|`9<~7{KIP! z$&`Xe#5rc2g&u|OSqNmP>6V65|EZ}tNHvRsF47KOL{JS8J)UQwgP%H<^_cx|(%r2v zS*>Tq3)7Dg{EJfQTkLcyYSVE_>^T`^hCf=#kbuj$6#6S%zidzX_;;vt<889vh%&zL zPC5-v)#aj0wE`n!?n`wkm~&vo*`yXFUB3w%28<$QF_JcW>3OpVxihzEZ9}e1rfA-1 zio8{6Ki(Inwc;zb<FzIBuNJC|FVI6xCX`znJ4F|C-vED*6Vv{^H1mgLGDceg7pt z0N7wH@oZpYyTWpRuMr#vhpxCA{Kk1#FF+fpGq?dWYcgUj_y#L!EbP!P$8Qbb=8%HpF8{Jm75=9kB~2|W2=m1 ze9R?i7;6Ds+ERnG>WVW&O;A8^$8-T#0Hjwu#Dz!gM-8Cn(b|tD?{%76zKswW6{QTw zs|tot{c@(ia66-{;}r##t+}n6vSHs!>*~_w+zGKaY@1XvFL#O!Ab%4MS=h2Zwt}a# zpAfju&Qbk_n|HhzgjO~B4dcCD1e1%viFUBvNs#=kuxDv z7`uY;7Nz)D9Md7rt2y}tMGIZnfmf8e`3hvjy-h6S)c1H$_F@BZB2YlnNU#4nX#2b; z{tVS`uyTZDCD>cN!nI>JD>|>oG$G(sosSH1O93^^qSj%(ivL99#K(A_2|~j0O_c=0 z@4R;}2lJJ&a;4Ir+KfU0%Y14l^(ier+8(aG0z1>Pbe`38MpuW$q;dKbT?gp2Z1bIM zrMZkOFrMu9i>FxFUA+m{*?}4YjGSjU@l7|wcreDUZ{uNYv`O^1y5wO*wi1(EavogP z_lXkcoqb$WGH!j#3GSe}vB0l0=X}SC5LyMBEK^n7u&S90dKC)Pa7v|~6?8o9UT^o? z`lg5~OB3}v{EoF#-}%A(d<(OqMAj41#jf@oU0XGjXw^83SWSDC^_&If-Iy}$9|Q^= zgmpmG`;DqGk9oGHYme|H^e)YBxLPj0tdzY}?Ps571(s#M_-nbYJv4JXJw83Y4W|Ly zh$w2`)3mv21iShtDDhoh+&DXXc)jXjy8IH8o}^;n)hE$Z<|}ktx|!Nhe9RWcO+-* zIGv$PrH3sTT^$AfX(`VO0b@QG)QC@*w_HujSH zwv$Q5+ng-w5dq?Rrc5X{!RBMY93LCC+n~B%Md|5_2>Gdq1ks)!r?cO42t6F-2onrS zlx{si+2BWhtZHW9@kG)W2G65RZe!Osr^)&+XNwWEHNPGT;n?OE=|;_ia$B2D)?8h; zTR3F7*=%kz^&OZP5j)Oz>-7(@fzbY(YJPL_=@d03=psmT1nOLayyQ(OqX2#lL>V|P z>hY@Mz-i6(yPmxRJ;m&*yavgw_9E^fP~nB`+aPHm*txhFB;@TWd|~j)3mBjGiufp3 zXRHdeLI=Uzyhg-O<_tO$yq=yo`~HG7jO*LU{Ozub2Zj@^6Bg%IbG>pR?1v){KZ19v*`%XLy?8@u2cd|`_A@Ydmcy~ZY{|WyS1EkyacJMW<-yT4JBY@#L0OW z#KNBRqsP8bIj6lG*QJXs%TnYBgYq^apLQMHFI~PiHk5eRh(h{;W=P-fsUa4ufW^ty zXi-O=^?Z_Ftc-BJyKh%vQ+L$G2^0KfhqOppHKg~&^9~_qogl=~@A7vfd@FzDxywJJTt{ZFoJeW(`dRd7Z zX@uNJcQt-t^h}7i<9)_a8FTfWxfRD+1(C2!cb?fmfmm_xLG+fz)SElqTKJ}XZLsyB z*%h{$T=-k=R6MBiN~>bF6+2-=Wn*O^{zwYQ;NIym8y!Xb`i5J&>%ATlv)&SI*D0E+!sHA4qHnk=~&Scc@qt=hzK1 zKd|61EGk)&ea;yK5qCNeAM6y->DXzcbBY3QZD91I?r%Q)$*vsZXo+M{$$L7O$>e%r zV4Jz9p(HmYa0-s$wQ&M^D_f^h`yWtfdy}M7H8a4Z9uTL?{R6>9mn#l4~=x1)+^TrPVkg#~&DS4`t6pR|peFs68t~F$( zcYUwcZVC4KIwFc$VAzdbVt>zXM;Fd_++=!*d~qw=ddnWtWR-AzbPrXg?nGT4)GD6+q#AwL8$w6*%YcoECWCMmIK!9Z>;Sv1RH~3_=dVq zPHB8{4G#lVRvUFJ0h6{@g+}+zrOo_9YK|eghB%Z-)V}6BwG>9qn17ISS^^8=!XENN zK{wi)QR$I>57@k4(X{D2cQgxPTD5zXDe_pU-0w}CimY606bhGIPCp7_He*aOk=<0% z7bck+Pw=NeqYoEP*Y*<e=_Y-2m}uB}NL8=)cj%yz+1e z`ydL@c@K8#H2a8hIRqjHN4!>~=JJKSFDzC{<-r`v5nzlJTv)WbD`a`n zwNAnFq=fZ3x{DLwDymEqUUlYQ(^cyUa#}!HkOdOA8A6E&QR>lRB)`kg^{1DasaH1f zpxqU!*nz)dW7AYD5f4lTn%hUHv4r}pMWdGE7|V*5<+0;d491j3E($6<`J9P4-Cf-u zFLDppAyY|5lcel8sWHOG^}9*dgx7|bA%1KCvibBl8K{-9(*Y_LArX$dt(i7itftAi z``c=IR^_6r2JAi#wDy~eksH@pN2OcegdY{I$^d=VAUGFu!uK+3G9GJZ0+E!%1w;IU zVm(m|pamyL_F)R(v%BgccG{|=X*J8Wp$$Fxv_n8C3MkoPti@2EF+@-%T|$b@6wY{; zQuM}nzQ%Q#KYSo3qo{Orkcz&Vvn}iSJR!t&Z-iK4b6V6y8Lbiei$c)s2Gwj4?2I?8 ztAA_T+^YVOztkwXt90ISmY=DmKh186cU*s1tE|Y32|p1i7p8F8SNG_*HaneNQxVaw z6(lP+6-5DpII*DFu+%*)vM(T5zbrY+C99okF1GXpl+z-!Hi=)nswea{)ld+YDnH^T z=X~!>2kZu1?B^Lwf+?-S!P{RaYdQtN93}*6GTHd+5{EC{PdJ#-N zK73vj1NIOCe1c61yUWwy-F)yAh{THGoR3{Lipw#^XCiQ&C`ePVPRMsOZ2+O{OHfuY0>9-R5cTz@8g6RkdR4AS18@ zT|M}+2J$N?TP|DW6=Z|-rP?yb1m`bzCE*D3j8PFM)2Zd}l7orY)oHYbjW|+Zn^>U zbze&4c(WhB?}bJ@Bnf^}52PLHOTwx@G3J1V3P*F<$}#9foTLdy%kyE7MJAjUhg9fB zNc*goQL}JYu?bNW2j0629hx3!8T=0nj$X8sd#nd9{D=Y1YMIu{v8>0BW@r!fq^)?-o z>H%u@+JD5H!3vXhe1K~!hS3bPx#3)HC!n+;K1rl0R6gtNuISyOUf+?@Uf0VKZD2^= z5$~44eJ8$Afa9Aps|@q;V*H6G(t(VW?AZ7?Nun$3iTe4(J@fV1$l%Ze()(}7WcKw4 zr^`JXBL@++nu=rCMPEGD!|rGx;E3OT(M<)xk+*r}Ct>H99@F2U5p&w23_3P?H7Nm{ zAS1nu8{8C5ovB@B=!I3cPbb#FAzswba2Yw^#rXd6Kj2#Ku!u3Jt|0KfIBR+YZnx`y z7dZsZWV7)$fr1<$%T4vZhIwUjmW#6Cta??70_Ro1hh4BjWJ@H{4<_LgEaxbLXV%ig zN@eX&O2KKOC@5AIgA#AnCK;TaN9Gs4T3Vz+Wp3;<^c1^xZC$pi)ibj<-g&`_)>IR& z%T7$CDK3Dq{tg!za)Ft{(izo2r(x^+!l>N5C)HqX?tLK$_ew`g5G@FOEiKVF!lquA zMg1~VXV5cLR%6vSmBUQ)TI=Tv;3Mp*aho-1a-A%Dp7!Q*2q|&=wVNr$e$iYdh_z6R zOau(cm}B;%JIBBty0gOCbs1uS1K&wJHTtFUm8)1X3g}owZdPZF+u=r3V`&p?%`>bu zBfjh4Tf_#=hgq@@C-cb0`a!qH%U$gG&127;US2MLkx~?|Ap8j((9gA~kT;yJ_DjO_ z9^Eor!Zh^A2aT5_WUhvXNC(b)+l4_}0EZ+E?zYqMl=?OIVZ@A)Qsl$U)Gl$NGsc^3 zwSrZqlhNuS{~ff+A%3rk?YfTPt@bVOlAoNPcH}hgwRHNE5RQn}<~Wi~56U8$B7E>; zI*)#pTQc{1fH_bC8cG=A`yH(kgG#t_Dg}lMiHw(U>R0x;!$`qMXnc>U@kB21Zt%%Q z)gs=lM_Hci^fmru$U50tkI&M0I)uFwd3$j*BEa<(qI;f!1LYJ2YPY!E1>z-JR9`IK z7cQeZQd&52z4s|_6=vvbL<;zkB`>19fwwPG0sjOa|08APpX1{{Vd8%>)&CJE_}TP7 z$H)H|X!!rv^aU*c$VvZ8H^SBiHil-_CNKaYGh<^Tdn0QDBL_mwPi+81^{lM)076EV zj(PwkQ=`vsDLpHFLp^|+89>eqplD|D`M0vIgPEm`H9*evv(do}AZul0q6g5kx3~G> zWc$~zq0J9#fSr?#qmjesK$b=TBNqcpJ*&Sp8#y?d*;xO1VQAxMY2@(P$=?KXfQh}H zvk^egz{$}FV4!FJIgY-)(PxX5p1~g%_MiO$42%rTEG_i_CPwyFde(;emJR?tBY@54 z$H7w1!4$wR43Pc&{B_}M=3u7(If$*E!Qbcc*VI0r16Vs*=^NQQn3-6A&fv34dw{Kx zy@8RnBS6pUQ*!w1{jZzt%}h)k0k(Rd+Ojk<{+skyqn?AKk-eFN1;EzQ$pK(s^M?ve zU2RQ`tpDiD%*GJ#*F@Zm>}>!x)1{rmb1%*+hT>j9VmOaW#9bAScF z5?}?e2G{^>0d@d;fCIo0-~@06`~bKBTmf!>j%)O{QSJY_`iIdR%`6R#0ET9to72I} z0q~EnkdT3q9YAMo<7jAPOvu1W5BTfF{!ex;Ap;x3|JxNC)BjaF`R~dhWMF6e`y#ae zp>pSEKKcI~jKc7_V0K0rz+cB?MnVP#dKT8dUosK0F#SLOeJYurjp<)3NOYF0tfn>E zQepS7`CHBQVH2TyEn}eG?nlz*IbF8^VH0VSg{@z!q+hN3ME!%*!tbO5t&9U8j5hE2 z;)}CVZ@88ma#a-rWR@Sy;1cW{O^nqHwe6rG)Wv1B)gVjB>gxS5#U=gxd?>0GqL9!i zs+*iZI0OWod~?uX-wz{>d>uYiQkdP#}H$ zLd(#m@Y{k?Lh<;T5xZ-<<+s`OpqQz?wnFQ(~8vfc6)RD}WTU3+h3U zM|EXt5YVH5GQEF}ucg164B@KVk4bidkdcM zVkFtu)+#bre^@+q{y6rIOk2`iaeaG$6LqIxQzeAT-ZVu3V}CtRqTTG=MfKTVu)hCb zr#dm$H?bl={%!^dR`p(H_*qKn44PTB!I`BNq{(m9$2-XvVgKU@XuY`;UX6LKzb-); z^ZiBc17C@?+Syk5!T#A~zSH<)+_Dp^jhoOy)(4;3#e2C6rF-M!Cav2$K%66)Jynxa z4P>dg37DKPCKLm?$+N2u{8A58jWZdP8<jV2)_2*e<*#}3b_sA&_Its>Rlt$~)JDoj<+8FNHnY5Q`Q@5%=1$*iT z-4%#hn=j$u1~?B;cpm5_!9Iw4liMr)0SHc$hOdwJ*ybDcAi}EihfsJE@I?PXd0p? z#4DfP0xy(r>d$Pxibh_aZ&~=B&3AV1vq}5?Q$YJexcU@+z7y%#wp`nQ6qUV_+qNA4 zA-s`aekuJRuL>Wq0ckaT{}dMf5dLVH;O&ESo_>@5j-eP6nnF8uw}BlQy_5Ca*@#V` z)&sxVMu@>AI(0z~#4D)g#fDArZR3{B_h$T^h*hP^=ZWA^730-+^Q`I-v>QLso6tqD z{GG2V;*J0+vFZ)98{OHPP_6f!&F{h;J(w4%eCrX?k0t$`&z9~G5$vGl^T|Bh&)cxA z|G4c95zNBnRm8a}=zsuf;qv*jecgNK!z(T{l-=!_-VP*riM^>ydlcfFQKi#6t8nZ4 z*(pTAPoRzd^71y^Q*YJrRlZHgkdqB>&aTO!4?S3mOHeeZTd-6jTF)QMJBan-HVBos zNi>AWmbP|71$KER^`Yl$V^jF3h+}`gur=ie^6{OrvkDzA6y|0G*?g$uZK;L;j zD%*$Xa6e48FXyas{Z>$S#{Qz0wQe6%rf>L7Rm5JT-1U1tX?MAF(Bp~_VI6(B7Kd|_ z9yclpDrqMs|7u!yKUi(}9<5hO-Is_Ved0~+*`%sA-EbB{Fh1r)r&_r*my?0WS+B+2P8h&VPraXB`+Q149p(R}X?eVNa3f`)T+Y#98QmI&DI-#;VzB-{( zf&TJT*U6S$A4Lfe0k_@3f4{%Wrmc(8Spx6z6W9iY?x` zx7ht-6!Rygq^kl4sPvGIv5ZnF%RO9?L|Hjr8I6riRUbnA)Z&s1ZjMBbE=t`Gz5_WX zp*-31wTmdufqU&61|>TWEw)7l)?`C>h$PWYe7t2g;FfBk8mlPt$_xeE1SMvIh~>304YIvFqR|R+yIaZjh6u3d0K4WkU7h;@*0cU}cV2)}c~L#*{A~b@KjM;J zky@yCYL;+svyFjr>E*V;`r+X+4T+N#jfWdW2xMR<9~ss+wLp&Ve47#~&)b+QR#K77 zA|ziIBV%}olVVU5%z-5$<+y(`-TsDSb5`wPfa@G`ANqmV+7ft8FmosO8Q=n{R!L1| zs&^)9H-z*_YGg<#W8&zIZRMk=l9{1vK)AHXSN1aAT++=IbDcaH`@(2}|Mou9)btrR zN6{J(tY`5d)=)bB>%QFE%AtBiLWD0S9fG>5<)@G*4JB<%Ml*Juc;s#rSKagRoo`3$ zg$6DAS3%v5*iw8DA(J@^TvWwLqq@?7`iu;s8x>>~EBApX0s8Y3W>1A-8lM}iA5YTZ zFNmRXqsHbz+rMjp)%N7bSV961rn%3blq|=5aat`H57p5wm>0N;OX__IXe+Ji10rFR zCr_0pjAP0JczHt}d2ZVW7MlAJrZhpyLW?S7OJ^JK02sOU$t;3dkcdwPw8l=48Y`TSqs zz~9rR`53P#Vr>`GRZGq&@szyyk7E@234;V%FwctmUIqHtn_9>L*0ID8>Fs+t-QB^_ z%t7|3&c z)9`3T2cwIZ#D#S(;Fbj=_|~_R-`_{EEULnoj0JUDw7u4L?S5k7YQ)aYCs(tqloY$w zDNL1XSlc-(a45<&EJGA|ej0wy-#A(`N94`vZD;Zyx+1MI$jvqtNfJBbVgeFFh8;d z-44=`-fVV$YxM!~YHxOX@<$-EKB`Pb6Q-yfmIK-Fu1v&`)DlhC13LkDO--+Nxmmd> zIimTIFayqdkV@b_2|9#sc@|5-T5&!LV@QG-3gOY6NrtGS1VUbLeI(v{+y0?3P246w zTIZTM_blr#M5ajW37GcUANcK+(M8RUP8A(Q$b*7snWX%~r8r_AV&md)a-C*-MVHN6 zvI4O>O;y*u&r^}Wx?T53OpLOxc-98ggsauzvx8?E+=l9iqwLrf4ilE&{eqO7eue=B z+M;K31qP&0m4`P&PGP860?Qn&>z)`TlWRPjVwKcZxEkyfVtv$9HGLaso;-ITJEBIf zCixBzv)20B0hfVJUZMDz90CK<9YFVbWDUR04NF~}%p*+T0cVvfE|<-3?lBOLxEKl4 zZSpNsW_o#L4RgF9=IdAD1q#P|Z6)1vTV5?`vR1EYiMwVVhmEiY6a(zKLfaS%ei1WQhs18~Uq^9FNk*N%eg) zBcRvror(F)*>9ypIXkX3wXx>}9Fgp>fOM^mmQKh1Ccw0p^!v6Jh@s6~adfR$!%%aF zZ?&xY_2D2CF;)3$077hJC&}tWMlzH9Ut))?FC08tf|QpX5W)hX*b1- z=YrEf+2ynkSiHZ_4!(|p4?1f6%PF0K_rTY|+Q`Y~xl0M{aOdv|_OV9bg;8fD6)Kan z3#ifEW738lvJ~u+L6uy4*dNNGKCTFPLVXlVKrtklU(q05jl0}+2k^W>f|uvB&?LX` zf2-jrj#Ilztt$*h%V0&CLMKPoNx0=}BB_>5PTw;^o$7;}>=!e4x_AY#;7B$@a`Nls z5X*!SMyrl}%HiR>H$F^B6|7Y=W^2!*2h$#UXM8r?%LeXNh^MWO@AF(?UjtLcTY`VO z^vDjyyD&T$Ji-%G`e`-)YAWvKVoh^qfXc$tkwpT;-|hh^%w|Y1?WIPMB_SjiKOvIy z8=XkyoT!1%r~Z!h#ljHjtKA??I*GP9lD}+mcBxS7FZsv-HnNwA)66foNeR0$rm^?K zzgk`^w>*(p7Nd>7uH=ReUsw>Ml!ZOf&WWB&^bI)ZHI2J$al)k$E&MO`-U2GGCtLKy z0>NE^ySux)yE}p4?gUA2cXxujy9RfMAVGq=yS&3m(Ety%DKs?Mpe zs!mm%qV_)Z+k4MK30HZmmZd^%HJ~St=8Km%jZFCANlWw%DZP4_-!amiM#sdE@{~U- zZA@oab4FV@J}A$`bCvU`Xnx{E%H7xX_%A~u5iQn(SEKn#+R9%KOfS}aunQboLwkK0 zzkKk*r~F9QrBRj2MO?3(2>O}TKn2)G!}ujYLRRz5@N|bds5cOW!1!m9iMQUuTl)Qn zdpl75+DSkfltd<9be5bD!z%9`f2c$1fNo@m;em_+4a?wPox-HLnSD~EiC1`d_uUG@ z5VQz{%^_DWm-#(iaY8*sVbzHj^9Tt%Cvf~!#0?E56qs?pmdx!yG-s?CEJuBOl9r=Y zH_$*u{g=w+2j4=!AL~+XxF^t=_gZ;`ts^ecpJ{C$Hdyq%Oa|m#L&(YW4BtadnquB} z%!C%qA#;D9YVauCA&K9&hZUw<7AD=pqY3KhVShd%ErN5VcaG5JGVg8wK#{ znRL6+Jr2u*J!pe|l3n#ad$W#6LZgkP^a&l@yafeY>x}fx>5o(f+Rpc!)Vi89256Xd z+o43l9L9V8YsGT}5m(?HLdX{EE5TSJA9UkTidkvPtFonKyV&SI0(=h^(y5Smwp``e zwKAbTRjjavDLo-PJSMdqT_~F|F-u7(8)!%mI~LGi;=pH9eIR|Ft(X+=fMLMzuYg^J zl%-{oEdQbV1IB(|eYzI5q#;NW441r*+Ebt8Gh~_0+I%GG&=s$T*MPI4I}Uyct@>_k zvCc%=SWOfOHO{@@jhk#7SJ@5xQU=O#I8A0+r zm5%sI)AwTi>Y4kvXIS&Aj9oWa>x*%ZIF7oUDxsFO*;KF+9kot6Kk^|YAlD( z_Lzv!#XWpLJ6sj`i@P~ z<3oXU`dm08l3XE{9V$xVpc!sni~qQ2J9N-SuuMoPcmDwNyW$@-B-ZBQ#8Wc7we(vf zEbEj=YL2mVzQ*bbxmH|y-2;WRxmdQXHH(qW$K_f`xaD8(cH)AzRm)Z6R zU_(+-&UsSnE6sQf@4jdf&94m1E|pfHvDi^H_7Jx@;Nmjsf1&aw1@a6O7W< zZQtNuNq-ny8lE_N5L!OhZq^@Xqze;HWL+xiv^V;WsBS=(HgqJQ4fK16>h?|iw#|Az zTT91$k~9r54KYlj<_QD~(3hLhj-9}TuI6o8=xp+cjLj-SYM{_lhSKnO;{tH8Oi&&X52ocVj?4ncJ;_^h1b>f*v%k$m*B44 z=?E&i@GxAFwxbC1yx9tm8I*<9t=5^ttlH5tlGKb67s};!I+A5xQtdlw5&9Tur;q2+*v`8X zD;jGANQ1(`OsbGWzk1=$o04oXJ)G}f;fY^Kj~0RGahO3x#IkU53D zt$6~gs)41$e1ClMv4M}`%8fpA;63}>2o0;Wu4E(^uP;7cg!8^rm6>5YTrVp|0UFZc zjIdUQ;QY6?SvN1a`eEFM??k6 zkdxn^XMby+KJ@yYj}$x95myI$g4hx2nI^$OGtoAZ8eT38v`GJPUneTKUe~tJ~LYZuREK;cZ(ma$M=ZnbvdWJ^TGCHphRwM z#+FYSF+JOXCofzUt-R<}KI6)(#2^QEoka*<@W&ZXEdacJGlM?yiVyckC0fXZgLVS_p7PXthJ`=oirTG)4pEW;^qfs zy6p5!o1+h^`bTZ5`VEg)?p^^Oz=b@(y_#sTy(@xv32uAmL^^?Zur^&d`ZXWwCzuC2qUu4a+Q{q^0^tA1LX-tGsYat>2N=aIQFUszZCg1 z#Y4=oO7F@fyO&u7(z2P>nFX78Q1LZ0orsN-b78m`Nx_M=sPo3{t=gwDu_nr7z;0)} z&26BPR~JoL#Ul6&s?C7bDk=KF`7GsG43mBuq8%!3dNJ31IuaiV*0njfFM-~(rI-dDumrJX8cfYRds1R)(57Zh5c^JW@G`RBvF=vIXaf zBEbeB=+1$UyfPVwU2@Z4?67-wd?z6YcH5G^M7ESY6V$mIxRkXEW5)ftH!i80eoN1a+ z?Pmq<@4Y$qWU5sUpC%wM-a0{bG~5;$ii#U`SI1Yk2Z%RywLBW6M9vXdenscd+MkVC z#Vz2=<{ORI-v6PGkL)0teoY`;%o&BfHSJ}(=J?BX ziHCR5#&YA7G&R+u!Yx#|%Gca?Kxtaryaf&=Um5QROuF3*SAM!Yz2z=DVoS}?CXX|$ zCex!R+|tO2f9!lJLxpbeaW`gs#VJ(QBz#aV z>W#B=sRDx-X^w|k9ozV)RKywW3_s4UKJ?L?`|k#DLo!Hc5H!_4f(^u{DPa946I5<6 zcVUO67SyCMrqnTxQ@0#Wys{raoZ#JG=w(Ri^qwmj`K*1fV=44GgeJCGdN;({=_<Vccm)T@#ng1N-0kZ@8#?pl|7#7Jj;{k+nnESohEgYVWK^o9t#meEB-x z5>8^75%rLF=DSC)2G;gHOjXQb;>_AQ{iL@1sCPMYBwf>G3GHT>H|S|+galo&&BIFq zYe3J-gQ~1Sd&GQZFd}dzYj}5G3J3wyPrj^xqKh#}`#GjxZCT6d4us0j9IZTQl1Mem z$;hFtZqJ8{#bm&^EA);c4-UkYwKLzfc`6zVJxFCrVdRpSdHEFZUlXteH=I@a)J=%i zkaDSu>&voAM^0~#hLk+d3_ds}JC%Xhc%_C^lwFBB!xd3kVC3v2WP3ibVc08`x| zF7~sZ*o;=7U6Oi@LfbpMF5(PGsYDh;cg(Ha)DZYC^ng{nkcxpT> zoO(usZCDZ{Grs*4B)1)Uf;1A8t>gB2u2L0*Q9x;BSt!y;3~8t3P5?u6k)Vmw$PVGX@L{kEYmcs*LOQeIA=HB@eNo)v~cXFbR){R?-pV_>kGC@lbW(FZ?BB)9ZI2)2M>))wvZ4! z27Hen_RyICVFBI&3V8?zbWeZ>=~#pC2lAvVRP}zG6MT{>%io~hXVE2# zP=ArSKJ0dac;bo7U~l>0S5!M7DPDD4tOpruLA?EOre%=BU~{3`){9J+kdP(zT`+RQ z=d2uerLG+o8;X9^JC|*zPHGI8IZ2TfPabn{R4N9fCoY}GVv>XXZxwNugzcYf$PStt z8lQ%i?`pTHPpuhR=L(NlJYYHsSFOQVT#8!DS;XneqU4kr^6QAJkFUoJzKgD|?8-`q z^J9a&A6T4Sy`?|hdGO*!fNB=x&J;vxB&GC1OUz&6)YHJ%NL?L{RT)3ZM`cmVLglSa zix+ql&scFQ9H{eJltDH{lqao_o1;oo+1>;p=f}ATv|MaN?c3k^l)qDMNlm3Rp}lCx zfc9~{ib)|jRdhVrA3~?IdyT$hm7jQPcb7a9tNbJZ7jzH=c6XKN@D5EIaRp$H<5c93 z4gQ;xG3Nb59Br#E-i`M+Py$u_iz2uH&#{6_0);I%UKXB9Cv?G%Km_+i8rR*Tk(1(b zdLy!l*n|5=pLD@qRxXOY%qa95Uwy?@>p+#S<$ai=&z@j{oy7C-U#wH4OR2E;`NJM5 z!Tc!Bez*nEPze|oN+*jI0J-6PgBedZPH(Kx9V?lFpYRyxGON_M2yZi|%At{Q8my!gEEZ%!M1|u9or(CNd#jeUj*rPc8^M;2& ztaab!fzYSYc;h25u-+K;gbQIZg(J#O%jwN4C04io={%MWFoIuz>k;#@KEhR3-Xei3 zeKozT*BvYA!aI8Zpqzw~Z*FLRQ#Ig~{)vib&k~lbIDdeLkVS24yhdHe0D?8!Vf}{Z zG&;3||5o;^TMtF#Oyqa z81`;Uy@WV<**7etI(QK7frqG>5#5dz-JKSfk1tT_u6q7hgU}Y&!CYj-TLgxE<}RUJ zy(L$u)Wo(SUMaAbfq-)B*uFgXlM1?r9Mb8-G25k!;-#vp+lj625LSg5B&E)nqdL)c z)Cv}$-=JxxE|gbNIdsJM%rX zsLKF|JLSWKquv9m`+ieJ5M&Ocq5Az7lUugbvL(!Ii_G+ZRS+ z6=cptm=;5m>cXABz~Jt|ZByq#5-U8>E1gal4dTmU53}&hK}mm>@E{Hh|Ix>>Gvjyd zZYeIv=~g_}e5@RYAPloc$)HU*gq#vUFP^emv*LUbmeDRY*S=*qwjZcK6f=)?3SEz% zNOm~6%F~TNS(Qb(6(>!5rGHAHo}-|Um)i27ZS2do6Jg8S5guiFnr8)=M1W0|YN3|( zEjY5HtK_Nq<+1&qr@Db%rj2BU*LFP=mO2v|p7?XfaX3mLWACnv(qq{#k>aKAab^i0@( zHcvyQT$B3^v6GY!j7zO!L06h6@+*t_bmV5!#7&W%+7fz6Kw)=NUTt$uOtYMl&F(~u4__H?$_}W;NY7S*~(z%`~EELmEbp++v;_;qw z64!31AXdm$nP$r-y^ZcN)rhI0g<S+0i&P+-4WNgQr{5JtE>&NM)C&o#L(Jju`Vy za!7jxBWMj-od}3t1LA%W6xuZ1I^Mw7oAPB;l*2PM7UaRH=Z8AUCDC3^Hr4*?*v@DK zDXR)1xnjuBh}DNuQLgnOQPfM^Tc&PMq_MiY2U+YCR2^39^D(TX-wq7riM2=w#`YgD z$EC09OK|QD*0K0$|HDi;7@nK}<8 zt9CIDD%FeoUX~h^SNf)fTLJqwvE2lz9NW>gaq8$7DjId4N|NpYQ$03z3yE}pU5aBm zUmFzZcD1pm^ir+b>=cl5!K}>lBGaT(c44ui7L}>7E>eed8 z;!x4rMW#>HO-0cZ1l&@xzBY7N1 z-~Vi{gRz?_t=i+`xhI*O_SQJpRtO=!LtnDT`hEzQ4`hjv>$2e%Xs{^tP1dCTJ`UmJ zaD9$fk4p%@58ij#mZb0icD54IY?O})Z=F=s?LV2{7>g<1-#{7IHI=d?VLl9J*6_%> zQ?;0Rv6H3=!Vw0TrngAtlN`dQC=9$A)lI*DA11a8u(pqJI zmLwO$BjlTTW@6nqQ!_G4`_Lu2bqNPYCU?^S1CFU5!adn^JMVa?-mqZ7zQGNg3Q2b0 z^bE7CoP}<#Gv6!3PSRja3XvTSrQoU9z`?GbLm=+sRt;3zMIvqFR=^SQqJ>FRC=Da>uEoR(ki@wRcA&$} zBQhQtIMAD~F3zi#-h`iC=kc!SR2satZ8ab#&F=rfS^6xQH=M=J~37&;kiDpq>3!%u^?-K9eu+%BPyxH!puK#0?C`+X9KWp14(I4n_GC%?`VS zkiD&jG;tMA>jm}rc#PB@C!BWR*BMACuLd-e*{3{a4fNAZEiluL2LzdQuSyE?*;Rae z9@`PR5CdLF2G(y5=Ki9IxW;TZdmf{P-RPI@hE1J?Q;-H={-wQ`84|Sx(zQ03H8p1U z7_(`Zex#eeUnef0>m z`{~WSuTc4?)jeU%EBWpprRGBvv+L^S5DgFJA^TH)Hj&_;@JO@NF)>Cv>M@a&#~DpA zjUCBj)RGKjKEl5^sr4IREDoE$u&UfL=6mV_d*+*VE6Gu7tf~qfceXn9w^p$v=4K!* z-Y~%H@rz5u9zVx+;^cz@{AN%t$*u`MjWhW2fCkkT!Bw*;5px3x+^FnU)?LrT+T%-q zOvshCgLnEoEk{MtcsZfUs#ULjsgB&y$LcQaw9AXimVni6tftI8zHb-l>g^(^rHiD4L@ z@JF5>6ggI&p)?fg)u83^aFm>vAc*Fh%yF+%5wHjgsM5f}sUs+w9U*ydP4POfDHiVH* z84OV;9*vXg2#b6|Gb%q{nP95@;Cbj~fP8!PnEymk2&5FuUz4&H$h(Cw50}}2JX5nd z51K?N{Q~5q23NrQ$VtiGSHyO$5x$aHy$j)Yr!1XjS^qi_nf7) zmPET>SC=$7pO(L`nF=>OU;e~6(u@sS;HrTtTHM4K{~hc})PbV^EEn~d-nP!zroWbF z*}%hzhWdk!@&oFWX?+k+WOqcFN&Ng`z&=wtthQ6iYAW6x_o6Cu0&Oju%9iJfC27+4gxTzE3nH;=bvWf!o_pt~?A%a8A_B&--K4LbrW51as^Qjc2St5n&sX!T( zD8HtZrt3$+Ac~rmcu<0|IaP-yj#L$a&;VDfFP7iTdhsDv<^2l$=Ico!cfNd%#d4|d_rYUC~Hf44wB71&e`JhXZ zCrO{DO`ma89G|PufGB=AZ>WOzo2T*bkwS0Z^OVk2euAS^5jR2c3-wWx8(|gk0uAq3 zB0vQA0X6A0K=!TN7;y(XN1_>zSjE?QcsTpf_Ed*Axr1^17;VE5Ga<0D)D0?Yd2Jip zV&GM2n zyHyty_5Lf5&a1w?2`!hnkY)2}Eg9<4AM>rfzG|`TJrj>Tb-r6}OPJ!i01sHjdnjDK zBP~bh?me%&9T9;8evnkNyPfvzHazc(0=5@6&n*T@zWYX*n-i|%K+xtPQ)4?Sw;B&0 zNFJ1}OfU5XT*I793PK!HCnHpBH7S32>C{SX+^%M$r;nyI0502L3qrG{Tpu(%0+{wL ztZh4lnfH=G$VgNxGQr6e{g!u>}n_(#b7 zX4uq#w@@jRXtU^oCYj6OP{0mxUeY^QgIIA%remZyVq~a;#X)sQt{53bgDO$(LXgpZ zfg3r#d9i&@^--fl1Ljqw(K2Cv`J1JvCX@dAsmP(>Wg>cf2gk{W&|8`&_Oaxu>#(S% zN9#dHN!k9QgRN8I<92tNd#(e<34zp^DTekGS@AQzrOY^Bm76>JlVUxJ5M>?5DZ~r8 zV=bchbxHZP^<0TANl;{79~&4Ez&UL7HS=M~aV)qi+1E!o8D$rrztzCLTrV)6m(CG_ za`?z-;>5s@Q{2=f?Euk>6CDHNO}M^)4!(Lhh2DFiJALT^F>&Tcjw<=m204JX*8ybE zjkEqQ+|o~LUBCJIUue!NMFd5s7fDQZr0_A6fff2BSU(M{jqp1TR?O&$I1PvUFf6_^GD$0Ut@(NT!GRn#ffUmut z6gGA+vNyAJw6Vu$`Q;4m@2=c_p7>oq0f$#A2A`DyP#+-!Tk)Ti%CG2a91bwa=|=aP1hX=5GzHL0&SpO$CIc$~ z?Dq52D(>E*ikUeZIJj8>9&kr9qgQkc5Vw2<{^;zDO)QOF9h?ju0O@~6UXeFI z^p!LF2h8kO#Ma&zK;9Yub;$(4%h|a66>%`LGJB=x3~X)fZCrmR2h_;^uMz;Ke@6Z& z!OF?V^f$-$GyFS$02cQ%>t8J4FU0JXF8m7+`xnsgCwgdT18DP~A!{3ZM^j@!U;K(X z*f{+a{i~9{YWFiK00I1a_JGJAB>-Z7qZth?f5M8tzw%E-xc~^fKZ^PpeZ5^kH2|0+ zfYr0LH?uOPGqW}^vo>>dqXS@XR)C>H2Vf)t0H341nZZv)@^`?@+L_K8Kvced`4^36 zWnk;zXaivH0H7cMNwfselx6_t(Av=q5Vo}WU}j`s2>{~gi~;@Z_S%1nCV+Xz5r7s- z{0>+eI06QMv7?Rc>)-_pl=o&vPCq*gF!lhzueCYClf_CI^$XXw{SBV#kmp9CoYPy8$V z>%uFc_!mF;8v3i_tUvt8GXmQ6A3#P!zyJk&Ub)Y|4H@TOLBP4!UUmM1fpmE#EKLC& z`QFJ0@PrruS`5(KfM@NmGu8%%00i~*{sG9U<*$2pu=|Gw0YrZde+Ro?gU-R}*ZBWi z{I7<4Z}0)YveNxJyw(o@ni>GI1$2#(rIR6GF8Mi$&;f=u;6VovkAR8g=PkUp*FO=F z40QjeCaHhnC;$IR%LPCpzs^rT$MMg8`geRL)1T1#FCvoxpN;Kr2qq&w3){bgGZ_H3 zUjIWlQ%MEp?VOYJpq!-B@Ho{Z%M4SkqU|+o1T(Wd{S4EZqKXr(qzv`o$hd<9wM3mF zeQhnXvMsfY8a=ZLJ$(ZsVYaiHb|fNbb*r zw~zjytJ(gULzq3U7Kl_OK~ovVG43s0ZKg1{K;U<9zGp zW86rq;~OF+CjXwCoE}M9eJGG~Y1Cp^RK^QMMJg0UDj(Xp`Qc$YU~>f^aG5eeO)o@r za?MYJ5`2&twM8WOcC^xw>>OKa$_JPll)IWKz_6^$%u4iZY-J)U7%7Pw>M8qsIr`@M z`uYZ7XBzfq3JT`BknC@OK_UC(hQYus&CNy38RthW?gr;*G^QKs%1Rw{J{q8w@a~Kw zTj;I4=R>IaV(n}qX;rz`%HMk#LsEgpySV70&i#<%r&fKXyq-f7)8@rvr-uevv9MUD zuhHWNKK4$P1TfOr}g2Yc^_SQ1`htB1?FTxGpmTeH3 zD+j!q`n0a0u^Og{Pr$ShL|y&tkwq2XTv+A2vJ+WiJy!fw*y>SE+3DF1ldrtJ{U0pC znfICk)y`V5S)MPmuES2cn@nai(ZdlPT0u7dRhat_q7^IPRk%+4&Hw;T2OoMDBSPO_rR$i z7+qI<)`sVjuO-!Xs#iJSBiPAe-dRbH&q2mgRY=UoRz;o)4b(5>8uBlq?SJ9B=2fu! zZ$;bJb+{rx(D|Ea%fRxdXbXt^O|t#VZTa6NTOkn%B?WbWWUHj{Ur4rpIiCExWcv>; z!vB(N*;oKV=^v6UI}>2}|68(U-~dRSf0u0ksklESTN(yH%3rcAJD|${PPS#_z^CD0 z1-PALU|nMP*@M;X>r(Kc1+4K0d4E+C=QI9`Nqx@PV{x<3H57tutpRn)o z(;y3Ab@_8~@((NH*M*yt)vG}G+It2@KP{mAO#UN4kHq?(w@b|7jijzrnJ{|Eojwe=^wd(--b;_=SYyRGA<{kbV}gS-6V^_N7L#%j}v z8xl8*09Y<2kgAgfh{r+4!wIMy$X8r^7f}EOQmFIbi+C0|keXT`DCc_{enjw273Mf) zW)wsONdCw*IU>VWPjR2x3;=FMndJ)_jKK^ApY%nX7e68zH2fg_&FqW_}M>*x2?aDvm-hWc%%mtqo-kTm|TSujDiClDP9D}es=bsg`} z(sw)x1TNg-(DL-uYRa5`M63}uI3?CfdC}A82=&&#r5o9WMMQqf-i4x1&n`5;?)}{K zSe5{cD|6bj_U^z(9#~$OFa+G-@C_(|PpB=B?+q9zFnyE(MzIfB6owj*sMu#3K2481ow2p%X>*`N8nQcs?F+u#W^nH$*f8EKT=OBUgP(@V@6P=Slih&22Cs+vDHd*7o1jnTGM4XE1)n|!(CQnUC7rbvDLl{}O6mXe$go_Iov2=SEdxcdbD1$W}^fR>9pLIBej|tCwFfUp?MttH83Nv&?f3eOWgt}ZI1SFe)bvv~ zuC(5#uOF%qt0!b9@L3%tm&}jRrTid5qOEicSN<2QArKmcnK-TLL;(ZfL7J)l-mm2Iyi?rpf z)jM>3Q-`%RyL0??thc|S7+JX+<%#3&qpBI@*gD%&0Dbn^UHqdJ6?Y_O{e`0F3E_7m zNkL}ScF1Fh^)`Sn$b+V)8oR?EJ8e1|ZO$-Fc^%b@Sy6@%y3mX_U(-spao`7Sj@@Bq5&p}@yvJ=Ie`oEx~1iQunSr@C|c}%c&pl*Od<436*CpoxoK$lr?kXE z*WpmIO6&fgd~j|#3PnXmXD2_2Ati+szt{Pi-&;jdMW|t+&s{8eRuFNg>S-{P)JEU` z$t67pBSg#uqW*%qSO&Y4z78FledAG}T*T{J<*_4DtiQ0By`FSO$$JGch&r1!g-fvo zhSB`F=^aN-a66@70p5!}(iNHhmP18aa~mf}8&9Q!7xs_2ttQ20tA-n@4<$l)bue1% zxQmHWEtRQ^_KE(o5XV#)Z(A%?v@`2k1U#pO*Y`DWklqNDHUNyfh=s#Vh+j*8mkIqHLv$UD`+x z+4SUB-?11GZspD7&7bz>DL8!GqaZ%q>@GM@#W`8@?1yGd$yyP0?l#d=xW&n~@oWoG z(y?*m7^jy1JZbCV4WWokl;LGC#~COkR|&d3m7z|2T|pesn?Z!TSzmdM>I z$xFoh8hOHm-4e|Fg>L0|G0!4nl-ApO$934qqo57E*oqY*pARd?&af}Whlo0nr$n04 zpDkL#Bb%Rpq)>WPWF%g0C-!t68XbUbPRTAnP(n!Z9q?GT_gLd)5~lS~%ddz~)umLu zxpHe=&|F$_k1wrghQ~XU_<9u2UZ{@BNQIhABU|P}6HQ;BY|wi;$-DGWcXuIRxy7O)QIxttJ$hITXMr`ErlJ6q59Nn2lr-)!A&db@166an zWX-Uz^a-wvHZ!aR*_E2)TgbBj|G{(UYdqbU9ljg!Y72oxd{;YT2!CRDV7#o@wCHqDK(IBtVj^`64=Y&9F`6XT=4ggzwHOyX8YOfg z<6gQiYNJN0LLu`0a>_}UjPRiiZ%3Ikd%hF}t_7NNS{m(&5eaM99sQ=D`g?B#%2%6* zWl3BaaoY@Yk0o<;r{XWCmn2FJCRd#HCT(N=O-UtO*7|D<)q+J8bFmP+2U@Djdmh^& z;W=Xq&c;I}$XX5`0~Een)=Mr8#v=P*5M-S3Qx#pM10~65Yeq^7-qBIe#;$Lv1~a(m?d` zT3*6P;tSK;HxIOWdfB$RHhH%%Un$8$YRkU+y2CY==$d7#%EQBwe&~ke0%VO|7NXY0KwN{AqvB}MdBThhG)z6Iv-Pt(MLLX zX<0-Bu<}Q4c<}_*)udQ2g~*q7muxob?+%+cOOD|0g6)G+lvnlbuwB!Cw9q#006*?B zNl*-*84rcc#cKFkBG(NywEaj3P{h-gOB=0aVTlaUeRt#P;tWAZ-ks|_k6p0T@vA8zhO2GNNui8WbrWg6bHor4zU6;NTnEpyZOTsEFL zO7V`|z+<#Tvs{6i0ZylJa)5G+5S%j|>2JEURCSDF(>WH zXC{!6nY}Dw6=nRPfOxvTWsXJ#&)n;XO z^4$>5xMoacpgqGb;oseSS?&$*5F_94$R*)W`?A z@Gex1Ty5Vn-OPfkrRUY=Eq~8n8y=(PxZ(8(woK@pF;9Y8^`zVwxXXQ%nB7gfgk%M{ zLaNDS8hDt}vyjEMmu{;wYnh; zaPW(%sVGyWb(E1{w^OREq)Amh3PCpJ-K^%1vMEN`682jInd5`lxaGqiCA~9| zz^uD0Q)TU+eOqA(oxB=Og|;MuqN_2#DMz3Iw=VkQF$=i6y$06uGS$Igj9; z?3~FqO{NghA$Gk*Rv(pa)s4rX-T$nko?=o296bzj?fr=VB6Ert4HW)HK^O@*knmpM z8G;$Rgz{hXQcQn3F8dF+T)gU0{y{Ir{Hm7!z2$<1?GL@wPxot3bbr@N$*U;~3o8Tk zQiAG$jSjC0q(3%X{HyQfKUFrrH(b1Gp8ixz0SfxL?N6=L-}YNDFaYZNH>DKw zUs|odHe9f<19n^hEafsVZ~(Slu>89%7r$(p{ukRR{(Ebt|DeYD)lz?GmZz-xOYq|LPJNVDFNF@l}avZ2iH}lo7Bc=I^gp{!xBrW};{PPv58< z#kz6Nc-Hm<_PiPIMUy;MlPryV^FJJ-Jy2&dF~DF7OE$11i4;$WDvf5*7{aW6KNv&3 zAc#w>mED^Vv|MyNy}^4k?(x!G@$m3;;gRXkzVoqtCoS`v88p>9E8-PcW1oIRpyH3Ry6f1=5gITPy$|wl zFhRsqrTAk}u_Qb=lSiCgD62*wqFP2~h+{`b-=J_~t~O zYlhA$pPV>g^U0=y05PH$zt-+p9R=vl`0MREeGqwZXc)wG;H-6Zz8N_#sKCdDx8|!} zl0Zw}l9G3|WA0hTGkKxe!NqFxZy(3*iEhb+UJT4#-X;NcA`(J>;xGC%b8|ws<2^go zPjD&@6VZ$iA_)B$4T^Bbs}==X19|<16!>7&C~+sP?yACupb)+agQdx`NQuSN4BXvu{SK*NPc) zvP7&U-|Xl=LH~~Nv1oivDe0taX7VKT{e16br@PlT_ht&?E-_cGk6W(Y8_}aGBAOT3 zd+6}iOFJ&hPs>d)Mg-X(+8j44rkTqkHuvYk_~PRX!1vTs2ZAK+?xqtCi`wCHPzVbi z7i`EFrD6R7-9>TBVpFuc*<#pTE+ST>?vHElyu^pka@SeTWn-`ya1#m9ksdXt#{!AX zL3g&C+wMM-s7gfC4%{F3 z0jgbG8G#nY)qYC2)A37CYce76qGr*_YINkgi?PO{aJ7t&1yP8#v*1ao?N6i`#eDk~ zU{AjAqlNuT4vRn| zj@g(W7c&ZZZs6{0pT4P9Jt0FlK*Gvx-s05fcX0CAHFBGD&}sZ=vfHo2`YuUhSYB|2 zpZz0uSS`b|HqN3TLa#REF4-ame?DOCi!mqHdy#AqgFvH|dY#o3SKZN%+h;P@sts`*a1pa}`MdB*F^DB5Pnf{6 z&E>4igKHq)TyKLi0P9s>d_Qo-*RXwPoGW3&M3PaSWu7Pg_O`}_v3`j8TQG#SPnbkY zVe$MIr`af^Jt_6L#Kc`YPFU68K-j@9!rCbc5choF@x>Iud$~SLn4Y?-s~J9kNtP{U zHKow43~eF4$$e;jkB7jGW__)PR3fOa(4x{zq7BFhER_~%`gAlx_4HI%=Ne%TX<*d}L5hqka zHhsT#Z*TVf?t*Sy+B+$7wwGpF5!T|%@1IJ*Mie(YxbcPQbz`1hB?W>*xHQF zqCKm3t$nWA+FsYn?P9=Zd-5xY<%ll8&TX=YB!fEV zyd^Q<45Dy1#Zo=5yrC8(AC(X<#5p`4#o=~920OT38f^saV8B?}aNNv+i7xw>3z0d? zyEj+9lWa>X37J&xTgSiea*-TcxChuRvHKXp#SM=|*wR~0` z+q!}hy1y=y3*3Xf-wv^PR}+1wYv#NxlnLQa{z!U^KAALS6#O`j zeUlTqAT49W3?(SN+ySux)yE}!uHmtSx z+55=7al3zYL^oe#_;erPI9t8o9e^B6%K+$ z(s621oA5LWB+D`xvwoISV-`6fQKV)G6@2JBUvLyxk6h9~oS+(j)o^S-&&R zWV&emSZ}oZ;4Ula-`a1qLruWXUz(^^Q<@FmRuDna-mig$F4R=r91;PAOcJtO6D3P$ zfna0CPA)i}FyzbRxF_({FP9!_;5sBMwkBmhedYPi`^QLldyq3PsUuhZ4zYe5%lr)_ zlv?6NbI8M;?a5#(Lk#pv2)djdYm70+c&T6J2sUlui6OPH)S7M3-Sik}1e@&vWjNxX zkY;?mdVnN-C!C^F%@ZN_TAS5Cjgh%j!gk{PboEUX??S9<7(x<)`eab)DGFVfEN8HT zRkcET>jq>y5rc@mkRrhqKD{Zr9(%JE4+2X)e@K^Gmj5l`ZUv-yAV~CCZOsxJB+J4= zIaj6RWbC-k8w>6E#MhMuDq{z`eTVb>mFu&JQ@nmjBgY@>x_i)gjg~Y6te> zM$~{|{OJ?5mC2wkW8(EVu|~4B4-(GBZ=X%eT4}Y6T z4+%_5Uqvc~=>77EiG8g~+CK}PfmI9B7}Pn9i_rvCVZINmY=eX6+?a~aU|v*HO z3`hh$48hHSSE`fys4jSim>ziR23g&!WtYWahf!d2I9F8| zS&Yo5pgNSCID#C-svV9MHMm1)5f?<7MCIrg9`24P$YLLM2=RFu!-mi*3lfudG|3N! zGj3dD`$PSw`)y#oF@T;Y^Ic5JawB-~M)4>+KK;^#w7l~NwQny1?s9c8Yt5WG$4tRF zo>^%p#Zy~z4(*{{rZi)bA+FOe7b?fyP(eYRdE(!!TBy)St+5x_vS{6HX57B5*a;j# z%iBf0Rwle1II9S(=oI{IG55_UzNc;nATqYq0xOIJ0%SbD*0{HDA`}2W)19tPp9yE0 z&Pc{@$cLrkf0_L@{-ZI^h^fZneXyLYcwGNo5>47{w%t#(zV02yRm#9a>idFosR=q` zrzI0b0@wK45@mw&T4L6kY2!0Kuhg1>XwDpzX@u7=w1(t1&h%7C8_9Q@MEsXPwZII3 z+>gC=`aVYakEdCj>$SseyT&%~3^D_7ztC|?n*C{M^;PbNoKq-bw^9ye{#A(nVw(AR zjylfDo+Gza-EHX6Nhe=*mSB-r=7g>VPo&(bMSk4s2M2lc8yG`whECY?Z!K87O_N<} zg2hWkSY8fVO&{mPpvV{x9;b3jTfGL-FXB9J97a=xp*qfdnkVdN(r7fu|E#XE|CmODrf36nipcdQsUjvb-!fdCtUrTCR zX8Wq;LV`nB7|?Ve9-tWi=noJYtoWK3>$gG&Ubni6TUknG6`gvV?fH!azNfKpYG8Bo z8|Q=7sB3C?taD5ryFIMbG;CC5l=@}j(+em2w$^ZRJ2?ov^tSRHuE|D~P8hfEKi^1_ z8}*lrFckcV%)olpJJoLU*)vvpwQ(&N?#hvd>5D)y*W0haHMh$QVaL5c9`k9)cPSNn zX&r^sE3FjF?4-1~xufTyma=nobd~V8AC8shX6NoZzQo88;+?H)It z@TL_gzLsE(=)^1Y09xJrHd<9!pg`V!gqD%R)+ScsZ+xyQ%7QmUI`6-{bk1oMI)hdD|g8}WQ1 z6zUyrN6jl_(2S|8#*Z&8+}wD%$4cz_nxJ4sMSnH?b9?^_mF!D2`(LSK|M_nJqe{m1zY)n;nExS?(XlY# zv$D|t&zW0)@f@GI-v4s{`I|NRvgeWgwBXVEFNQgvPDFoM<@^)@R8SKPP?t zL&t>FU}N}_(&+FRJ|#QmPg3fiP|v@gzxw|D`YUE(W&hm$*E0Y8#me@t@vQ$?|G$s= z)adBHTA5fsl{zN&zs`(b0Mh3!zOEVmB5OW(_SgBV<)1xt_>3%!pX3@VKI5lR>sJpQ z{?~o}L(60QR3iUnUi1Iic#T`r1Eo5&u7)zQ*wHMst5F z?w|TQ^H&n=KlOKd26~pyH~7CV|FZy3&q)87z54a>l>uz|`HheNg?l;}2^oEw)fs)_ zj*#{apFqw}NSBpA4N8i?#~Z37ZG!l~VIx{UKakci3vJ2xY@D4T;MdmIwR}0daeR9x zpYJy)pB6i~4o|{o*U{d_N>Xo*)s!ww83=_@I0%q5h_affhe9GlGD5KM2@AjX_kru? zm>41lk`W=<0$_5eE%^$;qnp1)PWW)VQK)RuN?ylEGz)*dzIS&lLO)Sz|!y` zxw(*%dWQs5BXxnB8Uy;8JSN2<56z)=UFql{nY4aj*a32|bw~n|e@y3nYm-b}@-15j zB;`|Z0d-w{Fz<3s`e3blXKZe&t*>v(9`Bs_m@WQbwlX!)`}4lZX!-N(ce*z$0J{cK z7SIuIp*g^ZqztU7{+smLIznGdTznt$uXXAb5r*$<{bX-X*4t&?6$vyAbZO~@gp6)j2 zl(EMJ!|Y4n!^4Ni>|2z+KE8nl5>zyXcS;0~?$MU+5$uO&@J0yC)-Z4tKnlP*0AHiC z0jOJa`Rof~m%B;FH>saETOak67aEhg&$4Ho(N8$k@A#vf>K|BYO#smM6Ac#;Z-rhT zNXACMbW0c<0Q?Jlvz<9oA2@GO!({-V1{zpcy}Sr40DjG_>Fn^gWPR@)_wAwO!aYH#e(dTf$y={!~pWKIeV}z%u)TgZMS5+&bg+GPDo=cNCXDJlTJ1kC zK6y3Ty+Cc2uYL45Q$~4RdTqMs>1nXaa*#Tq0^l%W?RH`>18RO|E___1nBzman`Fh4 zdq>2?#KfiCWENG|_P%i2J|F76yt6&wvDCYGeFOBd;xl;62hlLd02tj1%+j~6el12M z|1R1#m*ZU>+0~+m`@HLjTgM(WAg+YpJwMnLm57>OBwom{4^3KNnYIKYpzW9O9oi=h z4=jd9Zoio*qO>5&hd5!`Lol40OEEyDQ<^UQDBxHYRL2R@|{Tn5`cz05#<)DKOU z=KF?gj7?1eF?xb!N#DhBs|0D_5h+f8g4Fno9V_WeKrTIU(@Y8UuROAITBSf~yD9aByI~o(J0@?OL zNaNwkJ94_FdKAp{YiWW&Jw#ce3_OY^v6zyZQ(n7eAr{Sbn@Z$ zydp$nDer9P{0*!rils)LzYXr}Lw}Frpul63%rW*BT)q6ReH?kT$^Lcq)Zht?qYX-W z46V*Amz*tJzFTEafh4a<)1PY{m+)6z@igZ93b< zL8H5WyNx*Hq%v?=5ssJO%yiZ0K+r_6)^B*b+&L8%yzH!FI?5v6XT_~)^2 zvPa5g0vSpvM`zDVvgYA4LRV(Pw7c@0Wcvhsg0)h0sa=M^K*@&Vv+NjZy<{c=lWLCt<7V>)#dSW5DKdb8%BNI6d-n=9pW z@!mErEdq3=ru{d-EbY1+o|z#emZ<{$NXRR1F)c;OIC;OBUma+a&KsGXu4YWH$VIe% za3)rD*^)`GIr`kE#)cESY=EgVYffqT%xlv-y{WZ^c1|H*lk|RvN$16U&FJzOaHB>Q z&)}imVCuo(qJrAPSw7@Mv)SPyHqXqx5t)SV)-6+<)P5C6!hCuoq=OrnT017|0Gula zYDf!b8GR)FvlBpoUGr$%Pndf(+Mi*v+#Re~u~*+RtLV0P0BVt3CY(r>I#xEPTsi<< z6bY6T5nKpZ?s~Ip(L4Z`)%2^Gg0>bdmoopB4~io+j|A#15mt8TTi;l!3}%wx0{6zS zzWGmoUaGlX#d=Qztsijo=%;WH*G3kVZpf!dB+Z9-U==XoPJzK!plvRfY-f6QV<-*n zwX8sBJI0Zx4~nZDB_y?nDZWAD@)iu6T?c5^!Oblk*~21d7)%O3TP*t=@s|qS?AKsM ze#HvCW^vr0b4-&8!m~Gc0U<1V);`LJTglGo^u&dr)YT(eu$`(_Rau@I*w!s~Y2EDzJqn(4Uw-Z-FjBVM`R|A~_^0QWw|Mk@Pi5y_1GrS^Db73Lx_qrd(HwRY-NU$e08Xzz=7ai) zr}%pZS5Y zi{Ft5h;rLIJBQEx-JGsIK&B{}aC|tM`}+M%lseh~O8{qC777M0oGqd%h+rGXi%r2=gTyV?Uyue zjgkII>!L)yXylN=yCcu=s+TZ|y$*yTz#DqXm)mgLIx9>=y@m%5uQYrc1ohims_r&J z*no4A%F1POwGLvKgO8|TI||}^3JZd;%q~cy2);Ej{xItccTclZzF;) zG@Nd$@dXhL6-ToNm6$m#85=gU<~|mRtEj?hs3v*n#;q<^+^*0`a3+O}iG=h9J_wW^ z4XgK>yv^O$M7tD@PdKbXX}xoKL>X{E_kSY&IW>LjVz08K(LiK`3}i^zn@qvEQNw?b zkSIpxlW2#haVsoIzoeNb4J6AlPc=x}JMZCgk7u0>XM}C*$HS8yTKV;i^W+&8hxfcn zz1yf{xUZJ%WQX~C?V=R@RFqxDIP3)`y%vnX*?;jsK_s}!0Qs&s5OH_Fl{34Kcfv(Yu5imo?)ux}sdayK#fExZ)O37v^$5%+J0|zmcOcVqK-RmiExk$-Q43UkW;8K#D9W7!Hm(gC?Q9$il zi3KVj!TzUlEsF%|239dGrYf`80a;GCmFLt-n$0x_;8K^AMRf+RyV8XJ?#_?UDi%X9 z(9O!4L89^8eH_pVnHfVczWt1RYDZET#eYw5o-)*el1PqbeP8DN8ZIGssv9Qr3IZk4 zU2z?g`}J8TZAyK#*LjZy%yyaRCssX{F|It6H4&$=tW5Z8m2=-M#viFpOb>Dzfjqzj zuj9xm0I%+3nE3AG8FVwBQc&!j%RLXHdA(vPvj(IwN{+Xtt>uaX-KV&IbGO6PH2bF& zcylW0o|fkcEWogz2t@H?fwFvE>~9oFd?*H;Av62u`i7n|gQ%b_e5mzBSkmf|pgUWamfl%+DJ_+*0{&X7+PDM&W_Uv`M$~Eb&OEhqJb@aRp*h z)3KoMpGgyplze?=@yIi;jJ;sVIs_SiP*rl~D3iFQYMW7qa-}pl@P!^<>U>bE<6bli$@k>-wQ9`F46;>7iXu{kTR*YB?rkN&KW}Bq?XqkQEEL2Y3o(0 z)rYM6X!qX*T4R?j=$Kn$hYNlK*8!Xz*aw!a*KDJuVAM`skfAUEg6G)}lRt!h3sr#( zeC)(lyyh?lv6xG;);>Vm61a#`vcxUpJ;uBs8g@`Q;7#PHyjPF#`n_payUpF~%amH2 znYXDDfP^&>)U|OF$Dedh|C<%rU+A@;989$yvS)yQ)1^p)*Edu@zg4a#@XSz<$DZ=g zTPtd);0jwk1I+~mWc{ykn?;_jFi_diBs52G*OU7wksPk9Q28sr85sSm(nH_m zdC)r$7KNJ4fFKN#T+}lh$U?=FMC60$ejJ9}E3AH0+;y+VbdaBR!{X1EB;W!dKay$v zh9gHWlG&=JstEMHFmgqZi2jH z4$~?d@dtALIJ>_hYwpGn@*dWv4O!vF+nl9IKjXhXzfV)ZF(! z-%&|ajfw9XdXAm^oEUOw+55BKoym6?)cas)v(4G`M&L?iCLzA*DPJCtqqoQcQ6(?i z*qFV-Q?Nl?#pu5CfhoH*&t!lC#a*<~?=?-K{LV9Y!UaDqA6&U^pU|0ZrvXhIjh~G+ zP@<-ek;_RETIE&s*!37iPJwg&uKy6MrFxu(bgD~y9Hh18;@~{IL$$je{-Mm$Ozw%e zq>pA!?0FgC5NpNGe!w;~sIeKXqysoXSUVs4SNxy_lu!Hf5e!gjo~iAuoh z{=j=a3M1;HJkz67)KKKy<(5T@-|dW<}us z4FK(F{3EWa=Z5jtp_XXOH?h-8%!!&3fh8oUk|;S+Sn_u>;|}1!I{*`q5X&$~henM& zaEgdxO2^vxSx?$uYtn+e*QczzBiPL(rsX=VTBMn{duq4BjP8Ez5^;u&tD?{qm|BPz zKQrY{v2G}>-vQ)oW|7DhWIM? z0%o2OLA#wnN*d)Bw@M$aZyd=+VXi`H8(c>`z#h)Al}8Rft=Yq*z&;4(+AH<~{yizNB`N?IF@Z zIcH6e=Q+I-fvFgedJN*Pnc;PryvwJb4n7azD3<3?bBe7@thajw%rMv)%4#wA2hUDE z6{OFE_FJg>qQv@F!nqh0b%}S#KXh{3R3wFd;m(lM@>-24O_9gmZK+I6F8kS0jZ}b; z6w*a0TKB<+TQY0MuNYzHFct!*oD z&{(%d=|7|aqEP{*kfJRW1h_&K)rv^bzcO-(%nOU5m;{=UZmO2q;@9SRT8oo%*jG1w zu-M7o9_EmTGykD?ko6KrM#Uh1`#r01q)%eA>%p>i0g>6ytbKYZH(}s)`0zHKbf!`Q z-M7O|v#%Di-7}}EQci}Iz1x>sZ0P8p_G1vfsYfGbjL?8%W~^{7d;V<9zrq`Ca3+R& z<9YCs{F})waecHgaYfsrUH0+U+f8?nBd)|2NP<0htx}kV#G9>|J+bSzQAnBfe8q@u z$@nm|sW&A`_a@0D4#H*4iy^cToD*%JL6TB8C(JCr;H=}<8KE1IVWneVt~3{8iY9y` zW5o!t45Mk4dT71HiP=Smb$rfzswF5=mJUhK3g=XInAiM5Zv*Byig%A2ibGW7G3l31 z-chSgM*w`P{W?WP6Y5%rX#fee$Pk6K=WCTh#B*d&wmL`s%7=rT+ivk4TE^1XfHjp3 ztN_Yh6!*X=>_Qs^YXn63Mo1h|xHS3}`O?g%#%H{o{X!4#c3Ppfl zaWt2#a`)5O@WDW*WTG88KSl%K#dXyY3rHzdE*(|Xz#BW!G;KEOW&ya#S}32T`ZV^p zDVV{o%RILN-Puz4awSBH)`&1*JG6WdD};)N<(B(O zdw7)zyfzg3KXX-y{J*pyQj|_R+#xf5)cI`?<@)Kd%(}_}0fNo)Qe&ue-#%yL2U3hj z{5mq!V;*4|(nG&N{_*o8P}!pvqLtTuFw*aJUp2qq)zD8JnO_$teIgBwWoWpJ5>H3o}>g2vE62dyHhMnYxHYxCl-;?i55z`4!7{&%1ENP{6!^9UyOtAy>9}VRS?> z8|jZz*d~7}1I?x8Z9+QDEVUa&upp7uTVAof;XV2SHIfE1YQgpu2@p$&_)~J!9O2c^ z4_CvsJRqjxC3Y0el3H#LPh+OY{BVnyxq9pxH?Ho7nbOTKqYL&hq0r$4R6{`OcXq8d zDbVUYIux|sbS_0?aZL$>qAL)uuwuQj{do5jS(@jl5k=7~17b*eu>LfZqQo(|@aphv z2r;2O^6Ly;qXX&Xx55RByzJ7_S<(p*{8bB9GvfNy1pIEE$!<$rr0na&6FnccS>$$FGWgEHBvnMfF^AxlMKRrh;!)C9jH_q>p%;jKPaLs zBf~*1+kIygkGEEBoxuD1v6ISS6PdwKM&I4Hk1CE%SEi4+pEEXB>LRCh8rS+pFUW@o z!+;N9(Z=SBHR7xhX>UMH31szX!|HoNR!?T+B~FKW~M2;-RTI zJBFnpv+pd&7x8a~@!!6aLe0iy*B-qN-C#b*TeutZXP(aIdQr}Wb9n{ z)VlTqy+vT2gv99;H3}9rqsw6tF|E!$!pnd-!wAZKgX5m;h}0i}-!CFa69QA^-Dtwl zv8dIni`T&P0>Pcn;hZ;gSY4z3?!(&WA3wauX1L1|sJDYD zuGRTNCR3q^(LzV5??>90#LLaAp#Sr#%*OJ2E9ZRBrcM%G1FlJNv*b-LEsy(d=~~RE z90uX#dtn?h z=cMF$P*cQ6P56%QIt76f@4Aq{G|E-i+8ao%3i0&r3?X&uFYRK3k#gV(b5q-DrM_&J zUWX$r6Y@@?eP%{%`rvjVY&$by{8hMKj&abEt^%}2;%56c*yfA?oZsTGP|=MY zKIyIVs3D#PZTbjUT0OQ;yE|GnJV@L6`>*Aj4?J6ReOx0ZVO)s_Nw&z_XAd`;eFIzx z7Sd51^i+h*xIc6V9Eo&t!ok(zZ&6Qe3N+Z#T=`lQ*gd>y__#t1U&hSbD(W~y66tB! z=?oJ9xCvK9OoCY~*S-HFc`|nXJb!WY`dwIrmrd!;k$VlIcjG~v?)CdmjGaAaF+roZ zPy^1rB^Z4ybt9P@y_RzBi7?H0Ue=78EBa0lzuuaNg^)MS4Q;{bJO9;d7f$Hyw`^SG z@xn-s7Vvm7WNBcsGPIR2c*Z9?pK(f0a8j61-&1ff2t5&wHZB_$G1aqbM2BS`(8*Z` zdA;{2BcN$ZL0R1vVY~gSxD3h>9N~^fJVchJ0IAC~*thnqc%y2NE{h@oX2d{AYD!dH znu4?EKti4UB#NmHCqW~HV8x5p`))f2VO7pa#1i*mtrc7?C?<$n2b!aycI`BPbn~Mt zFj`5{zGNDk^Aq)^UR$*$6`;WU0U*nXOX*nQj8-ow9`ZEHR8Em0h*n1jR|8bO2M~rW z&H=}ACqiMKw?xsky2xnS;ej7IVIbD8^ffQh^v(^ zYu(h8iv;#<#ILH4UO=!)Z}=ZRa^5y{qy7f=pKf8O%`Gb}f zvuMu3yA+M6f%SahR?&PW5YRI`t_kQa8R}MgHxm&Y57Pg3?va-qHpTSN*hyqB!0Ebe^y55GxF?TwX+==I0xw;nHtMCK*)4Vl^qv7Kk_eahu!X|IU0=<75M(_(PjBtx4iz@;^JY}}V0U%^YTk`; z1X$7l|3G`ky7S_<4x$pouwX{!QcPE@%^mgu1i|{%eDr8?LoVAb3wzOCYAL(FN=JU! zs0m_=s6u895Pd*u$&tD}Yt~P@xYnR5QsUZW-7DsvX4LcWxa}t5Jedipn6tj%Zx>Z- z9yTK63;Uyng>LMmbLO}XZszna(!vZMQY=*i!VVgt zRWlH}P^vM`ox8Nr`K&r`8Jv@OR`1DO?sz<<&MVa!F-BlESp(?bt8~ITwGKn>k6kf7 zI3l}C9_VXCRqRnUq@n%iaEtrYWq;Gg%tE4hmnP_HW-5#aOY_6^gVL_saF=@Liw9hY zZcg|gYOS`rK&m+#F9wqIYl0v}DePFa92#BK>nDz#iTT9b& zoe@HE={y)CU+he)&HMR#c?C%&ahJv3!S7LcBY-GFv3lDdvTS@G6bt@>8G@!QhtAkCaFWw;4#KceiyQ)dhNbeIf%LIS5F8%_AXun+u!<5K8itA<)?^siW`!^dLNV zTAb0IbW~6_rUnTM#6@7%5mjNfj-=Y~)N16pH`5svZUn>pJ?DH*64pm1w!^i_YpLjw zFu|S&c@2vXL+%|kjEUdzSRD9aI(PQ_JI+I@-CC)o%|~u~I>S&68*N&S3Kvwe zZK_^}rjLLd0t^lk*&4m^gnTzD7U|*W1()~&-fowrUd>_nXEvE#%>*3UdAeto--0rI zmK>Llruiu}q)68YK%#53L_>R{>l&XNug96a^R|$r3*$pQe3fEnHpX!D-OTG?nPO!| zVnxI>@QR9)lr(+xx%_a?{9g`L97^em5umwY0?eT|U=JarE@Od2hH+B5%fACY4(e$O zaE;wXMDT@Ti_rjp=iKBtwwV)y^H2*qF&jva59fC{&ftNLTn1=DgHEwNcHdM5Qt zw4ts`=8eVWv{8`K;~7T#Npe@l0sQw=*j#{HN_aK5VG*+ZzPdgn5F7*s8&*=Ao8gnz z?o<@5&@zQ&>TSk`$5>^8_Ay>}2#bT8Nm(~MwehdzL?~X12s|pPUv&CjI0|cnRxnGS z&Kc^G7RiZ@&-=0ETy6@#bh9(NE3VC!dhZG;R*FCW@L$K6@H4`L=y9VEaCa_u^!!CN zgd*uXQk&kGu3$KPlK;BwwR*I`!kgcFvEalK=)D+b(sW$L`E%cuo9jsks^AI(?d2TR zRsUoGQ&i3kE5%PQqO1vZFiXy;Gs2n@(3s&aXj0GZ7+4`9>NzgS$&ofQii(-r1Xp}j z?|_E#-n?q>EQZnvBT#`KJF9BovSX3a>PZQ^f0GhC(sESViu?`+!bvx~NE6Hl&bI&HlLiHVg)Wn=dd+%3!Kl&S*eDZy^X6!~+N9 zWgs}YxPzJ4eY8OB7S!yEIWmV(iWN#D(a^Iq6+ zuBA5_cNm;xuHyk>k~)JprQuybfBkfu0rVGQ3BJp0YJ-`ZA@)?n0 za&S=K+Z&DglwuPtzL59wjRbNUeX8@vAbWSV-N;zblg^xVh9wrh`e()K0XHf{gm2;F zXh~BucI&#o1W?$nd+hf;R74h09ti3Vm&|=d5#Th%XEtD&G-o}_gz>fT)=Hpo9z!l+J_Oa@DML?FeBs~)G(~tY(Ngdh}*gdp$|`9BSvX%MZ8NZlkg?0#g54O=?X)j z;u_(Dz4-o|D#n;>d=(r-61Iw8=IXJC*}o}nBW~78>C~9KwCU}-dX=`mH%J{nQg9a< zl{FosHgT=^LH0IO5KWi8X5v=la)3zEZV?S8-&o2&0<>1o!I?KfrRo*t1MO(1_Gm6k zr+l*}t669&{?oUTpQrFVMo#3lz12CP^GT=WR{#+hN-I9jAyd;-xo6=LBk)w^L zSC+@v_5OxyZ z9l6>RS=Sl_*CnsOBd~3pP!Ur*!JICa%*0jw*|-^TqNP_7ro(DtfqqFhZ^WFjGHk<4 zoyTaI$xuu?&eT~IC$qW1DCT(Om@@G=6h>&=UNuBwK}e%yr6ZN(`pJwYP5jl0N@M*UvqbKx+Jz47^2(nKvM24#4qHbzwQ>hgS z4*@HU3-AFFB%)~k#Om2fv%{ma25HxAp)d!~QL2UEg} zpw`n;P#~enBjnn_IcWxe;Cc5xftW`67LVD92=KhYK2jsVVVrkTwd*@O#F(ujJZgS# z)N&!w>*J0LOrR(r2sbHUR(APev6!mNYqD?AKpfaoqo5`&ZcuNGE+Z{X1mMe9?)xit zwB-P~5`@@Yr^ixd689WVx5zj6Su>Lg5gz$Nta>IIWCW3jOSCYE`ADNh1h zVt%?l_8ok`B|A6tOldMt3fXi~!jG7>X~l-)To+adQ&x*|3go62JcX5~O|#a9YKM-_ zqX!-tw-dinQ`tm~vt{!twn535g(_6=6<)BDuC8=gq!!btAQ@@8OdnS-tV|RHe!S$7 zJ(#)~0#}USVFPa+=q&NUfVKz@b7B%`yWR5RN%(9WyFGFn1_W|j#D3Ls&yC2{Eq?7-w>(|f z=SAnWH4;roAKiemTfD08^~Gp3IfztC{jcEVP9}g8!pq=!X=}|2qxL`mskxF{=@YM} zKk)MQlNpgRInA6?W(xy<{LG{HMeakCB#M~w>~Y=(#>0`mcJ&guNe;?!KI4=m#e1NV zUBl>`B|8-mY9Y9k6v%#CRxkVwG@+@A%Az>p6atva;z)~Icz06OlRpMI>jpz45)(VC z#p_JjhPn52vQ}}(NNxNUO$yMea<{Z(i}`HTk$ZYa!t1Hvc3A#$^jZ?a@b#UDaPyZ@ z^^5dSs@Wro@h_F1OU7#T-*m-HV1*)jo|O3V&R#YWo1|9anR`uaQMuTD*M&5>*;@49 zDzR$y9uODORwXf^RXxsjp5xS;tiL3F3sZKdg%wiM5Xns`LlB&T_tO~R@xRPaLpHVe z@naDpQ%(jE+WZ7QuT@PaK$JRe7hEMQW3}+L!JyvE*#OJ+(7$g!>w3fz(29K_kOI|qKH35C8$n=e!e+y zKya907g6;Ch@t|{wcIsKL826|XD-r(Ji_e54t5mFA!6#4@=}`_itDY* zO}IRH7EBfhN!wgH2|t1fO=Y4L(X%Pa(R3&zQ92nuh+#xf9eLX6?1RxNtSWNyJK5q8M0q4eh5v8 zpp}G=&*f|dLhf}L$Kxkzah)94f+MeW)6X+XyPo(R+OawLjv^K3p4~yp{AK z`{&}31)2!06-^Fe?uh$mZK*K($`(Pm;@lNvx4~=^on>kSQwJ4_tiMNfe_-ke^y+Fd za_dWPqat4N6TF_mcd>l4!vqe!Ev{|lNJ*RK(%jyNTOmXv?w2-Eiox*#lQF#31D%!l zrO?00`++EPfuqDu&FMbBOAJu>1bPe`*`U)-9IC;EoCbWn(LK&Xtlo4Sc%yhm$*1Qo z?6_mD`4);54_sA*9(>{>$N6aM!Dq*Z^f8pp+cUotp1Mivdc$7xo$C^c;rpMcYE6wk zMj%N|38dL#sAvZdcF|;vFveLWTnG8zgLr;aGNRWhn-(4T>>6lE{JQ zDL?gv1~z1&h-vH2j4Q!(XD!m@xg6T$SPY{AsP!|fdVtB^;j z_O{VQiancvAR{4n&8v2+WjXYgN^wo#b6E1rinV;vD=SHIpd-hDzhfPECO zViH>&vY;}!4&MH>n7|Z!d2!^`!i1N<=%XPsyK8<0JWpCf_Mf??vkC{^20n&&UXSjN z4~Tc(n64#E)1xgz3xgwFkPk0_^XFHQ|BiNkdBXjZo%}yUJHJr8|5X3%%L49SXy<>j zockjAKF9tG?c|piko_V0iFPWA{||-v8NT?ze+L`?YWU~={ugZL|E@6qf4SYi!=3+D znEwkx`i~lD|HX8U{*z4nM-en87JPOV_Wzmh{EtfFe-%mpyX^d@XOEH9U-i=eivDi= z+k(#2)yCAw>Wkz10z&^Po%S~m`Y+=pFslh`331NLwtjug*U*rF~FUC)Plj*bU z_}B3@_v`u#-26I!v7!GHi~4upzwX4!#E8#I$Ar)N<%00(Y{$a-_fEdr8QH$bR#p~v ze3nnU8#Z=U{J%zjGOK@&V*RWW_qF@K=6;UwhzgGV{`q~N8r`5vO@z40Lz5nC- z?>&9>GJF=HW20yL`rOGd`eXZ2Y^@M|m!3)AQM^Z4B5*Aw^;cJ*`q zzkbC2$-yzuF?}M%|G~k1IyHRZ(SMbt`!5_E%cqCq|1k$=;E+GwQiau;8yOM#bG0D? zW3^$vdOY%HZtmx?>ku1xHSS#AuJW+4Ice{iZW|jO?z*ldyRI^?r8G%Qq^y{Y#8A%) z8oavNJVigvXp0mwM8Qap_!%-l_Qu47umOf^QvLZO6rl;Q_W2)n%`u@J0D~>CEj(5% zN>(gJY>b%TcE7^7{N?~CgnaOM-gLHLe@j4_L{bqaAv+NoQ~-@FbW#x(q3`#ki2!J_ zZiEC_ScLmt88)Qyplm?D*8mD`ZKR}x3KB_aga!cYB{|swz2fuE#?C_6-f>tQ9Um`9 zS-s;Je}o2K>!d0Q@rf(Ab7IL7DtKdH`?Yb?VF4Une*`Xk;A*bT4~T3G-Dhrps1<#b zE)Olt4BT{bEUj`hwE+AM-aC^9lyUlKEd|}$w6X(GkW^XySpUASZ)jjfXlP;ugs=bV zJT#-WHUp$vVtTBv&u?gKxC{NLf~{-v+)3h1`9KQ-DlDf41LK+a>Xt1}%j-;XS1@MC`zYnts-HXcE<`A^dDDTiW zp)}s1XW2vEaVkD1hk9qgWX#pq)~OG(?dQtG4-8`?VtpGryKhU&0Auf=3~ws8UXGwG z=pe9&ECSkk?GK8SC z-f?f408`5wu$OqoKqDwc3eRUUvW|96*#$c%UO3 zKx^-IAj%Pdm%In#po;aiuNwY0ne3}eA9wJJyuC~6?~~-5Kj62H%x?>I&$=80yugzs z9^n9IgI@`BVW)Y4v31UP`v5h;uXusS2(N;?CGnqvyl;}81-phNKM1nI#_+zi484B_ zYhS@vOOIDD(oxQ1kT;El7x+=m>u2!&D|r44%)f&7&j9l)_*{ub{eyreEA0MrGCC(l ziYk!i`{4P3{*&yh*SYnULo2ODboj( z4`bsal#jy4sW;=dL#sQqZ|P+p0$Fo9gP91XMlWDKDwuxjI^cCRpCgrFy$Gg8u4sYP z+1~;_eus6!o9&*yVl0i_J_OnUcalk&CsR~Nk3^3QTdWonMnaq9G1dz6O(ppnRN>mw<8|FT!DjT zPpoqx_eC@91>*+dHgx&}Wr@9POw>&Nono4v$Lr=}c;cFDt{hwCjznSdZrX1j{~4yV z-e~7C6IM~r`b^ZVPWk33^K7RcNLWH{!QdEHKh_(&x#+V3!5L2aMhdI(dK%0gRo`ge zap)Fe@mktte_tqc;zXCX+%}aZ{XyqZtEyy5nC?aVstx{FM^38k`}Orx$xLDl=wvra z2qEEu4@}e|l<|+Wa<(7X{8hbVF_NH1-f-m;H+?@CQ#%JU5hG$9+VichW{JEB4VKm@ zxaoBB=xfN5waN85WT@(@!wX&gZ`^r_CA{`2&f~>zzv_@|4+0YR(us<6{l+Y@3BA=1O_jB_7R{2LPtz%Ddp;ZN z>~!7iCfBr;?pQ86Wpac)I5j9p6HqxMDqo?}?DuS)9j*f~TiLFH^+Q94%Xid|+56$V z5{PM1{b5e98AHji%XAau7m})MjKQ>6n=8e__yR;!x(}Lb*Sr@_CD$&M=&cR1s%+rr zpEw!kj{Xb{B`sm5F@)mZ8hcY&vZ9nx|H2m4R+ocJflIpg@Pl%w*6M>sxOR`}O{M+U z)v!>R;<}JL6C88M;TBF)vKh2C#8Y}OH`C+suCKss ztmD1uWw<;Fcv9@Lmncn@oQBsDH#!Q`8|?=Ad0TB)#!SKoUS3FC`o9=G-SPhHo=nsl zbwrTtTq){E?l6WuS7wYHp=P8(IvX6_o;@hFtvJAleKkdECbd#;}=>Ig{uVa!0Y2APd!9%s8Xgx@W33(=Fu@bir<-zJGvsfU@RE_k->Kgdg|ag0}KO{8gk?W<6eys2qkehS+7C63LV)rhR)3&EDc zCyrf`F4DCVIQC~?vlq(HU9@Yhh*RWVkE!C(woHJsv#0PGu;A|xsT8$VYFs@w>7s%b zDk%Oy4c_=z3Zz>pQTP?fa9d2d6$-13?V%CNmc+q9X2P$fg(Jk zMZLDQEu4TnV(qq~u#|jT?h_KZ{n=B@LByQ|`JO7!O^ir%ay~+vvj63_dQ={!Zz=OJ z0>jx$3{i}=xKJ`(P<fFo{3xtw;Lp*D&a{JEm4|Guj?%?Q&|x$t z=Yy?wT;U}GFRs3R!b+Lq0=1yjBKAwj1W;gGrnVLp*hvlg2uHvf*(J8vqtN&upl-5C zJ7QugfrSZ{nc(Pf+RBf?)u;$R>`La=bn^OU$`Y*wvtauXJ$=t^S!MM*WJaYOB>33& zJ*|yDanQb6&gQMBD*F<1jv?~LDn?ok1Dwyv!O5R_dZ$NcFUo0_+w@hg&jyYfck#$H zm8-_r)>4&zN^LGdF8ijjQHJ||zBNyBgYBr>vr|2l#JV$X(YgCnq(Dk{Z3TBsyR^0cTQ=iv5{G387a6k-Kc~<5L}t9Ps_vIOL~h1U(b+XVToVHq=d;eY=u5~*!+OU z&0+bY(OmJF=$}5Ik8?VSGXJ@JL{s5ci_b}XMW7W9!zj*RF$HHb#>Z>X=)_b-ceffZ zpH;dAo9l{$5M$;_s~AJ5g$uxKM$SiiPAoDJ7#6k8TU20qJ^d$)We;uFWysd_uOE&mywjvW?d=*rr^UX|_deZi0*qSyV)u_KS-ObIxNz zIk)Npq=ED5&_yNsC+N`O9y*@|*_SF|=K2T@5({sJHhS=VR~o0JW5o5#0-PFaAAcNu zP%S%BVIj(d(y|Kx2DDBYn}=QMF`_q66M{KR9K#A#bB=Zd!Os&`g2?$zZHvHc_&6pb zfrifnUz@~Uza^l@VvR*pe<~k1cerirU$qU7+(X(~9NfJRo5~j)23x7N0FAT3pSxW_ z7~OpvS&a@bJUTcdV0b)&(9WMDhaZ*xr;Fs~mQskFnuBx>FOhAspIJ=8JP<^O$IX0E zNab`9h9_a?A24N>&46XA2*X2kThQ)bYC_gbDB4sa5bxmQ&pk#*y8ajGfJ4w1tf{}pg>e!cvcL-G@S^}anr?kP< znmiq$v%A>mR0nfyDGey*O3nQ1C3NC;DPGn9ku6&o3 zAar)2K31z0Klet6m6){;h0A-)E!$E@$B5H6Vu-Ea5)vzwljna6%ycgLvgR~@dy~pO?*F>i;J~Wfmvwz8w` zV|jwJdN>#MPUV0m*i?;2<~I*6iHi+SP|w1p<+ykyMjSNBfwuRW_4)!jBPsl&Lvt9I zGfJjE^Gnu!wWKfr9kd5vp1uCuWWP``t5sWaXsIcKTAmQ`?@cu*0 zu0PV_1cH^lw`lLd1?BgV5f250|F$ro>sEgvB?(YBPQl9~a@X9D7a*+E+|0qK$X>JJ zA@)A_d?sn;A$kE7sS_CV8sa*&Z_Xdru_s6ptg=%Iuvk>@JrAAHp;j}KaH(g~xyPmF zXpn}kP@W#l%6K@5|~xb7-4=`3*|B<*`Rs)=DUR(?L8*bT;R#1$rG_DB6q z<8-mUWZx-jg)QO!;ih0AGxd1u+QF(HWDv^sd%< zR9a}!E?r+9q%n!;^~iJW9Bm1&7s~#t9c-N`2JjA=H8>3$IHJ|pB&)A0;8c|x%j{U4 z5v;_?t+hE<=y0C|ay2dgP3;yhI4{FGU54~TUzFxGD*KOwXKB=jP*mrs{ zLTmgzW}L>p9BkykkooCrzfa2a%Fza!{YLoyac+L#M!m1Kr)*i{^#EOf zOdrdmY$Jj`LITDJctkS&7O%ZxBNrstd&e5)W17=}RJikyttl&as2$~)^1MwJRe%&v zkvuX!OvY%~?v!Uq;5K;GahJdPT7F3tlej94pJqLYD84|Lmys0E*jgQIY4&orP@bcA z28krYoY*cRjaO^i9z@Py(2f-b=4v4JFnom~%w(j~)g@hE%E0|;zfBAO)o3XG7^g15 zO#k5R5ZHjtv$?HW;-afA$~alrEYRZfgJV0-!!8Y^ZwO1zpC}~Xrg}w2U+T%CTT;u> zhwSV7Jr{-d%lQ2WqfqqQaVBobFU`u+;guKyu&o!g83ePaJZz-l_F7botD~ZW?-u+fpNn!we^abAC zK`s^or!#K-+F_3+P;QWA7aXiWzU!6Hel+|AoHvaV^nfbXNl!_iAnq0-BNr%yA$gds z4}`pB#8U{JxKSPreWt8~tf!Ze3Ll}C(ZCcbq^>bW%bVdlYS!o?e^Ae#DsNdV=MT6p z4bwl(;ArlSC8yE@Ghhq}y?J&|MOd*5tAKtE_pzNf8?8Y_UOhtig6z_LwCUXYd#Qg= z2xLmY5w>lGJD9e=-`f~5IrHXD76-1rW6rL0%Iz4Y=po`>q_Lo{<&vUouj44A>_i%z zz;I`PA!?6y3mnrMdE#|EirWDL=(tL?0i5+Qv&=NC ztkDm^8}n(<1iVSKvKq>YStsT03`KKgSvvShm)O9DKHD2g3Ch%(fJ@VRH z{{a$1!T7+)L$FZEEXNhNz23i$CSF8oNA^(OU1^q|4#xF>XJqttx^5@=QHVQC&n2W} zRTe85{*5Az&2X0u@L%>; zflUQzsG07I<=QQOJk8AEd=1K0zJZYEmRZsgpxyLGg!}baW5Dm2R|i zW2`B;6}lvoo$#RHyLX!fB_XZPU-H3@Ba=bVe5kRt$J&&u@bkPpW4M?1n}J6V%0|Uc z^e;8c_NM-_p1pEkz<~!-QM>jkEnik-KhGr2ebMEn_lH$6z1!EG-O)aS@i^}sv^5X9 zSyHOaMNEEh-U<<5bq;zVh@&sO!f>Q@TE(c-y!CAxIU%zV|Git5fFM~2{(jL%&8-9q zn&U-QJDvO?0O4kK`g4>G*y2PFkCS5`E`Q0_H4J3&_2@-0EAh??*j*qntTZ#ki5W#P1%MSX5?ft-W!T9C~x9Z;^dxqW$ zhhJd+*~j>biW+%(N;mxD?|`WFRk`Ljy~8ia`X;FKGbGoutHW_b=x}RS`U=P>n(dG# zYK!u|3I>C+q5&qWEf*Y0URMQwe7D>=$NUbBt0t)@Np3q;K_l}Kt79~!X8w3y?JN6j zr0Dk!A~002NJuA~pYVN@+%Nj0gJ%KeOC^f$hs?%J;~ifLVJ6YSsM?VF0Ya>4dmE3@ ze>%z`;b4qvD8<{`N!_V$$df;sD5k5n4Z79(!9mFnS)Ff(lCJkV;WK{%@D?5M4_sm_ z@niBb|Ea2P#}tZJ?U_%}bT|r<`D9O>wwRsDdj_#$^aEB^Yp6ZI%mP3Wq}LH7FTFxf z@&xenjWT%X#Lc0u_yb(zhD~)WzXuFLO>Gfot`yquaom5yR%qG;1X~z-fwq5?uWupm z&2LM~u&Eufn}36$WdUo{#tQktbV7E9gIZhip-RX<9NXx z0bsm*bfl&amUpgzzahF|C$vbvofRb&xp({WAxCJZWWlzVC~{QVga`0Br(_f5~r`xw*|BlcIzXDPo*nZAP@XOURGFA@_ zUkeibpx+5%p06*o|1Pumx;8=!bSI{H+)0p8)&VX)rjMAPrFgp6GmG=jOVz>t^L-`w zNZ8r0fk{+hJb8tpz3xZ(WwNG3rB=$beELy7OFthu3r8)N1$)BD7eW|?U{?)ADKCl zvTq>DNWZQ_2Ke}7#QxM3&ntw|tJjM%srzA$ykIP3p4{(frGNHb>Y7++idv22Oki`8 z8^AhIK9#YcM~Yvrb-&5HqP!8^=5CH&oe~tC1~X}%hZmyEfFoI`Uf<4C{N*a0UWaJh zMxEL0HIM$2?jG^yQnu4i_}=F~pfqSqgQOSo z0eKm8Xukg3%S&~-=;g|(H<&TMG|-Sy*^FfcRbeP1S073O$rt;t($d^i3n7a!Y*Kj& zBl2uPhPBNzx5#}o#Jv0KWog0po{(2&hv<-Gd27->>ymQClX&8(aWxTMFEukiL1FtuOv+klwcP=i!`xZ$xJz+PDx9GVDch+ltRTO^azl&Nnx^Nmj0 z25?4K9SD1ED>>zbKaJE@8~6+-#dwy-aQYYxmF^nR*fcUsadDvJ%+gXFVLSDlO!Qi* z;o2n46%MQEe;ya#U~@B;Js@j_H6|O0lVH4f@}I-c%(CE;G$@A^w#<3h^nfzqTLX1g zvz^^r8&C1CzmR=uodf{1oyHkQEW1=_46<@BwS>Iu!eqy2V&M#D zSeciG{EqZ)1y`Ja2c`#N#s^|Q%#h-bYZYka^K+V_-+^WW!m0quyuIPhQ|VD?+(P8f zv+w{|*kA18N!Bt^HE+>n(s)WwO5O%wcbCAhh3NTrl7yc@M9CBhW0F)HXusFvHu|8o z>O4G-X@^ne4zf1)JK(~dwyNL*8OYCB*RE+M4}kRlbPZ_@2dcNS%4n@Ji zp;DitXIkyQ1E?6H(&8+2&-P@6q=PNJ03+nc3PH)wJqe4vcvNqKc=&IX^n|pv{}Csq zE751PS!y`T*6VYySh%t&IJQ-8zu2v42^a>x8a(I)ibd6M?oTV6W(>Z{**USh_Xe}Q zU;lA5BwhJJz-yL>^1{xmC-k|h53H6DWWi$8%C}<*>z0f3Cq99Z4HZf@EhBbS6Do^d z9ieHP&49$Nr+`kEYkH&Y<%Y$Sp=qEU7$c=MAKCGeJNrPmhPi1*JY~uJr%P6Ws9qc< zr^}-R;|C;j?oEl9W15qU+P6jLJZX1+=2T}U^IKVjL4smsDv1ifE8nkScb{V7EnD6x zC%mTQSh&vheJ9pfu~$-0avjyhAC$V3xPFaQVQ;E&DScXyxO^|8IByq}O;o`h*`srb z@p!%n=zg7nHF!W0<1wpb8eJZ^&bmmkB}KnWrYuG!fcE^ZK06vsq^?At`K+f3yc5HmWo3Jo=u$Kf1Odpc3@{1X|Wo|+%-KBn63 zo)bv&wN)i$oJUKO<2$3Aqj^GjnA((9N^1%ry;W^*)MpW3S-zlxVEv)Me9NrO0Sn6YB+8}P>c$@cXhyUhlT zBqcGEj{Gwlw#Y8kqWjh0V#bOkn)6=AAk}t3cvHvJC(K)J`ps@mVunR1V=_W6{lQHS z5ALwVRl#{z?bt*cDJ8`o$B7AqIGWmh!sC~DM+!LLsOPO#WiM=W-cqEw-$W)H(#4@j zDr8DH=P~!U&NHA+;T}*LyzMuboR0MMlW4QY{yF$70dTQ$vxDE(UWra9`05#=TeT8$ z>M5LHP0~noIg~#2Q14fs5X2vYVW=%?14x{gv++gWFj)E17uM$>h`D9Ei%|+Jb0mTF zPIc74GNF~$*@hSn9Vbw;2eU`Xc)0wi%4|#E;WF}CWfrGKV&M{33{)!`a?}G)SEp<4 z;&|#TBq8JF1SYo2GtF{pqA7}~EA`+=GH|s;39>lLnaJ0M{O2mL()GO*N;)w?8`HYC zTs@51JZ^z$sNyXlW!!knJYx3~Bd(mT89BM_8CKGK8XBrt0EA#lt(i9@hwfTr9(Xax z$$D+wgHWHvd26mL*Dat*R+GM0;-8=amr-|gEoyPR>u`0{GMq=@vpVc zH9aQ&#p@vSCDZOj=o+1m6Q=yNp+`cJX8PEpf^^qU{cyCGr{dNhPK2-Xr%JHPaF;KE z;DJAEddQ-Bdcl0PJqB4l;(+A@`o!Kccq38zEbB>rl7F4`IFd)0mD@xEW;z<3sKwGD{x}U)-e3Kulya;{@dn8%s*#HoSXlV_+3z%tq?s z*X~@rBSCB3t%`u~rdeyHflqpto~aFp>xzoEXO7=Z|FrZexd zO&u#?t{Vd&V&5;1^`+kRa6M=R-@5C%LPD104tg9h%ibjeOL0h7xN#PPG`o{snXJIR zty3v>2?X5q2>spcaSYT}Tya}(O{p!(%)`#*bg6$!%u)^Qw;YP`xv%fw{v(818Kx;ym1 zS+9U7lt%P5L{;`6#aa|h4UD$ehw zGs2vQq`{5{)pr(i1g9jI=zSnbL#$zgUB)-b+%I~^ayB(WF`v6u{>b%a#NHyYF+Gx?ime$xc0sp6d7n2$ku`zN5D#02 z8e16m%^7(Wi=YNet76F?-^_f`j~6eO#jQctEOfk)$7}`{H-LB^ z3_L$b;R!G_#%;Tr+eh3&?Dh*nnFqpulg*D$=b-5x$HEd>!#zk{oY9cpUZ44@-7~%bDXiLm42ugiQPw#2HBtqBYg z*+PA92_J5_n|iO@NYmTNNU{$Rt8xxCV?TFZZ(~jmhV4*71K9YpgeK9j1v z;Dj}}m?jHt2)B8fwQ`4!NRdx`Tvb)Lwas#k_*3{TSzUO>T|PS?-UF?tx|X%M(p4;aE(sW|EE3JG1i46D*!tr#A{!m&qHuj3A+5=ZsY*FBvSa6) zQJbt>$UOy}XXiTxCjLrE-pL0IhCxm}GqAzJ5je}tp!TMD!w3WG&A` zd49}2Hx+svdAofG41rAzQ&}DE(%pxanTcRFWe$k*9cS%FSBhAHImJ}poP=NydOeXC zhq*b>Xv395xB@gmKR#m7*r-%mGFEeJTkB7k;E~k8CjF;<4duYvq5Y4*y-z_NCg@BY zor3D$T}QuFr62Ukihsir8g_V_7?Gm4NEO6g{V9KTJsXJ)OTTc|;_epI%;wA-0nx79 zAe%cj=d_EDlJSb>Pt$~q(qA1hgt*kR3n)wM%DG*Oghmg-?N_2LqP-!ME@7Ry35oA`3rA_tM zpzI{}my!Pkdbj}B*S%!BN|k9XC%o($pYHTgbF)qq1--Inosh<-W>7OZRCt)c6sEiJ z8ews-LWPI(g{zdSWwJ-7<9I6z>S>Tm*7012#>@@&im}7Noght=zX#M$o11>>W*@h{ zb1qMpeZ0OkSIg>vl85t47N0ku@cc*zrve08n-+_=s?IU4#|1`y+EOo&L=B4*{K-Gh z;p*LSf+98h=CsM%DmcT#%V_Gz1pfk>VxD2+^ZT$~tBG-{ab7Svx?bctex=oW@~H6wJB*Q;h65w$13_>ru$MY%C9Ku;PS1?b<|5M{m?*N>ya~gRH&9pEwcgQZH+em zSKbCMKTWe$GdTH@mMfSr9Jb2`=IuSgWkk>^*&O+L_gW{nn>Ey4}_dCDNC(a2zO@kG9P+Wu0 zEe~`fduc5o78U+L{)Z@6O?h1|DH5$i_JPbY1qAB>)R(e#vx{F{=vebw>qSW@QpP;A zeOC3&rl8#`6Y=v$84w^Up87ob0}9tAna{coc#}hX?Jw7T>_RdC-O`#bg;#agbWMvU z_a)+36MgvD6*VkzopM}0F2RGo<|a%)LMitsE6+7rcYGnE8eR|vJVa%5;3Qe^==@wL z#*8~Zp!IhPPB}-1qW06uZgme7$ICw08m@eJHe!Fba)6m@-kg*4wT(Hlf$&q9;jlTq z35&qTSHaH1PDQcvX|2?rxU&ovdBXK>A82_U3140&FDP<5H{SV0Fd@kmQ{YcZ&N7VKQ@zPvl>fn{hA`k|_l@;2T)HzYIv=R zwm&Qfjhr*hZK8N|VIrqX}u1bYEqNf zTy0V6rPN$;)amXg`F-=IgkNSClPxt;aO+c5i=ss=W@a>qtAFHvOqEM{W1{m|>s}DQ z@o7h7634iRvyYUK4y60c1^Ek+m^=S%H zXtDL$WV+e_!>Nl~EXGxq;1~HAQcctbuq-ADjR_dmu*096sZiDh9oqOI00Lp<1|ywV zn9sw|Z}}3Y`OC0~y z%dMU`Qwf>WZ-@(*1S}j7RNhtBWAA}!gf*+%@Op1Z?4Dbh(h;&I-t|}axeL|!^Kv@h z^3fmHf$<21XZ?UIM*D;2lSI;*LW?}N^fbb(8jao*{eN!FM8g4{Rfz6XDMI#J3}qLT znz?zY^zWT1N5L0H-n?w(HYihz=)_Ogv8o=JIA8&F#D&DI-sw?muNOr(56!qk&OUbk z6G7EYtD^W6VeY`Ifi?Mp8E?LAsST(}*{(&r||r zQcA~dm(hNPtYIH~_)kyCD-kO=cy1;xf3P?;u2KlGbAFg3(up&@QH|O)Ith=W1!7g6PO7>uswpe=!OR> zv;2?h?fSDGyvYP~1HlTnE6fwv0gDxfJKf0$Sf?n&;SpF#7Q_c4ycpdRBR04N&34vRN9J z-8ROg4+OF|V|K$=H5O2v{D(d|R{{8(nOlg|){lfNX`QzGsAvr&*8x^~olfdeWKMQm zA53>wALk_6pQ1)&<&_MiJQuD4Jc`f~g%ukglqQE-Am-X#`3oEHUF!sC%ZB_p^OEf% zJ{Ykdn;Eyotu1A_vkU%JxWnl7e?Gw;jVRyeVzjDSjE`!h>BegTh=)H0L0#<5uf~BT zHZo{wA%Q#Nww;a*Ld3AktpiTmZ^&~_e|dBqARmyzj0n{2m0I^%js@;}9L|~Yt%S&mp2D@p>uWBaG zBzyV{M(`YInddNwNA=`%^z){gIVS6{a*a*;r2A0lV<)pzj*Pt)*Oajb2LJYh!XrXM z6*{DaA+A`aFh@&{CYT553>b)v>~Tg0@=pfROZgYi zxK?g6CZ-43*cPz+{Fh?{cX+30YEM-1*~paxA2Equ?gKM<=x^OebK2>Azc|&K9H~2?oNPrY;G-k%)3i=R#8{lcK z{nVl4l5t$J6r7j&WYowQu?hLPc|DdvCfZ>iP}hiq#%d9}7m5T-q;DQCqf;Ol3UCgn zxB|dd!F`j~=6m&6Gv$iaCK@fc->#U!8u-g?T?2)@29>r1i_Z}o(F_`pO^hK$mr;GL zQlhuOVY;^H#4{&0#9iV9)B!3|aRbQ($!tNwfj5LU5ByaEiak zVN`VqYLch)g7QQq9KdfK>d1;|r3hUL-Puca%$1yD7DGV&vxRGWK>h))fdU2D&sU^f zyRf(R>p%rrElkTn@Zs+J3mVKg5VGfR#A8jZxsssJ6s&RDHcr|oJr~*0=}no!7rtdM zs8D9(AKWRWOB*K4cSdA-l2Mo9(vPu{gvrYH-Uz%mY{Zwb2iMm_*l^4abp`kz(-L;- z<71{Obm+N!B5lxhd9Wjw1@egWFguPEG>xF_mu`jUq_+d?0}zO7jGjhmu>5c($SG3p zW%{;eacF57T1>s4)AFEUYWEiit;A>W?)Hk(>^I$Qjxxt@RYp-oKl%#Dp;%8B=?1LY zDk0*qg3wG^3E9BN#c#OqEEiJ_7m1@%S{J*i^}^rgQt_64b@Y{o>444DPu7ywxG8?V z7%)4=WM*UotMUE<4$u7Imk=FQELy+%>#394#0OHpVx^07z*VM^-)#&*;==VM;qx97 zNZ`S7V=(hptc5EG5!&Y=6iA}xBM?_^z#$##8hTVDIvWDI*8|E7Z#|k^sU}Kt$zic! zVYe{p^vB4k*_cz3gs&w@_SiAAx_MJitOrMd!Q0U};uC*<_!x>hpOxJ}B{GQwM3ute z96fA|gj1%do$?PUh+vS6tz{9DkVik_=gcTH(3W0ONJ(lI5^Df30%MO8KgG~07|6gH zijyG|SqNRPhX93cykcq*Xk?5`GLnhOFV%7&EjMC|g7giA4dW#gE{?ml^Ve0)Eq0wq%*| zxarlnUGuW{O>^(}7g544K`JaVA?XV3C$v}IunuNX#yxTUGhezh&<$MY=9*ip(Z9bv3ft7#>&bS>6wb$YsAl}!(1E)L zmWNT5TS)7qi@zQIkR{CswAp0NWv0$rgwn_;K7`-`P6RjDH02+9sh5(Rs3n;osQ#<5 zG;dmsBGeu5FWX@;_1pqmM2s@~XtqSV+ONrOtnoa5C zOeeG?k zVn25>qsr9HPDpRLl)Orl9+X*qL$OkoM6WZGF^ir3@37)wC5o+o0Ea1yNvBc9JY%ong3hv;=9`sXSS%7npZMAN~PH z?Yb|L%o{0z;;B%y84tu{2L9@@Nf;6m-^J6rE&zrFH@v8AJEM^7zvCcGfka@o)7s~+ zqZv_-Bk;#?A#A%Ak!1X~nw#s-M6x#h(^B;w;$T?`mpUs4%f!^N<+;hdD%5%JV!K-P zaoZDXr)K~`bVu(7`cmJ8X+SZ18H*AGDF_VKsMoF=nb*e3QaAE)p5)WW;%lNQ1mLs! zow@Quw$=D3TAQ9mZQ%6p9;za`q3QMos9%>JXW0ua&Z<0HF+{a?leIWzq%UT(tSnxG z>?$8=Fk7N$dlIN`VyOvLiftZ(bLN?0yz>VD3|$UUEWLvQGyz0NC(a3oB)I#*%rV!W zi-g5#uEiKaE@dBtz)I&>H2C}otnJuE)ZI4lWmfy2kI*U+BB@7Fbp}8Bk%c2-5L4wS zk_5rDN5NU2?SUiP;I!#*Mt!7!dO|mVP=w&i|$;n;_RYq&Dg} z(h=1F?idvd(TdQ+Ntz>|=P{`fz2v2X-SohsOw4X#nQks{pU;$&jj{N7#wx$V!&s}BsppkgT`4_3 z%SXWxe6HYPtylnl&n0qat}Zoqv95^h#c=)P8Rw1LiLbY^j1L2GIGjmqGm*Z_0&x!Uz3>k{Op-NRxoHMbll%Y!Lg z29y^uPa@}{=DtERp4!pddOq+04f3atW2VX$AgR^C8jk zYjA}g$e=%AM~z7f`s8Pxi{^GTyA|Qu<2Xo(QgMf(7>}2jFpxMi`q%C8n+)m*4MD|0 zfH>e=OMD$fa2uMfVh!+Z)`5I%^n=5$$~=Z;F@m<$BvzGkUIERi$8VFL8zQ9X-=7H` zY-t0DkSsV&Q@D#;FxHucg2 zg#z9RfoAc5)Oq+ISEs9u6o$oH(KK{%AATM#B();zD4iM`6c&np52>G6M{1IzL|U1C zv&^g)?4qpcfE6D$^BT|9cZ5h7>+QoqtXj`Z0|6RU*)dNnL3(>dgp`toP?>j98JO)} zf||`_5Y?ys7N5otp8V5(m4Z05wxBQ79mtDI|GBC47*T~6vz8F<=Fg(OdeykY8su6~ zLw+c&?|{m)gTAy}^a`w!I7CWHjMnZ78j$10uOOo3l~Ct|m~Du>1nsIF+2Vp0yfIOl zAX{HBuoaa5D}O_XT{yqCLm8T z4Xfr61NzjK(uQPGy+#Id`Pv0TmmlYU25g2 zv~BBjb{;9Quy1CK!ggkYL7WI>Wk`P^p9fcQUY0WsqfxtpvQ!L*i7Z_8pfB-O!7|+4 z3#|s3A-U{wA3Z^x_HYc%rd-M+kQDLgi*E|Ks0!6KvaMRk6lO`1VHe#53kNA3gK$Ul z&fp26nt<=gLK(a4A05tg;bmZf;*jqpJLte-#@3L*fY`q7+(ySvB)AdaIIGW_E0<$z z^Ghc#be4Bs*WSAyA6rF>&2igc31%)- zbExSDyS)2*7~Qs=E9<0)^o1r9sZECh|0taxnKOHxvEZMk$azHQ)nq1etzPG#U55}^ z);75_vm2RQMvG*ifb&#k-u^=k)F$5=!YPE)K-ZA@^hp!&JQsOYNl@gBYa}{Mc{8q+ zC^LB~`t#5Q$-jOw_gFh6bek2IRzZEqeqbx*jneLStt1A{i_Mv%#_#TPLBqW;sLs9d zz9JEv06VN#4$(tZFEhlOlJWo<;NNzhQt%4Ct6iq5VU&>)wejD8C}hS9+k*4+-C?K$GS zzcR&TjvS^2`f=DQ^3sH7_tG$isZD@fsGzzih~7}MPt=#5 z$7xTxA)(-8iE}T*vMv+2sm{{D5xms?LXemwUKG^2jfiV_y$klfjn=FO-l+5MlR~m` zOim%#Mxkn^11rzBUIS+uWouux1WWcgBd=XmVBak9~Y6%rs%(?ACt?$Vy}e?tH{(;sA@i9{Smy4+==K`mK8(K>bgYg zkTG7k13EB-w3A|xSwwQ31h=FR(YgRu)D#F@#vM5MV%JqsCvKq}5I$nQl8tY6d|u3L1o)o3fY75* z1XWbhXbrSSbbk zKNcV(wf|^Z&_U5EI2u_gT|2<;)w^Q&xix$SlX0-pP7KZwk z|1vE8C*wlzZ=h;32MgN&4!dx$)N?TX7kOc0ZA9znVngd_YHwsjYi#3WPit)EY((qu zJrv5p$oU({FfubSb)>a6`>yyeAH%`O%IsfDMs`kmmbCxZ%MhUzrTuGWNc<-?Lyq>} z-3(<~m2W#kjaHpj-(Jta!pQL-nd9G<|8-pd71l7P{U2xzS|cmN@8kK8!p1+~!+*Tq z|GHtmFF2G2Gut=s@U2SxO>B(+)u#A=S{45$R(yv-{`Vilw}`>W#{N(GW+T4y|H=98 z>+k$;&i^+3t^YTDD;fVx|Mtbo{GI67zN4@Ijb+b-$HGRB$MPMo{ci;Lzh#Upe-(^x zpX0j)%Xe&d_V0W7pEiHjzw7?ZXJ!1?@%_`s-~PT6Jsrb$!N0Ard{Y|#+VH=oe>eQk zPJf>iCZ_KI@c%Yvr2FpZ?*VAY`gcEnm;au;e@^7Tl{0_mGqN*$C#HX$n(sD$ z^ZxF{-}&G4x9`8Z^4;YB>KuQc`+t8H|6S*xXZue&2O}Nx_k;D{>KsgTY^?ulokK}e zQzzjHws#|oZ||}f^78U>x`h)2qRMX@hpDB#UC{P#mi_D3_;|wj_`#cY*3`*m#7Cu8 z`Kd~ydG#hTQ8)#RK+)qMpPdIM8W^ewDvobxW(^56qi;}Lni_hxzrX;b>At?14XOD) z&^};|twTM~fZt#)^mI(f2NFCZI2S12z-I5<$n1I_C?B=JT?`T_-!SU2p_#rRcr2rR zEx@Y3ek%G3fa19{l^;!ZB*3@N;d{$VnF%<`XOf$MHJ$h)I|x+Q+-w(!4lG?`wU_bZ zxA^GfI8M(CuCanj$XD9|n4>*d7?A9jBnd14(d_)@t}IDXJtS+^fV-%i4Bxv-CIr-X3rM_sinz zJ)@I=boTZPw}If&@S)3qI;sH4&P9Ci0Moz)sbMpdo1hIK0On!vJ>#2@pEtls)ybnNKtfESj&#xy<^R9|KvF%uunX(&C0`!MFsh4l}(d!zsf{|Fqo z(44*_eRI7)rcXlyfKU+XCN{4_1E9LMKpZPy^tQmM=NGvoyFL(#*#o#hNhB{Jd`{vY__EGvyda}A zZy|gu2cHOJ?eDliMk>#&c7An~->sYrzYDA0zYCQ<5lRZnd>{&hFW~(eO1|)8QKNW4 zX1|dQKJ|uA>Gj<6K^YN}MZT0TmXLMJucogjaS&`KDIc(CEacT^ct3%R_cRw{*{mWT zd@_`4+IN${PXSqhyKV%<@;^Ed6pOdCAYtDzu=y!0KLui8)_5T}uv5?fF1~dm5cTiS zf{fU{L-R9ae)jnUKhuIRZyeBql-hql^OvoE*P?jh9fp!WxIyz*bo&g#Q_}wG`|^5+ zgkJOT)YAoSOz=awFYs6N1hVzny?(jMHg`^ruHqw?o9-VUABS{D|Ex`K;qZ$_P4W3S z@SR-z(r1*M7KZ_G2aw)IJGzi|4XB965(xMDb4wzbYuXz$fn~67(Qdr@0|-sO*9uC+ z@Tb|5Ia7|r99`^F?qle;2a-v++L1IkF!h0LAb+^|xDN9)+mQ~*R6V=T<$^7C1so%% zj%92kv)qePv?LON)ZqR2)q>9Ue^`45C`qEI&$I06vTd7Pwr$(CZM(~MRhMmd*>;xg zE_18ro7wqxXJ&Oa^SpRBZp2f*h?6H@#_#^86^qeTx571vfX|m5f1k@C?CmU~$~P*) z!q*g-kSL1DI@11lL+v<=%S421=R!KMMuXW9Y4x!L97TPmKxW~6nE^dofZ$=B#t=Mi zfCF2erU(%Bm3el@B?o48Q+Ka1MKGz^Hg&r zObinZQ(w!YT*#$&9RaomtG0*-9AV^;?LbvP;xX<#yW5HOi541QyVf-nqC^GtAb|>_ zO&a-W2L0;Xp#PjL)l*jw+$_Q4l5%wABhOir*jZ@D`mjP9;s<6bw5S^}&)~V^l>-1P zwDW3%2m&1`#viwXCHY)LJY1MHnYy&kr2Oz@+*))u)taLPlNyU$xFqiVrQCq{9q%Kg@%HUeGGyhu;-av zPJ>pitVP}Ri8iAMbilj}RVjzQMRqhaY2zDg-qvm&K~%~qzB zdU=Y)9FpkS7nZM&X93$d`UWpK@%=Zz?~dZ>zn@g{YmHsgg#lf`PH~lgA6*7@Xfg@s zgUk8moV=an=wB`OUtK0v7q%+F&ruR@@WZzt{lf!(yv0%*R^$mrSj0mhSzpU>zFR^x zvAN$5^l;JajJB1Em@=uoV#M2$*3FXU!7%JDN;0#Ob)csw2+Pc3$gtiA*t| zSeqmHggHtM?L?;WMGHTnQRLPNT%oR?n3wVC$n}Kb!CO@d9a0Pg=+kkTYg-SXn%39) z9{8i``h>a7QEfoO$edcFtip@fPE9awp${y$dT<5h>3307_u1NOAk6 z-{V)FN`9P|uqR8oF62+&WuD^-D4xyo55p1}%TMWWRpZl&m;{DULSUNHbM^M*wKgA! z$H%9LK0JwXn;RI7?Lk>x6m;RQy-OR-42tW^5%2aE69>U)wI+|< z5>X6u#qAmBn(u33V_@rLu5H@p$Rl$1y5qDRr)+QlrU89HTG0GYzm3P5jp!wx=z%Ko zv|VO4#1U}1THd7|MXM_fwZs{2cO}rS-Q#k56zmol+i1W!E6h*BWlFA^!lmX@}m!I9$O-H&1!f8%KKsI zUg|b|@%cy_44b97+p5Fu0lh$yO&shtvJqVQoBOZA%k&tvD|Lp)1#u|*;o`~^*bUh` z_=na;f>n%yD6vY!HkpeQWiozOepW#rWdv}ZA_S_5rIDfNZ}n{X+>r>D#k0M7R;79f zv?x?T&XFE6TFyWKU*86e5((;2PZ9~v#g7fRKv<#H>(D0k0cc4&UE$_#In(^d!K+9) zwck2_@2h+`Z^(FkD+Fxxam_}paux;jbScFGBJ2b3tkDc3J6=~e#J``I)yq+%j{#m| zE}-nd+*V`4cC?&mRwJfq&Psu-mI}Z5-2ON8TB_RJ&8fL=?jN=G z?ZT+>BcoXOenhg@^N034&!Hl}(z2&XwqiA7UyOMFt3R6r$5P(`_ooB-OC@aiOk1L< zsS>Iiyqifq?gcwdVt+|aJi|1i5VezRz>)0Zq%bL7w)QbodexUwuNfbJ@^{r2wmKQ1 z8GJP1?Zt1isPIptd92&~5qhUp6YP<6qGGaA72Eqw*&$fPOa-LOX%~$aLLeNZJ|Rh# z>Cd$Mq&6C{ ztcDx#s(UMC_k*s3fOlGnGa0#E4buRT-#Xq8OLXr=IiJ{w0q2Jg=BJB~rGb%$Vouw5 zjH{K#5a8uKXv3pIcS}Qx{LWHKlLE2V++uZtZmOT+#2o#b4ZQDU-Y`|}OhKcZ_nuvF zPUX~Am%}g#@9&Lc+@y=q#fzebKu}bSPz4?BZrKNmf0usL<*SuNlJ$ipewo*IpCgTF|+-u=gg7wxnnM|Q_iTJEHi3&R+!YI=|O}O zn;SBbfTKL9uZ3Q5K!37&{0*$BcYz7eY=ekt_SCRVkM(A#(Y{tP$z$QI#(X$E1^pl? zrdighLG@1gTWT!>TWC=;c{ST7hehX0vEt6B#L-MR9Ud(<;gIaLP93YfBX zGGkF*MHHCbW(8*&;iqS^ASEYsZ1^+Lw5N3J7;$(aSzfO~K1qUbPUL~<_2}?5A2KgU zT5!^rlz#Y{lTr5ZZcLUdBZ8+K>+^Qe2rg`_`ast?nJyQ0vJo~ytps+&NRp4L>NYeC%r5#o;0ZJU?O3`NgSBm1b@L1V9? z5%j>SfgPH-?FlEcAN&EwA)Ip(fLESK=6}IOf@@Vj8)O-Wx%NsP%u(CCk^RKZF*~6@Qhw=*|CA7)e^~MwcO{! zgl_nRC=QLOW{w&&9K6Y4^v)_Pl}}SZH5g{QhdC)J@o{% zVM~zH{mU8*HRSMx2}fc1sQVmGeil7%h4>fz-Z`L$6l)foNuB!}FYv*?O6EOgBo(M- zziPT&Co4^y^y8S+{c4dieh4i35(+|Vln5*+0ZbnKIK%4~5Dqt2y!Z{A8TqebQ5pF; z3A%R+8?$i~Z8MK*)u?QzA%>!0bf_kpq7a)>>+V-)&-K93!6WpDW1n8V4?O-L=f8f* zDGTo-m85yG`wOM3q(aGU|O%!=(wC$8i5iABW+ zRN!uQ?;vF(OR}Zl`P>B=;GTJoR{pZo_t`pYPpzxZz+91!jFa}5W3tIqRPyJgPn$9L z6I>uvoNS=7v@`G%sg~PAL(jhtpu=^P(X(qJ9-=bl@|WmMW1S_drct>kc*V3 zJZ`YeIAp9l+Y8fLZ@b4?!GC`i0HSlz`@D=CqE`_DO|Q8j<8rnjvjq7xEb&F%yqCw>tUpab}G*Pkh@s9+nH##x)Zj9doeV7qyO#g_5kJw zayr4FE3#)k^?@^t(_I;Iq2JpuWE=&1*%Lg|5-kryjnFcV7pCLGsBsNz&___FX*L_(ehr7(*gw>&a$meDZg{4lyMiXp6GMK0Fdy za=BX9cn9(X8y_+DIa=iuMkHVi~F`X`@>SL!6 z8%ncva8&{dVN)US&DR$INkiP<0h3?eH1_+#L%)?${lj$tnplo0*^{hlR7r-~W$fcu zLIt>7i|R7s=M^nh-jH!P(I|9g?FTc)EQ3Pj5(DHra1zh{d4!(GUzdB-01#mJVV7*7 z)16&B#Kw;Tj;%*ydOV;);otN9vfSk-3rxDp+D*k;Xw7Rl{EuXG_8$>7U3RySnKU>X zVu7-WrB_Y>gTUF#Mm$)Uj)BGgI8=0b=?3hfVa%P5?!q7zEATMu0pPjo*jk+vo=ZC> zro#@1S_K7wr}Adta!H~(-@f6I*o*}rX5vkUQ{fFB`@uV`8M#I@K&~g@skB1lJl3-OKu6L$J1Ffm1 z<%xyl7($YaPo;i5_3Tw^77N5suUH=Njlgk!!GqU``wO!QXBtb~5hR?}_Pbigxa#lI zp?EKQH_@+C>%oR1d!{(@jPlnU=M2ISu8oQT%d^hfhy6bv>|sBS5sJ{Uafi-9xw`;) zTYL$>gvCQ8rZO$!)6F{uCLdWZK&l*t3lIRL}hz>TiEF=I|5n#t9 z9m|E@DH(6QPp?BuDps4t+t*x%qOB)gDYW%yRcxbgNer54E$R!J(dxCjWO+<`49YRs zQ{#&9kr9{zp-$K_Tn+JT%Ue&Y_5VywOM(HCrC_bu#j`!PA6wf$M~O5evq(q144JKJ zkk;c@x7wSe8cp6k|G3*o2YFxLm_Eill*A;Z6uq(Q^QtXX^g}cSxbyFMQPp?FZES2@ zviML&H^K&rp-lsYbNz<3*&f3UmNII`5QK6?cGy7LsZ_;YH5 z4I@-iAj2!m#uD+@8VKdmE&a4DHFno!wN@`|0k#=r1@sFSSu*{0oYSx{2HTZp|FrCW zkNye4_fI@qk=M&go2Nl$^GCZB(mA1A{3;5 z7vi$eL2;+66o){JzNclQoDfxspwrY{!c%?~e0#Z^nGbiptg81GJ3@M(?NoS?+ooYm zCqtNu{&OBzXh#NF$(LsWXUmZK#19h40_61wsV20p+;l>lAH7%v?3r_OYjkufrV@V6 zS)>l&Qv+x#Vn9km9f2~Tt-j)8?^6qt%@esKquVvG8rphw6x!A$H~ni&&|8QM0URcO zqkPMe>h3%~8dd2|$xE@FLJa@T*3mKS@Veqozv(|EU+XB+-jLo`T zC&Y*Xc1>{4n$ti%K$B3fPb(A={7Bt@e!y|SzKoCIcA2-)1jg_nhI8NWUdOa8r+{+) zM(Y}XSIDO{dvU&M;}np?wfs|-zsAQuR+UUt-4dIG?5@55=8b5P3QN3nwzY6KV0Xt? zB2UVeaQJcbBNYnRo}4&lngW)=Lgptoh@6UL%nttYU+A{&=03hjPH;a}iSTaeul81p zz$>=D$)xj0xIK^RYUzTlY7PUHJsr zO&G9H(qf(&E1~0MYliU%Z1Rj!@?>BI!Xw2$v?GRq)E7zRkcq6-&I|@2S7+Gprirg4 z7wGVuqLuT6;gT7do;wX;Vfy)pFC)p4evEP9&V2+yWhqIy%6pJr)TyXNPLN00mrMkt z5Z@uG3k(M>vzwQBk#G?RF0o?oWxA5h&(38>HaX~HvV^IK@7-$8s1LGr+;Dm-HlAGf z;IZ5$+j_#H_HPmY!N$x9Ev3F%6wBh?;q4geRZf+z_HhX%E~{0f2J8MrY;xN_=dT9V zU0#+4qac?p>JHZ=`SaxAsVO0e@9FnITj;CD#;N8FpE@#&BTa@&e$pz|_v;TwVk84U zfHvm!U9*V)Ypx~RSl7Mc&RxSX&X8!tkRZOV{1e?7sTjEJwm^9*D{;!_J}Ifk{yt7- zDV%1qTRJH?kjHm=0rtPf^FMCN90wx<~q)fJ6OBIJU++iT*B?eH(V^D3^nHvq0 zvZwJb`CbrM-_q-wBq^CmiOl}dn_x&OJ$YCaZz5T69(;=)9)@5_sr0-pN7V=#Rek19 zXB0YH@8FYPU&2Tg_Wg{L?a9Eq^y_ezw)nA|enNe=2lpl3f>PsdmXzb5{8bD6UvLxT zKo->zTd5*Hqw*H-kHD29zFRtGIutB^u*CTTqiD}?(;nW|c#Y4KvwBmB9(#h{Xk(O$ z$4|J&KXY@`)z5;L`@(lKj5t_Y)c1PmtE-P$II64T7c$%Nq?E>33D|m@X4yI<$a%{$ zrKggbbXb4yZ&vKC@6hYR?N4Rf_j_yn04arF&--XvE^=P)NJ%`#H(YeRH;YmbNAi1x zdVO22T@QU}{@cEHY(_Z#rkL^C-3MLgdDC&BBD^9aMw=2NL)4!MRGo@AA9!ibJ&=H= z9C(yI*qH>YW;%ics6m6L7mwECuO^Y40vaD}PiIqi{v9VW%R)Wfr~;Q6dl!uC`b>2T zu;`nAh2r8qZzQYN@pouqpuWm*&F}FIVWixc|3Vv&$2N0DHyU6M(H(dQO?0n^e@{)0 zGWjyL60d2ch*NM#Wv>SmZ>oAtLlqS)VJ@HNA9rwa{~i20gN%xOdwz05?Px}tlB9512(^`I&VFL#;6 zVt;y)xa1n%EjJD4XX5w_+@36sk2vikGCl^|^|d8M^U>J#uE&JEtzxVjO0WO9S4l?O z`W{_vFTPbU29z9V>-@<1Azw?M64;rv?-vfg8PLjE<=1*r{RwKKj!yU#OrHX2smNZ6 z;YcyqkKpWHI8-Ncea_sNB4aEb?o zKQuZm#z<$RPwAr^m;cJZk^1ruWsOF^O4`XlNl3KAd{#h6I|oDtf{W9T;89u0#m~j2 z_ZDjUT&4n`88Qa=LkqLb*;dmiaMF+Am$FVH_4L4H;P0)KKcMtc#oF-q{#U*Xc1ry z2ZClPo4m?5<5sDQE+$dd_!@=5uh{Y14m9bPSh(q;uH~hwrd7j~yr0{cEqB9uPu?`5 zVWJmgeAXgmhIah{cHGftpPZYqNU{(i-#fkOv{1-V1Y2XcISp`~F;B4%n>qmsPhbgL zTB^-VYAM8CWHAduw#jAyshaeVEXNDgX-sf!%4n#^Abw^UN%cIz=EJOEJFX*meGz1U zU~b7nApG%Y5W>-XpPuSq$Frd8x6G~e?|FRm>xl~ety7Gj;&(9(?I}6eXC!aG511Y_ z!|tpQhnTor;SuX~5D5BZD5MD{jh(?X@YWBDIW!QU0k|4(4#M}TA7AUydqlne zd#}GV(1eO+!G*M37&aV+qGMj4Hjf3`)r5?zg+bbR+)A+jD!Z**FjPi6HU4P!X8;)& zlj3MT6MFYt6pkJ%kN5kBiHEwMTrM;j1$YZ4$SP&1bKY9oUbFf5h^G2R*B@LdWBf3- z$?XtiJMKuf(jc1WlOvTgs*>GNQJHJ?zhq$rqOAnP7Gu9BG#5b=3-%VY9RZ`ci0q@| zapV{rbGDA7Xn6SwTndD~ueaDB+GBp_6*;5BQWJZwta8rLBghc(nQQzyLv!FA#7hAT z!DvVeZ?8!%Cd_X7t86;6=SWVhX{*)ix2kFpiWzvUvz(#&_h$%axfpjw+XS!nJpJQp zv?Ev!i!g<>r>t!4xBS6NviB*v&h-9OWeUpcxRfIPVy4VmyU4~i|NhXHh zVnvj6KBktiu%$a0j12|bN~lLTkehDBhn$vWOG85Ff> z@Bm)@I9SXwfwi%^FRuR;N8kJ&h{k$CL7JrtY3plBMQQwttggeqP4I7NGiLUWU{u5S*QR#*_HIO#(?N`*H=R1m2heR{r|ufzV8FIR$i`KS2bqxtLiU*1+Ph(- zis~VpUzhZna@`3);BZ;mQhA^y;wNY9zzjz~5kvf;pRm zte)<5uGl2|(`rY=43?a*fJSW=4AOaUY2Du2EMQp6b(bEr%g2TMBsEld-3*qB>im&{ z3glx^B1tcgUq+L2FfS6l-hfuRxp~ebdhxmG^V6)rkxaK<=S_)zm5gPlPj$On?nyGR z8d0tt{;EWe-MwzgMJwCBbggBX_oBjErM?}9R@^7rwb(R~PM+qV;HSd`3imc5tu;$y z7MXC+tGI5hGqN|!_)hAj*A}9GRcrC6`X!mQLGGA5wYQGtJ?8&yU5jW-5?eA@J>_%0NGA3 zcxtdG`atmP3bONo)ljCoWyzn4*60&_4vd2(N};s6^%itnBgi3zJ^>F>KbgA2kMNw``e(ib}cx)cKpC@Yea6e*cpM+CF9)n9%w=E?d(3 z=ZdrGZJ3?#GLb69lX?`OgEdiM_zw})!?tJ(o#s4Xd$4KY;_b2orOoRI6Lnnay$!z0 z1!4(9wL5l@jEN$6$mR|`4*;Fw;mND0`y6E^n`*mn<2C4J`97gHON$Oq-<=Z2v-$&xoZfU+ zJ*C?#g7Y$AkK~2r$XapE-YvYG><9+O1R0d!kuD`sBt*Cr@z)V(K^kauy9q_|>`Gm8 zk{Gfn3f5^lJ31~)5Qh=#7X5+L(NjX7Fd}y98t3iCsZvk<6wf?E%k)W7W_|O#zfc*6 z0W5_~CG0M-0Mnv8`=6vvhCfq>yOudZb7l6Vg_EVy&jq@F?!cX{h=Ko(Xu-{oo`Q%v zuIvWpABUAaG1UqN70*Q2pO~DwELRwLE>|t&BZE)OBkse2oQd?qy((!2Qiwv&{v6PD z-TZu6?dAn`-8Qk0CA^faD&erZUmBnYEpzT}ujy$o$BC%RTKLwQA8Zml28<~$Rq$NW zv(4Y;n8rBInUgMOs!1@nI07U{!KVb9{#;^XVXRcH`6rZ{<&31sCEzbeJB~n6X^RhZ z{}vV|>J5FO|1`^C>Pu_}i~W7@mU4p8--7WmTIq3w?|s9TyGNJWDJLkYXMhOE72P04 zDjYe9{te%S%6l3(ef-%3FTDDzM z@sC%}J#hvOn7CL>S=xGhu%h5`9d!q*B(IE1w~0``SN+bz%cCt+P4uCdd#d zxcz2BI%Kj$U{mK-%Uy@V*uKH*P2k|1rN%CPv@vB!>`5ZS5P+l$vO6>&!O!ci@0Uj% zM^w8{_{-WEVIfxfv|581Gtj83y80F_R5x3s=XMpRB8g-|WpL9T=0!So%#dpHIl5Ba zE*iR6yp~E=L|4mJvD5fC0mTFR0Id@YGU*j33}AzIASaFGWdrAQq?ysFD)!DE@p7Vt z0#zjK(=FBmZ~wH3*5?5QJQKGLN|MoWqt1B9SQM%C==Sor4`Lx=d-ATNg8ABhi%q*K zrW{o2c>pIF?M?|v?t+-SI2^F*BC4m+vy^*_3q%)K>Bg3&GyA&22yzRMt-3P ztXGQ&JT*0N4h^&6LNP(w(9s@)X*7087GW{;TDH(M3ROybgguIr&^;18eDKW;6U9EM z<8cggmg@*=Y-*c%;T*c`Ae**?(YZcbD+iOg-|uHl$VrZAi6lb6ptf~Ht=Ltz^t36N z&uYK0Qa^Yj+?U z%%L;UsffOmnj`3JKmo!_yZtX)e2;V|Q%(K6A5$OHfm=G5r_m1??He9$2(g^38hX53 zciZ)Y-pc5P_WI){tnO`!GWQ_QS*Os;g_VaeepIm>VGv|0G)fED+d;Y*2F!i@E+TE= z+9N2aKUw-7>qVtC&gnL(ud@pqNOU#oFrcNML{M#@^lNDH30@KBa@hd*4b^|?)|IW* zWWtPo+;)O^;&-;h5^gm{3D{h9RB@08unLlEV{t{?7muBj{Z0Okei$~)3$YNjI$&HG zJa24j;;4KuD04SKF9&@({UG8&x5wOm(-QE8ttQP`&^YR36nyrKJ-ac7N9cbrq8Y)> zRz6*`ABLT;+#T_fSYVqhGbm|JQprtx58^Q*M6$a#wXi?Q71EHFW}{OHI(M=RwQDJ2 zc%y|2jyE^$=-%H!(MGddl^i%q?`^EbC9kx_dzix|034u1pai32BD;rG9$n%4vsOJh zG&_eU-*E&$bDtDubUUZ~{;|-}J!y*O>HY*tVCV;IuKt^z_JM=d?q~vT0&Q)JtKNMd znLb}A*^{PPgcVXrre02}j-t$K3Ma+-1Z-)$`tQ~OFas0YVzNv;xr|SfNac{qN_0sn zhHCf>VdZ6f@<_KwL}dfR4)m6>!4q41Tf6RIC{N<&HV}_~X@Wh}Ejg*A{b`!DmKxtR z3O5YS;iR54lwWQ`gpjO5?>w>(vrZR@Kle(~oZep2AmvJ#HaNgvv`aW%aUMii-LH8X z(ejmY<~AC)GnWPaLv;am&n0~;-GqXqN7X~3J$XnmvNjE4+F*Ss*~RktBFLT3KKHvMypr-3kzHJYQOE@|&XUxU$N2bCQ+Vj$nnO z>)pIKoeEegkw(4T81b(dlc?%AMRIxzxr>|-ykt7W*~i{edqAOM3+gZF;mRPdHs`HV*O8z#2K23vz!FgOp3iDk{GBch^= zPDMvSQ8T0+BRY0!tL~h8pYt1c`Wxn*0mR2<=5m97>Z7hkZ{w2+lPGKNUl`BTa=XVB zhETU_CG0Yb)EvX(2=33P##JZbU(m>VKx}Mr4;=5z z@Nj5&(;sE*WU=MGP8@ATG_3!^^I1<&de_e{+rxMeN~ABjNcPDC10QL-E?I_VYt&y> z2QE%Yrs7nxxH)-JqNpGXoDu2grMc}iH(qV6H+h<zAz+c+p6A7(yQBRNDa*QxY)HF?Pt1gqyXC(f@r%#zi7zQ$gZQ*U!f?> zJs6pg*M`p|ln6~0%D9vD<@Sy8#eq4xO)Jry(xInY)^NjfFtwBKCKVdh^W;PV?)wn} z>q?*wdxt37V%EgjStFVLKo6l5;8@)_1<4jKc=drjxzmc3HdBTpBvNO`PZb3#*&y>F zJ0*mUUfBfNEM>szS&JiAEbL}o{vP(s`9nD!s`6Q)g0!V&Qj`>(UG`FJP!uAV+kl69ok@8ziXPoS6bIp=5aNC#`s*0Vn% zR-A%NEg_mXXIkBYSi^u!NH2zgt^uVl9WyMH4{1B9DFKpm;jmvyj6Vvi)4Vs0Tv zIdsx8!G7*vM^ZisOEq|aO$Bkiz*sri!laMkD3{34#or)lomd*eGwq;L0d~8%zQ3g% zfR-C`>w&3PL<)_{+{=-v9q{Z(=B_>HptBA9*~8gT^_R6ySNUjCEH;bZH8gvLquUPJ zNtIctXK8@ljb0m>X>}fu7>5tL+78M%r2c5;{mCh$K%}PgUbQ;j zC??i$R$}&ygYRp8Cwm6!HP?{%Yg+c%08^t#OMSd&-zOx7$%_3n(~YRxr< zJOZf-1&z=Z7fe&t#|-nTNzaJjL9=v~RkJ34(CP3zqn2XuvF6k8F7y#1{R;gT{j!5V zL3_U*kI(*lib8L3^bcTCrnH)`8m*rjD&gWwH0?B)FhjQ$R7w?=<#&ayzkvMcd z%tz|VtViMSM=rbO3g}UIj^;McxLZ@PrTmqT^&st>5%MsIRIUEoDAp2L zj*D36{G1Z4Loj9Pi=|b~xvg^j@GLV;I7`mV5r$K)rL{hG3VWtXcmN8FAI?S8h=p;= z8<23n)x2;ItUO8sR*E6eS_c-!5#2kPerA3)=TU8kE0EBpZSufgS{;uaZx072V0^7CZK;%U^Rc z>@HEJw?|_Pl@*eqdT*Z>Hsv&!dth1FDuM?yo|Rapbp?xj_%m<1D7gFh)^>p-M(j*i zfBnb_;A_dI`TQp7HCt6r$=f_V4g8vA!-e^XgAY2sT7p=SGjUvwo1B^1|BmxKUoN>T z9+8CaPFDsQ0Fhz{Rh`iKbdiu{(&#}+0u%^YE8Z7@VH~c*4NvO!Ih{jzqMR31cHdJ> z_-D5EkTy`E*$bMD$Xjc6{KD7GrFv~z2RfcgRo1e{Rq=C=@@&CJ^h%R~Q^_ALQ3OAQ z0XP@j;)tm_Bj>YskV)3tmZGVqhKYqL5<>%&wpt&eo*?lib6rET50RBL!NqW6V}^fA zZcB=4>x2$)L19jbXtrm1Oi93&?{pbp#}u*_X%E_r`GL3|BIqn4EdJUj68J}*DxFdue zt!W{t6R8}gOl6U{U_ETVomN6)Wbly)uHS3ZZO%4Rix}AiB!%{fOAz>X?p4>+)%7uTven)G?_=6DE_C8`V@T2o&g(+e{~TFSZ?0)}Y;?jWXEW zizA?BGOY+7iou(3F3WYuTq&{Fsya+ok}f|@AVv~Ng=;>z)MYRWjIT7$9@AK;F8PEZ z_X~B6zu$TGUrsp&b8|{E z4lZAt#Uk97YAak7WGvtOhE3#P=0oi^yzwUKUsy>*gv*v@9W+Fyz zVOAtV_hDu4^FPKxWq8)sPdNfLM)I`wNvmFkqIiiIqm))*fuAf*c!qjaBe5yNWovq9 z=t89O9zraYWTVGWD0R-jUebe5>$w@0bG>qvMepKzJ_oPs?7UdEwiZb%W$buItsPPl zDpDZ=3Elq)qU8e@vEUxiO$7$;E-q02re6_QyI`Do%Sv6ubG^Mt7t1A(FBV3HZ*K!Oi4b47?Zue zZ%f6-pxbue3`@%Zkop*-BIIST%Rr!{X>H&B;hl-7bIoWqax=T>LqfD>r=Ll;?&0QU zz2N?nU%DV45!L;t>HXjMyZ@h1UFQFU>i&n?`F|3i7uM8JR}}n4b%iwkXRPi&LhwJc zo8PSCfA8P_N`RgnhC#&C+1S+1g^-Tv=Qk-VW^d;rXJ~6m$nbw^?tcpFGBJG@`QK?> z*8f^wNXXuUP@9g0@xRf!Oy4}_PgeH-wf?*f!~axq{{NE3{V&q<{~tKq|B<`>&sz2W zBX#@#g1P;_A#VQRSxFw zN&ObQ|M?B2vVMcJjNjHba{EoPGBJK{{<%57=bhtQRsLVj`K@pNZ%CZ~{NGIOzbcuS zzH#9HQup`HfAsagZU42+#`g2S6!|A!|F0+;GY28dHv;}|1poH`qnGTA-`?-h{bc(F zdH8y0BV_-zeo7*^?egr+I(Z=gbZRfhAyTerpERrrZ9YbFwQPcriQjK9_yE>sw%kS zEj5lo!ccPgfdURsJ6BhBv7McrknZlVS6BGiJ4riNKgw3t&1(-X{(4+5;I+P$^lGa9 z{j#2}#FmvJEt43uH!%i6t*>`0Hq1BO0fUmFVPpisv^d?Blmx#Fe2p_>Ulw|e6OaP} zg@gnR0E~h4Ngx;)9GVy%7n=uCfJ3dXcC2M(q;r9cf>V8F4ngd+f~;p@ooRy>Kj6s* zs^#N`y`}<*;s~?k7vaza0OpbNZ&qL+13+ehEw15M3q#EffG{(#xIo|n$jz2-T>P<+ zTiIKH>po~~4ou#ziOlo6K}S&oa7~gxfEp}JjBQUL7(uWH7sgftngR$ZzBpt)%$<-Z zq@}TZfA`LRsTO~+RoR=Gojw9kY^rQ>a04HKEOAKkyC3}JRKY(dvRG$FC&$kC#sAK(GFxlei+2I)P$NW^rMqK*qk(kUId!{N_3TOrWJpdsr8cJ1HsVJC(1q zV}P;KtJ!j#lwHf0$%pkFVDctQaH*cd8QfxiVSa%nfIO(@>$Bv8Kx<$*j9tuZIUlrt z0A{web;UgxG6xQ^9*74M$ZT0mKpkin%_Kc;d3_k^8>g*|#OPZc#{aB!3*wS9e|Nvo zAB7TX1dM_SP538d;0u`lwnu1c0mJ70jAMRxzt`{nq=1tuxdx){%?SQ;O~?{3Jv%%u z_2nJ{E?|CUW)0KyiDv{(23Fn3^oqCltzfSK`em5f>$A?e_Jv{qUb6con-2%l8woE! z@tm~^>>|_)ouctfU<7KbaKI5LGUSI+j=t9mT}<(kCE%s>&-nN@nEx4X2=&4D2Yx6L z^1B>?_o)6TV+l0;;#k!1$SLmZzPmZBd)kzY;DJS*Nd< zO0BfUy9JbJXGGm$qEJzid;CGGdE}1O-O&UuBS1U8Jt5YF=EYvAo8qU+2GHF}%%oNfN2-ib*6r4GLI z-G!mabn~T_+-!YT-MR+WrT7TcA|vvc$#^+?OJBdL$^88sBP-Hq+4|i5>4+6`G&}Oh zEP}0phpL(T(g*zJC&S|EExKtJjX#Ns*T4sKttEgtCH=}OO^#9A*2)2UBJ0(F+jwRHvc zw%(1Vd2c`n3B-KudZTFO9{jZQ2c4=vSG~%`F@ijVe^A?y5KSSX>}Lw5`=kz=c6$#I z50>B|dyDj8s8-8Zu{2pScgiMh3ZeSexyC|BjAQG>8}-sl=Y4A6H5bJ?RVAII-l-%C z0PhIH<(d_LBL?rePP;XB@e+7&ZQ+NV$u#mUqH@iH_$aDIA`ug8d0m;OH5;dD0q8bh zhV;_UH^5x(y=~k`invJ z6I&!_+k=Cqlj^?RIkM~EecNs1T$YPZ<87O{ z!HVJP!wa3e^6|OZF85-?HWAD|)Fi=6AiK!6L?LikL|)kU?`but!S1pn9hgl{Yx#GNzGO=?UXUbJx}K#n&#{!ONbMM~Vj%=eOI%(>$N=C3V=N8IiM_<)t-xJ) zRw_R-Mhp4yohhRY{JJev+wD&og^@*$IYKTHA2rqV!GLHTarbhdR6(9n>kF8CW9iJP zxxMk{q3)KwhMxEgBV~Ve_`CA43#RzEJt(wy;@;))w+a+6e%6;h^Pxw16_ z0$d;-S>SFXFFx^Jf|aKS%@d1)ABRLl;vLhCOnRQ;PZ)nn_9(E1(3NB7Y0u;twX%k4 zTJYT3^M&;MRvHZhGfSZ-0uE*i7}GwfFD~`#`8dX4zQ9ozf%0y{0{H|)CvdiFk)02& zacJTMNjU^$m~~MVK3#f>GFWvf_W!EmhqKv zC;kHBB0034>=KAN*-tJWud*dgVYgN%Bct6eQ&Q2eISYB{B%`>Lcm0r?GB3=rdDYd> zqv{|Ijcc+|F~`wEpF}asLwEjOSmEKr#FwNg=Hm(SG2s%E$xHqr3zafl#439^6=1|F> zZ3@PD2H{eSO+!AA+=rr3H5z}uW>I-5RX%%|Q4L{tgWO}D)#SoSrYk_HZp&Sr1I!3` zFi@E@6r?Q)r{tGdK+Q<(Jk`>+OaUl9j>SF#W+CdvxdnsB?t0ttp98U$V+4AzwRP_u z))we**q%m}wdfBg{Ho)>#7Q_1!{&)fP^*T`Mb|BVg_bgL6>Mqb9;y>pRk{IczIa7^ zCYHl2iTBWD`t}cpFRdY%-#;8(~=hk^MUf{SEGgx@+7csFA;!gG-c8)vKh06f`-NB zR-0_)4YrmKSs1y@S0hQpt+XkIE=fz6XL)j$ab?(*9rHZZ-!G-ezbVjJ4SplYMkh#6 zrhU_Q0W3o$BAeFQhl6u%kgyFMo6W{aowWE=;d(`{gu&zSFjC+xE0=bK16T+qP}nJ#E|F)3&YC^M2<$d+)e=N1S^j?jIGI zm6=tQwQAKu)bl()chT@ES}(?RNkl95+Xwlc)^TV(ejTv%kf$Vu_=`m|H^8AWBOBqw z?LiM&Bs5O~2V8+vfE?Y@%a5tTEOX_-ciO&zt{?gRj9K5|_~`AN1gaNW`nN#3MANUr z0S#rXr+KG8()Jh9ImjNEHqebotUM|I7{J!+rW@hvR1Wv&PXvui002iSn`bBW;Od46 z2Wh@iWaQcB+Sg|Ml9C@ToW`NM2%0GeU`g4v) z)--ahfkVnlxROG3Tu3Ap0E@7qA;Cwk3a_6z(t)aHkQryK4`(hg1Q@{Q9z&XfYFyJE5d+V?=Z{M3V;Ac7$)6*uMdfIKR*dq+o1V&ah^27F}CFBJz>s|WMiB#6! zy~QBNMo{}U-%^!&kFxhaLy80jO76A3-Z%ndU4FuFIQXr>o~7sNZaO{H|-37X@yD0-bT znVKhTe%{k7^Fb~8TX|6~&S^S*CPCmGE(K;pVV_V}SM`_J@;=>M1+w zOo@6Mi%F}Q)$zdMrXG)Md}9nWGY39I&MlVk6YeJh^$X@ZRk4(OMh|iF2M=j@Lj<=; z56O3MoQ4*Uwzd*cPW3%79?!s=KbkjrKO3Z!9nl@S*cp5;vGnp=Zb8LvF1a;2grYXH z=4B)+Y~Xw|`>hh3nSMRuuOk|?QC5r_^r;CmP5_KtMf_pTrf(Jfqouo51gU_qPgZa+g@|!JP$>jk{v-f$fE^=<+@e@8BFN_)y5CxX8M^>HBbnfe^FvAW z2E-=HD8g@H+uLzyKG3kI!B|Mt^om^3TZk)wmNL#%lYId-d?)?qf0*1YcUQ!nR9KND zYEO-0xK>0ao)uhh0x5fkeG_&Zw#9KDJoB$auUcx_^-ZmTT*;oY))5(<>v|R>7Cu~c ze~BlfM#MUiig+$dwmD}B!sB{_qwWfjJ$VLjin>jPu`aQ$+_^_M$zV&2next}G(6I{ zFxPMR9ZPPejuX!Zi52?rW12;tY@q=%=ED-ZQxo{i=Zq1H6_M4aDl(4;Pk`6}zMRu+ zwOOE^e?T(s{T>6cvxPoiGDhP7$;LK^qnZn~VVS2THgs?)MRuqYMN6ua2v;TE!zKQB zYs55|5ZWTL#bFPL*+5-RwPS(j_oTEZyL&u1Y~KUE5SZ$HPWiyx0U?B}v58yDsCl~CLnP$lU#N&XZL5eWC-P^C`}snN|e(3irH)G6#j(8z$i?Z4=Hn`+kSMB*@rG- zLit^nzF2=bmKBKIZ;cUv+zYsA!g=uSV4)^5_2I=Z5l0LMrTm-W-RO3@=^7e)qc8y# zjm||VWH$Z)vasV3T+(ZyrQW{mqta|3w6Sfv?y+o5 z4U4uD7b<5f=II>|*Qfdt?#Pf>NpOW@A9blygd6+j&7Z>*ZD#XMzF<^V?S^1UmMG!b zf{ZC*rGbIxhmpQkxhMB_@p`|I{m*YU^M$={xr}vygI^lJBQgJ>+J4p*7M<6gsY!Q> zdUlquw+$~>WkZwc5u7_X_r9e^aRNSo7TZLU{D-NAwn8SKue}Bq!L|dG^MIr<1T`X8 zJ&2ykTuA^N^UqMll0kmAnIY}#xiBE$u`y~5Hf#e~H{c-Rv!%>V(P=%;#Hlx^s0L!* zq`s0%Q0Q{fNOy|LG*}w(+il_TFHXSb;ZwFU`+II<>6Z!e3~{k3YPbPbSgkM#7(X

B5##3|BS6`{V@p*I@pOid+#C|Ra~Jz4ATpNULyn-K|8bzC9*LJ zA4foRsl{SgV6jk#>w#Vy8U#}6?46>WW$p3{MVPnp1|2&Wjv`-4h73t9*KM+iOz|9L zADm>cp3}f#q@%z4tR0;L5+8oB-#TDQ_kR4HOj$aUz`d))Nh8-Cl4Zr>4v7_ z)OY>S6UTLTd-XhVN$%m&rsQ)zQK?>X`2ZgEl1K$260)jJm_%snP>5+jm3vt%$I_3DRRk4%GdW)S(f!#Ela~ZHa!RimjTVrBL)n*uz2&V)mXe^NCe-GAO2~tP zCOv%H`*=3PH9u_hMbskrOu)X{ZM7Et zz!{`e$I?@#QF1~CXwnNF!wc-JJn_6Kq8|BHy_=}bz!PN#$u08ZWoD^ySy#R-Uu{h0 zH5tFld0P*z!mol<(IH5fW!q(BO<1o`JTsm)W{alqUxpbvV<8thH3Wbd5K#vsEXXy} zYu(8oJlv->b#GK&5HUHTi`m~qD{q^fom7B64YB|;6Ia!gV;Fw2NEg8lyKNn!&s*z!7j~k z^elVGRGpd?Uf@cXdDibOcND)PbNO}2a|paj(aBe~*(%E<-0=nVsRKH$vv3eyo0roK zAS0)wSgHZxtKs$L0j<|6k8#$Hi4OFY5(l!m=`Os4(c5Ow!@!K)?y0*12W!yGMV6`g zs0yE7h*5Uy3hfNoCB1%gx-d1kR(V3GFp8*wGli51_pF}z`;hmx$_A;gv{aUEDvQ6E z;G`f7(ri1Dy`}V{K+A&Bv64%Arlv1RRrN8E%tsGOa^VY4r%G5RzX` z}DMxkCZcj&@{gssS6PhoNb1JLJ@Ih@G1D=N68_$_%p_4lC9W1uBWaUON&P znS*kIaB$atrlwGqWtHthvbX`NFCNrn%Gu_XVQWb5Fa_YCez+8@*`tDTJ!jnPPLC_z z;lf((I$1G~!e6D;`6~{2&PZopzn6ypF4Jw_7M<(4TODY(k6o_ua(BKRW*9p zQ?i;Fxq?UvIHCC!JYzsM2E~!jq%W)_Acw#tK&@vAqFtJZk>sC2Dk1O->yqz}^V-o1 zq766m$z#4Us=ZpwVMVVfZ|RGqj%zjFn$f}|53sJQRG3NR^nj^fZLh8N?|&c}%e9Tm`=-L&@lnD^JH@7CJ!? zk`GTnQ3VzCdJ(>J=!dW{g>3fIRZvgyxqsiZFopO*jvu-d8VnmW5aN(i%%SbnIt^(IV?RO|6mDtb=f2HyWtiw(wkb7{YQTIq-J=kjw6TEY|8vH~@0d=$ zaQ#QM(R(CCv70ke-+iT7EggW+*^=04HWFrJ-jiQ$(qwi~JYMXGY>Hud6^`qn1SXvj z3-=G2!kgr2WSGH$14%Ioi3f%L_ea7om~lq@zLp-)Dgt}b_BJ)vO_x|(rKXQ@5;#Au z38g3#`)`_gU3*ra?yT%E25umc;b*RARbiarPvq!kT$`X?bk70vY@r&N&(PaQUmHGx z^S5(=X(+9ZqGKpT*Pc{TBGt;c^!!XG^Jzh9y1jG(7Ji4-SY75WEDREebut{MDOYXg zT}cwdju_7*TGWeuK5h|5MxQYF@O0vS%_Pc(6Bvka6BoN-%e-bfYb(>aV$}XY zdJwC_M4mw>wIm=}9L71S8cN6lq@qK22zHh-l6=x5-DJ6ybC~(_jj~WWawMU2xN+F> z$OIx>oSelO99l9=T1k@Deb&ZQ!?QdA^Kgt}*G$i!9vDrJ<&<;3h$kRnh$5SGxWY4ei5_SofY3n!y|f+A(N9qt>F+YFI0&pSc5FkmKBA< zMr1DUCd^hHu+YekjOXao3G5Xcu+_HNsuAgu)+)ltPn?JBy4*$@?Dirl;H015**==f zqs%2L9A9YRTH$$USxWa73hqWLPQmu!ZUSm%Z1GxX@91j^DD5lJ4q7zw4;f1*&D?F# zp{0Dgs2TzI*nn4Y;h1Y0nsz;{0AjD=N{UokwCcMymcLs7jbz&1f`mq|lpW_X^f*95 zM^7!tS1ZIMdxhkEiU)f0BIA!D#?o3;D{to)qM>7*ns`-nwVPK6g2WG%5Lg!Q6Bvl9 zvqgLC2Jl%WyaCw;+bhfSWD5EG~r4&VOXHz(6-h5(GFM z;{2etcC9*`52(k_NfjNSWY~FPTR^vdHQfzE1X(I$o3~GEWh;ZjA3fw5ZzsjPEg@Gk z&tfK>mAenyHd9ZN?wTDmBTS}AAX%7!i(-S8_?fWMD$)KZy!gSa0O0{0O96XI-_U>(CW)ty2fzqAZQ=!Rwh@-EzNg*qS6{)(% z5k^Np(jG|=eR=R{h~9IAwW-!^1G8Gx^Hw>7$dH9RLqiD2?M6V#pOU?F|uoKYw9~#$rcgFYG`rrch#%OUU%eLIsAix8BG}SXOyZK1x02) zE)Y#c*<;%IZSZmKYS(UkIju14BNI!!saf@r zV^o=M9Og859BaO;JExhu7gh*Woa+QK65fYTX`KJ;GbGKUZpBj+R0R%BFRAB64YCk~ z;zW(LNarxUicZH8L;zkYH`OIX12EBIs6FxmmzoQF+rp)DFb6sE8U~t1(1VbENfqfi z5Ge-r0-?f~@{@u%NV6?m0%A_}Oe?u3-w9E7bsxt?a4+n7!k(&u+{VuH_3mB^){E3( zf;SEJl#H7Ty#!_ygww$$8x}ir0n^9f6Yuz(L{WNbZ4*37u3m^;YrEqRH`?C#md{zA z<40ldj%2!@FXlCS5WcBivqhzZ*K(MD;Q>A~{(wIF-D51@q-cTd=8e)5r+g~po4$?6 zh4Yxkx(=%2^BO<87;al@)#n}0Z&gDg%yEA0E06+L<3e4NGI=ImxJs|)@36Kq6w+gF z5-?glaQZ$vxUsCs2pr<#PYf-q{pGxRr4K7W`)0~0>hNZ9CBD_v6E?bIJ8mShP>I2Y z^3|1;8=T;7%|rr?*I%A_C0d18?=a>?zMW)nh4^z!Fv;UTc;aqB;*1z?J5@X9Y(A)5 zne^obnlXk~i@GYJoj@-MIo0>|W6HpGcv*DUfqV!^Yin=Ndoth~suK#P%Puz6i_eTa z<52eu`Ybp_EDmRPK{%K1$XE4(souhDxGOA+Nx$+b7F72NQKM)YH z?dM%Nr0^cHvD{Rvz(^Fpznqk!ZF$UEcaxV2C#fBRIpnSQXJq^mLW=wy^ZR?QMSQ)> z6pvp|<`r@D31y;)05f?G&zHfig{!$&vHL1bEP&etw&3JXf_R@4Y5;Y-`SqS!+uM=j zd>-e33xynyINUoqMjl-~n4{vX&ZMT`%G`);R@+gq)|aAB3h>=U zZ4eNN@&?AeH6oW{K^{BAtmt++9)j^2?#ksLNO~7} zlJR;yU~r1~b)hms|A3%VejF2HrhiLANc=XMP0=Rg7bY{L1&1ro!x|NOt(d2Yl1I_I zg`T*-1RVN;pbfOpTJ%nie{JfE?y;u>D)fWKW81=L`W)JjXr|6I5LhV3UaxU{pgxufmEJaxmkAD^JzfPnrSXqXhL|M8 zA4RE&JITg4m(x=?`XT9uK{g$1H0=Jg6I{y;iQXl5-p#bSp8-qI8N~aW>l*ay?T_z8 zZIi)~zYa+@h*nF3>{)>WivGSqDI@?56T04+@X08}8b2Obi}Y^T&NQbv4px013A1vh zq{wBc``ifcHGhrftBB{%jny&~cBzA~)1tRB*)maHfq47r>igsT#oUbURZebc za4r&i{z|hY6{RVjH>iDSMo<;alteZl07{ni%C-V`Y~Jx`#h=Ak0J@h8E!k}IUJXxK zUKc`3drnF$Px6JNI93jFE%)$bx)VKW1WN?)T44oS9MUM)>pbYP6`8!YG6W=)`L9ce zc~O&xyeX1fhm2R+$ZfBGUR-*hfGxGO9NSVRVjfVudj^`X-IJW{oPG^L8#8GRpr);V zoJTMRZwy?$ujY2ytuZSdXJkG@&QGkhO(4beCAURR_x6!1dA#FRBI%??mDk`!^rjE4 z$NTDX95h>y=ZUpoj zS8Jx<50-Vtayt83#an})2EFV3v;tLDJRpkUXttbQ#01_VbE#U@T<=b$+qOAnW@D@0 zT_GEg!u1QUi3WYY`ysYhIA@u;xK_0jReT4=QIa7)VIdN%E_tty{v^go(wbDWn3st} z!RQOX4@EwX&HQd7e8UPnSP<1I-q!NcyW}TJ9P(kAXl(EH=Wa z-j#0Oru)wLtPDGk>Mo+%FhCasFB==H=t!i~b_wJC!Of_uFUW*gX@vHrM3U1gZ=}s# z6G}jQFDmOTY^!CG^A(9B|bXf4jDbKyHPKY1?I>tXg)H|Tr@tOHj+G~!|s z%#H+6Xfv3TE|}_hLnluYOT#GqjvZnv_53CgF|o1vGrW%&3#a(wz$iAhv|-C zZ6)KySepu5Y8l`om1p$NBUN;psQ>yIP52gsSFla;F(&d`>_81MZw`jBENDpgq9tB9wmdmIEF(mch0Na}K=*9UKLa z)=8`!D)Bw(6l*~ktb#G@Ort~uPZd!C#4MJf&>WYn(@$JMy&jP<#<)%I;xRB!1c;*| z{LG_tTC0>AU$;y=+_wc~dh=LC6OG_mm##NTso4W-1bze%`QIKMO9K~&6XInTBWk|! zmp0D7cn^B@2#SzQPc-wA1v*3aKJZ1VD5{5u4D83ao%o`)|TE#V|!Dlle&c~ayT+(Mnx6* zd9&CS2{2RQHM$Va&T~O&MnRB~_mk0BZj8)lIM8BZ3Ot-}P=E7$4L_>EyQWGFGnyRz zr-PU$_pz@QX6gR!XJ}Y(-j8vbD55@;Zue@UyCogo&}Qq0ioLhKlER`NxG)o0FL*`jNY(Ptir^dNQhrg4L^xg~h>@Owo?9onVp8=a zG{?u+F4*T6*|QI!Uml6v_SWogiR~@G&z>L8Hi7p4PanZwmeRjv$NxY02>z;?6(IkU zk3c|PNl8ZjALQ4!-{7y{|E~qW-ptm~#{OH9{m=0K(53&=@bBsUPc{Ok|Jg?HUyt_R zx(HZV{*#G->04j@cTWE{5itKHelg&4u>V70`kyTXW^~5?Ut9!#4Fvz-yZ*B+;4h5p zKbr#nD~Rj=6^83STLSFq9OxYBoamhCTgm+*_ghGS{&ar zt#8ph8}ql&o|W|$`{Po3r&@`*tv}GBDz^b9|5aZe{zc`2QaF-NX2=`Tw)^ z-=6Q~8)o(GA^5I*>-;(XlCl0y=HFBL*JS>lE;G}&W8r_7j2s;QO!n{kzecirL%jah z*crZ=S${`;pUU6z+ePrtDYO1l{%!d?^6%mQmVcMO`~5%4|G!3wf4{~5kMN)EuN~%J zYyVgpIKFR||CXf1NKeo7e=GcNQC9mUonjjGjm%ngwFUpCX35k>4g6+B-3aKgu=VdC zbp?m*<7xG{?p?iF-qe}fO!@M0$_8SKRBtekRw|VGs)51-N}pBb5UnadN}TH#(MudII}LIzE(UZU-9`-$oxm?#(nb zn=j}L%<(BeqoMHb&JVRUjaHxuzoljwa?3CDQ7(1AADv$a&A?n=%ducHi!g*Bu26A? zKlqSo_+?IorxHIJ}#@_*~3=VX`?iI$eKGL&p{{ zt>7F(%7Ll_{>u6^DW|>W-6!UQ{i=xU>_`i!3TjPg0)p@T#3RsT!_cJ5ElRKI2!iPy zo9Kgiu3?`Uz4f8wYrfC{v|MYyh2(^k`g-C1VktE?KHIN8xOl%Z`WpR2b9mPqxoll? z2Y_BxUtQ(E4~yOYdL4iEK~8Y4|DnFd$qx(6_D#uJT%5oHv1h~|gn8}-sCB9bb_ej) zhBshUA&ccQg#1xY;{AgvmTHVQCLsc+_t5eX($W5hM%x$DJ)V5@SLEmL-kZxaj_>3I zOnqLn^`no!)(=*w*n)!99B?+@$=~a%pvU)QgFx!=jBti8WP@P3cL44FpTN%mmiS~l zJ!x3^hnFuVnOKAe)_aieR6u_WKma>FA#4Qzn{j=N`1UvOxn697OWOc=J{befF|n?D zoJJ?1bRFtHBm==1#oyuhNyXj?#On9){O^e$Lhxb4zcO42E=IoFnCgAN=R!B|{2d9t zLhu(+zTgYn=kWZMR6hk{Pbq!C6@EQz4}z6dKYn*E{_Xtz-MRcO7z?xTDhQ8u!3%6R z`|@4c{9AeZu6+0)?SmRHxv(_Ug0+9OC=O4*Ts`~ny2M5VTuk5m38A+748fPwe9vHC zA@I`p42o6g?YYhYxdjX@_N7myIWh$KeYt7mk`MV&{qvkpXm(LP=Y$oLt|Mm;OxEX|P z;M_d1m1!$jF;y9(Qh1C8cc=~hO+V^Nnp+dqDhfPhxi>wXggw|@Oc=GFi3YdG-78$^ z9kVS9-49p08!&O5w!|{N@RN2E6utfvz&zJp@}~;3ta$k!$iyMev9FYU%Xic#5La6Knpg!cH6=@W+omn*%fsPN!t4S` zSS&v>u3p9;U^EJxN~k<5MMJZ5^0(~Y5+{b#C?h5Mln^D#8I!`cXM&CuAfu?AUmY zM1fF=v?`|Kt(y_c>dNYo%75fY5E@B=T0_NEgpRpA6uFhkA3z7JZ)xL*b#&?P*phSg zt7cr}8_<3xbr?I_?W@xO>%}#mSrUn%8k515ydYh*?l%;4AFKbGpv!Cac5$kV^7`A_>sO0Ik zofxz)Zs#$TP5%DNuJn;`zh+gWOMjuKoC)o*dDh`}h4fl}T1()aG{;5#op{wCwrgsE zwKcH!2dDVfBDatakW}4gXow#f=M4z9ylyhZ&VBxlYMB%0s!%O>MyBquHnOn{vT!{- zZDE`|EI=ZDS0dkqJt~|*-wJF={0*ccsEj5~xe?t|JEFveBiiU3g@VvD`i6BL(05C1 zi1GjqXqvaE*bc|+ZtQiu4ROx(3=JEh{%5&rI@ ze#)NT&2PZ&(Zdqq>K7JITFxqMW(}P#@p$;;!k^_hV=dKd!K`6Zjm8q900Fuz%7;mb zSDQ6mlGp0SIW@c;ro>f)vbN?4zr4YacB-u+uHbhjD6hP1*whbugU$rd%WN@_80v1w zsPVPZHOi@$h5F*Gex|mnAenUD59Bxgsh1_Q>B2qi!^{b&*Q~R!bo#|a6l@O#0D~gi z`_m|RhUoQ{t_;)ZEQ5eUKnE}+xP=^^)@3W|%{>e<9!$31Y_5x!VsA6lF-q%<@=tuU zngkpQsg=eo+@NLixkhcwwYjv)8nvHoJ{V{E01DqYRjPtf5CqC zM`qmUl&^|~z6^Iyp0@SxV{ToA$~dPSGg{=vLj9%)ZjfGgJa8jt@EY8yZWZm~yIfY4 zLE;mlJZfd4?=dsiYvG*HFy&8hVTC!_uAuMJBrP8P0v^PVPWvLDk>x)*Pj*wWo(NoS z79nn$WgFW=gE^8CrlB*VqA_F|d>`0OPjUksVI07o>Q(`<-CLrT6=AN5!Z0DvJyU#! zPSmxbFhZ=lb<35-F}q}yiJ3~^dPJgb8k@YlT~?yC6s}8X%v#X|VML)7sjl*P!#U`f zHaqW8^?S3_8sj*fkMY6G&faoq`5aZEU=Q^W$LtBT9tkzv?AZ=C)Fg`hL%bu1N7*MB zxGnSRDYYEhlj2RifEC?o;I&9`i!)>MFfvPtyde$2Ax&w4eDmgUYM5*ZkwhkEPo}zK ztp9m&ROIL7T->=RPXT6z1W_Z@M)B{&*++4oy~ap_h`l2WRs=0$7x`bYSXfyxs2vE* z@<~la*u&O;;4+S!j}P?GlL5w^;h3>hqv2A$H!^Qj_H9QWdJ-XG9^~%@t@_^2z zbd#hA5MKN>d4y$+FUE3JYWJ;$k}Gp&@{7VCO?V=3rBp;9F_<4gg2Dp%?ohoa?7|o{Ci9irhEanaQHr3u*Y7_DSj7@Epl-) zm~)`W@cbDz4K7(nGi}?x&0l-8i==D@b34rKP74zl4JzLTKk7#JD8MuQaX*{YVq*gX zSvBRfd@!isOvMgj~H0A#mai>T`>C-rg)`R|-%Ox90s~P9Pk&I6Yf9zgFuy zEdBhhw7NKE8xgRG6oo9Oqa|e{zfT)^9^vnSk90AReB4-MT6jr&x7LkYbk|Odmp)s; z@`sX_IYxSfdH$IJU;)O;X@r6>HH9|?TTRJ?+^8DEv|AWxL98s+lkgOsiRUmIcYqfn zd`WGYfe=c~Y99l|ijVQ4c1+;K)BgjIS%&&rp@Qz*QhT*lJ(^L!8AqN(!Wyo6o2oro z#l(v%JZ5M2rqB9tU(;lAOh8=x-bKB5AQ;`LZ@_EGm~ppZgtQ5U_mm099+?I9+mqt0 zNhX-TEu(s+<@9?zc{c**Fj&&aZ(DqG5E4mx-NWnZcO9tiskd@QQFCM%lD(YIm(bV? zI(~12wCnOPX}X$7B-xtQScUk=QWfF?-t?0}0&2*~*iU;>m1yLP44*of5i~cmnY!oZGbc zKgis2(5w?)`|6D;dF4{z4Q@S`Fi*nW^ehI!`CQE$kpyJY`Bdy(WBtq(osA#;Dm4B9 z*@z0%+M!+Id9G40r}a#i6EwAfF?JEGc)=FOTM5b23w7$xGeDst>bS=91Ht*z>)^Qh z&YCgU-f&wUk8u|=yZDvmyW^TId>y?|KkwWRpAKu#&3XZ}GlD@7`s@qZrb(?8 z(0YROd~6yrh7<7ySq}1kp<1%29#IHpu;kcAnz{~1%bgVQf7C~6&Y#{jSvXu6($mA$ zn51OM`M4VD9Vu-^tf&t*5Vkq<(9Y4lAF?EGYpCI?Vh^N6eKqxm-7(Zyae2*stCQP0 zUE_c{E{tPtl&OlE_bYbrWwQ~q*v#J1A|x+O{$TQKbTrGP>gbH{&dYj%qV<_p!x}a@ z*+Ds;j<`Ecv*1m3enAFHPanCsVkugQ=y;io_%S8mUSVujAyXbXTIF2KHD^jn@|^5ohiL)uK0u24Zn8W|C*he zY%c+jdMa+?PWmVJ+d9FV?T;?HqpnBGpwVUXuB%!_=%#AX=3nY>Pn%Ttp@a4DJt_V( z0J~tzyX5}p9C3KPWS5N7b%wN10v-*Sxe>a_&>j>i1pW$CbnkDi&#M>WtS~O(lFMD! z>-kbnOCp6O6Ix2?<6v#vq-}Xi`8q}pj1V+CmKWZi*hG1n>XH=xsv-K%L>{5{? zQRR?2*4^)TL8ekV1qWM%!c>Jm6_9XF(hZU^UpMhJ9cP}d-JyJloy6m#z8M??G#&%`jY_F*O zkPE=W)Q@#46M}?sx86kb`~07HHV_%hE!ecG{@#5g+#G_#gHHSpl-zAiWO5IXE{Icb?{grVWlpjv+PA)@sn*T#vx%hEDy~s<81lH6{7l z43JLNBcF5C)O->GX&0H%PaukR@w6G{A*0V@@L|M?5|Kwq(;u`<8>H0H8-#~bnh~US z=8WR&O`Km_w}QDV<2TB`C5`qq5-rH8-97i>MQ)(D(-h98v$K*b!gW5%H8bbr3H0!* zQh~i0h>OBqCIW!kVa#9&S3z4@TWt5x+#blwO@tg|NC@b5aE#9U160&;@%1}d)DvWAZ+(KB3*uCYv~-9ZwUu!6=OeZH+s+HHpE zq>|w>BVKCA1xMG0U)DHm1wF8anQ}F$A0uOr9jv3iwW~Pww)ODQ5Anqi)1|UzQW$l^ z?M%B;a7pi0c071Une)fp7u-s`pXo|$wOIE%0jqWiGSOoAzgsDXk!D9!k-IwZbgKA zZVtCA>$o)cUB9tuJfGEYXBi?oebs-jTrSg|oij+fFJYJ9bd|^~Xb3E)suxAnD;kcn zd##x9ey;JE-`2KU$Wot5wWV7VgvCX0{#iB%6AZcWp20tuBAh&MsWDa&5Ne@p;KX8W z?5{;G1}N#QN@v!QUD(a^O2jtueX4exb7@R{7g(Ij^;P;Y;eL8*g3PI@SmLA)rp5sW z6<+FiUt#!X80Y+A5#LFEbA3oEN4HAHk=8w$MdE?HL&|1)PoI$4H1rHlq?ub5o3wjT zOY7*l-|3?j^*3S7Md|q)G*#_}sly4Dw}Lw(jdJF7 zj%NX*39i?OewO3q`mm?I#v7^DjAtYHAy(lqjW676!0anEp4DU|VeFlTVuY;b&~YYY z(lSiY3-koK-jk2~t`4lv8_FsHO5b3U^4Zu=MzU9R=L!wwLS}1x?|6cyuSVXEhNd5N z4_#G&A%dKuJZk}^-CTMH3x4J69WRi`PhF^SDvtqFCrg7v&)X;e&eJECT7mi=4eS~#~wUC^Z1*Ml2^IMCII5O10rD99lYTl&d z37*Jyv&0J7;F`X~q|duy8-AQSqY zJm)VPN>-KEZ7}vZw-iGi;(P;UudSD2e?G|JQ4SXiJC&pKMeEQ-^-GGmf#KY8$^FUD zFIdQf7J-c(bm1IWVK>fDRQR1f0g&v2AP}PPRnN_a{4lv8!oP=Xv9d_NUEIidvE>)N z?%LZy|Ni5sPAG!A2DMUTPadtg$vW zV+_3#3S}lkRmq(7!{IVK!DlOc{C;>o5jb?(ubE`CGv|RwK*U4u4d_1Dp)Rq}#%l3* z@I9M_*HPPhmepvrK}{Gx0Si9^9>mq$I-Eb3|WJ%p$g6U5yn|;3Ji_i0c{=1pqc6t zkubTL6BQ0<>>dVX0+y*lUp%`|X8K`VCPbxOgru`u!6K_;kx47kT>`Y<7b(ByBWu>3 z+Ny-$x+G-s9H#{Y)gAj7=>Mz|B$rN_z;AUL=DvRz7QRisd+XtUYf@(<8eT`F=+T%H zF{h^sv*+Ass2SUvE#4mPp~jo;)R{nNML{HA&c-Z{!6*48R>ovbs9Usi|(njbV z&yg?Ri=ZE*O9Zz5?0PH;7VA0yKkqrJ$)9?8hN3hjtre`e8b%Rh8R)2ef!2$^(|m3g zd=(uUPlu7Yc9mCcC(5`!{a~0IC+Sa=>8Bvgu7t-+{x+kH0bYkJikW^gyzOB*Wh*F0 zdaU0u3ncl@g^+Yr+h&bFIirnbNpowilhxfVl*FTn(>EPVg~Q@CBwj=84E2{m6EjR< zw&xdfyb5wrLp#I-Y*j2O9pm_b)L8YFZ6!yTl2+h8#>Mb9ecwDhZu)92=0l#at2^C} zBL;U_jReXuLr3NteYc0Pnr+UwxKrG;Yz+|CgQ;m73)s#Inb;%_d^~^1;#KM&*x=Kw zCj7CAU`R=2&jBkKYZ0-3x)3{1Zo~G8*sff`iUeNq5y0v=^-ixNwu^}BUHgQitD$M zqx*yRGkYOsDDP`n1iI$N%Sav}Vf!t1LHH-6jgvR`JW0TXm?fnvL|VsoOOBACvFZV7 zHzO;T@c%rVs z=`VV^7~ZbA^~8_T*C3KYgDAQOZjifpEcjPS(KZf7Iny^acenOAcY;fHRbUrVF5>q* z;PC;fgit_TVUvKA=CL%8WKso4{-@o@JQB^#1SE&kk3MJGJY+XHETD?%yr87OYSm`~ zxxm-1TBYdtp9hBb>T1@%EHA-$4TC+{8q_V|WKTqy1_!YE^D^})>h7TXiv75EI`M=p z&ZL(pX*dApKcWGx<{iy_#HcBU4k3ZQT%cF>G%@$AOzfb9B;`Lun`tL5*Y_iVD-%x8 z;$N(Ckkf}x6J9)EkpJi;LwOKFO5ZFaKFl}@*c!?ir;ywAo}k*0Iyx=^Zne8IcBD>7 zL3Mb}@~Ng$vKL~L$_N|OD)=8j*44vlvlh^Xrx^TD5&Y(mVJUbSG<{)OMVxt#ky+na z@L)|R&S1!^KKosWHFGwxK}Y8ZadJs;73^3Ik|Br|Xo)s)y01n4iq=^64 z@OPf{nnyzfj^?b&K}Z!EBSO(j*C^VYKF`(UMJbZt{vD^evVm43tyeIce^xhOW1lqJ zXQH3%&Ou`%*L-lxtrJ-AT#ZG2=1iGdHwli@K*5%LagB;kFE7nj3{6*(YNEqv z1{^4e5DD5{UF>`)ISK#3alX69+KDR;UyVO79FFdz@VQ@~>zBA|D%2NHl{m2DMID*t ztFO%)NnLp#_Ne@`8JX!s9lBD{v_CM&Vmigutj~Qd5hbTYA%Eh4Ww)p^yprh!gf!s1 zmnmFgRpXw9Bx!c|IYs~3snal@k0;%>DXs5mEx^G>O_sZ^Ru5fN;SmBX*W=8!gU}XC zV+wm1sf&Er;0&Tldf94igKbc@b$n4?0o{D?5y;KmK^H2h!?%ub4dwh2jf6EUfOdK^ z1{5dn2$?I`{Z2YS1^;)jY?^RfD_7LE@L)R@QVS6==z!xkmiIo}7J(~EkQX}sWyST$ zxS!~ewc<}8UD4WsmEfWZ{A(--P$# z3v#x*NS9NJ@ZERY_FHTxOn|6V3hHS}R%0GE+bh4ellr8Xi)_C#uP27=!_<@kg^kvV zX-fXgPbr2vCrp{(i!8pL?1yU^h9OMn;FZ)PA^`>8p#tEd~lYlK2Lst2tp+Kv$}f zAO8fRN~$u2+04D=HxOzlKbLJ;{WW$Q2-=;>hF*!MQsKdM{l9v<^01oL?@vU-rMPY> z%8>?=I(zT4&psy^l1iZx4U{x!5X~W!sXOZpA}e-Tut=xj1`a^1Ymc#}!hs&8t?r%e)$D?sC6R)$Au9PsB9r zX>(ZJwRf(#W@<^U>nY4Waa48Q-YJV-w`(4|efN~{wbQ?~xPP;e>ahH4y|}n@{44jy z1p5K+o`mIL%_d(hDknBvdEoHy?ahdgk5&bfs{1}DzqId){`9XOs4t^D{yK5s@qD@D z&e@hv&nh2wTbey6q5je7SlOISs*#H&cf;2h!VeQrA?qSv{GIO6CbdH&4=`;Vp z`3$?2bG7>~3~gxorB*tGRE_2fWBGd{IM5?-drM zJpNEuwFN&xIh}TR-PJ$Hbnl}{Q_f@4_SA*0FFBf4{os83v5zmxCw;wS(m6{wGNhlk zo>REAl6X$yp?=q1RV2k{?tQFq_28V?Z4L&Ri^?^+=dB1OGaO}?wz}BNH_{rmTfXwh zPC=SDAss1l^X4%CWF1pxs zWya;Q<#Vj2VnH`2?c84V@DEpivt+N%jNx5z=AVx`*EppG>2_MJTT@c?>xc9{E_~fmvg?1WhGhQv?TOY4Ja^iE$ zooQ+hFSsZ+wARc|S2^_Q_oT^tZ8mMKoYDAcX70`F*HVZ6K5fnPnmc+^kJQ|opYz($ zduT$#aG%h(nSuUI%g1>oJ(Q>9TBiQh^zBsiq$Odc;bjkW0&h_v_D4#k_;1TO26Djn!MwgVzJ=GQDGv<46sP#!O}@-|LS_|y^RF|~)`bh5^#+Abyq;DO zUo~W{pP;k4O?NG6UKa+h^{r@rksoX@Ol5+CxyPAqPjgsnE-bfbN{qwV{( za~FJ{5oI2C(&*6rPTy47U5Bld)TFdMXFY#uS~qBe!MYNgVfxNz`vhj0o|w2JcDhQc z>tANd?^Uxp{Y+M+ns%6lXuW!0wN%q8>gGQCuHtRFitohr#a;)>JYGK=VE=OSxv}c0 z)Zw^>TSK3W&b_w6i8rv(YJos{p>wkTvZwQ6CV4232cjJ{g+-e-1(kP4RA}AXnmD0z z{X73_-XX_j$z1(yF3tMwRMU*JMK3H`&W4C*vH zl6&?19JwLNS<|+t9DCrM^d)Ggm3oVs$?M`<>o<9*SslFp{$8XunbL1fj#LvRKSR0I z(LuqgJMY7sL7EL~hGFJ+%r_|CGj@8i-^AC{ew5};%|Dj3Dw4)U11sC|J`Xr=GkmJ& z)c)&FT0OM6zS?gCG2yX7fKsSieezf7MIzuItJ^~4Jc7FR~M21V6P2iK8uW|vfP>yEX`MR92>l$x9Z zmmT2q;*8A0RT2x<77R{pJ|o@TtWtEteu&z5i#6-5v@Hhtef|8PG%d0tAUXH$o0KWR zoy9XJFFx%O`S?r3K$#L5Hy!=_Q@>E|Q&l!T+9QAX!{rlBcGEj<*{X)joKhIj68v;h zS?=?of{*!2jC8{dvs_F6w755+*nE}rxUTogiKbe6zi*DJQWOi@-|(w11Qq)Jl8%qM zb;~c)JY3(j`jlF_<;2Fu?BQ9lE}MB;R9Fcd9xsc2w9RvJu$jbI27% z;V=EimxQN3Ka=rk-%_tp>++*UhD|*ki$_a+arv-5y zXGiVXXKfTYWRZM$T6LSkocz%flzmsG*VfzWS2t0<^GFK6O3cJ1gnMe#@f9QM{u z_2uA@*pIu$wRI0Tf=8*&+ZUaZ_giU2=sC@@)HC@CgA-DH?VIDejOy){jySV&_OOc5 zcdx%oL0xyD^moOpuK9anHRs-0?4WlkIr~ONOthDLz_*BTLn=S68Q^((!r|fRXHI^4 zf3P$v+jyF*>H0+v=dRe*wcvTEy9;Ro1IfMcGO$P6)B1z>Kp4%&J7yqY<8qF0E-%F zTY09^ z$fGelt!C%%cJlbsb303Op1Hexlkt`5%+VH{9COC8#K}x~w&^?Ps$-#1vnEIT%u?RB zF(P>TZM}(i0%CSF9`iX8+&O;sw=0E1U;WP8+wfNQmc#P^?Qt7BKD>?@b=h5gl<8*o zAYGqS_lNU_jL)s;HW~XoJl|*3owll)v#a+UGvcpn^2pR#YFAufGtPbfw!kr8{5#)o zRNQ4be*}L*#`${(+vm?ta9sWM_TJsD#h-UOdUt%$zCBGV&b6TM#{2WvBK1q1lVeAm zjK8dXAzsCQe{7yZOS;subu+(~YuSg#6^K%& z%6MuW?Rlfcb)8jOF}8sZB0l_8{pg|^l|KHGN#eACR#&@jSNWG79XnK}kVxodGAS`~!^Z@;osa<(T=$yS~Q% z`sT=ig_Q-bR5Yv;T{o8+XMfwKzA+{Gb)T!0tx@jE>t6jb`+RN63sFrM6nQCBWTZaQ zaF6yVuuO?PMmfJp^wYX`IIQ8eevjMrw2seE}U^2_w)<>qfrBxXcU))w*ajj)$%x2rqS6i?J;Wh(UDqdQhv zS~YT0qVeDy{YAMtdAoxiHI9uTuYFkf{Ju=U{c~gL9mBUo2hG}0ZQZu=hD?&; zmCG&1bdyTM6f3sp$gQ5KpKtTj;0#YR+P-M$%l0La*LEkZopp05VYIv=duH>s&Nyd} z`4*V=?&bV*V&ki67MG(Z=0E&%a^gli-&^>Yv^8PPjl);nUgp;3wra|&qv2tyqqBH} z%~tuvL=|8C5}C5K-tF`03n%jg8O-Ia+bzc;(zN4?v6c7|qKsH=yr zkE|*=qb7>zu$xS3Uvz${7j<-O*OuDf)h2Y5HM&qihr;w7;@@Sy&zNU+ThBOYbz z8!DA0?UBY62c$VwkG=2s&UH@8QgXz@6ufc=^l|b z=d5do<>#H9mn`$?)UM;6(oZ9u`>l8tw6pfs;|m(9Yqw66)3pEcYDnB!H&rEv&xB72eK$-|LFTpm z0LNigUa^lqg-tH?AeAq=KY#19=5A^5(lJHp3rrekM(+KiOY4n|`ZFcJagUGr_KEm7 zI;r-~S^NDifjTOuYj-TVYu9=G%dLo3Ve-K(Et#3pU)19@hMJ#ie~0ZbDBX2!!Sccs z>l*UF!Ea}$9KBYv*VSBB;$siG4@_-k~=R<_@l`6?y9hP^}erP zf3US_3YB%gG=JZwwbA>|AN-h>(-c#fcWlfDy#LyFFAV$HH8+-fdCgxeRp926rM_c& z-u@PqWd5S(ySl#Sx!+PFd=kR-F6A}6Z2r1mqv`ie=02N8ywsfBAha~AQW=_?_d+gT zaD0qz;EjO^g-TiLq%EFP@FRgfXFsGK?DXx*oAkmoZ`evX)g22bE7p#lWN9_GWZdm{ z7Jky+vMy-(j5=_jc)4;VKgzLo;MGt$+1ZM- zl5}qyj@`NM@g(GYF3UIdSkn;`1lzs+1e6( zimKC|1DCoxTFxqk-P~|4K_S+1znjr%onM|e3^?gO@S*Rv&$b0qe1}{0b5U!oA&+Ey zGJrQ+$<2wMeR|GSVcXo)N9C?FXZ`wCJ-zB^;L+f+0U;W)YHMV3V#tTqEmthE$pFts zN~SxtZ(L1kA3Cpeug=2bQXXC-Ra>=B2}3)I_->}HCoC3jvv)q2U)6HfFhgshP3qRg zW_5#Iilq{=XION2CSMGDHel_*=)2j+Lq-Jpe|UCsmLPW3Y|P4jNZg={V|FiG?LItt zhJL4M*+=!~qOQ^d)g$J~Dz$s3K9bcue8`@tyy!XhiPfp^>$;6UuaoaybZUKczw$fP zYA<}6d=uZV>r)$9@r{$+LjU~#$4~2jHn~N>hhN@9EeI1IH%L&y;dl5BOBRRvgzyL< zop-=WZn1N)u(Y?76v^Obx6qjZy=!F9pMQ+*KjpUkONk7G**_+?Krw_~*)2$k49J^c zvRg0=iW5*I|DV%a{ui||dZ)jb8=wg=|EsDPbRtIY^^q(vtdN|OfDl2_hKNTpYffMU zkAOlC^c7M*fcD?~V`sLANT@_XSEGPF=;{;{^iHRUh(u7WLIf!&OvwxpB$5azA>^wF z>93%F=Ok3S4?~gY2`Pn;TR=p?hRftl%P%ow$c6nJ~uZh!O)e{5gIYUm{E} zI}BqC60+z4U|0_ws<<$pAtei$BNQ+J($9z#gHkY(PJ23s5-ZGSCcO)o6B6-a0!F^Q z1&c9@|6ekdn1>z>#RL*zVvODa6K1>7*B(05s9^>H+XbB|qfS4?lu611CQM!%eeDr5 zlfDL@!6q?GDMk{knKD}SQ%u1GF`Yu$9Lcpu%;Fw8Yt~okRvXhP z4kdo*&T&R1;fnRp8M{V*X2i^5%IMZlF=b3Hbc##X5NA}9{wxtQPDr#FhwMFcri^a= z6jQLH%nT(ajfeNxBOLM^89Jn&O0J9~STkjG>%U~m$Vu*peI+GZ0`D&aGwHE&xWv%$@E$9LLpdhqd#K+8R~A!7w|nIgg_#GLgMLIO#eTNMD+I5jOzT*B#9pN7{MNM#JDT4Mm>90V%b^i zNdQ{;S7ZO58A?nxZTou6&JQi>Sy;SB);QPN6O7sX7uga3_5TJWtZCvBGY(*+XIDy$ z9jtJVP`M_7VD{3#a0Ac#LyA4{2VhW-R!R&!dyQz$?Cwn5Lfw`Hc+-OhR0VhUjM-+M zsiVHx@@321-TeKb6xi5#K1)J)@L%9!uX&!1dOUm2;E*K&{yah-6JVrx0;Z4g-N*Gp zQv?g(*aQbGUhYA6Bq_`tAf^nWmJ5URDJJ1&~?R0y$1Dc42k!%_W3*pP>Q}jUyX-5f#93G&N z$a;VRF-U{WL(HdvGn+<tUJ=nshOb~puZQb6<`G#6NM+ChC$HjNM1kp_CK@!^2u zIWiD~{X*Lb2>J-ezE^;wYY99k8o#mIQ38%!aCjF5DnDExpg{}kUII!$a%o)M1y!Tb zRPTFX-5A&3o5m+#SEDijbV7SMb~`>@#1f&AT$>21f$k45IUM`UCqxvDbJ;vZLK+XT zX(Yv=2{4>vHw2*goO!@jMQH+9H*_8X0jLbZR{$X~R0gzt=F%{D{RVr?0s%>b%ii+< z+0$_o7L5<9OCJ_{w*#68wb^{|9~|8vaXMzlzL$jK7OLYA=i#g`DIhuXg_o3Y)|Z6y z4=O9z(lj(-jhO_ujjkKSnK=HEgkToB7f7hTipqc#!plz(9w0v&VX^pvKGW!nMFXuz zZ70Z{L~R&f2&fnxvyfm80j&P$dr=-jsN2dJAHA5!ScC-q<{b9;z_fGpKuB?Iwvfa* z`V6k|A81VUgFR-7LhT=)!btk$%xXu03US6KCg@lKyB(N1RM#j#Sls?VGVFUn_Ck(5 zphz)iEx}xI))LT*ki$d79LCw>1GVC`1Kf$O8zmNT^qCUV?-N4iD*{-G&_p;%M`P?b;5APa9kK5{KKj*9^h=t0)A(Y*VaR;Ju#3_80!@U@7y6^4^sN3s_G0=R+M5R* z!bjH6IX^+(|K z`6#Bw1UNV;HeU$sbJqxt>}Xs7P?!ik(*X}AX2hDCKqNr%GX}c|)in%|JbK;-Ps_n; zK!e3Z#|-WbrICb?vsWP|LdUvT<0GL*WWRyznb*>>+X?v`nF0bqeLOt15OH*f6w$B7 zL->jWXsiH^c@Swp+5rjmDH!-86l21X4i+7~7lg&7@j12~bPbK6z-bjW7up{sLVXz= z=x|Ou3W5*lJSaYio`nF>K*)^E17uHd^aW;y#;-641)+Ed3>f|Vmn~q}8blP)djUG4{efvmF&B>g)A+;y3z7Z+`*80ixpM<>fnpVqJ?wt8 zKdz60k#KYayfk=G_L#c0JUL28u~Xe>@frO;pi1W0rVUI{ef{}-wU!Ap?d+I3WKoN?SMw_ zDwHqD*&kquIr69F z7V!J1tYBB7cpNMV#j$npi$FA{1uIE#{0Gob%nFb8IcE(V{3U0v!YLlzA8?!zqh~(? zoC-P*cv23LR<=yxSsRQRq0zG9&DyU%(GG$358K| LT3V*oW^(@rmESa0 literal 0 HcmV?d00001 diff --git a/docs/dist/html/ixml/DOMInterfaces.html b/docs/dist/html/ixml/DOMInterfaces.html new file mode 100644 index 0000000..df8753a --- /dev/null +++ b/docs/dist/html/ixml/DOMInterfaces.html @@ -0,0 +1,48 @@ + + + + + DOM Interfaces + + + + +

DOM Interfaces

+
The Document Object Model consists of a set of objects and interfaces +for accessing and manipulating documents. IXML does not implement all +the interfaces documented in the DOM2-Core recommendation but defines +a subset of the most useful interfaces. A description of the supported +interfaces and methods is presented in this section. + +

For a complete discussion on the object model, the object hierarchy, +etc., refer to section 1.1 of the DOM2-Core recommendation.

+ +
+
+
+ +o +Interface Node
+ +o +Interface Attr
+ +o +Interface CDATASection
+ +o +Interface Document
+ +o +Interface Element
+ +o +Interface NamedNodeMap
+ +o +Interface NodeList
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/General.html b/docs/dist/html/ixml/General.html new file mode 100644 index 0000000..3dbee59 --- /dev/null +++ b/docs/dist/html/ixml/General.html @@ -0,0 +1,16 @@ + + + + + General Bits + + + + +
+
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/IXMLAPI.html b/docs/dist/html/ixml/IXMLAPI.html new file mode 100644 index 0000000..107ca7a --- /dev/null +++ b/docs/dist/html/ixml/IXMLAPI.html @@ -0,0 +1,67 @@ + + + + + IXML API + + + + +

IXML API

+
The IXML API contains utility functions that are not part of the standard +DOM interfaces. They include functions to create a DOM structure from a +file or buffer, create an XML file from a DOM structure, and manipulate +DOMString objects.
+ +
+
+
+ +o +ixmlPrintDocument
Renders a Node and all sub-elements into an XML document representation. +
+ +o +ixmlPrintNode
Renders a Node and all sub-elements into an XML text representation. +
+ +o +ixmlDocumenttoString
Renders a Node and all sub-elements into an XML document representation. +
+ +o +ixmlNodetoString
Renders a Node and all sub-elements into an XML text representation. +
+ +o +ixmlRelaxParser
Makes the XML parser more tolerant to malformed text. +
+ +o +ixmlParseBuffer
Parses an XML text buffer converting it into an IXML DOM representation. +
+ +o +ixmlParseBufferEx
Parses an XML text buffer converting it into an IXML DOM representation. +
+ +o +ixmlLoadDocument
Parses an XML text file converting it into an IXML DOM representation. +
+ +o +ixmlLoadDocumentEx
Parses an XML text file converting it into an IXML DOM representation. +
+ +o +ixmlCloneDOMString
Clones an existing DOMString. +
+ +o +ixmlFreeDOMString
Frees a DOMString. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitAttr.html b/docs/dist/html/ixml/InterfaceitAttr.html new file mode 100644 index 0000000..a5db394 --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitAttr.html @@ -0,0 +1,27 @@ + + + + + Interface <I>Attr</I> + + + + +

Interface Attr

+
The Attr interface represents an attribute of an Element. +The document type definition (DTD) or schema usually dictate the +allowable attributes and values for a particular element. For more +information, refer to the Interface Attr section in the DOM2-Core.
+ +
+
+
+ +o +ixmlAttr_free
Frees an Attr node. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitCDATASection.html b/docs/dist/html/ixml/InterfaceitCDATASection.html new file mode 100644 index 0000000..dec96d4 --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitCDATASection.html @@ -0,0 +1,33 @@ + + + + + Interface <I>CDATASection</I> + + + + +

Interface CDATASection

+
The CDATASection is used to escape blocks of text containing +characters that would otherwise be regarded as markup. CDATA sections +cannot be nested. Their primary purpose is for including material such +XML fragments, without needing to escape all the delimiters. For more +information, refer to the Interface CDATASection section in the +DOM2-Core.
+ +
+
+
+ +o +ixmlCDATASection_init
Initializes a CDATASection node. +
+ +o +ixmlCDATASection_free
Frees a CDATASection node. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitDocument.html b/docs/dist/html/ixml/InterfaceitDocument.html new file mode 100644 index 0000000..5ffda03 --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitDocument.html @@ -0,0 +1,103 @@ + + + + + Interface <I>Document</I> + + + + +

Interface Document

+
The Document interface represents the entire XML document. +In essence, it is the root of the document tree and provides the +primary interface to the elements of the document. For more information, +refer to the Interface Document section in the DOM2Core.
+ +
+
+
+ +o +ixmlDocument_init
Initializes a Document node. +
+ +o +ixmlDocument_createDocumentEx
Creates a new empty Document node. +
+ +o +ixmlDocument_createDocument
Creates a new empty Document node. +
+ +o +ixmlDocument_createElementEx
Creates a new Element node with the given tag name. +
+ +o +ixmlDocument_createElement
Creates a new Element node with the given tag name. +
+ +o +ixmlDocument_createTextNodeEx
Creates a new Text node with the given data. +
+ +o +ixmlDocument_createTextNode
Creates a new Text node with the given data. +
+ +o +ixmlDocument_createCDATASectionEx
Creates a new CDATASection node with given data. +
+ +o +ixmlDocument_createCDATASection
Creates a new CDATASection node with given data. +
+ +o +ixmlDocument_createAttribute
Creates a new Attr node with the given name. +
+ +o +ixmlDocument_createAttributeEx
Creates a new Attr node with the given name. +
+ +o +ixmlDocument_getElementsByTagName
Returns a NodeList of all Elements that match the given tag name in the order in which they were encountered in a preorder traversal of the Document tree. +
+ +o +ixmlDocument_createElementNSEx
Creates a new Element node in the given qualified name and namespace URI. +
+ +o +ixmlDocument_createElementNS
Creates a new Element node in the given qualified name and namespace URI. +
+ +o +ixmlDocument_createAttributeNSEx
Creates a new Attr node with the given qualified name and namespace URI. +
+ +o +ixmlDocument_createAttributeNS
Creates a new Attr node with the given qualified name and namespace URI. +
+ +o +ixmlDocument_getElementsByTagNameNS
Returns a NodeList of Elements that match the given local name and namespace URI in the order they are encountered in a preorder traversal of the Document tree. +
+ +o +ixmlDocument_getElementById
Returns the Element whose ID matches that given id. +
+ +o +ixmlDocument_free
Frees a Document object and all Nodes associated with it. +
+ +o +ixmlDocument_importNode
Imports a Node from another Document into this Document. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitElement.html b/docs/dist/html/ixml/InterfaceitElement.html new file mode 100644 index 0000000..f0bc241 --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitElement.html @@ -0,0 +1,96 @@ + + + + + Interface <I>Element</I> + + + + +

Interface Element

+
The Element interface represents an element in an XML document. +Only Elements are allowed to have attributes, which are stored in the +attributes member of a Node. The Element interface +extends the Node interface and adds more operations to manipulate +attributes.
+ +
+
+
+ +o +ixmlElement_init
Initializes a IXML_Element node. +
+ +o +ixmlElement_getTagName
Returns the name of the tag as a constant string. +
+ +o +ixmlElement_getAttribute
Retrieves an attribute of an Element by name. +
+ +o +ixmlElement_setAttribute
Adds a new attribute to an Element. +
+ +o +ixmlElement_removeAttribute
Removes an attribute by name. +
+ +o +ixmlElement_getAttributeNode
Retrieves an attribute node by name. +
+ +o +ixmlElement_setAttributeNode
Adds a new attribute node to an Element. +
+ +o +ixmlElement_removeAttributeNode
Removes the specified attribute node from an Element. +
+ +o +ixmlElement_getElementsByTagName
Returns a NodeList of all descendant Elements with a given tag name, in the order in which they are encountered in a pre-order traversal of this Element tree. +
+ +o +ixmlElement_getAttributeNS
Retrieves an attribute value using the local name and namespace URI. +
+ +o +ixmlElement_setAttributeNS
Adds a new attribute to an Element using the local name and namespace URI. +
+ +o +ixmlElement_removeAttributeNS
Removes an attribute using the namespace URI and local name. +
+ +o +ixmlElement_getAttributeNodeNS
Retrieves an Attr node by local name and namespace URI. +
+ +o +ixmlElement_setAttributeNodeNS
Adds a new attribute node. +
+ +o +ixmlElement_getElementsByTagNameNS
Returns a NodeList of all descendant Elements with a given tag name, in the order in which they are encountered in the pre-order traversal of the Element tree. +
+ +o +ixmlElement_hasAttribute
Queries whether the Element has an attribute with the given name or a default value. +
+ +o +ixmlElement_hasAttributeNS
Queries whether the Element has an attribute with the given local name and namespace URI or has a default value for that attribute. +
+ +o +ixmlElement_free
Frees the given Element and any subtree of the Element. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitNamedNodeMap.html b/docs/dist/html/ixml/InterfaceitNamedNodeMap.html new file mode 100644 index 0000000..3a27ff5 --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitNamedNodeMap.html @@ -0,0 +1,59 @@ + + + + + Interface <I>NamedNodeMap</I> + + + + +

Interface NamedNodeMap

+
A NamedNodeMap object represents a list of objects that can be +accessed by name. A NamedNodeMap maintains the objects in +no particular order. The Node interface uses a NamedNodeMap +to maintain the attributes of a node.
+ +
+
+
+ +o +ixmlNamedNodeMap_getLength
Returns the number of items contained in this NamedNodeMap. +
+ +o +ixmlNamedNodeMap_getNamedItem
Retrieves a Node from the NamedNodeMap by name. +
+ +o +ixmlNamedNodeMap_setNamedItem
Adds a new Node to the NamedNodeMap using the Node name attribute. +
+ +o +ixmlNamedNodeMap_removeNamedItem
Removes a Node from a NamedNodeMap specified by name. +
+ +o +ixmlNamedNodeMap_item
Retrieves a Node from a NamedNodeMap specified by a numerical index. +
+ +o +ixmlNamedNodeMap_getNamedItemNS
Retrieves a Node from a NamedNodeMap specified by namespace URI and local name. +
+ +o +ixmlNamedNodeMap_setNamedItemNS
Adds a new Node to the NamedNodeMap using the Node local name and namespace URI attributes. +
+ +o +ixmlNamedNodeMap_removeNamedItemNS
Removes a Node from a NamedNodeMap specified by namespace URI and local name. +
+ +o +ixmlNamedNodeMap_free
Frees a NamedNodeMap. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitNode.html b/docs/dist/html/ixml/InterfaceitNode.html new file mode 100644 index 0000000..2bea174 --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitNode.html @@ -0,0 +1,114 @@ + + + + + Interface <I>Node</I> + + + + +

Interface Node

+
The Node interface forms the primary datatype for all other DOM +objects. Every other interface is derived from this interface, inheriting +its functionality. For more information, refer to DOM2-Core page 34.
+ +
+
+
+ +o +ixmlNode_getNodeName
Returns the name of the Node, depending on what type of Node it is, in a read-only string. +
+ +o +ixmlNode_getNodeValue
Returns the value of the Node as a string. +
+ +o +ixmlNode_setNodeValue
Assigns a new value to a Node. +
+ +o +ixmlNode_getNodeType
Retrieves the type of a Node. +
+ +o +ixmlNode_getParentNode
Retrieves the parent Node for a Node. +
+ +o +ixmlNode_getChildNodes
Retrieves the list of children of a Node in a NodeList structure. +
+ +o +ixmlNode_getFirstChild
Retrieves the first child Node of a Node. +
+ +o +ixmlNode_getLastChild
Retrieves the last child Node of a Node. +
+ +o +ixmlNode_getPreviousSibling
Retrieves the sibling Node immediately preceding this Node. +
+ +o +ixmlNode_getNextSibling
Retrieves the sibling Node immediately following this Node. +
+ +o +ixmlNode_getAttributes
Retrieves the attributes of a Node, if it is an Element node, in a NamedNodeMap structure. +
+ +o +ixmlNode_getOwnerDocument
Retrieves the document object associated with this Node. +
+ +o +ixmlNode_getNamespaceURI
Retrieves the namespace URI for a Node as a DOMString. +
+ +o +ixmlNode_getPrefix
Retrieves the namespace prefix, if present. +
+ +o +ixmlNode_getLocalName
Retrieves the local name of a Node, if present. +
+ +o +ixmlNode_insertBefore
Inserts a new child Node before the existing child Node. +
+ +o +ixmlNode_replaceChild
Replaces an existing child Node with a new child Node in the list of children of a Node. +
+ +o +ixmlNode_removeChild
Removes a child from the list of children of a Node. +
+ +o +ixmlNode_appendChild
Appends a child Node to the list of children of a Node. +
+ +o +ixmlNode_hasChildNodes
Queries whether or not a Node has children. +
+ +o +ixmlNode_cloneNode
Clones a Node. +
+ +o +ixmlNode_hasAttributes
Queries whether this Node has attributes. +
+ +o +ixmlNode_free
Frees a Node and all Nodes in its subtree. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/InterfaceitNodeList.html b/docs/dist/html/ixml/InterfaceitNodeList.html new file mode 100644 index 0000000..54ecabe --- /dev/null +++ b/docs/dist/html/ixml/InterfaceitNodeList.html @@ -0,0 +1,35 @@ + + + + + Interface <I>NodeList</I> + + + + +

Interface NodeList

+
The NodeList interface abstracts an ordered collection of +nodes. Note that changes to the underlying nodes will change +the nodes contained in a NodeList. The DOM2-Core refers to +this as being live.
+ +
+
+
+ +o +ixmlNodeList_item
Retrieves a Node from a NodeList specified by a numerical index. +
+ +o +ixmlNodeList_length
Returns the number of Nodes in a NodeList. +
+ +o +ixmlNodeList_free
Frees a NodeList object. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/Introduction.html b/docs/dist/html/ixml/Introduction.html new file mode 100644 index 0000000..ad5fea3 --- /dev/null +++ b/docs/dist/html/ixml/Introduction.html @@ -0,0 +1,40 @@ + + + + + Introduction + + + + +

Introduction

+
The Linux DOM2 XML Parser Version 1.2 (IXML) is a lightweight, portable XML +parser supporting the standard Document Object Model (DOM) Level 2 +interfaces. The parser uses a C-style interface, making it idea for small, +embedded applications. This document describes the interfaces supported by +IXML 1.2, referencing the W3C DOM2 recommendations when necessary, and the +additional utility application programming interfaces (APIs) that it +supports. + +

Note that this document assumes that the reader has a copy of the DOM2-Core +recommendation. Refer to the link below to obtain a copy. Only a brief +description is included here and the reader is pointed to the DOM2-Core +recommendation for more details. This document does, however, clarify +IXML-specific behavior when the recommendation is unclear. + +

About DOM + +

The Document Object Model (DOM) is a set of interfaces that give a +programmatic interface to documents. It provides a platform-neutral and +language-neutral interface for random access and updating elements inside +XML documents. DOM Level 1 provided the basic interfaces to access +document elements. DOM Level 2 extended the interfaces to provide proper +support for XML namespaces. + +

The latest DOM 2 recommendation is maintained by W3C and is available from +http://www.w3.org/TR/DOM-Level-2-Core.

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/License.html b/docs/dist/html/ixml/License.html new file mode 100644 index 0000000..d1668c7 --- /dev/null +++ b/docs/dist/html/ixml/License.html @@ -0,0 +1,45 @@ + + + + + License + + + + +

License

+
+
+Copyright (c) 2000-2003 Intel Corporation +All rights reserved. +
+ +

Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +

    +
  • Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +
  • Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +
  • Neither name of Intel Corporation nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. +
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/icon1.gif b/docs/dist/html/ixml/icon1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f78f30eb981225beb16035974453af044eaaed3d GIT binary patch literal 326 zcmZ?wbhEHbSJz>XZiWhW+$CxX1K<{@Q;PzA3MW)Hil!>)yLQv z&I+YZWR4Dq0Qrf5 zE!m-=z(Yr>|42iEfdETiOVhyu2Ne$2qlXS;Sjcg9G-()EC{6Ng4B9Bb&hGxWX`zGB ztnbe@Mi#u2t#oD*5s{NGS5Q=P;Sv=Pl~k5hQB-wRQ&*Q#oU7r^r6eV#G~HwQ3KvHP FYXI`hOxged literal 0 HcmV?d00001 diff --git a/docs/dist/html/ixml/icon2.gif b/docs/dist/html/ixml/icon2.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cbe01a831d9c27158ef1ade66cc25446fac9018 GIT binary patch literal 326 zcmZ?wbhEHbvUV_sg0vVRlep zUT#ibUH$CLjP97|8hg8t^_%zaId~E%=;f7aZRKxk>swYjH7c^q#Kc`$*&sZ;+`~Ol zL*3NdE7jE{7APVst6^&DtgCA)C##W~TG-k;MN7*vC@7wR8bI+U3nR!J9S{NX69Zea zLqmawj#U4Vh6DovmcEvzg9Q#M9Ii(X9muedZ+!$E~PkE!<|b>N=j+E$MO{}jttfS DX0}r~ literal 0 HcmV?d00001 diff --git a/docs/dist/html/ixml/index.html b/docs/dist/html/ixml/index.html new file mode 100644 index 0000000..eb4bb7b --- /dev/null +++ b/docs/dist/html/ixml/index.html @@ -0,0 +1,41 @@ + + + + + IXML v1.2 + + + + +

IXML v1.2

+
+Linux DOM2 XML Parser Version 1.2 + +

Copyright (C) 2000-2003 Intel Corporation ALL RIGHTS RESERVED + +

Revision 1.2.1 (Tue 04 Jul 2006 04:58:36 PM EEST) +

+ +
+
+
+ +o +Introduction
+ +o +License
+ +o +BOOL
+ +o +DOM Interfaces
+ +o +IXML API
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlAttr_free.html b/docs/dist/html/ixml/ixmlAttr_free.html new file mode 100644 index 0000000..30488e3 --- /dev/null +++ b/docs/dist/html/ixml/ixmlAttr_free.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlAttr_free + + + + +

EXPORT_SPEC void ixmlAttr_free

(IXML_Attr* attrNode )

Frees an Attr node.
+ + +
+

Documentation

+
Frees an Attr node. + +

+
Parameters:
attrNode - The Attr node to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlCDATASection_free.html b/docs/dist/html/ixml/ixmlCDATASection_free.html new file mode 100644 index 0000000..5137a83 --- /dev/null +++ b/docs/dist/html/ixml/ixmlCDATASection_free.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlCDATASection_free + + + + +

EXPORT_SPEC void ixmlCDATASection_free

(IXML_CDATASection* nodeptr )

Frees a CDATASection node.
+ + +
+

Documentation

+
Frees a CDATASection node. + +

+
Parameters:
nodeptr - The CDATASection node to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlCDATASection_init.html b/docs/dist/html/ixml/ixmlCDATASection_init.html new file mode 100644 index 0000000..3d31b60 --- /dev/null +++ b/docs/dist/html/ixml/ixmlCDATASection_init.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlCDATASection_init + + + + +

EXPORT_SPEC void ixmlCDATASection_init

(IXML_CDATASection* nodeptr )

Initializes a CDATASection node.
+ + +
+

Documentation

+
Initializes a CDATASection node. + +

+
Parameters:
nodeptr - The CDATASection node to initialize.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlCloneDOMString.html b/docs/dist/html/ixml/ixmlCloneDOMString.html new file mode 100644 index 0000000..5cc252a --- /dev/null +++ b/docs/dist/html/ixml/ixmlCloneDOMString.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC DOMString ixmlCloneDOMString + + + + +

EXPORT_SPEC DOMString ixmlCloneDOMString

(const DOMString src )

Clones an existing DOMString.
+ + +
+

Documentation

+
Clones an existing DOMString. + +

+
Parameters:
src - The source DOMString to clone.
Returns:
[DOMString] A new DOMString that is a duplicate of the +original or NULL if the operation could not +be completed. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createAttribute.html b/docs/dist/html/ixml/ixmlDocument_createAttribute.html new file mode 100644 index 0000000..fab01cc --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createAttribute.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC IXML_Attr* ixmlDocument_createAttribute + + + + +

EXPORT_SPEC IXML_Attr* ixmlDocument_createAttribute

(IXML_Document* doc,
  char* name )

Creates a new Attr node with the given name.
+ + +
+

Documentation

+
Creates a new Attr node with the given name. + +

+
Parameters:
doc - The owner Document of the new node. +
name - The name of the new attribute.
Returns:
[Attr*] A pointer to the new Attr or NULL on failure. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createAttributeEx.html b/docs/dist/html/ixml/ixmlDocument_createAttributeEx.html new file mode 100644 index 0000000..c9a7831 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createAttributeEx.html @@ -0,0 +1,38 @@ + + + + + EXPORT_SPEC int ixmlDocument_createAttributeEx + + + + +

EXPORT_SPEC int ixmlDocument_createAttributeEx

(IXML_Document* doc,
  char* name,
  IXML_Attr** attrNode )

Creates a new Attr node with the given name.
+ + +
+

Documentation

+
Creates a new Attr node with the given name. + +

The ixmlDocument_createAttributeEx API differs from the +ixmlDocument_createAttribute API in that it returns an error code +describing the reason for failure rather than just NULL. + +

+
Parameters:
doc - The owner Document of the new +node. +
name - The name of the new attribute. +
attrNode - A pointer to a Attr where the new +object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc or name +is NULL. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createAttributeNS.html b/docs/dist/html/ixml/ixmlDocument_createAttributeNS.html new file mode 100644 index 0000000..1592e62 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createAttributeNS.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC IXML_Attr* ixmlDocument_createAttributeNS + + + + +

EXPORT_SPEC IXML_Attr* ixmlDocument_createAttributeNS

(IXML_Document* doc,
  DOMString namespaceURI,
  DOMString qualifiedName )

Creates a new Attr node with the given qualified name and namespace URI.
+ + +
+

Documentation

+
Creates a new Attr node with the given qualified name and +namespace URI. + +

+
Parameters:
doc - The owner Document of the new +Attr. +
namespaceURI - The namespace URI for the attribute. +
qualifiedName - The qualified name of the attribute.
Returns:
[Attr*] A pointer to the new Attr or NULL on failure. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createAttributeNSEx.html b/docs/dist/html/ixml/ixmlDocument_createAttributeNSEx.html new file mode 100644 index 0000000..3d8352f --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createAttributeNSEx.html @@ -0,0 +1,40 @@ + + + + + EXPORT_SPEC int ixmlDocument_createAttributeNSEx + + + + +

EXPORT_SPEC int ixmlDocument_createAttributeNSEx

(IXML_Document* doc,
  DOMString namespaceURI,
  DOMString qualifiedName,
  IXML_Attr** attrNode )

Creates a new Attr node with the given qualified name and namespace URI.
+ + +
+

Documentation

+
Creates a new Attr node with the given qualified name and +namespace URI. + +

The ixmlDocument_createAttributeNSEx API differs from the +ixmlDocument_createAttributeNS API in that it returns an error code +describing the reason for failure rather than just NULL. + +

+
Parameters:
doc - The owner Document of the new +Attr. +
namespaceURI - The namespace URI for the attribute. +
qualifiedName - The qualified name of the attribute. +
attrNode - A pointer to an Attr where the +new object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc, +namespaceURI, or qualifiedName is NULL. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createCDATASection.html b/docs/dist/html/ixml/ixmlDocument_createCDATASection.html new file mode 100644 index 0000000..d9bd1c1 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createCDATASection.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC IXML_CDATASection* ixmlDocument_createCDATASection + + + + +

EXPORT_SPEC IXML_CDATASection* ixmlDocument_createCDATASection

(IXML_Document* doc,
  DOMString data )

Creates a new CDATASection node with given data.
+ + +
+

Documentation

+
Creates a new CDATASection node with given data. + +

+
Parameters:
doc - The owner Document of the new +node. +
data - The data to associate with the new +CDATASection node.
Returns:
[CDATASection*] A pointer to the new CDATASection or +NULL on failure. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createCDATASectionEx.html b/docs/dist/html/ixml/ixmlDocument_createCDATASectionEx.html new file mode 100644 index 0000000..24f5210 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createCDATASectionEx.html @@ -0,0 +1,39 @@ + + + + + EXPORT_SPEC int ixmlDocument_createCDATASectionEx + + + + +

EXPORT_SPEC int ixmlDocument_createCDATASectionEx

(IXML_Document* doc,
  DOMString data,
  IXML_CDATASection** cdNode )

Creates a new CDATASection node with given data.
+ + +
+

Documentation

+
Creates a new CDATASection node with given data. + +

The ixmlDocument_createCDATASectionEx API differs from the +ixmlDocument_createCDATASection API in that it returns an error code +describing the reason for failure rather than just NULL. + +

+
Parameters:
doc - The owner Document of the new +node. +
data - The data to associate with the new +CDATASection node. +
cdNode - A pointer to a Node where the +new object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc or {\bd data} +is NULL. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createDocument.html b/docs/dist/html/ixml/ixmlDocument_createDocument.html new file mode 100644 index 0000000..78cffa6 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createDocument.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC IXML_Document* ixmlDocument_createDocument + + + + +

EXPORT_SPEC IXML_Document* ixmlDocument_createDocument

()

Creates a new empty Document node.
+ + +
+

Documentation

+
Creates a new empty Document node. + +

+
Returns:
[Document*] A pointer to the new Document or NULL on +failure.

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createDocumentEx.html b/docs/dist/html/ixml/ixmlDocument_createDocumentEx.html new file mode 100644 index 0000000..d17421f --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createDocumentEx.html @@ -0,0 +1,32 @@ + + + + + EXPORT_SPEC int ixmlDocument_createDocumentEx + + + + +

EXPORT_SPEC int ixmlDocument_createDocumentEx

(IXML_Document** doc )

Creates a new empty Document node.
+ + +
+

Documentation

+
Creates a new empty Document node. The +ixmlDocument_createDocumentEx API differs from the +ixmlDocument_createDocument API in that it returns an error code +describing the reason for the failure rather than just NULL. + +

+
Parameters:
doc - Pointer to a Document where the +new object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createElement.html b/docs/dist/html/ixml/ixmlDocument_createElement.html new file mode 100644 index 0000000..2203a60 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createElement.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC IXML_Element* ixmlDocument_createElement + + + + +

EXPORT_SPEC IXML_Element* ixmlDocument_createElement

(IXML_Document* doc,
  const DOMString tagName )

Creates a new Element node with the given tag name.
+ + +
+

Documentation

+
Creates a new Element node with the given tag name. The new +Element node has a nodeName of tagName and +the localName, prefix, and namespaceURI set +to NULL. To create an Element with a namespace, +see ixmlDocument_createElementNS. + +

+
Parameters:
doc - The owner Document of the new node. +
tagName - The tag name of the new Element node.
Returns:
[Document*] A pointer to the new Element or NULL on +failure. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createElementEx.html b/docs/dist/html/ixml/ixmlDocument_createElementEx.html new file mode 100644 index 0000000..d10fda0 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createElementEx.html @@ -0,0 +1,42 @@ + + + + + EXPORT_SPEC int ixmlDocument_createElementEx + + + + +

EXPORT_SPEC int ixmlDocument_createElementEx

(IXML_Document* doc,
  const DOMString tagName,
  IXML_Element** rtElement )

Creates a new Element node with the given tag name.
+ + +
+

Documentation

+
Creates a new Element node with the given tag name. The new +Element node has a nodeName of tagName and +the localName, prefix, and namespaceURI set +to NULL. To create an Element with a namespace, +see ixmlDocument_createElementNS. + +

The ixmlDocument_createElementEx API differs from the +ixmlDocument_createElement API in that it returns an error code +describing the reason for failure rather than just NULL. + +

+
Parameters:
doc - The owner Document of the new node. +
tagName - The tag name of the new Element +node. +
rtElement - Pointer to an Element where the new +object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc or +tagName is NULL. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createElementNS.html b/docs/dist/html/ixml/ixmlDocument_createElementNS.html new file mode 100644 index 0000000..2118ae8 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createElementNS.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC IXML_Element* ixmlDocument_createElementNS + + + + +

EXPORT_SPEC IXML_Element* ixmlDocument_createElementNS

(IXML_Document* doc,
  DOMString namespaceURI,
  DOMString qualifiedName )

Creates a new Element node in the given qualified name and namespace URI.
+ + +
+

Documentation

+
Creates a new Element node in the given qualified name and +namespace URI. + +

+
Parameters:
doc - The owner Document of the new node. +
namespaceURI - The namespace URI for the new +Element. +
qualifiedName - The qualified name of the new +Element.
Returns:
[Element*] A pointer to the new Element or NULL on +failure. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createElementNSEx.html b/docs/dist/html/ixml/ixmlDocument_createElementNSEx.html new file mode 100644 index 0000000..86dbafb --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createElementNSEx.html @@ -0,0 +1,42 @@ + + + + + EXPORT_SPEC int ixmlDocument_createElementNSEx + + + + +

EXPORT_SPEC int ixmlDocument_createElementNSEx

(IXML_Document* doc,
  DOMString namespaceURI,
  DOMString qualifiedName,
  IXML_Element** rtElement )

Creates a new Element node in the given qualified name and namespace URI.
+ + +
+

Documentation

+
Creates a new Element node in the given qualified name and +namespace URI. + +

The ixmlDocument_createElementNSEx API differs from the +ixmlDocument_createElementNS API in that it returns an error code +describing the reason for failure rather than just NULL. + +

+
Parameters:
doc - The owner Document of the new +node. +
namespaceURI - The namespace URI for the new +Element. +
qualifiedName - The qualified name of the new +Element. +
rtElement - A pointer to an Element where the +new object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc, +namespaceURI, or qualifiedName is NULL. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createTextNode.html b/docs/dist/html/ixml/ixmlDocument_createTextNode.html new file mode 100644 index 0000000..e9f7e5e --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createTextNode.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlDocument_createTextNode + + + + +

EXPORT_SPEC IXML_Node* ixmlDocument_createTextNode

(IXML_Document* doc,
  const DOMString data )

Creates a new Text node with the given data.
+ + +
+

Documentation

+
Creates a new Text node with the given data. + +

+
Parameters:
doc - The owner Document of the new node. +
data - The data to associate with the new Text +node.
Returns:
[Node*] A pointer to the new Node or NULL on failure. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_createTextNodeEx.html b/docs/dist/html/ixml/ixmlDocument_createTextNodeEx.html new file mode 100644 index 0000000..e18f413 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_createTextNodeEx.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int ixmlDocument_createTextNodeEx + + + + +

EXPORT_SPEC int ixmlDocument_createTextNodeEx

(IXML_Document* doc,
  const DOMString data,
  IXML_Node** textNode )

Creates a new Text node with the given data.
+ + +
+

Documentation

+
Creates a new Text node with the given data. +The ixmlDocument_createTextNodeEx API differs from the +ixmlDocument_createTextNode API in that it returns an error code +describing the reason for failure rather than just NULL. + +

+
Parameters:
doc - The owner Document of the new node. +
data - The data to associate with the new +Text node. +
textNode - A pointer to a Node where the new +object will be stored.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc or data +is NULL. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_free.html b/docs/dist/html/ixml/ixmlDocument_free.html new file mode 100644 index 0000000..3034b19 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_free.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC void ixmlDocument_free + + + + +

EXPORT_SPEC void ixmlDocument_free

(IXML_Document* doc )

Frees a Document object and all Nodes associated with it.
+ + +
+

Documentation

+
Frees a Document object and all Nodes associated with it. +Any Nodes extracted via any other interface function, e.g. +ixmlDocument_GetElementById, become invalid after this call unless +explicitly cloned. + +

+
Parameters:
doc - The Document to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_getElementById.html b/docs/dist/html/ixml/ixmlDocument_getElementById.html new file mode 100644 index 0000000..9e0ac60 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_getElementById.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC IXML_Element* ixmlDocument_getElementById + + + + +

EXPORT_SPEC IXML_Element* ixmlDocument_getElementById

(IXML_Document* doc,
  DOMString tagName )

Returns the Element whose ID matches that given id.
+ + +
+

Documentation

+
Returns the Element whose ID matches that given id. + +

+
Parameters:
doc - The owner Document of the +Element. +
tagName - The name of the Element.
Returns:
[Element*] A pointer to the matching Element or +NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_getElementsByTagName.html b/docs/dist/html/ixml/ixmlDocument_getElementsByTagName.html new file mode 100644 index 0000000..b9f1906 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_getElementsByTagName.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC IXML_NodeList* ixmlDocument_getElementsByTagName + + + + +

EXPORT_SPEC IXML_NodeList* ixmlDocument_getElementsByTagName

(IXML_Document* doc,
  DOMString tagName )

Returns a NodeList of all Elements that match the given tag name in the order in which they were encountered in a preorder traversal of the Document tree.
+ + +
+

Documentation

+
Returns a NodeList of all Elements that match the given +tag name in the order in which they were encountered in a preorder +traversal of the Document tree. + +

+
Parameters:
doc - The Document to search. +
tagName - The tag name to find.
Returns:
[NodeList*] A pointer to a NodeList containing the +matching items or NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_getElementsByTagNameNS.html b/docs/dist/html/ixml/ixmlDocument_getElementsByTagNameNS.html new file mode 100644 index 0000000..3fcc775 --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_getElementsByTagNameNS.html @@ -0,0 +1,34 @@ + + + + + EXPORT_SPEC IXML_NodeList* ixmlDocument_getElementsByTagNameNS + + + + +

EXPORT_SPEC IXML_NodeList* ixmlDocument_getElementsByTagNameNS

(IXML_Document* doc,
  DOMString namespaceURI,
  DOMString localName )

Returns a NodeList of Elements that match the given local name and namespace URI in the order they are encountered in a preorder traversal of the Document tree.
+ + +
+

Documentation

+
Returns a NodeList of Elements that match the given +local name and namespace URI in the order they are encountered +in a preorder traversal of the Document tree. Either +namespaceURI or localName can be the special "*" +character, which matches any namespace or any local name respectively. + +

+
Parameters:
doc - The Document to search. +
namespaceURI - The namespace of the elements to +find or "*" to match any +namespace. +
localName - The local name of the elements to +find or "*" to match any local +name.
Returns:
[NodeList*] A pointer to a NodeList containing the +matching items or NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_importNode.html b/docs/dist/html/ixml/ixmlDocument_importNode.html new file mode 100644 index 0000000..3415a4c --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_importNode.html @@ -0,0 +1,43 @@ + + + + + EXPORT_SPEC int ixmlDocument_importNode + + + + +

EXPORT_SPEC int ixmlDocument_importNode

(IXML_Document* doc,
  IXML_Node* importNode,
  BOOL deep,
  IXML_Node** rtNode )

Imports a Node from another Document into this Document.
+ + +
+

Documentation

+
Imports a Node from another Document into this +Document. The new Node does not a have parent node: it is a +clone of the original Node with the ownerDocument set to +doc. The deep parameter controls whether all the children +of the Node are imported. Refer to the DOM2-Core recommendation +for details on importing specific node types. + +

+
Parameters:
doc - The Document into which to import. +
importNode - The Node to import. +
deep - TRUE to import all children of +importNode or FALSE to import only the +root node. +
rtNode - A pointer to a new Node owned by +doc.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either doc or +importNode is not a valid pointer. +
  • IXML_NOT_SUPPORTED_ERR: importNode is a +Document, which cannot be imported. +
  • IXML_FAILED: The import operation failed because the +Node to be imported could not be cloned. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocument_init.html b/docs/dist/html/ixml/ixmlDocument_init.html new file mode 100644 index 0000000..f2db8ee --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocument_init.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlDocument_init + + + + +

EXPORT_SPEC void ixmlDocument_init

(IXML_Document* nodeptr )

Initializes a Document node.
+ + +
+

Documentation

+
Initializes a Document node. + +

+
Parameters:
nodeptr - The Document node to initialize.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlDocumenttoString.html b/docs/dist/html/ixml/ixmlDocumenttoString.html new file mode 100644 index 0000000..d7c82ae --- /dev/null +++ b/docs/dist/html/ixml/ixmlDocumenttoString.html @@ -0,0 +1,33 @@ + + + + + DOMString ixmlDocumenttoString + + + + +

DOMString ixmlDocumenttoString

(IXML_Document* doc)

Renders a Node and all sub-elements into an XML document representation.
+ + +
+

Documentation

+
Renders a Node and all sub-elements into an XML document +representation. The caller is required to free the DOMString +returned from this function using ixmlFreeDOMString when it +is no longer required. + +

Note that this function can be used for any Node-derived +interface. The difference between ixmlDocumenttoString and +ixmlNodetoString is ixmlDocumenttoString includes the XML +prolog while ixmlNodetoString only produces XML elements. An XML +document is not well formed unless it includes the prolog +and at least one element. + +

+
Returns:
[DOMString] A DOMString with the XML text representation +of the DOM tree or NULL on an error.

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_free.html b/docs/dist/html/ixml/ixmlElement_free.html new file mode 100644 index 0000000..c96604c --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_free.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlElement_free + + + + +

EXPORT_SPEC void ixmlElement_free

(IXML_Element* element )

Frees the given Element and any subtree of the Element.
+ + +
+

Documentation

+
Frees the given Element and any subtree of the Element. + +

+
Parameters:
element - The Element to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getAttribute.html b/docs/dist/html/ixml/ixmlElement_getAttribute.html new file mode 100644 index 0000000..6df3db4 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getAttribute.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC DOMString ixmlElement_getAttribute + + + + +

EXPORT_SPEC DOMString ixmlElement_getAttribute

(IXML_Element* element,
  DOMString name )

Retrieves an attribute of an Element by name.
+ + +
+

Documentation

+
Retrieves an attribute of an Element by name. + +

+
Parameters:
element - The Element from which to retrieve the +attribute. +
name - The name of the attribute to retrieve.
Returns:
[DOMString] A DOMString representing the value of the +attribute. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getAttributeNS.html b/docs/dist/html/ixml/ixmlElement_getAttributeNS.html new file mode 100644 index 0000000..22475a6 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getAttributeNS.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC DOMString ixmlElement_getAttributeNS + + + + +

EXPORT_SPEC DOMString ixmlElement_getAttributeNS

(IXML_Element* element,
  DOMString namespaceURI,
  DOMString localname )

Retrieves an attribute value using the local name and namespace URI.
+ + +
+

Documentation

+
Retrieves an attribute value using the local name and namespace URI. + +

+
Parameters:
element - The Element from which to get the +attribute value. +
namespaceURI - The namespace URI of the attribute. +
localname - The local name of the attribute.
Returns:
[DOMString] A DOMString representing the value of the +matching attribute. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getAttributeNode.html b/docs/dist/html/ixml/ixmlElement_getAttributeNode.html new file mode 100644 index 0000000..e70bfa2 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getAttributeNode.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC IXML_Attr* ixmlElement_getAttributeNode + + + + +

EXPORT_SPEC IXML_Attr* ixmlElement_getAttributeNode

(IXML_Element* element,
  DOMString name )

Retrieves an attribute node by name.
+ + +
+

Documentation

+
Retrieves an attribute node by name. See +ixmlElement_getAttributeNodeNS to retrieve an attribute node using +a qualified name or namespace URI. + +

+
Parameters:
element - The Element from which to get the +attribute node. +
name - The name of the attribute node to find.
Returns:
[Attr*] A pointer to the attribute matching name or +NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getAttributeNodeNS.html b/docs/dist/html/ixml/ixmlElement_getAttributeNodeNS.html new file mode 100644 index 0000000..f4af556 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getAttributeNodeNS.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC IXML_Attr* ixmlElement_getAttributeNodeNS + + + + +

EXPORT_SPEC IXML_Attr* ixmlElement_getAttributeNodeNS

(IXML_Element* element,
  DOMString namespaceURI,
  DOMString localName )

Retrieves an Attr node by local name and namespace URI.
+ + +
+

Documentation

+
Retrieves an Attr node by local name and namespace URI. + +

+
Parameters:
element - The Element from which to get the +attribute. +
namespaceURI - The namespace URI of the attribute. +
localName - The local name of the attribute.
Returns:
[Attr*] A pointer to an Attr or NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getElementsByTagName.html b/docs/dist/html/ixml/ixmlElement_getElementsByTagName.html new file mode 100644 index 0000000..bfe498d --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getElementsByTagName.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC IXML_NodeList* ixmlElement_getElementsByTagName + + + + +

EXPORT_SPEC IXML_NodeList* ixmlElement_getElementsByTagName

(IXML_Element* element,
  DOMString tagName )

Returns a NodeList of all descendant Elements with a given tag name, in the order in which they are encountered in a pre-order traversal of this Element tree.
+ + +
+

Documentation

+
Returns a NodeList of all descendant Elements with +a given tag name, in the order in which they are encountered in a +pre-order traversal of this Element tree. + +

+
Parameters:
element - The Element from which to start +the search. +
tagName - The name of the tag for which to +search.
Returns:
[NodeList*] A NodeList of the matching Elements or +NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getElementsByTagNameNS.html b/docs/dist/html/ixml/ixmlElement_getElementsByTagNameNS.html new file mode 100644 index 0000000..d0cf38b --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getElementsByTagNameNS.html @@ -0,0 +1,31 @@ + + + + + EXPORT_SPEC IXML_NodeList* ixmlElement_getElementsByTagNameNS + + + + +

EXPORT_SPEC IXML_NodeList* ixmlElement_getElementsByTagNameNS

(IXML_Element* element,
  DOMString namespaceURI,
  DOMString localName )

Returns a NodeList of all descendant Elements with a given tag name, in the order in which they are encountered in the pre-order traversal of the Element tree.
+ + +
+

Documentation

+
Returns a NodeList of all descendant Elements with a +given tag name, in the order in which they are encountered in the +pre-order traversal of the Element tree. + +

+
Parameters:
element - The Element from which to start +the search. +
namespaceURI - The namespace URI of the +Elements to find. +
localName - The local name of the Elements +to find.
Returns:
[NodeList*] A NodeList of matching Elements or +NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_getTagName.html b/docs/dist/html/ixml/ixmlElement_getTagName.html new file mode 100644 index 0000000..3c20b73 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_getTagName.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC const DOMString ixmlElement_getTagName + + + + +

EXPORT_SPEC const DOMString ixmlElement_getTagName

(IXML_Element* element )

Returns the name of the tag as a constant string.
+ + +
+

Documentation

+
Returns the name of the tag as a constant string. + +

+
Parameters:
element - The Element from which to retrieve the +name.
Returns:
[const DOMString] A DOMString representing the name of the +Element. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_hasAttribute.html b/docs/dist/html/ixml/ixmlElement_hasAttribute.html new file mode 100644 index 0000000..d00ca29 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_hasAttribute.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC BOOL ixmlElement_hasAttribute + + + + +

EXPORT_SPEC BOOL ixmlElement_hasAttribute

(IXML_Element* element,
  DOMString name )

Queries whether the Element has an attribute with the given name or a default value.
+ + +
+

Documentation

+
Queries whether the Element has an attribute with the given name +or a default value. + +

+
Parameters:
element - The Element on which to check for an +attribute. +
name - The name of the attribute for which to check.
Returns:
[BOOL] TRUE if the Element has an attribute with +this name or has a default value for that attribute, +otherwise FALSE. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_hasAttributeNS.html b/docs/dist/html/ixml/ixmlElement_hasAttributeNS.html new file mode 100644 index 0000000..0616675 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_hasAttributeNS.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC BOOL ixmlElement_hasAttributeNS + + + + +

EXPORT_SPEC BOOL ixmlElement_hasAttributeNS

(IXML_Element* element,
  DOMString namespaceURI,
  DOMString localName )

Queries whether the Element has an attribute with the given local name and namespace URI or has a default value for that attribute.
+ + +
+

Documentation

+
Queries whether the Element has an attribute with the given +local name and namespace URI or has a default value for that attribute. + +

+
Parameters:
element - The Element on which to check for the +attribute. +
namespaceURI - The namespace URI of the attribute. +
localName - The local name of the attribute.
Returns:
[BOOL] TRUE if the Element has an attribute with +the given namespace and local name or has a default +value for that attribute, otherwise FALSE. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_init.html b/docs/dist/html/ixml/ixmlElement_init.html new file mode 100644 index 0000000..5c0fcff --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_init.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlElement_init + + + + +

EXPORT_SPEC void ixmlElement_init

(IXML_Element* element )

Initializes a IXML_Element node.
+ + +
+

Documentation

+
Initializes a IXML_Element node. + +

+
Parameters:
element - The Element to initialize.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_removeAttribute.html b/docs/dist/html/ixml/ixmlElement_removeAttribute.html new file mode 100644 index 0000000..cc469ed --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_removeAttribute.html @@ -0,0 +1,30 @@ + + + + + EXPORT_SPEC int ixmlElement_removeAttribute + + + + +

EXPORT_SPEC int ixmlElement_removeAttribute

(IXML_Element* element,
  DOMString name )

Removes an attribute by name.
+ + +
+

Documentation

+
Removes an attribute by name. + +

+
Parameters:
element - The Element from which to remove the +attribute. +
name - The name of the attribute to remove.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element or +name is NULL. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_removeAttributeNS.html b/docs/dist/html/ixml/ixmlElement_removeAttributeNS.html new file mode 100644 index 0000000..5601ba3 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_removeAttributeNS.html @@ -0,0 +1,31 @@ + + + + + EXPORT_SPEC int ixmlElement_removeAttributeNS + + + + +

EXPORT_SPEC int ixmlElement_removeAttributeNS

(IXML_Element* element,
  DOMString namespaceURI,
  DOMString localName )

Removes an attribute using the namespace URI and local name.
+ + +
+

Documentation

+
Removes an attribute using the namespace URI and local name. + +

+
Parameters:
element - The Element from which to remove the +the attribute. +
namespaceURI - The namespace URI of the attribute. +
localName - The local name of the attribute.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element, +namespaceURI, or localName is NULL. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_removeAttributeNode.html b/docs/dist/html/ixml/ixmlElement_removeAttributeNode.html new file mode 100644 index 0000000..7dc62a3 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_removeAttributeNode.html @@ -0,0 +1,35 @@ + + + + + EXPORT_SPEC int ixmlElement_removeAttributeNode + + + + +

EXPORT_SPEC int ixmlElement_removeAttributeNode

(IXML_Element* element,
  IXML_Attr* oldAttr,
  IXML_Attr** rtAttr )

Removes the specified attribute node from an Element.
+ + +
+

Documentation

+
Removes the specified attribute node from an Element. + +

+
Parameters:
element - The Element from which to remove +the attribute. +
oldAttr - The attribute to remove from the +Element. +
rtAttr - A pointer to an attribute in which to +place the removed attribute.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element or +oldAttr is NULL. +
  • IXML_NOT_FOUND_ERR: oldAttr is not among the list +attributes of element. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_setAttribute.html b/docs/dist/html/ixml/ixmlElement_setAttribute.html new file mode 100644 index 0000000..ca6838e --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_setAttribute.html @@ -0,0 +1,39 @@ + + + + + EXPORT_SPEC int ixmlElement_setAttribute + + + + +

EXPORT_SPEC int ixmlElement_setAttribute

(IXML_Element* element,
  DOMString name,
  DOMString value )

Adds a new attribute to an Element.
+ + +
+

Documentation

+
Adds a new attribute to an Element. If an attribute with the same +name already exists, the attribute value will be updated with the +new value in value. + +

+
Parameters:
element - The Element on which to set the +attribute. +
name - The name of the attribute. +
value - The value of the attribute. Note that this is +a non-parsed string and any markup must be +escaped.
Returns:
[int] An integer representing of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element, +name, or value is NULL. +
  • IXML_INVALID_CHARACTER_ERR: name contains an +illegal character. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete the operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_setAttributeNS.html b/docs/dist/html/ixml/ixmlElement_setAttributeNS.html new file mode 100644 index 0000000..45b3b96 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_setAttributeNS.html @@ -0,0 +1,44 @@ + + + + + EXPORT_SPEC int ixmlElement_setAttributeNS + + + + +

EXPORT_SPEC int ixmlElement_setAttributeNS

(IXML_Element* element,
  DOMString namespaceURI,
  DOMString qualifiedName,
  DOMString value )

Adds a new attribute to an Element using the local name and namespace URI.
+ + +
+

Documentation

+
Adds a new attribute to an Element using the local name and +namespace URI. If another attribute matches the same local name and +namespace, the prefix is changed to be the prefix part of the +qualifiedName and the value is changed to value. + +

+
Parameters:
element - The Element on which to set the +attribute. +
namespaceURI - The namespace URI of the new attribute. +
qualifiedName - The qualified name of the attribute. +
value - The new value for the attribute.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element, +namespaceURI, qualifiedName, or value is +NULL. +
  • IXML_INVALID_CHARACTER_ERR: qualifiedName contains +an invalid character. +
  • IXML_NAMESPACE_ERR: Either the qualifiedName or +namespaceURI is malformed. Refer to the DOM2-Core for +possible reasons. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exist +to complete the operation. +
  • IXML_FAILED: The operation could not be completed. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_setAttributeNode.html b/docs/dist/html/ixml/ixmlElement_setAttributeNode.html new file mode 100644 index 0000000..9e2d1a9 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_setAttributeNode.html @@ -0,0 +1,40 @@ + + + + + EXPORT_SPEC int ixmlElement_setAttributeNode + + + + +

EXPORT_SPEC int ixmlElement_setAttributeNode

(IXML_Element* element,
  IXML_Attr* newAttr,
  IXML_Attr** rtAttr )

Adds a new attribute node to an Element.
+ + +
+

Documentation

+
Adds a new attribute node to an Element. If an attribute already +exists with newAttr as a name, it will be replaced with the +new one and the old one will be returned in rtAttr. + +

+
Parameters:
element - The Element in which to add the new +attribute. +
newAttr - The new Attr to add. +
rtAttr - A pointer to an Attr where the old +Attr will be stored. This will have +a NULL if no prior node +existed.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element or +newAttr is NULL. +
  • IXML_WRONG_DOCUMENT_ERR: newAttr does not belong +to the same one as element. +
  • IXML_INUSE_ATTRIBUTE_ERR: newAttr is already +an attribute of another Element. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlElement_setAttributeNodeNS.html b/docs/dist/html/ixml/ixmlElement_setAttributeNodeNS.html new file mode 100644 index 0000000..c0e7761 --- /dev/null +++ b/docs/dist/html/ixml/ixmlElement_setAttributeNodeNS.html @@ -0,0 +1,39 @@ + + + + + EXPORT_SPEC int ixmlElement_setAttributeNodeNS + + + + +

EXPORT_SPEC int ixmlElement_setAttributeNodeNS

(IXML_Element* element,
  IXML_Attr* newAttr,
  IXML_Attr** rcAttr )

Adds a new attribute node.
+ + +
+

Documentation

+
Adds a new attribute node. If an attribute with the same local name +and namespace URI already exists in the Element, the existing +attribute node is replaced with newAttr and the old returned in +rcAttr. + +

+
Parameters:
element - The Element in which to add the +attribute node. +
newAttr - The new Attr to add. +
rcAttr - A pointer to the replaced Attr, if +it exists.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either element or +newAttr is NULL. +
  • IXML_WRONG_DOCUMENT_ERR: newAttr does not belong +to the same document as element. +
  • IXML_INUSE_ATTRIBUTE_ERR: newAttr already is an +attribute of another Element. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlFreeDOMString.html b/docs/dist/html/ixml/ixmlFreeDOMString.html new file mode 100644 index 0000000..ecd6d92 --- /dev/null +++ b/docs/dist/html/ixml/ixmlFreeDOMString.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlFreeDOMString + + + + +

EXPORT_SPEC void ixmlFreeDOMString

(DOMString buf )

Frees a DOMString.
+ + +
+

Documentation

+
Frees a DOMString. + +

+
Parameters:
buf - The DOMString to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlLoadDocument.html b/docs/dist/html/ixml/ixmlLoadDocument.html new file mode 100644 index 0000000..fe7e907 --- /dev/null +++ b/docs/dist/html/ixml/ixmlLoadDocument.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Document* ixmlLoadDocument + + + + +

EXPORT_SPEC IXML_Document* ixmlLoadDocument

(char* xmlFile )

Parses an XML text file converting it into an IXML DOM representation.
+ + +
+

Documentation

+
Parses an XML text file converting it into an IXML DOM representation. + +

+
Parameters:
xmlFile - The filename of the XML text to convert to a +Document.
Returns:
[Document*] A Document if the file correctly parses or +NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlLoadDocumentEx.html b/docs/dist/html/ixml/ixmlLoadDocumentEx.html new file mode 100644 index 0000000..9b83e29 --- /dev/null +++ b/docs/dist/html/ixml/ixmlLoadDocumentEx.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int ixmlLoadDocumentEx + + + + +

EXPORT_SPEC int ixmlLoadDocumentEx

(char* xmlFile,
  IXML_Document** doc )

Parses an XML text file converting it into an IXML DOM representation.
+ + +
+

Documentation

+
Parses an XML text file converting it into an IXML DOM representation. + +

The ixmlLoadDocumentEx API differs from the ixmlLoadDocument +API in that it returns a an error code representing the actual failure +rather than just NULL. + +

+
Parameters:
xmlFile - The filename of the XML text to convert to a +Document. +
doc - A pointer to the Document if file correctly +parses or NULL on an error.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: The xmlFile is not a valid +pointer. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_free.html b/docs/dist/html/ixml/ixmlNamedNodeMap_free.html new file mode 100644 index 0000000..1eaeee3 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_free.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC void ixmlNamedNodeMap_free + + + + +

EXPORT_SPEC void ixmlNamedNodeMap_free

(IXML_NamedNodeMap* nnMap )

Frees a NamedNodeMap.
+ + +
+

Documentation

+
Frees a NamedNodeMap. The Nodes inside the map are not +freed, just the NamedNodeMap object. + +

+
Parameters:
nnMap - The NamedNodeMap to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_getLength.html b/docs/dist/html/ixml/ixmlNamedNodeMap_getLength.html new file mode 100644 index 0000000..2a75c2d --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_getLength.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC unsigned long ixmlNamedNodeMap_getLength + + + + +

EXPORT_SPEC unsigned long ixmlNamedNodeMap_getLength

(IXML_NamedNodeMap* nnMap )

Returns the number of items contained in this NamedNodeMap.
+ + +
+

Documentation

+
Returns the number of items contained in this NamedNodeMap. + +

+
Parameters:
nnMap - The NamedNodeMap from which to retrieve +the size.
Returns:
[unsigned long] The number of nodes in this map. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItem.html b/docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItem.html new file mode 100644 index 0000000..5fe0e29 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItem.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_getNamedItem + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_getNamedItem

(IXML_NamedNodeMap* nnMap,
  DOMString name )

Retrieves a Node from the NamedNodeMap by name.
+ + +
+

Documentation

+
Retrieves a Node from the NamedNodeMap by name. + +

+
Parameters:
nnMap - The NamedNodeMap to search. +
name - The name of the Node to find.
Returns:
[Node*] A Node or NULL if there is an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItemNS.html b/docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItemNS.html new file mode 100644 index 0000000..c7a653b --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_getNamedItemNS.html @@ -0,0 +1,30 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_getNamedItemNS + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_getNamedItemNS

(IXML_NamedNodeMap* nnMap,
  DOMString* namespaceURI,
  DOMString localName )

Retrieves a Node from a NamedNodeMap specified by namespace URI and local name.
+ + +
+

Documentation

+
Retrieves a Node from a NamedNodeMap specified by +namespace URI and local name. + +

+
Parameters:
nnMap - The NamedNodeMap from which to +remove the Node. +
namespaceURI - The namespace URI of the Node to +remove. +
localName - The local name of the Node to +remove.
Returns:
[Node*] A pointer to the Node, if found, or NULL if +it wasn't +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_item.html b/docs/dist/html/ixml/ixmlNamedNodeMap_item.html new file mode 100644 index 0000000..e0d2479 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_item.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_item + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_item

(IXML_NamedNodeMap* nnMap,
  unsigned long index )

Retrieves a Node from a NamedNodeMap specified by a numerical index.
+ + +
+

Documentation

+
Retrieves a Node from a NamedNodeMap specified by a +numerical index. + +

+
Parameters:
nnMap - The NamedNodeMap from which to remove the +Node. +
index - The index into the map to remove.
Returns:
[Node*] A pointer to the Node, if found, or NULL if +it wasn't. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItem.html b/docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItem.html new file mode 100644 index 0000000..f1ec7ca --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItem.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_removeNamedItem + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_removeNamedItem

(IXML_NamedNodeMap* nnMap,
  DOMString name )

Removes a Node from a NamedNodeMap specified by name.
+ + +
+

Documentation

+
Removes a Node from a NamedNodeMap specified by name. + +

+
Parameters:
nnMap - The NamedNodeMap from which to +remove the item. +
name - The name of the item to remove.
Returns:
[Node*] A pointer to the Node, if found, or NULL if +it wasn't. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItemNS.html b/docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItemNS.html new file mode 100644 index 0000000..2226a2b --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_removeNamedItemNS.html @@ -0,0 +1,30 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_removeNamedItemNS + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_removeNamedItemNS

(IXML_NamedNodeMap* nnMap,
  DOMString namespaceURI,
  DOMString localName )

Removes a Node from a NamedNodeMap specified by namespace URI and local name.
+ + +
+

Documentation

+
Removes a Node from a NamedNodeMap specified by +namespace URI and local name. + +

+
Parameters:
nnMap - The NamedNodeMap from which to +remove the Node. +
namespaceURI - The namespace URI of the Node +to remove. +
localName - The local name of the Node to +remove.
Returns:
[Node*] A pointer to the Node, if found, or NULL if +it wasn't. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItem.html b/docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItem.html new file mode 100644 index 0000000..6088601 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItem.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_setNamedItem + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_setNamedItem

(IXML_NamedNodeMap* nnMap,
  IXML_Node* arg )

Adds a new Node to the NamedNodeMap using the Node name attribute.
+ + +
+

Documentation

+
Adds a new Node to the NamedNodeMap using the Node +name attribute. + +

+
Parameters:
nnMap - The NamedNodeMap in which to add the +new Node. +
arg - The new Node to add to the +NamedNodeMap.
Returns:
[Node*] The old Node if the new Node replaces it or +NULL if the Node was not in the +NamedNodeMap before. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItemNS.html b/docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItemNS.html new file mode 100644 index 0000000..6f7d4b6 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNamedNodeMap_setNamedItemNS.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_setNamedItemNS + + + + +

EXPORT_SPEC IXML_Node* ixmlNamedNodeMap_setNamedItemNS

(IXML_NamedNodeMap* nnMap,
  IXML_Node* arg )

Adds a new Node to the NamedNodeMap using the Node local name and namespace URI attributes.
+ + +
+

Documentation

+
Adds a new Node to the NamedNodeMap using the Node +local name and namespace URI attributes. + +

+
Parameters:
nnMap - The NamedNodeMap in which to add +the Node. +
arg - The Node to add to the map.
Returns:
[Node*] The old Node if the new Node replaces it or +NULL if the Node was not in the +NamedNodeMap before. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNodeList_free.html b/docs/dist/html/ixml/ixmlNodeList_free.html new file mode 100644 index 0000000..10f0f90 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNodeList_free.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC void ixmlNodeList_free + + + + +

EXPORT_SPEC void ixmlNodeList_free

(IXML_NodeList* nList )

Frees a NodeList object.
+ + +
+

Documentation

+
Frees a NodeList object. Since the underlying Nodes are +references, they are not freed using this operating. This only +frees the NodeList object. + +

+
Parameters:
nList - The NodeList to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNodeList_item.html b/docs/dist/html/ixml/ixmlNodeList_item.html new file mode 100644 index 0000000..9f01cf2 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNodeList_item.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNodeList_item + + + + +

EXPORT_SPEC IXML_Node* ixmlNodeList_item

(IXML_NodeList* nList,
  unsigned long index )

Retrieves a Node from a NodeList specified by a numerical index.
+ + +
+

Documentation

+
Retrieves a Node from a NodeList specified by a +numerical index. + +

+
Parameters:
nList - The NodeList from which to retrieve the +Node. +
index - The index into the NodeList to retrieve.
Returns:
[Node*] A pointer to a Node or NULL if there was an +error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNodeList_length.html b/docs/dist/html/ixml/ixmlNodeList_length.html new file mode 100644 index 0000000..50f5787 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNodeList_length.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC unsigned long ixmlNodeList_length + + + + +

EXPORT_SPEC unsigned long ixmlNodeList_length

(IXML_NodeList* nList )

Returns the number of Nodes in a NodeList.
+ + +
+

Documentation

+
Returns the number of Nodes in a NodeList. + +

+
Parameters:
nList - The NodeList for which to retrieve the +number of Nodes.
Returns:
[unsigned long] The number of Nodes in the NodeList. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_appendChild.html b/docs/dist/html/ixml/ixmlNode_appendChild.html new file mode 100644 index 0000000..d3a3b70 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_appendChild.html @@ -0,0 +1,36 @@ + + + + + EXPORT_SPEC int ixmlNode_appendChild + + + + +

EXPORT_SPEC int ixmlNode_appendChild

(IXML_Node* nodeptr,
  IXML_Node* newChild )

Appends a child Node to the list of children of a Node.
+ + +
+

Documentation

+
Appends a child Node to the list of children of a Node. If +newChild is already in the tree, it is removed first. + +

+
Parameters:
nodeptr - The Node in which to append the new child. +
newChild - The new child to append.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either nodeptr or +newChild is NULL. +
  • IXML_HIERARCHY_REQUEST_ERR: newChild is of a type +that cannot be added as a child of nodeptr or +newChild is an ancestor of nodeptr. +
  • IXML_WRONG_DOCUMENT_ERR: newChild was created from +a different document than nodeptr. +
  • IXML_NO_MODIFICATION_ALLOWED_ERR: nodeptr is a +read-only Node. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_cloneNode.html b/docs/dist/html/ixml/ixmlNode_cloneNode.html new file mode 100644 index 0000000..b9391a8 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_cloneNode.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNode_cloneNode + + + + +

EXPORT_SPEC IXML_Node* ixmlNode_cloneNode

(IXML_Node* nodeptr,
  BOOL deep )

Clones a Node.
+ + +
+

Documentation

+
Clones a Node. The new Node does not have a parent. The +deep parameter controls whether the subtree of the Node is +also cloned. For details on cloning specific types of Nodes, +refer to the DOM2-Core recommendation. + +

+
Parameters:
nodeptr - The Node to clone. +
deep - TRUE to clone the subtree also or FALSE +to clone only nodeptr.
Returns:
[Node*] A clone of nodeptr or NULL. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_free.html b/docs/dist/html/ixml/ixmlNode_free.html new file mode 100644 index 0000000..4c7602f --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_free.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void ixmlNode_free + + + + +

EXPORT_SPEC void ixmlNode_free

(IXML_Node* IXML_Node )

Frees a Node and all Nodes in its subtree.
+ + +
+

Documentation

+
Frees a Node and all Nodes in its subtree. + +

+
Parameters:
IXML_Node - The Node to free.
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getAttributes.html b/docs/dist/html/ixml/ixmlNode_getAttributes.html new file mode 100644 index 0000000..c6e97b7 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getAttributes.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC IXML_NamedNodeMap* ixmlNode_getAttributes + + + + +

EXPORT_SPEC IXML_NamedNodeMap* ixmlNode_getAttributes

(IXML_Node* nodeptr )

Retrieves the attributes of a Node, if it is an Element node, in a NamedNodeMap structure.
+ + +
+

Documentation

+
Retrieves the attributes of a Node, if it is an Element node, +in a NamedNodeMap structure. + +

+
Parameters:
nodeptr - The Node from which to retrieve the +attributes.
Returns:
[NamedNodeMap*] A NamedNodeMap of the attributes or +NULL. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getChildNodes.html b/docs/dist/html/ixml/ixmlNode_getChildNodes.html new file mode 100644 index 0000000..d69acbb --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getChildNodes.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC IXML_NodeList* ixmlNode_getChildNodes + + + + +

EXPORT_SPEC IXML_NodeList* ixmlNode_getChildNodes

(IXML_Node* nodeptr )

Retrieves the list of children of a Node in a NodeList structure.
+ + +
+

Documentation

+
Retrieves the list of children of a Node in a NodeList +structure. If a Node has no children, ixmlNode_getChildNodes +returns a NodeList structure that contains no Nodes. + +

+
Parameters:
nodeptr - The Node from which to retrieve the +children.
Returns:
[NodeList*] A NodeList of the children of the Node. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getFirstChild.html b/docs/dist/html/ixml/ixmlNode_getFirstChild.html new file mode 100644 index 0000000..0d9d43b --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getFirstChild.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNode_getFirstChild + + + + +

EXPORT_SPEC IXML_Node* ixmlNode_getFirstChild

(IXML_Node* nodeptr )

Retrieves the first child Node of a Node.
+ + +
+

Documentation

+
Retrieves the first child Node of a Node. + +

+
Parameters:
nodeptr - The Node from which to retrieve the first +child.
Returns:
[Node*] A pointer to the first child Node or NULL +if the Node does not have any children. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getLastChild.html b/docs/dist/html/ixml/ixmlNode_getLastChild.html new file mode 100644 index 0000000..87a2549 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getLastChild.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNode_getLastChild + + + + +

EXPORT_SPEC IXML_Node* ixmlNode_getLastChild

(IXML_Node* nodeptr )

Retrieves the last child Node of a Node.
+ + +
+

Documentation

+
Retrieves the last child Node of a Node. + +

+
Parameters:
nodeptr - The Node from which to retrieve the last +child.
Returns:
[Node*] A pointer to the last child Node or NULL if +the Node does not have any children. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getLocalName.html b/docs/dist/html/ixml/ixmlNode_getLocalName.html new file mode 100644 index 0000000..d260bda --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getLocalName.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC const DOMString ixmlNode_getLocalName + + + + +

EXPORT_SPEC const DOMString ixmlNode_getLocalName

(IXML_Node* nodeptr )

Retrieves the local name of a Node, if present.
+ + +
+

Documentation

+
Retrieves the local name of a Node, if present. The local name is +the tag name without the namespace prefix. Only Nodes of type +eELEMENT_NODE or eATTRIBUTE_NODE can have a local name. +{\Bf Node}s created through the Document interface will only +contain a local name if created using ixmlDocument_createElementNS. + +

+
Parameters:
nodeptr - The Node from which to retrieve the local +name.
Returns:
[const DOMString] A DOMString representing the local name +of the Element or NULL. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getNamespaceURI.html b/docs/dist/html/ixml/ixmlNode_getNamespaceURI.html new file mode 100644 index 0000000..fd312d5 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getNamespaceURI.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC const DOMString ixmlNode_getNamespaceURI + + + + +

EXPORT_SPEC const DOMString ixmlNode_getNamespaceURI

(IXML_Node* nodeptr )

Retrieves the namespace URI for a Node as a DOMString.
+ + +
+

Documentation

+
Retrieves the namespace URI for a Node as a DOMString. Only +Nodes of type eELEMENT_NODE or eATTRIBUTE_NODE can +have a namespace URI. Nodes created through the Document +interface will only contain a namespace if created using +ixmlDocument_createElementNS. + +

+
Parameters:
nodeptr - The Node for which to retrieve the +namespace.
Returns:
[const DOMString] A DOMString representing the URI of the +namespace or NULL. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getNextSibling.html b/docs/dist/html/ixml/ixmlNode_getNextSibling.html new file mode 100644 index 0000000..b534cf5 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getNextSibling.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNode_getNextSibling + + + + +

EXPORT_SPEC IXML_Node* ixmlNode_getNextSibling

(IXML_Node* nodeptr )

Retrieves the sibling Node immediately following this Node.
+ + +
+

Documentation

+
Retrieves the sibling Node immediately following this Node. + +

+
Parameters:
nodeptr - The Node from which to retrieve the next +sibling.
Returns:
[Node*] A pointer to the next sibling Node or NULL +if no such Node exists. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getNodeName.html b/docs/dist/html/ixml/ixmlNode_getNodeName.html new file mode 100644 index 0000000..c7e4296 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getNodeName.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC const DOMString ixmlNode_getNodeName + + + + +

EXPORT_SPEC const DOMString ixmlNode_getNodeName

(IXML_Node* nodeptr )

Returns the name of the Node, depending on what type of Node it is, in a read-only string.
+ + +
+

Documentation

+
Returns the name of the Node, depending on what type of +Node it is, in a read-only string. Refer to the table in the +DOM2-Core for a description of the node names for various interfaces. + +

+
Parameters:
nodeptr - Pointer to the node to retrieve the name.
Returns:
[const DOMString] A constant DOMString of the node name. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getNodeType.html b/docs/dist/html/ixml/ixmlNode_getNodeType.html new file mode 100644 index 0000000..e6e86b2 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getNodeType.html @@ -0,0 +1,39 @@ + + + + + EXPORT_SPEC unsigned short ixmlNode_getNodeType + + + + +

EXPORT_SPEC unsigned short ixmlNode_getNodeType

(IXML_Node* nodeptr )

Retrieves the type of a Node.
+ + +
+

Documentation

+
Retrieves the type of a Node. The defined Node constants +are: +
    +
  • eATTRIBUTE_NODE +
  • eCDATA_SECTION_NODE +
  • eCOMMENT_NODE +
  • eDOCUMENT_FRAGMENT_NODE +
  • eDOCUMENT_NODE +
  • eDOCUMENT_TYPE_NODE +
  • eELEMENT_NODE +
  • eENTITY_NODE +
  • eENTITY_REFERENCE_NODE +
  • eNOTATION_NODE +
  • ePROCESSING_INSTRUCTION_NODE +
  • eTEXT_NODE +
+ +

+
Parameters:
nodeptr - The Node from which to retrieve the type.
Returns:
[const unsigned short] An integer representing the type of the +Node. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getNodeValue.html b/docs/dist/html/ixml/ixmlNode_getNodeValue.html new file mode 100644 index 0000000..7e1d5d4 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getNodeValue.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC DOMString ixmlNode_getNodeValue + + + + +

EXPORT_SPEC DOMString ixmlNode_getNodeValue

(IXML_Node* nodeptr )

Returns the value of the Node as a string.
+ + +
+

Documentation

+
Returns the value of the Node as a string. Note that this string +is not a copy and modifying it will modify the value of the Node. + +

+
Parameters:
nodeptr - Pointer to the Node to retrieve the value.
Returns:
[DOMString] A DOMString of the Node value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getOwnerDocument.html b/docs/dist/html/ixml/ixmlNode_getOwnerDocument.html new file mode 100644 index 0000000..de9abec --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getOwnerDocument.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC IXML_Document* ixmlNode_getOwnerDocument + + + + +

EXPORT_SPEC IXML_Document* ixmlNode_getOwnerDocument

(IXML_Node* nodeptr )

Retrieves the document object associated with this Node.
+ + +
+

Documentation

+
Retrieves the document object associated with this Node. This +owner document Node allows other Nodes to be created in the +context of this document. Note that Document nodes do not have +an owner document. + +

+
Parameters:
nodeptr - The Node from which to retrieve the +owner document.
Returns:
[Document*] A pointer to the owning Document or +NULL, if the Node does not have an owner. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getParentNode.html b/docs/dist/html/ixml/ixmlNode_getParentNode.html new file mode 100644 index 0000000..7e4b542 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getParentNode.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNode_getParentNode + + + + +

EXPORT_SPEC IXML_Node* ixmlNode_getParentNode

(IXML_Node* nodeptr )

Retrieves the parent Node for a Node.
+ + +
+

Documentation

+
Retrieves the parent Node for a Node. + +

+
Parameters:
nodeptr - The Node from which to retrieve the +parent.
Returns:
[Node*] A pointer to the parent Node or NULL if the +Node has no parent. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getPrefix.html b/docs/dist/html/ixml/ixmlNode_getPrefix.html new file mode 100644 index 0000000..224667e --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getPrefix.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC DOMString ixmlNode_getPrefix + + + + +

EXPORT_SPEC DOMString ixmlNode_getPrefix

(IXML_Node* nodeptr )

Retrieves the namespace prefix, if present.
+ + +
+

Documentation

+
Retrieves the namespace prefix, if present. The prefix is the name +used as an alias for the namespace URI for this element. Only +Nodes of type eELEMENT_NODE or eATTRIBUTE_NODE can have +a prefix. Nodes created through the Document interface will +only contain a prefix if created using ixmlDocument_createElementNS. + +

+
Parameters:
nodeptr - The Node from which to retrieve the prefix.
Returns:
[DOMString] A DOMString representing the namespace prefix +or NULL. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_getPreviousSibling.html b/docs/dist/html/ixml/ixmlNode_getPreviousSibling.html new file mode 100644 index 0000000..0eba688 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_getPreviousSibling.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Node* ixmlNode_getPreviousSibling + + + + +

EXPORT_SPEC IXML_Node* ixmlNode_getPreviousSibling

(IXML_Node* nodeptr )

Retrieves the sibling Node immediately preceding this Node.
+ + +
+

Documentation

+
Retrieves the sibling Node immediately preceding this Node. + +

+
Parameters:
nodeptr - The Node for which to retrieve the +previous sibling.
Returns:
[Node*] A pointer to the previous sibling Node or +NULL if no such Node exists. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_hasAttributes.html b/docs/dist/html/ixml/ixmlNode_hasAttributes.html new file mode 100644 index 0000000..ccb3bf4 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_hasAttributes.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC BOOL ixmlNode_hasAttributes + + + + +

EXPORT_SPEC BOOL ixmlNode_hasAttributes

(IXML_Node* node )

Queries whether this Node has attributes.
+ + +
+

Documentation

+
Queries whether this Node has attributes. Note that only +Element nodes have attributes. + +

+
Parameters:
node - The Node to query for attributes.
Returns:
[BOOL] TRUE if the Node has attributes otherwise +FALSE. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_hasChildNodes.html b/docs/dist/html/ixml/ixmlNode_hasChildNodes.html new file mode 100644 index 0000000..a22e36c --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_hasChildNodes.html @@ -0,0 +1,24 @@ + + + + + EXPORT_SPEC BOOL ixmlNode_hasChildNodes + + + + +

EXPORT_SPEC BOOL ixmlNode_hasChildNodes

(IXML_Node* nodeptr )

Queries whether or not a Node has children.
+ + +
+

Documentation

+
Queries whether or not a Node has children. + +

+
Parameters:
nodeptr - The Node to query for children.
Returns:
[BOOL] TRUE if the Node has one or more children +otherwise FALSE. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_insertBefore.html b/docs/dist/html/ixml/ixmlNode_insertBefore.html new file mode 100644 index 0000000..8a97aea --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_insertBefore.html @@ -0,0 +1,49 @@ + + + + + EXPORT_SPEC int ixmlNode_insertBefore + + + + +

EXPORT_SPEC int ixmlNode_insertBefore

(IXML_Node* nodeptr,
  IXML_Node* newChild,
  IXML_Node* refChild )

Inserts a new child Node before the existing child Node.
+ + +
+

Documentation

+
Inserts a new child Node before the existing child Node. +refChild can be NULL, which inserts newChild at the +end of the list of children. Note that the Node (or Nodes) +in newChild must already be owned by the owner document (or have no +owner at all) of nodeptr for insertion. If not, the Node +(or Nodes) must be imported into the document using +ixmlDocument_importNode. If newChild is already in the tree, +it is removed first. + +

+
Parameters:
nodeptr - The parent of the Node before which to +insert the new child. +
newChild - The Node to insert into the tree. +
refChild - The reference child where the new Node +should be inserted. The new Node will +appear directly before the reference child.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either nodeptr or +newChild is NULL. +
  • IXML_HIERARCHY_REQUEST_ERR: The type of the Node +does not allow children of the type of newChild. +
  • IXML_WRONG_DOCUMENT_ERR: newChild has an owner +document that does not match the owner of nodeptr. +
  • IXML_NO_MODIFICATION_ALLOWED_ERR: nodeptr is +read-only or the parent of the Node being inserted is +read-only. +
  • IXML_NOT_FOUND_ERR: refChild is not a child of +nodeptr. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_removeChild.html b/docs/dist/html/ixml/ixmlNode_removeChild.html new file mode 100644 index 0000000..e30ba51 --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_removeChild.html @@ -0,0 +1,38 @@ + + + + + EXPORT_SPEC int ixmlNode_removeChild + + + + +

EXPORT_SPEC int ixmlNode_removeChild

(IXML_Node* nodeptr,
  IXML_Node* oldChild,
  IXML_Node** returnNode )

Removes a child from the list of children of a Node.
+ + +
+

Documentation

+
Removes a child from the list of children of a Node. +returnNode will contain the oldChild Node, +appropriately removed from the tree (i.e. it will no longer have an +owner document). + +

+
Parameters:
nodeptr - The parent of the child to remove. +
oldChild - The child Node to remove. +
returnNode - Pointer to a Node to place the removed +oldChild Node.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: Either nodeptr or +oldChild is NULL. +
  • IXML_NO_MODIFICATION_ALLOWED_ERR: nodeptr or its +parent is read-only. +
  • IXML_NOT_FOUND_ERR: oldChild is not among the +children of nodeptr. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_replaceChild.html b/docs/dist/html/ixml/ixmlNode_replaceChild.html new file mode 100644 index 0000000..70a05ea --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_replaceChild.html @@ -0,0 +1,46 @@ + + + + + EXPORT_SPEC int ixmlNode_replaceChild + + + + +

EXPORT_SPEC int ixmlNode_replaceChild

(IXML_Node* nodeptr,
  IXML_Node* newChild,
  IXML_Node* oldChild,
  IXML_Node** returnNode )

Replaces an existing child Node with a new child Node in the list of children of a Node.
+ + +
+

Documentation

+
Replaces an existing child Node with a new child Node in +the list of children of a Node. If newChild is already in +the tree, it will first be removed. returnNode will contain the +oldChild Node, appropriately removed from the tree (i.e. it +will no longer have an owner document). + +

+
Parameters:
nodeptr - The parent of the Node which contains the +child to replace. +
newChild - The child with which to replace oldChild. +
oldChild - The child to replace with newChild. +
returnNode - Pointer to a Node to place the removed +oldChild Node.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMTER: Either nodeptr, +newChild, or oldChild is NULL. +
  • IXML_HIERARCHY_REQUEST_ERR: The newChild is not +a type of Node that can be inserted into this tree or +newChild is an ancestor of nodePtr. +
  • IXML_WRONG_DOCUMENT_ERR: newChild was created from +a different document than nodeptr. +
  • IXML_NO_MODIFICATION_ALLOWED_ERR: nodeptr or +its parent is read-only. +
  • IXML_NOT_FOUND_ERR: oldChild is not a child of +nodeptr. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNode_setNodeValue.html b/docs/dist/html/ixml/ixmlNode_setNodeValue.html new file mode 100644 index 0000000..7bbd7ca --- /dev/null +++ b/docs/dist/html/ixml/ixmlNode_setNodeValue.html @@ -0,0 +1,33 @@ + + + + + EXPORT_SPEC int ixmlNode_setNodeValue + + + + +

EXPORT_SPEC int ixmlNode_setNodeValue

(IXML_Node* nodeptr,
  char* newNodeValue )

Assigns a new value to a Node.
+ + +
+

Documentation

+
Assigns a new value to a Node. The newNodeValue string is +duplicated and stored in the Node so that the original does not +have to persist past this call. + +

+
Parameters:
nodeptr - The Node to which to assign a new value. +
newNodeValue - The new value of the Node.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: The Node* is not a valid +pointer. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlNodetoString.html b/docs/dist/html/ixml/ixmlNodetoString.html new file mode 100644 index 0000000..f00ae2a --- /dev/null +++ b/docs/dist/html/ixml/ixmlNodetoString.html @@ -0,0 +1,32 @@ + + + + + EXPORT_SPEC DOMString ixmlNodetoString + + + + +

EXPORT_SPEC DOMString ixmlNodetoString

(IXML_Node* doc )

Renders a Node and all sub-elements into an XML text representation.
+ + +
+

Documentation

+
Renders a Node and all sub-elements into an XML text +representation. The caller is required to free the DOMString +returned from this function using ixmlFreeDOMString when it +is no longer required. + +

Note that this function can be used for any Node-derived +interface. The difference between ixmlNodetoString and +ixmlDocumenttoString is ixmlNodetoString does not include +the XML prolog, it only produces XML elements. + +

+
Parameters:
doc - The root of the Node tree to render to XML text.
Returns:
[DOMString] A DOMString with the XML text representation +of the DOM tree or NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlParseBuffer.html b/docs/dist/html/ixml/ixmlParseBuffer.html new file mode 100644 index 0000000..ded70a7 --- /dev/null +++ b/docs/dist/html/ixml/ixmlParseBuffer.html @@ -0,0 +1,25 @@ + + + + + EXPORT_SPEC IXML_Document* ixmlParseBuffer + + + + +

EXPORT_SPEC IXML_Document* ixmlParseBuffer

(char* buffer )

Parses an XML text buffer converting it into an IXML DOM representation.
+ + +
+

Documentation

+
Parses an XML text buffer converting it into an IXML DOM representation. + +

+
Parameters:
buffer - The buffer that contains the XML text to convert to a +Document.
Returns:
[Document*] A Document if the buffer correctly parses or +NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlParseBufferEx.html b/docs/dist/html/ixml/ixmlParseBufferEx.html new file mode 100644 index 0000000..9f4d9ed --- /dev/null +++ b/docs/dist/html/ixml/ixmlParseBufferEx.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int ixmlParseBufferEx + + + + +

EXPORT_SPEC int ixmlParseBufferEx

(char* buffer,
  IXML_Document** doc )

Parses an XML text buffer converting it into an IXML DOM representation.
+ + +
+

Documentation

+
Parses an XML text buffer converting it into an IXML DOM representation. + +

The ixmlParseBufferEx API differs from the ixmlParseBuffer +API in that it returns an error code representing the actual failure +rather than just NULL. + +

+
Parameters:
buffer - The buffer that contains the XML text to convert to a +Document. +
doc - A point to store the Document if file correctly +parses or NULL on an error.
Returns:
[int] An integer representing one of the following: +
    +
  • IXML_SUCCESS: The operation completed successfully. +
  • IXML_INVALID_PARAMETER: The buffer is not a valid +pointer. +
  • IXML_INSUFFICIENT_MEMORY: Not enough free memory exists +to complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlPrintDocument.html b/docs/dist/html/ixml/ixmlPrintDocument.html new file mode 100644 index 0000000..0341517 --- /dev/null +++ b/docs/dist/html/ixml/ixmlPrintDocument.html @@ -0,0 +1,36 @@ + + + + + DOMString ixmlPrintDocument + + + + +

DOMString ixmlPrintDocument

(IXML_Document* doc)

Renders a Node and all sub-elements into an XML document representation.
+ + +
+

Documentation

+
Renders a Node and all sub-elements into an XML document +representation. The caller is required to free the DOMString +returned from this function using ixmlFreeDOMString when it +is no longer required. + +

Note that this function can be used for any Node-derived +interface. The difference between ixmlPrintDocument and +ixmlPrintNode is ixmlPrintDocument includes the XML prolog +while ixmlPrintNode only produces XML elements. An XML +document is not well formed unless it includes the prolog +and at least one element. + +

This function introduces lots of white space to print the +DOMString in readable format. + +

+
Returns:
[DOMString] A DOMString with the XML document representation +of the DOM tree or NULL on an error.

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlPrintNode.html b/docs/dist/html/ixml/ixmlPrintNode.html new file mode 100644 index 0000000..8ae607a --- /dev/null +++ b/docs/dist/html/ixml/ixmlPrintNode.html @@ -0,0 +1,33 @@ + + + + + DOMString ixmlPrintNode + + + + +

DOMString ixmlPrintNode

(IXML_Node* doc )

Renders a Node and all sub-elements into an XML text representation.
+ + +
+

Documentation

+
Renders a Node and all sub-elements into an XML text +representation. The caller is required to free the DOMString +returned from this function using ixmlFreeDOMString when it +is no longer required. + +

Note that this function can be used for any Node-derived +interface. A similar ixmlPrintDocument function is defined +to avoid casting when printing whole documents. This function +introduces lots of white space to print the DOMString in readable +format. + +

+
Parameters:
doc - The root of the Node tree to render to XML text.
Returns:
[DOMString] A DOMString with the XML text representation +of the DOM tree or NULL on an error. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/ixmlRelaxParser.html b/docs/dist/html/ixml/ixmlRelaxParser.html new file mode 100644 index 0000000..abf931f --- /dev/null +++ b/docs/dist/html/ixml/ixmlRelaxParser.html @@ -0,0 +1,27 @@ + + + + + void ixmlRelaxParser + + + + +

void ixmlRelaxParser

(char errorChar)

Makes the XML parser more tolerant to malformed text.
+ + +
+

Documentation

+
Makes the XML parser more tolerant to malformed text. + +

If errorChar is 0 (default), the parser is strict about XML +encoding : invalid UTF-8 sequences or "&" entities are rejected, and +the parsing aborts. +If errorChar is not 0, the parser is relaxed : invalid UTF-8 +characters are replaced by the errorChar, and invalid "&" entities +are left untranslated. The parsing is then allowed to continue.

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/ixml/toc.html b/docs/dist/html/ixml/toc.html new file mode 100644 index 0000000..39af15b --- /dev/null +++ b/docs/dist/html/ixml/toc.html @@ -0,0 +1,19 @@ + + + + + Table of Contents + + + + +

Table of Contents

+

General stuff

+ +
+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/AboutCallbacks.html b/docs/dist/html/upnp/AboutCallbacks.html new file mode 100644 index 0000000..f51f08b --- /dev/null +++ b/docs/dist/html/upnp/AboutCallbacks.html @@ -0,0 +1,26 @@ + + + + + About Callbacks + + + + +

About Callbacks

+
+The Linux SDK for UPnP Devices contains functions that generate +asynchronous callbacks. To simplify the application callback functions, +these callbacks are executed on a thread owned by the SDK itself. The +SDK executes the application's callback function in a thread +context so the application can allocate memory and preserve the information +it needs. The application can also use standard thread synchronization +methods to ensure data integrity. Due to the possibility of deadlock, the +application cannot call back into the SDK during these callbacks +unless explicitly noted. There is no restriction in calling into the +operating system or any other application interfaces.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/ConstantsStructuresandTypes.html b/docs/dist/html/upnp/ConstantsStructuresandTypes.html new file mode 100644 index 0000000..0f1081d --- /dev/null +++ b/docs/dist/html/upnp/ConstantsStructuresandTypes.html @@ -0,0 +1,79 @@ + + + + + Constants, Structures, and Types + + + + +

Constants, Structures, and Types

+ +
+
+
+ +o +UpnpClient_Handle
Returned when a control point application registers with UpnpRegisterClient. +
+ +o +UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice or UpnpRegisterRootDevice2. +
+ +o +UPnP_EventType
The reason code for an event callback. +
+ +o +Upnp_SID[44]
The Upnp_SID holds the subscription identifier for a subscription between a client and a device. +
+ +o +Upnp_SType
Represents the different types of searches that can be performed using the SDK for UPnP Devices API. +
+ +o +Upnp_DescType
Specifies the type of description in UpnpRegisterRootDevice2. +
+ +o +Upnp_Action_Request
Returned as part of a UPNP_CONTROL_ACTION_COMPLETE callback. +
+ +o +Upnp_State_Var_Request
Represents the request for current value of a state variable in a service state table. +
+ +o +Upnp_State_Var_Complete
Represents the reply for the current value of a state variable in an asynchronous call. +
+ +o +Upnp_Event
Returned along with a UPNP_EVENT_RECEIVED callback. +
+ +o +Upnp_Discovery
Returned in a UPNP_DISCOVERY_RESULT callback. +
+ +o +Upnp_Event_Subscribe
Returned along with a UPNP_EVENT_SUBSCRIBE_COMPLETE or UPNP_EVENT_UNSUBSCRIBE_COMPLETE callback. +
+ +o +Upnp_Subscription_Request
Returned along with a UPNP_EVENT_SUBSCRIPTION_REQUEST callback. +
+ +o +UpnpVirtualDirCallbacks
The UpnpVirtualDirCallbacks structure contains the pointers to file-related callback functions a device application can register to virtualize URLs. +
+ +o +(*Upnp_FunPtr)
All callback functions share the same prototype, documented below. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Control.html b/docs/dist/html/upnp/Control.html new file mode 100644 index 0000000..78c748f --- /dev/null +++ b/docs/dist/html/upnp/Control.html @@ -0,0 +1,43 @@ + + + + + Control + + + + +

Control

+ +
+
+
+ +o +UpnpGetServiceVarStatus
UpnpGetServiceVarStatus queries the state of a state variable of a service on another device. +
+ +o +UpnpGetServiceVarStatusAsync
UpnpGetServiceVarStatusAsync queries the state of a variable of a service, generating a callback when the operation is complete. +
+ +o +UpnpSendAction
UpnpSendAction sends a message to change a state variable in a service. +
+ +o +UpnpSendActionEx
UpnpSendActionEx sends a message to change a state variable in a service. +
+ +o +UpnpSendActionAsync
UpnpSendActionAsync sends a message to change a state variable in a service, generating a callback when the operation is complete. +
+ +o +UpnpSendActionExAsync
UpnpSendActionExAsync sends a message to change a state variable in a service, generating a callback when the operation is complete. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/ControlPointHTTPAPI.html b/docs/dist/html/upnp/ControlPointHTTPAPI.html new file mode 100644 index 0000000..07aa59b --- /dev/null +++ b/docs/dist/html/upnp/ControlPointHTTPAPI.html @@ -0,0 +1,67 @@ + + + + + Control Point HTTP API + + + + +

Control Point HTTP API

+ +
+
+
+ +o +UpnpDownloadUrlItem
UpnpDownloadUrlItem downloads a file specified in a URL. +
+ +o +UpnpOpenHttpGet
UpnpOpenHttpGet gets a file specified in a URL. +
+ +o +UpnpOpenHttpGetProxy
UpnpOpenHttpGetProxy gets a file specified in a URL through the specified proxy. +
+ +o +UpnpOpenHttpGetEx
UpnpOpenHttpGetEx gets specified number of bytes from a file specified in the URL. +
+ +o +UpnpReadHttpGet
UpnpReadHttpGet gets specified number of bytes from a file specified in a URL. +
+ +o +UpnpHttpGetProgress
UpnpHttpGetProgress rettrieve progress information of a http-get transfer. +
+ +o +UpnpCancelHttpGet
UpnpCancelHttpGet set the cancel flag of the handle parameter. +
+ +o +UpnpCloseHttpGet
UpnpCloseHttpGet closes the connection and frees memory that was allocated for the handle parameter. +
+ +o +UpnpOpenHttpPost
UpnpOpenHttpPost makes an HTTP POST request message, opens a connection to the server and sends the POST request to the server if the connection to the server succeeds. +
+ +o +UpnpWriteHttpPost
UpnpWriteHttpPost sends a request to a server to copy the contents of a buffer to the URI specified in the UpnpOpenHttpPost call. +
+ +o +UpnpCloseHttpPost
UpnpCloseHttpPost sends and receives any pending data, closes the connection with the server, and frees memory allocated during the UpnpOpenHttpPost call. +
+ +o +UpnpDownloadXmlDoc
UpnpDownloadXmlDoc downloads an XML document specified in a URL. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Discovery.html b/docs/dist/html/upnp/Discovery.html new file mode 100644 index 0000000..e795576 --- /dev/null +++ b/docs/dist/html/upnp/Discovery.html @@ -0,0 +1,27 @@ + + + + + Discovery + + + + +

Discovery

+ +
+
+
+ +o +UpnpSearchAsync
UpnpSearchAsync searches for devices matching the given search target. +
+ +o +UpnpSendAdvertisement
UpnpSendAdvertisement sends out the discovery announcements for all devices and services for a device. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Errorcodes.html b/docs/dist/html/upnp/Errorcodes.html new file mode 100644 index 0000000..78e28d0 --- /dev/null +++ b/docs/dist/html/upnp/Errorcodes.html @@ -0,0 +1,126 @@ + + + + + Error codes + + + + +

Error codes

+
The functions in the SDK API can return a variety of error +codes to describe problems encountered during execution. This section +lists the error codes and provides a brief description of what each error +code means. Refer to the documentation for each function for a +description of what an error code means in that context.
+ +
+
+
+ +o +UPNP_E_SUCCESS [0]
+ +o +UPNP_E_INVALID_HANDLE [-100]
+ +o +UPNP_E_INVALID_PARAM [-101]
+ +o +UPNP_E_OUTOF_HANDLE [-102]
+ +o +UPNP_E_OUTOF_MEMORY [-104]
+ +o +UPNP_E_INIT [-105]
+ +o +UPNP_E_INVALID_DESC [-107]
+ +o +UPNP_E_INVALID_URL [-108]
+ +o +UPNP_E_INVALID_SERVICE [-111]
+ +o +UPNP_E_BAD_RESPONSE [-113]
+ +o +UPNP_E_INVALID_ACTION [-115]
+ +o +UPNP_E_FINISH [-116]
+ +o +UPNP_E_INIT_FAILED [-117]
+ +o +UPNP_E_BAD_HTTPMSG [-119]
+ +o +UPNP_E_ALREADY_REGISTERED [-120]
+ +o +UPNP_E_NETWORK_ERROR [-200]
+ +o +UPNP_E_SOCKET_WRITE [-201]
+ +o +UPNP_E_SOCKET_READ [-202]
+ +o +UPNP_E_SOCKET_BIND [-203]
+ +o +UPNP_E_SOCKET_CONNECT [-204]
+ +o +UPNP_E_OUTOF_SOCKET [-205]
+ +o +UPNP_E_LISTEN [-206]
+ +o +UPNP_E_TIMEDOUT [-207]
+ +o +UPNP_E_SOCKET_ERROR [-208]
+ +o +UPNP_E_CANCELED [-210]
+ +o +UPNP_E_SUBSCRIBE_UNACCEPTED [-301]
+ +o +UPNP_E_UNSUBSCRIBE_UNACCAPTED [-302]
+ +o +UPNP_E_NOTIFY_UNACCEPTED [-303]
+ +o +UPNP_E_INVALID_ARGUMENT [-501]
+ +o +UPNP_E_FILE_NOT_FOUND [-502]
+ +o +UPNP_E_FILE_READ_ERROR [-503]
+ +o +UPNP_E_EXT_NOT_XML [-504]
+ +o +UPNP_E_NOT_FOUND [-507]
+ +o +UPNP_E_INTERNAL_ERROR [-911]
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Eventing.html b/docs/dist/html/upnp/Eventing.html new file mode 100644 index 0000000..45c107a --- /dev/null +++ b/docs/dist/html/upnp/Eventing.html @@ -0,0 +1,67 @@ + + + + + Eventing + + + + +

Eventing

+ +
+
+
+ +o +UpnpAcceptSubscription
UpnpAcceptSubscription accepts a subscription request and sends out the current state of the eventable variables for a service. +
+ +o +UpnpAcceptSubscriptionExt
UpnpAcceptSubscriptionExt is similar to UpnpAcceptSubscription except that it takes a DOM document for the variables to event rather than an array of strings. +
+ +o +UpnpNotify
UpnpNotify sends out an event change notification to all control points subscribed to a particular service. +
+ +o +UpnpNotifyExt
UpnpNotifyExt is similar to UpnpNotify except that it takes a DOM document for the event rather than an array of strings. +
+ +o +UpnpRenewSubscription
UpnpRenewSubscription renews a subscription that is about to expire. +
+ +o +UpnpRenewSubscriptionAsync
UpnpRenewSubscriptionAsync renews a subscription that is about to expire, generating a callback when the operation is complete. +
+ +o +UpnpSetMaxSubscriptions
UpnpSetMaxSubscriptions sets the maximum number of subscriptions accepted per service. +
+ +o +UpnpSetMaxSubscriptionTimeOut
UpnpSetMaxSubscriptionTimeOut sets the maximum time-out accepted for a subscription request or renewal. +
+ +o +UpnpSubscribe
UpnpSubscribe registers a control point to receive event notifications from another device. +
+ +o +UpnpSubscribeAsync
UpnpSubscribeAsync performs the same operation as UpnpSubscribe, but returns immediately and calls the registered callback function when the operation is complete. +
+ +o +UpnpUnSubscribe
UpnpUnSubscribe removes the subscription of a control point from a service previously subscribed to using UpnpSubscribe or UpnpSubscribeAsync. +
+ +o +UpnpUnSubscribeAsync
UpnpUnSubscribeAsync removes a subscription of a control point from a service previously subscribed to using UpnpSubscribe or UpnpSubscribeAsync, generating a callback when the operation is complete. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/General.html b/docs/dist/html/upnp/General.html new file mode 100644 index 0000000..3dbee59 --- /dev/null +++ b/docs/dist/html/upnp/General.html @@ -0,0 +1,16 @@ + + + + + General Bits + + + + +
+
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/InitializationandRegistration.html b/docs/dist/html/upnp/InitializationandRegistration.html new file mode 100644 index 0000000..158c3cd --- /dev/null +++ b/docs/dist/html/upnp/InitializationandRegistration.html @@ -0,0 +1,63 @@ + + + + + Initialization and Registration + + + + +

Initialization and Registration

+ +
+
+
+ +o +UpnpInit
Initializes the Linux SDK for UPnP Devices. +
+ +o +UpnpFinish
Terminates the Linux SDK for UPnP Devices. +
+ +o +UpnpGetServerPort
If '0' is used as the port number in UpnpInit, then this function can be used to retrieve the actual port allocated to the SDK. +
+ +o +UpnpGetServerIpAddress
If NULL is used as the IP address in UpnpInit, then this function can be used to retrieve the actual interface address on which device is running. +
+ +o +UpnpRegisterClient
UpnpRegisterClient registers a control point application with the SDK. +
+ +o +UpnpRegisterRootDevice
UpnpRegisterRootDevice registers a device application with the SDK. +
+ +o +UpnpRegisterRootDevice2
UpnpRegisterRootDevice2 is similar to UpnpRegisterRootDevice, except that it also allows the description document to be specified as a file or a memory buffer. +
+ +o +UpnpUnRegisterClient
UpnpUnRegisterClient unregisters a control point application, unsubscribing all active subscriptions. +
+ +o +UpnpUnRegisterRootDevice
Unregisters a root device registered with UpnpRegisterRootDevice or UpnpRegisterRootDevice2. +
+ +o +UpnpSetContentLength
OBSOLETE METHOD : use UpnpSetMaxContentLength instead. +
+ +o +UpnpSetMaxContentLength
Sets the maximum content-length that the SDK will process on an incoming SOAP requests or responses. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Introduction.html b/docs/dist/html/upnp/Introduction.html new file mode 100644 index 0000000..931db81 --- /dev/null +++ b/docs/dist/html/upnp/Introduction.html @@ -0,0 +1,30 @@ + + + + + Introduction + + + + +

Introduction

+
This document gives a brief description of the Linux SDK for UPnP +Devices API. Section 1 covers the license under which the SDK is +distributed. Section 2 talks about the callback functions used +in many parts of the API. Finally, section 3 details the structures and +functions that comprise the API. + +

The Linux SDK for UPnP Devices version 1.2 supports the following +platforms: +

    +
  • Linux* running on an Intel Architecture processor +
  • Linux running on an Intel StrongARM or XScale processor +
+ +

* Other brands and names are the property of their respective +owners.

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/License.html b/docs/dist/html/upnp/License.html new file mode 100644 index 0000000..d1668c7 --- /dev/null +++ b/docs/dist/html/upnp/License.html @@ -0,0 +1,45 @@ + + + + + License + + + + +

License

+
+
+Copyright (c) 2000-2003 Intel Corporation +All rights reserved. +
+ +

Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +

    +
  • Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +
  • Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +
  • Neither name of Intel Corporation nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. +
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/OptionalToolAPIs.html b/docs/dist/html/upnp/OptionalToolAPIs.html new file mode 100644 index 0000000..086a952 --- /dev/null +++ b/docs/dist/html/upnp/OptionalToolAPIs.html @@ -0,0 +1,55 @@ + + + + + Optional Tool APIs + + + + +

Optional Tool APIs

+
The Linux SDK for UPnP Devices contains some additional, optional +utility APIs that can be helpful in writing applications using the +SDK. These additional APIs can be compiled out in order to save code +size in the SDK. Refer to the README for details.
+ +
+
+
+ +o +UpnpResolveURL
UpnpResolveURL combines a base URL and a relative URL into a single absolute URL. +
+ +o +UpnpMakeAction
UpnpMakeAction creates an action request packet based on its input parameters (status variable name and value pair). +
+ +o +UpnpAddToAction
UpnpAddToAction creates an action request packet based on its input parameters (status variable name and value pair). +
+ +o +UpnpMakeActionResponse
UpnpMakeActionResponse creates an action response packet based on its output parameters (status variable name and value pair). +
+ +o +UpnpAddToActionResponse
UpnpAddToActionResponse creates an action response packet based on its output parameters (status variable name and value pair). +
+ +o +UpnpAddToPropertySet
UpnpAddToPropertySet can be used when an application needs to transfer the status of many variables at once. +
+ +o +UpnpCreatePropertySet
UpnpCreatePropertySet creates a property set message packet. +
+ +o +UpnpGetErrorMessage
UpnpGetErrorMessage converts an SDK error code into a string error message suitable for display. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/TheAPI.html b/docs/dist/html/upnp/TheAPI.html new file mode 100644 index 0000000..93766fb --- /dev/null +++ b/docs/dist/html/upnp/TheAPI.html @@ -0,0 +1,43 @@ + + + + + The API + + + + +

The API

+ +
+
+
+ +o +Error codes
+ +o +Constants, Structures, and Types
+ +o +Initialization and Registration
+ +o +Discovery
+ +o +Control
+ +o +Eventing
+ +o +Control Point HTTP API
+ +o +Web Server API
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNPREG_BUF_DESC.html b/docs/dist/html/upnp/UPNPREG_BUF_DESC.html new file mode 100644 index 0000000..1d0e2da --- /dev/null +++ b/docs/dist/html/upnp/UPNPREG_BUF_DESC.html @@ -0,0 +1,21 @@ + + + + + UPNPREG_BUF_DESC + + + + +

UPNPREG_BUF_DESC

The description is a pointer to a character array containing the XML description document.
+ + +
+

Documentation

+
The description is a pointer to a character array containing +the XML description document.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNPREG_FILENAME_DESC.html b/docs/dist/html/upnp/UPNPREG_FILENAME_DESC.html new file mode 100644 index 0000000..175833c --- /dev/null +++ b/docs/dist/html/upnp/UPNPREG_FILENAME_DESC.html @@ -0,0 +1,21 @@ + + + + + UPNPREG_FILENAME_DESC + + + + +

UPNPREG_FILENAME_DESC

The description is a file name on the local file system containing the description of the device.
+ + +
+

Documentation

+
The description is a file name on the local file system +containing the description of the device.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNPREG_URL_DESC.html b/docs/dist/html/upnp/UPNPREG_URL_DESC.html new file mode 100644 index 0000000..4a57ec4 --- /dev/null +++ b/docs/dist/html/upnp/UPNPREG_URL_DESC.html @@ -0,0 +1,20 @@ + + + + + UPNPREG_URL_DESC + + + + +

UPNPREG_URL_DESC

The description is the URL to the description document.
+ + +
+

Documentation

+
The description is the URL to the description document.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_CONTROL_ACTION_COMPLETE.html b/docs/dist/html/upnp/UPNP_CONTROL_ACTION_COMPLETE.html new file mode 100644 index 0000000..4e3c7ad --- /dev/null +++ b/docs/dist/html/upnp/UPNP_CONTROL_ACTION_COMPLETE.html @@ -0,0 +1,22 @@ + + + + + UPNP_CONTROL_ACTION_COMPLETE + + + + +

UPNP_CONTROL_ACTION_COMPLETE

A UpnpSendActionAsync call completed.
+ + +
+

Documentation

+
A UpnpSendActionAsync call completed. The Event +parameter contains a pointer to a Upnp_Action_Complete structure +with the results of the action.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_CONTROL_ACTION_REQUEST.html b/docs/dist/html/upnp/UPNP_CONTROL_ACTION_REQUEST.html new file mode 100644 index 0000000..ee4fbc5 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_CONTROL_ACTION_REQUEST.html @@ -0,0 +1,23 @@ + + + + + UPNP_CONTROL_ACTION_REQUEST + + + + +

UPNP_CONTROL_ACTION_REQUEST

Received by a device when a control point issues a control request.
+ + +
+

Documentation

+
Received by a device when a control point issues a control +request. The Event parameter contains a pointer to a +Upnp_Action_Request structure containing the action. The application +stores the results of the action in this structure.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html b/docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html new file mode 100644 index 0000000..b60ac4f --- /dev/null +++ b/docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_COMPLETE.html @@ -0,0 +1,22 @@ + + + + + UPNP_CONTROL_GET_VAR_COMPLETE + + + + +

UPNP_CONTROL_GET_VAR_COMPLETE

A UpnpGetServiceVarStatus call completed.
+ + +
+

Documentation

+
A UpnpGetServiceVarStatus call completed. The Event +parameter contains a pointer to a Upnp_State_Var_Complete structure +containing the value for the variable.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_REQUEST.html b/docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_REQUEST.html new file mode 100644 index 0000000..37077d4 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_CONTROL_GET_VAR_REQUEST.html @@ -0,0 +1,23 @@ + + + + + UPNP_CONTROL_GET_VAR_REQUEST + + + + +

UPNP_CONTROL_GET_VAR_REQUEST

Received by a device when a query for a single service variable arrives.
+ + +
+

Documentation

+
Received by a device when a query for a single service variable +arrives. The Event parameter contains a pointer to a +Upnp_State_Var_Request structure containing the name of the variable +and value.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html b/docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html new file mode 100644 index 0000000..4d0ba24 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_ALIVE.html @@ -0,0 +1,23 @@ + + + + + UPNP_DISCOVERY_ADVERTISEMENT_ALIVE + + + + +

UPNP_DISCOVERY_ADVERTISEMENT_ALIVE

Received by a control point when a new device or service is available.
+ + +
+

Documentation

+
Received by a control point when a new device or service is available. +The Event parameter contains a pointer to a +Upnp_Discovery structure with the information about the device +or service.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html b/docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html new file mode 100644 index 0000000..67f206e --- /dev/null +++ b/docs/dist/html/upnp/UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE.html @@ -0,0 +1,23 @@ + + + + + UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE + + + + +

UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE

Received by a control point when a device or service shuts down.
+ + +
+

Documentation

+
Received by a control point when a device or service shuts down. The +Event parameter contains a pointer to a Upnp_Discovery +structure containing the information about the device or +service.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_RESULT.html b/docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_RESULT.html new file mode 100644 index 0000000..8b96980 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_RESULT.html @@ -0,0 +1,23 @@ + + + + + UPNP_DISCOVERY_SEARCH_RESULT + + + + +

UPNP_DISCOVERY_SEARCH_RESULT

Received by a control point when a matching device or service responds.
+ + +
+

Documentation

+
Received by a control point when a matching device or service responds. +The Event parameter contains a pointer to a +Upnp_Discovery structure containing the information about +the reply to the search request.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html b/docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html new file mode 100644 index 0000000..6cd4b1e --- /dev/null +++ b/docs/dist/html/upnp/UPNP_DISCOVERY_SEARCH_TIMEOUT.html @@ -0,0 +1,22 @@ + + + + + UPNP_DISCOVERY_SEARCH_TIMEOUT + + + + +

UPNP_DISCOVERY_SEARCH_TIMEOUT

Received by a control point when the search timeout expires.
+ + +
+

Documentation

+
Received by a control point when the search timeout expires. The +SDK generates no more callbacks for this search after this +event. The Event parameter is NULL.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html b/docs/dist/html/upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html new file mode 100644 index 0000000..31ca6d8 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_AUTORENEWAL_FAILED.html @@ -0,0 +1,23 @@ + + + + + UPNP_EVENT_AUTORENEWAL_FAILED + + + + +

UPNP_EVENT_AUTORENEWAL_FAILED

The auto-renewal of a client subscription failed.
+ + +
+

Documentation

+
The auto-renewal of a client subscription failed. +The Event parameter is a Upnp_Event_Subscribe structure +with the error code set appropriately. The subscription is no longer +valid.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_RECEIVED.html b/docs/dist/html/upnp/UPNP_EVENT_RECEIVED.html new file mode 100644 index 0000000..ebf234a --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_RECEIVED.html @@ -0,0 +1,22 @@ + + + + + UPNP_EVENT_RECEIVED + + + + +

UPNP_EVENT_RECEIVED

Received by a control point when an event arrives.
+ + +
+

Documentation

+
Received by a control point when an event arrives. The +Event parameter contains a Upnp_Event structure +with the information about the event.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_RENEWAL_COMPLETE.html b/docs/dist/html/upnp/UPNP_EVENT_RENEWAL_COMPLETE.html new file mode 100644 index 0000000..9c23470 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_RENEWAL_COMPLETE.html @@ -0,0 +1,22 @@ + + + + + UPNP_EVENT_RENEWAL_COMPLETE + + + + +

UPNP_EVENT_RENEWAL_COMPLETE

A UpnpRenewSubscriptionAsync call completed.
+ + +
+

Documentation

+
A UpnpRenewSubscriptionAsync call completed. The status of +the renewal is in the Event parameter as a +Upnp_Event_Subscription structure.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html b/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html new file mode 100644 index 0000000..1bf0cb0 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIBE_COMPLETE.html @@ -0,0 +1,22 @@ + + + + + UPNP_EVENT_SUBSCRIBE_COMPLETE + + + + +

UPNP_EVENT_SUBSCRIBE_COMPLETE

A UpnpSubscribeAsync call completed.
+ + +
+

Documentation

+
A UpnpSubscribeAsync call completed. The status of the +subscription is in the Event parameter as a +Upnp_Event_Subscription structure.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html b/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html new file mode 100644 index 0000000..ae478d1 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_EXPIRED.html @@ -0,0 +1,23 @@ + + + + + UPNP_EVENT_SUBSCRIPTION_EXPIRED + + + + +

UPNP_EVENT_SUBSCRIPTION_EXPIRED

A client subscription has expired.
+ + +
+

Documentation

+
A client subscription has expired. This will only occur +if auto-renewal of subscriptions is disabled. +The Event parameter is a Upnp_Event_Subscribe +structure. The subscription is no longer valid.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html b/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html new file mode 100644 index 0000000..07dfc3c --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_SUBSCRIPTION_REQUEST.html @@ -0,0 +1,27 @@ + + + + + UPNP_EVENT_SUBSCRIPTION_REQUEST + + + + +

UPNP_EVENT_SUBSCRIPTION_REQUEST

Received by a device when a subscription arrives.
+ + +
+

Documentation

+
Received by a device when a subscription arrives. +The Event parameter contains a pointer to a +Upnp_Subscription_Request structure. At this point, the +subscription has already been accepted. UpnpAcceptSubscription +needs to be called to confirm the subscription and transmit the +initial state table. This can be done during this callback. The SDK +generates no events for a subscription unless the device +application calls UpnpAcceptSubscription.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html b/docs/dist/html/upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html new file mode 100644 index 0000000..43f8105 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_EVENT_UNSUBSCRIBE_COMPLETE.html @@ -0,0 +1,22 @@ + + + + + UPNP_EVENT_UNSUBSCRIBE_COMPLETE + + + + +

UPNP_EVENT_UNSUBSCRIBE_COMPLETE

A UpnpUnSubscribeAsync call completed.
+ + +
+

Documentation

+
A UpnpUnSubscribeAsync call completed. The status of the +subscription is in the Event parameter as a +Upnp_Event_Subscribe structure.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_ALREADY_REGISTERED-120.html b/docs/dist/html/upnp/UPNP_E_ALREADY_REGISTERED-120.html new file mode 100644 index 0000000..e5dd5a6 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_ALREADY_REGISTERED-120.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_ALREADY_REGISTERED [-120] + + + + +

UPNP_E_ALREADY_REGISTERED [-120]

+
UPNP_E_ALREADY_REGISTERED signifies that a client or a device is +already registered. The SDK currently has a limit of one registered +client and one registered device per process.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_BAD_HTTPMSG-119.html b/docs/dist/html/upnp/UPNP_E_BAD_HTTPMSG-119.html new file mode 100644 index 0000000..c7f8b0c --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_BAD_HTTPMSG-119.html @@ -0,0 +1,21 @@ + + + + + UPNP_E_BAD_HTTPMSG [-119] + + + + +

UPNP_E_BAD_HTTPMSG [-119]

+
UPNP_E_BAD_HTTPMSG signifies that the HTTP message contains invalid +message headers. The error always refers to the HTTP message header +received from the remote host. The main areas where this occurs are in +SOAP control messages (e.g. UpnpSendAction), GENA subscription +message (e.g. UpnpSubscribe), GENA event notifications (e.g. +UpnpNotify), and HTTP transfers (e.g. UpnpDownloadXmlDoc).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_BAD_RESPONSE-113.html b/docs/dist/html/upnp/UPNP_E_BAD_RESPONSE-113.html new file mode 100644 index 0000000..456bf48 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_BAD_RESPONSE-113.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_BAD_RESPONSE [-113] + + + + +

UPNP_E_BAD_RESPONSE [-113]

+
UPNP_E_BAD_RESPONSE signifies that the response received from the +remote side of a connection is not correct for the protocol. This applies +to the GENA, SOAP, and HTTP protocols.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_CANCELED-210.html b/docs/dist/html/upnp/UPNP_E_CANCELED-210.html new file mode 100644 index 0000000..41b9e39 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_CANCELED-210.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_CANCELED [-210] + + + + +

UPNP_E_CANCELED [-210]

+
UPNP_E_CANCELED signifies that the operation was canceled. This +error can be returned by any function that allows for external +cancelation.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_EXT_NOT_XML-504.html b/docs/dist/html/upnp/UPNP_E_EXT_NOT_XML-504.html new file mode 100644 index 0000000..c5e1283 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_EXT_NOT_XML-504.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_EXT_NOT_XML [-504] + + + + +

UPNP_E_EXT_NOT_XML [-504]

+
UPNP_E_EXT_NOT_XML signifies that the file name of the description +document passed to UpnpRegisterRootDevice2 does not end in ".xml".
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_FILE_NOT_FOUND-502.html b/docs/dist/html/upnp/UPNP_E_FILE_NOT_FOUND-502.html new file mode 100644 index 0000000..5423aca --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_FILE_NOT_FOUND-502.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_FILE_NOT_FOUND [-502] + + + + +

UPNP_E_FILE_NOT_FOUND [-502]

+
UPNP_E_FILE_NOT_FOUND signifies that the filename passed +to one of the device registration functions was not found or was not +accessible.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_FILE_READ_ERROR-503.html b/docs/dist/html/upnp/UPNP_E_FILE_READ_ERROR-503.html new file mode 100644 index 0000000..7c8121a --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_FILE_READ_ERROR-503.html @@ -0,0 +1,16 @@ + + + + + UPNP_E_FILE_READ_ERROR [-503] + + + + +

UPNP_E_FILE_READ_ERROR [-503]

+
UPNP_E_FILE_READ_ERROR signifies an error when reading a file.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_FINISH-116.html b/docs/dist/html/upnp/UPNP_E_FINISH-116.html new file mode 100644 index 0000000..04143b5 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_FINISH-116.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_FINISH [-116] + + + + +

UPNP_E_FINISH [-116]

+
UPNP_E_FINISH signifies that UpnpInit has not been called, or +that UpnpFinish has already been called. None of the API functions +operate until UpnpInit successfully completes.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INIT-105.html b/docs/dist/html/upnp/UPNP_E_INIT-105.html new file mode 100644 index 0000000..23361f5 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INIT-105.html @@ -0,0 +1,19 @@ + + + + + UPNP_E_INIT [-105] + + + + +

UPNP_E_INIT [-105]

+
UPNP_E_INIT signifies that the SDK has already been +initialized. The SDK needs to be initialied only once per process. +Any additional initialization attempts simply return this error with +no other ill effects.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INIT_FAILED-117.html b/docs/dist/html/upnp/UPNP_E_INIT_FAILED-117.html new file mode 100644 index 0000000..3187765 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INIT_FAILED-117.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_INIT_FAILED [-117] + + + + +

UPNP_E_INIT_FAILED [-117]

+
UPNP_E_INIT_FAILED signifies that UpnpInit cannot complete. +The typical reason is failure to allocate sufficient resources.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INTERNAL_ERROR-911.html b/docs/dist/html/upnp/UPNP_E_INTERNAL_ERROR-911.html new file mode 100644 index 0000000..b736bc5 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INTERNAL_ERROR-911.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_INTERNAL_ERROR [-911] + + + + +

UPNP_E_INTERNAL_ERROR [-911]

+
UPNP_E_INTERNAL_ERROR is the generic error code for internal +conditions not covered by other error codes.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_ACTION-115.html b/docs/dist/html/upnp/UPNP_E_INVALID_ACTION-115.html new file mode 100644 index 0000000..b7eb10c --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_ACTION-115.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_INVALID_ACTION [-115] + + + + +

UPNP_E_INVALID_ACTION [-115]

+
UPNP_E_INVALID_ACTION signifies that the SOAP action message is +invalid. This can be because the DOM document passed to the function was +malformed or the action message is not correct for the given action.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_ARGUMENT-501.html b/docs/dist/html/upnp/UPNP_E_INVALID_ARGUMENT-501.html new file mode 100644 index 0000000..8f4d523 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_ARGUMENT-501.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_INVALID_ARGUMENT [-501] + + + + +

UPNP_E_INVALID_ARGUMENT [-501]

+
UPNP_E_INVALID_ARGUMENT signifies that one or more of the parameters +passed to a function is invalid. Refer to the individual function +descriptions for the acceptable ranges for parameters.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_DESC-107.html b/docs/dist/html/upnp/UPNP_E_INVALID_DESC-107.html new file mode 100644 index 0000000..f7afc6a --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_DESC-107.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_INVALID_DESC [-107] + + + + +

UPNP_E_INVALID_DESC [-107]

+
UPNP_E_INVALID_DESC signifies that the description document passed +to UpnpRegisterRootDevice or UpnpRegisterRootDevice2 is an +invalid description document.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_HANDLE-100.html b/docs/dist/html/upnp/UPNP_E_INVALID_HANDLE-100.html new file mode 100644 index 0000000..a5c866e --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_HANDLE-100.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_INVALID_HANDLE [-100] + + + + +

UPNP_E_INVALID_HANDLE [-100]

+
UPNP_E_INVALID_HANDLE signifies that the handle passed to a +function is not a recognized as a valid handle.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_PARAM-101.html b/docs/dist/html/upnp/UPNP_E_INVALID_PARAM-101.html new file mode 100644 index 0000000..8a4e69b --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_PARAM-101.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_INVALID_PARAM [-101] + + + + +

UPNP_E_INVALID_PARAM [-101]

+
UPNP_E_INVALID_PARAM signifies that one or more of the parameters +passed to the function is not valid. Refer to the documentation for each +function for more information on the valid ranges of the parameters.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_SERVICE-111.html b/docs/dist/html/upnp/UPNP_E_INVALID_SERVICE-111.html new file mode 100644 index 0000000..d0e8532 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_SERVICE-111.html @@ -0,0 +1,19 @@ + + + + + UPNP_E_INVALID_SERVICE [-111] + + + + +

UPNP_E_INVALID_SERVICE [-111]

+
UPNP_E_INVALID_SERVICE is returned only by UpnpNotify, +UpnpNotifyExt, UpnpAcceptSubscription, and +UpnpAcceptSubscriptionExt to signify that the device ID/service +ID pair does not refer to a valid service.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_INVALID_URL-108.html b/docs/dist/html/upnp/UPNP_E_INVALID_URL-108.html new file mode 100644 index 0000000..35a4ead --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_INVALID_URL-108.html @@ -0,0 +1,19 @@ + + + + + UPNP_E_INVALID_URL [-108] + + + + +

UPNP_E_INVALID_URL [-108]

+
UPNP_E_INVALID_URL signifies that a URL passed into the function +is invalid. The actual cause is function specific, but in general, the +URL itself might be malformed (e.g. have invalid characters in it) or +the host might be unreachable.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_LISTEN-206.html b/docs/dist/html/upnp/UPNP_E_LISTEN-206.html new file mode 100644 index 0000000..e1ac8d7 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_LISTEN-206.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_LISTEN [-206] + + + + +

UPNP_E_LISTEN [-206]

+
UPNP_E_LISTEN signifies that the SDK had a problem setting the +socket to listen for incoming connections. This error only happens during +initialization (i.e. UpnpInit).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_NETWORK_ERROR-200.html b/docs/dist/html/upnp/UPNP_E_NETWORK_ERROR-200.html new file mode 100644 index 0000000..d6df42a --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_NETWORK_ERROR-200.html @@ -0,0 +1,20 @@ + + + + + UPNP_E_NETWORK_ERROR [-200] + + + + +

UPNP_E_NETWORK_ERROR [-200]

+
UPNP_E_NETWORK_ERROR signifies that a network error occurred. It +is the generic error code for network problems that are not covered under +one of the more specific error codes. The typical meaning is the SDK +failed to read the local IP address or had problems configuring one of +the sockets.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html b/docs/dist/html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html new file mode 100644 index 0000000..f3a1af8 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_NOTIFY_UNACCEPTED [-303] + + + + +

UPNP_E_NOTIFY_UNACCEPTED [-303]

+
UPNP_E_NOTIFY_UNACCEPTED signifies that the remote host did not +accept the notify sent from the local device.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_NOT_FOUND-507.html b/docs/dist/html/upnp/UPNP_E_NOT_FOUND-507.html new file mode 100644 index 0000000..eeac2b2 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_NOT_FOUND-507.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_NOT_FOUND [-507] + + + + +

UPNP_E_NOT_FOUND [-507]

+
UPNP_E_NOT_FOUND signifies that the response to a SOAP request +did not contain the required XML constructs.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_OUTOF_HANDLE-102.html b/docs/dist/html/upnp/UPNP_E_OUTOF_HANDLE-102.html new file mode 100644 index 0000000..98b4526 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_OUTOF_HANDLE-102.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_OUTOF_HANDLE [-102] + + + + +

UPNP_E_OUTOF_HANDLE [-102]

+
UPNP_E_OUTOF_HANDLE signifies that the SDK does not have any +more space for additional handles. The SDK allocates space for only +a few handles in order to conserve memory.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_OUTOF_MEMORY-104.html b/docs/dist/html/upnp/UPNP_E_OUTOF_MEMORY-104.html new file mode 100644 index 0000000..a8db205 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_OUTOF_MEMORY-104.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_OUTOF_MEMORY [-104] + + + + +

UPNP_E_OUTOF_MEMORY [-104]

+
UPNP_E_OUTOF_MEMORY signifies that not enough resources are +currently available to complete the operation. Most operations require +some free memory in order to complete their work.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_OUTOF_SOCKET-205.html b/docs/dist/html/upnp/UPNP_E_OUTOF_SOCKET-205.html new file mode 100644 index 0000000..3573118 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_OUTOF_SOCKET-205.html @@ -0,0 +1,21 @@ + + + + + UPNP_E_OUTOF_SOCKET [-205] + + + + +

UPNP_E_OUTOF_SOCKET [-205]

+
UPNP_E_OUTOF_SOCKET signifies that the SDK cannot create any +more sockets. This occurs in any function that makes +network connections, such as discovery (e.g. UpnpSearchAsync or +UpnpSendAdvertisement), control (e.g. UpnpSendAction), eventing +(e.g. UpnpNotify), and HTTP functions (e.g. +UpnpDownloadXmlDoc).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SOCKET_BIND-203.html b/docs/dist/html/upnp/UPNP_E_SOCKET_BIND-203.html new file mode 100644 index 0000000..606ac85 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SOCKET_BIND-203.html @@ -0,0 +1,21 @@ + + + + + UPNP_E_SOCKET_BIND [-203] + + + + +

UPNP_E_SOCKET_BIND [-203]

+
UPNP_E_SOCKET_BIND signifies that the SDK had a problem binding +a socket to a network interface. This occurs in any function that makes +network connections, such as discovery (e.g. UpnpSearchAsync or +UpnpSendAdvertisement), control (e.g. UpnpSendAction), eventing +(e.g. UpnpNotify), and HTTP functions (e.g. +UpnpDownloadXmlDoc).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SOCKET_CONNECT-204.html b/docs/dist/html/upnp/UPNP_E_SOCKET_CONNECT-204.html new file mode 100644 index 0000000..a41b478 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SOCKET_CONNECT-204.html @@ -0,0 +1,21 @@ + + + + + UPNP_E_SOCKET_CONNECT [-204] + + + + +

UPNP_E_SOCKET_CONNECT [-204]

+
UPNP_E_SOCKET_CONNECT signifies that the SDK had a problem +connecting to a remote host. This occurs in any function that makes +network connections, such as discovery (e.g. UpnpSearchAsync or +UpnpSendAdvertisement), control (e.g. UpnpSendAction), eventing +(e.g. UpnpNotify), and HTTP functions (e.g. +UpnpDownloadXmlDoc).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SOCKET_ERROR-208.html b/docs/dist/html/upnp/UPNP_E_SOCKET_ERROR-208.html new file mode 100644 index 0000000..6164934 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SOCKET_ERROR-208.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_SOCKET_ERROR [-208] + + + + +

UPNP_E_SOCKET_ERROR [-208]

+
UPNP_E_SOCKET_ERROR is the generic socket error code for +conditions not covered by other error codes. This error can be returned +by any function that performs network operations.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SOCKET_READ-202.html b/docs/dist/html/upnp/UPNP_E_SOCKET_READ-202.html new file mode 100644 index 0000000..7731ac9 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SOCKET_READ-202.html @@ -0,0 +1,20 @@ + + + + + UPNP_E_SOCKET_READ [-202] + + + + +

UPNP_E_SOCKET_READ [-202]

+
UPNP_E_SOCKET_READ signifies an error reading from a socket. This +occurs in any function that makes network connections, such +as discovery (e.g. UpnpSearchAsync or UpnpSendAdvertisement), +control (e.g. UpnpSendAction), eventing (e.g. UpnpNotify), +and HTTP functions (e.g. UpnpDownloadXmlDoc).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SOCKET_WRITE-201.html b/docs/dist/html/upnp/UPNP_E_SOCKET_WRITE-201.html new file mode 100644 index 0000000..d59c1b4 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SOCKET_WRITE-201.html @@ -0,0 +1,20 @@ + + + + + UPNP_E_SOCKET_WRITE [-201] + + + + +

UPNP_E_SOCKET_WRITE [-201]

+
UPNP_E_SOCKET_WRITE signifies an error writing to a socket. This +occurs in any function that makes network connections, such +as discovery (e.g. UpnpSearchAsync or UpnpSendAdvertisement), +control (e.g. UpnpSendAction), eventing (e.g. UpnpNotify), +and HTTP functions (e.g. UpnpDownloadXmlDoc).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html b/docs/dist/html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html new file mode 100644 index 0000000..e3ccf22 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_SUBSCRIBE_UNACCEPTED [-301] + + + + +

UPNP_E_SUBSCRIBE_UNACCEPTED [-301]

+
UPNP_E_SUBSCRIBE_UNACCEPTED signifies that a subscription +request was rejected from the remote side.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_SUCCESS0.html b/docs/dist/html/upnp/UPNP_E_SUCCESS0.html new file mode 100644 index 0000000..4e3bab9 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_SUCCESS0.html @@ -0,0 +1,19 @@ + + + + + UPNP_E_SUCCESS [0] + + + + +

UPNP_E_SUCCESS [0]

+
UPNP_E_SUCCESS signifies that the operation completed successfully. +For asynchronous functions, this only means that the packet generated by +the operation was successfully transmitted on the network. The result of +the entire operation comes as part of the callback for that operation.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_TIMEDOUT-207.html b/docs/dist/html/upnp/UPNP_E_TIMEDOUT-207.html new file mode 100644 index 0000000..9c00d25 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_TIMEDOUT-207.html @@ -0,0 +1,18 @@ + + + + + UPNP_E_TIMEDOUT [-207] + + + + +

UPNP_E_TIMEDOUT [-207]

+
UPNP_E_TIMEDOUT signifies that too much time elapsed before the +required number of bytes were sent or received over a socket. This error +can be returned by any function that performs network operations.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html b/docs/dist/html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html new file mode 100644 index 0000000..f637757 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html @@ -0,0 +1,17 @@ + + + + + UPNP_E_UNSUBSCRIBE_UNACCAPTED [-302] + + + + +

UPNP_E_UNSUBSCRIBE_UNACCAPTED [-302]

+
UPNP_E_UNSUBSCRIBE_UNACCEPTED signifies that an unsubscribe +request was rejected from the remote side.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_S_ALL.html b/docs/dist/html/upnp/UPNP_S_ALL.html new file mode 100644 index 0000000..4432d50 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_S_ALL.html @@ -0,0 +1,20 @@ + + + + + UPNP_S_ALL + + + + +

UPNP_S_ALL

Search for all devices and services on the network.
+ + +
+

Documentation

+
Search for all devices and services on the network.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_S_DEVICE.html b/docs/dist/html/upnp/UPNP_S_DEVICE.html new file mode 100644 index 0000000..bbcdc55 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_S_DEVICE.html @@ -0,0 +1,21 @@ + + + + + UPNP_S_DEVICE + + + + +

UPNP_S_DEVICE

Search for a particular device type or a particular device instance.
+ + +
+

Documentation

+
Search for a particular device type or a particular device +instance.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_S_ROOT.html b/docs/dist/html/upnp/UPNP_S_ROOT.html new file mode 100644 index 0000000..d090533 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_S_ROOT.html @@ -0,0 +1,20 @@ + + + + + UPNP_S_ROOT + + + + +

UPNP_S_ROOT

Search for all root devices on the network.
+ + +
+

Documentation

+
Search for all root devices on the network.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPNP_S_SERVICE.html b/docs/dist/html/upnp/UPNP_S_SERVICE.html new file mode 100644 index 0000000..4f3b7b8 --- /dev/null +++ b/docs/dist/html/upnp/UPNP_S_SERVICE.html @@ -0,0 +1,21 @@ + + + + + UPNP_S_SERVICE + + + + +

UPNP_S_SERVICE

Search for a particular service type, possibly on a particular device type or device instance.
+ + +
+

Documentation

+
Search for a particular service type, possibly on a particular +device type or device instance.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UPnP_EventType.html b/docs/dist/html/upnp/UPnP_EventType.html new file mode 100644 index 0000000..3636a80 --- /dev/null +++ b/docs/dist/html/upnp/UPnP_EventType.html @@ -0,0 +1,83 @@ + + + + + enum UPnP_EventType + + + + +

enum UPnP_EventType

The reason code for an event callback.
+ +
The Event parameter will be different depending on the +reason for the callback. The descriptions for each event +type describe the contents of the Event parameter.
+ +
+
+
+ +o +UPNP_CONTROL_ACTION_REQUEST
Received by a device when a control point issues a control request. +
+ +o +UPNP_CONTROL_ACTION_COMPLETE
A UpnpSendActionAsync call completed. +
+ +o +UPNP_CONTROL_GET_VAR_REQUEST
Received by a device when a query for a single service variable arrives. +
+ +o +UPNP_CONTROL_GET_VAR_COMPLETE
A UpnpGetServiceVarStatus call completed. +
+ +o +UPNP_DISCOVERY_ADVERTISEMENT_ALIVE
Received by a control point when a new device or service is available. +
+ +o +UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE
Received by a control point when a device or service shuts down. +
+ +o +UPNP_DISCOVERY_SEARCH_RESULT
Received by a control point when a matching device or service responds. +
+ +o +UPNP_DISCOVERY_SEARCH_TIMEOUT
Received by a control point when the search timeout expires. +
+ +o +UPNP_EVENT_SUBSCRIPTION_REQUEST
Received by a device when a subscription arrives. +
+ +o +UPNP_EVENT_RECEIVED
Received by a control point when an event arrives. +
+ +o +UPNP_EVENT_RENEWAL_COMPLETE
A UpnpRenewSubscriptionAsync call completed. +
+ +o +UPNP_EVENT_SUBSCRIBE_COMPLETE
A UpnpSubscribeAsync call completed. +
+ +o +UPNP_EVENT_UNSUBSCRIBE_COMPLETE
A UpnpUnSubscribeAsync call completed. +
+ +o +UPNP_EVENT_AUTORENEWAL_FAILED
The auto-renewal of a client subscription failed. +
+ +o +UPNP_EVENT_SUBSCRIPTION_EXPIRED
A client subscription has expired. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpAcceptSubscription.html b/docs/dist/html/upnp/UpnpAcceptSubscription.html new file mode 100644 index 0000000..03a2472 --- /dev/null +++ b/docs/dist/html/upnp/UpnpAcceptSubscription.html @@ -0,0 +1,55 @@ + + + + + EXPORT_SPEC int UpnpAcceptSubscription + + + + +

EXPORT_SPEC int UpnpAcceptSubscription

( IN UpnpDevice_Handle Hnd,
  IN const char* DevID,
  IN const char* ServID,
  IN const char** VarName,
  IN const char** NewVal,
  IN int cVariables,
  IN Upnp_SID SubsId )

UpnpAcceptSubscription accepts a subscription request and sends out the current state of the eventable variables for a service.
+ + +
+

Documentation

+
UpnpAcceptSubscription accepts a subscription request and sends +out the current state of the eventable variables for a service. +The device application should call this function when it receives a +UPNP_EVENT_SUBSCRIPTION_REQUEST callback. This function is +synchronous and generates no callbacks. + +

UpnpAcceptSubscription can be called during the execution of +a callback function. + +

+
Parameters:
Hnd - The handle of the device. +
DevID - The device ID of the subdevice of the +service generating the event. +
ServID - The unique service identifier of the service +generating the event. +
VarName - Pointer to an array of event variables. +
NewVal - Pointer to an array of values for +the event variables. +
cVariables - The number of event variables in +VarName. +
SubsId - The subscription ID of the newly +registered control point.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid device +handle. +
  • UPNP_E_INVALID_SERVICE: The DevId/ServId +pair refers to an invalid service. +
  • UPNP_E_INVALID_SID: The specified subscription ID is not +valid. +
  • UPNP_E_INVALID_PARAM: Either VarName, +NewVal, DevID, or ServID is not a valid +pointer or cVariables is less than zero. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpAcceptSubscriptionExt.html b/docs/dist/html/upnp/UpnpAcceptSubscriptionExt.html new file mode 100644 index 0000000..f44223d --- /dev/null +++ b/docs/dist/html/upnp/UpnpAcceptSubscriptionExt.html @@ -0,0 +1,54 @@ + + + + + EXPORT_SPEC int UpnpAcceptSubscriptionExt + + + + +

EXPORT_SPEC int UpnpAcceptSubscriptionExt

( IN UpnpDevice_Handle Hnd,
  IN const char* DevID,
  IN const char* ServID,
  IN IXML_Document* PropSet,
  IN Upnp_SID SubsId )

UpnpAcceptSubscriptionExt is similar to UpnpAcceptSubscription except that it takes a DOM document for the variables to event rather than an array of strings.
+ + +
+

Documentation

+
UpnpAcceptSubscriptionExt is similar to UpnpAcceptSubscription +except that it takes a DOM document for the variables to event rather +than an array of strings. This function is sychronous +and generates no callbacks. + +

UpnpAcceptSubscriptionExt can be called during the execution of +a callback function. + +

+
Parameters:
Hnd - The handle of the device. +
DevID - The device ID of the subdevice of the +service generating the event. +
ServID - The unique service identifier of the service +generating the event. +
PropSet - The DOM document for the property set. +Property set documents must conform to +the XML schema defined in section 4.3 of the +Universal Plug and Play Device Architecture +specification. +
SubsId - The subscription ID of the newly +registered control point.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid device +handle. +
  • UPNP_E_INVALID_SERVICE: The DevId/ServId +pair refers to an invalid service. +
  • UPNP_E_INVALID_SID: The specified subscription ID is not +valid. +
  • UPNP_E_INVALID_PARAM: Either VarName, +NewVal, DevID, ServID, or PropSet +is not a valid pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpAddToAction.html b/docs/dist/html/upnp/UpnpAddToAction.html new file mode 100644 index 0000000..7d7d8a4 --- /dev/null +++ b/docs/dist/html/upnp/UpnpAddToAction.html @@ -0,0 +1,40 @@ + + + + + EXPORT_SPEC int UpnpAddToAction + + + + +

EXPORT_SPEC int UpnpAddToAction

( IN OUT IXML_Document** ActionDoc,
  IN const char* ActionName,
  IN const char* ServType,
  IN const char* ArgName,
  IN const char* ArgVal )

UpnpAddToAction creates an action request packet based on its input parameters (status variable name and value pair).
+ + +
+

Documentation

+
UpnpAddToAction creates an action request packet based on its input +parameters (status variable name and value pair). This API is specially +suitable inside a loop to add any number input parameters into an existing +action. If no action document exists in the beginning then a +Upnp_Document variable initialized with NULL should be passed +as a parameter. + +

+
Parameters:
ActionDoc - A pointer to store the action +document node. +
- ActionName The action name. +
ServType - The service type. +
ArgName - The status variable name. +
ArgVal - The status variable value.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: One or more of the parameters +are invalid. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpAddToActionResponse.html b/docs/dist/html/upnp/UpnpAddToActionResponse.html new file mode 100644 index 0000000..8dba961 --- /dev/null +++ b/docs/dist/html/upnp/UpnpAddToActionResponse.html @@ -0,0 +1,42 @@ + + + + + EXPORT_SPEC int UpnpAddToActionResponse + + + + +

EXPORT_SPEC int UpnpAddToActionResponse

( IN OUT IXML_Document** ActionResponse,
  IN const char* ActionName,
  IN const char* ServType,
  IN const char* ArgName,
  IN const char* ArgVal )

UpnpAddToActionResponse creates an action response packet based on its output parameters (status variable name and value pair).
+ + +
+

Documentation

+
UpnpAddToActionResponse creates an action response +packet based on its output parameters (status variable name +and value pair). This API is especially suitable inside +a loop to add any number of input parameters into an existing action +response. If no action document exists in the beginning, a +Upnp_Document variable initialized with NULL should be passed +as a parameter. + +

+
Parameters:
ActionResponse - Pointer to a document to +store the action document +node. +
- ActionName The action name. +
ServType - The service type. +
ArgName - The status variable name. +
ArgVal - The status variable value.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: One or more of the parameters +are invalid. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpAddToPropertySet.html b/docs/dist/html/upnp/UpnpAddToPropertySet.html new file mode 100644 index 0000000..5169020 --- /dev/null +++ b/docs/dist/html/upnp/UpnpAddToPropertySet.html @@ -0,0 +1,38 @@ + + + + + EXPORT_SPEC int UpnpAddToPropertySet + + + + +

EXPORT_SPEC int UpnpAddToPropertySet

( IN OUT IXML_Document** PropSet,
  IN const char* ArgName,
  IN const char* ArgVal )

UpnpAddToPropertySet can be used when an application needs to transfer the status of many variables at once.
+ + +
+

Documentation

+
UpnpAddToPropertySet can be used when an application needs to +transfer the status of many variables at once. It can be used +(inside a loop) to add some extra status variables into an existing +property set. If the application does not already have a property +set document, the application should create a variable initialized +with NULL and pass that as the first parameter. + +

+
Parameters:
PropSet - A pointer to the document containing +the property set document node. +
ArgName - The status variable name. +
ArgVal - The status variable value.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: One or more of the parameters +are invalid. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpAddVirtualDir.html b/docs/dist/html/upnp/UpnpAddVirtualDir.html new file mode 100644 index 0000000..63a930b --- /dev/null +++ b/docs/dist/html/upnp/UpnpAddVirtualDir.html @@ -0,0 +1,32 @@ + + + + + EXPORT_SPEC int UpnpAddVirtualDir + + + + +

EXPORT_SPEC int UpnpAddVirtualDir

( IN const char* dirName )

UpnpAddVirtualDir adds a virtual directory mapping.
+ + +
+

Documentation

+
UpnpAddVirtualDir adds a virtual directory mapping. + +

All webserver requests containing the given directory are read using +functions contained in a UpnpVirtualDirCallbacks structure registered +via UpnpSetVirtualDirCallbacks. + +

+
Parameters:
dirName - The name of the new directory mapping to add. +
Returns:
[int] An integer representing one of the following: +
    +
  • UPPN_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_ARGUMENT: dirName is not valid. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpCancelHttpGet.html b/docs/dist/html/upnp/UpnpCancelHttpGet.html new file mode 100644 index 0000000..b0fffcc --- /dev/null +++ b/docs/dist/html/upnp/UpnpCancelHttpGet.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC int UpnpCancelHttpGet + + + + +

EXPORT_SPEC int UpnpCancelHttpGet

(IN void* handle)

UpnpCancelHttpGet set the cancel flag of the handle parameter.
+ + +
+

Documentation

+
UpnpCancelHttpGet set the cancel flag of the handle +parameter. + +

+
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: handle is not a valid pointer. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpClient_Handle.html b/docs/dist/html/upnp/UpnpClient_Handle.html new file mode 100644 index 0000000..ff62e99 --- /dev/null +++ b/docs/dist/html/upnp/UpnpClient_Handle.html @@ -0,0 +1,22 @@ + + + + + typedef int UpnpClient_Handle + + + + +

typedef int UpnpClient_Handle

Returned when a control point application registers with UpnpRegisterClient.
+ + +
+

Documentation

+
Returned when a control point application registers with +UpnpRegisterClient. Client handles can only be used with +functions that operate with a client handle.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpCloseHttpGet.html b/docs/dist/html/upnp/UpnpCloseHttpGet.html new file mode 100644 index 0000000..1eb3d1a --- /dev/null +++ b/docs/dist/html/upnp/UpnpCloseHttpGet.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC int UpnpCloseHttpGet + + + + +

EXPORT_SPEC int UpnpCloseHttpGet

(IN void* handle)

UpnpCloseHttpGet closes the connection and frees memory that was allocated for the handle parameter.
+ + +
+

Documentation

+
UpnpCloseHttpGet closes the connection and frees memory that was +allocated for the handle parameter. + +

+
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: handle is not a valid pointer. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpCloseHttpPost.html b/docs/dist/html/upnp/UpnpCloseHttpPost.html new file mode 100644 index 0000000..a116d4c --- /dev/null +++ b/docs/dist/html/upnp/UpnpCloseHttpPost.html @@ -0,0 +1,42 @@ + + + + + EXPORT_SPEC int UpnpCloseHttpPost + + + + +

EXPORT_SPEC int UpnpCloseHttpPost

( IN void* handle,
  IN OUT int* httpStatus,
  IN int timeout )

UpnpCloseHttpPost sends and receives any pending data, closes the connection with the server, and frees memory allocated during the UpnpOpenHttpPost call.
+ + +
+

Documentation

+
UpnpCloseHttpPost sends and receives any pending data, closes the +connection with the server, and frees memory allocated during the +UpnpOpenHttpPost call. + +

+
Parameters:
handle - The handle of the connection to close, +created by the call to +UpnpOpenHttpPost. +
httpStatus - A pointer to a buffer to store the +final status of the connection. +
timeout - A time out value sent with the request +during which a response is expected from +the server, failing which, an error is +reported.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either handle, or +httpStatus is not a valid pointer. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpCreatePropertySet.html b/docs/dist/html/upnp/UpnpCreatePropertySet.html new file mode 100644 index 0000000..66874a0 --- /dev/null +++ b/docs/dist/html/upnp/UpnpCreatePropertySet.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC IXML_Document* UpnpCreatePropertySet + + + + +

EXPORT_SPEC IXML_Document* UpnpCreatePropertySet

( IN int NumArg,
  IN const char* Arg,
  IN ... )

UpnpCreatePropertySet creates a property set message packet.
+ + +
+

Documentation

+
UpnpCreatePropertySet creates a property set +message packet. Any number of input parameters can be passed +to this function but every input variable name should have +a matching value input argument. + +

+
Parameters:
NumArg - The number of argument pairs passed. +
Arg - The status variable name and value pair.
Returns:
[IXML_Document*] NULL on failure, or the property-set +document node. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpDevice_Handle.html b/docs/dist/html/upnp/UpnpDevice_Handle.html new file mode 100644 index 0000000..91fa4bc --- /dev/null +++ b/docs/dist/html/upnp/UpnpDevice_Handle.html @@ -0,0 +1,22 @@ + + + + + typedef int UpnpDevice_Handle + + + + +

typedef int UpnpDevice_Handle

Returned when a device application registers with UpnpRegisterRootDevice or UpnpRegisterRootDevice2.
+ + +
+

Documentation

+
Returned when a device application registers with +UpnpRegisterRootDevice or UpnpRegisterRootDevice2. Device handles +can only be used with functions that operate with a device handle.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpDownloadUrlItem.html b/docs/dist/html/upnp/UpnpDownloadUrlItem.html new file mode 100644 index 0000000..694f4cc --- /dev/null +++ b/docs/dist/html/upnp/UpnpDownloadUrlItem.html @@ -0,0 +1,50 @@ + + + + + EXPORT_SPEC int UpnpDownloadUrlItem + + + + +

EXPORT_SPEC int UpnpDownloadUrlItem

( IN const char* url,
  OUT char** outBuf,
  OUT char* contentType )

UpnpDownloadUrlItem downloads a file specified in a URL.
+ + +
+

Documentation

+
UpnpDownloadUrlItem downloads a file specified in a URL. +The SDK allocates the memory for outBuf and the +application is responsible for freeing this memory. Note that +the item is passed as a single buffer. Large items should not +be transferred using this function. + +

+
Parameters:
url - URL of an item to download. +
outBuf - Buffer to store the downloaded item. +
contentType - HTTP header value content type if +present. It should be at least +LINE_SIZE bytes in size.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either url, outBuf +or contentType is not a valid pointer. +
  • UPNP_E_INVALID_URL: The url is not a valid +URL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +download this file. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting a +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpDownloadXmlDoc.html b/docs/dist/html/upnp/UpnpDownloadXmlDoc.html new file mode 100644 index 0000000..4551568 --- /dev/null +++ b/docs/dist/html/upnp/UpnpDownloadXmlDoc.html @@ -0,0 +1,48 @@ + + + + + EXPORT_SPEC int UpnpDownloadXmlDoc + + + + +

EXPORT_SPEC int UpnpDownloadXmlDoc

( IN const char* url,
  OUT IXML_Document** xmlDoc )

UpnpDownloadXmlDoc downloads an XML document specified in a URL.
+ + +
+

Documentation

+
UpnpDownloadXmlDoc downloads an XML document specified in a URL. +The SDK parses the document and returns it in the form of a +DOM document. The application is responsible for freeing the DOM document. + +

+
Parameters:
url - URL of the XML document. +
xmlDoc - A pointer in which to store the +XML document.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either url or xmlDoc +is not a valid pointer. +
  • UPNP_E_INVALID_DESC: The XML document was not +found or it does not contain a valid XML description. +
  • UPNP_E_INVALID_URL: The url is not a valid +URL. +
  • UPNP_E_OUTOF_MEMORY: There are insufficient resources to +download the XML document. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting the +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpEnableWebserver.html b/docs/dist/html/upnp/UpnpEnableWebserver.html new file mode 100644 index 0000000..bdb8865 --- /dev/null +++ b/docs/dist/html/upnp/UpnpEnableWebserver.html @@ -0,0 +1,28 @@ + + + + + EXPORT_SPEC int UpnpEnableWebserver + + + + +

EXPORT_SPEC int UpnpEnableWebserver

( IN int enable )

UpnpEnableWebServer enables or disables the webserver.
+ + +
+

Documentation

+
UpnpEnableWebServer enables or disables the webserver. A value of +TRUE enables the webserver, FALSE disables it. + +

+
Parameters:
enable - TRUE to enable, FALSE to disable.
Returns:
[int] An integer representing one of the following: +
    +
  • UPPN_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_ARGUMENT: enable is not valid. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpFinish.html b/docs/dist/html/upnp/UpnpFinish.html new file mode 100644 index 0000000..d8ea0aa --- /dev/null +++ b/docs/dist/html/upnp/UpnpFinish.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC int UpnpFinish + + + + +

EXPORT_SPEC int UpnpFinish

()

Terminates the Linux SDK for UPnP Devices.
+ + +
+

Documentation

+
Terminates the Linux SDK for UPnP Devices. This function must be the last +API function called. It should be called only once. Subsequent calls to +this API return a UPNP_E_FINISH error code. + +

+
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_FINISH: The SDK is already terminated or +it is not initialized. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpGetErrorMessage.html b/docs/dist/html/upnp/UpnpGetErrorMessage.html new file mode 100644 index 0000000..8c0dee6 --- /dev/null +++ b/docs/dist/html/upnp/UpnpGetErrorMessage.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC const char* UpnpGetErrorMessage + + + + +

EXPORT_SPEC const char* UpnpGetErrorMessage

( int errorcode )

UpnpGetErrorMessage converts an SDK error code into a string error message suitable for display.
+ + +
+

Documentation

+
UpnpGetErrorMessage converts an SDK error code into a +string error message suitable for display. The memory returned +from this function should NOT be freed. + +

+
Parameters:
errorcode - The SDK error code to convert.
Returns:
[char*] An ASCII text string representation of the error message +associated with the error code. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpGetServerIpAddress.html b/docs/dist/html/upnp/UpnpGetServerIpAddress.html new file mode 100644 index 0000000..9729361 --- /dev/null +++ b/docs/dist/html/upnp/UpnpGetServerIpAddress.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC char* UpnpGetServerIpAddress + + + + +

EXPORT_SPEC char* UpnpGetServerIpAddress

(void)

If NULL is used as the IP address in UpnpInit, then this function can be used to retrieve the actual interface address on which device is running.
+ + +
+

Documentation

+
If NULL is used as the IP address in UpnpInit, then this +function can be used to retrieve the actual interface address +on which device is running. If UpnpInit has not succeeded +then NULL is returned. + +

+
Returns:
[char*] The IP address on which an internal server is listening +for UPnP related requests.

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpGetServerPort.html b/docs/dist/html/upnp/UpnpGetServerPort.html new file mode 100644 index 0000000..e311b68 --- /dev/null +++ b/docs/dist/html/upnp/UpnpGetServerPort.html @@ -0,0 +1,26 @@ + + + + + EXPORT_SPEC unsigned short UpnpGetServerPort + + + + +

EXPORT_SPEC unsigned short UpnpGetServerPort

(void)

If '0' is used as the port number in UpnpInit, then this function can be used to retrieve the actual port allocated to the SDK.
+ + +
+

Documentation

+
If '0' is used as the port number in UpnpInit, then this +function can be used to retrieve the actual port allocated to +the SDK. If UpnpInit has not succeeded then 0 is +returned. + +

+
Returns:
[unsigned short] The port on which an internal server is +listening for UPnP related requests.

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpGetServiceVarStatus.html b/docs/dist/html/upnp/UpnpGetServiceVarStatus.html new file mode 100644 index 0000000..e7e3427 --- /dev/null +++ b/docs/dist/html/upnp/UpnpGetServiceVarStatus.html @@ -0,0 +1,48 @@ + + + + + EXPORT_SPEC int UpnpGetServiceVarStatus + + + + +

EXPORT_SPEC int UpnpGetServiceVarStatus

( IN UpnpClient_Handle Hnd,
  IN const char* ActionURL,
  IN const char* VarName,
  OUT DOMString* StVarVal )

UpnpGetServiceVarStatus queries the state of a state variable of a service on another device.
+ + +
+

Documentation

+
UpnpGetServiceVarStatus queries the state of a state +variable of a service on another device. This is a synchronous call. +A positive return value indicates a SOAP error code, whereas a negative +return code indicates an SDK error code. Note that the use of this +function is deprecated by the UPnP Forum. + +

+
Parameters:
Hnd - The handle of the control point. +
ActionURL - The URL of the service. +
VarName - The name of the variable to query. +
StVarVal - The pointer to store the value +for VarName. The SDK +allocates this string and the caller +needs to free it using +ixmlFreeDOMString.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: ActionUrl is not a valid URL. +
  • UPNP_E_INVALID_DESC: The XML document was not +found or it does not contain a valid XML description. +
  • UPNP_E_INVALID_PARAM: StVarVal is not a valid +pointer or VarName or ActionUrl is NULL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
  • UPNP_SOAP_E_INVALID_VAR: The given variable is invalid +according to the device. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpGetServiceVarStatusAsync.html b/docs/dist/html/upnp/UpnpGetServiceVarStatusAsync.html new file mode 100644 index 0000000..4f64f62 --- /dev/null +++ b/docs/dist/html/upnp/UpnpGetServiceVarStatusAsync.html @@ -0,0 +1,41 @@ + + + + + EXPORT_SPEC int UpnpGetServiceVarStatusAsync + + + + +

EXPORT_SPEC int UpnpGetServiceVarStatusAsync

( IN UpnpClient_Handle Hnd,
  IN const char* ActionURL,
  IN const char* VarName,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie )

UpnpGetServiceVarStatusAsync queries the state of a variable of a service, generating a callback when the operation is complete.
+ + +
+

Documentation

+
UpnpGetServiceVarStatusAsync queries the state of a variable of a +service, generating a callback when the operation is complete. Note +that the use of this function is deprecated by the UPnP Forum. + +

+
Parameters:
Hnd - The handle of the control point. +
ActionURL - The URL of the service. +
VarName - The name of the variable to query. +
Fun - Pointer to a callback function to +be invoked when the operation is complete. +
Cookie - Pointer to user data to pass to the +callback function when invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: The ActionUrl is not a valid URL. +
  • UPNP_E_INVALID_PARAM: VarName, Fun or +ActionUrl is not a valid pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpHttpGetProgress.html b/docs/dist/html/upnp/UpnpHttpGetProgress.html new file mode 100644 index 0000000..87aa552 --- /dev/null +++ b/docs/dist/html/upnp/UpnpHttpGetProgress.html @@ -0,0 +1,32 @@ + + + + + EXPORT_SPEC int UpnpHttpGetProgress + + + + +

EXPORT_SPEC int UpnpHttpGetProgress

( IN void* handle,
  OUT unsigned int* length,
  OUT unsigned int* total )

UpnpHttpGetProgress rettrieve progress information of a http-get transfer.
+ + +
+

Documentation

+
UpnpHttpGetProgress rettrieve progress information of a http-get +transfer. + +

+
Parameters:
handle - The token created by the call to +UpnpOpenHttpGet. +
length - The number of bytes received. +
total - The content length.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either handle, length +or total is not a valid pointer. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpInit.html b/docs/dist/html/upnp/UpnpInit.html new file mode 100644 index 0000000..2b2ec3a --- /dev/null +++ b/docs/dist/html/upnp/UpnpInit.html @@ -0,0 +1,54 @@ + + + + + EXPORT_SPEC int UpnpInit + + + + +

EXPORT_SPEC int UpnpInit

( IN const char* HostIP,
  IN unsigned short DestPort )

Initializes the Linux SDK for UPnP Devices.
+ + +
+

Documentation

+
Initializes the Linux SDK for UPnP Devices. This function must be called +before any other API function can be called. It should be called +only once. Subsequent calls to this API return a UPNP_E_INIT +error code. + +

Optionally, the application can specify a host IP address (in the +case of a multi-homed configuration) and a port number to use for +all UPnP operations. Since a port number can be used only by one +process, multiple processes using the SDK must specify +different port numbers. + +

If unspecified, the SDK will use the first adapter's IP address +and an arbitrary port. + +

This call is synchronous. + +

+
Parameters:
HostIP - The host IP address to use, in +string format, for example "192.168.0.1", +or NULL to use the first adapter's +IP address. +
DestPort - The destination port number to use. 0 +will pick an arbitrary free port.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist +to initialize the SDK. +
  • UPNP_E_INIT: The SDK is already initialized. +
  • UPNP_E_INIT_FAILED: The SDK initialization +failed for an unknown reason. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_LISTEN: An error occurred listening to a socket. +
  • UPNP_E_OUTOF_SOCKET: An error ocurred creating a socket. +
  • UPNP_E_INTERNAL_ERROR: An internal error ocurred. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpIsWebserverEnabled.html b/docs/dist/html/upnp/UpnpIsWebserverEnabled.html new file mode 100644 index 0000000..ed10b06 --- /dev/null +++ b/docs/dist/html/upnp/UpnpIsWebserverEnabled.html @@ -0,0 +1,27 @@ + + + + + EXPORT_SPEC int UpnpIsWebserverEnabled + + + + +

EXPORT_SPEC int UpnpIsWebserverEnabled

()

UpnpIsWebServerEnabled returns TRUE if the webserver is enabled, or FALSE if it is not.
+ + +
+

Documentation

+
UpnpIsWebServerEnabled returns TRUE if the webserver is +enabled, or FALSE if it is not. + +

+
Returns:
[int] An integer representing one of the following: +
    +
  • TRUE: The webserver is enabled. +
  • FALSE: The webserver is not enabled +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpMakeAction.html b/docs/dist/html/upnp/UpnpMakeAction.html new file mode 100644 index 0000000..83db62a --- /dev/null +++ b/docs/dist/html/upnp/UpnpMakeAction.html @@ -0,0 +1,30 @@ + + + + + EXPORT_SPEC IXML_Document* UpnpMakeAction + + + + +

EXPORT_SPEC IXML_Document* UpnpMakeAction

( IN const char* ActionName,
  IN const char* ServType,
  IN int NumArg,
  IN const char* Arg,
  IN ... )

UpnpMakeAction creates an action request packet based on its input parameters (status variable name and value pair).
+ + +
+

Documentation

+
UpnpMakeAction creates an action request packet based on its input +parameters (status variable name and value pair). Any number of input +parameters can be passed to this function but every input variable name +should have a matching value argument. + +

+
Parameters:
- ActionName The action name. +
ServType - The service type. +
NumArg - Number of argument pairs to be passed. +
Arg - Status variable name and value pair.
Returns:
[IXML_Document*] The action node of Upnp_Document type or +NULL if the operation failed. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpMakeActionResponse.html b/docs/dist/html/upnp/UpnpMakeActionResponse.html new file mode 100644 index 0000000..c4fa868 --- /dev/null +++ b/docs/dist/html/upnp/UpnpMakeActionResponse.html @@ -0,0 +1,30 @@ + + + + + EXPORT_SPEC IXML_Document* UpnpMakeActionResponse + + + + +

EXPORT_SPEC IXML_Document* UpnpMakeActionResponse

( IN const char* ActionName,
  IN const char* ServType,
  IN int NumArg,
  IN const char* Arg,
  IN ... )

UpnpMakeActionResponse creates an action response packet based on its output parameters (status variable name and value pair).
+ + +
+

Documentation

+
UpnpMakeActionResponse creates an action response packet based +on its output parameters (status variable name and value pair). Any +number of input parameters can be passed to this function but every output +variable name should have a matching value argument. + +

+
Parameters:
- ActionName The action name. +
ServType - The service type. +
NumArg - The number of argument pairs passed. +
Arg - The status variable name and value pair.
Returns:
[IXML_Document*] The action node of Upnp_Document type or +NULL if the operation failed. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpNotify.html b/docs/dist/html/upnp/UpnpNotify.html new file mode 100644 index 0000000..a746eab --- /dev/null +++ b/docs/dist/html/upnp/UpnpNotify.html @@ -0,0 +1,50 @@ + + + + + EXPORT_SPEC int UpnpNotify + + + + +

EXPORT_SPEC int UpnpNotify

( IN UpnpDevice_Handle,
  IN const char* DevID,
  IN const char* ServID,
  IN const char** VarName,
  IN const char** NewVal,
  IN int cVariables )

UpnpNotify sends out an event change notification to all control points subscribed to a particular service.
+ + +
+

Documentation

+
UpnpNotify sends out an event change notification to all +control points subscribed to a particular service. This function is +synchronous and generates no callbacks. + +

UpnpNotify may be called during a callback function to send out +a notification. + +

+
Parameters:
- UpnpDevice_Handle The handle to the device sending the event. +
DevID - The device ID of the subdevice of the service +generating the event. +
ServID - The unique identifier of the service +generating the event. +
VarName - Pointer to an array of variables that +have changed. +
NewVal - Pointer to an array of new values for +those variables. +
cVariables - The count of variables included in this +notification.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid device +handle. +
  • UPNP_E_INVALID_SERVICE: The DevId/ServId +pair refers to an invalid service. +
  • UPNP_E_INVALID_PARAM: Either VarName, NewVal, +DevID, or ServID is not a valid pointer or +cVariables is less than zero. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpNotifyExt.html b/docs/dist/html/upnp/UpnpNotifyExt.html new file mode 100644 index 0000000..6e0c971 --- /dev/null +++ b/docs/dist/html/upnp/UpnpNotifyExt.html @@ -0,0 +1,50 @@ + + + + + EXPORT_SPEC int UpnpNotifyExt + + + + +

EXPORT_SPEC int UpnpNotifyExt

( IN UpnpDevice_Handle,
  IN const char* DevID,
  IN const char* ServID,
  IN IXML_Document* PropSet )

UpnpNotifyExt is similar to UpnpNotify except that it takes a DOM document for the event rather than an array of strings.
+ + +
+

Documentation

+
UpnpNotifyExt is similar to UpnpNotify except that it takes +a DOM document for the event rather than an array of strings. This +function is synchronous and generates no callbacks. + +

UpnpNotifyExt may be called during a callback function to send out +a notification. + +

+
Parameters:
- UpnpDevice_Handle The handle to the device sending the +event. +
DevID - The device ID of the subdevice of the +service generating the event. +
ServID - The unique identifier of the service +generating the event. +
PropSet - The DOM document for the property set. +Property set documents must conform to +the XML schema defined in section 4.3 of +the Universal Plug and Play Device +Architecture specification.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid device +handle. +
  • UPNP_E_INVALID_SERVICE: The DevId/ServId +pair refers to an invalid service. +
  • UPNP_E_INVALID_PARAM: Either VarName, NewVal, +DevID, ServID, or PropSet +is not a valid pointer or cVariables is less than zero. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpOpenHttpGet.html b/docs/dist/html/upnp/UpnpOpenHttpGet.html new file mode 100644 index 0000000..ac5865d --- /dev/null +++ b/docs/dist/html/upnp/UpnpOpenHttpGet.html @@ -0,0 +1,60 @@ + + + + + EXPORT_SPEC int UpnpOpenHttpGet + + + + +

EXPORT_SPEC int UpnpOpenHttpGet

( IN const char* url,
  IN OUT void** handle,
  IN OUT char** contentType,
  IN OUT int* contentLength,
  IN OUT int* httpStatus,
  IN int timeout )

UpnpOpenHttpGet gets a file specified in a URL.
+ + +
+

Documentation

+
UpnpOpenHttpGet gets a file specified in a URL. +The SDK allocates the memory for handle and +contentType, the application is responsible for freeing this memory. + +

+
Parameters:
url - The URL of an item to get. +
handle - A pointer to store the handle for +this connection. +
contentType - A buffer to store the media type of +the item. +
contentLength - A pointer to store the length of the +item. +
httpStatus - The status returned on receiving a +response message. +
timeout - The time out value sent with the +request during which a response is +expected from the server, failing +which, an error is reported back to +the user.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either url, handle, +contentType, contentLength or httpStatus +is not a valid pointer. +
  • UPNP_E_INVALID_URL: The url is not a valid +URL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +download this file. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting a +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
  • UPNP_E_BAD_RESPONSE: A bad response was received from the +remote server. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpOpenHttpGetEx.html b/docs/dist/html/upnp/UpnpOpenHttpGetEx.html new file mode 100644 index 0000000..0ccc6ad --- /dev/null +++ b/docs/dist/html/upnp/UpnpOpenHttpGetEx.html @@ -0,0 +1,66 @@ + + + + + EXPORT_SPEC int UpnpOpenHttpGetEx + + + + +

EXPORT_SPEC int UpnpOpenHttpGetEx

( IN const char* url,
  IN OUT void** handle,
  IN OUT char** contentType,
  IN OUT int* contentLength,
  IN OUT int* httpStatus,
  IN int lowRange,
  IN int highRange,
  IN int timeout )

UpnpOpenHttpGetEx gets specified number of bytes from a file specified in the URL.
+ + +
+

Documentation

+
UpnpOpenHttpGetEx gets specified number of bytes from a file +specified in the URL. The number of bytes is specified through a low +count and a high count which are passed as a range of bytes for the +request. The SDK allocates the memory for handle and +contentType, the application is responsible for freeing this memory. + +

+
Parameters:
url - The URL of the item to get. +
handle - A pointer to store the handle for +this connection. +
contentType - A buffer to store the media type of the +item. +
contentLength - A buffer to store the length of the +item. +
httpStatus - The status returned on receiving a +response message from the remote +server. +
lowRange - An integer value representing the low +end of a range to retrieve. +
highRange - An integer value representing the high +end of a range to retrieve. +
timeout - A time out value sent with the request +during which a response is expected +from the server, failing which, an +error is reported back to the user.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either url, handle, +contentType, contentLength or httpStatus +is not a valid pointer. +
  • UPNP_E_INVALID_URL: The url is not a valid +URL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +download this file. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting a +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
  • UPNP_E_BAD_RESPONSE: A bad response was received from the +remote server. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpOpenHttpGetProxy.html b/docs/dist/html/upnp/UpnpOpenHttpGetProxy.html new file mode 100644 index 0000000..29909f5 --- /dev/null +++ b/docs/dist/html/upnp/UpnpOpenHttpGetProxy.html @@ -0,0 +1,62 @@ + + + + + EXPORT_SPEC int UpnpOpenHttpGetProxy + + + + +

EXPORT_SPEC int UpnpOpenHttpGetProxy

( IN const char* url,
  IN const char* proxy_str,
  IN OUT void** handle,
  IN OUT char** contentType,
  IN OUT int* contentLength,
  IN OUT int* httpStatus,
  IN int timeout )

UpnpOpenHttpGetProxy gets a file specified in a URL through the specified proxy.
+ + +
+

Documentation

+
UpnpOpenHttpGetProxy gets a file specified in a URL through the +specified proxy. +The SDK allocates the memory for handle and +contentType, the application is responsible for freeing this memory. + +

+
Parameters:
url - The URL of an item to get. +
proxy_str - The URL of the proxy. +
handle - A pointer to store the handle for +this connection. +
contentType - A buffer to store the media type of +the item. +
contentLength - A pointer to store the length of the +item. +
httpStatus - The status returned on receiving a +response message. +
timeout - The time out value sent with the +request during which a response is +expected from the server, failing +which, an error is reported back to +the user.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either url, handle, +contentType, contentLength or httpStatus +is not a valid pointer. +
  • UPNP_E_INVALID_URL: The url is not a valid +URL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +download this file. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting a +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
  • UPNP_E_BAD_RESPONSE: A bad response was received from the +remote server. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpOpenHttpPost.html b/docs/dist/html/upnp/UpnpOpenHttpPost.html new file mode 100644 index 0000000..033f384 --- /dev/null +++ b/docs/dist/html/upnp/UpnpOpenHttpPost.html @@ -0,0 +1,57 @@ + + + + + EXPORT_SPEC int UpnpOpenHttpPost + + + + +

EXPORT_SPEC int UpnpOpenHttpPost

( IN const char* url,
  IN OUT void** handle,
  IN const char* contentType,
  IN int contentLength,
  IN int timeout )

UpnpOpenHttpPost makes an HTTP POST request message, opens a connection to the server and sends the POST request to the server if the connection to the server succeeds.
+ + +
+

Documentation

+
UpnpOpenHttpPost makes an HTTP POST request message, opens a +connection to the server and sends the POST request to the server if +the connection to the server succeeds. +The SDK allocates the memory for handle and +contentType, the application is responsible for freeing this memory. + +

+
Parameters:
url - The URL in which to send the POST +request. +
handle - A pointer in which to store the +handle for this connection. This +handle is required for futher +operations over this connection. +
contentType - A buffer to store the media type of +content being sent. +
contentLength - The length of the content, in bytes, +being posted. +
timeout - The time out value sent with the +request during which a response is +expected from the receiver, failing +which, an error is reported.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either url, handle +or contentType is not a valid pointer. +
  • UPNP_E_INVALID_URL: The url is not a valid +URL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +download this file. +
  • UPNP_E_SOCKET_ERROR: Error occured allocating a socket and +resources or an error occurred binding a socket. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting a +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpReadHttpGet.html b/docs/dist/html/upnp/UpnpReadHttpGet.html new file mode 100644 index 0000000..0cafaf2 --- /dev/null +++ b/docs/dist/html/upnp/UpnpReadHttpGet.html @@ -0,0 +1,45 @@ + + + + + EXPORT_SPEC int UpnpReadHttpGet + + + + +

EXPORT_SPEC int UpnpReadHttpGet

( IN void* handle,
  IN OUT char* buf,
  IN OUT unsigned int* size,
  IN int timeout )

UpnpReadHttpGet gets specified number of bytes from a file specified in a URL.
+ + +
+

Documentation

+
UpnpReadHttpGet gets specified number of bytes from a file +specified in a URL. + +

+
Parameters:
handle - The token created by the call to +UpnpOpenHttpGet. +
buf - The buffer to store the read item. +
size - The size of the buffer to be read. +
timeout - The time out value sent with the +request during which a response is +expected from the server, failing +which, an error is reported back to +the user.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either handle, buf +or size is not a valid pointer. +
  • UPNP_E_BAD_RESPONSE: A bad response was received from the +remote server. +
  • UPNP_E_BAD_HTTPMSG: Either the request or response was in +the incorrect format. +
  • UPNP_E_CANCELED: another thread called UpnpCancelHttpGet. +
+Note: In case of return values, the status code parameter of the passed +in handle value may provide additional information on the return +value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRegisterClient.html b/docs/dist/html/upnp/UpnpRegisterClient.html new file mode 100644 index 0000000..894a330 --- /dev/null +++ b/docs/dist/html/upnp/UpnpRegisterClient.html @@ -0,0 +1,42 @@ + + + + + EXPORT_SPEC int UpnpRegisterClient + + + + +

EXPORT_SPEC int UpnpRegisterClient

( IN Upnp_FunPtr Callback,
  IN const void* Cookie,
  OUT UpnpClient_Handle* Hnd )

UpnpRegisterClient registers a control point application with the SDK.
+ + +
+

Documentation

+
UpnpRegisterClient registers a control point application with the +SDK. A control point application cannot make any other API calls +until it registers using this function. + +

UpnpRegisterClient is a synchronous call and generates no callbacks. +Callbacks can occur as soon as this function returns. + +

+
Parameters:
Callback - Pointer to a function for receiving +asynchronous events. +
Cookie - Pointer to user data returned with the +callback function when invoked. +
Hnd - Pointer to a variable to store the +new control point handle.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_FINISH: The SDK is already terminated or +is not initialized. +
  • UPNP_E_INVALID_PARAM: Either Callback or Hnd +is not a valid pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +register this control point. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRegisterRootDevice.html b/docs/dist/html/upnp/UpnpRegisterRootDevice.html new file mode 100644 index 0000000..069a43c --- /dev/null +++ b/docs/dist/html/upnp/UpnpRegisterRootDevice.html @@ -0,0 +1,62 @@ + + + + + EXPORT_SPEC int UpnpRegisterRootDevice + + + + +

EXPORT_SPEC int UpnpRegisterRootDevice

( IN const char* DescUrl,
  IN Upnp_FunPtr Callback,
  IN const void* Cookie,
  OUT UpnpDevice_Handle* Hnd )

UpnpRegisterRootDevice registers a device application with the SDK.
+ + +
+

Documentation

+
UpnpRegisterRootDevice registers a device application with +the SDK. A device application cannot make any other API +calls until it registers using this function. Device applications +can also register as control points (see UpnpRegisterClient +to get a control point handle to perform control point +functionality). + +

UpnpRegisterRootDevice is synchronous and does not generate +any callbacks. Callbacks can occur as soon as this function returns. + +

+
Parameters:
DescUrl - Pointer to a string containing the +description URL for this root device +instance. +
Callback - Pointer to the callback function for +receiving asynchronous events. +
Cookie - Pointer to user data returned with the +callback function when invoked. +
Hnd - Pointer to a variable to store the +new device handle.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_FINISH: The SDK is already terminated or +is not initialized. +
  • UPNP_E_INVALID_DESC: The description document was not +a valid device description. +
  • UPNP_E_INVALID_URL: The URL for the description document +is not valid. +
  • UPNP_E_INVALID_PARAM: Either Callback or Hnd +is not a valid pointer or DescURL is NULL. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting the +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
  • UPNP_E_OUTOF_MEMORY: There are insufficient resources to +register this root device. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRegisterRootDevice2.html b/docs/dist/html/upnp/UpnpRegisterRootDevice2.html new file mode 100644 index 0000000..60b9532 --- /dev/null +++ b/docs/dist/html/upnp/UpnpRegisterRootDevice2.html @@ -0,0 +1,106 @@ + + + + + EXPORT_SPEC int UpnpRegisterRootDevice2 + + + + +

EXPORT_SPEC int UpnpRegisterRootDevice2

( IN Upnp_DescType descriptionType,
  IN const char* description,
  IN size_t bufferLen,
  IN int config_baseURL,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie,
  OUT UpnpDevice_Handle* Hnd )

UpnpRegisterRootDevice2 is similar to UpnpRegisterRootDevice, except that it also allows the description document to be specified as a file or a memory buffer.
+ + +
+

Documentation

+
UpnpRegisterRootDevice2 is similar to UpnpRegisterRootDevice, +except that it also allows the description document to be specified as a +file or a memory buffer. The description can also be configured to have the +correct IP and port address. + +

NOTE: For the configuration to be functional, the internal web server +MUST be present. In addition, the web server MUST be activated +(using UpnpSetWebServerRootDir) before calling this function. +The only condition where the web server can be absent is if the +description document is specified as a URL and no configuration is +required (i.e. config_baseURL = 0.) + +

UpnpRegisterRootDevice2 is synchronous and does not generate +any callbacks. Callbacks can occur as soon as this function returns. + +

Examples of using different types of description documents: +

+    1) Description specified as a URL:
+          descriptionType == UPNPREG_URL_DESC
+          description is the URL
+          bufferLen = 0 (ignored)
+    2) Description specified as a file:
+          descriptionType == UPNPREG_FILENAME_DESC
+          description is a filename
+          bufferLen = 0 (ignored)
+    3) Description specified as a memory buffer:
+          descriptionType == UPNPREG_BUF_DESC
+          description is pointer to a memory buffer
+          bufferLen == length of memory buffer
+    
+ +

+
Parameters:
descriptionType - The type of the description +document. +
description - Treated as a URL, file name or +memory buffer depending on +description type. +
bufferLen - The length of memory buffer if +passing a description in a buffer, +otherwise it is ignored. +
config_baseURL - If nonzero, URLBase of +description document is +configured and the description +is served using the internal +web server. +
Fun - Pointer to the callback function +for receiving asynchronous +events. +
Cookie - Pointer to user data returned +with the callback function when +invoked. +
Hnd - Pointer to a variable to store +the new device handle.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_FINISH: The SDK is already terminated or +is not initialized. +
  • UPNP_E_INVALID_DESC: The description document is not +a valid device description. +
  • UPNP_E_INVALID_PARAM: Either Callback or Hnd +is not a valid pointer or DescURL is NULL. +
  • UPNP_E_NETWORK_ERROR: A network error occurred. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting the +socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
  • UPNP_E_OUTOF_MEMORY: There are insufficient resources to +register this root device. +
  • UPNP_E_URL_TOO_BIG: Length of the URL is bigger than the +internal buffer. +
  • UPNP_E_FILE_NOT_FOUND: The description file could not +be found. +
  • UPNP_E_FILE_READ_ERROR: An error occurred reading the +description file. +
  • UPNP_E_INVALID_URL: The URL to the description document +is invalid. +
  • UPNP_E_EXT_NOT_XML: The URL to the description document +or file should have a .xml extension. +
  • UPNP_E_NO_WEB_SERVER: The internal web server has been +compiled out; the SDK cannot configure itself from the +description document. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRemoveAllVirtualDirs.html b/docs/dist/html/upnp/UpnpRemoveAllVirtualDirs.html new file mode 100644 index 0000000..e7a9fba --- /dev/null +++ b/docs/dist/html/upnp/UpnpRemoveAllVirtualDirs.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC void UpnpRemoveAllVirtualDirs + + + + +

EXPORT_SPEC void UpnpRemoveAllVirtualDirs

( )

UpnpRemoveAllVirtualDirs removes all virtual directory mappings.
+ + +
+

Documentation

+
UpnpRemoveAllVirtualDirs removes all virtual directory mappings. + +

+
Returns:
[void] This function does not return a value. +

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRemoveVirtualDir.html b/docs/dist/html/upnp/UpnpRemoveVirtualDir.html new file mode 100644 index 0000000..7accd97 --- /dev/null +++ b/docs/dist/html/upnp/UpnpRemoveVirtualDir.html @@ -0,0 +1,29 @@ + + + + + EXPORT_SPEC int UpnpRemoveVirtualDir + + + + +

EXPORT_SPEC int UpnpRemoveVirtualDir

( IN const char* dirName )

UpnpRemoveVirtualDir removes a virtual directory mapping made with UpnpAddVirtualDir.
+ + +
+

Documentation

+
UpnpRemoveVirtualDir removes a virtual directory mapping made with +UpnpAddVirtualDir. + +

+
Parameters:
dirName - The name of the virtual directory mapping to +remove.
Returns:
[int] An integer representing one of the following: +
    +
  • UPPN_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_ARGUMENT: dirName is not valid. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRenewSubscription.html b/docs/dist/html/upnp/UpnpRenewSubscription.html new file mode 100644 index 0000000..b193074 --- /dev/null +++ b/docs/dist/html/upnp/UpnpRenewSubscription.html @@ -0,0 +1,52 @@ + + + + + EXPORT_SPEC int UpnpRenewSubscription + + + + +

EXPORT_SPEC int UpnpRenewSubscription

( IN UpnpClient_Handle Hnd,
  INOUT int* TimeOut,
  IN Upnp_SID SubsId )

UpnpRenewSubscription renews a subscription that is about to expire.
+ + +
+

Documentation

+
UpnpRenewSubscription renews a subscription that is about to +expire. This function is synchronous. + +

+
Parameters:
Hnd - The handle of the control point that +is renewing the subscription. +
- TimeOut Pointer to a variable containing the +requested subscription time. Upon return, +it contains the actual renewal time. +
SubsId - The ID for the subscription to renew.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_PARAM: Timeout is not a valid pointer. +
  • UPNP_E_INVALID_SID: The SID being passed to this function +is not a valid subscription ID. +
  • UPNP_E_NETWORK_ERROR: A network error occured. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting to +PublisherUrl. +
  • UPNP_E_OUTOF_SOCKET: An error occurred creating a socket. +
  • UPNP_E_BAD_RESPONSE: An error occurred in response from +the publisher. +
  • UPNP_E_SUBSCRIBE_UNACCEPTED: The publisher refused +the subscription renew. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpRenewSubscriptionAsync.html b/docs/dist/html/upnp/UpnpRenewSubscriptionAsync.html new file mode 100644 index 0000000..eebd490 --- /dev/null +++ b/docs/dist/html/upnp/UpnpRenewSubscriptionAsync.html @@ -0,0 +1,76 @@ + + + + + EXPORT_SPEC int UpnpRenewSubscriptionAsync + + + + +

EXPORT_SPEC int UpnpRenewSubscriptionAsync

( IN UpnpClient_Handle Hnd,
  IN int TimeOut,
  IN Upnp_SID SubsId,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie )

UpnpRenewSubscriptionAsync renews a subscription that is about to expire, generating a callback when the operation is complete.
+ + +
+

Documentation

+
UpnpRenewSubscriptionAsync renews a subscription that is about +to expire, generating a callback when the operation is complete. + +

Note that many of the error codes for this function are returned in +the Upnp_Event_Subscribe structure. In those cases, the function +returns UPNP_E_SUCCESS and the appropriate error code will +be in the Upnp_Event_Subscribe.ErrCode field in the Event +structure passed to the callback. + +

+
Parameters:
Hnd - The handle of the control point that +is renewing the subscription. +
- TimeOut The requested subscription time. The +actual timeout value is returned when +the callback function is called. +
SubsId - The ID for the subscription to renew. +
Fun - Pointer to a callback function to be +invoked when the renewal is complete. +
Cookie - Pointer to user data passed +to the callback function when invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_SID: The SubsId is not a valid +subscription ID. +
  • UPNP_E_INVALID_PARAM: Either Fun is not a valid +callback function pointer or Timeout is less than zero +but is not UPNP_INFINITE. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
  • UPNP_E_NETWORK_ERROR: A network error occured (returned in +the Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket (returned in the Upnp_Event_Subscribe.ErrCode +field as part of the callback). +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_BIND: An error occurred binding the socket +(returned in the Upnp_Event_Subscribe.ErrCode field as +part of the callback). +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting to +PublisherUrl (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_OUTOF_SOCKET: An error occurred creating socket ( +returned in the Upnp_Event_Subscribe.ErrCode field as +part of the callback). +
  • UPNP_E_BAD_RESPONSE: An error occurred in response from +the publisher (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_SUBSCRIBE_UNACCEPTED: The publisher refused +the subscription request (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpResolveURL.html b/docs/dist/html/upnp/UpnpResolveURL.html new file mode 100644 index 0000000..dd893bf --- /dev/null +++ b/docs/dist/html/upnp/UpnpResolveURL.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int UpnpResolveURL + + + + +

EXPORT_SPEC int UpnpResolveURL

( IN const char* BaseURL,
  IN const char* RelURL,
  OUT char* AbsURL )

UpnpResolveURL combines a base URL and a relative URL into a single absolute URL.
+ + +
+

Documentation

+
UpnpResolveURL combines a base URL and a relative URL into +a single absolute URL. The memory for AbsURL needs to be +allocated by the caller and must be large enough to hold the +BaseURL and RelURL combined. + +

+
Parameters:
BaseURL - The base URL to combine. +
RelURL - The relative URL to BaseURL. +
AbsURL - A pointer to a buffer to store the +absolute URL.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: RelURL is NULL. +
  • UPNP_E_INVALID_URL: The BaseURL / RelURL +combination does not form a valid URL. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSearchAsync.html b/docs/dist/html/upnp/UpnpSearchAsync.html new file mode 100644 index 0000000..c12ee80 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSearchAsync.html @@ -0,0 +1,50 @@ + + + + + EXPORT_SPEC int UpnpSearchAsync + + + + +

EXPORT_SPEC int UpnpSearchAsync

( IN UpnpClient_Handle Hnd,
  IN int Mx,
  IN const char* Target,
  IN const void* Cookie )

UpnpSearchAsync searches for devices matching the given search target.
+ + +
+

Documentation

+
UpnpSearchAsync searches for devices matching the given +search target. The function returns immediately and the SDK +calls the default callback function, registered during the +UpnpRegisterClient call, for each matching root device, +device, or service. The application specifies the search type by the +Target parameter. + +

Note that there is no way for the SDK to distinguish which client +instance issued a particular search. Therefore, the client can get +search callbacks that do not match the original criteria of the search. +Also, the application will receive multiple callbacks for each search. + +

+
Parameters:
Hnd - The handle of the client performing +the search. +
Mx - The time, in seconds, to wait for +responses. If the time is greater +than MAX_SEARCH_TIME then the time is +set to MAX_SEARCH_TIME. If the time is +less than MIN_SEARCH_TIME then the +time is set to MIN_SEARCH_TIME. +
Target - The search target as defined in the UPnP +Device Architecture v1.0 specification. +
Cookie - The user data to pass when the callback +function is invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_PARAM: Target is NULL. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSendAction.html b/docs/dist/html/upnp/UpnpSendAction.html new file mode 100644 index 0000000..f36d478 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSendAction.html @@ -0,0 +1,53 @@ + + + + + EXPORT_SPEC int UpnpSendAction + + + + +

EXPORT_SPEC int UpnpSendAction

( IN UpnpClient_Handle Hnd,
  IN const char* ActionURL,
  IN const char* ServiceType,
  IN const char* DevUDN,
  IN IXML_Document* Action,
  OUT IXML_Document** RespNode )

UpnpSendAction sends a message to change a state variable in a service.
+ + +
+

Documentation

+
UpnpSendAction sends a message to change a state variable +in a service. This is a synchronous call that does not return until the +action is complete. + +

Note that a positive return value indicates a SOAP-protocol error code. +In this case, the error description can be retrieved from RespNode. +A negative return value indicates an SDK error. + +

+
Parameters:
Hnd - The handle of the control point +sending the action. +
ActionURL - The action URL of the service. +
- ServiceType The type of the service. +
- DevUDN This parameter is ignored and must be +NULL. +
Action - The DOM document for the action. +
RespNode - The DOM document for the response +to the action. The SDK allocates +this document and the caller needs to free +it.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: ActionUrl is not a valid URL. +
  • UPNP_E_INVALID_ACTION: This action is not valid. +
  • UPNP_E_INVALID_DEVICE: DevUDN is not a +valid device. +
  • UPNP_E_INVALID_PARAM: ServiceType, Action, +ActionUrl, or +RespNode is not a valid pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSendActionAsync.html b/docs/dist/html/upnp/UpnpSendActionAsync.html new file mode 100644 index 0000000..512a23d --- /dev/null +++ b/docs/dist/html/upnp/UpnpSendActionAsync.html @@ -0,0 +1,52 @@ + + + + + EXPORT_SPEC int UpnpSendActionAsync + + + + +

EXPORT_SPEC int UpnpSendActionAsync

( IN UpnpClient_Handle Hnd,
  IN const char* ActionURL,
  IN const char* ServiceType,
  IN const char* DevUDN,
  IN IXML_Document* Action,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie )

UpnpSendActionAsync sends a message to change a state variable in a service, generating a callback when the operation is complete.
+ + +
+

Documentation

+
UpnpSendActionAsync sends a message to change a state variable +in a service, generating a callback when the operation is complete. +See UpnpSendAction for comments on positive return values. These +positive return values are sent in the event struct associated with the +UPNP_CONTROL_ACTION_COMPLETE event. + +

+
Parameters:
Hnd - The handle of the control point +sending the action. +
ActionURL - The action URL of the service. +
- ServiceType The type of the service. +
- DevUDN This parameter is ignored and must be +NULL. +
Action - The DOM document for the action to +perform on this device. +
Fun - Pointer to a callback function to +be invoked when the operation +completes. +
Cookie - Pointer to user data that to be +passed to the callback when invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: ActionUrl is an invalid URL. +
  • UPNP_E_INVALID_DEVICE: DevUDN is an invalid device. +
  • UPNP_E_INVALID_PARAM: Either Fun is not a valid +callback function or ServiceType, Act, or +ActionUrl is NULL. +
  • UPNP_E_INVALID_ACTION: This action is not valid. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSendActionEx.html b/docs/dist/html/upnp/UpnpSendActionEx.html new file mode 100644 index 0000000..71baa3b --- /dev/null +++ b/docs/dist/html/upnp/UpnpSendActionEx.html @@ -0,0 +1,56 @@ + + + + + EXPORT_SPEC int UpnpSendActionEx + + + + +

EXPORT_SPEC int UpnpSendActionEx

( IN UpnpClient_Handle Hnd,
  IN const char* ActionURL,
  IN const char* ServiceType,
  IN const char* DevUDN,
  IN IXML_Document* Header,
  IN IXML_Document* Action,
  OUT IXML_Document** RespNode )

UpnpSendActionEx sends a message to change a state variable in a service.
+ + +
+

Documentation

+
UpnpSendActionEx sends a message to change a state variable +in a service. This is a synchronous call that does not return until the +action is complete. + +

Note that a positive return value indicates a SOAP-protocol error code. +In this case, the error description can be retrieved from RespNode. +A negative return value indicates an SDK error. + +

+
Parameters:
Hnd - The handle of the control point +sending the action. +
ActionURL - The action URL of the service. +
- ServiceType The type of the service. +
- DevUDN This parameter is ignored and must be +NULL. +
Header - The DOM document for the SOAP header. +This may be NULL if the header is +not required. +
Action - The DOM document for the action. +
RespNode - The DOM document for the response +to the action. The SDK allocates +this document and the caller needs to free +it.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: ActionUrl is not a valid URL. +
  • UPNP_E_INVALID_ACTION: This action is not valid. +
  • UPNP_E_INVALID_DEVICE: DevUDN is not a +valid device. +
  • UPNP_E_INVALID_PARAM: ServiceType, Action, +ActionUrl, or +RespNode is not a valid pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSendActionExAsync.html b/docs/dist/html/upnp/UpnpSendActionExAsync.html new file mode 100644 index 0000000..2d143e1 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSendActionExAsync.html @@ -0,0 +1,55 @@ + + + + + EXPORT_SPEC int UpnpSendActionExAsync + + + + +

EXPORT_SPEC int UpnpSendActionExAsync

( IN UpnpClient_Handle Hnd,
  IN const char* ActionURL,
  IN const char* ServiceType,
  IN const char* DevUDN,
  IN IXML_Document* Header,
  IN IXML_Document* Action,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie )

UpnpSendActionExAsync sends a message to change a state variable in a service, generating a callback when the operation is complete.
+ + +
+

Documentation

+
UpnpSendActionExAsync sends a message to change a state variable +in a service, generating a callback when the operation is complete. +See UpnpSendAction for comments on positive return values. These +positive return values are sent in the event struct associated with the +UPNP_CONTROL_ACTION_COMPLETE event. + +

+
Parameters:
Hnd - The handle of the control point +sending the action. +
ActionURL - The action URL of the service. +
- ServiceType The type of the service. +
- DevUDN This parameter is ignored and must be +NULL. +
Header - The DOM document for the SOAP header. +This may be NULL if the header is +not required. +
Action - The DOM document for the action to +perform on this device. +
Fun - Pointer to a callback function to +be invoked when the operation +completes. +
Cookie - Pointer to user data that to be +passed to the callback when invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: ActionUrl is an invalid URL. +
  • UPNP_E_INVALID_DEVICE: DevUDN is an invalid device. +
  • UPNP_E_INVALID_PARAM: Either Fun is not a valid +callback function or ServiceType, Act, or +ActionUrl is NULL. +
  • UPNP_E_INVALID_ACTION: This action is not valid. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSendAdvertisement.html b/docs/dist/html/upnp/UpnpSendAdvertisement.html new file mode 100644 index 0000000..a72d619 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSendAdvertisement.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int UpnpSendAdvertisement + + + + +

EXPORT_SPEC int UpnpSendAdvertisement

( IN UpnpDevice_Handle Hnd,
  IN int Exp )

UpnpSendAdvertisement sends out the discovery announcements for all devices and services for a device.
+ + +
+

Documentation

+
UpnpSendAdvertisement sends out the discovery announcements for +all devices and services for a device. Each announcement is made with +the same expiration time. + +

UpnpSendAdvertisement is a synchronous call. + +

+
Parameters:
Hnd - The device handle for which to send out the +announcements. +
Exp - The expiration age, in seconds, of +the announcements.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid +device handle. +
  • UPNP_E_OUTOF_MEMORY: There are insufficient resources to +send future advertisements. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSetContentLength.html b/docs/dist/html/upnp/UpnpSetContentLength.html new file mode 100644 index 0000000..a9350ba --- /dev/null +++ b/docs/dist/html/upnp/UpnpSetContentLength.html @@ -0,0 +1,23 @@ + + + + + EXPORT_SPEC int UpnpSetContentLength + + + + +

EXPORT_SPEC int UpnpSetContentLength

( IN UpnpClient_Handle Hnd,
  IN int contentLength )

OBSOLETE METHOD : use UpnpSetMaxContentLength instead.
+ + +
+

Documentation

+
OBSOLETE METHOD : use UpnpSetMaxContentLength instead. +Warning: the Handle argument provided here is not used, so the effect +of this function is global to the SDK (= same as +UpnpSetMaxContentLength ).
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSetMaxContentLength.html b/docs/dist/html/upnp/UpnpSetMaxContentLength.html new file mode 100644 index 0000000..e6347a3 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSetMaxContentLength.html @@ -0,0 +1,32 @@ + + + + + EXPORT_SPEC int UpnpSetMaxContentLength + + + + +

EXPORT_SPEC int UpnpSetMaxContentLength

( IN size_t contentLength )

Sets the maximum content-length that the SDK will process on an incoming SOAP requests or responses.
+ + +
+

Documentation

+
Sets the maximum content-length that the SDK will process on an incoming +SOAP requests or responses. This API allows devices that have memory +constraints to exhibit consistent behaviour if the size of the +incoming SOAP message exceeds the memory that device can allocate. +The default maximum content-length is DEFAULT_SOAP_CONTENT_LENGTH += 16K bytes. + +

+
Parameters:
contentLength - The maximum permissible content length +for incoming SOAP actions, in bytes.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSetMaxSubscriptionTimeOut.html b/docs/dist/html/upnp/UpnpSetMaxSubscriptionTimeOut.html new file mode 100644 index 0000000..04857ec --- /dev/null +++ b/docs/dist/html/upnp/UpnpSetMaxSubscriptionTimeOut.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int UpnpSetMaxSubscriptionTimeOut + + + + +

EXPORT_SPEC int UpnpSetMaxSubscriptionTimeOut

( IN UpnpDevice_Handle Hnd,
  IN int MaxSubscriptionTimeOut )

UpnpSetMaxSubscriptionTimeOut sets the maximum time-out accepted for a subscription request or renewal.
+ + +
+

Documentation

+
UpnpSetMaxSubscriptionTimeOut sets the maximum time-out accepted +for a subscription request or renewal. The default value accepts the +time-out set by the control point. If a control point requests a +subscription time-out less than or equal to the maximum, the SDK +grants the value requested by the control point. If the time-out +is greater, the SDK returns the maximum value. + +

+
Parameters:
Hnd - The handle of the device for which +the maximum subscription time-out is +being set. +
MaxSubscriptionTimeOut - The maximum subscription time-out to +be accepted.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid device +handle. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSetMaxSubscriptions.html b/docs/dist/html/upnp/UpnpSetMaxSubscriptions.html new file mode 100644 index 0000000..b52524c --- /dev/null +++ b/docs/dist/html/upnp/UpnpSetMaxSubscriptions.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int UpnpSetMaxSubscriptions + + + + +

EXPORT_SPEC int UpnpSetMaxSubscriptions

( IN UpnpDevice_Handle Hnd,
  IN int MaxSubscriptions )

UpnpSetMaxSubscriptions sets the maximum number of subscriptions accepted per service.
+ + +
+

Documentation

+
UpnpSetMaxSubscriptions sets the maximum number of subscriptions +accepted per service. The default value accepts as many as system +resources allow. If the number of current subscriptions for a service is +greater than the requested value, the SDK accepts no new +subscriptions or renewals, however, the SDK does not remove +any current subscriptions. + +

+
Parameters:
Hnd - The handle of the device for which +the maximum number of subscriptions is +being set. +
MaxSubscriptions - The maximum number of subscriptions to be +allowed per service.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid device +handle. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSetVirtualDirCallbacks.html b/docs/dist/html/upnp/UpnpSetVirtualDirCallbacks.html new file mode 100644 index 0000000..6b7d561 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSetVirtualDirCallbacks.html @@ -0,0 +1,33 @@ + + + + + EXPORT_SPEC int UpnpSetVirtualDirCallbacks + + + + +

EXPORT_SPEC int UpnpSetVirtualDirCallbacks

( IN struct UpnpVirtualDirCallbacks* callbacks )

UpnpSetVirtualDirCallbacks sets the callback function to be used to access a virtual directory.
+ + +
+

Documentation

+
UpnpSetVirtualDirCallbacks sets the callback function to be used to +access a virtual directory. Refer to the description of +UpnpVirtualDirCallbacks for a description of the functions. + +

+
Parameters:
callbacks - Pointer to a structure +containing points to the +virtual interface +functions.
Returns:
[int] An integer representing one of the following: +
    +
  • UPPN_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_ARGUMENT: callbacks is not a valid +pointer. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSetWebServerRootDir.html b/docs/dist/html/upnp/UpnpSetWebServerRootDir.html new file mode 100644 index 0000000..d3492e8 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSetWebServerRootDir.html @@ -0,0 +1,38 @@ + + + + + EXPORT_SPEC int UpnpSetWebServerRootDir + + + + +

EXPORT_SPEC int UpnpSetWebServerRootDir

( IN const char* rootDir )

UpnpSetWebServerRootDir sets the document root directory for the internal web server.
+ + +
+

Documentation

+
UpnpSetWebServerRootDir sets the document root directory for +the internal web server. This directory is considered the +root directory (i.e. "/") of the web server. + +

This function also activates or deactivates the web server. +To disable the web server, pass NULL for rootDir; to +activate, pass a valid directory string. + +

Note that this function is not available when the web server is not +compiled into the SDK. + +

+
Parameters:
rootDir - Path of the root directory of the web +server.
Returns:
[int] An integer representing one of the following: +
    +
  • UPPN_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_ARGUMENT: rootDir is an invalid +directory. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSubscribe.html b/docs/dist/html/upnp/UpnpSubscribe.html new file mode 100644 index 0000000..2f1c1c5 --- /dev/null +++ b/docs/dist/html/upnp/UpnpSubscribe.html @@ -0,0 +1,55 @@ + + + + + EXPORT_SPEC int UpnpSubscribe + + + + +

EXPORT_SPEC int UpnpSubscribe

( IN UpnpClient_Handle Hnd,
  IN const char* PublisherUrl,
  INOUT int* TimeOut,
  OUT Upnp_SID SubsId )

UpnpSubscribe registers a control point to receive event notifications from another device.
+ + +
+

Documentation

+
UpnpSubscribe registers a control point to receive event +notifications from another device. This operation is synchronous. + +

+
Parameters:
Hnd - The handle of the control point. +
- PublisherUrl The URL of the service to subscribe to. +
- TimeOut Pointer to a variable containing +the requested subscription time. Upon +return, it contains the actual +subscription time returned from the +service. +
SubsId - Pointer to a variable to receive the +subscription ID (SID).
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: PublisherUrl is not a valid URL. +
  • UPNP_E_INVALID_PARAM: Timeout is not a valid pointer +or SubsId or PublisherUrl is NULL. +
  • UPNP_E_NETWORK_ERROR: A network error occured. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting to +PublisherUrl. +
  • UPNP_E_OUTOF_SOCKET: An error occurred creating a socket. +
  • UPNP_E_BAD_RESPONSE: An error occurred in response from +the publisher. +
  • UPNP_E_SUBSCRIBE_UNACCEPTED: The publisher refused +the subscription request. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpSubscribeAsync.html b/docs/dist/html/upnp/UpnpSubscribeAsync.html new file mode 100644 index 0000000..bf3864f --- /dev/null +++ b/docs/dist/html/upnp/UpnpSubscribeAsync.html @@ -0,0 +1,79 @@ + + + + + EXPORT_SPEC int UpnpSubscribeAsync + + + + +

EXPORT_SPEC int UpnpSubscribeAsync

( IN UpnpClient_Handle Hnd,
  IN const char* PublisherUrl,
  IN int TimeOut,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie )

UpnpSubscribeAsync performs the same operation as UpnpSubscribe, but returns immediately and calls the registered callback function when the operation is complete.
+ + +
+

Documentation

+
UpnpSubscribeAsync performs the same operation as +UpnpSubscribe, but returns immediately and calls the registered +callback function when the operation is complete. + +

Note that many of the error codes for this function are returned in +the Upnp_Event_Subscribe structure. In those cases, the function +returns UPNP_E_SUCCESS and the appropriate error code will +be in the Upnp_Event_Subscribe.ErrCode field in the Event +structure passed to the callback. + +

+
Parameters:
Hnd - The handle of the control point that +is subscribing. +
- PublisherUrl The URL of the service to subscribe +to. +
- TimeOut The requested subscription time. Upon +return, it contains the actual +subscription time returned from the +service. +
Fun - Pointer to the callback function for +this subscribe request. +
Cookie - A user data value passed to the +callback function when invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_URL: The PublisherUrl is not a valid +URL. +
  • UPNP_E_INVALID_PARAM: Either TimeOut or Fun or +PublisherUrl is not a valid pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
  • UPNP_E_NETWORK_ERROR: A network error occured (returned in +the Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_BIND: An error occurred binding the socket +(returned in the Upnp_Event_Subscribe.ErrCode field as +part of the callback). +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting to +PublisherUrl (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_OUTOF_SOCKET: An error occurred creating the +socket (returned in the Upnp_Event_Subscribe.ErrCode +field as part of the callback). +
  • UPNP_E_BAD_RESPONSE: An error occurred in response from +the publisher (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_SUBSCRIBE_UNACCEPTED: The publisher refused +the subscription request (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpUnRegisterClient.html b/docs/dist/html/upnp/UpnpUnRegisterClient.html new file mode 100644 index 0000000..c3ffcb0 --- /dev/null +++ b/docs/dist/html/upnp/UpnpUnRegisterClient.html @@ -0,0 +1,35 @@ + + + + + EXPORT_SPEC int UpnpUnRegisterClient + + + + +

EXPORT_SPEC int UpnpUnRegisterClient

( IN UpnpClient_Handle Hnd )

UpnpUnRegisterClient unregisters a control point application, unsubscribing all active subscriptions.
+ + +
+

Documentation

+
UpnpUnRegisterClient unregisters a control point application, +unsubscribing all active subscriptions. After this call, the +UpnpClient_Handle is no longer valid. + +

UpnpUnRegisterClient is a synchronous call and generates no +callbacks. The SDK generates no more callbacks after this +function returns. + +

+
Parameters:
Hnd - The handle of the control point instance +to unregister.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpUnRegisterRootDevice.html b/docs/dist/html/upnp/UpnpUnRegisterRootDevice.html new file mode 100644 index 0000000..32ef091 --- /dev/null +++ b/docs/dist/html/upnp/UpnpUnRegisterRootDevice.html @@ -0,0 +1,37 @@ + + + + + EXPORT_SPEC int UpnpUnRegisterRootDevice + + + + +

EXPORT_SPEC int UpnpUnRegisterRootDevice

( IN UpnpDevice_Handle )

Unregisters a root device registered with UpnpRegisterRootDevice or UpnpRegisterRootDevice2.
+ + +
+

Documentation

+
Unregisters a root device registered with UpnpRegisterRootDevice or +UpnpRegisterRootDevice2. After this call, the +UpnpDevice_Handle is no longer valid. For all advertisements that +have not yet expired, the SDK sends a device unavailable message +automatically. + +

UpnpUnRegisterRootDevice is a synchronous call and generates no +callbacks. Once this call returns, the SDK will no longer +generate callbacks to the application. + +

+
Parameters:
- UpnpDevice_Handle The handle of the root device instance to +unregister.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid +device handle. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpUnSubscribe.html b/docs/dist/html/upnp/UpnpUnSubscribe.html new file mode 100644 index 0000000..d1b5ab2 --- /dev/null +++ b/docs/dist/html/upnp/UpnpUnSubscribe.html @@ -0,0 +1,51 @@ + + + + + EXPORT_SPEC int UpnpUnSubscribe + + + + +

EXPORT_SPEC int UpnpUnSubscribe

( IN UpnpClient_Handle Hnd,
  IN Upnp_SID SubsId )

UpnpUnSubscribe removes the subscription of a control point from a service previously subscribed to using UpnpSubscribe or UpnpSubscribeAsync.
+ + +
+

Documentation

+
UpnpUnSubscribe removes the subscription of a control point from a +service previously subscribed to using UpnpSubscribe or +UpnpSubscribeAsync. This is a synchronous call. + +

+
Parameters:
Hnd - The handle of the subscribed control +point. +
SubsId - The ID returned when the control point +subscribed to the service.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_SID: The SubsId is not a valid +subscription ID. +
  • UPNP_E_NETWORK_ERROR: A network error occured. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket. +
  • UPNP_E_SOCKET_BIND: An error occurred binding a socket. +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting to +PublisherUrl. +
  • UPNP_E_OUTOF_SOCKET: An error ocurred creating a socket. +
  • UPNP_E_BAD_RESPONSE: An error occurred in response from +the publisher. +
  • UPNP_E_UNSUBSCRIBE_UNACCEPTED: The publisher refused +the unsubscribe request (the client is still unsubscribed and +no longer receives events). +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpUnSubscribeAsync.html b/docs/dist/html/upnp/UpnpUnSubscribeAsync.html new file mode 100644 index 0000000..4e4a82c --- /dev/null +++ b/docs/dist/html/upnp/UpnpUnSubscribeAsync.html @@ -0,0 +1,74 @@ + + + + + EXPORT_SPEC int UpnpUnSubscribeAsync + + + + +

EXPORT_SPEC int UpnpUnSubscribeAsync

( IN UpnpClient_Handle Hnd,
  IN Upnp_SID SubsId,
  IN Upnp_FunPtr Fun,
  IN const void* Cookie )

UpnpUnSubscribeAsync removes a subscription of a control point from a service previously subscribed to using UpnpSubscribe or UpnpSubscribeAsync, generating a callback when the operation is complete.
+ + +
+

Documentation

+
UpnpUnSubscribeAsync removes a subscription of a control +point from a service previously subscribed to using +UpnpSubscribe or UpnpSubscribeAsync, generating a callback +when the operation is complete. + +

Note that many of the error codes for this function are returned in +the Upnp_Event_Subscribe structure. In those cases, the function +returns UPNP_E_SUCCESS and the appropriate error code will +be in the Upnp_Event_Subscribe.ErrCode field in the Event +structure passed to the callback. + +

+
Parameters:
Hnd - The handle of the subscribed control +point. +
SubsId - The ID returned when the +control point subscribed to the service. +
Fun - Pointer to a callback function to be +called when the operation is complete. +
Cookie - Pointer to user data to pass to the +callback function when invoked.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_HANDLE: The handle is not a valid control +point handle. +
  • UPNP_E_INVALID_SID: The SubsId is not a valid SID. +
  • UPNP_E_INVALID_PARAM: Fun is not a valid callback +function pointer. +
  • UPNP_E_OUTOF_MEMORY: Insufficient resources exist to +complete this operation. +
  • UPNP_E_NETWORK_ERROR: A network error occured (returned in +the Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_SOCKET_READ: An error or timeout occurred reading +from a socket (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the +callback). +
  • UPNP_E_SOCKET_BIND: An error occurred binding the socket +(returned in the Upnp_Event_Subscribe.ErrCode field as +part of the callback). +
  • UPNP_E_SOCKET_CONNECT: An error occurred connecting to +PublisherUrl (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_OUTOF_SOCKET: An error occurred creating a socket ( +returned in the Upnp_Event_Subscribe.ErrCode field as +part of the callback). +
  • UPNP_E_BAD_RESPONSE: An error occurred in response from +the publisher (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
  • UPNP_E_UNSUBSCRIBE_UNACCEPTED: The publisher refused +the subscription request (returned in the +Upnp_Event_Subscribe.ErrCode field as part of the callback). +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpVirtualDirCallbacks.html b/docs/dist/html/upnp/UpnpVirtualDirCallbacks.html new file mode 100644 index 0000000..fc4ee87 --- /dev/null +++ b/docs/dist/html/upnp/UpnpVirtualDirCallbacks.html @@ -0,0 +1,133 @@ + + + + + struct UpnpVirtualDirCallbacks + + + + +

struct UpnpVirtualDirCallbacks

The UpnpVirtualDirCallbacks structure contains the pointers to file-related callback functions a device application can register to virtualize URLs.
+ +
+

+
+[more]int (*close)( IN UpnpWebFileHandle fileHnd ) +
Called by the web server to close a file opened via the open callback. +
+[more]int (*get_info)( IN const char* filename, OUT struct File_Info* info ) +
Called by the web server to query information on a file. +
+[more]UpnpWebFileHandle (*open)( IN const char* filename, IN enum UpnpOpenFileMode Mode ) +
Called by the web server to open a file. +
+[more]int (*read)( IN UpnpWebFileHandle fileHnd, OUT char* buf, IN size_t buflen ) +
Called by the web server to perform a sequential read from an open file. +
+[more]int (*seek)( IN UpnpWebFileHandle fileHnd, IN long offset, IN int origin ) +
Called by the web server to move the file pointer, or offset, into an open file. +
+[more]int (*write)( IN UpnpWebFileHandle fileHnd, IN char* buf, IN size_t buflen ) +
Called by the web server to perform a sequential write to an open file. +

+ + + +
+

Documentation

+
The UpnpVirtualDirCallbacks structure contains the pointers to +file-related callback functions a device application can register to +virtualize URLs.
+
+ + + +
oint (*get_info)( IN const char* filename, OUT struct File_Info* info ) +
Called by the web server to query information on a file. The callback +should return 0 on success or -1 on an error. + +
Parameters:
filename - The name of the file to query. +
info - Pointer to a structure to store the +information on the file.

+ + +

oUpnpWebFileHandle (*open)( IN const char* filename, IN enum UpnpOpenFileMode Mode ) +
Called by the web server to open a file. The callback should return +a valid handle if the file can be opened. Otherwise, it should return +NULL to signify an error. + +
Parameters:
filename - The name of the file to open. +
Mode - The mode in which to open the file. +Valid values are UPNP_READ or +UPNP_WRITE.

+ + +

oint (*read)( IN UpnpWebFileHandle fileHnd, OUT char* buf, IN size_t buflen ) +
Called by the web server to perform a sequential read from an open +file. The callback should copy buflen bytes from the file into +the buffer. + +
Parameters:
fileHnd - The handle of the file to read. +
buf - The buffer in which to place the +data. +
buflen - The size of the buffer (i.e. the +number of bytes to read).
Returns:
[int] An integer representing one of the following: +
    +
  • 0: The file contains no more data (EOF). +
  • >0: A successful read of the number of bytes in the +return code. +
  • <0: An error occurred reading the file. +\end{itemzie} +

+ + +

oint (*write)( IN UpnpWebFileHandle fileHnd, IN char* buf, IN size_t buflen ) +
Called by the web server to perform a sequential write to an open +file. The callback should write buflen bytes into the file from +the buffer. It should return the actual number of bytes written, +which might be less than buflen in the case of a write error. + +
Parameters:
fileHnd - The handle of the file to write. +
buf - The buffer with the bytes to write. +
buflen - The number of bytes to write.

+ + +

oint (*seek)( IN UpnpWebFileHandle fileHnd, IN long offset, IN int origin ) +
Called by the web server to move the file pointer, or offset, into +an open file. The origin parameter determines where to start +moving the file pointer. A value of SEEK_CUR moves the +file pointer relative to where it is. The offset parameter can +be either positive (move forward) or negative (move backward). +SEEK_END moves relative to the end of the file. A positive +offset extends the file. A negative offset moves backward +in the file. Finally, SEEK_SET moves to an absolute position in +the file. In this case, offset must be positive. The callback +should return 0 on a successful seek or a non-zero value on an error. + +
Parameters:
fileHnd - The handle of the file to move the +file pointer. +
offset - The number of bytes to move in the +file. Positive values move foward and +negative values move backward. Note +that this must be positive if the +origin is SEEK_SET. +
origin - The position to move relative to. It +can be SEEK_CUR to move relative +to the current position, +SEEK_END to move relative to +the end of the file, or +SEEK_SET to specify an absolute +offset.

+ + +

oint (*close)( IN UpnpWebFileHandle fileHnd ) +
Called by the web server to close a file opened via the open +callback. It should return 0 on success, or a non-zero value on an +error. + +
Parameters:
fileHnd - The handle of the file to close.

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/UpnpWriteHttpPost.html b/docs/dist/html/upnp/UpnpWriteHttpPost.html new file mode 100644 index 0000000..d50b38a --- /dev/null +++ b/docs/dist/html/upnp/UpnpWriteHttpPost.html @@ -0,0 +1,40 @@ + + + + + EXPORT_SPEC int UpnpWriteHttpPost + + + + +

EXPORT_SPEC int UpnpWriteHttpPost

( IN void* handle,
  IN char* buf,
  IN unsigned int* size,
  IN int timeout )

UpnpWriteHttpPost sends a request to a server to copy the contents of a buffer to the URI specified in the UpnpOpenHttpPost call.
+ + +
+

Documentation

+
UpnpWriteHttpPost sends a request to a server to copy the contents of +a buffer to the URI specified in the UpnpOpenHttpPost call. + +

+
Parameters:
handle - The handle of the connection created +by the call to UpnpOpenHttpPost. +
buf - The buffer to be posted. +
size - The size, in bytes of buf. +
timeout - A timeout value sent with the request +during which a response is expected +from the server, failing which, an +error is reported.
Returns:
[int] An integer representing one of the following: +
    +
  • UPNP_E_SUCCESS: The operation completed successfully. +
  • UPNP_E_INVALID_PARAM: Either handle, buf +or size is not a valid pointer. +
  • UPNP_E_SOCKET_WRITE: An error or timeout occurred writing +to a socket. +
  • UPNP_E_OUTOF_SOCKET: Too many sockets are currently +allocated. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_Action_Request.html b/docs/dist/html/upnp/Upnp_Action_Request.html new file mode 100644 index 0000000..62a0170 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_Action_Request.html @@ -0,0 +1,108 @@ + + + + + struct Upnp_Action_Request + + + + +

struct Upnp_Action_Request

Returned as part of a UPNP_CONTROL_ACTION_COMPLETE callback.
+ +
+

+
+[more]char ActionName[NAME_SIZE] +
The Action Name. +
+[more]IXML_Document* ActionRequest +
The DOM document describing the action. +
+[more]IXML_Document* ActionResult +
The DOM document describing the result of the action. +
+[more]struct in_addr CtrlPtIPAddr +
IP address of the control point requesting this action. +
+[more]char DevUDN[NAME_SIZE] +
The unique device ID. +
+[more]int ErrCode +
The result of the operation. +
+[more]char ErrStr[LINE_SIZE] +
The error string in case of error. +
+[more]char ServiceID[NAME_SIZE] +
The service ID. +
+[more]IXML_Document* SoapHeader +
The DOM document containing the information from the the SOAP header. +
+[more]int Socket +
The socket number of the connection to the requestor. +

+ + + +
+

Documentation

+
Returned as part of a UPNP_CONTROL_ACTION_COMPLETE callback.
+
+ + + +
oint ErrCode +
The result of the operation. +

+ + +

oint Socket +
The socket number of the connection to the requestor. +

+ + +

ochar ErrStr[LINE_SIZE] +
The error string in case of error. +

+ + +

ochar ActionName[NAME_SIZE] +
The Action Name. +

+ + +

ochar DevUDN[NAME_SIZE] +
The unique device ID. +

+ + +

ochar ServiceID[NAME_SIZE] +
The service ID. +

+ + +

oIXML_Document* ActionRequest +
The DOM document describing the action. +

+ + +

oIXML_Document* ActionResult +
The DOM document describing the result of the action. +

+ + +

ostruct in_addr CtrlPtIPAddr +
IP address of the control point requesting this action. +

+ + +

oIXML_Document* SoapHeader +
The DOM document containing the information from the +the SOAP header. +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_DescType.html b/docs/dist/html/upnp/Upnp_DescType.html new file mode 100644 index 0000000..7a2bb16 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_DescType.html @@ -0,0 +1,34 @@ + + + + + enum Upnp_DescType + + + + +

enum Upnp_DescType

Specifies the type of description in UpnpRegisterRootDevice2.
+ +
These values control how UpnpRegisterRootDevice2 +interprets the description parameter.
+ +
+
+
+ +o +UPNPREG_URL_DESC
The description is the URL to the description document. +
+ +o +UPNPREG_FILENAME_DESC
The description is a file name on the local file system containing the description of the device. +
+ +o +UPNPREG_BUF_DESC
The description is a pointer to a character array containing the XML description document. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_Discovery.html b/docs/dist/html/upnp/Upnp_Discovery.html new file mode 100644 index 0000000..cb086e1 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_Discovery.html @@ -0,0 +1,115 @@ + + + + + struct Upnp_Discovery + + + + +

struct Upnp_Discovery

Returned in a UPNP_DISCOVERY_RESULT callback.
+ +
+

+
+[more]char Date[LINE_SIZE] +
Date when the response was generated. +
+[more]SOCKADDRIN* DestAddr +
The host address of the device responding to the search. +
+[more]char DeviceId[LINE_SIZE] +
The unique device identifier. +
+[more]char DeviceType[LINE_SIZE] +
The device type. +
+[more]int ErrCode +
The result code of the UpnpSearchAsync call. +
+[more]int Expires +
The expiration time of the advertisement. +
+[more]char Ext[LINE_SIZE] +
Confirmation that the MAN header was understood by the device. +
+[more]char Location[LINE_SIZE] +
The URL to the UPnP description document for the device. +
+[more]char Os[LINE_SIZE] +
The operating system the device is running. +
+[more]char ServiceType[LINE_SIZE] +
The service type. +
+[more]char ServiceVer[LINE_SIZE] +
The service version. +

+ + + +
+

Documentation

+
Returned in a UPNP_DISCOVERY_RESULT callback.
+
+ + + +
oint ErrCode +
The result code of the UpnpSearchAsync call. +

+ + +

oint Expires +
The expiration time of the advertisement. +

+ + +

ochar DeviceId[LINE_SIZE] +
The unique device identifier. +

+ + +

ochar DeviceType[LINE_SIZE] +
The device type. +

+ + +

ochar ServiceType[LINE_SIZE] +
The service type. +

+ + +

ochar ServiceVer[LINE_SIZE] +
The service version. +

+ + +

ochar Location[LINE_SIZE] +
The URL to the UPnP description document for the device. +

+ + +

ochar Os[LINE_SIZE] +
The operating system the device is running. +

+ + +

ochar Date[LINE_SIZE] +
Date when the response was generated. +

+ + +

ochar Ext[LINE_SIZE] +
Confirmation that the MAN header was understood by the device. +

+ + +

oSOCKADDRIN* DestAddr +
The host address of the device responding to the search. +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_Event.html b/docs/dist/html/upnp/Upnp_Event.html new file mode 100644 index 0000000..ae3072a --- /dev/null +++ b/docs/dist/html/upnp/Upnp_Event.html @@ -0,0 +1,51 @@ + + + + + struct Upnp_Event + + + + +

struct Upnp_Event

Returned along with a UPNP_EVENT_RECEIVED callback.
+ +
+

+
+[more]IXML_Document* ChangedVariables +
The DOM tree representing the changes generating the event. +
+[more]int EventKey +
The event sequence number. +
+[more]Upnp_SID Sid +
The subscription ID for this subscription. +

+ + + +
+

Documentation

+
Returned along with a UPNP_EVENT_RECEIVED callback.
+
+ + + +
oUpnp_SID Sid +
The subscription ID for this subscription. +

+ + +

oint EventKey +
The event sequence number. +

+ + +

oIXML_Document* ChangedVariables +
The DOM tree representing the changes generating the event. +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_Event_Subscribe.html b/docs/dist/html/upnp/Upnp_Event_Subscribe.html new file mode 100644 index 0000000..88f3d6a --- /dev/null +++ b/docs/dist/html/upnp/Upnp_Event_Subscribe.html @@ -0,0 +1,64 @@ + + + + + struct Upnp_Event_Subscribe + + + + +

struct Upnp_Event_Subscribe

Returned along with a UPNP_EVENT_SUBSCRIBE_COMPLETE or UPNP_EVENT_UNSUBSCRIBE_COMPLETE callback.
+ +
+

+
+[more]int ErrCode +
The result of the operation. +
+[more]char PublisherUrl[NAME_SIZE] +
The event URL being subscribed to or removed from. +
+[more]Upnp_SID Sid +
The SID for this subscription. +
+[more]int TimeOut +
The actual subscription time (for subscriptions only). +

+ + + +
+

Documentation

+
Returned along with a UPNP_EVENT_SUBSCRIBE_COMPLETE or +UPNP_EVENT_UNSUBSCRIBE_COMPLETE callback.
+
+ + + +
oUpnp_SID Sid +
The SID for this subscription. For subscriptions, this only +contains a valid SID if the Upnp_EventSubscribe.result field +contains a UPNP_E_SUCCESS result code. For unsubscriptions, +this contains the SID from which the subscription is being +unsubscribed. +

+ + +

oint ErrCode +
The result of the operation. +

+ + +

ochar PublisherUrl[NAME_SIZE] +
The event URL being subscribed to or removed from. +

+ + +

oint TimeOut +
The actual subscription time (for subscriptions only). +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_FunPtr.html b/docs/dist/html/upnp/Upnp_FunPtr.html new file mode 100644 index 0000000..06e7892 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_FunPtr.html @@ -0,0 +1,42 @@ + + + + + typedef int (*Upnp_FunPtr) + + + + +

typedef int (*Upnp_FunPtr)

( IN Upnp_EventType EventType,
  IN void* Event, IN void* Cookie )

All callback functions share the same prototype, documented below.
+ + +
+

Documentation

+
All callback functions share the same prototype, documented below. +Note that any memory passed to the callback function +is valid only during the callback and should be copied if it +needs to persist. This callback function needs to be thread +safe. The context of the callback is always on a valid thread +context and standard synchronization methods can be used. Note, +however, because of this the callback cannot call SDK functions +unless explicitly noted. + +

+      int CallbackFxn( Upnp_EventType EventType, void* Event, void* Cookie );
+    
+ +

where EventType is the event that triggered the callback, +Event is a structure that denotes event-specific information for that +event, and Cookie is the user data passed when the callback was +registered. + +

See Upnp_EventType for more information on the callback values and +the associated Event parameter. + +

The return value of the callback is currently ignored. It may be used +in the future to communicate results back to the SDK.

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_SID44.html b/docs/dist/html/upnp/Upnp_SID44.html new file mode 100644 index 0000000..cf87bf0 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_SID44.html @@ -0,0 +1,22 @@ + + + + + typedef char Upnp_SID[44] + + + + +

typedef char Upnp_SID[44]

The Upnp_SID holds the subscription identifier for a subscription between a client and a device.
+ + +
+

Documentation

+
The Upnp_SID holds the subscription identifier for a subscription +between a client and a device. The SID is a string representation of +a globally unique id (GUID) and should not be modified.
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_SType.html b/docs/dist/html/upnp/Upnp_SType.html new file mode 100644 index 0000000..1a8623a --- /dev/null +++ b/docs/dist/html/upnp/Upnp_SType.html @@ -0,0 +1,40 @@ + + + + + enum Upnp_SType + + + + +

enum Upnp_SType

Represents the different types of searches that can be performed using the SDK for UPnP Devices API.
+ +
By specifying these different values to +UpnpSearchAsync, the control point application +can control the scope of the search from all devices +to specific devices or services.
+ +
+
+
+ +o +UPNP_S_ALL
Search for all devices and services on the network. +
+ +o +UPNP_S_ROOT
Search for all root devices on the network. +
+ +o +UPNP_S_DEVICE
Search for a particular device type or a particular device instance. +
+ +o +UPNP_S_SERVICE
Search for a particular service type, possibly on a particular device type or device instance. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_State_Var_Complete.html b/docs/dist/html/upnp/Upnp_State_Var_Complete.html new file mode 100644 index 0000000..ca9ebfe --- /dev/null +++ b/docs/dist/html/upnp/Upnp_State_Var_Complete.html @@ -0,0 +1,60 @@ + + + + + struct Upnp_State_Var_Complete + + + + +

struct Upnp_State_Var_Complete

Represents the reply for the current value of a state variable in an asynchronous call.
+ +
+

+
+[more]char CtrlUrl[NAME_SIZE] +
The control URL for the service. +
+[more]DOMString CurrentVal +
The current value of the variable or error string in case of error. +
+[more]int ErrCode +
The result of the operation. +
+[more]char StateVarName[NAME_SIZE] +
The name of the variable. +

+ + + +
+

Documentation

+
Represents the reply for the current value of a state variable in an +asynchronous call.
+
+ + + +
oint ErrCode +
The result of the operation. +

+ + +

ochar CtrlUrl[NAME_SIZE] +
The control URL for the service. +

+ + +

ochar StateVarName[NAME_SIZE] +
The name of the variable. +

+ + +

oDOMString CurrentVal +
The current value of the variable or error string in case of error. +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_State_Var_Request.html b/docs/dist/html/upnp/Upnp_State_Var_Request.html new file mode 100644 index 0000000..98ca6e1 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_State_Var_Request.html @@ -0,0 +1,93 @@ + + + + + struct Upnp_State_Var_Request + + + + +

struct Upnp_State_Var_Request

Represents the request for current value of a state variable in a service state table.
+ +
+

+
+[more]struct in_addr CtrlPtIPAddr +
IP address of sender requesting the state variable. +
+[more]DOMString CurrentVal +
The current value of the variable. +
+[more]char DevUDN[NAME_SIZE] +
The unique device ID. +
+[more]int ErrCode +
The result of the operation. +
+[more]char ErrStr[LINE_SIZE] +
The error string in case of error. +
+[more]char ServiceID[NAME_SIZE] +
The service ID. +
+[more]int Socket +
The socket number of the connection to the requestor. +
+[more]char StateVarName[NAME_SIZE] +
The name of the variable. +

+ + + +
+

Documentation

+
Represents the request for current value of a state variable in a service +state table.
+
+ + + +
oint ErrCode +
The result of the operation. +

+ + +

oint Socket +
The socket number of the connection to the requestor. +

+ + +

ochar ErrStr[LINE_SIZE] +
The error string in case of error. +

+ + +

ochar DevUDN[NAME_SIZE] +
The unique device ID. +

+ + +

ochar ServiceID[NAME_SIZE] +
The service ID. +

+ + +

ochar StateVarName[NAME_SIZE] +
The name of the variable. +

+ + +

ostruct in_addr CtrlPtIPAddr +
IP address of sender requesting the state variable. +

+ + +

oDOMString CurrentVal +
The current value of the variable. This needs to be allocated by +the caller. When finished with it, the SDK frees this DOMString. +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/Upnp_Subscription_Request.html b/docs/dist/html/upnp/Upnp_Subscription_Request.html new file mode 100644 index 0000000..0f6dc56 --- /dev/null +++ b/docs/dist/html/upnp/Upnp_Subscription_Request.html @@ -0,0 +1,52 @@ + + + + + struct Upnp_Subscription_Request + + + + +

struct Upnp_Subscription_Request

Returned along with a UPNP_EVENT_SUBSCRIPTION_REQUEST callback.
+ +
+

+
+[more]char* ServiceId +
The identifier for the service being subscribed to. +
+[more]Upnp_SID Sid +
The assigned subscription ID for this subscription. +
+[more]char* UDN +
Universal device name. +

+ + + +
+

Documentation

+
Returned along with a UPNP_EVENT_SUBSCRIPTION_REQUEST +callback.
+
+ + + +
ochar* ServiceId +
The identifier for the service being subscribed to. +

+ + +

ochar* UDN +
Universal device name. +

+ + +

oUpnp_SID Sid +
The assigned subscription ID for this subscription. +

+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/WebServerAPI.html b/docs/dist/html/upnp/WebServerAPI.html new file mode 100644 index 0000000..89e337a --- /dev/null +++ b/docs/dist/html/upnp/WebServerAPI.html @@ -0,0 +1,47 @@ + + + + + Web Server API + + + + +

Web Server API

+ +
+
+
+ +o +UpnpSetWebServerRootDir
UpnpSetWebServerRootDir sets the document root directory for the internal web server. +
+ +o +UpnpSetVirtualDirCallbacks
UpnpSetVirtualDirCallbacks sets the callback function to be used to access a virtual directory. +
+ +o +UpnpEnableWebserver
UpnpEnableWebServer enables or disables the webserver. +
+ +o +UpnpIsWebserverEnabled
UpnpIsWebServerEnabled returns TRUE if the webserver is enabled, or FALSE if it is not. +
+ +o +UpnpAddVirtualDir
UpnpAddVirtualDir adds a virtual directory mapping. +
+ +o +UpnpRemoveVirtualDir
UpnpRemoveVirtualDir removes a virtual directory mapping made with UpnpAddVirtualDir. +
+ +o +UpnpRemoveAllVirtualDirs
UpnpRemoveAllVirtualDirs removes all virtual directory mappings. +
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/icon1.gif b/docs/dist/html/upnp/icon1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f78f30eb981225beb16035974453af044eaaed3d GIT binary patch literal 326 zcmZ?wbhEHbSJz>XZiWhW+$CxX1K<{@Q;PzA3MW)Hil!>)yLQv z&I+YZWR4Dq0Qrf5 zE!m-=z(Yr>|42iEfdETiOVhyu2Ne$2qlXS;Sjcg9G-()EC{6Ng4B9Bb&hGxWX`zGB ztnbe@Mi#u2t#oD*5s{NGS5Q=P;Sv=Pl~k5hQB-wRQ&*Q#oU7r^r6eV#G~HwQ3KvHP FYXI`hOxged literal 0 HcmV?d00001 diff --git a/docs/dist/html/upnp/icon2.gif b/docs/dist/html/upnp/icon2.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cbe01a831d9c27158ef1ade66cc25446fac9018 GIT binary patch literal 326 zcmZ?wbhEHbvUV_sg0vVRlep zUT#ibUH$CLjP97|8hg8t^_%zaId~E%=;f7aZRKxk>swYjH7c^q#Kc`$*&sZ;+`~Ol zL*3NdE7jE{7APVst6^&DtgCA)C##W~TG-k;MN7*vC@7wR8bI+U3nR!J9S{NX69Zea zLqmawj#U4Vh6DovmcEvzg9Q#M9Ii(X9muedZ+!$E~PkE!<|b>N=j+E$MO{}jttfS DX0}r~ literal 0 HcmV?d00001 diff --git a/docs/dist/html/upnp/index.html b/docs/dist/html/upnp/index.html new file mode 100644 index 0000000..53153cb --- /dev/null +++ b/docs/dist/html/upnp/index.html @@ -0,0 +1,42 @@ + + + + + Linux SDK for UPnP Devices v1.4 + + + + +

Linux SDK for UPnP Devices v1.4

+
+
+Linux SDK for UPnP Devices Version 1.4 + +

Copyright (C) 2000-2003 Intel Corporation ALL RIGHTS RESERVED + +

Revision 1.4.1 (Tue 04 Jul 2006 04:58:36 PM EEST) +

+ +
+
+
+ +o +Introduction
+ +o +License
+ +o +About Callbacks
+ +o +The API
+ +o +Optional Tool APIs
+

Alphabetic index


+
+This page was generated with the help of DOC++. + + diff --git a/docs/dist/html/upnp/toc.html b/docs/dist/html/upnp/toc.html new file mode 100644 index 0000000..c43f1ca --- /dev/null +++ b/docs/dist/html/upnp/toc.html @@ -0,0 +1,19 @@ + + + + + Table of Contents + + + + +

Table of Contents

+

General stuff

+ +
+
+This page was generated with the help of DOC++. + + diff --git a/threadutil/inc/ThreadPool.h b/threadutil/inc/ThreadPool.h index 3ef79e7..c8ae478 100644 --- a/threadutil/inc/ThreadPool.h +++ b/threadutil/inc/ThreadPool.h @@ -67,6 +67,10 @@ typedef enum priority {LOW_PRIORITY, //Statistics +#ifdef WIN32 // todo: check why STATSONLY fails during compilation + #undef STATS +#endif + #ifdef STATS #define STATSONLY(x) x #else diff --git a/upnp/doc/Makefile.am b/upnp/doc/Makefile.am index 2959268..7b6c743 100644 --- a/upnp/doc/Makefile.am +++ b/upnp/doc/Makefile.am @@ -35,16 +35,9 @@ # ########################################################################## -EXTRA_DIST = UPnP_Programming_Guide.pdf \ - callback.dxx docxx.sty intro.dxx \ +EXTRA_DIST = callback.dxx docxx.sty intro.dxx \ license.dxx upnpsdk.dxx -if WITH_DOCDIR - docdir = @DOCDIR@ - doc_DATA = UPnP_Programming_Guide.pdf -endif - - html-local: @if [ -d html ]; then rm -rf html; fi @doc++ -nd -S -w -j -d html $(srcdir)/upnpsdk.dxx diff --git a/upnp/doc/upnpsdk.dxx b/upnp/doc/upnpsdk.dxx index cb46c57..0690436 100644 --- a/upnp/doc/upnpsdk.dxx +++ b/upnp/doc/upnpsdk.dxx @@ -1,11 +1,11 @@ -/**@name Linux SDK for UPnP Devices v1.2 +/**@name Linux SDK for UPnP Devices v1.4 * *\begin{center} - * {\bf Linux SDK for UPnP Devices Version 1.2} + * {\bf Linux SDK for UPnP Devices Version 1.4} * * Copyright (C) 2000-2003 Intel Corporation ALL RIGHTS RESERVED * - * Revision 1.2.1 (\Date) + * Revision 1.4.1 (\Date) *\end{center} */ //@{ diff --git a/upnp/src/genlib/net/http/httpparser.c b/upnp/src/genlib/net/http/httpparser.c index cfb7210..a13d51b 100644 --- a/upnp/src/genlib/net/http/httpparser.c +++ b/upnp/src/genlib/net/http/httpparser.c @@ -973,21 +973,21 @@ skip_to_end_of_header( INOUT scanner_t * scanner ) } /************************************************************************ -* Function: match_char -* -* Parameters: -* INOUT scanner_t* scanner ; Scanner Object -* IN char c ; Character to be compared with -* IN xboolean case_sensitive; Flag indicating whether comparison should +* Function: match_char +* +* Parameters: +* INOUT scanner_t* scanner ; Scanner Object +* IN char c ; Character to be compared with +* IN xboolean case_sensitive; Flag indicating whether comparison should * be case sensitive -* -* Description: Compares a character to the next char in the scanner; -* on error, scanner chars are not restored -* -* Returns: -* PARSE_OK -* PARSE_NO_MATCH -* PARSE_INCOMPLETE +* +* Description: Compares a character to the next char in the scanner; +* on error, scanner chars are not restored +* +* Returns: +* PARSE_OK +* PARSE_NO_MATCH +* PARSE_INCOMPLETE ************************************************************************/ static XINLINE parse_status_t match_char( INOUT scanner_t * scanner, diff --git a/upnp/src/genlib/net/http/webserver.c b/upnp/src/genlib/net/http/webserver.c index 6c0a1af..0155a94 100644 --- a/upnp/src/genlib/net/http/webserver.c +++ b/upnp/src/genlib/net/http/webserver.c @@ -751,15 +751,15 @@ isFileInVirtualDir( IN char *filePath ) } /************************************************************************ -* Function: ToUpperCase -* -* Parameters: -* INOUT char * Str ; Input string to be converted -* -* Description: Converts input string to upper case -* -* Returns: -* int +* Function: ToUpperCase +* +* Parameters: +* INOUT char * Str ; Input string to be converted +* +* Description: Converts input string to upper case +* +* Returns: +* int ************************************************************************/ int ToUpperCase( char *Str ) @@ -773,15 +773,15 @@ ToUpperCase( char *Str ) } /************************************************************************ -* Function: StrStr -* -* Parameters: +* Function: StrStr +* +* Parameters: * IN char * S1 ; Input string -* IN char * S2 ; Input sub-string -* -* Description: Finds a substring from a string -* -* Returns: +* IN char * S2 ; Input sub-string +* +* Description: Finds a substring from a string +* +* Returns: * char * ptr - pointer to the first occurence of S2 in S1 ************************************************************************/ char * diff --git a/upnp/src/inc/inet_pton.h b/upnp/src/inc/inet_pton.h index 60fa16b..df59b6d 100644 --- a/upnp/src/inc/inet_pton.h +++ b/upnp/src/inc/inet_pton.h @@ -51,7 +51,7 @@ extern const char * inet_ntop6(src, dst, size); * author: * Paul Vixie, 1996. */ -extern int inet_pton4(src, dst); +extern inet_pton4(const char *src,u_char *dst); /* int * inet_pton6(src, dst) @@ -83,7 +83,7 @@ extern int inet_pton6(src, dst); * author: * Paul Vixie, 1996. */ -extern const char * inet_ntop(af, src, dst, size); +extern const char *inet_ntop(int af,const void *src,char *dst,socklen_t size); /* int @@ -97,7 +97,7 @@ extern const char * inet_ntop(af, src, dst, size); * author: * Paul Vixie, 1996. */ -extern int inet_pton(af, src, dst); +extern int inet_pton(int af,const char *src,void *dst); #endif #endif diff --git a/upnp/src/inet_pton.c b/upnp/src/inet_pton.c index b46c354..d43382e 100644 --- a/upnp/src/inet_pton.c +++ b/upnp/src/inet_pton.c @@ -73,7 +73,7 @@ inet_ntop4(const u_char *src, char *dst, socklen_t size) } tmp[i - 1] = '\0'; - if (strlen(tmp)>size) { + if ((socklen_t)strlen(tmp)>size) { //__set_errno (ENOSPC); return (NULL); } @@ -193,9 +193,7 @@ inet_ntop6(src, dst, size) * Paul Vixie, 1996. */ static int -inet_pton4(src, dst) - const char *src; - u_char *dst; +inet_pton4(const char *src,u_char *dst) { int saw_digit, octets, ch; u_char tmp[4], *tp; @@ -345,12 +343,7 @@ inet_pton6(src, dst) * author: * Paul Vixie, 1996. */ -extern const char * -inet_ntop(af, src, dst, size) - int af; - const void *src; - char *dst; - socklen_t size; +extern const char *inet_ntop(int af,const void *src,char *dst,socklen_t size) { switch (af) { case AF_INET: @@ -378,11 +371,7 @@ inet_ntop(af, src, dst, size) * author: * Paul Vixie, 1996. */ -extern int -inet_pton(af, src, dst) - int af; - const char *src; - void *dst; +int inet_pton(int af,const char *src,void *dst) { switch (af) { case AF_INET: diff --git a/upnp/src/soap/soap_device.c b/upnp/src/soap/soap_device.c index bcb0176..f7dc8e7 100644 --- a/upnp/src/soap/soap_device.c +++ b/upnp/src/soap/soap_device.c @@ -34,7 +34,7 @@ #if EXCLUDE_SOAP == 0 #define SOAP_BODY "Body" -#define SOAP_URN "http://schemas.xmlsoap.org/soap/envelope/" +#define SOAP_URN "http:/""/schemas.xmlsoap.org/soap/envelope/" #define QUERY_STATE_VAR_URN "urn:schemas-upnp-org:control-1-0"