From 52262051abccee186b4d8ad57406c3bee3b3c68b Mon Sep 17 00:00:00 2001 From: TB-1993 <> Date: Thu, 4 Apr 2024 17:39:05 +0100 Subject: [PATCH] gh4 - Add samples of doxygen, sphinx and breathe https://github.com/rdkcentral/python_raft/issues/4 --- docs/breathe/build/html/.buildinfo | 4 + .../html/.doctrees/commandModules.doctree | Bin 0 -> 60147 bytes .../.doctrees/core.commandModules.doctree | Bin 0 -> 4315 bytes .../breathe/build/html/.doctrees/core.doctree | Bin 0 -> 7545 bytes .../html/.doctrees/core.powerModules.doctree | Bin 0 -> 5433 bytes .../build/html/.doctrees/environment.pickle | Bin 0 -> 151511 bytes .../build/html/.doctrees/index.doctree | Bin 0 -> 5158 bytes .../build/html/.doctrees/modules.doctree | Bin 0 -> 2760 bytes .../html/_sources/commandModules.rst.txt | 45 + .../html/_sources/core.commandModules.rst.txt | 45 + .../html/_sources/core.powerModules.rst.txt | 77 + docs/breathe/build/html/_sources/core.rst.txt | 134 + .../breathe/build/html/_sources/index.rst.txt | 21 + .../build/html/_sources/modules.rst.txt | 7 + docs/breathe/build/html/_static/alabaster.css | 703 +++++ docs/breathe/build/html/_static/basic.css | 921 ++++++ docs/breathe/build/html/_static/custom.css | 1 + docs/breathe/build/html/_static/doctools.js | 156 + .../html/_static/documentation_options.js | 14 + docs/breathe/build/html/_static/file.png | Bin 0 -> 286 bytes .../build/html/_static/language_data.js | 199 ++ docs/breathe/build/html/_static/minus.png | Bin 0 -> 90 bytes docs/breathe/build/html/_static/plus.png | Bin 0 -> 90 bytes docs/breathe/build/html/_static/pygments.css | 84 + .../breathe/build/html/_static/searchtools.js | 566 ++++ .../build/html/_static/sphinx_highlight.js | 144 + docs/breathe/build/html/commandModules.html | 338 +++ .../build/html/core.commandModules.html | 1 + docs/breathe/build/html/core.html | 176 ++ .../breathe/build/html/core.powerModules.html | 129 + docs/breathe/build/html/genindex.html | 255 ++ docs/breathe/build/html/index.html | 110 + docs/breathe/build/html/modules.html | 147 + docs/breathe/build/html/objects.inv | Bin 0 -> 512 bytes docs/breathe/build/html/py-modindex.html | 128 + docs/breathe/build/html/search.html | 117 + docs/breathe/build/html/searchindex.js | 1 + .../markdown/doctrees/commandModules.doctree | Bin 0 -> 60147 bytes .../doctrees/core.commandModules.doctree | Bin 0 -> 4315 bytes .../build/markdown/doctrees/core.doctree | Bin 0 -> 7545 bytes .../doctrees/core.powerModules.doctree | Bin 0 -> 5433 bytes .../markdown/doctrees/environment.pickle | Bin 0 -> 151672 bytes .../build/markdown/doctrees/index.doctree | Bin 0 -> 5158 bytes .../build/markdown/doctrees/modules.doctree | Bin 0 -> 2760 bytes .../build/markdown/markdown/commandModules.md | 179 ++ .../markdown/markdown/core.commandModules.md | 1 + docs/breathe/build/markdown/markdown/core.md | 54 + .../markdown/markdown/core.powerModules.md | 21 + docs/breathe/build/markdown/markdown/index.md | 14 + .../build/markdown/markdown/modules.md | 38 + docs/doxygen/doxgen.conf | 2579 +++++++++++++++++ docs/doxygen/html/annotated.html | 185 ++ docs/doxygen/html/bc_s.png | Bin 0 -> 676 bytes docs/doxygen/html/bdwn.png | Bin 0 -> 147 bytes ...tsTests_1_1accessElementsTest-members.html | 86 + ...ssElementsTests_1_1accessElementsTest.html | 115 + ...sts_1_1accessElementsTest__coll__graph.map | 4 + ...sts_1_1accessElementsTest__coll__graph.md5 | 1 + ...sts_1_1accessElementsTest__coll__graph.png | Bin 0 -> 3647 bytes ..._1_1accessElementsTest__inherit__graph.map | 4 + ..._1_1accessElementsTest__inherit__graph.md5 | 1 + ..._1_1accessElementsTest__inherit__graph.png | Bin 0 -> 3647 bytes .../classalertTest_1_1alertTest-members.html | 86 + .../html/classalertTest_1_1alertTest.html | 115 + ...assalertTest_1_1alertTest__coll__graph.map | 4 + ...assalertTest_1_1alertTest__coll__graph.md5 | 1 + ...assalertTest_1_1alertTest__coll__graph.png | Bin 0 -> 2581 bytes ...alertTest_1_1alertTest__inherit__graph.map | 4 + ...alertTest_1_1alertTest__inherit__graph.md5 | 1 + ...alertTest_1_1alertTest__inherit__graph.png | Bin 0 -> 2581 bytes ...classarduino_1_1remoteArduino-members.html | 90 + .../html/classarduino_1_1remoteArduino.html | 198 ++ ...asscore_1_1capture_1_1capture-members.html | 103 + .../html/classcore_1_1capture_1_1capture.html | 522 ++++ ...ore_1_1capture_1_1capture__coll__graph.map | 4 + ...ore_1_1capture_1_1capture__coll__graph.md5 | 1 + ...ore_1_1capture_1_1capture__coll__graph.png | Bin 0 -> 2558 bytes ..._1_1capture_1_1capture__inherit__graph.map | 4 + ..._1_1capture_1_1capture__inherit__graph.md5 | 1 + ..._1_1capture_1_1capture__inherit__graph.png | Bin 0 -> 2558 bytes ...Interface_1_1consoleInterface-members.html | 89 + ...1consoleInterface_1_1consoleInterface.html | 258 ++ ...rface_1_1consoleInterface__coll__graph.map | 5 + ...rface_1_1consoleInterface__coll__graph.md5 | 1 + ...rface_1_1consoleInterface__coll__graph.png | Bin 0 -> 6751 bytes ...ce_1_1consoleInterface__inherit__graph.map | 7 + ...ce_1_1consoleInterface__inherit__graph.md5 | 1 + ...ce_1_1consoleInterface__inherit__graph.png | Bin 0 -> 11552 bytes ...1serialClass_1_1serialSession-members.html | 101 + ...dules_1_1serialClass_1_1serialSession.html | 334 +++ ...ialClass_1_1serialSession__coll__graph.map | 4 + ...ialClass_1_1serialSession__coll__graph.md5 | 1 + ...ialClass_1_1serialSession__coll__graph.png | Bin 0 -> 4954 bytes ...Class_1_1serialSession__inherit__graph.map | 4 + ...Class_1_1serialSession__inherit__graph.md5 | 1 + ...Class_1_1serialSession__inherit__graph.png | Bin 0 -> 4954 bytes ...s_1_1sshConsole_1_1sshConsole-members.html | 99 + ...ndModules_1_1sshConsole_1_1sshConsole.html | 304 ++ ...1sshConsole_1_1sshConsole__coll__graph.map | 6 + ...1sshConsole_1_1sshConsole__coll__graph.md5 | 1 + ...1sshConsole_1_1sshConsole__coll__graph.png | Bin 0 -> 8682 bytes ...hConsole_1_1sshConsole__inherit__graph.map | 6 + ...hConsole_1_1sshConsole__inherit__graph.md5 | 1 + ...hConsole_1_1sshConsole__inherit__graph.png | Bin 0 -> 8682 bytes ...ules_1_1telnetClass_1_1telnet-members.html | 105 + ...mmandModules_1_1telnetClass_1_1telnet.html | 451 +++ ..._1_1telnetClass_1_1telnet__coll__graph.map | 6 + ..._1_1telnetClass_1_1telnet__coll__graph.md5 | 1 + ..._1_1telnetClass_1_1telnet__coll__graph.png | Bin 0 -> 9517 bytes ...1telnetClass_1_1telnet__inherit__graph.map | 6 + ...1telnetClass_1_1telnet__inherit__graph.md5 | 1 + ...1telnetClass_1_1telnet__inherit__graph.png | Bin 0 -> 9517 bytes ...onRemote_1_1commonRemoteClass-members.html | 93 + ..._1_1commonRemote_1_1commonRemoteClass.html | 269 ++ ...te_1_1remoteControllerMapping-members.html | 91 + ...mmonRemote_1_1remoteControllerMapping.html | 245 ++ ...arserBase_1_1configParserBase-members.html | 89 + ...1configParserBase_1_1configParserBase.html | 273 ++ ...1configParser_1_1configParser-members.html | 101 + ...score_1_1configParser_1_1configParser.html | 589 ++++ ...figParser_1_1configParser__coll__graph.map | 4 + ...figParser_1_1configParser__coll__graph.md5 | 1 + ...figParser_1_1configParser__coll__graph.png | Bin 0 -> 4504 bytes ...Parser_1_1configParser__inherit__graph.map | 4 + ...Parser_1_1configParser__inherit__graph.md5 | 1 + ...Parser_1_1configParser__inherit__graph.png | Bin 0 -> 4504 bytes ...1decodeParams_1_1decodeParams-members.html | 98 + ...score_1_1decodeParams_1_1decodeParams.html | 139 + ...deviceManager_1_1consoleClass-members.html | 87 + ...core_1_1deviceManager_1_1consoleClass.html | 159 + ...1deviceManager_1_1deviceClass-members.html | 93 + ...score_1_1deviceManager_1_1deviceClass.html | 252 ++ ...eviceManager_1_1deviceManager-members.html | 90 + ...ore_1_1deviceManager_1_1deviceManager.html | 197 ++ ...ore_1_1logModule_1_1logModule-members.html | 161 + .../classcore_1_1logModule_1_1logModule.html | 426 +++ ...Client_1_1outboundClientClass-members.html | 106 + ...outboundClient_1_1outboundClientClass.html | 651 +++++ ...rControl_1_1powerControlClass-members.html | 97 + ..._1_1powerControl_1_1powerControlClass.html | 211 ++ ...es_1_1S20control_1_1OrviboS20-members.html | 98 + ...werModules_1_1S20control_1_1OrviboS20.html | 143 + ...odules_1_1S20control_1_1UnknownPacket.html | 102 + ...0control_1_1UnknownPacket__coll__graph.map | 4 + ...0control_1_1UnknownPacket__coll__graph.md5 | 1 + ...0control_1_1UnknownPacket__coll__graph.png | Bin 0 -> 5481 bytes ...ntrol_1_1UnknownPacket__inherit__graph.map | 4 + ...ntrol_1_1UnknownPacket__inherit__graph.md5 | 1 + ...ntrol_1_1UnknownPacket__inherit__graph.png | Bin 0 -> 5481 bytes ...1S20control_1_1powerOrviboS20-members.html | 93 + ...dules_1_1S20control_1_1powerOrviboS20.html | 122 + ...werModules_1_1SLP_1_1powerSLP-members.html | 96 + ...re_1_1powerModules_1_1SLP_1_1powerSLP.html | 131 + ...ules_1_1apcAos_1_1powerApcAos-members.html | 99 + ...powerModules_1_1apcAos_1_1powerApcAos.html | 142 + ...werModules_1_1apc_1_1powerAPC-members.html | 103 + ...re_1_1powerModules_1_1apc_1_1powerAPC.html | 154 + ...odules_1_1hs100_1_1powerHS100-members.html | 97 + ..._1powerModules_1_1hs100_1_1powerHS100.html | 220 ++ ...s_1_1kasaControl_1_1powerKasa-members.html | 99 + ...erModules_1_1kasaControl_1_1powerKasa.html | 208 ++ ...rModules_1_1none_1_1powerNone-members.html | 89 + ..._1_1powerModules_1_1none_1_1powerNone.html | 110 + ...ules_1_1olimex_1_1powerOlimex-members.html | 94 + ...powerModules_1_1olimex_1_1powerOlimex.html | 125 + ...troller_1_1configDecoderClass-members.html | 89 + ...1rackController_1_1configDecoderClass.html | 116 + ..._1_1configDecoderClass__inherit__graph.map | 5 + ..._1_1configDecoderClass__inherit__graph.md5 | 1 + ..._1_1configDecoderClass__inherit__graph.png | Bin 0 -> 7794 bytes ...ore_1_1rackController_1_1rack-members.html | 95 + .../classcore_1_1rackController_1_1rack.html | 151 + ...kController_1_1rackController-members.html | 93 + ...e_1_1rackController_1_1rackController.html | 126 + ...1_1rackController_1_1rackSlot-members.html | 105 + ...asscore_1_1rackController_1_1rackSlot.html | 181 ++ ...ackController_1_1rackSlot__coll__graph.map | 4 + ...ackController_1_1rackSlot__coll__graph.md5 | 1 + ...ackController_1_1rackSlot__coll__graph.png | Bin 0 -> 5459 bytes ...Controller_1_1rackSlot__inherit__graph.map | 4 + ...Controller_1_1rackSlot__inherit__graph.md5 | 1 + ...Controller_1_1rackSlot__inherit__graph.png | Bin 0 -> 5459 bytes ...1_1rackController_1_1rack__coll__graph.map | 4 + ...1_1rackController_1_1rack__coll__graph.md5 | 1 + ...1_1rackController_1_1rack__coll__graph.png | Bin 0 -> 5113 bytes ...rackController_1_1rack__inherit__graph.map | 4 + ...rackController_1_1rack__inherit__graph.md5 | 1 + ...rackController_1_1rack__inherit__graph.png | Bin 0 -> 5113 bytes ...lasscore_1_1rcCodes_1_1rcCode-members.html | 169 ++ .../html/classcore_1_1rcCodes_1_1rcCode.html | 364 +++ ...core_1_1rcCodes_1_1rcCode__coll__graph.map | 4 + ...core_1_1rcCodes_1_1rcCode__coll__graph.md5 | 1 + ...core_1_1rcCodes_1_1rcCode__coll__graph.png | Bin 0 -> 2385 bytes ...e_1_1rcCodes_1_1rcCode__inherit__graph.map | 4 + ...e_1_1rcCodes_1_1rcCode__inherit__graph.md5 | 1 + ...e_1_1rcCodes_1_1rcCode__inherit__graph.png | Bin 0 -> 2385 bytes ...testControl_1_1testController-members.html | 146 + ...core_1_1testControl_1_1testController.html | 933 ++++++ ...ore_1_1utilities_1_1utilities-members.html | 89 + .../classcore_1_1utilities_1_1utilities.html | 151 + ...ntroller_1_1webpageController-members.html | 122 + ...ebpageController_1_1webpageController.html | 1007 +++++++ ...sdownloadTest_1_1downloadTest-members.html | 86 + .../classdownloadTest_1_1downloadTest.html | 115 + ...nloadTest_1_1downloadTest__coll__graph.map | 4 + ...nloadTest_1_1downloadTest__coll__graph.md5 | 1 + ...nloadTest_1_1downloadTest__coll__graph.png | Bin 0 -> 3536 bytes ...adTest_1_1downloadTest__inherit__graph.map | 4 + ...adTest_1_1downloadTest__inherit__graph.md5 | 1 + ...adTest_1_1downloadTest__inherit__graph.png | Bin 0 -> 3536 bytes ...onsTest_1_1dynamicButtonsTest-members.html | 86 + ...amicButtonsTest_1_1dynamicButtonsTest.html | 115 + ...est_1_1dynamicButtonsTest__coll__graph.map | 4 + ...est_1_1dynamicButtonsTest__coll__graph.md5 | 1 + ...est_1_1dynamicButtonsTest__coll__graph.png | Bin 0 -> 4346 bytes ..._1_1dynamicButtonsTest__inherit__graph.map | 4 + ..._1_1dynamicButtonsTest__inherit__graph.md5 | 1 + ..._1_1dynamicButtonsTest__inherit__graph.png | Bin 0 -> 4346 bytes ...blesTest_1_1dynamicTablesTest-members.html | 87 + ...ynamicTablesTest_1_1dynamicTablesTest.html | 118 + ...Test_1_1dynamicTablesTest__coll__graph.map | 4 + ...Test_1_1dynamicTablesTest__coll__graph.md5 | 1 + ...Test_1_1dynamicTablesTest__coll__graph.png | Bin 0 -> 3919 bytes ...t_1_1dynamicTablesTest__inherit__graph.map | 4 + ...t_1_1dynamicTablesTest__inherit__graph.md5 | 1 + ...t_1_1dynamicTablesTest__inherit__graph.png | Bin 0 -> 3919 bytes ...eTest_1_1elementAttributeTest-members.html | 86 + ...AttributeTest_1_1elementAttributeTest.html | 115 + ...t_1_1elementAttributeTest__coll__graph.map | 4 + ...t_1_1elementAttributeTest__coll__graph.md5 | 1 + ...t_1_1elementAttributeTest__coll__graph.png | Bin 0 -> 3905 bytes ..._1elementAttributeTest__inherit__graph.map | 4 + ..._1elementAttributeTest__inherit__graph.md5 | 1 + ..._1elementAttributeTest__inherit__graph.png | Bin 0 -> 3905 bytes docs/doxygen/html/classes.html | 183 ++ ...tionTests_1_1framework__test1-members.html | 89 + ...1_1exceptionTests_1_1framework__test1.html | 128 + ...Tests_1_1framework__test1__coll__graph.map | 4 + ...Tests_1_1framework__test1__coll__graph.md5 | 1 + ...Tests_1_1framework__test1__coll__graph.png | Bin 0 -> 4769 bytes ...ts_1_1framework__test1__inherit__graph.map | 4 + ...ts_1_1framework__test1__inherit__graph.md5 | 1 + ...ts_1_1framework__test1__inherit__graph.png | Bin 0 -> 4769 bytes ..._1remoteController__test_1_1demoClass.html | 102 + ...roller__test_1_1demoClass__coll__graph.map | 4 + ...roller__test_1_1demoClass__coll__graph.md5 | 1 + ...roller__test_1_1demoClass__coll__graph.png | Bin 0 -> 4725 bytes ...ler__test_1_1demoClass__inherit__graph.map | 4 + ...ler__test_1_1demoClass__inherit__graph.md5 | 1 + ...ler__test_1_1demoClass__inherit__graph.png | Bin 0 -> 4725 bytes ..._1startup_1_1framework__test1-members.html | 86 + ...mework_1_1startup_1_1framework__test1.html | 115 + ...artup_1_1framework__test1__coll__graph.map | 4 + ...artup_1_1framework__test1__coll__graph.md5 | 1 + ...artup_1_1framework__test1__coll__graph.png | Bin 0 -> 4291 bytes ...up_1_1framework__test1__inherit__graph.map | 4 + ...up_1_1framework__test1__inherit__graph.md5 | 1 + ...up_1_1framework__test1__inherit__graph.png | Bin 0 -> 4291 bytes ...ctionTest_1_1globalActionTest-members.html | 86 + ...sglobalActionTest_1_1globalActionTest.html | 115 + ...nTest_1_1globalActionTest__coll__graph.map | 4 + ...nTest_1_1globalActionTest__coll__graph.md5 | 1 + ...nTest_1_1globalActionTest__coll__graph.png | Bin 0 -> 3932 bytes ...st_1_1globalActionTest__inherit__graph.map | 4 + ...st_1_1globalActionTest__inherit__graph.md5 | 1 + ...st_1_1globalActionTest__inherit__graph.png | Bin 0 -> 3932 bytes .../html/classnone_1_1remoteNone-members.html | 87 + .../doxygen/html/classnone_1_1remoteNone.html | 192 ++ .../classolimex_1_1remoteOlimex-members.html | 90 + .../html/classolimex_1_1remoteOlimex.html | 113 + ...sTests_1_1performActionsTests-members.html | 86 + ...rmActionsTests_1_1performActionsTests.html | 115 + ...ts_1_1performActionsTests__coll__graph.map | 4 + ...ts_1_1performActionsTests__coll__graph.md5 | 1 + ...ts_1_1performActionsTests__coll__graph.png | Bin 0 -> 4260 bytes ...1_1performActionsTests__inherit__graph.map | 4 + ...1_1performActionsTests__inherit__graph.md5 | 1 + ...1_1performActionsTests__inherit__graph.png | Bin 0 -> 4260 bytes ...hotTest_1_1saveScreenshotTest-members.html | 86 + ...eScreenshotTest_1_1saveScreenshotTest.html | 115 + ...est_1_1saveScreenshotTest__coll__graph.map | 4 + ...est_1_1saveScreenshotTest__coll__graph.md5 | 1 + ...est_1_1saveScreenshotTest__coll__graph.png | Bin 0 -> 3965 bytes ..._1_1saveScreenshotTest__inherit__graph.map | 4 + ..._1_1saveScreenshotTest__inherit__graph.md5 | 1 + ..._1_1saveScreenshotTest__inherit__graph.png | Bin 0 -> 3965 bytes ...nsTests_1_1selectOptionsTests-members.html | 86 + ...ectOptionsTests_1_1selectOptionsTests.html | 115 + ...sts_1_1selectOptionsTests__coll__graph.map | 4 + ...sts_1_1selectOptionsTests__coll__graph.md5 | 1 + ...sts_1_1selectOptionsTests__coll__graph.png | Bin 0 -> 3889 bytes ..._1_1selectOptionsTests__inherit__graph.map | 4 + ..._1_1selectOptionsTests__inherit__graph.md5 | 1 + ..._1_1selectOptionsTests__inherit__graph.png | Bin 0 -> 3889 bytes ...eniumDriver_1_1seleniumDriver-members.html | 112 + ...classseleniumDriver_1_1seleniumDriver.html | 606 ++++ ...ssequenceTest_1_1sequenceTest-members.html | 86 + .../classsequenceTest_1_1sequenceTest.html | 115 + ...uenceTest_1_1sequenceTest__coll__graph.map | 4 + ...uenceTest_1_1sequenceTest__coll__graph.md5 | 1 + ...uenceTest_1_1sequenceTest__coll__graph.png | Bin 0 -> 2951 bytes ...ceTest_1_1sequenceTest__inherit__graph.map | 4 + ...ceTest_1_1sequenceTest__inherit__graph.md5 | 1 + ...ceTest_1_1sequenceTest__inherit__graph.png | Bin 0 -> 2951 bytes ...classskyProc_1_1remoteSkyProc-members.html | 91 + .../html/classskyProc_1_1remoteSkyProc.html | 116 + .../classtabsTest_1_1tabsTest-members.html | 86 + .../html/classtabsTest_1_1tabsTest.html | 115 + ...classtabsTest_1_1tabsTest__coll__graph.map | 4 + ...classtabsTest_1_1tabsTest__coll__graph.md5 | 1 + ...classtabsTest_1_1tabsTest__coll__graph.png | Bin 0 -> 2634 bytes ...sstabsTest_1_1tabsTest__inherit__graph.map | 4 + ...sstabsTest_1_1tabsTest__inherit__graph.md5 | 1 + ...sstabsTest_1_1tabsTest__inherit__graph.png | Bin 0 -> 2634 bytes docs/doxygen/html/closed.png | Bin 0 -> 132 bytes .../dir_4f83fc4e7000500481bc2234a29e5a13.html | 85 + .../dir_62afcf8aa2ca4125a5b338a899a08dc3.html | 85 + .../dir_644e041c3a6521da7b27eba0e4eb2b95.html | 85 + .../dir_7a725b7f06931a19d20816064cbe79d7.html | 81 + .../dir_7c3866b21eca5596ae21bf63a2e2d995.html | 85 + .../dir_8a371890c7df54832bedf6136b86116e.html | 81 + .../dir_8cdaaede5e395ce5a2b7dcd448eefcc0.html | 81 + .../dir_8f7813a2e1199496bc4aeee3a1228541.html | 81 + .../dir_e36ba64977d65a0761a291213aecd3cd.html | 81 + .../dir_ed446ba2d365ada0ebb676416d76edde.html | 81 + docs/doxygen/html/doc.png | Bin 0 -> 746 bytes docs/doxygen/html/doxygen.css | 1771 +++++++++++ docs/doxygen/html/doxygen.png | Bin 0 -> 3779 bytes docs/doxygen/html/dynsections.js | 120 + docs/doxygen/html/folderclosed.png | Bin 0 -> 616 bytes docs/doxygen/html/folderopen.png | Bin 0 -> 597 bytes docs/doxygen/html/functions.html | 529 ++++ docs/doxygen/html/functions_func.html | 529 ++++ docs/doxygen/html/graph_legend.html | 137 + docs/doxygen/html/graph_legend.md5 | 1 + docs/doxygen/html/graph_legend.png | Bin 0 -> 20615 bytes docs/doxygen/html/hierarchy.html | 146 + docs/doxygen/html/index.html | 77 + docs/doxygen/html/inherit_graph_0.map | 18 + docs/doxygen/html/inherit_graph_0.md5 | 1 + docs/doxygen/html/inherit_graph_0.png | Bin 0 -> 69796 bytes docs/doxygen/html/inherit_graph_1.map | 3 + docs/doxygen/html/inherit_graph_1.md5 | 1 + docs/doxygen/html/inherit_graph_1.png | Bin 0 -> 1703 bytes docs/doxygen/html/inherit_graph_10.map | 3 + docs/doxygen/html/inherit_graph_10.md5 | 1 + docs/doxygen/html/inherit_graph_10.png | Bin 0 -> 2325 bytes docs/doxygen/html/inherit_graph_11.map | 3 + docs/doxygen/html/inherit_graph_11.md5 | 1 + docs/doxygen/html/inherit_graph_11.png | Bin 0 -> 2467 bytes docs/doxygen/html/inherit_graph_12.map | 3 + docs/doxygen/html/inherit_graph_12.md5 | 1 + docs/doxygen/html/inherit_graph_12.png | Bin 0 -> 2236 bytes docs/doxygen/html/inherit_graph_13.map | 3 + docs/doxygen/html/inherit_graph_13.md5 | 1 + docs/doxygen/html/inherit_graph_13.png | Bin 0 -> 1431 bytes docs/doxygen/html/inherit_graph_14.map | 3 + docs/doxygen/html/inherit_graph_14.md5 | 1 + docs/doxygen/html/inherit_graph_14.png | Bin 0 -> 2081 bytes docs/doxygen/html/inherit_graph_15.map | 3 + docs/doxygen/html/inherit_graph_15.md5 | 1 + docs/doxygen/html/inherit_graph_15.png | Bin 0 -> 2269 bytes docs/doxygen/html/inherit_graph_16.map | 3 + docs/doxygen/html/inherit_graph_16.md5 | 1 + docs/doxygen/html/inherit_graph_16.png | Bin 0 -> 2378 bytes docs/doxygen/html/inherit_graph_17.map | 3 + docs/doxygen/html/inherit_graph_17.md5 | 1 + docs/doxygen/html/inherit_graph_17.png | Bin 0 -> 2792 bytes docs/doxygen/html/inherit_graph_18.map | 3 + docs/doxygen/html/inherit_graph_18.md5 | 1 + docs/doxygen/html/inherit_graph_18.png | Bin 0 -> 2875 bytes docs/doxygen/html/inherit_graph_19.map | 3 + docs/doxygen/html/inherit_graph_19.md5 | 1 + docs/doxygen/html/inherit_graph_19.png | Bin 0 -> 2584 bytes docs/doxygen/html/inherit_graph_2.map | 4 + docs/doxygen/html/inherit_graph_2.md5 | 1 + docs/doxygen/html/inherit_graph_2.png | Bin 0 -> 1984 bytes docs/doxygen/html/inherit_graph_20.map | 3 + docs/doxygen/html/inherit_graph_20.md5 | 1 + docs/doxygen/html/inherit_graph_20.png | Bin 0 -> 2033 bytes docs/doxygen/html/inherit_graph_21.map | 3 + docs/doxygen/html/inherit_graph_21.md5 | 1 + docs/doxygen/html/inherit_graph_21.png | Bin 0 -> 2619 bytes docs/doxygen/html/inherit_graph_22.map | 3 + docs/doxygen/html/inherit_graph_22.md5 | 1 + docs/doxygen/html/inherit_graph_22.png | Bin 0 -> 3199 bytes docs/doxygen/html/inherit_graph_23.map | 3 + docs/doxygen/html/inherit_graph_23.md5 | 1 + docs/doxygen/html/inherit_graph_23.png | Bin 0 -> 3252 bytes docs/doxygen/html/inherit_graph_24.map | 4 + docs/doxygen/html/inherit_graph_24.md5 | 1 + docs/doxygen/html/inherit_graph_24.png | Bin 0 -> 4346 bytes docs/doxygen/html/inherit_graph_25.map | 3 + docs/doxygen/html/inherit_graph_25.md5 | 1 + docs/doxygen/html/inherit_graph_25.png | Bin 0 -> 2111 bytes docs/doxygen/html/inherit_graph_26.map | 5 + docs/doxygen/html/inherit_graph_26.md5 | 1 + docs/doxygen/html/inherit_graph_26.png | Bin 0 -> 5863 bytes docs/doxygen/html/inherit_graph_27.map | 3 + docs/doxygen/html/inherit_graph_27.md5 | 1 + docs/doxygen/html/inherit_graph_27.png | Bin 0 -> 1760 bytes docs/doxygen/html/inherit_graph_28.map | 4 + docs/doxygen/html/inherit_graph_28.md5 | 1 + docs/doxygen/html/inherit_graph_28.png | Bin 0 -> 2167 bytes docs/doxygen/html/inherit_graph_29.map | 3 + docs/doxygen/html/inherit_graph_29.md5 | 1 + docs/doxygen/html/inherit_graph_29.png | Bin 0 -> 1442 bytes docs/doxygen/html/inherit_graph_3.map | 7 + docs/doxygen/html/inherit_graph_3.md5 | 1 + docs/doxygen/html/inherit_graph_3.png | Bin 0 -> 13907 bytes docs/doxygen/html/inherit_graph_30.map | 3 + docs/doxygen/html/inherit_graph_30.md5 | 1 + docs/doxygen/html/inherit_graph_30.png | Bin 0 -> 1305 bytes docs/doxygen/html/inherit_graph_31.map | 3 + docs/doxygen/html/inherit_graph_31.md5 | 1 + docs/doxygen/html/inherit_graph_31.png | Bin 0 -> 2452 bytes docs/doxygen/html/inherit_graph_32.map | 3 + docs/doxygen/html/inherit_graph_32.md5 | 1 + docs/doxygen/html/inherit_graph_32.png | Bin 0 -> 1135 bytes docs/doxygen/html/inherit_graph_33.map | 3 + docs/doxygen/html/inherit_graph_33.md5 | 1 + docs/doxygen/html/inherit_graph_33.png | Bin 0 -> 1322 bytes docs/doxygen/html/inherit_graph_34.map | 3 + docs/doxygen/html/inherit_graph_34.md5 | 1 + docs/doxygen/html/inherit_graph_34.png | Bin 0 -> 1385 bytes docs/doxygen/html/inherit_graph_35.map | 3 + docs/doxygen/html/inherit_graph_35.md5 | 1 + docs/doxygen/html/inherit_graph_35.png | Bin 0 -> 1802 bytes docs/doxygen/html/inherit_graph_4.map | 4 + docs/doxygen/html/inherit_graph_4.md5 | 1 + docs/doxygen/html/inherit_graph_4.png | Bin 0 -> 3672 bytes docs/doxygen/html/inherit_graph_5.map | 3 + docs/doxygen/html/inherit_graph_5.md5 | 1 + docs/doxygen/html/inherit_graph_5.png | Bin 0 -> 1894 bytes docs/doxygen/html/inherit_graph_6.map | 3 + docs/doxygen/html/inherit_graph_6.md5 | 1 + docs/doxygen/html/inherit_graph_6.png | Bin 0 -> 2382 bytes docs/doxygen/html/inherit_graph_7.map | 4 + docs/doxygen/html/inherit_graph_7.md5 | 1 + docs/doxygen/html/inherit_graph_7.png | Bin 0 -> 3622 bytes docs/doxygen/html/inherit_graph_8.map | 3 + docs/doxygen/html/inherit_graph_8.md5 | 1 + docs/doxygen/html/inherit_graph_8.png | Bin 0 -> 2238 bytes docs/doxygen/html/inherit_graph_9.map | 3 + docs/doxygen/html/inherit_graph_9.md5 | 1 + docs/doxygen/html/inherit_graph_9.png | Bin 0 -> 1969 bytes docs/doxygen/html/inherits.html | 287 ++ docs/doxygen/html/jquery.js | 35 + docs/doxygen/html/md_CONTRIBUTING.html | 94 + docs/doxygen/html/md_README.html | 124 + docs/doxygen/html/menu.js | 50 + docs/doxygen/html/menudata.js | 66 + docs/doxygen/html/nav_f.png | Bin 0 -> 153 bytes docs/doxygen/html/nav_g.png | Bin 0 -> 95 bytes docs/doxygen/html/nav_h.png | Bin 0 -> 98 bytes docs/doxygen/html/open.png | Bin 0 -> 123 bytes docs/doxygen/html/pages.html | 83 + docs/doxygen/html/search/all_0.html | 30 + docs/doxygen/html/search/all_0.js | 12 + docs/doxygen/html/search/all_1.html | 30 + docs/doxygen/html/search/all_1.js | 7 + docs/doxygen/html/search/all_10.html | 30 + docs/doxygen/html/search/all_10.js | 5 + docs/doxygen/html/search/all_11.html | 30 + docs/doxygen/html/search/all_11.js | 13 + docs/doxygen/html/search/all_2.html | 30 + docs/doxygen/html/search/all_2.js | 23 + docs/doxygen/html/search/all_3.html | 30 + docs/doxygen/html/search/all_3.js | 16 + docs/doxygen/html/search/all_4.html | 30 + docs/doxygen/html/search/all_4.js | 5 + docs/doxygen/html/search/all_5.html | 30 + docs/doxygen/html/search/all_5.js | 5 + docs/doxygen/html/search/all_6.html | 30 + docs/doxygen/html/search/all_6.js | 32 + docs/doxygen/html/search/all_7.html | 30 + docs/doxygen/html/search/all_7.js | 5 + docs/doxygen/html/search/all_8.html | 30 + docs/doxygen/html/search/all_8.js | 4 + docs/doxygen/html/search/all_9.html | 30 + docs/doxygen/html/search/all_9.js | 5 + docs/doxygen/html/search/all_a.html | 30 + docs/doxygen/html/search/all_a.js | 7 + docs/doxygen/html/search/all_b.html | 30 + docs/doxygen/html/search/all_b.js | 23 + docs/doxygen/html/search/all_c.html | 30 + docs/doxygen/html/search/all_c.js | 23 + docs/doxygen/html/search/all_d.html | 30 + docs/doxygen/html/search/all_d.js | 24 + docs/doxygen/html/search/all_e.html | 30 + docs/doxygen/html/search/all_e.js | 11 + docs/doxygen/html/search/all_f.html | 30 + docs/doxygen/html/search/all_f.js | 7 + docs/doxygen/html/search/classes_0.html | 30 + docs/doxygen/html/search/classes_0.js | 5 + docs/doxygen/html/search/classes_1.html | 30 + docs/doxygen/html/search/classes_1.js | 10 + docs/doxygen/html/search/classes_2.html | 30 + docs/doxygen/html/search/classes_2.js | 10 + docs/doxygen/html/search/classes_3.html | 30 + docs/doxygen/html/search/classes_3.js | 4 + docs/doxygen/html/search/classes_4.html | 30 + docs/doxygen/html/search/classes_4.js | 4 + docs/doxygen/html/search/classes_5.html | 30 + docs/doxygen/html/search/classes_5.js | 4 + docs/doxygen/html/search/classes_6.html | 30 + docs/doxygen/html/search/classes_6.js | 4 + docs/doxygen/html/search/classes_7.html | 30 + docs/doxygen/html/search/classes_7.js | 5 + docs/doxygen/html/search/classes_8.html | 30 + docs/doxygen/html/search/classes_8.js | 13 + docs/doxygen/html/search/classes_9.html | 30 + docs/doxygen/html/search/classes_9.js | 12 + docs/doxygen/html/search/classes_a.html | 30 + docs/doxygen/html/search/classes_a.js | 9 + docs/doxygen/html/search/classes_b.html | 30 + docs/doxygen/html/search/classes_b.js | 6 + docs/doxygen/html/search/classes_c.html | 30 + docs/doxygen/html/search/classes_c.js | 5 + docs/doxygen/html/search/classes_d.html | 30 + docs/doxygen/html/search/classes_d.js | 4 + docs/doxygen/html/search/close.png | Bin 0 -> 273 bytes docs/doxygen/html/search/functions_0.html | 30 + docs/doxygen/html/search/functions_0.js | 12 + docs/doxygen/html/search/functions_1.html | 30 + docs/doxygen/html/search/functions_1.js | 5 + docs/doxygen/html/search/functions_10.html | 30 + docs/doxygen/html/search/functions_10.js | 12 + docs/doxygen/html/search/functions_2.html | 30 + docs/doxygen/html/search/functions_2.js | 15 + docs/doxygen/html/search/functions_3.html | 30 + docs/doxygen/html/search/functions_3.js | 9 + docs/doxygen/html/search/functions_4.html | 30 + docs/doxygen/html/search/functions_4.js | 4 + docs/doxygen/html/search/functions_5.html | 30 + docs/doxygen/html/search/functions_5.js | 4 + docs/doxygen/html/search/functions_6.html | 30 + docs/doxygen/html/search/functions_6.js | 31 + docs/doxygen/html/search/functions_7.html | 30 + docs/doxygen/html/search/functions_7.js | 5 + docs/doxygen/html/search/functions_8.html | 30 + docs/doxygen/html/search/functions_8.js | 5 + docs/doxygen/html/search/functions_9.html | 30 + docs/doxygen/html/search/functions_9.js | 5 + docs/doxygen/html/search/functions_a.html | 30 + docs/doxygen/html/search/functions_a.js | 13 + docs/doxygen/html/search/functions_b.html | 30 + docs/doxygen/html/search/functions_b.js | 13 + docs/doxygen/html/search/functions_c.html | 30 + docs/doxygen/html/search/functions_c.js | 18 + docs/doxygen/html/search/functions_d.html | 30 + docs/doxygen/html/search/functions_d.js | 8 + docs/doxygen/html/search/functions_e.html | 30 + docs/doxygen/html/search/functions_e.js | 5 + docs/doxygen/html/search/functions_f.html | 30 + docs/doxygen/html/search/functions_f.js | 5 + docs/doxygen/html/search/mag_sel.png | Bin 0 -> 465 bytes docs/doxygen/html/search/nomatches.html | 12 + docs/doxygen/html/search/pages_0.html | 30 + docs/doxygen/html/search/pages_0.js | 4 + docs/doxygen/html/search/pages_1.html | 30 + docs/doxygen/html/search/pages_1.js | 4 + docs/doxygen/html/search/search.css | 271 ++ docs/doxygen/html/search/search.js | 814 ++++++ docs/doxygen/html/search/search_l.png | Bin 0 -> 567 bytes docs/doxygen/html/search/search_m.png | Bin 0 -> 158 bytes docs/doxygen/html/search/search_r.png | Bin 0 -> 553 bytes docs/doxygen/html/search/searchdata.js | 24 + docs/doxygen/html/splitbar.png | Bin 0 -> 314 bytes docs/doxygen/html/sync_off.png | Bin 0 -> 853 bytes docs/doxygen/html/sync_on.png | Bin 0 -> 845 bytes docs/doxygen/html/tab_a.png | Bin 0 -> 142 bytes docs/doxygen/html/tab_b.png | Bin 0 -> 169 bytes docs/doxygen/html/tab_h.png | Bin 0 -> 177 bytes docs/doxygen/html/tab_s.png | Bin 0 -> 184 bytes docs/doxygen/html/tabs.css | 1 + docs/doxygen/images/RAFT_Logo.png | Bin 0 -> 655002 bytes docs/doxygen/xml/CONTRIBUTING_8md.xml | 32 + docs/doxygen/xml/README_8md.xml | 57 + docs/doxygen/xml/S20control_8py.xml | 455 +++ docs/doxygen/xml/SLP_8py.xml | 78 + docs/doxygen/xml/accessElementsTests_8py.xml | 81 + docs/doxygen/xml/alertTest_8py.xml | 103 + docs/doxygen/xml/apcAos_8py.xml | 88 + docs/doxygen/xml/apc_8py.xml | 190 ++ docs/doxygen/xml/arduino_8py.xml | 63 + docs/doxygen/xml/capture_8py.xml | 223 ++ ...essElementsTests_1_1accessElementsTest.xml | 84 + .../xml/classalertTest_1_1alertTest.xml | 84 + .../xml/classarduino_1_1remoteArduino.xml | 144 + .../xml/classcore_1_1capture_1_1capture.xml | 479 +++ ..._1consoleInterface_1_1consoleInterface.xml | 190 ++ ...odules_1_1serialClass_1_1serialSession.xml | 366 +++ ...andModules_1_1sshConsole_1_1sshConsole.xml | 362 +++ ...ommandModules_1_1telnetClass_1_1telnet.xml | 512 ++++ ...e_1_1commonRemote_1_1commonRemoteClass.xml | 237 ++ ...ommonRemote_1_1remoteControllerMapping.xml | 174 ++ ..._1configParserBase_1_1configParserBase.xml | 167 ++ ...sscore_1_1configParser_1_1configParser.xml | 481 +++ ...sscore_1_1decodeParams_1_1decodeParams.xml | 235 ++ ...score_1_1deviceManager_1_1consoleClass.xml | 90 + ...sscore_1_1deviceManager_1_1deviceClass.xml | 213 ++ ...core_1_1deviceManager_1_1deviceManager.xml | 145 + .../classcore_1_1logModule_1_1logModule.xml | 1459 ++++++++++ ...1outboundClient_1_1outboundClientClass.xml | 576 ++++ ...e_1_1powerControl_1_1powerControlClass.xml | 248 ++ ...owerModules_1_1S20control_1_1OrviboS20.xml | 410 +++ ...Modules_1_1S20control_1_1UnknownPacket.xml | 36 + ...odules_1_1S20control_1_1powerOrviboS20.xml | 175 ++ ...ore_1_1powerModules_1_1SLP_1_1powerSLP.xml | 234 ++ ...1powerModules_1_1apcAos_1_1powerApcAos.xml | 291 ++ ...ore_1_1powerModules_1_1apc_1_1powerAPC.xml | 366 +++ ...1_1powerModules_1_1hs100_1_1powerHS100.xml | 262 ++ ...werModules_1_1kasaControl_1_1powerKasa.xml | 320 ++ ...e_1_1powerModules_1_1none_1_1powerNone.xml | 107 + ...1powerModules_1_1olimex_1_1powerOlimex.xml | 197 ++ ..._1rackController_1_1configDecoderClass.xml | 157 + .../classcore_1_1rackController_1_1rack.xml | 167 ++ ...re_1_1rackController_1_1rackController.xml | 195 ++ ...lasscore_1_1rackController_1_1rackSlot.xml | 385 +++ .../xml/classcore_1_1rcCodes_1_1rcCode.xml | 1313 +++++++++ ...score_1_1testControl_1_1testController.xml | 1313 +++++++++ .../classcore_1_1utilities_1_1utilities.xml | 150 + ...webpageController_1_1webpageController.xml | 1407 +++++++++ .../xml/classdownloadTest_1_1downloadTest.xml | 84 + ...namicButtonsTest_1_1dynamicButtonsTest.xml | 84 + ...dynamicTablesTest_1_1dynamicTablesTest.xml | 106 + ...tAttributeTest_1_1elementAttributeTest.xml | 84 + ..._1_1exceptionTests_1_1framework__test1.xml | 136 + ...1_1remoteController__test_1_1demoClass.xml | 36 + ...amework_1_1startup_1_1framework__test1.xml | 74 + ...ssglobalActionTest_1_1globalActionTest.xml | 84 + docs/doxygen/xml/classnone_1_1remoteNone.xml | 103 + .../xml/classolimex_1_1remoteOlimex.xml | 137 + ...ormActionsTests_1_1performActionsTests.xml | 84 + ...veScreenshotTest_1_1saveScreenshotTest.xml | 84 + ...lectOptionsTests_1_1selectOptionsTests.xml | 84 + .../classseleniumDriver_1_1seleniumDriver.xml | 803 +++++ .../xml/classsequenceTest_1_1sequenceTest.xml | 84 + .../xml/classskyProc_1_1remoteSkyProc.xml | 151 + .../doxygen/xml/classtabsTest_1_1tabsTest.xml | 84 + docs/doxygen/xml/combine.xslt | 15 + docs/doxygen/xml/commonRemote_8py.xml | 195 ++ docs/doxygen/xml/compound.xsd | 1187 ++++++++ docs/doxygen/xml/configParserBase_8py.xml | 81 + docs/doxygen/xml/configParser_8py.xml | 337 +++ docs/doxygen/xml/consoleInterface_8py.xml | 72 + docs/doxygen/xml/decodeParams_8py.xml | 132 + docs/doxygen/xml/deviceManager_8py.xml | 230 ++ .../dir_4f83fc4e7000500481bc2234a29e5a13.xml | 12 + .../dir_62afcf8aa2ca4125a5b338a899a08dc3.xml | 18 + .../dir_644e041c3a6521da7b27eba0e4eb2b95.xml | 12 + .../dir_7a725b7f06931a19d20816064cbe79d7.xml | 11 + .../dir_7c3866b21eca5596ae21bf63a2e2d995.xml | 30 + .../dir_8a371890c7df54832bedf6136b86116e.xml | 24 + .../dir_8cdaaede5e395ce5a2b7dcd448eefcc0.xml | 15 + .../dir_8f7813a2e1199496bc4aeee3a1228541.xml | 12 + .../dir_e36ba64977d65a0761a291213aecd3cd.xml | 20 + .../dir_ed446ba2d365ada0ebb676416d76edde.xml | 16 + docs/doxygen/xml/downloadTest_8py.xml | 73 + docs/doxygen/xml/dynamicButtonsTest_8py.xml | 67 + docs/doxygen/xml/dynamicTablesTest_8py.xml | 167 ++ docs/doxygen/xml/elementAttributeTest_8py.xml | 54 + docs/doxygen/xml/exceptionTests_8py.xml | 86 + .../xml/framework_2core_2____init_____8py.xml | 41 + ...core_2commandModules_2____init_____8py.xml | 23 + ..._2core_2powerModules_2____init_____8py.xml | 23 + docs/doxygen/xml/globalActionTest_8py.xml | 116 + docs/doxygen/xml/hs100_8py.xml | 135 + docs/doxygen/xml/index.xml | 1133 ++++++++ docs/doxygen/xml/index.xsd | 67 + .../xml/installation_2requirements_8txt.xml | 29 + docs/doxygen/xml/kasaControl_8py.xml | 202 ++ docs/doxygen/xml/logModule_8py.xml | 313 ++ docs/doxygen/xml/logging__tests_8py.xml | 117 + docs/doxygen/xml/md_CONTRIBUTING.xml | 30 + docs/doxygen/xml/md_README.xml | 70 + docs/doxygen/xml/mockUploadFile_8txt.xml | 13 + .../xml/namespaceaccessElementsTests.xml | 42 + docs/doxygen/xml/namespacealertTest.xml | 42 + docs/doxygen/xml/namespacearduino.xml | 12 + docs/doxygen/xml/namespacecore.xml | 27 + docs/doxygen/xml/namespacecore_1_1capture.xml | 12 + .../xml/namespacecore_1_1commandModules.xml | 31 + ..._1_1commandModules_1_1consoleInterface.xml | 12 + ...ecore_1_1commandModules_1_1serialClass.xml | 12 + ...cecore_1_1commandModules_1_1sshConsole.xml | 12 + ...ecore_1_1commandModules_1_1telnetClass.xml | 12 + .../xml/namespacecore_1_1commonRemote.xml | 13 + .../xml/namespacecore_1_1configParser.xml | 149 + .../xml/namespacecore_1_1configParserBase.xml | 12 + .../xml/namespacecore_1_1decodeParams.xml | 12 + .../xml/namespacecore_1_1deviceManager.xml | 30 + .../xml/namespacecore_1_1logModule.xml | 12 + .../xml/namespacecore_1_1outboundClient.xml | 12 + .../xml/namespacecore_1_1powerControl.xml | 12 + .../xml/namespacecore_1_1powerModules.xml | 35 + ...pacecore_1_1powerModules_1_1S20control.xml | 42 + .../namespacecore_1_1powerModules_1_1SLP.xml | 12 + .../namespacecore_1_1powerModules_1_1apc.xml | 84 + ...amespacecore_1_1powerModules_1_1apcAos.xml | 84 + ...namespacecore_1_1powerModules_1_1hs100.xml | 12 + ...acecore_1_1powerModules_1_1kasaControl.xml | 12 + .../namespacecore_1_1powerModules_1_1none.xml | 12 + ...amespacecore_1_1powerModules_1_1olimex.xml | 12 + .../xml/namespacecore_1_1rackController.xml | 15 + docs/doxygen/xml/namespacecore_1_1rcCodes.xml | 12 + .../xml/namespacecore_1_1testControl.xml | 28 + .../xml/namespacecore_1_1utilities.xml | 12 + .../namespacecore_1_1webpageController.xml | 28 + docs/doxygen/xml/namespacedownloadTest.xml | 42 + .../xml/namespacedynamicButtonsTest.xml | 42 + .../xml/namespacedynamicTablesTest.xml | 42 + .../xml/namespaceelementAttributeTest.xml | 42 + docs/doxygen/xml/namespaceframework.xml | 32 + .../namespaceframework_1_1exceptionTests.xml | 68 + .../namespaceframework_1_1logging__tests.xml | 83 + ...mespaceframework_1_1powerSwitch__tests.xml | 153 + ...aceframework_1_1remoteController__test.xml | 42 + .../xml/namespaceframework_1_1startup.xml | 42 + .../doxygen/xml/namespaceglobalActionTest.xml | 42 + docs/doxygen/xml/namespacenone.xml | 12 + docs/doxygen/xml/namespaceolimex.xml | 12 + .../xml/namespaceperformActionsTests.xml | 42 + .../xml/namespacesaveScreenshotTest.xml | 42 + .../xml/namespaceselectOptionsTests.xml | 42 + docs/doxygen/xml/namespaceseleniumDriver.xml | 12 + docs/doxygen/xml/namespacesequenceTest.xml | 42 + docs/doxygen/xml/namespaceskyProc.xml | 12 + docs/doxygen/xml/namespacetabsTest.xml | 42 + .../xml/namespacewebpageControlTests.xml | 54 + docs/doxygen/xml/outboundClient_8py.xml | 347 +++ docs/doxygen/xml/performActionsTests_8py.xml | 120 + docs/doxygen/xml/powerControl_8py.xml | 141 + docs/doxygen/xml/powerModules_2none_8py.xml | 53 + docs/doxygen/xml/powerModules_2olimex_8py.xml | 71 + docs/doxygen/xml/powerSwitch__tests_8py.xml | 75 + docs/doxygen/xml/rackController_8py.xml | 230 ++ docs/doxygen/xml/rcCodes_8py.xml | 132 + .../xml/remoteControllerModules_2none_8py.xml | 61 + .../remoteControllerModules_2olimex_8py.xml | 64 + .../xml/remoteController__test_8py.xml | 52 + docs/doxygen/xml/requirements_8txt.xml | 73 + docs/doxygen/xml/saveScreenshotTest_8py.xml | 61 + docs/doxygen/xml/selectOptionsTests_8py.xml | 80 + docs/doxygen/xml/seleniumDriver_8py.xml | 374 +++ docs/doxygen/xml/sequenceTest_8py.xml | 56 + docs/doxygen/xml/serialClass_8py.xml | 152 + docs/doxygen/xml/skyProc_8py.xml | 57 + docs/doxygen/xml/sshConsole_8py.xml | 107 + docs/doxygen/xml/startup_8py.xml | 42 + docs/doxygen/xml/tabsTest_8py.xml | 112 + docs/doxygen/xml/telnetClass_8py.xml | 189 ++ docs/doxygen/xml/testControl_8py.xml | 657 +++++ ...unitTests_2framework_2____init_____8py.xml | 27 + docs/doxygen/xml/utilities_8py.xml | 92 + docs/doxygen/xml/webpageControlTests_8py.xml | 54 + docs/doxygen/xml/webpageController_8py.xml | 698 +++++ docs/sphinx/build/html/.buildinfo | 4 + .../html/.doctrees/commandModules.doctree | Bin 0 -> 74536 bytes .../.doctrees/core.commandModules.doctree | Bin 0 -> 4314 bytes docs/sphinx/build/html/.doctrees/core.doctree | Bin 0 -> 7544 bytes .../html/.doctrees/core.powerModules.doctree | Bin 0 -> 5432 bytes .../build/html/.doctrees/environment.pickle | Bin 0 -> 172162 bytes .../sphinx/build/html/.doctrees/index.doctree | Bin 0 -> 5157 bytes .../build/html/.doctrees/modules.doctree | Bin 0 -> 2759 bytes .../html/_sources/commandModules.rst.txt | 45 + .../html/_sources/core.commandModules.rst.txt | 45 + .../html/_sources/core.powerModules.rst.txt | 77 + docs/sphinx/build/html/_sources/core.rst.txt | 134 + docs/sphinx/build/html/_sources/index.rst.txt | 21 + .../build/html/_sources/modules.rst.txt | 7 + docs/sphinx/build/html/_static/alabaster.css | 703 +++++ docs/sphinx/build/html/_static/basic.css | 921 ++++++ docs/sphinx/build/html/_static/custom.css | 1 + docs/sphinx/build/html/_static/doctools.js | 156 + .../html/_static/documentation_options.js | 14 + docs/sphinx/build/html/_static/file.png | Bin 0 -> 286 bytes .../build/html/_static/language_data.js | 199 ++ docs/sphinx/build/html/_static/minus.png | Bin 0 -> 90 bytes docs/sphinx/build/html/_static/plus.png | Bin 0 -> 90 bytes docs/sphinx/build/html/_static/pygments.css | 84 + docs/sphinx/build/html/_static/searchtools.js | 566 ++++ .../build/html/_static/sphinx_highlight.js | 144 + docs/sphinx/build/html/commandModules.html | 395 +++ .../build/html/core.commandModules.html | 1 + docs/sphinx/build/html/core.html | 176 ++ docs/sphinx/build/html/core.powerModules.html | 129 + docs/sphinx/build/html/genindex.html | 255 ++ docs/sphinx/build/html/index.html | 110 + docs/sphinx/build/html/modules.html | 147 + docs/sphinx/build/html/objects.inv | Bin 0 -> 512 bytes docs/sphinx/build/html/py-modindex.html | 128 + docs/sphinx/build/html/search.html | 117 + docs/sphinx/build/html/searchindex.js | 1 + .../markdown/doctrees/commandModules.doctree | Bin 0 -> 74536 bytes .../doctrees/core.commandModules.doctree | Bin 0 -> 4314 bytes .../build/markdown/doctrees/core.doctree | Bin 0 -> 7544 bytes .../doctrees/core.powerModules.doctree | Bin 0 -> 5432 bytes .../markdown/doctrees/environment.pickle | Bin 0 -> 172323 bytes .../build/markdown/doctrees/index.doctree | Bin 0 -> 5157 bytes .../build/markdown/doctrees/modules.doctree | Bin 0 -> 2759 bytes .../build/markdown/markdown/commandModules.md | 195 ++ .../markdown/markdown/core.commandModules.md | 1 + docs/sphinx/build/markdown/markdown/core.md | 54 + docs/sphinx/build/markdown/markdown/index.md | 14 + .../sphinx/build/markdown/markdown/modules.md | 38 + 807 files changed, 67465 insertions(+) create mode 100644 docs/breathe/build/html/.buildinfo create mode 100644 docs/breathe/build/html/.doctrees/commandModules.doctree create mode 100644 docs/breathe/build/html/.doctrees/core.commandModules.doctree create mode 100644 docs/breathe/build/html/.doctrees/core.doctree create mode 100644 docs/breathe/build/html/.doctrees/core.powerModules.doctree create mode 100644 docs/breathe/build/html/.doctrees/environment.pickle create mode 100644 docs/breathe/build/html/.doctrees/index.doctree create mode 100644 docs/breathe/build/html/.doctrees/modules.doctree create mode 100644 docs/breathe/build/html/_sources/commandModules.rst.txt create mode 100644 docs/breathe/build/html/_sources/core.commandModules.rst.txt create mode 100644 docs/breathe/build/html/_sources/core.powerModules.rst.txt create mode 100644 docs/breathe/build/html/_sources/core.rst.txt create mode 100644 docs/breathe/build/html/_sources/index.rst.txt create mode 100644 docs/breathe/build/html/_sources/modules.rst.txt create mode 100644 docs/breathe/build/html/_static/alabaster.css create mode 100644 docs/breathe/build/html/_static/basic.css create mode 100644 docs/breathe/build/html/_static/custom.css create mode 100644 docs/breathe/build/html/_static/doctools.js create mode 100644 docs/breathe/build/html/_static/documentation_options.js create mode 100644 docs/breathe/build/html/_static/file.png create mode 100644 docs/breathe/build/html/_static/language_data.js create mode 100644 docs/breathe/build/html/_static/minus.png create mode 100644 docs/breathe/build/html/_static/plus.png create mode 100644 docs/breathe/build/html/_static/pygments.css create mode 100644 docs/breathe/build/html/_static/searchtools.js create mode 100644 docs/breathe/build/html/_static/sphinx_highlight.js create mode 100644 docs/breathe/build/html/commandModules.html create mode 120000 docs/breathe/build/html/core.commandModules.html create mode 100644 docs/breathe/build/html/core.html create mode 100644 docs/breathe/build/html/core.powerModules.html create mode 100644 docs/breathe/build/html/genindex.html create mode 100644 docs/breathe/build/html/index.html create mode 100644 docs/breathe/build/html/modules.html create mode 100644 docs/breathe/build/html/objects.inv create mode 100644 docs/breathe/build/html/py-modindex.html create mode 100644 docs/breathe/build/html/search.html create mode 100644 docs/breathe/build/html/searchindex.js create mode 100644 docs/breathe/build/markdown/doctrees/commandModules.doctree create mode 100644 docs/breathe/build/markdown/doctrees/core.commandModules.doctree create mode 100644 docs/breathe/build/markdown/doctrees/core.doctree create mode 100644 docs/breathe/build/markdown/doctrees/core.powerModules.doctree create mode 100644 docs/breathe/build/markdown/doctrees/environment.pickle create mode 100644 docs/breathe/build/markdown/doctrees/index.doctree create mode 100644 docs/breathe/build/markdown/doctrees/modules.doctree create mode 100644 docs/breathe/build/markdown/markdown/commandModules.md create mode 120000 docs/breathe/build/markdown/markdown/core.commandModules.md create mode 100644 docs/breathe/build/markdown/markdown/core.md create mode 100644 docs/breathe/build/markdown/markdown/core.powerModules.md create mode 100644 docs/breathe/build/markdown/markdown/index.md create mode 100644 docs/breathe/build/markdown/markdown/modules.md create mode 100644 docs/doxygen/doxgen.conf create mode 100644 docs/doxygen/html/annotated.html create mode 100644 docs/doxygen/html/bc_s.png create mode 100644 docs/doxygen/html/bdwn.png create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest-members.html create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest.html create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest__coll__graph.map create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest__coll__graph.png create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest__inherit__graph.map create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classaccessElementsTests_1_1accessElementsTest__inherit__graph.png create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest-members.html create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest.html create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest__coll__graph.map create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest__coll__graph.png create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest__inherit__graph.map create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classalertTest_1_1alertTest__inherit__graph.png create mode 100644 docs/doxygen/html/classarduino_1_1remoteArduino-members.html create mode 100644 docs/doxygen/html/classarduino_1_1remoteArduino.html create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture-members.html create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture.html create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1capture_1_1capture__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface-members.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession-members.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1serialClass_1_1serialSession__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole-members.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet-members.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet.html create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1commandModules_1_1telnetClass_1_1telnet__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1commonRemote_1_1commonRemoteClass-members.html create mode 100644 docs/doxygen/html/classcore_1_1commonRemote_1_1commonRemoteClass.html create mode 100644 docs/doxygen/html/classcore_1_1commonRemote_1_1remoteControllerMapping-members.html create mode 100644 docs/doxygen/html/classcore_1_1commonRemote_1_1remoteControllerMapping.html create mode 100644 docs/doxygen/html/classcore_1_1configParserBase_1_1configParserBase-members.html create mode 100644 docs/doxygen/html/classcore_1_1configParserBase_1_1configParserBase.html create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser-members.html create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser.html create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1configParser_1_1configParser__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1decodeParams_1_1decodeParams-members.html create mode 100644 docs/doxygen/html/classcore_1_1decodeParams_1_1decodeParams.html create mode 100644 docs/doxygen/html/classcore_1_1deviceManager_1_1consoleClass-members.html create mode 100644 docs/doxygen/html/classcore_1_1deviceManager_1_1consoleClass.html create mode 100644 docs/doxygen/html/classcore_1_1deviceManager_1_1deviceClass-members.html create mode 100644 docs/doxygen/html/classcore_1_1deviceManager_1_1deviceClass.html create mode 100644 docs/doxygen/html/classcore_1_1deviceManager_1_1deviceManager-members.html create mode 100644 docs/doxygen/html/classcore_1_1deviceManager_1_1deviceManager.html create mode 100644 docs/doxygen/html/classcore_1_1logModule_1_1logModule-members.html create mode 100644 docs/doxygen/html/classcore_1_1logModule_1_1logModule.html create mode 100644 docs/doxygen/html/classcore_1_1outboundClient_1_1outboundClientClass-members.html create mode 100644 docs/doxygen/html/classcore_1_1outboundClient_1_1outboundClientClass.html create mode 100644 docs/doxygen/html/classcore_1_1powerControl_1_1powerControlClass-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerControl_1_1powerControlClass.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1OrviboS20-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1OrviboS20.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1powerOrviboS20-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1S20control_1_1powerOrviboS20.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1SLP_1_1powerSLP-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1SLP_1_1powerSLP.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1apcAos_1_1powerApcAos-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1apcAos_1_1powerApcAos.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1apc_1_1powerAPC-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1apc_1_1powerAPC.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1hs100_1_1powerHS100-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1hs100_1_1powerHS100.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1kasaControl_1_1powerKasa-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1kasaControl_1_1powerKasa.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1none_1_1powerNone-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1none_1_1powerNone.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1olimex_1_1powerOlimex-members.html create mode 100644 docs/doxygen/html/classcore_1_1powerModules_1_1olimex_1_1powerOlimex.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1configDecoderClass-members.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1configDecoderClass.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1configDecoderClass__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1configDecoderClass__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1configDecoderClass__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack-members.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackController-members.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackController.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot-members.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot.html create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rackSlot__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rackController_1_1rack__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode-members.html create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode.html create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode__coll__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode__coll__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode__coll__graph.png create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode__inherit__graph.map create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode__inherit__graph.md5 create mode 100644 docs/doxygen/html/classcore_1_1rcCodes_1_1rcCode__inherit__graph.png create mode 100644 docs/doxygen/html/classcore_1_1testControl_1_1testController-members.html create mode 100644 docs/doxygen/html/classcore_1_1testControl_1_1testController.html create mode 100644 docs/doxygen/html/classcore_1_1utilities_1_1utilities-members.html create mode 100644 docs/doxygen/html/classcore_1_1utilities_1_1utilities.html create mode 100644 docs/doxygen/html/classcore_1_1webpageController_1_1webpageController-members.html create mode 100644 docs/doxygen/html/classcore_1_1webpageController_1_1webpageController.html create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest-members.html create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest.html create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest__coll__graph.map create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest__coll__graph.png create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest__inherit__graph.map create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classdownloadTest_1_1downloadTest__inherit__graph.png create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest-members.html create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest.html create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest__coll__graph.map create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest__coll__graph.png create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest__inherit__graph.map create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classdynamicButtonsTest_1_1dynamicButtonsTest__inherit__graph.png create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest-members.html create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest.html create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest__coll__graph.map create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest__coll__graph.png create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest__inherit__graph.map create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classdynamicTablesTest_1_1dynamicTablesTest__inherit__graph.png create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest-members.html create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest.html create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest__coll__graph.map create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest__coll__graph.png create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest__inherit__graph.map create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classelementAttributeTest_1_1elementAttributeTest__inherit__graph.png create mode 100644 docs/doxygen/html/classes.html create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1-members.html create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1.html create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1__coll__graph.map create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1__coll__graph.md5 create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1__coll__graph.png create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1__inherit__graph.map create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1__inherit__graph.md5 create mode 100644 docs/doxygen/html/classframework_1_1exceptionTests_1_1framework__test1__inherit__graph.png create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass.html create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass__coll__graph.map create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass__coll__graph.md5 create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass__coll__graph.png create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass__inherit__graph.map create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass__inherit__graph.md5 create mode 100644 docs/doxygen/html/classframework_1_1remoteController__test_1_1demoClass__inherit__graph.png create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1-members.html create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1.html create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1__coll__graph.map create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1__coll__graph.md5 create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1__coll__graph.png create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1__inherit__graph.map create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1__inherit__graph.md5 create mode 100644 docs/doxygen/html/classframework_1_1startup_1_1framework__test1__inherit__graph.png create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest-members.html create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest.html create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest__coll__graph.map create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest__coll__graph.png create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest__inherit__graph.map create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classglobalActionTest_1_1globalActionTest__inherit__graph.png create mode 100644 docs/doxygen/html/classnone_1_1remoteNone-members.html create mode 100644 docs/doxygen/html/classnone_1_1remoteNone.html create mode 100644 docs/doxygen/html/classolimex_1_1remoteOlimex-members.html create mode 100644 docs/doxygen/html/classolimex_1_1remoteOlimex.html create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests-members.html create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests.html create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests__coll__graph.map create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests__coll__graph.md5 create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests__coll__graph.png create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests__inherit__graph.map create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests__inherit__graph.md5 create mode 100644 docs/doxygen/html/classperformActionsTests_1_1performActionsTests__inherit__graph.png create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest-members.html create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest.html create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest__coll__graph.map create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest__coll__graph.png create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest__inherit__graph.map create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classsaveScreenshotTest_1_1saveScreenshotTest__inherit__graph.png create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests-members.html create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests.html create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests__coll__graph.map create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests__coll__graph.md5 create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests__coll__graph.png create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests__inherit__graph.map create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests__inherit__graph.md5 create mode 100644 docs/doxygen/html/classselectOptionsTests_1_1selectOptionsTests__inherit__graph.png create mode 100644 docs/doxygen/html/classseleniumDriver_1_1seleniumDriver-members.html create mode 100644 docs/doxygen/html/classseleniumDriver_1_1seleniumDriver.html create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest-members.html create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest.html create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest__coll__graph.map create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest__coll__graph.png create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest__inherit__graph.map create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classsequenceTest_1_1sequenceTest__inherit__graph.png create mode 100644 docs/doxygen/html/classskyProc_1_1remoteSkyProc-members.html create mode 100644 docs/doxygen/html/classskyProc_1_1remoteSkyProc.html create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest-members.html create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest.html create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest__coll__graph.map create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest__coll__graph.md5 create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest__coll__graph.png create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest__inherit__graph.map create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest__inherit__graph.md5 create mode 100644 docs/doxygen/html/classtabsTest_1_1tabsTest__inherit__graph.png create mode 100644 docs/doxygen/html/closed.png create mode 100644 docs/doxygen/html/dir_4f83fc4e7000500481bc2234a29e5a13.html create mode 100644 docs/doxygen/html/dir_62afcf8aa2ca4125a5b338a899a08dc3.html create mode 100644 docs/doxygen/html/dir_644e041c3a6521da7b27eba0e4eb2b95.html create mode 100644 docs/doxygen/html/dir_7a725b7f06931a19d20816064cbe79d7.html create mode 100644 docs/doxygen/html/dir_7c3866b21eca5596ae21bf63a2e2d995.html create mode 100644 docs/doxygen/html/dir_8a371890c7df54832bedf6136b86116e.html create mode 100644 docs/doxygen/html/dir_8cdaaede5e395ce5a2b7dcd448eefcc0.html create mode 100644 docs/doxygen/html/dir_8f7813a2e1199496bc4aeee3a1228541.html create mode 100644 docs/doxygen/html/dir_e36ba64977d65a0761a291213aecd3cd.html create mode 100644 docs/doxygen/html/dir_ed446ba2d365ada0ebb676416d76edde.html create mode 100644 docs/doxygen/html/doc.png create mode 100644 docs/doxygen/html/doxygen.css create mode 100644 docs/doxygen/html/doxygen.png create mode 100644 docs/doxygen/html/dynsections.js create mode 100644 docs/doxygen/html/folderclosed.png create mode 100644 docs/doxygen/html/folderopen.png create mode 100644 docs/doxygen/html/functions.html create mode 100644 docs/doxygen/html/functions_func.html create mode 100644 docs/doxygen/html/graph_legend.html create mode 100644 docs/doxygen/html/graph_legend.md5 create mode 100644 docs/doxygen/html/graph_legend.png create mode 100644 docs/doxygen/html/hierarchy.html create mode 100644 docs/doxygen/html/index.html create mode 100644 docs/doxygen/html/inherit_graph_0.map create mode 100644 docs/doxygen/html/inherit_graph_0.md5 create mode 100644 docs/doxygen/html/inherit_graph_0.png create mode 100644 docs/doxygen/html/inherit_graph_1.map create mode 100644 docs/doxygen/html/inherit_graph_1.md5 create mode 100644 docs/doxygen/html/inherit_graph_1.png create mode 100644 docs/doxygen/html/inherit_graph_10.map create mode 100644 docs/doxygen/html/inherit_graph_10.md5 create mode 100644 docs/doxygen/html/inherit_graph_10.png create mode 100644 docs/doxygen/html/inherit_graph_11.map create mode 100644 docs/doxygen/html/inherit_graph_11.md5 create mode 100644 docs/doxygen/html/inherit_graph_11.png create mode 100644 docs/doxygen/html/inherit_graph_12.map create mode 100644 docs/doxygen/html/inherit_graph_12.md5 create mode 100644 docs/doxygen/html/inherit_graph_12.png create mode 100644 docs/doxygen/html/inherit_graph_13.map create mode 100644 docs/doxygen/html/inherit_graph_13.md5 create mode 100644 docs/doxygen/html/inherit_graph_13.png create mode 100644 docs/doxygen/html/inherit_graph_14.map create mode 100644 docs/doxygen/html/inherit_graph_14.md5 create mode 100644 docs/doxygen/html/inherit_graph_14.png create mode 100644 docs/doxygen/html/inherit_graph_15.map create mode 100644 docs/doxygen/html/inherit_graph_15.md5 create mode 100644 docs/doxygen/html/inherit_graph_15.png create mode 100644 docs/doxygen/html/inherit_graph_16.map create mode 100644 docs/doxygen/html/inherit_graph_16.md5 create mode 100644 docs/doxygen/html/inherit_graph_16.png create mode 100644 docs/doxygen/html/inherit_graph_17.map create mode 100644 docs/doxygen/html/inherit_graph_17.md5 create mode 100644 docs/doxygen/html/inherit_graph_17.png create mode 100644 docs/doxygen/html/inherit_graph_18.map create mode 100644 docs/doxygen/html/inherit_graph_18.md5 create mode 100644 docs/doxygen/html/inherit_graph_18.png create mode 100644 docs/doxygen/html/inherit_graph_19.map create mode 100644 docs/doxygen/html/inherit_graph_19.md5 create mode 100644 docs/doxygen/html/inherit_graph_19.png create mode 100644 docs/doxygen/html/inherit_graph_2.map create mode 100644 docs/doxygen/html/inherit_graph_2.md5 create mode 100644 docs/doxygen/html/inherit_graph_2.png create mode 100644 docs/doxygen/html/inherit_graph_20.map create mode 100644 docs/doxygen/html/inherit_graph_20.md5 create mode 100644 docs/doxygen/html/inherit_graph_20.png create mode 100644 docs/doxygen/html/inherit_graph_21.map create mode 100644 docs/doxygen/html/inherit_graph_21.md5 create mode 100644 docs/doxygen/html/inherit_graph_21.png create mode 100644 docs/doxygen/html/inherit_graph_22.map create mode 100644 docs/doxygen/html/inherit_graph_22.md5 create mode 100644 docs/doxygen/html/inherit_graph_22.png create mode 100644 docs/doxygen/html/inherit_graph_23.map create mode 100644 docs/doxygen/html/inherit_graph_23.md5 create mode 100644 docs/doxygen/html/inherit_graph_23.png create mode 100644 docs/doxygen/html/inherit_graph_24.map create mode 100644 docs/doxygen/html/inherit_graph_24.md5 create mode 100644 docs/doxygen/html/inherit_graph_24.png create mode 100644 docs/doxygen/html/inherit_graph_25.map create mode 100644 docs/doxygen/html/inherit_graph_25.md5 create mode 100644 docs/doxygen/html/inherit_graph_25.png create mode 100644 docs/doxygen/html/inherit_graph_26.map create mode 100644 docs/doxygen/html/inherit_graph_26.md5 create mode 100644 docs/doxygen/html/inherit_graph_26.png create mode 100644 docs/doxygen/html/inherit_graph_27.map create mode 100644 docs/doxygen/html/inherit_graph_27.md5 create mode 100644 docs/doxygen/html/inherit_graph_27.png create mode 100644 docs/doxygen/html/inherit_graph_28.map create mode 100644 docs/doxygen/html/inherit_graph_28.md5 create mode 100644 docs/doxygen/html/inherit_graph_28.png create mode 100644 docs/doxygen/html/inherit_graph_29.map create mode 100644 docs/doxygen/html/inherit_graph_29.md5 create mode 100644 docs/doxygen/html/inherit_graph_29.png create mode 100644 docs/doxygen/html/inherit_graph_3.map create mode 100644 docs/doxygen/html/inherit_graph_3.md5 create mode 100644 docs/doxygen/html/inherit_graph_3.png create mode 100644 docs/doxygen/html/inherit_graph_30.map create mode 100644 docs/doxygen/html/inherit_graph_30.md5 create mode 100644 docs/doxygen/html/inherit_graph_30.png create mode 100644 docs/doxygen/html/inherit_graph_31.map create mode 100644 docs/doxygen/html/inherit_graph_31.md5 create mode 100644 docs/doxygen/html/inherit_graph_31.png create mode 100644 docs/doxygen/html/inherit_graph_32.map create mode 100644 docs/doxygen/html/inherit_graph_32.md5 create mode 100644 docs/doxygen/html/inherit_graph_32.png create mode 100644 docs/doxygen/html/inherit_graph_33.map create mode 100644 docs/doxygen/html/inherit_graph_33.md5 create mode 100644 docs/doxygen/html/inherit_graph_33.png create mode 100644 docs/doxygen/html/inherit_graph_34.map create mode 100644 docs/doxygen/html/inherit_graph_34.md5 create mode 100644 docs/doxygen/html/inherit_graph_34.png create mode 100644 docs/doxygen/html/inherit_graph_35.map create mode 100644 docs/doxygen/html/inherit_graph_35.md5 create mode 100644 docs/doxygen/html/inherit_graph_35.png create mode 100644 docs/doxygen/html/inherit_graph_4.map create mode 100644 docs/doxygen/html/inherit_graph_4.md5 create mode 100644 docs/doxygen/html/inherit_graph_4.png create mode 100644 docs/doxygen/html/inherit_graph_5.map create mode 100644 docs/doxygen/html/inherit_graph_5.md5 create mode 100644 docs/doxygen/html/inherit_graph_5.png create mode 100644 docs/doxygen/html/inherit_graph_6.map create mode 100644 docs/doxygen/html/inherit_graph_6.md5 create mode 100644 docs/doxygen/html/inherit_graph_6.png create mode 100644 docs/doxygen/html/inherit_graph_7.map create mode 100644 docs/doxygen/html/inherit_graph_7.md5 create mode 100644 docs/doxygen/html/inherit_graph_7.png create mode 100644 docs/doxygen/html/inherit_graph_8.map create mode 100644 docs/doxygen/html/inherit_graph_8.md5 create mode 100644 docs/doxygen/html/inherit_graph_8.png create mode 100644 docs/doxygen/html/inherit_graph_9.map create mode 100644 docs/doxygen/html/inherit_graph_9.md5 create mode 100644 docs/doxygen/html/inherit_graph_9.png create mode 100644 docs/doxygen/html/inherits.html create mode 100644 docs/doxygen/html/jquery.js create mode 100644 docs/doxygen/html/md_CONTRIBUTING.html create mode 100644 docs/doxygen/html/md_README.html create mode 100644 docs/doxygen/html/menu.js create mode 100644 docs/doxygen/html/menudata.js create mode 100644 docs/doxygen/html/nav_f.png create mode 100644 docs/doxygen/html/nav_g.png create mode 100644 docs/doxygen/html/nav_h.png create mode 100644 docs/doxygen/html/open.png create mode 100644 docs/doxygen/html/pages.html create mode 100644 docs/doxygen/html/search/all_0.html create mode 100644 docs/doxygen/html/search/all_0.js create mode 100644 docs/doxygen/html/search/all_1.html create mode 100644 docs/doxygen/html/search/all_1.js create mode 100644 docs/doxygen/html/search/all_10.html create mode 100644 docs/doxygen/html/search/all_10.js create mode 100644 docs/doxygen/html/search/all_11.html create mode 100644 docs/doxygen/html/search/all_11.js create mode 100644 docs/doxygen/html/search/all_2.html create mode 100644 docs/doxygen/html/search/all_2.js create mode 100644 docs/doxygen/html/search/all_3.html create mode 100644 docs/doxygen/html/search/all_3.js create mode 100644 docs/doxygen/html/search/all_4.html create mode 100644 docs/doxygen/html/search/all_4.js create mode 100644 docs/doxygen/html/search/all_5.html create mode 100644 docs/doxygen/html/search/all_5.js create mode 100644 docs/doxygen/html/search/all_6.html create mode 100644 docs/doxygen/html/search/all_6.js create mode 100644 docs/doxygen/html/search/all_7.html create mode 100644 docs/doxygen/html/search/all_7.js create mode 100644 docs/doxygen/html/search/all_8.html create mode 100644 docs/doxygen/html/search/all_8.js create mode 100644 docs/doxygen/html/search/all_9.html create mode 100644 docs/doxygen/html/search/all_9.js create mode 100644 docs/doxygen/html/search/all_a.html create mode 100644 docs/doxygen/html/search/all_a.js create mode 100644 docs/doxygen/html/search/all_b.html create mode 100644 docs/doxygen/html/search/all_b.js create mode 100644 docs/doxygen/html/search/all_c.html create mode 100644 docs/doxygen/html/search/all_c.js create mode 100644 docs/doxygen/html/search/all_d.html create mode 100644 docs/doxygen/html/search/all_d.js create mode 100644 docs/doxygen/html/search/all_e.html create mode 100644 docs/doxygen/html/search/all_e.js create mode 100644 docs/doxygen/html/search/all_f.html create mode 100644 docs/doxygen/html/search/all_f.js create mode 100644 docs/doxygen/html/search/classes_0.html create mode 100644 docs/doxygen/html/search/classes_0.js create mode 100644 docs/doxygen/html/search/classes_1.html create mode 100644 docs/doxygen/html/search/classes_1.js create mode 100644 docs/doxygen/html/search/classes_2.html create mode 100644 docs/doxygen/html/search/classes_2.js create mode 100644 docs/doxygen/html/search/classes_3.html create mode 100644 docs/doxygen/html/search/classes_3.js create mode 100644 docs/doxygen/html/search/classes_4.html create mode 100644 docs/doxygen/html/search/classes_4.js create mode 100644 docs/doxygen/html/search/classes_5.html create mode 100644 docs/doxygen/html/search/classes_5.js create mode 100644 docs/doxygen/html/search/classes_6.html create mode 100644 docs/doxygen/html/search/classes_6.js create mode 100644 docs/doxygen/html/search/classes_7.html create mode 100644 docs/doxygen/html/search/classes_7.js create mode 100644 docs/doxygen/html/search/classes_8.html create mode 100644 docs/doxygen/html/search/classes_8.js create mode 100644 docs/doxygen/html/search/classes_9.html create mode 100644 docs/doxygen/html/search/classes_9.js create mode 100644 docs/doxygen/html/search/classes_a.html create mode 100644 docs/doxygen/html/search/classes_a.js create mode 100644 docs/doxygen/html/search/classes_b.html create mode 100644 docs/doxygen/html/search/classes_b.js create mode 100644 docs/doxygen/html/search/classes_c.html create mode 100644 docs/doxygen/html/search/classes_c.js create mode 100644 docs/doxygen/html/search/classes_d.html create mode 100644 docs/doxygen/html/search/classes_d.js create mode 100644 docs/doxygen/html/search/close.png create mode 100644 docs/doxygen/html/search/functions_0.html create mode 100644 docs/doxygen/html/search/functions_0.js create mode 100644 docs/doxygen/html/search/functions_1.html create mode 100644 docs/doxygen/html/search/functions_1.js create mode 100644 docs/doxygen/html/search/functions_10.html create mode 100644 docs/doxygen/html/search/functions_10.js create mode 100644 docs/doxygen/html/search/functions_2.html create mode 100644 docs/doxygen/html/search/functions_2.js create mode 100644 docs/doxygen/html/search/functions_3.html create mode 100644 docs/doxygen/html/search/functions_3.js create mode 100644 docs/doxygen/html/search/functions_4.html create mode 100644 docs/doxygen/html/search/functions_4.js create mode 100644 docs/doxygen/html/search/functions_5.html create mode 100644 docs/doxygen/html/search/functions_5.js create mode 100644 docs/doxygen/html/search/functions_6.html create mode 100644 docs/doxygen/html/search/functions_6.js create mode 100644 docs/doxygen/html/search/functions_7.html create mode 100644 docs/doxygen/html/search/functions_7.js create mode 100644 docs/doxygen/html/search/functions_8.html create mode 100644 docs/doxygen/html/search/functions_8.js create mode 100644 docs/doxygen/html/search/functions_9.html create mode 100644 docs/doxygen/html/search/functions_9.js create mode 100644 docs/doxygen/html/search/functions_a.html create mode 100644 docs/doxygen/html/search/functions_a.js create mode 100644 docs/doxygen/html/search/functions_b.html create mode 100644 docs/doxygen/html/search/functions_b.js create mode 100644 docs/doxygen/html/search/functions_c.html create mode 100644 docs/doxygen/html/search/functions_c.js create mode 100644 docs/doxygen/html/search/functions_d.html create mode 100644 docs/doxygen/html/search/functions_d.js create mode 100644 docs/doxygen/html/search/functions_e.html create mode 100644 docs/doxygen/html/search/functions_e.js create mode 100644 docs/doxygen/html/search/functions_f.html create mode 100644 docs/doxygen/html/search/functions_f.js create mode 100644 docs/doxygen/html/search/mag_sel.png create mode 100644 docs/doxygen/html/search/nomatches.html create mode 100644 docs/doxygen/html/search/pages_0.html create mode 100644 docs/doxygen/html/search/pages_0.js create mode 100644 docs/doxygen/html/search/pages_1.html create mode 100644 docs/doxygen/html/search/pages_1.js create mode 100644 docs/doxygen/html/search/search.css create mode 100644 docs/doxygen/html/search/search.js create mode 100644 docs/doxygen/html/search/search_l.png create mode 100644 docs/doxygen/html/search/search_m.png create mode 100644 docs/doxygen/html/search/search_r.png create mode 100644 docs/doxygen/html/search/searchdata.js create mode 100644 docs/doxygen/html/splitbar.png create mode 100644 docs/doxygen/html/sync_off.png create mode 100644 docs/doxygen/html/sync_on.png create mode 100644 docs/doxygen/html/tab_a.png create mode 100644 docs/doxygen/html/tab_b.png create mode 100644 docs/doxygen/html/tab_h.png create mode 100644 docs/doxygen/html/tab_s.png create mode 100644 docs/doxygen/html/tabs.css create mode 100644 docs/doxygen/images/RAFT_Logo.png create mode 100644 docs/doxygen/xml/CONTRIBUTING_8md.xml create mode 100644 docs/doxygen/xml/README_8md.xml create mode 100644 docs/doxygen/xml/S20control_8py.xml create mode 100644 docs/doxygen/xml/SLP_8py.xml create mode 100644 docs/doxygen/xml/accessElementsTests_8py.xml create mode 100644 docs/doxygen/xml/alertTest_8py.xml create mode 100644 docs/doxygen/xml/apcAos_8py.xml create mode 100644 docs/doxygen/xml/apc_8py.xml create mode 100644 docs/doxygen/xml/arduino_8py.xml create mode 100644 docs/doxygen/xml/capture_8py.xml create mode 100644 docs/doxygen/xml/classaccessElementsTests_1_1accessElementsTest.xml create mode 100644 docs/doxygen/xml/classalertTest_1_1alertTest.xml create mode 100644 docs/doxygen/xml/classarduino_1_1remoteArduino.xml create mode 100644 docs/doxygen/xml/classcore_1_1capture_1_1capture.xml create mode 100644 docs/doxygen/xml/classcore_1_1commandModules_1_1consoleInterface_1_1consoleInterface.xml create mode 100644 docs/doxygen/xml/classcore_1_1commandModules_1_1serialClass_1_1serialSession.xml create mode 100644 docs/doxygen/xml/classcore_1_1commandModules_1_1sshConsole_1_1sshConsole.xml create mode 100644 docs/doxygen/xml/classcore_1_1commandModules_1_1telnetClass_1_1telnet.xml create mode 100644 docs/doxygen/xml/classcore_1_1commonRemote_1_1commonRemoteClass.xml create mode 100644 docs/doxygen/xml/classcore_1_1commonRemote_1_1remoteControllerMapping.xml create mode 100644 docs/doxygen/xml/classcore_1_1configParserBase_1_1configParserBase.xml create mode 100644 docs/doxygen/xml/classcore_1_1configParser_1_1configParser.xml create mode 100644 docs/doxygen/xml/classcore_1_1decodeParams_1_1decodeParams.xml create mode 100644 docs/doxygen/xml/classcore_1_1deviceManager_1_1consoleClass.xml create mode 100644 docs/doxygen/xml/classcore_1_1deviceManager_1_1deviceClass.xml create mode 100644 docs/doxygen/xml/classcore_1_1deviceManager_1_1deviceManager.xml create mode 100644 docs/doxygen/xml/classcore_1_1logModule_1_1logModule.xml create mode 100644 docs/doxygen/xml/classcore_1_1outboundClient_1_1outboundClientClass.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerControl_1_1powerControlClass.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1S20control_1_1OrviboS20.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1S20control_1_1UnknownPacket.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1S20control_1_1powerOrviboS20.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1SLP_1_1powerSLP.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1apcAos_1_1powerApcAos.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1apc_1_1powerAPC.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1hs100_1_1powerHS100.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1kasaControl_1_1powerKasa.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1none_1_1powerNone.xml create mode 100644 docs/doxygen/xml/classcore_1_1powerModules_1_1olimex_1_1powerOlimex.xml create mode 100644 docs/doxygen/xml/classcore_1_1rackController_1_1configDecoderClass.xml create mode 100644 docs/doxygen/xml/classcore_1_1rackController_1_1rack.xml create mode 100644 docs/doxygen/xml/classcore_1_1rackController_1_1rackController.xml create mode 100644 docs/doxygen/xml/classcore_1_1rackController_1_1rackSlot.xml create mode 100644 docs/doxygen/xml/classcore_1_1rcCodes_1_1rcCode.xml create mode 100644 docs/doxygen/xml/classcore_1_1testControl_1_1testController.xml create mode 100644 docs/doxygen/xml/classcore_1_1utilities_1_1utilities.xml create mode 100644 docs/doxygen/xml/classcore_1_1webpageController_1_1webpageController.xml create mode 100644 docs/doxygen/xml/classdownloadTest_1_1downloadTest.xml create mode 100644 docs/doxygen/xml/classdynamicButtonsTest_1_1dynamicButtonsTest.xml create mode 100644 docs/doxygen/xml/classdynamicTablesTest_1_1dynamicTablesTest.xml create mode 100644 docs/doxygen/xml/classelementAttributeTest_1_1elementAttributeTest.xml create mode 100644 docs/doxygen/xml/classframework_1_1exceptionTests_1_1framework__test1.xml create mode 100644 docs/doxygen/xml/classframework_1_1remoteController__test_1_1demoClass.xml create mode 100644 docs/doxygen/xml/classframework_1_1startup_1_1framework__test1.xml create mode 100644 docs/doxygen/xml/classglobalActionTest_1_1globalActionTest.xml create mode 100644 docs/doxygen/xml/classnone_1_1remoteNone.xml create mode 100644 docs/doxygen/xml/classolimex_1_1remoteOlimex.xml create mode 100644 docs/doxygen/xml/classperformActionsTests_1_1performActionsTests.xml create mode 100644 docs/doxygen/xml/classsaveScreenshotTest_1_1saveScreenshotTest.xml create mode 100644 docs/doxygen/xml/classselectOptionsTests_1_1selectOptionsTests.xml create mode 100644 docs/doxygen/xml/classseleniumDriver_1_1seleniumDriver.xml create mode 100644 docs/doxygen/xml/classsequenceTest_1_1sequenceTest.xml create mode 100644 docs/doxygen/xml/classskyProc_1_1remoteSkyProc.xml create mode 100644 docs/doxygen/xml/classtabsTest_1_1tabsTest.xml create mode 100644 docs/doxygen/xml/combine.xslt create mode 100644 docs/doxygen/xml/commonRemote_8py.xml create mode 100644 docs/doxygen/xml/compound.xsd create mode 100644 docs/doxygen/xml/configParserBase_8py.xml create mode 100644 docs/doxygen/xml/configParser_8py.xml create mode 100644 docs/doxygen/xml/consoleInterface_8py.xml create mode 100644 docs/doxygen/xml/decodeParams_8py.xml create mode 100644 docs/doxygen/xml/deviceManager_8py.xml create mode 100644 docs/doxygen/xml/dir_4f83fc4e7000500481bc2234a29e5a13.xml create mode 100644 docs/doxygen/xml/dir_62afcf8aa2ca4125a5b338a899a08dc3.xml create mode 100644 docs/doxygen/xml/dir_644e041c3a6521da7b27eba0e4eb2b95.xml create mode 100644 docs/doxygen/xml/dir_7a725b7f06931a19d20816064cbe79d7.xml create mode 100644 docs/doxygen/xml/dir_7c3866b21eca5596ae21bf63a2e2d995.xml create mode 100644 docs/doxygen/xml/dir_8a371890c7df54832bedf6136b86116e.xml create mode 100644 docs/doxygen/xml/dir_8cdaaede5e395ce5a2b7dcd448eefcc0.xml create mode 100644 docs/doxygen/xml/dir_8f7813a2e1199496bc4aeee3a1228541.xml create mode 100644 docs/doxygen/xml/dir_e36ba64977d65a0761a291213aecd3cd.xml create mode 100644 docs/doxygen/xml/dir_ed446ba2d365ada0ebb676416d76edde.xml create mode 100644 docs/doxygen/xml/downloadTest_8py.xml create mode 100644 docs/doxygen/xml/dynamicButtonsTest_8py.xml create mode 100644 docs/doxygen/xml/dynamicTablesTest_8py.xml create mode 100644 docs/doxygen/xml/elementAttributeTest_8py.xml create mode 100644 docs/doxygen/xml/exceptionTests_8py.xml create mode 100644 docs/doxygen/xml/framework_2core_2____init_____8py.xml create mode 100644 docs/doxygen/xml/framework_2core_2commandModules_2____init_____8py.xml create mode 100644 docs/doxygen/xml/framework_2core_2powerModules_2____init_____8py.xml create mode 100644 docs/doxygen/xml/globalActionTest_8py.xml create mode 100644 docs/doxygen/xml/hs100_8py.xml create mode 100644 docs/doxygen/xml/index.xml create mode 100644 docs/doxygen/xml/index.xsd create mode 100644 docs/doxygen/xml/installation_2requirements_8txt.xml create mode 100644 docs/doxygen/xml/kasaControl_8py.xml create mode 100644 docs/doxygen/xml/logModule_8py.xml create mode 100644 docs/doxygen/xml/logging__tests_8py.xml create mode 100644 docs/doxygen/xml/md_CONTRIBUTING.xml create mode 100644 docs/doxygen/xml/md_README.xml create mode 100644 docs/doxygen/xml/mockUploadFile_8txt.xml create mode 100644 docs/doxygen/xml/namespaceaccessElementsTests.xml create mode 100644 docs/doxygen/xml/namespacealertTest.xml create mode 100644 docs/doxygen/xml/namespacearduino.xml create mode 100644 docs/doxygen/xml/namespacecore.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1capture.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1commandModules.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1commandModules_1_1consoleInterface.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1commandModules_1_1serialClass.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1commandModules_1_1sshConsole.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1commandModules_1_1telnetClass.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1commonRemote.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1configParser.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1configParserBase.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1decodeParams.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1deviceManager.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1logModule.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1outboundClient.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerControl.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1S20control.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1SLP.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1apc.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1apcAos.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1hs100.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1kasaControl.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1none.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1powerModules_1_1olimex.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1rackController.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1rcCodes.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1testControl.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1utilities.xml create mode 100644 docs/doxygen/xml/namespacecore_1_1webpageController.xml create mode 100644 docs/doxygen/xml/namespacedownloadTest.xml create mode 100644 docs/doxygen/xml/namespacedynamicButtonsTest.xml create mode 100644 docs/doxygen/xml/namespacedynamicTablesTest.xml create mode 100644 docs/doxygen/xml/namespaceelementAttributeTest.xml create mode 100644 docs/doxygen/xml/namespaceframework.xml create mode 100644 docs/doxygen/xml/namespaceframework_1_1exceptionTests.xml create mode 100644 docs/doxygen/xml/namespaceframework_1_1logging__tests.xml create mode 100644 docs/doxygen/xml/namespaceframework_1_1powerSwitch__tests.xml create mode 100644 docs/doxygen/xml/namespaceframework_1_1remoteController__test.xml create mode 100644 docs/doxygen/xml/namespaceframework_1_1startup.xml create mode 100644 docs/doxygen/xml/namespaceglobalActionTest.xml create mode 100644 docs/doxygen/xml/namespacenone.xml create mode 100644 docs/doxygen/xml/namespaceolimex.xml create mode 100644 docs/doxygen/xml/namespaceperformActionsTests.xml create mode 100644 docs/doxygen/xml/namespacesaveScreenshotTest.xml create mode 100644 docs/doxygen/xml/namespaceselectOptionsTests.xml create mode 100644 docs/doxygen/xml/namespaceseleniumDriver.xml create mode 100644 docs/doxygen/xml/namespacesequenceTest.xml create mode 100644 docs/doxygen/xml/namespaceskyProc.xml create mode 100644 docs/doxygen/xml/namespacetabsTest.xml create mode 100644 docs/doxygen/xml/namespacewebpageControlTests.xml create mode 100644 docs/doxygen/xml/outboundClient_8py.xml create mode 100644 docs/doxygen/xml/performActionsTests_8py.xml create mode 100644 docs/doxygen/xml/powerControl_8py.xml create mode 100644 docs/doxygen/xml/powerModules_2none_8py.xml create mode 100644 docs/doxygen/xml/powerModules_2olimex_8py.xml create mode 100644 docs/doxygen/xml/powerSwitch__tests_8py.xml create mode 100644 docs/doxygen/xml/rackController_8py.xml create mode 100644 docs/doxygen/xml/rcCodes_8py.xml create mode 100644 docs/doxygen/xml/remoteControllerModules_2none_8py.xml create mode 100644 docs/doxygen/xml/remoteControllerModules_2olimex_8py.xml create mode 100644 docs/doxygen/xml/remoteController__test_8py.xml create mode 100644 docs/doxygen/xml/requirements_8txt.xml create mode 100644 docs/doxygen/xml/saveScreenshotTest_8py.xml create mode 100644 docs/doxygen/xml/selectOptionsTests_8py.xml create mode 100644 docs/doxygen/xml/seleniumDriver_8py.xml create mode 100644 docs/doxygen/xml/sequenceTest_8py.xml create mode 100644 docs/doxygen/xml/serialClass_8py.xml create mode 100644 docs/doxygen/xml/skyProc_8py.xml create mode 100644 docs/doxygen/xml/sshConsole_8py.xml create mode 100644 docs/doxygen/xml/startup_8py.xml create mode 100644 docs/doxygen/xml/tabsTest_8py.xml create mode 100644 docs/doxygen/xml/telnetClass_8py.xml create mode 100644 docs/doxygen/xml/testControl_8py.xml create mode 100644 docs/doxygen/xml/unitTests_2framework_2____init_____8py.xml create mode 100644 docs/doxygen/xml/utilities_8py.xml create mode 100644 docs/doxygen/xml/webpageControlTests_8py.xml create mode 100644 docs/doxygen/xml/webpageController_8py.xml create mode 100644 docs/sphinx/build/html/.buildinfo create mode 100644 docs/sphinx/build/html/.doctrees/commandModules.doctree create mode 100644 docs/sphinx/build/html/.doctrees/core.commandModules.doctree create mode 100644 docs/sphinx/build/html/.doctrees/core.doctree create mode 100644 docs/sphinx/build/html/.doctrees/core.powerModules.doctree create mode 100644 docs/sphinx/build/html/.doctrees/environment.pickle create mode 100644 docs/sphinx/build/html/.doctrees/index.doctree create mode 100644 docs/sphinx/build/html/.doctrees/modules.doctree create mode 100644 docs/sphinx/build/html/_sources/commandModules.rst.txt create mode 100644 docs/sphinx/build/html/_sources/core.commandModules.rst.txt create mode 100644 docs/sphinx/build/html/_sources/core.powerModules.rst.txt create mode 100644 docs/sphinx/build/html/_sources/core.rst.txt create mode 100644 docs/sphinx/build/html/_sources/index.rst.txt create mode 100644 docs/sphinx/build/html/_sources/modules.rst.txt create mode 100644 docs/sphinx/build/html/_static/alabaster.css create mode 100644 docs/sphinx/build/html/_static/basic.css create mode 100644 docs/sphinx/build/html/_static/custom.css create mode 100644 docs/sphinx/build/html/_static/doctools.js create mode 100644 docs/sphinx/build/html/_static/documentation_options.js create mode 100644 docs/sphinx/build/html/_static/file.png create mode 100644 docs/sphinx/build/html/_static/language_data.js create mode 100644 docs/sphinx/build/html/_static/minus.png create mode 100644 docs/sphinx/build/html/_static/plus.png create mode 100644 docs/sphinx/build/html/_static/pygments.css create mode 100644 docs/sphinx/build/html/_static/searchtools.js create mode 100644 docs/sphinx/build/html/_static/sphinx_highlight.js create mode 100644 docs/sphinx/build/html/commandModules.html create mode 120000 docs/sphinx/build/html/core.commandModules.html create mode 100644 docs/sphinx/build/html/core.html create mode 100644 docs/sphinx/build/html/core.powerModules.html create mode 100644 docs/sphinx/build/html/genindex.html create mode 100644 docs/sphinx/build/html/index.html create mode 100644 docs/sphinx/build/html/modules.html create mode 100644 docs/sphinx/build/html/objects.inv create mode 100644 docs/sphinx/build/html/py-modindex.html create mode 100644 docs/sphinx/build/html/search.html create mode 100644 docs/sphinx/build/html/searchindex.js create mode 100644 docs/sphinx/build/markdown/doctrees/commandModules.doctree create mode 100644 docs/sphinx/build/markdown/doctrees/core.commandModules.doctree create mode 100644 docs/sphinx/build/markdown/doctrees/core.doctree create mode 100644 docs/sphinx/build/markdown/doctrees/core.powerModules.doctree create mode 100644 docs/sphinx/build/markdown/doctrees/environment.pickle create mode 100644 docs/sphinx/build/markdown/doctrees/index.doctree create mode 100644 docs/sphinx/build/markdown/doctrees/modules.doctree create mode 100644 docs/sphinx/build/markdown/markdown/commandModules.md create mode 120000 docs/sphinx/build/markdown/markdown/core.commandModules.md create mode 100644 docs/sphinx/build/markdown/markdown/core.md create mode 100644 docs/sphinx/build/markdown/markdown/index.md create mode 100644 docs/sphinx/build/markdown/markdown/modules.md diff --git a/docs/breathe/build/html/.buildinfo b/docs/breathe/build/html/.buildinfo new file mode 100644 index 0000000..33bf61e --- /dev/null +++ b/docs/breathe/build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 7c3f273faa2f32e5919a0465268ecc6b +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/breathe/build/html/.doctrees/commandModules.doctree b/docs/breathe/build/html/.doctrees/commandModules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ac83077b217b72acee0efdb1f77d591b1205d27a GIT binary patch literal 60147 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 literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/.doctrees/core.commandModules.doctree b/docs/breathe/build/html/.doctrees/core.commandModules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c295973b3750a01f24239341ecf6103ad99dd46d GIT binary patch literal 4315 zcmb7H-HIed79OXky1V+Px_fj6VP86DBC8kW5fuY^WHhUtrSSQL~bDl@7g=*W!R z_?f9@5!MUA!axvX-(W!yd<4N8!AqZIpJ2bp$jqv&Zj0%Hf{YU<&d(R$i8%4^-hci$ zyjK0(fi4*@WnrkHORG}q-8E>WjEhXs!hhl2 zAgCKI^srvPrD+a$ezf|3aamyBt0Wj z>ccXuy783GLOAP{zxFZO&5|HCyP@7{$ldAoq~# z2G4ZJYbzB*YY6e(D@Y!{wliBU24jS&=p^V^w`IsQOnG*|?yx;}mu;|n?$Z&IIUSkt z*`vRXo__er(-9n*V`7cWNq}ioo*O2MM3IRZAzD2eD@qKbqZsYz5`2bABfZxiU$ znkr7jNnn5DqAJ7N?nTuXK#s2lWU>V0VF$>{^(v4t(yC4`V%Q0`!Ek9sliOPO5X2hz z9$X5aW+!o{8V@ykFQ~l$?_XB~Z?**9s~zwv&lkYctY*|j>^h;g*tH9q#MVNG5Y|A~ z*_|ixkQy2)3Tj@Md6%d!!1GrF@B1b2?sveulzGwhRhYN5;)UQt5NqH&h>+dK4jNo_ zx;gJI$QOY8d^JFRS_0%@2atnEh;WQW--~mro?3*pmLV`p+sh_i?W-hh`hbOtPPfF1V6Ddt04PBai{F2)bOsv1DZ@K`UX+on^ur)VjaNd$dH0orx9 z!-!~yJ$FQB99S7*tZtNgu9wlVoxkVqZnR#OeAtUV;7!T+kXV06D$OC}s$f9SMt zhc7t6MID-BY;UlZVZV3r25E=j=TRsr(59Gzg@WhY_$P;Nxj{+G1fWn9Vp;*V7bIhX z*h6KwSD7)Tet$HASPx_KJ(OxX^6pm9tO9^$VrY)-G1!i6$d4a9`Wx^Zs7bnFK1dek z-)zjIQc2+J8C640&7|^ynjbNf3pnc=GDZnyhWW?a?j8u4Cv9!E2_zavAoX*1sLu;S zW(ng{Ch!M&ZwMK9zo&D8D*LBJQELG8ay5>_M97rX(B4ZKK|E-bW3d6{3PP+tvn5=F zmt6Hcs}F%W*dtS3Ou&KWRJa+=33T}@dOQ#06_UhK49}}G56jUcO-#4~N~HfZrIJk#8EJWEi#pdv3aj^Z$hA!7wh^#)0~$GJ-n8FpR` zfsq-Ee9wMiKUufGyyH~}`zZ%+LJkNkN literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/.doctrees/core.doctree b/docs/breathe/build/html/.doctrees/core.doctree new file mode 100644 index 0000000000000000000000000000000000000000..17015cc0a42b73799eef8fd6ac9247de3fb507aa GIT binary patch literal 7545 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 O&&{_d^ZAgB27dr5p8_NR literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/.doctrees/environment.pickle b/docs/breathe/build/html/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..940ed233b96442867676ff89bc2f9af30575997f GIT binary patch literal 151511 zcmeIb37jNHaWAYr=h*wy>Ow7nq*g!LrgyNWx%a(W>dLneN)2?p7ar z2qYwPX`lds8k^GwZ0z^^?9Vp0pLrN#^UP&zu(2`N*c=AiV1L+tw&BCa`$uGEWo8{c zRn^_A5g+@La;ht{A|oRrBO@ZSq8?oHh81V6IE()ITieY_wSH>Gt)Hm28ubOY-s$<9 zpWdz3$~PIe9_{UZsCR#F%3tL)o4sTHWVuo5v|P7bZT0+Pdn%0ucTZ>b_}=|{?z-vD zyY_V4c4yk@b{Y##r`o9RX`b#>8uen!nd|JqlkGjTE!XK(+�@(Vj|Yp|)p6f^7Hv zwe41kA>WW6a=X!Om0Z9oHR^NK`JTT)j#T|#dq`9SLz`%va9gcv*==K_{+hPi>GDwB zQysV7#xUBwyFr0~Vy8MYG(@1?^LHvT%A4)(!h+K}-LqO(7v@2aO3&Y9v?c&Oe@qgj z=lWyKR>N~kV8c3tY(0OX)M%b=Rp%?H*|~r3{sUJOMEx|8b-Lp^3m7dhsx-ip&C$Az z9e1HwbHJNolhC-k=T8=cdp*bB?4Bysx@DKDJ8p}|>rWDMis01(h&kcZoLQ%hO7y@L z?G89x3IL83#SMZchg6i~A*xo+^RJwl*@ORnP#&xXY3>wP zg-b{v(X8770mg2w&d>0zH63TRhCAbT(ODgMNbR5s$Qf+st^?9o4`fE=( zwJrAnY23(kTAy20|MWbAItx%Ac;#|!^-;z%o zo1h_dJp_&^>#uBL>apOjuVaM-fq04S9Xm#{y;96#-_}ZPDyjeQe?T?!6$j z(ysD}b?ONy6Gg$vPOV*pQmf9LR=3vCtrBFg)oH8FCcACw1&czU$JVt$`Odvv2yeiT zt;W5gBenUedk;fBGE=sj^>W3dwQ0(qP}+;t-%8KHDmKm*3KTA=3F`+ug6?2N;dUjZ zgbWw4xK^BYwTXWTH(R@qtpYP!$5 zaFSby^|$i5%ID~*t@>Wkm_b}8+gCf7ljw!-t>gC6G{AzxHw8v&$i2$5#ci>eqW4<0 zUBNo9n#)BtutBgIF_=vZ8&*@jQ=O}lVKCOMAFnq~LdO`Lw@Yk6RK6~5j`LI9YPp9y z%oc%niEOamZu8bWTDj_$#17J^mU_`tV9{*Q$;)r`SpRkg!Ir6=#CGg|2QuQ7|Iw`Ochkq6$*To0YwleOz1FU%66TTvnM9 z?Kg3IXyle-k9LOu4LhUQZI)ptLc|3FF)1AuQgYb))Xo0Fnek zRc~XMVyz&)R!gk9_)&pK(}g(-F*r^tjqh*gXY~Cd56oZr(f7+fg}G}=3O^@F+^khQ zQiK)-Kv6-KW>NY{R!=OEqJr>HXzXM(^nGPc!Ig@g`oXip?UD@w5kmv92FnT|Av96QWNvgj z%`RD1%J5smhMydsm;f*(U?9Q7fsG$chrVd=-*KFlV8FWRsSv7(`4xs)^H14U9QxG5zIR!pbjLEo{9>0ejrbeiphd-jyd^%<{Sc5BrW zt(m&p*;8*W?2&D6xN?u%z6vhksp*A<+H{F7l?|fQM^t?kqDx5xkyJ_FC)a?1_1>P(|Gubx>?@q|;DEc3K%`QyzpY-8LZ;l$84iE5?(*@&v#<8Lw+ zhZ$-e3U$N;FV@2H>SCelz^P);lLEBV`+RG&xP=H6B$f3lsKPbpi5k*M;%WgQ1Srv3 zccBi#o48V&Q_#z>xW)Z*#1oxHv*w;~Yfv?8Q<6`3Otjc8T10fZ3D#KTSJoR6t!?5# zuA@}~<}z6h{M<%S2hX0pEK*W@f2X)_tS^Br!}VK4Jx3>`Yeo}ee74azj+-zt5J;*u zTCK*(HYNZ+vraz4CYtv~n*4lU;wS6?WBPHWq_%A&aE(MATxXX(Kz%dmCD?(bOr#M95}@wjv{zf;2QRO(@1PH|cWGYm{d05=E%#o8Vmif&>#&8cD7(dM zBHU`YMf|i;)u}GHSRxefjhd5<)^W1jYjx(+|CTD@@ccF81 zMKJ9)(8F4orLdk$cNd)FSk}etpdb>i8VG^PCfnMWF*R2#*~(_}E)N!(Ezkqi`dowJ zHf$>@Wnp0lkLE(}AMucX;ca!7=;Ia)OSsUOE66w+0=~Ca+ay?5)5afHffXr(I~0gIM(K8(Y7JAns|d79)s|WfM7x4mOdvJXMMn|1 zR3V$wAG`ee=?5-;@;y@fZ{Q|%_aqSp)vLR8ggV5^u#M{|s1%qe1e%>M!i+&nSKcyR zgnNcKEQL-woxn%mR4P`>MTCmk*+6%Y6>htg;=!;M;_5b+io(!7?w-bkDKnS-G1$8Z zGthwesxb%Lp|NVXL91zv)`$smt*UhntB+Ik15pWh;~QiMnu3EZg!I;TD%e~o7dd(f z4aX>5Sb}(_2xy#LYBq(b91RySpe@`WcG%mgDskW!QEe(5Hd9L&X5D#=p>Z6(rK;i9-LI7L;P#p`ZN?n&}^4(Cc9IC8Gpq--E5<7CLGKF zfYHzKSqfa25m|;r8X9$4!`ZCipfv~m;vlu$1&Ynu^=Ip6MQ~HCFpB|*b99r1Y8|#* zYaxi<1&s{CwPE3i8CiLDP;cNUb^{P63Mx109;5>=4L9ECD?Af?)1y64Hzv2Ejrk7s zK~W=U6wNAw2SGCtZoON>+Nojj=;3S$cVp9@Zo9Q-wp!m)sdhWnntsF}SO8Z%vn6;& zRp_S*x+91yZS;`#!qyl`D%2AsHK4|3h?Wpl9pt0PH{WC_-9n3>-NZ*2J=hw>$|qL} zb`-f~jIXRKY1LP5rgB>Dg+WI1MI#|yZ&|@x2^`&*Ppp>}Y{+5XvyPy}3FWYwbrA<_ z3%Mw4;*lqWO;X7E8e#GY4YHjYU{u8gmm|c`_wW?`^-c|;(peW4IE9{A*_^GK3V0+Q z9CZf7h3Y96aYDP9+EOvBQf_dbf`e{J!y($GVae4_qlKM1xXeu`Aia9=s0e9NMc5lh zl|P|j2t1yox(OOVV+R4bqVURk*eyp)JVXmtpU|aX5Sy)x_O2*Axhsi{Xi|_8%1+fz z?sFjA3`@SH*70*yb+wMzElj|G3c*r;j%q^tC2s2k_WQ(+YM^zuQ41MK5sVcv5{;;; zB;h1^!iv+>Q55rW1nZ&JJFY_T32~K03i@&wAuy25W(y{lyjMe~3yPj^HWFOK>Lf&s z*~zx{1y(EGHBq~2#2h6Oa&KM+P!#P~HR0un`Lj{AD4(d(UF@WZ3mIrIs@o^#;Wm$< zp07lM4XOeAS`cgTS5$6Om9*A^F(<0-Ni4%0`U&bpe?>U_!f0AMJ?|jg1u5G%a}@#_ z(}(GD-(Hl{vp{g&UF7|Xoj(=o*seN~$SG+4UP?7 zK-pQK?Qj)e3i=^?lQd*7AJj17bZ@ zd2{8>{>l<8g|9;R-F>JQny+LR{1BR#QoMHCHZIm6&rPI>Aw` z;5dLLo{-a(GdLi#YNmv8^$bi{Ws@5ekeEGudWQU` zD!dD6p$2{N5=2%y)D{+UIt@Yx0c5ia6r{FGO<;D(l}p6%!@z`*jvyO$%!R{SJ;By1 zYo35FRx@#|1*Q+-#_cXroto{Wxh(^RqGh)`>u(UTNIqr*+x6%Qf17njcvqN*{#rz< zXf_|Koa=9t2aW>Ycmnk7LOY#|>VKu+c`^Gd;Wn4p&y?juPtBv8(_Z1nuaAzdiH_+lvJ2oKS`Kp9qa@p;`(x_l~agcZBW>>#cWm zb)H;eh%UmLbi`4X)ub;Gm}Vs_f`r)X1&tT|9VN6n zj?HXDCyG$sbf^L%{V<#uoVy^al06Y0doLoekK64TK?Vv8@4?wCYH5Toj`{0bb0y>1 zOVzX3QgdkbAZ#{Mbvttm0P-ge1OgI0XF=Lnty`Nj70=&@2iW~6o}y)&h(14&hSuzgnB5vpJWEEb;wpEJ)^@wYe&0ogwx0$B~)WIkUcvMzZ zUbN_MP`f$c9`;r%&-T~z14VT z&o}a~UHt0}559?iox{H#uD+Rnoy)&gJRp9Z&A&Q}{HyEZpb>?>v2{gfg8X#|^wvNM zK4RsslgkGpAUSBbissj&y_faw=rLk6^ACt~dMM{eS5k0u56xc`rbgJ) zZdVTBXe3THK?-{QQ`nng0_~|)XZHxnxN_#&J#e5p({MbF({|_{*1*-{jXkAW6>5r~ zJ(#jfOc3ht2waZV9CR-~yg%i`MPBcUMSke2ln-^>8uqLX(E&7m?i?{nYkbaZiRvC{ z`{Q!KEcd)4V32nU3ZkvQ0lQ}unsRCR--k?RKa9tkBTQ(-vwuyL@}xL z%X;F_@mkV*@GiYNbvQu-7sK&p>Bd?)kYhe6HXIe}&N}|25tt;+xQbR>jBbn_Oi%^a zYs5l_t8pCh&_5^?2DL+Ny8c+lfiH?vj$RF&d8eqTQgNCJLcqHZg@5OuXO%-Uiw`Jz zF9hhLE4#B^1s8&MHW$1Fy8;JSyR&MMR^)CIf@X!JtQgI!Q5zb~G47ZM>AeWGq_G~r zU&LS@6n}nF{CTPP^K$;v^&ZAwgG{fapEjAiMY_kMS`&rtPeN@g_ z2LAhFn529h70SV1-E`>XfXf7dt}84-$ew?xXgR%9Ls-q&juOIFxks=(W{d&xy!T>w zu~R3#Xxl?uEB3N_{&f*?m}2!(sMePn@9v(zcZrckgpHzu*@jM>^;c79Dp38l`j}$o zL+7K35h=4|!QUDl=G1N_@bdXh{Jc}gF=BDV!3MDZ`A>Z!Z804zT*mad>}gjNo~pVO zhm8*wf+mH_p7u0o8nw#sl#+2pYsUOlRIoMEdE~*c#9RG%3@)|yI&3aQ-6~$ zEDbPw4q{0b;a1v$%`DeqL0BPG5!tbjMzUXM-L;vvBygLjOEdO1Ox(BYN?)_t(lb+rMxL zLG5`jrf4(ly+aD{Fux%&m;Hd%=#Ck4Ad zPj>?w$({k=B=4$NGay)*rTslYuGDy4<5AVoK<} zG1<`8e%H~k0>l{mU@C}310exKDiERC3azZO)1S`;p|Kf%BF z4H5500nEo+TXVD*6zrM#>u|?Ch10sFDurUG0R^vdIRO?bLzBdf@E1Jo34tW&YST$k zOpf6Yje$Ls$Hf{T$W6kRZE=*NeTo{bcbu+-&J-}OrW=7kW2Oz;F7*BYbJ@QU5wx~D zwYxC2gm#ITcLju`D~&QN!>hACI>VjD+K2YAg(SRlIa>pAEX+H2pxz&Ys&VG~l=o+L zjlV0r^a)U=wfdK#N3PPADGoOW;Bp^lw9mEM<&7(g#?A%JcpO zeWbKT3D;~BE@HxH1N5a)T>Zz5$Q>mUYX?SP$Q&JOz@%2|rdXNeJ!@flS9IjTqM5*@ zDeoeB=wcM{_DY1%+GL6$wD3)<{Tf=b z`WXusTRkPnYOF64S$Q8Mz~;*PDXXV!W|V|}fIzTh*(7ANZJCcqmIztmG!9!d_Ys>a$C4;S7KrZyrBRz6J7Tp!&tuEu22d!@@(}z~ zhDV|ziP#+m#l=GNpBSNDe6Yl%wmYu9QMyIaJDn*U<`ZTGymnjYGzuhyDXfzGU@U1q zl3kk9*)0D-1Tt-wo2{M(v{`KO3!BB@QKF7ZYqQ)#$o?G-!J(^f1y|q3)uQ+JT>b-< zsf>|;7^5>r4$FfOwZROMr(`xrRKKZ>l6Ng@qa+wk4#VWUh)Pn>v^RKWjguEzlg@TY zG8-o^=>sfb<;xN=AzTwDZmiOYxXU_Xax#jm|9BF-SOaBTiIcK)MchQ+wp9BYqa+xm zp%O!J@23fcGiRtQi9*CsxfckI+E6(sQ7cGe<^4b+&REfWRR&961rsq^4C)J`rDI7% z7Nf;m!e}AEEZ{sQ&S{8OJrG7I$QKgbGM(Nq;w&?hcUBtRTDc(JIOQrjxr*OTITU<3 zlO0>L=eI0c*_ty++4VW5ptn)l1lTl;K4kSYpkZXQSQtiz93<-3w1&~25VC9-{V83s zVZ>MY45NS;qcef9@LHOHbrmfp3@pffr8GkNpo?$ei0+)H&Tql zMQ1WH@*PXC?J1Pm`1o!gU`g{aLu7<-O`IHAjgN0farJ+3`CGj#F+IIrhxcqI4SBYX z6qps365X&CIwFY9+Y*q#v_WDeF?9FV6AFnY$Qqs>fjLz~@J=4x3pRH`8#{4N@ChY4 z?8kXU`#&HK--&K5T3wc%R{n~5|HE;Y5KIp8Uxce{OH0JKzAylG-T=V-b2wEHC&<#T zjo~M~G$u_Lz3a6kMP+QM}M(4cCA6&~aCt3h!(L z@GZSjq-mK=$HuN_a_-$t;P`aY<7~xRCFa79v2GGa;wH7|+DuR06~1XGa%W4xkYHL| zZx5I2+C5nyz`S0r6a;NDK@(Q%ev(utNWAz6o;zmq4)2(`ZRP-^FNo&%+;c z^W*9p@iza#NnT$IQ_vN=4;F64wm#mGqu}~Ur`jpNLk)YRieXdU3qkw_S+84ZbZJNOhK&#{9~(-p@K z_$pWIK)cGLIo)w1Cr}w|HzoVAQ<1eL?zN5p{ch<@nAmKZ0#hd@g5F$xv@ zbyTkP;IbZ~`1?M=Y8JUFvX@V2x~G9;1-= ztc79an5h?8+XO66;L;$mffz!2D+qa62aPE0Iy72Bhui~r5dpFA3SD}V^?-^ zc>B>`-{Z*I|KASq*_MZh&}#pG^8moSrvvGzqrW73B8&2$^Wf!C#4~ohRSGxz_}79A zaX!A3cIDnjkGBeq8{^p<0x8z}FJq9V@sN1TWGZsL^}rH-Eh9lTvAHu7$T~}EJ`k2z z-wTnpz^ zIy!a%496C{+XyggUg^%=i5s9vYNuvjZfXdxCdc!ZTvvum8SU0+%B&W0<1%FuR>XeP z*8aC3ZbXA-@xL`%l3};!MN2y~_KXnzM$iwOnH&gfXU5i?0=S`G6QQSdW?n}Ez|PF; z>582hz8cJ#8EDL(rx39ngD~HZU24oSB|!WOA~?wZv%!$x9t@eUvJ9CMOIU}b!$Y3( zK1$m#D(8oIO|y+G7VNh`%ZVgK)AIdI*M4U-{G8gA4W3g8MjZR?QlX;KWjvu2AF0#F zTol?iMk*}i5j;exj}$7_W?G8&mL~dD;)TuhrR?Z_T0`gL`Q<2JBhAU?s5R*;)D_Fb zQ2DiB#VxfpBT)!HGGjcVs51bgfMg=0qN!=ZsSR`{E`^H4sHK}*eEN8loWtSM$D)7@ zKJ5Yth8`gK2u;w71e+s?Xf)Y+z9d{Y1&z@pF4Pe-qJUJx9}K@_Y@}Vod&WFDqbX-J z+IXe-N#S{|^S0@BvFASe4ljKq=aBAZN+uS(qJWH@NT$8u;#;;*FqD4$iUPh2aQ(4H z9ryS%a>WY1>el8veWE?1$uRT1sH|$vW{vZ#z{mZvYQ79{9>O(o$&6K@5tmuVdHy9j zaQ~G-;YEL@AfjLDu0_9t+3A-h`gJwHN9`5caJ0?Ah&<`&*M0^Tp~tvVy@>>gwqT0r+ZIXg z7%fSToe7etH7J=Rkrsj^!EK8q-e^fOcP2=p7Gp({smQ!pg(j+21S|NCMTwsrEhQdc zN{FOHTR7JN9d5&$X-MIXk0aOzXjWWrV~gJwuCLFItG}Yr|6toA1e13}C8~6=iNCUF zYc*(i}wC5gx97 z+8j3i6j`DYxXx&*S_w(CYAhOlC_4?aXz&jLJUp4#;g4yYEG2uN%z@S0@Ju{AWf)Tn zpTz1NA*|9#-4}A;_A80Fr4==S@=!%BAFzatpe0S4NN?YPX|2KvQ|UH>@Jfz#l;5=X zM20#}Z{l4_EaJVM@6i?ge7Q(k!q-wB^vO)atP~UbpDeQ<0-W@kaCHCXa5UT810l2{ zTlwJ|=@QfZCygy3g5(_zxdYc5dFb-v<2}m;>y1wU2h-G!rj4=G%_Ox?z&RmSKIJ_J zo#sqew-)_nvmpDVtJ@A>S<=;c^FZ8V5v?!5Dv zs^&A;;<8!6>d@??%Ij=Wk3Bt^z@@LdDx69yMzh~eE zaPupW5`sQC;nZ-J^=5n_j6SnRS%D#{6x$>GfYZ#RVYT&t&}>K_=m;Pf=jHRBgFQ4{ zK@5(gd)EbXc|r)lkKhJoaM~^7=WPPp6?^5$;Qzlf+|o}!BoGJ23+9ZlJ=wd4E8BXV z(y}c#{h!UUonXlHQ`~yfUrdjPwVY+sU!x_b+*9+Sr8oWU6`1$s{YREhAYA1yB%@(; z?<8N9l+spPA2a$=r?I^}WbWxUMsqoYxQ(^P8S&Hag>5w`A!)00+f?q{qp!+7-3K|L z`if|G%XMaOc9QTG!_ZTn#t_7N6A?*m+(eYyL#Q2cC_p${oa}USSjc4lj$cBrNRuDz z|8fFy%5JMpfW}E@Bz9noOxQOswdA2s>>%RA?9i!A$t#g*P1S@Dk-UU9mQ(Q_3xk1= z|LOJaB?Q>?%YM!3DVw7$DXEWs*@P2EzYOXo`jlypetnXV<)dGpqANc7#aCI*L9r_4 zSK9(&jBdR-AQEIoGN@~rHP#Qk-0V)Z+;G;!w5!c)m(fzsh_e_H<BQ;{8LS|K~|ctM7#5sCu7dcLK8y|@1KcAi3`n_P&>MXW>ZMOp(|cx_$uEj6A)u`tIV~W9|l>#VqTgwBwAnUl_vRs zps_H`DEP6b>SBBweY7mSa^IoR3;Hv&H-^s&=_GAdtXJQ*Wc_KD1dd$MAB=YAKe~)o z;DDilru9bdRm9N5yM^eKsO+yo?dX*Kwitnv3jc0&Y&#ZOtdwt&Ag>X{Zwyf=!)q+r z=%e_fTayP4In7SD<#NV9`a*0Q!Ey&lT5u~d>7TNZg!_>Xgf*AutO2B&OR3h4Wj#X# z?@HFt!Mn73AO7ukxZqqJDKc(B#-)P=DtRvf-x&#x%(UY3imBNt{}+Q@JU#Negb z8hy!ZTy+^WU)C49IZa%CHF; zO4%4b$R4T=A7c+y^Z8_X&*IECqofL^Pm-F$Br0bxhs{W1zx7`vi?Vn5LPG>)m%yE^Q+z zLxC}eA*Nn=SE&zeyDGzTmfUUzEi|eF8(x9Qu*~&@;L`?c@O=#FsYs@|>%ZJ5m&A?&u{k(I@K{P15e9y~GHQFPN=^x|6n@A%GjkNFwTK-O1MyCD@&Ogs#|~ zxV+PmpLjXTC z*YSe`084NkV}!-~0Fflob$mN&N9Q`4=e(q#@H=3Cg^P+0eC zhA@4zKW>Te=Jn?68kjDD2z#0?(ox=kp0cS~xk;-XK|$Jqj9HDA+!6UMvny#C>EoYj z6V{#%OhY~VK}}d&{R!ZPjvUy8eF_Nxo3IDzicMI)8q9>v!6dy4WWN?H#%#PhywsSN zO4Rp^V93u5hRj!4hRj*2mPpk1RlMHpt2}5y*0**=sx_7LEu5k+^aLI8kx!^ZYXjtb zql9Nk$@!u=-&D%FTN~wW&27(g+*;l3q|eS5)80})&m{%~i~GRpM`!1|D+<`i`c?oD zhQ4LTS>G;B$oggwqNh^Bg->;vZQ}f>m@x%*@bHJjdEc%OI3?$NGjK-Iw?5(`MJINb zvG2grpG~`7ATx!ROc7{mw2rr%PRYF;uY+E}Z>q+pf1~^(*YCg5a3aGW0US-Pw}+z= zs=1jp*V`j~fF-SM8FIZ5u8CSV)})Q>uIXHFFOA~rKRm=uQ$r+|O7>>f@EY}k}N&rG%UK3W1e%>Dpzi+-w9YjhoX zpTV%|M9lUf0uXrG@PC(MsT9SrF zeTI6Y98NQnoV{(yRA2N8KTg+5S>hL<`XqS+zUTnohL9Vr_G8L$)yRvFFi`7$kHO|E zOkwlZ%JoJE%-lM?geB#fOv6H>&au9k!eNns81LRS3j42|nH<8Y(vJ^Uxb-IDM*{sY zDa7h`aU;Vf;`3Yx6EXIOVl-kgvP|h8lAS-Hat3Cv?XdjWaOYvL$as1l%1!G(;dz)~ z#>ED{Bb(M@Do31!EU)otw4{3Y?YwB|O>5f%;f30N&2ovtpP4js`(-M$$azSyp71WG z+_uuG7%uCx3m~5BlVI*~MfCI=ZyU{l_sa%>oq0<9Ww}@Ko@GUD-e{V~sjSFBj$^Km zcDFp|!kNkU6GIN~2}B~bOB7LNYf(Gw$Op$bIM2Ml-jpwy{9zBe^wma`FNH|Gnidww zNO;5;jxe|;ED`7v9*Ja=+jWR!nk{UBrZSanF;8x0N&dAK9;qb1-!i0^ws8V%x}aBC zJ!Ok1NP6lMJ2v?k?IlD;tbb__+TTXV@+qa;>55M&@l}>1JFI;z$MfmMd>8;MnT`(`4TYc>Uq`xfoqngh$hH**B?5xby|lhbE2=ak@2 z_??pTRrDxM)hOabcMLa$9#bu)Acku#V!kg2F*69_uZw|Z6~y1kfmH@UlvsrYas6e6 zX19rGS6LMNYz|xp7e_IKp^9TZUpEVc&z=5n9-R!K_vn-fH|ObgFIa zU~yJf_U4e45c4*VF(_eY&sy@($IgzXRXaOKmMQv;x3d#lSz`Hp3yoAJMJh9U`5Fp> z{NJ_44e}>#S40y!{E|rM5L(uwUsAd0R1?;zTP_G&vCytGPS*KDF8uO4$Lp~hq2TC` zzeu&78=}(WGed~U*?=41L+bbHe@+o@P;x0aBVd5N zIy^2gwzR{=!{xqq!Zr70eECA=ev(bw=j|i?Qj`#&EX$Mh-gR~ijg}P3Ng=;)D z*)e7tjoQJ&U9GNLsNzdY*jdCEnD8Mcw~mS5?v_fpGuN%vP6u1h(O36$rbEjI)VD33 z+%R08#LY;Vb>XRE@Tq6y<=KfLY|ktYTC{lfaA^@IpW{M19b;MyB%gwuLy}L)B9c$7 zo^u_}&^saankZsd!HgL6^*!6(5x@ug;$l}U9U0NEM;RL1CXHU*TfYsDN!`p|6wL~2ZuczFPGxxv66|^;+TBnS{01n)Vv)&BOWx?Pmigpn)^zxgg-ELDkj_yXW}f$93%TIIZ&*X`i|BA;lkU=HL5z#??VyzK_U!x^S{HeTXX*0?eS7GS{{S0bG z+4@KTHxfpxycqW8pLjUVzj$u$&xd3VkL$e-c>}QM2qbL)Q-?%TW83Y zwAF4#kJ?tVKTQ=9#fW`oj78W61&jTC?6c@`mD}h%w>T|MxjaAv3eTtxQb0av78t*9(XyKBV^etpQkHcPWURYT5^|4 z!UxgoFN${Ozi!zqwTiq(mW*(gg`s=nF%UK>G-YorD^s4o{ zmL}zi$B1Y|&l}?sTJN+a4t?}|bi4G1J19{;W^{oNt=3K#oD)v9=FHX*v#-xJS_@8x zg7%29G;7Xj#Oz*0@CbbkHvoh*W*@3ICCjwbEE zM!fp#1Fs(E#SRvZ7(6U>TP^Iag2zj8b5Q^P!xsJnGfunx?4lpshvP$)s8B|`}x$cvT^CD?OBm}fyhgN71p zl`4Q6dUs&k@4F-bZ2NtWuGseDt6a99Hiq6il21%s!>gF<%)70O0fiJhG8*K(17%Q$3OVAjdup8D{V(|lH2_CctHn2evESSrB(g>bj zV-5ZBXA9nL;Xg3zv@Q5d0&LoXx8TO(&lYrsOP@frJxw2J3%-EqGmtGPNE}h5S+
    h3 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 literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/.doctrees/index.doctree b/docs/breathe/build/html/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..608c3449a958db40bb60f4d23ccf68a51491849c GIT binary patch literal 5158 zcmds5-D_OO6_+jVr=*ovmfZ%&^yVR!oO-p6F*Jxm2x%W$Q59N~k_U4=d++SdNcSsu z=1MC=FFLybAIP* zK5cw?cYDSDGn*HLfQ!Dsm|^Ig+P*{O=N)Z@8X0f#4K z;HNywpJB2`{8|QTuN2Vo;&5TTXqc~(GcDrCP1#sG)doz`IWN;^qW9>ZG zv8PkcpF6%xxu@j`-^)eoSuQ%}##25eP5mF<@bjFkZ<+~%sdX;a)rgrc(>j&V9H2tb zSe3p43{1-lm{K6(yAiRl_-gxEG9QeXcbxLE<>^erU|%JSAk|J%u6TOF^USm~o6w3} zbj2O9YC3L(mK>vIg~A^XMI7>>9vwe=Jbe1YpFbVqKzhJ39fuZH!y4d*5TS-6f|lUJ zLc~x;KA-NTO6TTAAS0e1G_ny4+EQfUIGUkfG(?k(y^G0)mO9|IDYNqn9spvTz*XCF zM=hfKjRG%y^Wf$DUw``h7giMd--R097Wc)f*f|sr4zm#x--6=BYk=Qf{O;lR9sJ&S zmS^HkF$DX=f?e#22L~;CsWy2*oJD@^=*6wX3RGUe`^CA7HWGJC!|D%q2Q*SySbJSY zUXb~mT-h4A9kQv<6D{(C>p%z`lN4(@@595ePVGbYlOP`D=cXy7?<1m|n~hS+jL?p< zaKuyY=LajMYb~JSC^!Re7lEmE02)@ih!02|KM*@s4IQZEy=C2*&GP1h)08C%Pjj}c z&UY8p3H1X79e4zrV2P-y%(TMT&*Jpm1TO@_KTRf@=X6r|hFFmdt7Ws~5 zqnb8eHZ@nwXIEDY0sNENk^0soYojbcly?IOhpzJ0{D`m_&A3wYur_Tr_YsfwpHFyX z;rzU?-K4sZ_?@-oidj!MZWc}4DfnvwN`{VU%E$(h+SbL|zG+v|^Z9-McJY08%?-PW zSykGHf8p`(q{=m?<$ElYxv8j zNgzF`;Z-z!%F-zRm0gG2JK+eE^NWyY{jmh-Ega(ymmPzcD>M`HZ(qfngXuSO3zN@% zSy`mA7<}#J7W>Lt>`xWHD8_$X8pA4;gql_Udx=%V->+nl|6F#tiwyGh)eR#4Svz^% z4BJrJzc1UoZU$oh*Q=N>HN!^XIEu5>6U%OMbp6`O%Ay_Sq?sw^q(1Vx6*RZSQI|wq znDutAW{#s4q+E8-3oLT9jdkD1DAfh(Cb=!{9Nl=u0qRyE{*^26zi60wW~kzQ6~s-m z2#mS8_Li*=eqD208%7uM$`+i80{8#{d{74Pc@C*&>*4*+0n{kPVAa(ow7&; zHfgy@8c$FV7WHLA$C?F2<}Z0{A&`;gu9=>frBt1|rL04s=s&^)gSBECq?za#!)`gu(g33k zR1+@MxHOCH8dRB_*1%(Hk z8Y<CAuu^h!Z)s*p#E~SY>=kn7XQ)=czBsY8*xaN$0AWf%MS*QQHUbt+ zGB)ARxQ|?T9p$IFg$6H9eHUdbQa-k!+V;>i(G-qxO=v{=KqzY5X)c7qb`d9>{cc`|tO(G%#imyW$9@kE)6zh8-mvoeD0F;Dj-*JHZ}+B-BJvTSi8Qub>u8cQ_WJnv& z22`8U(*fu$A{O7f;$tyAdKZp<^nJ>NrbBa7s@iNIK0ddT=b3nodf=&eX!*n^nc1kD z(aPOGHCtp9>{U?6TPwce0(A;O%u-?Ya1;kKWLV<%5^=`eS&-PNcD0MP7UbJ!EQ<8E zmt~bR=x-5AJap;+4C-<(Mpt8>Baly8@0av1ptaBQpTRHCh{D70*rI@hV#8TTSs<^? b$kv!^WseQ;Oz6d?>r>P#0|b>_*=X;7TsE*J literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/.doctrees/modules.doctree b/docs/breathe/build/html/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a0a9520d224e5be170c615f97be35741859e1b81 GIT binary patch literal 2760 zcmZ8jTWcIQ6n1Ry)qAm>q!bdjgpwwqu{VT1ls*+opWOPP4S_rap_$RH#A>9eq_Niz zftHd|gWjV4oc_0dnwcH%+OT+ZbabxYccec$|Nb}Jss8-b7F?*+8O<`KGiHPDXF4r& zrd;?GUi=w8gy()>=#|x_Nm=ka&`7zEnPDot4}KEWosjmdIp4D^bwaE5IPdT-@4XMt z`M`IaaFT6o`N7=KoLy`)}API^W#-80tv61%+Q1_>muwHc-CjyG?u-eqRd3 z!bO=-KcvnXk(3U3#XR;zW@F5~R8ngp#CJ!*ef8DP%HnpB&~$0oJnodf=jbAC1wQ4E z_=rE|d;G-zJmWfNGnXu1y`H`K>9;pCIC7`7bULT81heAWajl4U7e78)He?QfEp-Yu*l&P*D-$5igb%t%0u-W?(8S*En;8*xP#qSw@ zFYtThdyOAtj^Y_n<%>$C+OY6!WoUG&s+7^+JwHiH6Y)%1^p4h&8pXbEnR7xd zK+L0-X>+5MV*rTnzNNB6%hpuo(+fXXFvSdY+5{{z8bL|(0*iy%4T0??mcwRQ8i~~y zl_nAOaTo47u}#;(AJ4URN;|f(d4A82BhArgvYKm?2S_Fs&?*Sf8>feb$w#$>Nmfb7 zm2jM_xd)HUfrgA1eq>mojU$p>G8Aps4>^_Xvg41~N}yJby3($dI=+*!q+Gz=}|TOagRhHgZc{ z@Kas7Z7ZG1O7JIlcJ7$qfB8vm^frL?(Z|~xcTW1lm;m5qIqD;kQ1D|()uN;ehH__E z?}CW_zF}Z=M!;Ht18ySGFMK!EYK|OH4v_(#VEHQWuAjs~MQ%lYR{&Attjr72q7GH9 z1Ok9FippqkT1hI*$KKzH3d_n&lT{w^bjVhPwv23^tRRv)aw)8+@i`@#ur!e|ktWLC znhjvq2+3IBzoHh5jvFcy`_ys4HnK+=(-e@gDzYj2K+9mLL6e$JRs0C0cMJ`Nzp<^p5!`xi$aw+B}#_BVL!xoC)UUl@D-!#$7JqY~W}D3T1I3_x%X~ znUj{AZ34s=5g|AJ&|WJ?SA>fNm-qp^`%*{Tk8DoCvfoRP+M-bRt9893Qm3@O1pGgGq6WbqeN$ckT#IQDR7u`r9yd)s+MPdET-|@HB z52C .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/docs/breathe/build/html/_static/basic.css b/docs/breathe/build/html/_static/basic.css new file mode 100644 index 0000000..cfc60b8 --- /dev/null +++ b/docs/breathe/build/html/_static/basic.css @@ -0,0 +1,921 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/breathe/build/html/_static/custom.css b/docs/breathe/build/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/docs/breathe/build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/docs/breathe/build/html/_static/doctools.js b/docs/breathe/build/html/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/docs/breathe/build/html/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/docs/breathe/build/html/_static/documentation_options.js b/docs/breathe/build/html/_static/documentation_options.js new file mode 100644 index 0000000..b57ae3b --- /dev/null +++ b/docs/breathe/build/html/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/docs/breathe/build/html/_static/file.png b/docs/breathe/build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/_static/language_data.js b/docs/breathe/build/html/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/docs/breathe/build/html/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/docs/breathe/build/html/_static/minus.png b/docs/breathe/build/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/_static/plus.png b/docs/breathe/build/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/docs/breathe/build/html/_static/pygments.css b/docs/breathe/build/html/_static/pygments.css new file mode 100644 index 0000000..57c7df3 --- /dev/null +++ b/docs/breathe/build/html/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000 } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/breathe/build/html/_static/searchtools.js b/docs/breathe/build/html/_static/searchtools.js new file mode 100644 index 0000000..97d56a7 --- /dev/null +++ b/docs/breathe/build/html/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/docs/breathe/build/html/_static/sphinx_highlight.js b/docs/breathe/build/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..aae669d --- /dev/null +++ b/docs/breathe/build/html/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/docs/breathe/build/html/commandModules.html b/docs/breathe/build/html/commandModules.html new file mode 100644 index 0000000..e665bf6 --- /dev/null +++ b/docs/breathe/build/html/commandModules.html @@ -0,0 +1,338 @@ + + + + + + + + commandModules package — python_raft documentation + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + +
    +

    commandModules package

    +
    +

    Submodules

    +
    +
    +

    commandModules.consoleInterface module

    +
    +
    +class commandModules.consoleInterface.consoleInterface
    +

    Bases: object

    +
    +
    +abstract close()
    +

    Close the console session.

    +
    + +
    +
    +abstract open()
    +

    Abstract method. Define how to open the console session.

    +
    + +
    +
    +abstract read_all()
    +

    Abstract method. Define how to read all information displayed in the console. +Should return the data read.

    +
    + +
    +
    +abstract read_until(value)
    +
    +
    Abstract method. Define how to read all the information displayed in the console,

    upto the point a defined string appears. +Should return the data read.

    +
    +
    Args:

    value (str): Message to wait for in the console.

    +
    +
    +
    + +
    +
    +abstract write(message)
    +

    Abstract method. Define how to write to the console.

    +
    +
    Args:

    message (str): Message to write into the console.

    +
    +
    +
    + +
    + +
    +
    +

    commandModules.serialClass module

    +
    +
    +

    commandModules.sshConsole module

    +
    +
    +class commandModules.sshConsole.sshConsole(address, username, password, key=None, known_hosts=None)
    +

    Bases: consoleInterface

    +

    sshConsole is a consoleInterface class to interface with SSH console sessions

    +
    +
    Args:

    address (str): IP address of the host to connect to. +username (str): Username for logging into the host. +password (str): Password for logging into the host. +key (str, optional): Filepath of ssh key to use. +known_hosts (str, optional): Filepath of known_hosts file to use.

    +
    +
    +
    +
    +close()
    +

    Close the SSH session

    +
    + +
    +
    +open()
    +

    Open the SSH session.

    +
    + +
    +
    +read_all()
    +

    Capture all lines that are displayed in the console.

    +
    +
    Returns:

    List: List of strings, with each being a line displayed in the console.

    +
    +
    +
    + +
    +
    +read_until(value)
    +

    Read the console until a message appears.

    +
    +
    Args:

    value (str): The message to wait for in the console.

    +
    +
    Returns:

    List: List of string, with each being a line displayed in the console up to the value entered.

    +
    +
    +
    + +
    +
    +write(message)
    +

    Write a message into the console.

    +
    +
    Args:

    message (str): String to write into the console.

    +
    +
    +
    + +
    + +
    +
    +

    commandModules.telnetClass module

    +
    +
    +class commandModules.telnetClass.telnet(log, workspacePath, host, username, password, port=23)
    +

    Bases: consoleInterface

    +

    telnet is a consoleInterface class to interface with telnet console sessions.

    +
    +
    Args:

    log (logModule): Log module to be used. +workspacePath (str): Path of the tests worksapce to create the sesson.log file. +host (str): IP address of the host to open a session with. +username (str): Username to login to the session with. +password (str): Password to login to the session with. +port (int, optional): Listening telnet port on host. Defaults to 23.

    +
    +
    +
    +
    +close()
    +

    Close the telnet session

    +
    + +
    +
    +connect(username_prompt='login: ', password_prompt='Password: ')
    +

    Open the telnet session

    +
    +
    Args:

    username_prompt (str, optional): Expected prompt shown for entering the username. +password_prompt (str, optional): Expected prompt shown for entering the password.

    +
    +
    Returns:

    bool: True if session opened successfully.

    +
    +
    +
    + +
    +
    +disconnect()
    +

    Close the telnet session

    +
    +
    Returns:

    bool: True

    +
    +
    +
    + +
    +
    +open()
    +

    Open the telnet session.

    +
    + +
    +
    +read_all()
    +

    Read all readily available information displayed in the console.

    +
    +
    Returns:

    str: Information currently displayed in the console.

    +
    +
    +
    + +
    +
    +read_eager()
    +

    Read all readily available information displayed in the console.

    +
    +
    Returns:

    str: Information currently displayed in the console.

    +
    +
    +
    + +
    +
    +read_some()
    +

    Read information displayed in the console until EOF hit.

    +
    +
    Returns:

    str: Information currently displayed in the console.

    +
    +
    +
    + +
    +
    +read_until(value)
    +

    Read the console until a message appears.

    +
    +
    Args:

    value (str): The message to wait for in the console.

    +
    +
    Returns:

    str: Information displayed in the console up to the value entered.

    +
    +
    +
    + +
    +
    +read_very_eager()
    +

    Read all readily available information displayed in the console, without blocking I/O.

    +
    +
    Returns:

    str: Information currently displayed in the console.

    +
    +
    +
    + +
    +
    +write(message)
    +

    Write a message into the session console.

    +
    +
    Args:

    message (str): Message to write into the console.

    +
    +
    Returns:

    bool: True when the message is successfully written to the console.

    +
    +
    +
    + +
    + +
    +
    +

    Module contents

    +
    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/core.commandModules.html b/docs/breathe/build/html/core.commandModules.html new file mode 120000 index 0000000..55309cb --- /dev/null +++ b/docs/breathe/build/html/core.commandModules.html @@ -0,0 +1 @@ +commandModules.html \ No newline at end of file diff --git a/docs/breathe/build/html/core.html b/docs/breathe/build/html/core.html new file mode 100644 index 0000000..a44d151 --- /dev/null +++ b/docs/breathe/build/html/core.html @@ -0,0 +1,176 @@ + + + + + + + + core package — python_raft documentation + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + +
    +

    core package

    +
    +

    Subpackages

    + +
    +
    +

    Submodules

    +
    +
    +

    core.capture module

    +
    +
    +

    core.commonRemote module

    +
    +
    +

    core.configParser module

    +
    +
    +

    core.configParserBase module

    +
    +
    +

    core.decodeParams module

    +
    +
    +

    core.deviceManager module

    +
    +
    +

    core.logModule module

    +
    +
    +

    core.outboundClient module

    +
    +
    +

    core.powerControl module

    +
    +
    +

    core.rackController module

    +
    +
    +

    core.rcCodes module

    +
    +
    +

    core.testControl module

    +
    +
    +

    core.utilities module

    +
    +
    +

    core.webpageController module

    +
    +
    +

    Module contents

    +
    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/core.powerModules.html b/docs/breathe/build/html/core.powerModules.html new file mode 100644 index 0000000..71a0f1e --- /dev/null +++ b/docs/breathe/build/html/core.powerModules.html @@ -0,0 +1,129 @@ + + + + + + + + core.powerModules package — python_raft documentation + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + +
    +

    core.powerModules package

    +
    +

    Submodules

    +
    +
    +

    core.powerModules.S20control module

    +
    +
    +

    core.powerModules.SLP module

    +
    +
    +

    core.powerModules.apc module

    +
    +
    +

    core.powerModules.apcAos module

    +
    +
    +

    core.powerModules.hs100 module

    +
    +
    +

    core.powerModules.kasaControl module

    +
    +
    +

    core.powerModules.none module

    +
    +
    +

    core.powerModules.olimex module

    +
    +
    +

    Module contents

    +
    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/genindex.html b/docs/breathe/build/html/genindex.html new file mode 100644 index 0000000..66b715f --- /dev/null +++ b/docs/breathe/build/html/genindex.html @@ -0,0 +1,255 @@ + + + + + + + Index — python_raft documentation + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + + +

    Index

    + +
    + C + | D + | M + | O + | R + | S + | T + | W + +
    +

    C

    + + + +
    + +

    D

    + + +
    + +

    M

    + + +
    + +

    O

    + + +
    + +

    R

    + + + +
    + +

    S

    + + +
    + +

    T

    + + +
    + +

    W

    + + +
    + + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/index.html b/docs/breathe/build/html/index.html new file mode 100644 index 0000000..f28a082 --- /dev/null +++ b/docs/breathe/build/html/index.html @@ -0,0 +1,110 @@ + + + + + + + + Welcome to python_raft’s documentation! — python_raft documentation + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + +
    +

    Welcome to python_raft’s documentation!

    +
    +
    +

    modules

    +
    +
    +

    Indices and tables

    + +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/modules.html b/docs/breathe/build/html/modules.html new file mode 100644 index 0000000..e94ae97 --- /dev/null +++ b/docs/breathe/build/html/modules.html @@ -0,0 +1,147 @@ + + + + + + + + framework — python_raft documentation + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/objects.inv b/docs/breathe/build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..8acd6605d0330628a50702d9250fe73c4f496e2c GIT binary patch literal 512 zcmV+b0{{IZAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGk#d30!R zZeMa?W^@W8AXa5^b7^mGIv@%oAXI2&AaZ4GVQFq;WpW^IW*~HEX>%ZEX>4U6X>%ZB zZ*6dLWpi_7WFU2OX>MmAdTeQ8E(&_s$CPcD=QO2C8Q3F$h8j= zVf!N6l(O|T`g(nmIx!Ir7^)hxMLFMhcJe0-rKF0#BHs!yq}@+se@UJR8RV-- zJNY}^*rZ2pOg;734KX_+C*D7!6?M|%6z5VS6xVKv%@r{@DseM89u|ZGJMCX%dOiZ> zaGem2b0j?(F$ + + + + + + Python Module Index — python_raft documentation + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + + +

    Python Module Index

    + +
    + c +
    + + + + + + + + + + + + + + + + +
     
    + c
    + commandModules +
        + commandModules.consoleInterface +
        + commandModules.sshConsole +
        + commandModules.telnetClass +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/search.html b/docs/breathe/build/html/search.html new file mode 100644 index 0000000..ed36abf --- /dev/null +++ b/docs/breathe/build/html/search.html @@ -0,0 +1,117 @@ + + + + + + + Search — python_raft documentation + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + +

    Search

    + + + + +

    + Searching for multiple words only shows matches that contain + all words. +

    + + +
    + + + +
    + + + +
    + +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/docs/breathe/build/html/searchindex.js b/docs/breathe/build/html/searchindex.js new file mode 100644 index 0000000..1e11602 --- /dev/null +++ b/docs/breathe/build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["commandModules", "core", "core.commandModules", "core.powerModules", "index", "modules"], "filenames": ["commandModules.rst", "core.rst", "core.commandModules.rst", "core.powerModules.rst", "index.rst", "modules.rst"], "titles": ["commandModules package", "core package", "core.commandModules package", "core.powerModules package", "Welcome to python_raft\u2019s documentation!", "framework"], "terms": {"class": 0, "base": 0, "object": 0, "abstract": 0, "close": 0, "consol": 0, "session": 0, "open": 0, "method": 0, "defin": 0, "how": 0, "read_al": 0, "read": 0, "all": 0, "inform": 0, "displai": 0, "should": 0, "return": 0, "data": 0, "read_until": 0, "valu": 0, "upto": 0, "point": 0, "string": 0, "appear": 0, "arg": 0, "str": 0, "messag": 0, "wait": 0, "write": 0, "address": 0, "usernam": 0, "password": 0, "kei": 0, "none": [0, 1, 5], "known_host": 0, "i": 0, "interfac": 0, "ssh": 0, "ip": 0, "host": 0, "connect": 0, "log": 0, "option": 0, "filepath": 0, "us": 0, "file": 0, "captur": [0, 5], "line": 0, "ar": 0, "list": 0, "each": 0, "being": 0, "until": 0, "The": 0, "up": 0, "enter": 0, "telnet": 0, "workspacepath": 0, "port": 0, "23": 0, "logmodul": [0, 5], "path": 0, "test": 0, "worksapc": 0, "creat": 0, "sesson": 0, "login": 0, "int": 0, "listen": 0, "default": 0, "username_prompt": 0, "password_prompt": 0, "expect": 0, "prompt": 0, "shown": 0, "bool": 0, "true": 0, "successfulli": 0, "disconnect": 0, "readili": 0, "avail": 0, "current": 0, "read_eag": 0, "read_som": 0, "eof": 0, "hit": 0, "read_very_eag": 0, "without": 0, "block": 0, "o": 0, "when": 0, "written": 0, "commandmodul": [1, 5], "consoleinterfac": [1, 5], "serialclass": [1, 5], "sshconsol": [1, 5], "telnetclass": [1, 5], "powermodul": [1, 5], "s20control": [1, 5], "slp": [1, 5], "apc": [1, 5], "apcao": [1, 5], "hs100": [1, 5], "kasacontrol": [1, 5], "olimex": [1, 5], "modul": [4, 5], "index": 4, "search": 4, "page": 4, "core": 5, "packag": 5, "subpackag": 5, "submodul": 5, "content": 5, "commonremot": 5, "configpars": 5, "configparserbas": 5, "decodeparam": 5, "devicemanag": 5, "outboundcli": 5, "powercontrol": 5, "rackcontrol": 5, "rccode": 5, "testcontrol": 5, "util": 5, "webpagecontrol": 5}, "objects": {"": [[0, 0, 0, "-", "commandModules"]], "commandModules": [[0, 0, 0, "-", "consoleInterface"], [0, 0, 0, "-", "sshConsole"], [0, 0, 0, "-", "telnetClass"]], "commandModules.consoleInterface": [[0, 1, 1, "", "consoleInterface"]], "commandModules.consoleInterface.consoleInterface": [[0, 2, 1, "", "close"], [0, 2, 1, "", "open"], [0, 2, 1, "", "read_all"], [0, 2, 1, "", "read_until"], [0, 2, 1, "", "write"]], "commandModules.sshConsole": [[0, 1, 1, "", "sshConsole"]], "commandModules.sshConsole.sshConsole": [[0, 2, 1, "", "close"], [0, 2, 1, "", "open"], [0, 2, 1, "", "read_all"], [0, 2, 1, "", "read_until"], [0, 2, 1, "", "write"]], "commandModules.telnetClass": [[0, 1, 1, "", "telnet"]], "commandModules.telnetClass.telnet": [[0, 2, 1, "", "close"], [0, 2, 1, "", "connect"], [0, 2, 1, "", "disconnect"], [0, 2, 1, "", "open"], [0, 2, 1, "", "read_all"], [0, 2, 1, "", "read_eager"], [0, 2, 1, "", "read_some"], [0, 2, 1, "", "read_until"], [0, 2, 1, "", "read_very_eager"], [0, 2, 1, "", "write"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"]}, "titleterms": {"commandmodul": [0, 2], "packag": [0, 1, 2, 3], "submodul": [0, 1, 2, 3], "consoleinterfac": [0, 2], "modul": [0, 1, 2, 3], "serialclass": [0, 2], "sshconsol": [0, 2], "telnetclass": [0, 2], "content": [0, 1, 2, 3], "core": [1, 2, 3], "subpackag": 1, "captur": 1, "commonremot": 1, "configpars": 1, "configparserbas": 1, "decodeparam": 1, "devicemanag": 1, "logmodul": 1, "outboundcli": 1, "powercontrol": 1, "rackcontrol": 1, "rccode": 1, "testcontrol": 1, "util": 1, "webpagecontrol": 1, "powermodul": 3, "s20control": 3, "slp": 3, "apc": 3, "apcao": 3, "hs100": 3, "kasacontrol": 3, "none": 3, "olimex": 3, "welcom": 4, "python_raft": 4, "": 4, "document": 4, "indic": 4, "tabl": 4, "framework": 5}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 58}, "alltitles": {"commandModules package": [[0, "commandmodules-package"]], "Submodules": [[0, "submodules"], [1, "submodules"], [2, "submodules"], [3, "submodules"]], "commandModules.consoleInterface module": [[0, "module-commandModules.consoleInterface"]], "commandModules.serialClass module": [[0, "commandmodules-serialclass-module"]], "commandModules.sshConsole module": [[0, "module-commandModules.sshConsole"]], "commandModules.telnetClass module": [[0, "module-commandModules.telnetClass"]], "Module contents": [[0, "module-commandModules"], [1, "module-contents"], [2, "module-contents"], [3, "module-contents"]], "core package": [[1, "core-package"]], "Subpackages": [[1, "subpackages"]], "core.capture module": [[1, "core-capture-module"]], "core.commonRemote module": [[1, "core-commonremote-module"]], "core.configParser module": [[1, "core-configparser-module"]], "core.configParserBase module": [[1, "core-configparserbase-module"]], "core.decodeParams module": [[1, "core-decodeparams-module"]], "core.deviceManager module": [[1, "core-devicemanager-module"]], "core.logModule module": [[1, "core-logmodule-module"]], "core.outboundClient module": [[1, "core-outboundclient-module"]], "core.powerControl module": [[1, "core-powercontrol-module"]], "core.rackController module": [[1, "core-rackcontroller-module"]], "core.rcCodes module": [[1, "core-rccodes-module"]], "core.testControl module": [[1, "core-testcontrol-module"]], "core.utilities module": [[1, "core-utilities-module"]], "core.webpageController module": [[1, "core-webpagecontroller-module"]], "core.commandModules package": [[2, "core-commandmodules-package"]], "core.commandModules.consoleInterface module": [[2, "core-commandmodules-consoleinterface-module"]], "core.commandModules.serialClass module": [[2, "core-commandmodules-serialclass-module"]], "core.commandModules.sshConsole module": [[2, "core-commandmodules-sshconsole-module"]], "core.commandModules.telnetClass module": [[2, "core-commandmodules-telnetclass-module"]], "core.powerModules package": [[3, "core-powermodules-package"]], "core.powerModules.S20control module": [[3, "core-powermodules-s20control-module"]], "core.powerModules.SLP module": [[3, "core-powermodules-slp-module"]], "core.powerModules.apc module": [[3, "core-powermodules-apc-module"]], "core.powerModules.apcAos module": [[3, "core-powermodules-apcaos-module"]], "core.powerModules.hs100 module": [[3, "core-powermodules-hs100-module"]], "core.powerModules.kasaControl module": [[3, "core-powermodules-kasacontrol-module"]], "core.powerModules.none module": [[3, "core-powermodules-none-module"]], "core.powerModules.olimex module": [[3, "core-powermodules-olimex-module"]], "Welcome to python_raft\u2019s documentation!": [[4, "welcome-to-python-raft-s-documentation"]], "Indices and tables": [[4, "indices-and-tables"]], "framework": [[5, "framework"]]}, "indexentries": {"close() (commandmodules.consoleinterface.consoleinterface method)": [[0, "commandModules.consoleInterface.consoleInterface.close"]], "close() (commandmodules.sshconsole.sshconsole method)": [[0, "commandModules.sshConsole.sshConsole.close"]], "close() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.close"]], "commandmodules": [[0, "module-commandModules"]], "commandmodules.consoleinterface": [[0, "module-commandModules.consoleInterface"]], "commandmodules.sshconsole": [[0, "module-commandModules.sshConsole"]], "commandmodules.telnetclass": [[0, "module-commandModules.telnetClass"]], "connect() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.connect"]], "consoleinterface (class in commandmodules.consoleinterface)": [[0, "commandModules.consoleInterface.consoleInterface"]], "disconnect() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.disconnect"]], "module": [[0, "module-commandModules"], [0, "module-commandModules.consoleInterface"], [0, "module-commandModules.sshConsole"], [0, "module-commandModules.telnetClass"]], "open() (commandmodules.consoleinterface.consoleinterface method)": [[0, "commandModules.consoleInterface.consoleInterface.open"]], "open() (commandmodules.sshconsole.sshconsole method)": [[0, "commandModules.sshConsole.sshConsole.open"]], "open() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.open"]], "read_all() (commandmodules.consoleinterface.consoleinterface method)": [[0, "commandModules.consoleInterface.consoleInterface.read_all"]], "read_all() (commandmodules.sshconsole.sshconsole method)": [[0, "commandModules.sshConsole.sshConsole.read_all"]], "read_all() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.read_all"]], "read_eager() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.read_eager"]], "read_some() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.read_some"]], "read_until() (commandmodules.consoleinterface.consoleinterface method)": [[0, "commandModules.consoleInterface.consoleInterface.read_until"]], "read_until() (commandmodules.sshconsole.sshconsole method)": [[0, "commandModules.sshConsole.sshConsole.read_until"]], "read_until() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.read_until"]], "read_very_eager() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.read_very_eager"]], "sshconsole (class in commandmodules.sshconsole)": [[0, "commandModules.sshConsole.sshConsole"]], "telnet (class in commandmodules.telnetclass)": [[0, "commandModules.telnetClass.telnet"]], "write() (commandmodules.consoleinterface.consoleinterface method)": [[0, "commandModules.consoleInterface.consoleInterface.write"]], "write() (commandmodules.sshconsole.sshconsole method)": [[0, "commandModules.sshConsole.sshConsole.write"]], "write() (commandmodules.telnetclass.telnet method)": [[0, "commandModules.telnetClass.telnet.write"]]}}) \ No newline at end of file diff --git a/docs/breathe/build/markdown/doctrees/commandModules.doctree b/docs/breathe/build/markdown/doctrees/commandModules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ac83077b217b72acee0efdb1f77d591b1205d27a GIT binary patch literal 60147 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 literal 0 HcmV?d00001 diff --git a/docs/breathe/build/markdown/doctrees/core.commandModules.doctree b/docs/breathe/build/markdown/doctrees/core.commandModules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c295973b3750a01f24239341ecf6103ad99dd46d GIT binary patch literal 4315 zcmb7H-HIed79OXky1V+Px_fj6VP86DBC8kW5fuY^WHhUtrSSQL~bDl@7g=*W!R z_?f9@5!MUA!axvX-(W!yd<4N8!AqZIpJ2bp$jqv&Zj0%Hf{YU<&d(R$i8%4^-hci$ zyjK0(fi4*@WnrkHORG}q-8E>WjEhXs!hhl2 zAgCKI^srvPrD+a$ezf|3aamyBt0Wj z>ccXuy783GLOAP{zxFZO&5|HCyP@7{$ldAoq~# z2G4ZJYbzB*YY6e(D@Y!{wliBU24jS&=p^V^w`IsQOnG*|?yx;}mu;|n?$Z&IIUSkt z*`vRXo__er(-9n*V`7cWNq}ioo*O2MM3IRZAzD2eD@qKbqZsYz5`2bABfZxiU$ znkr7jNnn5DqAJ7N?nTuXK#s2lWU>V0VF$>{^(v4t(yC4`V%Q0`!Ek9sliOPO5X2hz z9$X5aW+!o{8V@ykFQ~l$?_XB~Z?**9s~zwv&lkYctY*|j>^h;g*tH9q#MVNG5Y|A~ z*_|ixkQy2)3Tj@Md6%d!!1GrF@B1b2?sveulzGwhRhYN5;)UQt5NqH&h>+dK4jNo_ zx;gJI$QOY8d^JFRS_0%@2atnEh;WQW--~mro?3*pmLV`p+sh_i?W-hh`hbOtPPfF1V6Ddt04PBai{F2)bOsv1DZ@K`UX+on^ur)VjaNd$dH0orx9 z!-!~yJ$FQB99S7*tZtNgu9wlVoxkVqZnR#OeAtUV;7!T+kXV06D$OC}s$f9SMt zhc7t6MID-BY;UlZVZV3r25E=j=TRsr(59Gzg@WhY_$P;Nxj{+G1fWn9Vp;*V7bIhX z*h6KwSD7)Tet$HASPx_KJ(OxX^6pm9tO9^$VrY)-G1!i6$d4a9`Wx^Zs7bnFK1dek z-)zjIQc2+J8C640&7|^ynjbNf3pnc=GDZnyhWW?a?j8u4Cv9!E2_zavAoX*1sLu;S zW(ng{Ch!M&ZwMK9zo&D8D*LBJQELG8ay5>_M97rX(B4ZKK|E-bW3d6{3PP+tvn5=F zmt6Hcs}F%W*dtS3Ou&KWRJa+=33T}@dOQ#06_UhK49}}G56jUcO-#4~N~HfZrIJk#8EJWEi#pdv3aj^Z$hA!7wh^#)0~$GJ-n8FpR` zfsq-Ee9wMiKUufGyyH~}`zZ%+LJkNkN literal 0 HcmV?d00001 diff --git a/docs/breathe/build/markdown/doctrees/core.doctree b/docs/breathe/build/markdown/doctrees/core.doctree new file mode 100644 index 0000000000000000000000000000000000000000..17015cc0a42b73799eef8fd6ac9247de3fb507aa GIT binary patch literal 7545 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 O&&{_d^ZAgB27dr5p8_NR literal 0 HcmV?d00001 diff --git a/docs/breathe/build/markdown/doctrees/environment.pickle b/docs/breathe/build/markdown/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..44a0de60b3d6a9b3164dbd981f680c77983b382c GIT binary patch literal 151672 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�Yy!-hSGsdQj|ZShVyEWP%+wHGO@{X^xo!=XGQM0Jlvyd{roohnnGt(Y zTl?RFxFHRi#{Uj6>^WJ{($0)MB80!;w*zM;1H#&wu{EavZm8E-=t-TKw~zp^GxJuu zV`ql%`g3Ob>a%_HRrVQ+IKGV&16}r69-E9lAcBqj@A13*UcbwHm!`{{Si;&Q9Ykuv z{TziKRn8A_OtXb77VNh`%Zc1alk)tgW1krfzNc1Y{r6OYk%E1?RH&$A8BZw1N8p^(5hfDQJu;QK62A9{Hpid}sKO@lK5r&KdLI45ysY zb#SEk+~By@S<7_2$bBC@yO%tYvrjiOArlK;l0!aGr23w7@TFZS7)p+QNeWw8xxCT>1 zKekA6&u~fdtP?>JH3!9$BveC?#D8p&q%&NS+;<{Kq9$WSl8Ml`S%E65R0J#diA9N5 z4VMxNObL;cXcOl;pv`SKnT7=8_;iE4fo9otHn#X};riC}xO&U#y*IYKnPBpYs6>@E zHt{zgZQNFp-D9IC9$6UvdIk)!=WnKfPx9r(R=(&kJhB|)E8q07AS2tczs-$4S!s46 z=m-y1KWz*ee~K(&30z}TRkeg9S|t_@Kb4+_X*BpJ03M#qTkyw-nR<)K-j_3A^=`Zq z%}yD{)WRpRdS3vmWK#Fd47mM%EN)3fO`tqbQOgD_W+7-%(>U}@6TxlJJMvIw^5j>WP~o!OOEBGhhToy2YldZA+M zkXWYkzvXz;iz%0qln6IZz+6oad{M`E3}ywoO{;=jrIjnF+(5UeuyalXhp^P9Bg)4r z?Q-t!yPv8mt3*P`Woe4^fMHwX;VP?ReXrE{BwUI?iWpWVT~B@H$*{Y`lB)DY)spHh zcjVNQ`V6m&Q>cvA$e~zk`0xX6r^c0^r`~#+47u^XQheMQAN-uvi?IY@YFzm<>YY1e zaIV)oa09sdB}fTDpPVREv6uBGe7}r70!UebA*vMHBm98V)VN`_^?uQ;NFV6%AsGAR zv+jdEG+05@OU5_(V|h#nz|Y|UMsU(4<7aLF+ZB7|&fx#QGu+ZoKO+za#&hO~uszxQ zU}f7^vaXhGx#<5~mhBirCNlOc=RUpYFNR0RT28a*uhEi2?&hp$=|z8g2Ih&%d(F}b zgsc38WHb!#O!5_RDQ&g&F{N*1q9Cj}T@*0)bRDC*>_XJS+7pcU$=AX*8`;AOxVfb|GB`U)aEW2yDNiE^;=Y}Tq!w;M%FRRRfI|Vo+2UlU8-qe7 z^LP9XT1A?CfBlyekW+SBwF5LtIzzDoqi4dtdDxPN9R3+2hb;^S=Tx|_Ccvg&_Cc$qbdI*9q~7{v6HaV{GN>EtQzqT|^<_eqw|;$v?s)4L z-=*0H#j2Q(w)w;u-h6YpNRS!Ipsr=sm_PJ%b77+ChO;InooyaoLQ_2>&SFTEPd?df zGRP(ftADU_(RHj@W(T^ZV{(avzn2H3 zy{doEEEIj+X0_DkEMpT+%rXXb`<`WX60$tY?4moKW%w@JEaMYnc(cq^oF4{Rz#v7f(ev9gvo{9!3h5+mR;*V)wq*SlO9B(g zdOwQ(K)5;YktH+(`waCptvhtDB7!FFGl)*H%6<<@ho|hfLO~I~H23ly4Cu zuOY>6bWte78!g%Bq4>i~lb7!+G}@h}!x{hR3$ZN(%L_=-f=97Q|CEg++>dM^tg&>T z)qzA~Dbc*Kq(_M0UCrt`c$akT!@J`y2b`-RMaHejxU@S*S6)lNcSiBe^GkBPmgV5< z$hm2U7BUJsV({W@4IeTaRZZEP*N-i3zTE0k-`v#e1}`MQJhtUgvzOulNS1Wnz`J?C zloA7AU{Eb8J~~(`YFkQEQAVg=&s6LyLM<2(3gV=RP;0a#b6=DdEghk@2bVDH{B~eH zWk6WRCTy)MfE%hg7JAay#K%Yg*lPSZ-LcikcbTk4Z9onD2nnCM*sU`Prneb`pZ7NA zQR7y(FiflQ^vD(`cyFL_$RcPwn%Uqi^U*A@2KZkPSN#nPiPU622IN=6&3Uh1Y6fI5 zZ)MPg45VxfZe$M>2e+{Yig|ysd}eXx2VqkA!zWHnrbyuMJ%CT=vG&-){*QeCi`lmq zAt~;6h$OLQ^%qb&JhM7v7n|7`H?IjA*5-gyruE6ugE}H_gV9l8pnZvY?hn&c#`T4F zQ7&yGDMOAihaskpysOlQwq2FtJxgv+11&VFi8M+wGkR(33BjiwR_A*d(i5RfbJvJ1 zL{@UO!^l^uxP)CfaoOeuu+8RD3-P|Wrp@IG2{4aYY3NPjK^k-U@+=gwML8P?OR8@i zEPb>g9HP$+OrJOn-y@fa-l`!;oWZWt`4K~CT_o5R%q23boU%y&FSYxZ>ojQd7-=iP zc6_4GX*xQKf4^?wy@Tarl$^`-fzK5LOY9c@e3V-_cmfJ-BiJ^eu_Hx+#*Us6V|}t-)1Y=I?I}iheEw+d*PXQO3<2CQMq*J<>Q26iD8cUJ zo9T|-NxoZ>?&K9Ru~yo3?qu7lMCz}E3*ElypJM6Z6vN&WJ(0FV4-YbFw!QypiF6`+ zp&!5T1L5YD)LtgROW!vMtvdKQ`jl55bQ(hyf^K7|f;jywIco1K{cM<8zWl@~#}uyP zrvQFnuHz^A02bpqMhJ`haUw~q>-b)j4$pNo_jyS{;WJ?WgjVh4m_VjKbDx(Oz!AQp z(K9g#{yKFvo3D8GGdS~`b`5bRrB_0~1obUT;9o7&5^0TIlcH}4EL~k7Sn_?V-#y&I zkXI=4k1Hooo-??cS69eVX0gzxL*#)yf7e9VTuz#Qe0;4bMSZhM8_LTGu(^J+8V}Mq zguAj5LzuqlU$;c~w87HF7hzY^MLNnmm@aYpI*}tNNZXe&tI?7xA}g|@rA=6SI0!4# zZ>L`q)>eN4xS=EaHevUZ0I&&rfbQ6Y<-7h&*bGe4t3dX#V9{se?C@fJUMx}HU4EDE z_Pfk?X}Zi=suoGq_gx%s_Ea7;KkHkoEY+Gy`W8&l7kGoV_{cX@qP0G9zEQ%nxa54{ zoNp>+-EH+!r|Pt(+D^6Rw3BD&i>Pm@pJ`%%Ke_jF8i^(_Y?41CFsv%Wnk zChMC)h^|Tv7u?ll)`{|?BKqXp!GrG(uRvZRaEj0QX5fqiI6cHgicaJzW6zEy-*|kT zKxP7mOc7|RH;=R$g`#r@j)Pu;uZOqV(dpkP|HyThJ=t&~gC7ALPOi5{!V;>vnKq~Y zn|lC@n{rRW3HhFhJbs8nUc%rbTw}Fvq)8iEUDLVV9uDK`Jv6{YQ$r*dOZH|~756nGP+1nJ%P6AH?e3>^krt;k}Y)K?F!u6#I4 zSF-1LTf8g5b?z%N=>^5vaE7-PfTv2sS*pxJj%{#ti(+3&Pq8#Pfj$rL1B+|?F#`)_ zbz5ht*;s1CRAagX$}9>!He3q*!wI0!N}73M31gQsJ;Wo63@g{Aw~|r>z)k}AVGD}R z;-^A}!H8hE29rZSwn%dNa7nV`M36*fy@-{L(NGOR692J9lFNrnl3gc&BqP!oQxpm3 zURy~uRI!MFh({JFZXGTup30<1oo(&e8L&!`ZB1eo%(k}tvM1a0q6ZeW${FzLKhv5( zH%*)%WK-&-qhfl>1}rA*zNmo_YV8%6PEv;5gGqr6o3iVgsn$M9Ga-lB7l>Q*Q>9v? z`_Op?!>SV|yhi|hPaFR49+>||uD~UcYVFlMB=JP0T6>gmFsy0+%Cpl+UH#&2(OUQId54J8~oe2Ln%o^y*5RyQ4Xi6aq>(QnD|s*bc7$fYo#pl z0jM5H-heL}z_%gfLaY6nGF(-wcc?sXi@XM#FE@e3TPxQaZ7_3cbO=kzGnt0DdW~a! zQ@Q;j0Wr?r)pM6Ud1`zByGp+}SmD--h@bWK!?+NuKgEL-i-^y3AWX#ApNUZ~=^KC; zS*G;Q$j+Zop%FH0vRjkP-wk#g`jd>S$Dv%b{#zc0F=kw3;9Ji9diSyz${}YV%`rZW zmQ)XaoE0s-Xl+{{JW+eEUMf-e6O(4{GMNf3v>#H;C%nojm#uUvh6{SE0*Lo|B$#_b z5k2|B+j_I(y|O`IWu6j$S?-m5W)1Mu)|=*WA}g|=?U*Nrn_HS=;l$+oi6Do2A(2R} z5`~o6CX^03^1(3<&NJ_=HRVetf7p#CJ+%C%;T$BlE2TwBa!6ynuhe$wuJzjF6bVsrF0PmNl(3F$0i@6y@<$& z`7h~4`)3ofyi4ghbjQ1t_%6+s9oD{_Q_d&G@Us0}4kw&)Vn-a@7Ge@Ty##a0h3nE6 zI|*>)PKt;L#$QiPvDN-&HQ;0)R8H@FqgkJ8w6D8>&Ar{Z3-ovN{37Mkq14z@k+Y+X z-iYdjH5d3#tufKIBsI~P=w~))gqs`ahFp`Si+qgEtZK8w*ryO&=YC2?ZYg~gUgltwEUmQgj1}cu(fW@pW zMocm8ONdgj7WNU84$;E)4Q6Ruh^5B=LZjNo_9tg$WpA{nBshK{JKN}#u(RhZdFWwh zhtsN^>?g|XdTAR?M}^^ukP9Dv=XgCII;r|z=y==>ffda*DtvgoFOp4o*kYL7+cz5af(q z6CH{Y0+eQYl3H44$Ixg=q1+~fGMF9X$$oZ>>3Y4oJ9oI*adH)WX$dQf_yQ9?#N^a4 z@LQc?5l?11)#|*z^c+6Ar!yT|KA?VV@#NrOc@i}uW!8n8MduTb$cxewL)e~aUbJZO z+`-Z!NghYv<_x_OV$X>pcIA(Vevj|j_KpB<7)7zD zCk>3fj3~i@u?Ojn17m!bDKO@H*+V)`^c1AO%@!BCWbtJe4SSfOu`SZ*)vfhf@EF(C z>`Boqu*UW;S)!fD^5`en_2zJM15NNNs3l^Z>4RM+^^|KAN=7m859>tG#Qk-mlR_b+ z%-(>~A$n(o=W*oj~~K)^T{x+Y({0DLvG$LH3sxdVO<7 z8)RQ5z&zCC5&f^>K^hlnTpMJnv%=sq3oI%7-eCKp4JzFiY4HCO_oXj`N{}O@gL=eT zLk7P_OOp62S<%vFlr65p((&8r*Nn3DkpONet-j5ulQ%-<*o@jicWg%S-I6q;E+t1R z<-+3miyKe`HL2<3y=uwq6=JkmVbE%B@?9(Ie@x zvgE|6xY0@1}Cw!M_I&pns3~#&275pK9=#NvG=B>Eb+aZIwA;We3&qO7iT67R1 zxh_{8lI}&kKGz=!vK$iq*pl#9T5^|2!u!$dFAq28y>`h=wTiqwcApH~8;_uf`$nQt ztZsh^N{6W1H%Q&CiNWVG--A}Qe%I2ZJn;w-4e5EKUqb8s4@(?+==tz+>7KhNQ9ed= zju5R>=W~Ulg-W$BT}8~kHdAlT71|WEM~tOWEzBcsPp5XUGKT@D4_F-sN8?st4X<7}^Vj*#e5>8uox8>0VX@O}Vs#ZfUX+{t zy8WNF@b8;(+U@@s0XE(K|AhyjPvUi$%ljdV5b|swEW!Ts!O}-tM4CP_l<-xiPhX(~ zLE^qb2^uXKO89tIv~(!J9wWj$^V{h+lwhk=0o>5LecOI3HYwY0CEc;@$9I`*KWz+s z1OdIM^ZM?~QSd-_!d<}Md%A9qIFL62CDE)nt?oUj&k5e1!n2rDn01;d0}2UNWHjty z+I}j;ty}B4BBQI>6P))W94C(I>1 zXarAhw7UMpvjv}H;ompwv@Liy0XA*HXW+pT&lao>mOj2{yP7`I7OXIR`mzNDi9?FC zhdB{iR?=umTkvpJw6rZ~j}c+6`R(*;3))Im05>#m-?ku@V`Uuh4Rpu0Am1%XTkuMr z+*|cIC#5NP@#1SsKImauf}73AjOd55@xseGV;UtZ4rn~L9J}`u2TzTs=Fu{m?Z2cKc{)%_M39$N;?n)%nrsHN?)})(zo5<&x=cWfCv_T$?EwN&*J;8 zg@50i(-z;i2(W4KeFqPocoyG(50*Z@WV@O^(&GCG)2A+ zSqvyu!4A{r6FnLHXXW=2FHfB9cU`!-r54Q)eDy7_PzW&aS@_^t?m%%cc|f3;vtCDi zRQ{P^LiqvnIMsOFYO)D?9Ie`g3SzcC4Dji8n)Eo;en%g`VvZ3<$ccM9ktEh2z6zy7 zG>EORs1y;lh>xRPZ4pO(P2LKNig6rqp4jM}V9{>su0JwU*~BTn2yZ!vDc-ZJ-WOY_ z_H8@)w!xBC4T4KAu)5yE>&9D&UQ2AVA6zrovYEf_H{xcrq%%Bg*mhmV02d4(_1W2 zN#*rComT>~ZwtnkH7o6Mz0=N3SL?+il+Ndtowo&P__Hz6EIeF<1 zIw1r%SpDzeR4vh+#Lu+w@0)+x9=(GAvu;q^5bz+CZxymfQ*5vv*iPcgVCmz_x2x$R zea{)DPhU3YVFr=GD%4qsG+L5vcVt%U_}Lsj>^mhd_f0JbzA zp*yxT`EE&CnwK4GR@!NIjwHyY&tQjXRc@2Bxxjx8nX9lHx<~5bRRSX`CMcg-^V9o? zX(!Hne0R9HC6vTo(o9)wq4k0hNq65q53U%5Dg@UILKS$`z<+A7<`ZFB4RYP!BLF|J zb%PJ~0W4##AQrh0h?(mMh@YE9(aAqrn$%)F-v*3|;h*xfJhN()pN$YTt&DKk+YB zbs!k@9jn(p%-Qf7!BrwPsbbFr%r|^R?Ka6R@QTGmvrVyU0Et4EZ#BiLZ(eC5_Wvbv z@OYF)+JECg8YA}7)a3AWFKf;W?^{y5Ww4a-rPvKoW+Pfkr*5T(t(OJ_aYJe^&F1G2 zT0apC3oZ@Z>MsrGG)1{%Wto&gF|E?F(rB^-<7;>7vwBK`70dcP)p_Y)nH43*GLSsU z%u0T$bKd}|BwVwBK(s{t#=%lAO4Q}*zzzM2x?sS7L|rnKMBSWRGeFlqn>`T-x5^(} z{rYUS86bfFfv;+p_3g7AAyHtTtx9+7v+-SjK3fKY>W}l-pMDm7HogzNSfBB2C48nc z=JUkm``vlJ%lG?T=DRdq&eP|q>DxTM9UkoRg!_Ed@y?bj65{))tx4g$F^ZGo88Ef< zcJP%c;}!Xt)o#IkSe%}HE&mboL-|T!nY8gtOShn3m!9$ToWrEt!mp^axfAYjyTscd zKJrQyBh-1jr4+baj|i4pYG#4R>zlAPwK4>6j!_q0%KZofc6A3Q(7}NpKK?A)^|lL! zT?1;&%@t}T(fd}{+a?Mo1J9$j5k45ky@v?B4Yj=uK6J^0puorqnn`_#2dEd6WN&*w zh8ug9C39@08T9JQsyVCM34hLX3sRqr&5IOaj};B9R;3$<326Nga# z`Pn9H>@E(Ud#l>@cA?rmc#=1+>Nq9*>_}7V2)({uhEekp=pk>ddQz>_obDm_DO7D! zsb1`~E7jK2Op}L6sq3wNdZF6E!SzSFa-5O$9`eR!k#W3PXxE!v{3zj5$E|i@u7MwG zL>qYkK7ya)@@J=6#jkbkdNDr@s#7WCZ55r1$H&+=&(!PfTD|QUg$I{;>st7tL9H{F zKTc^=x_Gi4E=Hx1CqD8hKIEMyo;X#9pX6zkB+qIISffSx0;y7du(s*Y_lomX=cog^ zEq8B0hYqgtHaW*D?L2zX?zB|lDsNTEneNO2&iZ48CVlf5HL$WdhbLp8chRBFbRTjL z07%*OPOsD&op#=-73(Fc>@=J8X18?B|7by$*a2F8G(`j z2=~uuAgvd0RWthS)9r%5%ic!97Gl&Yg9ue%-*s;z#P9UBG@W9-S<06jWGO2FFeNKE zR31k+D!@z#|(bB%niSA z-vTl`NKm{^*38pKw<+_2`*XniA#Y8ya10zGSQseFyiGI&!13BF1gBb=tF*hfZM?wU zi^_-G8>qi~sK479PJ=<^A;(tiO%4)qf+jS42{zL9Tdi7R%^^9V<0PzAXg)D+P zjOJXSd8E_mF1RMRJt$kfhp%9O%ja) z2qhR$sg)|=e>>kUG-n;mjrVlDO|8x}sM&@-sMkQ*8B#aiX6tFK0I!K21KN!LV>Jm& ziJyg zFv6!6N&X$Iul5%R1BEH#&uOqnz7BldZ_#A|9~N{UrpxM8xU8ki^Xc*uy8M7HKc>sy z)2{Bv=)&CnJz_C)_w#i3UAl~b5>ZxMki=9uBZ*%)KoYlF<$W?$*CNE#HEptT*G;ni zgvfBxC@$U@F0Z4@x9Rd2UG|LQa)2&hpvzb3^4>MLe1I-IK-i2YJ3TQmsd7eQzIcGd z6h1-PJoPp?x$`DDUqOU;m@f2zT$jJAOCR!b`TJj#G~VT0^OTI#SEG@|ap+_~aK+ z6gI_eO*j47Hu{3nG@yRPbqS;l-K>S6A|G&wh2ujZ|)TLTaM z+GAF=G1V%=-)zB$ao23ql)o(qOP0WhhP6|y;}`^HM)xjK&LjKe&qpxRy{vmz*IVBx zG-0pEh@oi5H*&1UYy8JN(XOe~iq%dD#zuXX=GgHP8C}v|(XIp3?0KYNtGGm}#pGV^ zTEKUF_eITI9A>tQEPwaeG&AvdI;`d>-?i(@-+e|Huy;!;S%$sS+Bppi9IHS(g=?{s z`Z(2WwWWx{(@GH+SaWx0TDo_En1EGc(We^j#$f1E2?KV^^o#=@tI#nvOh)1UG$56w zIMc*s!G*5{U&V>56tG_`57@R`ge^caX(ci{SBK4|W}I ztsDT#BA;+Q>fNhxalFyF!g07CWGt`5XNn6A(j9=ca<*EZ?k;$%%asy56WpznVEhN8 z@DZn-COf|HgDY(q{PkLO9(BiI?d#-g()4;EwMwR!L0uW>eLjj}U3G7Rr0L|bW}(r* zpze8~?S5*813f(%8xdNC7j1}TV3r6L_J~PD3^=39Bv5g>Bosg!$3PMBo4`0R3#?)C z>(u>WsFC-C0UNzqA7&q-5E}U)HSMy@#6+{ni75vTWV{3YEXZm{BqM8B!udUab+_5K{ixVVPIJ%3ej*i ziwXZ8rqy7W@NZ$j1{2Qi!34sXjlgsm4xe7{$sn(BEUgao)y6eF(RmQ zlDg&gSV_?aQe+K_{2vWdX)xsfP#Ca5{z3%#h1c9H zlF=7y7O5U_r2!Beh$JWY$vhv>-VQ1K3IR*>V{2K2|5}(ngCYD^!hj9JS0V_{2x9|V zt1V?YPUv;dWJT5gJ|rFpC1-%J2WU@DrHvgKs(Fk2F?B5B{~%1G!4UtS!+;Iq-xooA zMt9QhQXJ`HdesNvflPA3pTUxU%)#2gtRsa#PW3NR*J8w)lZWIdkA?vojF^vL1fxAE zyC~(m#{^*YQdd_Z*#~2QTyn9#`lj+6p{ z&{jxZ{+rYr8?EIZY!5Wo4SVvImk8}BztQ*1+a7t@>kqL+PCIr!jK2p@azDa<%$<$y zNAc*8`!T-K9!B?%aBJ>VbU(#q|C_I$=Idwp`dM7vKc>s)a5=cl{S)!$Px0rF`+2_p zAHIHp3e-M9_lxvvmHQ`hTe|G=LIy6#WJpZ^kn{;&A6453*Ph#P3YT}zjDQLy&ybonS< zK17$V(d8?2`2k)2nJ#N+q8g>kxpX<3F4xgzH(j1im%Hgwr%RPC57Fgibomv!{32cc zfG)pBmoL)g^K^NPF5jWcDne*EUCyM-X>@rCT`tF^P0(!^WmJCKjs+CKfM9GO>6ujfutU zK1?iLhG1fGES!nOfmkLMM**2w9Ef6KaYTfP#f~`>i#xt46TlZ0lP=(ncA}v+%Yql#pnnY+07<5 zsqhsMY@i7+1{NNDjMU#ps_Z<=^+@%mCAyD;tZS9!IEov4R4jga{v17nth2C>g)Co&AUV}q9F3Mn8x>5*yo46%on))ys{u;lz#e zJj{)=TBpWc(kPFwTTLSuv+CIca;wE|6?3DxuRyGMwnsf{YQ2W2#ERt#x*MEJeN`B+ z_w>QI)MoEboI`zExI=@P^?oi4*u90G4cDQLV36Hxa!c?WHsLL{+*sXUc zEG$LRyQ;;a7ltW07#2N04A@{%lyfZh#M&&XHsW|=^wH-{wV}w-(=hAJlvIwefyHgo zn<_Ml3X8>_HDtsKN?!Y5P%20E%rJw>txI?9 zQg~S7X0gf^dp;AU;$YbGsW4!JJyC8h<88BtI~g~2jD9NaSVZZAIY2MDVQ_AkIY$bu z!oD7sL9$mYMtw6(&%rS2Z^D2LM(v7-M=l{4A@}6QzIBK;Gk-66B!7E_G*dKJJ#@w3#l4$4#|5z9@3NR z9PO~<9tKr12UOW_|5-paOF)%L_tPCvy@iJ2O?0`JrmTDDGEbMIba@?J9;VBC>GE#6 z{1II~Mwh>&%b(NbM|AliT{aM?wRD-F%XxI!OPA|$(ScWLc7dB*;N}*%DI^gCj0J9D zfx#~@=miG5z#tbGoDq;^3|9|?Hr|=q&l4a zCO21TA>&St@`7BFD^hwFr<9wXA8$3vmD=&i`#KfmEu`!{IVAl*T<+xdHk!HI<+)3r zvYY<9DtFng%PyZ9e^$MdD;8?GLJ6q|@Sy-C^Cpm#=Co0Du)H`=dA#S5Su;SDRcMA%pdpWM6SHbQ77>2t)IT` z35!T%Fu4x`*a|H;+Idq0S!2d2IoujtWY(2B2{NZcsnQ+KHhf1>cJJr<4u&I*p>x~_ zfcHvo5>60&!84pHJhWJ2JF6& zo^kYi1S9x)*y9+PR_aA@1!*${v5t6!*irc!@#l5;gFV!b;Ey*({w{`oYd5mn;=zLZ zdcMAaufKpRHf=u2Ki-HdCCWk)AC(Zu{U!7!l*dPRaZHHVYpGVOy#6BKCQRMalb}f5 z;~s#78}#%>q~T=?ivQFSgLj9y)sGnH1ooO9>jgdRZbTTF=N}XDKiRHN3i+QTMLpS? zv{ZE{SMmk&y+y}OPx~`MBLu`YE>Tf!(qTiH#b3=IKkJN=}r~%6|&JHtC^p9*-Aeur`j>9lE+ta=InajhTX`zxBFhC zX=b%}uTO!1xVnEvD9Mzjx7(s@mAwzyDGf2V$~d9isA>yY@?K22sfFPEO}NX8iTH$j zFA(uowAx5OJ%Z~b`Vx}|UuuFC%hcTRmuN43;J*q}4fcLpS)M$~SPLQVvT@^$@vk|| z{$2MU0n8i014=mC^;QrbNFeOYAZKy4f>eXZFh<3c92!}m+l02JgT(C+o{DT^dQ@%^ z#QF2o$V!+|BVEG$N>-R(!ixf}|3i27{H(>4bl#Uy!4L)|ZP0v+NZa_SfE*)jW?4|$ z%rYTusx4dEHWPds^Px)H2DCRYX*(UjQcIgphaS?lRj_q!YGivzn}j)<6=omOwod4_ zmQ!dJ%ki4+TA&suYi3zc*32@Nwbh~}ThjIu^b;s)ds7p-hh94bU}+^yQK5&NZ4+{K zeQH#D$eDz>J1flOau$rc^>S{!)nbb7ddn{AO6>oXv?gbj4C#4$-jA@pHbZZc%`yp_ zWm4KK!JX==j%nBQVN}7|NY`We@dz;!{4A)KC8)=O@zWjD`yh>i->1twhOB#(#;t$! zkqQxX!!sj@#+BJWp~^0emB%;KMa~F}oO64Hx?)#B!v4tE4Dy~i$Lh@^z7fvTit*gC zn17Y1z%$ER=x%U(5PvBQ*t@mwu#0qejlc_KU><&yf!QOX3`i18E9>0{;hoBW!-vt= zg3Dotl^k|Blq}XDb-B(E`~e~w2T$bpAb%4N;!VC3k%b6$xPEJ}vV+>$GXy3$H&{iM zcOyEaKB>hLWy_Xs^I+z69!C3TQ$m(0fl2q%JSDiFqY?BOTv~D-;3o?$`9T&ga%nKM z9@hikG&JZ-2BY}A3>FaDg|2&;W`L(rbb2MMGYZA<2LM)!4C5T*IEShPJ~pSn5yN_3 zeNF5(u}Q&SkQGW_n9M(>?#G5JqoNj4QBiCO>h`?F(XexRn2oPIt-r?kjC^kzSVw(& z5n@xHxbVS(-nbZR!&)T;+VST61pGoCqnV`j`JrlefeU&|eDoIZCI z96lucLV`&WMal(|193`(_#l=Yso%mXBRo3ZO03Dzr$#1R9)+KW*=7W#^e7BOtNelq zmp_z%j}^>eKSeuFX=i7V*uQMYQvLcOI7{(Cd~2YFuct+aX2mBZlZ^VOqZ{c)y*H{p zlh%ER{rgU{(&g@ZAaR_e z50v&#vlm_Tpy45~5jzpAL>w{-DF(s^Qyi0M$r>8(A;N|b6 z$8JmO2)+&;?hxwTn5RjlHJm=hOTto~O2to}xN zVkVnzyr-mQwdiAb@cwmr91}A9>!~5jv7$Ba*BC_X=+B^ddrJoLj|L>8j?c3O1Y`5* zX(z*w4%h$?>1>0fI^fFmfV2m5F2Q`3_%VaVa)M2w9K zGaN{dS3>sQm>P0u!oPt*#E$F?lU(nCy~&V+hycTJpp!1zu11p|WbC9SO414QqGVza z9aLzhM=PNe)Kf!#+@)ZfAqC3M4tN9a=wA|kH8o+9O2Sk!Nl;x2Pu9Pb9<_wh@Rrn& zA9rauIVcTL!GkaKFAsm3nlwq}VOI)yhzS_{aeCwuO2nsALw?*P!n78mLIwY~e_{B~ z)Kp0-3<<4;nDD@Vq{l0v9Q-IXfpW5)uOA`+Gr^? zy=4av`xa^;HI0(9ED*pjcqQ}0hgtUX>Cs83ah}tglPA#qTrUU_>3Y7pe~!K~JqZ)K zo)baKBFxb^zw@E=NG0U!%ThxQ%_J{j5V2!<;C|;uB>?qW4cj#W&c+9UO`mS(@293o z(m@?^JEKHEbSpf#eNc0Rm%uD_=o=G;9IH5l2i^R6Q}~+ zv#=<9BRysbMd7bgLw?*vVVx9(h#1tiv-(yBn*k!76_iv6E=V8*(E+Fp>2XTP{=)Kp0- z36~_86<89eV_`vfLwdv#3c@3)AwTYdVCjUYNc5-smxNEICQDLDNURfL!qA^ck6A)d z_-Ja#kGm-BFm=LFr#YXGnj?PHzdZafHEoj0!(~Y|gYI5fKm1F2^b!iicT+=t+=W7g zlA_in&dK%dI^+OiIIcsIP*TjI#2M+4N+r4ixSVw>H}*m zMBuwGEEZXm$PiZJJ&U32>gEcBlUnGLDzEL)D-dA?HJw$8^r}NXD+nzDg7_Kur$yja z-uapVgvR2Qem2jl`&xj0fkDJBTg5MSWLdXj z(yh6>GcA+zw|I@}^|#z{690RkD-K-#A#h3;*Nz^VArg9P>F~1OxYWsdoACd`#OUkv z^6xT;SbDkxNFnU4#xZ*U-1gHdrj)G2ijLL5b2f_kkwkGhm| z*l+tyXh+ghX9gq-EXR)~ z|0!8P44wQq8`X4hI(=@gUc1YgtG6S0aO2Q;aEjysBhX|7Vi|EmRw`;nT$>fd31dWU zrZRg+p^3vVQD;7!;WL5|z`O(mVi_@=m5Q1X`K%y@&Is`_PAt&+jJUDTiX0UW4UHLR zs8OMrF%2YQ8S=8M)YJ@lNmdX;XNXWyC8t;~IT#s*IsXfs<}~r%p)o_MD1iV*1`vp4 z#JjUnQ8VHlSwRe)5h9yd$vKMjy|)!=v|bgZqyA)QoH$hs3xNR+$`J;!toUqJI%-z@ z@2nt(&Wde3ZCC5F;;dH`8@@j@Hf$GcK?M%3X&5*A(k1> z$Vy4gjKf($44oOmw{8~q!E%Z;njRP$7o>09ERxk0Z!g`Sm3Er^$FhPLI{A^)3chvQ zX|;Rkq+cEy3wDUk&C#D28WW_gS{FJr=hwcD~KT3Gb~T&6%Mf^mjQ&vqMJ2tPgr0zmGhOK zxYg9exzG0wNWiFni!H8RpH&$2FusOC#4ZNLFRl)H3F_Wq(QT1*(D(FD!)Ip&p-00r z1RDmu-gmLT24du1!u((*BaSi~UOF^x(2iPKniBb-M3|+8pNtddMV~1YrjKe%pJbG+sJc=Gi0-a*D(29>C zd?zb~HIu%b6~xe))YDAgaPDBt^pF+hB{0+1qVYb>^s%fUf@IHNV{0>A7!{D!MG^XyyfE(YfLMUz!!f z(Agt)&DiX@^^PdMyl-fHk-KJWzEm5r4EeRJ)YJ@lXI2o82SW;tViZIE^n@}5NW?Pa zkF!!!Gvw1*K@6QCXR$|QjS$dcZ#{BB;s-v&sQE?U5zCh6Wu>WR%kiurhR&9r0i0hM z8XFP>aDFi>%{1BHoE1cn>=~jjI)Eb_{|q2B7T0IBPhZT%zXATdj)h>c*@@*ShKk262LP757Q&st@6-@3w{!S)9dhbsy-8M>uL|Jlcp_ z?WW`83HiXnE>8r99rFnyWS?1JHUE6UaHR(pcM=40yW_+EApQ;&3e6^ zZ_Uq5*Q;H30x-SRcZ*+-bT51{V?$r+JLIixRi>+z+U(xx`cbE=f8Xd->&NhWRRy^W z+PGPRvv*Y-yra)t-hz^2IXxj`RxMd%E7bd;yN( zKK-OK?Tyr@U8G_r;+CI!@T876RxB54vrfxtb3aDpPrrP$SZNCs&|7-Ny%9u3u8S-A zPsdwPY&5ugZ-Jb-7o(5vTXARi+Wi$gI^_N;UA-~x;qA@a8|W4?JIyt!g|g_TuNuSU@9DC49G5TB<$Y^#d0;IrucXW7^|(~& z@(UYqxo{&cFQv=2O}M;^E>~~HW%CwX-p-e;B*c{51IW`FH2%=I!5pc#?NEP3)KS!6VLGp!m_r+ZgOISU@hrb-}eicNJz`jnv-U|*1U{|IECX=_DAQwm) zzVG9AMQV_o|JQ`Lngptfi$L<~)DZo2vL@8$6Vz|`P_M}bRpcQw;r@W&eih=Mm82qx znF;dmX)wLj=Mt9REtc!=4|UDAzDom73kqVQF>je)_cHM7Hm7o4?5V_^)}vwByHr9 zJgru_Z-1rO7R-3K3pb-wl^NV-fuFZ-fBjgkS}&C7jh3k9ZLT*fvz1z*nrHC&PO}0` zy)iQX^U}Za)-;`&JS{pp$4R)nt#BlX8SoOp;k?M`Mg=F^1=KpBM!og6*=2KuMgtBQ tm7HdmFu1%?zQZmrRI5glftLkF+DG=b+b_fOYR@+WM&TlbY-f7v{{sc3yYv76 literal 0 HcmV?d00001 diff --git a/docs/breathe/build/markdown/doctrees/index.doctree b/docs/breathe/build/markdown/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..608c3449a958db40bb60f4d23ccf68a51491849c GIT binary patch literal 5158 zcmds5-D_OO6_+jVr=*ovmfZ%&^yVR!oO-p6F*Jxm2x%W$Q59N~k_U4=d++SdNcSsu z=1MC=FFLybAIP* zK5cw?cYDSDGn*HLfQ!Dsm|^Ig+P*{O=N)Z@8X0f#4K z;HNywpJB2`{8|QTuN2Vo;&5TTXqc~(GcDrCP1#sG)doz`IWN;^qW9>ZG zv8PkcpF6%xxu@j`-^)eoSuQ%}##25eP5mF<@bjFkZ<+~%sdX;a)rgrc(>j&V9H2tb zSe3p43{1-lm{K6(yAiRl_-gxEG9QeXcbxLE<>^erU|%JSAk|J%u6TOF^USm~o6w3} zbj2O9YC3L(mK>vIg~A^XMI7>>9vwe=Jbe1YpFbVqKzhJ39fuZH!y4d*5TS-6f|lUJ zLc~x;KA-NTO6TTAAS0e1G_ny4+EQfUIGUkfG(?k(y^G0)mO9|IDYNqn9spvTz*XCF zM=hfKjRG%y^Wf$DUw``h7giMd--R097Wc)f*f|sr4zm#x--6=BYk=Qf{O;lR9sJ&S zmS^HkF$DX=f?e#22L~;CsWy2*oJD@^=*6wX3RGUe`^CA7HWGJC!|D%q2Q*SySbJSY zUXb~mT-h4A9kQv<6D{(C>p%z`lN4(@@595ePVGbYlOP`D=cXy7?<1m|n~hS+jL?p< zaKuyY=LajMYb~JSC^!Re7lEmE02)@ih!02|KM*@s4IQZEy=C2*&GP1h)08C%Pjj}c z&UY8p3H1X79e4zrV2P-y%(TMT&*Jpm1TO@_KTRf@=X6r|hFFmdt7Ws~5 zqnb8eHZ@nwXIEDY0sNENk^0soYojbcly?IOhpzJ0{D`m_&A3wYur_Tr_YsfwpHFyX z;rzU?-K4sZ_?@-oidj!MZWc}4DfnvwN`{VU%E$(h+SbL|zG+v|^Z9-McJY08%?-PW zSykGHf8p`(q{=m?<$ElYxv8j zNgzF`;Z-z!%F-zRm0gG2JK+eE^NWyY{jmh-Ega(ymmPzcD>M`HZ(qfngXuSO3zN@% zSy`mA7<}#J7W>Lt>`xWHD8_$X8pA4;gql_Udx=%V->+nl|6F#tiwyGh)eR#4Svz^% z4BJrJzc1UoZU$oh*Q=N>HN!^XIEu5>6U%OMbp6`O%Ay_Sq?sw^q(1Vx6*RZSQI|wq znDutAW{#s4q+E8-3oLT9jdkD1DAfh(Cb=!{9Nl=u0qRyE{*^26zi60wW~kzQ6~s-m z2#mS8_Li*=eqD208%7uM$`+i80{8#{d{74Pc@C*&>*4*+0n{kPVAa(ow7&; zHfgy@8c$FV7WHLA$C?F2<}Z0{A&`;gu9=>frBt1|rL04s=s&^)gSBECq?za#!)`gu(g33k zR1+@MxHOCH8dRB_*1%(Hk z8Y<CAuu^h!Z)s*p#E~SY>=kn7XQ)=czBsY8*xaN$0AWf%MS*QQHUbt+ zGB)ARxQ|?T9p$IFg$6H9eHUdbQa-k!+V;>i(G-qxO=v{=KqzY5X)c7qb`d9>{cc`|tO(G%#imyW$9@kE)6zh8-mvoeD0F;Dj-*JHZ}+B-BJvTSi8Qub>u8cQ_WJnv& z22`8U(*fu$A{O7f;$tyAdKZp<^nJ>NrbBa7s@iNIK0ddT=b3nodf=&eX!*n^nc1kD z(aPOGHCtp9>{U?6TPwce0(A;O%u-?Ya1;kKWLV<%5^=`eS&-PNcD0MP7UbJ!EQ<8E zmt~bR=x-5AJap;+4C-<(Mpt8>Baly8@0av1ptaBQpTRHCh{D70*rI@hV#8TTSs<^? b$kv!^WseQ;Oz6d?>r>P#0|b>_*=X;7TsE*J literal 0 HcmV?d00001 diff --git a/docs/breathe/build/markdown/doctrees/modules.doctree b/docs/breathe/build/markdown/doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a0a9520d224e5be170c615f97be35741859e1b81 GIT binary patch literal 2760 zcmZ8jTWcIQ6n1Ry)qAm>q!bdjgpwwqu{VT1ls*+opWOPP4S_rap_$RH#A>9eq_Niz zftHd|gWjV4oc_0dnwcH%+OT+ZbabxYccec$|Nb}Jss8-b7F?*+8O<`KGiHPDXF4r& zrd;?GUi=w8gy()>=#|x_Nm=ka&`7zEnPDot4}KEWosjmdIp4D^bwaE5IPdT-@4XMt z`M`IaaFT6o`N7=KoLy`)}API^W#-80tv61%+Q1_>muwHc-CjyG?u-eqRd3 z!bO=-KcvnXk(3U3#XR;zW@F5~R8ngp#CJ!*ef8DP%HnpB&~$0oJnodf=jbAC1wQ4E z_=rE|d;G-zJmWfNGnXu1y`H`K>9;pCIC7`7bULT81heAWajl4U7e78)He?QfEp-Yu*l&P*D-$5igb%t%0u-W?(8S*En;8*xP#qSw@ zFYtThdyOAtj^Y_n<%>$C+OY6!WoUG&s+7^+JwHiH6Y)%1^p4h&8pXbEnR7xd zK+L0-X>+5MV*rTnzNNB6%hpuo(+fXXFvSdY+5{{z8bL|(0*iy%4T0??mcwRQ8i~~y zl_nAOaTo47u}#;(AJ4URN;|f(d4A82BhArgvYKm?2S_Fs&?*Sf8>feb$w#$>Nmfb7 zm2jM_xd)HUfrgA1eq>mojU$p>G8Aps4>^_Xvg41~N}yJby3($dI=+*!q+Gz=}|TOagRhHgZc{ z@Kas7Z7ZG1O7JIlcJ7$qfB8vm^frL?(Z|~xcTW1lm;m5qIqD;kQ1D|()uN;ehH__E z?}CW_zF}Z=M!;Ht18ySGFMK!EYK|OH4v_(#VEHQWuAjs~MQ%lYR{&Attjr72q7GH9 z1Ok9FippqkT1hI*$KKzH3d_n&lT{w^bjVhPwv23^tRRv)aw)8+@i`@#ur!e|ktWLC znhjvq2+3IBzoHh5jvFcy`_ys4HnK+=(-e@gDzYj2K+9mLL6e$JRs0C0cMJ`Nzp<^p5!`xi$aw+B}#_BVL!xoC)UUl@D-!#$7JqY~W}D3T1I3_x%X~ znUj{AZ34s=5g|AJ&|WJ?SA>fNm-qp^`%*{Tk8DoCvfoRP+M-bRt9893Qm3@O1pGgGq6WbqeN$ckT#IQDR7u`r9yd)s+MPdET-|@HB z52C + +# Welcome to python_raft’s documentation! + +modules + +# Indices and tables + +* [Index](genindex.md) +* [Module Index](py-modindex.md) +* [Search Page](search.md) diff --git a/docs/breathe/build/markdown/markdown/modules.md b/docs/breathe/build/markdown/markdown/modules.md new file mode 100644 index 0000000..1deb813 --- /dev/null +++ b/docs/breathe/build/markdown/markdown/modules.md @@ -0,0 +1,38 @@ +# framework + +* [core package](core.md) + * [Subpackages](core.md#subpackages) + * [core.commandModules package](core.commandModules.md) + * [Submodules](core.commandModules.md#submodules) + * [core.commandModules.consoleInterface module](core.commandModules.md#core-commandmodules-consoleinterface-module) + * [core.commandModules.serialClass module](core.commandModules.md#core-commandmodules-serialclass-module) + * [core.commandModules.sshConsole module](core.commandModules.md#core-commandmodules-sshconsole-module) + * [core.commandModules.telnetClass module](core.commandModules.md#core-commandmodules-telnetclass-module) + * [Module contents](core.commandModules.md#module-contents) + * [core.powerModules package](core.powerModules.md) + * [Submodules](core.powerModules.md#submodules) + * [core.powerModules.S20control module](core.powerModules.md#core-powermodules-s20control-module) + * [core.powerModules.SLP module](core.powerModules.md#core-powermodules-slp-module) + * [core.powerModules.apc module](core.powerModules.md#core-powermodules-apc-module) + * [core.powerModules.apcAos module](core.powerModules.md#core-powermodules-apcaos-module) + * [core.powerModules.hs100 module](core.powerModules.md#core-powermodules-hs100-module) + * [core.powerModules.kasaControl module](core.powerModules.md#core-powermodules-kasacontrol-module) + * [core.powerModules.none module](core.powerModules.md#core-powermodules-none-module) + * [core.powerModules.olimex module](core.powerModules.md#core-powermodules-olimex-module) + * [Module contents](core.powerModules.md#module-contents) + * [Submodules](core.md#submodules) + * [core.capture module](core.md#core-capture-module) + * [core.commonRemote module](core.md#core-commonremote-module) + * [core.configParser module](core.md#core-configparser-module) + * [core.configParserBase module](core.md#core-configparserbase-module) + * [core.decodeParams module](core.md#core-decodeparams-module) + * [core.deviceManager module](core.md#core-devicemanager-module) + * [core.logModule module](core.md#core-logmodule-module) + * [core.outboundClient module](core.md#core-outboundclient-module) + * [core.powerControl module](core.md#core-powercontrol-module) + * [core.rackController module](core.md#core-rackcontroller-module) + * [core.rcCodes module](core.md#core-rccodes-module) + * [core.testControl module](core.md#core-testcontrol-module) + * [core.utilities module](core.md#core-utilities-module) + * [core.webpageController module](core.md#core-webpagecontroller-module) + * [Module contents](core.md#module-contents) diff --git a/docs/doxygen/doxgen.conf b/docs/doxygen/doxgen.conf new file mode 100644 index 0000000..dfbe226 --- /dev/null +++ b/docs/doxygen/doxgen.conf @@ -0,0 +1,2579 @@ +# Doxyfile 1.8.17 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "python_raft" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Rapid Application Framework for Testing" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = "./docs/doxygen/" + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is +# Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# (including Cygwin) ands Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f, *.for, *.tcl, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.doc \ + *.txt \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/xcode/), introduced with OSX +# 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /