From 2d73090f3aa4bc19918128555b844c3d4e808720 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Sun, 5 Jun 2011 14:45:39 +0000 Subject: [PATCH 01/27] moved rtabmap-ros-pkg project in this project git-svn-id: http://rtabmap.googlecode.com/svn/branches/0.3/rtabmap@52 f169173b-cf89-36c8-b27e-44dbe73f0c83 --- .cproject | 663 ++ .project | 82 + 3rdParty/include/cppunit/AdditionalMessage.h | 76 + 3rdParty/include/cppunit/Asserter.h | 143 + .../cppunit/BriefTestProgressListener.h | 43 + 3rdParty/include/cppunit/CompilerOutputter.h | 146 + 3rdParty/include/cppunit/Exception.h | 90 + 3rdParty/include/cppunit/Message.h | 156 + 3rdParty/include/cppunit/Outputter.h | 26 + 3rdParty/include/cppunit/Portability.h | 177 + 3rdParty/include/cppunit/Protector.h | 94 + 3rdParty/include/cppunit/SourceLine.h | 63 + 3rdParty/include/cppunit/SynchronizedObject.h | 80 + 3rdParty/include/cppunit/Test.h | 117 + 3rdParty/include/cppunit/TestAssert.h | 428 ++ 3rdParty/include/cppunit/TestCaller.h | 204 + 3rdParty/include/cppunit/TestCase.h | 55 + 3rdParty/include/cppunit/TestComposite.h | 45 + 3rdParty/include/cppunit/TestFailure.h | 58 + 3rdParty/include/cppunit/TestFixture.h | 99 + 3rdParty/include/cppunit/TestLeaf.h | 44 + 3rdParty/include/cppunit/TestListener.h | 148 + 3rdParty/include/cppunit/TestPath.h | 211 + 3rdParty/include/cppunit/TestResult.h | 156 + .../include/cppunit/TestResultCollector.h | 87 + 3rdParty/include/cppunit/TestRunner.h | 135 + .../include/cppunit/TestSuccessListener.h | 39 + 3rdParty/include/cppunit/TestSuite.h | 80 + 3rdParty/include/cppunit/TextOutputter.h | 59 + .../cppunit/TextTestProgressListener.h | 44 + 3rdParty/include/cppunit/TextTestResult.h | 39 + 3rdParty/include/cppunit/TextTestRunner.h | 6 + 3rdParty/include/cppunit/XmlOutputter.h | 167 + 3rdParty/include/cppunit/XmlOutputterHook.h | 163 + 3rdParty/include/cppunit/config-auto.h | 160 + 3rdParty/include/cppunit/config/CppUnitApi.h | 33 + .../include/cppunit/config/SelectDllLoader.h | 76 + .../include/cppunit/config/SourcePrefix.h | 14 + 3rdParty/include/cppunit/config/config-bcb5.h | 47 + 3rdParty/include/cppunit/config/config-evc4.h | 78 + 3rdParty/include/cppunit/config/config-mac.h | 58 + .../include/cppunit/config/config-msvc6.h | 83 + .../cppunit/extensions/AutoRegisterSuite.h | 83 + .../extensions/ExceptionTestCaseDecorator.h | 104 + .../include/cppunit/extensions/HelperMacros.h | 541 ++ .../include/cppunit/extensions/Orthodox.h | 95 + .../include/cppunit/extensions/RepeatedTest.h | 43 + .../cppunit/extensions/TestCaseDecorator.h | 40 + .../cppunit/extensions/TestDecorator.h | 49 + .../include/cppunit/extensions/TestFactory.h | 27 + .../cppunit/extensions/TestFactoryRegistry.h | 182 + .../cppunit/extensions/TestFixtureFactory.h | 50 + .../include/cppunit/extensions/TestNamer.h | 89 + .../include/cppunit/extensions/TestSetUp.h | 34 + .../extensions/TestSuiteBuilderContext.h | 131 + .../cppunit/extensions/TestSuiteFactory.h | 27 + .../cppunit/extensions/TypeInfoHelper.h | 33 + .../cppunit/plugin/DynamicLibraryManager.h | 121 + .../plugin/DynamicLibraryManagerException.h | 53 + .../include/cppunit/plugin/PlugInManager.h | 113 + .../include/cppunit/plugin/PlugInParameters.h | 36 + 3rdParty/include/cppunit/plugin/TestPlugIn.h | 200 + .../cppunit/plugin/TestPlugInDefaultImpl.h | 52 + .../cppunit/portability/CppUnitDeque.h | 25 + .../include/cppunit/portability/CppUnitMap.h | 29 + .../include/cppunit/portability/CppUnitSet.h | 28 + .../cppunit/portability/CppUnitStack.h | 26 + .../cppunit/portability/CppUnitVector.h | 25 + .../cppunit/portability/FloatingPoint.h | 54 + 3rdParty/include/cppunit/portability/Stream.h | 347 + 3rdParty/include/cppunit/tools/Algorithm.h | 23 + 3rdParty/include/cppunit/tools/StringTools.h | 34 + 3rdParty/include/cppunit/tools/XmlDocument.h | 86 + 3rdParty/include/cppunit/tools/XmlElement.h | 149 + .../include/cppunit/ui/mfc/MfcTestRunner.h | 76 + 3rdParty/include/cppunit/ui/mfc/TestRunner.h | 21 + 3rdParty/include/cppunit/ui/qt/Config.h | 21 + 3rdParty/include/cppunit/ui/qt/QtTestRunner.h | 85 + 3rdParty/include/cppunit/ui/qt/TestRunner.h | 11 + 3rdParty/include/cppunit/ui/text/TestRunner.h | 24 + .../include/cppunit/ui/text/TextTestRunner.h | 97 + .../msvc6/DSPlugin/TestRunnerDSPluginVC6.h | 190 + .../msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c | 50 + 3rdParty/include/msvc6/USED_WITH_CPPUNIT.txt | 0 .../msvc6/testrunner/TestPlugInInterface.h | 55 + .../include/msvc6/testrunner/TestRunner.h | 17 + 3rdParty/include/sqlite3/sqlite3.h | 5759 +++++++++++++++++ 3rdParty/include/sqlite3/sqlite3ext.h | 380 ++ 3rdParty/lib/libcppunit.dll.a | Bin 0 -> 596414 bytes 3rdParty/lib/libsqlite3.dll.a | Bin 0 -> 113770 bytes CMakeLists.txt | 271 + COPYING.txt | 674 ++ Matlab/DumpMemorySign.txt | 86 + Matlab/README.txt | 4 + Matlab/RecursiveBayes.m | 187 + Matlab/RecursiveBayesCtabmap.m | 121 + Matlab/ShowLogs/ShowLogs.m | 340 + Matlab/ShowLogs/getPrecisionRecall.m | 109 + Matlab/ShowLogs/importfile.m | 22 + Matlab/ShowLogs/logaHeaders.txt | 17 + Matlab/Tests/090306-3_db-Dictionary.txt | 4555 +++++++++++++ Matlab/Tests/090306-3_db-Signatures.txt | 84 + Matlab/Tests/README.txt | 1 + Matlab/Tests/TestAdjustLikelihood.m | 10 + Matlab/Tests/TestBayesFilter.m | 35 + Matlab/Tests/TestComputeLikelihood.m | 28 + Matlab/Tests/TestUpdateCommonSignature.m | 27 + Matlab/adjustLikelihood.m | 17 + Matlab/computeLikelihood.m | 46 + Matlab/generatePrediction.m | 85 + Matlab/updateCommonSignature.m | 69 + Matlab/updateDictionary.m | 29 + README | 116 + Version.h.in | 33 + app/CMakeLists.txt | 1 + app/src/CMakeLists.txt | 130 + app/src/ObjDeletionHandler.h | 57 + app/src/RTAB-Map.icns | Bin 0 -> 103056 bytes app/src/RTAB-Map.ico | Bin 0 -> 53112 bytes app/src/RTAB-Map.rc | 1 + app/src/main.cpp | 86 + bin/data/090206-3.db | Bin 0 -> 7080960 bytes bin/data/090206-3/1.jpg | Bin 0 -> 11938 bytes bin/data/090206-3/10.jpg | Bin 0 -> 12322 bytes bin/data/090206-3/11.jpg | Bin 0 -> 9001 bytes bin/data/090206-3/12.jpg | Bin 0 -> 9844 bytes bin/data/090206-3/13.jpg | Bin 0 -> 12510 bytes bin/data/090206-3/14.jpg | Bin 0 -> 13114 bytes bin/data/090206-3/15.jpg | Bin 0 -> 12469 bytes bin/data/090206-3/16.jpg | Bin 0 -> 8968 bytes bin/data/090206-3/17.jpg | Bin 0 -> 7687 bytes bin/data/090206-3/18.jpg | Bin 0 -> 10010 bytes bin/data/090206-3/19.jpg | Bin 0 -> 2901 bytes bin/data/090206-3/2.jpg | Bin 0 -> 12297 bytes bin/data/090206-3/20.jpg | Bin 0 -> 14007 bytes bin/data/090206-3/21.jpg | Bin 0 -> 10928 bytes bin/data/090206-3/22.jpg | Bin 0 -> 12577 bytes bin/data/090206-3/23.jpg | Bin 0 -> 13301 bytes bin/data/090206-3/24.jpg | Bin 0 -> 11347 bytes bin/data/090206-3/25.jpg | Bin 0 -> 8640 bytes bin/data/090206-3/26.jpg | Bin 0 -> 12811 bytes bin/data/090206-3/27.jpg | Bin 0 -> 13495 bytes bin/data/090206-3/28.jpg | Bin 0 -> 14110 bytes bin/data/090206-3/29.jpg | Bin 0 -> 11966 bytes bin/data/090206-3/3.jpg | Bin 0 -> 10688 bytes bin/data/090206-3/30.jpg | Bin 0 -> 13253 bytes bin/data/090206-3/31.jpg | Bin 0 -> 13825 bytes bin/data/090206-3/32.jpg | Bin 0 -> 14991 bytes bin/data/090206-3/33.jpg | Bin 0 -> 16628 bytes bin/data/090206-3/34.jpg | Bin 0 -> 19141 bytes bin/data/090206-3/35.jpg | Bin 0 -> 14721 bytes bin/data/090206-3/36.jpg | Bin 0 -> 11695 bytes bin/data/090206-3/37.jpg | Bin 0 -> 11369 bytes bin/data/090206-3/38.jpg | Bin 0 -> 11663 bytes bin/data/090206-3/39.jpg | Bin 0 -> 11045 bytes bin/data/090206-3/4.jpg | Bin 0 -> 12591 bytes bin/data/090206-3/40.jpg | Bin 0 -> 7075 bytes bin/data/090206-3/41.jpg | Bin 0 -> 13531 bytes bin/data/090206-3/42.jpg | Bin 0 -> 12069 bytes bin/data/090206-3/43.jpg | Bin 0 -> 11971 bytes bin/data/090206-3/44.jpg | Bin 0 -> 11733 bytes bin/data/090206-3/45.jpg | Bin 0 -> 14215 bytes bin/data/090206-3/46.jpg | Bin 0 -> 2616 bytes bin/data/090206-3/47.jpg | Bin 0 -> 10761 bytes bin/data/090206-3/48.jpg | Bin 0 -> 9864 bytes bin/data/090206-3/49.jpg | Bin 0 -> 11912 bytes bin/data/090206-3/5.jpg | Bin 0 -> 11745 bytes bin/data/090206-3/50.jpg | Bin 0 -> 9792 bytes bin/data/090206-3/51.jpg | Bin 0 -> 8851 bytes bin/data/090206-3/52.jpg | Bin 0 -> 10957 bytes bin/data/090206-3/53.jpg | Bin 0 -> 14733 bytes bin/data/090206-3/54.jpg | Bin 0 -> 11601 bytes bin/data/090206-3/55.jpg | Bin 0 -> 11570 bytes bin/data/090206-3/56.jpg | Bin 0 -> 8213 bytes bin/data/090206-3/57.jpg | Bin 0 -> 8928 bytes bin/data/090206-3/58.jpg | Bin 0 -> 8818 bytes bin/data/090206-3/59.jpg | Bin 0 -> 5927 bytes bin/data/090206-3/6.jpg | Bin 0 -> 11748 bytes bin/data/090206-3/60.jpg | Bin 0 -> 11674 bytes bin/data/090206-3/61.jpg | Bin 0 -> 12261 bytes bin/data/090206-3/62.jpg | Bin 0 -> 13726 bytes bin/data/090206-3/63.jpg | Bin 0 -> 13797 bytes bin/data/090206-3/64.jpg | Bin 0 -> 11466 bytes bin/data/090206-3/65.jpg | Bin 0 -> 8519 bytes bin/data/090206-3/66.jpg | Bin 0 -> 10865 bytes bin/data/090206-3/67.jpg | Bin 0 -> 13973 bytes bin/data/090206-3/68.jpg | Bin 0 -> 15160 bytes bin/data/090206-3/69.jpg | Bin 0 -> 14658 bytes bin/data/090206-3/7.jpg | Bin 0 -> 11272 bytes bin/data/090206-3/70.jpg | Bin 0 -> 13885 bytes bin/data/090206-3/71.jpg | Bin 0 -> 13162 bytes bin/data/090206-3/72.jpg | Bin 0 -> 15632 bytes bin/data/090206-3/73.jpg | Bin 0 -> 15992 bytes bin/data/090206-3/74.jpg | Bin 0 -> 16804 bytes bin/data/090206-3/75.jpg | Bin 0 -> 13960 bytes bin/data/090206-3/76.jpg | Bin 0 -> 10778 bytes bin/data/090206-3/77.jpg | Bin 0 -> 12351 bytes bin/data/090206-3/78.jpg | Bin 0 -> 10387 bytes bin/data/090206-3/79.jpg | Bin 0 -> 10773 bytes bin/data/090206-3/8.jpg | Bin 0 -> 9848 bytes bin/data/090206-3/80.jpg | Bin 0 -> 9350 bytes bin/data/090206-3/81.jpg | Bin 0 -> 13450 bytes bin/data/090206-3/82.jpg | Bin 0 -> 12974 bytes bin/data/090206-3/83.jpg | Bin 0 -> 10329 bytes bin/data/090206-3/84.jpg | Bin 0 -> 11240 bytes bin/data/090206-3/9.jpg | Bin 0 -> 10701 bytes bin/data/090206-3_GT.bmp | Bin 0 -> 8134 bytes bin/data/BoxImgs/1.png | Bin 0 -> 50728 bytes bin/data/BoxImgs/2.png | Bin 0 -> 122490 bytes bin/data/README | 1 + bin/data/samples.zip | Bin 0 -> 2004629 bytes bin/libcppunit-1-12-1.dll | Bin 0 -> 6456935 bytes bin/libsqlite3-0.dll | Bin 0 -> 1193758 bytes bin/sqlite3.exe | Bin 0 -> 108684 bytes build/.empty | 0 cmake_modules/FindCppUnit.cmake | 30 + cmake_modules/FindOpenCV.cmake | 323 + cmake_modules/FindPthreads.cmake | 98 + cmake_modules/FindROS.cmake | 25 + cmake_modules/FindSqlite3.cmake | 47 + cmake_modules/FindUtiLite.cmake | 62 + cmake_uninstall.cmake.in | 27 + corelib/CMakeLists.txt | 16 + corelib/ConsoleApp/CMakeLists.txt | 33 + corelib/ConsoleApp/main.cpp | 560 ++ corelib/DatabaseViewer/CMakeLists.txt | 57 + corelib/DatabaseViewer/MainWindow.cpp | 417 ++ corelib/DatabaseViewer/MainWindow.h | 69 + corelib/DatabaseViewer/main.cpp | 42 + corelib/DatabaseViewer/ui/MainWindow.ui | 202 + corelib/ImagesJoiner/CMakeLists.txt | 32 + corelib/ImagesJoiner/main.cpp | 176 + corelib/WebcamCapture/CMakeLists.txt | 33 + corelib/WebcamCapture/main.cpp | 260 + corelib/include/rtabmap/core/Camera.h | 237 + corelib/include/rtabmap/core/CameraEvent.h | 79 + corelib/include/rtabmap/core/DBDriver.h | 178 + .../include/rtabmap/core/DBDriverFactory.h | 42 + .../include/rtabmap/core/EpipolarGeometry.h | 33 + .../include/rtabmap/core/KeypointDescriptor.h | 142 + .../include/rtabmap/core/KeypointDetector.h | 107 + corelib/include/rtabmap/core/Parameters.h | 243 + corelib/include/rtabmap/core/Rtabmap.h | 165 + corelib/include/rtabmap/core/RtabmapEvent.h | 233 + corelib/include/rtabmap/core/RtabmapExp.h | 37 + corelib/include/rtabmap/core/SMState.h | 97 + corelib/src/BayesFilter.cpp | 462 ++ corelib/src/BayesFilter.h | 69 + corelib/src/CMakeLists.txt | 77 + corelib/src/Camera.cpp | 651 ++ corelib/src/ConvertUTF.c | 539 ++ corelib/src/ConvertUTF.h | 149 + corelib/src/DBDriver.cpp | 774 +++ corelib/src/DBDriverFactory.cpp | 70 + corelib/src/DBDriverSqlite3.cpp | 3082 +++++++++ corelib/src/DBDriverSqlite3.h | 90 + corelib/src/EpipolarGeometry.cpp | 111 + corelib/src/KeypointDescriptor.cpp | 541 ++ corelib/src/KeypointDetector.cpp | 496 ++ corelib/src/KeypointMemory.cpp | 1219 ++++ corelib/src/KeypointMemory.h | 89 + corelib/src/Memory.cpp | 1643 +++++ corelib/src/Memory.h | 160 + corelib/src/NearestNeighbor.cpp | 189 + corelib/src/NearestNeighbor.h | 152 + corelib/src/Node.h | 98 + corelib/src/Parameters.cpp | 80 + corelib/src/Rtabmap.cpp | 1618 +++++ corelib/src/RtabmapEvent.cpp | 150 + corelib/src/Signature.cpp | 243 + corelib/src/Signature.h | 131 + corelib/src/SimpleIni.h | 3258 ++++++++++ corelib/src/VWDictionary.cpp | 1136 ++++ corelib/src/VWDictionary.h | 116 + corelib/src/VerifyHypotheses.cpp | 595 ++ corelib/src/VerifyHypotheses.h | 140 + corelib/src/VisualWord.cpp | 78 + corelib/src/VisualWord.h | 60 + corelib/src/resources/DatabaseSchema.sql | 198 + corelib/tests/CMakeLists.txt | 37 + corelib/tests/Tests.cpp | 483 ++ corelib/tests/Tests.h | 77 + corelib/tests/main.cpp | 81 + doc/NewCollege.png | Bin 0 -> 53975 bytes guilib/CMakeLists.txt | 2 + guilib/ExamplePlot/CMakeLists.txt | 36 + guilib/ExamplePlot/MainWindow.h | 45 + guilib/ExamplePlot/main.cpp | 12 + guilib/Mockup/MainWindow.bmp | Bin 0 -> 2477130 bytes guilib/Mockup/MockupAll.pptx | Bin 0 -> 291646 bytes guilib/include/rtabmap/gui/MainWindow.h | 162 + .../include/rtabmap/gui/PreferencesDialog.h | 208 + guilib/src/AboutDialog.cpp | 32 + guilib/src/AboutDialog.h | 44 + guilib/src/CMakeLists.txt | 101 + guilib/src/ConsoleWidget.cpp | 77 + guilib/src/ConsoleWidget.h | 52 + guilib/src/DetailedProgressDialog.cpp | 137 + guilib/src/DetailedProgressDialog.h | 68 + guilib/src/GuiLib.qrc | 21 + guilib/src/ImageView.cpp | 115 + guilib/src/ImageView.h | 53 + guilib/src/KeypointItem.cpp | 118 + guilib/src/KeypointItem.h | 54 + guilib/src/MainWindow.cpp | 1394 ++++ guilib/src/PdfPlot.cpp | 148 + guilib/src/PdfPlot.h | 67 + guilib/src/Plot.cpp | 2207 +++++++ guilib/src/Plot.h | 380 ++ guilib/src/PreferencesDialog.cpp | 1651 +++++ guilib/src/StatsToolBox.cpp | 435 ++ guilib/src/StatsToolBox.h | 103 + guilib/src/images/IntRoLab.png | Bin 0 -> 33861 bytes guilib/src/images/IntRoLabSmall.png | Bin 0 -> 12477 bytes guilib/src/images/Pause.ico | Bin 0 -> 9662 bytes guilib/src/images/PauseLoopRejected.ico | Bin 0 -> 9662 bytes guilib/src/images/PauseNormal.png | Bin 0 -> 2598 bytes guilib/src/images/PauseNormalRed.png | Bin 0 -> 2633 bytes guilib/src/images/PauseOnLoop.ico | Bin 0 -> 9662 bytes guilib/src/images/Play1Normal.png | Bin 0 -> 4087 bytes guilib/src/images/Plot.ico | Bin 0 -> 10806 bytes guilib/src/images/Plot16.png | Bin 0 -> 169 bytes guilib/src/images/Plot48.png | Bin 0 -> 349 bytes guilib/src/images/RTAB-Map.ico | Bin 0 -> 53112 bytes guilib/src/images/RTAB-Map.png | Bin 0 -> 33311 bytes guilib/src/images/Stop1Normal.png | Bin 0 -> 4410 bytes guilib/src/images/Stop1NormalYellow.png | Bin 0 -> 4281 bytes .../crosshatch_metal_grille_9280154_150.JPG | Bin 0 -> 2164 bytes guilib/src/images/metal_7280826_512.jpg | Bin 0 -> 44182 bytes guilib/src/qss/default.qss | 17 + guilib/src/qtipl.cpp | 53 + guilib/src/qtipl.h | 32 + guilib/src/resources/PreferencesModel.txt | 22 + guilib/src/ui/aboutDialog.ui | 252 + guilib/src/ui/consoleWidget.ui | 34 + guilib/src/ui/mainWindow.ui | 877 +++ guilib/src/ui/preferencesDialog.ui | 2877 ++++++++ lib/.empty | 0 338 files changed, 56859 insertions(+) create mode 100644 .cproject create mode 100644 .project create mode 100644 3rdParty/include/cppunit/AdditionalMessage.h create mode 100644 3rdParty/include/cppunit/Asserter.h create mode 100644 3rdParty/include/cppunit/BriefTestProgressListener.h create mode 100644 3rdParty/include/cppunit/CompilerOutputter.h create mode 100644 3rdParty/include/cppunit/Exception.h create mode 100644 3rdParty/include/cppunit/Message.h create mode 100644 3rdParty/include/cppunit/Outputter.h create mode 100644 3rdParty/include/cppunit/Portability.h create mode 100644 3rdParty/include/cppunit/Protector.h create mode 100644 3rdParty/include/cppunit/SourceLine.h create mode 100644 3rdParty/include/cppunit/SynchronizedObject.h create mode 100644 3rdParty/include/cppunit/Test.h create mode 100644 3rdParty/include/cppunit/TestAssert.h create mode 100644 3rdParty/include/cppunit/TestCaller.h create mode 100644 3rdParty/include/cppunit/TestCase.h create mode 100644 3rdParty/include/cppunit/TestComposite.h create mode 100644 3rdParty/include/cppunit/TestFailure.h create mode 100644 3rdParty/include/cppunit/TestFixture.h create mode 100644 3rdParty/include/cppunit/TestLeaf.h create mode 100644 3rdParty/include/cppunit/TestListener.h create mode 100644 3rdParty/include/cppunit/TestPath.h create mode 100644 3rdParty/include/cppunit/TestResult.h create mode 100644 3rdParty/include/cppunit/TestResultCollector.h create mode 100644 3rdParty/include/cppunit/TestRunner.h create mode 100644 3rdParty/include/cppunit/TestSuccessListener.h create mode 100644 3rdParty/include/cppunit/TestSuite.h create mode 100644 3rdParty/include/cppunit/TextOutputter.h create mode 100644 3rdParty/include/cppunit/TextTestProgressListener.h create mode 100644 3rdParty/include/cppunit/TextTestResult.h create mode 100644 3rdParty/include/cppunit/TextTestRunner.h create mode 100644 3rdParty/include/cppunit/XmlOutputter.h create mode 100644 3rdParty/include/cppunit/XmlOutputterHook.h create mode 100644 3rdParty/include/cppunit/config-auto.h create mode 100644 3rdParty/include/cppunit/config/CppUnitApi.h create mode 100644 3rdParty/include/cppunit/config/SelectDllLoader.h create mode 100644 3rdParty/include/cppunit/config/SourcePrefix.h create mode 100644 3rdParty/include/cppunit/config/config-bcb5.h create mode 100644 3rdParty/include/cppunit/config/config-evc4.h create mode 100644 3rdParty/include/cppunit/config/config-mac.h create mode 100644 3rdParty/include/cppunit/config/config-msvc6.h create mode 100644 3rdParty/include/cppunit/extensions/AutoRegisterSuite.h create mode 100644 3rdParty/include/cppunit/extensions/ExceptionTestCaseDecorator.h create mode 100644 3rdParty/include/cppunit/extensions/HelperMacros.h create mode 100644 3rdParty/include/cppunit/extensions/Orthodox.h create mode 100644 3rdParty/include/cppunit/extensions/RepeatedTest.h create mode 100644 3rdParty/include/cppunit/extensions/TestCaseDecorator.h create mode 100644 3rdParty/include/cppunit/extensions/TestDecorator.h create mode 100644 3rdParty/include/cppunit/extensions/TestFactory.h create mode 100644 3rdParty/include/cppunit/extensions/TestFactoryRegistry.h create mode 100644 3rdParty/include/cppunit/extensions/TestFixtureFactory.h create mode 100644 3rdParty/include/cppunit/extensions/TestNamer.h create mode 100644 3rdParty/include/cppunit/extensions/TestSetUp.h create mode 100644 3rdParty/include/cppunit/extensions/TestSuiteBuilderContext.h create mode 100644 3rdParty/include/cppunit/extensions/TestSuiteFactory.h create mode 100644 3rdParty/include/cppunit/extensions/TypeInfoHelper.h create mode 100644 3rdParty/include/cppunit/plugin/DynamicLibraryManager.h create mode 100644 3rdParty/include/cppunit/plugin/DynamicLibraryManagerException.h create mode 100644 3rdParty/include/cppunit/plugin/PlugInManager.h create mode 100644 3rdParty/include/cppunit/plugin/PlugInParameters.h create mode 100644 3rdParty/include/cppunit/plugin/TestPlugIn.h create mode 100644 3rdParty/include/cppunit/plugin/TestPlugInDefaultImpl.h create mode 100644 3rdParty/include/cppunit/portability/CppUnitDeque.h create mode 100644 3rdParty/include/cppunit/portability/CppUnitMap.h create mode 100644 3rdParty/include/cppunit/portability/CppUnitSet.h create mode 100644 3rdParty/include/cppunit/portability/CppUnitStack.h create mode 100644 3rdParty/include/cppunit/portability/CppUnitVector.h create mode 100644 3rdParty/include/cppunit/portability/FloatingPoint.h create mode 100644 3rdParty/include/cppunit/portability/Stream.h create mode 100644 3rdParty/include/cppunit/tools/Algorithm.h create mode 100644 3rdParty/include/cppunit/tools/StringTools.h create mode 100644 3rdParty/include/cppunit/tools/XmlDocument.h create mode 100644 3rdParty/include/cppunit/tools/XmlElement.h create mode 100644 3rdParty/include/cppunit/ui/mfc/MfcTestRunner.h create mode 100644 3rdParty/include/cppunit/ui/mfc/TestRunner.h create mode 100644 3rdParty/include/cppunit/ui/qt/Config.h create mode 100644 3rdParty/include/cppunit/ui/qt/QtTestRunner.h create mode 100644 3rdParty/include/cppunit/ui/qt/TestRunner.h create mode 100644 3rdParty/include/cppunit/ui/text/TestRunner.h create mode 100644 3rdParty/include/cppunit/ui/text/TextTestRunner.h create mode 100644 3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h create mode 100644 3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c create mode 100644 3rdParty/include/msvc6/USED_WITH_CPPUNIT.txt create mode 100644 3rdParty/include/msvc6/testrunner/TestPlugInInterface.h create mode 100644 3rdParty/include/msvc6/testrunner/TestRunner.h create mode 100644 3rdParty/include/sqlite3/sqlite3.h create mode 100644 3rdParty/include/sqlite3/sqlite3ext.h create mode 100644 3rdParty/lib/libcppunit.dll.a create mode 100644 3rdParty/lib/libsqlite3.dll.a create mode 100644 CMakeLists.txt create mode 100644 COPYING.txt create mode 100644 Matlab/DumpMemorySign.txt create mode 100644 Matlab/README.txt create mode 100644 Matlab/RecursiveBayes.m create mode 100644 Matlab/RecursiveBayesCtabmap.m create mode 100644 Matlab/ShowLogs/ShowLogs.m create mode 100644 Matlab/ShowLogs/getPrecisionRecall.m create mode 100644 Matlab/ShowLogs/importfile.m create mode 100644 Matlab/ShowLogs/logaHeaders.txt create mode 100644 Matlab/Tests/090306-3_db-Dictionary.txt create mode 100644 Matlab/Tests/090306-3_db-Signatures.txt create mode 100644 Matlab/Tests/README.txt create mode 100644 Matlab/Tests/TestAdjustLikelihood.m create mode 100644 Matlab/Tests/TestBayesFilter.m create mode 100644 Matlab/Tests/TestComputeLikelihood.m create mode 100644 Matlab/Tests/TestUpdateCommonSignature.m create mode 100644 Matlab/adjustLikelihood.m create mode 100644 Matlab/computeLikelihood.m create mode 100644 Matlab/generatePrediction.m create mode 100644 Matlab/updateCommonSignature.m create mode 100644 Matlab/updateDictionary.m create mode 100644 README create mode 100644 Version.h.in create mode 100644 app/CMakeLists.txt create mode 100644 app/src/CMakeLists.txt create mode 100644 app/src/ObjDeletionHandler.h create mode 100644 app/src/RTAB-Map.icns create mode 100644 app/src/RTAB-Map.ico create mode 100644 app/src/RTAB-Map.rc create mode 100644 app/src/main.cpp create mode 100644 bin/data/090206-3.db create mode 100644 bin/data/090206-3/1.jpg create mode 100644 bin/data/090206-3/10.jpg create mode 100644 bin/data/090206-3/11.jpg create mode 100644 bin/data/090206-3/12.jpg create mode 100644 bin/data/090206-3/13.jpg create mode 100644 bin/data/090206-3/14.jpg create mode 100644 bin/data/090206-3/15.jpg create mode 100644 bin/data/090206-3/16.jpg create mode 100644 bin/data/090206-3/17.jpg create mode 100644 bin/data/090206-3/18.jpg create mode 100644 bin/data/090206-3/19.jpg create mode 100644 bin/data/090206-3/2.jpg create mode 100644 bin/data/090206-3/20.jpg create mode 100644 bin/data/090206-3/21.jpg create mode 100644 bin/data/090206-3/22.jpg create mode 100644 bin/data/090206-3/23.jpg create mode 100644 bin/data/090206-3/24.jpg create mode 100644 bin/data/090206-3/25.jpg create mode 100644 bin/data/090206-3/26.jpg create mode 100644 bin/data/090206-3/27.jpg create mode 100644 bin/data/090206-3/28.jpg create mode 100644 bin/data/090206-3/29.jpg create mode 100644 bin/data/090206-3/3.jpg create mode 100644 bin/data/090206-3/30.jpg create mode 100644 bin/data/090206-3/31.jpg create mode 100644 bin/data/090206-3/32.jpg create mode 100644 bin/data/090206-3/33.jpg create mode 100644 bin/data/090206-3/34.jpg create mode 100644 bin/data/090206-3/35.jpg create mode 100644 bin/data/090206-3/36.jpg create mode 100644 bin/data/090206-3/37.jpg create mode 100644 bin/data/090206-3/38.jpg create mode 100644 bin/data/090206-3/39.jpg create mode 100644 bin/data/090206-3/4.jpg create mode 100644 bin/data/090206-3/40.jpg create mode 100644 bin/data/090206-3/41.jpg create mode 100644 bin/data/090206-3/42.jpg create mode 100644 bin/data/090206-3/43.jpg create mode 100644 bin/data/090206-3/44.jpg create mode 100644 bin/data/090206-3/45.jpg create mode 100644 bin/data/090206-3/46.jpg create mode 100644 bin/data/090206-3/47.jpg create mode 100644 bin/data/090206-3/48.jpg create mode 100644 bin/data/090206-3/49.jpg create mode 100644 bin/data/090206-3/5.jpg create mode 100644 bin/data/090206-3/50.jpg create mode 100644 bin/data/090206-3/51.jpg create mode 100644 bin/data/090206-3/52.jpg create mode 100644 bin/data/090206-3/53.jpg create mode 100644 bin/data/090206-3/54.jpg create mode 100644 bin/data/090206-3/55.jpg create mode 100644 bin/data/090206-3/56.jpg create mode 100644 bin/data/090206-3/57.jpg create mode 100644 bin/data/090206-3/58.jpg create mode 100644 bin/data/090206-3/59.jpg create mode 100644 bin/data/090206-3/6.jpg create mode 100644 bin/data/090206-3/60.jpg create mode 100644 bin/data/090206-3/61.jpg create mode 100644 bin/data/090206-3/62.jpg create mode 100644 bin/data/090206-3/63.jpg create mode 100644 bin/data/090206-3/64.jpg create mode 100644 bin/data/090206-3/65.jpg create mode 100644 bin/data/090206-3/66.jpg create mode 100644 bin/data/090206-3/67.jpg create mode 100644 bin/data/090206-3/68.jpg create mode 100644 bin/data/090206-3/69.jpg create mode 100644 bin/data/090206-3/7.jpg create mode 100644 bin/data/090206-3/70.jpg create mode 100644 bin/data/090206-3/71.jpg create mode 100644 bin/data/090206-3/72.jpg create mode 100644 bin/data/090206-3/73.jpg create mode 100644 bin/data/090206-3/74.jpg create mode 100644 bin/data/090206-3/75.jpg create mode 100644 bin/data/090206-3/76.jpg create mode 100644 bin/data/090206-3/77.jpg create mode 100644 bin/data/090206-3/78.jpg create mode 100644 bin/data/090206-3/79.jpg create mode 100644 bin/data/090206-3/8.jpg create mode 100644 bin/data/090206-3/80.jpg create mode 100644 bin/data/090206-3/81.jpg create mode 100644 bin/data/090206-3/82.jpg create mode 100644 bin/data/090206-3/83.jpg create mode 100644 bin/data/090206-3/84.jpg create mode 100644 bin/data/090206-3/9.jpg create mode 100644 bin/data/090206-3_GT.bmp create mode 100644 bin/data/BoxImgs/1.png create mode 100644 bin/data/BoxImgs/2.png create mode 100644 bin/data/README create mode 100644 bin/data/samples.zip create mode 100644 bin/libcppunit-1-12-1.dll create mode 100644 bin/libsqlite3-0.dll create mode 100644 bin/sqlite3.exe create mode 100644 build/.empty create mode 100644 cmake_modules/FindCppUnit.cmake create mode 100644 cmake_modules/FindOpenCV.cmake create mode 100644 cmake_modules/FindPthreads.cmake create mode 100644 cmake_modules/FindROS.cmake create mode 100644 cmake_modules/FindSqlite3.cmake create mode 100644 cmake_modules/FindUtiLite.cmake create mode 100644 cmake_uninstall.cmake.in create mode 100644 corelib/CMakeLists.txt create mode 100644 corelib/ConsoleApp/CMakeLists.txt create mode 100644 corelib/ConsoleApp/main.cpp create mode 100644 corelib/DatabaseViewer/CMakeLists.txt create mode 100644 corelib/DatabaseViewer/MainWindow.cpp create mode 100644 corelib/DatabaseViewer/MainWindow.h create mode 100644 corelib/DatabaseViewer/main.cpp create mode 100644 corelib/DatabaseViewer/ui/MainWindow.ui create mode 100644 corelib/ImagesJoiner/CMakeLists.txt create mode 100644 corelib/ImagesJoiner/main.cpp create mode 100644 corelib/WebcamCapture/CMakeLists.txt create mode 100644 corelib/WebcamCapture/main.cpp create mode 100644 corelib/include/rtabmap/core/Camera.h create mode 100644 corelib/include/rtabmap/core/CameraEvent.h create mode 100644 corelib/include/rtabmap/core/DBDriver.h create mode 100644 corelib/include/rtabmap/core/DBDriverFactory.h create mode 100644 corelib/include/rtabmap/core/EpipolarGeometry.h create mode 100644 corelib/include/rtabmap/core/KeypointDescriptor.h create mode 100644 corelib/include/rtabmap/core/KeypointDetector.h create mode 100644 corelib/include/rtabmap/core/Parameters.h create mode 100644 corelib/include/rtabmap/core/Rtabmap.h create mode 100644 corelib/include/rtabmap/core/RtabmapEvent.h create mode 100644 corelib/include/rtabmap/core/RtabmapExp.h create mode 100644 corelib/include/rtabmap/core/SMState.h create mode 100644 corelib/src/BayesFilter.cpp create mode 100644 corelib/src/BayesFilter.h create mode 100644 corelib/src/CMakeLists.txt create mode 100644 corelib/src/Camera.cpp create mode 100644 corelib/src/ConvertUTF.c create mode 100644 corelib/src/ConvertUTF.h create mode 100644 corelib/src/DBDriver.cpp create mode 100644 corelib/src/DBDriverFactory.cpp create mode 100644 corelib/src/DBDriverSqlite3.cpp create mode 100644 corelib/src/DBDriverSqlite3.h create mode 100644 corelib/src/EpipolarGeometry.cpp create mode 100644 corelib/src/KeypointDescriptor.cpp create mode 100644 corelib/src/KeypointDetector.cpp create mode 100644 corelib/src/KeypointMemory.cpp create mode 100644 corelib/src/KeypointMemory.h create mode 100644 corelib/src/Memory.cpp create mode 100644 corelib/src/Memory.h create mode 100644 corelib/src/NearestNeighbor.cpp create mode 100644 corelib/src/NearestNeighbor.h create mode 100644 corelib/src/Node.h create mode 100644 corelib/src/Parameters.cpp create mode 100644 corelib/src/Rtabmap.cpp create mode 100644 corelib/src/RtabmapEvent.cpp create mode 100644 corelib/src/Signature.cpp create mode 100644 corelib/src/Signature.h create mode 100644 corelib/src/SimpleIni.h create mode 100644 corelib/src/VWDictionary.cpp create mode 100644 corelib/src/VWDictionary.h create mode 100644 corelib/src/VerifyHypotheses.cpp create mode 100644 corelib/src/VerifyHypotheses.h create mode 100644 corelib/src/VisualWord.cpp create mode 100644 corelib/src/VisualWord.h create mode 100644 corelib/src/resources/DatabaseSchema.sql create mode 100644 corelib/tests/CMakeLists.txt create mode 100644 corelib/tests/Tests.cpp create mode 100644 corelib/tests/Tests.h create mode 100644 corelib/tests/main.cpp create mode 100644 doc/NewCollege.png create mode 100644 guilib/CMakeLists.txt create mode 100644 guilib/ExamplePlot/CMakeLists.txt create mode 100644 guilib/ExamplePlot/MainWindow.h create mode 100644 guilib/ExamplePlot/main.cpp create mode 100644 guilib/Mockup/MainWindow.bmp create mode 100644 guilib/Mockup/MockupAll.pptx create mode 100644 guilib/include/rtabmap/gui/MainWindow.h create mode 100644 guilib/include/rtabmap/gui/PreferencesDialog.h create mode 100644 guilib/src/AboutDialog.cpp create mode 100644 guilib/src/AboutDialog.h create mode 100644 guilib/src/CMakeLists.txt create mode 100644 guilib/src/ConsoleWidget.cpp create mode 100644 guilib/src/ConsoleWidget.h create mode 100644 guilib/src/DetailedProgressDialog.cpp create mode 100644 guilib/src/DetailedProgressDialog.h create mode 100644 guilib/src/GuiLib.qrc create mode 100644 guilib/src/ImageView.cpp create mode 100644 guilib/src/ImageView.h create mode 100644 guilib/src/KeypointItem.cpp create mode 100644 guilib/src/KeypointItem.h create mode 100644 guilib/src/MainWindow.cpp create mode 100644 guilib/src/PdfPlot.cpp create mode 100644 guilib/src/PdfPlot.h create mode 100644 guilib/src/Plot.cpp create mode 100644 guilib/src/Plot.h create mode 100644 guilib/src/PreferencesDialog.cpp create mode 100644 guilib/src/StatsToolBox.cpp create mode 100644 guilib/src/StatsToolBox.h create mode 100644 guilib/src/images/IntRoLab.png create mode 100644 guilib/src/images/IntRoLabSmall.png create mode 100644 guilib/src/images/Pause.ico create mode 100644 guilib/src/images/PauseLoopRejected.ico create mode 100644 guilib/src/images/PauseNormal.png create mode 100644 guilib/src/images/PauseNormalRed.png create mode 100644 guilib/src/images/PauseOnLoop.ico create mode 100644 guilib/src/images/Play1Normal.png create mode 100644 guilib/src/images/Plot.ico create mode 100644 guilib/src/images/Plot16.png create mode 100644 guilib/src/images/Plot48.png create mode 100644 guilib/src/images/RTAB-Map.ico create mode 100644 guilib/src/images/RTAB-Map.png create mode 100644 guilib/src/images/Stop1Normal.png create mode 100644 guilib/src/images/Stop1NormalYellow.png create mode 100644 guilib/src/images/crosshatch_metal_grille_9280154_150.JPG create mode 100644 guilib/src/images/metal_7280826_512.jpg create mode 100644 guilib/src/qss/default.qss create mode 100644 guilib/src/qtipl.cpp create mode 100644 guilib/src/qtipl.h create mode 100644 guilib/src/resources/PreferencesModel.txt create mode 100644 guilib/src/ui/aboutDialog.ui create mode 100644 guilib/src/ui/consoleWidget.ui create mode 100644 guilib/src/ui/mainWindow.ui create mode 100644 guilib/src/ui/preferencesDialog.ui create mode 100644 lib/.empty diff --git a/.cproject b/.cproject new file mode 100644 index 00000000..366fbdc2 --- /dev/null +++ b/.cproject @@ -0,0 +1,663 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cmake + -E chdir build/ cmake -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=Debug ../ + true + false + true + + + cmake + -E chdir build/ cmake -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=Release ../ + true + false + true + + + cmake + -E chdir build/ cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../ + true + false + true + + + cmake + -E chdir build/ cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release ../ + + true + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cmake + -E chdir build/ cmake -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=Debug ../ + true + false + true + + + cmake + -E chdir build/ cmake -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=Release ../ + true + false + true + + + cmake + -E chdir build/ cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../ + true + false + true + + + cmake + -E chdir build/ cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release ../ + + true + false + true + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 00000000..4deb1e63 --- /dev/null +++ b/.project @@ -0,0 +1,82 @@ + + + rtabmap + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + -C ${ProjDirPath}/build VERBOSE=true + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/RTAB-Map} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + false + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/3rdParty/include/cppunit/AdditionalMessage.h b/3rdParty/include/cppunit/AdditionalMessage.h new file mode 100644 index 00000000..917d7541 --- /dev/null +++ b/3rdParty/include/cppunit/AdditionalMessage.h @@ -0,0 +1,76 @@ +#ifndef CPPUNIT_ADDITIONALMESSAGE_H +#define CPPUNIT_ADDITIONALMESSAGE_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief An additional Message for assertions. + * \ingroup CreatingNewAssertions + * + * Provides a implicit constructor that takes a single string. This allow this + * class to be used as the message arguments in macros. + * + * The constructed object is either a Message with a single detail string if + * a string was passed to the macro, or a copy of the Message passed to the macro. + * + * Here is an example of usage: + * \code + * + * void checkStringEquals( const std::string &expected, + * const std::string &actual, + * const CppUnit::SourceLine &sourceLine, + * const CppUnit::AdditionalMessage &message ); + * + * #define XTLUT_ASSERT_STRING_EQUAL_MESSAGE( expected, actual, message ) \ + * ::XtlUt::Impl::checkStringEquals( ::Xtl::toString(expected), \ + * ::Xtl::toString(actual), \ + * CPPUNIT_SOURCELINE(), \ + * message ) + * \endcode + * + * In the previous example, the user can specify a simple string for \a message, + * or a complex Message object. + * + * \see Message + */ +class CPPUNIT_API AdditionalMessage : public Message +{ +public: + typedef Message SuperClass; + + /// Constructs an empty Message. + AdditionalMessage(); + + /*! \brief Constructs a Message with the specified detail string. + * \param detail1 Detail string of the message. If empty, then it is not added. + */ + AdditionalMessage( const std::string &detail1 ); + + /*! \brief Constructs a Message with the specified detail string. + * \param detail1 Detail string of the message. If empty, then it is not added. + */ + AdditionalMessage( const char *detail1 ); + + /*! \brief Constructs a copy of the specified message. + * \param other Message to copy. + */ + AdditionalMessage( const Message &other ); + + /*! \brief Assignment operator. + * \param other Message to copy. + * \return Reference on this object. + */ + AdditionalMessage &operator =( const Message &other ); + +private: +}; + + +CPPUNIT_NS_END + + + +#endif // CPPUNIT_ADDITIONALMESSAGE_H diff --git a/3rdParty/include/cppunit/Asserter.h b/3rdParty/include/cppunit/Asserter.h new file mode 100644 index 00000000..94dadaad --- /dev/null +++ b/3rdParty/include/cppunit/Asserter.h @@ -0,0 +1,143 @@ +#ifndef CPPUNIT_ASSERTER_H +#define CPPUNIT_ASSERTER_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Message; + + +/*! \brief A set of functions to help writing assertion macros. + * \ingroup CreatingNewAssertions + * + * Here is an example of assertion, a simplified version of the + * actual assertion implemented in examples/cppunittest/XmlUniformiser.h: + * \code + * #include + * #include + * + * void + * checkXmlEqual( std::string expectedXml, + * std::string actualXml, + * CppUnit::SourceLine sourceLine ) + * { + * std::string expected = XmlUniformiser( expectedXml ).stripped(); + * std::string actual = XmlUniformiser( actualXml ).stripped(); + * + * if ( expected == actual ) + * return; + * + * ::CppUnit::Asserter::failNotEqual( expected, + * actual, + * sourceLine ); + * } + * + * /// Asserts that two XML strings are equivalent. + * #define CPPUNITTEST_ASSERT_XML_EQUAL( expected, actual ) \ + * checkXmlEqual( expected, actual, \ + * CPPUNIT_SOURCELINE() ) + * \endcode + */ +struct Asserter +{ + /*! \brief Throws a Exception with the specified message and location. + */ + static void CPPUNIT_API fail( const Message &message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \deprecated Use fail( Message, SourceLine ) instead. + */ + static void CPPUNIT_API fail( std::string message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \param shouldFail if \c true then the exception is thrown. Otherwise + * nothing happen. + * \param message Message explaining the assertion failiure. + * \param sourceLine Location of the assertion. + */ + static void CPPUNIT_API failIf( bool shouldFail, + const Message &message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \deprecated Use failIf( bool, Message, SourceLine ) instead. + * \param shouldFail if \c true then the exception is thrown. Otherwise + * nothing happen. + * \param message Message explaining the assertion failiure. + * \param sourceLine Location of the assertion. + */ + static void CPPUNIT_API failIf( bool shouldFail, + std::string message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Returns a expected value string for a message. + * Typically used to create 'not equal' message, or to check that a message + * contains the expected content when writing unit tests for your custom + * assertions. + * + * \param expectedValue String that represents the expected value. + * \return \a expectedValue prefixed with "Expected: ". + * \see makeActual(). + */ + static std::string CPPUNIT_API makeExpected( const std::string &expectedValue ); + + /*! \brief Returns an actual value string for a message. + * Typically used to create 'not equal' message, or to check that a message + * contains the expected content when writing unit tests for your custom + * assertions. + * + * \param actualValue String that represents the actual value. + * \return \a actualValue prefixed with "Actual : ". + * \see makeExpected(). + */ + static std::string CPPUNIT_API makeActual( const std::string &actualValue ); + + static Message CPPUNIT_API makeNotEqualMessage( const std::string &expectedValue, + const std::string &actualValue, + const AdditionalMessage &additionalMessage = AdditionalMessage(), + const std::string &shortDescription = "equality assertion failed"); + + /*! \brief Throws an Exception with the specified message and location. + * \param expected Text describing the expected value. + * \param actual Text describing the actual value. + * \param sourceLine Location of the assertion. + * \param additionalMessage Additional message. Usually used to report + * what are the differences between the expected and actual value. + * \param shortDescription Short description for the failure message. + */ + static void CPPUNIT_API failNotEqual( std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage = AdditionalMessage(), + std::string shortDescription = "equality assertion failed" ); + + /*! \brief Throws an Exception with the specified message and location. + * \param shouldFail if \c true then the exception is thrown. Otherwise + * nothing happen. + * \param expected Text describing the expected value. + * \param actual Text describing the actual value. + * \param sourceLine Location of the assertion. + * \param additionalMessage Additional message. Usually used to report + * where the "difference" is located. + * \param shortDescription Short description for the failure message. + */ + static void CPPUNIT_API failNotEqualIf( bool shouldFail, + std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage = AdditionalMessage(), + std::string shortDescription = "equality assertion failed" ); + +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_ASSERTER_H diff --git a/3rdParty/include/cppunit/BriefTestProgressListener.h b/3rdParty/include/cppunit/BriefTestProgressListener.h new file mode 100644 index 00000000..137ca44b --- /dev/null +++ b/3rdParty/include/cppunit/BriefTestProgressListener.h @@ -0,0 +1,43 @@ +#ifndef CPPUNIT_BRIEFTESTPROGRESSLISTENER_H +#define CPPUNIT_BRIEFTESTPROGRESSLISTENER_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief TestListener that prints the name of each test before running it. + * \ingroup TrackingTestExecution + */ +class CPPUNIT_API BriefTestProgressListener : public TestListener +{ +public: + /*! Constructs a BriefTestProgressListener object. + */ + BriefTestProgressListener(); + + /// Destructor. + virtual ~BriefTestProgressListener(); + + void startTest( Test *test ); + + void addFailure( const TestFailure &failure ); + + void endTest( Test *test ); + +private: + /// Prevents the use of the copy constructor. + BriefTestProgressListener( const BriefTestProgressListener © ); + + /// Prevents the use of the copy operator. + void operator =( const BriefTestProgressListener © ); + +private: + bool m_lastTestFailed; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_BRIEFTESTPROGRESSLISTENER_H diff --git a/3rdParty/include/cppunit/CompilerOutputter.h b/3rdParty/include/cppunit/CompilerOutputter.h new file mode 100644 index 00000000..885fe652 --- /dev/null +++ b/3rdParty/include/cppunit/CompilerOutputter.h @@ -0,0 +1,146 @@ +#ifndef CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H +#define CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class SourceLine; +class Test; +class TestFailure; +class TestResultCollector; + +/*! + * \brief Outputs a TestResultCollector in a compiler compatible format. + * \ingroup WritingTestResult + * + * Printing the test results in a compiler compatible format (assertion + * location has the same format as compiler error), allow you to use your + * IDE to jump to the assertion failure. Location format can be customized (see + * setLocationFormat() ). + * + * For example, when running the test in a post-build with VC++, if an assertion + * fails, you can jump to the assertion by pressing F4 (jump to next error). + * + * Heres is an example of usage (from examples/cppunittest/CppUnitTestMain.cpp): + * \code + * int main( int argc, char* argv[] ) { + * // if command line contains "-selftest" then this is the post build check + * // => the output must be in the compiler error format. + * bool selfTest = (argc > 1) && + * (std::string("-selftest") == argv[1]); + * + * CppUnit::TextUi::TestRunner runner; + * runner.addTest( CppUnitTest::suite() ); // Add the top suite to the test runner + * + * if ( selfTest ) + * { // Change the default outputter to a compiler error format outputter + * // The test runner owns the new outputter. + * runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), + * std::cerr ) ); + * } + * + * // Run the test and don't wait a key if post build check. + * bool wasSuccessful = runner.run( "", !selfTest ); + * + * // Return error code 1 if the one of test failed. + * return wasSuccessful ? 0 : 1; + * } + * \endcode + */ +class CPPUNIT_API CompilerOutputter : public Outputter +{ +public: + /*! \brief Constructs a CompilerOutputter object. + * \param result Result of the test run. + * \param stream Stream used to output test result. + * \param locationFormat Error location format used by your compiler. Default + * to \c CPPUNIT_COMPILER_LOCATION_FORMAT which is defined + * in the configuration file. See setLocationFormat() for detail. + * \see setLocationFormat(). + */ + CompilerOutputter( TestResultCollector *result, + OStream &stream, + const std::string &locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT ); + + /// Destructor. + virtual ~CompilerOutputter(); + + /*! \brief Sets the error location format. + * + * Indicates the format used to report location of failed assertion. This format should + * match the one used by your compiler. + * + * The location format is a string in which the occurence of the following character + * sequence are replaced: + * + * - "%l" => replaced by the line number + * - "%p" => replaced by the full path name of the file ("G:\prg\vc\cppunit\MyTest.cpp") + * - "%f" => replaced by the base name of the file ("MyTest.cpp") + * + * Some examples: + * + * - VC++ error location format: "%p(%l):" => produce "G:\prg\MyTest.cpp(43):" + * - GCC error location format: "%f:%l:" => produce "MyTest.cpp:43:" + * + * Thoses are the two compilers currently supported (gcc format is used if + * VC++ is not detected). If you want your compiler to be automatically supported by + * CppUnit, send a mail to the mailing list (preferred), or submit a feature request + * that indicates how to detect your compiler with the preprocessor (\#ifdef...) and + * your compiler location format. + */ + void setLocationFormat( const std::string &locationFormat ); + + /*! \brief Creates an instance of an outputter that matches your current compiler. + * \deprecated This class is specialized through parameterization instead of subclassing... + * Use CompilerOutputter::CompilerOutputter instead. + */ + static CompilerOutputter *defaultOutputter( TestResultCollector *result, + OStream &stream ); + + void write(); + + void setNoWrap(); + + void setWrapColumn( int wrapColumn ); + + int wrapColumn() const; + + virtual void printSuccess(); + virtual void printFailureReport(); + virtual void printFailuresList(); + virtual void printStatistics(); + virtual void printFailureDetail( TestFailure *failure ); + virtual void printFailureLocation( SourceLine sourceLine ); + virtual void printFailureType( TestFailure *failure ); + virtual void printFailedTestName( TestFailure *failure ); + virtual void printFailureMessage( TestFailure *failure ); + +private: + /// Prevents the use of the copy constructor. + CompilerOutputter( const CompilerOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const CompilerOutputter © ); + + virtual bool processLocationFormatCommand( char command, + const SourceLine &sourceLine ); + + virtual std::string extractBaseName( const std::string &fileName ) const; + +private: + TestResultCollector *m_result; + OStream &m_stream; + std::string m_locationFormat; + int m_wrapColumn; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H diff --git a/3rdParty/include/cppunit/Exception.h b/3rdParty/include/cppunit/Exception.h new file mode 100644 index 00000000..bf5fcacf --- /dev/null +++ b/3rdParty/include/cppunit/Exception.h @@ -0,0 +1,90 @@ +#ifndef CPPUNIT_EXCEPTION_H +#define CPPUNIT_EXCEPTION_H + +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Exceptions thrown by failed assertions. + * \ingroup BrowsingCollectedTestResult + * + * Exception is an exception that serves + * descriptive strings through its what() method + */ +class CPPUNIT_API Exception : public std::exception +{ +public: + /*! \brief Constructs the exception with the specified message and source location. + * \param message Message associated to the exception. + * \param sourceLine Source location related to the exception. + */ + Exception( const Message &message = Message(), + const SourceLine &sourceLine = SourceLine() ); + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED + /*! + * \deprecated Use other constructor instead. + */ + Exception( std::string message, + long lineNumber, + std::string fileName ); +#endif + + /*! \brief Constructs a copy of an exception. + * \param other Exception to copy. + */ + Exception( const Exception &other ); + + /// Destructs the exception + virtual ~Exception() throw(); + + /// Performs an assignment + Exception &operator =( const Exception &other ); + + /// Returns descriptive message + const char *what() const throw(); + + /// Location where the error occured + SourceLine sourceLine() const; + + /// Message related to the exception. + Message message() const; + + /// Set the message. + void setMessage( const Message &message ); + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED + /// The line on which the error occurred + long lineNumber() const; + + /// The file in which the error occurred + std::string fileName() const; + + static const std::string UNKNOWNFILENAME; + static const long UNKNOWNLINENUMBER; +#endif + + /// Clones the exception. + virtual Exception *clone() const; + +protected: + // VC++ does not recognize call to parent class when prefixed + // with a namespace. This is a workaround. + typedef std::exception SuperClass; + + Message m_message; + SourceLine m_sourceLine; + std::string m_whatMessage; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_EXCEPTION_H + diff --git a/3rdParty/include/cppunit/Message.h b/3rdParty/include/cppunit/Message.h new file mode 100644 index 00000000..1ae51cc2 --- /dev/null +++ b/3rdParty/include/cppunit/Message.h @@ -0,0 +1,156 @@ +#ifndef CPPUNIT_MESSAGE_H +#define CPPUNIT_MESSAGE_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + + +CPPUNIT_NS_BEGIN + + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + +/*! \brief Message associated to an Exception. + * \ingroup CreatingNewAssertions + * A message is composed of two items: + * - a short description (~20/30 characters) + * - a list of detail strings + * + * The short description is used to indicate how the detail strings should be + * interpreted. It usually indicates the failure types, such as + * "assertion failed", "forced failure", "unexpected exception caught", + * "equality assertion failed"... It should not contains new line character (\n). + * + * Detail strings are used to provide more information about the failure. It + * can contains the asserted expression, the expected and actual values in an + * equality assertion, some addional messages... Detail strings can contains + * new line characters (\n). + */ +class CPPUNIT_API Message +{ +public: + Message(); + + // Ensure thread-safe copy by detaching the string. + Message( const Message &other ); + + explicit Message( const std::string &shortDescription ); + + Message( const std::string &shortDescription, + const std::string &detail1 ); + + Message( const std::string &shortDescription, + const std::string &detail1, + const std::string &detail2 ); + + Message( const std::string &shortDescription, + const std::string &detail1, + const std::string &detail2, + const std::string &detail3 ); + + Message &operator =( const Message &other ); + + /*! \brief Returns the short description. + * \return Short description. + */ + const std::string &shortDescription() const; + + /*! \brief Returns the number of detail string. + * \return Number of detail string. + */ + int detailCount() const; + + /*! \brief Returns the detail at the specified index. + * \param index Zero based index of the detail string to return. + * \returns Detail string at the specified index. + * \exception std::invalid_argument if \a index < 0 or index >= detailCount(). + */ + std::string detailAt( int index ) const; + + /*! \brief Returns a string that represents a list of the detail strings. + * + * Example: + * \code + * Message message( "not equal", "Expected: 3", "Actual: 7" ); + * std::string details = message.details(); + * // details contains: + * // "- Expected: 3\n- Actual: 7\n" \endcode + * + * \return A string that is a concatenation of all the detail strings. Each detail + * string is prefixed with '- ' and suffixed with '\n' before being + * concatenated to the other. + */ + std::string details() const; + + /*! \brief Removes all detail strings. + */ + void clearDetails(); + + /*! \brief Adds a single detail string. + * \param detail Detail string to add. + */ + void addDetail( const std::string &detail ); + + /*! \brief Adds two detail strings. + * \param detail1 Detail string to add. + * \param detail2 Detail string to add. + */ + void addDetail( const std::string &detail1, + const std::string &detail2 ); + + /*! \brief Adds three detail strings. + * \param detail1 Detail string to add. + * \param detail2 Detail string to add. + * \param detail3 Detail string to add. + */ + void addDetail( const std::string &detail1, + const std::string &detail2, + const std::string &detail3 ); + + /*! \brief Adds the detail strings of the specified message. + * \param message All the detail strings of this message are added to this one. + */ + void addDetail( const Message &message ); + + /*! \brief Sets the short description. + * \param shortDescription New short description. + */ + void setShortDescription( const std::string &shortDescription ); + + /*! \brief Tests if a message is identical to another one. + * \param other Message this message is compared to. + * \return \c true if the two message are identical, \c false otherwise. + */ + bool operator ==( const Message &other ) const; + + /*! \brief Tests if a message is different from another one. + * \param other Message this message is compared to. + * \return \c true if the two message are not identical, \c false otherwise. + */ + bool operator !=( const Message &other ) const; + +private: + std::string m_shortDescription; + + typedef CppUnitDeque Details; + Details m_details; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_MESSAGE_H diff --git a/3rdParty/include/cppunit/Outputter.h b/3rdParty/include/cppunit/Outputter.h new file mode 100644 index 00000000..f31d6815 --- /dev/null +++ b/3rdParty/include/cppunit/Outputter.h @@ -0,0 +1,26 @@ +#ifndef CPPUNIT_OUTPUTTER_H +#define CPPUNIT_OUTPUTTER_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Abstract outputter to print test result summary. + * \ingroup WritingTestResult + */ +class CPPUNIT_API Outputter +{ +public: + /// Destructor. + virtual ~Outputter() {} + + virtual void write() =0; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_OUTPUTTER_H diff --git a/3rdParty/include/cppunit/Portability.h b/3rdParty/include/cppunit/Portability.h new file mode 100644 index 00000000..ddf03169 --- /dev/null +++ b/3rdParty/include/cppunit/Portability.h @@ -0,0 +1,177 @@ +#ifndef CPPUNIT_PORTABILITY_H +#define CPPUNIT_PORTABILITY_H + +#if defined(_WIN32) && !defined(WIN32) +# define WIN32 1 +#endif + +/* include platform specific config */ +#if defined(__BORLANDC__) +# include +#elif defined (_MSC_VER) +# if _MSC_VER == 1200 && defined(_WIN32_WCE) //evc4 +# include +# else +# include +# endif +#else +# include +#endif + +// Version number of package +#ifndef CPPUNIT_VERSION +#define CPPUNIT_VERSION "1.12.0" +#endif + +#include // define CPPUNIT_API & CPPUNIT_NEED_DLL_DECL +#include + + +/* Options that the library user may switch on or off. + * If the user has not done so, we chose default values. + */ + + +/* Define to 1 if you wish to have the old-style macros + assert(), assertEqual(), assertDoublesEqual(), and assertLongsEqual() */ +#if !defined(CPPUNIT_ENABLE_NAKED_ASSERT) +# define CPPUNIT_ENABLE_NAKED_ASSERT 0 +#endif + +/* Define to 1 if you wish to have the old-style CU_TEST family + of macros. */ +#if !defined(CPPUNIT_ENABLE_CU_TEST_MACROS) +# define CPPUNIT_ENABLE_CU_TEST_MACROS 0 +#endif + +/* Define to 1 if the preprocessor expands (#foo) to "foo" (quotes incl.) + I don't think there is any C preprocess that does NOT support this! */ +#if !defined(CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION) +# define CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION 1 +#endif + +/* Assumes that STL and CppUnit are in global space if the compiler does not + support namespace. */ +#if !defined(CPPUNIT_HAVE_NAMESPACES) +# if !defined(CPPUNIT_NO_NAMESPACE) +# define CPPUNIT_NO_NAMESPACE 1 +# endif // !defined(CPPUNIT_NO_NAMESPACE) +# if !defined(CPPUNIT_NO_STD_NAMESPACE) +# define CPPUNIT_NO_STD_NAMESPACE 1 +# endif // !defined(CPPUNIT_NO_STD_NAMESPACE) +#endif // !defined(CPPUNIT_HAVE_NAMESPACES) + +/* Define CPPUNIT_STD_NEED_ALLOCATOR to 1 if you need to specify + * the allocator you used when instantiating STL container. Typically + * used for compilers that do not support template default parameter. + * CPPUNIT_STD_ALLOCATOR will be used as the allocator. Default is + * std::allocator. On some compilers, you may need to change this to + * std::allocator. + */ +#if CPPUNIT_STD_NEED_ALLOCATOR +# if !defined(CPPUNIT_STD_ALLOCATOR) +# define CPPUNIT_STD_ALLOCATOR std::allocator +# endif // !defined(CPPUNIT_STD_ALLOCATOR) +#endif // defined(CPPUNIT_STD_NEED_ALLOCATOR) + + +// Compiler error location format for CompilerOutputter +// If not define, assumes that it's gcc +// See class CompilerOutputter for format. +#if !defined(CPPUNIT_COMPILER_LOCATION_FORMAT) +#if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) ) +// gcc/Xcode integration on Mac OS X +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p:%l: " +#else +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%f:%l:" +#endif +#endif + +// If CPPUNIT_HAVE_CPP_CAST is defined, then c++ style cast will be used, +// otherwise, C style cast are used. +#if defined( CPPUNIT_HAVE_CPP_CAST ) +# define CPPUNIT_CONST_CAST( TargetType, pointer ) \ + const_cast( pointer ) + +# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ + static_cast( pointer ) +#else // defined( CPPUNIT_HAVE_CPP_CAST ) +# define CPPUNIT_CONST_CAST( TargetType, pointer ) \ + ((TargetType)( pointer )) +# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ + ((TargetType)( pointer )) +#endif // defined( CPPUNIT_HAVE_CPP_CAST ) + +// If CPPUNIT_NO_STD_NAMESPACE is defined then STL are in the global space. +// => Define macro 'std' to nothing +#if defined(CPPUNIT_NO_STD_NAMESPACE) +# undef std +# define std +#endif // defined(CPPUNIT_NO_STD_NAMESPACE) + +// If CPPUNIT_NO_NAMESPACE is defined, then put CppUnit classes in the +// global namespace: the compiler does not support namespace. +#if defined(CPPUNIT_NO_NAMESPACE) +# define CPPUNIT_NS_BEGIN +# define CPPUNIT_NS_END +# define CPPUNIT_NS +#else // defined(CPPUNIT_NO_NAMESPACE) +# define CPPUNIT_NS_BEGIN namespace CppUnit { +# define CPPUNIT_NS_END } +# define CPPUNIT_NS CppUnit +#endif // defined(CPPUNIT_NO_NAMESPACE) + +/*! Stringize a symbol. + * + * Use this macro to convert a preprocessor symbol to a string. + * + * Example of usage: + * \code + * #define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn + * const char *name = CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME ); + * \endcode + */ +#define CPPUNIT_STRINGIZE( symbol ) _CPPUNIT_DO_STRINGIZE( symbol ) + +/// \internal +#define _CPPUNIT_DO_STRINGIZE( symbol ) #symbol + +/*! Joins to symbol after expanding them into string. + * + * Use this macro to join two symbols. Example of usage: + * + * \code + * #define MAKE_UNIQUE_NAME(prefix) CPPUNIT_JOIN( prefix, __LINE__ ) + * \endcode + * + * The macro defined in the example concatenate a given prefix with the line number + * to obtain a 'unique' identifier. + * + * \internal From boost documentation: + * The following piece of macro magic joins the two + * arguments together, even when one of the arguments is + * itself a macro (see 16.3.1 in C++ standard). The key + * is that macro expansion of macro arguments does not + * occur in CPPUNIT_JOIN2 but does in CPPUNIT_JOIN. + */ +#define CPPUNIT_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN( symbol1, symbol2 ) + +/// \internal +#define _CPPUNIT_DO_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) + +/// \internal +#define _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) symbol1##symbol2 + +/*! Adds the line number to the specified string to create a unique identifier. + * \param prefix Prefix added to the line number to create a unique identifier. + * \see CPPUNIT_TEST_SUITE_REGISTRATION for an example of usage. + */ +#define CPPUNIT_MAKE_UNIQUE_NAME( prefix ) CPPUNIT_JOIN( prefix, __LINE__ ) + +/*! Defines wrap colunm for %CppUnit. Used by CompilerOuputter. + */ +#if !defined(CPPUNIT_WRAP_COLUMN) +# define CPPUNIT_WRAP_COLUMN 79 +#endif + +#endif // CPPUNIT_PORTABILITY_H diff --git a/3rdParty/include/cppunit/Protector.h b/3rdParty/include/cppunit/Protector.h new file mode 100644 index 00000000..d14e75f6 --- /dev/null +++ b/3rdParty/include/cppunit/Protector.h @@ -0,0 +1,94 @@ +#ifndef CPPUNIT_PROTECTOR_H +#define CPPUNIT_PROTECTOR_H + +#include + +CPPUNIT_NS_BEGIN + +class Exception; +class Message; +class ProtectorContext; +class TestResult; + + +class CPPUNIT_API Functor +{ +public: + virtual ~Functor(); + + virtual bool operator()() const =0; +}; + + +/*! \brief Protects one or more test case run. + * + * Protector are used to globably 'decorate' a test case. The most common + * usage of Protector is to catch exception that do not subclass std::exception, + * such as MFC CException class or Rogue Wave RWXMsg class, and capture the + * message associated to the exception. In fact, CppUnit capture message from + * Exception and std::exception using a Protector. + * + * Protector are chained. When you add a Protector using + * TestResult::pushProtector(), your protector is in fact passed as a Functor + * to the first protector of the chain. + * + * TestCase protects call to setUp(), runTest() and tearDown() by calling + * TestResult::protect(). + * + * Because the protector chain is handled by TestResult, a protector can be + * active for a single test, or a complete test run. + * + * Here are some possible usages: + * - run all test case in a separate thread and assumes the test failed if it + * did not finish in a given time (infinite loop work around) + * - performance tracing : time only the runTest() time. + * \sa TestResult, TestCase, TestListener. + */ +class CPPUNIT_API Protector +{ +public: + virtual ~Protector(); + + virtual bool protect( const Functor &functor, + const ProtectorContext &context ) =0; + +protected: + void reportError( const ProtectorContext &context, + const Exception &error ) const; + + void reportError( const ProtectorContext &context, + const Message &message, + const SourceLine &sourceLine = SourceLine() ) const; + + void reportFailure( const ProtectorContext &context, + const Exception &failure ) const; + + Message actualMessage( const Message &message, + const ProtectorContext &context ) const; +}; + + +/*! \brief Scoped protector push to TestResult. + * + * Adds the specified Protector to the specified TestResult for the object + * life-time. + */ +class CPPUNIT_API ProtectorGuard +{ +public: + /// Pushes the specified protector. + ProtectorGuard( TestResult *result, + Protector *protector ); + + /// Pops the protector. + ~ProtectorGuard(); + +private: + TestResult *m_result; +}; + +CPPUNIT_NS_END + + +#endif // CPPUNIT_PROTECTOR_H + diff --git a/3rdParty/include/cppunit/SourceLine.h b/3rdParty/include/cppunit/SourceLine.h new file mode 100644 index 00000000..f7a85df7 --- /dev/null +++ b/3rdParty/include/cppunit/SourceLine.h @@ -0,0 +1,63 @@ +#ifndef CPPUNIT_SOURCELINE_H +#define CPPUNIT_SOURCELINE_H + +#include +#include + +/*! \brief Constructs a SourceLine object initialized with the location where the macro is expanded. + * \ingroup CreatingNewAssertions + * \relates CppUnit::SourceLine + * Used to write your own assertion macros. + * \see Asserter for example of usage. + */ +#define CPPUNIT_SOURCELINE() CPPUNIT_NS::SourceLine( __FILE__, __LINE__ ) + + +CPPUNIT_NS_BEGIN + + +/*! \brief Represents a source line location. + * \ingroup CreatingNewAssertions + * \ingroup BrowsingCollectedTestResult + * + * Used to capture the failure location in assertion. + * + * Use the CPPUNIT_SOURCELINE() macro to construct that object. Typically used when + * writing an assertion macro in association with Asserter. + * + * \see Asserter. + */ +class CPPUNIT_API SourceLine +{ +public: + SourceLine(); + + // Ensure thread-safe copy by detaching the string buffer. + SourceLine( const SourceLine &other ); + + SourceLine( const std::string &fileName, + int lineNumber ); + + SourceLine &operator =( const SourceLine &other ); + + /// Destructor. + virtual ~SourceLine(); + + bool isValid() const; + + int lineNumber() const; + + std::string fileName() const; + + bool operator ==( const SourceLine &other ) const; + bool operator !=( const SourceLine &other ) const; + +private: + std::string m_fileName; + int m_lineNumber; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_SOURCELINE_H diff --git a/3rdParty/include/cppunit/SynchronizedObject.h b/3rdParty/include/cppunit/SynchronizedObject.h new file mode 100644 index 00000000..0f7d094a --- /dev/null +++ b/3rdParty/include/cppunit/SynchronizedObject.h @@ -0,0 +1,80 @@ +#ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H +#define CPPUNIT_SYNCHRONIZEDOBJECT_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Base class for synchronized object. + * + * Synchronized object are object which members are used concurrently by mutiple + * threads. + * + * This class define the class SynchronizationObject which must be subclassed + * to implement an actual lock. + * + * Each instance of this class holds a pointer on a lock object. + * + * See src/msvc6/MfcSynchronizedObject.h for an example. + */ +class CPPUNIT_API SynchronizedObject +{ +public: + /*! \brief Abstract synchronization object (mutex) + */ + class SynchronizationObject + { + public: + SynchronizationObject() {} + virtual ~SynchronizationObject() {} + + virtual void lock() {} + virtual void unlock() {} + }; + + /*! Constructs a SynchronizedObject object. + */ + SynchronizedObject( SynchronizationObject *syncObject =0 ); + + /// Destructor. + virtual ~SynchronizedObject(); + +protected: + /*! \brief Locks a synchronization object in the current scope. + */ + class ExclusiveZone + { + SynchronizationObject *m_syncObject; + + public: + ExclusiveZone( SynchronizationObject *syncObject ) + : m_syncObject( syncObject ) + { + m_syncObject->lock(); + } + + ~ExclusiveZone() + { + m_syncObject->unlock (); + } + }; + + virtual void setSynchronizationObject( SynchronizationObject *syncObject ); + +protected: + SynchronizationObject *m_syncObject; + +private: + /// Prevents the use of the copy constructor. + SynchronizedObject( const SynchronizedObject © ); + + /// Prevents the use of the copy operator. + void operator =( const SynchronizedObject © ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_SYNCHRONIZEDOBJECT_H diff --git a/3rdParty/include/cppunit/Test.h b/3rdParty/include/cppunit/Test.h new file mode 100644 index 00000000..a56be0fb --- /dev/null +++ b/3rdParty/include/cppunit/Test.h @@ -0,0 +1,117 @@ +#ifndef CPPUNIT_TEST_H +#define CPPUNIT_TEST_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class TestResult; +class TestPath; + +/*! \brief Base class for all test objects. + * \ingroup BrowsingCollectedTestResult + * + * All test objects should be a subclass of Test. Some test objects, + * TestCase for example, represent one individual test. Other test + * objects, such as TestSuite, are comprised of several tests. + * + * When a Test is run, the result is collected by a TestResult object. + * + * \see TestCase + * \see TestSuite + */ +class CPPUNIT_API Test +{ +public: + virtual ~Test() {}; + + /*! \brief Run the test, collecting results. + */ + virtual void run( TestResult *result ) =0; + + /*! \brief Return the number of test cases invoked by run(). + * + * The base unit of testing is the class TestCase. This + * method returns the number of TestCase objects invoked by + * the run() method. + */ + virtual int countTestCases () const =0; + + /*! \brief Returns the number of direct child of the test. + */ + virtual int getChildTestCount() const =0; + + /*! \brief Returns the child test of the specified index. + * + * This method test if the index is valid, then call doGetChildTestAt() if + * the index is valid. Otherwise std::out_of_range exception is thrown. + * + * You should override doGetChildTestAt() method. + * + * \param index Zero based index of the child test to return. + * \return Pointer on the test. Never \c NULL. + * \exception std::out_of_range is \a index is < 0 or >= getChildTestCount(). + */ + virtual Test *getChildTestAt( int index ) const; + + /*! \brief Returns the test name. + * + * Each test has a name. This name may be used to find the + * test in a suite or registry of tests. + */ + virtual std::string getName () const =0; + + /*! \brief Finds the test with the specified name and its parents test. + * \param testName Name of the test to find. + * \param testPath If the test is found, then all the tests traversed to access + * \a test are added to \a testPath, including \c this and \a test. + * \return \c true if a test with the specified name is found, \c false otherwise. + */ + virtual bool findTestPath( const std::string &testName, + TestPath &testPath ) const; + + /*! \brief Finds the specified test and its parents test. + * \param test Test to find. + * \param testPath If the test is found, then all the tests traversed to access + * \a test are added to \a testPath, including \c this and \a test. + * \return \c true if the specified test is found, \c false otherwise. + */ + virtual bool findTestPath( const Test *test, + TestPath &testPath ) const; + + /*! \brief Finds the test with the specified name in the hierarchy. + * \param testName Name of the test to find. + * \return Pointer on the first test found that is named \a testName. Never \c NULL. + * \exception std::invalid_argument if no test named \a testName is found. + */ + virtual Test *findTest( const std::string &testName ) const; + + /*! \brief Resolved the specified test path with this test acting as 'root'. + * \param testPath Test path string to resolve. + * \return Resolved TestPath. + * \exception std::invalid_argument if \a testPath could not be resolved. + * \see TestPath. + */ + virtual TestPath resolveTestPath( const std::string &testPath ) const; + +protected: + /*! Throws an exception if the specified index is invalid. + * \param index Zero base index of a child test. + * \exception std::out_of_range is \a index is < 0 or >= getChildTestCount(). + */ + virtual void checkIsValidIndex( int index ) const; + + /*! \brief Returns the child test of the specified valid index. + * \param index Zero based valid index of the child test to return. + * \return Pointer on the test. Never \c NULL. + */ + virtual Test *doGetChildTestAt( int index ) const =0; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEST_H + diff --git a/3rdParty/include/cppunit/TestAssert.h b/3rdParty/include/cppunit/TestAssert.h new file mode 100644 index 00000000..f74797b9 --- /dev/null +++ b/3rdParty/include/cppunit/TestAssert.h @@ -0,0 +1,428 @@ +#ifndef CPPUNIT_TESTASSERT_H +#define CPPUNIT_TESTASSERT_H + +#include +#include +#include +#include +#include +#include // For struct assertion_traits + + +CPPUNIT_NS_BEGIN + + +/*! \brief Traits used by CPPUNIT_ASSERT_EQUAL(). + * + * Here is an example of specialising these traits: + * + * \code + * template<> + * struct assertion_traits // specialization for the std::string type + * { + * static bool equal( const std::string& x, const std::string& y ) + * { + * return x == y; + * } + * + * static std::string toString( const std::string& x ) + * { + * std::string text = '"' + x + '"'; // adds quote around the string to see whitespace + * OStringStream ost; + * ost << text; + * return ost.str(); + * } + * }; + * \endcode + */ +template +struct assertion_traits +{ + static bool equal( const T& x, const T& y ) + { + return x == y; + } + + static std::string toString( const T& x ) + { + OStringStream ost; + ost << x; + return ost.str(); + } +}; + + +/*! \brief Traits used by CPPUNIT_ASSERT_DOUBLES_EQUAL(). + * + * This specialisation from @c struct @c assertion_traits<> ensures that + * doubles are converted in full, instead of being rounded to the default + * 6 digits of precision. Use the system defined ISO C99 macro DBL_DIG + * within float.h is available to define the maximum precision, otherwise + * use the hard-coded maximum precision of 15. + */ +template <> +struct assertion_traits +{ + static bool equal( double x, double y ) + { + return x == y; + } + + static std::string toString( double x ) + { +#ifdef DBL_DIG + const int precision = DBL_DIG; +#else + const int precision = 15; +#endif // #ifdef DBL_DIG + char buffer[128]; +#ifdef __STDC_SECURE_LIB__ // Use secure version with visual studio 2005 to avoid warning. + sprintf_s(buffer, sizeof(buffer), "%.*g", precision, x); +#else + sprintf(buffer, "%.*g", precision, x); +#endif + return buffer; + } +}; + + +/*! \brief (Implementation) Asserts that two objects of the same type are equals. + * Use CPPUNIT_ASSERT_EQUAL instead of this function. + * \sa assertion_traits, Asserter::failNotEqual(). + */ +template +void assertEquals( const T& expected, + const T& actual, + SourceLine sourceLine, + const std::string &message ) +{ + if ( !assertion_traits::equal(expected,actual) ) // lazy toString conversion... + { + Asserter::failNotEqual( assertion_traits::toString(expected), + assertion_traits::toString(actual), + sourceLine, + message ); + } +} + + +/*! \brief (Implementation) Asserts that two double are equals given a tolerance. + * Use CPPUNIT_ASSERT_DOUBLES_EQUAL instead of this function. + * \sa Asserter::failNotEqual(). + * \sa CPPUNIT_ASSERT_DOUBLES_EQUAL for detailed semantic of the assertion. + */ +void CPPUNIT_API assertDoubleEquals( double expected, + double actual, + double delta, + SourceLine sourceLine, + const std::string &message ); + + +/* A set of macros which allow us to get the line number + * and file name at the point of an error. + * Just goes to show that preprocessors do have some + * redeeming qualities. + */ +#if CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION +/** Assertions that a condition is \c true. + * \ingroup Assertions + */ +#define CPPUNIT_ASSERT(condition) \ + ( CPPUNIT_NS::Asserter::failIf( !(condition), \ + CPPUNIT_NS::Message( "assertion failed", \ + "Expression: " #condition), \ + CPPUNIT_SOURCELINE() ) ) +#else +#define CPPUNIT_ASSERT(condition) \ + ( CPPUNIT_NS::Asserter::failIf( !(condition), \ + CPPUNIT_NS::Message( "assertion failed" ), \ + CPPUNIT_SOURCELINE() ) ) +#endif + +/** Assertion with a user specified message. + * \ingroup Assertions + * \param message Message reported in diagnostic if \a condition evaluates + * to \c false. + * \param condition If this condition evaluates to \c false then the + * test failed. + */ +#define CPPUNIT_ASSERT_MESSAGE(message,condition) \ + ( CPPUNIT_NS::Asserter::failIf( !(condition), \ + CPPUNIT_NS::Message( "assertion failed", \ + "Expression: " \ + #condition, \ + message ), \ + CPPUNIT_SOURCELINE() ) ) + +/** Fails with the specified message. + * \ingroup Assertions + * \param message Message reported in diagnostic. + */ +#define CPPUNIT_FAIL( message ) \ + ( CPPUNIT_NS::Asserter::fail( CPPUNIT_NS::Message( "forced failure", \ + message ), \ + CPPUNIT_SOURCELINE() ) ) + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED +/// Generalized macro for primitive value comparisons +#define CPPUNIT_ASSERT_EQUAL(expected,actual) \ + ( CPPUNIT_NS::assertEquals( (expected), \ + (actual), \ + __LINE__, __FILE__ ) ) +#else +/** Asserts that two values are equals. + * \ingroup Assertions + * + * Equality and string representation can be defined with + * an appropriate CppUnit::assertion_traits class. + * + * A diagnostic is printed if actual and expected values disagree. + * + * Requirement for \a expected and \a actual parameters: + * - They are exactly of the same type + * - They are serializable into a std::strstream using operator <<. + * - They can be compared using operator ==. + * + * The last two requirements (serialization and comparison) can be + * removed by specializing the CppUnit::assertion_traits. + */ +#define CPPUNIT_ASSERT_EQUAL(expected,actual) \ + ( CPPUNIT_NS::assertEquals( (expected), \ + (actual), \ + CPPUNIT_SOURCELINE(), \ + "" ) ) + +/** Asserts that two values are equals, provides additional message on failure. + * \ingroup Assertions + * + * Equality and string representation can be defined with + * an appropriate assertion_traits class. + * + * A diagnostic is printed if actual and expected values disagree. + * The message is printed in addition to the expected and actual value + * to provide additional information. + * + * Requirement for \a expected and \a actual parameters: + * - They are exactly of the same type + * - They are serializable into a std::strstream using operator <<. + * - They can be compared using operator ==. + * + * The last two requirements (serialization and comparison) can be + * removed by specializing the CppUnit::assertion_traits. + */ +#define CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,actual) \ + ( CPPUNIT_NS::assertEquals( (expected), \ + (actual), \ + CPPUNIT_SOURCELINE(), \ + (message) ) ) +#endif + +/*! \brief Macro for primitive double value comparisons. + * \ingroup Assertions + * + * The assertion pass if both expected and actual are finite and + * \c fabs( \c expected - \c actual ) <= \c delta. + * If either \c expected or actual are infinite (+/- inf), the + * assertion pass if \c expected == \c actual. + * If either \c expected or \c actual is a NaN (not a number), then + * the assertion fails. + */ +#define CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,actual,delta) \ + ( CPPUNIT_NS::assertDoubleEquals( (expected), \ + (actual), \ + (delta), \ + CPPUNIT_SOURCELINE(), \ + "" ) ) + + +/*! \brief Macro for primitive double value comparisons, setting a + * user-supplied message in case of failure. + * \ingroup Assertions + * \sa CPPUNIT_ASSERT_DOUBLES_EQUAL for detailed semantic of the assertion. + */ +#define CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(message,expected,actual,delta) \ + ( CPPUNIT_NS::assertDoubleEquals( (expected), \ + (actual), \ + (delta), \ + CPPUNIT_SOURCELINE(), \ + (message) ) ) + + +/** Asserts that the given expression throws an exception of the specified type. + * \ingroup Assertions + * Example of usage: + * \code + * std::vector v; + * CPPUNIT_ASSERT_THROW( v.at( 50 ), std::out_of_range ); + * \endcode + */ +# define CPPUNIT_ASSERT_THROW( expression, ExceptionType ) \ + CPPUNIT_ASSERT_THROW_MESSAGE( CPPUNIT_NS::AdditionalMessage(), \ + expression, \ + ExceptionType ) + + +// implementation detail +#if CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \ + CPPUNIT_NS::TypeInfoHelper::getClassName( typeid(exception) ) +#else +#define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \ + std::string( no_rtti_message ) +#endif // CPPUNIT_USE_TYPEINFO_NAME + +// implementation detail +#define CPPUNIT_GET_PARAMETER_STRING( parameter ) #parameter + +/** Asserts that the given expression throws an exception of the specified type, + * setting a user supplied message in case of failure. + * \ingroup Assertions + * Example of usage: + * \code + * std::vector v; + * CPPUNIT_ASSERT_THROW_MESSAGE( "- std::vector v;", v.at( 50 ), std::out_of_range ); + * \endcode + */ +# define CPPUNIT_ASSERT_THROW_MESSAGE( message, expression, ExceptionType ) \ + do { \ + bool cpputCorrectExceptionThrown_ = false; \ + CPPUNIT_NS::Message cpputMsg_( "expected exception not thrown" ); \ + cpputMsg_.addDetail( message ); \ + cpputMsg_.addDetail( "Expected: " \ + CPPUNIT_GET_PARAMETER_STRING( ExceptionType ) ); \ + \ + try { \ + expression; \ + } catch ( const ExceptionType & ) { \ + cpputCorrectExceptionThrown_ = true; \ + } catch ( const std::exception &e) { \ + cpputMsg_.addDetail( "Actual : " + \ + CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e, \ + "std::exception or derived") ); \ + cpputMsg_.addDetail( std::string("What() : ") + e.what() ); \ + } catch ( ... ) { \ + cpputMsg_.addDetail( "Actual : unknown."); \ + } \ + \ + if ( cpputCorrectExceptionThrown_ ) \ + break; \ + \ + CPPUNIT_NS::Asserter::fail( cpputMsg_, \ + CPPUNIT_SOURCELINE() ); \ + } while ( false ) + + +/** Asserts that the given expression does not throw any exceptions. + * \ingroup Assertions + * Example of usage: + * \code + * std::vector v; + * v.push_back( 10 ); + * CPPUNIT_ASSERT_NO_THROW( v.at( 0 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_NO_THROW( expression ) \ + CPPUNIT_ASSERT_NO_THROW_MESSAGE( CPPUNIT_NS::AdditionalMessage(), \ + expression ) + + +/** Asserts that the given expression does not throw any exceptions, + * setting a user supplied message in case of failure. + * \ingroup Assertions + * Example of usage: + * \code + * std::vector v; + * v.push_back( 10 ); + * CPPUNIT_ASSERT_NO_THROW( "std::vector v;", v.at( 0 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_NO_THROW_MESSAGE( message, expression ) \ + do { \ + CPPUNIT_NS::Message cpputMsg_( "unexpected exception caught" ); \ + cpputMsg_.addDetail( message ); \ + \ + try { \ + expression; \ + } catch ( const std::exception &e ) { \ + cpputMsg_.addDetail( "Caught: " + \ + CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e, \ + "std::exception or derived" ) ); \ + cpputMsg_.addDetail( std::string("What(): ") + e.what() ); \ + CPPUNIT_NS::Asserter::fail( cpputMsg_, \ + CPPUNIT_SOURCELINE() ); \ + } catch ( ... ) { \ + cpputMsg_.addDetail( "Caught: unknown." ); \ + CPPUNIT_NS::Asserter::fail( cpputMsg_, \ + CPPUNIT_SOURCELINE() ); \ + } \ + } while ( false ) + + +/** Asserts that an assertion fail. + * \ingroup Assertions + * Use to test assertions. + * Example of usage: + * \code + * CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( 1 == 2 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_ASSERTION_FAIL( assertion ) \ + CPPUNIT_ASSERT_THROW( assertion, CPPUNIT_NS::Exception ) + + +/** Asserts that an assertion fail, with a user-supplied message in + * case of error. + * \ingroup Assertions + * Use to test assertions. + * Example of usage: + * \code + * CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE( "1 == 2", CPPUNIT_ASSERT( 1 == 2 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE( message, assertion ) \ + CPPUNIT_ASSERT_THROW_MESSAGE( message, assertion, CPPUNIT_NS::Exception ) + + +/** Asserts that an assertion pass. + * \ingroup Assertions + * Use to test assertions. + * Example of usage: + * \code + * CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT( 1 == 1 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_ASSERTION_PASS( assertion ) \ + CPPUNIT_ASSERT_NO_THROW( assertion ) + + +/** Asserts that an assertion pass, with a user-supplied message in + * case of failure. + * \ingroup Assertions + * Use to test assertions. + * Example of usage: + * \code + * CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE( "1 != 1", CPPUNIT_ASSERT( 1 == 1 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE( message, assertion ) \ + CPPUNIT_ASSERT_NO_THROW_MESSAGE( message, assertion ) + + + + +// Backwards compatibility + +#if CPPUNIT_ENABLE_NAKED_ASSERT + +#undef assert +#define assert(c) CPPUNIT_ASSERT(c) +#define assertEqual(e,a) CPPUNIT_ASSERT_EQUAL(e,a) +#define assertDoublesEqual(e,a,d) CPPUNIT_ASSERT_DOUBLES_EQUAL(e,a,d) +#define assertLongsEqual(e,a) CPPUNIT_ASSERT_EQUAL(e,a) + +#endif + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTASSERT_H diff --git a/3rdParty/include/cppunit/TestCaller.h b/3rdParty/include/cppunit/TestCaller.h new file mode 100644 index 00000000..dc4d82ed --- /dev/null +++ b/3rdParty/include/cppunit/TestCaller.h @@ -0,0 +1,204 @@ +#ifndef CPPUNIT_TESTCALLER_H // -*- C++ -*- +#define CPPUNIT_TESTCALLER_H + +#include +#include + + +#if CPPUNIT_USE_TYPEINFO_NAME +# include +#endif + + +CPPUNIT_NS_BEGIN + +#if 0 +/*! \brief Marker class indicating that no exception is expected by TestCaller. + * This class is an implementation detail. You should never use this class directly. + */ +class CPPUNIT_API NoExceptionExpected +{ +private: + //! Prevent class instantiation. + NoExceptionExpected(); +}; + + +/*! \brief (Implementation) Traits used by TestCaller to expect an exception. + * + * This class is an implementation detail. You should never use this class directly. + */ +template +struct ExpectedExceptionTraits +{ + static void expectedException() + { +#if CPPUNIT_USE_TYPEINFO_NAME + throw Exception( Message( + "expected exception not thrown", + "Expected exception type: " + + TypeInfoHelper::getClassName( typeid( ExceptionType ) ) ) ); +#else + throw Exception( "expected exception not thrown" ); +#endif + } +}; + + +/*! \brief (Implementation) Traits specialization used by TestCaller to + * expect no exception. + * + * This class is an implementation detail. You should never use this class directly. + */ +template<> +struct ExpectedExceptionTraits +{ + static void expectedException() + { + } +}; + + +#endif + +//*** FIXME: rework this when class Fixture is implemented. ***// + + +/*! \brief Generate a test case from a fixture method. + * \ingroup WritingTestFixture + * + * A test caller provides access to a test case method + * on a test fixture class. Test callers are useful when + * you want to run an individual test or add it to a + * suite. + * Test Callers invoke only one Test (i.e. test method) on one + * Fixture of a TestFixture. + * + * Here is an example: + * \code + * class MathTest : public CppUnit::TestFixture { + * ... + * public: + * void setUp(); + * void tearDown(); + * + * void testAdd(); + * void testSubtract(); + * }; + * + * CppUnit::Test *MathTest::suite() { + * CppUnit::TestSuite *suite = new CppUnit::TestSuite; + * + * suite->addTest( new CppUnit::TestCaller( "testAdd", testAdd ) ); + * return suite; + * } + * \endcode + * + * You can use a TestCaller to bind any test method on a TestFixture + * class, as long as it accepts void and returns void. + * + * \see TestCase + */ + +template +class TestCaller : public TestCase +{ + typedef void (Fixture::*TestMethod)(); + +public: + /*! + * Constructor for TestCaller. This constructor builds a new Fixture + * instance owned by the TestCaller. + * \param name name of this TestCaller + * \param test the method this TestCaller calls in runTest() + */ + TestCaller( std::string name, TestMethod test ) : + TestCase( name ), + m_ownFixture( true ), + m_fixture( new Fixture() ), + m_test( test ) + { + } + + /*! + * Constructor for TestCaller. + * This constructor does not create a new Fixture instance but accepts + * an existing one as parameter. The TestCaller will not own the + * Fixture object. + * \param name name of this TestCaller + * \param test the method this TestCaller calls in runTest() + * \param fixture the Fixture to invoke the test method on. + */ + TestCaller(std::string name, TestMethod test, Fixture& fixture) : + TestCase( name ), + m_ownFixture( false ), + m_fixture( &fixture ), + m_test( test ) + { + } + + /*! + * Constructor for TestCaller. + * This constructor does not create a new Fixture instance but accepts + * an existing one as parameter. The TestCaller will own the + * Fixture object and delete it in its destructor. + * \param name name of this TestCaller + * \param test the method this TestCaller calls in runTest() + * \param fixture the Fixture to invoke the test method on. + */ + TestCaller(std::string name, TestMethod test, Fixture* fixture) : + TestCase( name ), + m_ownFixture( true ), + m_fixture( fixture ), + m_test( test ) + { + } + + ~TestCaller() + { + if (m_ownFixture) + delete m_fixture; + } + + void runTest() + { +// try { + (m_fixture->*m_test)(); +// } +// catch ( ExpectedException & ) { +// return; +// } + +// ExpectedExceptionTraits::expectedException(); + } + + void setUp() + { + m_fixture->setUp (); + } + + void tearDown() + { + m_fixture->tearDown (); + } + + std::string toString() const + { + return "TestCaller " + getName(); + } + +private: + TestCaller( const TestCaller &other ); + TestCaller &operator =( const TestCaller &other ); + +private: + bool m_ownFixture; + Fixture *m_fixture; + TestMethod m_test; +}; + + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTCALLER_H diff --git a/3rdParty/include/cppunit/TestCase.h b/3rdParty/include/cppunit/TestCase.h new file mode 100644 index 00000000..d4b7a46a --- /dev/null +++ b/3rdParty/include/cppunit/TestCase.h @@ -0,0 +1,55 @@ +#ifndef CPPUNIT_TESTCASE_H +#define CPPUNIT_TESTCASE_H + +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +class TestResult; + + +/*! \brief A single test object. + * + * This class is used to implement a simple test case: define a subclass + * that overrides the runTest method. + * + * You don't usually need to use that class, but TestFixture and TestCaller instead. + * + * You are expected to subclass TestCase is you need to write a class similiar + * to TestCaller. + */ +class CPPUNIT_API TestCase : public TestLeaf, + public TestFixture +{ +public: + + TestCase( const std::string &name ); + + TestCase(); + + ~TestCase(); + + virtual void run(TestResult *result); + + std::string getName() const; + + //! FIXME: this should probably be pure virtual. + virtual void runTest(); + +private: + TestCase( const TestCase &other ); + TestCase &operator=( const TestCase &other ); + +private: + const std::string m_name; +}; + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTCASE_H diff --git a/3rdParty/include/cppunit/TestComposite.h b/3rdParty/include/cppunit/TestComposite.h new file mode 100644 index 00000000..0ded95fc --- /dev/null +++ b/3rdParty/include/cppunit/TestComposite.h @@ -0,0 +1,45 @@ +#ifndef CPPUNIT_TESTCOMPSITE_H // -*- C++ -*- +#define CPPUNIT_TESTCOMPSITE_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief A Composite of Tests. + * + * Base class for all test composites. Subclass this class if you need to implement + * a custom TestSuite. + * + * \see Test, TestSuite. + */ +class CPPUNIT_API TestComposite : public Test +{ +public: + TestComposite( const std::string &name = "" ); + + ~TestComposite(); + + void run( TestResult *result ); + + int countTestCases() const; + + std::string getName() const; + +private: + TestComposite( const TestComposite &other ); + TestComposite &operator =( const TestComposite &other ); + + virtual void doStartSuite( TestResult *controller ); + virtual void doRunChildTests( TestResult *controller ); + virtual void doEndSuite( TestResult *controller ); + +private: + const std::string m_name; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTCOMPSITE_H diff --git a/3rdParty/include/cppunit/TestFailure.h b/3rdParty/include/cppunit/TestFailure.h new file mode 100644 index 00000000..64199790 --- /dev/null +++ b/3rdParty/include/cppunit/TestFailure.h @@ -0,0 +1,58 @@ +#ifndef CPPUNIT_TESTFAILURE_H // -*- C++ -*- +#define CPPUNIT_TESTFAILURE_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class SourceLine; +class Test; + + +/*! \brief Record of a failed Test execution. + * \ingroup BrowsingCollectedTestResult + * + * A TestFailure collects a failed test together with + * the caught exception. + * + * TestFailure assumes lifetime control for any exception + * passed to it. + */ +class CPPUNIT_API TestFailure +{ +public: + TestFailure( Test *failedTest, + Exception *thrownException, + bool isError ); + + virtual ~TestFailure (); + + virtual Test *failedTest() const; + + virtual Exception *thrownException() const; + + virtual SourceLine sourceLine() const; + + virtual bool isError() const; + + virtual std::string failedTestName() const; + + virtual TestFailure *clone() const; + +protected: + Test *m_failedTest; + Exception *m_thrownException; + bool m_isError; + +private: + TestFailure( const TestFailure &other ); + TestFailure &operator =( const TestFailure& other ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTFAILURE_H diff --git a/3rdParty/include/cppunit/TestFixture.h b/3rdParty/include/cppunit/TestFixture.h new file mode 100644 index 00000000..1223adbc --- /dev/null +++ b/3rdParty/include/cppunit/TestFixture.h @@ -0,0 +1,99 @@ +#ifndef CPPUNIT_TESTFIXTURE_H // -*- C++ -*- +#define CPPUNIT_TESTFIXTURE_H + +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief Wraps a test case with setUp and tearDown methods. + * \ingroup WritingTestFixture + * + * A TestFixture is used to provide a common environment for a set + * of test cases. + * + * To define a test fixture, do the following: + * - implement a subclass of TestCase + * - the fixture is defined by instance variables + * - initialize the fixture state by overriding setUp + * (i.e. construct the instance variables of the fixture) + * - clean-up after a test by overriding tearDown. + * + * Each test runs in its own fixture so there + * can be no side effects among test runs. + * Here is an example: + * + * \code + * class MathTest : public CppUnit::TestFixture { + * protected: + * int m_value1, m_value2; + * + * public: + * MathTest() {} + * + * void setUp () { + * m_value1 = 2; + * m_value2 = 3; + * } + * } + * \endcode + * + * For each test implement a method which interacts + * with the fixture. Verify the expected results with assertions specified + * by calling CPPUNIT_ASSERT on the expression you want to test: + * + * \code + * public: + * void testAdd () { + * int result = m_value1 + m_value2; + * CPPUNIT_ASSERT( result == 5 ); + * } + * \endcode + * + * Once the methods are defined you can run them. To do this, use + * a TestCaller. + * + * \code + * CppUnit::Test *test = new CppUnit::TestCaller( "testAdd", + * &MathTest::testAdd ); + * test->run(); + * \endcode + * + * + * The tests to be run can be collected into a TestSuite. + * + * \code + * public: + * static CppUnit::TestSuite *MathTest::suite () { + * CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite; + * suiteOfTests->addTest(new CppUnit::TestCaller( + * "testAdd", &MathTest::testAdd)); + * suiteOfTests->addTest(new CppUnit::TestCaller( + * "testDivideByZero", &MathTest::testDivideByZero)); + * return suiteOfTests; + * } + * \endcode + * + * A set of macros have been created for convenience. They are located in HelperMacros.h. + * + * \see TestResult, TestSuite, TestCaller, + * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL. + */ +class CPPUNIT_API TestFixture +{ +public: + virtual ~TestFixture() {}; + + //! \brief Set up context before running a test. + virtual void setUp() {}; + + //! Clean up after the test run. + virtual void tearDown() {}; +}; + + +CPPUNIT_NS_END + + +#endif diff --git a/3rdParty/include/cppunit/TestLeaf.h b/3rdParty/include/cppunit/TestLeaf.h new file mode 100644 index 00000000..c83b0759 --- /dev/null +++ b/3rdParty/include/cppunit/TestLeaf.h @@ -0,0 +1,44 @@ +#ifndef CPPUNIT_TESTLEAF_H +#define CPPUNIT_TESTLEAF_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief A single test object. + * + * Base class for single test case: a test that doesn't have any children. + * + */ +class CPPUNIT_API TestLeaf: public Test +{ +public: + /*! Returns 1 as the default number of test cases invoked by run(). + * + * You may override this method when many test cases are invoked (RepeatedTest + * for example). + * + * \return 1. + * \see Test::countTestCases(). + */ + int countTestCases() const; + + /*! Returns the number of child of this test case: 0. + * + * You should never override this method: a TestLeaf as no children by definition. + * + * \return 0. + */ + int getChildTestCount() const; + + /*! Always throws std::out_of_range. + * \see Test::doGetChildTestAt(). + */ + Test *doGetChildTestAt( int index ) const; +}; + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTLEAF_H diff --git a/3rdParty/include/cppunit/TestListener.h b/3rdParty/include/cppunit/TestListener.h new file mode 100644 index 00000000..330262d3 --- /dev/null +++ b/3rdParty/include/cppunit/TestListener.h @@ -0,0 +1,148 @@ +#ifndef CPPUNIT_TESTLISTENER_H // -*- C++ -*- +#define CPPUNIT_TESTLISTENER_H + +#include + + +CPPUNIT_NS_BEGIN + + +class Exception; +class Test; +class TestFailure; +class TestResult; + + +/*! \brief Listener for test progress and result. + * \ingroup TrackingTestExecution + * + * Implementing the Observer pattern a TestListener may be registered + * to a TestResult to obtain information on the testing progress. Use + * specialized sub classes of TestListener for text output + * (TextTestProgressListener). Do not use the Listener for the test + * result output, use a subclass of Outputter instead. + * + * The test framework distinguishes between failures and errors. + * A failure is anticipated and checked for with assertions. Errors are + * unanticipated problems signified by exceptions that are not generated + * by the framework. + * + * Here is an example to track test time: + * + * + * \code + * #include + * #include + * #include // for clock() + * + * class TimingListener : public CppUnit::TestListener + * { + * public: + * void startTest( CppUnit::Test *test ) + * { + * _chronometer.start(); + * } + * + * void endTest( CppUnit::Test *test ) + * { + * _chronometer.end(); + * addTest( test, _chronometer.elapsedTime() ); + * } + * + * // ... (interface to add/read test timing result) + * + * private: + * Clock _chronometer; + * }; + * \endcode + * + * And another example that track failure/success at test suite level and captures + * the TestPath of each suite: + * \code + * class SuiteTracker : public CppUnit::TestListener + * { + * public: + * void startSuite( CppUnit::Test *suite ) + * { + * m_currentPath.add( suite ); + * } + * + * void addFailure( const TestFailure &failure ) + * { + * m_suiteFailure.top() = false; + * } + * + * void endSuite( CppUnit::Test *suite ) + * { + * m_suiteStatus.insert( std::make_pair( suite, m_suiteFailure.top() ) ); + * m_suitePaths.insert( std::make_pair( suite, m_currentPath ) ); + * + * m_currentPath.up(); + * m_suiteFailure.pop(); + * } + * + * private: + * std::stack m_suiteFailure; + * CppUnit::TestPath m_currentPath; + * std::map m_suiteStatus; + * std::map m_suitePaths; + * }; + * \endcode + * + * \see TestResult + */ +class CPPUNIT_API TestListener +{ +public: + virtual ~TestListener() {} + + /// Called when just before a TestCase is run. + virtual void startTest( Test * /*test*/ ) {} + + /*! \brief Called when a failure occurs while running a test. + * \see TestFailure. + * \warning \a failure is a temporary object that is destroyed after the + * method call. Use TestFailure::clone() to create a duplicate. + */ + virtual void addFailure( const TestFailure & /*failure*/ ) {} + + /// Called just after a TestCase was run (even if a failure occured). + virtual void endTest( Test * /*test*/ ) {} + + /*! \brief Called by a TestComposite just before running its child tests. + */ + virtual void startSuite( Test * /*suite*/ ) {} + + /*! \brief Called by a TestComposite after running its child tests. + */ + virtual void endSuite( Test * /*suite*/ ) {} + + /*! \brief Called by a TestRunner before running the test. + * + * You can use this to do some global initialisation. A listener + * could also use to output a 'prolog' to the test run. + * + * \param test Test that is going to be run. + * \param eventManager Event manager used for the test run. + */ + virtual void startTestRun( Test * /*test*/, + TestResult * /*eventManager*/ ) {} + + /*! \brief Called by a TestRunner after running the test. + * + * TextTestProgressListener use this to emit a line break. You can also use this + * to do some global uninitialisation. + * + * \param test Test that was run. + * \param eventManager Event manager used for the test run. + */ + virtual void endTestRun( Test * /*test*/, + TestResult * /*eventManager*/ ) {} +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTLISTENER_H + + diff --git a/3rdParty/include/cppunit/TestPath.h b/3rdParty/include/cppunit/TestPath.h new file mode 100644 index 00000000..c3c851cc --- /dev/null +++ b/3rdParty/include/cppunit/TestPath.h @@ -0,0 +1,211 @@ +#ifndef CPPUNIT_TESTPATH_H +#define CPPUNIT_TESTPATH_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Test; + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + + +/*! \brief A List of Test representing a path to access a Test. + * \ingroup ExecutingTest + * + * The path can be converted to a string and resolved from a string with toString() + * and TestPath( Test *root, const std::string &pathAsString ). + * + * Pointed tests are not owned by the class. + * + * \see Test::resolvedTestPath() + */ +class CPPUNIT_API TestPath +{ +public: + /*! \brief Constructs an invalid path. + * + * The path is invalid until a test is added with add(). + */ + TestPath(); + + /*! \brief Constructs a valid path. + * + * \param root Test to add. + */ + TestPath( Test *root ); + + /*! \brief Constructs a path using a slice of another path. + * \param otherPath Path the test are copied from. + * \param indexFirst Zero based index of the first test to copy. Adjusted to be in valid + * range. \a count is adjusted with \a indexFirst. + * \param count Number of tests to copy. If < 0 then all test starting from index + * \a indexFirst are copied. + */ + TestPath( const TestPath &otherPath, + int indexFirst, + int count = -1 ); + + /*! \brief Resolves a path from a string returned by toString(). + * + * If \a pathAsString is an absolute path (begins with '/'), then the first test name + * of the path must be the name of \a searchRoot. Otherwise, \a pathAsString is a + * relative path, and the first test found using Test::findTest() matching the first + * test name is used as root. An empty string resolve to a path containing + * \a searchRoot. + * + * The resolved path is always valid. + * + * \param searchRoot Test used to resolve the path. + * \param pathAsString String that contains the path as a string created by toString(). + * \exception std::invalid_argument if one of the test names can not be resolved. + * \see toString(). + */ + TestPath( Test *searchRoot, + const std::string &pathAsString ); + + /*! \brief Copy constructor. + * \param other Object to copy. + */ + TestPath( const TestPath &other ); + + virtual ~TestPath(); + + /*! \brief Tests if the path contains at least one test. + * \return \c true if the path contains at least one test, otherwise returns \c false. + */ + virtual bool isValid() const; + + /*! \brief Adds a test to the path. + * \param test Pointer on the test to add. Must not be \c NULL. + */ + virtual void add( Test *test ); + + /*! \brief Adds all the tests of the specified path. + * \param path Path that contains the test to add. + */ + virtual void add( const TestPath &path ); + + /*! \brief Inserts a test at the specified index. + * \param test Pointer on the test to insert. Must not be \c NULL. + * \param index Zero based index indicating where the test is inserted. + * \exception std::out_of_range is \a index < 0 or \a index > getTestCount(). + */ + virtual void insert( Test *test, int index ); + + /*! \brief Inserts all the tests at the specified path at a given index. + * \param path Path that contains the test to insert. + * \param index Zero based index indicating where the tests are inserted. + * \exception std::out_of_range is \a index < 0 or \a index > getTestCount(), and + * \a path is valid. + */ + virtual void insert( const TestPath &path, int index ); + + /*! \brief Removes all the test from the path. + * + * The path becomes invalid after this call. + */ + virtual void removeTests(); + + /*! \brief Removes the test at the specified index of the path. + * \param index Zero based index of the test to remove. + * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount(). + */ + virtual void removeTest( int index ); + + /*! \brief Removes the last test. + * \exception std::out_of_range is the path is invalid. + * \see isValid(). + */ + virtual void up(); + + /*! \brief Returns the number of tests in the path. + * \return Number of tests in the path. + */ + virtual int getTestCount() const; + + /*! \brief Returns the test of the specified index. + * \param index Zero based index of the test to return. + * \return Pointer on the test at index \a index. Never \c NULL. + * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount(). + */ + virtual Test *getTestAt( int index ) const; + + /*! \brief Get the last test of the path. + * \return Pointer on the last test (test at the bottom of the hierarchy). Never \c NULL. + * \exception std::out_of_range if the path is not valid ( isValid() returns \c false ). + */ + virtual Test *getChildTest() const; + + /*! \brief Returns the path as a string. + * + * For example, if a path is composed of three tests named "All Tests", "Math" and + * "Math::testAdd", toString() will return: + * + * "All Tests/Math/Math::testAdd". + * + * \return A string composed of the test names separated with a '/'. It is a relative + * path. + */ + virtual std::string toString() const; + + /*! \brief Assignment operator. + * \param other Object to copy. + * \return This object. + */ + TestPath &operator =( const TestPath &other ); + +protected: + /*! \brief Checks that the specified test index is within valid range. + * \param index Zero based index to check. + * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount(). + */ + void checkIndexValid( int index ) const; + + /// A list of test names. + typedef CppUnitDeque PathTestNames; + + /*! \brief Splits a path string into its test name components. + * \param pathAsString Path string created with toString(). + * \param testNames Test name components are added to that container. + * \return \c true if the path is relative (does not begin with '/'), \c false + * if it is absolute (begin with '/'). + */ + bool splitPathString( const std::string &pathAsString, + PathTestNames &testNames ); + + /*! \brief Finds the actual root of a path string and get the path string name components. + * \param searchRoot Test used as root if the path string is absolute, or to search + * the root test if the path string is relative. + * \param pathAsString Path string. May be absolute or relative. + * \param testNames Test name components are added to that container. + * \return Pointer on the resolved root test. Never \c NULL. + * \exception std::invalid_argument if either the root name can not be resolved or if + * pathAsString contains no name components. + */ + Test *findActualRoot( Test *searchRoot, + const std::string &pathAsString, + PathTestNames &testNames ); + +protected: + typedef CppUnitDeque Tests; + Tests m_tests; + +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTPATH_H + diff --git a/3rdParty/include/cppunit/TestResult.h b/3rdParty/include/cppunit/TestResult.h new file mode 100644 index 00000000..e7e1050a --- /dev/null +++ b/3rdParty/include/cppunit/TestResult.h @@ -0,0 +1,156 @@ +#ifndef CPPUNIT_TESTRESULT_H +#define CPPUNIT_TESTRESULT_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class Functor; +class Protector; +class ProtectorChain; +class Test; +class TestFailure; +class TestListener; + + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + +/*! \brief Manages TestListener. + * \ingroup TrackingTestExecution + * + * A single instance of this class is used when running the test. It is usually + * created by the test runner (TestRunner). + * + * This class shouldn't have to be inherited from. Use a TestListener + * or one of its subclasses to be informed of the ongoing tests. + * Use a Outputter to receive a test summary once it has finished + * + * TestResult supplies a template method 'setSynchronizationObject()' + * so that subclasses can provide mutual exclusion in the face of multiple + * threads. This can be useful when tests execute in one thread and + * they fill a subclass of TestResult which effects change in another + * thread. To have mutual exclusion, override setSynchronizationObject() + * and make sure that you create an instance of ExclusiveZone at the + * beginning of each method. + * + * \see Test, TestListener, TestResultCollector, Outputter. + */ +class CPPUNIT_API TestResult : protected SynchronizedObject +{ +public: + /// Construct a TestResult + TestResult( SynchronizationObject *syncObject = 0 ); + + /// Destroys a test result + virtual ~TestResult(); + + virtual void addListener( TestListener *listener ); + + virtual void removeListener( TestListener *listener ); + + /// Resets the stop flag. + virtual void reset(); + + /// Stop testing + virtual void stop(); + + /// Returns whether testing should be stopped + virtual bool shouldStop() const; + + /// Informs TestListener that a test will be started. + virtual void startTest( Test *test ); + + /*! \brief Adds an error to the list of errors. + * The passed in exception + * caused the error + */ + virtual void addError( Test *test, Exception *e ); + + /*! \brief Adds a failure to the list of failures. The passed in exception + * caused the failure. + */ + virtual void addFailure( Test *test, Exception *e ); + + /// Informs TestListener that a test was completed. + virtual void endTest( Test *test ); + + /// Informs TestListener that a test suite will be started. + virtual void startSuite( Test *test ); + + /// Informs TestListener that a test suite was completed. + virtual void endSuite( Test *test ); + + /*! \brief Run the specified test. + * + * Calls startTestRun(), test->run(this), and finally endTestRun(). + */ + virtual void runTest( Test *test ); + + /*! \brief Protects a call to the specified functor. + * + * See Protector to understand how protector works. A default protector is + * always present. It captures CppUnit::Exception, std::exception and + * any other exceptions, retrieving as much as possible information about + * the exception as possible. + * + * Additional Protector can be added to the chain to support other exception + * types using pushProtector() and popProtector(). + * + * \param functor Functor to call (typically a call to setUp(), runTest() or + * tearDown(). + * \param test Test the functor is associated to (used for failure reporting). + * \param shortDescription Short description override for the failure message. + */ + virtual bool protect( const Functor &functor, + Test *test, + const std::string &shortDescription = std::string("") ); + + /// Adds the specified protector to the protector chain. + virtual void pushProtector( Protector *protector ); + + /// Removes the last protector from the protector chain. + virtual void popProtector(); + +protected: + /*! \brief Called to add a failure to the list of failures. + */ + void addFailure( const TestFailure &failure ); + + virtual void startTestRun( Test *test ); + virtual void endTestRun( Test *test ); + +protected: + typedef CppUnitDeque TestListeners; + TestListeners m_listeners; + ProtectorChain *m_protectorChain; + bool m_stop; + +private: + TestResult( const TestResult &other ); + TestResult &operator =( const TestResult &other ); +}; + + +CPPUNIT_NS_END + + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_TESTRESULT_H + + diff --git a/3rdParty/include/cppunit/TestResultCollector.h b/3rdParty/include/cppunit/TestResultCollector.h new file mode 100644 index 00000000..01b0a547 --- /dev/null +++ b/3rdParty/include/cppunit/TestResultCollector.h @@ -0,0 +1,87 @@ +#ifndef CPPUNIT_TESTRESULTCOLLECTOR_H +#define CPPUNIT_TESTRESULTCOLLECTOR_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 4660 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + + +CPPUNIT_NS_BEGIN + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +// template class CPPUNIT_API std::deque; +#endif + + +/*! \brief Collects test result. + * \ingroup WritingTestResult + * \ingroup BrowsingCollectedTestResult + * + * A TestResultCollector is a TestListener which collects the results of executing + * a test case. It is an instance of the Collecting Parameter pattern. + * + * The test framework distinguishes between failures and errors. + * A failure is anticipated and checked for with assertions. Errors are + * unanticipated problems signified by exceptions that are not generated + * by the framework. + * \see TestListener, TestFailure. + */ +class CPPUNIT_API TestResultCollector : public TestSuccessListener +{ +public: + typedef CppUnitDeque TestFailures; + typedef CppUnitDeque Tests; + + + /*! Constructs a TestResultCollector object. + */ + TestResultCollector( SynchronizationObject *syncObject = 0 ); + + /// Destructor. + virtual ~TestResultCollector(); + + void startTest( Test *test ); + void addFailure( const TestFailure &failure ); + + virtual void reset(); + + virtual int runTests() const; + virtual int testErrors() const; + virtual int testFailures() const; + virtual int testFailuresTotal() const; + + virtual const TestFailures& failures() const; + virtual const Tests &tests() const; + +protected: + void freeFailures(); + + Tests m_tests; + TestFailures m_failures; + int m_testErrors; + +private: + /// Prevents the use of the copy constructor. + TestResultCollector( const TestResultCollector © ); + + /// Prevents the use of the copy operator. + void operator =( const TestResultCollector © ); +}; + + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_TESTRESULTCOLLECTOR_H diff --git a/3rdParty/include/cppunit/TestRunner.h b/3rdParty/include/cppunit/TestRunner.h new file mode 100644 index 00000000..930370ad --- /dev/null +++ b/3rdParty/include/cppunit/TestRunner.h @@ -0,0 +1,135 @@ +#ifndef CPPUNIT_TESTRUNNER_H +#define CPPUNIT_TESTRUNNER_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestResult; + + +/*! \brief Generic test runner. + * \ingroup ExecutingTest + * + * The TestRunner assumes ownership of all added tests: you can not add test + * or suite that are local variable since they can't be deleted. + * + * Example of usage: + * \code + * #include + * #include + * #include + * #include + * #include + * #include + * + * + * int + * main( int argc, char* argv[] ) + * { + * std::string testPath = (argc > 1) ? std::string(argv[1]) : ""; + * + * // Create the event manager and test controller + * CppUnit::TestResult controller; + * + * // Add a listener that colllects test result + * CppUnit::TestResultCollector result; + * controller.addListener( &result ); + * + * // Add a listener that print dots as test run. + * CppUnit::TextTestProgressListener progress; + * controller.addListener( &progress ); + * + * // Add the top suite to the test runner + * CppUnit::TestRunner runner; + * runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); + * try + * { + * std::cout << "Running " << testPath; + * runner.run( controller, testPath ); + * + * std::cerr << std::endl; + * + * // Print test in a compiler compatible format. + * CppUnit::CompilerOutputter outputter( &result, std::cerr ); + * outputter.write(); + * } + * catch ( std::invalid_argument &e ) // Test path not resolved + * { + * std::cerr << std::endl + * << "ERROR: " << e.what() + * << std::endl; + * return 0; + * } + * + * return result.wasSuccessful() ? 0 : 1; + * } + * \endcode + */ +class CPPUNIT_API TestRunner +{ +public: + /*! \brief Constructs a TestRunner object. + */ + TestRunner( ); + + /// Destructor. + virtual ~TestRunner(); + + /*! \brief Adds the specified test. + * \param test Test to add. The TestRunner takes ownership of the test. + */ + virtual void addTest( Test *test ); + + /*! \brief Runs a test using the specified controller. + * \param controller Event manager and controller used for testing + * \param testPath Test path string. See Test::resolveTestPath() for detail. + * \exception std::invalid_argument if no test matching \a testPath is found. + * see TestPath::TestPath( Test*, const std::string &) + * for detail. + */ + virtual void run( TestResult &controller, + const std::string &testPath = "" ); + +protected: + /*! \brief (INTERNAL) Mutating test suite. + */ + class CPPUNIT_API WrappingSuite : public TestSuite + { + public: + WrappingSuite( const std::string &name = "All Tests" ); + + int getChildTestCount() const; + + std::string getName() const; + + void run( TestResult *result ); + + protected: + Test *doGetChildTestAt( int index ) const; + + bool hasOnlyOneTest() const; + + Test *getUniqueChildTest() const; + }; + +protected: + WrappingSuite *m_suite; + +private: + /// Prevents the use of the copy constructor. + TestRunner( const TestRunner © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunner © ); + +private: +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTRUNNER_H diff --git a/3rdParty/include/cppunit/TestSuccessListener.h b/3rdParty/include/cppunit/TestSuccessListener.h new file mode 100644 index 00000000..60c5ff50 --- /dev/null +++ b/3rdParty/include/cppunit/TestSuccessListener.h @@ -0,0 +1,39 @@ +#ifndef CPPUNIT_TESTSUCCESSLISTENER_H +#define CPPUNIT_TESTSUCCESSLISTENER_H + +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief TestListener that checks if any test case failed. + * \ingroup TrackingTestExecution + */ +class CPPUNIT_API TestSuccessListener : public TestListener, + public SynchronizedObject +{ +public: + /*! Constructs a TestSuccessListener object. + */ + TestSuccessListener( SynchronizationObject *syncObject = 0 ); + + /// Destructor. + virtual ~TestSuccessListener(); + + virtual void reset(); + + void addFailure( const TestFailure &failure ); + + /// Returns whether the entire test was successful or not. + virtual bool wasSuccessful() const; + +private: + bool m_success; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTSUCCESSLISTENER_H diff --git a/3rdParty/include/cppunit/TestSuite.h b/3rdParty/include/cppunit/TestSuite.h new file mode 100644 index 00000000..2b9cd8d4 --- /dev/null +++ b/3rdParty/include/cppunit/TestSuite.h @@ -0,0 +1,80 @@ +#ifndef CPPUNIT_TESTSUITE_H // -*- C++ -*- +#define CPPUNIT_TESTSUITE_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + +CPPUNIT_NS_BEGIN + + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::vector; +#endif + + +/*! \brief A Composite of Tests. + * \ingroup CreatingTestSuite + * + * It runs a collection of test cases. Here is an example. + * \code + * CppUnit::TestSuite *suite= new CppUnit::TestSuite(); + * suite->addTest(new CppUnit::TestCaller ( + * "testAdd", testAdd)); + * suite->addTest(new CppUnit::TestCaller ( + * "testDivideByZero", testDivideByZero)); + * \endcode + * Note that \link TestSuite TestSuites \endlink assume lifetime + * control for any tests added to them. + * + * TestSuites do not register themselves in the TestRegistry. + * \see Test + * \see TestCaller + */ +class CPPUNIT_API TestSuite : public TestComposite +{ +public: + /*! Constructs a test suite with the specified name. + */ + TestSuite( std::string name = "" ); + + ~TestSuite(); + + /*! Adds the specified test to the suite. + * \param test Test to add. Must not be \c NULL. + */ + void addTest( Test *test ); + + /*! Returns the list of the tests (DEPRECATED). + * \deprecated Use getChildTestCount() & getChildTestAt() of the + * TestComposite interface instead. + * \return Reference on a vector that contains the tests of the suite. + */ + const CppUnitVector &getTests() const; + + /*! Destroys all the tests of the suite. + */ + virtual void deleteContents(); + + int getChildTestCount() const; + + Test *doGetChildTestAt( int index ) const; + +private: + CppUnitVector m_tests; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_TESTSUITE_H diff --git a/3rdParty/include/cppunit/TextOutputter.h b/3rdParty/include/cppunit/TextOutputter.h new file mode 100644 index 00000000..6bd9ceaa --- /dev/null +++ b/3rdParty/include/cppunit/TextOutputter.h @@ -0,0 +1,59 @@ +#ifndef CPPUNIT_TEXTOUTPUTTER_H +#define CPPUNIT_TEXTOUTPUTTER_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class SourceLine; +class TestResultCollector; +class TestFailure; + + +/*! \brief Prints a TestResultCollector to a text stream. + * \ingroup WritingTestResult + */ +class CPPUNIT_API TextOutputter : public Outputter +{ +public: + TextOutputter( TestResultCollector *result, + OStream &stream ); + + /// Destructor. + virtual ~TextOutputter(); + + void write(); + virtual void printFailures(); + virtual void printHeader(); + + virtual void printFailure( TestFailure *failure, + int failureNumber ); + virtual void printFailureListMark( int failureNumber ); + virtual void printFailureTestName( TestFailure *failure ); + virtual void printFailureType( TestFailure *failure ); + virtual void printFailureLocation( SourceLine sourceLine ); + virtual void printFailureDetail( Exception *thrownException ); + virtual void printFailureWarning(); + virtual void printStatistics(); + +protected: + TestResultCollector *m_result; + OStream &m_stream; + +private: + /// Prevents the use of the copy constructor. + TextOutputter( const TextOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const TextOutputter © ); +}; + + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEXTOUTPUTTER_H diff --git a/3rdParty/include/cppunit/TextTestProgressListener.h b/3rdParty/include/cppunit/TextTestProgressListener.h new file mode 100644 index 00000000..7521c40b --- /dev/null +++ b/3rdParty/include/cppunit/TextTestProgressListener.h @@ -0,0 +1,44 @@ +#ifndef CPPUNIT_TEXTTESTPROGRESSLISTENER_H +#define CPPUNIT_TEXTTESTPROGRESSLISTENER_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! + * \brief TestListener that show the status of each TestCase test result. + * \ingroup TrackingTestExecution + */ +class CPPUNIT_API TextTestProgressListener : public TestListener +{ +public: + /*! Constructs a TextTestProgressListener object. + */ + TextTestProgressListener(); + + /// Destructor. + virtual ~TextTestProgressListener(); + + void startTest( Test *test ); + + void addFailure( const TestFailure &failure ); + + void endTestRun( Test *test, + TestResult *eventManager ); + +private: + /// Prevents the use of the copy constructor. + TextTestProgressListener( const TextTestProgressListener © ); + + /// Prevents the use of the copy operator. + void operator =( const TextTestProgressListener © ); + +private: +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEXTTESTPROGRESSLISTENER_H diff --git a/3rdParty/include/cppunit/TextTestResult.h b/3rdParty/include/cppunit/TextTestResult.h new file mode 100644 index 00000000..e7b1fa3e --- /dev/null +++ b/3rdParty/include/cppunit/TextTestResult.h @@ -0,0 +1,39 @@ +#ifndef CPPUNIT_TEXTTESTRESULT_H +#define CPPUNIT_TEXTTESTRESULT_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class SourceLine; +class Exception; +class Test; + +/*! \brief Holds printable test result (DEPRECATED). + * \ingroup TrackingTestExecution + * + * deprecated Use class TextTestProgressListener and TextOutputter instead. + */ +class CPPUNIT_API TextTestResult : public TestResult, + public TestResultCollector +{ +public: + TextTestResult(); + + virtual void addFailure( const TestFailure &failure ); + virtual void startTest( Test *test ); + virtual void print( OStream &stream ); +}; + +/** insertion operator for easy output */ +CPPUNIT_API OStream &operator <<( OStream &stream, + TextTestResult &result ); + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEXTTESTRESULT_H + + diff --git a/3rdParty/include/cppunit/TextTestRunner.h b/3rdParty/include/cppunit/TextTestRunner.h new file mode 100644 index 00000000..23890e08 --- /dev/null +++ b/3rdParty/include/cppunit/TextTestRunner.h @@ -0,0 +1,6 @@ +#ifndef CPPUNIT_TEXTTESTRUNNER_H +#define CPPUNIT_TEXTTESTRUNNER_H + +#include + +#endif // CPPUNIT_TEXTTESTRUNNER_H diff --git a/3rdParty/include/cppunit/XmlOutputter.h b/3rdParty/include/cppunit/XmlOutputter.h new file mode 100644 index 00000000..0de9676d --- /dev/null +++ b/3rdParty/include/cppunit/XmlOutputter.h @@ -0,0 +1,167 @@ +#ifndef CPPUNIT_XMLTESTRESULTOUTPUTTER_H +#define CPPUNIT_XMLTESTRESULTOUTPUTTER_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +class Test; +class TestFailure; +class TestResultCollector; +class XmlDocument; +class XmlElement; +class XmlOutputterHook; + + +/*! \brief Outputs a TestResultCollector in XML format. + * \ingroup WritingTestResult + * + * Save the test result as a XML stream. + * + * Additional datas can be added to the XML document using XmlOutputterHook. + * Hook are not owned by the XmlOutputter. They should be valid until + * destruction of the XmlOutputter. They can be removed with removeHook(). + * + * \see XmlDocument, XmlElement, XmlOutputterHook. + */ +class CPPUNIT_API XmlOutputter : public Outputter +{ +public: + /*! \brief Constructs a XmlOutputter object. + * \param result Result of the test run. + * \param stream Stream used to output the XML output. + * \param encoding Encoding used in the XML file (default is Latin-1). + */ + XmlOutputter( TestResultCollector *result, + OStream &stream, + std::string encoding = std::string("ISO-8859-1") ); + + /// Destructor. + virtual ~XmlOutputter(); + + /*! \brief Adds the specified hook to the outputter. + * \param hook Hook to add. Must not be \c NULL. + */ + virtual void addHook( XmlOutputterHook *hook ); + + /*! \brief Removes the specified hook from the outputter. + * \param hook Hook to remove. + */ + virtual void removeHook( XmlOutputterHook *hook ); + + /*! \brief Writes the specified result as an XML document to the stream. + * + * Refer to examples/cppunittest/XmlOutputterTest.cpp for example + * of use and XML document structure. + */ + virtual void write(); + + /*! \brief Sets the XSL style sheet used. + * + * \param styleSheet Name of the style sheet used. If empty, then no style sheet + * is used (default). + */ + virtual void setStyleSheet( const std::string &styleSheet ); + + /*! \brief set the output document as standalone or not. + * + * For the output document, specify wether it's a standalone XML + * document, or not. + * + * \param standalone if true, the output will be specified as standalone. + * if false, it will be not. + */ + virtual void setStandalone( bool standalone ); + + typedef CppUnitMap > FailedTests; + + /*! \brief Sets the root element and adds its children. + * + * Set the root element of the XML Document and add its child elements. + * + * For all hooks, call beginDocument() just after creating the root element (it + * is empty at this time), and endDocument() once all the datas have been added + * to the root element. + */ + virtual void setRootNode(); + + virtual void addFailedTests( FailedTests &failedTests, + XmlElement *rootNode ); + + virtual void addSuccessfulTests( FailedTests &failedTests, + XmlElement *rootNode ); + + /*! \brief Adds the statics element to the root node. + * + * Creates a new element containing statistics data and adds it to the root element. + * Then, for all hooks, call statisticsAdded(). + * \param rootNode Root element. + */ + virtual void addStatistics( XmlElement *rootNode ); + + /*! \brief Adds a failed test to the failed tests node. + * Creates a new element containing datas about the failed test, and adds it to + * the failed tests element. + * Then, for all hooks, call failTestAdded(). + */ + virtual void addFailedTest( Test *test, + TestFailure *failure, + int testNumber, + XmlElement *testsNode ); + + virtual void addFailureLocation( TestFailure *failure, + XmlElement *testElement ); + + + /*! \brief Adds a successful test to the successful tests node. + * Creates a new element containing datas about the successful test, and adds it to + * the successful tests element. + * Then, for all hooks, call successfulTestAdded(). + */ + virtual void addSuccessfulTest( Test *test, + int testNumber, + XmlElement *testsNode ); +protected: + virtual void fillFailedTestsMap( FailedTests &failedTests ); + +protected: + typedef CppUnitDeque Hooks; + + TestResultCollector *m_result; + OStream &m_stream; + std::string m_encoding; + std::string m_styleSheet; + XmlDocument *m_xml; + Hooks m_hooks; + +private: + /// Prevents the use of the copy constructor. + XmlOutputter( const XmlOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlOutputter © ); + +private: +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_XMLTESTRESULTOUTPUTTER_H diff --git a/3rdParty/include/cppunit/XmlOutputterHook.h b/3rdParty/include/cppunit/XmlOutputterHook.h new file mode 100644 index 00000000..5ded3b1e --- /dev/null +++ b/3rdParty/include/cppunit/XmlOutputterHook.h @@ -0,0 +1,163 @@ +#ifndef CPPUNIT_XMLOUTPUTTERHOOK_H +#define CPPUNIT_XMLOUTPUTTERHOOK_H + +#include + + +CPPUNIT_NS_BEGIN + + +class Test; +class TestFailure; +class XmlDocument; +class XmlElement; + + + +/*! \brief Hook to customize Xml output. + * + * XmlOutputterHook can be passed to XmlOutputter to customize the XmlDocument. + * + * Common customizations are: + * - adding some datas to successfull or failed test with + * failTestAdded() and successfulTestAdded(), + * - adding some statistics with statisticsAdded(), + * - adding other datas with beginDocument() or endDocument(). + * + * See examples/ClockerPlugIn which makes use of most the hook. + * + * Another simple example of an outputter hook is shown below. It may be + * used to add some meta information to your result files. In the example, + * the author name as well as the project name and test creation date is + * added to the head of the xml file. + * + * In order to make this information stored within the xml file, the virtual + * member function beginDocument() is overriden where a new + * XmlElement object is created. + * + * This element is simply added to the root node of the document which + * makes the information automatically being stored when the xml file + * is written. + * + * \code + * #include + * #include + * #include + * + * ... + * + * class MyXmlOutputterHook : public CppUnit::XmlOutputterHook + * { + * public: + * MyXmlOutputterHook(const std::string projectName, + * const std::string author) + * { + * m_projectName = projectName; + * m_author = author; + * }; + * + * virtual ~MyXmlOutputterHook() + * { + * }; + * + * void beginDocument(CppUnit::XmlDocument* document) + * { + * if (!document) + * return; + * + * // dump current time + * std::string szDate = CppUnit::StringTools::toString( (int)time(0) ); + * CppUnit::XmlElement* metaEl = new CppUnit::XmlElement("SuiteInfo", + * ""); + * + * metaEl->addElement( new CppUnit::XmlElement("Author", m_author) ); + * metaEl->addElement( new CppUnit::XmlElement("Project", m_projectName) ); + * metaEl->addElement( new CppUnit::XmlElement("Date", szDate ) ); + * + * document->rootElement().addElement(metaEl); + * }; + * private: + * std::string m_projectName; + * std::string m_author; + * }; + * \endcode + * + * Within your application's main code, you need to snap the hook + * object into your xml outputter object like shown below: + * + * \code + * CppUnit::TextUi::TestRunner runner; + * std::ofstream outputFile("testResults.xml"); + * + * CppUnit::XmlOutputter* outputter = new CppUnit::XmlOutputter( &runner.result(), + * outputFile ); + * MyXmlOutputterHook hook("myProject", "meAuthor"); + * outputter->addHook(&hook); + * runner.setOutputter(outputter); + * runner.addTest( VectorFixture::suite() ); + * runner.run(); + * outputFile.close(); + * \endcode + * + * This results into the following output: + * + * \code + * + * + * meAuthor + * myProject + * 1028143912 + * + * + * ... + * \endcode + * + * \see XmlOutputter, CppUnitTestPlugIn. + */ +class CPPUNIT_API XmlOutputterHook +{ +public: + /*! Called before any elements is added to the root element. + * \param document XML Document being created. + */ + virtual void beginDocument( XmlDocument *document ); + + /*! Called after adding all elements to the root element. + * \param document XML Document being created. + */ + virtual void endDocument( XmlDocument *document ); + + /*! Called after adding a fail test element. + * \param document XML Document being created. + * \param testElement \ element. + * \param test Test that failed. + * \param failure Test failure data. + */ + virtual void failTestAdded( XmlDocument *document, + XmlElement *testElement, + Test *test, + TestFailure *failure ); + + /*! Called after adding a successful test element. + * \param document XML Document being created. + * \param testElement \ element. + * \param test Test that was successful. + */ + virtual void successfulTestAdded( XmlDocument *document, + XmlElement *testElement, + Test *test ); + + /*! Called after adding the statistic element. + * \param document XML Document being created. + * \param statisticsElement \ element. + */ + virtual void statisticsAdded( XmlDocument *document, + XmlElement *statisticsElement ); + + virtual ~XmlOutputterHook() {} +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_XMLOUTPUTTERHOOK_H diff --git a/3rdParty/include/cppunit/config-auto.h b/3rdParty/include/cppunit/config-auto.h new file mode 100644 index 00000000..98708637 --- /dev/null +++ b/3rdParty/include/cppunit/config-auto.h @@ -0,0 +1,160 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_AUTO_H +#define _INCLUDE_CPPUNIT_CONFIG_AUTO_H 1 + +/* include/cppunit/config-auto.h. Generated automatically at end of configure. */ +/* config/config.h. Generated from config.h.in by configure. */ +/* config/config.h.in. Generated from configure.in by autoheader. */ + +/* define if library uses std::string::compare(string,pos,n) */ +/* #undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST */ + +/* define if the library defines strstream */ +#ifndef CPPUNIT_HAVE_CLASS_STRSTREAM +#define CPPUNIT_HAVE_CLASS_STRSTREAM 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_CMATH +#define CPPUNIT_HAVE_CMATH 1 +#endif + +/* Define if you have the GNU dld library. */ +/* #undef CPPUNIT_HAVE_DLD */ + +/* Define to 1 if you have the `dlerror' function. */ +/* #undef CPPUNIT_HAVE_DLERROR */ + +/* Define to 1 if you have the header file. */ +/* #undef CPPUNIT_HAVE_DLFCN_H */ + +/* Define to 1 if you have the `finite' function. */ +#ifndef CPPUNIT_HAVE_FINITE +#define CPPUNIT_HAVE_FINITE 1 +#endif + +/* define if the compiler supports GCC C++ ABI name demangling */ +/* #undef CPPUNIT_HAVE_GCC_ABI_DEMANGLE */ + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_INTTYPES_H +#define CPPUNIT_HAVE_INTTYPES_H 1 +#endif + +/* define if compiler has isfinite */ +#ifndef CPPUNIT_HAVE_ISFINITE +#define CPPUNIT_HAVE_ISFINITE 1 +#endif + +/* Define if you have the libdl library or equivalent. */ +/* #undef CPPUNIT_HAVE_LIBDL */ + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_MEMORY_H +#define CPPUNIT_HAVE_MEMORY_H 1 +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 1 +#endif + +/* Define if you have the shl_load function. */ +/* #undef CPPUNIT_HAVE_SHL_LOAD */ + +/* define if the compiler has stringstream */ +#ifndef CPPUNIT_HAVE_SSTREAM +#define CPPUNIT_HAVE_SSTREAM 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_STDINT_H +#define CPPUNIT_HAVE_STDINT_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_STDLIB_H +#define CPPUNIT_HAVE_STDLIB_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_STRINGS_H +#define CPPUNIT_HAVE_STRINGS_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_STRING_H +#define CPPUNIT_HAVE_STRING_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_STRSTREAM +#define CPPUNIT_HAVE_STRSTREAM 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_SYS_STAT_H +#define CPPUNIT_HAVE_SYS_STAT_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_SYS_TYPES_H +#define CPPUNIT_HAVE_SYS_TYPES_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#ifndef CPPUNIT_HAVE_UNISTD_H +#define CPPUNIT_HAVE_UNISTD_H 1 +#endif + +/* Name of package */ +#ifndef CPPUNIT_PACKAGE +#define CPPUNIT_PACKAGE "cppunit" +#endif + +/* Define to the address where bug reports for this package should be sent. */ +#ifndef CPPUNIT_PACKAGE_BUGREPORT +#define CPPUNIT_PACKAGE_BUGREPORT "" +#endif + +/* Define to the full name of this package. */ +#ifndef CPPUNIT_PACKAGE_NAME +#define CPPUNIT_PACKAGE_NAME "" +#endif + +/* Define to the full name and version of this package. */ +#ifndef CPPUNIT_PACKAGE_STRING +#define CPPUNIT_PACKAGE_STRING "" +#endif + +/* Define to the one symbol short name of this package. */ +#ifndef CPPUNIT_PACKAGE_TARNAME +#define CPPUNIT_PACKAGE_TARNAME "" +#endif + +/* Define to the version of this package. */ +#ifndef CPPUNIT_PACKAGE_VERSION +#define CPPUNIT_PACKAGE_VERSION "" +#endif + +/* Define to 1 if you have the ANSI C header files. */ +#ifndef CPPUNIT_STDC_HEADERS +#define CPPUNIT_STDC_HEADERS 1 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +/* Version number of package */ +#ifndef CPPUNIT_VERSION +#define CPPUNIT_VERSION "1.12.1" +#endif + +/* _INCLUDE_CPPUNIT_CONFIG_AUTO_H */ +#endif diff --git a/3rdParty/include/cppunit/config/CppUnitApi.h b/3rdParty/include/cppunit/config/CppUnitApi.h new file mode 100644 index 00000000..a068bbd5 --- /dev/null +++ b/3rdParty/include/cppunit/config/CppUnitApi.h @@ -0,0 +1,33 @@ +#ifndef CPPUNIT_CONFIG_CPPUNITAPI +#define CPPUNIT_CONFIG_CPPUNITAPI + +#undef CPPUNIT_API + +#ifdef WIN32 + +// define CPPUNIT_DLL_BUILD when building CppUnit dll. +#ifdef CPPUNIT_BUILD_DLL +#define CPPUNIT_API __declspec(dllexport) +#endif + +// define CPPUNIT_DLL when linking to CppUnit dll. +#ifdef CPPUNIT_DLL +#define CPPUNIT_API __declspec(dllimport) +#endif + +#ifdef CPPUNIT_API +#undef CPPUNIT_NEED_DLL_DECL +#define CPPUNIT_NEED_DLL_DECL 1 +#endif + +#endif + + +#ifndef CPPUNIT_API +#define CPPUNIT_API +#undef CPPUNIT_NEED_DLL_DECL +#define CPPUNIT_NEED_DLL_DECL 0 +#endif + + +#endif // CPPUNIT_CONFIG_CPPUNITAPI diff --git a/3rdParty/include/cppunit/config/SelectDllLoader.h b/3rdParty/include/cppunit/config/SelectDllLoader.h new file mode 100644 index 00000000..dc1c0115 --- /dev/null +++ b/3rdParty/include/cppunit/config/SelectDllLoader.h @@ -0,0 +1,76 @@ +#ifndef CPPUNIT_CONFIG_SELECTDLLLOADER_H +#define CPPUNIT_CONFIG_SELECTDLLLOADER_H + +/*! \file + * Selects DynamicLibraryManager implementation. + * + * Don't include this file directly. Include Portability.h instead. + */ + +/*! + * \def CPPUNIT_NO_TESTPLUGIN + * \brief If defined, then plug-in related classes and functions will not be compiled. + * + * \internal + * CPPUNIT_HAVE_WIN32_DLL_LOADER + * If defined, Win32 implementation of DynamicLibraryManager will be used. + * + * CPPUNIT_HAVE_BEOS_DLL_LOADER + * If defined, BeOs implementation of DynamicLibraryManager will be used. + * + * CPPUNIT_HAVE_UNIX_DLL_LOADER + * If defined, Unix implementation (dlfcn.h) of DynamicLibraryManager will be used. + */ + +/*! + * \def CPPUNIT_PLUGIN_EXPORT + * \ingroup WritingTestPlugIn + * \brief A macro to export a function from a dynamic library + * + * This macro export the C function following it from a dynamic library. + * Exporting the function makes it accessible to the DynamicLibraryManager. + * + * Example of usage: + * \code + * #include + * + * CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void) + * { + * ... + * return &myPlugInInterface; + * } + * \endcode + */ + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +// Is WIN32 platform ? +#if defined(WIN32) +#define CPPUNIT_HAVE_WIN32_DLL_LOADER 1 +#undef CPPUNIT_PLUGIN_EXPORT +#define CPPUNIT_PLUGIN_EXPORT extern "C" __declspec(dllexport) + +// Is BeOS platform ? +#elif defined(__BEOS__) +#define CPPUNIT_HAVE_BEOS_DLL_LOADER 1 + +// Is Unix platform and have shl_load() (hp-ux) +#elif defined(CPPUNIT_HAVE_SHL_LOAD) +#define CPPUNIT_HAVE_UNIX_SHL_LOADER 1 + +// Is Unix platform and have include +#elif defined(CPPUNIT_HAVE_LIBDL) +#define CPPUNIT_HAVE_UNIX_DLL_LOADER 1 + +// Otherwise, disable support for DllLoader +#else +#define CPPUNIT_NO_TESTPLUGIN 1 +#endif + +#if !defined(CPPUNIT_PLUGIN_EXPORT) +#define CPPUNIT_PLUGIN_EXPORT extern "C" +#endif // !defined(CPPUNIT_PLUGIN_EXPORT) + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_CONFIG_SELECTDLLLOADER_H diff --git a/3rdParty/include/cppunit/config/SourcePrefix.h b/3rdParty/include/cppunit/config/SourcePrefix.h new file mode 100644 index 00000000..2334601b --- /dev/null +++ b/3rdParty/include/cppunit/config/SourcePrefix.h @@ -0,0 +1,14 @@ +#ifndef CPPUNIT_CONFIG_H_INCLUDED +#define CPPUNIT_CONFIG_H_INCLUDED + +#include + +#ifdef _MSC_VER +#pragma warning(disable: 4018 4284 4146) +#if _MSC_VER >= 1400 +#pragma warning(disable: 4996) // sprintf is deprecated +#endif +#endif + + +#endif // CPPUNIT_CONFIG_H_INCLUDED diff --git a/3rdParty/include/cppunit/config/config-bcb5.h b/3rdParty/include/cppunit/config/config-bcb5.h new file mode 100644 index 00000000..d4914520 --- /dev/null +++ b/3rdParty/include/cppunit/config/config-bcb5.h @@ -0,0 +1,47 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_BCB5_H +#define _INCLUDE_CPPUNIT_CONFIG_BCB5_H 1 + +#define HAVE_CMATH 1 + +/* include/cppunit/config-bcb5.h. Manually adapted from + include/cppunit/config-auto.h */ + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if library uses std::string::compare(string,pos,n) */ +#ifndef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#define CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 0 +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 1 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +#define CPPUNIT_HAVE_SSTREAM 1 + +/* Name of package */ +#ifndef CPPUNIT_PACKAGE +#define CPPUNIT_PACKAGE "cppunit" +#endif + +/* _INCLUDE_CPPUNIT_CONFIG_BCB5_H */ +#endif diff --git a/3rdParty/include/cppunit/config/config-evc4.h b/3rdParty/include/cppunit/config/config-evc4.h new file mode 100644 index 00000000..a7916981 --- /dev/null +++ b/3rdParty/include/cppunit/config/config-evc4.h @@ -0,0 +1,78 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_EVC4_H +#define _INCLUDE_CPPUNIT_CONFIG_EVC4_H 1 + +#if _MSC_VER > 1000 // VC++ +#pragma warning( disable : 4786 ) // disable warning debug symbol > 255... +#endif // _MSC_VER > 1000 + +#define HAVE_CMATH 1 + +/* include/cppunit/config-msvc6.h. Manually adapted from + include/cppunit/config-auto.h */ + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if library uses std::string::compare(string,pos,n) */ +#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 0 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +#define CPPUNIT_NO_STREAM 1 +#define CPPUNIT_NO_ASSERT 1 + +#define CPPUNIT_HAVE_SSTREAM 0 + +/* Name of package */ +#ifndef CPPUNIT_PACKAGE +#define CPPUNIT_PACKAGE "cppunit" +#endif + + +// Compiler error location format for CompilerOutputter +// See class CompilerOutputter for format. +#undef CPPUNIT_COMPILER_LOCATION_FORMAT +#if _MSC_VER >= 1300 // VS 7.0 +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l) : error : " +#else +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l):" +#endif + +/* define to 1 if the compiler has _finite() */ +#ifndef CPPUNIT_HAVE__FINITE +#define CPPUNIT_HAVE__FINITE 1 +#endif + +// Uncomment to turn on STL wrapping => use this to test compilation. +// This will make CppUnit subclass std::vector & co to provide default +// parameter. +/*#define CPPUNIT_STD_NEED_ALLOCATOR 1 +#define CPPUNIT_STD_ALLOCATOR std::allocator +//#define CPPUNIT_NO_NAMESPACE 1 +*/ + + +/* _INCLUDE_CPPUNIT_CONFIG_EVC4_H */ +#endif diff --git a/3rdParty/include/cppunit/config/config-mac.h b/3rdParty/include/cppunit/config/config-mac.h new file mode 100644 index 00000000..4ace906c --- /dev/null +++ b/3rdParty/include/cppunit/config/config-mac.h @@ -0,0 +1,58 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_MAC_H +#define _INCLUDE_CPPUNIT_CONFIG_MAC_H 1 + +/* MacOS X should be installed using the configure script. + This file is for other macs. + + It is not integrated into because we don't + know a suitable preprocessor symbol that will distinguish MacOS X + from other MacOS versions. Email us if you know the answer. +*/ + +/* define if library uses std::string::compare(string,pos,n) */ +#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#endif + +/* define if the library defines strstream */ +#ifndef CPPUNIT_HAVE_CLASS_STRSTREAM +#define CPPUNIT_HAVE_CLASS_STRSTREAM 1 +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_CMATH +#undef CPPUNIT_HAVE_CMATH +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 1 +#endif + +/* define if the compiler has stringstream */ +#ifndef CPPUNIT_HAVE_SSTREAM +#define CPPUNIT_HAVE_SSTREAM 1 +#endif + +/* Define if you have the header file. */ +#ifndef CPPUNIT_HAVE_STRSTREAM +#define CPPUNIT_HAVE_STRSTREAM 1 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +/* _INCLUDE_CPPUNIT_CONFIG_MAC_H */ +#endif diff --git a/3rdParty/include/cppunit/config/config-msvc6.h b/3rdParty/include/cppunit/config/config-msvc6.h new file mode 100644 index 00000000..d6881711 --- /dev/null +++ b/3rdParty/include/cppunit/config/config-msvc6.h @@ -0,0 +1,83 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_MSVC6_H +#define _INCLUDE_CPPUNIT_CONFIG_MSVC6_H 1 + +#if _MSC_VER > 1000 // VC++ +#pragma warning( disable : 4786 ) // disable warning debug symbol > 255... +#endif // _MSC_VER > 1000 + +#define HAVE_CMATH 1 + +/* include/cppunit/config-msvc6.h. Manually adapted from + include/cppunit/config-auto.h */ + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if library uses std::string::compare(string,pos,n) */ +#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +# ifdef _CPPRTTI // Defined by the compiler option /GR +# define CPPUNIT_HAVE_RTTI 1 +# else +# define CPPUNIT_HAVE_RTTI 0 +# endif +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +#define CPPUNIT_HAVE_SSTREAM 1 + +/* Name of package */ +#ifndef CPPUNIT_PACKAGE +#define CPPUNIT_PACKAGE "cppunit" +#endif + + +// Compiler error location format for CompilerOutputter +// See class CompilerOutputter for format. +#undef CPPUNIT_COMPILER_LOCATION_FORMAT +#if _MSC_VER >= 1300 // VS 7.0 +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l) : error : " +#else +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l):" +#endif + +// Define to 1 if the compiler support C++ style cast. +#define CPPUNIT_HAVE_CPP_CAST 1 + +/* define to 1 if the compiler has _finite() */ +#ifndef CPPUNIT_HAVE__FINITE +#define CPPUNIT_HAVE__FINITE 1 +#endif + + +// Uncomment to turn on STL wrapping => use this to test compilation. +// This will make CppUnit subclass std::vector & co to provide default +// parameter. +/*#define CPPUNIT_STD_NEED_ALLOCATOR 1 +#define CPPUNIT_STD_ALLOCATOR std::allocator +//#define CPPUNIT_NO_NAMESPACE 1 +*/ + + +/* _INCLUDE_CPPUNIT_CONFIG_MSVC6_H */ +#endif diff --git a/3rdParty/include/cppunit/extensions/AutoRegisterSuite.h b/3rdParty/include/cppunit/extensions/AutoRegisterSuite.h new file mode 100644 index 00000000..e04adb5d --- /dev/null +++ b/3rdParty/include/cppunit/extensions/AutoRegisterSuite.h @@ -0,0 +1,83 @@ +#ifndef CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H +#define CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief (Implementation) Automatically register the test suite of the specified type. + * + * You should not use this class directly. Instead, use the following macros: + * - CPPUNIT_TEST_SUITE_REGISTRATION() + * - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() + * + * This object will register the test returned by TestCaseType::suite() + * when constructed to the test registry. + * + * This object is intented to be used as a static variable. + * + * + * \param TestCaseType Type of the test case which suite is registered. + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION + * \see CppUnit::TestFactoryRegistry. + */ +template +class AutoRegisterSuite +{ +public: + /** Auto-register the suite factory in the global registry. + */ + AutoRegisterSuite() + : m_registry( &TestFactoryRegistry::getRegistry() ) + { + m_registry->registerFactory( &m_factory ); + } + + /** Auto-register the suite factory in the specified registry. + * \param name Name of the registry. + */ + AutoRegisterSuite( const std::string &name ) + : m_registry( &TestFactoryRegistry::getRegistry( name ) ) + { + m_registry->registerFactory( &m_factory ); + } + + ~AutoRegisterSuite() + { + if ( TestFactoryRegistry::isValid() ) + m_registry->unregisterFactory( &m_factory ); + } + +private: + TestFactoryRegistry *m_registry; + TestSuiteFactory m_factory; +}; + + +/*! \brief (Implementation) Automatically adds a registry into another registry. + * + * Don't use this class. Use the macros CPPUNIT_REGISTRY_ADD() and + * CPPUNIT_REGISTRY_ADD_TO_DEFAULT() instead. + */ +class AutoRegisterRegistry +{ +public: + AutoRegisterRegistry( const std::string &which, + const std::string &to ) + { + TestFactoryRegistry::getRegistry( to ).addRegistry( which ); + } + + AutoRegisterRegistry( const std::string &which ) + { + TestFactoryRegistry::getRegistry().addRegistry( which ); + } +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H diff --git a/3rdParty/include/cppunit/extensions/ExceptionTestCaseDecorator.h b/3rdParty/include/cppunit/extensions/ExceptionTestCaseDecorator.h new file mode 100644 index 00000000..9c816add --- /dev/null +++ b/3rdParty/include/cppunit/extensions/ExceptionTestCaseDecorator.h @@ -0,0 +1,104 @@ +#ifndef CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H +#define CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief Expected exception test case decorator. + * + * A decorator used to assert that a specific test case should throw an + * exception of a given type. + * + * You should use this class only if you need to check the exception object + * state (that a specific cause is set for example). If you don't need to + * do that, you might consider using CPPUNIT_TEST_EXCEPTION() instead. + * + * Intended use is to subclass and override checkException(). Example: + * + * \code + * + * class NetworkErrorTestCaseDecorator : + * public ExceptionTestCaseDecorator + * { + * public: + * NetworkErrorTestCaseDecorator( NetworkError::Cause expectedCause ) + * : m_expectedCause( expectedCause ) + * { + * } + * private: + * void checkException( ExpectedExceptionType &e ) + * { + * CPPUNIT_ASSERT_EQUAL( m_expectedCause, e.getCause() ); + * } + * + * NetworkError::Cause m_expectedCause; + * }; + * \endcode + * + */ +template +class ExceptionTestCaseDecorator : public TestCaseDecorator +{ +public: + typedef ExpectedException ExpectedExceptionType; + + /*! \brief Decorates the specified test. + * \param test TestCase to decorate. Assumes ownership of the test. + */ + ExceptionTestCaseDecorator( TestCase *test ) + : TestCaseDecorator( test ) + { + } + + /*! \brief Checks that the expected exception is thrown by the decorated test. + * is thrown. + * + * Calls the decorated test runTest() and checks that an exception of + * type ExpectedException is thrown. Call checkException() passing the + * exception that was caught so that some assertions can be made if + * needed. + */ + void runTest() + { + try + { + TestCaseDecorator::runTest(); + } + catch ( ExpectedExceptionType &e ) + { + checkException( e ); + return; + } + + // Moved outside the try{} statement to handle the case where the + // expected exception type is Exception (expecting assertion failure). +#if CPPUNIT_USE_TYPEINFO_NAME + throw Exception( Message( + "expected exception not thrown", + "Expected exception type: " + + TypeInfoHelper::getClassName( + typeid( ExpectedExceptionType ) ) ) ); +#else + throw Exception( Message("expected exception not thrown") ); +#endif + } + +private: + /*! \brief Called when the exception is caught. + * + * Should be overriden to check the exception. + */ + virtual void checkException( ExpectedExceptionType &e ) + { + } +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H + diff --git a/3rdParty/include/cppunit/extensions/HelperMacros.h b/3rdParty/include/cppunit/extensions/HelperMacros.h new file mode 100644 index 00000000..12431e46 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/HelperMacros.h @@ -0,0 +1,541 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file HelperMacros.h +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/04/15 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CPPUNIT_EXTENSIONS_HELPERMACROS_H +#define CPPUNIT_EXTENSIONS_HELPERMACROS_H + +#include +#include +#include +#include +#include +#include +#include +#include + + +/*! \addtogroup WritingTestFixture Writing test fixture + */ +/** @{ + */ + + +/** \file + * Macros intended to ease the definition of test suites. + * + * The macros + * CPPUNIT_TEST_SUITE(), CPPUNIT_TEST(), and CPPUNIT_TEST_SUITE_END() + * are designed to facilitate easy creation of a test suite. + * For example, + * + * \code + * #include + * class MyTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( MyTest ); + * CPPUNIT_TEST( testEquality ); + * CPPUNIT_TEST( testSetName ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testEquality(); + * void testSetName(); + * }; + * \endcode + * + * The effect of these macros is to define two methods in the + * class MyTest. The first method is an auxiliary function + * named registerTests that you will not need to call directly. + * The second function + * \code static CppUnit::TestSuite *suite()\endcode + * returns a pointer to the suite of tests defined by the CPPUNIT_TEST() + * macros. + * + * Rather than invoking suite() directly, + * the macro CPPUNIT_TEST_SUITE_REGISTRATION() is + * used to create a static variable that automatically + * registers its test suite in a global registry. + * The registry yields a Test instance containing all the + * registered suites. + * \code + * CPPUNIT_TEST_SUITE_REGISTRATION( MyTest ); + * CppUnit::Test* tp = + * CppUnit::TestFactoryRegistry::getRegistry().makeTest(); + * \endcode + * + * The test suite macros can even be used with templated test classes. + * For example: + * + * \code + * template + * class StringTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( StringTest ); + * CPPUNIT_TEST( testAppend ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * ... + * }; + * \endcode + * + * You need to add in an implementation file: + * + * \code + * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest ); + * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest ); + * \endcode + */ + + +/*! \brief Begin test suite + * + * This macro starts the declaration of a new test suite. + * Use CPPUNIT_TEST_SUB_SUITE() instead, if you wish to include the + * test suite of the parent class. + * + * \param ATestFixtureType Type of the test case class. This type \b MUST + * be derived from TestFixture. + * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL. + */ +#define CPPUNIT_TEST_SUITE( ATestFixtureType ) \ + public: \ + typedef ATestFixtureType TestFixtureType; \ + \ + private: \ + static const CPPUNIT_NS::TestNamer &getTestNamer__() \ + { \ + static CPPUNIT_TESTNAMER_DECL( testNamer, ATestFixtureType ); \ + return testNamer; \ + } \ + \ + public: \ + typedef CPPUNIT_NS::TestSuiteBuilderContext \ + TestSuiteBuilderContextType; \ + \ + static void \ + addTestsToSuite( CPPUNIT_NS::TestSuiteBuilderContextBase &baseContext ) \ + { \ + TestSuiteBuilderContextType context( baseContext ) + + +/*! \brief Begin test suite (includes parent suite) + * + * This macro may only be used in a class whose parent class + * defines a test suite using CPPUNIT_TEST_SUITE() or CPPUNIT_TEST_SUB_SUITE(). + * + * This macro begins the declaration of a test suite, in the same + * manner as CPPUNIT_TEST_SUITE(). In addition, the test suite of the + * parent is automatically inserted in the test suite being + * defined. + * + * Here is an example: + * + * \code + * #include + * class MySubTest : public MyTest { + * CPPUNIT_TEST_SUB_SUITE( MySubTest, MyTest ); + * CPPUNIT_TEST( testAdd ); + * CPPUNIT_TEST( testSub ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testAdd(); + * void testSub(); + * }; + * \endcode + * + * \param ATestFixtureType Type of the test case class. This type \b MUST + * be derived from TestFixture. + * \param ASuperClass Type of the parent class. + * \see CPPUNIT_TEST_SUITE. + */ +#define CPPUNIT_TEST_SUB_SUITE( ATestFixtureType, ASuperClass ) \ + public: \ + typedef ASuperClass ParentTestFixtureType; \ + private: \ + CPPUNIT_TEST_SUITE( ATestFixtureType ); \ + ParentTestFixtureType::addTestsToSuite( baseContext ) + + +/*! \brief End declaration of the test suite. + * + * After this macro, member access is set to "private". + * + * \see CPPUNIT_TEST_SUITE. + * \see CPPUNIT_TEST_SUITE_REGISTRATION. + */ +#define CPPUNIT_TEST_SUITE_END() \ + } \ + \ + static CPPUNIT_NS::TestSuite *suite() \ + { \ + const CPPUNIT_NS::TestNamer &namer = getTestNamer__(); \ + std::auto_ptr suite( \ + new CPPUNIT_NS::TestSuite( namer.getFixtureName() )); \ + CPPUNIT_NS::ConcretTestFixtureFactory factory; \ + CPPUNIT_NS::TestSuiteBuilderContextBase context( *suite.get(), \ + namer, \ + factory ); \ + TestFixtureType::addTestsToSuite( context ); \ + return suite.release(); \ + } \ + private: /* dummy typedef so that the macro can still end with ';'*/ \ + typedef int CppUnitDummyTypedefForSemiColonEnding__ + +/*! \brief End declaration of an abstract test suite. + * + * Use this macro to indicate that the %TestFixture is abstract. No + * static suite() method will be declared. + * + * After this macro, member access is set to "private". + * + * Here is an example of usage: + * + * The abstract test fixture: + * \code + * #include + * class AbstractDocument; + * class AbstractDocumentTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( AbstractDocumentTest ); + * CPPUNIT_TEST( testInsertText ); + * CPPUNIT_TEST_SUITE_END_ABSTRACT(); + * public: + * void testInsertText(); + * + * void setUp() + * { + * m_document = makeDocument(); + * } + * + * void tearDown() + * { + * delete m_document; + * } + * protected: + * virtual AbstractDocument *makeDocument() =0; + * + * AbstractDocument *m_document; + * };\endcode + * + * The concret test fixture: + * \code + * class RichTextDocumentTest : public AbstractDocumentTest { + * CPPUNIT_TEST_SUB_SUITE( RichTextDocumentTest, AbstractDocumentTest ); + * CPPUNIT_TEST( testInsertFormatedText ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testInsertFormatedText(); + * protected: + * AbstractDocument *makeDocument() + * { + * return new RichTextDocument(); + * } + * };\endcode + * + * \see CPPUNIT_TEST_SUB_SUITE. + * \see CPPUNIT_TEST_SUITE_REGISTRATION. + */ +#define CPPUNIT_TEST_SUITE_END_ABSTRACT() \ + } \ + private: /* dummy typedef so that the macro can still end with ';'*/ \ + typedef int CppUnitDummyTypedefForSemiColonEnding__ + + +/*! \brief Add a test to the suite (for custom test macro). + * + * The specified test will be added to the test suite being declared. This macro + * is intended for \e advanced usage, to extend %CppUnit by creating new macro such + * as CPPUNIT_TEST_EXCEPTION()... + * + * Between macro CPPUNIT_TEST_SUITE() and CPPUNIT_TEST_SUITE_END(), you can assume + * that the following variables can be used: + * \code + * typedef TestSuiteBuilder TestSuiteBuilderType; + * TestSuiteBuilderType &context; + * \endcode + * + * \c context can be used to name test case, create new test fixture instance, + * or add test case to the test fixture suite. + * + * Below is an example that show how to use this macro to create new macro to add + * test to the fixture suite. The macro below show how you would add a new type + * of test case which fails if the execution last more than a given time limit. + * It relies on an imaginary TimeOutTestCaller class which has an interface similar + * to TestCaller. + * + * \code + * #define CPPUNITEX_TEST_TIMELIMIT( testMethod, timeLimit ) \ + * CPPUNIT_TEST_SUITE_ADD_TEST( (new TimeOutTestCaller( \ + * namer.getTestNameFor( #testMethod ), \ + * &TestFixtureType::testMethod, \ + * factory.makeFixture(), \ + * timeLimit ) ) ) + * + * class PerformanceTest : CppUnit::TestFixture + * { + * public: + * CPPUNIT_TEST_SUITE( PerformanceTest ); + * CPPUNITEX_TEST_TIMELIMIT( testSortReverseOrder, 5.0 ); + * CPPUNIT_TEST_SUITE_END(); + * + * void testSortReverseOrder(); + * }; + * \endcode + * + * \param test Test to add to the suite. Must be a subclass of Test. The test name + * should have been obtained using TestNamer::getTestNameFor(). + */ +#define CPPUNIT_TEST_SUITE_ADD_TEST( test ) \ + context.addTest( test ) + +/*! \brief Add a method to the suite. + * \param testMethod Name of the method of the test case to add to the + * suite. The signature of the method must be of + * type: void testMethod(); + * \see CPPUNIT_TEST_SUITE. + */ +#define CPPUNIT_TEST( testMethod ) \ + CPPUNIT_TEST_SUITE_ADD_TEST( \ + ( new CPPUNIT_NS::TestCaller( \ + context.getTestNameFor( #testMethod), \ + &TestFixtureType::testMethod, \ + context.makeFixture() ) ) ) + +/*! \brief Add a test which fail if the specified exception is not caught. + * + * Example: + * \code + * #include + * #include + * class MyTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( MyTest ); + * CPPUNIT_TEST_EXCEPTION( testVectorAtThrow, std::invalid_argument ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testVectorAtThrow() + * { + * std::vector v; + * v.at( 1 ); // must throw exception std::invalid_argument + * } + * }; + * \endcode + * + * \param testMethod Name of the method of the test case to add to the suite. + * \param ExceptionType Type of the exception that must be thrown by the test + * method. + * \deprecated Use the assertion macro CPPUNIT_ASSERT_THROW instead. + */ +#define CPPUNIT_TEST_EXCEPTION( testMethod, ExceptionType ) \ + CPPUNIT_TEST_SUITE_ADD_TEST( \ + (new CPPUNIT_NS::ExceptionTestCaseDecorator< ExceptionType >( \ + new CPPUNIT_NS::TestCaller< TestFixtureType >( \ + context.getTestNameFor( #testMethod ), \ + &TestFixtureType::testMethod, \ + context.makeFixture() ) ) ) ) + +/*! \brief Adds a test case which is excepted to fail. + * + * The added test case expect an assertion to fail. You usually used that type + * of test case when testing custom assertion macros. + * + * \code + * CPPUNIT_TEST_FAIL( testAssertFalseFail ); + * + * void testAssertFalseFail() + * { + * CPPUNIT_ASSERT( false ); + * } + * \endcode + * \see CreatingNewAssertions. + * \deprecated Use the assertion macro CPPUNIT_ASSERT_ASSERTION_FAIL instead. + */ +#define CPPUNIT_TEST_FAIL( testMethod ) \ + CPPUNIT_TEST_EXCEPTION( testMethod, CPPUNIT_NS::Exception ) + +/*! \brief Adds some custom test cases. + * + * Use this to add one or more test cases to the fixture suite. The specified + * method is called with a context parameter that can be used to name, + * instantiate fixture, and add instantiated test case to the fixture suite. + * The specified method must have the following signature: + * \code + * static void aMethodName( TestSuiteBuilderContextType &context ); + * \endcode + * + * \c TestSuiteBuilderContextType is typedef to + * TestSuiteBuilderContext declared by CPPUNIT_TEST_SUITE(). + * + * Here is an example that add two custom tests: + * + * \code + * #include + * + * class MyTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( MyTest ); + * CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( addTimeOutTests ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * static void addTimeOutTests( TestSuiteBuilderContextType &context ) + * { + * context.addTest( new TimeOutTestCaller( context.getTestNameFor( "test1" ) ), + * &MyTest::test1, + * context.makeFixture(), + * 5.0 ); + * context.addTest( new TimeOutTestCaller( context.getTestNameFor( "test2" ) ), + * &MyTest::test2, + * context.makeFixture(), + * 5.0 ); + * } + * + * void test1() + * { + * // Do some test that may never end... + * } + * + * void test2() + * { + * // Do some test that may never end... + * } + * }; + * \endcode + * @param testAdderMethod Name of the method called to add the test cases. + */ +#define CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( testAdderMethod ) \ + testAdderMethod( context ) + +/*! \brief Adds a property to the test suite builder context. + * \param APropertyKey Key of the property to add. + * \param APropertyValue Value for the added property. + * Example: + * \code + * CPPUNIT_TEST_SUITE_PROPERTY("XmlFileName", "paraTest.xml"); \endcode + */ +#define CPPUNIT_TEST_SUITE_PROPERTY( APropertyKey, APropertyValue ) \ + context.addProperty( std::string(APropertyKey), \ + std::string(APropertyValue) ) + +/** @} + */ + + +/*! Adds the specified fixture suite to the unnamed registry. + * \ingroup CreatingTestSuite + * + * This macro declares a static variable whose construction + * causes a test suite factory to be inserted in a global registry + * of such factories. The registry is available by calling + * the static function CppUnit::TestFactoryRegistry::getRegistry(). + * + * \param ATestFixtureType Type of the test case class. + * \warning This macro should be used only once per line of code (the line + * number is used to name a hidden static variable). + * \see CPPUNIT_TEST_SUITE_NAMED_REGISTRATION + * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT + * \see CPPUNIT_REGISTRY_ADD + * \see CPPUNIT_TEST_SUITE, CppUnit::AutoRegisterSuite, + * CppUnit::TestFactoryRegistry. + */ +#define CPPUNIT_TEST_SUITE_REGISTRATION( ATestFixtureType ) \ + static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType > \ + CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ ) + + +/** Adds the specified fixture suite to the specified registry suite. + * \ingroup CreatingTestSuite + * + * This macro declares a static variable whose construction + * causes a test suite factory to be inserted in the global registry + * suite of the specified name. The registry is available by calling + * the static function CppUnit::TestFactoryRegistry::getRegistry(). + * + * For the suite name, use a string returned by a static function rather + * than a hardcoded string. That way, you can know what are the name of + * named registry and you don't risk mistyping the registry name. + * + * \code + * // MySuites.h + * namespace MySuites { + * std::string math() { + * return "Math"; + * } + * } + * + * // ComplexNumberTest.cpp + * #include "MySuites.h" + * + * CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ComplexNumberTest, MySuites::math() ); + * \endcode + * + * \param ATestFixtureType Type of the test case class. + * \param suiteName Name of the global registry suite the test suite is + * registered into. + * \warning This macro should be used only once per line of code (the line + * number is used to name a hidden static variable). + * \see CPPUNIT_TEST_SUITE_REGISTRATION + * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT + * \see CPPUNIT_REGISTRY_ADD + * \see CPPUNIT_TEST_SUITE, CppUnit::AutoRegisterSuite, + * CppUnit::TestFactoryRegistry.. + */ +#define CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ATestFixtureType, suiteName ) \ + static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType > \ + CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ )(suiteName) + +/*! Adds that the specified registry suite to another registry suite. + * \ingroup CreatingTestSuite + * + * Use this macros to automatically create test registry suite hierarchy. For example, + * if you want to create the following hierarchy: + * - Math + * - IntegerMath + * - FloatMath + * - FastFloat + * - StandardFloat + * + * You can do this automatically with: + * \code + * CPPUNIT_REGISTRY_ADD( "FastFloat", "FloatMath" ); + * CPPUNIT_REGISTRY_ADD( "IntegerMath", "Math" ); + * CPPUNIT_REGISTRY_ADD( "FloatMath", "Math" ); + * CPPUNIT_REGISTRY_ADD( "StandardFloat", "FloatMath" ); + * \endcode + * + * There is no specific order of declaration. Think of it as declaring links. + * + * You register the test in each suite using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + * + * \param which Name of the registry suite to add to the registry suite named \a to. + * \param to Name of the registry suite \a which is added to. + * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + */ +#define CPPUNIT_REGISTRY_ADD( which, to ) \ + static CPPUNIT_NS::AutoRegisterRegistry \ + CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which, to ) + +/*! Adds that the specified registry suite to the default registry suite. + * \ingroup CreatingTestSuite + * + * This macro is just like CPPUNIT_REGISTRY_ADD except the specified registry + * suite is added to the default suite (root suite). + * + * \param which Name of the registry suite to add to the default registry suite. + * \see CPPUNIT_REGISTRY_ADD. + */ +#define CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which ) \ + static CPPUNIT_NS::AutoRegisterRegistry \ + CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which ) + +// Backwards compatibility +// (Not tested!) + +#if CPPUNIT_ENABLE_CU_TEST_MACROS + +#define CU_TEST_SUITE(tc) CPPUNIT_TEST_SUITE(tc) +#define CU_TEST_SUB_SUITE(tc,sc) CPPUNIT_TEST_SUB_SUITE(tc,sc) +#define CU_TEST(tm) CPPUNIT_TEST(tm) +#define CU_TEST_SUITE_END() CPPUNIT_TEST_SUITE_END() +#define CU_TEST_SUITE_REGISTRATION(tc) CPPUNIT_TEST_SUITE_REGISTRATION(tc) + +#endif + + +#endif // CPPUNIT_EXTENSIONS_HELPERMACROS_H diff --git a/3rdParty/include/cppunit/extensions/Orthodox.h b/3rdParty/include/cppunit/extensions/Orthodox.h new file mode 100644 index 00000000..72212593 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/Orthodox.h @@ -0,0 +1,95 @@ +#ifndef CPPUNIT_EXTENSIONS_ORTHODOX_H +#define CPPUNIT_EXTENSIONS_ORTHODOX_H + +#include + +CPPUNIT_NS_BEGIN + + +/* + * Orthodox performs a simple set of tests on an arbitary + * class to make sure that it supports at least the + * following operations: + * + * default construction - constructor + * equality/inequality - operator== && operator!= + * assignment - operator= + * negation - operator! + * safe passage - copy construction + * + * If operations for each of these are not declared + * the template will not instantiate. If it does + * instantiate, tests are performed to make sure + * that the operations have correct semantics. + * + * Adding an orthodox test to a suite is very + * easy: + * + * public: Test *suite () { + * TestSuite *suiteOfTests = new TestSuite; + * suiteOfTests->addTest (new ComplexNumberTest ("testAdd"); + * suiteOfTests->addTest (new TestCaller > ()); + * return suiteOfTests; + * } + * + * Templated test cases be very useful when you are want to + * make sure that a group of classes have the same form. + * + * see TestSuite + */ + + +template class Orthodox : public TestCase +{ +public: + Orthodox () : TestCase ("Orthodox") {} + +protected: + ClassUnderTest call (ClassUnderTest object); + void runTest (); + + +}; + + +// Run an orthodoxy test +template void Orthodox::runTest () +{ + // make sure we have a default constructor + ClassUnderTest a, b, c; + + // make sure we have an equality operator + CPPUNIT_ASSERT (a == b); + + // check the inverse + b.operator= (a.operator! ()); + CPPUNIT_ASSERT (a != b); + + // double inversion + b = !!a; + CPPUNIT_ASSERT (a == b); + + // invert again + b = !a; + + // check calls + c = a; + CPPUNIT_ASSERT (c == call (a)); + + c = b; + CPPUNIT_ASSERT (c == call (b)); + +} + + +// Exercise a call +template +ClassUnderTest Orthodox::call (ClassUnderTest object) +{ + return object; +} + + +CPPUNIT_NS_END + +#endif diff --git a/3rdParty/include/cppunit/extensions/RepeatedTest.h b/3rdParty/include/cppunit/extensions/RepeatedTest.h new file mode 100644 index 00000000..390ce480 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/RepeatedTest.h @@ -0,0 +1,43 @@ +#ifndef CPPUNIT_EXTENSIONS_REPEATEDTEST_H +#define CPPUNIT_EXTENSIONS_REPEATEDTEST_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestResult; + + +/*! \brief Decorator that runs a test repeatedly. + * + * Does not assume ownership of the test it decorates + */ +class CPPUNIT_API RepeatedTest : public TestDecorator +{ +public: + RepeatedTest( Test *test, + int timesRepeat ) : + TestDecorator( test ), + m_timesRepeat(timesRepeat) + { + } + + void run( TestResult *result ); + + int countTestCases() const; + +private: + RepeatedTest( const RepeatedTest & ); + void operator=( const RepeatedTest & ); + + const int m_timesRepeat; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_EXTENSIONS_REPEATEDTEST_H diff --git a/3rdParty/include/cppunit/extensions/TestCaseDecorator.h b/3rdParty/include/cppunit/extensions/TestCaseDecorator.h new file mode 100644 index 00000000..3a15ba97 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestCaseDecorator.h @@ -0,0 +1,40 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H +#define CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief Decorator for Test cases. + * + * TestCaseDecorator provides an alternate means to extend functionality + * of a test class without subclassing the test. Instead, one can + * subclass the decorater and use it to wrap the test class. + * + * Does not assume ownership of the test it decorates + */ +class CPPUNIT_API TestCaseDecorator : public TestCase +{ +public: + TestCaseDecorator( TestCase *test ); + ~TestCaseDecorator(); + + std::string getName() const; + + void setUp(); + + void tearDown(); + + void runTest(); + +protected: + TestCase *m_test; +}; + + +CPPUNIT_NS_END + +#endif + diff --git a/3rdParty/include/cppunit/extensions/TestDecorator.h b/3rdParty/include/cppunit/extensions/TestDecorator.h new file mode 100644 index 00000000..59d9a302 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestDecorator.h @@ -0,0 +1,49 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTDECORATOR_H +#define CPPUNIT_EXTENSIONS_TESTDECORATOR_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class TestResult; + + +/*! \brief Decorator for Tests. + * + * TestDecorator provides an alternate means to extend functionality + * of a test class without subclassing the test. Instead, one can + * subclass the decorater and use it to wrap the test class. + * + * Does not assume ownership of the test it decorates + */ +class CPPUNIT_API TestDecorator : public Test +{ +public: + TestDecorator( Test *test ); + ~TestDecorator(); + + int countTestCases() const; + + std::string getName() const; + + void run( TestResult *result ); + + int getChildTestCount() const; + +protected: + Test *doGetChildTestAt( int index ) const; + + Test *m_test; + +private: + TestDecorator( const TestDecorator &); + void operator =( const TestDecorator & ); +}; + + +CPPUNIT_NS_END + +#endif + diff --git a/3rdParty/include/cppunit/extensions/TestFactory.h b/3rdParty/include/cppunit/extensions/TestFactory.h new file mode 100644 index 00000000..214d3534 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestFactory.h @@ -0,0 +1,27 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTFACTORY_H +#define CPPUNIT_EXTENSIONS_TESTFACTORY_H + +#include + +CPPUNIT_NS_BEGIN + + +class Test; + +/*! \brief Abstract Test factory. + */ +class CPPUNIT_API TestFactory +{ +public: + virtual ~TestFactory() {} + + /*! Makes a new test. + * \return A new Test. + */ + virtual Test* makeTest() = 0; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTFACTORY_H diff --git a/3rdParty/include/cppunit/extensions/TestFactoryRegistry.h b/3rdParty/include/cppunit/extensions/TestFactoryRegistry.h new file mode 100644 index 00000000..fc8723e4 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestFactoryRegistry.h @@ -0,0 +1,182 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H +#define CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class TestSuite; + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::set; +#endif + + +/*! \brief Registry for TestFactory. + * \ingroup CreatingTestSuite + * + * Notes that the registry \b DON'T assumes lifetime control for any registered tests + * anymore. + * + * The default registry is the registry returned by getRegistry() with the + * default name parameter value. + * + * To register tests, use the macros: + * - CPPUNIT_TEST_SUITE_REGISTRATION(): to add tests in the default registry. + * - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(): to add tests in a named registry. + * + * Example 1: retreiving a suite that contains all the test registered with + * CPPUNIT_TEST_SUITE_REGISTRATION(). + * \code + * CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + * CppUnit::TestSuite *suite = registry.makeTest(); + * \endcode + * + * Example 2: retreiving a suite that contains all the test registered with + * \link CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Math" )\endlink. + * \code + * CppUnit::TestFactoryRegistry &mathRegistry = CppUnit::TestFactoryRegistry::getRegistry( "Math" ); + * CppUnit::TestSuite *mathSuite = mathRegistry.makeTest(); + * \endcode + * + * Example 3: creating a test suite hierarchy composed of unnamed registration and + * named registration: + * - All Tests + * - tests registered with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Graph" ) + * - tests registered with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Math" ) + * - tests registered with CPPUNIT_TEST_SUITE_REGISTRATION + * + * \code + * CppUnit::TestSuite *rootSuite = new CppUnit::TestSuite( "All tests" ); + * rootSuite->addTest( CppUnit::TestFactoryRegistry::getRegistry( "Graph" ).makeTest() ); + * rootSuite->addTest( CppUnit::TestFactoryRegistry::getRegistry( "Math" ).makeTest() ); + * CppUnit::TestFactoryRegistry::getRegistry().addTestToSuite( rootSuite ); + * \endcode + * + * The same result can be obtained with: + * \code + * CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + * registry.addRegistry( "Graph" ); + * registry.addRegistry( "Math" ); + * CppUnit::TestSuite *suite = registry.makeTest(); + * \endcode + * + * Since a TestFactoryRegistry is a TestFactory, the named registries can be + * registered in the unnamed registry, creating the hierarchy links. + * + * \see TestSuiteFactory, AutoRegisterSuite + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION + */ +class CPPUNIT_API TestFactoryRegistry : public TestFactory +{ +public: + /** Constructs the registry with the specified name. + * \param name Name of the registry. It is the name of TestSuite returned by + * makeTest(). + */ + TestFactoryRegistry( std::string name ); + + /// Destructor. + virtual ~TestFactoryRegistry(); + + /** Returns a new TestSuite that contains the registered test. + * \return A new TestSuite which contains all the test added using + * registerFactory(TestFactory *). + */ + virtual Test *makeTest(); + + /** Returns a named registry. + * + * If the \a name is left to its default value, then the registry that is returned is + * the one used by CPPUNIT_TEST_SUITE_REGISTRATION(): the 'top' level registry. + * + * \param name Name of the registry to return. + * \return Registry. If the registry does not exist, it is created with the + * specified name. + */ + static TestFactoryRegistry &getRegistry( const std::string &name = "All Tests" ); + + /** Adds the registered tests to the specified suite. + * \param suite Suite the tests are added to. + */ + void addTestToSuite( TestSuite *suite ); + + /** Adds the specified TestFactory to the registry. + * + * \param factory Factory to register. + */ + void registerFactory( TestFactory *factory ); + + /*! Removes the specified TestFactory from the registry. + * + * The specified factory is not destroyed. + * \param factory Factory to remove from the registry. + * \todo Address case when trying to remove a TestRegistryFactory. + */ + void unregisterFactory( TestFactory *factory ); + + /*! Adds a registry to the registry. + * + * Convenience method to help create test hierarchy. See TestFactoryRegistry detail + * for examples of use. Calling this method is equivalent to: + * \code + * this->registerFactory( TestFactoryRegistry::getRegistry( name ) ); + * \endcode + * + * \param name Name of the registry to add. + */ + void addRegistry( const std::string &name ); + + /*! Tests if the registry is valid. + * + * This method should be used when unregistering test factory on static variable + * destruction to ensure that the registry has not been already destroyed (in + * that case there is no need to unregister the test factory). + * + * You should not concern yourself with this method unless you are writing a class + * like AutoRegisterSuite. + * + * \return \c true if the specified registry has not been destroyed, + * otherwise returns \c false. + * \see AutoRegisterSuite. + */ + static bool isValid(); + + /** Adds the specified TestFactory with a specific name (DEPRECATED). + * \param name Name associated to the factory. + * \param factory Factory to register. + * \deprecated Use registerFactory( TestFactory *) instead. + */ + void registerFactory( const std::string &name, + TestFactory *factory ); + +private: + TestFactoryRegistry( const TestFactoryRegistry © ); + void operator =( const TestFactoryRegistry © ); + +private: + typedef CppUnitSet > Factories; + Factories m_factories; + + std::string m_name; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H diff --git a/3rdParty/include/cppunit/extensions/TestFixtureFactory.h b/3rdParty/include/cppunit/extensions/TestFixtureFactory.h new file mode 100644 index 00000000..45354c62 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestFixtureFactory.h @@ -0,0 +1,50 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H +#define CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H + +#include + + +CPPUNIT_NS_BEGIN + + +class TestFixture; + +/*! \brief Abstract TestFixture factory (Implementation). + * + * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy. + */ +class TestFixtureFactory +{ +public: + //! Creates a new TestFixture instance. + virtual TestFixture *makeFixture() =0; + + virtual ~TestFixtureFactory() {} +}; + + +/*! \brief Concret TestFixture factory (Implementation). + * + * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy. + */ +template +class ConcretTestFixtureFactory : public CPPUNIT_NS::TestFixtureFactory +{ + /*! \brief Returns a new TestFixture instance. + * \return A new fixture instance. The fixture instance is returned by + * the TestFixtureFactory passed on construction. The actual type + * is that of the fixture on which the static method suite() + * was called. + */ + TestFixture *makeFixture() + { + return new TestFixtureType(); + } +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H + diff --git a/3rdParty/include/cppunit/extensions/TestNamer.h b/3rdParty/include/cppunit/extensions/TestNamer.h new file mode 100644 index 00000000..5a6471c0 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestNamer.h @@ -0,0 +1,89 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTNAMER_H +#define CPPUNIT_EXTENSIONS_TESTNAMER_H + +#include +#include + +#if CPPUNIT_HAVE_RTTI +# include +#endif + + + +/*! \def CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) + * \brief Declares a TestNamer. + * + * Declares a TestNamer for the specified type, using RTTI if enabled, otherwise + * using macro string expansion. + * + * RTTI is used if CPPUNIT_USE_TYPEINFO_NAME is defined and not null. + * + * \code + * void someMethod() + * { + * CPPUNIT_TESTNAMER_DECL( namer, AFixtureType ); + * std::string fixtureName = namer.getFixtureName(); + * ... + * \endcode + * + * \relates TestNamer + * \see TestNamer + */ +#if CPPUNIT_USE_TYPEINFO_NAME +# define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) \ + CPPUNIT_NS::TestNamer variableName( typeid(FixtureType) ) +#else +# define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) \ + CPPUNIT_NS::TestNamer variableName( std::string(#FixtureType) ) +#endif + + + +CPPUNIT_NS_BEGIN + + +/*! \brief Names a test or a fixture suite. + * + * TestNamer is usually instantiated using CPPUNIT_TESTNAMER_DECL. + * + */ +class CPPUNIT_API TestNamer +{ +public: +#if CPPUNIT_HAVE_RTTI + /*! \brief Constructs a namer using the fixture's type-info. + * \param typeInfo Type-info of the fixture type. Use to name the fixture suite. + */ + TestNamer( const std::type_info &typeInfo ); +#endif + + /*! \brief Constructs a namer using the specified fixture name. + * \param fixtureName Name of the fixture suite. Usually extracted using a macro. + */ + TestNamer( const std::string &fixtureName ); + + virtual ~TestNamer(); + + /*! \brief Returns the name of the fixture. + * \return Name of the fixture. + */ + virtual std::string getFixtureName() const; + + /*! \brief Returns the name of the test for the specified method. + * \param testMethodName Name of the method that implements a test. + * \return A string that is the concatenation of the test fixture name + * (returned by getFixtureName()) and\a testMethodName, + * separated using '::'. This provides a fairly unique name for a given + * test. + */ + virtual std::string getTestNameFor( const std::string &testMethodName ) const; + +protected: + std::string m_fixtureName; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTNAMER_H + diff --git a/3rdParty/include/cppunit/extensions/TestSetUp.h b/3rdParty/include/cppunit/extensions/TestSetUp.h new file mode 100644 index 00000000..f2128ecd --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestSetUp.h @@ -0,0 +1,34 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTSETUP_H +#define CPPUNIT_EXTENSIONS_TESTSETUP_H + +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestResult; + +/*! \brief Decorates a test by providing a specific setUp() and tearDown(). + */ +class CPPUNIT_API TestSetUp : public TestDecorator +{ +public: + TestSetUp( Test *test ); + + void run( TestResult *result ); + +protected: + virtual void setUp(); + virtual void tearDown(); + +private: + TestSetUp( const TestSetUp & ); + void operator =( const TestSetUp & ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTSETUP_H + diff --git a/3rdParty/include/cppunit/extensions/TestSuiteBuilderContext.h b/3rdParty/include/cppunit/extensions/TestSuiteBuilderContext.h new file mode 100644 index 00000000..db26926c --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestSuiteBuilderContext.h @@ -0,0 +1,131 @@ +#ifndef CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H +#define CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H + +#include +#include +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + + +CPPUNIT_NS_BEGIN + +class TestSuite; +class TestFixture; +class TestFixtureFactory; +class TestNamer; + +/*! \brief Context used when creating test suite in HelperMacros. + * + * Base class for all context used when creating test suite. The + * actual context type during test suite creation is TestSuiteBuilderContext. + * + * \sa CPPUNIT_TEST_SUITE, CPPUNIT_TEST_SUITE_ADD_TEST, + * CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS. + */ +class CPPUNIT_API TestSuiteBuilderContextBase +{ +public: + /*! \brief Constructs a new context. + * + * You should not use this. The context is created in + * CPPUNIT_TEST_SUITE(). + */ + TestSuiteBuilderContextBase( TestSuite &suite, + const TestNamer &namer, + TestFixtureFactory &factory ); + + virtual ~TestSuiteBuilderContextBase(); + + /*! \brief Adds a test to the fixture suite. + * + * \param test Test to add to the fixture suite. Must not be \c NULL. + */ + void addTest( Test *test ); + + /*! \brief Returns the fixture name. + * \return Fixture name. It is the name used to name the fixture + * suite. + */ + std::string getFixtureName() const; + + /*! \brief Returns the name of the test for the specified method. + * + * \param testMethodName Name of the method that implements a test. + * \return A string that is the concatenation of the test fixture name + * (returned by getFixtureName()) and\a testMethodName, + * separated using '::'. This provides a fairly unique name for a given + * test. + */ + std::string getTestNameFor( const std::string &testMethodName ) const; + + /*! \brief Adds property pair. + * \param key PropertyKey string to add. + * \param value PropertyValue string to add. + */ + void addProperty( const std::string &key, + const std::string &value ); + + /*! \brief Returns property value assigned to param key. + * \param key PropertyKey string. + */ + const std::string getStringProperty( const std::string &key ) const; + +protected: + TestFixture *makeTestFixture() const; + + // Notes: we use a vector here instead of a map to work-around the + // shared std::map in dll bug in VC6. + // See http://www.dinkumware.com/vc_fixes.html for detail. + typedef std::pair Property; + typedef CppUnitVector Properties; + + TestSuite &m_suite; + const TestNamer &m_namer; + TestFixtureFactory &m_factory; + +private: + Properties m_properties; +}; + + +/*! \brief Type-sage context used when creating test suite in HelperMacros. + * + * \sa TestSuiteBuilderContextBase. + */ +template +class TestSuiteBuilderContext : public TestSuiteBuilderContextBase +{ +public: + typedef Fixture FixtureType; + + TestSuiteBuilderContext( TestSuiteBuilderContextBase &contextBase ) + : TestSuiteBuilderContextBase( contextBase ) + { + } + + /*! \brief Returns a new TestFixture instance. + * \return A new fixture instance. The fixture instance is returned by + * the TestFixtureFactory passed on construction. The actual type + * is that of the fixture on which the static method suite() + * was called. + */ + FixtureType *makeFixture() const + { + return CPPUNIT_STATIC_CAST( FixtureType *, + TestSuiteBuilderContextBase::makeTestFixture() ); + } +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H + diff --git a/3rdParty/include/cppunit/extensions/TestSuiteFactory.h b/3rdParty/include/cppunit/extensions/TestSuiteFactory.h new file mode 100644 index 00000000..260b4831 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TestSuiteFactory.h @@ -0,0 +1,27 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H +#define CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H + +#include + +CPPUNIT_NS_BEGIN + + + class Test; + + /*! \brief TestFactory for TestFixture that implements a static suite() method. + * \see AutoRegisterSuite. + */ + template + class TestSuiteFactory : public TestFactory + { + public: + virtual Test *makeTest() + { + return TestCaseType::suite(); + } + }; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H diff --git a/3rdParty/include/cppunit/extensions/TypeInfoHelper.h b/3rdParty/include/cppunit/extensions/TypeInfoHelper.h new file mode 100644 index 00000000..c0ecdbc6 --- /dev/null +++ b/3rdParty/include/cppunit/extensions/TypeInfoHelper.h @@ -0,0 +1,33 @@ +#ifndef CPPUNIT_TYPEINFOHELPER_H +#define CPPUNIT_TYPEINFOHELPER_H + +#include + +#if CPPUNIT_HAVE_RTTI + +#include +#include + +CPPUNIT_NS_BEGIN + + + /**! \brief Helper to use type_info. + */ + class CPPUNIT_API TypeInfoHelper + { + public: + /*! \brief Get the class name of the specified type_info. + * \param info Info which the class name is extracted from. + * \return The string returned by type_info::name() without + * the "class" prefix. If the name is not prefixed + * by "class", it is returned as this. + */ + static std::string getClassName( const std::type_info &info ); + }; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_HAVE_RTTI + +#endif // CPPUNIT_TYPEINFOHELPER_H diff --git a/3rdParty/include/cppunit/plugin/DynamicLibraryManager.h b/3rdParty/include/cppunit/plugin/DynamicLibraryManager.h new file mode 100644 index 00000000..d70ccde4 --- /dev/null +++ b/3rdParty/include/cppunit/plugin/DynamicLibraryManager.h @@ -0,0 +1,121 @@ +#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H +#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H + +#include +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +CPPUNIT_NS_BEGIN + + +/*! \brief Manages dynamic libraries. + * + * The Dynamic Library Manager provides a platform independent way to work with + * dynamic library. It load a specific dynamic library, and can returns specific + * symbol exported by the dynamic library. + * + * If an error occurs, a DynamicLibraryManagerException is thrown. + * + * \internal Implementation of the OS independent methods is in + * DynamicLibraryManager.cpp. + * + * \internal Porting to a new platform: + * - Adds platform detection in config/SelectDllLoader.h. Should define a specific + * macro for that platform of the form: CPPUNIT_HAVE_XYZ_DLL_LOADER, where + * XYZ is the platform. + * - Makes a copy of UnixDynamicLibraryManager.cpp and named it after the platform. + * - Updated the 'guard' in your file (CPPUNIT_HAVE_XYZ_DLL_LOADER) so that it is + * only processed if the matching platform has been detected. + * - Change the implementation of methods doLoadLibrary(), doReleaseLibrary(), + * doFindSymbol() in your copy. Those methods usually maps directly to OS calls. + * - Adds the file to the project. + */ +class DynamicLibraryManager +{ +public: + typedef void *Symbol; + typedef void *LibraryHandle; + + /*! \brief Loads the specified library. + * \param libraryFileName Name of the library to load. + * \exception DynamicLibraryManagerException if a failure occurs while loading + * the library (fail to found or load the library). + */ + DynamicLibraryManager( const std::string &libraryFileName ); + + /// Releases the loaded library.. + ~DynamicLibraryManager(); + + /*! \brief Returns a pointer on the specified symbol exported by the library. + * \param symbol Name of the symbol exported by the library. + * \return Pointer on the symbol. Should be casted to the actual type. Never \c NULL. + * \exception DynamicLibraryManagerException if the symbol is not found. + */ + Symbol findSymbol( const std::string &symbol ); + +private: + /*! Loads the specified library. + * \param libraryName Name of the library to load. + * \exception DynamicLibraryManagerException if a failure occurs while loading + * the library (fail to found or load the library). + */ + void loadLibrary( const std::string &libraryName ); + + /*! Releases the loaded library. + * + * \warning Must NOT throw any exceptions (called from destructor). + */ + void releaseLibrary(); + + /*! Loads the specified library. + * + * May throw any exceptions (indicates failure). + * \param libraryName Name of the library to load. + * \return Handle of the loaded library. \c NULL indicates failure. + */ + LibraryHandle doLoadLibrary( const std::string &libraryName ); + + /*! Releases the loaded library. + * + * The handle of the library to free is in \c m_libraryHandle. It is never + * \c NULL. + * \warning Must NOT throw any exceptions (called from destructor). + */ + void doReleaseLibrary(); + + /*! Returns a pointer on the specified symbol exported by the library. + * + * May throw any exceptions (indicates failure). + * \param symbol Name of the symbol exported by the library. + * \return Pointer on the symbol. \c NULL indicates failure. + */ + Symbol doFindSymbol( const std::string &symbol ); + + /*! Returns detailed information about doLoadLibrary() failure. + * + * Called just after a failed call to doLoadLibrary() to get extra + * error information. + * + * \return Detailed information about the failure of the call to + * doLoadLibrary() that just failed. + */ + std::string getLastErrorDetail() const; + + /// Prevents the use of the copy constructor. + DynamicLibraryManager( const DynamicLibraryManager © ); + + /// Prevents the use of the copy operator. + void operator =( const DynamicLibraryManager © ); + +private: + LibraryHandle m_libraryHandle; + std::string m_libraryName; +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H diff --git a/3rdParty/include/cppunit/plugin/DynamicLibraryManagerException.h b/3rdParty/include/cppunit/plugin/DynamicLibraryManagerException.h new file mode 100644 index 00000000..11ebbd9d --- /dev/null +++ b/3rdParty/include/cppunit/plugin/DynamicLibraryManagerException.h @@ -0,0 +1,53 @@ +#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H +#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Exception thrown by DynamicLibraryManager when a failure occurs. + * + * Use getCause() to know what function caused the failure. + * + */ +class DynamicLibraryManagerException : public std::runtime_error +{ +public: + enum Cause + { + /// Failed to load the dynamic library + loadingFailed =0, + /// Symbol not found in the dynamic library + symbolNotFound + }; + + /// Failed to load the dynamic library or Symbol not found in the dynamic library. + DynamicLibraryManagerException( const std::string &libraryName, + const std::string &errorDetail, + Cause cause ); + + ~DynamicLibraryManagerException() throw() + { + } + + Cause getCause() const; + + const char *what() const throw(); + +private: + std::string m_message; + Cause m_cause; +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H diff --git a/3rdParty/include/cppunit/plugin/PlugInManager.h b/3rdParty/include/cppunit/plugin/PlugInManager.h new file mode 100644 index 00000000..6ecedc89 --- /dev/null +++ b/3rdParty/include/cppunit/plugin/PlugInManager.h @@ -0,0 +1,113 @@ +#ifndef CPPUNIT_PLUGIN_PLUGINMANAGER_H +#define CPPUNIT_PLUGIN_PLUGINMANAGER_H + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +struct CppUnitTestPlugIn; + +CPPUNIT_NS_BEGIN + + +class DynamicLibraryManager; +class TestResult; +class XmlOutputter; + + +/*! \brief Manges TestPlugIn. + */ +class CPPUNIT_API PlugInManager +{ +public: + /*! Constructs a PlugInManager object. + */ + PlugInManager(); + + /// Destructor. + virtual ~PlugInManager(); + + /*! \brief Loads the specified plug-in. + * + * After being loaded, the CppUnitTestPlugIn::initialize() is called. + * + * \param libraryFileName Name of the file that contains the TestPlugIn. + * \param parameters List of string passed to the plug-in. + * \return Pointer on the DynamicLibraryManager associated to the library. + * Valid until the library is unloaded. Never \c NULL. + * \exception DynamicLibraryManagerException is thrown if an error occurs during loading. + */ + void load( const std::string &libraryFileName, + const PlugInParameters ¶meters = PlugInParameters() ); + + /*! \brief Unloads the specified plug-in. + * \param libraryFileName Name of the file that contains the TestPlugIn passed + * to a previous call to load(). + */ + void unload( const std::string &libraryFileName ); + + /*! \brief Gives a chance to each loaded plug-in to register TestListener. + * + * For each plug-in, call CppUnitTestPlugIn::addListener(). + */ + void addListener( TestResult *eventManager ); + + /*! \brief Gives a chance to each loaded plug-in to unregister TestListener. + * For each plug-in, call CppUnitTestPlugIn::removeListener(). + */ + void removeListener( TestResult *eventManager ); + + /*! \brief Provides a way for the plug-in to register some XmlOutputterHook. + */ + void addXmlOutputterHooks( XmlOutputter *outputter ); + + /*! \brief Called when the XmlOutputter is destroyed. + * + * Can be used to free some resources allocated by addXmlOutputterHooks(). + */ + void removeXmlOutputterHooks(); + +protected: + /*! \brief (INTERNAL) Information about a specific plug-in. + */ + struct PlugInInfo + { + std::string m_fileName; + DynamicLibraryManager *m_manager; + CppUnitTestPlugIn *m_interface; + }; + + /*! Unloads the specified plug-in. + * \param plugIn Information about the plug-in. + */ + void unload( PlugInInfo &plugIn ); + +private: + /// Prevents the use of the copy constructor. + PlugInManager( const PlugInManager © ); + + /// Prevents the use of the copy operator. + void operator =( const PlugInManager © ); + +private: + typedef CppUnitDeque PlugIns; + PlugIns m_plugIns; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + + +#endif // CPPUNIT_PLUGIN_PLUGINMANAGER_H diff --git a/3rdParty/include/cppunit/plugin/PlugInParameters.h b/3rdParty/include/cppunit/plugin/PlugInParameters.h new file mode 100644 index 00000000..c67d0f1d --- /dev/null +++ b/3rdParty/include/cppunit/plugin/PlugInParameters.h @@ -0,0 +1,36 @@ +#ifndef CPPUNIT_PLUGIN_PARAMETERS +#define CPPUNIT_PLUGIN_PARAMETERS + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include +#include + +CPPUNIT_NS_BEGIN + +/*! \brief Test plug-ins parameters. + */ +class CPPUNIT_API PlugInParameters +{ +public: + /// Constructs plug-in parameters from the specified command-line. + PlugInParameters( const std::string &commandLine = "" ); + + virtual ~PlugInParameters(); + + /// Returns the command line that was passed on construction. + std::string getCommandLine() const; + +private: + std::string m_commandLine; +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + + +#endif // CPPUNIT_PLUGIN_PARAMETERS diff --git a/3rdParty/include/cppunit/plugin/TestPlugIn.h b/3rdParty/include/cppunit/plugin/TestPlugIn.h new file mode 100644 index 00000000..1c9b929a --- /dev/null +++ b/3rdParty/include/cppunit/plugin/TestPlugIn.h @@ -0,0 +1,200 @@ +#ifndef CPPUNIT_PLUGIN_TESTPLUGIN +#define CPPUNIT_PLUGIN_TESTPLUGIN + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestFactoryRegistry; +class TestResult; +class XmlOutputter; + +CPPUNIT_NS_END + +/*! \file + */ + + +/*! \brief Test plug-in interface. + * \ingroup WritingTestPlugIn + * + * This class define the interface implemented by test plug-in. A pointer to that + * interface is returned by the function exported by the test plug-in. + * + * Plug-in are loaded/unloaded by PlugInManager. When a plug-in is loaded, + * initialize() is called. Before unloading the plug-in, the PlugInManager + * call uninitialize(). + * + * addListener() and removeListener() are called respectively before and after + * the test run. + * + * addXmlOutputterHooks() and removeXmlOutputterHooks() are called respectively + * before and after writing the XML output using a XmlOutputter. + * + * \see CPPUNIT_PLUGIN_IMPLEMENT, CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL + * \see CppUnit::TestPlugInDefaultImpl, CppUnit::XmlOutputter. + */ +struct CppUnitTestPlugIn +{ + /*! \brief Called just after loading the dynamic library. + * + * Override this method to add additional suite to the registry, though this + * is preferably done using the macros (CPPUNIT_TEST_SUITE_REGISTRATION...). + * If you are creating a custom listener to extends the plug-in runner, + * you can use this to configure the listener using the \a parameters. + * + * You could also use the parameters to specify some global parameter, such + * as test datas location, database name... + * + * N.B.: Parameters interface is not define yet, and the plug-in runner does + * not yet support plug-in parameter. + */ + virtual void initialize( CPPUNIT_NS::TestFactoryRegistry *registry, + const CPPUNIT_NS::PlugInParameters ¶meters ) =0; + + /*! \brief Gives a chance to the plug-in to register TestListener. + * + * Override this method to add a TestListener for the test run. This is useful + * if you are writing a custom TestListener, but also if you need to + * setUp some global resource: listen to TestListener::startTestRun(), + * and TestListener::endTestRun(). + */ + virtual void addListener( CPPUNIT_NS::TestResult *eventManager ) =0; + + /*! \brief Gives a chance to the plug-in to remove its registered TestListener. + * + * Override this method to remove a TestListener that has been added. + */ + virtual void removeListener( CPPUNIT_NS::TestResult *eventManager ) =0; + + /*! \brief Provides a way for the plug-in to register some XmlOutputterHook. + */ + virtual void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter ) =0; + + /*! \brief Called when the XmlOutputter is destroyed. + * + * Can be used to free some resources allocated by addXmlOutputterHooks(). + */ + virtual void removeXmlOutputterHooks() = 0; + + /*! \brief Called just before unloading the dynamic library. + * + * Override this method to unregister test factory added in initialize(). + * This is necessary to keep the TestFactoryRegistry 'clean'. When + * the plug-in is unloaded from memory, the TestFactoryRegistry will hold + * reference on test that are no longer available if they are not + * unregistered. + */ + virtual void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry ) =0; + + virtual ~CppUnitTestPlugIn() {} +}; + + + +/*! \brief Name of the function exported by a test plug-in. + * \ingroup WritingTestPlugIn + * + * The signature of the exported function is: + * \code + * CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void); + * \endcode + */ +#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn + +/*! \brief Type of the function exported by a plug-in. + * \ingroup WritingTestPlugIn + */ +typedef CppUnitTestPlugIn *(*TestPlugInSignature)(); + + +/*! \brief Implements the function exported by the test plug-in + * \ingroup WritingTestPlugIn + */ +#define CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( TestPlugInInterfaceType ) \ + CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void) \ + { \ + static TestPlugInInterfaceType plugIn; \ + return &plugIn; \ + } \ + typedef char __CppUnitPlugInExportFunctionDummyTypeDef // dummy typedef so it can end with ';' + + +// Note: This include should remain after definition of CppUnitTestPlugIn +#include + + +/*! \def CPPUNIT_PLUGIN_IMPLEMENT_MAIN() + * \brief Implements the 'main' function for the plug-in. + * + * This macros implements the main() function for dynamic library. + * For example, WIN32 requires a DllMain function, while some Unix + * requires a main() function. This macros takes care of the implementation. + */ + +// Win32 +#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER) +#if !defined(APIENTRY) +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOUSER +#define NOKERNEL +#define NOSOUND +#define NOMINMAX +#define BLENDFUNCTION void // for mingw & gcc +#include +#endif +#define CPPUNIT_PLUGIN_IMPLEMENT_MAIN() \ + BOOL APIENTRY DllMain( HANDLE hModule, \ + DWORD ul_reason_for_call, \ + LPVOID lpReserved ) \ + { \ + return TRUE; \ + } \ + typedef char __CppUnitPlugInImplementMainDummyTypeDef + +// Unix +#elif defined(CPPUNIT_HAVE_UNIX_DLL_LOADER) || defined(CPPUNIT_HAVE_UNIX_SHL_LOADER) +#define CPPUNIT_PLUGIN_IMPLEMENT_MAIN() \ + int main( int argc, char *argv[] ) \ + { \ + return 0; \ + } \ + typedef char __CppUnitPlugInImplementMainDummyTypeDef + + +// Other +#else // other platforms don't require anything specifics +#endif + + + +/*! \brief Implements and exports the test plug-in interface. + * \ingroup WritingTestPlugIn + * + * This macro exports the test plug-in function using the subclass, + * and implements the 'main' function for the plug-in using + * CPPUNIT_PLUGIN_IMPLEMENT_MAIN(). + * + * When using this macro, CppUnit must be linked as a DLL (shared library). + * Otherwise, tests registered to the TestFactoryRegistry in the DLL will + * not be visible to the DllPlugInTester. + * + * \see CppUnitTestPlugIn + * \see CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL(), CPPUNIT_PLUGIN_IMPLEMENT_MAIN(). + */ +#define CPPUNIT_PLUGIN_IMPLEMENT() \ + CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( CPPUNIT_NS::TestPlugInDefaultImpl ); \ + CPPUNIT_PLUGIN_IMPLEMENT_MAIN() + + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + + +#endif // CPPUNIT_PLUGIN_TESTPLUGIN diff --git a/3rdParty/include/cppunit/plugin/TestPlugInDefaultImpl.h b/3rdParty/include/cppunit/plugin/TestPlugInDefaultImpl.h new file mode 100644 index 00000000..fa4b8078 --- /dev/null +++ b/3rdParty/include/cppunit/plugin/TestPlugInDefaultImpl.h @@ -0,0 +1,52 @@ +#ifndef CPPUNIT_PLUGIN_TESTPLUGINADAPTER +#define CPPUNIT_PLUGIN_TESTPLUGINADAPTER + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include + +CPPUNIT_NS_BEGIN + + +class TestSuite; + + +/*! \brief Default implementation of test plug-in interface. + * \ingroup WritingTestPlugIn + * + * Override getSuiteName() to specify the suite name. Default is "All Tests". + * + * CppUnitTestPlugIn::getTestSuite() returns a suite that contains + * all the test registered to the default test factory registry + * ( TestFactoryRegistry::getRegistry() ). + * + */ +class CPPUNIT_API TestPlugInDefaultImpl : public CppUnitTestPlugIn +{ +public: + TestPlugInDefaultImpl(); + + virtual ~TestPlugInDefaultImpl(); + + void initialize( TestFactoryRegistry *registry, + const PlugInParameters ¶meters ); + + void addListener( TestResult *eventManager ); + + void removeListener( TestResult *eventManager ); + + void addXmlOutputterHooks( XmlOutputter *outputter ); + + void removeXmlOutputterHooks(); + + void uninitialize( TestFactoryRegistry *registry ); +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_PLUGIN_TESTPLUGINADAPTER diff --git a/3rdParty/include/cppunit/portability/CppUnitDeque.h b/3rdParty/include/cppunit/portability/CppUnitDeque.h new file mode 100644 index 00000000..bbab21f5 --- /dev/null +++ b/3rdParty/include/cppunit/portability/CppUnitDeque.h @@ -0,0 +1,25 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITDEQUE_H +#define CPPUNIT_PORTABILITY_CPPUNITDEQUE_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitDeque : public std::deque +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitDeque std::deque + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITDEQUE_H + diff --git a/3rdParty/include/cppunit/portability/CppUnitMap.h b/3rdParty/include/cppunit/portability/CppUnitMap.h new file mode 100644 index 00000000..0cdc723a --- /dev/null +++ b/3rdParty/include/cppunit/portability/CppUnitMap.h @@ -0,0 +1,29 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITMAP_H +#define CPPUNIT_PORTABILITY_CPPUNITMAP_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitMap : public std::map + ,CPPUNIT_STD_ALLOCATOR> +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitMap std::map + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITMAP_H + diff --git a/3rdParty/include/cppunit/portability/CppUnitSet.h b/3rdParty/include/cppunit/portability/CppUnitSet.h new file mode 100644 index 00000000..18b8662e --- /dev/null +++ b/3rdParty/include/cppunit/portability/CppUnitSet.h @@ -0,0 +1,28 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITSET_H +#define CPPUNIT_PORTABILITY_CPPUNITSET_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitSet : public std::set + ,CPPUNIT_STD_ALLOCATOR> +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitSet std::set + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITSET_H + diff --git a/3rdParty/include/cppunit/portability/CppUnitStack.h b/3rdParty/include/cppunit/portability/CppUnitStack.h new file mode 100644 index 00000000..bc7785b0 --- /dev/null +++ b/3rdParty/include/cppunit/portability/CppUnitStack.h @@ -0,0 +1,26 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITSTACK_H +#define CPPUNIT_PORTABILITY_CPPUNITSTACK_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitStack : public std::stack > +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitStack std::stack + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITSTACK_H \ No newline at end of file diff --git a/3rdParty/include/cppunit/portability/CppUnitVector.h b/3rdParty/include/cppunit/portability/CppUnitVector.h new file mode 100644 index 00000000..6666a63b --- /dev/null +++ b/3rdParty/include/cppunit/portability/CppUnitVector.h @@ -0,0 +1,25 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITVECTOR_H +#define CPPUNIT_PORTABILITY_CPPUNITVECTOR_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitVector : public std::vector +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitVector std::vector + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITVECTOR_H + diff --git a/3rdParty/include/cppunit/portability/FloatingPoint.h b/3rdParty/include/cppunit/portability/FloatingPoint.h new file mode 100644 index 00000000..e8c91b3f --- /dev/null +++ b/3rdParty/include/cppunit/portability/FloatingPoint.h @@ -0,0 +1,54 @@ +#ifndef CPPUNIT_PORTABILITY_FLOATINGPOINT_H_INCLUDED +#define CPPUNIT_PORTABILITY_FLOATINGPOINT_H_INCLUDED + +#include +#include + +CPPUNIT_NS_BEGIN + +/// \brief Tests if a floating-point is a NaN. +// According to IEEE-754 floating point standard, +// (see e.g. page 8 of +// http://www.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps) +// all comparisons with NaN are false except "x != x", which is true. +// +// At least Microsoft Visual Studio 6 is known not to implement this test correctly. +// It emits the following code to test equality: +// fcomp qword ptr [nan] +// fnstsw ax // copie fp (floating-point) status register to ax +// test ah,40h // test bit 14 of ax (0x4000) => C3 of fp status register +// According to the following documentation on the x86 floating point status register, +// the C2 bit should be tested to test for NaN value. +// http://webster.cs.ucr.edu/AoA/Windows/HTML/RealArithmetic.html#1000117 +// In Microsoft Visual Studio 2003 & 2005, the test is implemented with: +// test ah,44h // Visual Studio 2005 test both C2 & C3... +// +// To work around this, a NaN is assumed to be detected if no strict ordering is found. +inline bool floatingPointIsUnordered( double x ) +{ + // x != x will detect a NaN on conformant platform + // (2.0 < x && x < 1.0) will detect a NaN on non conformant platform: + // => no ordering can be found for x. + return (x != x) || (2.0 < x && x < 1.0); +} + + +/// \brief Tests if a floating-point is finite. +/// @return \c true if x is neither a NaN, nor +inf, nor -inf, \c false otherwise. +inline int floatingPointIsFinite( double x ) +{ +#if defined(CPPUNIT_HAVE_ISFINITE) + return isfinite( x ); +#elif defined(CPPUNIT_HAVE_FINITE) + return finite( x ); +#elif defined(CPPUNIT_HAVE__FINITE) + return _finite(x); +#else + double testInf = x * 0.0; // Produce 0.0 if x is finite, a NaN otherwise. + return testInf == 0.0 && !floatingPointIsUnordered(testInf); +#endif +} + +CPPUNIT_NS_END + +#endif // CPPUNIT_PORTABILITY_FLOATINGPOINT_H_INCLUDED diff --git a/3rdParty/include/cppunit/portability/Stream.h b/3rdParty/include/cppunit/portability/Stream.h new file mode 100644 index 00000000..e9beb8c1 --- /dev/null +++ b/3rdParty/include/cppunit/portability/Stream.h @@ -0,0 +1,347 @@ +#ifndef CPPUNIT_PORTABILITY_STREAM_H_INCLUDED +#define CPPUNIT_PORTABILITY_STREAM_H_INCLUDED + +// This module define: +// Type CppUT::Stream (either std::stream or a custom type) +// Type CppUT::OStringStream (eitjer std::ostringstream, older alternate or a custom type) +// Functions stdCOut() & stdCErr() which returns a reference on cout & cerr stream (or our +// custom stream). + +#include + + +#if defined( CPPUNIT_NO_STREAM ) + +#include +#include +#include + +CPPUNIT_NS_BEGIN + +class StreamBuffer +{ +public: + virtual ~StreamBuffer() {} + + virtual void write( const char *text, unsigned int length ) = 0; + + virtual void flush() {} +}; + + +class StringStreamBuffer : public StreamBuffer +{ +public: + std::string str() const + { + return str_; + } + +public: // overridden from StreamBuffer + void write( const char *text, unsigned int length ) + { + str_.append( text, length ); + } + +private: + std::string str_; +}; + + +class FileStreamBuffer : public StreamBuffer +{ +public: + FileStreamBuffer( FILE *file ) + : file_( file ) + { + } + + FILE *file() const + { + return file_; + } + +public: // overridden from StreamBuffer + void write( const char *text, unsigned int length ) + { + if ( file_ ) + fwrite( text, sizeof(char), length, file_ ); + } + + void flush() + { + if ( file_ ) + fflush( file_ ); + } + +private: + FILE *file_; +}; + + +class OStream +{ +public: + OStream() + : buffer_( 0 ) + { + } + + OStream( StreamBuffer *buffer ) + : buffer_( buffer ) + { + } + + virtual ~OStream() + { + flush(); + } + + OStream &flush() + { + if ( buffer_ ) + buffer_->flush(); + return *this; + } + + void setBuffer( StreamBuffer *buffer ) + { + buffer_ = buffer; + } + + OStream &write( const char *text, unsigned int length ) + { + if ( buffer_ ) + buffer_->write( text, length ); + return *this; + } + + OStream &write( const char *text ) + { + return write( text, strlen(text) ); + } + + OStream &operator <<( bool v ) + { + const char *out = v ? "true" : "false"; + return write( out ); + } + + OStream &operator <<( short v ) + { + char buffer[64]; + sprintf( buffer, "%hd", v ); + return write( buffer ); + } + + OStream &operator <<( unsigned short v ) + { + char buffer[64]; + sprintf( buffer, "%hu", v ); + return write( buffer ); + } + + OStream &operator <<( int v ) + { + char buffer[64]; + sprintf( buffer, "%d", v ); + return write( buffer ); + } + + OStream &operator <<( unsigned int v ) + { + char buffer[64]; + sprintf( buffer, "%u", v ); + return write( buffer ); + } + + OStream &operator <<( long v ) + { + char buffer[64]; + sprintf( buffer, "%ld", v ); + return write( buffer ); + } + + OStream &operator <<( unsigned long v ) + { + char buffer[64]; + sprintf( buffer, "%lu", v ); + return write( buffer ); + } + + OStream &operator <<( float v ) + { + char buffer[128]; + sprintf( buffer, "%.16g", double(v) ); + return write( buffer ); + } + + OStream &operator <<( double v ) + { + char buffer[128]; + sprintf( buffer, "%.16g", v ); + return write( buffer ); + } + + OStream &operator <<( long double v ) + { + char buffer[128]; + sprintf( buffer, "%.16g", double(v) ); + return write( buffer ); + } + + OStream &operator <<( const void *v ) + { + char buffer[64]; + sprintf( buffer, "%p", v ); + return write( buffer ); + } + + OStream &operator <<( const char *v ) + { + return write( v ? v : "NULL" ); + } + + OStream &operator <<( char c ) + { + char buffer[16]; + sprintf( buffer, "%c", c ); + return write( buffer ); + } + + OStream &operator <<( const std::string &s ) + { + return write( s.c_str(), s.length() ); + } + +private: + StreamBuffer *buffer_; +}; + + +class OStringStream : public OStream +{ +public: + OStringStream() + : OStream( &buffer_ ) + { + } + + std::string str() const + { + return buffer_.str(); + } + +private: + StringStreamBuffer buffer_; +}; + + +class OFileStream : public OStream +{ +public: + OFileStream( FILE *file ) + : OStream( &buffer_ ) + , buffer_( file ) + , ownFile_( false ) + { + } + + OFileStream( const char *path ) + : OStream( &buffer_ ) + , buffer_( fopen( path, "wt" ) ) + , ownFile_( true ) + { + } + + virtual ~OFileStream() + { + if ( ownFile_ && buffer_.file() ) + fclose( buffer_.file() ); + } + +private: + FileStreamBuffer buffer_; + bool ownFile_; +}; + +inline OStream &stdCOut() +{ + static OFileStream stream( stdout ); + return stream; +} + +inline OStream &stdCErr() +{ + static OFileStream stream( stderr ); + return stream; +} + +CPPUNIT_NS_END + +#elif CPPUNIT_HAVE_SSTREAM // #if defined( CPPUNIT_NO_STREAM ) +# include +# include + + CPPUNIT_NS_BEGIN + typedef std::ostringstream OStringStream; // The standard C++ way + typedef std::ofstream OFileStream; + CPPUNIT_NS_END + + +#elif CPPUNIT_HAVE_CLASS_STRSTREAM +# include +# if CPPUNIT_HAVE_STRSTREAM +# include +# else // CPPUNIT_HAVE_STRSTREAM +# include +# endif // CPPUNIT_HAVE_CLASS_STRSTREAM + + CPPUNIT_NS_BEGIN + + class OStringStream : public std::ostrstream + { + public: + std::string str() + { +// (*this) << '\0'; +// std::string msg(std::ostrstream::str()); +// std::ostrstream::freeze(false); +// return msg; +// Alternative implementation that don't rely on freeze which is not +// available on some platforms: + return std::string( std::ostrstream::str(), pcount() ); + } + }; + + CPPUNIT_NS_END +#else // CPPUNIT_HAVE_CLASS_STRSTREAM +# error Cannot define CppUnit::OStringStream. +#endif // #if defined( CPPUNIT_NO_STREAM ) + + + +#if !defined( CPPUNIT_NO_STREAM ) + +#include + + CPPUNIT_NS_BEGIN + + typedef std::ostream OStream; + + inline OStream &stdCOut() + { + return std::cout; + } + + inline OStream &stdCErr() + { + return std::cerr; + } + + CPPUNIT_NS_END + +#endif // #if !defined( CPPUNIT_NO_STREAM ) + +#endif // CPPUNIT_PORTABILITY_STREAM_H_INCLUDED + diff --git a/3rdParty/include/cppunit/tools/Algorithm.h b/3rdParty/include/cppunit/tools/Algorithm.h new file mode 100644 index 00000000..e5746a2b --- /dev/null +++ b/3rdParty/include/cppunit/tools/Algorithm.h @@ -0,0 +1,23 @@ +#ifndef CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED +#define CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED + +#include + +CPPUNIT_NS_BEGIN + +template +void +removeFromSequence( SequenceType &sequence, + const ValueType &valueToRemove ) +{ + for ( unsigned int index =0; index < sequence.size(); ++index ) + { + if ( sequence[ index ] == valueToRemove ) + sequence.erase( sequence.begin() + index ); + } +} + +CPPUNIT_NS_END + + +#endif // CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED diff --git a/3rdParty/include/cppunit/tools/StringTools.h b/3rdParty/include/cppunit/tools/StringTools.h new file mode 100644 index 00000000..7a6b6d71 --- /dev/null +++ b/3rdParty/include/cppunit/tools/StringTools.h @@ -0,0 +1,34 @@ +#ifndef CPPUNIT_TOOLS_STRINGTOOLS_H +#define CPPUNIT_TOOLS_STRINGTOOLS_H + +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Tool functions to manipulate string. + */ +struct StringTools +{ + + typedef CppUnitVector Strings; + + static std::string CPPUNIT_API toString( int value ); + + static std::string CPPUNIT_API toString( double value ); + + static Strings CPPUNIT_API split( const std::string &text, + char separator ); + + static std::string CPPUNIT_API wrap( const std::string &text, + int wrapColumn = CPPUNIT_WRAP_COLUMN ); + +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TOOLS_STRINGTOOLS_H diff --git a/3rdParty/include/cppunit/tools/XmlDocument.h b/3rdParty/include/cppunit/tools/XmlDocument.h new file mode 100644 index 00000000..4ee73257 --- /dev/null +++ b/3rdParty/include/cppunit/tools/XmlDocument.h @@ -0,0 +1,86 @@ +#ifndef CPPUNIT_TOOLS_XMLDOCUMENT_H +#define CPPUNIT_TOOLS_XMLDOCUMENT_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include + + +CPPUNIT_NS_BEGIN + + +class XmlElement; + + +/*! \brief A XML Document. + * + * A XmlDocument represents a XML file. It holds a pointer on the root XmlElement + * of the document. It also holds the encoding and style sheet used. + * + * By default, the XML document is stand-alone and tagged with enconding "ISO-8859-1". + */ +class CPPUNIT_API XmlDocument +{ +public: + /*! \brief Constructs a XmlDocument object. + * \param encoding Encoding used in the XML file (default is Latin-1, ISO-8859-1 ). + * \param styleSheet Name of the XSL style sheet file used. If empty then no + * style sheet will be specified in the output. + */ + XmlDocument( const std::string &encoding = "", + const std::string &styleSheet = "" ); + + /// Destructor. + virtual ~XmlDocument(); + + std::string encoding() const; + void setEncoding( const std::string &encoding = "" ); + + std::string styleSheet() const; + void setStyleSheet( const std::string &styleSheet = "" ); + + bool standalone() const; + + /*! \brief set the output document as standalone or not. + * + * For the output document, specify wether it's a standalone XML + * document, or not. + * + * \param standalone if true, the output will be specified as standalone. + * if false, it will be not. + */ + void setStandalone( bool standalone ); + + void setRootElement( XmlElement *rootElement ); + XmlElement &rootElement() const; + + std::string toString() const; + +private: + /// Prevents the use of the copy constructor. + XmlDocument( const XmlDocument © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlDocument © ); + +protected: + std::string m_encoding; + std::string m_styleSheet; + XmlElement *m_rootElement; + bool m_standalone; +}; + + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TOOLS_XMLDOCUMENT_H diff --git a/3rdParty/include/cppunit/tools/XmlElement.h b/3rdParty/include/cppunit/tools/XmlElement.h new file mode 100644 index 00000000..0b36bd23 --- /dev/null +++ b/3rdParty/include/cppunit/tools/XmlElement.h @@ -0,0 +1,149 @@ +#ifndef CPPUNIT_TOOLS_XMLELEMENT_H +#define CPPUNIT_TOOLS_XMLELEMENT_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + + +CPPUNIT_NS_BEGIN + + +class XmlElement; + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + + +/*! \brief A XML Element. + * + * A XML element has: + * - a name, specified on construction, + * - a content, specified on construction (may be empty), + * - zero or more attributes, added with addAttribute(), + * - zero or more child elements, added with addElement(). + */ +class CPPUNIT_API XmlElement +{ +public: + /*! \brief Constructs an element with the specified name and string content. + * \param elementName Name of the element. Must not be empty. + * \param content Content of the element. + */ + XmlElement( std::string elementName, + std::string content ="" ); + + /*! \brief Constructs an element with the specified name and numeric content. + * \param elementName Name of the element. Must not be empty. + * \param numericContent Content of the element. + */ + XmlElement( std::string elementName, + int numericContent ); + + /*! \brief Destructs the element and its child elements. + */ + virtual ~XmlElement(); + + /*! \brief Returns the name of the element. + * \return Name of the element. + */ + std::string name() const; + + /*! \brief Returns the content of the element. + * \return Content of the element. + */ + std::string content() const; + + /*! \brief Sets the name of the element. + * \param name New name for the element. + */ + void setName( const std::string &name ); + + /*! \brief Sets the content of the element. + * \param content New content for the element. + */ + void setContent( const std::string &content ); + + /*! \overload void setContent( const std::string &content ) + */ + void setContent( int numericContent ); + + /*! \brief Adds an attribute with the specified string value. + * \param attributeName Name of the attribute. Must not be an empty. + * \param value Value of the attribute. + */ + void addAttribute( std::string attributeName, + std::string value ); + + /*! \brief Adds an attribute with the specified numeric value. + * \param attributeName Name of the attribute. Must not be empty. + * \param numericValue Numeric value of the attribute. + */ + void addAttribute( std::string attributeName, + int numericValue ); + + /*! \brief Adds a child element to the element. + * \param element Child element to add. Must not be \c NULL. + */ + void addElement( XmlElement *element ); + + /*! \brief Returns the number of child elements. + * \return Number of child elements (element added with addElement()). + */ + int elementCount() const; + + /*! \brief Returns the child element at the specified index. + * \param index Zero based index of the element to return. + * \returns Element at the specified index. Never \c NULL. + * \exception std::invalid_argument if \a index < 0 or index >= elementCount(). + */ + XmlElement *elementAt( int index ) const; + + /*! \brief Returns the first child element with the specified name. + * \param name Name of the child element to return. + * \return First child element found which is named \a name. + * \exception std::invalid_argument if there is no child element with the specified + * name. + */ + XmlElement *elementFor( const std::string &name ) const; + + /*! \brief Returns a XML string that represents the element. + * \param indent String of spaces representing the amount of 'indent'. + * \return XML string that represents the element, its attributes and its + * child elements. + */ + std::string toString( const std::string &indent = "" ) const; + +private: + typedef std::pair Attribute; + + std::string attributesAsString() const; + std::string escape( std::string value ) const; + +private: + std::string m_name; + std::string m_content; + + typedef CppUnitDeque Attributes; + Attributes m_attributes; + + typedef CppUnitDeque Elements; + Elements m_elements; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_TOOLS_XMLELEMENT_H diff --git a/3rdParty/include/cppunit/ui/mfc/MfcTestRunner.h b/3rdParty/include/cppunit/ui/mfc/MfcTestRunner.h new file mode 100644 index 00000000..6a5f7b77 --- /dev/null +++ b/3rdParty/include/cppunit/ui/mfc/MfcTestRunner.h @@ -0,0 +1,76 @@ +#ifndef CPPUNITUI_MFC_MFCTESTRUNNER_H +#define CPPUNITUI_MFC_MFCTESTRUNNER_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include + +/* Refer to MSDN documentation to know how to write and use MFC extension DLL: + mk:@MSITStore:h:\DevStudio\MSDN\98VSa\1036\vcmfc.chm::/html/_mfcnotes_tn033.htm#_mfcnotes_how_to_write_an_mfc_extension_dll + + This can be found in the index with "mfc extension" + The basic: + Using: + - your application must use MFC DLL + - memory allocation is done using the same heap + - you must define the symbol _AFX_DLL + + Building: + - you must define the symbol _AFX_DLL and _AFX_EXT + - export class using AFX_EXT_CLASS + */ + +CPPUNIT_NS_BEGIN + + class Test; + class TestSuite; + + +/*! \brief MFC test runner. + * \ingroup ExecutingTest + * + * Use this to launch the MFC TestRunner. Usually called from you CWinApp subclass: + * + * \code + * #include + * #include + * + * void + * CHostAppApp::RunUnitTests() + * { + * CppUnit::MfcTestRunner runner; + * runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); + * + * runner.run(); + * } + * \endcode + * \see CppUnit::TextTestRunner, CppUnit::TestFactoryRegistry. + */ +class AFX_EXT_CLASS MfcTestRunner +{ +public: + MfcTestRunner(); + virtual ~MfcTestRunner(); + + void run(); + + void addTest( Test *test ); + + void addTests( const CppUnitVector &tests ); + +protected: + Test *getRootTest(); + + TestSuite *m_suite; + + typedef CppUnitVector Tests; + Tests m_tests; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNITUI_MFC_MFCTESTRUNNER_H \ No newline at end of file diff --git a/3rdParty/include/cppunit/ui/mfc/TestRunner.h b/3rdParty/include/cppunit/ui/mfc/TestRunner.h new file mode 100644 index 00000000..c4d6affa --- /dev/null +++ b/3rdParty/include/cppunit/ui/mfc/TestRunner.h @@ -0,0 +1,21 @@ +#ifndef CPPUNITUI_MFC_TESTRUNNER_H +#define CPPUNITUI_MFC_TESTRUNNER_H + +#include + +CPPUNIT_NS_BEGIN + +#if defined(CPPUNIT_HAVE_NAMESPACES) +namespace MfcUi +{ + /*! Mfc TestRunner (DEPRECATED). + * \deprecated Use CppUnit::MfcTestRunner instead. + */ + typedef CPPUNIT_NS::MfcTestRunner TestRunner; +} +#endif // defined(CPPUNIT_HAVE_NAMESPACES) + +CPPUNIT_NS_END + + +#endif // CPPUNITUI_MFC_TESTRUNNER_H diff --git a/3rdParty/include/cppunit/ui/qt/Config.h b/3rdParty/include/cppunit/ui/qt/Config.h new file mode 100644 index 00000000..beaf9ad4 --- /dev/null +++ b/3rdParty/include/cppunit/ui/qt/Config.h @@ -0,0 +1,21 @@ +#ifndef CPPUNIT_QTUI_CONFIG_H +#define CPPUNIT_QTUI_CONFIG_H + +/*! Macro to export symbol to DLL with VC++. + * + * - QTTESTRUNNER_DLL_BUILD must be defined when building the DLL. + * - QTTESTRUNNER_DLL must be defined if linking against the DLL. + * - If none of the above are defined then you are building or linking against + * the static library. + */ + +#if defined( QTTESTRUNNER_DLL_BUILD ) +# define QTTESTRUNNER_API __declspec(dllexport) +#elif defined ( QTTESTRUNNER_DLL ) +# define QTTESTRUNNER_API __declspec(dllimport) +#else +# define QTTESTRUNNER_API +#endif + + +#endif // CPPUNIT_QTUI_CONFIG_H diff --git a/3rdParty/include/cppunit/ui/qt/QtTestRunner.h b/3rdParty/include/cppunit/ui/qt/QtTestRunner.h new file mode 100644 index 00000000..4b6ab4e4 --- /dev/null +++ b/3rdParty/include/cppunit/ui/qt/QtTestRunner.h @@ -0,0 +1,85 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunner.h for class TestRunner +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CPPUNIT_QTUI_QTTESTRUNNER_H +#define CPPUNIT_QTUI_QTTESTRUNNER_H + +#include +#include "Config.h" + +CPPUNIT_NS_BEGIN + + + class Test; + class TestSuite; + + +/*! + * \brief QT test runner. + * \ingroup ExecutingTest + * + * Here is an example of usage: + * \code + * #include + * #include + * + * [...] + * + * void + * QDepWindow::runTests() + * { + * CppUnit::QtUi::TestRunner runner; + * runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); + * runner.run( true ); + * } + * \endcode + * + */ +class QTTESTRUNNER_API QtTestRunner +{ +public: + /*! Constructs a TestRunner object. + */ + QtTestRunner(); + + /*! Destructor. + */ + virtual ~QtTestRunner(); + + void run( bool autoRun =false ); + + void addTest( Test *test ); + +private: + /// Prevents the use of the copy constructor. + QtTestRunner( const QtTestRunner © ); + + /// Prevents the use of the copy operator. + void operator =( const QtTestRunner © ); + + Test *getRootTest(); + +private: + typedef CppUnitVector Tests; + Tests *_tests; + + TestSuite *_suite; +}; + + +#if CPPUNIT_HAVE_NAMESPACES + namespace QtUi + { + /*! Qt TestRunner (DEPRECATED). + * \deprecated Use CppUnit::QtTestRunner instead. + */ + typedef CPPUNIT_NS::QtTestRunner TestRunner; + } +#endif + + +CPPUNIT_NS_END + +#endif // CPPUNIT_QTUI_QTTESTRUNNER_H diff --git a/3rdParty/include/cppunit/ui/qt/TestRunner.h b/3rdParty/include/cppunit/ui/qt/TestRunner.h new file mode 100644 index 00000000..9c53e4ba --- /dev/null +++ b/3rdParty/include/cppunit/ui/qt/TestRunner.h @@ -0,0 +1,11 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunner.h for class TestRunner +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CPPUNIT_QTUI_TESTRUNNER_H +#define CPPUNIT_QTUI_TESTRUNNER_H + +#include + +#endif // CPPUNIT_QTUI_TESTRUNNER_H diff --git a/3rdParty/include/cppunit/ui/text/TestRunner.h b/3rdParty/include/cppunit/ui/text/TestRunner.h new file mode 100644 index 00000000..023eb834 --- /dev/null +++ b/3rdParty/include/cppunit/ui/text/TestRunner.h @@ -0,0 +1,24 @@ +#ifndef CPPUNIT_UI_TEXT_TESTRUNNER_H +#define CPPUNIT_UI_TEXT_TESTRUNNER_H + +#include + + +#if defined(CPPUNIT_HAVE_NAMESPACES) + +CPPUNIT_NS_BEGIN +namespace TextUi +{ + + /*! Text TestRunner (DEPRECATED). + * \deprecated Use TextTestRunner instead. + */ + typedef TextTestRunner TestRunner; + +} +CPPUNIT_NS_END + +#endif // defined(CPPUNIT_HAVE_NAMESPACES) + + +#endif // CPPUNIT_UI_TEXT_TESTRUNNER_H diff --git a/3rdParty/include/cppunit/ui/text/TextTestRunner.h b/3rdParty/include/cppunit/ui/text/TextTestRunner.h new file mode 100644 index 00000000..86da4d4b --- /dev/null +++ b/3rdParty/include/cppunit/ui/text/TextTestRunner.h @@ -0,0 +1,97 @@ +#ifndef CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H +#define CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H + + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Outputter; +class Test; +class TestSuite; +class TextOutputter; +class TestResult; +class TestResultCollector; + + + +/*! + * \brief A text mode test runner. + * \ingroup WritingTestResult + * \ingroup ExecutingTest + * + * The test runner manage the life cycle of the added tests. + * + * The test runner can run only one of the added tests or all the tests. + * + * TestRunner prints out a trace as the tests are executed followed by a + * summary at the end. The trace and summary print are optional. + * + * Here is an example of use: + * + * \code + * CppUnit::TextTestRunner runner; + * runner.addTest( ExampleTestCase::suite() ); + * runner.run( "", true ); // Run all tests and wait + * \endcode + * + * The trace is printed using a TextTestProgressListener. The summary is printed + * using a TextOutputter. + * + * You can specify an alternate Outputter at construction + * or later with setOutputter(). + * + * After construction, you can register additional TestListener to eventManager(), + * for a custom progress trace, for example. + * + * \code + * CppUnit::TextTestRunner runner; + * runner.addTest( ExampleTestCase::suite() ); + * runner.setOutputter( CppUnit::CompilerOutputter::defaultOutputter( + * &runner.result(), + * std::cerr ) ); + * MyCustomProgressTestListener progress; + * runner.eventManager().addListener( &progress ); + * runner.run( "", true ); // Run all tests and wait + * \endcode + * + * \see CompilerOutputter, XmlOutputter, TextOutputter. + */ +class CPPUNIT_API TextTestRunner : public CPPUNIT_NS::TestRunner +{ +public: + TextTestRunner( Outputter *outputter =NULL ); + + virtual ~TextTestRunner(); + + bool run( std::string testPath ="", + bool doWait = false, + bool doPrintResult = true, + bool doPrintProgress = true ); + + void setOutputter( Outputter *outputter ); + + TestResultCollector &result() const; + + TestResult &eventManager() const; + +public: // overridden from TestRunner (to avoid hidden virtual function warning) + virtual void run( TestResult &controller, + const std::string &testPath = "" ); + +protected: + virtual void wait( bool doWait ); + virtual void printResult( bool doPrintResult ); + + TestResultCollector *m_result; + TestResult *m_eventManager; + Outputter *m_outputter; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H diff --git a/3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h b/3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h new file mode 100644 index 00000000..c19b4b07 --- /dev/null +++ b/3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h @@ -0,0 +1,190 @@ +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + +/* File created by MIDL compiler version 5.01.0164 */ +/* at Sat Apr 13 11:47:16 2002 + */ +/* Compiler settings for G:\prg\vc\Lib\cppunit\src\msvc6\DSPlugIn\TestRunnerDSPlugin.idl: + Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext + error checks: allocation ref bounds_check enum stub_data +*/ +//@@MIDL_FILE_HEADING( ) + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 440 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __TestRunnerDSPluginVC6_h__ +#define __TestRunnerDSPluginVC6_h__ + +#ifdef __cplusplus +extern "C"{ +#endif + +/* Forward Declarations */ + +#ifndef __ITestRunnerDSPlugin_FWD_DEFINED__ +#define __ITestRunnerDSPlugin_FWD_DEFINED__ +typedef interface ITestRunnerDSPlugin ITestRunnerDSPlugin; +#endif /* __ITestRunnerDSPlugin_FWD_DEFINED__ */ + + +#ifndef __DSAddIn_FWD_DEFINED__ +#define __DSAddIn_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DSAddIn DSAddIn; +#else +typedef struct DSAddIn DSAddIn; +#endif /* __cplusplus */ + +#endif /* __DSAddIn_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" + +void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void __RPC_FAR * ); + +#ifndef __ITestRunnerDSPlugin_INTERFACE_DEFINED__ +#define __ITestRunnerDSPlugin_INTERFACE_DEFINED__ + +/* interface ITestRunnerDSPlugin */ +/* [oleautomation][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_ITestRunnerDSPlugin; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3ADE0E37-5A56-4a68-BD8D-67E9E7502971") + ITestRunnerDSPlugin : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE goToLineInSourceCode( + /* [in] */ BSTR fileName, + /* [in] */ int lineNumber) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITestRunnerDSPluginVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( + ITestRunnerDSPlugin __RPC_FAR * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( + ITestRunnerDSPlugin __RPC_FAR * This); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( + ITestRunnerDSPlugin __RPC_FAR * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *goToLineInSourceCode )( + ITestRunnerDSPlugin __RPC_FAR * This, + /* [in] */ BSTR fileName, + /* [in] */ int lineNumber); + + END_INTERFACE + } ITestRunnerDSPluginVtbl; + + interface ITestRunnerDSPlugin + { + CONST_VTBL struct ITestRunnerDSPluginVtbl __RPC_FAR *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITestRunnerDSPlugin_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITestRunnerDSPlugin_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITestRunnerDSPlugin_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITestRunnerDSPlugin_goToLineInSourceCode(This,fileName,lineNumber) \ + (This)->lpVtbl -> goToLineInSourceCode(This,fileName,lineNumber) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITestRunnerDSPlugin_goToLineInSourceCode_Proxy( + ITestRunnerDSPlugin __RPC_FAR * This, + /* [in] */ BSTR fileName, + /* [in] */ int lineNumber); + + +void __RPC_STUB ITestRunnerDSPlugin_goToLineInSourceCode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITestRunnerDSPlugin_INTERFACE_DEFINED__ */ + + + +#ifndef __TestRunnerDSPluginLib_LIBRARY_DEFINED__ +#define __TestRunnerDSPluginLib_LIBRARY_DEFINED__ + +/* library TestRunnerDSPluginLib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_TestRunnerDSPluginLib; + +EXTERN_C const CLSID CLSID_DSAddIn; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F193CE54-716C-41CB-80B2-FA74CA3EE2AC") +DSAddIn; +#endif +#endif /* __TestRunnerDSPluginLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * ); +unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); +unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); +void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c b/3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c new file mode 100644 index 00000000..9490f9eb --- /dev/null +++ b/3rdParty/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c @@ -0,0 +1,50 @@ +/* this file contains the actual definitions of */ +/* the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + +/* File created by MIDL compiler version 5.01.0164 */ +/* at Sat Apr 13 11:47:16 2002 + */ +/* Compiler settings for G:\prg\vc\Lib\cppunit\src\msvc6\DSPlugIn\TestRunnerDSPlugin.idl: + Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext + error checks: allocation ref bounds_check enum stub_data +*/ +//@@MIDL_FILE_HEADING( ) +#ifdef __cplusplus +extern "C"{ +#endif + + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +const IID IID_ITestRunnerDSPlugin = {0x3ADE0E37,0x5A56,0x4a68,{0xBD,0x8D,0x67,0xE9,0xE7,0x50,0x29,0x71}}; + + +const IID LIBID_TestRunnerDSPluginLib = {0x3ADE0E38,0x5A56,0x4a68,{0xBD,0x8D,0x67,0xE9,0xE7,0x50,0x29,0x71}}; + + +const CLSID CLSID_DSAddIn = {0xF193CE54,0x716C,0x41CB,{0x80,0xB2,0xFA,0x74,0xCA,0x3E,0xE2,0xAC}}; + + +#ifdef __cplusplus +} +#endif + diff --git a/3rdParty/include/msvc6/USED_WITH_CPPUNIT.txt b/3rdParty/include/msvc6/USED_WITH_CPPUNIT.txt new file mode 100644 index 00000000..e69de29b diff --git a/3rdParty/include/msvc6/testrunner/TestPlugInInterface.h b/3rdParty/include/msvc6/testrunner/TestPlugInInterface.h new file mode 100644 index 00000000..031f2a01 --- /dev/null +++ b/3rdParty/include/msvc6/testrunner/TestPlugInInterface.h @@ -0,0 +1,55 @@ +#ifndef CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H +#define CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H + +#include +#include + +#if !defined(WINAPI) +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOUSER +#define NOKERNEL +#define NOSOUND +#define NOMINMAX +#include +#endif + +/*! \brief Abstract TestPlugIn for DLL. + * \deprecated Use CppUnitTestPlugIn instead. + * + * A Test plug-in DLL must subclass this class and "publish" an instance + * using the following exported function: + * \code + * extern "C" { + * __declspec(dllimport) TestPlugInInterface *GetTestPlugInInterface(); + * } + * \endcode + * + * When loading the DLL, the TestPlugIn runner look-up this function and + * retreives the + * + * See the TestPlugIn example for VC++ for details. + */ +class TestPlugInInterface +{ +public: + virtual ~TestPlugInInterface() {} + + /*! Returns an instance of the "All Tests" suite. + * + * \return Instance of the top-level suite that contains all test. Ownership + * is granted to the method caller. + */ + virtual CppUnit::Test *makeTest() =0; +}; + +typedef TestPlugInInterface* (WINAPI *GetTestPlugInInterfaceFunction)(void); + + +extern "C" { + __declspec(dllexport) TestPlugInInterface *GetTestPlugInInterface(); +} + + + +#endif // CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H diff --git a/3rdParty/include/msvc6/testrunner/TestRunner.h b/3rdParty/include/msvc6/testrunner/TestRunner.h new file mode 100644 index 00000000..0bee97a9 --- /dev/null +++ b/3rdParty/include/msvc6/testrunner/TestRunner.h @@ -0,0 +1,17 @@ +#ifndef CPPUNIT_MSVC_TESTRUNNER_H +#define CPPUNIT_MSVC_TESTRUNNER_H + + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include + +/*! \brief MFC test runner (DEPRECATED) + * \ingroup ExecutingTest + * \deprecated Use CppUnit::MfcUi::TestRunner instead. + */ +typedef CPPUNIT_NS::MfcTestRunner TestRunner; + +#endif // CPPUNIT_MSVC_TESTRUNNER_H diff --git a/3rdParty/include/sqlite3/sqlite3.h b/3rdParty/include/sqlite3/sqlite3.h new file mode 100644 index 00000000..9f77592a --- /dev/null +++ b/3rdParty/include/sqlite3/sqlite3.h @@ -0,0 +1,5759 @@ +/* +** 2001 September 15 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** This header file defines the interface that the SQLite library +** presents to client programs. If a C-function, structure, datatype, +** or constant definition does not appear in this file, then it is +** not a published API of SQLite, is subject to change without +** notice, and should not be referenced by programs that use SQLite. +** +** Some of the definitions that are in this file are marked as +** "experimental". Experimental interfaces are normally new +** features recently added to SQLite. We do not anticipate changes +** to experimental interfaces but reserve the right to make minor changes +** if experience from use "in the wild" suggest such changes are prudent. +** +** The official C-language API documentation for SQLite is derived +** from comments in this file. This file is the authoritative source +** on how SQLite interfaces are suppose to operate. +** +** The name of this file under configuration management is "sqlite.h.in". +** The makefile makes some minor changes to this file (such as inserting +** the version number) and changes its name to "sqlite3.h" as +** part of the build process. +*/ +#ifndef _SQLITE3_H_ +#define _SQLITE3_H_ +#include /* Needed for the definition of va_list */ + +/* +** Make sure we can call this stuff from C++. +*/ +#ifdef __cplusplus +extern "C" { +#endif + + +/* +** Add the ability to override 'extern' +*/ +#ifndef SQLITE_EXTERN +# define SQLITE_EXTERN extern +#endif + +#ifndef SQLITE_API +# define SQLITE_API +#endif + + +/* +** These no-op macros are used in front of interfaces to mark those +** interfaces as either deprecated or experimental. New applications +** should not use deprecated interfaces - they are support for backwards +** compatibility only. Application writers should be aware that +** experimental interfaces are subject to change in point releases. +** +** These macros used to resolve to various kinds of compiler magic that +** would generate warning messages when they were used. But that +** compiler magic ended up generating such a flurry of bug reports +** that we have taken it all out and gone back to using simple +** noop macros. +*/ +#define SQLITE_DEPRECATED +#define SQLITE_EXPERIMENTAL + +/* +** Ensure these symbols were not defined by some previous header file. +*/ +#ifdef SQLITE_VERSION +# undef SQLITE_VERSION +#endif +#ifdef SQLITE_VERSION_NUMBER +# undef SQLITE_VERSION_NUMBER +#endif + +/* +** CAPI3REF: Compile-Time Library Version Numbers {H10010} +** +** The SQLITE_VERSION and SQLITE_VERSION_NUMBER #defines in +** the sqlite3.h file specify the version of SQLite with which +** that header file is associated. +** +** The "version" of SQLite is a string of the form "W.X.Y" or "W.X.Y.Z". +** The W value is major version number and is always 3 in SQLite3. +** The W value only changes when backwards compatibility is +** broken and we intend to never break backwards compatibility. +** The X value is the minor version number and only changes when +** there are major feature enhancements that are forwards compatible +** but not backwards compatible. +** The Y value is the release number and is incremented with +** each release but resets back to 0 whenever X is incremented. +** The Z value only appears on branch releases. +** +** The SQLITE_VERSION_NUMBER is an integer that is computed as +** follows: +** +**
+** SQLITE_VERSION_NUMBER = W*1000000 + X*1000 + Y
+** 
+** +** Since version 3.6.18, SQLite source code has been stored in the +** fossil configuration management +** system. The SQLITE_SOURCE_ID +** macro is a string which identifies a particular check-in of SQLite +** within its configuration management system. The string contains the +** date and time of the check-in (UTC) and an SHA1 hash of the entire +** source tree. +** +** See also: [sqlite3_libversion()], +** [sqlite3_libversion_number()], [sqlite3_sourceid()], +** [sqlite_version()] and [sqlite_source_id()]. +** +** Requirements: [H10011] [H10014] +*/ +#define SQLITE_VERSION "3.6.18" +#define SQLITE_VERSION_NUMBER 3006018 +#define SQLITE_SOURCE_ID "2009-09-11 14:05:07 b084828a771ec40be85f07c590ca99de4f6c24ee" + +/* +** CAPI3REF: Run-Time Library Version Numbers {H10020} +** KEYWORDS: sqlite3_version +** +** These interfaces provide the same information as the [SQLITE_VERSION], +** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] #defines in the header, +** but are associated with the library instead of the header file. Cautious +** programmers might include assert() statements in their application to +** verify that values returned by these interfaces match the macros in +** the header, and thus insure that the application is +** compiled with matching library and header files. +** +**
+** assert( sqlite3_libversion_number()==SQLITE_VERSION_NUMBER );
+** assert( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)==0 );
+** assert( strcmp(sqlite3_libversion,SQLITE_VERSION)==0 );
+** 
+** +** The sqlite3_libversion() function returns the same information as is +** in the sqlite3_version[] string constant. The function is provided +** for use in DLLs since DLL users usually do not have direct access to string +** constants within the DLL. Similarly, the sqlite3_sourceid() function +** returns the same information as is in the [SQLITE_SOURCE_ID] #define of +** the header file. +** +** See also: [sqlite_version()] and [sqlite_source_id()]. +** +** Requirements: [H10021] [H10022] [H10023] +*/ +SQLITE_API SQLITE_EXTERN const char sqlite3_version[]; +SQLITE_API const char *sqlite3_libversion(void); +SQLITE_API const char *sqlite3_sourceid(void); +SQLITE_API int sqlite3_libversion_number(void); + +/* +** CAPI3REF: Test To See If The Library Is Threadsafe {H10100} +** +** SQLite can be compiled with or without mutexes. When +** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes +** are enabled and SQLite is threadsafe. When the +** [SQLITE_THREADSAFE] macro is 0, +** the mutexes are omitted. Without the mutexes, it is not safe +** to use SQLite concurrently from more than one thread. +** +** Enabling mutexes incurs a measurable performance penalty. +** So if speed is of utmost importance, it makes sense to disable +** the mutexes. But for maximum safety, mutexes should be enabled. +** The default behavior is for mutexes to be enabled. +** +** This interface can be used by an application to make sure that the +** version of SQLite that it is linking against was compiled with +** the desired setting of the [SQLITE_THREADSAFE] macro. +** +** This interface only reports on the compile-time mutex setting +** of the [SQLITE_THREADSAFE] flag. If SQLite is compiled with +** SQLITE_THREADSAFE=1 then mutexes are enabled by default but +** can be fully or partially disabled using a call to [sqlite3_config()] +** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD], +** or [SQLITE_CONFIG_MUTEX]. The return value of this function shows +** only the default compile-time setting, not any run-time changes +** to that setting. +** +** See the [threading mode] documentation for additional information. +** +** Requirements: [H10101] [H10102] +*/ +SQLITE_API int sqlite3_threadsafe(void); + +/* +** CAPI3REF: Database Connection Handle {H12000} +** KEYWORDS: {database connection} {database connections} +** +** Each open SQLite database is represented by a pointer to an instance of +** the opaque structure named "sqlite3". It is useful to think of an sqlite3 +** pointer as an object. The [sqlite3_open()], [sqlite3_open16()], and +** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()] +** is its destructor. There are many other interfaces (such as +** [sqlite3_prepare_v2()], [sqlite3_create_function()], and +** [sqlite3_busy_timeout()] to name but three) that are methods on an +** sqlite3 object. +*/ +typedef struct sqlite3 sqlite3; + +/* +** CAPI3REF: 64-Bit Integer Types {H10200} +** KEYWORDS: sqlite_int64 sqlite_uint64 +** +** Because there is no cross-platform way to specify 64-bit integer types +** SQLite includes typedefs for 64-bit signed and unsigned integers. +** +** The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions. +** The sqlite_int64 and sqlite_uint64 types are supported for backwards +** compatibility only. +** +** Requirements: [H10201] [H10202] +*/ +#ifdef SQLITE_INT64_TYPE + typedef SQLITE_INT64_TYPE sqlite_int64; + typedef unsigned SQLITE_INT64_TYPE sqlite_uint64; +#elif defined(_MSC_VER) || defined(__BORLANDC__) + typedef __int64 sqlite_int64; + typedef unsigned __int64 sqlite_uint64; +#else + typedef long long int sqlite_int64; + typedef unsigned long long int sqlite_uint64; +#endif +typedef sqlite_int64 sqlite3_int64; +typedef sqlite_uint64 sqlite3_uint64; + +/* +** If compiling for a processor that lacks floating point support, +** substitute integer for floating-point. +*/ +#ifdef SQLITE_OMIT_FLOATING_POINT +# define double sqlite3_int64 +#endif + +/* +** CAPI3REF: Closing A Database Connection {H12010} +** +** This routine is the destructor for the [sqlite3] object. +** +** Applications should [sqlite3_finalize | finalize] all [prepared statements] +** and [sqlite3_blob_close | close] all [BLOB handles] associated with +** the [sqlite3] object prior to attempting to close the object. +** The [sqlite3_next_stmt()] interface can be used to locate all +** [prepared statements] associated with a [database connection] if desired. +** Typical code might look like this: +** +**
+** sqlite3_stmt *pStmt;
+** while( (pStmt = sqlite3_next_stmt(db, 0))!=0 ){
+**     sqlite3_finalize(pStmt);
+** }
+** 
+** +** If [sqlite3_close()] is invoked while a transaction is open, +** the transaction is automatically rolled back. +** +** The C parameter to [sqlite3_close(C)] must be either a NULL +** pointer or an [sqlite3] object pointer obtained +** from [sqlite3_open()], [sqlite3_open16()], or +** [sqlite3_open_v2()], and not previously closed. +** +** Requirements: +** [H12011] [H12012] [H12013] [H12014] [H12015] [H12019] +*/ +SQLITE_API int sqlite3_close(sqlite3 *); + +/* +** The type for a callback function. +** This is legacy and deprecated. It is included for historical +** compatibility and is not documented. +*/ +typedef int (*sqlite3_callback)(void*,int,char**, char**); + +/* +** CAPI3REF: One-Step Query Execution Interface {H12100} +** +** The sqlite3_exec() interface is a convenient way of running one or more +** SQL statements without having to write a lot of C code. The UTF-8 encoded +** SQL statements are passed in as the second parameter to sqlite3_exec(). +** The statements are evaluated one by one until either an error or +** an interrupt is encountered, or until they are all done. The 3rd parameter +** is an optional callback that is invoked once for each row of any query +** results produced by the SQL statements. The 5th parameter tells where +** to write any error messages. +** +** The error message passed back through the 5th parameter is held +** in memory obtained from [sqlite3_malloc()]. To avoid a memory leak, +** the calling application should call [sqlite3_free()] on any error +** message returned through the 5th parameter when it has finished using +** the error message. +** +** If the SQL statement in the 2nd parameter is NULL or an empty string +** or a string containing only whitespace and comments, then no SQL +** statements are evaluated and the database is not changed. +** +** The sqlite3_exec() interface is implemented in terms of +** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()]. +** The sqlite3_exec() routine does nothing to the database that cannot be done +** by [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()]. +** +** The first parameter to [sqlite3_exec()] must be an valid and open +** [database connection]. +** +** The database connection must not be closed while +** [sqlite3_exec()] is running. +** +** The calling function should use [sqlite3_free()] to free +** the memory that *errmsg is left pointing at once the error +** message is no longer needed. +** +** The SQL statement text in the 2nd parameter to [sqlite3_exec()] +** must remain unchanged while [sqlite3_exec()] is running. +** +** Requirements: +** [H12101] [H12102] [H12104] [H12105] [H12107] [H12110] [H12113] [H12116] +** [H12119] [H12122] [H12125] [H12131] [H12134] [H12137] [H12138] +*/ +SQLITE_API int sqlite3_exec( + sqlite3*, /* An open database */ + const char *sql, /* SQL to be evaluated */ + int (*callback)(void*,int,char**,char**), /* Callback function */ + void *, /* 1st argument to callback */ + char **errmsg /* Error msg written here */ +); + +/* +** CAPI3REF: Result Codes {H10210} +** KEYWORDS: SQLITE_OK {error code} {error codes} +** KEYWORDS: {result code} {result codes} +** +** Many SQLite functions return an integer result code from the set shown +** here in order to indicates success or failure. +** +** New error codes may be added in future versions of SQLite. +** +** See also: [SQLITE_IOERR_READ | extended result codes] +*/ +#define SQLITE_OK 0 /* Successful result */ +/* beginning-of-error-codes */ +#define SQLITE_ERROR 1 /* SQL error or missing database */ +#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */ +#define SQLITE_PERM 3 /* Access permission denied */ +#define SQLITE_ABORT 4 /* Callback routine requested an abort */ +#define SQLITE_BUSY 5 /* The database file is locked */ +#define SQLITE_LOCKED 6 /* A table in the database is locked */ +#define SQLITE_NOMEM 7 /* A malloc() failed */ +#define SQLITE_READONLY 8 /* Attempt to write a readonly database */ +#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/ +#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */ +#define SQLITE_CORRUPT 11 /* The database disk image is malformed */ +#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */ +#define SQLITE_FULL 13 /* Insertion failed because database is full */ +#define SQLITE_CANTOPEN 14 /* Unable to open the database file */ +#define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */ +#define SQLITE_EMPTY 16 /* Database is empty */ +#define SQLITE_SCHEMA 17 /* The database schema changed */ +#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */ +#define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */ +#define SQLITE_MISMATCH 20 /* Data type mismatch */ +#define SQLITE_MISUSE 21 /* Library used incorrectly */ +#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ +#define SQLITE_AUTH 23 /* Authorization denied */ +#define SQLITE_FORMAT 24 /* Auxiliary database format error */ +#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */ +#define SQLITE_NOTADB 26 /* File opened that is not a database file */ +#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */ +#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */ +/* end-of-error-codes */ + +/* +** CAPI3REF: Extended Result Codes {H10220} +** KEYWORDS: {extended error code} {extended error codes} +** KEYWORDS: {extended result code} {extended result codes} +** +** In its default configuration, SQLite API routines return one of 26 integer +** [SQLITE_OK | result codes]. However, experience has shown that many of +** these result codes are too coarse-grained. They do not provide as +** much information about problems as programmers might like. In an effort to +** address this, newer versions of SQLite (version 3.3.8 and later) include +** support for additional result codes that provide more detailed information +** about errors. The extended result codes are enabled or disabled +** on a per database connection basis using the +** [sqlite3_extended_result_codes()] API. +** +** Some of the available extended result codes are listed here. +** One may expect the number of extended result codes will be expand +** over time. Software that uses extended result codes should expect +** to see new result codes in future releases of SQLite. +** +** The SQLITE_OK result code will never be extended. It will always +** be exactly zero. +*/ +#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) +#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) +#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8)) +#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8)) +#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8)) +#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8)) +#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8)) +#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8)) +#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8)) +#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8)) +#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8)) +#define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8)) +#define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13<<8)) +#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8)) +#define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15<<8)) +#define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8)) +#define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8)) +#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8) ) + +/* +** CAPI3REF: Flags For File Open Operations {H10230} +** +** These bit values are intended for use in the +** 3rd parameter to the [sqlite3_open_v2()] interface and +** in the 4th parameter to the xOpen method of the +** [sqlite3_vfs] object. +*/ +#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */ +#define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */ +#define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */ +#define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */ +#define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */ +#define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */ +#define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */ +#define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */ +#define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */ +#define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ + +/* +** CAPI3REF: Device Characteristics {H10240} +** +** The xDeviceCapabilities method of the [sqlite3_io_methods] +** object returns an integer which is a vector of the these +** bit values expressing I/O characteristics of the mass storage +** device that holds the file that the [sqlite3_io_methods] +** refers to. +** +** The SQLITE_IOCAP_ATOMIC property means that all writes of +** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values +** mean that writes of blocks that are nnn bytes in size and +** are aligned to an address which is an integer multiple of +** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means +** that when data is appended to a file, the data is appended +** first then the size of the file is extended, never the other +** way around. The SQLITE_IOCAP_SEQUENTIAL property means that +** information is written to disk in the same order as calls +** to xWrite(). +*/ +#define SQLITE_IOCAP_ATOMIC 0x00000001 +#define SQLITE_IOCAP_ATOMIC512 0x00000002 +#define SQLITE_IOCAP_ATOMIC1K 0x00000004 +#define SQLITE_IOCAP_ATOMIC2K 0x00000008 +#define SQLITE_IOCAP_ATOMIC4K 0x00000010 +#define SQLITE_IOCAP_ATOMIC8K 0x00000020 +#define SQLITE_IOCAP_ATOMIC16K 0x00000040 +#define SQLITE_IOCAP_ATOMIC32K 0x00000080 +#define SQLITE_IOCAP_ATOMIC64K 0x00000100 +#define SQLITE_IOCAP_SAFE_APPEND 0x00000200 +#define SQLITE_IOCAP_SEQUENTIAL 0x00000400 + +/* +** CAPI3REF: File Locking Levels {H10250} +** +** SQLite uses one of these integer values as the second +** argument to calls it makes to the xLock() and xUnlock() methods +** of an [sqlite3_io_methods] object. +*/ +#define SQLITE_LOCK_NONE 0 +#define SQLITE_LOCK_SHARED 1 +#define SQLITE_LOCK_RESERVED 2 +#define SQLITE_LOCK_PENDING 3 +#define SQLITE_LOCK_EXCLUSIVE 4 + +/* +** CAPI3REF: Synchronization Type Flags {H10260} +** +** When SQLite invokes the xSync() method of an +** [sqlite3_io_methods] object it uses a combination of +** these integer values as the second argument. +** +** When the SQLITE_SYNC_DATAONLY flag is used, it means that the +** sync operation only needs to flush data to mass storage. Inode +** information need not be flushed. If the lower four bits of the flag +** equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics. +** If the lower four bits equal SQLITE_SYNC_FULL, that means +** to use Mac OS X style fullsync instead of fsync(). +*/ +#define SQLITE_SYNC_NORMAL 0x00002 +#define SQLITE_SYNC_FULL 0x00003 +#define SQLITE_SYNC_DATAONLY 0x00010 + +/* +** CAPI3REF: OS Interface Open File Handle {H11110} +** +** An [sqlite3_file] object represents an open file in the +** [sqlite3_vfs | OS interface layer]. Individual OS interface +** implementations will +** want to subclass this object by appending additional fields +** for their own use. The pMethods entry is a pointer to an +** [sqlite3_io_methods] object that defines methods for performing +** I/O operations on the open file. +*/ +typedef struct sqlite3_file sqlite3_file; +struct sqlite3_file { + const struct sqlite3_io_methods *pMethods; /* Methods for an open file */ +}; + +/* +** CAPI3REF: OS Interface File Virtual Methods Object {H11120} +** +** Every file opened by the [sqlite3_vfs] xOpen method populates an +** [sqlite3_file] object (or, more commonly, a subclass of the +** [sqlite3_file] object) with a pointer to an instance of this object. +** This object defines the methods used to perform various operations +** against the open file represented by the [sqlite3_file] object. +** +** If the xOpen method sets the sqlite3_file.pMethods element +** to a non-NULL pointer, then the sqlite3_io_methods.xClose method +** may be invoked even if the xOpen reported that it failed. The +** only way to prevent a call to xClose following a failed xOpen +** is for the xOpen to set the sqlite3_file.pMethods element to NULL. +** +** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or +** [SQLITE_SYNC_FULL]. The first choice is the normal fsync(). +** The second choice is a Mac OS X style fullsync. The [SQLITE_SYNC_DATAONLY] +** flag may be ORed in to indicate that only the data of the file +** and not its inode needs to be synced. +** +** The integer values to xLock() and xUnlock() are one of +**
    +**
  • [SQLITE_LOCK_NONE], +**
  • [SQLITE_LOCK_SHARED], +**
  • [SQLITE_LOCK_RESERVED], +**
  • [SQLITE_LOCK_PENDING], or +**
  • [SQLITE_LOCK_EXCLUSIVE]. +**
+** xLock() increases the lock. xUnlock() decreases the lock. +** The xCheckReservedLock() method checks whether any database connection, +** either in this process or in some other process, is holding a RESERVED, +** PENDING, or EXCLUSIVE lock on the file. It returns true +** if such a lock exists and false otherwise. +** +** The xFileControl() method is a generic interface that allows custom +** VFS implementations to directly control an open file using the +** [sqlite3_file_control()] interface. The second "op" argument is an +** integer opcode. The third argument is a generic pointer intended to +** point to a structure that may contain arguments or space in which to +** write return values. Potential uses for xFileControl() might be +** functions to enable blocking locks with timeouts, to change the +** locking strategy (for example to use dot-file locks), to inquire +** about the status of a lock, or to break stale locks. The SQLite +** core reserves all opcodes less than 100 for its own use. +** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available. +** Applications that define a custom xFileControl method should use opcodes +** greater than 100 to avoid conflicts. +** +** The xSectorSize() method returns the sector size of the +** device that underlies the file. The sector size is the +** minimum write that can be performed without disturbing +** other bytes in the file. The xDeviceCharacteristics() +** method returns a bit vector describing behaviors of the +** underlying device: +** +**
    +**
  • [SQLITE_IOCAP_ATOMIC] +**
  • [SQLITE_IOCAP_ATOMIC512] +**
  • [SQLITE_IOCAP_ATOMIC1K] +**
  • [SQLITE_IOCAP_ATOMIC2K] +**
  • [SQLITE_IOCAP_ATOMIC4K] +**
  • [SQLITE_IOCAP_ATOMIC8K] +**
  • [SQLITE_IOCAP_ATOMIC16K] +**
  • [SQLITE_IOCAP_ATOMIC32K] +**
  • [SQLITE_IOCAP_ATOMIC64K] +**
  • [SQLITE_IOCAP_SAFE_APPEND] +**
  • [SQLITE_IOCAP_SEQUENTIAL] +**
+** +** The SQLITE_IOCAP_ATOMIC property means that all writes of +** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values +** mean that writes of blocks that are nnn bytes in size and +** are aligned to an address which is an integer multiple of +** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means +** that when data is appended to a file, the data is appended +** first then the size of the file is extended, never the other +** way around. The SQLITE_IOCAP_SEQUENTIAL property means that +** information is written to disk in the same order as calls +** to xWrite(). +** +** If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill +** in the unread portions of the buffer with zeros. A VFS that +** fails to zero-fill short reads might seem to work. However, +** failure to zero-fill short reads will eventually lead to +** database corruption. +*/ +typedef struct sqlite3_io_methods sqlite3_io_methods; +struct sqlite3_io_methods { + int iVersion; + int (*xClose)(sqlite3_file*); + int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst); + int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst); + int (*xTruncate)(sqlite3_file*, sqlite3_int64 size); + int (*xSync)(sqlite3_file*, int flags); + int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize); + int (*xLock)(sqlite3_file*, int); + int (*xUnlock)(sqlite3_file*, int); + int (*xCheckReservedLock)(sqlite3_file*, int *pResOut); + int (*xFileControl)(sqlite3_file*, int op, void *pArg); + int (*xSectorSize)(sqlite3_file*); + int (*xDeviceCharacteristics)(sqlite3_file*); + /* Additional methods may be added in future releases */ +}; + +/* +** CAPI3REF: Standard File Control Opcodes {H11310} +** +** These integer constants are opcodes for the xFileControl method +** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()] +** interface. +** +** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging. This +** opcode causes the xFileControl method to write the current state of +** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED], +** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE]) +** into an integer that the pArg argument points to. This capability +** is used during testing and only needs to be supported when SQLITE_TEST +** is defined. +*/ +#define SQLITE_FCNTL_LOCKSTATE 1 +#define SQLITE_GET_LOCKPROXYFILE 2 +#define SQLITE_SET_LOCKPROXYFILE 3 +#define SQLITE_LAST_ERRNO 4 + +/* +** CAPI3REF: Mutex Handle {H17110} +** +** The mutex module within SQLite defines [sqlite3_mutex] to be an +** abstract type for a mutex object. The SQLite core never looks +** at the internal representation of an [sqlite3_mutex]. It only +** deals with pointers to the [sqlite3_mutex] object. +** +** Mutexes are created using [sqlite3_mutex_alloc()]. +*/ +typedef struct sqlite3_mutex sqlite3_mutex; + +/* +** CAPI3REF: OS Interface Object {H11140} +** +** An instance of the sqlite3_vfs object defines the interface between +** the SQLite core and the underlying operating system. The "vfs" +** in the name of the object stands for "virtual file system". +** +** The value of the iVersion field is initially 1 but may be larger in +** future versions of SQLite. Additional fields may be appended to this +** object when the iVersion value is increased. Note that the structure +** of the sqlite3_vfs object changes in the transaction between +** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not +** modified. +** +** The szOsFile field is the size of the subclassed [sqlite3_file] +** structure used by this VFS. mxPathname is the maximum length of +** a pathname in this VFS. +** +** Registered sqlite3_vfs objects are kept on a linked list formed by +** the pNext pointer. The [sqlite3_vfs_register()] +** and [sqlite3_vfs_unregister()] interfaces manage this list +** in a thread-safe way. The [sqlite3_vfs_find()] interface +** searches the list. Neither the application code nor the VFS +** implementation should use the pNext pointer. +** +** The pNext field is the only field in the sqlite3_vfs +** structure that SQLite will ever modify. SQLite will only access +** or modify this field while holding a particular static mutex. +** The application should never modify anything within the sqlite3_vfs +** object once the object has been registered. +** +** The zName field holds the name of the VFS module. The name must +** be unique across all VFS modules. +** +** SQLite will guarantee that the zFilename parameter to xOpen +** is either a NULL pointer or string obtained +** from xFullPathname(). SQLite further guarantees that +** the string will be valid and unchanged until xClose() is +** called. Because of the previous sentence, +** the [sqlite3_file] can safely store a pointer to the +** filename if it needs to remember the filename for some reason. +** If the zFilename parameter is xOpen is a NULL pointer then xOpen +** must invent its own temporary name for the file. Whenever the +** xFilename parameter is NULL it will also be the case that the +** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE]. +** +** The flags argument to xOpen() includes all bits set in +** the flags argument to [sqlite3_open_v2()]. Or if [sqlite3_open()] +** or [sqlite3_open16()] is used, then flags includes at least +** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. +** If xOpen() opens a file read-only then it sets *pOutFlags to +** include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be set. +** +** SQLite will also add one of the following flags to the xOpen() +** call, depending on the object being opened: +** +**
    +**
  • [SQLITE_OPEN_MAIN_DB] +**
  • [SQLITE_OPEN_MAIN_JOURNAL] +**
  • [SQLITE_OPEN_TEMP_DB] +**
  • [SQLITE_OPEN_TEMP_JOURNAL] +**
  • [SQLITE_OPEN_TRANSIENT_DB] +**
  • [SQLITE_OPEN_SUBJOURNAL] +**
  • [SQLITE_OPEN_MASTER_JOURNAL] +**
+** +** The file I/O implementation can use the object type flags to +** change the way it deals with files. For example, an application +** that does not care about crash recovery or rollback might make +** the open of a journal file a no-op. Writes to this journal would +** also be no-ops, and any attempt to read the journal would return +** SQLITE_IOERR. Or the implementation might recognize that a database +** file will be doing page-aligned sector reads and writes in a random +** order and set up its I/O subsystem accordingly. +** +** SQLite might also add one of the following flags to the xOpen method: +** +**
    +**
  • [SQLITE_OPEN_DELETEONCLOSE] +**
  • [SQLITE_OPEN_EXCLUSIVE] +**
+** +** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be +** deleted when it is closed. The [SQLITE_OPEN_DELETEONCLOSE] +** will be set for TEMP databases, journals and for subjournals. +** +** The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction +** with the [SQLITE_OPEN_CREATE] flag, which are both directly +** analogous to the O_EXCL and O_CREAT flags of the POSIX open() +** API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the +** SQLITE_OPEN_CREATE, is used to indicate that file should always +** be created, and that it is an error if it already exists. +** It is not used to indicate the file should be opened +** for exclusive access. +** +** At least szOsFile bytes of memory are allocated by SQLite +** to hold the [sqlite3_file] structure passed as the third +** argument to xOpen. The xOpen method does not have to +** allocate the structure; it should just fill it in. Note that +** the xOpen method must set the sqlite3_file.pMethods to either +** a valid [sqlite3_io_methods] object or to NULL. xOpen must do +** this even if the open fails. SQLite expects that the sqlite3_file.pMethods +** element will be valid after xOpen returns regardless of the success +** or failure of the xOpen call. +** +** The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS] +** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to +** test whether a file is readable and writable, or [SQLITE_ACCESS_READ] +** to test whether a file is at least readable. The file can be a +** directory. +** +** SQLite will always allocate at least mxPathname+1 bytes for the +** output buffer xFullPathname. The exact size of the output buffer +** is also passed as a parameter to both methods. If the output buffer +** is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is +** handled as a fatal error by SQLite, vfs implementations should endeavor +** to prevent this by setting mxPathname to a sufficiently large value. +** +** The xRandomness(), xSleep(), and xCurrentTime() interfaces +** are not strictly a part of the filesystem, but they are +** included in the VFS structure for completeness. +** The xRandomness() function attempts to return nBytes bytes +** of good-quality randomness into zOut. The return value is +** the actual number of bytes of randomness obtained. +** The xSleep() method causes the calling thread to sleep for at +** least the number of microseconds given. The xCurrentTime() +** method returns a Julian Day Number for the current date and time. +** +*/ +typedef struct sqlite3_vfs sqlite3_vfs; +struct sqlite3_vfs { + int iVersion; /* Structure version number */ + int szOsFile; /* Size of subclassed sqlite3_file */ + int mxPathname; /* Maximum file pathname length */ + sqlite3_vfs *pNext; /* Next registered VFS */ + const char *zName; /* Name of this virtual file system */ + void *pAppData; /* Pointer to application-specific data */ + int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*, + int flags, int *pOutFlags); + int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir); + int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut); + int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut); + void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename); + void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg); + void (*(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol))(void); + void (*xDlClose)(sqlite3_vfs*, void*); + int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut); + int (*xSleep)(sqlite3_vfs*, int microseconds); + int (*xCurrentTime)(sqlite3_vfs*, double*); + int (*xGetLastError)(sqlite3_vfs*, int, char *); + /* New fields may be appended in figure versions. The iVersion + ** value will increment whenever this happens. */ +}; + +/* +** CAPI3REF: Flags for the xAccess VFS method {H11190} +** +** These integer constants can be used as the third parameter to +** the xAccess method of an [sqlite3_vfs] object. {END} They determine +** what kind of permissions the xAccess method is looking for. +** With SQLITE_ACCESS_EXISTS, the xAccess method +** simply checks whether the file exists. +** With SQLITE_ACCESS_READWRITE, the xAccess method +** checks whether the file is both readable and writable. +** With SQLITE_ACCESS_READ, the xAccess method +** checks whether the file is readable. +*/ +#define SQLITE_ACCESS_EXISTS 0 +#define SQLITE_ACCESS_READWRITE 1 +#define SQLITE_ACCESS_READ 2 + +/* +** CAPI3REF: Initialize The SQLite Library {H10130} +** +** The sqlite3_initialize() routine initializes the +** SQLite library. The sqlite3_shutdown() routine +** deallocates any resources that were allocated by sqlite3_initialize(). +** +** A call to sqlite3_initialize() is an "effective" call if it is +** the first time sqlite3_initialize() is invoked during the lifetime of +** the process, or if it is the first time sqlite3_initialize() is invoked +** following a call to sqlite3_shutdown(). Only an effective call +** of sqlite3_initialize() does any initialization. All other calls +** are harmless no-ops. +** +** A call to sqlite3_shutdown() is an "effective" call if it is the first +** call to sqlite3_shutdown() since the last sqlite3_initialize(). Only +** an effective call to sqlite3_shutdown() does any deinitialization. +** All other calls to sqlite3_shutdown() are harmless no-ops. +** +** Among other things, sqlite3_initialize() shall invoke +** sqlite3_os_init(). Similarly, sqlite3_shutdown() +** shall invoke sqlite3_os_end(). +** +** The sqlite3_initialize() routine returns [SQLITE_OK] on success. +** If for some reason, sqlite3_initialize() is unable to initialize +** the library (perhaps it is unable to allocate a needed resource such +** as a mutex) it returns an [error code] other than [SQLITE_OK]. +** +** The sqlite3_initialize() routine is called internally by many other +** SQLite interfaces so that an application usually does not need to +** invoke sqlite3_initialize() directly. For example, [sqlite3_open()] +** calls sqlite3_initialize() so the SQLite library will be automatically +** initialized when [sqlite3_open()] is called if it has not be initialized +** already. However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT] +** compile-time option, then the automatic calls to sqlite3_initialize() +** are omitted and the application must call sqlite3_initialize() directly +** prior to using any other SQLite interface. For maximum portability, +** it is recommended that applications always invoke sqlite3_initialize() +** directly prior to using any other SQLite interface. Future releases +** of SQLite may require this. In other words, the behavior exhibited +** when SQLite is compiled with [SQLITE_OMIT_AUTOINIT] might become the +** default behavior in some future release of SQLite. +** +** The sqlite3_os_init() routine does operating-system specific +** initialization of the SQLite library. The sqlite3_os_end() +** routine undoes the effect of sqlite3_os_init(). Typical tasks +** performed by these routines include allocation or deallocation +** of static resources, initialization of global variables, +** setting up a default [sqlite3_vfs] module, or setting up +** a default configuration using [sqlite3_config()]. +** +** The application should never invoke either sqlite3_os_init() +** or sqlite3_os_end() directly. The application should only invoke +** sqlite3_initialize() and sqlite3_shutdown(). The sqlite3_os_init() +** interface is called automatically by sqlite3_initialize() and +** sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate +** implementations for sqlite3_os_init() and sqlite3_os_end() +** are built into SQLite when it is compiled for Unix, Windows, or OS/2. +** When [custom builds | built for other platforms] +** (using the [SQLITE_OS_OTHER=1] compile-time +** option) the application must supply a suitable implementation for +** sqlite3_os_init() and sqlite3_os_end(). An application-supplied +** implementation of sqlite3_os_init() or sqlite3_os_end() +** must return [SQLITE_OK] on success and some other [error code] upon +** failure. +*/ +SQLITE_API int sqlite3_initialize(void); +SQLITE_API int sqlite3_shutdown(void); +SQLITE_API int sqlite3_os_init(void); +SQLITE_API int sqlite3_os_end(void); + +/* +** CAPI3REF: Configuring The SQLite Library {H14100} +** EXPERIMENTAL +** +** The sqlite3_config() interface is used to make global configuration +** changes to SQLite in order to tune SQLite to the specific needs of +** the application. The default configuration is recommended for most +** applications and so this routine is usually not necessary. It is +** provided to support rare applications with unusual needs. +** +** The sqlite3_config() interface is not threadsafe. The application +** must insure that no other SQLite interfaces are invoked by other +** threads while sqlite3_config() is running. Furthermore, sqlite3_config() +** may only be invoked prior to library initialization using +** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()]. +** Note, however, that sqlite3_config() can be called as part of the +** implementation of an application-defined [sqlite3_os_init()]. +** +** The first argument to sqlite3_config() is an integer +** [SQLITE_CONFIG_SINGLETHREAD | configuration option] that determines +** what property of SQLite is to be configured. Subsequent arguments +** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration option] +** in the first argument. +** +** When a configuration option is set, sqlite3_config() returns [SQLITE_OK]. +** If the option is unknown or SQLite is unable to set the option +** then this routine returns a non-zero [error code]. +** +** Requirements: +** [H14103] [H14106] [H14120] [H14123] [H14126] [H14129] [H14132] [H14135] +** [H14138] [H14141] [H14144] [H14147] [H14150] [H14153] [H14156] [H14159] +** [H14162] [H14165] [H14168] +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_config(int, ...); + +/* +** CAPI3REF: Configure database connections {H14200} +** EXPERIMENTAL +** +** The sqlite3_db_config() interface is used to make configuration +** changes to a [database connection]. The interface is similar to +** [sqlite3_config()] except that the changes apply to a single +** [database connection] (specified in the first argument). The +** sqlite3_db_config() interface can only be used immediately after +** the database connection is created using [sqlite3_open()], +** [sqlite3_open16()], or [sqlite3_open_v2()]. +** +** The second argument to sqlite3_db_config(D,V,...) is the +** configuration verb - an integer code that indicates what +** aspect of the [database connection] is being configured. +** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE]. +** New verbs are likely to be added in future releases of SQLite. +** Additional arguments depend on the verb. +** +** Requirements: +** [H14203] [H14206] [H14209] [H14212] [H14215] +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_config(sqlite3*, int op, ...); + +/* +** CAPI3REF: Memory Allocation Routines {H10155} +** EXPERIMENTAL +** +** An instance of this object defines the interface between SQLite +** and low-level memory allocation routines. +** +** This object is used in only one place in the SQLite interface. +** A pointer to an instance of this object is the argument to +** [sqlite3_config()] when the configuration option is +** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC]. +** By creating an instance of this object +** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC]) +** during configuration, an application can specify an alternative +** memory allocation subsystem for SQLite to use for all of its +** dynamic memory needs. +** +** Note that SQLite comes with several [built-in memory allocators] +** that are perfectly adequate for the overwhelming majority of applications +** and that this object is only useful to a tiny minority of applications +** with specialized memory allocation requirements. This object is +** also used during testing of SQLite in order to specify an alternative +** memory allocator that simulates memory out-of-memory conditions in +** order to verify that SQLite recovers gracefully from such +** conditions. +** +** The xMalloc and xFree methods must work like the +** malloc() and free() functions from the standard C library. +** The xRealloc method must work like realloc() from the standard C library +** with the exception that if the second argument to xRealloc is zero, +** xRealloc must be a no-op - it must not perform any allocation or +** deallocation. SQLite guaranteeds that the second argument to +** xRealloc is always a value returned by a prior call to xRoundup. +** And so in cases where xRoundup always returns a positive number, +** xRealloc can perform exactly as the standard library realloc() and +** still be in compliance with this specification. +** +** xSize should return the allocated size of a memory allocation +** previously obtained from xMalloc or xRealloc. The allocated size +** is always at least as big as the requested size but may be larger. +** +** The xRoundup method returns what would be the allocated size of +** a memory allocation given a particular requested size. Most memory +** allocators round up memory allocations at least to the next multiple +** of 8. Some allocators round up to a larger multiple or to a power of 2. +** Every memory allocation request coming in through [sqlite3_malloc()] +** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0, +** that causes the corresponding memory allocation to fail. +** +** The xInit method initializes the memory allocator. (For example, +** it might allocate any require mutexes or initialize internal data +** structures. The xShutdown method is invoked (indirectly) by +** [sqlite3_shutdown()] and should deallocate any resources acquired +** by xInit. The pAppData pointer is used as the only parameter to +** xInit and xShutdown. +** +** SQLite holds the [SQLITE_MUTEX_STATIC_MASTER] mutex when it invokes +** the xInit method, so the xInit method need not be threadsafe. The +** xShutdown method is only called from [sqlite3_shutdown()] so it does +** not need to be threadsafe either. For all other methods, SQLite +** holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the +** [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which +** it is by default) and so the methods are automatically serialized. +** However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other +** methods must be threadsafe or else make their own arrangements for +** serialization. +** +** SQLite will never invoke xInit() more than once without an intervening +** call to xShutdown(). +*/ +typedef struct sqlite3_mem_methods sqlite3_mem_methods; +struct sqlite3_mem_methods { + void *(*xMalloc)(int); /* Memory allocation function */ + void (*xFree)(void*); /* Free a prior allocation */ + void *(*xRealloc)(void*,int); /* Resize an allocation */ + int (*xSize)(void*); /* Return the size of an allocation */ + int (*xRoundup)(int); /* Round up request size to allocation size */ + int (*xInit)(void*); /* Initialize the memory allocator */ + void (*xShutdown)(void*); /* Deinitialize the memory allocator */ + void *pAppData; /* Argument to xInit() and xShutdown() */ +}; + +/* +** CAPI3REF: Configuration Options {H10160} +** EXPERIMENTAL +** +** These constants are the available integer configuration options that +** can be passed as the first argument to the [sqlite3_config()] interface. +** +** New configuration options may be added in future releases of SQLite. +** Existing configuration options might be discontinued. Applications +** should check the return code from [sqlite3_config()] to make sure that +** the call worked. The [sqlite3_config()] interface will return a +** non-zero [error code] if a discontinued or unsupported configuration option +** is invoked. +** +**
+**
SQLITE_CONFIG_SINGLETHREAD
+**
There are no arguments to this option. This option disables +** all mutexing and puts SQLite into a mode where it can only be used +** by a single thread.
+** +**
SQLITE_CONFIG_MULTITHREAD
+**
There are no arguments to this option. This option disables +** mutexing on [database connection] and [prepared statement] objects. +** The application is responsible for serializing access to +** [database connections] and [prepared statements]. But other mutexes +** are enabled so that SQLite will be safe to use in a multi-threaded +** environment as long as no two threads attempt to use the same +** [database connection] at the same time. See the [threading mode] +** documentation for additional information.
+** +**
SQLITE_CONFIG_SERIALIZED
+**
There are no arguments to this option. This option enables +** all mutexes including the recursive +** mutexes on [database connection] and [prepared statement] objects. +** In this mode (which is the default when SQLite is compiled with +** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access +** to [database connections] and [prepared statements] so that the +** application is free to use the same [database connection] or the +** same [prepared statement] in different threads at the same time. +** See the [threading mode] documentation for additional information.
+** +**
SQLITE_CONFIG_MALLOC
+**
This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mem_methods] structure. The argument specifies +** alternative low-level memory allocation routines to be used in place of +** the memory allocation routines built into SQLite.
+** +**
SQLITE_CONFIG_GETMALLOC
+**
This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods] +** structure is filled with the currently defined memory allocation routines. +** This option can be used to overload the default memory allocation +** routines with a wrapper that simulations memory allocation failure or +** tracks memory usage, for example.
+** +**
SQLITE_CONFIG_MEMSTATUS
+**
This option takes single argument of type int, interpreted as a +** boolean, which enables or disables the collection of memory allocation +** statistics. When disabled, the following SQLite interfaces become +** non-operational: +**
    +**
  • [sqlite3_memory_used()] +**
  • [sqlite3_memory_highwater()] +**
  • [sqlite3_soft_heap_limit()] +**
  • [sqlite3_status()] +**
+**
+** +**
SQLITE_CONFIG_SCRATCH
+**
This option specifies a static memory buffer that SQLite can use for +** scratch memory. There are three arguments: A pointer an 8-byte +** aligned memory buffer from which the scrach allocations will be +** drawn, the size of each scratch allocation (sz), +** and the maximum number of scratch allocations (N). The sz +** argument must be a multiple of 16. The sz parameter should be a few bytes +** larger than the actual scratch space required due to internal overhead. +** The first argument should pointer to an 8-byte aligned buffer +** of at least sz*N bytes of memory. +** SQLite will use no more than one scratch buffer at once per thread, so +** N should be set to the expected maximum number of threads. The sz +** parameter should be 6 times the size of the largest database page size. +** Scratch buffers are used as part of the btree balance operation. If +** The btree balancer needs additional memory beyond what is provided by +** scratch buffers or if no scratch buffer space is specified, then SQLite +** goes to [sqlite3_malloc()] to obtain the memory it needs.
+** +**
SQLITE_CONFIG_PAGECACHE
+**
This option specifies a static memory buffer that SQLite can use for +** the database page cache with the default page cache implemenation. +** This configuration should not be used if an application-define page +** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option. +** There are three arguments to this option: A pointer to 8-byte aligned +** memory, the size of each page buffer (sz), and the number of pages (N). +** The sz argument should be the size of the largest database page +** (a power of two between 512 and 32768) plus a little extra for each +** page header. The page header size is 20 to 40 bytes depending on +** the host architecture. It is harmless, apart from the wasted memory, +** to make sz a little too large. The first +** argument should point to an allocation of at least sz*N bytes of memory. +** SQLite will use the memory provided by the first argument to satisfy its +** memory needs for the first N pages that it adds to cache. If additional +** page cache memory is needed beyond what is provided by this option, then +** SQLite goes to [sqlite3_malloc()] for the additional storage space. +** The implementation might use one or more of the N buffers to hold +** memory accounting information. The pointer in the first argument must +** be aligned to an 8-byte boundary or subsequent behavior of SQLite +** will be undefined.
+** +**
SQLITE_CONFIG_HEAP
+**
This option specifies a static memory buffer that SQLite will use +** for all of its dynamic memory allocation needs beyond those provided +** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE]. +** There are three arguments: An 8-byte aligned pointer to the memory, +** the number of bytes in the memory buffer, and the minimum allocation size. +** If the first pointer (the memory pointer) is NULL, then SQLite reverts +** to using its default memory allocator (the system malloc() implementation), +** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. If the +** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or +** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory +** allocator is engaged to handle all of SQLites memory allocation needs. +** The first pointer (the memory pointer) must be aligned to an 8-byte +** boundary or subsequent behavior of SQLite will be undefined.
+** +**
SQLITE_CONFIG_MUTEX
+**
This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mutex_methods] structure. The argument specifies +** alternative low-level mutex routines to be used in place +** the mutex routines built into SQLite.
+** +**
SQLITE_CONFIG_GETMUTEX
+**
This option takes a single argument which is a pointer to an +** instance of the [sqlite3_mutex_methods] structure. The +** [sqlite3_mutex_methods] +** structure is filled with the currently defined mutex routines. +** This option can be used to overload the default mutex allocation +** routines with a wrapper used to track mutex usage for performance +** profiling or testing, for example.
+** +**
SQLITE_CONFIG_LOOKASIDE
+**
This option takes two arguments that determine the default +** memory allocation lookaside optimization. The first argument is the +** size of each lookaside buffer slot and the second is the number of +** slots allocated to each database connection. This option sets the +** default lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE] +** verb to [sqlite3_db_config()] can be used to change the lookaside +** configuration on individual connections.
+** +**
SQLITE_CONFIG_PCACHE
+**
This option takes a single argument which is a pointer to +** an [sqlite3_pcache_methods] object. This object specifies the interface +** to a custom page cache implementation. SQLite makes a copy of the +** object and uses it for page cache memory allocations.
+** +**
SQLITE_CONFIG_GETPCACHE
+**
This option takes a single argument which is a pointer to an +** [sqlite3_pcache_methods] object. SQLite copies of the current +** page cache implementation into that object.
+** +**
+*/ +#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ +#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ +#define SQLITE_CONFIG_SERIALIZED 3 /* nil */ +#define SQLITE_CONFIG_MALLOC 4 /* sqlite3_mem_methods* */ +#define SQLITE_CONFIG_GETMALLOC 5 /* sqlite3_mem_methods* */ +#define SQLITE_CONFIG_SCRATCH 6 /* void*, int sz, int N */ +#define SQLITE_CONFIG_PAGECACHE 7 /* void*, int sz, int N */ +#define SQLITE_CONFIG_HEAP 8 /* void*, int nByte, int min */ +#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */ +#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */ +#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */ +/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ +#define SQLITE_CONFIG_LOOKASIDE 13 /* int int */ +#define SQLITE_CONFIG_PCACHE 14 /* sqlite3_pcache_methods* */ +#define SQLITE_CONFIG_GETPCACHE 15 /* sqlite3_pcache_methods* */ + +/* +** CAPI3REF: Configuration Options {H10170} +** EXPERIMENTAL +** +** These constants are the available integer configuration options that +** can be passed as the second argument to the [sqlite3_db_config()] interface. +** +** New configuration options may be added in future releases of SQLite. +** Existing configuration options might be discontinued. Applications +** should check the return code from [sqlite3_db_config()] to make sure that +** the call worked. The [sqlite3_db_config()] interface will return a +** non-zero [error code] if a discontinued or unsupported configuration option +** is invoked. +** +**
+**
SQLITE_DBCONFIG_LOOKASIDE
+**
This option takes three additional arguments that determine the +** [lookaside memory allocator] configuration for the [database connection]. +** The first argument (the third parameter to [sqlite3_db_config()] is a +** pointer to an memory buffer to use for lookaside memory. +** The first argument may be NULL in which case SQLite will allocate the +** lookaside buffer itself using [sqlite3_malloc()]. The second argument is the +** size of each lookaside buffer slot and the third argument is the number of +** slots. The size of the buffer in the first argument must be greater than +** or equal to the product of the second and third arguments. The buffer +** must be aligned to an 8-byte boundary. If the second argument is not +** a multiple of 8, it is internally rounded down to the next smaller +** multiple of 8. See also: [SQLITE_CONFIG_LOOKASIDE]
+** +**
+*/ +#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */ + + +/* +** CAPI3REF: Enable Or Disable Extended Result Codes {H12200} +** +** The sqlite3_extended_result_codes() routine enables or disables the +** [extended result codes] feature of SQLite. The extended result +** codes are disabled by default for historical compatibility considerations. +** +** Requirements: +** [H12201] [H12202] +*/ +SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff); + +/* +** CAPI3REF: Last Insert Rowid {H12220} +** +** Each entry in an SQLite table has a unique 64-bit signed +** integer key called the [ROWID | "rowid"]. The rowid is always available +** as an undeclared column named ROWID, OID, or _ROWID_ as long as those +** names are not also used by explicitly declared columns. If +** the table has a column of type [INTEGER PRIMARY KEY] then that column +** is another alias for the rowid. +** +** This routine returns the [rowid] of the most recent +** successful [INSERT] into the database from the [database connection] +** in the first argument. If no successful [INSERT]s +** have ever occurred on that database connection, zero is returned. +** +** If an [INSERT] occurs within a trigger, then the [rowid] of the inserted +** row is returned by this routine as long as the trigger is running. +** But once the trigger terminates, the value returned by this routine +** reverts to the last value inserted before the trigger fired. +** +** An [INSERT] that fails due to a constraint violation is not a +** successful [INSERT] and does not change the value returned by this +** routine. Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK, +** and INSERT OR ABORT make no changes to the return value of this +** routine when their insertion fails. When INSERT OR REPLACE +** encounters a constraint violation, it does not fail. The +** INSERT continues to completion after deleting rows that caused +** the constraint problem so INSERT OR REPLACE will always change +** the return value of this interface. +** +** For the purposes of this routine, an [INSERT] is considered to +** be successful even if it is subsequently rolled back. +** +** Requirements: +** [H12221] [H12223] +** +** If a separate thread performs a new [INSERT] on the same +** database connection while the [sqlite3_last_insert_rowid()] +** function is running and thus changes the last insert [rowid], +** then the value returned by [sqlite3_last_insert_rowid()] is +** unpredictable and might not equal either the old or the new +** last insert [rowid]. +*/ +SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*); + +/* +** CAPI3REF: Count The Number Of Rows Modified {H12240} +** +** This function returns the number of database rows that were changed +** or inserted or deleted by the most recently completed SQL statement +** on the [database connection] specified by the first parameter. +** Only changes that are directly specified by the [INSERT], [UPDATE], +** or [DELETE] statement are counted. Auxiliary changes caused by +** triggers are not counted. Use the [sqlite3_total_changes()] function +** to find the total number of changes including changes caused by triggers. +** +** Changes to a view that are simulated by an [INSTEAD OF trigger] +** are not counted. Only real table changes are counted. +** +** A "row change" is a change to a single row of a single table +** caused by an INSERT, DELETE, or UPDATE statement. Rows that +** are changed as side effects of [REPLACE] constraint resolution, +** rollback, ABORT processing, [DROP TABLE], or by any other +** mechanisms do not count as direct row changes. +** +** A "trigger context" is a scope of execution that begins and +** ends with the script of a [CREATE TRIGGER | trigger]. +** Most SQL statements are +** evaluated outside of any trigger. This is the "top level" +** trigger context. If a trigger fires from the top level, a +** new trigger context is entered for the duration of that one +** trigger. Subtriggers create subcontexts for their duration. +** +** Calling [sqlite3_exec()] or [sqlite3_step()] recursively does +** not create a new trigger context. +** +** This function returns the number of direct row changes in the +** most recent INSERT, UPDATE, or DELETE statement within the same +** trigger context. +** +** Thus, when called from the top level, this function returns the +** number of changes in the most recent INSERT, UPDATE, or DELETE +** that also occurred at the top level. Within the body of a trigger, +** the sqlite3_changes() interface can be called to find the number of +** changes in the most recently completed INSERT, UPDATE, or DELETE +** statement within the body of the same trigger. +** However, the number returned does not include changes +** caused by subtriggers since those have their own context. +** +** See also the [sqlite3_total_changes()] interface and the +** [count_changes pragma]. +** +** Requirements: +** [H12241] [H12243] +** +** If a separate thread makes changes on the same database connection +** while [sqlite3_changes()] is running then the value returned +** is unpredictable and not meaningful. +*/ +SQLITE_API int sqlite3_changes(sqlite3*); + +/* +** CAPI3REF: Total Number Of Rows Modified {H12260} +** +** This function returns the number of row changes caused by [INSERT], +** [UPDATE] or [DELETE] statements since the [database connection] was opened. +** The count includes all changes from all +** [CREATE TRIGGER | trigger] contexts. However, +** the count does not include changes used to implement [REPLACE] constraints, +** do rollbacks or ABORT processing, or [DROP TABLE] processing. The +** count does not include rows of views that fire an [INSTEAD OF trigger], +** though if the INSTEAD OF trigger makes changes of its own, those changes +** are counted. +** The changes are counted as soon as the statement that makes them is +** completed (when the statement handle is passed to [sqlite3_reset()] or +** [sqlite3_finalize()]). +** +** See also the [sqlite3_changes()] interface and the +** [count_changes pragma]. +** +** Requirements: +** [H12261] [H12263] +** +** If a separate thread makes changes on the same database connection +** while [sqlite3_total_changes()] is running then the value +** returned is unpredictable and not meaningful. +*/ +SQLITE_API int sqlite3_total_changes(sqlite3*); + +/* +** CAPI3REF: Interrupt A Long-Running Query {H12270} +** +** This function causes any pending database operation to abort and +** return at its earliest opportunity. This routine is typically +** called in response to a user action such as pressing "Cancel" +** or Ctrl-C where the user wants a long query operation to halt +** immediately. +** +** It is safe to call this routine from a thread different from the +** thread that is currently running the database operation. But it +** is not safe to call this routine with a [database connection] that +** is closed or might close before sqlite3_interrupt() returns. +** +** If an SQL operation is very nearly finished at the time when +** sqlite3_interrupt() is called, then it might not have an opportunity +** to be interrupted and might continue to completion. +** +** An SQL operation that is interrupted will return [SQLITE_INTERRUPT]. +** If the interrupted SQL operation is an INSERT, UPDATE, or DELETE +** that is inside an explicit transaction, then the entire transaction +** will be rolled back automatically. +** +** The sqlite3_interrupt(D) call is in effect until all currently running +** SQL statements on [database connection] D complete. Any new SQL statements +** that are started after the sqlite3_interrupt() call and before the +** running statements reaches zero are interrupted as if they had been +** running prior to the sqlite3_interrupt() call. New SQL statements +** that are started after the running statement count reaches zero are +** not effected by the sqlite3_interrupt(). +** A call to sqlite3_interrupt(D) that occurs when there are no running +** SQL statements is a no-op and has no effect on SQL statements +** that are started after the sqlite3_interrupt() call returns. +** +** Requirements: +** [H12271] [H12272] +** +** If the database connection closes while [sqlite3_interrupt()] +** is running then bad things will likely happen. +*/ +SQLITE_API void sqlite3_interrupt(sqlite3*); + +/* +** CAPI3REF: Determine If An SQL Statement Is Complete {H10510} +** +** These routines are useful during command-line input to determine if the +** currently entered text seems to form a complete SQL statement or +** if additional input is needed before sending the text into +** SQLite for parsing. These routines return 1 if the input string +** appears to be a complete SQL statement. A statement is judged to be +** complete if it ends with a semicolon token and is not a prefix of a +** well-formed CREATE TRIGGER statement. Semicolons that are embedded within +** string literals or quoted identifier names or comments are not +** independent tokens (they are part of the token in which they are +** embedded) and thus do not count as a statement terminator. Whitespace +** and comments that follow the final semicolon are ignored. +** +** These routines return 0 if the statement is incomplete. If a +** memory allocation fails, then SQLITE_NOMEM is returned. +** +** These routines do not parse the SQL statements thus +** will not detect syntactically incorrect SQL. +** +** If SQLite has not been initialized using [sqlite3_initialize()] prior +** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked +** automatically by sqlite3_complete16(). If that initialization fails, +** then the return value from sqlite3_complete16() will be non-zero +** regardless of whether or not the input SQL is complete. +** +** Requirements: [H10511] [H10512] +** +** The input to [sqlite3_complete()] must be a zero-terminated +** UTF-8 string. +** +** The input to [sqlite3_complete16()] must be a zero-terminated +** UTF-16 string in native byte order. +*/ +SQLITE_API int sqlite3_complete(const char *sql); +SQLITE_API int sqlite3_complete16(const void *sql); + +/* +** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors {H12310} +** +** This routine sets a callback function that might be invoked whenever +** an attempt is made to open a database table that another thread +** or process has locked. +** +** If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] +** is returned immediately upon encountering the lock. If the busy callback +** is not NULL, then the callback will be invoked with two arguments. +** +** The first argument to the handler is a copy of the void* pointer which +** is the third argument to sqlite3_busy_handler(). The second argument to +** the handler callback is the number of times that the busy handler has +** been invoked for this locking event. If the +** busy callback returns 0, then no additional attempts are made to +** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned. +** If the callback returns non-zero, then another attempt +** is made to open the database for reading and the cycle repeats. +** +** The presence of a busy handler does not guarantee that it will be invoked +** when there is lock contention. If SQLite determines that invoking the busy +** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY] +** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler. +** Consider a scenario where one process is holding a read lock that +** it is trying to promote to a reserved lock and +** a second process is holding a reserved lock that it is trying +** to promote to an exclusive lock. The first process cannot proceed +** because it is blocked by the second and the second process cannot +** proceed because it is blocked by the first. If both processes +** invoke the busy handlers, neither will make any progress. Therefore, +** SQLite returns [SQLITE_BUSY] for the first process, hoping that this +** will induce the first process to release its read lock and allow +** the second process to proceed. +** +** The default busy callback is NULL. +** +** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] +** when SQLite is in the middle of a large transaction where all the +** changes will not fit into the in-memory cache. SQLite will +** already hold a RESERVED lock on the database file, but it needs +** to promote this lock to EXCLUSIVE so that it can spill cache +** pages into the database file without harm to concurrent +** readers. If it is unable to promote the lock, then the in-memory +** cache will be left in an inconsistent state and so the error +** code is promoted from the relatively benign [SQLITE_BUSY] to +** the more severe [SQLITE_IOERR_BLOCKED]. This error code promotion +** forces an automatic rollback of the changes. See the +** +** CorruptionFollowingBusyError wiki page for a discussion of why +** this is important. +** +** There can only be a single busy handler defined for each +** [database connection]. Setting a new busy handler clears any +** previously set handler. Note that calling [sqlite3_busy_timeout()] +** will also set or clear the busy handler. +** +** The busy callback should not take any actions which modify the +** database connection that invoked the busy handler. Any such actions +** result in undefined behavior. +** +** Requirements: +** [H12311] [H12312] [H12314] [H12316] [H12318] +** +** A busy handler must not close the database connection +** or [prepared statement] that invoked the busy handler. +*/ +SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); + +/* +** CAPI3REF: Set A Busy Timeout {H12340} +** +** This routine sets a [sqlite3_busy_handler | busy handler] that sleeps +** for a specified amount of time when a table is locked. The handler +** will sleep multiple times until at least "ms" milliseconds of sleeping +** have accumulated. {H12343} After "ms" milliseconds of sleeping, +** the handler returns 0 which causes [sqlite3_step()] to return +** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]. +** +** Calling this routine with an argument less than or equal to zero +** turns off all busy handlers. +** +** There can only be a single busy handler for a particular +** [database connection] any any given moment. If another busy handler +** was defined (using [sqlite3_busy_handler()]) prior to calling +** this routine, that other busy handler is cleared. +** +** Requirements: +** [H12341] [H12343] [H12344] +*/ +SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); + +/* +** CAPI3REF: Convenience Routines For Running Queries {H12370} +** +** Definition: A result table is memory data structure created by the +** [sqlite3_get_table()] interface. A result table records the +** complete query results from one or more queries. +** +** The table conceptually has a number of rows and columns. But +** these numbers are not part of the result table itself. These +** numbers are obtained separately. Let N be the number of rows +** and M be the number of columns. +** +** A result table is an array of pointers to zero-terminated UTF-8 strings. +** There are (N+1)*M elements in the array. The first M pointers point +** to zero-terminated strings that contain the names of the columns. +** The remaining entries all point to query results. NULL values result +** in NULL pointers. All other values are in their UTF-8 zero-terminated +** string representation as returned by [sqlite3_column_text()]. +** +** A result table might consist of one or more memory allocations. +** It is not safe to pass a result table directly to [sqlite3_free()]. +** A result table should be deallocated using [sqlite3_free_table()]. +** +** As an example of the result table format, suppose a query result +** is as follows: +** +**
+**        Name        | Age
+**        -----------------------
+**        Alice       | 43
+**        Bob         | 28
+**        Cindy       | 21
+** 
+** +** There are two column (M==2) and three rows (N==3). Thus the +** result table has 8 entries. Suppose the result table is stored +** in an array names azResult. Then azResult holds this content: +** +**
+**        azResult[0] = "Name";
+**        azResult[1] = "Age";
+**        azResult[2] = "Alice";
+**        azResult[3] = "43";
+**        azResult[4] = "Bob";
+**        azResult[5] = "28";
+**        azResult[6] = "Cindy";
+**        azResult[7] = "21";
+** 
+** +** The sqlite3_get_table() function evaluates one or more +** semicolon-separated SQL statements in the zero-terminated UTF-8 +** string of its 2nd parameter. It returns a result table to the +** pointer given in its 3rd parameter. +** +** After the calling function has finished using the result, it should +** pass the pointer to the result table to sqlite3_free_table() in order to +** release the memory that was malloced. Because of the way the +** [sqlite3_malloc()] happens within sqlite3_get_table(), the calling +** function must not try to call [sqlite3_free()] directly. Only +** [sqlite3_free_table()] is able to release the memory properly and safely. +** +** The sqlite3_get_table() interface is implemented as a wrapper around +** [sqlite3_exec()]. The sqlite3_get_table() routine does not have access +** to any internal data structures of SQLite. It uses only the public +** interface defined here. As a consequence, errors that occur in the +** wrapper layer outside of the internal [sqlite3_exec()] call are not +** reflected in subsequent calls to [sqlite3_errcode()] or [sqlite3_errmsg()]. +** +** Requirements: +** [H12371] [H12373] [H12374] [H12376] [H12379] [H12382] +*/ +SQLITE_API int sqlite3_get_table( + sqlite3 *db, /* An open database */ + const char *zSql, /* SQL to be evaluated */ + char ***pazResult, /* Results of the query */ + int *pnRow, /* Number of result rows written here */ + int *pnColumn, /* Number of result columns written here */ + char **pzErrmsg /* Error msg written here */ +); +SQLITE_API void sqlite3_free_table(char **result); + +/* +** CAPI3REF: Formatted String Printing Functions {H17400} +** +** These routines are work-alikes of the "printf()" family of functions +** from the standard C library. +** +** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their +** results into memory obtained from [sqlite3_malloc()]. +** The strings returned by these two routines should be +** released by [sqlite3_free()]. Both routines return a +** NULL pointer if [sqlite3_malloc()] is unable to allocate enough +** memory to hold the resulting string. +** +** In sqlite3_snprintf() routine is similar to "snprintf()" from +** the standard C library. The result is written into the +** buffer supplied as the second parameter whose size is given by +** the first parameter. Note that the order of the +** first two parameters is reversed from snprintf(). This is an +** historical accident that cannot be fixed without breaking +** backwards compatibility. Note also that sqlite3_snprintf() +** returns a pointer to its buffer instead of the number of +** characters actually written into the buffer. We admit that +** the number of characters written would be a more useful return +** value but we cannot change the implementation of sqlite3_snprintf() +** now without breaking compatibility. +** +** As long as the buffer size is greater than zero, sqlite3_snprintf() +** guarantees that the buffer is always zero-terminated. The first +** parameter "n" is the total size of the buffer, including space for +** the zero terminator. So the longest string that can be completely +** written will be n-1 characters. +** +** These routines all implement some additional formatting +** options that are useful for constructing SQL statements. +** All of the usual printf() formatting options apply. In addition, there +** is are "%q", "%Q", and "%z" options. +** +** The %q option works like %s in that it substitutes a null-terminated +** string from the argument list. But %q also doubles every '\'' character. +** %q is designed for use inside a string literal. By doubling each '\'' +** character it escapes that character and allows it to be inserted into +** the string. +** +** For example, assume the string variable zText contains text as follows: +** +**
+**  char *zText = "It's a happy day!";
+** 
+** +** One can use this text in an SQL statement as follows: +** +**
+**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
+**  sqlite3_exec(db, zSQL, 0, 0, 0);
+**  sqlite3_free(zSQL);
+** 
+** +** Because the %q format string is used, the '\'' character in zText +** is escaped and the SQL generated is as follows: +** +**
+**  INSERT INTO table1 VALUES('It''s a happy day!')
+** 
+** +** This is correct. Had we used %s instead of %q, the generated SQL +** would have looked like this: +** +**
+**  INSERT INTO table1 VALUES('It's a happy day!');
+** 
+** +** This second example is an SQL syntax error. As a general rule you should +** always use %q instead of %s when inserting text into a string literal. +** +** The %Q option works like %q except it also adds single quotes around +** the outside of the total string. Additionally, if the parameter in the +** argument list is a NULL pointer, %Q substitutes the text "NULL" (without +** single quotes) in place of the %Q option. So, for example, one could say: +** +**
+**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
+**  sqlite3_exec(db, zSQL, 0, 0, 0);
+**  sqlite3_free(zSQL);
+** 
+** +** The code above will render a correct SQL statement in the zSQL +** variable even if the zText variable is a NULL pointer. +** +** The "%z" formatting option works exactly like "%s" with the +** addition that after the string has been read and copied into +** the result, [sqlite3_free()] is called on the input string. {END} +** +** Requirements: +** [H17403] [H17406] [H17407] +*/ +SQLITE_API char *sqlite3_mprintf(const char*,...); +SQLITE_API char *sqlite3_vmprintf(const char*, va_list); +SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); + +/* +** CAPI3REF: Memory Allocation Subsystem {H17300} +** +** The SQLite core uses these three routines for all of its own +** internal memory allocation needs. "Core" in the previous sentence +** does not include operating-system specific VFS implementation. The +** Windows VFS uses native malloc() and free() for some operations. +** +** The sqlite3_malloc() routine returns a pointer to a block +** of memory at least N bytes in length, where N is the parameter. +** If sqlite3_malloc() is unable to obtain sufficient free +** memory, it returns a NULL pointer. If the parameter N to +** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns +** a NULL pointer. +** +** Calling sqlite3_free() with a pointer previously returned +** by sqlite3_malloc() or sqlite3_realloc() releases that memory so +** that it might be reused. The sqlite3_free() routine is +** a no-op if is called with a NULL pointer. Passing a NULL pointer +** to sqlite3_free() is harmless. After being freed, memory +** should neither be read nor written. Even reading previously freed +** memory might result in a segmentation fault or other severe error. +** Memory corruption, a segmentation fault, or other severe error +** might result if sqlite3_free() is called with a non-NULL pointer that +** was not obtained from sqlite3_malloc() or sqlite3_realloc(). +** +** The sqlite3_realloc() interface attempts to resize a +** prior memory allocation to be at least N bytes, where N is the +** second parameter. The memory allocation to be resized is the first +** parameter. If the first parameter to sqlite3_realloc() +** is a NULL pointer then its behavior is identical to calling +** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc(). +** If the second parameter to sqlite3_realloc() is zero or +** negative then the behavior is exactly the same as calling +** sqlite3_free(P) where P is the first parameter to sqlite3_realloc(). +** sqlite3_realloc() returns a pointer to a memory allocation +** of at least N bytes in size or NULL if sufficient memory is unavailable. +** If M is the size of the prior allocation, then min(N,M) bytes +** of the prior allocation are copied into the beginning of buffer returned +** by sqlite3_realloc() and the prior allocation is freed. +** If sqlite3_realloc() returns NULL, then the prior allocation +** is not freed. +** +** The memory returned by sqlite3_malloc() and sqlite3_realloc() +** is always aligned to at least an 8 byte boundary. {END} +** +** The default implementation of the memory allocation subsystem uses +** the malloc(), realloc() and free() provided by the standard C library. +** {H17382} However, if SQLite is compiled with the +** SQLITE_MEMORY_SIZE=NNN C preprocessor macro (where NNN +** is an integer), then SQLite create a static array of at least +** NNN bytes in size and uses that array for all of its dynamic +** memory allocation needs. {END} Additional memory allocator options +** may be added in future releases. +** +** In SQLite version 3.5.0 and 3.5.1, it was possible to define +** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in +** implementation of these routines to be omitted. That capability +** is no longer provided. Only built-in memory allocators can be used. +** +** The Windows OS interface layer calls +** the system malloc() and free() directly when converting +** filenames between the UTF-8 encoding used by SQLite +** and whatever filename encoding is used by the particular Windows +** installation. Memory allocation errors are detected, but +** they are reported back as [SQLITE_CANTOPEN] or +** [SQLITE_IOERR] rather than [SQLITE_NOMEM]. +** +** Requirements: +** [H17303] [H17304] [H17305] [H17306] [H17310] [H17312] [H17315] [H17318] +** [H17321] [H17322] [H17323] +** +** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()] +** must be either NULL or else pointers obtained from a prior +** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have +** not yet been released. +** +** The application must not read or write any part of +** a block of memory after it has been released using +** [sqlite3_free()] or [sqlite3_realloc()]. +*/ +SQLITE_API void *sqlite3_malloc(int); +SQLITE_API void *sqlite3_realloc(void*, int); +SQLITE_API void sqlite3_free(void*); + +/* +** CAPI3REF: Memory Allocator Statistics {H17370} +** +** SQLite provides these two interfaces for reporting on the status +** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()] +** routines, which form the built-in memory allocation subsystem. +** +** Requirements: +** [H17371] [H17373] [H17374] [H17375] +*/ +SQLITE_API sqlite3_int64 sqlite3_memory_used(void); +SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag); + +/* +** CAPI3REF: Pseudo-Random Number Generator {H17390} +** +** SQLite contains a high-quality pseudo-random number generator (PRNG) used to +** select random [ROWID | ROWIDs] when inserting new records into a table that +** already uses the largest possible [ROWID]. The PRNG is also used for +** the build-in random() and randomblob() SQL functions. This interface allows +** applications to access the same PRNG for other purposes. +** +** A call to this routine stores N bytes of randomness into buffer P. +** +** The first time this routine is invoked (either internally or by +** the application) the PRNG is seeded using randomness obtained +** from the xRandomness method of the default [sqlite3_vfs] object. +** On all subsequent invocations, the pseudo-randomness is generated +** internally and without recourse to the [sqlite3_vfs] xRandomness +** method. +** +** Requirements: +** [H17392] +*/ +SQLITE_API void sqlite3_randomness(int N, void *P); + +/* +** CAPI3REF: Compile-Time Authorization Callbacks {H12500} +** +** This routine registers a authorizer callback with a particular +** [database connection], supplied in the first argument. +** The authorizer callback is invoked as SQL statements are being compiled +** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()], +** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. At various +** points during the compilation process, as logic is being created +** to perform various actions, the authorizer callback is invoked to +** see if those actions are allowed. The authorizer callback should +** return [SQLITE_OK] to allow the action, [SQLITE_IGNORE] to disallow the +** specific action but allow the SQL statement to continue to be +** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be +** rejected with an error. If the authorizer callback returns +** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY] +** then the [sqlite3_prepare_v2()] or equivalent call that triggered +** the authorizer will fail with an error message. +** +** When the callback returns [SQLITE_OK], that means the operation +** requested is ok. When the callback returns [SQLITE_DENY], the +** [sqlite3_prepare_v2()] or equivalent call that triggered the +** authorizer will fail with an error message explaining that +** access is denied. +** +** The first parameter to the authorizer callback is a copy of the third +** parameter to the sqlite3_set_authorizer() interface. The second parameter +** to the callback is an integer [SQLITE_COPY | action code] that specifies +** the particular action to be authorized. The third through sixth parameters +** to the callback are zero-terminated strings that contain additional +** details about the action to be authorized. +** +** If the action code is [SQLITE_READ] +** and the callback returns [SQLITE_IGNORE] then the +** [prepared statement] statement is constructed to substitute +** a NULL value in place of the table column that would have +** been read if [SQLITE_OK] had been returned. The [SQLITE_IGNORE] +** return can be used to deny an untrusted user access to individual +** columns of a table. +** If the action code is [SQLITE_DELETE] and the callback returns +** [SQLITE_IGNORE] then the [DELETE] operation proceeds but the +** [truncate optimization] is disabled and all rows are deleted individually. +** +** An authorizer is used when [sqlite3_prepare | preparing] +** SQL statements from an untrusted source, to ensure that the SQL statements +** do not try to access data they are not allowed to see, or that they do not +** try to execute malicious statements that damage the database. For +** example, an application may allow a user to enter arbitrary +** SQL queries for evaluation by a database. But the application does +** not want the user to be able to make arbitrary changes to the +** database. An authorizer could then be put in place while the +** user-entered SQL is being [sqlite3_prepare | prepared] that +** disallows everything except [SELECT] statements. +** +** Applications that need to process SQL from untrusted sources +** might also consider lowering resource limits using [sqlite3_limit()] +** and limiting database size using the [max_page_count] [PRAGMA] +** in addition to using an authorizer. +** +** Only a single authorizer can be in place on a database connection +** at a time. Each call to sqlite3_set_authorizer overrides the +** previous call. Disable the authorizer by installing a NULL callback. +** The authorizer is disabled by default. +** +** The authorizer callback must not do anything that will modify +** the database connection that invoked the authorizer callback. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** When [sqlite3_prepare_v2()] is used to prepare a statement, the +** statement might be re-prepared during [sqlite3_step()] due to a +** schema change. Hence, the application should ensure that the +** correct authorizer callback remains in place during the [sqlite3_step()]. +** +** Note that the authorizer callback is invoked only during +** [sqlite3_prepare()] or its variants. Authorization is not +** performed during statement evaluation in [sqlite3_step()], unless +** as stated in the previous paragraph, sqlite3_step() invokes +** sqlite3_prepare_v2() to reprepare a statement after a schema change. +** +** Requirements: +** [H12501] [H12502] [H12503] [H12504] [H12505] [H12506] [H12507] [H12510] +** [H12511] [H12512] [H12520] [H12521] [H12522] +*/ +SQLITE_API int sqlite3_set_authorizer( + sqlite3*, + int (*xAuth)(void*,int,const char*,const char*,const char*,const char*), + void *pUserData +); + +/* +** CAPI3REF: Authorizer Return Codes {H12590} +** +** The [sqlite3_set_authorizer | authorizer callback function] must +** return either [SQLITE_OK] or one of these two constants in order +** to signal SQLite whether or not the action is permitted. See the +** [sqlite3_set_authorizer | authorizer documentation] for additional +** information. +*/ +#define SQLITE_DENY 1 /* Abort the SQL statement with an error */ +#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ + +/* +** CAPI3REF: Authorizer Action Codes {H12550} +** +** The [sqlite3_set_authorizer()] interface registers a callback function +** that is invoked to authorize certain SQL statement actions. The +** second parameter to the callback is an integer code that specifies +** what action is being authorized. These are the integer action codes that +** the authorizer callback may be passed. +** +** These action code values signify what kind of operation is to be +** authorized. The 3rd and 4th parameters to the authorization +** callback function will be parameters or NULL depending on which of these +** codes is used as the second parameter. The 5th parameter to the +** authorizer callback is the name of the database ("main", "temp", +** etc.) if applicable. The 6th parameter to the authorizer callback +** is the name of the inner-most trigger or view that is responsible for +** the access attempt or NULL if this access attempt is directly from +** top-level SQL code. +** +** Requirements: +** [H12551] [H12552] [H12553] [H12554] +*/ +/******************************************* 3rd ************ 4th ***********/ +#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */ +#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */ +#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */ +#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */ +#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */ +#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */ +#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */ +#define SQLITE_CREATE_VIEW 8 /* View Name NULL */ +#define SQLITE_DELETE 9 /* Table Name NULL */ +#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */ +#define SQLITE_DROP_TABLE 11 /* Table Name NULL */ +#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */ +#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */ +#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */ +#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */ +#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */ +#define SQLITE_DROP_VIEW 17 /* View Name NULL */ +#define SQLITE_INSERT 18 /* Table Name NULL */ +#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */ +#define SQLITE_READ 20 /* Table Name Column Name */ +#define SQLITE_SELECT 21 /* NULL NULL */ +#define SQLITE_TRANSACTION 22 /* Operation NULL */ +#define SQLITE_UPDATE 23 /* Table Name Column Name */ +#define SQLITE_ATTACH 24 /* Filename NULL */ +#define SQLITE_DETACH 25 /* Database Name NULL */ +#define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */ +#define SQLITE_REINDEX 27 /* Index Name NULL */ +#define SQLITE_ANALYZE 28 /* Table Name NULL */ +#define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */ +#define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */ +#define SQLITE_FUNCTION 31 /* NULL Function Name */ +#define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */ +#define SQLITE_COPY 0 /* No longer used */ + +/* +** CAPI3REF: Tracing And Profiling Functions {H12280} +** EXPERIMENTAL +** +** These routines register callback functions that can be used for +** tracing and profiling the execution of SQL statements. +** +** The callback function registered by sqlite3_trace() is invoked at +** various times when an SQL statement is being run by [sqlite3_step()]. +** The callback returns a UTF-8 rendering of the SQL statement text +** as the statement first begins executing. Additional callbacks occur +** as each triggered subprogram is entered. The callbacks for triggers +** contain a UTF-8 SQL comment that identifies the trigger. +** +** The callback function registered by sqlite3_profile() is invoked +** as each SQL statement finishes. The profile callback contains +** the original statement text and an estimate of wall-clock time +** of how long that statement took to run. +** +** Requirements: +** [H12281] [H12282] [H12283] [H12284] [H12285] [H12287] [H12288] [H12289] +** [H12290] +*/ +SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); +SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*, + void(*xProfile)(void*,const char*,sqlite3_uint64), void*); + +/* +** CAPI3REF: Query Progress Callbacks {H12910} +** +** This routine configures a callback function - the +** progress callback - that is invoked periodically during long +** running calls to [sqlite3_exec()], [sqlite3_step()] and +** [sqlite3_get_table()]. An example use for this +** interface is to keep a GUI updated during a large query. +** +** If the progress callback returns non-zero, the operation is +** interrupted. This feature can be used to implement a +** "Cancel" button on a GUI progress dialog box. +** +** The progress handler must not do anything that will modify +** the database connection that invoked the progress handler. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** Requirements: +** [H12911] [H12912] [H12913] [H12914] [H12915] [H12916] [H12917] [H12918] +** +*/ +SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); + +/* +** CAPI3REF: Opening A New Database Connection {H12700} +** +** These routines open an SQLite database file whose name is given by the +** filename argument. The filename argument is interpreted as UTF-8 for +** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte +** order for sqlite3_open16(). A [database connection] handle is usually +** returned in *ppDb, even if an error occurs. The only exception is that +** if SQLite is unable to allocate memory to hold the [sqlite3] object, +** a NULL will be written into *ppDb instead of a pointer to the [sqlite3] +** object. If the database is opened (and/or created) successfully, then +** [SQLITE_OK] is returned. Otherwise an [error code] is returned. The +** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain +** an English language description of the error. +** +** The default encoding for the database will be UTF-8 if +** sqlite3_open() or sqlite3_open_v2() is called and +** UTF-16 in the native byte order if sqlite3_open16() is used. +** +** Whether or not an error occurs when it is opened, resources +** associated with the [database connection] handle should be released by +** passing it to [sqlite3_close()] when it is no longer required. +** +** The sqlite3_open_v2() interface works like sqlite3_open() +** except that it accepts two additional parameters for additional control +** over the new database connection. The flags parameter can take one of +** the following three values, optionally combined with the +** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE], +** and/or [SQLITE_OPEN_PRIVATECACHE] flags: +** +**
+**
[SQLITE_OPEN_READONLY]
+**
The database is opened in read-only mode. If the database does not +** already exist, an error is returned.
+** +**
[SQLITE_OPEN_READWRITE]
+**
The database is opened for reading and writing if possible, or reading +** only if the file is write protected by the operating system. In either +** case the database must already exist, otherwise an error is returned.
+** +**
[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
+**
The database is opened for reading and writing, and is creates it if +** it does not already exist. This is the behavior that is always used for +** sqlite3_open() and sqlite3_open16().
+**
+** +** If the 3rd parameter to sqlite3_open_v2() is not one of the +** combinations shown above or one of the combinations shown above combined +** with the [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], +** [SQLITE_OPEN_SHAREDCACHE] and/or [SQLITE_OPEN_SHAREDCACHE] flags, +** then the behavior is undefined. +** +** If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection +** opens in the multi-thread [threading mode] as long as the single-thread +** mode has not been set at compile-time or start-time. If the +** [SQLITE_OPEN_FULLMUTEX] flag is set then the database connection opens +** in the serialized [threading mode] unless single-thread was +** previously selected at compile-time or start-time. +** The [SQLITE_OPEN_SHAREDCACHE] flag causes the database connection to be +** eligible to use [shared cache mode], regardless of whether or not shared +** cache is enabled using [sqlite3_enable_shared_cache()]. The +** [SQLITE_OPEN_PRIVATECACHE] flag causes the database connection to not +** participate in [shared cache mode] even if it is enabled. +** +** If the filename is ":memory:", then a private, temporary in-memory database +** is created for the connection. This in-memory database will vanish when +** the database connection is closed. Future versions of SQLite might +** make use of additional special filenames that begin with the ":" character. +** It is recommended that when a database filename actually does begin with +** a ":" character you should prefix the filename with a pathname such as +** "./" to avoid ambiguity. +** +** If the filename is an empty string, then a private, temporary +** on-disk database will be created. This private database will be +** automatically deleted as soon as the database connection is closed. +** +** The fourth parameter to sqlite3_open_v2() is the name of the +** [sqlite3_vfs] object that defines the operating system interface that +** the new database connection should use. If the fourth parameter is +** a NULL pointer then the default [sqlite3_vfs] object is used. +** +** Note to Windows users: The encoding used for the filename argument +** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever +** codepage is currently defined. Filenames containing international +** characters must be converted to UTF-8 prior to passing them into +** sqlite3_open() or sqlite3_open_v2(). +** +** Requirements: +** [H12701] [H12702] [H12703] [H12704] [H12706] [H12707] [H12709] [H12711] +** [H12712] [H12713] [H12714] [H12717] [H12719] [H12721] [H12723] +*/ +SQLITE_API int sqlite3_open( + const char *filename, /* Database filename (UTF-8) */ + sqlite3 **ppDb /* OUT: SQLite db handle */ +); +SQLITE_API int sqlite3_open16( + const void *filename, /* Database filename (UTF-16) */ + sqlite3 **ppDb /* OUT: SQLite db handle */ +); +SQLITE_API int sqlite3_open_v2( + const char *filename, /* Database filename (UTF-8) */ + sqlite3 **ppDb, /* OUT: SQLite db handle */ + int flags, /* Flags */ + const char *zVfs /* Name of VFS module to use */ +); + +/* +** CAPI3REF: Error Codes And Messages {H12800} +** +** The sqlite3_errcode() interface returns the numeric [result code] or +** [extended result code] for the most recent failed sqlite3_* API call +** associated with a [database connection]. If a prior API call failed +** but the most recent API call succeeded, the return value from +** sqlite3_errcode() is undefined. The sqlite3_extended_errcode() +** interface is the same except that it always returns the +** [extended result code] even when extended result codes are +** disabled. +** +** The sqlite3_errmsg() and sqlite3_errmsg16() return English-language +** text that describes the error, as either UTF-8 or UTF-16 respectively. +** Memory to hold the error message string is managed internally. +** The application does not need to worry about freeing the result. +** However, the error string might be overwritten or deallocated by +** subsequent calls to other SQLite interface functions. +** +** When the serialized [threading mode] is in use, it might be the +** case that a second error occurs on a separate thread in between +** the time of the first error and the call to these interfaces. +** When that happens, the second error will be reported since these +** interfaces always report the most recent result. To avoid +** this, each thread can obtain exclusive use of the [database connection] D +** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning +** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after +** all calls to the interfaces listed here are completed. +** +** If an interface fails with SQLITE_MISUSE, that means the interface +** was invoked incorrectly by the application. In that case, the +** error code and message may or may not be set. +** +** Requirements: +** [H12801] [H12802] [H12803] [H12807] [H12808] [H12809] +*/ +SQLITE_API int sqlite3_errcode(sqlite3 *db); +SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); +SQLITE_API const char *sqlite3_errmsg(sqlite3*); +SQLITE_API const void *sqlite3_errmsg16(sqlite3*); + +/* +** CAPI3REF: SQL Statement Object {H13000} +** KEYWORDS: {prepared statement} {prepared statements} +** +** An instance of this object represents a single SQL statement. +** This object is variously known as a "prepared statement" or a +** "compiled SQL statement" or simply as a "statement". +** +** The life of a statement object goes something like this: +** +**
    +**
  1. Create the object using [sqlite3_prepare_v2()] or a related +** function. +**
  2. Bind values to [host parameters] using the sqlite3_bind_*() +** interfaces. +**
  3. Run the SQL by calling [sqlite3_step()] one or more times. +**
  4. Reset the statement using [sqlite3_reset()] then go back +** to step 2. Do this zero or more times. +**
  5. Destroy the object using [sqlite3_finalize()]. +**
+** +** Refer to documentation on individual methods above for additional +** information. +*/ +typedef struct sqlite3_stmt sqlite3_stmt; + +/* +** CAPI3REF: Run-time Limits {H12760} +** +** This interface allows the size of various constructs to be limited +** on a connection by connection basis. The first parameter is the +** [database connection] whose limit is to be set or queried. The +** second parameter is one of the [limit categories] that define a +** class of constructs to be size limited. The third parameter is the +** new limit for that construct. The function returns the old limit. +** +** If the new limit is a negative number, the limit is unchanged. +** For the limit category of SQLITE_LIMIT_XYZ there is a +** [limits | hard upper bound] +** set by a compile-time C preprocessor macro named +** [limits | SQLITE_MAX_XYZ]. +** (The "_LIMIT_" in the name is changed to "_MAX_".) +** Attempts to increase a limit above its hard upper bound are +** silently truncated to the hard upper limit. +** +** Run time limits are intended for use in applications that manage +** both their own internal database and also databases that are controlled +** by untrusted external sources. An example application might be a +** web browser that has its own databases for storing history and +** separate databases controlled by JavaScript applications downloaded +** off the Internet. The internal databases can be given the +** large, default limits. Databases managed by external sources can +** be given much smaller limits designed to prevent a denial of service +** attack. Developers might also want to use the [sqlite3_set_authorizer()] +** interface to further control untrusted SQL. The size of the database +** created by an untrusted script can be contained using the +** [max_page_count] [PRAGMA]. +** +** New run-time limit categories may be added in future releases. +** +** Requirements: +** [H12762] [H12766] [H12769] +*/ +SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal); + +/* +** CAPI3REF: Run-Time Limit Categories {H12790} +** KEYWORDS: {limit category} {limit categories} +** +** These constants define various performance limits +** that can be lowered at run-time using [sqlite3_limit()]. +** The synopsis of the meanings of the various limits is shown below. +** Additional information is available at [limits | Limits in SQLite]. +** +**
+**
SQLITE_LIMIT_LENGTH
+**
The maximum size of any string or BLOB or table row.
+** +**
SQLITE_LIMIT_SQL_LENGTH
+**
The maximum length of an SQL statement.
+** +**
SQLITE_LIMIT_COLUMN
+**
The maximum number of columns in a table definition or in the +** result set of a [SELECT] or the maximum number of columns in an index +** or in an ORDER BY or GROUP BY clause.
+** +**
SQLITE_LIMIT_EXPR_DEPTH
+**
The maximum depth of the parse tree on any expression.
+** +**
SQLITE_LIMIT_COMPOUND_SELECT
+**
The maximum number of terms in a compound SELECT statement.
+** +**
SQLITE_LIMIT_VDBE_OP
+**
The maximum number of instructions in a virtual machine program +** used to implement an SQL statement.
+** +**
SQLITE_LIMIT_FUNCTION_ARG
+**
The maximum number of arguments on a function.
+** +**
SQLITE_LIMIT_ATTACHED
+**
The maximum number of [ATTACH | attached databases].
+** +**
SQLITE_LIMIT_LIKE_PATTERN_LENGTH
+**
The maximum length of the pattern argument to the [LIKE] or +** [GLOB] operators.
+** +**
SQLITE_LIMIT_VARIABLE_NUMBER
+**
The maximum number of variables in an SQL statement that can +** be bound.
+** +**
SQLITE_LIMIT_TRIGGER_DEPTH
+**
The maximum depth of recursion for triggers.
+**
+*/ +#define SQLITE_LIMIT_LENGTH 0 +#define SQLITE_LIMIT_SQL_LENGTH 1 +#define SQLITE_LIMIT_COLUMN 2 +#define SQLITE_LIMIT_EXPR_DEPTH 3 +#define SQLITE_LIMIT_COMPOUND_SELECT 4 +#define SQLITE_LIMIT_VDBE_OP 5 +#define SQLITE_LIMIT_FUNCTION_ARG 6 +#define SQLITE_LIMIT_ATTACHED 7 +#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8 +#define SQLITE_LIMIT_VARIABLE_NUMBER 9 +#define SQLITE_LIMIT_TRIGGER_DEPTH 10 + +/* +** CAPI3REF: Compiling An SQL Statement {H13010} +** KEYWORDS: {SQL statement compiler} +** +** To execute an SQL query, it must first be compiled into a byte-code +** program using one of these routines. +** +** The first argument, "db", is a [database connection] obtained from a +** prior successful call to [sqlite3_open()], [sqlite3_open_v2()] or +** [sqlite3_open16()]. The database connection must not have been closed. +** +** The second argument, "zSql", is the statement to be compiled, encoded +** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2() +** interfaces use UTF-8, and sqlite3_prepare16() and sqlite3_prepare16_v2() +** use UTF-16. +** +** If the nByte argument is less than zero, then zSql is read up to the +** first zero terminator. If nByte is non-negative, then it is the maximum +** number of bytes read from zSql. When nByte is non-negative, the +** zSql string ends at either the first '\000' or '\u0000' character or +** the nByte-th byte, whichever comes first. If the caller knows +** that the supplied string is nul-terminated, then there is a small +** performance advantage to be gained by passing an nByte parameter that +** is equal to the number of bytes in the input string including +** the nul-terminator bytes. +** +** If pzTail is not NULL then *pzTail is made to point to the first byte +** past the end of the first SQL statement in zSql. These routines only +** compile the first statement in zSql, so *pzTail is left pointing to +** what remains uncompiled. +** +** *ppStmt is left pointing to a compiled [prepared statement] that can be +** executed using [sqlite3_step()]. If there is an error, *ppStmt is set +** to NULL. If the input text contains no SQL (if the input is an empty +** string or a comment) then *ppStmt is set to NULL. +** The calling procedure is responsible for deleting the compiled +** SQL statement using [sqlite3_finalize()] after it has finished with it. +** ppStmt may not be NULL. +** +** On success, [SQLITE_OK] is returned, otherwise an [error code] is returned. +** +** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are +** recommended for all new programs. The two older interfaces are retained +** for backwards compatibility, but their use is discouraged. +** In the "v2" interfaces, the prepared statement +** that is returned (the [sqlite3_stmt] object) contains a copy of the +** original SQL text. This causes the [sqlite3_step()] interface to +** behave a differently in two ways: +** +**
    +**
  1. +** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it +** always used to do, [sqlite3_step()] will automatically recompile the SQL +** statement and try to run it again. If the schema has changed in +** a way that makes the statement no longer valid, [sqlite3_step()] will still +** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is +** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the +** error go away. Note: use [sqlite3_errmsg()] to find the text +** of the parsing error that results in an [SQLITE_SCHEMA] return. +**
  2. +** +**
  3. +** When an error occurs, [sqlite3_step()] will return one of the detailed +** [error codes] or [extended error codes]. The legacy behavior was that +** [sqlite3_step()] would only return a generic [SQLITE_ERROR] result code +** and you would have to make a second call to [sqlite3_reset()] in order +** to find the underlying cause of the problem. With the "v2" prepare +** interfaces, the underlying reason for the error is returned immediately. +**
  4. +**
+** +** Requirements: +** [H13011] [H13012] [H13013] [H13014] [H13015] [H13016] [H13019] [H13021] +** +*/ +SQLITE_API int sqlite3_prepare( + sqlite3 *db, /* Database handle */ + const char *zSql, /* SQL statement, UTF-8 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const char **pzTail /* OUT: Pointer to unused portion of zSql */ +); +SQLITE_API int sqlite3_prepare_v2( + sqlite3 *db, /* Database handle */ + const char *zSql, /* SQL statement, UTF-8 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const char **pzTail /* OUT: Pointer to unused portion of zSql */ +); +SQLITE_API int sqlite3_prepare16( + sqlite3 *db, /* Database handle */ + const void *zSql, /* SQL statement, UTF-16 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const void **pzTail /* OUT: Pointer to unused portion of zSql */ +); +SQLITE_API int sqlite3_prepare16_v2( + sqlite3 *db, /* Database handle */ + const void *zSql, /* SQL statement, UTF-16 encoded */ + int nByte, /* Maximum length of zSql in bytes. */ + sqlite3_stmt **ppStmt, /* OUT: Statement handle */ + const void **pzTail /* OUT: Pointer to unused portion of zSql */ +); + +/* +** CAPI3REF: Retrieving Statement SQL {H13100} +** +** This interface can be used to retrieve a saved copy of the original +** SQL text used to create a [prepared statement] if that statement was +** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()]. +** +** Requirements: +** [H13101] [H13102] [H13103] +*/ +SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Dynamically Typed Value Object {H15000} +** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value} +** +** SQLite uses the sqlite3_value object to represent all values +** that can be stored in a database table. SQLite uses dynamic typing +** for the values it stores. Values stored in sqlite3_value objects +** can be integers, floating point values, strings, BLOBs, or NULL. +** +** An sqlite3_value object may be either "protected" or "unprotected". +** Some interfaces require a protected sqlite3_value. Other interfaces +** will accept either a protected or an unprotected sqlite3_value. +** Every interface that accepts sqlite3_value arguments specifies +** whether or not it requires a protected sqlite3_value. +** +** The terms "protected" and "unprotected" refer to whether or not +** a mutex is held. A internal mutex is held for a protected +** sqlite3_value object but no mutex is held for an unprotected +** sqlite3_value object. If SQLite is compiled to be single-threaded +** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0) +** or if SQLite is run in one of reduced mutex modes +** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD] +** then there is no distinction between protected and unprotected +** sqlite3_value objects and they can be used interchangeably. However, +** for maximum code portability it is recommended that applications +** still make the distinction between between protected and unprotected +** sqlite3_value objects even when not strictly required. +** +** The sqlite3_value objects that are passed as parameters into the +** implementation of [application-defined SQL functions] are protected. +** The sqlite3_value object returned by +** [sqlite3_column_value()] is unprotected. +** Unprotected sqlite3_value objects may only be used with +** [sqlite3_result_value()] and [sqlite3_bind_value()]. +** The [sqlite3_value_blob | sqlite3_value_type()] family of +** interfaces require protected sqlite3_value objects. +*/ +typedef struct Mem sqlite3_value; + +/* +** CAPI3REF: SQL Function Context Object {H16001} +** +** The context in which an SQL function executes is stored in an +** sqlite3_context object. A pointer to an sqlite3_context object +** is always first parameter to [application-defined SQL functions]. +** The application-defined SQL function implementation will pass this +** pointer through into calls to [sqlite3_result_int | sqlite3_result()], +** [sqlite3_aggregate_context()], [sqlite3_user_data()], +** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()], +** and/or [sqlite3_set_auxdata()]. +*/ +typedef struct sqlite3_context sqlite3_context; + +/* +** CAPI3REF: Binding Values To Prepared Statements {H13500} +** KEYWORDS: {host parameter} {host parameters} {host parameter name} +** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding} +** +** In the SQL strings input to [sqlite3_prepare_v2()] and its variants, +** literals may be replaced by a [parameter] that matches one of following +** templates: +** +**
    +**
  • ? +**
  • ?NNN +**
  • :VVV +**
  • @VVV +**
  • $VVV +**
+** +** In the templates above, NNN represents an integer literal, +** and VVV represents an alphanumeric identifer. The values of these +** parameters (also called "host parameter names" or "SQL parameters") +** can be set using the sqlite3_bind_*() routines defined here. +** +** The first argument to the sqlite3_bind_*() routines is always +** a pointer to the [sqlite3_stmt] object returned from +** [sqlite3_prepare_v2()] or its variants. +** +** The second argument is the index of the SQL parameter to be set. +** The leftmost SQL parameter has an index of 1. When the same named +** SQL parameter is used more than once, second and subsequent +** occurrences have the same index as the first occurrence. +** The index for named parameters can be looked up using the +** [sqlite3_bind_parameter_index()] API if desired. The index +** for "?NNN" parameters is the value of NNN. +** The NNN value must be between 1 and the [sqlite3_limit()] +** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999). +** +** The third argument is the value to bind to the parameter. +** +** In those routines that have a fourth argument, its value is the +** number of bytes in the parameter. To be clear: the value is the +** number of bytes in the value, not the number of characters. +** If the fourth parameter is negative, the length of the string is +** the number of bytes up to the first zero terminator. +** +** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and +** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or +** string after SQLite has finished with it. If the fifth argument is +** the special value [SQLITE_STATIC], then SQLite assumes that the +** information is in static, unmanaged space and does not need to be freed. +** If the fifth argument has the value [SQLITE_TRANSIENT], then +** SQLite makes its own private copy of the data immediately, before +** the sqlite3_bind_*() routine returns. +** +** The sqlite3_bind_zeroblob() routine binds a BLOB of length N that +** is filled with zeroes. A zeroblob uses a fixed amount of memory +** (just an integer to hold its size) while it is being processed. +** Zeroblobs are intended to serve as placeholders for BLOBs whose +** content is later written using +** [sqlite3_blob_open | incremental BLOB I/O] routines. +** A negative value for the zeroblob results in a zero-length BLOB. +** +** The sqlite3_bind_*() routines must be called after +** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and +** before [sqlite3_step()]. +** Bindings are not cleared by the [sqlite3_reset()] routine. +** Unbound parameters are interpreted as NULL. +** +** These routines return [SQLITE_OK] on success or an error code if +** anything goes wrong. [SQLITE_RANGE] is returned if the parameter +** index is out of range. [SQLITE_NOMEM] is returned if malloc() fails. +** [SQLITE_MISUSE] might be returned if these routines are called on a +** virtual machine that is the wrong state or which has already been finalized. +** Detection of misuse is unreliable. Applications should not depend +** on SQLITE_MISUSE returns. SQLITE_MISUSE is intended to indicate a +** a logic error in the application. Future versions of SQLite might +** panic rather than return SQLITE_MISUSE. +** +** See also: [sqlite3_bind_parameter_count()], +** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()]. +** +** Requirements: +** [H13506] [H13509] [H13512] [H13515] [H13518] [H13521] [H13524] [H13527] +** [H13530] [H13533] [H13536] [H13539] [H13542] [H13545] [H13548] [H13551] +** +*/ +SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); +SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double); +SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int); +SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64); +SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int); +SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*)); +SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*)); +SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*); +SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n); + +/* +** CAPI3REF: Number Of SQL Parameters {H13600} +** +** This routine can be used to find the number of [SQL parameters] +** in a [prepared statement]. SQL parameters are tokens of the +** form "?", "?NNN", ":AAA", "$AAA", or "@AAA" that serve as +** placeholders for values that are [sqlite3_bind_blob | bound] +** to the parameters at a later time. +** +** This routine actually returns the index of the largest (rightmost) +** parameter. For all forms except ?NNN, this will correspond to the +** number of unique parameters. If parameters of the ?NNN are used, +** there may be gaps in the list. +** +** See also: [sqlite3_bind_blob|sqlite3_bind()], +** [sqlite3_bind_parameter_name()], and +** [sqlite3_bind_parameter_index()]. +** +** Requirements: +** [H13601] +*/ +SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*); + +/* +** CAPI3REF: Name Of A Host Parameter {H13620} +** +** This routine returns a pointer to the name of the n-th +** [SQL parameter] in a [prepared statement]. +** SQL parameters of the form "?NNN" or ":AAA" or "@AAA" or "$AAA" +** have a name which is the string "?NNN" or ":AAA" or "@AAA" or "$AAA" +** respectively. +** In other words, the initial ":" or "$" or "@" or "?" +** is included as part of the name. +** Parameters of the form "?" without a following integer have no name +** and are also referred to as "anonymous parameters". +** +** The first host parameter has an index of 1, not 0. +** +** If the value n is out of range or if the n-th parameter is +** nameless, then NULL is returned. The returned string is +** always in UTF-8 encoding even if the named parameter was +** originally specified as UTF-16 in [sqlite3_prepare16()] or +** [sqlite3_prepare16_v2()]. +** +** See also: [sqlite3_bind_blob|sqlite3_bind()], +** [sqlite3_bind_parameter_count()], and +** [sqlite3_bind_parameter_index()]. +** +** Requirements: +** [H13621] +*/ +SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int); + +/* +** CAPI3REF: Index Of A Parameter With A Given Name {H13640} +** +** Return the index of an SQL parameter given its name. The +** index value returned is suitable for use as the second +** parameter to [sqlite3_bind_blob|sqlite3_bind()]. A zero +** is returned if no matching parameter is found. The parameter +** name must be given in UTF-8 even if the original statement +** was prepared from UTF-16 text using [sqlite3_prepare16_v2()]. +** +** See also: [sqlite3_bind_blob|sqlite3_bind()], +** [sqlite3_bind_parameter_count()], and +** [sqlite3_bind_parameter_index()]. +** +** Requirements: +** [H13641] +*/ +SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName); + +/* +** CAPI3REF: Reset All Bindings On A Prepared Statement {H13660} +** +** Contrary to the intuition of many, [sqlite3_reset()] does not reset +** the [sqlite3_bind_blob | bindings] on a [prepared statement]. +** Use this routine to reset all host parameters to NULL. +** +** Requirements: +** [H13661] +*/ +SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*); + +/* +** CAPI3REF: Number Of Columns In A Result Set {H13710} +** +** Return the number of columns in the result set returned by the +** [prepared statement]. This routine returns 0 if pStmt is an SQL +** statement that does not return data (for example an [UPDATE]). +** +** Requirements: +** [H13711] +*/ +SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Column Names In A Result Set {H13720} +** +** These routines return the name assigned to a particular column +** in the result set of a [SELECT] statement. The sqlite3_column_name() +** interface returns a pointer to a zero-terminated UTF-8 string +** and sqlite3_column_name16() returns a pointer to a zero-terminated +** UTF-16 string. The first parameter is the [prepared statement] +** that implements the [SELECT] statement. The second parameter is the +** column number. The leftmost column is number 0. +** +** The returned string pointer is valid until either the [prepared statement] +** is destroyed by [sqlite3_finalize()] or until the next call to +** sqlite3_column_name() or sqlite3_column_name16() on the same column. +** +** If sqlite3_malloc() fails during the processing of either routine +** (for example during a conversion from UTF-8 to UTF-16) then a +** NULL pointer is returned. +** +** The name of a result column is the value of the "AS" clause for +** that column, if there is an AS clause. If there is no AS clause +** then the name of the column is unspecified and may change from +** one release of SQLite to the next. +** +** Requirements: +** [H13721] [H13723] [H13724] [H13725] [H13726] [H13727] +*/ +SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N); +SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N); + +/* +** CAPI3REF: Source Of Data In A Query Result {H13740} +** +** These routines provide a means to determine what column of what +** table in which database a result of a [SELECT] statement comes from. +** The name of the database or table or column can be returned as +** either a UTF-8 or UTF-16 string. The _database_ routines return +** the database name, the _table_ routines return the table name, and +** the origin_ routines return the column name. +** The returned string is valid until the [prepared statement] is destroyed +** using [sqlite3_finalize()] or until the same information is requested +** again in a different encoding. +** +** The names returned are the original un-aliased names of the +** database, table, and column. +** +** The first argument to the following calls is a [prepared statement]. +** These functions return information about the Nth column returned by +** the statement, where N is the second function argument. +** +** If the Nth column returned by the statement is an expression or +** subquery and is not a column value, then all of these functions return +** NULL. These routine might also return NULL if a memory allocation error +** occurs. Otherwise, they return the name of the attached database, table +** and column that query result column was extracted from. +** +** As with all other SQLite APIs, those postfixed with "16" return +** UTF-16 encoded strings, the other functions return UTF-8. {END} +** +** These APIs are only available if the library was compiled with the +** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined. +** +** {A13751} +** If two or more threads call one or more of these routines against the same +** prepared statement and column at the same time then the results are +** undefined. +** +** Requirements: +** [H13741] [H13742] [H13743] [H13744] [H13745] [H13746] [H13748] +** +** If two or more threads call one or more +** [sqlite3_column_database_name | column metadata interfaces] +** for the same [prepared statement] and result column +** at the same time then the results are undefined. +*/ +SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); +SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); +SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); + +/* +** CAPI3REF: Declared Datatype Of A Query Result {H13760} +** +** The first parameter is a [prepared statement]. +** If this statement is a [SELECT] statement and the Nth column of the +** returned result set of that [SELECT] is a table column (not an +** expression or subquery) then the declared type of the table +** column is returned. If the Nth column of the result set is an +** expression or subquery, then a NULL pointer is returned. +** The returned string is always UTF-8 encoded. {END} +** +** For example, given the database schema: +** +** CREATE TABLE t1(c1 VARIANT); +** +** and the following statement to be compiled: +** +** SELECT c1 + 1, c1 FROM t1; +** +** this routine would return the string "VARIANT" for the second result +** column (i==1), and a NULL pointer for the first result column (i==0). +** +** SQLite uses dynamic run-time typing. So just because a column +** is declared to contain a particular type does not mean that the +** data stored in that column is of the declared type. SQLite is +** strongly typed, but the typing is dynamic not static. Type +** is associated with individual values, not with the containers +** used to hold those values. +** +** Requirements: +** [H13761] [H13762] [H13763] +*/ +SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int); +SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int); + +/* +** CAPI3REF: Evaluate An SQL Statement {H13200} +** +** After a [prepared statement] has been prepared using either +** [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or one of the legacy +** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function +** must be called one or more times to evaluate the statement. +** +** The details of the behavior of the sqlite3_step() interface depend +** on whether the statement was prepared using the newer "v2" interface +** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy +** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the +** new "v2" interface is recommended for new applications but the legacy +** interface will continue to be supported. +** +** In the legacy interface, the return value will be either [SQLITE_BUSY], +** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE]. +** With the "v2" interface, any of the other [result codes] or +** [extended result codes] might be returned as well. +** +** [SQLITE_BUSY] means that the database engine was unable to acquire the +** database locks it needs to do its job. If the statement is a [COMMIT] +** or occurs outside of an explicit transaction, then you can retry the +** statement. If the statement is not a [COMMIT] and occurs within a +** explicit transaction then you should rollback the transaction before +** continuing. +** +** [SQLITE_DONE] means that the statement has finished executing +** successfully. sqlite3_step() should not be called again on this virtual +** machine without first calling [sqlite3_reset()] to reset the virtual +** machine back to its initial state. +** +** If the SQL statement being executed returns any data, then [SQLITE_ROW] +** is returned each time a new row of data is ready for processing by the +** caller. The values may be accessed using the [column access functions]. +** sqlite3_step() is called again to retrieve the next row of data. +** +** [SQLITE_ERROR] means that a run-time error (such as a constraint +** violation) has occurred. sqlite3_step() should not be called again on +** the VM. More information may be found by calling [sqlite3_errmsg()]. +** With the legacy interface, a more specific error code (for example, +** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth) +** can be obtained by calling [sqlite3_reset()] on the +** [prepared statement]. In the "v2" interface, +** the more specific error code is returned directly by sqlite3_step(). +** +** [SQLITE_MISUSE] means that the this routine was called inappropriately. +** Perhaps it was called on a [prepared statement] that has +** already been [sqlite3_finalize | finalized] or on one that had +** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could +** be the case that the same database connection is being used by two or +** more threads at the same moment in time. +** +** Goofy Interface Alert: In the legacy interface, the sqlite3_step() +** API always returns a generic error code, [SQLITE_ERROR], following any +** error other than [SQLITE_BUSY] and [SQLITE_MISUSE]. You must call +** [sqlite3_reset()] or [sqlite3_finalize()] in order to find one of the +** specific [error codes] that better describes the error. +** We admit that this is a goofy design. The problem has been fixed +** with the "v2" interface. If you prepare all of your SQL statements +** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead +** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces, +** then the more specific [error codes] are returned directly +** by sqlite3_step(). The use of the "v2" interface is recommended. +** +** Requirements: +** [H13202] [H15304] [H15306] [H15308] [H15310] +*/ +SQLITE_API int sqlite3_step(sqlite3_stmt*); + +/* +** CAPI3REF: Number of columns in a result set {H13770} +** +** Returns the number of values in the current row of the result set. +** +** Requirements: +** [H13771] [H13772] +*/ +SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Fundamental Datatypes {H10265} +** KEYWORDS: SQLITE_TEXT +** +** {H10266} Every value in SQLite has one of five fundamental datatypes: +** +**
    +**
  • 64-bit signed integer +**
  • 64-bit IEEE floating point number +**
  • string +**
  • BLOB +**
  • NULL +**
{END} +** +** These constants are codes for each of those types. +** +** Note that the SQLITE_TEXT constant was also used in SQLite version 2 +** for a completely different meaning. Software that links against both +** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT, not +** SQLITE_TEXT. +*/ +#define SQLITE_INTEGER 1 +#define SQLITE_FLOAT 2 +#define SQLITE_BLOB 4 +#define SQLITE_NULL 5 +#ifdef SQLITE_TEXT +# undef SQLITE_TEXT +#else +# define SQLITE_TEXT 3 +#endif +#define SQLITE3_TEXT 3 + +/* +** CAPI3REF: Result Values From A Query {H13800} +** KEYWORDS: {column access functions} +** +** These routines form the "result set query" interface. +** +** These routines return information about a single column of the current +** result row of a query. In every case the first argument is a pointer +** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*] +** that was returned from [sqlite3_prepare_v2()] or one of its variants) +** and the second argument is the index of the column for which information +** should be returned. The leftmost column of the result set has the index 0. +** +** If the SQL statement does not currently point to a valid row, or if the +** column index is out of range, the result is undefined. +** These routines may only be called when the most recent call to +** [sqlite3_step()] has returned [SQLITE_ROW] and neither +** [sqlite3_reset()] nor [sqlite3_finalize()] have been called subsequently. +** If any of these routines are called after [sqlite3_reset()] or +** [sqlite3_finalize()] or after [sqlite3_step()] has returned +** something other than [SQLITE_ROW], the results are undefined. +** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()] +** are called from a different thread while any of these routines +** are pending, then the results are undefined. +** +** The sqlite3_column_type() routine returns the +** [SQLITE_INTEGER | datatype code] for the initial data type +** of the result column. The returned value is one of [SQLITE_INTEGER], +** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value +** returned by sqlite3_column_type() is only meaningful if no type +** conversions have occurred as described below. After a type conversion, +** the value returned by sqlite3_column_type() is undefined. Future +** versions of SQLite may change the behavior of sqlite3_column_type() +** following a type conversion. +** +** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes() +** routine returns the number of bytes in that BLOB or string. +** If the result is a UTF-16 string, then sqlite3_column_bytes() converts +** the string to UTF-8 and then returns the number of bytes. +** If the result is a numeric value then sqlite3_column_bytes() uses +** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns +** the number of bytes in that string. +** The value returned does not include the zero terminator at the end +** of the string. For clarity: the value returned is the number of +** bytes in the string, not the number of characters. +** +** Strings returned by sqlite3_column_text() and sqlite3_column_text16(), +** even empty strings, are always zero terminated. The return +** value from sqlite3_column_blob() for a zero-length BLOB is an arbitrary +** pointer, possibly even a NULL pointer. +** +** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes() +** but leaves the result in UTF-16 in native byte order instead of UTF-8. +** The zero terminator is not included in this count. +** +** The object returned by [sqlite3_column_value()] is an +** [unprotected sqlite3_value] object. An unprotected sqlite3_value object +** may only be used with [sqlite3_bind_value()] and [sqlite3_result_value()]. +** If the [unprotected sqlite3_value] object returned by +** [sqlite3_column_value()] is used in any other way, including calls +** to routines like [sqlite3_value_int()], [sqlite3_value_text()], +** or [sqlite3_value_bytes()], then the behavior is undefined. +** +** These routines attempt to convert the value where appropriate. For +** example, if the internal representation is FLOAT and a text result +** is requested, [sqlite3_snprintf()] is used internally to perform the +** conversion automatically. The following table details the conversions +** that are applied: +** +**
+** +**
Internal
Type
Requested
Type
Conversion +** +**
NULL INTEGER Result is 0 +**
NULL FLOAT Result is 0.0 +**
NULL TEXT Result is NULL pointer +**
NULL BLOB Result is NULL pointer +**
INTEGER FLOAT Convert from integer to float +**
INTEGER TEXT ASCII rendering of the integer +**
INTEGER BLOB Same as INTEGER->TEXT +**
FLOAT INTEGER Convert from float to integer +**
FLOAT TEXT ASCII rendering of the float +**
FLOAT BLOB Same as FLOAT->TEXT +**
TEXT INTEGER Use atoi() +**
TEXT FLOAT Use atof() +**
TEXT BLOB No change +**
BLOB INTEGER Convert to TEXT then use atoi() +**
BLOB FLOAT Convert to TEXT then use atof() +**
BLOB TEXT Add a zero terminator if needed +**
+**
+** +** The table above makes reference to standard C library functions atoi() +** and atof(). SQLite does not really use these functions. It has its +** own equivalent internal routines. The atoi() and atof() names are +** used in the table for brevity and because they are familiar to most +** C programmers. +** +** Note that when type conversions occur, pointers returned by prior +** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or +** sqlite3_column_text16() may be invalidated. +** Type conversions and pointer invalidations might occur +** in the following cases: +** +**
    +**
  • The initial content is a BLOB and sqlite3_column_text() or +** sqlite3_column_text16() is called. A zero-terminator might +** need to be added to the string.
  • +**
  • The initial content is UTF-8 text and sqlite3_column_bytes16() or +** sqlite3_column_text16() is called. The content must be converted +** to UTF-16.
  • +**
  • The initial content is UTF-16 text and sqlite3_column_bytes() or +** sqlite3_column_text() is called. The content must be converted +** to UTF-8.
  • +**
+** +** Conversions between UTF-16be and UTF-16le are always done in place and do +** not invalidate a prior pointer, though of course the content of the buffer +** that the prior pointer points to will have been modified. Other kinds +** of conversion are done in place when it is possible, but sometimes they +** are not possible and in those cases prior pointers are invalidated. +** +** The safest and easiest to remember policy is to invoke these routines +** in one of the following ways: +** +**
    +**
  • sqlite3_column_text() followed by sqlite3_column_bytes()
  • +**
  • sqlite3_column_blob() followed by sqlite3_column_bytes()
  • +**
  • sqlite3_column_text16() followed by sqlite3_column_bytes16()
  • +**
+** +** In other words, you should call sqlite3_column_text(), +** sqlite3_column_blob(), or sqlite3_column_text16() first to force the result +** into the desired format, then invoke sqlite3_column_bytes() or +** sqlite3_column_bytes16() to find the size of the result. Do not mix calls +** to sqlite3_column_text() or sqlite3_column_blob() with calls to +** sqlite3_column_bytes16(), and do not mix calls to sqlite3_column_text16() +** with calls to sqlite3_column_bytes(). +** +** The pointers returned are valid until a type conversion occurs as +** described above, or until [sqlite3_step()] or [sqlite3_reset()] or +** [sqlite3_finalize()] is called. The memory space used to hold strings +** and BLOBs is freed automatically. Do not pass the pointers returned +** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into +** [sqlite3_free()]. +** +** If a memory allocation error occurs during the evaluation of any +** of these routines, a default value is returned. The default value +** is either the integer 0, the floating point number 0.0, or a NULL +** pointer. Subsequent calls to [sqlite3_errcode()] will return +** [SQLITE_NOMEM]. +** +** Requirements: +** [H13803] [H13806] [H13809] [H13812] [H13815] [H13818] [H13821] [H13824] +** [H13827] [H13830] +*/ +SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol); +SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol); +SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); +SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); +SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); +SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol); +SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol); + +/* +** CAPI3REF: Destroy A Prepared Statement Object {H13300} +** +** The sqlite3_finalize() function is called to delete a [prepared statement]. +** If the statement was executed successfully or not executed at all, then +** SQLITE_OK is returned. If execution of the statement failed then an +** [error code] or [extended error code] is returned. +** +** This routine can be called at any point during the execution of the +** [prepared statement]. If the virtual machine has not +** completed execution when this routine is called, that is like +** encountering an error or an [sqlite3_interrupt | interrupt]. +** Incomplete updates may be rolled back and transactions canceled, +** depending on the circumstances, and the +** [error code] returned will be [SQLITE_ABORT]. +** +** Requirements: +** [H11302] [H11304] +*/ +SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Reset A Prepared Statement Object {H13330} +** +** The sqlite3_reset() function is called to reset a [prepared statement] +** object back to its initial state, ready to be re-executed. +** Any SQL statement variables that had values bound to them using +** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values. +** Use [sqlite3_clear_bindings()] to reset the bindings. +** +** {H11332} The [sqlite3_reset(S)] interface resets the [prepared statement] S +** back to the beginning of its program. +** +** {H11334} If the most recent call to [sqlite3_step(S)] for the +** [prepared statement] S returned [SQLITE_ROW] or [SQLITE_DONE], +** or if [sqlite3_step(S)] has never before been called on S, +** then [sqlite3_reset(S)] returns [SQLITE_OK]. +** +** {H11336} If the most recent call to [sqlite3_step(S)] for the +** [prepared statement] S indicated an error, then +** [sqlite3_reset(S)] returns an appropriate [error code]. +** +** {H11338} The [sqlite3_reset(S)] interface does not change the values +** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S. +*/ +SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Create Or Redefine SQL Functions {H16100} +** KEYWORDS: {function creation routines} +** KEYWORDS: {application-defined SQL function} +** KEYWORDS: {application-defined SQL functions} +** +** These two functions (collectively known as "function creation routines") +** are used to add SQL functions or aggregates or to redefine the behavior +** of existing SQL functions or aggregates. The only difference between the +** two is that the second parameter, the name of the (scalar) function or +** aggregate, is encoded in UTF-8 for sqlite3_create_function() and UTF-16 +** for sqlite3_create_function16(). +** +** The first parameter is the [database connection] to which the SQL +** function is to be added. If a single program uses more than one database +** connection internally, then SQL functions must be added individually to +** each database connection. +** +** The second parameter is the name of the SQL function to be created or +** redefined. The length of the name is limited to 255 bytes, exclusive of +** the zero-terminator. Note that the name length limit is in bytes, not +** characters. Any attempt to create a function with a longer name +** will result in [SQLITE_ERROR] being returned. +** +** The third parameter (nArg) +** is the number of arguments that the SQL function or +** aggregate takes. If this parameter is -1, then the SQL function or +** aggregate may take any number of arguments between 0 and the limit +** set by [sqlite3_limit]([SQLITE_LIMIT_FUNCTION_ARG]). If the third +** parameter is less than -1 or greater than 127 then the behavior is +** undefined. +** +** The fourth parameter, eTextRep, specifies what +** [SQLITE_UTF8 | text encoding] this SQL function prefers for +** its parameters. Any SQL function implementation should be able to work +** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be +** more efficient with one encoding than another. An application may +** invoke sqlite3_create_function() or sqlite3_create_function16() multiple +** times with the same function but with different values of eTextRep. +** When multiple implementations of the same function are available, SQLite +** will pick the one that involves the least amount of data conversion. +** If there is only a single implementation which does not care what text +** encoding is used, then the fourth argument should be [SQLITE_ANY]. +** +** The fifth parameter is an arbitrary pointer. The implementation of the +** function can gain access to this pointer using [sqlite3_user_data()]. +** +** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are +** pointers to C-language functions that implement the SQL function or +** aggregate. A scalar SQL function requires an implementation of the xFunc +** callback only, NULL pointers should be passed as the xStep and xFinal +** parameters. An aggregate SQL function requires an implementation of xStep +** and xFinal and NULL should be passed for xFunc. To delete an existing +** SQL function or aggregate, pass NULL for all three function callbacks. +** +** It is permitted to register multiple implementations of the same +** functions with the same name but with either differing numbers of +** arguments or differing preferred text encodings. SQLite will use +** the implementation that most closely matches the way in which the +** SQL function is used. A function implementation with a non-negative +** nArg parameter is a better match than a function implementation with +** a negative nArg. A function where the preferred text encoding +** matches the database encoding is a better +** match than a function where the encoding is different. +** A function where the encoding difference is between UTF16le and UTF16be +** is a closer match than a function where the encoding difference is +** between UTF8 and UTF16. +** +** Built-in functions may be overloaded by new application-defined functions. +** The first application-defined function with a given name overrides all +** built-in functions in the same [database connection] with the same name. +** Subsequent application-defined functions of the same name only override +** prior application-defined functions that are an exact match for the +** number of parameters and preferred encoding. +** +** An application-defined function is permitted to call other +** SQLite interfaces. However, such calls must not +** close the database connection nor finalize or reset the prepared +** statement in which the function is running. +** +** Requirements: +** [H16103] [H16106] [H16109] [H16112] [H16118] [H16121] [H16127] +** [H16130] [H16133] [H16136] [H16139] [H16142] +*/ +SQLITE_API int sqlite3_create_function( + sqlite3 *db, + const char *zFunctionName, + int nArg, + int eTextRep, + void *pApp, + void (*xFunc)(sqlite3_context*,int,sqlite3_value**), + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*) +); +SQLITE_API int sqlite3_create_function16( + sqlite3 *db, + const void *zFunctionName, + int nArg, + int eTextRep, + void *pApp, + void (*xFunc)(sqlite3_context*,int,sqlite3_value**), + void (*xStep)(sqlite3_context*,int,sqlite3_value**), + void (*xFinal)(sqlite3_context*) +); + +/* +** CAPI3REF: Text Encodings {H10267} +** +** These constant define integer codes that represent the various +** text encodings supported by SQLite. +*/ +#define SQLITE_UTF8 1 +#define SQLITE_UTF16LE 2 +#define SQLITE_UTF16BE 3 +#define SQLITE_UTF16 4 /* Use native byte order */ +#define SQLITE_ANY 5 /* sqlite3_create_function only */ +#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */ + +/* +** CAPI3REF: Deprecated Functions +** DEPRECATED +** +** These functions are [deprecated]. In order to maintain +** backwards compatibility with older code, these functions continue +** to be supported. However, new applications should avoid +** the use of these functions. To help encourage people to avoid +** using these functions, we are not going to tell you what they do. +*/ +#ifndef SQLITE_OMIT_DEPRECATED +SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*); +SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*); +SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*); +SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void); +SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void); +SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64); +#endif + +/* +** CAPI3REF: Obtaining SQL Function Parameter Values {H15100} +** +** The C-language implementation of SQL functions and aggregates uses +** this set of interface routines to access the parameter values on +** the function or aggregate. +** +** The xFunc (for scalar functions) or xStep (for aggregates) parameters +** to [sqlite3_create_function()] and [sqlite3_create_function16()] +** define callbacks that implement the SQL functions and aggregates. +** The 4th parameter to these callbacks is an array of pointers to +** [protected sqlite3_value] objects. There is one [sqlite3_value] object for +** each parameter to the SQL function. These routines are used to +** extract values from the [sqlite3_value] objects. +** +** These routines work only with [protected sqlite3_value] objects. +** Any attempt to use these routines on an [unprotected sqlite3_value] +** object results in undefined behavior. +** +** These routines work just like the corresponding [column access functions] +** except that these routines take a single [protected sqlite3_value] object +** pointer instead of a [sqlite3_stmt*] pointer and an integer column number. +** +** The sqlite3_value_text16() interface extracts a UTF-16 string +** in the native byte-order of the host machine. The +** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces +** extract UTF-16 strings as big-endian and little-endian respectively. +** +** The sqlite3_value_numeric_type() interface attempts to apply +** numeric affinity to the value. This means that an attempt is +** made to convert the value to an integer or floating point. If +** such a conversion is possible without loss of information (in other +** words, if the value is a string that looks like a number) +** then the conversion is performed. Otherwise no conversion occurs. +** The [SQLITE_INTEGER | datatype] after conversion is returned. +** +** Please pay particular attention to the fact that the pointer returned +** from [sqlite3_value_blob()], [sqlite3_value_text()], or +** [sqlite3_value_text16()] can be invalidated by a subsequent call to +** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()], +** or [sqlite3_value_text16()]. +** +** These routines must be called from the same thread as +** the SQL function that supplied the [sqlite3_value*] parameters. +** +** Requirements: +** [H15103] [H15106] [H15109] [H15112] [H15115] [H15118] [H15121] [H15124] +** [H15127] [H15130] [H15133] [H15136] +*/ +SQLITE_API const void *sqlite3_value_blob(sqlite3_value*); +SQLITE_API int sqlite3_value_bytes(sqlite3_value*); +SQLITE_API int sqlite3_value_bytes16(sqlite3_value*); +SQLITE_API double sqlite3_value_double(sqlite3_value*); +SQLITE_API int sqlite3_value_int(sqlite3_value*); +SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*); +SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*); +SQLITE_API const void *sqlite3_value_text16(sqlite3_value*); +SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*); +SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*); +SQLITE_API int sqlite3_value_type(sqlite3_value*); +SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*); + +/* +** CAPI3REF: Obtain Aggregate Function Context {H16210} +** +** The implementation of aggregate SQL functions use this routine to allocate +** a structure for storing their state. +** +** The first time the sqlite3_aggregate_context() routine is called for a +** particular aggregate, SQLite allocates nBytes of memory, zeroes out that +** memory, and returns a pointer to it. On second and subsequent calls to +** sqlite3_aggregate_context() for the same aggregate function index, +** the same buffer is returned. The implementation of the aggregate can use +** the returned buffer to accumulate data. +** +** SQLite automatically frees the allocated buffer when the aggregate +** query concludes. +** +** The first parameter should be a copy of the +** [sqlite3_context | SQL function context] that is the first parameter +** to the callback routine that implements the aggregate function. +** +** This routine must be called from the same thread in which +** the aggregate SQL function is running. +** +** Requirements: +** [H16211] [H16213] [H16215] [H16217] +*/ +SQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes); + +/* +** CAPI3REF: User Data For Functions {H16240} +** +** The sqlite3_user_data() interface returns a copy of +** the pointer that was the pUserData parameter (the 5th parameter) +** of the [sqlite3_create_function()] +** and [sqlite3_create_function16()] routines that originally +** registered the application defined function. {END} +** +** This routine must be called from the same thread in which +** the application-defined function is running. +** +** Requirements: +** [H16243] +*/ +SQLITE_API void *sqlite3_user_data(sqlite3_context*); + +/* +** CAPI3REF: Database Connection For Functions {H16250} +** +** The sqlite3_context_db_handle() interface returns a copy of +** the pointer to the [database connection] (the 1st parameter) +** of the [sqlite3_create_function()] +** and [sqlite3_create_function16()] routines that originally +** registered the application defined function. +** +** Requirements: +** [H16253] +*/ +SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); + +/* +** CAPI3REF: Function Auxiliary Data {H16270} +** +** The following two functions may be used by scalar SQL functions to +** associate metadata with argument values. If the same value is passed to +** multiple invocations of the same SQL function during query execution, under +** some circumstances the associated metadata may be preserved. This may +** be used, for example, to add a regular-expression matching scalar +** function. The compiled version of the regular expression is stored as +** metadata associated with the SQL value passed as the regular expression +** pattern. The compiled regular expression can be reused on multiple +** invocations of the same function so that the original pattern string +** does not need to be recompiled on each invocation. +** +** The sqlite3_get_auxdata() interface returns a pointer to the metadata +** associated by the sqlite3_set_auxdata() function with the Nth argument +** value to the application-defined function. If no metadata has been ever +** been set for the Nth argument of the function, or if the corresponding +** function parameter has changed since the meta-data was set, +** then sqlite3_get_auxdata() returns a NULL pointer. +** +** The sqlite3_set_auxdata() interface saves the metadata +** pointed to by its 3rd parameter as the metadata for the N-th +** argument of the application-defined function. Subsequent +** calls to sqlite3_get_auxdata() might return this data, if it has +** not been destroyed. +** If it is not NULL, SQLite will invoke the destructor +** function given by the 4th parameter to sqlite3_set_auxdata() on +** the metadata when the corresponding function parameter changes +** or when the SQL statement completes, whichever comes first. +** +** SQLite is free to call the destructor and drop metadata on any +** parameter of any function at any time. The only guarantee is that +** the destructor will be called before the metadata is dropped. +** +** In practice, metadata is preserved between function calls for +** expressions that are constant at compile time. This includes literal +** values and SQL variables. +** +** These routines must be called from the same thread in which +** the SQL function is running. +** +** Requirements: +** [H16272] [H16274] [H16276] [H16277] [H16278] [H16279] +*/ +SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N); +SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*)); + + +/* +** CAPI3REF: Constants Defining Special Destructor Behavior {H10280} +** +** These are special values for the destructor that is passed in as the +** final argument to routines like [sqlite3_result_blob()]. If the destructor +** argument is SQLITE_STATIC, it means that the content pointer is constant +** and will never change. It does not need to be destroyed. The +** SQLITE_TRANSIENT value means that the content will likely change in +** the near future and that SQLite should make its own private copy of +** the content before returning. +** +** The typedef is necessary to work around problems in certain +** C++ compilers. See ticket #2191. +*/ +typedef void (*sqlite3_destructor_type)(void*); +#define SQLITE_STATIC ((sqlite3_destructor_type)0) +#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) + +/* +** CAPI3REF: Setting The Result Of An SQL Function {H16400} +** +** These routines are used by the xFunc or xFinal callbacks that +** implement SQL functions and aggregates. See +** [sqlite3_create_function()] and [sqlite3_create_function16()] +** for additional information. +** +** These functions work very much like the [parameter binding] family of +** functions used to bind values to host parameters in prepared statements. +** Refer to the [SQL parameter] documentation for additional information. +** +** The sqlite3_result_blob() interface sets the result from +** an application-defined function to be the BLOB whose content is pointed +** to by the second parameter and which is N bytes long where N is the +** third parameter. +** +** The sqlite3_result_zeroblob() interfaces set the result of +** the application-defined function to be a BLOB containing all zero +** bytes and N bytes in size, where N is the value of the 2nd parameter. +** +** The sqlite3_result_double() interface sets the result from +** an application-defined function to be a floating point value specified +** by its 2nd argument. +** +** The sqlite3_result_error() and sqlite3_result_error16() functions +** cause the implemented SQL function to throw an exception. +** SQLite uses the string pointed to by the +** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16() +** as the text of an error message. SQLite interprets the error +** message string from sqlite3_result_error() as UTF-8. SQLite +** interprets the string from sqlite3_result_error16() as UTF-16 in native +** byte order. If the third parameter to sqlite3_result_error() +** or sqlite3_result_error16() is negative then SQLite takes as the error +** message all text up through the first zero character. +** If the third parameter to sqlite3_result_error() or +** sqlite3_result_error16() is non-negative then SQLite takes that many +** bytes (not characters) from the 2nd parameter as the error message. +** The sqlite3_result_error() and sqlite3_result_error16() +** routines make a private copy of the error message text before +** they return. Hence, the calling function can deallocate or +** modify the text after they return without harm. +** The sqlite3_result_error_code() function changes the error code +** returned by SQLite as a result of an error in a function. By default, +** the error code is SQLITE_ERROR. A subsequent call to sqlite3_result_error() +** or sqlite3_result_error16() resets the error code to SQLITE_ERROR. +** +** The sqlite3_result_toobig() interface causes SQLite to throw an error +** indicating that a string or BLOB is to long to represent. +** +** The sqlite3_result_nomem() interface causes SQLite to throw an error +** indicating that a memory allocation failed. +** +** The sqlite3_result_int() interface sets the return value +** of the application-defined function to be the 32-bit signed integer +** value given in the 2nd argument. +** The sqlite3_result_int64() interface sets the return value +** of the application-defined function to be the 64-bit signed integer +** value given in the 2nd argument. +** +** The sqlite3_result_null() interface sets the return value +** of the application-defined function to be NULL. +** +** The sqlite3_result_text(), sqlite3_result_text16(), +** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces +** set the return value of the application-defined function to be +** a text string which is represented as UTF-8, UTF-16 native byte order, +** UTF-16 little endian, or UTF-16 big endian, respectively. +** SQLite takes the text result from the application from +** the 2nd parameter of the sqlite3_result_text* interfaces. +** If the 3rd parameter to the sqlite3_result_text* interfaces +** is negative, then SQLite takes result text from the 2nd parameter +** through the first zero character. +** If the 3rd parameter to the sqlite3_result_text* interfaces +** is non-negative, then as many bytes (not characters) of the text +** pointed to by the 2nd parameter are taken as the application-defined +** function result. +** If the 4th parameter to the sqlite3_result_text* interfaces +** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that +** function as the destructor on the text or BLOB result when it has +** finished using that result. +** If the 4th parameter to the sqlite3_result_text* interfaces or to +** sqlite3_result_blob is the special constant SQLITE_STATIC, then SQLite +** assumes that the text or BLOB result is in constant space and does not +** copy the content of the parameter nor call a destructor on the content +** when it has finished using that result. +** If the 4th parameter to the sqlite3_result_text* interfaces +** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT +** then SQLite makes a copy of the result into space obtained from +** from [sqlite3_malloc()] before it returns. +** +** The sqlite3_result_value() interface sets the result of +** the application-defined function to be a copy the +** [unprotected sqlite3_value] object specified by the 2nd parameter. The +** sqlite3_result_value() interface makes a copy of the [sqlite3_value] +** so that the [sqlite3_value] specified in the parameter may change or +** be deallocated after sqlite3_result_value() returns without harm. +** A [protected sqlite3_value] object may always be used where an +** [unprotected sqlite3_value] object is required, so either +** kind of [sqlite3_value] object can be used with this interface. +** +** If these routines are called from within the different thread +** than the one containing the application-defined function that received +** the [sqlite3_context] pointer, the results are undefined. +** +** Requirements: +** [H16403] [H16406] [H16409] [H16412] [H16415] [H16418] [H16421] [H16424] +** [H16427] [H16430] [H16433] [H16436] [H16439] [H16442] [H16445] [H16448] +** [H16451] [H16454] [H16457] [H16460] [H16463] +*/ +SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*)); +SQLITE_API void sqlite3_result_double(sqlite3_context*, double); +SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int); +SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int); +SQLITE_API void sqlite3_result_error_toobig(sqlite3_context*); +SQLITE_API void sqlite3_result_error_nomem(sqlite3_context*); +SQLITE_API void sqlite3_result_error_code(sqlite3_context*, int); +SQLITE_API void sqlite3_result_int(sqlite3_context*, int); +SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64); +SQLITE_API void sqlite3_result_null(sqlite3_context*); +SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*)); +SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*)); +SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*)); +SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*)); +SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*); +SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n); + +/* +** CAPI3REF: Define New Collating Sequences {H16600} +** +** These functions are used to add new collation sequences to the +** [database connection] specified as the first argument. +** +** The name of the new collation sequence is specified as a UTF-8 string +** for sqlite3_create_collation() and sqlite3_create_collation_v2() +** and a UTF-16 string for sqlite3_create_collation16(). In all cases +** the name is passed as the second function argument. +** +** The third argument may be one of the constants [SQLITE_UTF8], +** [SQLITE_UTF16LE], or [SQLITE_UTF16BE], indicating that the user-supplied +** routine expects to be passed pointers to strings encoded using UTF-8, +** UTF-16 little-endian, or UTF-16 big-endian, respectively. The +** third argument might also be [SQLITE_UTF16] to indicate that the routine +** expects pointers to be UTF-16 strings in the native byte order, or the +** argument can be [SQLITE_UTF16_ALIGNED] if the +** the routine expects pointers to 16-bit word aligned strings +** of UTF-16 in the native byte order. +** +** A pointer to the user supplied routine must be passed as the fifth +** argument. If it is NULL, this is the same as deleting the collation +** sequence (so that SQLite cannot call it anymore). +** Each time the application supplied function is invoked, it is passed +** as its first parameter a copy of the void* passed as the fourth argument +** to sqlite3_create_collation() or sqlite3_create_collation16(). +** +** The remaining arguments to the application-supplied routine are two strings, +** each represented by a (length, data) pair and encoded in the encoding +** that was passed as the third argument when the collation sequence was +** registered. {END} The application defined collation routine should +** return negative, zero or positive if the first string is less than, +** equal to, or greater than the second string. i.e. (STRING1 - STRING2). +** +** The sqlite3_create_collation_v2() works like sqlite3_create_collation() +** except that it takes an extra argument which is a destructor for +** the collation. The destructor is called when the collation is +** destroyed and is passed a copy of the fourth parameter void* pointer +** of the sqlite3_create_collation_v2(). +** Collations are destroyed when they are overridden by later calls to the +** collation creation functions or when the [database connection] is closed +** using [sqlite3_close()]. +** +** See also: [sqlite3_collation_needed()] and [sqlite3_collation_needed16()]. +** +** Requirements: +** [H16603] [H16604] [H16606] [H16609] [H16612] [H16615] [H16618] [H16621] +** [H16624] [H16627] [H16630] +*/ +SQLITE_API int sqlite3_create_collation( + sqlite3*, + const char *zName, + int eTextRep, + void*, + int(*xCompare)(void*,int,const void*,int,const void*) +); +SQLITE_API int sqlite3_create_collation_v2( + sqlite3*, + const char *zName, + int eTextRep, + void*, + int(*xCompare)(void*,int,const void*,int,const void*), + void(*xDestroy)(void*) +); +SQLITE_API int sqlite3_create_collation16( + sqlite3*, + const void *zName, + int eTextRep, + void*, + int(*xCompare)(void*,int,const void*,int,const void*) +); + +/* +** CAPI3REF: Collation Needed Callbacks {H16700} +** +** To avoid having to register all collation sequences before a database +** can be used, a single callback function may be registered with the +** [database connection] to be called whenever an undefined collation +** sequence is required. +** +** If the function is registered using the sqlite3_collation_needed() API, +** then it is passed the names of undefined collation sequences as strings +** encoded in UTF-8. {H16703} If sqlite3_collation_needed16() is used, +** the names are passed as UTF-16 in machine native byte order. +** A call to either function replaces any existing callback. +** +** When the callback is invoked, the first argument passed is a copy +** of the second argument to sqlite3_collation_needed() or +** sqlite3_collation_needed16(). The second argument is the database +** connection. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], +** or [SQLITE_UTF16LE], indicating the most desirable form of the collation +** sequence function required. The fourth parameter is the name of the +** required collation sequence. +** +** The callback function should register the desired collation using +** [sqlite3_create_collation()], [sqlite3_create_collation16()], or +** [sqlite3_create_collation_v2()]. +** +** Requirements: +** [H16702] [H16704] [H16706] +*/ +SQLITE_API int sqlite3_collation_needed( + sqlite3*, + void*, + void(*)(void*,sqlite3*,int eTextRep,const char*) +); +SQLITE_API int sqlite3_collation_needed16( + sqlite3*, + void*, + void(*)(void*,sqlite3*,int eTextRep,const void*) +); + +/* +** Specify the key for an encrypted database. This routine should be +** called right after sqlite3_open(). +** +** The code to implement this API is not available in the public release +** of SQLite. +*/ +SQLITE_API int sqlite3_key( + sqlite3 *db, /* Database to be rekeyed */ + const void *pKey, int nKey /* The key */ +); + +/* +** Change the key on an open database. If the current database is not +** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the +** database is decrypted. +** +** The code to implement this API is not available in the public release +** of SQLite. +*/ +SQLITE_API int sqlite3_rekey( + sqlite3 *db, /* Database to be rekeyed */ + const void *pKey, int nKey /* The new key */ +); + +/* +** CAPI3REF: Suspend Execution For A Short Time {H10530} +** +** The sqlite3_sleep() function causes the current thread to suspend execution +** for at least a number of milliseconds specified in its parameter. +** +** If the operating system does not support sleep requests with +** millisecond time resolution, then the time will be rounded up to +** the nearest second. The number of milliseconds of sleep actually +** requested from the operating system is returned. +** +** SQLite implements this interface by calling the xSleep() +** method of the default [sqlite3_vfs] object. +** +** Requirements: [H10533] [H10536] +*/ +SQLITE_API int sqlite3_sleep(int); + +/* +** CAPI3REF: Name Of The Folder Holding Temporary Files {H10310} +** +** If this global variable is made to point to a string which is +** the name of a folder (a.k.a. directory), then all temporary files +** created by SQLite will be placed in that directory. If this variable +** is a NULL pointer, then SQLite performs a search for an appropriate +** temporary file directory. +** +** It is not safe to read or modify this variable in more than one +** thread at a time. It is not safe to read or modify this variable +** if a [database connection] is being used at the same time in a separate +** thread. +** It is intended that this variable be set once +** as part of process initialization and before any SQLite interface +** routines have been called and that this variable remain unchanged +** thereafter. +** +** The [temp_store_directory pragma] may modify this variable and cause +** it to point to memory obtained from [sqlite3_malloc]. Furthermore, +** the [temp_store_directory pragma] always assumes that any string +** that this variable points to is held in memory obtained from +** [sqlite3_malloc] and the pragma may attempt to free that memory +** using [sqlite3_free]. +** Hence, if this variable is modified directly, either it should be +** made NULL or made to point to memory obtained from [sqlite3_malloc] +** or else the use of the [temp_store_directory pragma] should be avoided. +*/ +SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory; + +/* +** CAPI3REF: Test For Auto-Commit Mode {H12930} +** KEYWORDS: {autocommit mode} +** +** The sqlite3_get_autocommit() interface returns non-zero or +** zero if the given database connection is or is not in autocommit mode, +** respectively. Autocommit mode is on by default. +** Autocommit mode is disabled by a [BEGIN] statement. +** Autocommit mode is re-enabled by a [COMMIT] or [ROLLBACK]. +** +** If certain kinds of errors occur on a statement within a multi-statement +** transaction (errors including [SQLITE_FULL], [SQLITE_IOERR], +** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the +** transaction might be rolled back automatically. The only way to +** find out whether SQLite automatically rolled back the transaction after +** an error is to use this function. +** +** If another thread changes the autocommit status of the database +** connection while this routine is running, then the return value +** is undefined. +** +** Requirements: [H12931] [H12932] [H12933] [H12934] +*/ +SQLITE_API int sqlite3_get_autocommit(sqlite3*); + +/* +** CAPI3REF: Find The Database Handle Of A Prepared Statement {H13120} +** +** The sqlite3_db_handle interface returns the [database connection] handle +** to which a [prepared statement] belongs. The [database connection] +** returned by sqlite3_db_handle is the same [database connection] that was the first argument +** to the [sqlite3_prepare_v2()] call (or its variants) that was used to +** create the statement in the first place. +** +** Requirements: [H13123] +*/ +SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*); + +/* +** CAPI3REF: Find the next prepared statement {H13140} +** +** This interface returns a pointer to the next [prepared statement] after +** pStmt associated with the [database connection] pDb. If pStmt is NULL +** then this interface returns a pointer to the first prepared statement +** associated with the database connection pDb. If no prepared statement +** satisfies the conditions of this routine, it returns NULL. +** +** The [database connection] pointer D in a call to +** [sqlite3_next_stmt(D,S)] must refer to an open database +** connection and in particular must not be a NULL pointer. +** +** Requirements: [H13143] [H13146] [H13149] [H13152] +*/ +SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt); + +/* +** CAPI3REF: Commit And Rollback Notification Callbacks {H12950} +** +** The sqlite3_commit_hook() interface registers a callback +** function to be invoked whenever a transaction is [COMMIT | committed]. +** Any callback set by a previous call to sqlite3_commit_hook() +** for the same database connection is overridden. +** The sqlite3_rollback_hook() interface registers a callback +** function to be invoked whenever a transaction is [ROLLBACK | rolled back]. +** Any callback set by a previous call to sqlite3_commit_hook() +** for the same database connection is overridden. +** The pArg argument is passed through to the callback. +** If the callback on a commit hook function returns non-zero, +** then the commit is converted into a rollback. +** +** If another function was previously registered, its +** pArg value is returned. Otherwise NULL is returned. +** +** The callback implementation must not do anything that will modify +** the database connection that invoked the callback. Any actions +** to modify the database connection must be deferred until after the +** completion of the [sqlite3_step()] call that triggered the commit +** or rollback hook in the first place. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** Registering a NULL function disables the callback. +** +** When the commit hook callback routine returns zero, the [COMMIT] +** operation is allowed to continue normally. If the commit hook +** returns non-zero, then the [COMMIT] is converted into a [ROLLBACK]. +** The rollback hook is invoked on a rollback that results from a commit +** hook returning non-zero, just as it would be with any other rollback. +** +** For the purposes of this API, a transaction is said to have been +** rolled back if an explicit "ROLLBACK" statement is executed, or +** an error or constraint causes an implicit rollback to occur. +** The rollback callback is not invoked if a transaction is +** automatically rolled back because the database connection is closed. +** The rollback callback is not invoked if a transaction is +** rolled back because a commit callback returned non-zero. +** Check on this +** +** See also the [sqlite3_update_hook()] interface. +** +** Requirements: +** [H12951] [H12952] [H12953] [H12954] [H12955] +** [H12961] [H12962] [H12963] [H12964] +*/ +SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*); +SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*); + +/* +** CAPI3REF: Data Change Notification Callbacks {H12970} +** +** The sqlite3_update_hook() interface registers a callback function +** with the [database connection] identified by the first argument +** to be invoked whenever a row is updated, inserted or deleted. +** Any callback set by a previous call to this function +** for the same database connection is overridden. +** +** The second argument is a pointer to the function to invoke when a +** row is updated, inserted or deleted. +** The first argument to the callback is a copy of the third argument +** to sqlite3_update_hook(). +** The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE], +** or [SQLITE_UPDATE], depending on the operation that caused the callback +** to be invoked. +** The third and fourth arguments to the callback contain pointers to the +** database and table name containing the affected row. +** The final callback parameter is the [rowid] of the row. +** In the case of an update, this is the [rowid] after the update takes place. +** +** The update hook is not invoked when internal system tables are +** modified (i.e. sqlite_master and sqlite_sequence). +** +** In the current implementation, the update hook +** is not invoked when duplication rows are deleted because of an +** [ON CONFLICT | ON CONFLICT REPLACE] clause. Nor is the update hook +** invoked when rows are deleted using the [truncate optimization]. +** The exceptions defined in this paragraph might change in a future +** release of SQLite. +** +** The update hook implementation must not do anything that will modify +** the database connection that invoked the update hook. Any actions +** to modify the database connection must be deferred until after the +** completion of the [sqlite3_step()] call that triggered the update hook. +** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their +** database connections for the meaning of "modify" in this paragraph. +** +** If another function was previously registered, its pArg value +** is returned. Otherwise NULL is returned. +** +** See also the [sqlite3_commit_hook()] and [sqlite3_rollback_hook()] +** interfaces. +** +** Requirements: +** [H12971] [H12973] [H12975] [H12977] [H12979] [H12981] [H12983] [H12986] +*/ +SQLITE_API void *sqlite3_update_hook( + sqlite3*, + void(*)(void *,int ,char const *,char const *,sqlite3_int64), + void* +); + +/* +** CAPI3REF: Enable Or Disable Shared Pager Cache {H10330} +** KEYWORDS: {shared cache} +** +** This routine enables or disables the sharing of the database cache +** and schema data structures between [database connection | connections] +** to the same database. Sharing is enabled if the argument is true +** and disabled if the argument is false. +** +** Cache sharing is enabled and disabled for an entire process. +** This is a change as of SQLite version 3.5.0. In prior versions of SQLite, +** sharing was enabled or disabled for each thread separately. +** +** The cache sharing mode set by this interface effects all subsequent +** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()]. +** Existing database connections continue use the sharing mode +** that was in effect at the time they were opened. +** +** Virtual tables cannot be used with a shared cache. When shared +** cache is enabled, the [sqlite3_create_module()] API used to register +** virtual tables will always return an error. +** +** This routine returns [SQLITE_OK] if shared cache was enabled or disabled +** successfully. An [error code] is returned otherwise. +** +** Shared cache is disabled by default. But this might change in +** future releases of SQLite. Applications that care about shared +** cache setting should set it explicitly. +** +** See Also: [SQLite Shared-Cache Mode] +** +** Requirements: [H10331] [H10336] [H10337] [H10339] +*/ +SQLITE_API int sqlite3_enable_shared_cache(int); + +/* +** CAPI3REF: Attempt To Free Heap Memory {H17340} +** +** The sqlite3_release_memory() interface attempts to free N bytes +** of heap memory by deallocating non-essential memory allocations +** held by the database library. {END} Memory used to cache database +** pages to improve performance is an example of non-essential memory. +** sqlite3_release_memory() returns the number of bytes actually freed, +** which might be more or less than the amount requested. +** +** Requirements: [H17341] [H17342] +*/ +SQLITE_API int sqlite3_release_memory(int); + +/* +** CAPI3REF: Impose A Limit On Heap Size {H17350} +** +** The sqlite3_soft_heap_limit() interface places a "soft" limit +** on the amount of heap memory that may be allocated by SQLite. +** If an internal allocation is requested that would exceed the +** soft heap limit, [sqlite3_release_memory()] is invoked one or +** more times to free up some space before the allocation is performed. +** +** The limit is called "soft", because if [sqlite3_release_memory()] +** cannot free sufficient memory to prevent the limit from being exceeded, +** the memory is allocated anyway and the current operation proceeds. +** +** A negative or zero value for N means that there is no soft heap limit and +** [sqlite3_release_memory()] will only be called when memory is exhausted. +** The default value for the soft heap limit is zero. +** +** SQLite makes a best effort to honor the soft heap limit. +** But if the soft heap limit cannot be honored, execution will +** continue without error or notification. This is why the limit is +** called a "soft" limit. It is advisory only. +** +** Prior to SQLite version 3.5.0, this routine only constrained the memory +** allocated by a single thread - the same thread in which this routine +** runs. Beginning with SQLite version 3.5.0, the soft heap limit is +** applied to all threads. The value specified for the soft heap limit +** is an upper bound on the total memory allocation for all threads. In +** version 3.5.0 there is no mechanism for limiting the heap usage for +** individual threads. +** +** Requirements: +** [H16351] [H16352] [H16353] [H16354] [H16355] [H16358] +*/ +SQLITE_API void sqlite3_soft_heap_limit(int); + +/* +** CAPI3REF: Extract Metadata About A Column Of A Table {H12850} +** +** This routine returns metadata about a specific column of a specific +** database table accessible using the [database connection] handle +** passed as the first function argument. +** +** The column is identified by the second, third and fourth parameters to +** this function. The second parameter is either the name of the database +** (i.e. "main", "temp" or an attached database) containing the specified +** table or NULL. If it is NULL, then all attached databases are searched +** for the table using the same algorithm used by the database engine to +** resolve unqualified table references. +** +** The third and fourth parameters to this function are the table and column +** name of the desired column, respectively. Neither of these parameters +** may be NULL. +** +** Metadata is returned by writing to the memory locations passed as the 5th +** and subsequent parameters to this function. Any of these arguments may be +** NULL, in which case the corresponding element of metadata is omitted. +** +**
+** +**
Parameter Output
Type
Description +** +**
5th const char* Data type +**
6th const char* Name of default collation sequence +**
7th int True if column has a NOT NULL constraint +**
8th int True if column is part of the PRIMARY KEY +**
9th int True if column is [AUTOINCREMENT] +**
+**
+** +** The memory pointed to by the character pointers returned for the +** declaration type and collation sequence is valid only until the next +** call to any SQLite API function. +** +** If the specified table is actually a view, an [error code] is returned. +** +** If the specified column is "rowid", "oid" or "_rowid_" and an +** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output +** parameters are set for the explicitly declared column. If there is no +** explicitly declared [INTEGER PRIMARY KEY] column, then the output +** parameters are set as follows: +** +**
+**     data type: "INTEGER"
+**     collation sequence: "BINARY"
+**     not null: 0
+**     primary key: 1
+**     auto increment: 0
+** 
+** +** This function may load one or more schemas from database files. If an +** error occurs during this process, or if the requested table or column +** cannot be found, an [error code] is returned and an error message left +** in the [database connection] (to be retrieved using sqlite3_errmsg()). +** +** This API is only available if the library was compiled with the +** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined. +*/ +SQLITE_API int sqlite3_table_column_metadata( + sqlite3 *db, /* Connection handle */ + const char *zDbName, /* Database name or NULL */ + const char *zTableName, /* Table name */ + const char *zColumnName, /* Column name */ + char const **pzDataType, /* OUTPUT: Declared data type */ + char const **pzCollSeq, /* OUTPUT: Collation sequence name */ + int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ + int *pPrimaryKey, /* OUTPUT: True if column part of PK */ + int *pAutoinc /* OUTPUT: True if column is auto-increment */ +); + +/* +** CAPI3REF: Load An Extension {H12600} +** +** This interface loads an SQLite extension library from the named file. +** +** {H12601} The sqlite3_load_extension() interface attempts to load an +** SQLite extension library contained in the file zFile. +** +** {H12602} The entry point is zProc. +** +** {H12603} zProc may be 0, in which case the name of the entry point +** defaults to "sqlite3_extension_init". +** +** {H12604} The sqlite3_load_extension() interface shall return +** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong. +** +** {H12605} If an error occurs and pzErrMsg is not 0, then the +** [sqlite3_load_extension()] interface shall attempt to +** fill *pzErrMsg with error message text stored in memory +** obtained from [sqlite3_malloc()]. {END} The calling function +** should free this memory by calling [sqlite3_free()]. +** +** {H12606} Extension loading must be enabled using +** [sqlite3_enable_load_extension()] prior to calling this API, +** otherwise an error will be returned. +*/ +SQLITE_API int sqlite3_load_extension( + sqlite3 *db, /* Load the extension into this database connection */ + const char *zFile, /* Name of the shared library containing extension */ + const char *zProc, /* Entry point. Derived from zFile if 0 */ + char **pzErrMsg /* Put error message here if not 0 */ +); + +/* +** CAPI3REF: Enable Or Disable Extension Loading {H12620} +** +** So as not to open security holes in older applications that are +** unprepared to deal with extension loading, and as a means of disabling +** extension loading while evaluating user-entered SQL, the following API +** is provided to turn the [sqlite3_load_extension()] mechanism on and off. +** +** Extension loading is off by default. See ticket #1863. +** +** {H12621} Call the sqlite3_enable_load_extension() routine with onoff==1 +** to turn extension loading on and call it with onoff==0 to turn +** it back off again. +** +** {H12622} Extension loading is off by default. +*/ +SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); + +/* +** CAPI3REF: Automatically Load An Extensions {H12640} +** +** This API can be invoked at program startup in order to register +** one or more statically linked extensions that will be available +** to all new [database connections]. {END} +** +** This routine stores a pointer to the extension in an array that is +** obtained from [sqlite3_malloc()]. If you run a memory leak checker +** on your program and it reports a leak because of this array, invoke +** [sqlite3_reset_auto_extension()] prior to shutdown to free the memory. +** +** {H12641} This function registers an extension entry point that is +** automatically invoked whenever a new [database connection] +** is opened using [sqlite3_open()], [sqlite3_open16()], +** or [sqlite3_open_v2()]. +** +** {H12642} Duplicate extensions are detected so calling this routine +** multiple times with the same extension is harmless. +** +** {H12643} This routine stores a pointer to the extension in an array +** that is obtained from [sqlite3_malloc()]. +** +** {H12644} Automatic extensions apply across all threads. +*/ +SQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void)); + +/* +** CAPI3REF: Reset Automatic Extension Loading {H12660} +** +** This function disables all previously registered automatic +** extensions. {END} It undoes the effect of all prior +** [sqlite3_auto_extension()] calls. +** +** {H12661} This function disables all previously registered +** automatic extensions. +** +** {H12662} This function disables automatic extensions in all threads. +*/ +SQLITE_API void sqlite3_reset_auto_extension(void); + +/* +****** EXPERIMENTAL - subject to change without notice ************** +** +** The interface to the virtual-table mechanism is currently considered +** to be experimental. The interface might change in incompatible ways. +** If this is a problem for you, do not use the interface at this time. +** +** When the virtual-table mechanism stabilizes, we will declare the +** interface fixed, support it indefinitely, and remove this comment. +*/ + +/* +** Structures used by the virtual table interface +*/ +typedef struct sqlite3_vtab sqlite3_vtab; +typedef struct sqlite3_index_info sqlite3_index_info; +typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor; +typedef struct sqlite3_module sqlite3_module; + +/* +** CAPI3REF: Virtual Table Object {H18000} +** KEYWORDS: sqlite3_module {virtual table module} +** EXPERIMENTAL +** +** This structure, sometimes called a a "virtual table module", +** defines the implementation of a [virtual tables]. +** This structure consists mostly of methods for the module. +** +** A virtual table module is created by filling in a persistent +** instance of this structure and passing a pointer to that instance +** to [sqlite3_create_module()] or [sqlite3_create_module_v2()]. +** The registration remains valid until it is replaced by a different +** module or until the [database connection] closes. The content +** of this structure must not change while it is registered with +** any database connection. +*/ +struct sqlite3_module { + int iVersion; + int (*xCreate)(sqlite3*, void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVTab, char**); + int (*xConnect)(sqlite3*, void *pAux, + int argc, const char *const*argv, + sqlite3_vtab **ppVTab, char**); + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + int (*xDisconnect)(sqlite3_vtab *pVTab); + int (*xDestroy)(sqlite3_vtab *pVTab); + int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor); + int (*xClose)(sqlite3_vtab_cursor*); + int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr, + int argc, sqlite3_value **argv); + int (*xNext)(sqlite3_vtab_cursor*); + int (*xEof)(sqlite3_vtab_cursor*); + int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int); + int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid); + int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *); + int (*xBegin)(sqlite3_vtab *pVTab); + int (*xSync)(sqlite3_vtab *pVTab); + int (*xCommit)(sqlite3_vtab *pVTab); + int (*xRollback)(sqlite3_vtab *pVTab); + int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName, + void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), + void **ppArg); + int (*xRename)(sqlite3_vtab *pVtab, const char *zNew); +}; + +/* +** CAPI3REF: Virtual Table Indexing Information {H18100} +** KEYWORDS: sqlite3_index_info +** EXPERIMENTAL +** +** The sqlite3_index_info structure and its substructures is used to +** pass information into and receive the reply from the [xBestIndex] +** method of a [virtual table module]. The fields under **Inputs** are the +** inputs to xBestIndex and are read-only. xBestIndex inserts its +** results into the **Outputs** fields. +** +** The aConstraint[] array records WHERE clause constraints of the form: +** +**
column OP expr
+** +** where OP is =, <, <=, >, or >=. The particular operator is +** stored in aConstraint[].op. The index of the column is stored in +** aConstraint[].iColumn. aConstraint[].usable is TRUE if the +** expr on the right-hand side can be evaluated (and thus the constraint +** is usable) and false if it cannot. +** +** The optimizer automatically inverts terms of the form "expr OP column" +** and makes other simplifications to the WHERE clause in an attempt to +** get as many WHERE clause terms into the form shown above as possible. +** The aConstraint[] array only reports WHERE clause terms in the correct +** form that refer to the particular virtual table being queried. +** +** Information about the ORDER BY clause is stored in aOrderBy[]. +** Each term of aOrderBy records a column of the ORDER BY clause. +** +** The [xBestIndex] method must fill aConstraintUsage[] with information +** about what parameters to pass to xFilter. If argvIndex>0 then +** the right-hand side of the corresponding aConstraint[] is evaluated +** and becomes the argvIndex-th entry in argv. If aConstraintUsage[].omit +** is true, then the constraint is assumed to be fully handled by the +** virtual table and is not checked again by SQLite. +** +** The idxNum and idxPtr values are recorded and passed into the +** [xFilter] method. +** [sqlite3_free()] is used to free idxPtr if and only iff +** needToFreeIdxPtr is true. +** +** The orderByConsumed means that output from [xFilter]/[xNext] will occur in +** the correct order to satisfy the ORDER BY clause so that no separate +** sorting step is required. +** +** The estimatedCost value is an estimate of the cost of doing the +** particular lookup. A full scan of a table with N entries should have +** a cost of N. A binary search of a table of N entries should have a +** cost of approximately log(N). +*/ +struct sqlite3_index_info { + /* Inputs */ + int nConstraint; /* Number of entries in aConstraint */ + struct sqlite3_index_constraint { + int iColumn; /* Column on left-hand side of constraint */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should ignore */ + } *aConstraint; /* Table of WHERE clause constraints */ + int nOrderBy; /* Number of terms in the ORDER BY clause */ + struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if >0, constraint is part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this constraint */ + } *aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from sqlite3_malloc */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ +}; +#define SQLITE_INDEX_CONSTRAINT_EQ 2 +#define SQLITE_INDEX_CONSTRAINT_GT 4 +#define SQLITE_INDEX_CONSTRAINT_LE 8 +#define SQLITE_INDEX_CONSTRAINT_LT 16 +#define SQLITE_INDEX_CONSTRAINT_GE 32 +#define SQLITE_INDEX_CONSTRAINT_MATCH 64 + +/* +** CAPI3REF: Register A Virtual Table Implementation {H18200} +** EXPERIMENTAL +** +** This routine is used to register a new [virtual table module] name. +** Module names must be registered before +** creating a new [virtual table] using the module, or before using a +** preexisting [virtual table] for the module. +** +** The module name is registered on the [database connection] specified +** by the first parameter. The name of the module is given by the +** second parameter. The third parameter is a pointer to +** the implementation of the [virtual table module]. The fourth +** parameter is an arbitrary client data pointer that is passed through +** into the [xCreate] and [xConnect] methods of the virtual table module +** when a new virtual table is be being created or reinitialized. +** +** This interface has exactly the same effect as calling +** [sqlite3_create_module_v2()] with a NULL client data destructor. +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_create_module( + sqlite3 *db, /* SQLite connection to register module with */ + const char *zName, /* Name of the module */ + const sqlite3_module *p, /* Methods for the module */ + void *pClientData /* Client data for xCreate/xConnect */ +); + +/* +** CAPI3REF: Register A Virtual Table Implementation {H18210} +** EXPERIMENTAL +** +** This routine is identical to the [sqlite3_create_module()] method, +** except that it has an extra parameter to specify +** a destructor function for the client data pointer. SQLite will +** invoke the destructor function (if it is not NULL) when SQLite +** no longer needs the pClientData pointer. +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_create_module_v2( + sqlite3 *db, /* SQLite connection to register module with */ + const char *zName, /* Name of the module */ + const sqlite3_module *p, /* Methods for the module */ + void *pClientData, /* Client data for xCreate/xConnect */ + void(*xDestroy)(void*) /* Module destructor function */ +); + +/* +** CAPI3REF: Virtual Table Instance Object {H18010} +** KEYWORDS: sqlite3_vtab +** EXPERIMENTAL +** +** Every [virtual table module] implementation uses a subclass +** of the following structure to describe a particular instance +** of the [virtual table]. Each subclass will +** be tailored to the specific needs of the module implementation. +** The purpose of this superclass is to define certain fields that are +** common to all module implementations. +** +** Virtual tables methods can set an error message by assigning a +** string obtained from [sqlite3_mprintf()] to zErrMsg. The method should +** take care that any prior string is freed by a call to [sqlite3_free()] +** prior to assigning a new string to zErrMsg. After the error message +** is delivered up to the client application, the string will be automatically +** freed by sqlite3_free() and the zErrMsg field will be zeroed. +*/ +struct sqlite3_vtab { + const sqlite3_module *pModule; /* The module for this virtual table */ + int nRef; /* NO LONGER USED */ + char *zErrMsg; /* Error message from sqlite3_mprintf() */ + /* Virtual table implementations will typically add additional fields */ +}; + +/* +** CAPI3REF: Virtual Table Cursor Object {H18020} +** KEYWORDS: sqlite3_vtab_cursor {virtual table cursor} +** EXPERIMENTAL +** +** Every [virtual table module] implementation uses a subclass of the +** following structure to describe cursors that point into the +** [virtual table] and are used +** to loop through the virtual table. Cursors are created using the +** [sqlite3_module.xOpen | xOpen] method of the module and are destroyed +** by the [sqlite3_module.xClose | xClose] method. Cussors are used +** by the [xFilter], [xNext], [xEof], [xColumn], and [xRowid] methods +** of the module. Each module implementation will define +** the content of a cursor structure to suit its own needs. +** +** This superclass exists in order to define fields of the cursor that +** are common to all implementations. +*/ +struct sqlite3_vtab_cursor { + sqlite3_vtab *pVtab; /* Virtual table of this cursor */ + /* Virtual table implementations will typically add additional fields */ +}; + +/* +** CAPI3REF: Declare The Schema Of A Virtual Table {H18280} +** EXPERIMENTAL +** +** The [xCreate] and [xConnect] methods of a +** [virtual table module] call this interface +** to declare the format (the names and datatypes of the columns) of +** the virtual tables they implement. +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_declare_vtab(sqlite3*, const char *zSQL); + +/* +** CAPI3REF: Overload A Function For A Virtual Table {H18300} +** EXPERIMENTAL +** +** Virtual tables can provide alternative implementations of functions +** using the [xFindFunction] method of the [virtual table module]. +** But global versions of those functions +** must exist in order to be overloaded. +** +** This API makes sure a global version of a function with a particular +** name and number of parameters exists. If no such function exists +** before this API is called, a new function is created. The implementation +** of the new function always causes an exception to be thrown. So +** the new function is not good for anything by itself. Its only +** purpose is to be a placeholder function that can be overloaded +** by a [virtual table]. +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg); + +/* +** The interface to the virtual-table mechanism defined above (back up +** to a comment remarkably similar to this one) is currently considered +** to be experimental. The interface might change in incompatible ways. +** If this is a problem for you, do not use the interface at this time. +** +** When the virtual-table mechanism stabilizes, we will declare the +** interface fixed, support it indefinitely, and remove this comment. +** +****** EXPERIMENTAL - subject to change without notice ************** +*/ + +/* +** CAPI3REF: A Handle To An Open BLOB {H17800} +** KEYWORDS: {BLOB handle} {BLOB handles} +** +** An instance of this object represents an open BLOB on which +** [sqlite3_blob_open | incremental BLOB I/O] can be performed. +** Objects of this type are created by [sqlite3_blob_open()] +** and destroyed by [sqlite3_blob_close()]. +** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces +** can be used to read or write small subsections of the BLOB. +** The [sqlite3_blob_bytes()] interface returns the size of the BLOB in bytes. +*/ +typedef struct sqlite3_blob sqlite3_blob; + +/* +** CAPI3REF: Open A BLOB For Incremental I/O {H17810} +** +** This interfaces opens a [BLOB handle | handle] to the BLOB located +** in row iRow, column zColumn, table zTable in database zDb; +** in other words, the same BLOB that would be selected by: +** +**
+**     SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
+** 
{END} +** +** If the flags parameter is non-zero, then the BLOB is opened for read +** and write access. If it is zero, the BLOB is opened for read access. +** +** Note that the database name is not the filename that contains +** the database but rather the symbolic name of the database that +** is assigned when the database is connected using [ATTACH]. +** For the main database file, the database name is "main". +** For TEMP tables, the database name is "temp". +** +** On success, [SQLITE_OK] is returned and the new [BLOB handle] is written +** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set +** to be a null pointer. +** This function sets the [database connection] error code and message +** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related +** functions. Note that the *ppBlob variable is always initialized in a +** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob +** regardless of the success or failure of this routine. +** +** If the row that a BLOB handle points to is modified by an +** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects +** then the BLOB handle is marked as "expired". +** This is true if any column of the row is changed, even a column +** other than the one the BLOB handle is open on. +** Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for +** a expired BLOB handle fail with an return code of [SQLITE_ABORT]. +** Changes written into a BLOB prior to the BLOB expiring are not +** rollback by the expiration of the BLOB. Such changes will eventually +** commit if the transaction continues to completion. +** +** Use the [sqlite3_blob_bytes()] interface to determine the size of +** the opened blob. The size of a blob may not be changed by this +** interface. Use the [UPDATE] SQL command to change the size of a +** blob. +** +** The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces +** and the built-in [zeroblob] SQL function can be used, if desired, +** to create an empty, zero-filled blob in which to read or write using +** this interface. +** +** To avoid a resource leak, every open [BLOB handle] should eventually +** be released by a call to [sqlite3_blob_close()]. +** +** Requirements: +** [H17813] [H17814] [H17816] [H17819] [H17821] [H17824] +*/ +SQLITE_API int sqlite3_blob_open( + sqlite3*, + const char *zDb, + const char *zTable, + const char *zColumn, + sqlite3_int64 iRow, + int flags, + sqlite3_blob **ppBlob +); + +/* +** CAPI3REF: Close A BLOB Handle {H17830} +** +** Closes an open [BLOB handle]. +** +** Closing a BLOB shall cause the current transaction to commit +** if there are no other BLOBs, no pending prepared statements, and the +** database connection is in [autocommit mode]. +** If any writes were made to the BLOB, they might be held in cache +** until the close operation if they will fit. +** +** Closing the BLOB often forces the changes +** out to disk and so if any I/O errors occur, they will likely occur +** at the time when the BLOB is closed. Any errors that occur during +** closing are reported as a non-zero return value. +** +** The BLOB is closed unconditionally. Even if this routine returns +** an error code, the BLOB is still closed. +** +** Calling this routine with a null pointer (which as would be returned +** by failed call to [sqlite3_blob_open()]) is a harmless no-op. +** +** Requirements: +** [H17833] [H17836] [H17839] +*/ +SQLITE_API int sqlite3_blob_close(sqlite3_blob *); + +/* +** CAPI3REF: Return The Size Of An Open BLOB {H17840} +** +** Returns the size in bytes of the BLOB accessible via the +** successfully opened [BLOB handle] in its only argument. The +** incremental blob I/O routines can only read or overwriting existing +** blob content; they cannot change the size of a blob. +** +** This routine only works on a [BLOB handle] which has been created +** by a prior successful call to [sqlite3_blob_open()] and which has not +** been closed by [sqlite3_blob_close()]. Passing any other pointer in +** to this routine results in undefined and probably undesirable behavior. +** +** Requirements: +** [H17843] +*/ +SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *); + +/* +** CAPI3REF: Read Data From A BLOB Incrementally {H17850} +** +** This function is used to read data from an open [BLOB handle] into a +** caller-supplied buffer. N bytes of data are copied into buffer Z +** from the open BLOB, starting at offset iOffset. +** +** If offset iOffset is less than N bytes from the end of the BLOB, +** [SQLITE_ERROR] is returned and no data is read. If N or iOffset is +** less than zero, [SQLITE_ERROR] is returned and no data is read. +** The size of the blob (and hence the maximum value of N+iOffset) +** can be determined using the [sqlite3_blob_bytes()] interface. +** +** An attempt to read from an expired [BLOB handle] fails with an +** error code of [SQLITE_ABORT]. +** +** On success, SQLITE_OK is returned. +** Otherwise, an [error code] or an [extended error code] is returned. +** +** This routine only works on a [BLOB handle] which has been created +** by a prior successful call to [sqlite3_blob_open()] and which has not +** been closed by [sqlite3_blob_close()]. Passing any other pointer in +** to this routine results in undefined and probably undesirable behavior. +** +** See also: [sqlite3_blob_write()]. +** +** Requirements: +** [H17853] [H17856] [H17859] [H17862] [H17863] [H17865] [H17868] +*/ +SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset); + +/* +** CAPI3REF: Write Data Into A BLOB Incrementally {H17870} +** +** This function is used to write data into an open [BLOB handle] from a +** caller-supplied buffer. N bytes of data are copied from the buffer Z +** into the open BLOB, starting at offset iOffset. +** +** If the [BLOB handle] passed as the first argument was not opened for +** writing (the flags parameter to [sqlite3_blob_open()] was zero), +** this function returns [SQLITE_READONLY]. +** +** This function may only modify the contents of the BLOB; it is +** not possible to increase the size of a BLOB using this API. +** If offset iOffset is less than N bytes from the end of the BLOB, +** [SQLITE_ERROR] is returned and no data is written. If N is +** less than zero [SQLITE_ERROR] is returned and no data is written. +** The size of the BLOB (and hence the maximum value of N+iOffset) +** can be determined using the [sqlite3_blob_bytes()] interface. +** +** An attempt to write to an expired [BLOB handle] fails with an +** error code of [SQLITE_ABORT]. Writes to the BLOB that occurred +** before the [BLOB handle] expired are not rolled back by the +** expiration of the handle, though of course those changes might +** have been overwritten by the statement that expired the BLOB handle +** or by other independent statements. +** +** On success, SQLITE_OK is returned. +** Otherwise, an [error code] or an [extended error code] is returned. +** +** This routine only works on a [BLOB handle] which has been created +** by a prior successful call to [sqlite3_blob_open()] and which has not +** been closed by [sqlite3_blob_close()]. Passing any other pointer in +** to this routine results in undefined and probably undesirable behavior. +** +** See also: [sqlite3_blob_read()]. +** +** Requirements: +** [H17873] [H17874] [H17875] [H17876] [H17877] [H17879] [H17882] [H17885] +** [H17888] +*/ +SQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset); + +/* +** CAPI3REF: Virtual File System Objects {H11200} +** +** A virtual filesystem (VFS) is an [sqlite3_vfs] object +** that SQLite uses to interact +** with the underlying operating system. Most SQLite builds come with a +** single default VFS that is appropriate for the host computer. +** New VFSes can be registered and existing VFSes can be unregistered. +** The following interfaces are provided. +** +** The sqlite3_vfs_find() interface returns a pointer to a VFS given its name. +** Names are case sensitive. +** Names are zero-terminated UTF-8 strings. +** If there is no match, a NULL pointer is returned. +** If zVfsName is NULL then the default VFS is returned. +** +** New VFSes are registered with sqlite3_vfs_register(). +** Each new VFS becomes the default VFS if the makeDflt flag is set. +** The same VFS can be registered multiple times without injury. +** To make an existing VFS into the default VFS, register it again +** with the makeDflt flag set. If two different VFSes with the +** same name are registered, the behavior is undefined. If a +** VFS is registered with a name that is NULL or an empty string, +** then the behavior is undefined. +** +** Unregister a VFS with the sqlite3_vfs_unregister() interface. +** If the default VFS is unregistered, another VFS is chosen as +** the default. The choice for the new VFS is arbitrary. +** +** Requirements: +** [H11203] [H11206] [H11209] [H11212] [H11215] [H11218] +*/ +SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName); +SQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt); +SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); + +/* +** CAPI3REF: Mutexes {H17000} +** +** The SQLite core uses these routines for thread +** synchronization. Though they are intended for internal +** use by SQLite, code that links against SQLite is +** permitted to use any of these routines. +** +** The SQLite source code contains multiple implementations +** of these mutex routines. An appropriate implementation +** is selected automatically at compile-time. The following +** implementations are available in the SQLite core: +** +**
    +**
  • SQLITE_MUTEX_OS2 +**
  • SQLITE_MUTEX_PTHREAD +**
  • SQLITE_MUTEX_W32 +**
  • SQLITE_MUTEX_NOOP +**
+** +** The SQLITE_MUTEX_NOOP implementation is a set of routines +** that does no real locking and is appropriate for use in +** a single-threaded application. The SQLITE_MUTEX_OS2, +** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations +** are appropriate for use on OS/2, Unix, and Windows. +** +** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor +** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex +** implementation is included with the library. In this case the +** application must supply a custom mutex implementation using the +** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function +** before calling sqlite3_initialize() or any other public sqlite3_ +** function that calls sqlite3_initialize(). +** +** {H17011} The sqlite3_mutex_alloc() routine allocates a new +** mutex and returns a pointer to it. {H17012} If it returns NULL +** that means that a mutex could not be allocated. {H17013} SQLite +** will unwind its stack and return an error. {H17014} The argument +** to sqlite3_mutex_alloc() is one of these integer constants: +** +**
    +**
  • SQLITE_MUTEX_FAST +**
  • SQLITE_MUTEX_RECURSIVE +**
  • SQLITE_MUTEX_STATIC_MASTER +**
  • SQLITE_MUTEX_STATIC_MEM +**
  • SQLITE_MUTEX_STATIC_MEM2 +**
  • SQLITE_MUTEX_STATIC_PRNG +**
  • SQLITE_MUTEX_STATIC_LRU +**
  • SQLITE_MUTEX_STATIC_LRU2 +**
+** +** {H17015} The first two constants cause sqlite3_mutex_alloc() to create +** a new mutex. The new mutex is recursive when SQLITE_MUTEX_RECURSIVE +** is used but not necessarily so when SQLITE_MUTEX_FAST is used. {END} +** The mutex implementation does not need to make a distinction +** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does +** not want to. {H17016} But SQLite will only request a recursive mutex in +** cases where it really needs one. {END} If a faster non-recursive mutex +** implementation is available on the host platform, the mutex subsystem +** might return such a mutex in response to SQLITE_MUTEX_FAST. +** +** {H17017} The other allowed parameters to sqlite3_mutex_alloc() each return +** a pointer to a static preexisting mutex. {END} Six static mutexes are +** used by the current version of SQLite. Future versions of SQLite +** may add additional static mutexes. Static mutexes are for internal +** use by SQLite only. Applications that use SQLite mutexes should +** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or +** SQLITE_MUTEX_RECURSIVE. +** +** {H17018} Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST +** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc() +** returns a different mutex on every call. {H17034} But for the static +** mutex types, the same mutex is returned on every call that has +** the same type number. +** +** {H17019} The sqlite3_mutex_free() routine deallocates a previously +** allocated dynamic mutex. {H17020} SQLite is careful to deallocate every +** dynamic mutex that it allocates. {A17021} The dynamic mutexes must not be in +** use when they are deallocated. {A17022} Attempting to deallocate a static +** mutex results in undefined behavior. {H17023} SQLite never deallocates +** a static mutex. {END} +** +** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt +** to enter a mutex. {H17024} If another thread is already within the mutex, +** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return +** SQLITE_BUSY. {H17025} The sqlite3_mutex_try() interface returns [SQLITE_OK] +** upon successful entry. {H17026} Mutexes created using +** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread. +** {H17027} In such cases the, +** mutex must be exited an equal number of times before another thread +** can enter. {A17028} If the same thread tries to enter any other +** kind of mutex more than once, the behavior is undefined. +** {H17029} SQLite will never exhibit +** such behavior in its own use of mutexes. +** +** Some systems (for example, Windows 95) do not support the operation +** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try() +** will always return SQLITE_BUSY. {H17030} The SQLite core only ever uses +** sqlite3_mutex_try() as an optimization so this is acceptable behavior. +** +** {H17031} The sqlite3_mutex_leave() routine exits a mutex that was +** previously entered by the same thread. {A17032} The behavior +** is undefined if the mutex is not currently entered by the +** calling thread or is not currently allocated. {H17033} SQLite will +** never do either. {END} +** +** If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or +** sqlite3_mutex_leave() is a NULL pointer, then all three routines +** behave as no-ops. +** +** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. +*/ +SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); +SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); +SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); +SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); +SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); + +/* +** CAPI3REF: Mutex Methods Object {H17120} +** EXPERIMENTAL +** +** An instance of this structure defines the low-level routines +** used to allocate and use mutexes. +** +** Usually, the default mutex implementations provided by SQLite are +** sufficient, however the user has the option of substituting a custom +** implementation for specialized deployments or systems for which SQLite +** does not provide a suitable implementation. In this case, the user +** creates and populates an instance of this structure to pass +** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option. +** Additionally, an instance of this structure can be used as an +** output variable when querying the system for the current mutex +** implementation, using the [SQLITE_CONFIG_GETMUTEX] option. +** +** The xMutexInit method defined by this structure is invoked as +** part of system initialization by the sqlite3_initialize() function. +** {H17001} The xMutexInit routine shall be called by SQLite once for each +** effective call to [sqlite3_initialize()]. +** +** The xMutexEnd method defined by this structure is invoked as +** part of system shutdown by the sqlite3_shutdown() function. The +** implementation of this method is expected to release all outstanding +** resources obtained by the mutex methods implementation, especially +** those obtained by the xMutexInit method. {H17003} The xMutexEnd() +** interface shall be invoked once for each call to [sqlite3_shutdown()]. +** +** The remaining seven methods defined by this structure (xMutexAlloc, +** xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and +** xMutexNotheld) implement the following interfaces (respectively): +** +**
    +**
  • [sqlite3_mutex_alloc()]
  • +**
  • [sqlite3_mutex_free()]
  • +**
  • [sqlite3_mutex_enter()]
  • +**
  • [sqlite3_mutex_try()]
  • +**
  • [sqlite3_mutex_leave()]
  • +**
  • [sqlite3_mutex_held()]
  • +**
  • [sqlite3_mutex_notheld()]
  • +**
+** +** The only difference is that the public sqlite3_XXX functions enumerated +** above silently ignore any invocations that pass a NULL pointer instead +** of a valid mutex handle. The implementations of the methods defined +** by this structure are not required to handle this case, the results +** of passing a NULL pointer instead of a valid mutex handle are undefined +** (i.e. it is acceptable to provide an implementation that segfaults if +** it is passed a NULL pointer). +** +** The xMutexInit() method must be threadsafe. It must be harmless to +** invoke xMutexInit() mutiple times within the same process and without +** intervening calls to xMutexEnd(). Second and subsequent calls to +** xMutexInit() must be no-ops. +** +** xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()] +** and its associates). Similarly, xMutexAlloc() must not use SQLite memory +** allocation for a static mutex. However xMutexAlloc() may use SQLite +** memory allocation for a fast or recursive mutex. +** +** SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is +** called, but only if the prior call to xMutexInit returned SQLITE_OK. +** If xMutexInit fails in any way, it is expected to clean up after itself +** prior to returning. +*/ +typedef struct sqlite3_mutex_methods sqlite3_mutex_methods; +struct sqlite3_mutex_methods { + int (*xMutexInit)(void); + int (*xMutexEnd)(void); + sqlite3_mutex *(*xMutexAlloc)(int); + void (*xMutexFree)(sqlite3_mutex *); + void (*xMutexEnter)(sqlite3_mutex *); + int (*xMutexTry)(sqlite3_mutex *); + void (*xMutexLeave)(sqlite3_mutex *); + int (*xMutexHeld)(sqlite3_mutex *); + int (*xMutexNotheld)(sqlite3_mutex *); +}; + +/* +** CAPI3REF: Mutex Verification Routines {H17080} +** +** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines +** are intended for use inside assert() statements. {H17081} The SQLite core +** never uses these routines except inside an assert() and applications +** are advised to follow the lead of the core. {H17082} The core only +** provides implementations for these routines when it is compiled +** with the SQLITE_DEBUG flag. {A17087} External mutex implementations +** are only required to provide these routines if SQLITE_DEBUG is +** defined and if NDEBUG is not defined. +** +** {H17083} These routines should return true if the mutex in their argument +** is held or not held, respectively, by the calling thread. +** +** {X17084} The implementation is not required to provided versions of these +** routines that actually work. If the implementation does not provide working +** versions of these routines, it should at least provide stubs that always +** return true so that one does not get spurious assertion failures. +** +** {H17085} If the argument to sqlite3_mutex_held() is a NULL pointer then +** the routine should return 1. {END} This seems counter-intuitive since +** clearly the mutex cannot be held if it does not exist. But the +** the reason the mutex does not exist is because the build is not +** using mutexes. And we do not want the assert() containing the +** call to sqlite3_mutex_held() to fail, so a non-zero return is +** the appropriate thing to do. {H17086} The sqlite3_mutex_notheld() +** interface should also return 1 when given a NULL pointer. +*/ +SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*); +SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); + +/* +** CAPI3REF: Mutex Types {H17001} +** +** The [sqlite3_mutex_alloc()] interface takes a single argument +** which is one of these integer constants. +** +** The set of static mutexes may change from one SQLite release to the +** next. Applications that override the built-in mutex logic must be +** prepared to accommodate additional static mutexes. +*/ +#define SQLITE_MUTEX_FAST 0 +#define SQLITE_MUTEX_RECURSIVE 1 +#define SQLITE_MUTEX_STATIC_MASTER 2 +#define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */ +#define SQLITE_MUTEX_STATIC_MEM2 4 /* NOT USED */ +#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */ +#define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */ +#define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */ +#define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */ + +/* +** CAPI3REF: Retrieve the mutex for a database connection {H17002} +** +** This interface returns a pointer the [sqlite3_mutex] object that +** serializes access to the [database connection] given in the argument +** when the [threading mode] is Serialized. +** If the [threading mode] is Single-thread or Multi-thread then this +** routine returns a NULL pointer. +*/ +SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); + +/* +** CAPI3REF: Low-Level Control Of Database Files {H11300} +** +** {H11301} The [sqlite3_file_control()] interface makes a direct call to the +** xFileControl method for the [sqlite3_io_methods] object associated +** with a particular database identified by the second argument. {H11302} The +** name of the database is the name assigned to the database by the +** ATTACH SQL command that opened the +** database. {H11303} To control the main database file, use the name "main" +** or a NULL pointer. {H11304} The third and fourth parameters to this routine +** are passed directly through to the second and third parameters of +** the xFileControl method. {H11305} The return value of the xFileControl +** method becomes the return value of this routine. +** +** {H11306} If the second parameter (zDbName) does not match the name of any +** open database file, then SQLITE_ERROR is returned. {H11307} This error +** code is not remembered and will not be recalled by [sqlite3_errcode()] +** or [sqlite3_errmsg()]. {A11308} The underlying xFileControl method might +** also return SQLITE_ERROR. {A11309} There is no way to distinguish between +** an incorrect zDbName and an SQLITE_ERROR return from the underlying +** xFileControl method. {END} +** +** See also: [SQLITE_FCNTL_LOCKSTATE] +*/ +SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*); + +/* +** CAPI3REF: Testing Interface {H11400} +** +** The sqlite3_test_control() interface is used to read out internal +** state of SQLite and to inject faults into SQLite for testing +** purposes. The first parameter is an operation code that determines +** the number, meaning, and operation of all subsequent parameters. +** +** This interface is not for use by applications. It exists solely +** for verifying the correct operation of the SQLite library. Depending +** on how the SQLite library is compiled, this interface might not exist. +** +** The details of the operation codes, their meanings, the parameters +** they take, and what they do are all subject to change without notice. +** Unlike most of the SQLite API, this function is not guaranteed to +** operate consistently from one release to the next. +*/ +SQLITE_API int sqlite3_test_control(int op, ...); + +/* +** CAPI3REF: Testing Interface Operation Codes {H11410} +** +** These constants are the valid operation code parameters used +** as the first argument to [sqlite3_test_control()]. +** +** These parameters and their meanings are subject to change +** without notice. These values are for testing purposes only. +** Applications should not use any of these parameters or the +** [sqlite3_test_control()] interface. +*/ +#define SQLITE_TESTCTRL_PRNG_SAVE 5 +#define SQLITE_TESTCTRL_PRNG_RESTORE 6 +#define SQLITE_TESTCTRL_PRNG_RESET 7 +#define SQLITE_TESTCTRL_BITVEC_TEST 8 +#define SQLITE_TESTCTRL_FAULT_INSTALL 9 +#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10 +#define SQLITE_TESTCTRL_PENDING_BYTE 11 +#define SQLITE_TESTCTRL_ASSERT 12 +#define SQLITE_TESTCTRL_ALWAYS 13 +#define SQLITE_TESTCTRL_RESERVE 14 + +/* +** CAPI3REF: SQLite Runtime Status {H17200} +** EXPERIMENTAL +** +** This interface is used to retrieve runtime status information +** about the preformance of SQLite, and optionally to reset various +** highwater marks. The first argument is an integer code for +** the specific parameter to measure. Recognized integer codes +** are of the form [SQLITE_STATUS_MEMORY_USED | SQLITE_STATUS_...]. +** The current value of the parameter is returned into *pCurrent. +** The highest recorded value is returned in *pHighwater. If the +** resetFlag is true, then the highest record value is reset after +** *pHighwater is written. Some parameters do not record the highest +** value. For those parameters +** nothing is written into *pHighwater and the resetFlag is ignored. +** Other parameters record only the highwater mark and not the current +** value. For these latter parameters nothing is written into *pCurrent. +** +** This routine returns SQLITE_OK on success and a non-zero +** [error code] on failure. +** +** This routine is threadsafe but is not atomic. This routine can be +** called while other threads are running the same or different SQLite +** interfaces. However the values returned in *pCurrent and +** *pHighwater reflect the status of SQLite at different points in time +** and it is possible that another thread might change the parameter +** in between the times when *pCurrent and *pHighwater are written. +** +** See also: [sqlite3_db_status()] +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag); + + +/* +** CAPI3REF: Status Parameters {H17250} +** EXPERIMENTAL +** +** These integer constants designate various run-time status parameters +** that can be returned by [sqlite3_status()]. +** +**
+**
SQLITE_STATUS_MEMORY_USED
+**
This parameter is the current amount of memory checked out +** using [sqlite3_malloc()], either directly or indirectly. The +** figure includes calls made to [sqlite3_malloc()] by the application +** and internal memory usage by the SQLite library. Scratch memory +** controlled by [SQLITE_CONFIG_SCRATCH] and auxiliary page-cache +** memory controlled by [SQLITE_CONFIG_PAGECACHE] is not included in +** this parameter. The amount returned is the sum of the allocation +** sizes as reported by the xSize method in [sqlite3_mem_methods].
+** +**
SQLITE_STATUS_MALLOC_SIZE
+**
This parameter records the largest memory allocation request +** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their +** internal equivalents). Only the value returned in the +** *pHighwater parameter to [sqlite3_status()] is of interest. +** The value written into the *pCurrent parameter is undefined.
+** +**
SQLITE_STATUS_PAGECACHE_USED
+**
This parameter returns the number of pages used out of the +** [pagecache memory allocator] that was configured using +** [SQLITE_CONFIG_PAGECACHE]. The +** value returned is in pages, not in bytes.
+** +**
SQLITE_STATUS_PAGECACHE_OVERFLOW
+**
This parameter returns the number of bytes of page cache +** allocation which could not be statisfied by the [SQLITE_CONFIG_PAGECACHE] +** buffer and where forced to overflow to [sqlite3_malloc()]. The +** returned value includes allocations that overflowed because they +** where too large (they were larger than the "sz" parameter to +** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because +** no space was left in the page cache.
+** +**
SQLITE_STATUS_PAGECACHE_SIZE
+**
This parameter records the largest memory allocation request +** handed to [pagecache memory allocator]. Only the value returned in the +** *pHighwater parameter to [sqlite3_status()] is of interest. +** The value written into the *pCurrent parameter is undefined.
+** +**
SQLITE_STATUS_SCRATCH_USED
+**
This parameter returns the number of allocations used out of the +** [scratch memory allocator] configured using +** [SQLITE_CONFIG_SCRATCH]. The value returned is in allocations, not +** in bytes. Since a single thread may only have one scratch allocation +** outstanding at time, this parameter also reports the number of threads +** using scratch memory at the same time.
+** +**
SQLITE_STATUS_SCRATCH_OVERFLOW
+**
This parameter returns the number of bytes of scratch memory +** allocation which could not be statisfied by the [SQLITE_CONFIG_SCRATCH] +** buffer and where forced to overflow to [sqlite3_malloc()]. The values +** returned include overflows because the requested allocation was too +** larger (that is, because the requested allocation was larger than the +** "sz" parameter to [SQLITE_CONFIG_SCRATCH]) and because no scratch buffer +** slots were available. +**
+** +**
SQLITE_STATUS_SCRATCH_SIZE
+**
This parameter records the largest memory allocation request +** handed to [scratch memory allocator]. Only the value returned in the +** *pHighwater parameter to [sqlite3_status()] is of interest. +** The value written into the *pCurrent parameter is undefined.
+** +**
SQLITE_STATUS_PARSER_STACK
+**
This parameter records the deepest parser stack. It is only +** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].
+**
+** +** New status parameters may be added from time to time. +*/ +#define SQLITE_STATUS_MEMORY_USED 0 +#define SQLITE_STATUS_PAGECACHE_USED 1 +#define SQLITE_STATUS_PAGECACHE_OVERFLOW 2 +#define SQLITE_STATUS_SCRATCH_USED 3 +#define SQLITE_STATUS_SCRATCH_OVERFLOW 4 +#define SQLITE_STATUS_MALLOC_SIZE 5 +#define SQLITE_STATUS_PARSER_STACK 6 +#define SQLITE_STATUS_PAGECACHE_SIZE 7 +#define SQLITE_STATUS_SCRATCH_SIZE 8 + +/* +** CAPI3REF: Database Connection Status {H17500} +** EXPERIMENTAL +** +** This interface is used to retrieve runtime status information +** about a single [database connection]. The first argument is the +** database connection object to be interrogated. The second argument +** is the parameter to interrogate. Currently, the only allowed value +** for the second parameter is [SQLITE_DBSTATUS_LOOKASIDE_USED]. +** Additional options will likely appear in future releases of SQLite. +** +** The current value of the requested parameter is written into *pCur +** and the highest instantaneous value is written into *pHiwtr. If +** the resetFlg is true, then the highest instantaneous value is +** reset back down to the current value. +** +** See also: [sqlite3_status()] and [sqlite3_stmt_status()]. +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg); + +/* +** CAPI3REF: Status Parameters for database connections {H17520} +** EXPERIMENTAL +** +** These constants are the available integer "verbs" that can be passed as +** the second argument to the [sqlite3_db_status()] interface. +** +** New verbs may be added in future releases of SQLite. Existing verbs +** might be discontinued. Applications should check the return code from +** [sqlite3_db_status()] to make sure that the call worked. +** The [sqlite3_db_status()] interface will return a non-zero error code +** if a discontinued or unsupported verb is invoked. +** +**
+**
SQLITE_DBSTATUS_LOOKASIDE_USED
+**
This parameter returns the number of lookaside memory slots currently +** checked out.
+**
+*/ +#define SQLITE_DBSTATUS_LOOKASIDE_USED 0 + + +/* +** CAPI3REF: Prepared Statement Status {H17550} +** EXPERIMENTAL +** +** Each prepared statement maintains various +** [SQLITE_STMTSTATUS_SORT | counters] that measure the number +** of times it has performed specific operations. These counters can +** be used to monitor the performance characteristics of the prepared +** statements. For example, if the number of table steps greatly exceeds +** the number of table searches or result rows, that would tend to indicate +** that the prepared statement is using a full table scan rather than +** an index. +** +** This interface is used to retrieve and reset counter values from +** a [prepared statement]. The first argument is the prepared statement +** object to be interrogated. The second argument +** is an integer code for a specific [SQLITE_STMTSTATUS_SORT | counter] +** to be interrogated. +** The current value of the requested counter is returned. +** If the resetFlg is true, then the counter is reset to zero after this +** interface call returns. +** +** See also: [sqlite3_status()] and [sqlite3_db_status()]. +*/ +SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg); + +/* +** CAPI3REF: Status Parameters for prepared statements {H17570} +** EXPERIMENTAL +** +** These preprocessor macros define integer codes that name counter +** values associated with the [sqlite3_stmt_status()] interface. +** The meanings of the various counters are as follows: +** +**
+**
SQLITE_STMTSTATUS_FULLSCAN_STEP
+**
This is the number of times that SQLite has stepped forward in +** a table as part of a full table scan. Large numbers for this counter +** may indicate opportunities for performance improvement through +** careful use of indices.
+** +**
SQLITE_STMTSTATUS_SORT
+**
This is the number of sort operations that have occurred. +** A non-zero value in this counter may indicate an opportunity to +** improvement performance through careful use of indices.
+** +**
+*/ +#define SQLITE_STMTSTATUS_FULLSCAN_STEP 1 +#define SQLITE_STMTSTATUS_SORT 2 + +/* +** CAPI3REF: Custom Page Cache Object +** EXPERIMENTAL +** +** The sqlite3_pcache type is opaque. It is implemented by +** the pluggable module. The SQLite core has no knowledge of +** its size or internal structure and never deals with the +** sqlite3_pcache object except by holding and passing pointers +** to the object. +** +** See [sqlite3_pcache_methods] for additional information. +*/ +typedef struct sqlite3_pcache sqlite3_pcache; + +/* +** CAPI3REF: Application Defined Page Cache. +** KEYWORDS: {page cache} +** EXPERIMENTAL +** +** The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can +** register an alternative page cache implementation by passing in an +** instance of the sqlite3_pcache_methods structure. The majority of the +** heap memory used by SQLite is used by the page cache to cache data read +** from, or ready to be written to, the database file. By implementing a +** custom page cache using this API, an application can control more +** precisely the amount of memory consumed by SQLite, the way in which +** that memory is allocated and released, and the policies used to +** determine exactly which parts of a database file are cached and for +** how long. +** +** The contents of the sqlite3_pcache_methods structure are copied to an +** internal buffer by SQLite within the call to [sqlite3_config]. Hence +** the application may discard the parameter after the call to +** [sqlite3_config()] returns. +** +** The xInit() method is called once for each call to [sqlite3_initialize()] +** (usually only once during the lifetime of the process). It is passed +** a copy of the sqlite3_pcache_methods.pArg value. It can be used to set +** up global structures and mutexes required by the custom page cache +** implementation. +** +** The xShutdown() method is called from within [sqlite3_shutdown()], +** if the application invokes this API. It can be used to clean up +** any outstanding resources before process shutdown, if required. +** +** SQLite holds a [SQLITE_MUTEX_RECURSIVE] mutex when it invokes +** the xInit method, so the xInit method need not be threadsafe. The +** xShutdown method is only called from [sqlite3_shutdown()] so it does +** not need to be threadsafe either. All other methods must be threadsafe +** in multithreaded applications. +** +** SQLite will never invoke xInit() more than once without an intervening +** call to xShutdown(). +** +** The xCreate() method is used to construct a new cache instance. SQLite +** will typically create one cache instance for each open database file, +** though this is not guaranteed. The +** first parameter, szPage, is the size in bytes of the pages that must +** be allocated by the cache. szPage will not be a power of two. szPage +** will the page size of the database file that is to be cached plus an +** increment (here called "R") of about 100 or 200. SQLite will use the +** extra R bytes on each page to store metadata about the underlying +** database page on disk. The value of R depends +** on the SQLite version, the target platform, and how SQLite was compiled. +** R is constant for a particular build of SQLite. The second argument to +** xCreate(), bPurgeable, is true if the cache being created will +** be used to cache database pages of a file stored on disk, or +** false if it is used for an in-memory database. The cache implementation +** does not have to do anything special based with the value of bPurgeable; +** it is purely advisory. On a cache where bPurgeable is false, SQLite will +** never invoke xUnpin() except to deliberately delete a page. +** In other words, a cache created with bPurgeable set to false will +** never contain any unpinned pages. +** +** The xCachesize() method may be called at any time by SQLite to set the +** suggested maximum cache-size (number of pages stored by) the cache +** instance passed as the first argument. This is the value configured using +** the SQLite "[PRAGMA cache_size]" command. As with the bPurgeable parameter, +** the implementation is not required to do anything with this +** value; it is advisory only. +** +** The xPagecount() method should return the number of pages currently +** stored in the cache. +** +** The xFetch() method is used to fetch a page and return a pointer to it. +** A 'page', in this context, is a buffer of szPage bytes aligned at an +** 8-byte boundary. The page to be fetched is determined by the key. The +** mimimum key value is 1. After it has been retrieved using xFetch, the page +** is considered to be "pinned". +** +** If the requested page is already in the page cache, then the page cache +** implementation must return a pointer to the page buffer with its content +** intact. If the requested page is not already in the cache, then the +** behavior of the cache implementation is determined by the value of the +** createFlag parameter passed to xFetch, according to the following table: +** +** +**
createFlag Behaviour when page is not already in cache +**
0 Do not allocate a new page. Return NULL. +**
1 Allocate a new page if it easy and convenient to do so. +** Otherwise return NULL. +**
2 Make every effort to allocate a new page. Only return +** NULL if allocating a new page is effectively impossible. +**
+** +** SQLite will normally invoke xFetch() with a createFlag of 0 or 1. If +** a call to xFetch() with createFlag==1 returns NULL, then SQLite will +** attempt to unpin one or more cache pages by spilling the content of +** pinned pages to disk and synching the operating system disk cache. After +** attempting to unpin pages, the xFetch() method will be invoked again with +** a createFlag of 2. +** +** xUnpin() is called by SQLite with a pointer to a currently pinned page +** as its second argument. If the third parameter, discard, is non-zero, +** then the page should be evicted from the cache. In this case SQLite +** assumes that the next time the page is retrieved from the cache using +** the xFetch() method, it will be zeroed. If the discard parameter is +** zero, then the page is considered to be unpinned. The cache implementation +** may choose to evict unpinned pages at any time. +** +** The cache is not required to perform any reference counting. A single +** call to xUnpin() unpins the page regardless of the number of prior calls +** to xFetch(). +** +** The xRekey() method is used to change the key value associated with the +** page passed as the second argument from oldKey to newKey. If the cache +** previously contains an entry associated with newKey, it should be +** discarded. Any prior cache entry associated with newKey is guaranteed not +** to be pinned. +** +** When SQLite calls the xTruncate() method, the cache must discard all +** existing cache entries with page numbers (keys) greater than or equal +** to the value of the iLimit parameter passed to xTruncate(). If any +** of these pages are pinned, they are implicitly unpinned, meaning that +** they can be safely discarded. +** +** The xDestroy() method is used to delete a cache allocated by xCreate(). +** All resources associated with the specified cache should be freed. After +** calling the xDestroy() method, SQLite considers the [sqlite3_pcache*] +** handle invalid, and will not use it with any other sqlite3_pcache_methods +** functions. +*/ +typedef struct sqlite3_pcache_methods sqlite3_pcache_methods; +struct sqlite3_pcache_methods { + void *pArg; + int (*xInit)(void*); + void (*xShutdown)(void*); + sqlite3_pcache *(*xCreate)(int szPage, int bPurgeable); + void (*xCachesize)(sqlite3_pcache*, int nCachesize); + int (*xPagecount)(sqlite3_pcache*); + void *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag); + void (*xUnpin)(sqlite3_pcache*, void*, int discard); + void (*xRekey)(sqlite3_pcache*, void*, unsigned oldKey, unsigned newKey); + void (*xTruncate)(sqlite3_pcache*, unsigned iLimit); + void (*xDestroy)(sqlite3_pcache*); +}; + +/* +** CAPI3REF: Online Backup Object +** EXPERIMENTAL +** +** The sqlite3_backup object records state information about an ongoing +** online backup operation. The sqlite3_backup object is created by +** a call to [sqlite3_backup_init()] and is destroyed by a call to +** [sqlite3_backup_finish()]. +** +** See Also: [Using the SQLite Online Backup API] +*/ +typedef struct sqlite3_backup sqlite3_backup; + +/* +** CAPI3REF: Online Backup API. +** EXPERIMENTAL +** +** This API is used to overwrite the contents of one database with that +** of another. It is useful either for creating backups of databases or +** for copying in-memory databases to or from persistent files. +** +** See Also: [Using the SQLite Online Backup API] +** +** Exclusive access is required to the destination database for the +** duration of the operation. However the source database is only +** read-locked while it is actually being read, it is not locked +** continuously for the entire operation. Thus, the backup may be +** performed on a live database without preventing other users from +** writing to the database for an extended period of time. +** +** To perform a backup operation: +**
    +**
  1. sqlite3_backup_init() is called once to initialize the +** backup, +**
  2. sqlite3_backup_step() is called one or more times to transfer +** the data between the two databases, and finally +**
  3. sqlite3_backup_finish() is called to release all resources +** associated with the backup operation. +**
+** There should be exactly one call to sqlite3_backup_finish() for each +** successful call to sqlite3_backup_init(). +** +** sqlite3_backup_init() +** +** The first two arguments passed to [sqlite3_backup_init()] are the database +** handle associated with the destination database and the database name +** used to attach the destination database to the handle. The database name +** is "main" for the main database, "temp" for the temporary database, or +** the name specified as part of the [ATTACH] statement if the destination is +** an attached database. The third and fourth arguments passed to +** sqlite3_backup_init() identify the [database connection] +** and database name used +** to access the source database. The values passed for the source and +** destination [database connection] parameters must not be the same. +** +** If an error occurs within sqlite3_backup_init(), then NULL is returned +** and an error code and error message written into the [database connection] +** passed as the first argument. They may be retrieved using the +** [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()] functions. +** Otherwise, if successful, a pointer to an [sqlite3_backup] object is +** returned. This pointer may be used with the sqlite3_backup_step() and +** sqlite3_backup_finish() functions to perform the specified backup +** operation. +** +** sqlite3_backup_step() +** +** Function [sqlite3_backup_step()] is used to copy up to nPage pages between +** the source and destination databases, where nPage is the value of the +** second parameter passed to sqlite3_backup_step(). If nPage is a negative +** value, all remaining source pages are copied. If the required pages are +** succesfully copied, but there are still more pages to copy before the +** backup is complete, it returns [SQLITE_OK]. If no error occured and there +** are no more pages to copy, then [SQLITE_DONE] is returned. If an error +** occurs, then an SQLite error code is returned. As well as [SQLITE_OK] and +** [SQLITE_DONE], a call to sqlite3_backup_step() may return [SQLITE_READONLY], +** [SQLITE_NOMEM], [SQLITE_BUSY], [SQLITE_LOCKED], or an +** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] extended error code. +** +** As well as the case where the destination database file was opened for +** read-only access, sqlite3_backup_step() may return [SQLITE_READONLY] if +** the destination is an in-memory database with a different page size +** from the source database. +** +** If sqlite3_backup_step() cannot obtain a required file-system lock, then +** the [sqlite3_busy_handler | busy-handler function] +** is invoked (if one is specified). If the +** busy-handler returns non-zero before the lock is available, then +** [SQLITE_BUSY] is returned to the caller. In this case the call to +** sqlite3_backup_step() can be retried later. If the source +** [database connection] +** is being used to write to the source database when sqlite3_backup_step() +** is called, then [SQLITE_LOCKED] is returned immediately. Again, in this +** case the call to sqlite3_backup_step() can be retried later on. If +** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or +** [SQLITE_READONLY] is returned, then +** there is no point in retrying the call to sqlite3_backup_step(). These +** errors are considered fatal. At this point the application must accept +** that the backup operation has failed and pass the backup operation handle +** to the sqlite3_backup_finish() to release associated resources. +** +** Following the first call to sqlite3_backup_step(), an exclusive lock is +** obtained on the destination file. It is not released until either +** sqlite3_backup_finish() is called or the backup operation is complete +** and sqlite3_backup_step() returns [SQLITE_DONE]. Additionally, each time +** a call to sqlite3_backup_step() is made a [shared lock] is obtained on +** the source database file. This lock is released before the +** sqlite3_backup_step() call returns. Because the source database is not +** locked between calls to sqlite3_backup_step(), it may be modified mid-way +** through the backup procedure. If the source database is modified by an +** external process or via a database connection other than the one being +** used by the backup operation, then the backup will be transparently +** restarted by the next call to sqlite3_backup_step(). If the source +** database is modified by the using the same database connection as is used +** by the backup operation, then the backup database is transparently +** updated at the same time. +** +** sqlite3_backup_finish() +** +** Once sqlite3_backup_step() has returned [SQLITE_DONE], or when the +** application wishes to abandon the backup operation, the [sqlite3_backup] +** object should be passed to sqlite3_backup_finish(). This releases all +** resources associated with the backup operation. If sqlite3_backup_step() +** has not yet returned [SQLITE_DONE], then any active write-transaction on the +** destination database is rolled back. The [sqlite3_backup] object is invalid +** and may not be used following a call to sqlite3_backup_finish(). +** +** The value returned by sqlite3_backup_finish is [SQLITE_OK] if no error +** occurred, regardless or whether or not sqlite3_backup_step() was called +** a sufficient number of times to complete the backup operation. Or, if +** an out-of-memory condition or IO error occured during a call to +** sqlite3_backup_step() then [SQLITE_NOMEM] or an +** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] error code +** is returned. In this case the error code and an error message are +** written to the destination [database connection]. +** +** A return of [SQLITE_BUSY] or [SQLITE_LOCKED] from sqlite3_backup_step() is +** not a permanent error and does not affect the return value of +** sqlite3_backup_finish(). +** +** sqlite3_backup_remaining(), sqlite3_backup_pagecount() +** +** Each call to sqlite3_backup_step() sets two values stored internally +** by an [sqlite3_backup] object. The number of pages still to be backed +** up, which may be queried by sqlite3_backup_remaining(), and the total +** number of pages in the source database file, which may be queried by +** sqlite3_backup_pagecount(). +** +** The values returned by these functions are only updated by +** sqlite3_backup_step(). If the source database is modified during a backup +** operation, then the values are not updated to account for any extra +** pages that need to be updated or the size of the source database file +** changing. +** +** Concurrent Usage of Database Handles +** +** The source [database connection] may be used by the application for other +** purposes while a backup operation is underway or being initialized. +** If SQLite is compiled and configured to support threadsafe database +** connections, then the source database connection may be used concurrently +** from within other threads. +** +** However, the application must guarantee that the destination database +** connection handle is not passed to any other API (by any thread) after +** sqlite3_backup_init() is called and before the corresponding call to +** sqlite3_backup_finish(). Unfortunately SQLite does not currently check +** for this, if the application does use the destination [database connection] +** for some other purpose during a backup operation, things may appear to +** work correctly but in fact be subtly malfunctioning. Use of the +** destination database connection while a backup is in progress might +** also cause a mutex deadlock. +** +** Furthermore, if running in [shared cache mode], the application must +** guarantee that the shared cache used by the destination database +** is not accessed while the backup is running. In practice this means +** that the application must guarantee that the file-system file being +** backed up to is not accessed by any connection within the process, +** not just the specific connection that was passed to sqlite3_backup_init(). +** +** The [sqlite3_backup] object itself is partially threadsafe. Multiple +** threads may safely make multiple concurrent calls to sqlite3_backup_step(). +** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount() +** APIs are not strictly speaking threadsafe. If they are invoked at the +** same time as another thread is invoking sqlite3_backup_step() it is +** possible that they return invalid values. +*/ +SQLITE_API sqlite3_backup *sqlite3_backup_init( + sqlite3 *pDest, /* Destination database handle */ + const char *zDestName, /* Destination database name */ + sqlite3 *pSource, /* Source database handle */ + const char *zSourceName /* Source database name */ +); +SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage); +SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p); +SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p); +SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p); + +/* +** CAPI3REF: Unlock Notification +** EXPERIMENTAL +** +** When running in shared-cache mode, a database operation may fail with +** an [SQLITE_LOCKED] error if the required locks on the shared-cache or +** individual tables within the shared-cache cannot be obtained. See +** [SQLite Shared-Cache Mode] for a description of shared-cache locking. +** This API may be used to register a callback that SQLite will invoke +** when the connection currently holding the required lock relinquishes it. +** This API is only available if the library was compiled with the +** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined. +** +** See Also: [Using the SQLite Unlock Notification Feature]. +** +** Shared-cache locks are released when a database connection concludes +** its current transaction, either by committing it or rolling it back. +** +** When a connection (known as the blocked connection) fails to obtain a +** shared-cache lock and SQLITE_LOCKED is returned to the caller, the +** identity of the database connection (the blocking connection) that +** has locked the required resource is stored internally. After an +** application receives an SQLITE_LOCKED error, it may call the +** sqlite3_unlock_notify() method with the blocked connection handle as +** the first argument to register for a callback that will be invoked +** when the blocking connections current transaction is concluded. The +** callback is invoked from within the [sqlite3_step] or [sqlite3_close] +** call that concludes the blocking connections transaction. +** +** If sqlite3_unlock_notify() is called in a multi-threaded application, +** there is a chance that the blocking connection will have already +** concluded its transaction by the time sqlite3_unlock_notify() is invoked. +** If this happens, then the specified callback is invoked immediately, +** from within the call to sqlite3_unlock_notify(). +** +** If the blocked connection is attempting to obtain a write-lock on a +** shared-cache table, and more than one other connection currently holds +** a read-lock on the same table, then SQLite arbitrarily selects one of +** the other connections to use as the blocking connection. +** +** There may be at most one unlock-notify callback registered by a +** blocked connection. If sqlite3_unlock_notify() is called when the +** blocked connection already has a registered unlock-notify callback, +** then the new callback replaces the old. If sqlite3_unlock_notify() is +** called with a NULL pointer as its second argument, then any existing +** unlock-notify callback is cancelled. The blocked connections +** unlock-notify callback may also be canceled by closing the blocked +** connection using [sqlite3_close()]. +** +** The unlock-notify callback is not reentrant. If an application invokes +** any sqlite3_xxx API functions from within an unlock-notify callback, a +** crash or deadlock may be the result. +** +** Unless deadlock is detected (see below), sqlite3_unlock_notify() always +** returns SQLITE_OK. +** +** Callback Invocation Details +** +** When an unlock-notify callback is registered, the application provides a +** single void* pointer that is passed to the callback when it is invoked. +** However, the signature of the callback function allows SQLite to pass +** it an array of void* context pointers. The first argument passed to +** an unlock-notify callback is a pointer to an array of void* pointers, +** and the second is the number of entries in the array. +** +** When a blocking connections transaction is concluded, there may be +** more than one blocked connection that has registered for an unlock-notify +** callback. If two or more such blocked connections have specified the +** same callback function, then instead of invoking the callback function +** multiple times, it is invoked once with the set of void* context pointers +** specified by the blocked connections bundled together into an array. +** This gives the application an opportunity to prioritize any actions +** related to the set of unblocked database connections. +** +** Deadlock Detection +** +** Assuming that after registering for an unlock-notify callback a +** database waits for the callback to be issued before taking any further +** action (a reasonable assumption), then using this API may cause the +** application to deadlock. For example, if connection X is waiting for +** connection Y's transaction to be concluded, and similarly connection +** Y is waiting on connection X's transaction, then neither connection +** will proceed and the system may remain deadlocked indefinitely. +** +** To avoid this scenario, the sqlite3_unlock_notify() performs deadlock +** detection. If a given call to sqlite3_unlock_notify() would put the +** system in a deadlocked state, then SQLITE_LOCKED is returned and no +** unlock-notify callback is registered. The system is said to be in +** a deadlocked state if connection A has registered for an unlock-notify +** callback on the conclusion of connection B's transaction, and connection +** B has itself registered for an unlock-notify callback when connection +** A's transaction is concluded. Indirect deadlock is also detected, so +** the system is also considered to be deadlocked if connection B has +** registered for an unlock-notify callback on the conclusion of connection +** C's transaction, where connection C is waiting on connection A. Any +** number of levels of indirection are allowed. +** +** The "DROP TABLE" Exception +** +** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost +** always appropriate to call sqlite3_unlock_notify(). There is however, +** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement, +** SQLite checks if there are any currently executing SELECT statements +** that belong to the same connection. If there are, SQLITE_LOCKED is +** returned. In this case there is no "blocking connection", so invoking +** sqlite3_unlock_notify() results in the unlock-notify callback being +** invoked immediately. If the application then re-attempts the "DROP TABLE" +** or "DROP INDEX" query, an infinite loop might be the result. +** +** One way around this problem is to check the extended error code returned +** by an sqlite3_step() call. If there is a blocking connection, then the +** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in +** the special "DROP TABLE/INDEX" case, the extended error code is just +** SQLITE_LOCKED. +*/ +SQLITE_API int sqlite3_unlock_notify( + sqlite3 *pBlocked, /* Waiting connection */ + void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */ + void *pNotifyArg /* Argument to pass to xNotify */ +); + + +/* +** CAPI3REF: String Comparison +** EXPERIMENTAL +** +** The [sqlite3_strnicmp()] API allows applications and extensions to +** compare the contents of two buffers containing UTF-8 strings in a +** case-indendent fashion, using the same definition of case independence +** that SQLite uses internally when comparing identifiers. +*/ +SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); + +/* +** Undo the hack that converts floating point types to integer for +** builds on processors without floating point support. +*/ +#ifdef SQLITE_OMIT_FLOATING_POINT +# undef double +#endif + +#ifdef __cplusplus +} /* End of the 'extern "C"' block */ +#endif +#endif + diff --git a/3rdParty/include/sqlite3/sqlite3ext.h b/3rdParty/include/sqlite3/sqlite3ext.h new file mode 100644 index 00000000..55266466 --- /dev/null +++ b/3rdParty/include/sqlite3/sqlite3ext.h @@ -0,0 +1,380 @@ +/* +** 2006 June 7 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** This header file defines the SQLite interface for use by +** shared libraries that want to be imported as extensions into +** an SQLite instance. Shared libraries that intend to be loaded +** as extensions by SQLite should #include this file instead of +** sqlite3.h. +** +** @(#) $Id: sqlite3ext.h,v 1.25 2008/10/12 00:27:54 shane Exp $ +*/ +#ifndef _SQLITE3EXT_H_ +#define _SQLITE3EXT_H_ +#include "sqlite3.h" + +typedef struct sqlite3_api_routines sqlite3_api_routines; + +/* +** The following structure holds pointers to all of the SQLite API +** routines. +** +** WARNING: In order to maintain backwards compatibility, add new +** interfaces to the end of this structure only. If you insert new +** interfaces in the middle of this structure, then older different +** versions of SQLite will not be able to load each others' shared +** libraries! +*/ +struct sqlite3_api_routines { + void * (*aggregate_context)(sqlite3_context*,int nBytes); + int (*aggregate_count)(sqlite3_context*); + int (*bind_blob)(sqlite3_stmt*,int,const void*,int n,void(*)(void*)); + int (*bind_double)(sqlite3_stmt*,int,double); + int (*bind_int)(sqlite3_stmt*,int,int); + int (*bind_int64)(sqlite3_stmt*,int,sqlite_int64); + int (*bind_null)(sqlite3_stmt*,int); + int (*bind_parameter_count)(sqlite3_stmt*); + int (*bind_parameter_index)(sqlite3_stmt*,const char*zName); + const char * (*bind_parameter_name)(sqlite3_stmt*,int); + int (*bind_text)(sqlite3_stmt*,int,const char*,int n,void(*)(void*)); + int (*bind_text16)(sqlite3_stmt*,int,const void*,int,void(*)(void*)); + int (*bind_value)(sqlite3_stmt*,int,const sqlite3_value*); + int (*busy_handler)(sqlite3*,int(*)(void*,int),void*); + int (*busy_timeout)(sqlite3*,int ms); + int (*changes)(sqlite3*); + int (*close)(sqlite3*); + int (*collation_needed)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const char*)); + int (*collation_needed16)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const void*)); + const void * (*column_blob)(sqlite3_stmt*,int iCol); + int (*column_bytes)(sqlite3_stmt*,int iCol); + int (*column_bytes16)(sqlite3_stmt*,int iCol); + int (*column_count)(sqlite3_stmt*pStmt); + const char * (*column_database_name)(sqlite3_stmt*,int); + const void * (*column_database_name16)(sqlite3_stmt*,int); + const char * (*column_decltype)(sqlite3_stmt*,int i); + const void * (*column_decltype16)(sqlite3_stmt*,int); + double (*column_double)(sqlite3_stmt*,int iCol); + int (*column_int)(sqlite3_stmt*,int iCol); + sqlite_int64 (*column_int64)(sqlite3_stmt*,int iCol); + const char * (*column_name)(sqlite3_stmt*,int); + const void * (*column_name16)(sqlite3_stmt*,int); + const char * (*column_origin_name)(sqlite3_stmt*,int); + const void * (*column_origin_name16)(sqlite3_stmt*,int); + const char * (*column_table_name)(sqlite3_stmt*,int); + const void * (*column_table_name16)(sqlite3_stmt*,int); + const unsigned char * (*column_text)(sqlite3_stmt*,int iCol); + const void * (*column_text16)(sqlite3_stmt*,int iCol); + int (*column_type)(sqlite3_stmt*,int iCol); + sqlite3_value* (*column_value)(sqlite3_stmt*,int iCol); + void * (*commit_hook)(sqlite3*,int(*)(void*),void*); + int (*complete)(const char*sql); + int (*complete16)(const void*sql); + int (*create_collation)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*)); + int (*create_collation16)(sqlite3*,const void*,int,void*,int(*)(void*,int,const void*,int,const void*)); + int (*create_function)(sqlite3*,const char*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*)); + int (*create_function16)(sqlite3*,const void*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*)); + int (*create_module)(sqlite3*,const char*,const sqlite3_module*,void*); + int (*data_count)(sqlite3_stmt*pStmt); + sqlite3 * (*db_handle)(sqlite3_stmt*); + int (*declare_vtab)(sqlite3*,const char*); + int (*enable_shared_cache)(int); + int (*errcode)(sqlite3*db); + const char * (*errmsg)(sqlite3*); + const void * (*errmsg16)(sqlite3*); + int (*exec)(sqlite3*,const char*,sqlite3_callback,void*,char**); + int (*expired)(sqlite3_stmt*); + int (*finalize)(sqlite3_stmt*pStmt); + void (*free)(void*); + void (*free_table)(char**result); + int (*get_autocommit)(sqlite3*); + void * (*get_auxdata)(sqlite3_context*,int); + int (*get_table)(sqlite3*,const char*,char***,int*,int*,char**); + int (*global_recover)(void); + void (*interruptx)(sqlite3*); + sqlite_int64 (*last_insert_rowid)(sqlite3*); + const char * (*libversion)(void); + int (*libversion_number)(void); + void *(*malloc)(int); + char * (*mprintf)(const char*,...); + int (*open)(const char*,sqlite3**); + int (*open16)(const void*,sqlite3**); + int (*prepare)(sqlite3*,const char*,int,sqlite3_stmt**,const char**); + int (*prepare16)(sqlite3*,const void*,int,sqlite3_stmt**,const void**); + void * (*profile)(sqlite3*,void(*)(void*,const char*,sqlite_uint64),void*); + void (*progress_handler)(sqlite3*,int,int(*)(void*),void*); + void *(*realloc)(void*,int); + int (*reset)(sqlite3_stmt*pStmt); + void (*result_blob)(sqlite3_context*,const void*,int,void(*)(void*)); + void (*result_double)(sqlite3_context*,double); + void (*result_error)(sqlite3_context*,const char*,int); + void (*result_error16)(sqlite3_context*,const void*,int); + void (*result_int)(sqlite3_context*,int); + void (*result_int64)(sqlite3_context*,sqlite_int64); + void (*result_null)(sqlite3_context*); + void (*result_text)(sqlite3_context*,const char*,int,void(*)(void*)); + void (*result_text16)(sqlite3_context*,const void*,int,void(*)(void*)); + void (*result_text16be)(sqlite3_context*,const void*,int,void(*)(void*)); + void (*result_text16le)(sqlite3_context*,const void*,int,void(*)(void*)); + void (*result_value)(sqlite3_context*,sqlite3_value*); + void * (*rollback_hook)(sqlite3*,void(*)(void*),void*); + int (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*,const char*,const char*),void*); + void (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*)); + char * (*snprintf)(int,char*,const char*,...); + int (*step)(sqlite3_stmt*); + int (*table_column_metadata)(sqlite3*,const char*,const char*,const char*,char const**,char const**,int*,int*,int*); + void (*thread_cleanup)(void); + int (*total_changes)(sqlite3*); + void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*); + int (*transfer_bindings)(sqlite3_stmt*,sqlite3_stmt*); + void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*,sqlite_int64),void*); + void * (*user_data)(sqlite3_context*); + const void * (*value_blob)(sqlite3_value*); + int (*value_bytes)(sqlite3_value*); + int (*value_bytes16)(sqlite3_value*); + double (*value_double)(sqlite3_value*); + int (*value_int)(sqlite3_value*); + sqlite_int64 (*value_int64)(sqlite3_value*); + int (*value_numeric_type)(sqlite3_value*); + const unsigned char * (*value_text)(sqlite3_value*); + const void * (*value_text16)(sqlite3_value*); + const void * (*value_text16be)(sqlite3_value*); + const void * (*value_text16le)(sqlite3_value*); + int (*value_type)(sqlite3_value*); + char *(*vmprintf)(const char*,va_list); + /* Added ??? */ + int (*overload_function)(sqlite3*, const char *zFuncName, int nArg); + /* Added by 3.3.13 */ + int (*prepare_v2)(sqlite3*,const char*,int,sqlite3_stmt**,const char**); + int (*prepare16_v2)(sqlite3*,const void*,int,sqlite3_stmt**,const void**); + int (*clear_bindings)(sqlite3_stmt*); + /* Added by 3.4.1 */ + int (*create_module_v2)(sqlite3*,const char*,const sqlite3_module*,void*,void (*xDestroy)(void *)); + /* Added by 3.5.0 */ + int (*bind_zeroblob)(sqlite3_stmt*,int,int); + int (*blob_bytes)(sqlite3_blob*); + int (*blob_close)(sqlite3_blob*); + int (*blob_open)(sqlite3*,const char*,const char*,const char*,sqlite3_int64,int,sqlite3_blob**); + int (*blob_read)(sqlite3_blob*,void*,int,int); + int (*blob_write)(sqlite3_blob*,const void*,int,int); + int (*create_collation_v2)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*),void(*)(void*)); + int (*file_control)(sqlite3*,const char*,int,void*); + sqlite3_int64 (*memory_highwater)(int); + sqlite3_int64 (*memory_used)(void); + sqlite3_mutex *(*mutex_alloc)(int); + void (*mutex_enter)(sqlite3_mutex*); + void (*mutex_free)(sqlite3_mutex*); + void (*mutex_leave)(sqlite3_mutex*); + int (*mutex_try)(sqlite3_mutex*); + int (*open_v2)(const char*,sqlite3**,int,const char*); + int (*release_memory)(int); + void (*result_error_nomem)(sqlite3_context*); + void (*result_error_toobig)(sqlite3_context*); + int (*sleep)(int); + void (*soft_heap_limit)(int); + sqlite3_vfs *(*vfs_find)(const char*); + int (*vfs_register)(sqlite3_vfs*,int); + int (*vfs_unregister)(sqlite3_vfs*); + int (*xthreadsafe)(void); + void (*result_zeroblob)(sqlite3_context*,int); + void (*result_error_code)(sqlite3_context*,int); + int (*test_control)(int, ...); + void (*randomness)(int,void*); + sqlite3 *(*context_db_handle)(sqlite3_context*); + int (*extended_result_codes)(sqlite3*,int); + int (*limit)(sqlite3*,int,int); + sqlite3_stmt *(*next_stmt)(sqlite3*,sqlite3_stmt*); + const char *(*sql)(sqlite3_stmt*); + int (*status)(int,int*,int*,int); +}; + +/* +** The following macros redefine the API routines so that they are +** redirected throught the global sqlite3_api structure. +** +** This header file is also used by the loadext.c source file +** (part of the main SQLite library - not an extension) so that +** it can get access to the sqlite3_api_routines structure +** definition. But the main library does not want to redefine +** the API. So the redefinition macros are only valid if the +** SQLITE_CORE macros is undefined. +*/ +#ifndef SQLITE_CORE +#define sqlite3_aggregate_context sqlite3_api->aggregate_context +#ifndef SQLITE_OMIT_DEPRECATED +#define sqlite3_aggregate_count sqlite3_api->aggregate_count +#endif +#define sqlite3_bind_blob sqlite3_api->bind_blob +#define sqlite3_bind_double sqlite3_api->bind_double +#define sqlite3_bind_int sqlite3_api->bind_int +#define sqlite3_bind_int64 sqlite3_api->bind_int64 +#define sqlite3_bind_null sqlite3_api->bind_null +#define sqlite3_bind_parameter_count sqlite3_api->bind_parameter_count +#define sqlite3_bind_parameter_index sqlite3_api->bind_parameter_index +#define sqlite3_bind_parameter_name sqlite3_api->bind_parameter_name +#define sqlite3_bind_text sqlite3_api->bind_text +#define sqlite3_bind_text16 sqlite3_api->bind_text16 +#define sqlite3_bind_value sqlite3_api->bind_value +#define sqlite3_busy_handler sqlite3_api->busy_handler +#define sqlite3_busy_timeout sqlite3_api->busy_timeout +#define sqlite3_changes sqlite3_api->changes +#define sqlite3_close sqlite3_api->close +#define sqlite3_collation_needed sqlite3_api->collation_needed +#define sqlite3_collation_needed16 sqlite3_api->collation_needed16 +#define sqlite3_column_blob sqlite3_api->column_blob +#define sqlite3_column_bytes sqlite3_api->column_bytes +#define sqlite3_column_bytes16 sqlite3_api->column_bytes16 +#define sqlite3_column_count sqlite3_api->column_count +#define sqlite3_column_database_name sqlite3_api->column_database_name +#define sqlite3_column_database_name16 sqlite3_api->column_database_name16 +#define sqlite3_column_decltype sqlite3_api->column_decltype +#define sqlite3_column_decltype16 sqlite3_api->column_decltype16 +#define sqlite3_column_double sqlite3_api->column_double +#define sqlite3_column_int sqlite3_api->column_int +#define sqlite3_column_int64 sqlite3_api->column_int64 +#define sqlite3_column_name sqlite3_api->column_name +#define sqlite3_column_name16 sqlite3_api->column_name16 +#define sqlite3_column_origin_name sqlite3_api->column_origin_name +#define sqlite3_column_origin_name16 sqlite3_api->column_origin_name16 +#define sqlite3_column_table_name sqlite3_api->column_table_name +#define sqlite3_column_table_name16 sqlite3_api->column_table_name16 +#define sqlite3_column_text sqlite3_api->column_text +#define sqlite3_column_text16 sqlite3_api->column_text16 +#define sqlite3_column_type sqlite3_api->column_type +#define sqlite3_column_value sqlite3_api->column_value +#define sqlite3_commit_hook sqlite3_api->commit_hook +#define sqlite3_complete sqlite3_api->complete +#define sqlite3_complete16 sqlite3_api->complete16 +#define sqlite3_create_collation sqlite3_api->create_collation +#define sqlite3_create_collation16 sqlite3_api->create_collation16 +#define sqlite3_create_function sqlite3_api->create_function +#define sqlite3_create_function16 sqlite3_api->create_function16 +#define sqlite3_create_module sqlite3_api->create_module +#define sqlite3_create_module_v2 sqlite3_api->create_module_v2 +#define sqlite3_data_count sqlite3_api->data_count +#define sqlite3_db_handle sqlite3_api->db_handle +#define sqlite3_declare_vtab sqlite3_api->declare_vtab +#define sqlite3_enable_shared_cache sqlite3_api->enable_shared_cache +#define sqlite3_errcode sqlite3_api->errcode +#define sqlite3_errmsg sqlite3_api->errmsg +#define sqlite3_errmsg16 sqlite3_api->errmsg16 +#define sqlite3_exec sqlite3_api->exec +#ifndef SQLITE_OMIT_DEPRECATED +#define sqlite3_expired sqlite3_api->expired +#endif +#define sqlite3_finalize sqlite3_api->finalize +#define sqlite3_free sqlite3_api->free +#define sqlite3_free_table sqlite3_api->free_table +#define sqlite3_get_autocommit sqlite3_api->get_autocommit +#define sqlite3_get_auxdata sqlite3_api->get_auxdata +#define sqlite3_get_table sqlite3_api->get_table +#ifndef SQLITE_OMIT_DEPRECATED +#define sqlite3_global_recover sqlite3_api->global_recover +#endif +#define sqlite3_interrupt sqlite3_api->interruptx +#define sqlite3_last_insert_rowid sqlite3_api->last_insert_rowid +#define sqlite3_libversion sqlite3_api->libversion +#define sqlite3_libversion_number sqlite3_api->libversion_number +#define sqlite3_malloc sqlite3_api->malloc +#define sqlite3_mprintf sqlite3_api->mprintf +#define sqlite3_open sqlite3_api->open +#define sqlite3_open16 sqlite3_api->open16 +#define sqlite3_prepare sqlite3_api->prepare +#define sqlite3_prepare16 sqlite3_api->prepare16 +#define sqlite3_prepare_v2 sqlite3_api->prepare_v2 +#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2 +#define sqlite3_profile sqlite3_api->profile +#define sqlite3_progress_handler sqlite3_api->progress_handler +#define sqlite3_realloc sqlite3_api->realloc +#define sqlite3_reset sqlite3_api->reset +#define sqlite3_result_blob sqlite3_api->result_blob +#define sqlite3_result_double sqlite3_api->result_double +#define sqlite3_result_error sqlite3_api->result_error +#define sqlite3_result_error16 sqlite3_api->result_error16 +#define sqlite3_result_int sqlite3_api->result_int +#define sqlite3_result_int64 sqlite3_api->result_int64 +#define sqlite3_result_null sqlite3_api->result_null +#define sqlite3_result_text sqlite3_api->result_text +#define sqlite3_result_text16 sqlite3_api->result_text16 +#define sqlite3_result_text16be sqlite3_api->result_text16be +#define sqlite3_result_text16le sqlite3_api->result_text16le +#define sqlite3_result_value sqlite3_api->result_value +#define sqlite3_rollback_hook sqlite3_api->rollback_hook +#define sqlite3_set_authorizer sqlite3_api->set_authorizer +#define sqlite3_set_auxdata sqlite3_api->set_auxdata +#define sqlite3_snprintf sqlite3_api->snprintf +#define sqlite3_step sqlite3_api->step +#define sqlite3_table_column_metadata sqlite3_api->table_column_metadata +#define sqlite3_thread_cleanup sqlite3_api->thread_cleanup +#define sqlite3_total_changes sqlite3_api->total_changes +#define sqlite3_trace sqlite3_api->trace +#ifndef SQLITE_OMIT_DEPRECATED +#define sqlite3_transfer_bindings sqlite3_api->transfer_bindings +#endif +#define sqlite3_update_hook sqlite3_api->update_hook +#define sqlite3_user_data sqlite3_api->user_data +#define sqlite3_value_blob sqlite3_api->value_blob +#define sqlite3_value_bytes sqlite3_api->value_bytes +#define sqlite3_value_bytes16 sqlite3_api->value_bytes16 +#define sqlite3_value_double sqlite3_api->value_double +#define sqlite3_value_int sqlite3_api->value_int +#define sqlite3_value_int64 sqlite3_api->value_int64 +#define sqlite3_value_numeric_type sqlite3_api->value_numeric_type +#define sqlite3_value_text sqlite3_api->value_text +#define sqlite3_value_text16 sqlite3_api->value_text16 +#define sqlite3_value_text16be sqlite3_api->value_text16be +#define sqlite3_value_text16le sqlite3_api->value_text16le +#define sqlite3_value_type sqlite3_api->value_type +#define sqlite3_vmprintf sqlite3_api->vmprintf +#define sqlite3_overload_function sqlite3_api->overload_function +#define sqlite3_prepare_v2 sqlite3_api->prepare_v2 +#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2 +#define sqlite3_clear_bindings sqlite3_api->clear_bindings +#define sqlite3_bind_zeroblob sqlite3_api->bind_zeroblob +#define sqlite3_blob_bytes sqlite3_api->blob_bytes +#define sqlite3_blob_close sqlite3_api->blob_close +#define sqlite3_blob_open sqlite3_api->blob_open +#define sqlite3_blob_read sqlite3_api->blob_read +#define sqlite3_blob_write sqlite3_api->blob_write +#define sqlite3_create_collation_v2 sqlite3_api->create_collation_v2 +#define sqlite3_file_control sqlite3_api->file_control +#define sqlite3_memory_highwater sqlite3_api->memory_highwater +#define sqlite3_memory_used sqlite3_api->memory_used +#define sqlite3_mutex_alloc sqlite3_api->mutex_alloc +#define sqlite3_mutex_enter sqlite3_api->mutex_enter +#define sqlite3_mutex_free sqlite3_api->mutex_free +#define sqlite3_mutex_leave sqlite3_api->mutex_leave +#define sqlite3_mutex_try sqlite3_api->mutex_try +#define sqlite3_open_v2 sqlite3_api->open_v2 +#define sqlite3_release_memory sqlite3_api->release_memory +#define sqlite3_result_error_nomem sqlite3_api->result_error_nomem +#define sqlite3_result_error_toobig sqlite3_api->result_error_toobig +#define sqlite3_sleep sqlite3_api->sleep +#define sqlite3_soft_heap_limit sqlite3_api->soft_heap_limit +#define sqlite3_vfs_find sqlite3_api->vfs_find +#define sqlite3_vfs_register sqlite3_api->vfs_register +#define sqlite3_vfs_unregister sqlite3_api->vfs_unregister +#define sqlite3_threadsafe sqlite3_api->xthreadsafe +#define sqlite3_result_zeroblob sqlite3_api->result_zeroblob +#define sqlite3_result_error_code sqlite3_api->result_error_code +#define sqlite3_test_control sqlite3_api->test_control +#define sqlite3_randomness sqlite3_api->randomness +#define sqlite3_context_db_handle sqlite3_api->context_db_handle +#define sqlite3_extended_result_codes sqlite3_api->extended_result_codes +#define sqlite3_limit sqlite3_api->limit +#define sqlite3_next_stmt sqlite3_api->next_stmt +#define sqlite3_sql sqlite3_api->sql +#define sqlite3_status sqlite3_api->status +#endif /* SQLITE_CORE */ + +#define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api = 0; +#define SQLITE_EXTENSION_INIT2(v) sqlite3_api = v; + +#endif /* _SQLITE3EXT_H_ */ diff --git a/3rdParty/lib/libcppunit.dll.a b/3rdParty/lib/libcppunit.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..695ecc0e674b2326a03a8bd1dcd8508ae278f762 GIT binary patch literal 596414 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

Af&`(F=G7vu0y0*9|N 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

Fg8O-L%C`mh@M(4aG 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πZLqN&|UL{;4+ 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 literal 0 HcmV?d00001 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..0bc3e9c8 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,271 @@ +# Top-Level CmakeLists.txt +IF(APPLE OR WIN32) + # BundleUtilities.cmake from 2.8.3 required on Mac and ?Windows? + cmake_minimum_required(VERSION 2.8.3) +ELSE() + cmake_minimum_required(VERSION 2.8.0) +ENDIF() +PROJECT( RTAB-Map ) +SET(PROJECT_PREFIX rtabmap) + +####### local cmake modules ####### +SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules") + +####################### +# VERSION +####################### +SET(PROJECT_VERSION "0.2.7") + +STRING(REGEX MATCHALL "[0-9]" PROJECT_VERSION_PARTS "${PROJECT_VERSION}") + +LIST(GET PROJECT_VERSION_PARTS 0 PROJECT_VERSION_MAJOR) +LIST(GET PROJECT_VERSION_PARTS 1 PROJECT_VERSION_MINOR) +LIST(GET PROJECT_VERSION_PARTS 2 PROJECT_VERSION_PATCH) + +SET(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") + +CONFIGURE_FILE(Version.h.in ${PROJECT_SOURCE_DIR}/corelib/include/${PROJECT_PREFIX}/core/Version.h) + +####### COMPILATION PARAMS ####### +# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release: +IF(${CMAKE_GENERATOR} MATCHES ".*Makefiles") + IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +ENDIF(${CMAKE_GENERATOR} MATCHES ".*Makefiles") + +SET(CMAKE_DEBUG_POSTFIX "d") + +ADD_DEFINITIONS( "-Wall" ) +IF(WIN32 AND NOT MINGW) + ADD_DEFINITIONS("-wd4100 -wd4512 -wd4548 -wd4619 -wd4625 -wd4626 -wd4668 -wd4710 -wd4820") +ELSE () + ADD_DEFINITIONS("-Wno-unknown-pragmas") +ENDIF() + +IF(MINGW) + # Hide the --enable-auto-import warning + SET(CMAKE_EXE_LINKER_FLAGS "-enable-auto-import") + SET(CMAKE_MODULE_LINKER_FLAGS "-enable-auto-import") + SET(CMAKE_SHARED_LINKER_FLAGS "-enable-auto-import") +ENDIF(MINGW) + +# GCC 4 required +IF(UNIX OR MINGW) + EXEC_PROGRAM( gcc ARGS "-dumpversion" OUTPUT_VARIABLE GCC_VERSION ) + IF(GCC_VERSION VERSION_LESS "4.0.0") + MESSAGE(FATAL_ERROR "GCC ${GCC_VERSION} found, but version 4.x.x minimum is required") + ENDIF(GCC_VERSION VERSION_LESS "4.0.0") +ENDIF(UNIX OR MINGW) + +#The CDT Error Parser cannot handle error messages that span +#more than one line, which is the default gcc behavior. +#In order to force gcc to generate single line error messages with no line wrapping +IF(CMAKE_COMPILER_IS_GNUCC) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0") +ENDIF(CMAKE_COMPILER_IS_GNUCC) +IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0") +ENDIF(CMAKE_COMPILER_IS_GNUCXX) + +# [Eclipse] Automatic Discovery of Include directories (Optional, but handy) +#SET(CMAKE_VERBOSE_MAKEFILE ON) + +#Find libraries included with our project first +IF(WIN32) + SET(CMAKE_INCLUDE_PATH "${PROJECT_SOURCE_DIR}/3rdParty/include;${CMAKE_INCLUDE_PATH}") + SET(CMAKE_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/3rdParty/lib;${CMAKE_LIBRARY_PATH}") +ENDIF(WIN32) + +####### Build libraries as shared or static ####### +OPTION(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) + +####### SET RPATH ######### +# When RPATH is activated (supported on most UNIX systems), +# the user doesn't need to change LD_LIBRARY_PATH + +# use, i.e. don't skip the full RPATH for the build tree +SET(CMAKE_SKIP_BUILD_RPATH FALSE) + +# when building, don't use the install RPATH already +# (but later on when installing) +SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + +# the RPATH to be used when installing +SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + +# add the automatically determined parts of the RPATH +# which point to directories outside the build tree to the install RPATH +SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +####### OUTPUT DIR ####### +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) +SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) + + +####### DEPENDENCIES ####### +FIND_PACKAGE(UtiLite REQUIRED) +FIND_PACKAGE(OpenCV REQUIRED) +FIND_PACKAGE(Sqlite3 REQUIRED) +# If Qt is here, the GUI will be built +FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg) +# If CppUnit is here, the test will be built +FIND_PACKAGE(CppUnit) + +####### OSX BUNDLE CMAKE_INSTALL_PREFIX ####### +OPTION(BUILD_AS_BUNDLE "Set to ON to build as bundle (DragNDrop)" OFF) +IF(APPLE AND BUILD_AS_BUNDLE) + IF(QT4_FOUND AND QT_QTCORE_FOUND AND QT_QTGUI_FOUND) + + #Force to Off, easiest to package into the bundle + SET( BUILD_SHARED_LIBS OFF ) + + # Required when packaging, and set CMAKE_INSTALL_PREFIX to "/". + SET(CPACK_SET_DESTDIR TRUE) + + SET(CMAKE_BUNDLE_NAME + "${PROJECT_NAME} ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") + SET(CMAKE_BUNDLE_LOCATION "${CMAKE_INSTALL_PREFIX}") + + # make sure CMAKE_INSTALL_PREFIX ends in / + STRING(LENGTH "${CMAKE_INSTALL_PREFIX}" LEN) + MATH(EXPR LEN "${LEN} -1" ) + STRING(SUBSTRING "${CMAKE_INSTALL_PREFIX}" ${LEN} 1 ENDCH) + IF(NOT "${ENDCH}" STREQUAL "/") + SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/") + ENDIF(NOT "${ENDCH}" STREQUAL "/") + SET(CMAKE_INSTALL_PREFIX + "${CMAKE_INSTALL_PREFIX}${CMAKE_BUNDLE_NAME}.app/Contents") + ELSE() + + #If Qt is not here, no need to build a bundle + SET(BUILD_AS_BUNDLE OFF) + ENDIF() +ENDIF(APPLE AND BUILD_AS_BUNDLE) + + +####### SOURCES (Projects) ####### +ADD_SUBDIRECTORY( corelib ) +INCLUDE_DIRECTORIES(corelib/include/) + +IF(QT4_FOUND AND QT_QTCORE_FOUND AND QT_QTGUI_FOUND) + ADD_SUBDIRECTORY( guilib ) + INCLUDE_DIRECTORIES(guilib/include/) + ADD_SUBDIRECTORY( ${PROJECT_PREFIX} ) +ELSE() + MESSAGE(STATUS "[WARNING] Qt4 not found, the GUI lib and the stand-alone application will not be compiled...") +ENDIF() + +####################### +# Uninstall target, for "make uninstall" +####################### +CONFIGURE_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + +ADD_CUSTOM_TARGET(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + + +####################### +# CPACK (Packaging) +####################### +INCLUDE(InstallRequiredSystemLibraries) + +SET(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +SET(CPACK_PACKAGE_VENDOR "${PROJECT_NAME} project") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CTAB-MAP is a Real-Time Appearance-Based Mapping approach.") +#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/Description.txt") +#SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.txt") +SET(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +SET(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +SET(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +#SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") +#SET(CPACK_PACKAGE_EXECUTABLES "") +#SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +SET(CPACK_PACKAGE_CONTACT "matlabbe@gmail.com") + +set(CPACK_SOURCE_IGNORE_FILES + "\\\\.svn/" + "${PROJECT_SOURCE_DIR}/build/[a-zA-Z0-9_]+" + "~$" + "${PROJECT_SOURCE_DIR}/bin/.*${PROJECT_PREFIX}" + "${PROJECT_SOURCE_DIR}/bin/.*${PROJECT_NAME}" + "${PROJECT_SOURCE_DIR}/bin/.*[tT]est" + "${PROJECT_SOURCE_DIR}/bin/.*[eE]xample" + "\\\\.DS_Store" +) + +# Share files +INSTALL(FILES + ${PROJECT_SOURCE_DIR}/Matlab/ShowLogs/ShowLogs.m + ${PROJECT_SOURCE_DIR}/Matlab/ShowLogs/importfile.m + DESTINATION share/${PROJECT_PREFIX} + COMPONENT runtime) + +IF(WIN32) + SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.txt") + + SET(CPACK_GENERATOR "NSIS") + SET(CPACK_SOURCE_GENERATOR "ZIP") + SET(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + SET(ICON_PATH "${PROJECT_SOURCE_DIR}/${PROJECT_PREFIX}/src/${PROJECT_NAME}.ico") + SET(CPACK_NSIS_MUI_ICON ${ICON_PATH}) + SET(CPACK_NSIS_MUI_UNIICON ${ICON_PATH}) + #SET(CPACK_PACKAGE_ICON ${ICON_PATH}) + #SET(CPACK_NSIS_INSTALLED_ICON_NAME ${ICON_PATH}) + #SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.${PROJECT_PREFIX}.googlecode.com") + #SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.${PROJECT_PREFIX}.googlecode.com") + SET(CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME}") + SET(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT}) + # Set the icon used for the Windows "Add or Remove Programs" tool. + SET(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${PROJECT_NAME}.exe) + # Desktop link ("executableName" "linkName") + SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ${CPACK_PACKAGE_EXECUTABLES}) + SET(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}" ${CPACK_CREATE_DESKTOP_LINKS}) + SET(CPACK_NSIS_MODIFY_PATH ON) + +ELSEIF(APPLE) + # The project is created as a bundle over the main app (see ./${PROJECT_PREFIX}/src). + # Here we package only this bundle. Note that we set + # CMAKE_INSTALL_PREFIX to "/" when packaging... + IF(BUILD_AS_BUNDLE) + SET(CPACK_GENERATOR "DragNDrop") + ELSE() + SET(CPACK_GENERATOR "PackageMaker;TBZ2") + ENDIF() + + SET(CPACK_SOURCE_GENERATOR "TBZ2") + + SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/${PROJECT_PREFIX}/src/${PROJECT_NAME}.icns") + +ELSE() + SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.txt") + SET(CPACK_GENERATOR "DEB;TBZ2") + SET(CPACK_SOURCE_GENERATOR "TBZ2") + + # Extern : UtiLite (>= 0.2) http://code.google.com/p/utilite/, OpenCV (>= 2.2) http://opencv.willowgarage.com/wiki/ + # ex. SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libgcc1 (>= 1:3.4.2-12)") + # have a look at GET_PROPERTY(result GLOBAL ENABLED_FEATURES), this returns the successful FIND_PACKAGE() calls, maybe this can help + SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.4), libstdc++6 (>= 4.4), libgcc1 (>= 4.0), libsqlite3-0 (>= 3.6)") # Most have + SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS "libqt4-dev (>= 4.6)") #Qt + SET(CPACK_DEBIAN_PACKAGE_SUGGESTS "") + + SET(CPACK_DEBIAN_PACKAGE_SECTION "devel") + SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") + +ENDIF() + +INCLUDE(CPack) + +MESSAGE(STATUS "--------------------------------------------") +MESSAGE(STATUS "Info :") +MESSAGE(STATUS " CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}") +MESSAGE(STATUS " CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}") +MESSAGE(STATUS " BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}") +IF(APPLE) +MESSAGE(STATUS " BUILD_AS_BUNDLE = ${BUILD_AS_BUNDLE}") +ENDIF(APPLE) +MESSAGE(STATUS "--------------------------------------------") diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Matlab/DumpMemorySign.txt b/Matlab/DumpMemorySign.txt new file mode 100644 index 00000000..75ac829b --- /dev/null +++ b/Matlab/DumpMemorySign.txt @@ -0,0 +1,86 @@ +SignatureID WordsID... +-1 4 5 21 22 24 31 32 33 35 46 48 49 58 60 63 72 73 78 83 84 103 105 114 120 124 133 136 141 162 179 182 188 189 202 204 211 217 218 227 232 241 247 249 260 268 271 287 289 301 304 318 320 324 338 340 345 346 349 358 366 368 370 371 381 395 407 408 414 415 416 424 439 442 447 502 504 508 509 527 539 540 550 553 558 568 572 583 588 598 606 617 624 625 638 652 653 667 674 693 694 699 702 738 755 770 782 784 793 816 818 819 832 836 842 846 847 858 867 868 923 939 954 955 965 987 1027 1030 1034 1083 1087 1097 1098 1177 1187 1199 1200 1214 1241 1258 1259 1270 1303 1339 1351 1388 1451 1501 1515 1526 1630 1679 1680 1771 1841 1868 2014 2243 2400 2494 2591 2957 3075 3079 3194 +1 1 2 2 3 4 4 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 24 24 25 26 27 28 29 30 31 31 32 33 34 34 35 35 36 37 38 39 40 41 42 43 44 44 45 46 47 48 49 49 50 51 52 53 53 54 55 56 57 58 59 59 60 60 60 61 62 63 64 65 66 67 68 69 70 70 71 72 73 74 75 76 77 78 79 80 81 82 83 83 83 84 85 86 86 87 88 89 90 91 92 93 94 95 96 97 98 99 99 100 101 102 103 104 +2 4 4 4 4 4 4 5 7 7 7 12 14 18 19 21 22 26 28 29 29 31 32 33 35 37 48 49 49 51 51 53 54 55 56 56 57 58 58 59 60 60 60 63 65 66 67 70 73 75 77 77 77 78 78 82 84 84 84 84 92 94 94 96 96 99 103 105 105 106 107 108 109 110 111 112 113 114 115 116 116 117 118 118 119 120 120 121 122 123 124 125 126 127 128 129 130 131 132 133 133 133 134 135 136 137 138 139 140 141 141 142 143 144 145 146 147 148 149 150 151 151 152 152 153 154 155 156 156 157 158 159 160 161 161 162 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 189 189 190 191 192 193 194 195 196 197 198 199 200 201 202 202 203 204 204 205 +3 4 4 5 12 12 19 21 22 23 28 28 29 32 32 33 33 44 46 48 48 49 52 53 55 56 58 59 60 60 65 65 67 71 72 72 73 78 84 96 96 97 103 105 105 123 124 124 133 136 136 136 139 139 141 141 141 142 143 144 148 162 167 167 182 188 189 189 202 206 207 208 209 210 210 211 212 213 214 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 247 248 249 249 250 251 252 253 254 255 255 256 257 258 259 260 261 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 287 288 289 290 291 292 293 294 295 296 296 297 298 298 299 300 301 302 303 303 304 305 306 306 307 307 308 309 310 311 +4 4 5 18 21 21 22 24 24 32 33 35 42 44 46 46 46 46 49 65 67 68 68 70 70 72 72 72 83 84 95 96 96 103 120 130 135 136 136 136 136 139 142 143 143 153 156 162 177 179 179 182 189 189 189 189 189 189 202 202 204 217 217 218 218 227 227 228 228 230 230 232 246 247 249 249 255 268 271 271 275 276 276 284 287 290 312 313 314 315 316 317 318 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 338 339 340 341 342 343 344 345 346 347 348 349 349 350 351 352 352 353 354 354 355 356 357 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 408 409 410 411 412 413 +5 4 5 24 25 31 32 33 42 45 45 48 48 67 70 84 105 114 120 120 120 130 133 179 189 202 202 217 217 217 217 217 217 217 217 232 268 270 271 318 324 338 345 346 349 349 354 355 356 362 366 366 407 414 414 415 416 417 418 418 419 420 421 422 423 423 424 424 425 425 426 427 428 429 429 430 431 432 433 433 434 435 436 436 437 438 439 439 440 441 442 443 444 445 446 447 448 449 450 451 451 452 453 454 455 456 457 458 459 460 +6 4 4 4 4 21 22 24 24 25 31 31 31 31 31 31 32 33 45 48 64 64 72 72 72 84 95 105 114 114 114 120 122 130 136 156 189 189 189 189 189 189 202 202 208 213 217 217 217 227 232 243 271 280 287 312 320 320 320 324 324 340 345 345 358 366 366 366 366 407 414 416 416 416 416 421 423 424 426 436 439 439 439 439 439 439 442 447 457 457 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 497 498 498 499 499 500 501 501 502 502 503 504 504 505 505 506 507 508 509 510 511 512 513 514 515 516 517 518 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 536 537 537 538 539 540 541 542 543 544 545 546 547 548 549 550 550 551 552 553 554 555 556 557 558 559 +7 30 31 31 31 31 32 32 32 33 33 39 46 48 53 58 58 58 78 78 182 188 218 228 236 249 304 318 318 318 318 346 358 366 368 368 408 410 414 429 431 447 447 453 453 473 499 508 527 539 550 550 553 560 561 562 563 564 565 565 566 567 568 569 570 571 572 572 573 574 575 576 577 578 578 579 580 581 582 582 583 584 585 586 587 588 588 589 590 590 591 592 593 594 595 596 597 598 599 600 601 602 603 603 604 605 606 607 607 608 609 610 611 612 613 614 614 615 616 617 617 618 619 620 621 621 622 623 624 625 625 626 627 628 629 630 631 632 632 633 634 635 636 637 638 638 639 640 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 654 655 656 657 658 658 659 660 661 661 662 663 664 665 666 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 +8 24 31 31 32 33 33 33 58 78 84 217 217 237 312 312 338 338 338 340 366 366 366 442 453 453 508 519 519 527 539 565 565 566 567 568 568 568 573 575 578 581 583 588 588 590 592 597 597 598 599 603 606 611 612 613 624 626 634 638 638 647 649 652 652 652 660 663 664 684 685 686 687 688 689 690 691 692 693 694 695 696 697 697 698 699 699 700 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 729 730 731 732 733 734 735 736 737 +9 4 4 4 30 31 31 33 64 72 78 84 84 84 207 217 217 217 217 217 217 217 217 217 217 217 217 237 253 257 260 271 271 271 304 318 346 366 417 442 480 503 508 519 539 550 553 553 566 578 581 583 588 590 590 594 606 607 610 612 617 621 625 634 634 638 638 638 652 653 654 657 660 664 664 688 690 691 696 697 702 702 706 706 706 708 708 711 715 723 730 732 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 793 794 795 796 797 798 799 800 801 802 803 804 804 805 806 806 807 808 809 810 811 +10 4 4 4 4 4 5 21 31 31 31 32 32 32 32 53 58 58 72 72 72 72 84 178 178 189 189 202 202 207 207 217 217 217 217 218 249 249 289 320 320 368 370 384 395 407 499 502 502 504 508 522 522 523 527 536 539 548 550 550 553 553 558 558 558 563 574 583 583 588 590 602 602 608 608 624 626 638 644 646 654 664 684 693 704 706 710 711 715 750 754 755 770 770 770 774 780 780 782 782 801 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 887 888 889 890 891 891 892 893 893 894 895 896 897 898 898 899 900 901 902 903 904 +11 4 4 4 32 58 58 58 63 78 114 114 120 120 189 189 189 207 217 223 223 236 243 249 249 318 338 345 345 345 346 349 431 442 502 502 504 504 509 522 527 558 568 568 573 585 588 588 590 590 591 592 594 598 598 598 602 619 619 625 644 652 664 669 678 691 697 697 702 770 770 786 794 812 812 817 817 818 818 819 824 826 832 834 839 843 846 851 853 856 856 859 860 862 865 866 872 880 905 906 907 908 909 910 911 912 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 +12 4 5 24 24 24 31 32 32 32 32 32 33 33 33 46 63 72 78 120 120 120 124 136 136 162 182 189 189 217 217 217 237 237 249 249 249 249 253 271 370 370 370 395 415 416 502 502 502 502 502 514 531 536 540 540 540 540 553 553 558 568 580 585 588 606 625 638 653 664 684 693 693 699 702 714 726 731 755 755 755 755 755 770 786 793 793 794 794 810 810 818 824 832 834 836 842 846 846 851 883 883 883 883 893 898 898 901 916 916 922 923 929 931 932 935 939 941 943 953 954 955 956 957 958 958 958 959 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1013 1014 1015 +13 4 4 4 4 4 4 4 4 24 32 32 35 63 78 83 83 84 84 105 105 114 120 165 188 188 189 204 210 211 223 227 237 247 247 249 249 249 249 249 260 260 289 289 317 325 338 384 405 414 432 439 439 447 463 502 502 502 502 502 502 502 504 509 540 544 544 550 558 568 568 588 593 604 606 606 606 607 617 625 634 653 653 693 712 750 754 755 782 786 794 804 805 810 812 818 836 836 845 846 846 846 847 849 852 868 893 896 915 918 939 943 955 958 965 965 965 974 974 979 986 989 989 997 1000 1002 1016 1017 1018 1019 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 +14 4 4 11 31 31 32 32 32 32 32 33 33 46 46 48 72 72 72 72 72 78 83 95 105 120 120 120 120 120 133 193 210 210 211 211 213 217 217 217 217 218 221 237 249 270 304 320 320 324 325 326 346 349 349 356 405 405 407 424 431 431 439 442 502 502 502 502 527 537 543 544 553 553 558 572 574 579 585 588 588 598 617 625 644 662 674 693 699 742 749 751 755 755 782 836 836 842 842 842 846 851 856 858 867 916 925 943 958 961 1001 1001 1001 1032 1035 1035 1052 1060 1082 1085 1087 1088 1089 1090 1091 1092 1093 1093 1094 1095 1096 1097 1098 1098 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1107 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1140 1141 1142 1143 1144 1145 1146 +15 4 4 7 32 32 32 72 72 72 83 83 84 114 114 120 120 120 120 124 147 162 202 202 218 218 218 228 249 289 298 304 320 320 320 320 324 345 366 366 370 407 412 415 424 439 500 500 502 514 522 546 546 583 585 588 644 644 653 662 668 674 684 702 706 706 782 782 793 793 794 824 836 836 847 867 883 883 901 916 955 959 965 989 1003 1022 1027 1028 1030 1034 1034 1039 1060 1087 1087 1097 1099 1099 1103 1109 1114 1114 1120 1133 1140 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1164 1165 1166 1167 1168 1169 1170 1171 1171 1172 1173 1174 1175 1175 1176 1177 1177 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 +16 4 4 32 33 114 120 370 370 381 439 506 522 527 527 568 588 598 606 606 606 622 653 693 702 706 836 867 901 916 959 964 1019 1025 1097 1097 1177 1177 1177 1192 1193 1193 1202 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 +17 2 2 4 4 4 4 4 4 4 4 4 24 24 31 31 31 31 31 45 45 68 72 72 72 73 84 182 189 189 189 202 211 211 217 217 217 217 217 217 218 218 218 218 218 271 271 271 276 346 370 370 370 370 370 370 403 415 416 527 539 539 539 550 550 550 553 553 553 553 553 553 553 558 558 558 558 558 558 558 568 568 568 606 606 607 674 674 702 738 755 769 782 782 782 787 847 858 858 858 858 867 954 955 965 1087 1087 1087 1087 1087 1087 1087 1087 1087 1087 1087 1098 1149 1219 1223 1226 1233 1235 1236 1236 1236 1237 1238 1239 1240 1241 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 +18 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 22 22 24 24 31 31 33 45 46 46 68 72 72 84 133 133 133 136 179 189 189 189 189 189 189 189 189 202 202 202 207 207 211 211 217 218 218 218 227 268 271 271 289 370 370 370 370 370 370 370 370 370 415 416 416 429 463 504 504 504 510 539 539 550 550 550 553 553 553 553 553 553 553 553 558 558 558 558 558 558 558 558 559 568 568 568 568 588 588 607 607 755 755 755 755 755 782 782 782 908 919 919 954 954 954 954 954 954 954 954 954 954 954 954 955 1087 1087 1087 1087 1087 1087 1087 1087 1087 1149 1149 1155 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1250 1258 1258 1259 1267 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 +19 +20 35 46 58 58 72 73 98 105 117 120 120 133 133 133 136 141 141 156 162 182 202 204 204 209 213 260 270 289 318 337 340 358 372 373 405 496 508 540 553 553 568 583 592 653 684 699 713 738 784 786 845 858 858 867 874 885 893 1029 1034 1061 1098 1098 1098 1111 1133 1155 1187 1187 1214 1219 1228 1283 1304 1305 1306 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1319 1320 1321 1322 1323 1323 1324 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1366 1367 1368 1369 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1388 1389 1390 1391 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 +21 33 45 48 48 56 133 162 165 204 270 325 338 340 340 366 370 370 371 433 434 553 558 572 572 572 583 583 784 806 842 845 847 852 925 979 1083 1177 1181 1187 1219 1256 1256 1290 1307 1331 1333 1339 1342 1342 1345 1352 1358 1367 1369 1378 1379 1381 1392 1392 1410 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1440 1441 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1475 1476 +22 4 4 4 4 4 4 4 4 21 22 32 53 67 73 95 133 133 133 133 179 182 211 217 217 218 218 219 287 310 366 414 496 502 502 502 504 527 527 539 544 550 553 572 572 622 699 706 784 793 836 842 845 845 852 867 867 867 958 965 974 980 1030 1049 1087 1087 1088 1098 1153 1181 1187 1214 1214 1219 1219 1222 1256 1271 1283 1305 1310 1315 1339 1340 1342 1342 1350 1351 1369 1370 1370 1385 1388 1395 1450 1451 1451 1451 1463 1467 1477 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 +23 4 4 4 24 72 72 84 120 120 120 133 136 189 189 210 217 217 217 217 218 236 289 304 320 320 320 320 340 346 347 349 349 508 527 539 550 553 558 563 568 592 618 693 739 782 782 782 816 835 847 867 867 867 867 867 901 923 924 1018 1024 1047 1102 1153 1177 1181 1181 1199 1235 1241 1241 1246 1256 1257 1258 1270 1303 1304 1310 1326 1340 1340 1343 1350 1351 1351 1351 1371 1395 1432 1463 1487 1488 1490 1503 1511 1512 1515 1515 1526 1544 1568 1569 1570 1571 1572 1573 1574 1575 1576 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 +24 4 21 31 32 33 72 72 73 133 189 217 218 227 243 285 320 327 338 340 346 346 366 368 368 370 370 370 370 376 416 417 424 424 430 438 504 504 537 550 550 553 558 568 572 606 606 655 684 786 842 867 867 903 903 954 965 1030 1087 1087 1098 1170 1200 1200 1214 1218 1223 1223 1228 1246 1246 1258 1258 1270 1310 1322 1336 1343 1351 1370 1370 1463 1463 1488 1492 1513 1515 1518 1533 1545 1586 1589 1594 1597 1615 1621 1623 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1643 1644 1645 1646 1646 1646 1647 1648 1649 1650 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 +25 4 4 31 32 72 72 73 73 133 217 217 217 218 271 320 403 539 550 558 702 755 858 858 867 867 903 965 1073 1237 1241 1241 1241 1256 1336 1340 1351 1351 1370 1391 1426 1462 1463 1487 1533 1558 1560 1594 1671 1680 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1707 1708 1709 1710 1711 1712 +26 22 31 32 39 56 58 78 84 105 133 136 141 142 162 182 182 210 219 241 247 249 256 260 318 324 345 358 366 403 416 506 506 509 568 572 572 598 626 642 653 674 674 691 751 793 819 847 868 918 923 923 978 980 987 1039 1082 1119 1155 1182 1199 1203 1206 1303 1345 1368 1368 1388 1388 1392 1398 1406 1415 1441 1477 1521 1521 1557 1575 1630 1646 1651 1704 1713 1714 1715 1716 1717 1718 1719 1719 1720 1721 1722 1723 1724 1725 1726 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1748 1749 1750 1751 1752 1753 1754 1755 1756 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1765 1766 1767 1767 1768 1769 1770 1771 1771 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 +27 32 32 33 35 35 38 58 58 78 78 81 84 89 114 124 124 162 168 182 182 182 202 204 211 211 223 241 249 249 249 259 296 320 320 325 345 346 366 366 366 366 370 395 417 428 433 500 510 527 553 572 598 598 619 626 653 654 675 699 702 702 704 755 805 818 832 842 864 923 955 987 987 987 990 1001 1088 1200 1200 1352 1368 1388 1388 1415 1415 1515 1515 1529 1672 1680 1692 1713 1720 1722 1733 1738 1743 1747 1748 1750 1755 1759 1763 1763 1764 1765 1766 1766 1766 1768 1771 1771 1771 1771 1771 1771 1775 1776 1777 1778 1779 1779 1785 1789 1790 1793 1794 1809 1815 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1893 1894 1895 1896 1897 1898 1899 1900 1901 +28 22 35 58 78 78 133 168 182 204 241 243 249 249 260 324 346 354 366 366 371 372 414 429 447 504 536 538 553 553 558 572 572 594 622 625 637 653 653 654 679 694 699 702 702 704 704 706 706 713 738 818 819 819 832 848 922 923 923 923 925 954 954 965 987 987 1034 1059 1059 1087 1087 1127 1129 1155 1165 1183 1187 1226 1241 1301 1303 1342 1374 1406 1415 1444 1509 1518 1518 1538 1630 1696 1713 1718 1722 1728 1729 1738 1753 1763 1765 1771 1771 1771 1771 1771 1774 1789 1832 1833 1836 1841 1844 1862 1873 1883 1902 1903 1904 1905 1905 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1934 1935 1936 1937 1938 1939 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 +29 4 31 31 31 33 33 58 58 78 133 133 162 179 241 249 260 346 349 370 408 429 527 568 592 621 622 624 625 652 662 699 699 704 753 816 819 819 832 832 868 923 1083 1087 1155 1174 1303 1543 1543 1680 1714 1718 1718 1738 1743 1771 1771 1800 1800 1829 1830 1833 1835 1836 1841 1844 1868 1873 1877 1884 1889 1904 1916 1936 1957 1961 1971 1976 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 +30 31 32 33 33 58 76 83 144 162 204 210 219 221 230 320 340 345 345 347 366 395 403 429 527 540 540 543 548 553 553 583 594 622 652 652 653 662 694 699 709 709 744 753 782 832 858 923 923 923 923 934 954 1003 1026 1083 1083 1088 1111 1174 1290 1303 1303 1360 1521 1630 1651 1725 1738 1763 1771 1779 1787 1788 1799 1838 1852 1856 1871 1873 1874 1883 1902 1902 1903 1915 1916 1930 1931 1941 1961 1975 1997 1998 2014 2014 2015 2015 2015 2029 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 +31 4 7 7 31 31 32 33 33 48 78 78 89 114 133 147 162 182 208 211 241 260 296 315 345 381 395 403 439 494 498 543 553 563 619 623 624 699 704 707 895 923 923 978 978 990 1052 1174 1195 1199 1303 1518 1519 1566 1630 1630 1680 1721 1723 1731 1738 1743 1750 1848 1856 1868 1900 1902 1953 1957 1962 1963 1973 1987 1987 1993 2010 2033 2051 2052 2058 2061 2067 2069 2106 2147 2151 2152 2153 2154 2155 2156 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2209 2210 2211 2212 2213 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 +32 32 32 33 33 48 58 63 78 95 133 253 275 301 354 371 395 405 495 597 662 699 699 707 707 738 778 784 793 805 818 867 899 923 1027 1027 1034 1103 1103 1144 1200 1237 1529 1692 1714 1743 1743 1749 1750 1753 1768 1817 1841 1843 1878 1993 2047 2054 2054 2061 2067 2067 2067 2067 2101 2113 2116 2139 2152 2156 2159 2165 2167 2168 2171 2190 2190 2201 2208 2221 2233 2248 2261 2262 2263 2264 2264 2265 2265 2266 2267 2268 2269 2269 2270 2271 2272 2273 2274 2275 2276 2277 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2299 2300 2301 2302 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2316 2317 2318 2319 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 +33 33 48 58 78 78 114 118 162 167 182 182 193 202 202 204 221 226 249 249 257 261 274 287 287 345 346 368 408 412 457 504 506 576 592 624 653 697 699 699 771 818 832 847 923 923 1003 1103 1175 1199 1200 1202 1223 1370 1519 1696 1723 1723 1750 1771 1777 1848 1903 1929 1935 2014 2030 2053 2061 2072 2151 2152 2152 2153 2168 2168 2221 2243 2247 2262 2263 2264 2288 2291 2293 2293 2303 2323 2333 2335 2340 2352 2370 2371 2372 2373 2374 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2451 2452 2453 2454 2455 2456 2457 2458 2459 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 +34 31 32 32 33 35 35 44 58 58 67 67 70 78 78 83 96 115 136 136 162 182 182 202 202 202 202 217 230 237 249 320 324 340 345 346 366 397 405 414 504 519 540 572 576 593 597 622 625 669 694 694 699 790 815 815 832 835 920 923 923 954 1042 1098 1102 1110 1129 1199 1200 1218 1477 1501 1509 1515 1529 1557 1625 1692 1722 1723 1742 1844 1868 1877 1904 1904 1972 2152 2165 2168 2171 2173 2198 2243 2267 2293 2293 2294 2308 2317 2323 2323 2387 2389 2390 2400 2400 2422 2423 2423 2440 2442 2447 2459 2461 2475 2475 2476 2477 2478 2479 2480 2481 2481 2482 2483 2484 2485 2486 2487 2488 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2527 2528 2529 2530 2531 2532 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 +35 30 32 33 35 58 60 64 76 78 78 84 89 120 133 202 204 204 241 249 249 301 304 340 366 384 416 428 496 508 624 699 700 700 778 815 832 906 923 923 943 987 997 1001 1200 1203 1226 1303 1360 1424 1432 1441 1749 1802 1868 1914 1933 1936 1962 2171 2188 2243 2327 2342 2352 2360 2427 2490 2494 2494 2502 2504 2530 2532 2533 2546 2546 2547 2548 2558 2560 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 +36 32 32 32 58 58 63 89 98 133 133 133 162 162 188 204 213 217 304 345 358 366 366 366 366 381 395 395 395 539 553 623 624 624 640 667 667 667 694 694 699 722 782 815 816 858 922 923 979 1012 1026 1040 1063 1079 1079 1088 1091 1149 1222 1453 1461 1526 1565 1662 1692 1692 1731 1750 1796 1829 1889 1931 1997 2000 2014 2014 2038 2111 2164 2188 2427 2445 2501 2505 2546 2578 2580 2591 2594 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 +37 9 32 32 33 46 58 63 79 84 133 133 162 188 237 247 259 260 273 301 301 304 304 326 340 358 366 424 447 480 504 508 546 580 591 606 617 617 637 640 653 667 667 699 782 793 793 794 895 923 955 1001 1026 1034 1034 1061 1087 1088 1088 1127 1147 1148 1155 1166 1177 1177 1228 1249 1303 1323 1339 1343 1368 1388 1441 1441 1444 1515 1630 1645 1800 1809 1972 2000 2054 2117 2151 2157 2164 2292 2360 2580 2591 2591 2617 2624 2625 2626 2631 2632 2632 2633 2634 2635 2638 2642 2643 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 +38 4 32 32 33 46 58 63 78 88 179 182 204 204 211 241 249 249 259 301 345 346 346 366 412 415 416 416 438 439 447 447 447 504 527 527 539 540 553 553 558 661 667 667 667 674 699 722 725 725 782 794 797 812 842 842 842 923 954 954 1129 1137 1144 1181 1202 1259 1339 1339 1444 1543 1617 1680 1705 1713 1874 1874 1878 2030 2054 2153 2224 2256 2307 2360 2413 2461 2481 2546 2580 2617 2619 2633 2635 2660 2661 2662 2663 2664 2665 2666 2669 2679 2680 2681 2689 2694 2695 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 +39 4 4 32 32 55 58 58 70 95 124 133 141 177 186 211 211 217 247 249 249 259 260 301 304 312 312 326 329 338 340 345 366 366 408 447 447 502 509 509 510 522 527 553 558 566 598 612 619 621 622 625 625 625 640 653 653 653 667 667 667 674 699 715 741 753 868 954 955 958 1027 1034 1063 1102 1120 1147 1193 1241 1241 1303 1483 1672 1719 1803 1868 1868 1973 2003 2014 2138 2138 2211 2248 2450 2494 2580 2615 2617 2617 2624 2625 2625 2625 2633 2635 2661 2662 2666 2669 2679 2682 2689 2711 2713 2725 2725 2728 2729 2732 2734 2737 2740 2746 2748 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2780 2781 2782 2783 2784 2785 +40 35 44 120 131 202 207 304 304 336 381 434 537 553 566 572 867 1039 1170 1222 1235 1259 1270 1357 1501 1575 1575 1617 1749 1795 1868 1889 2434 2627 2716 2756 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2799 2800 2801 2802 2803 2804 2804 2805 2806 2807 2808 2809 2810 2811 2812 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 +41 8 21 26 28 28 31 32 33 33 33 38 42 46 46 48 49 49 53 55 57 58 58 59 60 61 61 63 65 66 67 68 72 73 73 78 82 84 84 84 85 85 88 92 94 96 96 103 103 111 113 115 122 124 133 138 142 143 148 151 153 154 160 162 165 166 167 167 172 174 178 178 179 180 182 183 186 188 189 189 189 189 196 199 201 202 202 202 202 202 204 205 213 218 218 239 255 256 268 268 271 277 277 278 289 289 290 290 291 299 340 366 368 371 371 376 407 414 415 553 598 623 625 816 816 835 965 965 965 1082 1086 1129 1129 1172 1222 1241 1574 1575 1630 1673 1707 1825 1884 1928 2158 2293 2494 2619 2722 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2853 2854 2855 2856 2857 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 +42 4 5 24 28 32 32 33 44 44 48 49 51 52 55 56 56 56 59 65 70 72 72 73 78 96 97 103 111 111 113 117 123 124 135 136 136 136 141 143 148 152 153 167 178 179 182 185 186 188 190 217 218 226 230 232 235 236 241 244 246 247 249 255 259 260 260 260 261 268 268 268 273 274 276 277 278 279 282 287 289 290 291 291 293 294 295 304 305 308 310 326 340 340 349 368 376 381 384 403 406 407 407 414 417 450 454 510 535 540 553 554 702 710 738 789 889 964 1087 1087 1155 1200 1241 1241 1388 1432 1681 1696 1822 1962 1974 2014 2371 2372 2400 2409 2450 2619 2624 2781 2877 2878 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 +43 5 24 31 32 32 32 35 46 47 49 56 67 68 68 72 73 73 120 123 124 130 135 141 143 165 167 177 179 189 189 190 213 213 217 220 223 228 232 241 246 255 256 268 271 276 282 284 287 287 290 305 306 306 324 325 326 326 340 347 358 362 368 371 372 376 376 377 381 388 389 390 394 395 397 398 399 403 404 405 407 411 415 415 415 442 447 450 539 550 553 593 691 699 741 816 856 868 954 1097 1097 1102 1191 1195 1214 1214 1259 1351 1368 1390 1417 1477 1545 1545 1680 1841 1868 1868 1962 2223 2248 2293 2360 2475 2475 2506 2508 2510 2514 2625 2673 2678 2779 2877 2888 2915 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 +44 4 21 24 31 41 46 48 49 72 73 83 103 105 120 120 120 124 124 130 136 136 136 165 179 189 189 193 202 217 218 218 219 222 227 227 227 228 232 243 249 268 271 275 289 320 324 325 327 329 334 349 354 356 363 376 388 395 404 405 407 421 431 431 439 439 442 447 450 454 457 473 489 504 504 504 504 504 510 550 550 553 553 568 593 709 753 883 959 964 964 965 987 1047 1052 1086 1087 1097 1097 1241 1259 1432 1501 1696 1829 1865 2240 2469 2484 2726 2727 2847 2914 2933 2946 2947 2947 2948 2974 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2989 2990 2991 2992 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 +45 4 21 22 105 114 114 120 120 124 124 130 156 162 188 189 202 217 217 217 232 241 249 289 289 325 340 408 414 415 419 423 428 429 429 432 437 439 462 474 474 478 480 485 496 497 497 498 500 502 504 508 509 509 509 527 527 528 530 532 532 533 533 535 539 543 543 547 554 554 559 864 868 912 930 930 954 965 971 1002 1019 1087 1129 1149 1163 1183 1200 1214 1214 1237 1241 1259 1259 1318 1350 1390 1424 1501 1526 1538 1678 1714 1829 1829 1886 1973 2014 2086 2198 2198 2243 2371 2421 2678 2753 2758 2766 2851 2877 2995 2995 3003 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3020 3021 3022 3023 3024 3024 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3034 3035 3036 3037 3038 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 +46 +47 21 31 32 33 33 58 58 64 78 204 207 217 217 260 260 318 366 366 408 504 508 508 539 550 553 567 568 568 568 568 568 570 573 574 576 577 580 588 590 590 591 594 597 597 598 599 601 603 604 606 608 608 609 610 612 613 614 623 624 625 626 634 635 638 641 642 643 646 646 649 652 652 653 659 662 663 664 672 678 690 693 699 703 708 712 713 715 717 725 726 727 733 751 763 782 790 792 819 823 841 849 867 868 887 919 934 939 939 939 954 1052 1087 1130 1270 1276 1303 1451 1673 1679 2400 2591 2591 2627 2706 2856 2926 3042 3075 3075 3082 3083 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 +48 21 31 31 58 67 181 181 217 217 217 217 340 346 346 356 366 366 499 527 527 527 539 553 568 588 588 588 590 590 606 606 612 623 626 630 637 638 638 638 641 650 652 652 653 664 687 691 700 706 711 711 714 715 716 721 723 725 729 738 741 745 753 762 763 764 765 765 767 769 774 780 782 783 785 786 787 787 791 796 802 803 810 810 811 838 849 858 894 895 942 951 954 954 979 1019 1027 1039 1044 1057 1170 1174 1203 1222 1222 1572 1691 1829 1953 1953 1987 1987 2014 2014 2135 2241 2736 2793 2912 2962 3100 3121 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 +49 4 4 4 4 32 32 33 33 58 58 72 72 83 84 105 157 162 162 162 162 179 179 179 213 217 217 217 217 217 243 318 320 321 336 346 366 368 384 388 416 424 504 539 550 550 550 553 553 553 553 558 570 573 583 588 590 635 638 644 654 664 691 691 697 702 704 711 750 753 753 754 755 755 756 757 759 760 762 763 765 770 774 775 799 807 817 818 819 823 837 838 842 842 844 845 846 846 849 851 854 858 858 858 858 860 865 866 868 874 875 878 880 880 885 885 887 889 889 891 891 892 895 897 922 925 942 951 954 970 1019 1030 1034 1047 1049 1060 1097 1170 1187 1195 1199 1214 1241 1241 1241 1241 1241 1259 1405 1465 1501 1529 1575 1622 1679 1768 1889 2276 2494 2576 2627 2678 2678 2847 2973 3006 3043 3063 3073 3147 3155 3165 3166 3167 3168 3169 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 +50 31 32 32 58 63 114 219 247 320 345 345 358 366 366 366 395 416 424 502 504 504 509 539 544 550 550 554 558 558 558 569 580 580 583 583 588 590 598 604 612 617 617 624 636 638 664 693 693 710 715 750 770 770 770 780 786 790 813 817 818 818 819 824 825 826 832 834 836 836 839 839 843 846 846 851 853 853 854 856 858 858 859 860 867 868 869 872 874 875 875 878 880 885 885 887 887 889 902 909 915 920 923 924 925 928 931 932 933 939 939 940 941 943 951 951 954 954 1002 1007 1083 1107 1111 1235 1235 1241 1303 1679 1742 1841 1841 1862 1872 2135 2165 2276 2276 2390 2627 2729 2745 2748 3105 3117 3182 3184 3194 3197 3197 3204 3208 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 +51 22 32 32 32 32 32 33 33 46 58 58 63 72 114 182 217 217 217 218 247 247 260 260 345 358 366 424 439 539 539 553 553 558 558 591 604 608 623 623 693 698 702 731 738 750 770 770 782 786 794 815 817 818 819 824 825 832 834 843 846 856 862 862 862 868 880 895 896 902 909 913 916 919 922 924 926 927 928 929 931 932 933 939 939 941 943 943 944 946 948 948 954 954 954 954 955 957 959 968 970 971 973 974 975 978 983 986 987 1000 1004 1007 1010 1014 1034 1061 1077 1079 1083 1087 1121 1149 1149 1153 1153 1187 1259 1707 1742 1742 1750 1829 1841 1841 1946 2047 2168 2188 2276 2306 2683 3004 3047 3075 3077 3104 3171 3194 3225 3235 3237 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 +52 4 22 31 32 33 58 72 72 105 124 204 218 218 218 218 218 227 227 247 249 287 326 439 480 489 502 502 502 502 502 502 504 504 539 540 553 553 558 568 572 574 583 585 588 606 606 606 606 684 693 699 709 751 755 765 793 804 829 836 846 846 849 851 868 881 898 911 915 916 916 939 943 949 954 954 955 956 957 958 961 962 965 969 972 974 974 978 978 987 989 996 1000 1001 1002 1003 1005 1016 1017 1021 1023 1029 1030 1030 1034 1034 1034 1035 1043 1050 1052 1055 1055 1058 1060 1060 1063 1064 1068 1071 1083 1106 1109 1111 1114 1127 1127 1152 1170 1174 1183 1204 1235 1259 1471 1506 1545 1660 1679 1696 1841 1841 1869 1874 1874 1974 2014 2014 2151 2152 2168 2188 2243 2307 2532 2532 2678 2736 2758 2764 3065 3152 3171 3192 3255 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 +53 32 33 48 69 105 120 120 188 188 189 189 204 204 204 217 217 218 247 247 249 249 260 271 320 320 320 349 370 405 408 408 416 438 500 500 502 502 502 502 502 509 543 544 546 552 553 553 566 588 588 607 617 652 654 654 662 693 699 812 819 842 842 847 851 858 868 868 868 916 955 959 964 965 983 1001 1003 1009 1019 1021 1022 1023 1024 1030 1033 1034 1041 1047 1057 1060 1061 1063 1064 1064 1076 1083 1085 1097 1097 1099 1107 1109 1109 1111 1114 1120 1120 1120 1121 1129 1129 1129 1129 1129 1129 1129 1132 1138 1145 1153 1155 1174 1182 1187 1199 1200 1214 1228 1258 1259 1270 1276 1386 1451 1506 1528 1553 1622 1696 1718 1809 2048 2138 2138 2248 2326 2532 2619 2758 2758 3034 3047 3071 3079 3085 3096 3096 3264 3275 3277 3278 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 +54 32 48 78 105 114 120 120 120 120 182 204 204 211 241 249 303 303 304 324 324 346 349 366 366 366 366 405 502 502 502 502 502 522 544 544 546 585 588 588 588 597 617 644 653 699 725 782 836 836 868 875 959 961 980 1001 1001 1027 1034 1052 1059 1083 1087 1087 1093 1099 1102 1102 1103 1109 1109 1110 1111 1114 1119 1120 1120 1127 1129 1130 1131 1133 1138 1140 1141 1141 1144 1153 1165 1169 1189 1192 1214 1241 1258 1258 1270 1392 1505 1509 1526 1526 1575 1678 1684 1684 1915 2014 2138 2269 2678 2761 2761 2874 2997 3003 3049 3054 3075 3138 3138 3316 3319 3325 3330 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 +55 4 4 4 30 31 31 32 32 32 32 33 202 228 247 249 276 320 320 338 345 346 366 366 366 366 366 366 366 366 366 381 439 442 462 509 546 568 588 588 653 653 653 653 653 674 674 751 782 842 842 842 847 847 847 989 1025 1027 1030 1030 1034 1041 1060 1097 1097 1097 1098 1114 1140 1148 1150 1151 1155 1168 1169 1169 1170 1170 1177 1183 1183 1187 1189 1192 1193 1196 1200 1205 1206 1210 1213 1226 1227 1229 1233 1234 1234 1241 1256 1258 1258 1258 1270 1270 1303 1392 1415 1451 1501 1550 1662 1673 1679 1680 1742 1794 1822 2014 2014 2461 2493 2713 2764 3079 3098 3121 3147 3152 3194 3254 3316 3360 3361 3365 3372 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 +56 4 4 4 32 114 120 217 218 218 358 366 366 370 370 381 426 506 506 540 543 553 558 558 568 588 588 638 810 810 867 939 964 1019 1060 1087 1087 1098 1153 1177 1214 1218 1219 1234 1241 1241 1242 1258 1258 1270 1276 1286 1371 1424 1451 1501 1678 1679 1679 1679 1745 2242 2706 2791 2941 3194 3284 3360 3392 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 +57 4 4 4 24 24 24 25 31 31 45 46 68 72 72 72 72 72 72 73 73 133 182 189 189 189 189 202 217 217 217 217 218 218 218 218 218 218 218 218 218 271 345 345 345 345 346 346 346 366 366 370 370 370 370 370 407 434 489 527 539 539 539 539 550 550 550 550 550 550 553 553 553 553 558 558 568 568 588 607 618 653 716 782 816 867 867 867 954 954 954 954 1041 1087 1087 1087 1087 1177 1187 1218 1223 1223 1235 1236 1236 1236 1238 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1246 1253 1254 1258 1258 1259 1265 1265 1266 1266 1270 1273 1278 1286 1290 1303 1451 1526 1550 1588 1679 1679 1679 1680 1692 1822 2014 2047 2242 2369 2501 2823 2941 3075 3075 3075 3079 3079 3079 3372 3372 3372 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 +58 4 4 4 4 4 4 4 4 4 4 4 21 24 24 24 24 24 24 31 31 31 32 32 33 46 46 72 72 72 84 133 133 189 189 189 189 189 202 202 202 213 217 217 217 217 217 218 218 234 271 312 370 370 370 370 370 370 434 527 527 527 539 539 550 553 553 568 568 607 755 755 782 858 908 919 954 954 954 954 954 1087 1087 1087 1087 1087 1087 1087 1087 1087 1087 1149 1223 1238 1238 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1242 1258 1258 1258 1258 1259 1259 1281 1283 1286 1287 1290 1424 1673 1679 1679 1679 1692 1704 2014 2591 2753 2941 2957 2957 2957 2957 3079 3194 3194 3194 3194 3194 3194 3416 3429 3438 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 +59 4 4 24 31 32 33 46 46 72 120 120 133 179 189 189 189 189 189 189 202 217 218 218 218 268 370 370 539 550 550 553 553 558 558 558 558 558 568 568 568 755 755 782 782 843 858 954 954 955 965 965 965 1039 1087 1087 1087 1214 1235 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1241 1283 1286 1538 1538 1675 1679 1679 1679 1679 2014 2238 2761 2941 2957 3075 3079 3194 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3485 3486 +60 4 4 4 24 24 31 31 32 33 56 72 105 136 189 189 207 209 209 209 217 217 217 217 217 218 247 260 271 301 306 312 317 320 354 408 548 550 553 553 558 568 568 568 568 568 568 568 613 619 619 623 635 637 652 653 684 706 738 784 847 853 858 894 939 954 965 985 1087 1151 1187 1193 1223 1226 1237 1334 1338 1339 1342 1343 1355 1375 1375 1378 1411 1422 1428 1441 1460 1468 1471 1515 1617 1673 1809 1829 1841 1905 2326 2494 2510 2532 2706 2707 2729 2745 3075 3194 3264 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 +61 4 4 33 33 45 48 58 73 83 105 120 120 120 133 133 202 204 204 217 218 285 289 312 320 320 320 324 327 340 370 432 438 485 502 504 508 509 509 527 540 544 550 558 563 699 739 770 845 867 867 867 922 965 1022 1030 1047 1082 1083 1086 1097 1098 1109 1177 1206 1214 1241 1270 1271 1303 1305 1307 1310 1312 1315 1337 1339 1339 1340 1342 1345 1353 1365 1367 1367 1369 1370 1378 1379 1379 1379 1381 1381 1382 1383 1388 1388 1392 1392 1415 1424 1443 1450 1451 1451 1457 1458 1459 1460 1467 1475 1515 1515 1523 1526 1544 1560 1621 1623 1679 1681 1696 1705 1779 1796 1805 1972 2014 2018 2138 2240 2341 2400 2706 2736 2753 2753 2765 2877 2903 2957 2957 2957 3079 3171 3252 3293 3311 3325 3455 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 +62 4 21 21 24 45 53 72 72 73 120 133 133 146 156 179 204 204 217 312 320 320 338 340 349 366 407 429 502 502 502 502 502 553 553 558 637 699 699 725 739 784 784 816 845 852 867 867 884 949 965 979 1087 1097 1097 1097 1098 1098 1109 1182 1187 1218 1246 1256 1310 1315 1339 1340 1342 1342 1342 1345 1350 1351 1351 1351 1365 1371 1379 1381 1388 1395 1407 1450 1450 1451 1451 1451 1463 1467 1482 1483 1486 1487 1489 1490 1493 1494 1497 1498 1500 1501 1502 1504 1504 1505 1507 1508 1508 1511 1513 1514 1515 1518 1519 1520 1522 1523 1523 1525 1526 1526 1527 1529 1530 1531 1532 1538 1538 1540 1541 1543 1552 1553 1553 1557 1560 1561 1562 1563 1629 1630 1678 1679 1680 1690 1796 1839 1962 1965 2134 2161 2400 2483 2867 2925 3047 3194 3248 3360 3583 3627 3628 3629 3630 3631 3632 3633 3634 3635 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 +63 4 4 21 22 72 73 120 120 133 133 133 136 165 232 320 320 327 340 439 508 527 537 539 539 550 696 702 702 782 784 784 835 841 847 867 1072 1098 1098 1098 1098 1102 1170 1177 1181 1214 1214 1219 1241 1241 1246 1256 1256 1271 1310 1339 1342 1342 1395 1451 1451 1467 1501 1512 1515 1515 1515 1517 1526 1544 1550 1560 1568 1572 1575 1576 1580 1581 1589 1591 1593 1598 1605 1609 1616 1617 1618 1619 1621 1623 1630 1704 1711 1712 1723 1780 1868 2014 2135 2619 2812 2847 2979 3047 3047 3075 3075 3139 3251 3426 3537 3587 3591 3612 3612 3651 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 +64 4 4 4 4 19 32 33 35 48 118 120 133 133 217 217 227 289 340 368 441 443 550 558 782 813 842 842 842 852 867 867 867 901 954 1241 1310 1336 1340 1350 1351 1351 1370 1370 1371 1501 1513 1538 1587 1589 1594 1597 1615 1615 1621 1632 1636 1637 1637 1638 1640 1642 1646 1646 1647 1650 1651 1652 1656 1661 1662 1663 1663 1671 1672 1681 1684 1689 1694 1702 1707 2014 2753 2812 3121 3499 3687 3694 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 +65 4 4 4 4 4 4 4 22 31 31 32 32 72 73 84 162 217 318 321 346 370 370 508 550 558 755 784 842 954 965 1087 1226 1241 1276 1336 1351 1557 1594 1623 1671 1680 1689 1697 1702 1703 2014 2014 2014 2117 2135 2792 2941 2941 3056 3152 3177 3326 3703 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 +66 32 39 58 204 275 318 318 320 371 407 408 408 414 417 432 473 626 649 653 653 653 653 655 667 668 668 674 674 793 797 939 1030 1113 1115 1203 1210 1319 1352 1388 1529 1557 1566 1714 1716 1720 1722 1725 1726 1729 1738 1742 1742 1745 1745 1747 1748 1748 1750 1751 1755 1756 1758 1759 1763 1764 1766 1766 1766 1768 1771 1771 1777 1779 1779 1781 1784 1785 1785 1791 1794 1796 1798 1799 1800 1802 1803 1807 1808 1809 1810 1811 1812 1813 1815 1820 1821 1836 1841 1842 1864 1868 1870 1871 1875 1889 1895 1901 1902 1929 1936 1961 1980 2014 2017 2018 2060 2106 2186 2202 2237 2301 2360 2360 2389 2450 2491 2494 2494 2521 2546 2591 2617 2745 2745 2748 2748 2781 3038 3075 3293 3311 3378 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3770 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 +67 14 32 32 32 48 58 84 133 133 168 183 211 259 260 366 395 395 408 433 439 547 558 563 566 572 572 580 583 591 598 622 625 642 653 654 662 662 684 694 699 704 731 755 797 816 818 818 819 832 832 858 910 922 923 925 954 987 1034 1200 1352 1415 1477 1501 1521 1543 1543 1630 1692 1726 1738 1747 1748 1750 1763 1763 1765 1766 1771 1771 1771 1771 1776 1777 1785 1809 1819 1822 1824 1826 1832 1837 1840 1841 1841 1843 1844 1845 1852 1862 1863 1868 1871 1879 1882 1882 1885 1886 1888 1889 1891 1892 1896 1897 1899 1901 1903 1908 1909 1936 1953 1961 1963 1968 1972 1973 2000 2000 2030 2053 2099 2107 2138 2151 2242 2243 2361 2372 2400 2442 2470 2494 2501 2506 2563 2729 2741 2939 3047 3075 3079 3181 3219 3311 3369 3707 3707 3758 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 +68 33 58 72 78 98 133 133 168 193 204 217 217 217 241 241 249 354 366 366 366 366 414 439 447 463 494 537 592 607 619 625 632 635 637 653 654 668 675 675 679 699 794 819 842 923 925 958 1048 1079 1174 1374 1386 1388 1521 1543 1575 1753 1761 1771 1771 1829 1832 1856 1856 1862 1868 1868 1874 1874 1877 1899 1914 1916 1928 1928 1928 1929 1930 1931 1933 1933 1933 1937 1941 1943 1945 1946 1953 1953 1958 1959 1962 1963 1965 1965 1965 1968 1969 1971 1973 1980 2005 2014 2014 2016 2018 2028 2039 2042 2106 2111 2136 2147 2151 2151 2185 2237 2292 2360 2400 2440 2459 2470 2494 2578 2587 2653 2741 2881 2918 3075 3079 3079 3096 3464 3748 3789 3795 3800 3800 3801 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3867 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 +69 32 33 33 33 58 63 188 228 239 247 249 260 296 325 340 345 366 371 395 432 540 550 568 624 652 662 684 694 699 736 782 816 863 868 922 923 923 923 1027 1034 1061 1165 1170 1199 1241 1301 1303 1395 1680 1717 1721 1768 1810 1824 1833 1836 1856 1874 1884 1903 1916 1930 1957 2014 2030 2040 2048 2051 2052 2053 2058 2060 2061 2065 2084 2091 2094 2102 2103 2117 2117 2122 2128 2137 2141 2147 2152 2218 2243 2288 2361 2440 2481 2494 2546 2546 2572 2600 2614 2625 2655 2748 2751 2764 2874 2957 2957 3075 3075 3075 3312 3764 3784 3833 3835 3844 3854 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 +70 32 32 38 48 58 58 78 112 204 210 211 226 226 231 236 287 366 366 371 550 644 653 694 699 744 782 784 845 923 955 1009 1024 1027 1034 1036 1042 1052 1083 1220 1226 1303 1380 1441 1518 1538 1543 1630 1630 1738 1753 1777 1788 1836 1841 1856 1871 1916 1936 1936 1957 2000 2014 2015 2027 2033 2033 2046 2047 2052 2058 2061 2063 2067 2074 2083 2083 2099 2106 2113 2116 2122 2125 2132 2138 2145 2147 2152 2153 2156 2157 2161 2162 2165 2168 2170 2183 2186 2187 2188 2191 2193 2204 2205 2206 2207 2209 2224 2228 2230 2253 2258 2301 2302 2440 2440 2442 2459 2482 2494 2613 2624 2625 2668 2736 2851 2979 3004 3006 3059 3150 3281 3464 3464 3667 3801 3854 3862 3863 3880 3890 3891 3922 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 +71 33 63 105 143 162 217 260 321 371 372 390 408 429 432 540 572 613 621 642 694 699 707 784 789 793 842 842 895 918 923 923 923 1027 1034 1072 1157 1160 1199 1303 1357 1432 1543 1731 1743 1746 1750 1836 1836 1852 1870 1872 1875 1987 1995 2010 2061 2067 2125 2141 2147 2147 2151 2152 2156 2158 2186 2203 2207 2208 2224 2233 2258 2261 2263 2266 2268 2269 2272 2276 2280 2293 2301 2306 2323 2329 2336 2344 2352 2361 2440 2442 2459 2459 2494 2542 2576 2591 2726 2728 2979 2979 3047 3205 3205 3292 3321 3507 3587 3743 3790 3863 3870 3979 4006 4007 4008 4009 4010 4011 4012 4013 4014 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 +72 4 5 24 31 33 48 58 88 98 162 217 231 268 366 372 429 486 527 566 592 694 738 923 985 1019 1019 1200 1352 1432 1630 1675 1690 1692 1726 1753 1870 1871 1878 1946 1954 2082 2158 2202 2221 2234 2263 2276 2288 2293 2301 2303 2333 2371 2372 2373 2386 2390 2400 2413 2417 2423 2426 2433 2437 2440 2442 2443 2447 2450 2455 2458 2460 2462 2465 2470 2471 2494 2494 2494 2527 2558 2560 2568 2625 2741 2799 2851 2898 2914 2984 3063 3100 3150 3201 3309 3311 3318 3348 3348 3356 3356 3612 3784 3801 3844 3906 3913 3918 3979 4011 4052 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 +73 32 33 33 33 35 35 44 58 58 78 104 217 237 257 320 351 397 405 408 416 502 508 528 583 625 686 738 753 918 920 987 987 1009 1019 1052 1144 1175 1175 1199 1223 1377 1483 1515 1615 1622 1722 1726 1742 1877 1896 1915 1915 1946 1974 2061 2171 2221 2301 2323 2325 2327 2340 2385 2386 2387 2420 2423 2442 2445 2459 2494 2521 2528 2528 2537 2544 2558 2560 2561 2561 2563 2591 2594 2666 2805 2928 2972 3004 3042 3147 3177 3251 3311 3588 3641 3741 3742 3784 3785 3851 3898 3908 4109 4172 4179 4187 4188 4189 4190 4190 4191 4192 4193 4194 4195 4196 4196 4197 4198 4199 4200 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 +74 32 32 32 58 58 124 193 202 204 204 213 217 260 340 366 366 395 415 485 527 553 589 591 625 625 642 668 684 694 699 812 818 923 1003 1034 1034 1042 1199 1200 1200 1203 1471 1526 1675 1868 1884 1904 1914 1931 1950 2062 2111 2165 2165 2168 2243 2292 2292 2356 2360 2387 2389 2400 2423 2427 2440 2445 2491 2491 2494 2527 2532 2533 2542 2542 2546 2547 2555 2558 2558 2560 2563 2567 2583 2585 2591 2592 2593 2598 2600 2603 2609 2610 2617 2636 2638 2639 2666 2691 2736 2741 2755 2851 2874 3228 3264 3348 3356 3503 3725 3725 3835 3912 4036 4048 4115 4149 4210 4232 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4319 4320 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 +75 7 32 32 33 72 76 98 210 217 228 301 301 304 320 346 366 366 395 432 508 566 572 572 617 624 640 699 770 815 860 906 916 923 923 1061 1063 1219 1222 1229 1253 1263 1270 1303 1421 1692 1742 1822 1841 1868 1868 1870 1874 1941 2015 2117 2138 2138 2165 2214 2237 2241 2243 2292 2459 2475 2494 2494 2505 2546 2547 2560 2589 2598 2604 2617 2622 2625 2626 2627 2631 2638 2645 2652 2655 2680 2686 2696 2730 2801 3075 3417 3425 3503 3707 3750 3826 4291 4320 4321 4335 4335 4336 4337 4338 4339 4340 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 +76 32 33 33 33 60 63 68 89 133 156 188 237 260 301 304 368 395 432 617 617 619 624 640 652 667 694 699 713 772 815 860 923 1026 1069 1079 1222 1398 1444 1505 1681 1787 1800 1822 1953 2000 2014 2151 2164 2188 2243 2243 2292 2400 2494 2494 2580 2591 2592 2617 2623 2626 2628 2632 2638 2645 2654 2664 2669 2696 2701 2735 2746 2801 2851 2997 3075 3079 3588 3676 3682 4036 4048 4189 4343 4344 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 +77 8 32 32 32 33 33 33 58 58 105 120 124 133 133 156 162 228 287 301 304 349 366 366 395 414 442 447 447 527 553 568 625 640 640 653 653 667 667 699 702 738 797 835 847 954 963 1034 1069 1083 1121 1214 1271 1339 1543 1679 1720 1742 1829 1844 2111 2153 2188 2241 2248 2248 2413 2413 2427 2494 2497 2560 2576 2580 2613 2633 2635 2661 2662 2663 2669 2676 2680 2684 2687 2689 2695 2713 2721 2723 2726 2730 2732 2736 2740 2741 2743 2744 2745 2746 2747 2748 2748 2749 2751 2753 2775 2855 2874 2947 2957 3082 3205 3284 3294 3952 4115 4115 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 +78 32 46 58 60 60 78 124 133 144 162 182 182 186 210 211 211 211 287 304 312 324 345 358 366 381 414 415 416 447 447 487 504 527 565 621 622 623 625 652 653 667 699 725 739 782 858 898 965 974 1027 1034 1052 1058 1061 1087 1169 1196 1241 1451 1477 1633 1719 1787 2138 2224 2243 2269 2360 2413 2580 2616 2624 2625 2635 2635 2665 2679 2682 2713 2725 2729 2729 2732 2734 2736 2740 2741 2743 2748 2753 2757 2760 2766 2767 2768 2770 2775 2776 2777 2780 2780 2780 2781 2782 2783 2784 2785 2925 2957 3007 3053 3075 3075 3082 3127 3152 3299 3464 3510 3510 3536 3536 3746 4115 4182 4387 4402 4410 4411 4412 4413 4414 4415 4416 4417 4417 4418 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 +79 4 4 31 32 33 46 48 55 58 58 59 114 120 133 144 162 182 182 217 228 235 247 249 249 287 304 345 366 366 370 381 395 408 424 426 439 442 502 504 558 568 625 637 653 653 667 668 755 755 784 810 858 858 901 954 954 954 964 974 989 1027 1049 1063 1087 1087 1120 1214 1241 1241 1303 1406 1451 1462 1501 1501 1501 1678 1678 1718 1809 1880 1888 1889 1901 1972 2014 2070 2293 2360 2372 2494 2501 2578 2591 2615 2615 2617 2617 2617 2633 2661 2665 2678 2679 2691 2711 2713 2734 2757 2758 2759 2759 2760 2762 2767 2768 2770 2771 2775 2780 2784 2941 3018 3063 3071 3075 3075 3079 3313 3426 3464 3676 3731 3835 4287 4383 4396 4402 4420 4423 4428 4434 4434 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 +80 32 33 58 72 79 179 202 207 217 304 304 338 366 381 395 498 553 553 553 576 591 623 674 694 782 810 845 857 918 1087 1120 1120 1157 1229 1241 1241 1339 1511 1660 1704 1829 2117 2269 2533 2617 2661 2665 2665 2711 2759 2767 2768 2780 2784 2816 2847 2941 3005 3251 3464 4290 4387 4390 4390 4395 4418 4422 4427 4427 4457 4462 4462 4463 4464 4466 4470 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 +81 3 4 4 5 7 9 11 12 19 23 29 32 33 35 35 36 39 43 45 48 48 49 51 52 55 56 57 58 58 59 60 61 63 64 65 67 68 70 72 72 72 72 72 73 73 76 77 80 82 83 84 84 84 84 85 85 88 92 94 96 97 98 98 99 101 103 133 141 141 153 156 157 157 157 165 167 169 178 179 183 186 188 189 189 198 199 204 205 217 217 217 218 218 227 239 249 256 277 278 289 290 301 354 358 366 368 370 370 371 371 376 395 407 415 424 430 536 553 614 623 625 636 784 965 1030 1195 1241 1465 1526 1575 1617 1673 1673 1679 1953 2030 2223 2480 2812 2836 2841 2853 2853 2856 2879 2918 2957 3006 3146 3205 3326 3676 3676 3676 3707 4391 4489 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4561 4562 +82 5 7 12 21 24 29 32 44 49 49 52 52 55 56 58 58 58 60 65 68 73 73 97 99 103 113 115 126 126 131 136 136 136 136 141 142 143 147 147 148 150 151 154 158 165 165 167 179 179 182 182 186 188 189 192 197 199 231 232 235 240 249 255 260 268 268 268 270 271 274 275 276 278 280 287 289 289 290 291 295 301 304 305 307 320 320 320 320 370 372 403 404 407 415 454 502 784 786 842 959 964 964 964 965 965 1030 1088 1200 1219 1223 1352 1390 1501 1868 2113 2159 2409 2447 2480 2483 2552 2624 2624 2690 2845 2846 2848 2869 2878 2903 2907 2914 2917 2918 2924 2948 2957 2957 2957 2968 2973 2990 3030 3045 3047 3194 3197 3667 3835 3890 3921 4115 4429 4489 4524 4529 4529 4535 4538 4541 4544 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 +83 5 19 23 28 31 32 32 42 48 49 52 73 73 96 97 103 105 135 141 142 143 162 167 179 207 218 227 232 235 244 246 250 255 257 261 262 268 273 274 275 276 277 280 282 283 284 289 290 292 295 297 304 331 340 354 358 371 371 376 388 390 395 395 398 403 404 407 407 414 417 450 553 699 702 816 816 829 868 955 1102 1102 1241 1323 1388 1528 1874 1874 2243 2430 2619 2756 2758 2848 2848 2856 2893 2898 2901 2903 2911 2914 2915 2917 2918 2941 2946 2962 2965 2997 3002 3030 3045 3282 3284 3356 3968 4280 4345 4529 4546 4582 4582 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 +84 4 4 4 21 22 22 24 71 73 103 103 124 124 130 136 143 162 165 178 202 217 218 232 243 246 247 249 255 271 271 276 276 286 289 290 296 311 315 320 328 328 335 337 338 340 340 342 354 358 381 381 389 390 395 399 399 403 404 407 409 414 417 434 439 442 451 453 454 457 504 553 568 607 653 842 959 1097 1155 1219 1223 1241 1342 1351 1395 1406 1675 1681 1742 1792 2215 2341 2469 2806 2848 2903 2903 2914 2931 2934 2965 2991 2991 3045 3047 3186 3194 3290 3890 3928 4411 4569 4601 4605 4615 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 diff --git a/Matlab/README.txt b/Matlab/README.txt new file mode 100644 index 00000000..04258764 --- /dev/null +++ b/Matlab/README.txt @@ -0,0 +1,4 @@ +This directory contains some basic concepts on Bayes filtering. +Main scripts : + RecursivesBayes.m + RecursivesBayesAvpd.m \ No newline at end of file diff --git a/Matlab/RecursiveBayes.m b/Matlab/RecursiveBayes.m new file mode 100644 index 00000000..9dd7300e --- /dev/null +++ b/Matlab/RecursiveBayes.m @@ -0,0 +1,187 @@ +%%%%%%%%%%%%%%%%%% +%Example of the recursive Bayes filtering +%In this example, the memory is fixed (each new signatures aren't added to +%the memory after each iteration). The likelihood is also predefined to see +%the effect of the filter. +%%%%%%%%%%%%%%%%%% +close all +clear all + +%%%%%%%%%%%% +%User inputs +%%%%%%%%%%%% +stepByStep = 0; %If we want a pause after each iteration (1) otherwise batch mode (0) +usePrefinedGaussians = 0; +loopThreshold = 0.3; +%%%%%%%%%%%% + +%Based on the very simple example on discrete recursive Bayes filter found +%in the green book p. 543 +%(Russel and Norvig : Artificial Intelligence - A Modern Approach) + +m = 11; %image counts in the working memory (virtual place included) +nIter = 10; %iterations +virtualPlacePrior = 0.8; + +% likelihood = rand(nIter,m); +likelihood = [0.537812527177546,0.973823826601782,0.679517492334616,0.511334385523834,0.133172784517682,0.616295123827850,0.333032553637148,0.0931269898117809,0.834956800914038,0.789846368465099,0.966949104425550,0.646502710583242;0.134060600345818,0.764640454269780,0.704121891203037,0.914142330394849,0.295008954572581,0.669364170554407,0.413416552284401,0.319027136248953,0.325143400597060,0.913520615552384,0.208804360594363,0.128169077499018;0.540947224212142,0.243683930209342,0.460884056746050,0.0919339388425310,0.166627082935154,0.0372015327510951,0.414348152562633,0.886961614706448,0.367639299837922,0.533254359985603,0.520476252773875,0.0813205028568441;0.857368192475905,1,2,8,2,1,0.414348152562633,0.413416552284401,0.794839466004007,0.804076444490502,0.225546129397670,0.659227054221110;0.198017363329941,0.137854510225166,1,2,8,2,1,0.414348152562633,0.0993087162421777,0.562660356611037,0.567197873830803,0.0273988510815916;0.155609101290637,0.629811667025549,0.0762044335388465,1,2,8,2,1,0.414348152562633,0.750876451961769,0.998163526074098,0.985179800828888;0.0613777678138677,0.857014692659853,0.444624971046257,0.785375111038118,1,2,8,2,1,0.414348152562633,0.131865336731199,0.539330947126751;0.661073988932246,0.899798333270360,0.165706296551124,0.602400257965727,0.218271272437479,1,2,8,2,1,0.414348152562633,0.373834916709097;0.0186026419313314,0.348368402231864,0.398748973477181,0.465908353449366,0.706077628393318,0.522221302087482,1,2,8,2,1,0.414348152562633;0.291102936564625,0.486310193286963,0.920584670910461,0.298131346189007,0.0390136924156214,0.567617714955188,0.901802906347484,1,2,8,2,1;]; +likelihoodNormalized = ones(nIter,m+1); + +%Initialize the prediction matrix +%first row is for the virtual place (loop closure) +%next rows are for each already visited place +prediction = zeros(m+1,m+1); +%Gaussians... +if(usePrefinedGaussians == 0) + %A-Create prediction with two gaussians + x = 1:1:m; + for i=1:m + y1 = gaussmf(x, [0.8 i-1]); + y2 = gaussmf(x, [0.8 i+1]); + y = y1+y2; + y = (y / sum(y)); + prediction(i+1,:) = [0.1 y]; + %normalize + prediction(i+1,:) = prediction(i+1,:) / sum(prediction(i+1,:)); + end + prediction(1,:) = [virtualPlacePrior ones(1,m)*0.1/(m)]; + + %Example + x=1:1:9; + y=gaussmf(x,[0.8 4])+gaussmf(x,[0.8 6]); + y=y/sum(y); + y=[0.1 y]; + y=y/sum(y); + figure(1); + plot([-1 x],y) + title(['Example of the prediction (two gaussians) for the loop closure event at 5' char(10) '(we suppose that it''s more probable to be in the next/previous place) after a loop closure.' char(10) 'Id -1 means a new place.']) + +else + %B-Create prediction using predefined values (representing approximativaly + %a sum of gaussian curves) + %(like implemented in c++, AvpdCore::BayesFilter::generatePrediction()) + %Format of predictionLC = {virtualPlace LoopCLosure neighbor-1 neighbor+1 neighbor-2 neighbor+2...} + predictionLC = [0.1 0.175 0.1 0.275 0.05 0.15 0.025 0.025]; %Forward probabilities +% predictionLC = [0.1 0.19 0.24 0.24 0.1 0.1 0.01 0.01]; %equal backward/forward + prediction = generatePrediction(virtualPlacePrior, predictionLC, m); + + %Example + x=1:1:9; + smallValue = (1-sum(predictionLC)) / length(x-5); + y = [predictionLC(1) smallValue predictionLC(7) predictionLC(5) predictionLC(3) predictionLC(2) predictionLC(4) predictionLC(6) predictionLC(8) smallValue]; + y=y/sum(y); + figure(1); + plot([-1 x],y) + title(['Example of the prediction (predefined pdf) for the loop closure event at 5' char(10) '(we suppose that it''s more probable to be in the next and/or previous place) after a loop closure.' char(10) 'Id -1 means a new place.']) +end + +%Initialize the prior with "no loop closure event" +prior = zeros(nIter+1, m+1); +prior(1,:) = prediction(1,:); + +figure(2) +subplot(211) +imagesc(prediction) +title('prediction matrix (m+1 x m+1 where m is the number of images + 1 virtual place)') +subplot(212) +imagesc(prediction') +title('prediction^T') + +statusLoop = zeros(1,nIter); + +loopClosureId = 0; +for iter=1:nIter + %reset loopClosureId + loopClosureId = 0; + + %Adjust likelihood + likelihoodNormalized(iter,:) = adjustLikelihood(likelihood(iter,:)); + + %posterior = n * likelihood * (prediction x prior) + % Note the transposed prediction' + prior(iter+1,:) = likelihoodNormalized(iter,:) .* (prediction' * prior(iter,:)')'; + + %normalize + prior(iter+1,:) = prior(iter+1,:) / sum(prior(iter+1,:)); + + % Loop closure ? + maxLoopProb = 0; + for i=2:m+1 + if prior(iter+1,i) > maxLoopProb + if i >= 3 && i <= m + if prior(iter+1,i-1)+prior(iter+1,i)+prior(iter+1,i+1) > loopThreshold + loopClosureId = i-1; + maxLoopProb = prior(iter+1,i); + end + elseif i == 2 + if prior(iter+1,i) + prior(iter+1,i+1) > loopThreshold + loopClosureId = i-1; + maxLoopProb = prior(iter+1,i); + end + else + if prior(iter+1,i-1) + prior(iter+1,i) > loopThreshold + loopClosureId = i-1; + maxLoopProb = prior(iter+1,i); + end + end + end + end + + statusLoop(iter) = loopClosureId; + + figure(3) + plot(statusLoop(1:iter), 'o'); + title(['Loop closure (image id)(iteration ' num2str(iter) ')']) + xlabel('Iteration') + ylabel('Loop closure id') + + figure(4) + subplot(411) + plot(prior(iter,:)'); + title(['prior (iteration ' num2str(iter) ')']) + subplot(412) + plot((prediction' * prior(iter,:)')'); + title('prediction^T x prior') + subplot(413) + plot(likelihoodNormalized(iter,:)); + title('likelihoodNormalized') + subplot(414) + plot(prior(iter+1,:)); + title('posterior = n * likelihood * (prediction^T x prior)') + + if(stepByStep ~=0) + disp('Press any key to continue...') + pause + end +end + +figure(5) +subplot(3,1,1) +plot(likelihood'); +title('likelihood') +subplot(3,1,2) +plot(likelihoodNormalized'); +title('likelihoodNormalized') +subplot(3,1,3) +plot(prior'); +title('posterior') + +%% We simulate here when the neighbors of id=4 don't exist... +% On loop closure, the pdf is {1 ... 1 2 3 5 3 1...} where the +% first 3 is the center... (its a forward probability) +% No loop closure, the pdf is {10 1 1 1 1 1 1....} +figure(6) +tmp=[10,1,1,1,1,1,1,1,1,1,1; + 1,6,5,4,0,0,0,0,0,0,0; + 1,3,3,9,0,0,0,0,0,0,0; + 1,1,2,12,0,0,0,0,0,0,0; + 1,0,0,0,15,0,0,0,0,0,0; + 1,0,0,0,0,6,5,3,1,0,0; + 1,0,0,0,0,3,3,5,3,1,0; + 1,0,0,0,0,1,2,3,5,3,1;]; +subplot(211) +imagesc(tmp) +title('Example of the effect of forgotten neighbors (around 5) on a prediction matrix') +subplot(212) +imagesc(tmp') +title('prediction^T') diff --git a/Matlab/RecursiveBayesCtabmap.m b/Matlab/RecursiveBayesCtabmap.m new file mode 100644 index 00000000..135a6b1e --- /dev/null +++ b/Matlab/RecursiveBayesCtabmap.m @@ -0,0 +1,121 @@ +%%%%%%%%%%%%%%%%%%%%%%%% +%In this example, we show how the resursive Bayes filtering works in RTAB-Map +%(Already Visited Place Detector). We load real data from an experiment on +%the 090206-3 dataset (in bin/data/090206-3). This example doesn't +%show the "forgotten" skill of the real algorithm implemented in RTAB-Map, so +%it doesn't show how probabilities are managed when a signature is +%forgotten. The links (parent, loop) between signatures are not shown. +% +%You can use the same script for your data. Just have the same format than +%the one used in the data text files. An other way is to use the RTAB-Map Gui, +%it provides an option to dump the working memory (Edit->Dump memory) +%directly. +%%%%%%%%%%%%%%%%%%%%%%%% + +close all +clear all + +%%%%%%%%%%%% +%User inputs +%%%%%%%%%%%% +stepByStep = 0; %If we want a pause after each iteration (1) otherwise batch mode (0) +plotPriorAfterEachIter = 1; +loopThreshold = 0.3; +predictionNP = 0.8; % prediction for "New place event" +predictionLC = [0.1 0.175 0.1 0.275 0.05 0.15 0.025 0.025]; % prediction pattern for "Loop closure event" +%%%%%%%%%%%% + +% load data +signRef = dlmread('DumpMemorySign.txt', ' ', 1, 0); + +%ignore the virtual place, it will be generated afer each iteration +signRef = signRef(2:end,:); %preallocation +nIter = size(signRef,1); + +% Initialize the prior +prior = cell(nIter,1); %preallocation +% Initialize the memory, contains only a virtual place null +memory = zeros(nIter+1,size(signRef,2)); %preallocation +memory(1,1) = -1; %id virtual place +dictionary = []; + +timeUpdateDictionary = zeros(nIter,1); %seconds +timeUpdateCommonSignature = zeros(nIter,1); %seconds +timeGetLikelihood = zeros(nIter,1); %seconds +timeAdjustLikelihood = zeros(nIter,1); %seconds +timeGeneratePrediction = zeros(nIter,1); %seconds +timeUpdatePrior = zeros(nIter,1); %seconds + +% Recursive Bayes estimation +for iter=1:nIter + % Signature creation + newSign = signRef(iter,:); %[id wordIds...] + t = cputime; + dictionary = updateDictionary(dictionary, newSign); + timeUpdateDictionary(iter) = cputime - t; + t = cputime; + + % add to memory + memory(iter+1, :) = newSign; + + % Update virtual place + [memory(1,:) dictionary] = updateCommonSignature(memory(1:iter+1,:), dictionary); + timeUpdateCommonSignature(iter) = cputime - t; + t = cputime; + + % Compute the likelihood + likelihood = computeLikelihood(memory(iter+1,:), memory(1:iter+1,:), dictionary); + %ignore the last (current signature) + likelihood = likelihood(1:end-1); + timeGetLikelihood(iter) = cputime - t; + t = cputime; + + % normalize the likelihood with std dev and mean + likelihoodNormalized = adjustLikelihood(likelihood); + timeAdjustLikelihood(iter) = cputime - t; + t = cputime; + + % generate prediction + prediction = generatePrediction(predictionNP, predictionLC, length(likelihood)-1); + timeGeneratePrediction(iter) = cputime - t; + t = cputime; + + % update the prior (recursive Bayes estimation equation) + if iter == 1 + prior{iter} = 1; % 100% probability to be in a new place + else + prior{iter} = [prior{iter-1};0]; + end + prior{iter} = likelihoodNormalized .* (prediction' * prior{iter}); + prior{iter} = prior{iter}/sum(prior{iter}); %Normalize + timeUpdatePrior(iter) = cputime - t; + t = cputime; + + if plotPriorAfterEachIter || iter == nIter + figure(1) + hold off + x = -1; + if length(prior{iter}) > 1 + x = [x 1:length(prior{iter})-1]; + end + plot(x, prior{iter}); + axis([x(1) x(end)+6 0 1]) + hold on + plot(x, ones(size(x))*loopThreshold, 'r') + title(['Prior pdf (iteration ' num2str(iter) '/' num2str(nIter) ')']) + legend('pdf', 'loop closure threshold') + end + + clc + disp(['(iteration ' num2str(iter) '/' num2str(nIter) ')']) + + if stepByStep ~= 0 && iter ~= nIter + disp('Press any key to continue...') + pause + end +end + +figure(2) +plot([timeUpdateDictionary timeUpdateCommonSignature timeGetLikelihood timeAdjustLikelihood timeGeneratePrediction timeUpdatePrior]) +title('Timings (seconds)') +legend('timeUpdateDictionary', 'timeUpdateCommonSignature', 'timeGetLikelihood', 'timeAdjustLikelihood', 'timeGeneratePrediction', 'timeUpdatePrior') \ No newline at end of file diff --git a/Matlab/ShowLogs/ShowLogs.m b/Matlab/ShowLogs/ShowLogs.m new file mode 100644 index 00000000..d725aa4d --- /dev/null +++ b/Matlab/ShowLogs/ShowLogs.m @@ -0,0 +1,340 @@ + +%--------------------------------------------------------- +% MatLab script. +% This shows some informations logged by the application. +% This script may work directly with octave. +%--------------------------------------------------------- +% Just put along LogF.txt and LogI.txt files generated +% (look in the application working directory). +% The files must have the same number of lines. +% +% Dependency : importfile.m +%--------------------------------------------------------- + +%-------------------- +% Parameters +%-------------------- + +close all +clear all + +Prefix = '.'; +%Prefix = './Results'; + +DataSet = ''; +%DataSet = 'NewCollege'; +%DataSet = 'CityCentre'; +%DataSet = 'Lip6Indoor'; +%DataSet = 'Lip6Outdoor'; +%DataSet = 'Lip6Outdoor_1Hz'; +%DataSet = 'UdeS_1Hz'; + +% The Ground Truth is a squared bmp file (size must match the log files +% length) where white dots mean loop closures. +% Grey dots mean 'loop closures to ignore', this happens when the rehearsal +% doesn't match consecutive images together. +PrefixGT = '.'; +%PrefixGT = './GT'; +GroundTruthFile = [PrefixGT '/' '090206-3_GT.bmp']; +%GroundTruthFile = [PrefixGT '/' DataSet '.bmp']; + + +%--------------------------------------------------------- + +display(' '); +display('Loading log files...'); +importfile([Prefix '/' DataSet '/' 'LogF.txt']); +% COLUMN HEADERS : +% 1 totalTime +% 2 timeMemoryUpdate, +% 3 timeReactivations, +% 4 timeLikelihoodCalculation, +% 5 timePosteriorCalculation, +% 6 timeHypothesesCreation, +% 7 timeHypothesesValidation, +% 8 timeRealTimeLimitReachedProcess, +% 9 timeStatsCreation +% 10 highestHypothesisValue +% 11 vpLikelihood +% 12 maxLikelihood +% 13 sumLikelihoods +% 14 mean likelihood +% 15 stddev likelihood + +importfile([Prefix '/' DataSet '/' 'LogI.txt']); +% COLUMN HEADERS : +% 1 lcHypothesisId, +% 2 mostLikelihoodId, +% 3 signaturesRemoved, +% 4 hessianThr, +% 5 wordsNewSign, +% 6 dictionarySize, +% 7 this->getSTMem().size(), +% 8 rejectLoopReason, +% 9 processMemoryUsed, +% 10 databaseMemoryUsed +% 11 signaturesReactivated +% 12 lcHypothesisReactivated +% 13 refUniqueWordsCount +% 14 reactivateId +% 15 non nulls count + +startAt = 1; +% endAt = 1175; +endAt = length(LogF(:,1)); + +figure +H1 = plot(LogF(startAt:endAt,1)*1000); +hold on +% H2 = plot(1:length(LogF(startAt:endAt,1)), ones(length(LogF(startAt:endAt,1)),1).*mean(LogF(startAt:endAt,1))*1000, 'r-') +%title('Total process time / Location') +ylabel('Time (ms)') +xlabel('Location indexes') +meanTime = mean(LogF(startAt:endAt,1))*1000 +%plot([1 length(LogF(:,1))], [800 800], 'r') +%plot([1 length(LogF(:,1))], [1000 1000], 'k') + + +% ------------------------- +% Time details +figure +subplot(7,1,1) +plot(LogF(startAt:endAt,2)*1000) +title('timeMemoryUpdate (ms)') + +subplot(7,1,2) +plot(LogF(startAt:endAt,3)*1000) +title('timeReactivations (ms)') + +subplot(7,1,3) +plot(LogF(startAt:endAt,4)*1000) +title('timeLikelihoodCalculation (ms)') + +subplot(7,1,4) +plot(LogF(startAt:endAt,5)*1000) +title('timePosteriorCalculation (ms)') + +subplot(7,1,5) +plot(LogF(startAt:endAt,6)*1000) +title('timeHypothesesCreation (ms)') + +subplot(7,1,6) +plot(LogF(startAt:endAt,7)*1000) +title('timeHypothesesValidation (ms)') + +subplot(7,1,7) +plot(LogF(startAt:endAt,8)*1000) +title('timeStatsCreation (ms)') + +% ------------------------- +figure +plot([LogF(startAt:endAt,2) sum(LogF(startAt:endAt,2:3),2) sum(LogF(startAt:endAt,2:4),2) sum(LogF(startAt:endAt,2:5),2) sum(LogF(startAt:endAt,2:6),2) sum(LogF(startAt:endAt,2:7),2) sum(LogF(startAt:endAt,2:8),2)]); +legend('timeMemoryUpdate', 'timeReactivations', 'timeLikelihoodCalculation', 'timePosteriorCalculation', 'timeHypothesesCreation', 'timeHypothesesValidation', 'timeRealTimeLimitReachedProcess', 'timeStatsCreation') +title('Process time details') + +figure +subplot(211) +plot(LogF(startAt:endAt,3)); +title('Reactivation time') +subplot(212) +plot(LogI(:,11),'.') + +% ------------------------- +figure +subplot(211) +plot(LogI(startAt:endAt, 6)); +title('dictionary size') + +subplot(212) +plot([LogI(startAt:endAt, 9)/1000000 LogI(startAt:endAt, 10)/1000000]); +title('Memory usage (in MB)') +legend('Process', 'Database') +% ------------------------- + +figure +% subplot(211) +H1 = plot(LogI(startAt:endAt,7)); +% hold on +% H2 = plot(1:length(LogI(startAt:endAt,7)), ones(length(LogI(startAt:endAt,7)),1).*mean(LogI(startAt:endAt,7)), 'r--') +%title('Working memory size') +meanWM = mean(LogI(startAt:endAt,7)) +ylabel('WM size (locations)') +xlabel('Location indexes') +% set(H1,'color',[0.3 0.3 0.3]) +% set(H2,'color',[0 0 0]) +% subplot(212) +% plot(LogI(startAt:endAt,6)); +meanDict = mean(LogI(startAt:endAt,6)) +% ylabel('Dictionary size') +% xlabel('Location indexes') + +meanWordsPerSign = mean(LogI(startAt:endAt,5)) + + +% ------------------------- +% Detected/Accepted/Rejected loop closures + +% from VerifyEpipolarGeometry.h +% UNDEFINED, 10 +% ACCEPTED, 11 +% NO_HYPOTHESIS, 12 +% MEMORY_IS_NULL, 13 +% NOT_ENOUGH_MATCHING_PAIRS, 14 +% EPIPOLAR_CONSTRAINT_FAILED, 15 +% NULL_MATCHING_SURF_SIGNATURES 16 + +figure; +subplot(311) +plot(LogF(:,10), '.') +title('Highest posterior + lc accepted and rejected') +hold on +%rejected hypotheses +y = LogF(:,10); +x = 1:length(y); +y(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) = []; +x(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) = []; +plot(x,y, 'r.') +%rejected (by ratio) hypotheses +y = LogF(:,10); +x = 1:length(y); +y(LogI(startAt:endAt, 8) ~= 3) = []; +x(LogI(startAt:endAt, 8) ~= 3) = []; +plot(x,y, 'b.') +%Accepted hypotheses +y = LogF(:,10); +x = 1:length(y); +y(LogI(startAt:endAt, 8) < 10 | LogI(startAt:endAt, 8) > 11) = []; +x(LogI(startAt:endAt, 8) < 10 | LogI(startAt:endAt, 8) > 11) = []; +plot(x,y, 'g.') +subplot(312) +plot(LogI(:,2), '.') +title('Id corresponding to highest posterior + lc accepted and rejected') +hold on +%rejected hypotheses +y = LogI(:,2); +x = 1:length(y); +y(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) = []; +x(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) = []; +plot(x,y, 'r.') +%rejected (by ratio) hypotheses +y = LogI(:,2); +x = 1:length(y); +y(LogI(startAt:endAt, 8) ~= 3) = []; +x(LogI(startAt:endAt, 8) ~= 3) = []; +plot(x,y, 'b.') +%Accepted hypotheses +y = LogI(:,2); +x = 1:length(y); +y(LogI(startAt:endAt, 8) < 10 | LogI(startAt:endAt, 8) > 11) = []; +x(LogI(startAt:endAt, 8) < 10 | LogI(startAt:endAt, 8) > 11) = []; +plot(x,y, 'g.') +subplot(313) +plot(LogI(:,5),'.') +title('wordsNewSign') +hold on +%rejected hypotheses +y = LogI(:,5); +x = 1:length(y); +y(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) = []; +x(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) = []; +plot(x,y, 'r.') +%rejected (by ratio) hypotheses +y = LogI(:,5); +x = 1:length(y); +y(LogI(startAt:endAt, 8) ~= 3) = []; +x(LogI(startAt:endAt, 8) ~= 3) = []; +plot(x,y, 'b.') +%Accepted hypotheses +y = LogI(:,5); +x = 1:length(y); +y(LogI(startAt:endAt, 8) < 10 | LogI(startAt:endAt, 8) > 11) = []; +x(LogI(startAt:endAt, 8) < 10 | LogI(startAt:endAt, 8) > 11) = []; +plot(x,y, 'g.') +% %matched sign words +% y = LogI(:,2); +% x = 1:length(y); +% mask = zeros(1,length(y)); +% y(LogI(startAt:endAt, 8) ~= 11) = []; +% for i=1:length(y) +% mask(y(i)) = 1; +% end +% y = LogI(:,5); +% y(~mask) = []; +% x(~mask) = []; +% plot(x,y, 'c.') +% %matched sign words for rejected +% y = LogI(:,2); +% x = 1:length(y); +% mask = zeros(1,length(y)); +% y(LogI(startAt:endAt, 8) < 12) = []; +% for i=1:length(y) +% mask(y(i)) = 1; +% end +% y = LogI(:,5); +% y(~mask) = []; +% x(~mask) = []; +% plot(x,y, 'm.') + +lcAccepted = sum(LogI(startAt:endAt, 8) >= 10 & LogI(startAt:endAt, 8) <= 11) +lcReactivated = sum(LogI(startAt:endAt, 12) == 1) +lcRejected = sum(LogI(startAt:endAt, 8) > 11 | LogI(startAt:endAt, 8) == 3) +lcRejectedNotEnoughPairs = sum(LogI(startAt:endAt, 8) == 14) +lcRejectedEpipolarGeo = sum(LogI(startAt:endAt, 8) > 14) + +%figure; +%plot([1.0 * (LogI(startAt:endAt, 8) == 10) ... +% 1.01 * (LogI(startAt:endAt, 8) == 11) ... +% 1.02 * (LogI(startAt:endAt, 8) == 14) ... +% 1.03 * (LogI(startAt:endAt, 8) == 15)], '.'); +%title('Reject loop reason') +%legend('UNDEFINED', 'ACCEPTED', 'NOT ENOUGH MATCHING PAIRS', 'EPIPOLAR CONSTRAINT FAILED') + +% ----------------- +% Squared matrix + + + +%% +%Precision-Recall graph + +GroundTruth = []; +if exist(GroundTruthFile, 'file') + PR = getPrecisionRecall(LogI, LogF, GroundTruthFile, 0.03); + + Precision = PR(:,1); + Recall = PR(:,2); + PrecisionVerified = PR(:,3); + RecallVerified = PR(:,4); + + %plot the Precision-Recall + figure + plot([Recall RecallVerified], [Precision PrecisionVerified]) + legend('Without verification', 'With verification') + title('Precision - Recall') + xlabel('Recall (%)') + ylabel('Precision (%)') +end + +%% +% count = 0; +% for i=2:length(LogF(:,10)) +% if(LogF(i,10) > 0.45 && LogF(i,10) < LogF(i-1,10)*0.9) +% display(['i=' num2str(i) ' with=' num2str(LogI(i,2)) ' ratio=' num2str(LogF(i,10)/LogF(i-1,10))]) +% count = count +1; +% end +% end +% count + +%% +% figure +% hold on +% K=100; +% %plot(1./(K*LogF(:,15)), 'r') +% %plot(log10(1./(LogF(:,15))), 'c') +% scale=1; +% %plot(log10(1./(LogF(:,15))).^2 ./ ((LogF(:,12)-LogF(:,15))./LogF(:,14)), 'k') +% %plot(log10(1./(LogF(:,15))), 'm') +% plot((LogF(:,12)-LogF(:,15))./LogF(:,14), 'g') +% plot([0, length(LogF(:,15))], [1 1], 'k:') +% plot(LogF(:,11), 'b') +% %legend(['K=' num2str(K)], 'ln', 'ln scaled', 'log10', 'max sim', '1', 'Vp likelihood') \ No newline at end of file diff --git a/Matlab/ShowLogs/getPrecisionRecall.m b/Matlab/ShowLogs/getPrecisionRecall.m new file mode 100644 index 00000000..680051dc --- /dev/null +++ b/Matlab/ShowLogs/getPrecisionRecall.m @@ -0,0 +1,109 @@ +function [ PR ] = getPrecisionRecall( LogI, LogF, GT_file, LoopThr ) +%GETPRECISIONRECALL Calculate the precision-recall results from the log +%files of RTAB-Map and a Ground Truth file (a bmp). +% PR(:,1) = Precision +% PR(:,2) = Recall +% PR(:,3) = Precision with verification +% PR(:,4) = Recall with verification +% +% LogI: The 'LogI.txt' generated file +% LogF: The 'LogF.txt' generated file +% GT_file: The related Ground truth file of the dataset ('GT.bmp') +% LoopThr: Display false positives over the loop thr (>=0.0 && < 1.0) + +GroundTruth = []; +if exist(GT_file, 'file') + display('--- getPrecisionRecall ---'); + display(['Loading GroundTruth ''' GT_file ''' ...']); + GroundTruth = imread(GT_file); +else + error(['The ground truth ''' GT_file '''doesn''t exist.']) +end + +if ~isempty(GroundTruth) + %display('Calculating Precision-Recall graph') + %figure + %imshow(GroundTruth) + %title('GroundTruth') + + if size(GroundTruth, 1) ~= length(LogF(:,1)) || size(GroundTruth, 1) ~= length(LogI(:,1)) + error(['The ground truth size doesn''t match the log files (LogI=' num2str(length(LogI(:,1))) ', LogF=' num2str(length(LogF(:,1))) ', GT=' num2str(size(GroundTruth, 1)) ')']) + end + + + %[highestHypot, CorrespondingID, GT, Accepted, Good, Index, UnderLoopRatio] descending order + lc = [LogF(:,10) LogI(:,2) sum(GroundTruth == 255, 2)>0 (LogI(:, 8) == 10 | LogI(:, 8) == 11) zeros(length(LogI(:,1)),1) (1:length(LogF(:,10)))' LogI(:, 8) == 3]; + + %eliminate loops on diagonal + ignored = 0; + for i=1:length(lc) + index = find(GroundTruth(:,i) > 0 & GroundTruth(:,i) < 255); + if ~isempty(index) + row = GroundTruth(index(1), :); + if lc(i,2) >= min(index) && lc(i,2) <= max(index) + display(['i=' NUM2STR(i) ' loop=' NUM2STR(LogI(i,2)) ' min(index)=' NUM2STR(min(index)) ' max(index)' NUM2STR(max(index))]) + lc(i,1) = 0; + ignored = ignored + 1; + end + end + end + + lc = sortrows(lc, -1); + + GT_total_positives = sum(sum(GroundTruth == 255, 2) > 0) + + %figure + %plot(sum(GroundTruth > 0, 2)>0) + %title('Ground truth (timeline)') + + sizeNonZero = sum(lc(:,1) > 0); + + PR = zeros(sizeNonZero, 4); + for i=1:length(lc) + if lc(i,1) == 0 + break; + end + + id = lc(i,2); + + if id && sum(GroundTruth(lc(i,6), id)) > 0 + lc(i,5) = 1; + end + + PR(i,2) = sum(lc(1:i,5) & ~lc(1:i,7) & lc(1:i,2))/GT_total_positives; + PR(i,1) = sum(lc(1:i,5) & ~lc(1:i,7) & lc(1:i,2)) / sum(~lc(1:i, 7) & lc(1:i,2)); + + %PR(i,2) = sum(lc(1:i,5))/GT_total_positives; + %PR(i,1) = sum(lc(1:i,5)) / i; + + PR(i,4) = sum(lc(1:i,4) & lc(1:i,5))/GT_total_positives; + PR(i,3) = sum(lc(1:i,4) & lc(1:i,5)) / sum(lc(1:i,4)); + + if ~lc(i,5) && ~lc(i,7) && id && lc(i,1) >= LoopThr + display(['False positive! id=' num2str(lc(i,6)) ' with old=' num2str(id) ' (p=' num2str(lc(i,1)) ')'] ) + end + + if lc(i,4) ~= lc(i,5) && lc(i,4) + display(['False positive! (v) id=' num2str(lc(i,6)) ' with old=' num2str(id) ' (p=' num2str(lc(i,1)) ')'] ) + end + end + + index = find(PR(:,1) == 1); + if ~isempty(index) + maxRecall = PR(index(end),2) * 100; + display(['Recall max (Precision=100%) = ' num2str(maxRecall) '% (p=' num2str(lc(index(end),1)) '), accepted=' num2str(sum(lc(1:index(end),5) & ~lc(1:index(end),7) & lc(1:index(end),2)))]) + else + display('Recall max (Precision=100%) = 0') + end + indexV = find(PR(:,3) == 1); + if ~isempty(indexV) + maxRecallVerified = PR(indexV(end),4) * 100; + display(['Recall max (Precision=100%, with verification) = ' num2str(maxRecallVerified) '% (p=' num2str(lc(indexV(end),1)) ')']) + else + display('Recall max (Precision=100%, with verification) = 0') + end + display(['ignored = ' num2str(ignored)]) +end + +end + diff --git a/Matlab/ShowLogs/importfile.m b/Matlab/ShowLogs/importfile.m new file mode 100644 index 00000000..179dc97b --- /dev/null +++ b/Matlab/ShowLogs/importfile.m @@ -0,0 +1,22 @@ +function importfile(fileToRead1) +%IMPORTFILE(FILETOREAD1) +% Imports data from the specified file +% FILETOREAD1: file to read + +% Auto-generated by MATLAB on 07-Oct-2009 10:10:26 + +% Import the file +rawData1 = importdata(fileToRead1); + +% For some simple files (such as a CSV or JPEG files), IMPORTDATA might +% return a simple array. If so, generate a structure so that the output +% matches that from the Import Wizard. +[unused,name] = fileparts(fileToRead1); %#ok +newData1.(genvarname(name)) = rawData1; + +% Create new variables in the base workspace from those fields. +vars = fieldnames(newData1); +for i = 1:length(vars) + assignin('base', vars{i}, newData1.(vars{i})); +end + diff --git a/Matlab/ShowLogs/logaHeaders.txt b/Matlab/ShowLogs/logaHeaders.txt new file mode 100644 index 00000000..483352a4 --- /dev/null +++ b/Matlab/ShowLogs/logaHeaders.txt @@ -0,0 +1,17 @@ +fprintf(_foutFloat, "%f %f %f %f %f %f %f %f %f\n", + totalTime, + timeMemoryUpdate, + timeReactivations, + timeLikelihoodCalculation, + timePosteriorCalculation, + timeHypothesesCreation, + timeHypothesesValidation, + timeRealTimeLimitReachedProcess, + timeStatsCreation); +fprintf(_foutInt, "%d %d %d %d\n", + lcHypothesisId, + mostLikelihoodId, + signaturesRemoved, + hessianThr, + wordsNewSign, + dictionarySize); diff --git a/Matlab/Tests/090306-3_db-Dictionary.txt b/Matlab/Tests/090306-3_db-Dictionary.txt new file mode 100644 index 00000000..a540a229 --- /dev/null +++ b/Matlab/Tests/090306-3_db-Dictionary.txt @@ -0,0 +1,4555 @@ +WordID SignaturesID... +1 1 +2 1 4 29 +3 1 18 25 58 58 58 58 +4 1 1 11 12 21 24 28 37 68 76 +5 -1 1 11 12 12 15 25 25 36 37 52 65 68 76 76 +6 1 +7 1 1 1 8 12 34 41 47 56 73 +8 -1 1 1 1 2 2 2 3 4 4 5 10 11 11 11 13 13 16 16 16 18 18 20 20 21 36 39 40 40 41 42 43 43 69 76 81 81 +9 -1 1 2 2 5 5 7 8 8 10 12 13 13 15 15 15 15 15 16 16 16 20 20 21 22 22 23 39 42 46 49 50 50 50 50 50 51 54 54 55 55 55 55 55 55 55 55 55 55 56 56 57 57 57 58 79 79 81 82 +10 1 20 24 48 +11 1 +12 1 12 28 31 40 +13 1 15 20 35 64 71 75 +14 1 +15 1 9 11 25 32 41 42 76 +16 1 41 81 +17 1 40 68 +18 1 2 2 5 13 24 41 42 53 73 75 +19 1 1 2 2 28 32 36 40 41 42 +20 1 +21 -1 1 2 2 2 2 16 16 28 39 39 41 41 41 41 42 56 72 79 79 79 80 81 +22 -1 1 3 18 20 20 21 22 24 27 30 33 34 34 43 59 61 61 62 66 74 75 75 76 +23 -1 1 1 1 1 2 2 2 4 6 6 8 10 10 11 12 16 18 18 18 20 24 25 26 26 28 30 30 31 32 33 34 35 35 36 37 39 40 40 40 41 41 42 45 50 50 51 52 55 58 66 67 68 69 72 72 73 75 79 79 80 81 +24 1 2 3 40 41 42 43 61 77 80 81 82 +25 1 +26 1 2 40 41 +27 -1 1 1 2 2 2 14 24 39 40 41 54 69 72 76 77 78 80 81 82 +28 1 18 18 40 77 80 81 +29 1 6 7 10 10 11 12 32 35 71 74 +30 -1 1 1 3 5 5 6 6 7 10 10 10 10 11 11 12 12 13 15 16 16 16 16 16 16 22 25 29 30 33 35 37 39 40 45 47 49 49 49 50 51 51 53 55 56 57 59 59 62 66 68 69 71 71 73 75 77 81 +31 1 1 40 +32 -1 1 1 2 3 5 5 5 8 8 8 8 9 9 9 10 10 11 12 12 12 12 13 16 23 24 25 25 29 30 30 32 32 33 34 34 35 36 37 37 39 40 41 41 45 45 48 48 49 49 49 51 51 53 56 56 57 62 63 63 65 66 67 68 71 72 73 74 75 75 75 76 79 80 81 +33 1 80 +34 -1 1 18 24 26 27 29 31 32 36 37 40 41 52 60 65 66 75 +35 1 +36 -1 1 2 2 10 19 21 21 24 25 32 32 39 41 47 56 66 75 79 +37 1 4 22 52 82 +38 1 31 40 81 +39 1 2 40 41 80 81 82 +40 -1 1 2 3 5 6 10 25 27 30 58 59 70 81 82 +41 1 +42 1 40 +43 1 81 +44 1 +45 -1 1 5 7 12 16 18 24 24 26 26 27 29 40 41 64 79 81 82 +46 1 1 2 39 40 41 80 81 82 +47 1 24 39 41 79 +48 1 39 72 +49 1 1 1 7 31 40 81 +50 1 +51 1 18 18 18 24 24 33 40 50 81 +52 1 25 35 36 37 40 65 +53 -1 1 1 7 11 18 24 26 27 29 37 39 40 40 40 45 49 49 58 59 65 67 72 74 80 80 +54 1 1 31 40 81 +55 1 81 +56 1 +57 1 +58 1 +59 1 +60 1 41 +61 -1 1 1 2 2 2 11 24 24 26 26 28 31 32 32 45 50 50 51 53 64 66 73 76 76 77 +62 -1 1 2 2 3 39 39 40 40 41 42 57 70 80 80 80 81 +63 1 2 3 12 18 19 59 79 80 +64 -1 1 2 3 4 7 10 12 15 15 15 16 16 23 39 41 42 42 47 51 55 56 58 60 80 82 82 +65 1 2 35 40 62 81 +66 1 31 40 80 81 +67 -1 1 2 2 2 3 3 3 4 4 4 4 4 4 4 7 8 8 8 8 9 10 10 11 11 11 12 13 13 13 13 14 15 15 15 15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 20 20 20 20 20 21 21 22 22 22 22 22 22 23 23 37 37 39 39 39 39 42 42 43 45 47 47 47 48 49 50 53 53 53 54 54 54 54 55 55 55 55 55 56 56 56 56 56 56 56 56 56 56 56 56 56 56 57 57 57 57 57 57 57 57 57 57 57 59 59 59 60 61 61 61 62 62 63 67 67 70 75 79 79 79 79 79 79 79 79 79 79 80 82 82 +68 -1 1 2 2 2 39 39 40 41 42 79 80 81 82 82 +69 1 2 2 40 40 41 80 81 82 82 +70 1 39 39 40 79 81 +71 1 1 39 39 40 79 80 80 +72 1 2 37 77 +73 1 40 80 +74 1 4 45 69 79 80 81 +75 1 +76 1 40 41 81 +77 -1 1 5 5 7 11 26 32 33 36 39 40 45 68 71 72 76 +78 1 +79 1 1 2 2 36 41 42 80 82 82 +80 1 2 41 81 +81 1 2 3 32 39 40 41 42 69 80 81 82 +82 1 +83 1 20 20 32 51 59 80 +84 1 79 80 +85 -1 1 1 3 3 4 8 11 11 11 11 11 13 21 27 39 42 43 59 62 79 80 81 82 +86 -1 1 1 2 11 22 25 31 32 37 39 39 39 40 41 51 62 79 80 81 +87 1 2 39 39 40 41 79 80 81 82 +88 1 39 40 79 80 81 81 81 +89 1 39 +90 1 39 40 40 79 +91 1 39 40 79 +92 1 40 +93 1 40 +94 1 40 81 +95 1 2 8 15 23 28 39 40 41 80 81 82 +96 1 40 +97 -1 1 2 3 7 14 26 32 39 39 39 47 48 49 60 79 +98 -1 1 3 3 4 5 9 12 29 30 31 39 40 51 52 62 65 68 70 71 79 81 +99 -1 1 18 20 22 23 39 39 40 59 60 61 79 80 80 81 81 +100 -1 1 6 14 18 34 35 35 36 37 39 40 40 76 79 80 81 +101 1 39 +102 1 +103 -1 1 30 33 35 35 36 37 39 58 73 73 74 75 79 79 80 +104 1 +105 1 1 52 52 +106 -1 1 5 7 12 13 21 31 33 34 35 35 37 38 38 40 52 75 76 77 80 81 +107 1 39 40 41 80 +108 1 5 13 30 39 40 45 80 +109 1 1 39 40 41 81 81 82 +110 1 40 81 +111 1 1 +112 1 40 +113 1 2 39 40 41 79 80 81 82 +114 1 40 +115 1 82 +116 2 +117 2 29 82 +118 2 11 15 23 27 28 42 55 60 61 73 +119 2 +120 2 11 58 +121 2 5 8 19 19 21 22 35 36 37 69 71 +122 -1 2 2 3 5 5 5 5 5 5 7 9 18 24 43 45 47 63 64 68 82 +123 2 +124 -1 2 2 4 4 8 8 12 13 13 13 13 21 21 21 21 22 23 28 32 42 42 47 48 51 51 51 53 53 58 59 59 59 60 60 61 61 64 65 71 73 77 80 80 80 82 +125 -1 2 4 4 5 7 8 10 10 11 12 13 15 15 15 15 15 16 16 16 16 16 16 16 16 18 21 35 36 39 39 39 40 40 41 41 42 42 43 49 51 54 55 55 55 55 56 56 56 56 56 56 56 56 57 57 60 76 77 77 77 77 77 80 +126 2 47 63 69 +127 -1 2 3 3 4 4 9 12 12 20 30 31 36 42 42 47 49 52 53 53 54 59 59 60 61 70 71 82 +128 2 +129 -1 2 3 3 3 3 4 6 6 7 7 7 7 7 8 8 10 10 15 15 20 21 23 27 32 42 45 50 56 56 56 57 58 58 58 66 66 69 70 71 72 72 77 78 +130 2 5 7 8 10 12 16 16 32 37 79 +131 -1 2 3 4 4 12 13 19 24 26 32 42 42 52 65 76 +132 2 3 4 4 +133 2 11 19 25 41 42 43 53 +134 2 20 20 22 42 42 59 61 +135 2 82 82 +136 2 +137 2 2 81 +138 2 42 +139 2 82 +140 2 43 43 +141 2 38 +142 2 2 3 6 6 6 9 11 19 22 82 +143 -1 2 3 4 6 18 19 19 21 22 28 32 33 35 37 39 40 43 46 65 67 72 81 82 +144 2 42 +145 2 82 +146 2 +147 2 +148 2 21 28 41 +149 2 +150 2 +151 2 71 +152 2 41 +153 2 2 +154 2 +155 2 3 78 +156 2 2 41 +157 -1 2 4 5 5 18 24 26 34 35 39 41 48 49 52 54 65 76 79 82 +158 2 +159 2 3 4 41 42 43 82 +160 2 +161 -1 2 4 4 10 16 16 16 26 39 41 42 43 56 57 66 79 82 +162 2 +163 2 3 41 42 +164 -1 2 15 20 22 22 26 26 26 27 31 41 45 57 57 66 +165 2 +166 2 +167 2 +168 -1 2 5 6 12 15 18 18 19 19 22 26 27 28 32 36 39 53 54 57 59 60 61 61 67 75 82 +169 -1 2 31 31 32 32 39 40 40 53 71 72 73 81 +170 2 5 22 22 31 39 40 41 47 62 79 +171 2 +172 -1 2 10 10 10 12 12 13 14 14 15 15 15 15 16 16 16 16 16 16 16 19 19 22 22 27 51 54 54 55 55 55 55 55 55 56 56 56 56 56 56 56 57 57 59 60 63 63 72 80 +173 2 18 41 69 70 +174 2 +175 -1 2 4 4 4 6 7 8 8 9 10 11 11 12 12 12 12 12 12 13 15 16 16 16 20 21 21 22 22 37 37 39 40 40 42 45 47 50 50 52 53 55 55 55 55 56 56 56 56 56 56 58 58 58 58 58 59 59 60 61 62 63 63 66 70 79 79 79 79 +176 2 +177 2 41 +178 2 +179 2 +180 2 +181 -1 2 3 3 3 4 5 6 7 7 7 7 7 7 7 8 8 8 8 9 10 10 11 15 15 15 15 15 21 23 40 41 45 47 47 49 49 49 50 51 51 53 55 55 55 56 56 56 56 56 56 56 56 57 58 59 80 82 +182 -1 2 2 4 5 8 8 11 11 18 20 23 25 25 26 26 33 34 37 39 39 41 41 52 52 55 60 65 65 67 67 68 74 76 79 81 81 +183 2 41 47 +184 2 8 33 40 45 47 47 +185 2 +186 2 4 20 39 43 80 +187 -1 2 4 4 10 11 12 18 18 18 18 19 24 28 29 30 30 33 35 36 37 41 41 47 47 47 47 47 51 60 66 69 77 81 +188 2 20 24 25 42 72 81 82 82 +189 2 8 39 +190 2 8 41 42 47 56 79 81 81 +191 2 41 82 +192 2 40 41 69 81 82 +193 2 41 +194 2 +195 2 +196 -1 2 8 10 24 25 28 30 33 34 34 34 41 42 48 64 65 65 67 72 73 74 75 78 79 80 81 81 82 +197 -1 2 2 8 8 10 12 25 31 32 39 39 41 43 53 59 76 79 80 82 +198 2 3 41 41 41 +199 2 15 16 16 39 40 41 41 55 60 79 +200 2 +201 2 4 80 +202 2 32 41 71 +203 2 41 81 +204 2 +205 2 +206 2 11 12 12 18 30 31 32 41 52 65 71 +207 2 40 +208 -1 2 4 8 13 39 40 40 41 42 48 60 64 79 80 81 82 82 +209 2 3 +210 -1 2 4 8 10 10 11 20 24 25 26 32 39 43 48 50 50 52 52 65 77 +211 2 34 34 35 82 +212 2 5 37 37 41 +213 2 39 39 40 79 79 80 82 +214 2 41 +215 2 13 26 31 36 36 +216 2 41 +217 -1 3 3 3 4 4 6 6 6 7 7 7 13 22 25 27 27 31 46 52 53 81 +218 -1 3 3 4 4 4 4 5 5 9 9 13 13 15 19 20 21 24 25 25 25 34 34 36 36 37 43 45 45 45 46 46 49 51 52 52 52 53 53 55 60 65 66 73 75 77 +219 -1 3 4 5 11 16 19 20 26 39 40 42 42 50 56 75 81 82 +220 -1 3 4 4 4 4 10 15 16 16 18 22 24 33 36 36 48 51 71 75 76 77 +221 3 3 4 4 7 7 8 10 43 47 78 +222 3 3 +223 3 43 +224 3 +225 3 4 42 +226 3 +227 3 3 4 43 +228 3 4 7 27 33 36 36 39 40 42 +229 3 3 +230 3 4 54 77 +231 3 7 13 41 47 49 52 53 54 78 81 +232 3 +233 3 25 33 +234 -1 3 4 4 4 4 4 4 4 5 5 5 7 7 8 8 8 9 10 10 10 10 10 11 12 12 13 15 16 16 16 16 16 23 23 26 27 28 36 36 36 37 39 41 42 42 43 43 46 46 46 46 47 48 49 49 50 55 55 55 55 55 56 56 56 56 56 56 57 58 61 63 66 70 71 72 75 76 77 81 +235 -1 3 9 10 10 11 13 22 24 25 28 29 30 30 31 32 33 36 36 36 37 40 43 53 55 55 55 55 55 55 55 55 63 65 72 72 73 77 79 79 80 +236 3 4 22 37 76 +237 -1 3 7 10 11 22 29 42 43 50 64 67 74 75 +238 3 3 19 25 65 +239 3 19 34 38 41 55 56 82 +240 3 +241 3 4 39 41 42 43 54 61 69 80 82 +242 3 3 4 +243 3 43 +244 -1 3 3 3 4 4 4 4 4 8 9 9 9 9 10 10 10 11 11 12 12 12 12 14 18 21 31 36 42 43 43 48 51 52 54 59 60 61 77 +245 3 4 22 36 51 59 70 +246 3 62 +247 3 4 6 7 9 12 41 42 53 75 77 82 +248 3 62 +249 3 +250 3 21 32 +251 3 11 +252 -1 3 4 5 5 11 26 35 36 36 36 37 41 42 53 66 75 75 76 76 +253 3 +254 3 +255 3 40 41 42 81 +256 3 3 43 82 +257 3 5 5 6 6 13 63 82 +258 3 40 42 80 82 +259 3 +260 3 +261 3 4 42 +262 3 +263 3 +264 3 77 +265 4 +266 4 43 53 +267 4 4 16 66 +268 4 +269 4 4 4 5 13 33 46 +270 4 +271 4 +272 4 +273 4 +274 4 +275 4 +276 4 +277 4 +278 4 43 43 +279 4 +280 4 58 +281 4 +282 4 +283 4 4 43 +284 4 +285 4 7 13 20 35 43 46 +286 -1 4 4 5 13 24 24 25 25 27 29 32 50 53 53 59 63 66 73 81 +287 4 +288 4 +289 4 +290 4 +291 4 12 32 43 59 72 +292 4 +293 4 76 +294 4 +295 4 +296 4 +297 4 +298 4 +299 4 29 66 +300 4 30 +301 4 18 20 33 43 +302 4 4 43 43 +303 4 4 29 43 78 +304 4 4 5 8 +305 4 13 13 43 43 51 51 65 +306 4 4 +307 -1 4 5 5 6 6 6 7 9 15 16 20 22 23 23 25 27 31 36 46 47 48 55 55 63 66 67 73 75 77 78 82 +308 -1 4 4 8 8 9 9 10 10 11 11 11 11 11 11 11 11 12 12 12 12 12 13 20 20 20 39 43 43 48 50 50 50 50 50 50 51 51 51 51 51 52 52 52 52 59 59 60 60 60 77 77 81 +309 4 7 +310 -1 4 4 8 9 9 11 16 16 19 20 22 26 32 35 36 37 42 42 42 42 42 42 43 47 48 48 48 57 76 77 82 +311 4 4 46 +312 4 14 19 24 24 31 54 54 +313 4 +314 4 7 21 25 35 43 59 61 63 71 73 +315 -1 4 9 9 11 24 37 37 43 43 48 51 59 59 +316 4 16 16 24 37 42 42 +317 4 +318 4 +319 4 +320 4 10 13 +321 4 +322 4 +323 4 +324 4 4 +325 4 6 6 7 32 +326 4 +327 -1 4 6 9 10 15 15 16 16 16 23 24 45 49 49 61 61 62 66 +328 -1 4 4 8 9 9 10 10 15 16 22 48 56 57 57 58 +329 4 8 8 9 13 14 37 52 +330 4 8 13 14 29 31 +331 4 +332 4 +333 4 +334 4 4 4 13 43 +335 4 43 +336 4 +337 4 43 +338 4 10 10 10 10 59 +339 4 43 43 +340 4 20 32 43 43 51 77 80 +341 4 +342 4 40 43 +343 4 4 8 10 11 16 16 16 26 55 79 82 +344 4 4 12 38 42 43 43 49 61 66 +345 4 26 +346 -1 4 4 5 6 6 8 10 15 15 15 16 16 16 20 21 34 36 41 43 45 46 47 48 49 49 50 55 55 55 56 56 57 61 61 +347 -1 4 10 10 18 27 28 32 36 40 41 43 49 50 53 54 59 67 69 81 +348 4 +349 4 +350 -1 4 4 4 4 11 25 25 29 42 43 43 61 65 +351 4 12 28 29 43 43 +352 4 +353 4 8 58 +354 4 +355 -1 4 5 5 7 8 8 11 15 15 15 16 16 16 20 21 22 22 23 41 42 42 45 47 47 47 48 48 55 55 55 55 55 55 56 57 57 58 59 61 61 62 63 67 68 +356 4 51 +357 4 5 34 39 45 76 79 +358 4 40 43 43 48 +359 4 +360 4 +361 4 +362 -1 4 8 8 8 9 10 12 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16 16 19 20 22 22 23 23 23 25 26 36 37 37 42 42 42 43 47 47 48 48 48 48 49 49 49 50 50 50 54 55 55 55 57 57 57 59 60 61 62 62 63 63 76 77 +363 4 7 8 16 43 +364 5 +365 5 +366 5 +367 5 8 21 24 29 32 35 59 +368 5 +369 5 5 6 6 76 +370 5 6 7 21 38 65 73 +371 5 6 45 +372 -1 5 5 6 6 6 6 6 7 7 7 8 12 14 15 15 16 18 25 27 27 28 32 34 36 39 43 46 46 47 55 68 +373 -1 5 6 9 10 10 11 11 12 14 15 15 15 16 16 16 16 16 16 16 18 20 21 22 24 25 26 27 28 32 37 45 45 45 45 45 45 47 50 53 54 55 56 56 57 57 57 57 58 58 58 58 58 58 58 63 77 +374 5 48 67 +375 5 45 47 +376 5 +377 5 6 9 45 47 +378 5 8 50 +379 5 6 +380 5 32 45 45 +381 5 45 +382 5 5 6 7 28 46 +383 5 +384 5 10 35 45 48 65 65 +385 5 6 7 45 +386 5 5 +387 -1 5 6 7 8 8 9 11 13 18 19 19 28 30 47 48 48 50 65 71 +388 5 +389 5 9 10 12 13 45 50 52 +390 5 +391 5 +392 5 72 +393 -1 5 5 6 7 7 8 9 9 45 45 46 46 47 48 +394 -1 5 6 13 13 13 16 18 18 20 22 24 24 24 25 26 29 29 29 29 32 32 33 34 37 37 39 43 47 48 48 52 53 53 53 53 53 53 53 55 55 55 55 59 64 67 69 73 76 76 77 77 78 79 80 +395 5 46 64 71 +396 5 5 6 9 14 18 45 46 49 69 77 78 +397 5 9 35 45 49 65 72 78 +398 -1 5 6 9 9 18 21 27 31 35 37 40 47 66 70 +399 5 11 32 41 +400 5 7 9 26 28 35 45 68 68 +401 5 +402 5 6 21 29 43 58 74 +403 5 +404 -1 5 5 6 9 9 9 12 14 24 25 25 37 39 45 45 48 49 64 64 65 +405 5 6 45 +406 5 +407 5 45 +408 5 8 8 9 +409 5 5 6 45 +410 5 11 45 48 49 +411 5 +412 -1 5 6 7 10 11 11 11 14 14 14 15 15 22 22 35 45 46 46 50 50 50 50 56 57 63 63 +413 5 9 23 36 54 55 59 65 67 +414 5 8 8 45 45 49 +415 5 +416 5 7 34 45 47 48 +417 5 6 45 +418 5 6 7 45 46 48 +419 5 6 45 58 69 +420 5 5 45 79 +421 5 +422 5 +423 -1 5 5 5 5 7 8 11 12 18 27 34 35 35 48 48 51 52 73 74 74 +424 5 21 +425 5 +426 5 5 7 18 27 37 37 69 76 76 76 +427 5 8 14 20 26 27 28 32 37 65 76 +428 -1 5 6 11 18 27 29 30 33 34 34 45 67 73 74 +429 -1 5 5 7 9 11 12 24 24 25 26 27 37 37 37 39 45 47 51 70 70 72 72 76 77 79 +430 5 6 8 24 25 45 46 64 +431 5 +432 5 +433 5 +434 5 46 +435 5 +436 5 5 66 +437 5 +438 5 6 7 7 11 45 69 +439 5 45 47 47 58 +440 5 48 +441 -1 5 9 10 11 11 12 13 13 46 47 48 50 50 51 52 53 53 53 54 +442 -1 5 5 6 6 7 7 7 8 10 45 46 46 46 47 48 54 +443 5 46 +444 5 5 12 34 35 36 37 45 73 74 75 76 +445 5 45 46 +446 5 24 45 65 69 +447 5 45 +448 5 8 9 12 13 13 47 52 68 +449 5 +450 5 8 45 45 +451 5 6 +452 5 +453 5 6 45 64 +454 5 46 +455 5 +456 -1 5 5 6 6 6 7 9 27 28 34 43 45 45 46 46 51 58 66 67 73 74 74 76 77 +457 5 5 7 8 25 26 47 51 65 66 66 +458 5 22 43 64 70 +459 5 +460 5 7 +461 5 5 +462 5 45 +463 5 6 7 +464 5 5 22 36 +465 -1 5 13 27 28 28 30 37 45 51 53 65 65 67 68 75 +466 5 6 45 +467 5 6 7 7 8 9 10 45 46 47 48 +468 5 +469 5 5 +470 -1 5 8 8 9 9 34 34 35 35 36 36 36 37 37 64 75 +471 5 13 64 66 72 +472 5 +473 5 +474 5 45 +475 5 +476 -1 5 12 13 15 15 24 24 26 36 37 53 53 64 64 78 +477 5 25 66 66 +478 5 +479 5 +480 5 9 45 +481 5 26 66 +482 5 +483 5 +484 5 +485 5 +486 6 7 8 10 13 18 19 41 50 58 65 72 +487 6 +488 6 +489 6 46 +490 6 7 +491 6 +492 6 7 45 +493 6 7 9 46 +494 6 +495 -1 6 8 10 10 11 12 14 21 45 48 49 50 51 +496 -1 6 26 28 32 32 34 34 38 65 67 68 69 70 74 78 +497 6 +498 -1 6 6 7 8 9 12 12 14 16 45 46 46 47 50 51 51 52 52 54 +499 6 7 61 77 +500 6 49 +501 6 6 33 46 +502 6 +503 6 45 46 +504 6 7 8 25 26 26 27 29 29 47 65 +505 6 +506 -1 6 7 7 8 13 14 20 26 26 46 58 58 65 +507 6 29 30 46 +508 6 7 7 +509 6 16 16 28 28 50 +510 6 8 48 +511 6 7 8 46 46 47 +512 6 11 45 +513 6 18 25 26 27 45 74 +514 6 29 30 33 70 +515 6 10 46 +516 6 7 8 45 46 48 +517 6 46 55 +518 6 46 +519 6 45 +520 -1 6 8 10 12 13 24 25 26 26 27 31 35 38 39 47 58 75 +521 6 +522 6 +523 6 +524 6 46 +525 6 34 36 74 +526 6 7 46 +527 6 +528 6 10 45 +529 6 45 +530 6 +531 6 6 46 +532 6 7 +533 6 10 49 65 +534 6 7 46 +535 6 45 +536 6 +537 6 67 +538 6 +539 7 15 18 26 30 40 46 49 58 70 71 75 +540 7 21 59 65 76 +541 7 +542 7 37 41 46 +543 7 12 39 +544 7 +545 7 13 28 +546 7 46 +547 7 +548 7 +549 7 +550 7 12 +551 7 8 11 47 48 49 +552 7 12 24 45 50 53 +553 7 +554 7 27 28 35 37 42 46 71 +555 7 8 11 47 +556 7 33 33 46 78 +557 7 47 +558 -1 7 8 8 8 9 11 11 11 12 12 13 14 14 15 15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 20 20 21 21 21 22 23 29 32 36 37 38 40 40 42 45 46 47 47 47 47 47 47 47 49 51 51 51 54 54 54 55 55 55 55 55 56 56 56 56 56 56 56 56 57 57 57 57 58 58 59 60 60 60 61 61 62 63 63 63 63 77 79 79 80 81 82 +559 7 47 53 +560 7 +561 7 47 53 +562 7 47 +563 7 +564 7 7 46 47 +565 7 45 46 47 +566 7 31 46 +567 7 46 47 +568 7 +569 7 46 +570 7 +571 7 15 46 +572 -1 7 8 8 8 9 9 10 47 48 48 49 49 59 73 73 +573 7 31 +574 7 74 +575 7 +576 7 8 47 +577 7 47 +578 7 +579 7 +580 7 30 72 +581 7 46 +582 7 8 8 46 48 +583 7 +584 -1 7 8 8 9 11 11 12 13 13 15 15 15 16 16 16 16 19 21 21 21 28 34 35 45 47 48 52 53 53 54 55 56 56 57 57 61 67 68 76 78 +585 -1 7 7 11 13 15 15 16 24 33 40 46 47 48 50 53 61 63 63 65 70 70 71 71 +586 7 46 +587 -1 7 18 19 20 20 21 27 30 55 58 58 60 61 69 77 82 +588 7 46 +589 7 9 10 11 18 22 46 46 48 49 80 +590 7 15 46 46 +591 7 +592 7 40 +593 7 32 45 47 48 +594 7 +595 7 45 +596 -1 7 7 10 10 13 13 20 30 35 35 36 50 69 +597 7 9 10 13 35 36 52 59 74 +598 7 +599 7 46 +600 7 30 36 64 65 68 +601 7 +602 7 47 +603 7 +604 7 8 +605 7 46 +606 7 46 +607 7 7 11 50 +608 7 11 25 30 +609 7 7 19 +610 7 47 +611 7 +612 7 +613 7 10 10 11 46 46 54 54 77 78 +614 7 46 +615 8 9 9 11 36 51 72 +616 8 48 +617 8 +618 8 33 34 74 +619 8 9 9 47 48 +620 -1 8 9 9 10 10 11 11 25 26 30 31 35 47 48 49 65 66 70 72 +621 8 9 9 24 26 26 27 47 48 51 65 66 +622 8 +623 8 +624 8 +625 8 47 +626 8 9 13 48 49 +627 8 46 49 +628 8 8 9 48 +629 8 +630 8 +631 8 81 +632 8 +633 8 +634 -1 8 9 9 10 20 28 31 32 33 34 48 65 65 +635 8 +636 8 9 10 48 49 +637 -1 8 10 11 11 12 12 13 13 13 14 20 20 47 48 48 50 51 52 52 54 55 +638 8 47 +639 8 46 47 +640 8 9 48 48 +641 8 +642 8 45 77 +643 -1 8 10 12 12 20 23 26 36 36 47 51 51 51 53 53 59 62 62 62 63 66 69 70 80 82 +644 8 9 48 49 +645 8 47 +646 -1 8 10 11 11 11 12 45 47 47 48 48 49 50 61 +647 -1 8 11 13 15 19 21 24 31 47 51 53 53 53 61 69 +648 8 +649 8 11 45 47 50 +650 8 78 +651 8 9 10 12 47 48 50 51 +652 8 11 19 20 60 62 +653 8 9 48 48 58 +654 8 47 48 +655 8 +656 8 9 9 11 12 47 48 49 +657 8 50 +658 -1 8 12 15 15 15 15 23 23 34 47 47 47 47 48 48 51 55 56 56 57 58 65 77 78 +659 8 9 +660 8 9 34 47 48 73 74 74 +661 8 +662 8 9 49 49 49 +663 8 27 67 +664 8 8 9 9 25 43 +665 8 9 47 +666 8 9 47 +667 -1 8 12 13 14 15 18 20 20 20 21 21 21 21 21 22 22 23 23 30 45 54 55 55 55 59 59 59 60 60 61 62 62 62 +668 -1 8 9 9 24 35 45 47 48 51 51 51 52 58 76 +669 8 48 +670 8 +671 8 +672 8 9 48 +673 8 +674 8 18 47 48 +675 8 47 48 48 52 +676 8 +677 8 +678 8 47 48 +679 8 64 +680 8 9 16 16 19 38 45 50 58 59 78 +681 -1 8 8 10 12 12 13 13 20 21 22 40 42 42 51 77 80 80 80 +682 8 9 47 47 48 49 +683 8 50 +684 8 +685 8 10 10 10 10 10 13 13 42 50 +686 8 60 +687 8 47 47 48 48 +688 8 +689 8 8 47 48 48 +690 8 +691 8 47 47 48 +692 8 +693 8 8 47 47 +694 8 47 +695 8 8 10 18 +696 8 11 19 29 35 46 48 49 69 +697 8 11 49 +698 8 47 +699 8 8 10 10 36 50 76 +700 8 30 +701 8 +702 8 10 13 14 21 39 49 51 62 +703 8 48 49 +704 8 22 23 +705 8 +706 9 +707 9 33 73 +708 9 +709 -1 9 10 11 18 31 33 35 48 49 49 50 67 73 +710 9 48 49 +711 9 65 +712 9 +713 9 9 43 +714 9 49 +715 9 +716 9 11 12 48 50 50 +717 9 10 10 12 13 14 48 49 50 50 51 +718 9 19 33 35 47 49 50 66 +719 9 +720 9 11 24 48 69 71 78 78 +721 -1 9 12 12 15 15 15 15 15 15 16 16 16 16 16 21 22 23 40 42 43 47 51 54 55 55 55 55 56 56 56 56 56 56 56 57 57 57 60 63 76 +722 9 16 16 45 47 49 56 +723 9 32 48 71 +724 9 +725 9 10 26 34 47 49 59 65 67 67 67 68 +726 -1 9 10 18 21 24 24 26 26 26 27 28 28 28 28 29 29 30 30 31 31 32 32 33 34 34 35 36 48 49 50 60 65 66 67 67 67 69 69 70 72 72 73 73 74 +727 9 21 48 49 +728 9 12 21 26 47 48 65 66 +729 9 49 +730 9 49 +731 9 10 48 49 +732 9 10 49 +733 9 43 48 +734 9 10 48 49 +735 9 10 49 50 +736 9 48 49 +737 9 10 +738 9 +739 9 +740 9 +741 -1 9 10 11 45 45 45 48 48 49 49 50 54 58 64 +742 9 48 +743 9 10 48 49 +744 9 12 12 12 39 40 42 46 46 71 +745 9 46 47 +746 9 10 11 12 33 48 48 49 49 50 +747 9 49 +748 9 24 32 48 64 71 +749 9 +750 9 49 +751 9 +752 9 49 49 +753 9 60 +754 9 +755 9 46 47 48 48 +756 10 +757 10 50 +758 10 50 +759 10 11 12 20 37 40 50 66 +760 10 10 13 14 42 42 49 51 52 80 82 +761 10 +762 10 12 50 52 +763 10 11 11 30 49 50 51 66 69 74 +764 10 34 50 +765 10 75 +766 -1 10 11 11 11 12 13 15 15 20 22 23 26 39 39 39 39 41 42 43 50 50 50 51 55 57 57 57 58 59 76 77 79 80 81 +767 10 +768 10 61 +769 10 12 12 12 13 13 24 41 41 51 60 79 +770 10 49 +771 10 +772 10 47 49 +773 10 50 +774 10 49 +775 10 11 11 20 22 49 50 50 +776 10 49 +777 -1 10 11 28 34 36 36 37 39 41 49 50 52 53 65 68 72 +778 10 +779 10 +780 10 12 26 31 49 77 +781 10 24 29 49 50 50 70 +782 10 11 19 46 60 +783 10 20 24 33 52 64 69 +784 10 +785 -1 10 11 11 11 11 12 13 18 18 22 24 24 25 25 25 28 32 33 34 35 37 37 37 37 40 47 48 51 51 51 52 52 54 54 55 55 60 60 66 69 70 72 77 77 +786 10 +787 10 49 51 +788 10 +789 10 58 70 +790 -1 10 10 12 13 14 40 47 47 49 53 53 53 72 +791 -1 10 11 11 11 11 11 15 22 25 26 28 29 31 34 35 41 46 46 46 47 50 50 51 53 53 66 66 69 72 72 75 76 79 79 +792 10 11 +793 -1 10 12 13 24 24 25 26 27 29 29 30 31 31 32 32 33 33 37 39 47 52 66 68 70 70 70 71 72 73 73 74 74 75 77 80 +794 10 +795 10 11 25 25 26 26 49 65 +796 10 +797 10 11 11 13 20 50 53 66 77 +798 10 25 +799 10 +800 10 +801 10 +802 10 +803 10 +804 10 50 +805 10 +806 10 +807 10 11 49 50 +808 -1 10 11 11 12 12 12 14 25 25 33 35 43 50 50 51 51 52 52 74 +809 -1 10 11 11 13 41 47 48 48 49 49 50 51 64 +810 10 13 18 28 31 50 51 72 +811 10 49 +812 10 50 +813 10 +814 10 +815 10 +816 10 20 51 +817 10 49 +818 10 +819 10 49 +820 10 10 +821 10 49 +822 10 65 +823 11 25 +824 11 50 +825 11 21 58 65 +826 11 43 47 51 +827 11 +828 11 48 50 51 +829 11 13 51 59 +830 11 50 51 +831 11 21 51 68 +832 11 14 53 +833 11 28 34 51 67 67 +834 11 +835 11 12 +836 11 51 +837 11 +838 11 +839 11 +840 11 13 24 38 46 57 +841 11 34 +842 11 51 53 55 +843 11 32 51 68 72 +844 11 50 +845 11 46 +846 11 +847 11 +848 11 38 38 51 79 +849 11 12 20 21 42 47 51 +850 11 66 +851 11 16 20 47 50 77 +852 11 50 +853 11 +854 11 12 27 29 45 49 50 52 52 68 76 +855 11 +856 11 11 +857 11 23 38 50 50 51 58 63 +858 11 50 50 +859 11 +860 11 46 51 +861 11 48 50 76 +862 11 26 26 52 +863 11 18 49 51 67 73 +864 11 +865 11 28 37 49 50 67 73 76 77 +866 11 50 51 51 +867 11 11 +868 11 +869 11 11 50 69 +870 11 +871 11 50 +872 11 74 75 +873 11 +874 11 50 +875 11 +876 11 +877 11 +878 11 51 +879 11 49 +880 -1 11 12 13 15 15 15 15 15 15 16 16 16 16 22 39 39 40 41 42 43 49 50 50 51 52 54 55 56 56 57 57 57 77 78 79 +881 11 +882 11 +883 11 +884 11 12 24 39 59 +885 11 +886 11 12 51 +887 11 39 42 59 +888 12 12 20 28 35 35 80 +889 12 +890 12 +891 12 34 +892 12 13 +893 12 +894 12 +895 12 76 +896 -1 12 13 13 14 14 14 14 21 21 22 29 36 40 41 42 42 42 42 42 43 50 51 52 52 53 54 54 59 60 60 61 61 75 77 77 82 +897 12 +898 12 13 13 40 51 52 +899 12 +900 12 +901 12 42 66 +902 12 20 21 32 37 41 52 52 61 68 81 81 +903 12 13 30 30 52 69 +904 12 +905 12 +906 -1 12 13 22 36 47 49 51 52 52 59 62 76 77 79 +907 12 12 50 +908 -1 12 12 12 13 15 18 18 20 35 36 51 51 51 52 52 53 58 59 60 60 77 78 78 78 +909 12 12 12 48 51 +910 12 52 +911 12 13 13 29 50 51 51 52 52 59 60 +912 12 52 59 +913 12 28 48 50 51 52 66 +914 12 +915 12 +916 12 13 13 50 51 51 52 53 +917 12 +918 12 +919 -1 12 13 14 18 20 20 43 43 43 47 52 54 59 61 61 61 62 75 77 +920 12 +921 12 +922 12 12 13 18 25 45 52 59 62 65 65 79 +923 12 24 52 +924 12 49 51 74 75 +925 12 +926 12 15 16 20 20 21 46 47 60 61 +927 12 +928 12 +929 12 37 75 +930 12 62 +931 12 26 50 50 52 +932 12 +933 -1 12 32 39 39 43 51 51 51 51 51 51 51 52 52 57 57 +934 12 52 +935 12 51 +936 12 13 18 52 +937 12 +938 12 +939 12 +940 -1 12 13 25 25 29 30 30 32 49 52 65 71 76 78 +941 12 34 36 +942 12 51 52 +943 12 +944 12 12 13 52 53 +945 12 +946 12 52 +947 12 +948 12 +949 12 36 52 +950 12 +951 12 +952 13 35 37 +953 13 35 +954 -1 13 14 15 20 25 27 28 43 45 47 49 50 71 74 75 78 +955 13 53 +956 13 53 58 +957 13 41 +958 -1 13 15 22 38 38 47 50 51 51 55 55 57 62 79 +959 13 +960 13 25 26 27 36 40 51 53 77 82 +961 13 +962 13 69 78 +963 13 +964 13 +965 13 69 +966 13 +967 13 +968 13 43 +969 13 13 +970 13 35 +971 13 +972 13 +973 13 53 53 76 +974 -1 13 22 38 46 47 50 53 53 55 55 55 58 61 67 +975 13 13 +976 13 39 +977 13 +978 13 29 33 34 68 69 71 73 75 79 +979 13 13 31 70 71 71 +980 13 +981 -1 13 13 13 14 14 14 19 20 21 35 35 35 53 53 54 55 59 60 61 +982 13 +983 13 +984 13 19 21 22 32 36 38 42 51 52 59 +985 13 +986 13 24 37 60 +987 13 43 53 53 +988 13 +989 13 +990 13 +991 13 +992 13 52 53 +993 13 +994 13 +995 13 14 52 53 +996 13 14 14 37 52 53 58 +997 13 +998 13 47 +999 13 53 +1000 13 +1001 13 +1002 -1 13 13 24 25 25 25 26 52 53 54 64 65 68 71 77 +1003 13 +1004 13 31 33 51 52 52 +1005 13 +1006 13 53 +1007 13 24 29 59 +1008 13 +1009 13 +1010 13 30 31 53 64 71 +1011 13 13 35 51 51 52 53 +1012 13 +1013 13 +1014 13 14 52 53 +1015 14 +1016 14 +1017 14 +1018 14 32 54 55 60 +1019 14 15 18 19 20 20 38 54 61 82 +1020 14 68 +1021 14 +1022 14 20 34 38 46 46 73 +1023 -1 14 15 22 22 31 55 55 56 58 64 71 80 82 +1024 14 +1025 14 +1026 -1 14 20 21 25 27 28 35 42 43 61 63 67 67 +1027 14 15 26 53 54 72 +1028 14 53 +1029 14 46 53 73 78 +1030 14 53 54 +1031 14 +1032 14 +1033 14 15 53 +1034 14 18 53 53 54 +1035 15 15 15 55 55 55 +1036 15 23 30 43 58 58 +1037 15 55 56 56 +1038 15 +1039 15 +1040 15 54 56 +1041 15 +1042 15 15 22 +1043 15 +1044 15 +1045 15 21 22 22 55 60 61 61 +1046 15 +1047 15 +1048 15 35 +1049 15 16 +1050 15 +1051 15 +1052 15 55 +1053 15 55 +1054 15 55 73 +1055 15 +1056 15 19 19 20 21 23 53 60 61 61 80 +1057 15 21 80 +1058 -1 15 16 16 21 22 22 51 52 52 53 53 53 54 54 55 56 56 56 59 +1059 15 23 41 41 55 55 56 63 79 +1060 -1 15 36 38 41 42 43 43 47 48 48 49 51 55 56 56 57 70 78 +1061 15 +1062 15 55 +1063 15 +1064 15 +1065 15 +1066 15 55 55 +1067 15 55 55 +1068 15 16 54 56 +1069 15 +1070 15 +1071 -1 15 21 22 29 38 45 46 51 52 53 53 54 55 59 +1072 15 +1073 15 55 +1074 -1 15 16 16 16 16 16 16 16 16 16 16 16 16 21 21 26 37 37 40 40 43 47 47 47 47 52 52 53 54 54 55 55 55 55 55 55 55 55 55 55 55 55 55 55 56 56 56 56 56 56 56 57 57 57 57 57 57 57 57 57 57 57 66 67 74 76 78 82 +1075 15 +1076 15 +1077 16 +1078 16 +1079 16 +1080 16 56 +1081 16 +1082 16 18 20 56 57 +1083 16 +1084 16 +1085 16 16 54 55 56 57 +1086 16 56 +1087 16 +1088 16 +1089 16 19 28 55 56 +1090 16 +1091 16 +1092 16 +1093 16 57 +1094 16 +1095 16 +1096 16 +1097 -1 16 26 28 28 37 42 43 45 46 49 49 49 49 50 53 56 56 56 57 58 59 60 62 62 63 77 77 78 +1098 16 56 +1099 16 +1100 16 +1101 16 +1102 16 26 67 80 +1103 16 +1104 18 21 +1105 18 20 59 +1106 18 18 +1107 18 19 59 +1108 18 +1109 18 +1110 18 20 21 22 59 60 61 62 +1111 18 +1112 18 59 +1113 18 +1114 18 +1115 18 +1116 18 +1117 18 19 +1118 18 43 +1119 18 18 +1120 18 +1121 18 +1122 18 22 +1123 18 18 35 41 81 +1124 18 25 25 34 35 41 66 66 73 76 +1125 18 +1126 18 21 +1127 18 +1128 18 +1129 18 +1130 18 +1131 18 19 +1132 18 +1133 18 19 +1134 18 58 +1135 18 18 +1136 18 20 21 22 23 62 63 +1137 18 60 74 75 +1138 18 59 +1139 18 58 +1140 18 20 21 21 23 59 60 62 +1141 18 +1142 18 19 19 20 20 58 59 60 60 60 61 61 +1143 18 21 22 35 58 +1144 18 +1145 18 19 24 59 60 +1146 -1 18 18 19 19 25 27 28 29 31 32 33 33 34 36 36 37 45 46 51 51 52 59 59 59 60 60 60 60 65 66 68 68 72 74 75 76 79 79 +1147 18 +1148 18 +1149 18 +1150 18 +1151 18 20 21 43 60 +1152 -1 18 18 20 20 21 21 21 22 23 23 38 41 60 60 60 60 62 62 63 +1153 18 19 25 25 64 65 70 80 +1154 18 +1155 18 +1156 18 58 +1157 18 +1158 18 19 19 59 61 61 +1159 18 38 +1160 18 19 +1161 18 +1162 18 28 33 +1163 18 +1164 18 +1165 18 +1166 -1 18 19 19 20 20 20 20 49 51 53 53 55 58 59 60 60 60 61 64 76 77 +1167 18 +1168 18 59 60 +1169 18 18 +1170 18 19 59 59 +1171 18 24 25 32 35 59 +1172 18 18 19 20 59 +1173 18 19 20 20 22 22 23 31 59 62 62 79 +1174 18 21 54 62 +1175 18 +1176 18 +1177 18 26 66 +1178 18 58 58 +1179 18 +1180 18 60 +1181 18 19 58 59 59 59 +1182 18 19 59 59 59 60 +1183 18 +1184 18 19 59 59 +1185 18 59 +1186 18 59 +1187 18 +1188 18 20 60 +1189 18 51 66 +1190 18 +1191 18 +1192 18 41 43 +1193 18 18 23 +1194 18 19 20 24 52 53 59 59 77 79 +1195 18 +1196 18 +1197 18 20 21 34 60 61 82 +1198 18 +1199 18 +1200 18 +1201 18 +1202 18 +1203 18 +1204 18 61 +1205 18 +1206 18 47 +1207 18 24 26 77 82 +1208 18 60 +1209 18 78 +1210 18 +1211 18 +1212 18 19 20 +1213 18 58 +1214 18 +1215 -1 18 20 21 22 29 31 50 60 67 67 72 78 79 79 79 79 +1216 18 +1217 -1 18 18 26 28 28 36 37 46 51 56 58 64 66 68 68 76 76 76 +1218 18 +1219 18 25 25 51 53 59 +1220 18 +1221 18 41 +1222 18 +1223 18 +1224 18 +1225 18 30 60 +1226 18 58 +1227 19 +1228 19 33 43 54 56 59 +1229 -1 19 20 24 28 28 32 32 32 34 63 64 65 65 66 67 73 73 74 +1230 19 22 23 23 61 +1231 19 +1232 19 19 +1233 19 +1234 19 58 +1235 19 +1236 19 +1237 19 +1238 19 21 28 30 42 69 70 +1239 19 +1240 19 +1241 19 +1242 19 +1243 19 +1244 19 28 43 81 +1245 19 59 +1246 19 27 33 35 58 +1247 19 +1248 19 +1249 19 26 35 36 74 +1250 19 +1251 19 +1252 19 +1253 19 +1254 19 +1255 19 +1256 19 20 59 60 60 +1257 19 60 +1258 19 +1259 19 +1260 19 +1261 19 +1262 19 59 +1263 19 59 +1264 19 59 +1265 19 59 +1266 19 34 +1267 19 23 77 +1268 19 +1269 19 47 59 +1270 19 +1271 19 58 +1272 19 +1273 19 +1274 19 24 58 59 66 73 +1275 19 +1276 19 +1277 19 +1278 19 19 59 +1279 19 +1280 20 20 24 32 76 +1281 20 +1282 20 30 79 +1283 20 +1284 20 60 +1285 20 60 +1286 20 37 60 +1287 20 +1288 20 +1289 20 60 +1290 20 21 23 60 +1291 20 21 22 +1292 20 22 23 23 59 62 62 80 82 +1293 20 60 +1294 20 21 60 +1295 20 +1296 20 22 +1297 20 60 +1298 20 60 +1299 20 20 +1300 20 +1301 20 +1302 20 29 35 37 53 60 60 +1303 20 60 +1304 20 +1305 20 60 +1306 20 60 +1307 20 21 +1308 20 60 +1309 20 52 60 +1310 20 51 +1311 20 60 +1312 20 60 +1313 20 26 32 34 52 +1314 20 +1315 20 21 21 60 61 78 +1316 20 22 60 62 +1317 20 60 +1318 20 +1319 20 61 +1320 20 29 60 +1321 20 60 +1322 20 24 24 28 65 +1323 20 60 +1324 20 59 60 60 +1325 20 60 +1326 20 60 +1327 20 60 +1328 20 60 +1329 20 60 +1330 20 60 +1331 20 22 23 +1332 20 +1333 20 +1334 -1 20 22 22 25 25 26 26 26 26 27 28 28 29 31 35 35 36 37 37 37 39 39 39 40 40 40 41 41 42 42 43 45 47 47 50 50 51 52 53 55 56 56 57 57 58 59 59 60 60 63 65 65 66 66 66 70 72 73 74 75 75 75 75 77 77 77 77 78 78 81 +1335 20 21 21 58 59 59 60 61 61 +1336 20 +1337 20 +1338 20 60 +1339 20 60 +1340 20 +1341 -1 20 27 27 29 36 60 65 65 69 75 75 77 77 +1342 20 21 59 61 +1343 20 21 22 22 23 60 61 62 +1344 20 +1345 20 +1346 20 +1347 20 54 55 61 +1348 20 +1349 20 60 76 +1350 20 51 60 60 +1351 20 60 +1352 20 20 +1353 20 +1354 20 +1355 20 23 +1356 20 +1357 20 +1358 20 60 +1359 20 60 +1360 20 +1361 20 +1362 20 +1363 20 21 59 60 +1364 20 29 +1365 20 +1366 20 +1367 21 68 +1368 21 61 +1369 21 +1370 21 +1371 21 +1372 21 46 61 +1373 21 80 +1374 21 39 +1375 21 24 38 38 39 47 61 66 +1376 21 21 61 +1377 21 +1378 21 +1379 21 +1380 21 61 +1381 21 61 +1382 21 +1383 21 +1384 21 25 47 67 +1385 21 +1386 21 +1387 -1 21 27 28 28 29 33 34 37 43 45 48 53 67 67 68 75 81 +1388 21 22 +1389 21 48 50 55 55 +1390 21 22 61 62 +1391 21 +1392 21 61 +1393 21 +1394 21 22 25 43 61 +1395 21 61 +1396 21 22 23 62 63 +1397 21 +1398 21 61 +1399 21 +1400 21 22 62 +1401 21 46 56 60 61 70 82 +1402 21 61 +1403 21 82 +1404 21 +1405 21 +1406 21 +1407 21 +1408 21 +1409 21 61 +1410 21 +1411 21 +1412 21 +1413 21 61 +1414 21 +1415 21 +1416 21 +1417 21 +1418 21 +1419 21 22 62 +1420 21 61 +1421 21 61 +1422 21 61 +1423 21 +1424 21 22 59 61 62 +1425 21 47 51 71 +1426 21 22 59 61 63 +1427 21 24 +1428 21 +1429 21 +1430 21 +1431 21 60 +1432 21 28 39 60 61 65 68 68 +1433 22 62 +1434 22 +1435 22 +1436 22 62 +1437 22 62 62 +1438 22 62 +1439 22 +1440 22 62 +1441 22 +1442 22 62 +1443 22 22 +1444 22 +1445 22 +1446 22 35 41 +1447 22 35 73 74 +1448 22 22 22 24 62 +1449 22 +1450 22 81 +1451 22 +1452 22 22 62 +1453 22 24 62 +1454 22 62 +1455 22 +1456 22 +1457 22 +1458 22 62 +1459 22 +1460 22 +1461 22 22 +1462 22 41 50 51 55 78 +1463 22 62 +1464 22 26 +1465 22 26 27 29 34 43 45 45 62 68 +1466 22 34 +1467 22 29 31 62 62 +1468 22 +1469 22 +1470 22 +1471 22 22 50 50 52 +1472 22 +1473 22 +1474 22 +1475 22 +1476 22 23 +1477 22 25 28 62 62 +1478 -1 22 25 31 32 32 33 34 37 40 43 51 56 59 60 62 66 67 70 70 72 73 75 75 76 76 80 80 80 80 +1479 22 45 50 53 56 56 58 62 79 79 +1480 22 +1481 22 +1482 22 +1483 22 +1484 22 +1485 22 52 62 +1486 22 59 60 61 +1487 22 61 +1488 22 +1489 22 62 63 +1490 23 25 30 32 34 34 55 70 +1491 23 +1492 23 23 24 47 56 57 +1493 23 62 +1494 23 +1495 23 63 +1496 23 +1497 23 63 +1498 23 +1499 23 +1500 23 62 63 +1501 23 46 63 +1502 23 +1503 23 +1504 23 +1505 23 +1506 23 59 59 60 62 80 +1507 23 61 +1508 23 61 +1509 24 25 +1510 -1 24 25 29 32 32 37 38 40 40 58 64 69 70 73 76 80 +1511 24 25 27 64 +1512 24 +1513 24 +1514 24 +1515 24 26 27 39 51 77 80 +1516 24 24 37 76 +1517 24 31 32 32 64 65 75 +1518 24 29 67 +1519 24 52 59 64 +1520 24 25 26 32 64 +1521 24 29 32 47 61 +1522 24 +1523 24 +1524 24 26 +1525 24 64 +1526 24 +1527 24 29 34 69 80 +1528 24 31 +1529 24 25 +1530 24 +1531 24 31 65 +1532 24 +1533 24 +1534 24 +1535 24 25 26 27 28 29 64 65 65 66 68 70 +1536 24 +1537 24 +1538 24 +1539 -1 24 32 48 49 49 53 64 64 71 72 73 73 75 +1540 24 25 27 29 30 30 67 71 +1541 24 +1542 24 54 64 64 +1543 24 38 69 +1544 24 24 25 64 64 65 +1545 24 33 38 38 38 47 73 +1546 24 25 29 31 33 34 64 69 +1547 24 64 +1548 24 64 +1549 -1 24 25 25 26 27 28 31 34 45 64 66 68 71 +1550 24 +1551 24 25 64 +1552 24 24 64 +1553 24 +1554 24 64 +1555 24 25 64 +1556 24 +1557 24 66 +1558 24 +1559 24 25 25 26 28 64 65 +1560 24 26 64 +1561 24 24 25 26 65 +1562 24 25 25 25 64 64 64 65 +1563 24 24 +1564 24 +1565 24 +1566 -1 24 24 24 25 25 25 25 25 25 26 26 26 26 26 27 27 28 31 64 64 65 65 65 65 66 66 66 68 +1567 24 +1568 24 +1569 24 26 +1570 24 25 +1571 24 25 65 +1572 24 25 28 31 64 65 +1573 24 25 +1574 24 25 25 28 59 64 +1575 24 32 61 +1576 24 64 +1577 24 65 +1578 24 +1579 24 64 70 +1580 24 25 64 64 65 +1581 24 +1582 24 28 74 76 +1583 24 28 68 +1584 24 25 26 +1585 24 25 +1586 24 64 +1587 24 82 +1588 24 25 64 +1589 24 25 53 64 +1590 24 38 +1591 24 34 59 60 64 +1592 24 +1593 24 64 +1594 24 26 64 +1595 24 27 27 64 64 66 +1596 24 +1597 24 30 33 64 +1598 24 64 +1599 24 +1600 24 59 +1601 -1 24 25 25 25 25 26 28 35 64 65 72 77 80 +1602 24 +1603 24 64 +1604 24 25 35 51 58 64 65 77 +1605 24 24 64 67 +1606 24 +1607 24 64 +1608 24 64 74 +1609 24 +1610 24 25 64 +1611 24 +1612 24 30 +1613 24 +1614 24 65 +1615 24 +1616 24 64 +1617 24 64 +1618 25 37 40 76 +1619 25 40 40 53 55 65 73 74 79 +1620 25 +1621 25 65 67 +1622 25 +1623 25 65 +1624 -1 25 26 26 27 29 33 34 35 43 45 47 49 50 53 58 67 67 68 76 77 +1625 25 +1626 25 +1627 25 27 +1628 25 +1629 25 26 65 66 +1630 25 27 +1631 25 +1632 25 26 27 +1633 25 26 27 64 67 68 69 69 +1634 25 65 +1635 25 28 +1636 25 60 61 80 +1637 25 65 +1638 25 64 +1639 25 65 66 +1640 25 26 27 31 32 35 65 75 +1641 25 +1642 25 +1643 25 40 64 65 +1644 25 +1645 25 29 31 +1646 25 +1647 25 +1648 25 +1649 -1 25 26 26 28 40 43 52 59 64 65 65 66 66 68 69 74 +1650 25 65 69 +1651 25 +1652 25 64 +1653 25 +1654 25 29 29 66 67 67 68 +1655 25 +1656 25 +1657 25 28 +1658 25 26 28 64 65 66 67 +1659 25 +1660 25 +1661 25 26 26 27 34 49 49 49 66 67 71 71 +1662 25 26 48 65 66 +1663 25 25 65 +1664 25 +1665 25 42 71 +1666 25 +1667 25 +1668 25 50 +1669 25 28 64 65 68 +1670 25 +1671 25 69 +1672 25 26 +1673 25 69 +1674 25 +1675 25 27 27 32 66 70 71 +1676 25 30 36 70 80 +1677 25 65 +1678 25 77 +1679 25 +1680 25 65 65 +1681 25 26 66 +1682 25 27 67 72 +1683 25 65 +1684 25 43 65 +1685 25 64 +1686 25 65 +1687 25 65 77 +1688 25 27 34 65 77 +1689 25 +1690 25 65 +1691 25 65 +1692 25 25 +1693 -1 25 26 26 26 27 27 31 31 31 31 32 33 33 49 53 65 65 66 66 67 75 +1694 25 +1695 25 64 +1696 25 65 71 +1697 25 +1698 25 65 66 +1699 25 29 +1700 25 64 65 77 +1701 26 28 28 29 64 +1702 26 26 65 66 +1703 26 27 32 72 +1704 26 26 26 58 +1705 26 +1706 26 +1707 26 65 +1708 26 65 +1709 26 53 +1710 26 +1711 26 66 +1712 26 +1713 26 77 +1714 26 33 66 +1715 26 28 32 52 71 72 72 +1716 26 27 28 66 67 68 +1717 26 +1718 26 +1719 26 +1720 26 +1721 26 +1722 26 +1723 26 +1724 26 +1725 26 +1726 26 +1727 26 39 66 66 66 +1728 26 64 66 +1729 26 28 67 +1730 26 28 34 66 70 72 +1731 26 +1732 26 33 57 66 66 72 +1733 26 26 +1734 26 31 33 +1735 26 27 33 64 65 68 +1736 26 66 +1737 26 +1738 26 26 +1739 26 +1740 26 28 66 73 +1741 26 +1742 26 66 +1743 26 +1744 26 28 66 +1745 26 +1746 26 +1747 26 +1748 26 26 +1749 26 72 +1750 26 +1751 26 +1752 26 70 +1753 26 +1754 26 +1755 26 27 29 67 68 +1756 26 +1757 26 65 66 +1758 26 +1759 26 27 28 64 64 65 66 66 67 68 +1760 26 29 65 66 +1761 26 +1762 26 60 66 66 66 78 +1763 26 +1764 26 +1765 26 27 47 66 69 +1766 26 +1767 26 +1768 26 65 66 +1769 26 27 66 +1770 26 32 59 65 71 +1771 26 29 37 43 65 +1772 26 71 +1773 26 28 +1774 26 30 39 58 +1775 26 27 +1776 26 +1777 26 +1778 26 +1779 26 +1780 26 64 66 +1781 27 +1782 27 +1783 27 32 33 37 38 41 60 61 68 72 73 +1784 27 +1785 27 +1786 27 +1787 27 +1788 27 29 29 46 46 69 +1789 27 +1790 27 +1791 27 +1792 27 +1793 27 +1794 27 27 29 30 +1795 27 +1796 27 +1797 27 +1798 27 28 67 +1799 27 28 +1800 27 +1801 27 +1802 27 +1803 27 37 +1804 27 +1805 27 +1806 27 +1807 27 +1808 27 +1809 27 +1810 27 +1811 27 +1812 27 +1813 27 28 +1814 -1 27 31 36 41 48 49 49 50 50 53 66 70 79 +1815 27 28 28 +1816 27 66 +1817 27 64 +1818 27 +1819 27 29 +1820 27 +1821 27 +1822 27 +1823 27 +1824 27 +1825 27 +1826 27 +1827 27 66 +1828 27 28 +1829 27 +1830 27 +1831 27 +1832 27 51 +1833 27 +1834 27 +1835 27 +1836 27 34 +1837 27 66 +1838 27 67 +1839 27 +1840 27 66 66 +1841 27 66 +1842 28 +1843 28 +1844 28 36 53 67 77 80 +1845 28 +1846 28 68 +1847 28 51 67 +1848 28 +1849 28 +1850 28 29 67 +1851 28 29 67 68 +1852 28 31 36 65 67 +1853 28 +1854 28 +1855 28 +1856 28 31 32 +1857 28 29 30 67 68 69 +1858 28 +1859 28 29 30 31 32 67 68 69 70 71 +1860 28 72 +1861 28 29 68 +1862 28 +1863 28 67 +1864 28 +1865 28 29 30 30 30 68 69 +1866 28 +1867 28 29 +1868 28 77 +1869 28 +1870 28 29 31 69 70 +1871 28 +1872 28 68 68 +1873 28 +1874 28 +1875 28 +1876 28 +1877 28 +1878 28 +1879 28 +1880 28 70 +1881 28 68 68 +1882 28 67 +1883 28 +1884 28 43 +1885 28 +1886 28 +1887 28 +1888 28 +1889 28 +1890 28 +1891 28 29 33 34 67 72 73 +1892 28 +1893 28 28 67 +1894 28 +1895 28 +1896 28 +1897 28 +1898 28 65 68 +1899 28 +1900 28 30 69 +1901 28 34 66 68 73 +1902 28 67 +1903 28 67 +1904 28 65 66 70 +1905 28 +1906 28 +1907 28 29 64 66 68 +1908 28 30 65 68 +1909 28 +1910 28 +1911 28 +1912 28 34 66 69 72 75 +1913 28 +1914 28 33 67 70 73 79 +1915 28 +1916 28 +1917 28 +1918 28 +1919 28 65 +1920 28 +1921 28 66 +1922 28 67 68 +1923 28 +1924 28 +1925 28 68 +1926 28 +1927 28 67 +1928 28 67 +1929 28 +1930 28 +1931 28 +1932 28 68 +1933 28 +1934 28 60 +1935 28 47 +1936 28 43 46 46 63 +1937 28 67 +1938 28 67 +1939 28 35 35 37 37 51 52 59 65 68 73 73 +1940 28 30 +1941 28 +1942 28 69 +1943 28 +1944 28 +1945 28 +1946 28 68 +1947 28 +1948 28 29 66 67 68 69 +1949 28 +1950 28 +1951 28 +1952 29 31 35 50 65 66 66 69 74 77 +1953 29 30 31 31 32 50 67 68 69 +1954 29 31 36 68 69 74 75 +1955 29 +1956 29 +1957 29 30 32 68 +1958 29 30 31 35 39 49 58 67 67 70 74 79 +1959 29 30 68 70 +1960 29 30 +1961 29 +1962 29 68 68 +1963 29 60 68 +1964 29 68 74 +1965 29 68 74 +1966 29 +1967 29 34 35 74 +1968 29 30 68 72 72 73 +1969 29 +1970 29 30 +1971 29 +1972 29 30 31 31 32 34 68 72 +1973 29 +1974 29 68 +1975 29 +1976 29 29 32 +1977 29 +1978 29 +1979 29 +1980 29 +1981 29 +1982 29 +1983 29 +1984 29 +1985 29 +1986 29 +1987 29 68 +1988 29 68 +1989 29 66 +1990 29 64 68 69 +1991 29 68 +1992 29 33 34 36 49 50 68 75 81 +1993 29 +1994 29 30 30 +1995 29 68 +1996 29 +1997 29 64 68 +1998 29 34 +1999 29 +2000 29 +2001 29 +2002 29 +2003 29 +2004 29 +2005 29 30 +2006 29 64 70 +2007 29 69 +2008 29 68 +2009 29 68 +2010 29 46 68 +2011 29 68 69 +2012 29 30 69 +2013 29 29 68 +2014 29 +2015 29 +2016 29 +2017 29 29 +2018 29 73 +2019 29 69 +2020 29 +2021 29 +2022 29 +2023 29 +2024 29 +2025 29 30 31 68 70 71 +2026 29 +2027 29 41 51 57 79 +2028 29 36 68 69 69 76 +2029 29 +2030 29 +2031 29 +2032 29 68 +2033 29 +2034 29 68 +2035 29 +2036 29 +2037 29 70 +2038 29 +2039 29 +2040 29 64 66 73 +2041 29 57 +2042 29 +2043 29 42 59 +2044 29 32 42 70 72 +2045 29 30 54 65 +2046 -1 29 31 32 33 37 40 43 50 67 72 73 74 74 76 81 +2047 29 +2048 29 +2049 29 +2050 29 31 71 +2051 29 29 +2052 29 +2053 29 +2054 29 +2055 29 68 +2056 29 +2057 29 +2058 29 37 43 53 75 +2059 29 36 +2060 29 +2061 29 68 69 +2062 29 68 +2063 29 +2064 30 69 +2065 30 31 32 64 66 +2066 30 31 +2067 30 31 70 +2068 30 30 31 +2069 30 +2070 30 31 35 60 69 70 +2071 30 69 +2072 30 31 32 32 33 33 36 50 58 65 68 72 +2073 30 +2074 30 31 69 +2075 30 +2076 30 +2077 30 69 +2078 30 +2079 30 +2080 30 +2081 30 47 48 48 49 69 70 +2082 30 69 +2083 30 30 66 69 +2084 30 30 +2085 30 31 53 +2086 30 +2087 30 +2088 30 67 +2089 30 32 35 +2090 30 +2091 30 +2092 30 +2093 30 +2094 30 +2095 30 +2096 30 +2097 30 31 32 65 70 71 +2098 30 30 31 67 70 +2099 30 +2100 30 +2101 30 72 73 74 +2102 30 32 +2103 30 +2104 30 +2105 30 +2106 30 +2107 30 30 32 +2108 30 +2109 30 33 64 68 69 70 71 +2110 30 30 31 +2111 30 31 70 +2112 30 +2113 30 +2114 30 69 +2115 30 36 50 +2116 30 +2117 30 +2118 30 +2119 30 +2120 30 +2121 30 +2122 30 +2123 30 +2124 30 30 +2125 30 32 +2126 30 +2127 30 30 +2128 30 +2129 30 +2130 30 +2131 30 +2132 30 +2133 30 51 +2134 30 33 72 +2135 30 +2136 30 69 +2137 30 +2138 30 +2139 30 +2140 30 +2141 -1 30 32 32 33 35 35 39 45 47 47 48 49 49 50 65 68 71 72 72 75 77 78 79 79 80 +2142 30 31 70 +2143 30 +2144 30 31 +2145 30 69 +2146 30 69 +2147 30 +2148 30 +2149 30 31 71 +2150 30 31 68 +2151 30 59 82 +2152 30 33 +2153 30 +2154 30 69 +2155 30 +2156 30 +2157 30 +2158 30 +2159 30 +2160 30 +2161 30 31 33 33 69 +2162 30 +2163 30 +2164 30 30 +2165 30 34 +2166 30 66 +2167 30 72 +2168 30 +2169 30 +2170 30 +2171 30 69 72 +2172 30 67 69 +2173 30 +2174 30 +2175 30 +2176 30 +2177 30 +2178 30 +2179 30 +2180 31 +2181 31 40 70 +2182 31 40 65 77 +2183 31 70 +2184 31 +2185 31 +2186 31 +2187 31 +2188 31 +2189 31 +2190 31 +2191 31 +2192 31 +2193 31 +2194 31 71 +2195 31 70 +2196 31 32 71 72 +2197 31 +2198 31 32 64 72 +2199 31 +2200 31 +2201 31 +2202 31 +2203 31 +2204 31 +2205 31 +2206 31 +2207 31 +2208 31 32 32 40 45 59 60 65 66 70 72 +2209 31 38 68 81 +2210 31 +2211 31 +2212 31 +2213 31 +2214 31 +2215 31 +2216 31 +2217 31 +2218 31 40 +2219 31 69 +2220 31 +2221 31 +2222 31 +2223 31 +2224 31 +2225 31 +2226 31 +2227 31 32 33 71 72 +2228 31 43 +2229 31 32 +2230 31 32 32 71 71 72 +2231 31 32 +2232 31 +2233 31 70 +2234 31 +2235 31 33 34 72 75 +2236 31 +2237 31 +2238 31 31 81 +2239 31 +2240 31 +2241 31 70 +2242 31 38 +2243 31 70 +2244 31 +2245 31 70 +2246 31 +2247 31 +2248 31 +2249 31 70 +2250 31 32 66 67 68 68 69 70 72 +2251 31 +2252 31 +2253 31 34 71 72 +2254 31 +2255 31 32 +2256 31 +2257 31 +2258 31 31 36 +2259 31 31 79 +2260 31 +2261 31 70 +2262 31 +2263 31 70 +2264 31 +2265 31 70 +2266 31 70 +2267 31 +2268 31 70 +2269 31 +2270 31 +2271 31 70 +2272 31 39 70 +2273 31 +2274 31 +2275 31 +2276 31 70 +2277 31 +2278 31 +2279 31 +2280 31 +2281 32 32 41 41 73 +2282 32 +2283 32 +2284 32 +2285 32 +2286 32 +2287 32 79 79 80 +2288 32 32 36 67 +2289 32 +2290 32 +2291 32 +2292 32 47 +2293 32 +2294 32 +2295 32 +2296 32 +2297 32 32 +2298 32 +2299 32 72 72 +2300 32 +2301 32 53 +2302 32 +2303 32 33 71 72 +2304 32 +2305 32 +2306 32 +2307 32 33 +2308 32 34 72 +2309 32 33 +2310 32 34 73 +2311 32 41 65 +2312 32 +2313 32 41 +2314 32 +2315 32 41 58 +2316 32 +2317 32 +2318 32 +2319 32 41 +2320 32 +2321 32 +2322 32 72 +2323 32 +2324 32 +2325 32 +2326 32 64 71 +2327 32 72 +2328 32 +2329 32 +2330 32 +2331 32 37 37 67 +2332 32 +2333 32 64 64 70 +2334 32 71 71 +2335 32 +2336 32 33 +2337 32 +2338 32 33 72 78 +2339 32 +2340 32 +2341 32 +2342 32 71 +2343 32 +2344 32 +2345 32 +2346 32 33 +2347 32 +2348 32 +2349 32 71 +2350 32 39 46 55 58 65 67 68 70 71 75 +2351 32 +2352 32 33 34 35 36 67 67 72 73 +2353 32 33 70 +2354 32 +2355 32 +2356 32 +2357 32 80 +2358 32 +2359 32 +2360 32 +2361 32 72 +2362 32 +2363 32 +2364 32 +2365 32 33 70 71 72 75 +2366 32 71 71 +2367 32 35 61 67 71 71 71 77 +2368 32 +2369 32 65 71 72 +2370 32 +2371 32 +2372 32 +2373 32 72 +2374 32 70 +2375 32 +2376 33 +2377 33 +2378 33 67 +2379 33 35 +2380 33 +2381 33 +2382 33 +2383 33 69 75 +2384 33 +2385 33 34 66 77 +2386 33 +2387 33 34 35 36 37 74 75 76 +2388 33 +2389 33 +2390 33 72 +2391 33 72 +2392 33 72 +2393 33 +2394 33 34 73 +2395 33 +2396 33 35 45 45 56 64 69 71 72 74 77 +2397 33 72 74 +2398 33 72 +2399 33 34 62 71 +2400 33 +2401 33 35 72 +2402 33 +2403 33 +2404 33 72 +2405 33 34 +2406 33 +2407 33 +2408 33 72 +2409 33 73 +2410 33 +2411 33 71 72 72 +2412 33 +2413 33 +2414 33 +2415 33 +2416 33 45 +2417 33 +2418 33 +2419 34 40 52 59 60 82 +2420 34 +2421 34 34 43 46 49 54 55 58 60 63 +2422 34 37 77 77 +2423 34 76 +2424 -1 34 35 35 36 37 37 64 72 73 74 76 76 77 77 77 78 +2425 34 +2426 34 39 40 51 61 81 +2427 34 +2428 34 49 +2429 34 41 46 55 65 73 74 74 +2430 34 34 73 74 +2431 34 74 +2432 34 35 36 39 48 64 69 73 74 79 +2433 34 35 41 68 73 76 +2434 34 35 73 74 +2435 34 74 +2436 34 73 +2437 34 +2438 34 35 +2439 34 35 35 74 +2440 34 35 36 +2441 34 +2442 -1 34 42 42 43 43 45 46 46 47 47 58 59 59 75 +2443 34 +2444 34 72 +2445 34 +2446 34 35 +2447 34 +2448 34 35 +2449 34 +2450 34 73 74 +2451 34 34 +2452 34 +2453 34 +2454 34 +2455 34 +2456 34 +2457 34 73 +2458 34 74 +2459 34 67 71 73 +2460 34 +2461 35 +2462 35 +2463 35 +2464 35 36 +2465 35 79 +2466 35 36 37 75 77 78 +2467 35 36 37 75 76 77 +2468 35 36 +2469 35 +2470 35 36 76 77 78 78 +2471 35 75 +2472 35 +2473 35 68 +2474 35 36 37 74 75 +2475 35 +2476 35 +2477 35 39 50 52 +2478 35 +2479 35 41 +2480 35 +2481 35 +2482 35 75 +2483 35 75 +2484 35 41 43 47 47 47 47 52 77 +2485 35 36 76 +2486 35 73 75 +2487 35 36 +2488 35 37 76 +2489 35 49 +2490 35 75 +2491 35 +2492 35 71 73 75 +2493 35 +2494 35 +2495 35 36 37 75 +2496 35 80 +2497 35 77 +2498 35 +2499 35 +2500 35 36 +2501 35 36 +2502 35 50 64 +2503 35 73 74 +2504 35 +2505 35 +2506 35 +2507 35 +2508 35 74 +2509 35 74 +2510 35 +2511 35 +2512 35 +2513 36 +2514 36 +2515 36 +2516 36 +2517 36 37 77 78 +2518 36 +2519 36 37 75 76 +2520 36 +2521 36 38 +2522 36 +2523 36 +2524 36 +2525 36 +2526 36 75 +2527 36 55 63 +2528 36 70 75 75 75 77 +2529 36 36 75 +2530 36 37 37 76 +2531 36 74 76 +2532 36 43 +2533 36 +2534 36 37 37 75 76 76 77 80 +2535 36 37 69 +2536 36 37 37 51 75 76 76 77 78 +2537 36 73 75 +2538 36 +2539 36 37 75 76 +2540 36 +2541 36 75 77 +2542 36 37 76 77 +2543 36 74 +2544 36 39 79 +2545 36 46 50 59 68 72 75 +2546 36 37 75 +2547 36 +2548 36 +2549 36 37 75 76 +2550 36 50 65 71 72 76 +2551 36 +2552 36 75 +2553 36 75 +2554 36 49 58 +2555 36 74 75 +2556 36 75 +2557 36 36 37 48 64 64 67 75 75 76 76 +2558 36 75 +2559 36 +2560 36 67 75 +2561 36 +2562 37 39 43 48 56 59 68 75 76 76 +2563 37 +2564 37 68 72 +2565 37 38 +2566 37 76 77 +2567 37 51 51 77 +2568 37 77 77 +2569 37 76 77 +2570 37 77 +2571 37 41 41 48 56 77 80 82 +2572 37 39 77 77 78 +2573 37 +2574 37 67 76 +2575 37 39 59 80 +2576 37 43 76 +2577 37 37 76 77 78 +2578 37 76 77 78 +2579 37 +2580 37 77 78 +2581 37 76 77 +2582 37 +2583 37 71 +2584 37 +2585 37 +2586 37 75 77 +2587 37 76 +2588 37 76 +2589 37 77 +2590 37 58 74 75 76 76 76 77 77 77 78 +2591 37 +2592 37 41 +2593 37 77 +2594 37 37 40 64 76 76 +2595 37 76 +2596 37 50 +2597 37 75 76 +2598 37 76 +2599 37 76 77 77 +2600 37 76 77 +2601 37 76 +2602 38 +2603 38 +2604 38 +2605 38 +2606 38 +2607 38 +2608 38 63 +2609 38 46 +2610 38 +2611 38 +2612 38 42 48 +2613 38 +2614 38 +2615 38 +2616 38 38 70 +2617 38 +2618 38 74 +2619 38 +2620 38 +2621 38 38 +2622 38 +2623 38 82 +2624 38 +2625 38 +2626 38 +2627 38 +2628 38 +2629 38 +2630 38 +2631 38 78 +2632 38 +2633 38 38 +2634 38 +2635 38 +2636 38 +2637 38 +2638 38 55 +2639 38 +2640 38 +2641 38 +2642 38 +2643 38 +2644 38 +2645 38 +2646 38 +2647 38 +2648 39 +2649 39 +2650 39 79 +2651 39 81 +2652 39 79 +2653 39 42 71 80 +2654 39 76 82 +2655 39 39 79 +2656 39 +2657 39 +2658 39 80 +2659 39 79 +2660 39 +2661 39 79 +2662 39 +2663 39 +2664 39 52 53 61 65 67 70 76 77 77 82 +2665 39 80 +2666 39 +2667 39 +2668 39 79 80 +2669 39 79 80 +2670 39 +2671 39 80 +2672 39 50 79 80 +2673 39 42 47 72 78 79 +2674 -1 39 41 42 59 61 62 64 66 69 81 82 82 82 +2675 39 40 79 80 +2676 39 +2677 39 39 79 80 +2678 39 40 79 80 81 +2679 39 +2680 39 +2681 39 39 79 79 +2682 39 +2683 39 45 70 79 +2684 39 +2685 39 +2686 39 +2687 39 +2688 39 39 80 80 +2689 39 39 40 +2690 39 +2691 39 +2692 39 +2693 39 +2694 39 +2695 39 +2696 39 79 79 80 +2697 39 +2698 39 +2699 39 +2700 39 53 +2701 39 60 +2702 39 +2703 39 80 +2704 39 40 68 79 +2705 39 +2706 39 +2707 39 40 51 80 +2708 39 +2709 39 +2710 39 +2711 39 +2712 39 +2713 39 40 41 79 79 81 81 81 +2714 39 +2715 39 40 41 59 +2716 39 40 80 +2717 39 79 +2718 39 +2719 39 +2720 39 +2721 39 +2722 39 40 +2723 40 +2724 40 +2725 40 +2726 40 60 68 +2727 40 +2728 40 +2729 40 41 +2730 40 +2731 40 41 80 +2732 40 +2733 40 +2734 40 +2735 40 81 +2736 40 +2737 40 +2738 40 70 81 +2739 40 +2740 40 80 +2741 40 77 +2742 40 58 58 59 +2743 40 +2744 40 79 80 +2745 40 74 +2746 40 40 +2747 40 +2748 40 79 81 +2749 40 68 +2750 40 +2751 40 +2752 40 +2753 40 80 +2754 40 +2755 40 +2756 40 +2757 40 81 +2758 40 +2759 40 41 +2760 40 79 80 80 81 81 +2761 40 79 +2762 40 +2763 40 80 81 +2764 40 80 +2765 40 +2766 40 47 52 76 80 +2767 40 80 +2768 40 +2769 40 +2770 40 +2771 40 +2772 40 60 +2773 40 45 +2774 41 60 65 +2775 41 +2776 41 71 80 +2777 41 82 +2778 41 +2779 41 42 +2780 41 80 82 +2781 41 +2782 41 +2783 41 +2784 41 +2785 41 +2786 41 41 50 +2787 41 +2788 41 +2789 41 +2790 41 +2791 41 +2792 41 +2793 41 +2794 41 +2795 41 41 +2796 41 42 50 55 55 56 60 61 79 80 82 +2797 41 +2798 41 +2799 41 +2800 41 47 81 +2801 41 80 81 +2802 41 +2803 41 46 79 +2804 41 50 +2805 41 +2806 41 +2807 41 42 80 81 +2808 41 81 82 +2809 41 +2810 41 +2811 41 +2812 41 48 48 79 +2813 41 +2814 41 +2815 41 43 52 76 +2816 41 71 +2817 41 43 70 72 +2818 41 +2819 41 +2820 41 +2821 41 47 80 +2822 42 42 +2823 42 65 66 66 +2824 42 +2825 42 +2826 42 +2827 42 +2828 42 61 68 69 69 +2829 42 +2830 42 +2831 42 +2832 42 64 +2833 42 +2834 42 +2835 42 43 43 60 67 82 +2836 42 43 70 +2837 42 +2838 42 +2839 42 53 +2840 42 +2841 42 +2842 42 42 +2843 42 80 +2844 42 82 82 +2845 42 42 +2846 42 +2847 42 +2848 42 43 43 +2849 42 79 +2850 42 +2851 42 80 82 +2852 42 80 +2853 42 74 81 +2854 42 +2855 42 81 82 +2856 42 +2857 42 +2858 42 +2859 42 +2860 42 +2861 42 80 81 +2862 42 43 82 +2863 42 68 71 +2864 42 72 78 +2865 42 54 55 76 76 78 +2866 43 +2867 43 +2868 43 +2869 43 +2870 43 79 +2871 43 +2872 43 +2873 43 +2874 43 +2875 43 77 +2876 43 +2877 43 43 +2878 43 +2879 43 +2880 43 43 +2881 43 +2882 43 +2883 43 +2884 43 +2885 43 +2886 43 80 81 +2887 43 +2888 43 +2889 43 +2890 43 68 70 74 +2891 43 43 47 49 +2892 43 +2893 43 +2894 43 46 +2895 43 +2896 43 +2897 43 +2898 43 +2899 43 +2900 43 80 81 82 +2901 43 +2902 43 +2903 43 +2904 43 +2905 43 +2906 43 +2907 43 76 78 +2908 43 +2909 43 +2910 43 +2911 43 63 +2912 43 +2913 43 +2914 43 68 +2915 43 +2916 43 +2917 43 +2918 43 +2919 43 +2920 43 45 +2921 43 50 +2922 43 +2923 43 +2924 43 +2925 43 +2926 43 51 +2927 43 +2928 43 +2929 43 +2930 43 48 73 +2931 43 +2932 43 +2933 43 +2934 45 75 76 +2935 45 45 +2936 45 +2937 45 +2938 45 +2939 45 +2940 45 +2941 45 +2942 45 +2943 45 +2944 45 +2945 45 +2946 45 +2947 45 51 51 +2948 45 +2949 45 53 56 68 +2950 45 +2951 45 +2952 45 46 +2953 45 +2954 45 +2955 45 +2956 45 +2957 45 +2958 45 48 +2959 45 +2960 45 +2961 45 +2962 45 45 +2963 45 +2964 45 +2965 45 +2966 45 +2967 45 +2968 45 +2969 45 +2970 45 48 +2971 45 +2972 45 +2973 45 +2974 45 +2975 46 46 53 62 +2976 46 +2977 46 +2978 46 +2979 46 +2980 46 +2981 46 +2982 46 51 +2983 46 +2984 46 73 +2985 46 +2986 46 +2987 46 46 +2988 46 +2989 46 +2990 46 +2991 46 +2992 46 50 50 50 +2993 46 52 71 +2994 46 61 +2995 46 47 +2996 46 +2997 46 +2998 46 +2999 46 53 +3000 46 68 +3001 46 +3002 46 +3003 46 70 +3004 46 +3005 46 +3006 46 65 76 +3007 46 +3008 46 47 +3009 46 +3010 46 +3011 46 +3012 46 +3013 46 +3014 46 +3015 46 +3016 47 +3017 47 +3018 47 +3019 47 +3020 47 79 79 +3021 47 47 +3022 47 +3023 47 49 +3024 47 +3025 47 +3026 47 +3027 47 +3028 47 63 64 71 +3029 47 +3030 47 +3031 47 48 +3032 47 +3033 47 +3034 47 48 +3035 47 +3036 47 64 82 +3037 47 +3038 47 +3039 47 50 +3040 47 +3041 47 50 51 +3042 47 +3043 47 +3044 47 +3045 47 +3046 47 +3047 47 70 +3048 47 +3049 47 +3050 47 +3051 47 48 +3052 47 +3053 47 +3054 47 49 +3055 47 +3056 48 +3057 48 +3058 48 +3059 48 +3060 48 +3061 48 +3062 48 65 +3063 48 +3064 48 +3065 48 +3066 48 64 77 +3067 48 +3068 48 +3069 48 +3070 48 76 77 +3071 48 +3072 48 +3073 48 49 +3074 48 +3075 48 49 64 68 +3076 48 +3077 48 49 +3078 48 +3079 48 +3080 48 +3081 48 49 +3082 48 +3083 48 49 +3084 48 +3085 48 +3086 48 +3087 48 +3088 48 +3089 49 75 +3090 49 49 49 78 +3091 49 +3092 49 59 68 70 +3093 49 +3094 49 +3095 49 +3096 49 +3097 49 55 58 61 63 +3098 49 +3099 49 76 +3100 49 +3101 49 +3102 49 +3103 49 59 +3104 49 53 +3105 49 50 +3106 49 64 70 +3107 49 +3108 49 +3109 49 51 65 +3110 49 +3111 49 +3112 49 +3113 49 +3114 49 49 +3115 49 51 58 72 76 +3116 49 +3117 49 +3118 49 +3119 49 +3120 49 +3121 49 +3122 49 +3123 49 +3124 50 51 71 +3125 50 +3126 50 51 +3127 50 +3128 50 51 +3129 50 52 +3130 50 51 +3131 50 +3132 50 +3133 50 68 +3134 50 55 +3135 50 69 +3136 50 +3137 50 50 +3138 50 +3139 50 +3140 50 +3141 50 +3142 50 +3143 50 82 +3144 50 50 +3145 50 64 +3146 50 +3147 50 +3148 50 +3149 50 56 76 +3150 50 80 +3151 50 +3152 50 +3153 50 +3154 50 69 +3155 50 +3156 50 +3157 50 +3158 50 +3159 50 54 77 +3160 50 +3161 50 70 +3162 51 +3163 51 +3164 51 67 +3165 51 +3166 51 60 61 64 67 78 +3167 51 +3168 51 52 53 +3169 51 +3170 51 +3171 51 52 +3172 51 +3173 51 52 52 58 59 80 +3174 51 +3175 51 +3176 51 +3177 51 +3178 51 51 52 59 +3179 51 +3180 51 +3181 51 52 +3182 51 +3183 51 52 +3184 51 +3185 51 +3186 51 65 +3187 51 75 +3188 51 +3189 51 +3190 51 +3191 51 +3192 51 +3193 51 +3194 51 +3195 51 +3196 51 66 67 +3197 51 +3198 51 52 +3199 51 +3200 52 +3201 52 +3202 52 +3203 52 +3204 52 +3205 52 +3206 52 +3207 52 70 70 72 78 81 +3208 52 +3209 52 75 +3210 52 +3211 52 +3212 52 53 54 60 +3213 52 53 60 68 +3214 52 53 53 53 55 64 77 +3215 52 +3216 52 53 +3217 52 71 80 +3218 52 64 +3219 52 +3220 52 54 +3221 52 +3222 52 +3223 53 53 55 55 55 +3224 53 +3225 53 +3226 53 +3227 53 +3228 53 +3229 53 +3230 53 +3231 53 +3232 53 +3233 53 60 67 +3234 53 +3235 53 53 +3236 53 +3237 53 +3238 53 82 82 +3239 53 +3240 53 +3241 53 +3242 53 +3243 53 +3244 53 +3245 53 +3246 53 +3247 53 65 +3248 53 +3249 53 +3250 53 +3251 53 +3252 53 +3253 54 55 62 +3254 54 +3255 54 +3256 54 64 65 72 73 77 78 81 +3257 54 +3258 54 +3259 54 +3260 54 +3261 54 +3262 54 +3263 54 +3264 54 +3265 54 +3266 55 +3267 55 56 +3268 55 +3269 55 73 +3270 55 +3271 55 +3272 55 +3273 55 +3274 55 +3275 55 +3276 55 73 +3277 55 +3278 55 +3279 55 +3280 55 56 +3281 55 62 +3282 55 68 77 +3283 55 +3284 55 +3285 55 +3286 55 +3287 55 +3288 55 +3289 55 56 77 +3290 55 +3291 55 +3292 55 +3293 55 +3294 55 +3295 55 56 +3296 55 +3297 55 +3298 55 +3299 55 +3300 55 +3301 55 +3302 56 +3303 56 +3304 56 +3305 56 +3306 56 +3307 56 59 +3308 56 +3309 56 +3310 56 +3311 56 +3312 56 +3313 56 +3314 56 +3315 56 57 57 57 59 61 61 77 77 79 82 +3316 56 +3317 56 +3318 56 +3319 57 +3320 57 +3321 57 +3322 57 +3323 57 +3324 57 +3325 57 +3326 57 +3327 57 +3328 57 +3329 57 +3330 57 +3331 57 +3332 57 +3333 57 +3334 57 +3335 57 +3336 57 58 60 61 63 79 79 80 +3337 57 +3338 57 58 58 60 78 78 79 80 +3339 57 +3340 57 57 +3341 57 +3342 58 64 64 65 66 67 69 +3343 58 +3344 58 +3345 58 +3346 58 +3347 58 +3348 58 +3349 58 +3350 58 +3351 58 +3352 58 +3353 58 +3354 58 +3355 58 62 +3356 58 +3357 58 +3358 58 +3359 58 71 +3360 58 +3361 58 +3362 58 58 68 +3363 58 +3364 58 +3365 58 +3366 58 +3367 58 +3368 58 +3369 58 +3370 58 +3371 58 +3372 58 +3373 58 +3374 58 +3375 58 +3376 58 +3377 58 +3378 58 +3379 58 +3380 58 +3381 58 58 +3382 58 +3383 58 +3384 58 +3385 58 +3386 58 +3387 58 +3388 58 +3389 58 64 64 68 71 +3390 58 +3391 58 61 +3392 58 +3393 58 +3394 58 +3395 58 +3396 58 +3397 58 +3398 58 +3399 58 +3400 58 +3401 58 +3402 58 +3403 58 58 +3404 58 +3405 58 +3406 58 +3407 58 58 +3408 58 +3409 58 +3410 58 +3411 58 +3412 58 +3413 58 +3414 58 +3415 58 +3416 58 +3417 58 +3418 58 +3419 58 +3420 58 +3421 58 +3422 58 +3423 58 +3424 58 +3425 58 +3426 58 +3427 58 +3428 58 +3429 58 +3430 58 +3431 58 +3432 58 +3433 58 +3434 58 +3435 59 +3436 59 +3437 59 +3438 59 +3439 59 +3440 59 +3441 59 60 +3442 59 +3443 59 +3444 59 +3445 59 71 74 +3446 59 +3447 59 61 +3448 59 +3449 59 +3450 59 +3451 59 +3452 59 +3453 59 +3454 59 +3455 59 +3456 59 +3457 59 +3458 59 60 +3459 59 +3460 59 +3461 59 59 +3462 59 64 +3463 59 +3464 59 +3465 59 +3466 59 +3467 59 +3468 59 59 +3469 59 +3470 59 +3471 59 +3472 59 +3473 59 +3474 59 +3475 59 +3476 59 +3477 59 +3478 59 +3479 59 +3480 59 +3481 59 +3482 59 +3483 59 +3484 59 +3485 60 +3486 60 +3487 60 +3488 60 +3489 60 +3490 60 +3491 60 +3492 60 +3493 60 60 +3494 60 +3495 60 +3496 60 +3497 60 +3498 60 +3499 60 75 +3500 60 70 +3501 60 +3502 60 +3503 60 +3504 60 +3505 60 +3506 60 +3507 60 +3508 60 +3509 60 +3510 60 73 +3511 60 +3512 60 61 +3513 60 +3514 60 +3515 60 +3516 60 +3517 60 +3518 60 +3519 60 +3520 60 +3521 60 +3522 60 +3523 60 +3524 60 +3525 60 +3526 60 +3527 60 +3528 61 +3529 61 80 +3530 61 62 +3531 61 62 63 63 64 75 82 82 +3532 61 +3533 61 +3534 61 +3535 61 +3536 61 +3537 61 +3538 61 +3539 61 +3540 61 +3541 61 +3542 61 +3543 61 +3544 61 +3545 61 74 +3546 61 +3547 61 +3548 61 +3549 61 +3550 61 +3551 61 +3552 61 62 +3553 61 +3554 61 +3555 61 +3556 61 +3557 61 +3558 61 63 69 73 +3559 61 +3560 62 +3561 62 +3562 62 +3563 62 +3564 62 +3565 62 +3566 62 +3567 62 +3568 62 +3569 62 63 +3570 62 +3571 62 +3572 62 +3573 62 +3574 62 63 +3575 62 +3576 62 +3577 62 +3578 62 +3579 62 67 +3580 62 +3581 62 +3582 63 +3583 63 +3584 63 +3585 63 +3586 63 +3587 63 +3588 63 +3589 63 63 72 +3590 63 +3591 63 +3592 63 +3593 63 +3594 63 +3595 64 +3596 64 +3597 64 +3598 64 +3599 64 +3600 64 77 +3601 64 +3602 64 +3603 64 +3604 64 +3605 64 +3606 64 +3607 64 +3608 64 +3609 64 +3610 64 70 71 71 +3611 64 70 +3612 64 +3613 64 +3614 64 65 70 73 75 80 +3615 64 +3616 64 66 +3617 64 +3618 64 68 70 72 75 76 +3619 64 +3620 64 +3621 64 +3622 64 +3623 64 +3624 64 81 +3625 64 +3626 64 +3627 64 65 +3628 64 +3629 64 +3630 64 +3631 64 +3632 64 +3633 64 67 +3634 64 +3635 64 +3636 64 +3637 64 +3638 64 79 +3639 64 +3640 64 +3641 64 +3642 64 64 +3643 64 +3644 64 +3645 64 +3646 64 +3647 64 +3648 64 +3649 64 +3650 64 +3651 64 +3652 64 +3653 64 +3654 64 +3655 64 +3656 65 67 70 71 +3657 65 66 +3658 65 +3659 65 +3660 65 66 +3661 65 +3662 65 +3663 65 66 +3664 65 +3665 65 69 +3666 65 +3667 65 +3668 65 +3669 65 +3670 65 66 +3671 65 +3672 65 +3673 65 +3674 65 +3675 65 +3676 65 +3677 65 +3678 65 +3679 65 +3680 65 +3681 65 +3682 65 +3683 65 +3684 65 +3685 65 65 66 +3686 65 +3687 65 +3688 65 +3689 65 +3690 65 +3691 65 +3692 65 +3693 65 +3694 65 +3695 65 +3696 65 +3697 66 +3698 66 +3699 66 67 +3700 66 +3701 66 +3702 66 +3703 66 +3704 66 +3705 66 +3706 66 +3707 66 +3708 66 +3709 66 +3710 66 72 +3711 66 +3712 66 +3713 66 81 +3714 66 +3715 66 +3716 66 +3717 66 +3718 66 +3719 66 +3720 66 68 69 70 71 72 +3721 66 +3722 66 +3723 66 +3724 66 +3725 66 71 +3726 66 +3727 66 +3728 66 +3729 66 +3730 66 +3731 66 +3732 66 +3733 66 +3734 66 68 +3735 66 67 68 69 +3736 66 +3737 66 +3738 66 +3739 66 66 66 +3740 66 +3741 66 +3742 66 +3743 66 +3744 66 +3745 66 +3746 66 +3747 66 +3748 66 +3749 66 +3750 66 +3751 66 +3752 66 +3753 66 +3754 67 +3755 67 +3756 67 +3757 67 +3758 67 +3759 67 +3760 67 +3761 67 68 70 72 +3762 67 68 +3763 67 +3764 67 +3765 67 +3766 67 68 80 82 +3767 67 +3768 67 +3769 67 67 +3770 67 +3771 67 +3772 67 +3773 67 +3774 67 +3775 67 +3776 67 +3777 67 +3778 67 +3779 67 +3780 67 68 70 +3781 67 +3782 67 71 +3783 67 +3784 67 +3785 67 +3786 67 +3787 67 +3788 67 +3789 67 +3790 67 +3791 67 +3792 67 +3793 67 69 70 +3794 67 +3795 67 +3796 67 +3797 67 +3798 67 +3799 67 +3800 67 +3801 67 68 76 +3802 67 +3803 67 82 +3804 68 +3805 68 +3806 68 +3807 68 +3808 68 +3809 68 +3810 68 +3811 68 +3812 68 +3813 68 +3814 68 +3815 68 +3816 68 +3817 68 +3818 68 69 +3819 68 +3820 68 +3821 68 +3822 68 +3823 68 +3824 68 +3825 68 +3826 68 +3827 68 69 +3828 68 75 +3829 68 78 +3830 68 +3831 68 +3832 68 68 70 79 +3833 68 +3834 68 +3835 68 +3836 68 +3837 68 +3838 68 +3839 68 +3840 68 +3841 68 +3842 68 +3843 68 +3844 68 +3845 68 +3846 68 +3847 68 +3848 68 +3849 68 +3850 68 +3851 68 +3852 68 +3853 68 +3854 68 +3855 68 +3856 68 +3857 68 +3858 68 +3859 68 +3860 68 +3861 68 +3862 68 +3863 68 +3864 68 +3865 68 +3866 68 +3867 68 +3868 68 +3869 68 +3870 68 +3871 68 +3872 68 +3873 68 +3874 68 +3875 68 +3876 68 +3877 68 +3878 68 +3879 68 +3880 68 +3881 69 71 +3882 69 +3883 69 +3884 69 +3885 69 +3886 69 +3887 69 +3888 69 +3889 69 71 72 77 +3890 69 +3891 69 +3892 69 +3893 69 +3894 69 72 +3895 69 +3896 69 +3897 69 +3898 69 +3899 69 +3900 69 +3901 69 +3902 69 +3903 69 +3904 69 +3905 69 +3906 69 +3907 69 +3908 69 +3909 69 +3910 69 +3911 69 +3912 69 +3913 69 77 +3914 69 69 +3915 69 72 +3916 69 +3917 69 +3918 69 +3919 69 +3920 69 +3921 69 +3922 69 +3923 69 +3924 69 +3925 69 +3926 69 +3927 69 +3928 69 72 74 +3929 69 +3930 69 +3931 69 +3932 69 +3933 69 +3934 69 +3935 69 +3936 69 +3937 69 69 71 71 +3938 69 +3939 69 +3940 69 +3941 69 +3942 69 +3943 69 +3944 69 +3945 69 +3946 69 +3947 69 +3948 69 +3949 69 +3950 69 70 70 +3951 69 +3952 69 +3953 69 +3954 69 +3955 69 +3956 69 +3957 69 +3958 69 +3959 69 +3960 69 +3961 69 +3962 69 +3963 69 +3964 69 +3965 69 +3966 69 +3967 69 +3968 69 +3969 69 +3970 69 +3971 69 +3972 70 +3973 70 71 +3974 70 +3975 70 +3976 70 +3977 70 +3978 70 +3979 70 +3980 70 +3981 70 +3982 70 +3983 70 +3984 70 +3985 70 +3986 70 +3987 70 +3988 70 +3989 70 +3990 70 +3991 70 +3992 70 +3993 70 +3994 70 +3995 70 +3996 70 +3997 70 +3998 70 +3999 70 +4000 70 +4001 70 +4002 70 +4003 70 +4004 70 +4005 70 +4006 70 +4007 70 +4008 70 +4009 70 +4010 70 +4011 70 70 +4012 70 +4013 70 71 +4014 70 +4015 70 +4016 70 +4017 70 +4018 70 +4019 70 +4020 70 +4021 70 +4022 70 +4023 70 +4024 70 +4025 70 +4026 70 75 +4027 70 +4028 70 +4029 70 70 72 +4030 70 +4031 70 +4032 70 +4033 70 +4034 70 +4035 70 71 72 +4036 70 +4037 70 +4038 70 +4039 70 75 +4040 70 +4041 70 +4042 70 +4043 70 +4044 70 +4045 70 +4046 70 +4047 70 +4048 70 +4049 70 +4050 70 +4051 70 +4052 70 +4053 70 +4054 70 +4055 70 +4056 70 71 +4057 70 +4058 70 +4059 70 +4060 70 +4061 70 +4062 70 +4063 70 +4064 71 +4065 71 +4066 71 +4067 71 71 +4068 71 +4069 71 +4070 71 +4071 71 +4072 71 +4073 71 +4074 71 +4075 71 +4076 71 +4077 71 71 +4078 71 +4079 71 +4080 71 +4081 71 71 +4082 71 72 +4083 71 +4084 71 +4085 71 +4086 71 +4087 71 +4088 71 +4089 71 +4090 71 +4091 71 +4092 71 +4093 71 +4094 71 +4095 71 +4096 71 +4097 71 +4098 71 +4099 71 +4100 71 +4101 71 +4102 71 +4103 71 +4104 71 +4105 71 +4106 71 +4107 71 71 +4108 71 +4109 71 +4110 71 72 +4111 71 +4112 71 +4113 71 +4114 71 +4115 71 +4116 71 +4117 71 +4118 71 +4119 71 +4120 71 +4121 71 +4122 71 71 +4123 71 +4124 71 +4125 71 +4126 71 +4127 71 +4128 71 +4129 71 +4130 71 +4131 71 +4132 71 +4133 71 71 +4134 71 +4135 71 +4136 71 +4137 71 +4138 71 +4139 71 +4140 71 +4141 71 +4142 71 +4143 71 +4144 71 +4145 71 +4146 71 +4147 71 +4148 71 +4149 71 +4150 72 +4151 72 +4152 72 +4153 72 +4154 72 +4155 72 +4156 72 +4157 72 72 +4158 72 +4159 72 +4160 72 +4161 72 +4162 72 +4163 72 +4164 72 74 +4165 72 +4166 72 72 73 +4167 72 +4168 72 +4169 72 +4170 72 +4171 72 +4172 72 +4173 72 +4174 72 +4175 72 +4176 72 +4177 72 75 +4178 72 72 +4179 72 +4180 72 +4181 72 +4182 72 +4183 72 +4184 72 +4185 72 +4186 72 +4187 72 +4188 72 72 +4189 72 +4190 72 73 +4191 72 +4192 72 +4193 72 +4194 72 +4195 72 +4196 72 +4197 72 +4198 72 +4199 72 +4200 72 +4201 72 +4202 72 +4203 72 +4204 73 73 +4205 73 +4206 73 +4207 73 +4208 73 +4209 73 +4210 73 73 +4211 73 +4212 73 74 +4213 73 74 +4214 73 74 +4215 73 +4216 73 81 +4217 73 +4218 73 +4219 73 +4220 73 74 78 +4221 73 +4222 73 +4223 73 +4224 73 73 +4225 73 +4226 73 +4227 73 78 +4228 73 +4229 73 +4230 73 +4231 73 +4232 73 +4233 73 +4234 73 +4235 73 +4236 73 +4237 73 +4238 73 +4239 73 +4240 73 +4241 74 +4242 74 +4243 74 +4244 74 +4245 74 +4246 74 +4247 74 +4248 74 +4249 74 +4250 74 +4251 74 +4252 74 +4253 74 +4254 74 +4255 74 +4256 74 +4257 74 +4258 74 +4259 75 +4260 75 76 +4261 75 +4262 75 +4263 75 +4264 75 +4265 75 78 78 +4266 75 +4267 75 +4268 75 +4269 75 +4270 75 +4271 75 78 +4272 75 +4273 75 +4274 75 +4275 75 +4276 75 +4277 75 +4278 75 +4279 75 79 +4280 75 +4281 75 76 +4282 75 +4283 75 +4284 75 +4285 75 +4286 75 +4287 75 +4288 75 +4289 76 +4290 76 +4291 76 +4292 76 77 +4293 76 +4294 76 +4295 76 +4296 76 82 +4297 76 +4298 76 76 78 +4299 76 +4300 76 +4301 76 77 +4302 76 +4303 76 +4304 76 +4305 76 77 78 78 +4306 76 +4307 76 77 +4308 76 +4309 76 +4310 76 +4311 76 +4312 76 +4313 76 +4314 76 +4315 77 +4316 77 +4317 77 +4318 77 +4319 77 +4320 77 +4321 77 +4322 77 +4323 77 80 +4324 77 +4325 77 +4326 77 +4327 77 +4328 77 +4329 77 +4330 77 +4331 77 +4332 77 +4333 77 +4334 77 +4335 77 +4336 77 +4337 77 +4338 77 78 78 +4339 77 78 +4340 77 +4341 77 +4342 77 +4343 77 +4344 77 +4345 77 +4346 77 +4347 77 +4348 77 +4349 77 +4350 78 +4351 78 +4352 78 +4353 78 +4354 78 +4355 78 +4356 78 +4357 78 +4358 78 +4359 78 +4360 78 +4361 78 +4362 78 +4363 78 79 80 81 +4364 78 +4365 78 +4366 78 +4367 78 +4368 78 +4369 78 +4370 78 78 +4371 78 +4372 78 +4373 78 +4374 78 +4375 78 +4376 78 +4377 78 +4378 78 +4379 78 +4380 78 +4381 78 +4382 78 +4383 78 +4384 78 +4385 78 +4386 78 +4387 78 +4388 78 +4389 78 +4390 78 +4391 78 +4392 78 +4393 78 +4394 78 +4395 78 +4396 78 +4397 79 +4398 79 80 +4399 79 +4400 79 +4401 79 +4402 79 +4403 79 +4404 79 80 +4405 79 81 82 +4406 79 +4407 79 +4408 79 +4409 79 +4410 79 80 80 81 +4411 79 +4412 79 +4413 79 +4414 79 +4415 79 +4416 79 79 +4417 79 80 +4418 79 +4419 79 +4420 79 +4421 79 +4422 79 80 +4423 79 +4424 79 +4425 79 +4426 79 +4427 79 +4428 79 +4429 79 +4430 79 +4431 79 +4432 79 80 +4433 79 +4434 79 +4435 79 +4436 79 +4437 79 79 +4438 79 +4439 79 +4440 79 +4441 79 +4442 79 +4443 79 +4444 79 +4445 79 +4446 79 +4447 79 +4448 79 +4449 79 +4450 79 +4451 79 +4452 79 79 +4453 79 +4454 80 +4455 80 +4456 80 +4457 80 +4458 80 +4459 80 +4460 80 +4461 80 +4462 80 82 +4463 80 +4464 80 +4465 80 +4466 80 +4467 80 +4468 80 +4469 80 +4470 80 +4471 80 +4472 80 +4473 80 80 80 +4474 80 +4475 80 +4476 80 +4477 80 +4478 80 +4479 80 +4480 80 +4481 80 +4482 80 +4483 80 +4484 80 81 81 +4485 80 +4486 80 +4487 80 +4488 80 +4489 80 +4490 80 +4491 80 +4492 80 +4493 80 +4494 80 +4495 80 +4496 80 +4497 80 +4498 80 +4499 80 +4500 80 +4501 80 +4502 80 82 +4503 81 +4504 81 +4505 81 +4506 81 82 +4507 81 +4508 81 +4509 81 82 82 +4510 81 +4511 81 +4512 81 +4513 81 81 +4514 81 +4515 81 +4516 81 82 +4517 81 +4518 81 +4519 81 +4520 81 +4521 81 +4522 81 +4523 81 82 +4524 81 +4525 81 +4526 81 +4527 81 +4528 81 +4529 81 +4530 81 +4531 81 +4532 81 +4533 82 82 +4534 82 +4535 82 +4536 82 +4537 82 +4538 82 +4539 82 +4540 82 +4541 82 +4542 82 +4543 82 +4544 82 +4545 82 +4546 82 +4547 82 +4548 82 +4549 82 +4550 82 +4551 82 +4552 82 +4553 82 +4554 82 diff --git a/Matlab/Tests/090306-3_db-Signatures.txt b/Matlab/Tests/090306-3_db-Signatures.txt new file mode 100644 index 00000000..69e2bd72 --- /dev/null +++ b/Matlab/Tests/090306-3_db-Signatures.txt @@ -0,0 +1,84 @@ +SignatureID WordsID... +-1 5 8 9 21 22 23 27 30 32 34 36 40 45 53 61 62 64 67 68 77 85 86 97 98 99 100 103 106 122 124 125 127 129 131 143 157 161 164 168 169 172 175 181 182 187 196 197 208 210 217 218 219 220 234 235 237 244 252 286 307 308 310 315 327 328 346 347 350 355 362 372 373 387 393 394 398 404 412 423 428 429 441 442 456 465 470 476 495 496 498 506 520 558 572 584 585 587 596 620 634 637 643 646 647 658 667 668 681 709 721 726 741 766 777 785 790 791 793 808 809 880 896 906 908 919 933 940 954 958 974 981 1002 1023 1026 1058 1060 1071 1074 1097 1146 1152 1166 1215 1217 1229 1334 1341 1387 1478 1510 1539 1549 1566 1601 1624 1649 1693 1814 2046 2141 2424 2442 2674 +1 1 2 3 4 4 5 6 7 7 7 8 8 8 9 10 11 12 13 14 15 16 17 18 19 19 20 21 22 23 23 23 23 24 25 26 27 27 28 29 30 30 31 31 32 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 46 47 48 49 49 49 50 51 52 53 53 54 54 55 56 57 58 59 60 61 61 62 63 64 65 66 67 68 69 70 71 71 72 73 74 75 76 77 78 79 79 80 81 82 83 84 85 85 86 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 105 106 107 108 109 109 110 111 111 112 113 114 115 +2 8 8 8 9 9 18 18 19 19 21 21 21 21 23 23 23 24 26 27 27 27 32 36 36 39 40 46 61 61 61 62 62 63 64 65 67 67 67 68 68 68 69 69 72 79 79 80 81 86 87 95 97 113 116 117 118 119 120 121 122 122 123 124 124 125 126 127 128 129 130 131 132 133 134 135 136 137 137 138 139 140 141 142 142 143 144 145 146 147 148 149 150 151 152 153 153 154 155 156 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 +3 8 22 24 30 32 40 62 63 64 67 67 67 81 85 85 97 98 98 122 127 127 129 129 129 129 131 132 142 143 155 159 163 181 181 181 198 209 217 217 217 218 218 219 220 221 221 222 222 223 224 225 226 227 227 228 229 229 230 231 232 233 234 235 236 237 238 238 239 240 241 242 242 243 244 244 244 245 246 247 248 249 250 251 252 253 254 255 256 256 257 258 259 260 261 262 263 264 +4 2 8 8 23 37 64 67 67 67 67 67 67 67 74 85 98 124 124 125 125 127 127 129 131 131 132 132 143 157 159 161 161 175 175 175 181 182 186 187 187 201 208 210 217 217 218 218 218 218 219 220 220 220 220 221 221 225 227 228 230 234 234 234 234 234 234 234 236 241 242 244 244 244 244 244 245 247 252 261 265 266 267 267 268 269 269 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 283 284 285 286 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 302 303 303 304 304 305 306 306 307 308 308 309 310 310 311 311 312 313 314 315 316 317 318 319 320 321 322 323 324 324 325 326 327 328 328 329 330 331 332 333 334 334 334 335 336 337 338 339 340 341 342 343 343 344 344 345 346 346 347 348 349 350 350 350 350 351 352 353 354 355 356 357 358 359 360 361 362 363 +5 8 9 9 18 30 30 32 32 32 40 45 77 77 98 106 108 121 122 122 122 122 122 122 125 130 157 157 168 170 181 182 212 218 218 219 234 234 234 252 252 257 257 269 286 304 307 307 346 355 355 357 364 365 366 367 368 369 369 370 371 372 372 373 374 375 376 377 378 379 380 381 382 382 383 384 385 386 386 387 388 389 390 391 392 393 393 394 395 396 396 397 398 399 400 401 402 403 404 404 405 406 407 408 409 409 410 411 412 413 414 415 416 417 418 419 420 420 421 422 423 423 423 423 424 425 426 426 427 428 429 429 430 431 432 433 434 435 436 436 437 438 439 440 441 442 442 443 444 444 445 446 447 448 449 450 451 452 453 454 455 456 456 457 457 458 459 460 461 461 462 463 464 464 465 466 467 468 469 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 +6 23 23 29 30 30 40 100 129 129 142 142 142 143 168 175 181 217 217 217 247 257 257 307 307 307 325 325 327 346 346 369 369 370 371 372 372 372 372 372 373 377 379 382 385 387 393 394 396 398 402 404 405 409 412 417 418 419 428 430 438 442 442 451 453 456 456 456 463 466 467 486 487 488 489 490 491 492 493 494 495 496 497 498 498 499 500 501 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 531 532 533 534 535 536 537 538 +7 9 29 30 45 49 53 64 67 77 97 106 122 125 129 129 129 129 129 130 175 181 181 181 181 181 181 181 217 217 217 221 221 228 231 234 234 237 247 285 307 309 314 325 355 363 370 372 372 372 382 385 387 393 393 400 412 416 418 423 426 429 438 438 442 442 442 456 457 460 463 467 467 486 490 492 493 498 499 504 506 506 508 508 511 516 526 532 534 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 585 586 587 588 589 590 591 592 593 594 595 596 596 597 598 599 600 601 602 603 604 605 606 607 607 608 609 609 610 611 612 613 614 +8 7 9 9 23 32 32 32 32 67 67 67 67 85 95 121 124 124 125 129 129 130 175 175 181 181 181 181 182 182 184 189 190 196 197 197 208 210 221 234 234 234 244 304 308 308 310 328 329 329 330 343 346 353 355 355 362 362 362 363 367 372 378 387 387 393 408 408 414 414 423 427 430 442 448 450 457 467 470 470 486 495 498 504 506 510 511 516 520 551 555 558 558 558 572 572 572 576 582 582 584 584 604 615 616 617 618 619 620 621 622 623 624 625 626 627 628 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 681 682 683 684 685 686 687 688 689 689 690 691 692 693 693 694 695 695 696 697 698 699 699 700 701 702 703 704 705 +9 15 32 32 32 67 98 122 127 142 175 181 218 218 234 235 244 244 244 244 247 307 308 308 310 310 315 315 327 328 328 329 362 373 377 387 389 393 393 396 397 398 398 400 404 404 404 408 413 429 441 448 456 467 470 470 480 493 498 558 572 572 584 589 597 615 615 619 619 620 620 621 621 626 628 634 634 636 640 644 651 653 656 656 659 660 662 664 664 665 666 668 668 672 680 682 706 707 708 709 710 711 712 713 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 +10 8 9 23 23 29 29 30 30 30 30 32 32 36 40 64 67 67 125 125 129 129 130 161 172 172 172 175 181 181 187 196 197 210 210 220 221 234 234 234 234 234 235 235 237 244 244 244 308 308 320 327 328 328 338 338 338 338 343 346 347 347 362 373 373 384 389 412 441 442 467 486 495 495 515 520 528 533 572 589 596 596 597 613 613 620 620 634 636 637 643 646 651 681 685 685 685 685 685 695 699 699 702 709 717 717 725 726 731 732 734 735 737 741 743 746 756 757 758 759 760 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 820 821 822 +11 4 5 8 8 8 15 23 29 30 30 32 53 61 67 67 67 77 85 85 85 85 85 86 118 120 125 133 142 175 175 181 182 182 187 206 210 219 234 235 237 244 244 251 252 308 308 308 308 308 308 308 308 310 315 343 350 355 373 373 387 399 410 412 412 412 423 428 429 438 441 441 495 512 551 555 558 558 558 584 584 585 589 607 608 613 615 620 620 637 637 646 646 646 647 649 652 656 696 697 709 716 720 741 746 759 763 763 766 766 766 775 775 777 782 785 785 785 785 791 791 791 791 791 792 795 797 797 807 808 808 809 809 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 856 857 858 859 860 861 862 863 864 865 866 867 867 868 869 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 +12 4 5 5 7 9 12 23 29 30 30 32 32 32 32 45 63 64 67 98 106 124 125 127 127 130 131 168 172 172 175 175 175 175 175 175 187 197 206 206 234 234 244 244 244 244 247 291 308 308 308 308 308 344 351 362 372 373 389 404 423 429 441 444 448 476 495 498 498 520 543 550 552 558 558 584 637 637 643 643 646 651 656 658 667 681 681 716 717 721 721 728 744 744 744 746 759 762 766 769 769 769 780 785 790 793 808 808 808 835 849 854 880 884 886 888 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 907 908 908 908 909 909 909 910 911 912 913 914 915 916 917 918 919 920 921 922 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 944 945 946 947 948 949 950 951 +13 8 8 9 9 18 30 32 67 67 67 67 85 106 108 124 124 124 124 125 131 172 175 208 215 217 218 218 231 234 235 257 269 285 286 305 305 308 320 329 330 334 387 389 394 394 394 441 441 448 448 465 471 476 486 506 520 545 558 584 584 585 596 596 597 626 637 637 637 647 667 681 681 685 685 702 717 760 766 769 769 785 790 793 797 809 810 829 840 880 892 896 896 898 898 903 906 908 911 911 916 916 919 922 936 940 944 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 969 970 971 972 973 974 975 975 976 977 978 979 979 980 981 981 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1011 1012 1013 1014 +14 27 67 97 100 172 172 244 312 329 330 372 373 396 404 412 412 412 427 495 498 506 558 558 637 667 702 717 760 790 808 832 896 896 896 896 919 954 981 981 981 995 996 996 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 +15 5 9 9 9 9 9 13 30 64 64 64 67 67 67 67 67 67 67 67 67 67 67 67 95 118 125 125 125 125 125 129 129 164 168 172 172 172 172 175 181 181 181 181 181 199 218 220 234 307 327 327 328 346 346 346 355 355 355 362 362 362 362 362 362 372 372 373 373 373 412 412 476 476 539 558 558 558 558 558 558 558 558 558 558 571 584 584 584 585 585 590 647 658 658 658 658 667 721 721 721 721 721 721 766 766 791 880 880 880 880 880 880 908 926 954 958 1019 1023 1027 1033 1035 1035 1035 1036 1037 1038 1039 1040 1041 1042 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 +16 8 8 8 9 9 9 21 21 23 30 30 30 30 30 30 32 45 64 64 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 125 125 125 125 125 125 125 125 130 130 161 161 161 172 172 172 172 172 172 172 175 175 175 199 199 219 220 220 234 234 234 234 234 267 307 310 310 316 316 327 327 327 328 343 343 343 346 346 346 355 355 355 362 362 362 362 362 362 362 362 362 362 362 362 363 372 373 373 373 373 373 373 373 394 498 509 509 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 558 584 584 584 584 585 680 680 721 721 721 721 721 722 722 851 880 880 880 880 926 1049 1058 1058 1068 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1077 1078 1079 1080 1081 1082 1083 1084 1085 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 +17 +18 3 8 8 22 23 23 23 28 28 34 45 51 51 51 53 63 99 100 122 125 143 157 168 168 173 182 187 187 187 187 206 220 244 301 347 372 373 387 394 394 396 398 423 426 428 486 513 539 587 589 667 674 695 709 726 785 785 810 863 908 908 919 922 936 1019 1034 1082 1104 1105 1106 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1119 1120 1121 1122 1123 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1146 1147 1148 1149 1150 1151 1152 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1169 1170 1171 1172 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 +19 36 63 121 121 131 133 142 143 143 168 168 172 172 187 218 219 238 239 310 312 362 387 387 486 584 587 609 647 652 680 696 718 782 981 984 1019 1056 1056 1089 1107 1117 1131 1133 1142 1142 1145 1146 1146 1153 1158 1158 1160 1166 1166 1170 1172 1173 1181 1182 1184 1194 1212 1227 1228 1229 1230 1231 1232 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1278 1279 +20 8 8 9 9 10 13 22 22 23 67 67 67 67 67 83 83 99 127 129 134 134 164 175 182 186 188 210 218 219 285 301 307 308 308 308 310 340 346 355 362 373 394 427 506 558 558 587 587 596 634 637 637 643 652 667 667 667 681 759 766 775 783 797 816 849 851 888 902 908 919 919 926 926 954 981 1019 1019 1022 1026 1056 1082 1105 1110 1136 1140 1142 1142 1151 1152 1152 1166 1166 1166 1166 1172 1173 1173 1188 1194 1197 1212 1215 1229 1256 1280 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 +21 4 8 9 22 36 36 67 67 85 106 121 124 124 124 124 125 129 143 148 175 175 181 218 244 250 314 346 355 367 370 373 398 402 424 495 540 558 558 558 584 584 584 587 647 667 667 667 667 667 681 702 721 726 727 728 825 831 849 896 896 902 926 981 984 1026 1045 1056 1057 1058 1071 1074 1074 1104 1110 1126 1136 1140 1140 1143 1151 1152 1152 1152 1174 1197 1215 1238 1290 1291 1294 1307 1315 1315 1335 1335 1342 1343 1363 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 +22 9 9 22 30 37 67 67 67 67 67 67 86 99 121 124 134 142 143 164 164 168 170 170 172 172 175 175 217 220 235 236 237 245 307 310 328 355 355 362 362 373 394 412 412 458 464 558 589 667 667 681 704 721 766 775 785 791 880 896 906 958 974 984 1023 1023 1042 1045 1045 1058 1058 1071 1110 1122 1136 1143 1152 1173 1173 1215 1230 1291 1292 1296 1316 1331 1334 1334 1343 1343 1388 1390 1394 1396 1400 1419 1424 1426 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1443 1444 1445 1446 1447 1448 1448 1448 1449 1450 1451 1452 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 +23 9 32 64 67 67 95 99 118 124 129 181 182 234 234 307 307 327 355 362 362 362 413 558 643 658 658 667 667 704 721 766 857 1036 1056 1059 1136 1140 1152 1152 1173 1193 1230 1230 1267 1290 1292 1292 1331 1343 1355 1396 1476 1490 1491 1492 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 +24 4 10 18 22 23 27 32 34 36 45 45 47 51 51 53 61 61 122 131 157 187 188 196 210 218 220 235 286 286 312 312 315 316 327 367 373 394 394 394 404 429 429 430 446 476 476 520 552 585 621 647 668 720 726 726 748 769 781 783 785 785 793 793 840 884 923 986 1002 1007 1145 1171 1194 1207 1229 1274 1280 1322 1322 1375 1427 1448 1453 1492 1509 1510 1511 1512 1513 1514 1515 1516 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1544 1545 1546 1547 1548 1549 1550 1551 1552 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1561 1562 1563 1563 1564 1565 1566 1566 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 +25 3 5 5 15 23 30 32 32 36 40 52 86 133 182 182 188 196 197 210 217 218 218 218 233 235 238 286 286 307 314 350 350 362 372 373 394 404 404 429 430 457 477 504 513 520 608 620 664 785 785 785 791 793 795 795 798 808 808 823 922 940 940 954 960 1002 1002 1002 1026 1124 1124 1146 1153 1153 1171 1219 1219 1334 1334 1384 1394 1477 1478 1490 1509 1510 1511 1520 1529 1535 1540 1544 1546 1549 1549 1551 1555 1559 1559 1561 1562 1562 1562 1566 1566 1566 1566 1566 1566 1570 1571 1572 1573 1574 1574 1580 1584 1585 1588 1589 1601 1601 1601 1601 1604 1610 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1692 1693 1694 1695 1696 1697 1698 1699 1700 +26 23 23 34 45 45 53 61 61 77 97 131 157 161 164 164 164 168 182 182 210 215 219 234 252 310 343 345 362 373 394 400 427 429 457 476 481 496 504 504 506 506 513 520 520 539 620 621 621 643 725 726 726 726 728 766 780 791 793 795 795 862 862 931 960 1002 1027 1074 1097 1102 1177 1207 1217 1249 1313 1334 1334 1334 1334 1464 1465 1515 1520 1524 1535 1549 1559 1560 1561 1566 1566 1566 1566 1566 1569 1584 1594 1601 1624 1624 1629 1632 1633 1640 1649 1649 1658 1661 1661 1662 1672 1681 1693 1693 1693 1701 1702 1702 1703 1704 1704 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1733 1734 1735 1736 1737 1738 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 +27 22 34 40 45 53 85 118 129 164 168 172 217 217 228 234 286 307 347 372 372 373 398 423 426 427 428 429 456 465 504 513 520 554 587 621 663 726 793 854 954 960 1026 1146 1246 1334 1341 1341 1387 1465 1511 1515 1535 1540 1549 1566 1566 1595 1595 1624 1627 1630 1632 1633 1640 1661 1675 1675 1682 1688 1693 1693 1703 1716 1735 1755 1759 1765 1769 1775 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 +28 4 12 19 21 23 61 95 118 124 143 148 168 187 196 234 235 347 351 372 373 382 387 400 427 456 465 465 496 509 509 545 554 584 634 726 726 726 726 777 785 791 810 833 865 888 913 954 1026 1089 1097 1097 1146 1162 1217 1217 1229 1229 1238 1244 1322 1334 1334 1387 1387 1432 1477 1535 1549 1559 1566 1572 1574 1582 1583 1601 1635 1649 1657 1658 1669 1701 1701 1715 1716 1729 1730 1740 1744 1759 1773 1798 1799 1813 1815 1815 1828 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 +29 2 30 32 34 45 53 98 117 187 235 237 286 299 303 330 350 351 367 394 394 394 394 402 428 504 504 507 514 558 696 726 726 781 791 793 793 854 896 911 940 978 1007 1071 1146 1215 1302 1320 1334 1341 1364 1387 1465 1467 1510 1518 1521 1527 1535 1540 1546 1624 1645 1654 1654 1699 1701 1755 1760 1771 1788 1788 1794 1819 1850 1851 1857 1859 1861 1865 1867 1870 1891 1907 1948 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2013 2014 2015 2016 2017 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 +30 22 23 23 30 32 32 40 98 103 108 127 187 187 196 206 235 235 300 387 428 465 507 514 539 580 587 596 600 608 620 667 700 726 726 763 793 903 903 940 940 1010 1036 1225 1238 1282 1490 1540 1540 1597 1612 1676 1774 1794 1857 1859 1865 1865 1865 1900 1908 1940 1953 1957 1958 1959 1960 1968 1970 1972 1994 1994 2005 2012 2025 2045 2064 2065 2066 2067 2068 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2083 2084 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2107 2108 2109 2110 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2124 2125 2126 2127 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 +31 12 23 34 38 49 54 61 66 86 98 106 127 164 169 169 170 197 206 215 217 235 244 307 312 330 398 520 566 573 620 634 647 709 726 726 780 791 793 793 810 979 1004 1010 1023 1146 1173 1215 1334 1467 1478 1517 1528 1531 1546 1549 1566 1572 1640 1645 1693 1693 1693 1693 1734 1814 1852 1856 1859 1870 1952 1953 1953 1954 1958 1972 1972 2025 2046 2050 2065 2066 2067 2068 2070 2072 2074 2085 2097 2098 2110 2111 2142 2144 2149 2150 2161 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2258 2259 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 +32 15 19 23 29 32 32 34 36 36 61 61 77 81 83 86 97 124 129 130 131 143 168 169 169 197 202 206 210 235 250 286 291 310 325 340 347 367 372 373 380 394 394 399 427 496 496 558 593 634 723 726 726 748 785 793 793 843 902 933 940 984 1018 1146 1171 1229 1229 1229 1280 1313 1478 1478 1490 1510 1510 1517 1517 1520 1521 1539 1575 1640 1675 1693 1703 1715 1770 1783 1856 1859 1953 1957 1972 1976 2044 2046 2065 2072 2072 2089 2097 2102 2107 2125 2141 2141 2196 2198 2208 2208 2227 2229 2230 2230 2231 2250 2255 2281 2281 2282 2283 2284 2285 2286 2287 2288 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 +33 22 23 30 32 51 77 103 106 143 182 184 187 196 220 228 233 235 269 301 394 428 501 514 556 556 585 618 634 707 709 718 726 746 783 785 793 793 808 978 1004 1146 1146 1162 1228 1246 1387 1478 1545 1546 1597 1624 1693 1693 1714 1732 1734 1735 1783 1891 1914 1992 2046 2072 2072 2109 2134 2141 2152 2161 2161 2227 2235 2303 2307 2309 2336 2338 2346 2352 2353 2365 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 +34 7 22 22 23 32 32 100 106 157 182 196 196 196 211 211 218 218 239 346 357 372 394 416 423 428 428 444 456 470 470 496 496 525 584 618 634 658 660 725 726 726 764 777 785 791 833 841 891 941 978 1022 1124 1146 1197 1229 1266 1313 1387 1465 1466 1478 1490 1490 1527 1546 1549 1591 1624 1661 1688 1730 1836 1891 1901 1912 1967 1972 1992 1998 2165 2235 2253 2308 2310 2352 2385 2387 2394 2399 2405 2419 2420 2421 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 +35 13 23 23 29 30 32 52 65 100 100 103 103 106 106 121 125 143 157 187 211 252 285 310 314 367 384 397 398 400 412 423 423 444 470 470 520 554 584 596 596 597 620 668 696 709 718 726 785 791 808 888 888 908 952 953 970 981 981 981 1011 1026 1048 1123 1124 1143 1171 1246 1249 1302 1334 1334 1446 1447 1601 1604 1624 1640 1939 1939 1952 1958 1967 2070 2089 2141 2141 2352 2367 2379 2387 2396 2401 2424 2424 2432 2433 2434 2438 2439 2439 2440 2446 2448 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 +36 5 8 19 23 32 34 52 77 79 100 103 121 125 127 168 187 215 215 218 218 220 220 228 228 234 234 234 235 235 235 244 245 252 252 252 307 310 346 347 362 372 413 444 464 470 470 470 476 525 558 596 597 600 615 643 643 699 726 777 777 896 906 908 941 949 960 984 1060 1146 1146 1217 1249 1334 1341 1676 1814 1844 1852 1954 1992 2028 2059 2072 2115 2258 2288 2352 2387 2424 2432 2440 2464 2466 2467 2468 2470 2474 2485 2487 2495 2500 2501 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2557 2558 2559 2560 2561 +37 4 5 23 30 32 32 34 52 53 67 67 72 86 100 103 106 121 130 143 175 175 182 187 212 212 218 234 235 236 252 310 315 315 316 329 362 362 373 394 394 398 404 426 426 427 429 429 429 444 465 470 470 476 542 554 558 759 777 785 785 785 785 793 865 902 929 952 986 996 1074 1074 1097 1146 1217 1286 1302 1334 1334 1334 1387 1478 1510 1516 1618 1771 1783 1803 1939 1939 2046 2058 2331 2331 2387 2422 2424 2424 2466 2467 2474 2488 2495 2517 2519 2530 2530 2534 2534 2535 2536 2536 2539 2542 2546 2549 2557 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2594 2595 2596 2597 2598 2599 2600 2601 +38 106 106 141 239 344 370 496 520 558 680 840 848 848 857 958 958 974 984 1019 1022 1060 1071 1152 1159 1375 1375 1510 1543 1545 1545 1545 1590 1783 2209 2242 2521 2565 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2616 2617 2618 2619 2620 2621 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 +39 8 9 21 21 23 27 30 32 36 46 47 48 53 62 62 64 67 67 67 67 68 68 70 70 71 71 77 81 85 86 86 86 87 87 88 89 90 91 95 97 97 97 98 99 99 100 101 103 107 108 109 113 125 125 125 143 157 161 168 169 170 175 182 182 186 189 197 197 199 208 210 213 213 219 228 234 241 308 357 372 394 404 429 520 543 702 744 766 766 766 766 777 793 880 880 884 887 933 933 976 1334 1334 1334 1374 1375 1432 1515 1727 1774 1958 2141 2272 2350 2426 2432 2477 2544 2562 2572 2575 2648 2649 2650 2651 2652 2653 2654 2655 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2677 2678 2679 2680 2681 2681 2682 2683 2684 2685 2686 2687 2688 2688 2689 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 +40 8 8 12 17 19 23 23 23 24 26 27 28 30 31 32 34 38 39 42 45 46 49 51 52 53 53 53 54 62 62 65 66 68 69 69 70 71 73 76 77 81 86 87 88 90 90 91 92 93 94 95 96 98 99 100 100 106 107 108 109 110 112 113 114 125 125 143 169 169 170 175 175 181 184 192 199 207 208 208 213 219 228 235 255 258 342 347 358 398 539 558 558 585 592 681 721 744 759 785 790 880 896 898 960 1074 1074 1334 1334 1334 1478 1510 1510 1618 1619 1619 1643 1649 2046 2181 2182 2208 2218 2419 2426 2594 2675 2678 2689 2704 2707 2713 2715 2716 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 +41 7 8 15 16 18 19 21 21 21 21 23 23 24 26 27 32 32 34 36 39 45 46 47 60 62 64 68 69 76 79 80 81 86 87 95 107 109 113 125 125 133 148 152 156 157 159 161 163 164 170 173 177 181 182 182 183 187 187 190 191 192 193 196 197 198 198 198 199 199 202 203 206 208 212 214 216 231 234 239 241 247 252 255 346 347 355 399 486 542 766 769 769 777 791 809 880 896 902 957 1059 1059 1060 1123 1124 1152 1192 1221 1334 1334 1446 1462 1783 1814 2027 2281 2281 2311 2313 2315 2319 2429 2433 2479 2484 2571 2571 2592 2674 2713 2715 2729 2731 2759 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 +42 8 9 15 18 19 21 23 24 62 64 64 67 67 68 79 81 85 118 124 124 125 125 127 127 129 131 131 133 134 134 138 144 159 161 163 175 188 190 196 208 219 219 225 228 234 234 237 241 244 247 252 255 258 261 310 310 310 310 310 310 316 316 344 350 355 355 362 362 362 554 558 681 681 685 721 744 760 760 766 849 880 887 896 896 896 896 896 901 984 1026 1060 1097 1238 1334 1334 1665 2043 2044 2442 2442 2612 2653 2673 2674 2779 2796 2807 2822 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2842 2843 2844 2845 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 +43 8 8 22 24 67 85 122 125 133 140 140 143 159 161 186 197 210 218 221 223 227 234 234 235 237 241 243 244 244 256 266 278 278 283 285 291 301 302 302 303 305 305 308 308 310 314 315 315 334 335 337 339 339 340 340 342 344 344 346 347 350 350 351 351 358 358 362 363 372 394 402 456 458 664 713 721 733 766 808 826 880 896 919 919 919 933 954 968 987 1026 1036 1060 1060 1074 1097 1118 1151 1192 1228 1244 1334 1387 1394 1465 1478 1624 1649 1684 1771 1884 1936 2046 2058 2228 2421 2442 2442 2484 2532 2562 2576 2815 2817 2835 2835 2836 2848 2848 2862 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2877 2878 2879 2880 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 +44 +45 23 30 32 32 53 61 67 74 77 108 122 129 164 175 181 184 218 218 218 327 346 355 357 371 373 373 373 373 373 373 375 377 380 380 381 384 385 389 393 393 396 397 400 404 404 405 407 409 410 412 414 414 416 417 418 419 420 428 429 430 438 439 442 444 445 446 447 450 450 453 456 456 462 465 466 467 474 480 492 495 498 503 512 513 516 519 528 529 535 552 558 565 584 593 595 642 646 649 667 668 680 722 741 741 741 854 922 954 1071 1097 1146 1334 1387 1465 1465 1479 1549 1624 2141 2208 2396 2396 2416 2442 2683 2773 2920 2934 2935 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 +46 9 143 217 218 218 234 234 234 234 269 285 307 311 346 372 372 382 393 393 395 396 412 412 418 430 434 441 442 442 442 443 445 454 456 456 467 489 493 498 498 501 503 506 507 511 511 515 516 517 518 524 526 531 534 539 542 546 554 556 558 564 565 566 567 569 571 581 582 585 586 588 589 589 590 590 599 605 606 613 613 614 627 639 696 744 744 745 755 782 791 791 791 840 845 860 926 974 1022 1022 1029 1071 1097 1146 1217 1372 1401 1501 1788 1788 1936 1936 2010 2350 2421 2429 2442 2442 2545 2609 2803 2894 2952 2975 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 +47 7 30 36 64 67 67 67 97 122 124 126 127 170 175 181 181 183 184 184 187 187 187 187 187 190 221 231 234 307 310 346 355 355 355 362 362 372 373 375 377 387 393 394 398 416 429 439 439 441 442 448 457 467 498 504 511 520 551 555 557 558 558 558 558 558 558 558 559 561 562 564 565 567 572 576 577 584 585 593 602 610 619 620 621 625 637 638 639 643 645 646 646 647 649 651 654 656 658 658 658 658 660 665 666 668 674 675 678 682 682 687 687 689 691 691 693 693 694 698 718 721 722 725 728 745 755 772 785 790 790 791 793 809 826 849 851 906 919 926 954 958 974 998 1060 1074 1074 1074 1074 1206 1269 1334 1334 1375 1384 1425 1492 1521 1545 1624 1765 1935 2081 2141 2141 2292 2442 2442 2484 2484 2484 2484 2673 2766 2800 2821 2891 2995 3008 3016 3017 3018 3019 3020 3021 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 +48 10 32 32 67 97 124 157 196 208 210 220 234 244 307 308 310 310 310 315 328 346 355 355 358 362 362 362 362 374 384 387 387 393 394 394 404 410 416 418 423 423 440 441 442 467 495 510 516 551 572 572 582 584 585 589 593 616 619 620 621 626 628 634 636 637 637 640 640 644 646 646 651 653 653 654 656 658 658 660 668 669 672 674 675 675 678 682 687 687 689 689 691 696 703 709 710 716 717 720 723 726 727 728 731 733 734 736 741 741 742 743 746 746 748 755 755 785 809 809 828 861 909 913 1060 1060 1387 1389 1539 1662 1814 2081 2081 2141 2432 2557 2562 2571 2612 2812 2812 2930 2958 2970 3031 3034 3051 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 +49 9 30 30 30 32 32 32 53 53 67 97 125 127 157 181 181 181 218 231 234 234 327 327 344 346 346 347 362 362 362 396 397 404 410 414 495 500 533 539 551 558 572 572 589 620 626 627 636 644 646 656 662 662 662 682 696 697 702 703 709 709 710 714 717 718 722 725 726 727 729 730 731 732 734 735 736 741 741 743 746 746 747 750 752 752 760 763 770 772 774 775 776 777 780 781 787 790 795 807 809 809 811 817 819 821 854 863 865 879 880 906 924 940 954 1060 1097 1097 1097 1097 1166 1539 1539 1624 1661 1661 1661 1693 1814 1814 1958 1992 2081 2141 2141 2421 2428 2489 2554 2891 3023 3054 3073 3075 3077 3081 3083 3089 3090 3090 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 +50 9 9 9 9 9 23 23 30 51 61 61 67 129 175 175 181 210 210 219 234 237 286 308 308 308 308 308 308 346 347 362 362 362 373 378 387 389 412 412 412 412 441 441 486 495 498 509 552 585 596 607 637 646 649 651 657 680 683 685 699 709 716 716 717 717 718 726 735 741 746 757 758 759 762 763 764 766 766 766 773 775 775 777 781 781 791 791 797 804 807 808 808 809 810 812 824 828 830 844 851 852 854 857 857 858 858 861 865 866 869 871 874 880 880 896 907 911 913 916 931 931 954 958 974 1097 1215 1334 1334 1389 1462 1471 1471 1479 1624 1668 1814 1814 1952 1953 1992 2046 2072 2115 2141 2477 2502 2545 2550 2596 2672 2786 2796 2804 2921 2992 2992 2992 3039 3041 3105 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3137 3138 3139 3140 3141 3142 3143 3144 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 +51 9 23 30 30 32 32 61 64 83 86 98 124 124 124 125 172 181 181 187 218 220 244 245 305 305 308 308 308 308 308 315 340 356 423 429 441 456 457 465 495 498 498 558 558 558 615 621 637 643 643 643 647 651 658 668 668 668 681 702 717 721 760 763 766 769 785 785 785 787 791 808 808 809 810 816 826 828 829 830 831 833 836 842 843 848 849 857 860 863 866 866 878 880 886 896 898 906 908 908 908 909 911 911 913 916 916 924 933 933 933 933 933 933 933 935 942 958 958 960 984 1004 1011 1011 1058 1060 1071 1146 1146 1166 1189 1217 1219 1310 1334 1350 1425 1462 1478 1515 1604 1832 1847 1939 2027 2133 2426 2536 2567 2567 2707 2926 2947 2947 2982 3041 3109 3115 3124 3126 3128 3130 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 +52 5 23 34 37 98 105 105 106 127 131 157 175 182 182 206 210 210 217 218 218 218 231 244 308 308 308 308 329 389 394 423 441 448 498 498 584 597 637 637 668 675 760 762 777 783 785 785 793 808 808 854 854 862 880 896 896 898 902 902 903 906 906 908 908 910 911 911 912 913 916 919 922 923 931 933 933 934 936 940 942 944 946 949 984 992 995 996 1002 1004 1004 1011 1014 1058 1058 1071 1074 1074 1146 1194 1309 1313 1334 1471 1485 1519 1649 1715 1939 2419 2477 2484 2664 2766 2815 2993 3129 3168 3171 3173 3173 3178 3181 3183 3198 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 +53 18 30 32 61 67 67 67 124 124 127 127 133 168 169 175 181 197 217 218 218 231 235 247 252 266 286 286 347 373 394 394 394 394 394 394 394 441 441 441 465 476 476 552 559 561 584 584 585 643 643 647 647 647 777 790 790 790 791 791 797 832 842 896 908 916 944 955 956 960 973 973 974 974 981 981 987 987 992 995 996 999 1002 1006 1010 1011 1014 1027 1028 1029 1030 1033 1034 1034 1056 1058 1058 1058 1071 1071 1074 1097 1166 1166 1194 1219 1302 1334 1387 1479 1539 1589 1619 1624 1693 1709 1814 1844 2058 2085 2301 2664 2700 2839 2949 2975 2999 3104 3168 3212 3213 3214 3214 3214 3216 3223 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 +54 9 9 27 67 67 67 67 125 127 157 168 172 172 230 231 241 244 312 312 347 362 373 413 441 442 498 558 558 558 584 613 613 637 667 721 741 785 785 880 896 896 919 981 1002 1018 1019 1027 1030 1034 1040 1058 1058 1068 1071 1074 1074 1085 1174 1228 1347 1542 2045 2421 2865 3159 3212 3220 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 +55 9 9 9 9 9 9 9 9 9 9 23 30 64 67 67 67 67 67 118 125 125 125 125 172 172 172 172 172 172 175 175 175 175 181 181 181 182 199 218 234 234 234 234 234 235 235 235 235 235 235 235 235 239 307 307 343 346 346 346 355 355 355 355 355 355 362 362 362 372 373 394 394 394 394 413 517 558 558 558 558 558 584 587 637 658 667 667 667 721 721 721 721 766 785 785 842 880 958 958 974 974 974 981 1018 1023 1023 1035 1035 1035 1037 1045 1052 1053 1054 1058 1059 1059 1060 1062 1066 1066 1067 1067 1071 1073 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1085 1089 1166 1334 1347 1389 1389 1462 1490 1619 2350 2421 2429 2527 2638 2796 2796 2865 3097 3134 3214 3223 3223 3223 3253 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 +56 7 9 9 21 30 32 32 36 64 67 67 67 67 67 67 67 67 67 67 67 67 67 67 125 125 125 125 125 125 125 125 129 129 129 161 172 172 172 172 172 172 172 175 175 175 175 175 175 181 181 181 181 181 181 181 181 190 219 234 234 234 234 234 234 239 328 346 346 355 373 373 412 558 558 558 558 558 558 558 558 584 584 658 658 721 721 721 721 721 721 721 722 880 880 1023 1037 1037 1040 1058 1058 1058 1059 1060 1060 1068 1074 1074 1074 1074 1074 1074 1074 1080 1082 1085 1086 1089 1097 1097 1097 1098 1217 1228 1334 1334 1401 1478 1479 1479 1492 2396 2562 2571 2796 2949 3149 3267 3280 3289 3295 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 +57 9 9 9 30 32 62 67 67 67 67 67 67 67 67 67 67 67 125 125 129 161 164 164 168 172 172 181 234 310 328 328 346 355 355 362 362 362 373 373 373 373 412 558 558 558 558 584 584 658 721 721 721 766 766 766 840 880 880 880 933 933 958 1060 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1074 1082 1085 1093 1097 1334 1334 1492 1732 2027 2041 3315 3315 3315 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3340 3341 +58 3 3 3 3 9 23 40 53 64 103 120 124 129 129 129 175 175 175 175 175 181 234 280 328 353 355 373 373 373 373 373 373 373 402 419 439 456 486 506 506 520 539 558 558 587 587 653 658 668 680 741 766 789 825 857 908 956 974 996 1023 1036 1036 1097 1134 1139 1142 1143 1156 1166 1178 1178 1181 1213 1217 1226 1234 1246 1271 1274 1334 1335 1479 1510 1604 1624 1704 1774 1958 2072 2315 2350 2421 2442 2554 2590 2742 2742 3097 3115 3173 3336 3338 3338 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3403 3404 3405 3406 3407 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 +59 22 30 30 40 53 63 67 67 67 83 85 99 124 124 124 127 127 134 168 172 175 175 181 197 244 245 286 291 308 308 314 315 315 338 347 355 362 367 394 413 540 558 572 597 643 667 667 667 680 725 766 829 884 887 896 906 908 911 912 919 922 981 984 1007 1058 1071 1097 1105 1107 1110 1112 1138 1140 1142 1145 1146 1146 1146 1158 1166 1168 1170 1170 1171 1172 1173 1181 1181 1181 1182 1182 1182 1184 1184 1185 1186 1194 1194 1219 1228 1245 1256 1262 1263 1264 1265 1269 1274 1278 1292 1324 1334 1334 1335 1335 1342 1363 1424 1426 1478 1486 1506 1506 1519 1574 1591 1600 1649 1770 1939 2043 2151 2208 2419 2442 2442 2545 2562 2575 2674 2715 2742 3092 3103 3173 3178 3307 3315 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3461 3462 3463 3464 3465 3466 3467 3468 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 +60 34 64 67 97 99 118 124 124 125 127 168 172 175 182 187 199 208 218 244 308 308 308 362 558 558 558 587 652 667 667 686 721 726 753 769 782 785 785 896 896 908 908 911 926 981 986 1018 1045 1056 1097 1110 1137 1140 1142 1142 1142 1145 1146 1146 1146 1146 1151 1152 1152 1152 1152 1166 1166 1166 1168 1180 1182 1188 1197 1208 1215 1225 1256 1256 1257 1284 1285 1286 1289 1290 1293 1294 1297 1298 1302 1302 1303 1305 1306 1308 1309 1311 1312 1315 1316 1317 1320 1321 1323 1324 1324 1325 1326 1327 1328 1329 1330 1334 1334 1335 1338 1339 1341 1343 1349 1350 1350 1351 1358 1359 1363 1401 1431 1432 1478 1486 1506 1591 1636 1762 1783 1934 1963 2070 2208 2419 2421 2701 2726 2772 2774 2796 2835 3166 3212 3213 3233 3336 3338 3441 3458 3485 3486 3487 3488 3489 3490 3491 3492 3493 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 +61 22 22 24 67 67 67 99 118 124 124 127 134 168 168 175 234 241 244 314 327 327 344 346 346 350 355 355 362 499 558 558 584 585 587 646 647 667 768 896 896 902 919 919 919 926 974 981 1019 1026 1045 1045 1056 1056 1110 1142 1142 1158 1158 1166 1197 1204 1230 1315 1319 1335 1335 1342 1343 1347 1368 1372 1375 1376 1380 1381 1390 1392 1394 1395 1398 1401 1402 1409 1413 1420 1421 1422 1424 1426 1432 1486 1487 1507 1508 1521 1575 1636 1783 2367 2426 2664 2674 2796 2828 2994 3097 3166 3315 3315 3336 3391 3447 3512 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 +62 22 30 32 65 67 67 85 86 98 170 175 246 248 327 355 362 362 558 643 643 643 652 667 667 667 702 906 919 922 930 958 1097 1097 1110 1136 1140 1152 1152 1173 1173 1174 1292 1292 1316 1343 1390 1396 1400 1419 1424 1433 1436 1437 1437 1438 1440 1442 1448 1452 1453 1454 1458 1463 1465 1467 1467 1477 1477 1478 1479 1485 1489 1493 1500 1506 2399 2674 2975 3253 3281 3355 3530 3531 3552 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 +63 32 32 67 122 126 172 172 175 175 234 235 257 286 307 314 355 362 362 373 412 412 558 558 558 558 585 585 643 721 857 1026 1059 1097 1136 1152 1229 1334 1396 1426 1489 1495 1497 1500 1501 1936 2421 2527 2608 2911 3028 3097 3336 3531 3531 3558 3569 3574 3582 3583 3584 3585 3586 3587 3588 3589 3589 3590 3591 3592 3593 3594 +64 13 45 61 122 124 196 208 237 394 395 404 404 430 453 458 470 471 476 476 600 679 741 748 783 809 1002 1010 1023 1153 1166 1217 1229 1510 1511 1517 1519 1520 1525 1535 1539 1539 1542 1542 1544 1544 1546 1547 1548 1549 1551 1552 1554 1555 1559 1560 1562 1562 1562 1566 1566 1572 1574 1576 1579 1580 1580 1586 1588 1589 1591 1593 1594 1595 1595 1597 1598 1601 1603 1604 1605 1607 1608 1610 1616 1617 1633 1638 1643 1649 1652 1658 1669 1685 1695 1700 1701 1728 1735 1759 1759 1780 1817 1907 1990 1997 2006 2040 2065 2109 2198 2326 2333 2333 2396 2424 2432 2502 2557 2557 2594 2674 2832 3028 3036 3066 3075 3106 3145 3166 3214 3218 3256 3342 3342 3389 3389 3462 3531 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 +65 5 32 34 52 53 98 124 131 143 157 182 182 196 196 206 210 218 235 238 305 350 370 384 384 387 397 404 413 427 446 457 465 465 486 496 504 506 533 540 585 600 620 621 634 634 658 711 725 726 728 777 795 822 825 922 922 940 1002 1146 1153 1229 1229 1322 1334 1334 1341 1341 1432 1517 1531 1535 1535 1544 1559 1561 1562 1566 1566 1566 1566 1571 1572 1577 1580 1601 1604 1614 1619 1621 1623 1629 1634 1637 1639 1640 1643 1649 1649 1650 1658 1662 1663 1669 1677 1680 1680 1683 1684 1686 1687 1688 1690 1691 1693 1693 1696 1698 1700 1702 1707 1708 1735 1757 1759 1760 1768 1770 1771 1852 1898 1904 1908 1919 1939 1952 2045 2072 2097 2141 2182 2208 2311 2350 2369 2429 2550 2664 2774 2823 3006 3062 3109 3186 3247 3256 3342 3614 3627 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 +66 22 23 30 32 34 36 61 129 129 161 164 175 187 218 234 252 267 286 299 307 327 344 398 436 456 457 457 471 477 477 481 620 621 643 718 726 728 759 763 785 791 791 793 797 850 901 913 1074 1124 1124 1146 1177 1189 1217 1229 1274 1334 1334 1334 1375 1478 1535 1549 1557 1566 1566 1566 1595 1629 1639 1649 1649 1654 1658 1661 1662 1675 1681 1693 1693 1698 1702 1711 1714 1716 1727 1727 1727 1728 1730 1732 1732 1736 1740 1742 1744 1757 1759 1759 1760 1762 1762 1762 1765 1768 1769 1780 1814 1816 1827 1837 1840 1840 1841 1901 1904 1907 1912 1921 1948 1952 1952 1989 2040 2065 2083 2166 2208 2250 2385 2674 2823 2823 3196 3342 3616 3657 3660 3663 3670 3685 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3739 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 +67 23 32 53 67 67 143 168 182 182 196 237 307 347 355 374 394 413 428 456 465 496 537 584 663 709 725 725 725 726 726 726 833 833 863 865 974 1026 1026 1074 1102 1215 1215 1229 1384 1387 1387 1478 1518 1540 1605 1621 1624 1624 1633 1654 1654 1658 1661 1682 1693 1716 1729 1755 1759 1798 1838 1844 1847 1850 1851 1852 1857 1859 1863 1882 1891 1893 1902 1903 1914 1922 1927 1928 1937 1938 1948 1953 1958 1958 2046 2088 2098 2172 2250 2288 2331 2350 2352 2352 2367 2378 2459 2557 2560 2574 2664 2835 3164 3166 3196 3233 3342 3579 3633 3656 3699 3735 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 +68 4 5 17 23 30 32 77 98 122 182 355 372 400 400 448 465 496 584 600 725 777 793 831 843 854 902 978 1002 1020 1146 1146 1217 1217 1367 1387 1432 1432 1465 1535 1549 1566 1583 1624 1633 1649 1654 1669 1716 1735 1755 1759 1783 1846 1851 1857 1859 1861 1865 1872 1872 1881 1881 1898 1901 1907 1908 1922 1925 1932 1939 1946 1948 1953 1954 1957 1959 1962 1962 1963 1964 1965 1968 1972 1974 1987 1988 1990 1991 1992 1995 1997 2008 2009 2010 2011 2013 2025 2028 2032 2034 2055 2061 2062 2072 2109 2141 2150 2209 2250 2250 2350 2433 2473 2545 2562 2564 2704 2726 2749 2828 2863 2890 2914 2949 3000 3075 3092 3133 3213 3282 3362 3389 3618 3720 3734 3735 3761 3762 3766 3780 3801 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 +69 8 23 27 30 74 81 121 126 129 173 187 192 241 347 394 396 419 426 438 446 496 587 596 643 647 696 720 726 726 763 783 785 791 869 903 962 965 978 1238 1341 1510 1527 1543 1546 1633 1633 1649 1650 1671 1673 1765 1788 1857 1859 1865 1870 1900 1912 1942 1948 1952 1953 1954 1990 2007 2011 2012 2019 2028 2028 2061 2064 2070 2071 2074 2077 2081 2082 2083 2109 2114 2136 2145 2146 2154 2161 2171 2172 2219 2250 2383 2396 2432 2535 2674 2828 2828 3135 3154 3342 3558 3665 3720 3735 3793 3818 3827 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 +70 40 62 67 98 127 129 173 175 234 245 398 429 429 458 496 514 539 585 585 620 643 726 781 785 789 793 793 793 979 1060 1153 1238 1334 1401 1478 1478 1490 1510 1535 1579 1675 1676 1730 1752 1814 1859 1870 1880 1904 1914 1958 1959 2006 2025 2037 2044 2067 2070 2081 2097 2098 2109 2111 2142 2181 2183 2195 2208 2233 2241 2243 2245 2249 2250 2261 2263 2265 2266 2268 2271 2272 2276 2333 2350 2353 2365 2374 2528 2616 2664 2683 2738 2817 2836 2890 3003 3047 3092 3106 3161 3207 3207 3500 3610 3611 3614 3618 3656 3720 3761 3780 3793 3832 3950 3950 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 +71 13 29 30 30 32 77 98 121 124 127 129 151 169 202 206 220 234 314 387 395 539 554 585 585 720 723 744 748 793 940 954 978 979 979 1002 1010 1023 1425 1539 1540 1549 1661 1661 1665 1675 1696 1715 1770 1772 1859 2025 2050 2097 2109 2141 2149 2194 2196 2227 2230 2230 2253 2303 2326 2334 2334 2342 2349 2350 2365 2366 2366 2367 2367 2367 2369 2396 2399 2411 2459 2492 2550 2583 2653 2776 2816 2863 2993 3028 3124 3217 3359 3389 3445 3610 3610 3656 3720 3725 3782 3881 3889 3937 3937 3973 4013 4035 4056 4064 4065 4066 4067 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4077 4078 4079 4080 4081 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 +72 21 23 23 27 32 48 53 77 129 129 143 169 172 188 196 234 235 235 291 392 397 429 429 471 486 580 615 620 726 726 777 785 790 791 791 793 810 843 1027 1146 1215 1334 1478 1539 1601 1682 1703 1715 1715 1730 1732 1749 1783 1860 1891 1912 1968 1968 1972 2044 2046 2072 2101 2134 2141 2141 2167 2171 2196 2198 2208 2227 2230 2235 2250 2253 2299 2299 2303 2308 2322 2327 2338 2352 2361 2365 2369 2373 2390 2391 2392 2396 2397 2398 2401 2404 2408 2411 2411 2424 2444 2545 2550 2564 2673 2817 2864 3115 3207 3256 3589 3618 3710 3720 3761 3889 3894 3915 3928 4029 4035 4082 4110 4150 4151 4152 4153 4154 4155 4156 4157 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 +73 7 18 23 30 32 61 103 103 118 124 169 196 218 235 286 307 314 370 394 423 428 444 456 572 572 660 707 709 726 726 793 793 863 865 978 1022 1029 1054 1124 1229 1229 1274 1334 1447 1478 1510 1539 1539 1545 1619 1740 1783 1891 1901 1914 1939 1939 1968 2018 2040 2046 2101 2281 2310 2352 2394 2409 2424 2429 2430 2432 2433 2434 2436 2450 2457 2459 2486 2492 2503 2537 2930 2984 3256 3269 3276 3510 3558 3614 4166 4190 4204 4204 4205 4206 4207 4208 4209 4210 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 +74 22 29 32 53 103 182 196 237 402 423 423 428 444 456 456 496 513 525 574 597 618 660 660 726 763 793 793 808 872 924 954 1074 1137 1146 1229 1249 1334 1447 1582 1608 1619 1649 1952 1954 1958 1964 1965 1967 2046 2046 2101 2387 2396 2397 2424 2429 2429 2430 2431 2432 2434 2435 2439 2450 2458 2474 2503 2508 2509 2531 2543 2555 2590 2618 2745 2853 2890 3445 3545 3928 4164 4212 4213 4214 4220 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 +75 13 18 22 22 23 30 32 32 32 34 36 67 103 106 168 196 218 219 220 234 237 247 252 252 307 444 465 470 520 539 765 791 793 872 896 919 924 929 954 978 1137 1146 1334 1334 1334 1334 1341 1341 1387 1478 1478 1517 1539 1640 1693 1912 1954 1992 2058 2141 2235 2350 2365 2383 2387 2442 2466 2467 2471 2474 2482 2483 2486 2490 2492 2495 2519 2526 2528 2528 2528 2529 2534 2536 2537 2539 2541 2545 2546 2549 2552 2553 2555 2556 2557 2557 2558 2560 2562 2586 2590 2597 2934 3089 3187 3209 3499 3531 3614 3618 3828 4026 4039 4177 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 +76 4 5 5 8 15 22 27 32 61 61 77 100 106 125 131 157 182 197 220 234 236 252 252 293 310 357 362 369 394 394 426 426 426 427 429 444 456 540 584 668 699 721 766 791 854 861 865 895 906 940 973 1074 1124 1146 1166 1217 1217 1217 1280 1349 1478 1478 1510 1516 1582 1618 1624 2028 2046 2387 2423 2424 2424 2433 2467 2470 2485 2488 2519 2530 2531 2534 2534 2536 2536 2539 2542 2549 2550 2557 2557 2562 2562 2566 2569 2574 2576 2577 2578 2581 2587 2588 2590 2590 2590 2594 2594 2595 2597 2598 2599 2600 2601 2654 2664 2766 2815 2865 2865 2907 2934 3006 3070 3099 3115 3149 3618 3801 4260 4281 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 +77 24 27 28 30 61 72 106 124 125 125 125 125 125 129 187 210 218 220 230 234 235 244 247 264 307 308 308 310 340 362 373 394 394 396 429 456 499 558 587 613 642 658 681 766 780 785 785 793 797 851 865 880 896 896 906 908 919 960 1002 1097 1097 1166 1194 1207 1267 1334 1334 1334 1334 1341 1341 1515 1601 1604 1624 1678 1687 1688 1700 1713 1844 1868 1952 2141 2182 2367 2385 2396 2422 2422 2424 2424 2424 2466 2467 2470 2484 2497 2517 2528 2534 2536 2541 2542 2566 2567 2568 2568 2569 2570 2571 2572 2572 2577 2578 2580 2581 2586 2589 2590 2590 2590 2593 2599 2599 2600 2664 2664 2741 2875 3066 3070 3159 3214 3256 3282 3289 3315 3315 3600 3889 3913 4292 4301 4305 4307 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 +78 27 129 155 196 221 231 303 307 394 396 397 476 496 556 584 613 650 658 680 720 720 880 908 908 908 940 954 962 1029 1060 1074 1097 1209 1215 1315 1334 1334 1462 1762 2141 2338 2424 2466 2470 2470 2517 2536 2572 2577 2578 2580 2590 2631 2673 2864 2865 2907 3090 3166 3207 3256 3338 3338 3829 4220 4227 4265 4265 4271 4298 4305 4305 4338 4338 4339 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 +79 9 9 21 21 21 23 23 32 36 45 47 63 67 67 67 67 67 67 67 67 67 67 68 70 71 74 84 85 86 87 88 90 91 97 98 99 100 103 103 113 130 157 161 170 175 175 175 175 182 190 196 197 199 208 213 213 235 235 343 357 394 420 429 558 558 766 769 791 791 848 880 906 922 958 978 1059 1146 1146 1173 1194 1215 1215 1215 1215 1282 1479 1479 1619 1814 1914 1958 2027 2141 2141 2259 2287 2287 2432 2465 2544 2650 2652 2655 2659 2661 2668 2669 2672 2673 2675 2677 2678 2681 2681 2683 2696 2696 2704 2713 2713 2717 2744 2748 2760 2761 2796 2803 2812 2849 2870 3020 3020 3315 3336 3336 3338 3638 3832 4279 4363 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4452 4453 +80 21 23 24 27 28 32 33 39 46 53 53 62 62 62 63 64 66 67 68 69 71 71 73 74 79 81 83 84 85 86 87 88 95 99 99 100 103 106 107 108 113 124 124 124 125 172 181 186 196 197 201 208 213 235 241 258 340 394 558 589 643 681 681 681 760 766 793 888 1023 1056 1057 1102 1153 1292 1373 1478 1478 1478 1478 1506 1510 1515 1527 1601 1636 1676 1844 2141 2287 2357 2496 2534 2571 2575 2653 2658 2665 2668 2669 2671 2672 2675 2677 2678 2688 2688 2696 2703 2707 2716 2731 2740 2744 2753 2760 2760 2763 2764 2766 2767 2776 2780 2796 2801 2807 2821 2843 2851 2852 2861 2886 2900 3150 3173 3217 3336 3338 3529 3614 3766 4323 4363 4398 4404 4410 4410 4417 4422 4432 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4473 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 +81 8 8 9 16 21 23 24 27 28 30 32 38 39 40 43 45 46 49 51 54 55 62 65 66 68 69 70 74 76 80 81 85 86 87 88 88 88 94 95 98 99 99 100 106 109 109 110 113 137 143 169 182 182 187 188 190 190 192 196 196 203 208 217 219 231 234 255 286 308 347 558 631 766 902 902 1123 1244 1334 1387 1450 1992 2046 2209 2238 2426 2651 2674 2678 2713 2713 2713 2735 2738 2748 2757 2760 2760 2763 2800 2801 2807 2808 2853 2855 2861 2886 2900 3207 3256 3624 3713 4216 4363 4405 4410 4484 4484 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 +82 9 24 27 37 39 40 45 46 64 64 67 67 68 68 69 69 79 79 81 85 87 95 109 113 115 117 122 124 127 135 135 139 142 143 145 157 159 161 168 181 188 188 191 192 196 197 208 208 211 213 219 239 241 247 256 257 258 307 310 343 558 587 643 760 896 960 1019 1023 1074 1197 1207 1292 1401 1403 1587 2151 2419 2571 2623 2654 2664 2674 2674 2674 2777 2780 2796 2808 2835 2844 2844 2851 2855 2862 2900 3036 3143 3238 3238 3315 3531 3531 3766 3803 4296 4405 4462 4502 4506 4509 4509 4516 4523 4533 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 diff --git a/Matlab/Tests/README.txt b/Matlab/Tests/README.txt new file mode 100644 index 00000000..e1aed9ed --- /dev/null +++ b/Matlab/Tests/README.txt @@ -0,0 +1 @@ +This directory contains the same tests than the ones used in the c++ library corelib. \ No newline at end of file diff --git a/Matlab/Tests/TestAdjustLikelihood.m b/Matlab/Tests/TestAdjustLikelihood.m new file mode 100644 index 00000000..50a07fed --- /dev/null +++ b/Matlab/Tests/TestAdjustLikelihood.m @@ -0,0 +1,10 @@ +close all +clear all + +% Test AvpdCore::BayesFilter::adjustLikelihood() +likelihood = [0 0 0 0]; +adjustLikelihoodResult1 = adjustLikelihood(likelihood) +likelihood = [0.3 0.4 0.2 0.9]; +theMean = mean(likelihood) +theSdtDev = std(likelihood) +adjustLikelihoodResult2 = floor(adjustLikelihood(likelihood)*1000) \ No newline at end of file diff --git a/Matlab/Tests/TestBayesFilter.m b/Matlab/Tests/TestBayesFilter.m new file mode 100644 index 00000000..10a8fe58 --- /dev/null +++ b/Matlab/Tests/TestBayesFilter.m @@ -0,0 +1,35 @@ +close all +clear all + +% Test AvpdCore::BayesFilter::computePosterior() +prior = 1; +predictionNP = 0.9; +predictionLC = [0 0.22 0.19 0.25 0.04 0.1 0.02 0.04 0.01 0.01]; +likelihood = []; +nIter = 10; + +computePosteriorResult = zeros(nIter); +for i=1:nIter + likelihood = [likelihood; 1]; + prediction = generatePrediction(predictionNP, predictionLC, length(likelihood)-1) + if i==1 + prior = 1; + %elseif i>2 + % prior = [prior;prior(end)]; %use the same probability as the previous neighbor + else + prior = [prior;0]; + end + prior = likelihood .* (prediction' * prior); + prior = prior/sum(prior); %Normalize + computePosteriorResult(1:length(prior),i) = prior; +end + +%Adjust results (don't use float to compare) +computePosteriorResult = floor(computePosteriorResult*1000)'; +disp('computePosteriorResult='); +disp(computePosteriorResult); +r = sum(sum((computePosteriorResult - [1000,0,0,0,0,0,0,0,0,0;900,99,0,0,0,0,0,0,0,0;810,113,75,0,0,0,0,0,0,0;729,109,96,64,0,0,0,0,0,0;656,100,98,87,56,0,0,0,0,0;590,93,95,93,78,49,0,0,0,0;531,86,90,92,85,69,42,0,0,0;478,80,86,90,86,77,62,37,0,0;430,75,81,87,86,80,70,55,33,0;387,69,77,83,84,80,73,63,49,29;]) ~= 0)); +if r ~= 0 + error('computePosteriorResult is not valid!') +end + diff --git a/Matlab/Tests/TestComputeLikelihood.m b/Matlab/Tests/TestComputeLikelihood.m new file mode 100644 index 00000000..7c36a141 --- /dev/null +++ b/Matlab/Tests/TestComputeLikelihood.m @@ -0,0 +1,28 @@ +close all +clear all + +% Test AvpdCore::KeypointMemory::getLikelihood() + +% load data +memory = dlmread('090306-3_db-Signatures.txt', ' ', 1, 0); +dictionary = dlmread('090306-3_db-Dictionary.txt', ' ', 1, 0); + +%update the virtual place because the one included alredy in the memory is +%not updated with the last signature +[memory(1,:) dictionary] = updateCommonSignature(memory, dictionary); + +sign = memory(end,:); +r = sum(sum((sign - [82,9,24,27,37,39,40,45,46,64,64,67,67,68,68,69,69,79,79,81,85,87,95,109,113,115,117,122,124,127,135,135,139,142,143,145,157,159,161,168,181,188,188,191,192,196,197,208,208,211,213,219,239,241,247,256,257,258,307,310,343,558,587,643,760,896,960,1019,1023,1074,1197,1207,1292,1401,1403,1587,2151,2419,2571,2623,2654,2664,2674,2674,2674,2777,2780,2796,2808,2835,2844,2844,2851,2855,2862,2900,3036,3143,3238,3238,3315,3531,3531,3766,3803,4296,4405,4462,4502,4506,4509,4509,4516,4523,4533,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;]) ~= 0)); +if r ~= 0 + error('sign is not valid!') +end + +likelihood = computeLikelihood(sign, memory, dictionary); +plot(likelihood) +likelihood = floor(likelihood*1000) +likelihood = likelihood'; + +r = sum(sum((likelihood - [109,157,263,203,87,66,78,49,60,40,47,43,43,55,102,102,147,0,38,61,64,74,69,103,39,20,44,33,14,14,20,12,18,8,59,19,41,26,45,117,124,173,223,74,0,10,17,53,33,24,33,43,52,68,119,124,146,159,28,68,59,115,71,95,37,18,16,49,9,28,20,9,15,11,10,35,45,73,18,92,167,219,1222;]) ~= 0)); +if r ~= 0 + error('likelihood is not valid!') +end diff --git a/Matlab/Tests/TestUpdateCommonSignature.m b/Matlab/Tests/TestUpdateCommonSignature.m new file mode 100644 index 00000000..8fb9d2f2 --- /dev/null +++ b/Matlab/Tests/TestUpdateCommonSignature.m @@ -0,0 +1,27 @@ +close all +clear all + +% Test AvpdCore::KeypointMemory::updateCommonSignature() + +% load data +memory = dlmread('090306-3_db-Signatures.txt', ' ', 1, 0); +dictionary = dlmread('090306-3_db-Dictionary.txt', ' ', 1, 0); + +[virtualPlace dictionary] = updateCommonSignature(memory, dictionary); + +%just sorting words, putting the zeros at the end +indexZero = find(virtualPlace == 0,1); +if isempty(indexZero) + indexZero = length(virtualPlace); +elseif indexZero>1 + indexZero = indexZero-1; +end +virtualPlace(2:indexZero) = sort(virtualPlace(2:indexZero)); +commonWords = virtualPlace(2:indexZero) +disp('Total common words:') +disp(length(commonWords)) + +r = sum(sum((commonWords - [5,8,9,21,22,23,27,30,32,34,36,40,45,53,61,62,64,67,68,77,85,86,97,98,99,100,103,106,122,124,125,127,129,131,143,157,161,164,168,169,172,175,181,182,187,196,197,208,210,217,218,219,220,234,235,237,244,252,286,307,308,310,315,327,328,346,347,350,355,362,372,373,387,393,394,398,404,412,423,428,429,441,442,456,465,470,476,495,496,498,506,520,558,572,584,585,587,596,620,634,637,643,646,647,658,667,668,681,709,721,726,741,766,777,785,790,791,793,808,809,880,896,906,908,919,933,940,954,958,974,981,1002,1023,1026,1058,1060,1071,1074,1097,1146,1152,1166,1215,1217,1229,1334,1341,1387,1478,1510,1539,1549,1566,1601,1624,1649,1693,1814,2046,2141,2424,2442,2674;]) ~= 0)); +if r ~= 0 + error('commonWords is not valid!') +end diff --git a/Matlab/adjustLikelihood.m b/Matlab/adjustLikelihood.m new file mode 100644 index 00000000..6755054b --- /dev/null +++ b/Matlab/adjustLikelihood.m @@ -0,0 +1,17 @@ +function LN = adjustLikelihood(L) +%ADJUSTLIKELIHOOD Adjust the likelihood with std dev and mean. +% LN = adjustLikelihood(L) +% +% L the likelihood (m,1) +% LN the likelihood normalized (m,1) + +m = mean(L); % Calcul mean +s = std(L); % Calcul std dev +LN = zeros(size(L)); +for i=1:length(L) + if L(i) > m + s + LN(i) = (L(i)-s)/m; + else + LN(i) = 1; + end +end \ No newline at end of file diff --git a/Matlab/computeLikelihood.m b/Matlab/computeLikelihood.m new file mode 100644 index 00000000..5a98a38d --- /dev/null +++ b/Matlab/computeLikelihood.m @@ -0,0 +1,46 @@ +function likelihood = computeLikelihood(sign, memory, dictionary) +%GETLIKELIHOOD Compute the likelihood of the signature sign. +% likelihood = getLikelihood(sign, memory, dictionary) +% +% Mem : the memory (Mem = [signId1 WordRefIds...; signId2 WordRefIds...; ...]) +% Dict : the visual words dictionary (Dict = [wordId1 SignRefIds...; +% wordId2 SignRefIds...; ...]) +% sign : The signature reference which we want the likelihood with all +% others in the memory (sign = [id wordsRef...]) +likelihood = zeros(size(memory,1),1); + +nwi = 0; % nwi is the number of a specific word referenced by a place +ni = 0; % ni is the total of words referenced by a place +nw = 0; % nw is the number of places referenced by a specific word +N = 0; % N is the total number of places + +N = size(memory,1); + +words = unique(sign(2:end)); + +for i=1:length(words) + if words(i) ~= 0 + % "Inverted index" - For each places referenced by the word + refs = unique(dictionary(find(dictionary(:,1) == words(i),1), 2:end)); + refs = refs(refs~=0); + nw = 0; + for j=1:length(refs) + nw = nw + 1; + end + logNnw = log10(N/nw); % TODO : division by 0 (not supposed to occur) + + if logNnw ~= 0 + for j=1:length(refs) + pos = find(memory(:,1) == refs(j),1); + sign = memory(pos, :); + + nwi = sum(sign(2:end) == words(i)); + ni = sum(sign(2:end)>0); + + if ni ~= 0 + likelihood(pos) = likelihood(pos) + ( nwi * logNnw ) / ni; + end + end + end + end +end \ No newline at end of file diff --git a/Matlab/generatePrediction.m b/Matlab/generatePrediction.m new file mode 100644 index 00000000..4663b79f --- /dev/null +++ b/Matlab/generatePrediction.m @@ -0,0 +1,85 @@ +function P = generatePrediction(NewPlacePrediction, LoopClosurePrediction, m) +% GENERATEPREDICTION Generate a prediction matrix P(m+1,m+1) for the Bayes +% filter +% P = generatePrediction(NewPlacePrediction, LoopClosurePrediction, m) +% +% P(1,:) is the prediction for the "no loop closure event" using the +% NoLoopClosurePrediction. NewPlacePrediction is a number between 0 +% and 1. +% +% P(2:end, :) is the predictions for each m "loop closure event" using the +% LoopClosurePrediction pattern. Format LoopClosurePrediction: +% [virtualPlace LoopCLosure neighbor-1 neighbor+1 neighbor-2 +% neighbor+2...] +% +% Example: +% predictionLC = [0.1 0.19 0.24 0.24 0.1 0.1 0.01 0.01]; +% virtualPlacePrior = 0.8; +% m = 10; %We have 10 places +% P = generatePrediction(virtualPlacePrior, predictionLC, m); +P = zeros(m+1,m+1); +if NewPlacePrediction<0 || NewPlacePrediction>1 + error(['NoLoopClosurePrediction=' num2str(NewPlacePrediction) ' > 1 or < 0!']); +end +if sum(LoopClosurePrediction) > 1 + error(['sum(LoopClosurePrediction)=' num2str(sum(LoopClosurePrediction)) ' > 1 or < 0!']); +elseif(sum(LoopClosurePrediction) == 1) + warning(['sum(LoopClosurePrediction)=' num2str(sum(LoopClosurePrediction)) ' == 1, all probabilities will be zero for non-neighbors']); +end +P(1,:) = [NewPlacePrediction ones(1,m)*(1-NewPlacePrediction)/(m)]; +predictionLC = LoopClosurePrediction; +for i=2:m+1 + y = zeros(1,m+1); + + loopClosureId = i; + + % The first must be the virtual place + y(1) = predictionLC(1); + + % Set all others to a small value + y(2:length(y)) = (1-sum(predictionLC))/m; + + % Set high values (gaussians curves) to loop closure neighbors + probAdded = 0; + % LoopID + y(i) = y(i) + predictionLC(2); %0.175 + probAdded = probAdded + predictionLC(2); + + % look up backward for each neighbors + n = loopClosureId; + for k=3:2:length(predictionLC) + n = n-1; + if n > 1 + y(n) = y(n) + predictionLC(k); + probAdded = probAdded + predictionLC(k); + else + break; + end + end + + % look up forward for each neighbors + n = loopClosureId; + for k=4:2:length(predictionLC) + n = n+1; + if n <= length(y) + y(n) = y(n) + predictionLC(k); + probAdded = probAdded + predictionLC(k); + else + break; + end + end + + % add values not set (they are forgotten) to the loop id + totalLCProb = sum(predictionLC(2:length(predictionLC))); + if(probAdded >= 0 && probAdded < totalLCProb) + y(i) = y(i) + totalLCProb - probAdded; + elseif(probAdded > totalLCProb+0.001) + error(['probAdded=' num2str(probAdded) ' > ' num2str(totalLCProb) ' ?']); + end + + P(i,:) = y; + sum(P(i,:)); + if sum(P(i,:)) < 1-0.001 || sum(P(i,:)) > 1+0.001 + error(['sum of the resulting pdf is not one (' num2str(sum(P(i,:))) ')!']); + end +end \ No newline at end of file diff --git a/Matlab/updateCommonSignature.m b/Matlab/updateCommonSignature.m new file mode 100644 index 00000000..3068c9dc --- /dev/null +++ b/Matlab/updateCommonSignature.m @@ -0,0 +1,69 @@ +function [CS DU] = updateCommonSignature(Mem, Dict) +%UPDATECOMMONSIGNATURE Update the common signature (virtual place) +% [CS DU] = updateCommonSignature(Mem, Dict) +% +% CS = common signature +% DU dictionary updated +% Mem : the memory (Mem = [signId1 WordRefIds...; signId2 WordRefIds...; ...]) +% Dict : the visual words dictionary (Dict = [wordId1 SignRefIds...; wordId2 SignRefIds...; ...]) + +CS = Mem(1,:); +CSid = Mem(1,1); + +% Clear references to the virtual place +for i=2:length(CS) + index = find(Dict(:,1) == CS(i)); + if isempty(index) ~= 1 + indexes = find(Dict(index, :) == CSid); + for j=1:length(indexes) + Dict(index,indexes(j)) = 0; + end + end +end +%clear words in the common signature +CS = CS(1); + +%How many words we want... take the average of words by signature +nbCommonWords = 0; +memSize = size(Mem,1)-1; %Don't count the virtual place +if(memSize > 0) + totalActiveRef = sum(sum(Dict(:,2:end) ~= 0)); + nbCommonWords = floor(totalActiveRef / memSize); +end +if nbCommonWords>0 + %get common words + list = [(sum(Dict(:,2:end)' ~= 0)') Dict(:,1)]; + list = sortrows(list) + wordsAdded=0; + for i=size(list,1):-1:1 + if i ~= size(list,1) && length(CS)>1 + ratio = floor(list(i+1,1)/list(i,1)); + len = length(CS); + for j=2:ratio + for k=2:len + CS = [CS CS(k)]; + wordsAdded = wordsAdded + 1; + if wordsAdded >= nbCommonWords + break; + end + end + if wordsAdded >= nbCommonWords + break; + end + end + end + + if wordsAdded < nbCommonWords + CS = [CS list(i,2)]; + wordsAdded = wordsAdded + 1; + end + if wordsAdded >= nbCommonWords + break; + end + end + CS = [CS zeros(1,size(Mem,2) - length(CS))]; + % add references + DU = updateDictionary(Dict, CS); +else + DU = Dict; +end \ No newline at end of file diff --git a/Matlab/updateDictionary.m b/Matlab/updateDictionary.m new file mode 100644 index 00000000..c64459a5 --- /dev/null +++ b/Matlab/updateDictionary.m @@ -0,0 +1,29 @@ +function DU = updateDictionary(Dict, Sign) +%UPDATEDICTIONARY Update the dictionary with the new signature (place) +% DU = updateDictionary(Dict, Sign) +% +% DU = dictionary updated +% dictionary = [wordId1 SignRefIds...; wordId2 SignRefIds...; ...] +% sign = [signId WordRefIds...] + +signId = Sign(1); +Sign = Sign(Sign~=0); +for i=2:length(Sign) + indexWord = []; + if isempty(Dict) ~= 1 + indexWord = find(Dict(:,1) == Sign(i),1); + end + if isempty(indexWord) == 1 + Dict(size(Dict,1)+1,1) = Sign(i); %Word id + Dict(size(Dict,1),2) = signId; %Signature id ref + else + ii = 1:length(Dict(indexWord,1:end)); + indexesZero = ii(Dict(indexWord,1:end) == 0); + if isempty(indexesZero) + Dict(indexWord, size(Dict,2)+1) = signId; + else + Dict(indexWord, indexesZero(1)) = signId; + end + end +end +DU = Dict; \ No newline at end of file diff --git a/README b/README new file mode 100644 index 00000000..630668a9 --- /dev/null +++ b/README @@ -0,0 +1,116 @@ ++--------------------------------------------------- ++ Contents ++--------------------------------------------------- + - Requirements + - Building from source + - Building with Eclipse + - Issues + - Notes + - Packaging + - Source packaging + - Uninstall + ++--------------------------------------------------- ++ Requirements ++--------------------------------------------------- + - CMake + - OpenCV + - UtiLite library (http://code.google.com/p/utilite/) + - sqlite3 (only for Unix, the win32 binaries are already added to this project) + - MinGW (only for Windows) + + Optionals : + - [Highly recommended!] Qt4 open source Unix or MinGW (for Windows) to build the GUI + - cppunit (only for Unix, the win32 binaries are already added to this project) + +Note : For Windows users, don't forget to modify the PATH environnement variable. + ++--------------------------------------------------- ++ Building from source ++--------------------------------------------------- + [Unix] + > cd build + > cmake .. + > make + > sudo make install + + [Win32] + > cd build + > cmake -G "MinGW Makefiles" .. + > mingw32-make + > mingw32-make install + +Note : Output destination is in {project_root}/bin and {project_root}/lib of this project. + ++--------------------------------------------------- ++ Building with Eclipse with CDT (c/c++ plugin) ++--------------------------------------------------- + 1- Eclipse -> Import existing project -> select this directory + 2- Eclipse -> Make targets -> Avpd -> execute CMake-Unix-Release (CMake-MinGW-Release on Windows) + 3- Eclipse -> Project -> Build All + + - The AutoCompletion should already works... (Project->Properties->C/C++Build->Discovery options) + ++--------------------------------------------------- ++ Issues ++--------------------------------------------------- + - Webcam issue (Linux): + > sudo addgroup UserName video + reboot! + or + > sudo chmod 666 /dev/video0 + + - Video can't be initiated (*.avi) by OpenCV (Linux) : + Make sure that OpenCV is builded with ffmpeg (ROS binary "turtleBox" openCV package doesn't build with it?!) + ++--------------------------------------------------- ++ Notes ++--------------------------------------------------- +Memory leaks check (Linux): + >valgrind --tool=memcheck --leak-check=yes ./testCoreLib + There are some memory errors with vfprintf() or write(), but the more important is at the end of the report in the summary "LEAK SUMMARY". + ++--------------------------------------------------- ++ Packaging ++--------------------------------------------------- +MacOSX (DragNDrop) : + > cd build + > cmake -DCMAKE_INSTALL_PREFIX="/" -DBUILD_AS_BUNDLE=ON .. + > make -j4 + > make package + +MacOSX (.tar.bz2) : + > cd build + > cmake -DBUILD_AS_BUNDLE=OFF .. + > make -j4 + > make package + +Ubuntu (.deb, .tar.bz2) : + > cd build + > cmake .. + > make -j4 + > make package + +Windows (nsis-exe, zip) : + (Using Visual Studio Command Prompt to be able to use 'dumpbin') + > cd build + > cmake -G"MinGW Makefiles" .. + > mingw32-make -j4 + > mingw32-make package + ++--------------------------------------------------- ++ Source packaging ++--------------------------------------------------- +UNIX > make package_source +WIN32 > mingw32-make package_source + ++--------------------------------------------------- ++ Uninstall ++--------------------------------------------------- +A target is provided when building from source : + UNIX > make uninstall + WIN32 > mingw32-make uninstall + +Other files : + Configuration file : {Home_folder}/.rtabmap + Working directory : {Home_folder}/Documents/RTAB-Map \ No newline at end of file diff --git a/Version.h.in b/Version.h.in new file mode 100644 index 00000000..a3a62474 --- /dev/null +++ b/Version.h.in @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2010-2011, Mathieu Labbe and IntRoLab - Universite de Sherbrooke + * + * This file is part of RTAB-Map. + * + * RTAB-Map is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RTAB-Map is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RTAB-Map. If not, see . + */ + +#ifndef VERSION_H_ +#define VERSION_H_ + +// This is auto-generated! +#define RTABMAP_VERSION "@PROJECT_VERSION@"; + +#define RTABMAP_VERSION_MAJOR @PROJECT_VERSION_MAJOR@; +#define RTABMAP_VERSION_MINOR @PROJECT_VERSION_MINOR@; +#define RTABMAP_VERSION_PATCH @PROJECT_VERSION_PATCH@; + +#define RTABMAP_VERSION_COMPARE(major, minor, patch) major>=@PROJECT_VERSION_MAJOR@ && minor>=@PROJECT_VERSION_MINOR@ && patch >=@PROJECT_VERSION_PATCH@ + +#endif /* VERSION_H_ */ + diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt new file mode 100644 index 00000000..1d6f03b4 --- /dev/null +++ b/app/CMakeLists.txt @@ -0,0 +1 @@ +ADD_SUBDIRECTORY( src ) \ No newline at end of file diff --git a/app/src/CMakeLists.txt b/app/src/CMakeLists.txt new file mode 100644 index 00000000..96137132 --- /dev/null +++ b/app/src/CMakeLists.txt @@ -0,0 +1,130 @@ + +### Qt Gui stuff ### +SET(headers_ui + ./ObjDeletionHandler.h +) + +#This will generate moc_* for Qt +QT4_WRAP_CPP(moc_srcs ${headers_ui}) + +SET(SRC_FILES + main.cpp + ${moc_srcs} +) + +SET(INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR} + ${UTILITE_INCLUDE_DIR} + ${OpenCV_INCLUDE_DIRS} +) + +INCLUDE(${QT_USE_FILE}) + +SET(LIBRARIES + ${UTILITE_LIBRARY} + ${QT_LIBRARIES} + ${OpenCV_LIBS} +) + +# Make sure the compiler can find include files from our library. +INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) + +# For Apple set the icns file containing icons +IF(APPLE AND BUILD_AS_BUNDLE) + # set how it shows up in the Info.plist file + SET(MACOSX_BUNDLE_ICON_FILE ${PROJECT_NAME}.icns) + # set where in the bundle to put the icns file + SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + # include the icns file in the target + SET(SRC_FILES ${SRC_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.icns) +ENDIF(APPLE AND BUILD_AS_BUNDLE) + +# Add exe icon resource +IF(WIN32) + IF( MINGW ) + # resource compilation for MinGW + ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/AppIco.o + COMMAND windres.exe -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.rc + -o ${CMAKE_CURRENT_BINARY_DIR}/AppIco.o ) + SET(SRC_FILES ${SRC_FILES} ${CMAKE_CURRENT_BINARY_DIR}/AppIco.o) + ELSE( MINGW ) + SET(SRC_FILES ${SRC_FILES} ${PROJECT_NAME}.rc) + ENDIF( MINGW ) +ENDIF(WIN32) + +# Add binary +IF(APPLE AND BUILD_AS_BUNDLE) + ADD_EXECUTABLE(main_app MACOSX_BUNDLE ${SRC_FILES}) +ELSE() + ADD_EXECUTABLE(main_app WIN32 ${SRC_FILES}) +ENDIF() +TARGET_LINK_LIBRARIES(main_app corelib guilib ${LIBRARIES}) + +IF(APPLE AND BUILD_AS_BUNDLE) + SET_TARGET_PROPERTIES(main_app PROPERTIES + OUTPUT_NAME ${CMAKE_BUNDLE_NAME}) +ELSEIF(WIN32) + SET_TARGET_PROPERTIES(main_app PROPERTIES + OUTPUT_NAME ${PROJECT_NAME}) +ELSE() + SET_TARGET_PROPERTIES(main_app PROPERTIES + OUTPUT_NAME ${PROJECT_PREFIX}) +ENDIF() + +#--------------------------- +# Installation stuff +#--------------------------- +INSTALL(TARGETS main_app + RUNTIME DESTINATION bin COMPONENT runtime + BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) + +IF(APPLE AND BUILD_AS_BUNDLE) +INSTALL(CODE "execute_process(COMMAND ln -s \"../MacOS/${CMAKE_BUNDLE_NAME}\" ${PROJECT_NAME} + WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin)") +ENDIF(APPLE AND BUILD_AS_BUNDLE) + +SET(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}") +IF((APPLE AND BUILD_AS_BUNDLE) OR WIN32) + SET(plugin_dest_dir bin) + SET(qtconf_dest_dir bin) + IF(APPLE) + SET(plugin_dest_dir MacOS) + SET(qtconf_dest_dir Resources) + SET(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/MacOS/${CMAKE_BUNDLE_NAME}") + ENDIF(APPLE) + + # Install needed Qt plugins by copying directories from the qt installation + # One can cull what gets copied by using 'REGEX "..." EXCLUDE' + # Exclude debug libraries + INSTALL(DIRECTORY "${QT_PLUGINS_DIR}/imageformats" + DESTINATION ${plugin_dest_dir}/plugins + COMPONENT runtime + REGEX ".*d4.dll" EXCLUDE + REGEX ".*d4.a" EXCLUDE) + + # install a qt.conf file + # this inserts some cmake code into the install script to write the file + SET(QT_CONF_FILE [Paths]\nPlugins=plugins) + IF(APPLE) + SET(QT_CONF_FILE [Paths]\nPlugins=MacOS/plugins) + ENDIF(APPLE) + INSTALL(CODE " + file(WRITE \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"${QT_CONF_FILE}\") + " COMPONENT runtime) + + # directories to look for dependencies + SET(DIRS ${QT_LIBRARY_DIRS} ${PROJECT_SOURCE_DIR}/bin) + + # Now the work of copying dependencies into the bundle/package + # The quotes are escaped and variables to use at install time have their $ escaped + # An alternative is the do a configure_file() on a script and use install(SCRIPT ...). + # Note that the image plugins depend on QtSvg and QtXml, and it got those copied + # over. + # To find dependencies, cmake use "otool" on Apple and "dumpbin" on Windows (make sure you have one of them). + install(CODE " + file(GLOB_RECURSE QTPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") + include(\"BundleUtilities\") + fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") + " COMPONENT runtime) +ENDIF((APPLE AND BUILD_AS_BUNDLE) OR WIN32) + diff --git a/app/src/ObjDeletionHandler.h b/app/src/ObjDeletionHandler.h new file mode 100644 index 00000000..c49b8b8f --- /dev/null +++ b/app/src/ObjDeletionHandler.h @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2010-2011, Mathieu Labbe and IntRoLab - Universite de Sherbrooke + * + * This file is part of RTAB-Map. + * + * RTAB-Map is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RTAB-Map is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RTAB-Map. If not, see . + */ + +#ifndef OBJDELETIONHANDLER_H_ +#define OBJDELETIONHANDLER_H_ + +#include "utilite/UEventsHandler.h" +#include "utilite/UEvent.h" +#include + +class ObjDeletionHandler : public QObject, public UEventsHandler +{ + Q_OBJECT + +public: + ObjDeletionHandler(int watchedId, QObject * receiver = 0, const char * member = 0) : _watchedId(watchedId) + { + if(receiver && member) + { + connect(this, SIGNAL(objDeletionEventReceived(int)), receiver, member); + } + } + virtual ~ObjDeletionHandler() {} + +signals: + void objDeletionEventReceived(int); + +protected: + virtual void handleEvent(UEvent * event) + { + if(event->getClassName().compare("ObjDeletedEvent") == 0 && + event->getCode() == _watchedId) + { + emit objDeletionEventReceived(_watchedId); + } + } +private: + int _watchedId; +}; + +#endif /* OBJDELETIONHANDLER_H_ */ diff --git a/app/src/RTAB-Map.icns b/app/src/RTAB-Map.icns new file mode 100644 index 0000000000000000000000000000000000000000..8747cc5ebe381b4d5b8b14bcb25139d7ad20940b GIT binary patch literal 103056 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

S0xe1X`C>WWf=-&_@ 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 ZB&j4dPewqqw^;#cr7eH-vME$6{~wyT4}|~# literal 0 HcmV?d00001 diff --git a/app/src/RTAB-Map.ico b/app/src/RTAB-Map.ico new file mode 100644 index 0000000000000000000000000000000000000000..eb277e91a41648cb19413b9efd5e574a0c9fdbff GIT binary patch literal 53112 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

  • @d0WGzpWAInOeA@~h3A*@Xzo3w zsCDl09KBbSPsumYhJWk5&h`7X7~fK0|99Xw)43rb(){d$lhW~wtd|ws10r#VQz&9$ zeDHBHU;01iPnS)7{SFQ7rzQ7w8-*fWUR&tkUh{rYJ!NHg4&Sw>-KnH`-N%g*Ns*w30o?Qs5X4co|c=LDbS zhtsOt@(Vq8nXECpqm9ch3f}!!=6jKd3GRWoOg#I~e}gwuC;0VaA5Tkd$DNcXpC@E* z2+Q`IyFBZ{+qV2eV$+GgLIE6Q#?AR-Hj_IEM`UC_!!tJ1)_)@m4zg_b2`=mh)%6{g z;YvZ>ly#9M3B`go?PJN7y*rUt+{fCDnP{J0Bj7X35R?11R$WtjG|KQrzZfY$pwJ4* zxYOCPiur45sjy=&-|vwB(+|Qahtitj3tHOnpSCoJtl`A=j4kb{kU!ed*pxic*&_ZY{cCt=^sk>nc~0(_Pao+(kP$ zmUyN_O`h#f9ZIU8MvckA`ZEr3YXCR!(*b@3h%c=>(5+RH`$51+^p9)V9+R%Kb1GXp z;!mOeeXo{?Qma1k-rY1bn?rkJKx3tE_Ez`f9A^4v4v!T~yb2Z&dqyyvc< zo;QoAdvEzvNK`pxGx7nYs+tCF$G~wbK>V6>0Wxo&4J-q8pxvBfJGwq#r$7GC5qA=& z@wiU3JEuyNUi*pv)FnZ4r0Y>lLrdY%?SdR8e-aK)%dS*WQ}YAQUebBUeJg)|F@I79 z*rc*6_|)GQ-?5hlm9j^>KV_R*+-GZO-a2cV@de z{k*yqed55+&=*HfoWH_ZdMqGiK-;RvH-8d*M*wZ!1C^Zp1Nbim=UhNQm*ZRbb8_ni zo_P(z1FzeTS7dI3{;-`NLAosFc1{XmDfbeYb0IpsJ>hx{%8&^D`_GmBneyO$n$%p3*gyWDG}pnyTe9Yr=FPmH;Im5k z^t0-hG;gMix|&;$V>egOe=G-oO@Q=?ZOTD(fqysf8VZaCW&m4(2nntfgt22TEoN^$ zu#`P{c8I>cbNZIkm#Uez=s}g540-_(-z7~{KI68I~XAEG0M(${QU#h^BN>J81J0_ytf0 z$oh6Ap8suZWq&6i@>F?BMT?MWgAo>PJ9{f+l-JD9j^ke{%b(k0qcjBoUN=ty?N?cd^1?*)6(3)}g^XdeF?nfXrG13YH{k2>Nj9rtfsrJj@b z>kst(-*D_qUhwP%_yfhjXWxeuzc%v##WBdOy4Y+>?I0GkvBB0IumBEq8 zU4Zy9APJZT{MYNdGi3&M(zc9&2>=&}2DkWDoPgv4WPWG^^aj2-PISiR|A#bO)_A6kDYnWDyH4EU|`{_Rf?FByQZi3p1Vd)#3K4FS^QRs15w~XX0e1%t1Rk?d%~NnG$Cu{xUJRBYpk`ale2p3;K z&S?z-tbi|_)56#ZUod3?xOD=~NF!OVAxwNMy#YhO1+WFkJfkPjsqX;kXC|t7$sQkQgVt;oBIcm5}-pXF-GpsC9iIQ1n)4w)Qk1 z`&h43GhGDX<4Yd&bdIr*6Dq5Kluqtp2a_n0?TP7!yX zG3?8#&YnM$`2C4(Cd}?ui^g3PiabtNHXBb{gL4j?IpBZ~>EAD;>x#1-3$2$QE~0G{ zDQ%xegm&Tue|1s&e5|`Zl}vLncPWubof8j95u}au+e6nOV=w2gBXwb)<&r=#*C{eJ)-w83qZu6`ui!&cnes%q;gx*e|^KkhpxScGmr_*|+w(zW1oU|qN zgZ(OH)WK^h`?8!74xaivehdBn^_vAPDq}qD=sG3RVo`*;=lO;jTCXSm&c3Rykq>N2 z{9Fk4G@ZNo0-c6PYyZC&(Rw~(Uq*HA!Wrb7qwVWe*49zFdX7xpM2GqOonz1rCG~2v z^6z^{BdG(9ikdOr?|a(5OLYD{Rb69AJ5kd&>ow-ss{)k&A^rUky(%sqM*1y+X4*c& z0#&ccWIaMI$s8Sf=Cb&{&(ZqvUYoIh>_&8ubowr{0+?;i$UATxc}8Dj&os#xxX)LH z{TrI*&gyhLWiYI}?t`bdX!}I!+{~$_^bGbvuMr?AgTa`2MmPf@pgEvlh{SWUu2r=5 zk3LVwdnVS`kn++tm~!mdcMc;rUvATn;2h;JoV}`)aKQV}&B?7(896E$x`}U0?9agW z-^J~CaXxKlWJoG`2V`yiz0=+tNxZ|B^z(>o_kA#VNQX6cA2QN^-&iK$fO^ocde@@1 za0$i&6|(;Q4Un~7aX6f|?;cxT4WI5WKtGSTifTIE!Z$2LT7PHmwc;{{>K0dAL3WV`SiCqPqZEODWfSX7t(fc{-BwhHBr+xP+oksiRX7mBqFex6|lTB_Bu+V zzF}uqt)xp_y+(eEUb9FTp#f~`HfIqPWU#O^bO7W6I=VQJ-SER-*h60 zw97WvQPhu=-KdRJUW0&X-~QGc5!o*!wzel; zxj@nq-jf%vbf@hT=`wkC1fI3=kKkUG8s+8%|9drbU&B2a>%0IxU?A`dFa)r}Hy1*M zM!$rwPsFtE{ZEA`z4iUiUmNO2*O`uiVRw}K4b34U<6b$3qhbeLl6FYK)M(fz@AA<* z0d?S94K-uIGs?{BCdS=ljD_d$ouyDt?)RyE@zoUe=a{xR@L6xqeTVg?NR(31+-Nb< zwavMfmElLp+D=?IB+bMH%QInWIpH}I`TyB~+$p~N;xh&ufR{_F&B zXl}XC}1&g26zV406a1Bd39*_FR6?79}eGj{N?_Es^I->-nCu7G>j`CVpjdk$urm?c!OJJaw(87Zn`dkDBhIOpWoMs#5R z1OEDA-iolpZ>RXKeC{-1`h9|l3;xVs8oICS(Cud*$lf56I|;|-*PahPe!Ww+X)Zwr zGi31_d-IXMQd-|v+}9;TZeBc0z82VK1Z z;$x(JS|1Rm+cmLAzTI=cLZIKb*ywB?=$8SAk8MyZh~Mzr#!Lkn5lex!hAYpq%#vpf ztW{w3EK*=8W+~v86Xj*)xa$>Vg4W9g1qI6l$py2rRz2dRf zW!18RvRE=)AS(;`2eIUeda)FXF)swg^;9RkU0|o91IgyArP((Ud(l7@BU-DCE zn2a#gbMoFPgeXt%7*Ae_6;_%Wb7V(uTq#& ziM{p6qw}37&ipC0s--D1^PeL4Q^e=LC~G?n>R4(e9YkBeEu9lZ0s8JJOK5eMu72MJZ~_0#uFWV z(=3X*azB>lyKKkde&rb7%wVB#>@POyRGX+T% z&BElehRVRbvA@yziQIQ3PapH2*YHz|c3-?!HEH3}L<{>->&@*P*Nva&dnPm?vz$Cj zscfk{aQ&G%GcO&EFR1$!b$JA6b2f|AFCYM7&K5Ncrqh2;BHaLBCa?+E49o%A@Rj84 w8Eegwi?!y;d<3f(?z_fX|ICWD9>@i. + */ + +#include +#include +#include "utilite/UEventsManager.h" +#include "rtabmap/core/Rtabmap.h" +#include "rtabmap/gui/MainWindow.h" +#include +#include "utilite/UObjDeletionThread.h" +#include "ObjDeletionHandler.h" + +using namespace rtabmap; + +int main(int argc, char* argv[]) +{ + + /* Set logger type */ + ULogger::setType(ULogger::kTypeConsole); + ULogger::setLevel(ULogger::kWarning); // Disable log with level + + ULOGGER_INFO("Program started..."); + + /* Create tasks */ + Rtabmap * rtabmap = new Rtabmap(); + QApplication * app = new QApplication(argc, argv); + MainWindow * mainWindow = new MainWindow(); + + /* Add handlers to the EventsManager */ + UEventsManager::addHandler(mainWindow); + UEventsManager::addHandler(rtabmap); //thread + + /* Start thread's task */ + mainWindow->showNormal(); + + // Now wait for application to finish + app->connect( app, SIGNAL( lastWindowClosed() ), + app, SLOT( quit() ) ); + app->exec();// MUST be called by the Main Thread + + /* Remove handlers */ + UEventsManager::removeHandler(mainWindow); + UEventsManager::removeHandler(rtabmap); + + ULOGGER_INFO("Killing threads..."); + rtabmap->kill(); + + ULOGGER_INFO("Free memory..."); + + delete mainWindow; + //Since we can't put the Rtabmap object in the MainWindow class, + //we pop up a message box indicating that the rtabmap object + // is being deleted (saving data to the database) + QMessageBox * msg = new QMessageBox(QMessageBox::Information, QObject::tr("RTAB-Map is closing..."), QObject::tr("The detector is saving the working memory to database (located in RTAB-Map's working directory)..."), QMessageBox::NoButton); + msg->setEnabled(false); + msg->setIconPixmap(QPixmap(":/images/RTAB-Map.ico")); + msg->setWindowIcon(QIcon(":/images/RTAB-Map.ico")); + msg->show(); + ObjDeletionThread delThread(rtabmap); + ObjDeletionHandler handler(delThread.id(), app, SLOT(quit())); + UEventsManager::addHandler(&handler); + delThread.startDeletion(1); // make sure that app-exec() is called before the deletion of the object + app->exec(); + delete msg; + delete app; + + ULOGGER_INFO("All done! Closing..."); + + return 0; +} diff --git a/bin/data/090206-3.db b/bin/data/090206-3.db new file mode 100644 index 0000000000000000000000000000000000000000..4badeac492a71d55f0bc400b6b5567d8031130c2 GIT binary patch literal 7080960 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
    O<4s?EI%bs=PpZo1u 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
    -~^7VYl-KkpNLx|(RvE8CY!QjEVS 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

      ~B6Y@OW%{TY!60=&JK1oQ1i2lhx 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

      O^b^|6bw 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 z zAwce_3lf6z?q3JwECXS6OoN1=dVgCiCPcs9)4;2jC};1d)aDnDSsSYnXz7QQNM~Ch z8n$aDm*Ve&n%}9SI~%8nb=iqC(7T(x%LtHo*f zyZ>t3$2AU*s3hZko+jXX@hWW7;j0Li>B7(V-O#&n<5>c>q69G^3hgyqUvN6=DwvBO zfZkq*#3CjUl=}MtnMZy=WA;Uc_vr(JFS&r}D>j2OJC!-RoNJixH6Ap}+(V0ob%&$D zDH!Ck9WMNl2sbVpjAqzPL*?VXz{XGNsJCBt>Q$~0{5tZmWb38l0It0!_DF9Qa!%u_r;N1svxUhS3(W3>A&}pU?iFUd1V;MJG{<;)R$f-c=^xhw>^Gd_UsRzjwV#@K64<^{x#EdRWkfYMJ~D>@zM)*#%RU07dxaAj!B^ z+%~v7tx-OXx2(NOuh+bS2V1w&PG#lnMotyO<#W-(>c@!NbDlAFeF_RwE19dQmEcsi zW2d&OK6#7mq@mW7NT$5!F;M>H87L!M@iI0Z+Q5jZ(w)r5PvkDMD^Yy6?yy623+_C? zG4D4N!43W;V7B@KIIQ6d`_AD3-v8kl?6+MD>6@*F%AUD!_x)9H*KIrKvFNOrTgi%& zrL`sdLNMihWw~g7+d)yr7e?Ip#`919|D`Ga@2f@fKjwG-V-HV-Q@t!;-HtQ>E}RF; zq^64oncF~e^V4|ThwSJL(M8`MuKRjJ0};>16kN)=nMFJ2xY}SLw4HT zq0J{Af_^%Zo+^f@a9|s>6lK+jG*z^k6Qjm1xT(?v^%(_j02<_!%M>CJO$uweG`!TeIwiP&eq zOs5;mkFWzzU=%cHKNqx68B2S*urK7gqqNT#Sol*H72k5lI%6(ktsC3<%TMRh+M8Uk z&I41rX?7adDqQsy5)DJhvH$u<% z+K9TS#Vc6rV2iC$?9(C&xn#65#Ty-=`AR?NJL>|BREh_)V*~yi|Nr-({7WAp`5*f` z|GstpEO&c9{8XVvsd-NXs}nzoAKV{7`E1YxBZtlg8qef->%IfAXU8tQb{>xxy5_Op z4&H#{rf4y)hi*ZISDzWpFCwTj(V5F#xEWnO-5<`bmBj{9f;^Bp}X)sh-u0g{+~KBXY`+&HGi{v%kJ zwiaif_&_g6*p442rO@UNZlO~@$I-U-hnRg|!toDnh#hl6uy2e5H%U(eAG+O+E&RvP zgJ&6VlCdqwnwMuRPrQJWC&+Tqw`@@2Emat{^$OH4m*YOq3qV!Vjxh2=E&`XrrL5BI zgK*XvWu~%WAMh~qU~dJ7!Nr@8@Bv${(nib?dU$+0o#>Izxvz=GX>;Gh12W2Z?B2!v zmX=(+dhls}>v0)6YVmn4UqubCiVNk7+8*I=b=6Ezpc>k(X$)-*PQo>50breGEF3b% z9a^CZ@4q2z{Hfr4ul5-Gpu6uKNDQGJm>#n>+832f?f9KW7$8Ly12 zW(k)vZJiI*yX-2EV?{d?`-&;R{t|Nl#K|7*2K{xyH+f7Q%vN=x}tSGzoG%~&9q zGvth(z`lGJr}1DPUdsid+xlCvsSyXxwx58v`8=RC>k{15FP1rQ@-uv0p#`@3bw`)q zh5_$;^5{kWYfz{*9GL}Wf%>A}@Pv`0WdF+Z;EZ`2D3sd1H3 z#awDeWD9lU#cRr8!3l6>kE@svrGHPzKV;KD_n9i8^Ac{-z0&S-)dAH=!(=Qz5;+Nv zoN=DJ@%AIGeH+K#P}0EHJk)RrIE0s5A4g|jUBb270^sHPn{e{PD%O7ET4ZY)Do*dG zgD%!satAfqP>9EFIPkPT{4ntuC6L%31?E3b0X-%`B)D@#HD5Zrj2@XgjUE;dLw{_z z&7F1&!CJ4TaXrRF;ZPgM`Sz(p_ut0wrBhDhO80*F+7eA%4lnVOc4^Yp;_YZfXbken z<>BD`!6;QR0X>~R4vQv9*m+}B(A}wHfgoeVT77}Gbd{(!sG+N$GVMoTGKBp&fp_?nv z7tJ_!`w~rL#v+tc8;s1Dn{fSCJCrUZ zLhF=hykPtpkk!@>b!`Vi{j`P@uAV*MLRV1h>~n$MdFet zqNt9c)W{2wY)-5${x-Ijndcpi`^iWM-m@a4@ZexV3%*eAuHOXyGi|GyIZuJt7O z*ZQ6R!@a%O5e6sVQ*jY%7D>kHl`W*2mLH;uZB8=J^e9-Zs))lfqOo;}JI5p~#Zq7T z;A4q2Hd!afyAJG!GZojfetlBV7R!5V%aT?&W8PD=c&I#nuD*$D4Ihm~en~J+KND_g znoMmvHxKknc?jPRGC{W1VWPz@tzd+P4*#y1#)%gr_^YYWxJq7`a^KSi{Q3^(7A)R^ z?u`A6xSMXYtxXt=-1Uy0T3yYe^yzqG`r>?(qt3K+;Xt}??qGUnwTK>2F_)fKrHR#I zm(so;!notJMquXyu95e{{&51(WW%q0q>_%&1BEu>M`o{EixBddRC$ zJb~vbgaLt(voD(xE=IRBs9& zcu=eq?RUEn74B)k#_Nn(0)9#LVRQPc;+k#=(BR#1DF3<wBi@E?m)DxsvtMGidwn4!Pmvn$km zlh1B9djNH>LT>*c!@tk}{WJcjD=GiZ8zlcze&_!yoyEO1%0g#e%%KE_i;wB=SlEXe zX7&{dLW54Cs}^qfR(v$r>b4JE?zR@6EGxm{_8v$t-vq_Yg0HWK!T-Yw<*&c*(M_2;*ee6f3(df5hn&aNj#B)KzS3A@;7tZy znF4#;D&+6Wx1mptnt_U?{m}ZB=lJCaRa*9DZ~Cj+NIL7PCXFZ2v?HOdCw- z{%2OwtHwm5Me4`V9Suhy2s2p>`uzw3zRQgn0%SCLNQka>7L_QCMZ~OrfFrub1)fvd z4Qt+Cf*<(_P;Hey95X@&OjvLf7LJhzv(xmzxE+3s7WW2>H20M(57!2h(x)*5F#k4; z$?R9zH6E)rpiq>xW+e6gVZMZ*5{}4;iNCl1{~Z7S`e^)1OOpSozw=Kn=S7vj&4Vi1 z*BPrP%CP>;WLRUR5AE*zawQAnk>9vp_*#ZKHs0-kx7cUl(}U#r)Nbl{yLn&P3lN7Yu zA`vN_Ohlm@^|9GV307%|q!R**>HV7%=`E_+v_*9fdWA+SeFX&}>xx@=%7oiU0ZqcU ze8-^iA`4{LqK3XrE=H=OLRq3K=fD2`|6eW{KAV5do8wglO8n4RW&FVRD0u3b4$gd3 z#h-H_?z?ypeJ6JleJ*MS-K}*Sos(CD_Al8)H-9u@_MSh82PGdtg7j?-Xj=Ra6xQ=1 z7aPVS{5+l|U_sz1O3=P|>n{@F_OI75DcxAIaOW{9bM-m#>)eN+A)rk1VBvG>ONp_> z=chK5*+-}4;nVJ2e`jOVYijq<{@|F#Q3*k1>8VJFzn}m6Q~&?kH2>0)Elq!o{X!o=PT^Ow~k?iglVgg;ca?vN1F*3vj`eM21bJ)D_{#c>ml9&)ZA>(YHeHe|CckQAxp+6nydJ`WEnMxa)yn&e! z3iP_=-QjH?89FaBg<0Kn3pws+;t*-?UtL-TFW0R{o)e0v!hy17xhpu^o zWmD{U0-qUkj@>lM7n#qP&qckSj~mK|@hvGqSTm}G8+~OruBq~;s|W9+vuF6z-aq%! zYU76FHzbGA{d)AlXZ;3ZlR4A5HxGy7_TYW_lzSAtH!=Y1=UdR`edl>q{ak!4(~0?M z6btIvsrl1wrqPiq0eP*hg(9`{D|iBj1nRPx&1LW^8RfA4>Qs16r2>|Jeg+R;)<ESJfzK|D1cKsWKRE(P zy^R!Q`^bU5TEVPi(_z@xeY{@Mt<9o0A8#}1Z<_xc|Nl!<{@+)N~%_X%}MOG?SW|N z_j<~Ed{40A_6U}M9iiF`(bZnPr7&4yWY!m)TfdUIJ3kX@&fUkhM@t}oH=m8yZ-xen ziEPpgjCR!xq&vPIqkm5AOLHH38<>}U=T>IhW7VUR`2gF6_|xYpT);+uLbzF%xcdwGT>PIkN8^HbLrAnwSvji_=*G%6L7&_dH+X+dHn~w(V8; zW)q|%U*4npZSTXy7U`e~eE}*zNv;QCCx_$SSkV^eRq3BIed(O6kNlwKd35{nYoZvqA8(V3geh%5&_lCHVx?32M23{JVM#gg%mfw(%Of<*opG42xWY|sJXTWr-g-tacjiy}D z=H&LV$bL~XXLV~BF50q#QhppyO|sq%93LctAkScGM;{uhL~Uk_9g_a!|Gx+2U-}5i zzuxcs4>~-MnN?{5c6_=fCPcWfqf?JhrK0U0T17seB3S}P$eAa< zICWPQ%J1%pTRLvyJ+vXxl{ZCt3g_W^rwV91y#&TTyan~6`b+i{@255lbJR~u4bk5M zn?>ck0(Ej;si@&hg=m1gI@{le)M4_&n5ZmA@bXp&wd%PkP_0X$W@}pj$1fMTTsJ8^ ze33SH?3)Ri{w^LwjF<&`9*qSrB6=c}P|d5l%%uyYU($Dus~hy{xWNTnc#pOZ4rMbI zJD|BC$;`$J^9@5FB=LMK<^b;;%yaq4e6p2-RpqC03B4Uj!IB2L7-Y*VWd@Im298$!MNWiD z+Gf$KVsib(MD)vNyUgTs&e2rvCO0IqO8E_`cFbCMX&T~b9Gk5{{8s>Py7F0n)_d?Me?uz zJO8hwwHN~AGh;ZStG(R4XeHaQeI2Bi$D;c7^Jq2~gfBeHz)P+%Y=K+|+O;x(U1}8q z+hnA8nZ5Jz$Nnp!%A+Wxs<;6euDprb52v6-TGvqbc5SxN&=Vewjn$uFyi~O4n>?E6 zu7C~(Oh(;%PC?ZMUL1j1mB#aJO5?lciWE6ne;sN=sA9vEuiWd3)TFdF2no{0=!E%}p_M@KGErt_K z9wW(|TJ-4JMP8$#92+(ngWD%>z(!5P5vaYeC;z>$XV>3P9{7RX6(x&g7d*%5SG&`) z3ZL=2alPn~%O~eoMVQiBWA{S&4~@vIn0#Yn_)fHFnM3}>6&vU^TV(OwAO#!?*W@eq zbfV2y^kx;t&Vsn4RV0YnIvQ5NDbQZgty4pQEkl6x-mWasm2bXyHj^$f0a1PGph1Ro;O>^X5UITUICf^ge*LkFCaV1jlb95>@W zb2By=-uz0z&8D-UuDum9P&kTm!*x;IB7funl3>iK6G&|%!}z?2h4GG&$nasUg`Xp@*(tOop4q)gp8kx>x~45-X1`+t-hg2TK75~ zDzg+dpC3bI4Y~)0Uw#AJe~xF;{AYu)#|Mc`?hd6IHU{!{mj&UWTAH1*^}lj8zTZ)n zxgr+))JlNawRI%GCsPrZgY-vjZU%+e0 z=;Xn0#WWgdjWGVx{{NrJ{jU`z`8W8T|Jk-?U~!=pD59i*)zB;;-_(a`y2*jM&F3Y( zEE(#}%3*xAoi?s9^1_dZ4Rk5{D5M%Dikv#hj9t?m^Nwrm!8G*1;Je z3EcInXnOoO3;IP=Z-XNNgW zZVb~l5N;WMT|DA;B+w300~b7wgMC)xs3+nAYHg4T4wT)1?~k0rrG?nx9&;dg>vanr z9(IaRu``EZ*ONsK=pl68cMzNxUk0P!RZ%y;Wq{WDAmFq&0xYFb z6bT-CD(6NUF8tH}{}qe>nUdt+@OS<*Yl9@0)g{2T?l$lmW(&VGDzha6ETG%Mvb?b4 zEXedz;-`=3jqe>F)9I=r%Prh|1C2=4$AXCBCjMlf=eTO^6nvlPmEp^e`s|CJ&imTw zl(C=qfcISLa>Ye7B0C4=N7Qn|57Z%bZ*!_8A%q&}Y{pqMhoL))^N{b0w zHz@b|6V&fPFZ^cR1q2@)!<0o|Zo=DRw1+d#Rd;K`22%Qb{<2iu6xfb);=JkY?}qcK zfutj$zci=zp%9z6y+TEXQ)pAKV4lE@B}Y+Pv>5G5Qs)Wm%H78m77wxf?zz0w=mj`+ z&7)|wlsk>@Y~F_4FXf;chX?Vd8J1Wzs5^GqGYflH9RUS3$zXrWR%WV-I!Z2c zWqX_tg&Im>?7|^of9C)E&*c8sijw@#{GI==i7?m>ztW$A-18gveh% zV1OxB)((dj15=P|Zv$@O=U{x?rigFcN^7ww0Jz6A(3>*^Ke8j*3Yi+6feWU@?W+PE^Vu6Bn zF8fMz3)-Id8l8OJA1|CYoh|7b3ZJ|Cv5FhDQKFO&H!xuay?&-Le{}j*Y_{zLel4R& z&%bt%eWq{%2c*r-AO1X=w#z+2AJuzF8_X-^W;83}sY=SY&1fp#xnwC9<**Dnn9ics zS6&6x?(-M|d`GongV*0h?p6Kaya97ydXkRh>>fYZSV{US-S@$b2hTF^*1ZFAKa5dO zzB>v?&V;uc_n;?R6Cg9iAI*Gz6&xHm5T!foz)iaK==SN!+--|U{5EkpQ<&@tWik*O z)BPxn8E{In*`$d|Yi?j3p6UU$W^5HdT$>?c?$k=S!}WhZ{{J)n=T}hvr6tL~(eM1% zPfKFF2BZP*!EnY^T?=Twvdi5*=&nezvz9t%KME**I?2WB+&}|ven7(%jc~P620Q=t zBiPYH8OiLLh&F|}vl};zNAC9~gAb#6poiZ#_X~GC(;k;j?ZHGP$RJU|7UbgE11nX$MfAA2*wK3!H#z{KtbMxd zx4uzu?$tnv=j~Ep)2kB3b=O2eJ(I=LdRTzaWmc3xW$S~yOojL0(C8VRMxWh~KYVfo zy?^x_I+(b4`x2jqv`KwGr&CPm8*bgI0odWQG&ZzV#`060^P49o)7neb=m++Jba`kf z`_VrG4$_|qwulR%PrC_MmPW20U_OfSIW!T+JH5&!^j>Km6Un4p65ZQSEFmcGudaDS z*ZJ7>SJZR9i*13HQ-79#KF!(;0rch8F$72{I7>y(oCTbv-Y^c6M#1&IZldAcQb1Xv zA@gImHF)G4A-2BqMYLk>Rce8|63}u~g-hS){Hg!{r78dKt3~o}{5$_)%Y7(8d7L5= z94;8h5?y&TnLeBnxbA(y{k-0c<~fzIAKpGB*Z2zH37jA!2fV*ZK(3P>7Ch<`!L=Jj zB9WpYC3s^L*Xh^mSu(UgCHVF8R--UVoF)xE_xgmt5MEo_IOnuBG~(I`k-#Q3IRC3^ zCLMa)gioknf_LsajVsz8V~>+DC^;>d*4Hh>eT)?8L5&%-IuSCZo%>oz(=FF7BEitv z6M(?*f-@x;VJ1g8I1lXVkJykM!nis0fRD&^L?04*7u5M{wi-CJuNn|+JK>#wkMf~k zWk}OTlVGVWoDWbRP(x>yrE z8+H-M`f@;P>;>-FQYk#?%|4L&;S37uqYCf#Q$q_BrO>kd&Pc_C2LiLbu~={!>#-7V z{jUATEVW)D!LK)SU$v9I;MdQ$UUg$!c98zYp){63OY!Gbf!x9`46>mDxS3QPnrIiq zFOHO_hty5X|NJ6@-dq&HJ^nTZyY}kO_t||F-?iC63tTsbcGBB+7FqAt?>dk7Q(-?) zN<0AkPxJ(S#P;#U5}mx;;84Id5Wtd*^%Xd636zu#?+>QGJTBgPw^_8sJ(;n7d<>nMq{GW6;n8wi(cWG!MB_J4fzIZRu>Y>PaO4adn7wmzzJ_@`P2WA* zY2?oeZsf{K_@e*0PV$aDd2^*8-01rb;xS9mz2)Zkno%+yIx+?qwZ&t86M&brNc%sj zKf0GV6`89zz|=QO(1*%k*nN;ZQmBpt!Ijs*lZ`z=E%CnY0+_ykCcL^e8VK^byXF_h zB+-n*V!F{_9bNTAgP*7ohZTEh(D!Fvq@RCt;kKUdiHG}$S>Co4=}{ArQ;&mm45h)B zyvU`iLz0+Lzzj~dD`FRFUO+u7P04o;4Z}|@R&p=j(AZ*AtiB+%`H@KN>vK^{%_m8^ z@fYfS^yFMZZ=;W&zU;xH)Trfkl8u|Q0UfW$63`|&m?40t5u-0SDz}=cSeyqedn&Sz zR`-OrmeDK$CDo%Oo*8>6)n^;U3-6quj$iYatgnox*7>_gLRE|Y9RL4IQ~uvqi{yX) z@BG(zOG82Gf|Hcs*#0Ui?psG!yYcPJ(MVwIoGKFh^wV#PZZhF8k6Yv`M2UAKOC(Z#3=8oa-j)YHwHcOrQksRi^=g_saWFV7zP^5}cc* z$)@<3buFKhK8*#RypQE4&Ex2CCYmrj@FJ=lCYw*tEBvqE?yD6HY$i>?o)6t==@)wV z?gcH{^v+=%^>aAA{YoSCG%Xxn-@P3d5fih;+=pHtkzeImD44rP4C?nXK^WE$Lz!^wAeG7mpMQz$`X56-Vj9uQf!e^S-U1w% zKe>~q-9UZa!2wjMezZt%Q)M3%$VRb9uy=eMYd@vF>-{-}I?2mwMnp(5=>KoUbh1r-el2w_UNyHcFrp?^2$ea^kl zdG8!6#Y=2M2{;Pi9(%k5ve3|6n_1U8C*!X^jT?74F zM?EnP0Vn3yJ)XbDVPf2>E_U8ihq0De)ly+ctEDeuZ>=OtRmoaVPJ~{kr|HT?QTjPT{4yOhjYr(R0M(%t2J3q|Z zI_Jyktv`pJ*}Apq@7l|EX%6#k^&LV6svOQfv#1rsKi*2*dvxpIE%w&=#2x&(%a+?0 zUcX}3b}!v-dCyJT%UeI#oqqwoqu(8C-;nNUTQ2vqb+4w_!Haihch&A#6WiK3@z(IN zHtb7{o!|1U#|by=sbGoEK=WNUEU+7!HNzfW9y`ye9%y=Ck4@06Nk3X?Ut+LtOPKhK z{oZva>?Tu#?R(l1?)=XB%~nW`w?7yfZ!fa`mA{pnXt&9^Y>U$L_W$Ys|9=|g|Mh8s z_;>x!_!p(kst%n$=U?$&JripUFN;pt*}_ZI`+%BWLb3f};Y7`@BJ|dM^?9~Q{bjZx z_P8xSR}k$C*ZJBnY{>aneDQ1_+QZArKcA?UB(ZtaEM|NM7B&xez$3)lW+ zzxm3|>L=z`>=Y-iRv+)e+UL|g=U2Vyw2MCE!uL<7*je{G)gEJG98UTjt9u)K*kcRTY4#W7-)%kYwV>vi$lm_Xi|AUg zY+bp?xfU${nwN+>^MU{26UIK1)>b8YS81D@@Jsarr!#h!3eZ*BkA`e#_t;f!@JzBD zo?K&h`qTXgyBRq@@|ik2?K*KQs~>{r0G#$~_SDYh;QKzz zYI6^7+IsTX!rEBTlC7cqb9cb9`PVKxzDXMRGW7c+ynC}RZ*I6ZP~BZNtZw|T1@6%i zR0j(66*YoJp=Y5NqL-l!(Cg8g(3{Z^dKY>h+6Nto4n`kGpG3!_e@9~ZW#Y&`aN>}Bj#Y&NzCdkcF9TaSH&eU5#N?ZAG-e#MTUI6<>*>BRonDA>!*n5(C0KvZ9hV|)*7MVj46UB z0{f#I@~2pXaNU_H{;Fc6RxZN1zaX5q2BG#>gllb7JgJqZVw6@s!a2qW=Og=zGMtHQ z8`i2AtyM6^LWFZnrf7_xT>+@?5+&~VliXHQXUigi;IOtF57e<56-gmA-tgvKRPWFy24AT(P$ z#bkt=%n+I{R`HZpk%}=|#VW>XA?F{b#ZqlEv=Cj!oX5!aT;zNhx^s|i!@DZRYa#oM z*D6J}=RBEWBf`1J{f?h|c53?^!g;O}9wmD%oG*v7DLT7$;-?x?kDXT^z%4N)OgTV`k1o zqi4>v&_SJpD4m)RkcNJi@&Qn2L+I#|$ zji6~7hao!VP(ADspxpuiqIW>wN5}(VOL@h9*rHbB$TST+6n91#4|^P*ecJ#Ktqsv* z10dLvk2VejRI71#n#OkM_)Jr{By{3#fB_)d44?ew+@VUgOX|H9o&EfIa+2NDv^}0P?o8s0VA%>4qu@Q0;L9{zHRS z#{~t!UI%UC0l|GaF8Rd(wnT2;5eTSOBj6tzCnAw6Nc#CvHt;~tgNP|Z5LkogcRgXM z)j0T1jo52}ut#wFoen_sGKiSp2d_clD>noJs@3qHreO$CH(1rf9!Co=1EA3Bpzr?5 z&jxGI9~=pQdW{3qG*&?o=ybRwD=KkPWEzIQ*t*=s@%n%nncz zIyS>F9uU3NaeVBs0c^SAD1)g+<6r&%$Nwi80IK7EJ_q=p$pEk;zx-`=QF|P2-_WE@ zs{S6Z64}<{P4N!GRpcoin<53F{<NSW6DhYYc#5(q_98U$nW8VkspBVO5IY&GYX8w>jab#^ymtt{Q}yR)>SE-&QMDf-_O)+SJdQy= zKY>y8!{`$jRsVrLfwfhAegdn?AJ8W@sqzPO7)I6qqQkKEs?Wo)s{9EZHdobuqr;Z| zhS=95*F9__q8pC+Q)LgwZbhhjLB$A6$`n%(VjZUFI7MiR+otF=MdUmpu&VwX9f4K# z)945d2J-n#FNCv@^NE-}3)!AMdx|d+Y9ZG@Vm@*|BNkdA_JyiE5FN4bF0#FN0--i? z{1H0g$o4X%9!0F^L$+6%Own|T-3V6)AvDfVk%mb_h~17*6Y-;Iil?^UAe@2RU)l`h zKGA045&JCUKG0@sA=|U(OmXfMU%~PJGuj=6c1QbyJpU*<6iq|NpwFN$pp!tRpM@?! zv(c4kKKd^DG062>(e3Ci^cVCXdJKaG+5Q5I4n_~N7Gr`j$7})l{!YwZj2Gqr<}ikY zIRP?$2Id?l5%VV|6LS+&403)RrVjG}^Az(6Bf@loi0{J;V-#2o>>TVO>~fIx8(}wM zt+4jk?btoo{UGlTz!I?(Yy|cc_807Vkol)!Z(#GWCD;mVHTEx%`#;0BU?tf1*w5Gj z?CAgMvkT=i$M@gskI%rOG1_xqA!tS*M9_ku6~Sv5I&<3)h!BVoyg?vA(2hWgpaaJL z{ypf-?L_wX7Qs6N?-6t%=tl4X!AAt25cDAUjNl6b8G>E}eF(lH=tnSsU=YDK1Vadh z5y%mYAQ(k3hCp=#bmmSVTM7h91d}SvLm@yTz#zaP&_JMxU*90YR_ z%tJ6A!2$#e5qyVW5rV}CmLSkZpo3s3f@KJnBUphz7r{yddI(k_&_`f^;ClqC5v)P5 z7J(sxbqI_QtVgf`fiVIT1f~dZ2sR=xL$C?K4+zW=SRk;342AyBG5@mvuSWg< zLp}aKW&p4wC#7GF1^ICMhI#%&fQq%6GgPe8oQZG-2H~vLQ_Mj)mxyqgYW##LHve0- zUA#ioA7hFQRQ&>`c#~>e3O;{|d~V*PB2z=vzGIl0A;`Ag#wnUjaS-9Eb1Jelz9Q6D z^;?({jegZOTVnvB=GYWf{W6BFsp?+<6;pO4!dV7W{2t*70z!Q!6-zac{gxW$s=ft)W-V-nfcoT3(Tz3*tE zRQ5YFcnIg{BK+>ZN4UUiW&%KAp7UfK>YbSh#p^mJM#G^q`uW?YO1zt79sWR|84!OTXkNgQ)i&+ z-!XOTkozFeROK-kfgW<51*@VgOqr1*CdFwIX`|CbHRI<>Hg^J@7!GO(5E` zAG5(4bONKAQ&20ia=M5%M9t_?xzNf!LckTR3x#bOG5~AP4VUUbK(!*e|0d$SpaXWH zC2Xn(1ak*rhf?EVOJUyX4nVacE2fJqf@n!^;i8bQ+a~~ckcwB9XTz58R?~PuwIa)> ziC`xo*ZMNJC=`a3W&@&ELwGJ90&7s&wW}R~YDJd)Q-oe^4;O_F%-bCgh+Y7Bo;_~> zTT0HpgDq-BmQELW4IM8t?0{XUkL>FK!8O7E`39_@po(90;sMo)=u8*+8#;0Ekpb*N zfr{I?X|B1Sk#JWPZz0!PGqR6JLG>$FB=vyg}m3#2?T4<>5*j}fNDjS zOc%KT#SVXG0J{X@)&v5A(;+rz8h|w@VT0;cs})&1T_helo}h%Cp`*+G20)>gL&Pg} z2CyZ}RTHKfk^fHoKjJfL@rS9BvaiiAtow!u`J*Xy_(G?Qjnj6oX$?hRHV69vF{XnG z1Vqn;T(wrm!kjP>mgt6xj@+R+o_^>K(!*K z(?!-o)C0QpunRT&8|;E!1rfd1s4R6a{sIQ|A|}&C7DCitE@y+HP^9K#13)lCW$>34 z1Y1sQ%g+W>dnCrwMdm``?^V-mP$;V;5V)XqK;scu57r=BwQe?`T9FOYMdm=^%4(HM z=qo}XZ~*~x;s?KYum*)u7u5r*6UYbYDHF0 z7dZ}*UillqF2{PtvjNfHL&T%k;$aJCZ!iR?R^%p_N%9gSlbsL;A7ERkd_Bh1&UKMRn(9$dj z>2m!N?l2oSVH-)Y@aSuU1r?En_FA`7OA%!I;>k7a|R5REW59uU0{I?mq@ zRzQbo{u^vjD>8qY2u2AV+kPw%b|F02Q5(tD2alO2UWrZ>5TWxLmjXs&SnGxR4X!P zx=1l}BK4jD>~i$WH~=g{%&N?WEwQ0ifq-g7w5E$>LdWx4R4$}DGhr9>YG~8mQkCUB zzYrMIi_HF~2tE9-4p0=LI+fQ0g7_!IBk_Ot;UZvAFEVSoh$|HLJh}rEg^ud(4g>@u zVF{Zc*is(9GagXw>CBuivJs*L(hOji!%olZ0YN`;6zd39z@;7tgDq-BW=s=7KZh9R zsfOh?;C=gJs2xhv-1t?l;dk5@7 zf3nH|5F|pLW;^R)OOALUOtm8D=^`{JtUMZmUHmR?&jtkX?_D%x09$Cpo_IjDBB<#i zB#37JYX|J&`{b(uAX*Rdw*D&~wlGfqm(?_#@oyrSF_jA;#2t9T$)WdtTX+pRgIXUC zsP0J8y%jn-Ga(SRqY-%JxM<`UBntD<5OW5RsY(TX~5$3o8o(|-oLB%jPdwNquZJxW8&<{xsuB6`#6M~%oKfrl=e&XD z@nUhYn7P?Li@UqqDZ_r+?lm)^6R0EE@XmZ`vkd^jh48MS!D~?1mack0HM@7pu$wND z0Y$8E?SNf;S6+qyLFFL4fZ}1x*%|B(K(!*a(?!yuICCUT_1RNm09-)muKjQn0&7s! z)&DyFw@eqg0+IeAt6YM2bK`+4dLKmm&BXw$LDyQ|)dQ+MlFidaE<<5;Egi6nkIA8U zK(q(sbLwh6Y$;mypaW2?h|P471c+WD$%b8yGo2tn5V~{uNYp~0Cj&qb zy1|&MDhrGM6#^EuBIeUYjzPzlCDwzY(D48f>;jI&yXRyeY^lh90$bFI{4ia_5ei@Z z36umWUQI=qV0YN6>jV^{@%jslsJfK>UuzwSoHzhMXLLi+KW0U+GN+*YV8v3~_Xz@k><_`iwly#h*tQMW7{Cb+P~QdJN` zwDPmCMXd;Rx(E~UFrEd0qR{@IMqz?ss&7|fHf;IT#i0XGtw`uUMckh#>S34t-|x%@ z1PL?Y_=iB)@@v2!9e`>@DAPrXpp&t0;Gz)Sa34%?B%6|v>c{ch0}Sd#j!hTIgN|>z z3_C+1vn~e$f_kzbk)yKwVsXa+SkxW~`QJoJuGNF0kY7$z2Otpf{(X+h!r*T*02Z|( zr0F7;Ai8!EC<$)ygEO!T+S~E%#&dzN<;tmV0P00Tri)yJVz)e~hg}Z53ylW^M-tAn z$%ZXSA0ERNHAe!+KN@`u1^)X#KmVJrz?(xl^HJJp_~-PUFbu{boEAnzX)i^gCSOl> zpcd|N-t7!-2Dl;M7d0tHZAZ<}(43*EF=GaJfH`x_RDN7ou$i`uP|I^w0?uJrIoeK<}J3{f861`bJy-Y z9-dx!Zy#U6;UhuBqroAh@CX_`@?=!>nP1PI`|bDh7p^4#nUb1zH9g~IZeD&tVNo%& zyrPoB<=v^OzI*TfgNF@|9zS{cs#)05`npZj`S#uWuI>*XKlStv41OCLmXC~%O^Q&n z;LGNS>Rw9Q#b=&uOB-S3-R_U$ul(+>RmCT7-;{az>UI_K&T~Q>TS(rn%5P2kx$H=z zvB&SJ@?ytIqe;{a_9QCSBTl#`wwsvycj0Jr6#V;V)Su7HGs71HSLq5K?5xW#tw zEw=ICdGPjEU$0JVRy2negcfkN`qAv*mvEhXY&>lCSEpu9SpF$}Tkv9s^@a5}Gr|9Z zmbmZVVSeR8kolFHq{IwXYDYWNWP8MXRzJ=N2*` zYEa53ko4p2<|k4<>7w;0qr=m}E5vw45h3?xF(i)h4^ay9vc?uQ2P|@Y?@|kPx@!{k z&9HEUC(l~YJ&7s{7EhwK71!xl_swWfKE2|-xWAb3HmJ}>VL?@BRSV9s`7T+Cu1VAj zvVTF(fLmhYxXj#b_(*_a#vMDiQ4QX>jmsn|n-d**4?l_8Q8kH*VtiZCt5bNP0AH+g zJBD6&^w+*tg;X({+}$;LWD<26&-=|gOj_1BiCQJ|WT!>^zzI0hE94Z~G_6cfHbpPE zx54IQsFm`wm7mb`1Nrg$i!*{JQ8kFz8HwJx-X z;Utt!q8gZ!sMZ}UYiWO<{y3)$%gAj2b&8OUhp*)@=`?djktp|O(Jpa}S3XaklMYVL z!C<0&PBTN6$#}n`;4|(+%$6j^)B^v9vmEVQDQgP>D z#{C;RlwVTBR$)u&pY`r1@J5&wPL)y|gTKGhYmpF;qc`=_j zN?@6Iq%*Ba=ko&kaNgwKz587C6+`>1x_A@v-;_$6vnb_?;xiw7I}bO(bH$kG-Fu36l;oyJEuGkutkBspi7NPE67|ta%8KEDn!Lh+VzZap`&2qMFRCJDq2Vtngqgi@~shHqcPkYhU5xg)L46aa9xN_vGolh)`#QNQo>oAftUB*f@W8IOFkhTu7Y{s+Io?aX^x=DAf0EfD;}4Ug@oP3khzCsDIZ7)ugBt?-ycb!sMz*(`ert?%92Z7Hlt}%oIt&?h_${W{pP5M&CMvuVZg~-Y}o7Jocizm)gm!KF~<+ zOs^E5UmCIL@ruV2=CM7`Ml7Wtqc2RND%pESo(TGl%Bf=~CsA#rvb&!g2EZ-VSERFE z;O}H5B=GP3z>|kA1lfaJVc_Ep6RT~q_Kp`VbQlIWKUODQX+Fk z!K)DVe$@qQW)8-mM$XSd4Ez<=qQrpZLW$f^5P)d^0kun4BjSuE(Sj z(v{IjpEr{zj;^Dwic{35xHDMniNm*m28#fCg4AnlclNHzF~WMu?w>%lT367U0~)e$ zt3#h{TT|P2WHlM}+sH%O^%8T>IVX1$M_Jk2WI2OgGTQvHfZF>igE~yI&d7M>d62d$ z+>>Ip-83`9QO>+yK}pP1WE2-ZRwh(=Q=5F-^^@v^j_uUcoPMhd5<>Z#o!vY6v~ZmZ z)wr%a?rqs9m_f$-O60PG!0;9N!x*821x=Thab? zF-2G+_*|%bBK+b4ZZ6y1WPgC;h>SjxAy@KugIZ>Fh()<#t(1{T(g7Wb;v=4g^Se+$ z;B^iUOn3z;g{LqIk#o@}5I>-@sG1#53LdX&!{JuuI-E(wF7em^3hexeWW1x4;ooB2 z%dMbh_EvbgZhVj_|D!}K=)wsYk#Z6@L-3L8`3)pzuhz0w8BC%s$7J>4!uy>nc5><{!W++@6*hG{J>|!J z#`(1j{XVonOZvcCST(@tV-84`b9+*yLoa#uI$|1`It;q!x2(3My&#vwxl~`NF?(w+ z>)#Z&8fcRR)N*gW zT$32{P(0{C6J$K2j(epS-mN=ws;;jIUslpe9mgGr{N0qG>)RIh*~A-Nz=h-e)6JF- zXY2e)j$@#kXj7f@1>x#f#bVZdrBSJLv8z(9e8PFm&}wxx@I^-p2`N8erOQA7aG+l$h{fWlhT&8a2R zKbnfWle%4+TK8nkP)OVs$25nIW_A~?xFj!rA|!6G zX74n;5rij>GOdYtd_X5DqpQx>K`vo}{y%AB*EqYnaA26N8^RAMsr;DMRY)n274RCp ztVgeeDz#Z!l|zJEEO%yeQUm_*#RB3$D@oDKy7f~vj%Cx%Pl_W_N00i{5xWP8O8FB` zaW_T8Qr>3XKQ0^1?884yE_fq7V0=&4d=j-7-;zZ&WIonN;N&JTrIJzBpZ!L^I}C9$ z8Raj%ua3Ob$&5%Gv`l63m80T=W=8F#B*D99ik4Dd=aKe<9FW3B;q$ZZ@puQ<3xW@e zvAdPGS<&LVw|#pv-nzat?j>~6M(duHfIZELX?~Q42mcP@*|MCC5iOU(N+<(7If?AD z#r|2kFR9TNsk3sWjh`p5-{wpQ%H>In06Wo~0ByZpX2gvC`DaHNK8*#VKIu za8x;3NJ&;?SabVoIIByt+6i$jg~ps+w>i;SzsBjck;di~fOTHW6eZj%isVvZFoHIp0Pq$InyxHpaY9OpnxTXgp}M7RT@Nbk$`s{c5Vgd;wC`^y)@vywaI+`YCo2RD~BtjFz(v^DhmA=diYY8 zWOZwT;IAcPKya*KZ=PZfQNec3`N>UmE30 zZjm|2Y`i7IG|-jMSPc`DRpKtv)5<%eWao8n;L)a>_3iMZ1Z7mAV$dhf;mWiRo6%NeSOMad>2g%rIqO7pkv8dMORcoiUK#o8O}Ei^CPqq-OICP?>>?Eu{+$*%i8_!8`uDQ5!hnqI zAW+|BxfI=Cv9pL&+AY~Db`2`Zqp+%rp}L4agp9^QS+O=*o3nduzcwfDn1C2Wk;<$h z`q{oBCO@Ot&8CSz!r*%vWw@NLBPu|`uf1EpiIX1ZHO?Yz+9*x08}#<>Xwn>Nd`{1mvpuH(TOW_dW_6M8 z$j!z%oddlYlqN+_F{|{mSMms+7%)L2-?e%@QA?09KIM9mseE{l=N)5Vl>By%GstaH zJ`a1CCb7&Uta7t->L6o|_n#Bayn#O5aX!ym|CrQ@0^Mt~oDN z8bx+DP9p7He`&n3FEwkR`Gu^EFk-X$6wc}OBx-Jg(I^-okY9xum*&6&q_VO1V6+r- z&#|4^#Le8<2>xcDY}4o@6Fc{itvstJQa+)AGGE97cf{AhpjoFye}i8)wO0A0bwf@7 zuDdG8l0geyu~phWN^X8fU`N`tD|=e(%PpI_$|kh(yaL_^q%eLP7t%F@6z@RIx2nnx ziHsJ0qo-~Fd3V!GSO8mJhhU0ogU6VPTQ}Xr1$}ZSgq%u}w_-Pnl`T(X!3` zsl}^utSXQ9`WT!&B$9q%2Yp&$FUmEs{zzFmA~-LQ6vr8~-6P)=;c7^?8`eoD=yl}& z1E*+>S;Lt$B7so?YCQ3J!Q=NmsZEMDkbFCpQ7SXq*nt{ynit)xB4;(TMayd*6yrc^Cj#>fbZ}96UvRvN8@V?Gz0EIL zZ%*h{wUr&%Hi_CA2r@iE?S(7M9{v7z;UF-?a9~^wD*BYTdx!Z2a%>OHiaFblBs{fi z;<5chw$HoK5HYDVpQe|{axt2iQIq^&toh2W=O%FjZbOM4C-rJLU|`l>1_ooYeuXH% z$eCqfHg0u|d7Hg^5$FXN_2lfY!{<-2r8`4{vn*nsO7E=zOUFE8ZuZl}aq$>I( z%6G%~-{i2Q*T(O!X}#l=tq>C=raEW-7D;PB-LL9fd|>+trmvfBXoxn?D(q{piPg8{ zcI%H5O^y0;L3`<0FYrTWw&MDiN1mi)Dx)5;11v^f(0iUr+X?s1bfuH5sT21!Pbc5qnX|m+YfKoz7Ut-H^mK7o7Uh>$5MK81_SoI3{~oPGBeI5_)4O}V#*od zEa-XMaZV5^s4SOu>g<)lFkU+wxAENwqm6BKr#SA#PLa;_;j=}C>7=}Jocs0EA~!jc zkNY8alx*S7ljwSH)wpq>X)$A7h-r#BXRZ{tg>bz(A77f;DI04W5$q+};hhJ>N)0~w zBNXnu!(F)6=NrFj*#v8`jnXb)Q&fr$m;j8#>4G6q-Ou3KB{uT=_II1fnd_2BH3Okk z97&OP3SY{6F7}GF`P!O3BEBDBdBZP;HSkc-4wAo`w)DK@r^($Q{*#k3swYwN?hV_~ z@KkB+%`M9r{6TMSy%e{NE-qbB?x#3xVJ0c=pfpvnT58t3i=E^A3P0;uZ_TsOkafaQ zR!+iOVv^BBMRmZ)EHD>xh4K5CdqefI?j!-9d#9H1F#24%7_>_}%fT!wS)Qrr>88zd z*IgF#I8z~14h2-+3E7C#jReWt>sGhwMB%fOvY2Ocq?4#}KFDQ9FFnk%YF@;sIPk@F zysN-}qQZ(M;*?$Qpk-1eL8PwA*D=r9%_lf)tZBIOQ+|pcT~zhfrHHm*q3hPVzKuKZ zR5`PR%*`wGu8Ykf4h**>=81ioJrV|Ir`S=HE6bAYAMP7wTGxSVa+CaQn5lC|vcEF3 zC?KQ2i`jZ&f_)&gV$M#RtAcw!E(#@ZODcP!IlBj5)e*wDEu(QmAscVUu_jUaya4%V z5rr^RHza9LOpw^P_X8W-)+GtrNyVT;r)Tc4LB2V`8O$4B^tEPh53W0s$s%cvl0@vV zxXmp(4~5xy(NlgNwU>R8EqfQ>Z<(lM$MrO){=uC@36dhg_`$S=TS*K$7qyo1v`N=S zF?3KGvhL$y>TpN}uP>tlG&BdAO%qmdyG1NH^Y6?Ep4L+q$BQczCJBUW|I=Ld(r`=b z@TaUnXFlr+f6(fzANLJQPOd2rFl47>_Lj40#!{RkEokJ5qun;arSa!H<(YtuCk5RX zb-=Z$N*Qn5%b!H~`*X8aNKUSzi3d$-mpWaoIEKMO@KRVN{w47h(JQ&Pycf@OacA3J zKPW8ZeoEySBzKdN3W`Le^QFetck;(~Sjd({3D<^sy*6<&93`1tRT8>5S0hdEbHk#- zqA2*(J=c%qJ}uVSL+@dv?;TtZemAfTb&E5>7f%dss0*@rO0s`q;}z1D*~Q|T_$|cw ziVxcKr{rD2|6)Z=-6gj=uH#beESWH=W{XT*jWR*=#9K2;ISTGVZKg{yEwO^}%Icw7QB+> zQ)>q}^zUpM-9wA0X-_L|IQBU=2AG~?GhTqXxvCX6KJ=L|D*PMH_<}D&DVsH(2y1@-|s~%-uP2tXMzXY_QEjRQ4uB_5qFc8 zGj+f`T@JCJHp0Ec^ycl{X2R=M#by;~LHf=8t%y=%4XO1@=U^cV%7J74hDT65~ z%rA_nA~1cfQzXjVv5OO`$tLe$vw}uRE>|Z}kp~`@>9?2e9d^tp+BVJ=D|+~Y9!hGT z2bU)=Zsd11hV}+1=C(2FK+j@X#{zA6ywV)f~|eEwJ>B7Rn6I&XT=Gb7b4z? zpU4<+yT~2)-kYrGDz)i6L+MYsGKqS&1H@xPh@8xO8qnJWTEBPAgpJ+67Q||J&EGuBllO= z(MNt;kXAze4h-*|NrQxxOocW%ezIj{h$!gq7#G>|B=lJx~oxz?JLT*g48tcam`-?@}+g z{$8XowjE_RH;wF>pzD#UQ(Ti;babE-bmglXltXrn64!x{I+xJ#<|wNrEDou*61Vn7 z5QX4VVIyI)C|h~4BHN2@YsKVs@0R6@LS9nQgw`4mw0gk89*@E=L zV9*!MwUpTOg7{Bqbu0YD6j;Ox+0W+Rn^AmJPg2cGTL%WZFB)i2fBqsA}J-#OWD($$zzmP3VkMI;y4m-NdlkZ^9!YEKq2kJ=bcKg z>udC&jFQ?@r60!`)lJ@Vk4W!JF+P{5zw;Q+TxexWuG8VL;_OXOZhg--)7stjc^}v$ zI9U4Et@d@S;aqDrYcEdCCzwdTQ0QRbhb|V$Z(AW_ z4L>gxvc5WT;zZiTg=b@`KMbvp#D&?W2%ZX`Nw*JhPW1o8TG!KjMxIbby8BRQ{7|^M z!QJ?kkaV9Wlg@U0?@b*Wp(-@VyfX8Vh7+8KM;4&E=n48o1Krf&VzyBun1m5~_jxXU z#1upqzBHBZ?B=zTK7L8@BAY#QFt7aDn`tB=r;2VjD7r~s>XsgKZrA1##r&sW0@~Rs z@;m>XygtvcgF6*HgZdYFb8PO#f@vqBU~ExqLuw+oXNK}if}e;tan6j<4sL7%DOStP z$g?teyuyU>PS~?*eiDOYwPO-hSY=XNOZ`Td9C&9w`Ue=d=KrEYO|K&s?h@3DlGX*t zi+lJ22`nHhY+TJ#+6!;7*O_*4H>hlG^HR$D ztUeEe@e;w8<}nM35C@X)-x~I?VuMzf^BQ?!EiSPlQu7PXZ{9D4|6qge_$F~QBNIFl zIC~}kA}Kx8x|wyt8&~E)c*(8t=furD{sv`**zl%D@ zdEb>OZWFqPn&^YRRla>629J1&1REtR--AIryJMPf1UWr@<+_qQiNcgV5$SJiBIOUs zUw`?Kl1WW15e}xEx8G*-JEuDXup5S6}EI2dTl2VqZT6^V5(}T;ir|KEYGk?SIW}(-u?KG#6D=~IfTI*PuZunF`%yZG&zrUWJS~2lKS$T>iD2An_lk;G>G&t+Q`eO^ z#U~S2-^^b2-WTN!Rm@nMJ~xm^gLeW31quC=sGF}{m9KCotxNgTJZ6hDN+2mDSc@Nt z$IEfFgO*-oyV*Lo8D~QhJRW%9K>Vj_e{<#ac2hIEf<{C5Ak7K^Y1S$l{Ofb^ZRuaf zh53{d1bXW{@0h;SqJZ54t+*nK(314HAX0aYAcIrLlN3Ibei81{9bud&iJB9XvR#$3 zN(EaXB886D5h5-BOsu{s60XcL?k%?bo#1koShmeC;2W5OrdLrH`Bj8OvJ@Xd+qA7L z!!j7}@_4E8>SOTeul2d(9G=Z@LPoVv`aqXb>`SQOzdh_`Rhm1;!je3P0?#LWV1AC- z#*;k!q&fhZwn zFa;0xQuy>+*=r0YV`L0smf&_ z2yTRXKO5_j)qp7j(%G`H9vey~n4rA(z@+;mUF6ow31r2|f{WLX(nEybW@HUoF!=7T ze3|RO1aCTcjicv=Eg#d8U(O-bv%P;#%*d(Y5Cix=klXJVfubXF6-1FUnoUJ5?;^i8U*1_=Qi7|_^C5@dYhPK@@;=G*JHJN%rYdfWe8R+^ zJbr5uC4KUqv(+}%e3^IZzn8c z4emfL;hPnQkWo9uC?b{hK}6mq)*)D#0)BWKGD`m z6xXEfm4shJuIz*7JDtU))>6JWX{@x7lSqw$jB=NFD+4@>#`sCIW9du653Z9FFqZVM@> zu=TlZfP^Y1c?DR66TS&p5_lPMJ0)@Sd+me{Dli$rMx3rqeo;hyWa;1$T z?p28TPo;oIipf-YMlBT@(7ns`l5=v)dwz|P^X82|-nd*K zDgDi}*}5d9e>iK6*&pd?UGQ;&8(0=T0^&byYmv?Hfdqvxk4QC znT>-C4uMfa6c2)^KH9~?DcN;|oMX~Y`xy19+|&#A`YYp(p6zQLzujAQjWYzMP=yx- zQ6a64pG``+3OW4PHi&$!lKQ4O#kjfAt&H&!OfW|zal3*pDK$8&x=Ca!>vU&$=&tKE zvX<=SxsR*0HTr&7U1Eih?e;@tRMyyHPYSJ@ zvDjw3^0GzL^NNkqcD#sVN88u05l2rrr4PSBFr$v#>Mb`>4h4G39izx4&mE&W#dqM> z5xUuqLRoP!c)h^3cH9N@npwTgiIz#d{!-jdepi8&^_BGMEH^^!ykIf@k9ppKL4~`y zMSE{I+x;w3-4f6mK94XwUE@gUj+Jpdyps-9TygQQ`&l6oX1=|1B=|7-?4_qc$`$WZ zQkUCvi&KN;o}WQ_NG|{naLRuA>XvA!SmSi@Nw4ndwLzH?ClcA76R~f{T_fGjy?i+5 zbXQZi#V)4cF1S1u-dT?=vj&@(%QxnEfq@4hdiAKofpW8_QY%OQ{(HV7_qM-0lt_O( z{&>ap{!<4j+v}tAbmNA>OJ=0PFP~ywj2s*`>jk~n1Mh&co<&h%6s0WY`l&UHyA;br zd0i{K17?gVxF(lCV{wB5#;>bLL(95H$;thxmm-S~`netEg|STk5PnGL+_G__uIw_4 zLItlgHV&i_ASQdX+e7dy(K=hHw=;Pw4@kXp(puDLEP`akGu@K6bs)$!+m! zy2prS#TE-{J@xy%T@G7pOwcob_>Oj$6(hCs?N8YFaS|mdb&wtQ)y^EReBFJXahCZ+ z3JC_9m^*~omy|x7-HIwL(D5&rh|W#B4+gl;c*?C_d960Fuh)R6^G^08j^B2c_O^UW zHvcsIk`aB!O#3nKt@9Z(d9E1T0jtoFUT3OS4`_0KnnVqgBEO8=Ot{d%gK!a{*D7^f z2&V3S7lgkf3x>ga5W}Qz0p}J`gjUPI=TyaPmN1Z-nkN|$uH&7vqHeUplSaegk>D?2 z98}>sEVcQK@%j48S3gs~UFeBeCoT#}1aC5>gC=(9Dm?fRh(O-Km5q{?cV7CN(&Smj z9d$HoJh1jllTDw|p!Fkx@dStJTt`kQZVeUUMJ#@AE1`ThuRHi%ZWnd*lcCFClz9xF zt`NOBU*}c0PfD)~>;Eav|G^iABwg^$xXajiG?yT=pH1cJ3T(G59T(v2c7HvX&m=F} zPSz1-xU$wJa>%#(jb2yA&UodP>2}WLb>z;qFF+d;RXJSp^rh)3Jc}Y8cu`$*(63}qY}hcX}pfHj2b?guj!B%0bV0-Hd0>1*LsIL|RbT z=lphfDc&>W!lR^i7iYoIpmFIv-&2I^nlE2B*q4KB&i}J{Q>VfUdslEoPcutS>0hsu2ixI2{0B>7Tgl{HnD0QoA1LT5X z!qD$4@+JFs2W%R7>1g&~1$d9@6|v|`9CZPhBCoKdI8CBTO3%0?A8VPX5T}#{CiFIE zGT+Pt)j}IzN6ldRPoj#!pro;@8oUYwp5;U@X+L=DNfYP`=g(dP9zVPR4~%vXU+OJW zZrxLEnXs;}x23Bh^c-k)<@-&aH>|F3mOfB6 zMRINLFLhmeGYt;o*lBKc74+voML%b`-s4nXi1rnDRV@ER0dSsnXO_NFEfEbR!;i z3C!El@qe-Ro?%UO>$`6PV!?(epkRp#cI=eQ#uP+FrB^{EHcAi>kfPEoSU^xvP(UP# z(u+z@f!Gy9MFAD0Sg=r~2}nC*B#NxPvi3gLKG*rO{x81w`x|)}&z(6(GUl8K$uj`q zn5>uwTjU}0Ieb8oCfXxS;z*ykIV_lBw|;XSAo%KzOSuaTM*Iq#7=R*8*8i)Cx3vTx zrZ8f{U<&whh%J3QXuxktRnP!MnrMwQxlTIij%L6VhE60*fm=e)5JbGZPlAAG6U~t( z*GTVImj0kCx&1M%4iJoqb=4daMpzfe!idN%SvS&zMf#lF3A>Wp<)4s%;5$)ne%*W+ zahJGD0~BdOjx>oSy)W-4L08ghNE!fs|KGaXiVq{cocjzwktP}=O|FtYMq^o^D`~Z9 zKMfF!iJNJTKa6<(%7PJ*Cd5dS7}95Iw;;vR>7)3Q22*T(j3B|lTB^-u z!3c{H0V5(!j7FNIkv_dINSI=4iNF-FCENBW@?j*-NU%jBO${e)auTNO5YvaG z%99@S1U`(o?-4wKMVc7=tBH3_3j?Ou^qhqRyJHiXSqCF0I}iE;iZsz5X_7+v+7z>3 zip{YqJ|K8>EX|ccgF@!EMEC=WG|?Mrl1%zwbOub>7ZnWvw}d7ym~CXx)E+*Fh&0h1 zX_7?xjMpGRS90&O1Qs9|*tyM5L4!gbG3$U7X|i>sNh0aV@7bsgWqg)P$MVJ-_$#NBH~?fX{~-xlzdB#^TE0Ur{WP-MI6K#O#p zI*kt~(gf7n|GOmxq>sT$7EIY~83|Ls7oiV+{{>s5yZF0NRK(IS5&jhDz z@=*G9_#2U1Vm;C%pWONK1nf#0_}SF~0uzINmOqU68wujVT!xQ zDHb4@x*nTe&|oAXys!>XqzNdw|JNj!bY417kaEDQ0;Yh0U34?XAGF9EcLhk1CZOj2 zUy~ftW!^2&6MX-FbrK&COkMLC+i5UzXf_Q-M4Eu2`+rTc$pd36Sun+^AqfCJIxcIs z_`^u%DZykGX=3@WCeAHKU^3|}eu@SN#^gZvRtAh@(YHg2G}$)NB#U&=O7@2-j!~Z> z;lN_uG|(cGD>`9Bgoz{w@BSZ9{~PS4;73^YSXBr$A=HJS3xNoM3V{iM3qc5>Ap|MJ zIw3TL&=TVR|9e<3yd!NPHVCm%h)qK12(ej+EkbM+LRSbqA@qeX5W-LhBO#21FcHF3 z2s0tfg|HA}n-G>lSP8LRh#f-g6vA2vh7h}i*e%2!A@&NfPY4?!Y=y8B!d?ib5Dr4@ z7s62pCn21LI3R?J5UxVF32{&ecOg84@D#!eLT=(AAr1?1LFh?7E`65_NFXM_k8B1nj{LIevDBE&f%&I=JLM3@j4gt#a~xDXLST>AfV z{vTO&L!yLqidqM!7-^dl!~z7xp{9uoFH^(rUWdOCarn`U8d-Hi;u-04w3PtM?EgpK}y;JWVM;93$! zE^oR4Dbi$Q)eVU!MpoUBctA2AeI`Ly(jlcD5{$_{@j*U} zoc)Lch&CBnbwlDl>8o$-4^wOow6g%gmTY@^g$5(+&sPCNn~bcwA#soNZWLTnlKWCM zSRe(CNs&4Yw8)e5Cinx2+?|ojWl7v6eKK|UFlFCLeHtLRu<{u71T?^#2sHzBfFe!6 za#??`MEInS>s;8C-19_^4+wV0&1)wOMqG4%!iWeH;r!R6fb}%o#aD_og8JWk#O6?| zsF$e5)X9`$$|;H_$o${@Xhx5yz9&aHN;-w*GeCdRc9Y=Z13c4aiOJDm#OctZIzSPd zu`U`^-}|%lmz+20q0VFpGQP*~0YP~u)9d3HFmk=k0aBy~D84uB;Xxj7X!3^{p0Wij zK(HML+9P0#-0yN2K%_?$sJ%Drv4`~h`o1-x=OiAX{SeQYTBuxSZk16SvG5J4wfXaKr9$KW=i|hU%mt-y-QwK;jCB^i= zkf23gd{gfaC~`YM;k^+aE|J1xpziERAb~<9NVB(J7@$S^SKqAz6zKu#?hSj8;JVlf z_9R`r-_ro8+ezsag3%?)is(Zs8<4C7d*J&`rR`5W=D|dxZRhUa2@cYIB6yc#6HL~cQL@Bxdt#=(v**`wi zACRg?+Kg!zL{98*Awfi>$;hI65-&+F*SDZ2g*5iP!2+aiCJ%OY!xriCAOJwL$;i@K z5-&)nACLWEild1n4G=suHfdRcNY>OvARx*_E9!UYEN}=|BP;QoJYW({16@hi1;-eG zRLW`6W;PWz$)vkMd_WQV1Lr@LT1x@{{qytRHv%VS1!(_W|992x22OZzGx~h!mMYYR z5G}PIoi=KFtxh6PmM^S0&bp(qkeXTeV8KfK^u^8Gl@AYKwlQ0fp;RyAR6r?rwv{aY zgJZ#!TXPSa;+dA;8{dg+7^j;zfAv$;cTO-mO71+`cqtLh+x8ZHs}s-uw8kC%+|-m` zv`Ps%=0BTP9=r(GjdfIqq7#`&^5-n1f6rJ93VV5)NQ&(ue5ankpyoWV!_U4vgkN2A z9)l{`rC+d2zKi(tIPHxo#G&Tq`Uq5!9gOYLkHY+G-*G%veMXC%4q+R`y|LB2=WO2j zI^>6ACTB*R1h#+wRGzi|bUgG+n);DbPwAn@HgHB82cQ;a0lZ|n8~FKzMB-CyEip;` z3C}v@DX!sX#;Gco#u#;u*vAOO1=w;|1lAb zIW!s7yL1GLWgNr)&SY~d0OW=bIjwJ^L0n^p1#drRFU(9J!s@Ck;s!}ILZ zvSm0_as7Q1YWf33E)b@-i@^pO-i~o&uc0>I6VTTAGf~;2!D#Ns6WoTA(s*<7E%v?2 z3dH!uLJknB@pVeU+vOUB=|CZ&`LLIm5Zu4h*Xwyo`U{-}Xl2y_284iKvKrG%sTrDS-VuP!;kJ|3Arygh3z=5c=HoJU*6 zZDIo<4Hh&u5V9d?az1O;J5(p|7q;SK1m3qgoxRZY7g98RfW5S0JbGv=3zHh1g!$== z6^N6OhZK&NKnpC!AW%2_rf`73?Z8|hwLjy(WydV!WcMsl>wo_<|NjiqeaxRf)~a4G6E;~@^EG*yZlpfwvCziuyQ7&`Csl>)!- zg#>?h5)ReQ9pWOc@cq2-y?co&WB}cVrh+K7aqA3S^G&W;SE=L!|e{hg_SN66ncM zM|lsu7(}!bSr8>f61(Tl#-YMzt8)*XbHXS7x{@Moi@$Gg>grYxo_H~m82nuuY=ZgFZMKF8J3 z%<60)l}EJ3wS%%j>h6Pg@_^Jg&qecm`!}io+x7oH=l}o8S^syZ!2H+$JO7){7<2S} zrLnEE9w1Pc7Ve-oO7Q4US&ap_oWWzv)Oq#Y<28!sZzeJyMG;c(3UJ4t ztB9TQMR;v{J>C=a9N*Qnj2LqHj$bbrz%>rw+^Ci*gfY^}8K+u~Dcqrqj*3#^_vn8X!!nnr=8-y$nVG62V@CPn;C>Jb2IUCR|ir4 zDg|4nyM}P+jOPL2l1~p}P}{!T6XNqG6wBF?SK)l81=z z4bh2KheG7faGMi2SeLv~WI3^H4{-{iN~y!x+AK?R^dqdWZKBgHl9~ zsV}cb&=99>=)Em&XpQ0-Bt0=6Sz%y;8Hc!I8kz_4Ps=zUbA$5eKkxA9ylEWup~(-` zjkTU4+aE}y38k@WIR%f^{+a)OXU6}G)`?j`8~)D!Jt3#_fYjwQ$L0a4XLq})LPf7% zoI84rjk?iTYjpJ3RhWaua<)%SB$DGViKO(+K}y5g)Hmbn5bV=83~JK0nK+d8yKBg~ zz)Qo|xvf4=)S>>2t^Q0YI@F)rRh?0&{o&haoSg%DWq%~PV0sA_^nL(4SLKQB@O*-P zr5f|P)#Qo9+H3i(@2JGH(ks}Z*W&mbZAIKYC=j0)LdBqp_kJOYfaaX>;~tF+8h$;} zTj+6}WYD1J>ocQopUU%6&nz*Gz*PU&;8 z;Iwsw$^8f1ym!I)jL5C{70PX#weK?qWz+VSum$?+W6ce!up7Sr<>qn-GHC|l@GPCq z1j<;NPdB7pL0$z|sX~1=_Q|uRO&Q*vGe(hgsC>6Fb*Q-AB}jnsSZqmUBB!EbG={%j z$N4CK9+lpCj59;^396M(V!b_D*g|0OAD5VeW<1@LKX`dN-TxAw-8#P$ zK`zeY96q6e@?RIR-xqvAZshLaJhM22{xkpoJQMz>5X^tQzw_U~vxvSe{T*Gl!Vy_m zdK8(ErI1&a_e;Gf;!G}(nv?nz&Q97G%+g>EI_81}c7Ewnj>7y^sFI`yN4D)e+UIbU zJ5W)DwRWj;+q)vMNdwWGBgd|weIYb%)zL`IQR-m6rRxH8=V3Y28t97EAoA<#MASOW zLm=At9B!D+5A5o(0Ip<7BIfV9n7zzxK6Wxon)_s3DK^o~pK~Wz8=tyo7bX|@9A8Op zESQ^WPRw0!nU|9L0#ACl2cN81gwJZ?5oeh%37r%I_tw`ToLpisG5H*5emXvU zK6a~;MxktW7hq5ydINc{CC}sSE5bO5)A*>o>S$^9eoF*M~M=lp)eWXA&3m zk7Km6<8ZB@m-t4j1B9W$D30#cI!ykd81a7FJtB8z2*EE4C%Oy9@U)Jn1Uima_Tx1>W9%8I+Rubl?#ON z(+fC2!~O0{%;j9N@SMx2v)O?5E=Qk;lD*z&Djm`=bRX3WDRar_{<~AY& zn*#A?KNL7XXp>`ERqD`x2?qHhkD~Hnx%MZ2V8KAnWxanQ=*BfWv{uDN;eR88LJA$==Tv8ryB7i zbH@^62YEPD=ZjE$#^7Y4W5WU*DrLPjSH)cccYbM&9{@5}mgYtq#bPh(f1yyH@^$Eq z{T|4@$pc&<%=1eQqF;UwVUHnrF{v83de01wM(%aAXF)W!>eDEK5iZ9&Rkjh&UjLSN z>U=Y9eBuVDDCse}`^$0yDmd{5Z}#>Kyn(j~gOYe5jn0-cK@s#mst#nV%VtkRCZR>n zm2{|oJO8ht|MULepGojvNihFS|IYut7Sq|8`ty)rlf*paqBVWg{d@GDSEmrS=5Ta& z=nXV?aV+QP;=18^nb#48HNU-vd0ULaq3qv|;l^mq9X>9EDQ&@^p7^`sP!fduo#} zk)`yL2ZUFb7#9E$W}&Ch?K$n}_`PuiQ}G57U87iV$#e= zm7}nMkg%Lx0`)vvg~%G6N4{({;kv9zAKrcM_wEp=WUCG@YwZQ1xb6WL2=hE} z35U{udXhk@P7&|!WD)QDbBS-C63{mbCS$j}m5I_jFd{c;5;`>?K^;npGacQvWQUACt43ARyJc_$YSWcCWcB26XvM-Q`9Q<3FOH@pszY7-GK&uN zZ}b13_y7JpB>$xZ^WW_6{6FgJzy-o?1#>t+!}I+7u1)mV{2TOz&Dm@qWb?R**cdBM ztVO4Q1BCV`CFO4&R6<&2MdSjh@z#Gq@rB>f7zlQDW!g zXoTIaj!&9vOZ*BsLU>&I%AO+~h0YFZ~S~g8?z^%u}{P}Kxo6uTJ{8`AIJ*(G9D1#e3iy)x=I^9-gJCHINi1F z=pw(f#FLnd1Z$2P@xUg82rQD~ePz!l4*tB#={}o=+7_{S%5_r2F+*Ek^7+XGw{Z<_ zeCG{eRX&7|em{Y@qp^;&c!oGOxpEQb+04VJ;eyk6S=2@R-r81nkVgc5&?S)zgz?2? z^9#gfhv(_pbQijb>QQ>#@-dkFy)?|GOBxS!nup7LbmpE|h%ApJDQkM5smp?3GaF*5UVH~U-j26U(7 zE-t7(kNw;H|L6SwUpnvq>=u~+R)6Qe`pawFcX%9T_kNoCE(TwH-e6ufr&n67Y+)CD zaz!`2LHZo0@*WordoF_=q}X9S)ukLDbQ5QPzMc*Zx$!M54@mv(`5bim(I@CKr*9k} z^kYpZ+qNkJ`Jg151Eks~J&|41CWWNFJ(Ukc@5JeBAmonbxB@u4E$OlR;;{pA(Pp@*cBm+uk5YWKOe9 zy26nev`;)B+~-#~8wgo1u|5|_&FtY-^wH*=W@Fb@#-^&cvtb9So7;O&(VfL z-0`QPtL{HWSIU3m`D$(?HrCC-w@eGei!zR2a!b>Rg@;b#=WLD>?#Gs6n64K#*yqh1 z=<~){JI>-z9RaeuZM(nVVrv|@K-kJ?mwce%`CmNoD_u;okB+7s;}p)*#`}ZfF{o`_ zspy7SE*5h15CS#$!kD|@Sq66bMHW|Wu8q><$5 zZmLinat?@itOH_uRFw|(&;0*0FaDV6w=fCt;EKgQt0{yju3Vrmv_4KvdALd_( z{EUR^y3)7iT&4d^E=S|9u4%q!}edw%2qsXjeB9zCjh8O7dR;{c(0x55#qGYZ`N zrlT_G1!G?v>ZPePPxHxCJZMP@>erBo+B}%a1;QL$meQq0ZK7{N>vBti{ndB-?Nrk# zU!=~>tj|55xbL68|Nl>!_QU%L=Kqer^FN4XiJo@efj*XZV+YL2LkvzyBeACqkZ$_J9bxMP?7^@34Q5v#EmnH3(#q6h>eC4Tp%o??t?lM6O_+~vglvV1sdMI zJDF1ndDl6^?<-Pn$KX(78B~Fm*(BmW@pHtlA}<~g&KbK#plfHNaobh7_`6wd1k_Sm zH@38195>Y(h2QKf!Xt0SbAX0lPYp6Yqfk;bGcM5Z{r?%iTO}KiOdzWlqd7psd4GQY zcta}s5U8LI;R5|z{zaMj=W0y7%W;5Ei;z4zRMweK2(RQ4y7cr8Zs~`QSpTOc z_Sp3@=*GS4QJ-W_Ol77eW{d^l5`|N+xyI+Q_R}A*Yf>GU$GsrV%CI=}k>+@=0{td- ztvr{0>ZQl<^UyYG4+6#7xJ;n)PDgky zxs6Fe^)2C?T=!^rK24HcgF@{$y&=#=Yj++H-fU68+Z0lWe+vm=10gE2n)1yU;n+=m z3Qv8>{NNzGdA5U03k=Jzo0?xMog07lrK!omk#@_uo2UDGLo{*WDNXRK_a~(6d z_?8`a*y~@9Cbk;Ia)3~8?P;7}b+V{xXKkLP3kBg-N~n)nIS+ML3F1CK8idi)e)ze3fazgAl#Ym3%MUHp`4?EKo#{oh!OUGbPd6sMOu`w#R;`s(_)p{kI zcw&Km%Q}b+hQ?!o^LZFYUmS}akihhFJMw_kL&W&(b7FjCQ{=RKAbN>LG#lvO|Ni&S z>;M1qBLSHIyZ+AqqpwWpP&z-N5UAAlNRH3mE5q~UN1ZeRHS{6|g}OGH!hJAPV)*=X zZ;UYEw5mTyI%W;;E{2j_I-E`&G%HG8II zfx_7@gsW{V3ROOSJH9KKLOd+I#!H&Bh-lNDQZUuNg=jpPh!K)v#I(9?9QO1!G&(;6 zJu&tUdS&wx-Yq>F`~bTWe=xcVmnwaVK-IpGN9%wF#NydHRkMfp{}_EVac;>hVw6f4 zZ<2sTvB};0TmT8pEzXUM?BM%D)9VH5=Bl8Tp+BWKbQlA z-aDv=eIcx{Z^%O)5WaoE0c`o&_Th1KPVk^Zr7tST2O54KAZ^G4ZN4=Z+tql1GrO%9 zt2yqB7(NO{AEm74NKvBEAU`ZmarAlhnY&W*6&vm%IvXxmSxfrMllEt)jCq#z zCBXbkm0@v*R(ts&)r@Dg9ue=NbO_U4Kb{#_D6X$o#mv3eGA?jam21Yca--foreM7s zH?XMSe9H@tYJz_gvZpGmId05}D&7j#UGu2)t#o~z^XgTpQE~;6rc?hq0=eLbn?)}# zACynRZS}IPoLgnt_;L-76=}Y^iombWWV$mTFm+QE5)BUV`$zp$Z4J(<{=Kbs zrYS!hO?#7@%u63}wk0oKo)(#_Rx$_{C#iO`IkN4 z4?pi{^Bi;CZ%5Dv_6Ku-Q04bEc|hvBgJS7W84HaO-(nYJkIE+e-p~&GHUB9FRcJgT z_i)EP#DjHApj~NG+4f3`!{>jQF(=ib3d9r;sL`H@`9I_(u+QcC=u-V+)Vs8SgFpL% zN$pyX^rnr$ADpK1JUU(R6xZ)u*F9@-qbo@~f8$u<$M@HmMoTHN?bR0I?esH5(ZUb{ z{GpLpdSnwiHO(2D@$5e5$bCcHqTP#=E#{9tF_ThgNq_=MIyf$k2lesN+lUeV!kWF|+4}Tp%ojT7p3ND!k)}Xa7XsNGIdc)1TnI zk7|gsj4#BizE2#}f^pb@v@ZK=`g%0Bjm7~&ecU|Qer|uSgSJ@7=6lqhL|%V+o(H6U zoBlN)Xn6eZJikm=cz*^t*EE-tYpH{JKmNf6LOg!XMnl9Gp+VKM*r+26 zY{EHTe0}LL{H}j7d+Qo18Y+2KeNWBR;r(ghsjz?WREBS#{#c$5^zZXu`1im6Q~j@> z@L5`tW#ZUg<}k0NN-x4%mlFq(EG(b?2!Th3}Ad-GZ z22#Y^kDAewN17}LwUfU2gRbP3wJLl-Xkt344o3ECNcjVbG?_HQgc?I0*c-uzDH~^A ztOEq!FgItNV!_A}t?7I~ktP#InlMRE>UP+b)EaWH1Eek_&BqA8`oG`!91TQ7noRgt z6OWr#4A7Na|5I2TYBp&u{+$mauDnk)K#?Zn|JCF`e{3C0VK_YS2LxYsx1Es10xj}# zk{gVOG?5%>vWK+0UPZzbr>_ebfK)@$rsIx3jKpdO*8z$&88^~oBk3~9n-5cVYYDzC z4r`*FnaYBZxCvDZK#?Y6N1Ci5U2PY^uH;rz2O1!iMw-RnWPldw61s*26lpT%Urk(g z=-0uNT~o7ZfS`1z?U4==M&h0B`U8qI89l;;(m*;>lld@Zck0YKKv;ESYX}QQu0^Z! z0Y#cf{Huv8F02`_?wH{3iQv&Odo!B`O}qj_{Qr~5sF5Z)q|;(yt%_Z)KUp9JJncP9 z1(yqC+~TLS|70RQ(j=QaxXm3VlUv&xU*!6Q?o&MeL3w2s5al^H{1B zbvl(sT|`|;Ri~2FO;iJ_1(iXyqaL7oQT?f>spqMesVr(D^%gac%BMb|zNEgT)=|Gv ze^7hGC}Ly9q{OC+(Zm*strSxiBgHm}8HibkF~sb|4v2Y)`HP(vJ1=%wj3t&Rc1tWz zj4$>??4{USu{yDDVn4)s#3|xq#ihiji_^pxiLVq_7bnFxi5pNU;uhizaXaw?;$GtZ z;-|&Wi(eLJi6@HR63-Loi$4*6DgIWxPW+qr5AmMAEoBmvIJO)kE+#hW3yNOFZ7zv?$v|K_vbEcwmnzxhJQ z*^h;!83;M|{BMQ|IWJvEMY@nm6Mpk|p3;-wx1S2R;FORHQ-xe9+^>+8WrEx1BzXd! zmn;xcY2t4d2^cC__?vtI!zAwtIev|hN|SzbvVa#P?+H0+%x}IDa+<7=GHpUCNeOsS z^8Rl=5OVz5-+U>g(i8#1B_9eoUgbASe^clmK2b?{d*XuMWC=MH6H-Z9$c3YRQ$oN9 z$wxv?5ROyCJW1j0g`)+$BqsDROu z#R6WD6h7`(l!UiqB!!QE%y?D7?_(5&+Zm%YRd`!z+HcDI{runI9A&wdH@Sn)!2%>_ zoct=YK#hBcZ%4IdzQ)en-GPm9_4|4yu^dz-EnH)Ub#1l`NL~Pz*V}qMsw}GrE=fOr z$Eg5?mNz%Q`!zH)!WGROz)JO7w3Ue%V^BTcCb+igb*@o=iJmD~SGn-;o%AX<@9c9+ znnQCPld^^=Jw55I8~ReLUYcenyn6jD!B8*$byAk0ZsN_p><2wJ{XCVtYFLHejr@4J zIeq2X_B-G8X{^o&+~LRDU)!hbBW-s*?_5w@Z|vkQ4M$LD|6H2)@g$!wsfPx;j3QF9 z*OwLTn^v@WQ9M{&K4Ieyjex4|@CNxUzReEW$*S?$YL2Rr+S7iyPiy6DXz+|Q>Wwbw zLavAUGK)E>_T}87sQZJ2EQdG4*EIc@{GF^{mOeI`_Bfi3#BPU*_-if8?`5 zRjA$Xo*+;MA7A8HE({-j-Ds&FhVS?ojz7Lda`%5t#v%&6uony#)_zu(qwswjYCnH1 zR-coCz2$u1yyJX8@wfK`8mG1-FW##Mk&zBSJ~Xr+`X*qei0*=R(m**30P=EY{I4YK_r2Z8u57Ds(1q|GaH@*v4dh z&^iOZSUi;rgk{aG#{7;pVVk<%^9CqWiNkZx=cb>pM!z^|@qqBnX_e?lx+0d^Ifd@= z{x16F?0Ruy++i6A2jl05AU?t&^;XOPcyf^DO232%2 zkaOf(8~W~%KYQMRV6>x@$pJ!xpDjh8@|X9s`_67eR~Js8Uw?X)?!VuV4TKzJ)nicM zd%kivGMcfMh9}WeQ({ol=`vg(Y+>hId?Gp@KjG(xE;@J=O&&tfNjqMkOR9IPuarAQ zPqsdSUR!<)y>)ac+rz>SF%9>nYaK76XW1&Vf&SC`f0HO06mib)`d>H2ti=?lZ>Sfj z`qc51$CTp~jg;%JoTId@m(NNWY(D6c^Q|$uZDBR@N9`29C+ng?>HR--nWoPpU5kE_ z;EIBDvbU`R1SLpqSVtM4MP8e{u?|qgCCIvHPsQy0~FpL_D~?*7RS(F#=)L6018!^w3|GR1tVNy7NkfIPUlC0(CC7i2hpZH9y%NA*~sMPAiZh7pk-pz8jx zhcxN3<1-Cr*k0NNGpN%vKFMecB5_al)`5sf4^VV}*h7+ZzJC~W1h36BgdS2FJ)wyt zjD*DqsPe3-JYd^7+kQk9~?{~0I$f^TP z@_71t8lZ@6(TpZWTrW#}BoC?DkTB&yYM4JD)qs>*IGO15kvCRx~Eu65;;Tk?ww;ESR!C#MB>uA8Are+8*$L$)wTUKo%f%K52(l@?qp?L;--Peb9_nA8GQQbUxAqyOIZ7y%~U@ zbmunx4nZWjteX!SBDX|sq)8R&7;=UIx{^+W6b+E7Kzi)`0vZ%DeUl*xDAGiAq)8=d z8`dRA*{}AQ1{$D_q1}QK256CqMMZo-ktQl5P2Q2V9$hq;VtYmb5}531oy>v}S5I3K zP^8J)ktT1+T_LOaFvWwn|8#i%_Yhwt)&%N* z?iQN`UfExu>QTp0?o)gz^gthYt!t#BnyC`orSeHb%Dg^kK7au@}MpuNU^)o z#s?`>8*<-@WEyCZzSE~O07aTC8fmhIJYcp0b|v@6#6eP3NGpZNI?y7IT~UM-X|iyn z$prG?`{xXpa=@vX1xQ6nvu8&BFyd}_iv$#Dvfy7$+$FB?VafrWTQorM=8)Np1`0i<6L1+}@)-04Q&%Pfrho(MfmK>87)h3nAOS_1D2^~0)j`?}-DAL%z1QPl z3e}6W9Xrk+MlL;c1`usBf27HC@{mG02~!;0&G~>}Oh&hy7evk%oP-gPTQcu|G1)r0 z4s<2=Z+OT61a+b(oCqUfFd6xbreP7crj zMVin?nuL>frZu1^xGY-y1d?h&+8B=V2Q4z}--C!Jjjf*?Rska#-~tq{!WwKEgzN8|nHcmxL+K27<#HFtLa*6GYDI?q`ADh%}KK zVInq2+MkT516@fwLur^oRRRyO@MP{e-<}U5B28pRnv{|*QlCiBm9(+#qyd792%D2` zEEsW?=;s59G?5u;!Y2<#Z1;yL2Oh6r0fK_a7F+ZgFyhvF4@N|qOdDwuO&-A8{9y`X zqhJKULu}_nBVpvzmhX@vO{V^3#bm&c22*qs-Rc0T2)F=`=EKN-d1rq> z5hif{Qz@?~@W20#pGRZlCQ)Rl@aJd{AttuQ&E3_8B0HTz8G1WZN0HjRL1zOfc?@?O z{BNj=qD2`!N@BFcsL`V(MvoaYdaR_Bq~y49lG7$lo**SRZTfV%X|l5Nvy|q@E6krM zD@$8Oo4;V;;w6h`%u!ycylAD;qQ#4b_>}Quss3WXb_!+a0c8#_mk?|LxCh}6RZJY* z$(XU@B*%je*-{iSs<^n=C~*miQKLX_AMkt1s3{WCb62e!J=Jj6n0YSKRv!($Hg>+| z?YlBYr9Twc>~=jiPEuBG`V4uc1q&A~Ub0q2RZX3aXsy@YuyK>lW@8gmGjoe=mV5T@ zv$3_aXSyA9_we*Obols*fRm?Ap9u`Ra4|gM(&fmg>v1=3#wR2uCEv-+%FfBn%V*!a z|KQ=H$4{OXy?R|%Uh(GbyUGtAKYgzM^7Y&IhPL*O&aR)`J-xq%Dk)>(uxU`*Z-(5g zMe9dmK3w~w;e#W92`~|x@tHRPjc|)=8zBos^SxnB2Dx>6A@KYH}$^x@b zrVN(Q%?HKxdd*^umb}h^>t$A_K5fV?VdrG^3^qG%oCOvn4w|*;Huzjh_@0DA2V0lN z)R)%3=CU!iYAI;JKa)Fx?FFB0QLwWZWR~Rw_;JklWSi|M>9#N3IH|SEdPR5Cx#hCX z5lgmBSW?)K)OfqFK6pb4$K$Q3y`CBVNadmVhA799`ehELPJ{dUvIBhjO-;eaII1>- zPsr%PfBO<6?Nj0IWY0^Zn_W%OtI~s?ec7C1!Lht@yDZx5O7@bBK9k^XW@=lDWl6qi za%}sn+|Kg8?EIPTs~;Psy3c#8XYsvpmQH;sg(9{Ae7+|qgI`WG1bU=4MkIp|mXv4P z)wV57{;AQ{nVs-4qI!b+DWBQj_Bj7^SZ&dexzS+l!HSSLyYFeUjLPR$$5(?jRaMg) z^&M*_zOov;oH2NOyZ(b2GTu5LPMY;b=tmF!vTX1+;AG+2e&4H8VtS@5s4DIn>~#Mg zb-|~hxA5cYUf+4iz7nQE{OuUtXLJ?e$#=`lN?% z(e2IhG4!i;?mrw==;Pq}w7^24FBdHQ`^~iJykClCX!Jm3lq&d`k(TGY6z>uP{SM7% z*`F$FBWK@s%lF+;)=YfAv^_Z2JGD65q5O@5&v!X@i!%`_mB}ST6l#)buHU4}*LR#d zEx-exvex{x_l9%MXTYl4mA!>+l^rMh%E4RtNzBq8&!XLx!1~J3>4UA7`PQx8<)-O3 z!c7~N6A9|5PlBR@U5}DYx2j8tHh%8+UeVeC|Sw1Jjs zoFR&XgV~0&sTGHBIP@Eo);}G;QJ}7_Ccv!MQ+B-AVkV|W>^<6f6NKmlKb#%ZA}2P_SoL4j}8k4 zI~|57tT)+@%2gYJQ||gMUtTM_skSDV8GEW_ZJy^^hlMe@2Lo%>inmsDja{*V`(#hA zRjc8s*l+EA95ydn-?8F$ZlB89Le_#ZKD`ef5>K)hTFV^-j~a-8eh@ zMr_SVZdAR;d-w;c$?V#evR@941p$SXX<+{6YRF~$+LskuWBD|xyui{mTi=>AmXBjP znCR*M3A$_2pzp_1r3+9GG@9OeNGi{C!%#$q;2yLuj=_ z)aLv4v)IWgj+Q^CS0+^J+GI@XDdKo*EBGCj|9nu%I(JiAzd^Q^<6xQt^Yy^i*skZi zQ<@i^ziPe#9wPI-)~h^Ps&xB^R^GDM?sB^0oN;{^t&Ut9=#sbI)-<fTK-zoZn&OqqhdwBDmzaSv;R(K2X6dyWN*s*pz+vae#uy zaWFNuSL7shX8j7cFKck0*0890`@)B(yX|wr{5&?d`RI65t7wh+RmAMi1gm?$?1}WW zmn|8nyk}ZHORYF%ReI&E>{hTmctzs(a0Nqc$@0}@4duHmZ<@ttn%c|fpB|!oUc6$! zBR#mF%MJ`jNNuZ0ijiI|CqBhHMVEOrd30iB9CII$?4?}zQ6F9N z&Mohi53<)dmF|!3dkIcFJGXrp-9AWL4HogfzhV&IS%rJG!X4fEI(jfN+bwFUU%b8Y z;G4m+49}wlrb*?AHW>?g$_fi^T^NYSAW9XS(i{i7(3Yq0em0~{)M!;coN(-O2c}^^ zSk#;b{^(0*Y9|tcp7-Is? z5m#%!H4k=ejrBNF)$L%I;!`;T{+T_F8Ju*nE46m4YL!*jVDtO%$q!yc-^~PHyZODA$yild=+-8!|Ld3YfF$qEhK$8MFALizId`W7zfy4i>E`DiJw(y8 z?B>`ERF?ID;{%xgd3)Nf`IR;)48&)wc~#|fZGUZNDf9ghMY*d1u7{o?tI;USL;1Qx z6zS=2`ci9u$+%C;GLE=u>7$I>RqG`fJ4E#yE3iH3d`hjqOiSh@<5lN-#x<{DSnR|UiZ&EG$AN4%aN_hwlRzQ zI3Z}^@s>9OH-{)M!3;ZYGeilr)&mzA?q36ItRE~^7`$5elle1Ap*~|(&tq`5^O!h9 z(Us5B#dE4E)w=gGyQ62QS%UMkmD$beot|yMp7yH21MikTO;d0zQyzR(5zpedJJfdP z8mAHMZ{oeEg&&QI2i`@o**?m2`$oM4FdW*`oKp3tXGDJBbb&LFdtDTJpdz(Ap}0Hc z=Iw#6r@mVMbP#*pQr4-A@LIwmb(xM}M*0zbwp8I=4FYT+jNJ&wX!P)xakQhA3mVmvkpM_ceeg!B{M|1AJm& zHW+{tvkG~$R`k!+XkIbUp=UknVgJ^`?vhOf<8$J_%Vyf;$}OGTO6wr@rOlCfD)Z*J zbERxw3dgzImzi6)qQ=XtcpyAo+{Aj}$5BI+u1a1?>xS&F*3-=g6@P*ODFg@i;yFEC z#|JrTV2U=z=QOHoR9hBgW#9AOzN2PNa3M#uRtoJvm=7jbSukhl@r@56W8rgykwqS+@85q zd3R6HI*udp1vTxxv4i93)4-|Q&^J4b?f#~vWtVfL!^t+yUSA@5px(LPgBP`++F8Lb zbNh;i534`)RP|*l9}0;Dqn|QFv7XbXd?e&_RTgIhcosNVP8%qH)Nj0_W`^_6y_Rj3 zZ_714)6xdMnMIGO$+r&N%qIyt-Dd2`6LK04#SKyRrA%580S}(cgzGUoTiFqT`&J9a1kC?@vm2J7Ov@z; z5|qIfG|H!bAEG=oU|NQ~dtCpxLl0ai8oh3+)WND|&SAM_IaoN=++m>roc&D&=$xn0b zf8-9VvHUc+B)xUQ)4^v!I}H=SF+IgE6P&(!cI4W5#CDZ9?65B{?%!m+=3cHwQ**|o zwBRjY^0J&;t8#P++~PzCv8VH5~F`T+#WtJel3bG?$}V<^5(^_hUTz( zKhAu!iS)wqG)J#}1@^L;dwZSZt$!vpYa_fj?$eAHFN!zRhI1)M4}65FKHblxO(`I_ z^SrL&)!hTlDTY;EcPjUVp)#R2s`|GW+pBiyE{s(DVv`=fs6xHml&PKMk*#1EoeiE8 z(e*i%wwH9P21`^WhA5jZ)F;^n7ZigJ2F2c}YRTMJS$H^8Ws6Lo@zM>PLS9Z>X|_)1 z+luiItL6I(TV4}$OD4WK;j}j(Jbas9=aP0ujX~TN9EL*QWO}LO+NsvIRJ6Z(gMZ5I zz*Za?Z1&Q2u=Xzf4qmTp^?1Ffue{1@T;WH1aLPL@lc8k^&d)y6vVJWt-q4_C$mY&} zP}*FU@n$ee#cf(^udQW`f@7|(>55BENh+%nEhBhEm)unY7hg2grZY{GWUpj3Y&K1w z^I*2Z;LD2TwjJ9%{oI*;lY4gTZ^d4yMA!GFW>;HOrmh;IWShM+chr$i!xP^ZR>vEA z#b+w3M0%9%+^703x>?%KBOyHJKG^-3>pFe;GSNNBId@+9T5=ndcIyDwe3co1vxtJC-;bL9VF?@j!2dj9|aR$Gy!P)bNqsfd>A z%*-iKN|JV!$`&muq7o{i3sDr67Sg^KTCeMz>&luX+1hAV5+y`hmG4~MAKX5_*X{HB z172^}&3(@0T&Hu+%$di`bLPyV5#yH97iHs&fR8iu)?D7wF6UyCXYIDz54cfY&!3A)jFw-a8 zz@gGX=h&x3%obzC#ba;0HJe-SIRqC2pH21kzW-C)4USgXycsS!tT6r|OmD2a`^bVu zpGwn#sAvwuwI3%yCoT(A#LXO6cf1@J3jQ>f{o3i1Ma-Ck{quM{dcS4Cu#eYZbWXM6 zw~zLCbRCX6uXjqH;aX{)!?Sd+`*5~-*gQJ<7MD${bLT1htEPWl+*I}5#K9wUcyF&= zx$wrkji%Jb(_A~rtm1iQ2Hm^5-95*9HDB50m$zxaAACO9>4{$|T0dD$bs8t*Vy7YqIpnKfr`nR}Rn|+v}vMbWcE83uma!+~=R}XHdN6YWX`>Zg$q1x$D zX;rM>oZeKxE6xUjqFr@ba(chItSBAyRLsGZxB*3*Yn&wtg=!@Yn5sqm8(oCR}sbI82y3@ zO&ap_@o=-^M?-Pur;&moVpvb-OlG2=Go0w9uF;w$r(R~rBGE-z7i*s z(ST2+Chiuw_H8O@?At8coVALxJ%BV-;o=Uo)9%;oGYg7_7l)K8E87G&=Qlo_GnSs? z{`Fv>>A)^Kw;y~{y$<@6bVu_H5uE|MZ$6{N^5P>n(<|1P=}Wu~nkivp85SGZ@6%<0 z3lKN_2NJ~dk|qOOvu2zozZF`Ey-rPXZ+w>=ila}2dRJ$!uc-G4DRxqt-K>NA3Tlhg z9kzISJg#!^jNc*chO4FkjXmq6vcDIp=XXboalX`4njdKl{HEcD=T^CS)@67kxi$vc zxgRONvq`gia}?d#Xe}9NZI|Veo86e5_T^)2pxcX*bCn@hZd2Fzy?T=?5fX?qgh7Rd zi>+&^X1Us9Dw>sNVbVDIV7zy?orCEPg?Ei!<5gQoYzN3z2XQP`e|7Q88G9v>l{08v zQnahl-=($xm3#em+&h2=VJh}pU}HdE+~&%W4Nmk*qrjqyA7?R1ioAibqKl-?~=6#9s z6m0gIw&%T+`%*uaeZ3^EcJVwv%h7CokDBII4UJT*^pDu;UACuc(Cz8Vu11{O2dh@A z(71J$8&=+CB^xvLDLUlb;F*mvevfOXmiBpO*9Y}P=U23{?6MA14?T(_6YtqsJ9T&8 z@$ibuAwKHFkHvNQc<6Mx$`xqUO2ll62x`c%JJR4Wf@`>9X(#nOcbth0=ZzMs;YM7! zAZ}%w)L6XtGc(OFV~5pXYHuGgaf*Ie-cq1K;|5zz?PyKSXl+66_l7+lw$B3^?391J z!kyDc|9AiYDotYfN?iXB1T|!Ruz#C(s^PNQNOZx*&lls1hI&$PZGu}m@pzD{v%Gp- zt-X&%RxWPJJ(``k5qER-`fHwQJhD$~?10-htBg(M{_c6F%b(YeH6;04N);Wb8*8sO zl?%dc(3|cdHRT;&$At}&=J#miGPY$(Nrk1P5Bmi8h^cCvd(>>=vEKA`n7e|H>tfe= zLs@w;29GMG&z3jmC$_x_Q@F7It>)XWQY9K{(S12;_h%Y#r&6}_JUfToPY;WtCa3+?(}SIsNNLyc)0JrDMAYzI2D-kA)`XL*bdbPrDOiq1B%OwBg0RW6T{ z)M+lba>S17$nwT^;(S>Tb};S}D{5?w?p`1Loa_oUcl=Mm@H^V28% z;9KW3=$2Mx?pB&n@(RxgY<*W;(e2dt&3d;(owBX^IxG3`B$xN`c%mZZrfKKdAf?k> zI$E6a`H;!A*898$12PMGk#lM26h&*+-v7Srg2$JFQ4^dq>T{nCW=H2zMe$L**28N% zr^+0UAAGLSY}}b?)H#%_GY}ii>G7+y%5Y0lv5d}sI-XbFT#)$PPd28&bo|@S_ftzZ zh3C3C^$p9*XSC#Pj_=Hh`B>~n@?97c^YE?QnDHFPc|&p}HWeeYEnLHJ17z#ag->h7 zzpWO&vu*eRuhIgeCGCmGz7b%^6w1@;o5?|b9NWP+Nr>ov@> zt1?>bTC8zuOYE1t6WrJ5_D6%&xX4wrH{ z`L#M7?S)75GxC$JKFMwM@w18kuH~h+`3rvEAZJr(WTj@~bG8Q?Lk%=ex1KQGwb^P@ zaO~s6M&3K=u5C=hsV^y&ZEUqT)45>EP{jP^eK||?UU+(@hdVo5FQ{@5etL3eBtz9R zc8Akzr*^luwbqPSD{hbVS(7g{&jY$YaAl1~OPmIBIJmjXt1~WIEKN7JP|918m1mO7 z!foP!cRDTE5#Jxxs^|G=%J%ihjuv;ie;Mj4?yT9zp1Nso zR{GIhWD~ws>vo(HcHvgTZWqs3Ew(!ro#LGN3is|;6*UxmZl*c=Eu2PN9ZHhMZ^Y|V zr8O0dt#s=P5-N>pH<~jZAJk{n8#z{+xznNUi`uA0n^r5;C!YAB%3jLY|4_dQPQBUO z;F6zRimQyRvg;CAv;3UPIYXKaaY;j zP?dYZE;l0olS-+E?Q@OyD!#XTSXajf`&4|~7w)qnJxRKHzh1*_^_NhVl z+n>+DN<3zhGQ`hy#l^r!>&qLHLp?O(T77A7ucy=!CslscW{n`dAAIL8`pi!H(v4f6 z9AjLTxYk&>q}S)=85VVBS*KcOC|ed4jr<&PbjCbrs&{<@oaJC7XOR22=4H`5ui;L6 zDaQ*!I;&Rn<_Axz)5yx|-RMM_;-Y<5_dE}+&h+A`W@8OIO-kBxOIvcQY~#K2wiJ1k z^jP^sk3Fi}W5TlO%&oFFX=HD%AM3PB+L5{C{SD8sa=-7!-&NL~^O@u$CQ@{MtkW5r zwgnn5#_jJV1=VSdRyiJT!&){>9IMU$hKpZM95?a00`a~Zy|wv4J!$)W{0u$VCsyG~ zSM|EQWW++=^^^f2`O@D6CotEV`qw)S=wy|vgDQkmq zCGNHR)?2O4eXNagvpcLZrRJ@3dZC4%g>6=Rc|(fdsAa$>j@b=t>6(-brw+&EmR4G7 zn7($4dtp-7v#HxjqZ~IjTykHi*5wr5e%zQNX8Gb(RGdZw?yA{GE(lAherrAK9*r&K zjxU7Y_mT_aYz;q00k8gtIz5*UO(`ZX<7&h+y?SYZbYFLGooY}|#(3qH;?33e9{sYP zEJqr8Yw?Sf@Pwky3^RSr&~MIJ_$||-V%%!Tusp+?XRtImo?Te1vK}04d^?y1@R^s@Z?Ux5#O;fkY{B=9szEJw zZ?fHGhepnfb(gk_4Nq1ZEw)Ru^C9r_Z20Ev=3Tr#Z=*HtDzI|%?T)a!%>J1+DLxwU zZgr}8Im?ub?ce5aOO5>EQROf##=SGYyX8!0n43?|l**E@n$FQ$WwY-Z6W%7Jrr;|- zsu` z1hsqUjOJ|dG4lA*v~K*HQ{SBLLAtFUYH>GPkwsRKh5P?s{Z9q<>b4$=F0c#A%2+qf zicW2``m}R%ZEQ}$uE-IOobmk91;t@IoMMLDoC@#b;lE>7)P~;{1w@PCu%h_*xPP8T z-qs&{SKLiTq0ZMTmr)qhoNLb^B@0rmoZ>yZeG{{cG9FxO@r;yx?e(#KMc*RBH}%Wp zv6-vZQn0={(1UCoXXW`1-b)+KjUVeKrAoh>;4X`NpYFU(TFtoojV`Bdcn!prsmOiW zfM0!O7L8Uq7VzYF+CHe>Aivay;aX#6w4vF`NB)0aj^S>haS}I3)|W!9@%-MPSGkA1 zIE#2KSDbU@c{MpF1m|8A+@t$5FIShEnWmeW6^mP*v1qC@V|Osl_vm6}!!$ zYD;JH-I)4$JAUxl*!fy3PpONESr@b6%X_ZFd|GfnAG{!TNpHl?;pq6b35_|nLG0R|+*%P0|E_!Y z@bhvg9Xn8<^}M{}b$N4g^9^zu7fXnwN>R!<#_GJqMwbuc#{Gr>#W&VisgBa&=tR*SehJbw7ytrtRcDTtA>tu zO_je4CugO4Jwv4*KRTN+2e0?OZrOQuLB0vas<^Ju!k5Dn)C?M!8jU{IJxd(IVpE(m z0%D#NTQ^dj!_j5s;zNP%Ax^l|J^Zm)>yG9P*F$N?9X+g?OMMPye6I1>GVxvrjuH&| z_JY2TU!a^T7@A6my~bTJoRzP?27c@eYOw27#C>!ZEnIJmHGKA(rP{0)H1ZA?$~)>3 zPuhZ7ICU(~1GAX0xA}(7^lH-bda?EkA#97lY&y?3E(~Da;^5W*DBlumbFI`|$ zSJ3-S`BKM)PU~T}jDZ2H6QsOfkIkyd8>mv~w9cVZfDp#|R!779o^|{A=*pFO14*{|MS{n#{|AR8ab%2=kyH9K z8UyJeMDWNHIt)|bDYzhP3pXQRuFfW{R0;#S4=qDHcD`6dI(R6OCs-?}HIE=#wDLH~ zBkcVxs=aJFTx^&A6WIo9Ftf!K{JP$hj4Hq*d0q&?!~VxJy65I|sJt$oBitL0M1mNs z)eRf)I;d@I?w&a4Q$0whE*D3x(&L=>;@8O|D~vdw8fwsX3n8x8b2oBh!4*n9OB5|H z2_PRx2a_S26lt-=MaXBiE!6wC3+11cr%YB@1Fn!73&Y?Xh#@TaGl*FExu7gW8ccEX zp)t@_KY+Tc91I*6hp;e=jodEnisN#GslG9raY_n2-B-`<7vh50;0cVUJ;Oxh;~U`N z8U>iaOeFT9P_ShBFzmQA1@U=Tltq?&2a==nh()_4K&tjG7KYL0X3B1LGbNNRG?Zbq zZ(2@aWBxh+@9+Bmzp~1|bc^-x_DBD}BKgquI^Z$ys4<24trz(RIWz|9q*sB3iwXFs zegTbvbDxUAhdlNhPB~H3tm`4tp_o2~u^GFMPzZht6-kHMuKCf1lHk>-q13Eqm0zCBZ zr~hQ_-qY+RNwwd{HSb>!c`VXRAbE7YJI3{R7efAuZ@E7k6@*V96a3}4CPJa4-4*Qn zcfAHV-NKq1zAuzCi|MBKd{ID$D|b>DKyFwLdDL{5!bOIiFnpZ@G05IVXnyX`S%9RQzv@~QLXu4-T`BfBjgX}3Se#CIm}p8eghOImHgBH-{1BB zekI+%bc^-x{zw0WodWA2v6JDXa++-&dVz?%lT~W%P^!ItK$tppO%x>kK_bWO|ieM1AQO6s4ceLU|-kypUe%Q8TXWpAp%>?Db6`pu>J4`_KLf{#DbfzSr;>d!K;JU z=%h(6V6Rygw>dqBlwEO*wWdcG)=v}R>YL6Wv$J~9nvWu6?H*(Dq^28br1%`Rh4!LZ zQgWO{lsYPGOd&!~^J8b%sf?C97Nh&18R4;~h8SqS!H}ByfN{O3iH#v{_8QZe-{siH zxo$MKCLZ>?W^q5Xye5U*8#sdQ4QO|l^iM=eK7e-_O(-9~N8vH(=tK@-_Dhvh*Y`2}o|{u_kq4gruFC;GR#^)KCG{qOms|J^WwjUhB{$FeYtIKMkuJeFlY zVw{u^A{x$|XTQ01@^}7KX}JM-v?(6{2`g8UgF$B2-P-xDrV-M|rm-=E?!G~INNX6% zEoxxP_B9Zq{rN=s{sKa_dzj6fH9~}?-y>Xn9{+9!oL_pCIxL?Jq*m^yFre?M4UK_M zYVtW+PPfp(h2k9Z3!BIqY9_a^RGK_Dbc}Or_!|0*(uirx)kvEA9a+>0kP+G@T;;P{ zNco}tD6ZiYI_z)7!JrlAXA?ZmJ~d@yi0XkM$m7>T-gj(1V`bkD!ss3!je)yXlu;PK zUV4QqXOc#mf7j!rREUxp<@e|<5faG0pcR$O??+F+9wVy~?~)apul!`2@d*@05+psX z67dk(M{qE|>*HV7OKpD#dFXwd$ADKBF{bZVBaA~dh%`VEng4;V*2bmX#>P8rkcjhK`#3>=*=kk_q_^u5sjg_O`rENElha!L z9!ajNL&q;}CIBwg2Svr{#O??OQ64%o?M>fHf?osf0 z;X24ql|cL11F$u|h#orM31ucN#cv*C;Pa=gK<@f+a!VYx7_!1I1e}O8VxDs72 z(1GzwccLbbX0Y#>2^N|X(xW|K;-*&OOSu?0KjSE?YX?P$pae!$l?z^HJE=@Z+MICtJO`RO?}5oO zCtzP%6`al$q4#^-hqd#ZfGqnQ{BYftvrJN*6gRD*CQn;Q`d{X7{4P!)9qzW%$+ePX zg|8AR9QJ@*r)xmb8}FjoHD8g(l)dDFS=OMZZ8C{hlc8Q*J_n!o#nBk3_BIUgAP>$V zo-eEe&F=_0Vd_yh$*B-d#$2`+<(Td%MeL3vKk*ov!c}M3kacFqQKS|meI5g@_w8D; zBxgIhoG+PN;#G^vSPMz(^R*z*TAN(z?8ITV&n9=8SJQEh<;b^^ggolfRVc$93*g-~ z!P=|~sQ`(bqcFf-riqOq`gDb$imfn=S(`*-;QKda;3#nuxUTy|n4E&>zPm7bfcc~_ zox_|*Ekj>s;#<4mNh^*Gj?*Wv%gnr zBU@r0#bGVHl#KqCnLo4{X>j z%ZZ4SMVayBQ2gAVNs46D3|pWx&xlweZ2iwNR`m6uvDqfe+h?U#d z7jxApamEX{Vr2}W86vwe<|<(?Zjoadh8ZoSix$LB>%j^r6GIzO#|zIRZFocQE8 z2ZMU2*T7oqKZ;GT(8AxMn0x|(5&cQv~pAP-bbn7|@RY2y6C91v=&1+Osb!Kqo( zpyivR#3VmeFn4A>d)|s3LOb6Lyki6d$+Tg%^VS(4Y~maChN)*@azqJO8_0mi3KSW} zxXhWD{{S#1EQaj(TlCbJBy_`jBWL~IXUOTcB(6#b#lE;@tg50t@ zSI8D=D>Nf?DrswG#lfJR?W>_g8VBl@ByofpH_-F1k3f=yH!PLr<4iyT$Zpvrit%Fx zSge`ESSTM1zlO`u*@6q;b(xP8N>_pk%cmn&$^>%m+GB`OtxLY)ZsQp3%SPts6*xwf zDF{9ABzc&By}@;Ao1jx3+{Y$A^GkCbXJWI8zbb*scoG7OsyTN?o zGKB#a{I(PZNN4HN7?^V6K7+^IeI=BVbTddM81SmeA=t0@ggsYN0H~ar0KGaU!Zn6$ z)@sQ(V%NO3GD+(NK31DhA_^^2a)#1?f+HFg>iNd;Ysx|6+b6>;puTAM)#A zFCZKFE&1)RACO)Ad-%PvCy+q?6a1mr7f3XJ0)I0029nQT#Lwox$zQ?$g8wnUC|)_V zh5rqIH}(oL!2ex90Q&`*CLk^#g*}5P2rLs&$G$;Gfwcnbv3C$_fh~BgQ5OMEfdc}E zu!j()z*&Jv>?7ogK&n7C_7YMeKnvW)enOrI)Ce?SPa$vd>ZD%;h6Kh1g#@QyZy~b< zr3DvZe<7-Zs{{$`F~mS{gP=L~7~&|nQ_v0j4Dl5_A{dOlhJ*`V6pX`uL(&Cv1#e)_ zAzZ<`f{(E8kUGI8!FKFDj%f~lkIK&R84Ggiz zAqv^T$0zbR!~uUNL-5)OqBDkRyD2Q*}cEaEwMm0&yIpLW1xy6PP&S)8&|WU9Z_aOaVT=x#di}pdbHdCSH|H z)PRYzhv+)y1RNSNC*u8m%t`or9CI=b{-@h(X z4FCF-IUV2aRptynzF9HMnfTXx%vpGUKT{ls-ASSF4g`%HaDy!JLoJQ^Azw;}hm%F2KJIF&E-+n7IgtBTP9Q zjxrbH@HZ5~S4?Ft!}~8YRd9HPsfv&P z!BoRnJ`Q`C2Kbo8%yl@FXBy&Afoa6YH%XMa9v}aeX^ivgKIR4-i!`PQKK?3m zBR*yc(-enGnVWE^$i(w}=iXwP;~YXVE$}fPnU**W?=!9N1H-GkSjAjSIuUtutWZ+2`!tW8H-1$4u5K zw>yj#*uH%4Aqv%u8;MVSBjAa}U3Sc~r^Nnaek`YL;)L+mvt=$h6NqItdD_%2L>$fh zUM6aw$JqPan8p9%1Y-x94&=S$f%6UtB2FqD@OeF_+!7Wd^^TjAc#ISL>{^0&beFrJ z=rca(O8R0_WbbRzTJ;eJgWQd$aBB7*C67L)(1G_W$=Q?nI5Ch-=IU;t7A_S+uDeY@ z)fEbyw@zpK77sxO&U32em>{$YSVhZEw}qYTW7NJSYoXEWPIgyx1u)Lq5AM%C29IU7 z5<4GQgANl8a@kvsq-&Rv^DwWaOki^UQ6xX11@L%p5y^e|qKovGcK*pHRxm@jydHWo zV_|$GUnjozXdRf|e{!MfWv#LLSkd z_`rsl;UF_N>nE;vmFN}~7Z`qOIqTfpaYnwkG(m|e5KBviK%3yCf7bth?f+j{|6jVr z`WN`4|ASw02p+SBClO`#M}gAo4=mvfaZqMzPho)OKqGZ&n;~@TWYaWXD-=B{K<)Mr zf$zBHF59y%}!V7TFb_RJi zt(E*b?G+S!a+LINaU_?@B#`yx6Sxa-yMOkHL-dlx;biNJo18BZ5@f|lK6=kDO+E;i zk21cilj?9fr?z?ynjtwx)e2dmS(X>*QFa0}d09s&^p3+>4Ug#)_a`Dd|EJK~PYBWL z-cs^8Gm*o34OHb~f|@ngb3T_2Aqk5fv^;77xzq0)XK+M?Jh!DD#ca|h=ZvaxjcWZKOi?9Lbb=LUp|uw2BXN!sUg<;5*!Z6Ia2bT}=u>4wmlguUDbE00{T0~0KMk!u zhCx0V4H^SW_#9z{&30H+piN_71$qj$o_GQ7HUT>E$U3+|Edjn!n~1`sN9Y|l1yHDq z6Me|+85C{rq|OI?2bp*75ppZ^;GR`Vbh-=!mdD=)CP4;pZmvIZeJzW4dSMTR0h^w- z6MgCi;OP``itT9kSO5P~mH*$-!ul8dqyPMbjVy*i9|6g;~|VX%Sw zpUM9|Ud&SroBG0+9Y)#;R_C|9-lttO2RaZ|#xBhIjTX=}rzU(H5 ze5OZHYi)qp5(y622Fb+E8(g8J&!oz3P1=LJ0^>JJaa@%ap%;T%BoE~4OzL0?dsBer zUO8-3|L3E2OPHS6z78%tzmnSa(ici}4Y1!3BA|(z&sHj}C%&DEpp1mWkia1ilv#EP zy@apWuVyj^i$|>ZCW+HX|u_{{Y_nPo1R)(H@awLx< zqUPjb%-H!tYE&ug_w~hXkI`#pM#1nk9^iX?8(5itlZ_!Rx=moXr7{Td$Z4!`11%^J zdmGGrJP5ivlv!5g@r?EFq!{Z93>XJzPUjd-S&eM8PSLt03tMzkIw2IK#|mVf zCWiD*0v_cHoe+<%PJi2BVQNmP67W@(A{HDqBJ{t{X61EiN+k+LGN~8Rk3qW9Il|!E7O+k0BTa_%L0<#8GCuD&43iam7+XHw zVkq2Bg8frdV8B-q&U@jxXleotd9+j%5aCPnU?Ka(Pu?&Y9NAT8NIY@rCzC%g;gS=Z z$m2^o5f2HK4*0%M9vRFwf)cguaMsNvD5^0N=?h;1Kf;1xR8c(VmO(MPam|EYL=D0& zlNm71wi)`mOh87l@ zqnAl(B-`1Niy_YpEhDebZzd~lGU$89bs@2AC6bo(Mjh)#I4Pr|$b!K~9G!#b7WFJD z#%PpjF$wAV2BNj#GaEys-Mh}#uD(u8*c(Sox# zKgHi557ymU$A~-B0zZE|Mep+nh0ni+(D^H)VfKq;;=E)E(LOQ@_kS9K)64zYj!yG{ z&C7U}Z(jaC`~Uxr|Nobl1X%wQ|L9*@{3IdX6hnAaIx+TO92eYS6ecPV)lau;^H@-! zj2@FJ=vrVhFi^e*idU+_z;#Dq^o0l7qlZ%%i{7}wl3WIAxhc+Bv1vZK_+lNb@jDIc zBTIqZwrc2YBSuNvOb2JPpZ1kAU zh_8VAV$j`cTrV?b!rJy&*6iC$r?@`%iQSxnF8mH1Vl)NSMn69lA zAqyv+;%F?3K!QPYxaPCwk%xN@QNriC!0^y+?&R&&w@NwP7-;xkWKQAF6^`M>{iwf{4ESpTAb^uJO#lo~4U0<16R zs1}Vz5V@tF5UAA!5+X%}_zG>HwMiOjEKf)A)DW~w%s_?ys_ZM7N1(`L0kC`BRq#^1 zi^jkfSWX`juY_E&>r~vT8{m+72XMT+1djBcU}13Q_kTW$4ZYet?)LaIcx;SOrNL}b zbgm?t-a2U(>ilqx((jLgZHwnpZ8Ps)E5=BNN~SIng_z`Z7|45Qtww~oQ1 z!>^jytNxCFO$MxB=V@SK;!GfnStvQmN_ZqhTv5`|=Ai&W=w`t)Xe7K1GS^H+FOQw3 zF6Cr{M*`7ATSgLi@IIPeo|gernJv&PNft%5KV;8(`Y-D3UE_@jUMN!+r)ueY>&^sz;X#{gBd7qKw}lk=H%R>*|V z-7*WdzIzY7*W877PS?O$cKhI>!!KaN^jOfb>K>5E-b&Ay$i7<1F%9zbt3tS`G5!h!5R4nTr^XZ5+iPV<`R`Kd@KvBR?g) zN6gi0$l}au&fQPJ_b)swv&1eXW`=g_u!!8Tp9!8 z0(9ZR?R(*@B~sL@Ig6p>raA&7b`m);bAivqv4OSl^g(WXjnpRsRQtcXa{7RPNUi* z&%zk@RD#F;3^N)77um%TJkpj-pfP{P|NTo<{(nac>tFnj{tt^S)Z}s2mLH_#>w;S0 zb_(dVgD9yO3Ik+M`+{^A8~DKNEPH{-K4`2ri+UW82v6@O=qcAjp#{Gvr%!be+S@FE ziumWEz|-^S)s@?!0w)dzrWM2BZIC*5L?6UeY5rv3;dCP4u{trk=``SR(q4hHL0Jji z#$)lK^c0Z6-Wcl0Y;|b4j059ZKf>w+2Dwq)mJEsiifmn`lWRj|5#K6*(!^;OOt>b6 z1}|^rbX@(4Ua6mF@1d5F+7tCSvnQsKSLGH`z1!uNCWJY5+R}I&atAnSa z3~`#2n%)H6Z`zP1pQ~x>B4sjXemc^X$ssjjtwHbhh2&#}&xqZSMK11I$bK5CLQY%K z54?+&;IWiO&=kgkLX`w?KiLfv{Hv(#*^A)3b#v)gjd&OHsE&YOVl9+(PwIEzM8c5_A1^mbi3 zX^;|Nn2H{7Zkq`j_~l z{}}>j2_9EACb2WxmEihI*;GN{eZbz|MPUFuF9t&Q*8#O^cREBX1cJK}#L=~G;FD(; z#a%B3%^T;#fy6~<)pjWg1NN)5Kps=vvf;S}6wGdcjHVgEM7#M^MsxRd#@fho#%ehW z;$c?0c5$*kL*U{`$m7-Pr)*o1aG>qr2*PHy0skp&Yz*OeDHMGQyhHZg_vUuaK0?;1 zR-h)k4@kW`k#4APAn!k)N>&r6$VXlxaL@W2Qu1vG2fwi-zlGc#K(~9B;G^e)FzU1r)NZneQ&yjV$D$k9U~M~?Js!)(5LcsCLmr{c z%Q(-EZ6J^Blj1mTU4gm|D{?Vp<()O;u&tv-R6aeZ9+o#JfOGN5)U|=!RfZm#9GTT;>f$XR9ewwv}ei+uyUgY zoT@p1=gP~VfpwQ)X-6r%a9j~A+g1eS*{7-2Pie45bs4-@k^)W38asoj1P-Qu9Q?sSy%TyOm3{>be*|p7-MQES#ZBqAo2a?gxXQ1GU=N1Wr4#25bz` zMBb;EbjA8*w^=g=?`ejP$EZ(V+r$X(ggslT?ALE8kMrn7ciC}U#b$Xm;3&3v&2<+ zKl~J}vHu3#Xzj>8(|Qy1e_0L^E*t~h=lj7N#|$`9Pf_#NujDCw_Yxk zG_?{U&wCq_-@jc43O6R9>LnYIyLm3k>aIl&L2prHz!}suD+YCHKZAQ3_(@Z_Q*f12 z9=xs{LJ6+2fsCk5Fc2dEZ`hhpwfZ%*1FxgILKK=XuYop- zXo81n2dFyv1bnGj#%*Ns>qv$qlFx5nC5=UA(g)%)(Z1n+G$UyM`39ax9`y|Jo`@8h zJu-&Q9u`F>4{DLurd**?x{o5a6Nk&txT(#SmL9qd`wd zC6HJBKuj)i_*?(~*XaINM6v#5|LFhM-tCuf0nPz*ls}*ptA8PTiYezcfWj2L@rQG;e*FUswoVxem9B2 zfQuR~T-Uvq$>3}HWN_gG9kcW-j)+k{viyFA5Ko$kENq<_rK4w2g0~;sp|YBkdo+h5 zI_)$Hkqdz{W(twFj)`$@zL!UwkqcC_{bty8U>|XI)mf09BaM#iF-6Zpt^yto5wSn< zNvT2PHeQSda%D66qD3=N(S9z6`aV;WEU*AMV z^WLG`cdF5ZMqP5*cq-WSoq;${yf}wS_M+#D0%;ZX<8b*z3BqyTZNhHXEx18U012jV zV(@sCzn*xB*(wyqp0?u#o+j|0kGys#Jhe~)DW+P|#fAc?>Q+6W^{^kv%X-qm#}2?l zFT>dpXQu+~S`(Pr7y+G{Ea|O@o8eM7S$f-$5{w$DrJzk6NSreSnudqL()QQvyOtfq z(qc_QjspLD|Mz$N@2{l)mu|8C7yi-z+}Ha{FYuTgqw!}TBQ)L+KWS#TuCnq8Z z1=A^LW)~i}t`p3{Fz6W#kVl8aX)qcQ53UD{gRBYB$S7`*GK?Dp{h8Ad4~hG6aJ2gx z6lj-aXF5j^UW+x@sV9nwAE>xAO1+EmVD0`g{d=Do%N9pa81OWpgi;TnL2OSi8$(>a z>Hr@PRzQbOp(Kwhmy%J?zFOpUF_?2^a|F5Telm@L(<2BnE$0b2rtQVuI6s?Iy{U;V zpFBxMWruS@b&bg9OWPqcVK?gY4ky(7{n$&AJQddtLY7^aE$9z@;-$PsR(lyOV<^FOd9+x|0Hm zp>LBrBX4tZpZ1_Jwk#JzF1pJH!EFJ!HRvIu$L;l2c@>mLS& z3=tSNhSyA<{*dymc88g_BM3flhsY?I%+ao1fR3bW1Xe4y!@WN5*q;tP1hVE)&}Byj zlpW9pYX}3NbkB-jUU&_vC>yhmPumFM*6Gj~SS1_;c*M9C65rQJg10O7Gp6b+NTg=7GT}7Swc`JPB!rO4kh82j1epe{xT+$_UU;gY*yy+hH zwY$?n3Fr7vbdK+#UVq63F`*?tkC+n3IsKPsn(ClFs zg#pd*Bk*_r2&8pM8UuIopMyUX&%x~-b2%4P2xNO$2ialt?6W!HwslC1ef=jE@q^%# zgfg07u$X>UYzvuG8E}752%U^)Ldo18@JOiu;NeoC44ysH1l-g%mi4hN;%1dU3-ee1 zzhv=Wv&H(C`=kF~(H2t5WLGI<5n8OKQjC^i+pwJJmJqU$X73uJXx&aJ#Zh;BfDy3WMZ)kCc z6=2hnC2*BYE1@{Kjj+0v$HoxiVeu4_y$r523$ZaoZx)NffZkQB*chV!Wgcf_?iljU z=g=6aJll;9(j+>8Rz|(kI zZ}1rs-ExfT?vg-Fb0%}b`oxh_eJJBj<^eFWd@;c%d>!ODhSB~}SAW0xt*@CDDfh|a}paN1A>ES-Z z+^;A5d-A=%^UwX`ckWT2^%Rs$qePIFhoFDnM7HTc}Y+{s~NfCQ-*xh zji!WK4I-Pit)U>SQ2zY7#}r@vvxqMFIkF~%$M2f@TI7Y<@_+ zIQda=oDE7XG~$zJl(}SQUmeoa5ci+g({qP(7~*WT{dCGD^?<6&tu3r zUZUW8b`rAi!!sTjY3-j!D1SUUM!9Boskp9Qhk7c!L-6Ez7-gtQrUZ=Y?NvkV`XHj7 zUA~BV4y-ox3Z?lyiCV3Dg@jqQtp@41CyQjwO(RX-nN50o{2H%$lL1-ZYee^q?Hu!?$Bzm#H-^^vl;ItK~%F{WIbdxNrS+ii*)r=L=| zFp_#VTaQxqfJQyXKTBcP$xx5({D@SanoNzDyPaQPw+^vvIWBO@4nvI1qse6_JIT=% zGkM{ydy)5QZ32b#EXuCtOB6+)P)d7HB478aHnOa533BWAWk^r!_L5b96j6`UuTbQ; zWmJQgPx*qdY>Iy5CFI-pPn5a-gOqcH9@IMf0t#!?gW8{xBd{;NNOfu9kS=daqo_EI zk!0sgCwtTMwMb8Hl9lW-d4HTkrMp`Q8lgC^ZlGifwiteF* z>C7|LBqvz!AlGV)6xuppp$uOdLGqr-Q{2*{rC6k9JQZM+K}>%6f<(A2<$)e|9|t= z{?8u|+CS+Z?SGuSjih#ZI(g>3I+EM>Rpb}ZAw|D@Ba*)vTJSh}e~?W2*OHgK+)NJK zU#`QMsemjUpU)p_swUr^X~hrxVox4&bERN5D@PW=EN1Qp#PP^K-aqBNm55;WW=jYk zjNE|4O_=JIYkV-WhhHiG+RAB&DD?|zWIu!a*UcJ|z-KnH`|u>>+VS~_(T#US(`kDs zt#6$vZ6YtqUPDVkp37}Y)c73Ave!o_r89!5zYX7@s)n4Q8Y`txZ;#(BK7F{H+Ng1! zLJfOInLBGbvM0M5nOm03-@R}cnWi+Wcv3(k#olHQU#a{%@>_xrNn2Nm{Lm#($Cjdi z3|*VfAKULu?tfLo&s*F?zN6hpX^rimxJCt2BIP3}xfzZW^;TJ`znLFG_AW=%mhB?P z9QUEpe^a2oc2K8w2V5(P%Iu_WekG*Tt_h*itqKKTNbA)p{4*EmNRp@*o?G6Fe4X3O z|1cBQOms4|F_SA+BwypNAwNl~`dT%thQl!fbwiD%pRu{OA3#g)`40TaLU((5A)6(zte{O;uN5 zdN%oAw<>@q+R znYzFnoI+`Pnn!hcA4a*bHk2B6K1%?GJb%U%R6JuMR>V2lnEk%FmArK|d{^Lv1$o6= zWn^tw9Qmc=FUVkO|9wv67`fxYmm-bVa%9z4Qz@a)@3>BnMl=QUD1|+ZE%xfBhB%+&r|M6oI&zvxjPx^l>!iBA{o|htc6qJI< ztzTORre);QO_qr~iR@WrNam=TkoWAoPhwtNPYy0%=~y4CC;c_7T@+2-tMgmY1zy9l z8q%|~e&iJv8<3A168Ix~Cn2iW@_A-cQphIBhmkYhp2+)y8!5h`BNPX7m`~`frleTu z3-tREkp6ws1V7HrKsLGw_?Dp$$enfa_bZd{YY(0z@p&@2|GEDEw`$w}%7=mWzx^NW zKV1jmfsy*MG77=qfpz#Ft7X%*iEo!`f7jh7(2BE0&bq%5fFY&l9d$5^i!9;4JZFV$ zSFcCZ?{y-jSyL&mGN)5iU-uMky}OyLxZYc5#|wnyajTslqA!P7svqE8Fx^HTcrB{S}u%G?Oe{H|?fFB97#GOGUVAR`rk2m_6p>DNUXX0E zA#zJ~4u!tp4b>H_N8t`%J3tFTe*HwoY{A(J#h*JvDZ%=a5zJn8ttsg(=&uL`L`d(S{z<#bz{MY9XH%!;TtS_Ei z3`Qv$D!mW(^SNyMcvj@q7Y~s8Dnbzj&JEMZhYU_NQ&#S+q) z_GyB@995CLUtblyzW66;No|_8aYUicuQOMZX3bIi=llQv8UO$55d51G+W&9=X#cmY zUCBik+Q{!pj*;a@pOU|~sOlW=)*(;5s?NJ`-k3CF{|X9glN#j&eSPtT2UjUymM%rs z*1I4+`G4>i&%8>WIhsnkdiE}I>RLH}%f1Z6U71%j@4$KTiaS)&bIn8WY`>-=u%F}p ze^sj5*-0eKes$_V6mou}jBmY!gu8F1Oif=y@?J?m=;}-PQ}q+cL)urV!y4t(O16E; z=-xW&gP~Q(l$Lm;YNLmsw~j<<+Sts~FxR5^y*yPs>j$55%sqpokd{xb{E@*UuaHC5 z9JJDL=^W?D7twb{G>T-@{*GMJc@-kslZZ$ zdhp~CYEDb7;6b{I?(Umyf*n(1D5vWy1>AK_$Zh*>0T?p#*_Gm1&#wGjcPrG%=kL!k zLwvrr^T0?hl{a9okx**iLQpRe2p z)6QUrBiRkI6y{kQMDsxk<+X|cFiMG0HN_!p1vQwxlUf%npuRi} z&l(T@ow|6>{Ng`f$Wg2E&hP_Eu244h=^2f;h5 zjm>^RdWJ3{<0cLKYf(#(tzQpN>e9n0O9%cGRCvEY%(7y*NMnMNju*)Mm z9C}LLuU%aUQmxjgFB+NAB zXOb~HaXjh1+-+FMUNvQ;|4w-+L3gJmd#-t#DmCy-(=N@(bm z3ELSRE$CjCh%8Z2=YjpyziXkRjTx%qM8d3a%|yHjIZ%t{yo_o$Z@;wYh07E$k-sg)cw*P_Omha$@_5~%J10|6NF z`c^gtv$2+^VY$U5(8a$eEpnR7cf!Nc@bsl+16imZ>jKne_5O zF&L#19!~Z`A@1k++uP-b%yP>|j_TdyZM&OFqP|Nm0@K+=${=BezFJLE^j0TX>F(fD z*{8@C?ylf@AYmk-X$omtSqbTd|3b1;$R_grkf+G$y>BR!znno_(vpxrZ+#_?8m&TJ zAO>W$5l8Y3-3kHN&+P^o`D$SnL!OObHt%$(j=}p+Kj&Woi63<^+v+lB!v5*`ANc*h znFJC+mJiR%-waRKPlspnFNLT0hr^TqrxG3$nDC#3NuR;KfVF|OgLSOBuNP-NjVLpD zGLblW^43N2%TR`?4GL!>>VD!J3rJK!9U@kjLJqxrN=F4KW%GJ*X8%nj(Rd=n{o_#< zgb;Pmqw=2ikV9|gnxH_bBBp;AanFV);$wTVuOJvm+zuj3OEFJ`;?WkMR1p(Nk)^29 zjgE;B=M+E_DhN^LAB3QSXhYXrIi?o^U)nw;d$+t$Rlnk zP^!p2NfBk#Pr;0Zh4?JKt^y=(L9P7^S};$P)>#xNRb=nqMSQF6RIm{5&kIU{L@G+t z{)>fqqR_o4P^yTrq=*vg)SqsTg}73-l>&(fO1FSh0u%Z1tpzAmWRIlCV${*`pb8e^ z9DEH060K3^Su7Uji3)mC3Y02h^mmb?(|-xZLY$rQRDi?-sPh#3Jc$~x28VPJLrIZE z=+RG;gP|zuK8=L}iA&KH7qUw+&#lSJT7XjbWVfWqLX@t!6-p9NdbS4&B+f+{H&?V^ zo@i}&dBgu8vP)7#5%rdhQ^7)fS8lQg5@(>UJE$#~C;DnSK>D8SloVNjx^xDpU?Fbl zlUsnqnW(30a4F=_Xx32_DCOf!1NRZ4DS>E8w1&5QI1}B8KEy!cS$N0Cb>b~z0x^xq zfj4~ci4Td-h_8rs@OF<@;#cA~;;;-6-t93QTC&3hisqh(EsWG3StYw@)^ktd0C>&LWO7?F*ssz#Nmj?aT`Yh4i=6?97#Bm zairi##gT^N|Na)z@eO6*$i$I_gN-8_2M0$Ej$9mfaNNa_hvOcOd>mXH1vmyg zINETu_1$9Ek4IDX(5z%htp2*E2r>AvKPchjdT$d`OL=;SDpBc1OcI zVI~p-(;z()?E>lLXm}6Lq)RcAAiWqf7t)Xz6-fW@DPM?z_ti`a zje%+5q+2nDkVeNGfHWos4(p`27;i}9V`U)a#LkBFUhFbR^J3wRH|zYbEhcz92a+{So#vyI$_cvDE%$J;}?F5Vr|wef+F zs@{eHNly3nB1qBOYarczdmE&BxAh?1aeF_c`nL~3>T~-Tq`%(|fHXK^3Z%>gMM#4Z zRzZ3?VGE>z2`Hoi3GhA~xswS8A@xsyBP(|*0gkMkHw%ue+;tWlS-G1mII?n&S#V_K zUa+W;K4-y^m8)REk(DcF!I71F#)2a&_h%v;S-G-AII?n;i7JpjN`(5CYfMB41o@ST zQ2+9q5~2R(Hzq>;%Wp`8`j=my1obb!E(z*ier?h+NY^Am{mZK+LH*0CCGCQgngsPP zk0wF=%WqGD`j^*BCO~>78R}pDN;1^Hd{{Enzx*G`Q2+9w$x#3D7n7m>d{mX|W zL;cHNN)CebathSHe0&Pjzx?f#b&w{cK>f?JQlS3jlTx7m<@;0Yp}PN{82>xwy2XTV zI~9p{d!snUaENh?Phchi2N8!14p|(NaLD11$1xel6dY40pzwcv3p1zT+nbJK1`Y)r zGjYtqF&oDm9CLBZ!!aMn0vw7s7UEchV=)dT9LhMB;8==d8II*RRB-%)V+D?tI9B0U zjbjatwK&${SdT*$#|9i5aj4RrD?F5URdOx$;)sgVkt(7oDI$-0QB_s25J#~PKp-yE{hSbpVjk8|Qwvb4h=!zy9O`wDjTJ?m zW>%{JiSu>K541yufF^3(wg*ZT*(ND638iP&O@z3ty;uqv;xg1dU|%rg(8SxW0O=xI zB}HV>SO`&3x8FXJ1vxY^vE3dhbx*cPipZd@I<6=d;uh`Q0wiuiy%+5* z#XO0PD_B6OBAX>eh^TjEhzb_sU8|0T5VdrNQ~X;nPm&T0J^zEquaY9LjNvn-6btdz zw#G=bLY*|evoKGR(RCG|)ICv`5Rn^4U2@s>ScvP6aEx&2?s-q66!Rn{EDQ!p71<;y zB1Sz#z7rwzDVi(@f#r;Czs|LX9GcSq0i#qAHA#^%)H|M53Pn*Lqs75M;(FBg7?vTR zsc=OMlq#}OQe+hMcKcikMNyxCEx|xIPvlg;K!$*(75AwCrHX8j6d6J3ODC!i_3_}g zKnPJ0b$+`(7;;#4I!Ka3tb zvRwr>g1QZ_ZUGV(qE0?B!I&pKTU!MvW%GJ*>m@~oP*+#miI8KDFPB0HQ3bUujh^si ztW&fHk5rL$k|Kkst0)vJih8SZN`b`bC@roN#XK1{G!>v!k+qT{1E|M~@?b2)vzg5T z66fgtxV@?r^JFBO+XJPFtdSJ?fqL(_5{!lT#Q3p*a7cc+F2HhV#$TQ)K&c|DB}MvC zhQb^a3vs?LYylD}=)pg-S(qoI??EY0s>muyk?*K$RF4W4a%}x$dmwQYYCEmI6!T=- zyaq@YSt%*<4Rwi-4aP!_MfhPP&O!HZZn7{>mX@|XQ0ktnkQC`d{mDI)($`~S8-WTY&za@Od*Fb9v3b{;cCp|3GlFK&tC=D(tc4ju`{ zHfI0l2aHe=-XEM)Fi+mmCn!+L=Jn!~|C@+$=0u2nGA=R)^|AOh7=lsmjL{aLR1qaf zkq-38-F~bn>eVq71risaPQO=SIh3nD(c?=MSu82ij?yoj3&uixJC3yg;aqnx*Du99 zLcLWgK&c{&Bt_a#Mz4-N7UC9t5+n49j^ig=Fptp51fx`ug_0s)P)5oRdn|$*qQU&3-|=~5IRT|`k*rGy1VQF@)53XnJpJ#ifG;GR}HvcMyCPZmgud_s>m z{MrIVQKvRjjL@Aq>P@o8JkJ|rO~CB=W0d<=8-BgS5kz7x|6M2un_lo7f>Lav5toq zLxzA}5~>FSrHagv6v;pxUad#55YN*Y_COfAiIxvh$e|af)c~Z6%$5`hNBvJ4+G8On zj6SFU;pouDxmXT8|7S2jy2va^5j)gXJOwL@`pV5v0b-}UtQ8CMaP2x!pp=jEueASH z4b0N4f?N-t6a7i#@*i|fOYt{mvtFEm#OCGaqjc^=du(HFy4P4h;(qkV>55>?6a7HX z9w=q=dU5)aBJ)s()eb6HheK9`nTP(g8>p(UTOJjUIQ| ztb&DjWF5dr`~{scGEo=knF_BK@JQX0?SB{XAZXb`QPi!Qh60K6(0R*N2VeYhEg5SZ(_&f`IbfX2<6sA{Pqx{@L@(POD;EG&evvoIJ)oQ*n! zzO%7Wf=O++mQ&2ATlePz=9ka^{XdFDI)($`>#`?s*V%>T=PcQ z#`UAhg!_ej6?Vky#m$u1yqqd}V)zhj14bB40~H`q6?L+42*x~dMqe?Hl+EkKDg0gJ zxC1_)Jl1Vh3L)5R%4#SWa%hTcWeZTM$P7slIJ08vCqjJ8M^qq$I8*mklZXX5^!m6S zK)T3u36V*|sORp(!B~j*%;zj1)TYzSfeBCAf=J9Gbx)>Aid3SzwqF#XvtSHK;axVo!gIPcSEtW%5)zeU*)IFIZDUyXA&eLZ> zQPjEIOa+MT3A3;T^W-i|U;(9yOqLW0M;#pJ*kd8im4+%nI6A(Jsus*646qIcN)?fp z6!Ayt^S?n!7^c?Rv4F5Aju-n{FwZ@m3o1aVB61QUvfb#3nhtv`gswI*#K8RDY42wg z^TeL(Q~^pAnItLF4(nfP%50fN-bP=MYh&SqB zy08TcIs97I9thu^ahYxv3^_FH$6gdDWl#Q<_RrzW5YYm9auuNyc(-=Umo{MIG)~Zq zBS>z37fL4|YQZ+|w6mn>t;}RB7sz}h^MO?Z`_E?B>VQ4TArm3F#x)Ywpk=-ibkt%XpQe+P5`K6=< zilWEoSC#^?<&5B0DCS9=cMJ1K6$$*i$nn0;7A)lW`nOmJ)QQtkB8quZR#pR~i=2`a znT2}3(YMD!jubt^NL+_Ho}4(x(LYxlN5La?PXZ)G6j1lZ?oud)q zC#q*R=8-DmFDXJqkCV1RNvK%vcPs=d)+uIC1@mOR(F8~rIVm9`^A)8l(^*)E&mK*C zAWYqz`|trX>(-4H@JQVgKS_~V^!TX)6pEsrA0A`G=DK^TCp=lZCe9$KBEEkY@m%A= zf?(8()ztzdZa|%E??VPI-DT%s9;qTek|M9rBga43Ls8VJY2v_QoygOIV9fKd_e={= zs))CwNF3^=Yy>6YJkd!}0TNfBPL2y%kV6w*C$<2kig-ziTtHn1DknmGUQ8{85NyQy zUf%*alzl%S7$`;LUupk!MvNsVvc#>-?ik^*D)#B-kyiSPFM6?_lAC9sUfi-$Y-2}P zvQ&U@A>@11j)i$1#2v5)O4+<#>$G5=qA8D9K&c{bk|H^%O9?8P3DJsS0i|qSFV;a) z!~;EUc@M=xT%GFdfmm-EG0MU`uU3u#q>CJp6xoS-Quo2~xzQZj0+cFZCn=&0_d@4FNtiGP>Z3qt|L)?KEX*|Vj&*EsTg4;a`J1|geRnxS_&SiBG!^3_2?0c`z$Dmx*t=;LWnD% zcYM|YIrQcd2aHlh4oHf;M%}GvpjZfFiz-G~L~xYRv&TG<%~M-|QbnvJMINIrpJ^&s z2yJo)7DD_Dbys)8a%i178>18vy#4=1kQKClu(k2uL z_f-gCwUB|HphGJdC}l_VVl5;^_^6lb2Nf*j_>A|ZK$w5eowvyz^Mtn?4+csVk^D^p zAs#()D!T;>aes3bFfm~@*u%m+5jyVnK&c{SNMQI+jE8)WcDr zR1Nqof`o=g%*RqJg03A5z%*vBYf^z6S`_by0;OuePZ54{!A;7=?{P{Pofezb6GYJcb*q`5P=`u1~y?i{K2n!bz2;+Z^ zw-9C<8tgWJ69G;J_)8dXAnYK>Pm+_Dn7736ti?&HZKbcKLZG zhbON%F@MYN*Au6#)Vup&foWCGs;x&n&rF@BxNy;8rPXWJu3N9VO+!;lTZgpcH+_Sh zyLKCznOj&|9k8Z39CdVZc5$V9dHeYKo%9bld+vP5g^QO$Z-n2Bh>W@w9g~!tlA4yD zk(rfuFP~dbc)y7E@X_NZPs{#%R{pxWMpRq(*PHrx?>~HO{q*@uTYGQcx9|Nw1_pX9}kf1GfoTF@r^-_-paPks?D_OJT9dz^sOCw#&XlVZJUoN$}5*KV`0 zHJsV3u_C*3!2U*dgU#D#E7&%B*y7FrkB6NG)sKw*DXn22qvmy5xQI^LjkFgpMSRi= zM|sWaqw>09)l@sBHsQCYUznv<1cFQ$d{bNSM#x`LcYa@A<=PR^Qujka-yU9P=80mL z4|CINE}NR@&#zxK!tI>Cmlok#VXC%^t6CkI(zw?$y;{qRmP`+0$JH@EbdkdK#tB#3 z-+C15ySa`NdOP-sRXxXAQ;IwylP?MV_BsvGH8Yf;c-ESfRNC{N!ix6_*38D7H1&Q_ zYl-$y&>xbHN(u|_8(WLXpQb-=r(ft)7{hElVXkO4ptf;M2+wG2|uiv z-&K1q3kQe8$J#>*l|S{c;ZsIUu2ibwuBf?bqOW<0+IebA&1LL!mWx)@u=mogyEbIH zq?t2JG`xnpM^BeodOMC23^`UKHC*=5<}cs7->0iL(KgW%Eyo(kJ_eO08U`X|b8l0Q z<4K=_!B}&%pGsJcUe{zsd?=8DfBN}cB(qC4PLE>>gyd8A6%7Vi$z(%emt#A1s8{mp-gTXk#>3*Y@81Y~>W*!sPsh!d~)8KoSA@1~^R?|v9J-^(| zjCN=AC|^K6CGKkPAvaHav|O9o1g#MFx)E-;t2mV&;5qTxLPoe>FPoZW!S}az!N+Cq zg>z9eneJdYGf&udT~xeAx5=H|IS`XT^EDP<-D^3N*-%2i(po|fvuRCtA99V&(xkhY z9}~?p^V`okFuan{YcWoM1Ja)C(PVWi(120$Yo5msD_9oJH7N-9$zI;Y@xS^ccW8>W z)`%KSI0H`JOJ|vN3vvyevR-TW>popRI1B-_`^D;FO1G6bx;k4}s}?X$_`SjR!mQD0 zJPZ1DS^_V2HxG_sS+8N&E01wP$7QSFcDvp|(V@cptFb$ZX=V8yZ$&Yl)tNPBF3E## zZxrLWE2<+?X`XQ2a&&0%2JP$lS!-a&w?53K;n#as7SQtClR_O=YB+VU`8$j4y7ffg#O!gxa$^fOuSeqqjWB3I_YV9> zXm797p&PDC3iarz%Tt4_CssGt>4pK-8A&m4C~2WEeVo+!$s@nr%H($O_N1JT>^Aj4cyVWaVq57GYY1p>_=@E3}n*Eg~Tg}z>YaD5hGPQZT zlUvenUF{)gLkegm%>khe)yxksSP9+c^`{uu=}mbJiCLBjz3rkU9euTdy&``__LiDs z`L(o5kzrhqcW_$QjuUc2zgYO$ZW$*82rhr^bne|z?(r^moZy&i7u9Wbd2pQ2+Iush zN2!0``5R1DQ|_2%PF^c}Q$Wx1OP33u)aiDr)*fBnCu{e^UG>Ga=B-x6Z5-YUO=w0r z9K(F~q-b7@NLd4_{d}XFOY_%1g~JLbi){*Oau`7e8d@D2Y@z~ED?{u3w{%(#MUAze z8F{?0&?ea?8Y!^N=Ce0zxo1YE&}i##G8ZWH{mBuFPMKEMrqHg_Qfbky6=s}W`C~Pm zHMMD5%@y`@y?7(c)Sad-4YW4j+HYEw#vG2W7-`oD>fh}uzDs|R(U6=~o6y_!y-nP? z|2jRNZSjUKPjgc|m@gB#a z$U+~H-B2H3JuEn!ls-Y->iAulg>}hH@x>4apGQZIPJ?jIN}`M>L^zAje?finCtUO z**6@t0Da_iD;?+x%07B`&J*j|sW&=u zevH((bHXUXDi@F9ylYhZLpw6gArDBwavhe-pgj`c!hO6yg>47Ijk z5@YO3M|8ezy>au%My_T8oIndY#fpsjrRi|E>*0Kb4^Z!*;h8YI&hG-W|1M#%rRDqT zkqR@l)*Iu5xz&y(dE$Qa$i9k^3JYgmK6`j=_=-QPM0}&G&5YbNJstkc1-Z=n7{h*# z{Ge~$R+l=|3d`!$#tHitbT`jPgWa^S8o9Tnmh(O0Wn*DeZgil{IANt`lJNVRtjd?8 zXT6`oneC}|?BsS~HAlDOo!eVZY%8sRW7?JMv(-l@6&O*x~k8XbkOpfYe zIj%0og$D|tV@R(HvYP`vFxMjU*+5o#bw-+rA=mGba8uFp5e`-txg1goErRZtS(|2= zDaz8PNBNL_W{Bo#>{w~BTPdk=pJke`Da~qUiq@zRJ)$9~FXu~`_!`&m2}gW|TdvuC zmwROBh0vd_dEcX}np)G`m~OMxcnjx{o3AZ5A#+yyZ6m#7 zbRGN0sR+AwsrfJmf{zyM#7QuvWeuMge zI}D1i*z_Ux%ue>FW~EKd^XX6^vv0JX8b3~8DCUo@U(-q~3O^dn;Do40%x@bjp z8$K8-9NOM{n)&|lN@lEtB>}}kkVNhw2l2y4U)iNox`L*(xeCENzZq=?o znoDT>_aTiQ2S2*;o*I_lAZ4!dk=^;*sl;&4vG%sf1Z*AEJp59<{Uz`5{)-batADrnM!4$aNsad{b zqg-tw{YBK;D2}z(*f!da)tOK^5irgvrdwj)c=xO>oaob5(X%T}sv|>EImK$iSM8ja z!{vo3nr|X=PF^assnySeCdoCut(3aa$2vLVjcY7S|J~HI81&KgjDlhK-|9z}WtBfJ zDG3sc@4J?)^?!Z()5O4Li`B%-uo63^ed4~loY76;;?-Kr{vJ{F+uA+--`ys zT!;7c?Oa;k*(dHBCzQJ77E~Xp(b%vdHl#tZ76w!c;le>DX#d@!EpIJrFTc0lvFjW4 zf!D|Gk!IC`?vZw`@_YG`=DsnQg@3?Ko5;wvoK-hmmA!9l-KwGg$&6wWT^F=}PX{9@66^-)L2IN_YS(U7n;Y+r`0R^`E` zoDBct_cQ{dI0c>bF=5;LePh!KxRFk7YsLxbyE^g){j|EXlf@lyO0YPmws{4zEiDa^ zaxJsPZ1VoQSK1w~3qxWTWbe=Is=eg)S^eUMLd)w+{x<0Uu3By6zB;*D_}*~^oOYz= zc9HK}nQh5tnN_FT^YVw+-z;bL)P4?5X~@{aZ8w6k>#~{JUar%c%w&2V$83W+)*h5I zvte9fuW7$jXcnoN-O)Nu*hS|Q@YNL_Rwj=Mo03lXBju^&(^q!YJ2J8x=*#EVXGgYI zeA{5PR=%6p>`yOeo40dJRk^#eMAfb(lk3#gez_k~Nn32?sTIHcxo|+VzfPc$<+59u zuGvI;*2mtkL0wEfP^oOLro7eMjICOme&Ku38b*T~>&BCksu|PxG5aFZ#Sh|{AtfjK z>g(Q{SHYucxu-YxbV28GZqqX+k57M*INeJ5y^+6Cb8BvthN!Qf-4Fe2C7dRfPjiG{ zh8>szaINH&6IH5E(Ed!=b`LgrNOY`O%^K#D>F#M+%GD)2xbt`d<$zD4cEfV%5MenoY)0(C;c#oL;L)qLFTtg04k=q!S7Fj;@ zXj+P8rbT80ROCDjD<_&$D|_>n&g|1hpLh(eY4P-ja}9V(UE+S)?OlQ8sa|dh-`$kP z3E9?)`e}m&P1^4olsakO*xWvw=XQe&cF!-bFnahbI?oeg%I25;zlgf7feZ*=1gYrU%+ zh<>N7+Ld^MS5&Fz=tv(jd$PQ53)Wp{b$)Zd`k zHznA>=AI10T9Q-7n=HlL$%EN^AGUD#E6hHRyAH6e9(ESeLc)w%>vFBevO?k#0EN8pvUSG$I=B5MCeJ{=3 zKIqxpyTxwUb=t)B`d!Wei%iQ)7DvM(qC5*L4lQ_JOySUW2}A3hu8L(xHC}8Ps`XSK z(RkWe_OaRdQ@zMGit%t%_{1{T>R5%ibH}Jg?I1(&a%%etW-+!&GR)1EVV(2R14+^P zTN1p)ne5^ovis`~Id5p#I_TDoJmM{H}(-X9{4yB1@J8Jb4Jq_Q?3Pk=^&%+sZd4)rf1t}#LjH*B0FtEt!esq^xcj0TQ z)7wg=QITBdmF{;rO!L>H71nhgO_sS=H#ziqti3vt$AGCLo87A+eA5pDBfV*{Zf|{e z(DI!HA9lxzPwjwSt$B+&%<~TM?u_PlZ;FQ}n+VF@YsBOvdadnwIqlgvLB^}J)YY3tz{#X#>!7pMTs(8fK>RxrFXy5Fet&OU1jcDEcQ1p6mccClq59Zfewe-_`Wvxn+JSV@A`pp}W8&fsN_A0lz{&|o+W z_}NdcdNJ&Z_cImi-Rl>)-YXEL({>d3Y4uvBrkrwnR-!VPn8Qu2?)*4bU+`u_ySmJl z!gJqY{*mV6JCvMFZd-YvzGPipoqKTxOe7Q@Ck!v}F4++KLXa0eQac+?8d1aGG)C?4 z@_}SGXu)O4xenHf3A|gCCikp1e_+hCrPt2NE5G}48H@=2HsgdhxmqG*AtkP2)-6tv zpT@qlLBEQ6n78B<8o#pCXxxGgyAKi9-F}|qgb$)K!Y8)sXT(m$S4XO#%FFZA z2duLUZ>Z+w=bNp+`C}+KC*j@qgbo;S>BXz*7MY4^w0p`Hx9YRm=2hH%%I4*wRSeUi zoBpCnh01hAUW4(7mwK;xLcMWex0Md(*=M_L314e{>%T9TZ_+5a%w-mv*|z`jyjkPu zZmsy$Ubk0V{W@?N+pnyAKMT^^KxqHHuB!PQ>nODY0}+?KtY6nHe;?r_uoX6Da~o+f z?yXn7PB)6OvpA*ty$|&|{baNS`>&vxm5ZyoSIj6mQdtx=7SH`6vK0H|=iM*z z;7{9jp@%k<<6pR|lHYB<%uyq4$i-Tdqmzk7_V%a=zam)jBAv7ud2)0 zW5`)qBarjHdG@~dYA14zHny@EA-Y{0tNf7NnM~9jxpGblwJP^N^Wm{>yw5ViuJU!2)kBV1l6@@sv18DU`i*7vR0x;2 zg>NZeHnX+x;4YZZ7>kwK`aPOXQXdF;71p|s_QD)6 z^Ls0Fwy-LewYcF}RpE$5d%cnSJzAS(dRW$ThGo(X&Xd))XXy8qh}_p_J*+f)qG4kb z>UPk4?psTr$|pzPzO}S{9w^iY6v^?}&v) zj;=sN>l)TR?7Hf@g=LB3U~;x*(fg^JEQD3bV{e&Vbt)X5qFt9rt+{P~O_Xj&OfuBv z=dsVfTa8pfzjV)%H1;G@F)qLT^!)uoe;57;TihSu7t-LHpv=tU)^PT4EFI{#*RW4; z4}==tTM}_(y=wV0vnQ+fyvWND;vx9dJH=T;5+E{}H0abfx$7^o;Hx;lTf zUSSw!=8Cy7ABK+F4X{&dlq>4eJ%(L`!_(^00?DzysbprrBJ4uqdqxV|ZS`*6-N2*w z3eI}1&i*5B$H>d5!3bE9n0!%#W4Q0TYtB)Z#ePfyx1!_tP-Ir~*Up^XM~9;6Jgs5F zaYC^rED6+^GauO=N?0D>ath`mw~vV~OdgKF7G%}to9yg0@e}71FMK%HKjs)zr9F2G zT$^p-T8Cwwtj{(OIcc(|!PsxayB?ExJ?mV56vgzqYl)5JUY4+JfgQuc_1CWIhOzb+ zHEQC43JbN^)`n3d%i5F%Q`MSS*Fc_Ml!7*OBWfp4oo=u0dE2z_Vm{ohII&!O-ge(( zC%eHttcakmk#Kdk)r!2fDUGw67kQmdTd&+D8YfKAY_yIVi}~I)IcdnGX5Pzb=}7D~R@_B;=0!;q11vT6(nEloenVOnj z-9|SIs`upVV(-1OROI}XGghzEDCAp59e>NIVN4I|Ea|89ed+t+SfAgl-kO&0Goyn` z|Kmh{wYym9^_kjy`+JR}+Zs)RUecQ%iABzV2>07BLJP5ST27w=MaZ}Oa2F=U={CAQ zT$>#;Vww_N+_swDzw$!URY|}vvzkkXS2TBJGq`S#X=!=k6(t4XBY7LFY(F##>+8MY zas#QqlRAPer@vO)mEW#8%5{DO@4mz)Z8a;gOVc}S%MY}Bb43{+*i~g#Eg?Bi6b>Aq zKi@Bk2uT~!t=M0oU|w{gHQRkk#n=u%x!If&32G zgJTOvH#|bT9OcqOxl@jbED1vvcJGF){KS-l9Xoc08@u>v)*~@)JFM&6iXt`Gk&&k? zEDO}K#ddtFqgTjerslo~OF{1Yx=WEdx_QTrj(uR}IEoj*%_iN4v6Q-)?_{RvtwHlZ z4PDfBy{%)cKI-d+v3f7-ERLm{T_k(Ag6Zw0+*YwljH~+Ex6Qr=w9gt-{A@ZMp+6`b z%jF+h*1SPu`D5;1C#woKg~Jr_VspUxOg|I2^FpWX8*-`{TP!H{ob{uG*1y52aT?4{ zY^p47wSV>ToyJ!Z4JziV(4c}H*mqTHnrwHh@}Zp+)5`cEcirD*+uWj`>#fsxFW2BL z?5g!PWiUjU^W16Cmaz7LRVs|EDYVj2JJ`f{9|s5XrGMP#?_3#Pp;8!p7qV2I4-|fT=g4pyEMpoKV_S6R({Zt zu{47QCAjb`32E8g@+avy^6)ld-65&m>(B)h$5_fGzvyVGe&$x zyQ!U~H!=>^5i?wcbkSO;A$x0OvE0G3KLq!E7^HP#ixEnh`25m9ShwZ7r`UDfGl%tgj5K zmK&V1)z;RkZ#^xr4sC6PF|_}0KGDqH_6MBKIf0eS#^~oS2erBxXihAhVN1hEx#zQQ zY8ExIev!?cR_P~wjq3w_IJ-D->0FNWN}IU{u5g}MIj}d^e1E2x*HwErr}hr~^MJ9c z%(eElJ1s98mWF-X7j~Ox!2)?_jeEMuZhif40R1hYwl(z*CdQva-7K6MS4H^Ban>p3 zJmntIV5@RhaFkuMx!+zsUNl2;Jy*V_G!*Wcx$Wt@gJ*?y7}LZLVZt35-&~&hYc|NNhyZ7fqjSM|Ke|TMnFf<-^&v5-sGnb^q+xyg9uc^79+#osjU5?Eq z`a?K}4C*hjA5hnowGN)?7W0{3j1JQ3j9Tl@qzNjI=G|hYXD1;w9}i~ z*CqSx@Diu-#|g5}_{LYq>f5o|T|C{9eFApxtA#JA5N6h1YNkcBhc${tBi!uRi0q16 z?MAz`c8W#Tv>Tyt11Dae8hUz5?5KJBx-?UhJxQ_p3k>%)?G~4d?knb$V*7VT%_fXq z&e=WD*B@Hk>q+6YRxnRhc#QfAhJyNigwvD13G`R#HWktn{bq&d((k}NI%Tw#i(nYi z*Vi2`$f+(hb-!zoQx5BgHNB$q?9HP4?Qj40{`qVt)vEQ4a$ne~9o@^-)6c3HDN=18 zt?9(>d#A&_;dmqbE_hm2wLthIqrm{C>Q42V)v&$~_r^1vhb)uB=rwLu4m6>R=nHnV z4_n3;z^xgzlP{lY|7edD7Edb_Bcj%h0XApQS}Xj65nKq}z6@7BAM#69*{MH`fyw(R zH|7VnHDe&dt{84nQ=^Tq2hrNZ%XjzXGaKpMsy>+_x=U8M=vM9jV(-l3srdfKZz(M| z?OIT@kdjv0opWZ~_9O{ex)O!TwUyGMY!yXmu~j5O_DhTH-kFQ`A}z9nM2d>+6|(d@ zbML3#e!sWR@A3QR_s{$L_U`$9-Z|zRcb3=8nKNh3aMxzi+ubrCm8)x#z;S~dw?HlcNt`gn%L zaV(oY@T5P=bXI9B5bmIp)Q-%1WbWl5AN4L9T@s``(Fx#>6W9OPUAW2Rr#(uV!F7>e zSKrn)U$vcm6;?% z|L>iJVST1nVQeACC9LFyT4F~d>W$!9<;iv&U;5^H%FR_q<{4TWiWtu5QHf#S$i>Ti zUBdl1^SOr2@lFZN@ykk<(d*`E?kU&ur3?D6HT8$3+{)Z)nk18K692Tn(G82-#13|I z&(3d(ZQx`*KlX;z5QXdrAU`!QQmN>^H?XgRo%TCA2oSwNAIvo5Zwy3_hu#0me@KJqA zlhUT!#@WVKvehQ&c9f8b)tfr!zq317Gty1zR=fM-SyeNhsm*MquaoW4-7QW>v=mN9 zx2%n+H^0PkQM2AmN3R;x<>GeVnj^#9r^G!n@6HPD&a2?`9D0V@gTez#ib|a0(QOX7 z#AcTN=lXFKW=uLW7j1w9^}1#=gp7`Gbo+;nJ=B`*x*YbNgPE zSolj!92LYlv$!DBvq95IbCg_fsai~5W&+y3xevQI&zy``*JxOna`hKEB^Pe{$gS^w z8qr(0Jyg=!*Q+|g^j?wC!jgK_nPh<_YUiYH-$kH9tdU#tR8?~<1cau9**P42@x!8l z{rY?ZI-jtE!t>nY*lr91_C*T^XRFX;J1T0x9aZK%j0Y-o`o0Gb{EYXwZPn8}um8JY zM)9&{d%1z1C_Eo-;@F|>t-_g4ZQ*1zr|8#RF5Oz+*L+S&awdjqbOu!>8i)Ie z7PaWKuB`bfeXPDt30$SW5ZTpTNkVeLQVIfs1foex|~QVyBL=8Bs0=A^Zct$9Ib_I>;s=(Xb~?FaC71B4B_YNtF+l+~9+gvD zUKZ)ow=`2cJM=R>E3sETXooXiP(s>QapspFShlz;EZ4bxb~9!5^AoySw9rh+yMM^) zYsr+TMpXGsSwOF5uF=Af)@3&WP&bAafJf zbau)GSEozdPj zumIhA4J@gqmq80H1*T8$X^FdoIj@~Ab*Gr3SfNh~ZtP&x0m&}?DzsC$l#JQ|Q2cjs zUX^C*WmU;-DB?L_;{@!R9+kKA-1$-Bx>X4ffUadiAhh+hFN-{HyV}h>e zqDrp6PW`Fg(yQD|6#I6zy?M=M#_`!d<}_8zbotr5{l-+(i>SDK73wX6D%zy} zwUpwAT`6qM{vz9VsKGa7iPleiVt-|llIcYbskXY%@OH_80u%O&wi8E)g?ZKl5R zTl9x>72a{RxPzovhjSCcw=_btBr9nJan_lE9HED z<1;JL2vx$&2EM!Tt@@5U-foe6EEf|l`-q>JNqe}>c;3r0|72O$((Z^Zx5z_X$$R9w z)EivFqJvVN(oOD@j1Rs(_%g-(r&dd!lUA=``TqSz7G6m%T@DXs_rC~CGaHET`dZq2 zQ?tpusy}=RHRmy-zB}j>>Y<=qT&!HZ!>clVOJFWLEG%IDH&lZNLfdp{a_Hphl1kNa526}( zqU!4%>%chE%9^fHtl3m1@KSGSnY}dsIo8pCsJ{KaSNVqTj9vW&bYr2RMYw}k43}X0 z*jFWg)$irs*x!}(D!YYaS);}(mE59cn7O(nq`+gxy52mwwKebjNZo;E1E=k?QU*Su z`=PC78Cx}*rpfh(hf#WU%bMHgMm3vARq>^)TFR+zBZK8@(D!#R43FmcqPBBpH+N1bxtz<1jer|M0S)I(HjPvO4G`%vWY3>tQHzshThDUYu}6;{ftr8Gcwx4z3alcc$c zWl^THU8+m1+pBAjz!&4Hyhw{?ddo|ijcX_H%1w>! z;ct2?u~L=fK8;;zU(~XVvN+$#DZ*83nivy>LQlAzG?INM7pSDVO!Rt;jtM&H_* zGCIX_(dnAcZVm6Wdybiq{gvM=HS%84*|@LRdK0JmAC_*>y<53i!KI5$Dx(e>Qgk=R_S-$-^1sAd%1`PJ+)A;~ z@5!hLOB61a!6eTPbVT9^cCU6SLsfo~ec&hRcZL4hX$AzMjb=RmdvM*j?sm@oz~l!O z5#3&`$)CR&bfY_TK4#Yr)BT#1TYs36{nNAU+q_7#`QKyXvs)@tpOj9_E;87aux?&K zsnHRFbG~_W=J~|K$@lexpGG{h*QsC^xy)pH6#@spy{~X)mtqN6|yx8s#1zP=RMA5X9baqC9|4mI7C-%_iEp% z^R`NNn?^$4;q2bhFExy~Ut+5+dR3-o&@JPh?q^$_@YrHYBRU+dnOrbG19e8)nqjy`hVD`K_+;oQ#~LzapYyKD z6ielZaltOx2OB%jpDxVaZq;Q$JUNKM5DKZA#(W=#3x)a?LU)*z5*7X2++hG^2SK?j>+NoJdWj4Mwgq| zjJ`j%G%1n(d(|1oN~2OzJgy~JxP=#aRi|1sYpw}C07AoZeu>HJ!$OIoK8^BY(B+#c z`)kU@?uePqBMx=3sceH^V#c$}kG9=2`1W*afB5&&4qMzNnMms%GJlr$wcNW&HG6ZU zS7nmA%lBf`{xc?TVX>FMXdP;~wBnb3CPoCi1#sQy%W~93D?lawm43X2MhbA7+^CXZ zXvAHg`N?Wh`GE42qJg3Vxu}oRMunC#0g?8F+qtatQSy(PCb{~Q&@r9sT;z0@qovbq zsk7YKTi@e!sfBw0a|*ae<^^P!Vh1ZBUlwz@w5j7uu2rx45huNmnQIPlipExkSJo8z znz?N#OPSqQdMahl!Kq{N_V`-#H>C0!&g)Wvjvq`;xD;jaXXqFObm)ZUa-Mb{&)t1$ zclzvN6x4jQAuTW6zoOX~;Z>2owYuXqJBH(*ET}1Rnb(_H>xr&qO{4l7PwBdROYfG} z{8XP46nC8a&`9kNF~a4WW#$_$5lPp&CRff6DNC$OG~`FF!2(d%9V0b#e*+!(*Q0hG zhyC}Y$#tjtE8iuQa&`J`On$^a>`HoFB)>ExNVC+cE^XCjD%h0Y@uA1sil51if0Mc| zxtW_7iWK z<^8osF3V<=pq@azrYGR?#jUC@)boT}t)zRV!D4nG>W#Oh~eb)^7(r|dJEa;?6_$6)--+2wY%2m7nk4iim{s#$SP8H?W~sl;b$btj^*4sfoNbCY9-7k0enPVMq?Pq3>p zNgLQxnap0?O0aXQyaJLeACVUIsZopY($Hj!$Gc}&KUQd!Nui&^NO`4^=rYS>S7l8# z_q@PRLnB!;U9LNDX0;K|!6mGYKCz`WMzyzPjxjm7;0p2m05RSv`&s7aTm6+DbdwP} zd21ON%f_IM7vO=K2IxB)3(Do%wFXw)MEA-@c*_kaHKXcrNOQ^OMYGQ77q3rF87SSq zeRkR0+=#+c^*)}Bs16e-`!K@s_Tt{mH}*f86`s|&r=`D3Sk_mvpsy55FQQwsBC;au zU)8_7^$Oj?Ff7PZ!-{p@CsnXxcvU|RrZ%l{S(XX&!mdCs9_L}lkEdHQ^)#vMJ!QPI za}Lv|IxK4*SnxT+WrD{W=e*YBFLmL}O9z}*8MCQ~I>)1K!#Q=R+H0QIYI-iIE0&W! z^&M)H^X0loKh55fzR@R_9fay&5$IU}=Qy;hUNOuxyb%+Hj!JY_Lx<4r3uJ~HYH@v$ z(Z8XkOlQ%%U4dQ|Nmb@~EY9M7yg7k3L?fv@c? zmG1f(6?Vrdx9c6(t~W!gI(4gNYEj4QT+;#B8;M)F#r-wmyfaPH)jlSvSMNMJrHXV# z`v|{T$NYG^=Z~_K-duL4f`1bl#-X!*K=yS>Ug@J!6VLCK=i=F~UPUYDnWnjqVTA#O!yS}i~qtTH(7M5CN*Z=7qcX3zZt{#UeZZ6DR zj%KD+fXtpQwOuvr)PRD*ZCN+spE8c6bd>G-GAr2ij;h)L{=Cy#P66+8U0O{Q9&m53 zysdUbz~LxpT$MJN+G>*6SWqg!vl_>1xYJGE==w>WuCwiGoX^##!?kFOmT_XW!41;{ zH9bCht{`*W(N2rZ-D?a4yDG>xbqYEM*VxNp8|A>?k>!f_h#3+z%f z1G75Db)}T3msPu<)&v*S*A+D`twkNW4;dp2(c=@Sp~>o31$qq2`+tA_PhAsRvRoR) z|5!05{r)dE$t4m^67do{B;?V1euBjH#Yc+W7xP5F9O`G~)xi(lOD$wM-9A-|W@NeU z9`22dMyYk+tq`VMy!Rp>rTp)Iefe^1IdkRJ!4KU_siMKu?$Wce_Ma~HMn+F$+gEqi z(kVg87ibSz$l!zw?-bakiie#OR2DI6MibvSvWGC(a7kjPDh6s=mRRG zxSCEGvXH?K-Am15*?=XAbe8?PRT*$U+7`bT6gMvbK;`q_c4F z{Cs5b#Vos?h-f+`7>u_@9Cv3ALfV$oS_*W5!A6FvIS&B}7J6s?mftZ7&5Yw48Wo0cr(AqyG&(7n_g7AMYKkx83MeBsxn~yBMmbHC<6N^p>*(u?TJmfbS{LsDB zEEdP|mNlKl(au{D8Esnxk|1;V6|JTclsl(O>b;3wv#6j(OtyS&k?EZ3LA=`84-Xl@TKMbjxE&j>nY zh(boAWOH$rnD~0}&FG1LYwkS$i z;Inv}c(;TYdi&RSiD?pw5-Ji)B(x=166+;4OPEVoqwxdwqBnneOPrRtAaPkDS|Sm> z_bW#tU*d_xONloUwdk#1Z4%v*Vv-{z$4gE_@BC7cTq3D0$&y?zxf#9j%UW`e{h^*Kr^lZj}&~q5Sg#LfbKkV)DSbF|pWvUlMUT7$EIb*%hZy35l zS1>jRUCGcBx{9$;=(h}gk;gZREH_r@YQ`p!m1YV3j$t73cv1Sh$rYk$nGTWXt`NG0 zv03O^hUj~|XBY{m-;Wc0&-XH&qUk9?A}>}Jx{hHi^asWkp+7QAgsx|p3f;gk6Z#Xw zT`un z-_J!!!s%XyqtJZ}C!zZp&O#3`T>j&|A}h@o`WIs#?crjK%Kx}Zfo`rq%aoe+(&v= z)&bin+UR)5Iq)r?PB}BplTI1pAOx@e8GB0t9S@o4-5avPEIYGftWg$J4RHH98GR6w z3?Cx<%BzD%-ICH~Ir(MNGqW56WWABm2s3u4PSc-Qf#!Tgw3zLl!c4)Geu{tUcCNigXqy?TUP4 zaSxVF*JxqNh3J#sC}qe(29LTWwFHfYz68yQ23C_S%tuCpkT~d{szskz7Z<*^Mjo<| z!J}?TEoSX`dCQy5VqcQWLPm?@8fBYLr(E2!2x;g-29KR3wTR_1{0KcO%UR_n3mLsT zM+K%T(kT~rIMpH#`Ar6ooh7BlvL55ZqOqe z(pfmVCi%#yUg!8cl0~PSRGLbs3|YwFK{ut=u=Y$n7)@t6aHXOa8NEZu4V$M(r}#|w zLmIk}!Gmtnh1f<#(^(E&=u<>SLtVPb1=P|hC$A~wBM3fA7T+5gCmkw(Hvl`V;Ha*^pY~AqrV_^*@7d ziYm-HtV2=4Loj-qi3*)XTqX`f(|0XGRyPPCsu&*yJ+Mg3mH6irW9c9n`UKAXR&vGuZS#u zm}RrSj)gw40-QG@4ONIJ{)wT_|D(koi5(Xs=&VEktcXM-Z~q>FXgYeOg!8s&G$(6s z-~-wyXryO9^QKcy5L7Ml5R0)Qk};@^;jBZW-k}-ASle2JfsclV{FHt z$THBl+kd_XDq~WvHJxMI5f>IR3Ymk4lxpdei$61H4_O8pcKc5mk}T)3Khcb0EE^8+ zMn-jzy~}#(Ppo{UQPIdll(8~$@Tl8ThOEO9rL}aH1F5#w$l~&>-Ax;WDc)7DX%AV* z;8C}wHnR?-P~K=(mdPbHZ8SJE$LVA=o#NfT4r%B@29LTeWx!&=QQmYG*Pp^wgJM@F zom8Y#e6~B+A`kgZ29LTewFwQV{3)8wvahn2&VqK+z0HqUbc&CABAqg1A%jQVmeOZg zWfbJoS@t*9Ml>@{olL9(7x4BkRDLkMyjpJx9;hB8w9`-5s?o zI>o2Lo%WE03?6k`N{?k1rBzF3ane(vv!H|G`fnDBbjoo>qgv!43mH7>w$uiei`?dD zI?Imt#w=uU1D2K5UPU_PxH-2LdB{QrkDV>0%i@?RTGLtf95SY}pdEIvY*{p&ay&c? zX~;sZ4jwyOYCY@dC07=mW#3P~T4WS`)60DF>6GIi|Jy-iH2U?<{{ip+MvE!@5xw@% zN+fHMc8Ii7BpZ=zMY0oVmq@!s+9Q&^NF0$IL~<1A|Nmcb68#}(kz7RDE7CrZTt(V1 z(gBg&L^>$aA(0M?bVMX~k&cRVOe7DHJVo*n$y+2Jk&cUWLZp)-`HJKx(kYQn)0#fk zU!(w$&WLnYq(G6*iF9713nE<553lrN2R0x$SB5`WqvP9b2LseGd0IK;e8+G_CDG~s5r(8 z!CtH<44@%VATOEA?rpQLCq8aP7SJIjoftOy9zV)Prs{ zc&*-_RGfouc2^HsWNzs5xbcWUOXpn zYP*9pc(xo6x(2{2-1!#L7LTz0%6u` zE-YmohOZG1!zTcP`98qVXT6XLximfzl!5(TmD0YCm^2PSDHx5|nK}^OyB}BSF#@)0 zv|zOA05~j+}7JKh#BRx@MhoJ_*rdp{4@x|H~F2$pZ3(@Hrq1s zqlbnOxwC3(%BcN`iF#x;jw)5ALWWltY0uTbVK>~Vr4UhRPECm)3A zR_bI2LmMGoTW2m0EXd zjLy?+En?+5ccOjlb-XllEHTQi4U&sGq1(e{f`O%*2rbhsf(!1!c;-z%{OILO+;vL@ zUaKxcxXHf5m^T?9ufLM=yZaXI)m;c?P1FbD<>ycjey)T!hrIzhDg-Q-cn@|)568b( zA0WM-Tm{A_ji@|(Q^>G>4r^_u5T~3}@tf?=gmvQ~0dZKG2p++vB4=&H+t&nOj}|0h z5fLDlBh4bf(uZV#r=@9ITsKTIDu@aUkMnJkf532 ztw;ECHWH5v&kEvveTkWljXVU?^1?-disC0+q0lmS9dsh@22uP5eQ*45k$CRRv3`W> z8F>r?BfvQKGo-t6G-$mrjLEa@WYfTLdqiyiZ21)`Vv@Q(?%7Nx1fFZ#Xj)$F1D^v9-}RK!?@|vV>ItPT5}PS;WVJ zIadow=Xe#^TCd4uti8pIck$(4Z+wcmzEz=?i<`j-Qs^9bG6&ZBeIi{l6rtFN*(5)A z8~j?Thi_)T!FPC_&3*qxOlQKRr`SkFBV6|>OfY?TE^aen0+I0b67f}1f_Tf0CyYuI zA$h|Pw_g`Qjp`bY%Y9%#m&4DYLiI&VZstd*z0ViBM6p1}RTYxAB@WnQ1lEI}gr?g^ zk|*MB!+_nsB+t16gdH{@Z4=``{F$$UGyVq%1u0*F>GD8g*&bc+I(iR`4|Jg(&&+~G zlg){p3D=07nR3u>Wdu>UjRC9FCgXS4UZ+~JV&QH)Mu^J}Kj@5j{Ng9G?b227d*@0W zC&Bl~Ho^AI*~mM%vjtHi7U&SA4YIGC1Psf95(1 z+j$`f(0rRBA@JJ6#Jj)y^Pl#50NbN(6ap?7HU_8ZG43Qy+$O`QP!`OsF@i0VmQx65 zw*CP|WBYhJ?{oA#V7#IsN3k^+yBrJbcxo?+`t1fu|3+z&qFF@u`s~ zAzT*#XL;`vTZZFzmH{|svpSxc9gp#!eFiEf7vR8*J8-f1J^LpNq-xN4-Ge?Q?DcJyZ z)cXKUpPM6vfX5@u0ZmuXJrV)ZrxwGbTz`DprWe%Q;H9{EArCs*b-~R0u2c!H60SaU z94}hzhcC2vK#dyL4j-mzz^uywu-iY78s;4Y)olE+(6b2``ML_@ZE^u`Gscr{F|uHO z{62o{5C4C!|No&;{@)i1#s9Lu;$L~<7#@OIex{g@_)|Y`aF^$MuULvzt#HP>;bVNH z*ilOR`(zxu@C__Z83t3|pCP?eg1`v=H0nl{986_MQ0^l}LAy2&9)fB1Yb)PxY65mo z<2dH0&&6ueoUu{CW5Bw#J~=L59kENQ1-#^oW3a1JV@L!zHmsFI0JZDf9E7%WNF@KP zK`fRP5Qr}it|pp{?TK+-p9$U2OZ+EgyC-Zj5!c~2y)ZS6v@I8M*F5*wel=AsD z0*%ES{LHa9NK<370Ia?J2)tLPun&HR;YMRk5&=@p-6;g@|I|(*{+t(EW$y96oL&do zZ#LrXpFR*q6B}^TjtpW-uo09FxQ<(Fwh=5gIEpVjmyPc^{Qy5XMJCsGiVX2{O*>9A zf>AAqsegwbtoDJ=MhC#NIg^>uPh~N#tuI`$&kyc%$iqgTsKz9f*f|L8?EZITR{uLd z8Q#uBXzXhoMFN#EARy)d{!QluZsozH*2iVSiz9mAqWS$WhOI;ztX{ z5+7BwsQq8Y<4Fsd_|X+rc+dysTm+Grnn-z=`r^NSRq(Kk^T6QLY5sh04(twDNiKXH z1Hk>ENk86C}=ooBI~>i~Hg*?OrLe zBx)1%t6WK4n`H}KWV|W6V}6ixHi1&NO@S^Ol}N3{8qi1oFtsh@3=C;M5AFtEgbu;g zJOtBm_)Xx1Fpl^@B7m!QCzIyi`v31e|9^^6{2Tlg|F13{*DgMu$+TT10q*831Y5Lf z`7c(PfQ3rcIqUCC#eOaH2i)l=VDY|supzV=RF54F3$vK`g9qMFb@3HwUl#G^{lnHEAASI|`_`NB_jT-Rw7@W~A{am{3bz}R1gC>xzdaOE=z zV75*mCcc1JbuJypY-NcwiN}KQNHJnd@Llkg`xqQlW`mRlJ5ZgMf!SyV0m&C`IX`Fi zYtLJxm$M^d`IV<0K(Pa;6&ZD|1lH+}e(x_0a=zMJPDK;Vp1YXwA5 z7@l)l98aCK4p&Z;(D^l1O6RiPO+n|H9DJ!(2DxseGHhsSW!8<`1g(s>_E*rdx}-#=E!^0(>G#r4adDn}~L_xckTCP3g zs=BrbLxS1AMj;EK`M3CA&iwcO-#_|Lfa2fqulT>C@q>S;Tnrp7_h-5zq*Z+R-Z9CT zy0ZtQsmNGPrQOnlrW;5U(DgH z*0^_#2|ha66d%dx;vtyl98<8fG)6UKzSkF^QI>(xfUW7+ns1F5ajOA<6TiS%$z#+t zuUk-aUM>G~&;Vxp&K2t&VFwka#^QF zF%4{7sZCsGj~C*hIfE>_V)iE<^zQ@$nq`qbIL!ynQ*D}jiE@2Rc=Dj`_$vH*oI2cUa}9RP{7%sP-eoKuD{z|M)9(0iNb`G|?|u@{ z{GML^X%urHeF-x{xsZ9J@GG;+@HTHjkT_;D!Zw?sv_<=KNd=?<`{%%6(Tm`h-lf3* z%XsKvwlN2x?fUU7PV>7w`I32%=J#~@xIm2N_jIWshe`8$`fu_7Z~NcxRr3!uihrZO z;(ztK_hf=y9f-b`j9!I!AGpmuN#?Ba1xIJh1mj0Uf%GR6c{1HO*mvvikQ_YkoUAq&-5pTQ@U_whpKPCT*hE~N2qi@`sD8N|6Ct07IXlo5sa6A!=te&3ZbkmlFO zOv=KUf_Em2rX*A5z*+sS{DTc~*wlCfxVk+6=DbW2G!!HfH-~)@veBoJx~{55I3H0F z;=5@FJRejH^B&H{rNS2AD|fYm-O3+fad$7s&szn*w9KXufBXBFGA2VB`HneE8vQmC zY!hN%cfkWl|p$O7|WkY=|1J50z|e=Lf3 z|4;r6O5*&2IQc)*I=N@GX|}s>!f5`D|KEGW{}iM6xA-gmWu$z_rsQW}vJqQI>@kcN zAF>!z@cPK48B?21O&fh3zby6!j<=kQuR6IDsHhwRH|HzBvE^!TJ~j>y;#A|$A4Y)7 z7W3ip3x4p&HVW=@i-gg(522#(B=Y@S7LeD_BNyk}frD-FO#Ox*%)OP3eAV8`;Q0t$ z$P8|SbDwVor-Cm-t+Cm_PS+i}g?|MftKFd5nJhu#woamIS4%?eg#Mn+pmr$nocjG+V{1?DE7SEh%Y;ck7Kf^uY0WViTE)= zguxkn25UGtrY8*+R!C#X;T~8>sXbV8%mQ9j&S37+dw?-3PlFE+ZvchcSHK179MJce z%h$#(f}U6N$VE*mp!`A-xuZ4(Tq~X>h%BCkcd4z>qM5NzNnqf*8cjdcrU`B;B3EfR z!-rQism|?Muw%L}h4^#anXQz;Tj2SKiMcH2Be3NXvq=Q_Tm1i9|Nn;{2vGcQ`z!vd zuj?~umKIFLVpr#4zLS;tL1PYJ(Txo}1kiuF4&z#0UNZ~pQmVl| z2&BR5;yajpR0+28EflP>;3L^rcH+8M(3e+q7Ng_bds*6H2^mfDTVqAF6Ck22aE>N1- z!*op^iZ830OkC4RKDqT1d@J_=>!}Oi^rP!ANgl_? z>yPArmao7H3N*>51)893j2NT|A%iKUIS=5pIZ}KCMjGn!`G&gKMi<2_gl4z&8M3|Z z+Q0Gt50Cc0FCL12%fI6PXxssC1CIi0t{=-mX!kX&1H*3|0z|-9W^~3VY>I{^PP0I4 zwLtIEYW%X|TUfrS8dgnyNFm@-B~_f;xdQLIo=^Fmd;pVDOJH=vTiAEn0NaB4^fs%D zQ(~Pv;HI-P$x(-Oz|6cy*o(u@un2(#D0+Aqq^t5V^$lA=`^pG`)W{edlf|;#>`sG~ z`I7|i!e`?*#%v{y&Oc39MTZKo%K1ci%@tUX8c1y5pAoFTM+OcRWa zO(uAy>iEY+PQyqribOqvD?r*`r*jiNBa z@?+GT*XJP1$ePKVX9{jxhfyt!$wR!H}Q54=Rp zdgh5G_RNzADprCYvP}{jedU~xzn%a8z5f4u$o!*HQ2cNIEBZ@9RKAFS+Kba1XomI zaN}&CeN_d@E$M-Qg|8`3F)^HR_$Fmq@fa@Z|H5CI&jzN9l~jRE2z+q5njo7HBPhN4jhj&f%qz*t;JXbx1ideA& zKYU}Yz$!WrzxTxpi$6FPTsuUO4KvKp=&%Kpmi!d_Wx-|s=??U~!b}y)Z9y>HBNYVg zrwzlOx3viz#VO*W+|Jx92g8Z!Npbk`*i!s*i5mV(u@#par$@xR3MaByx`cGr5kexx zmNcJ|h*z~Vf%CV<;m>aErSx~1<113XQ_)jh@K=2lCMTT?l#eVSAM)2iaoM+gm(cOB z$ZRaX_~cX={lS^J=!6L{KU{+yt8NCy+fP&B-!H+r#qX(^0$toVHj3O}%>_?m`pNwZ zcf!Tj#c&#>V>tZT!or9BOy;j-oCI6UZ;%M!Z}y%SboK_&z$LKtub+Xlb&qqlR>v^k z8+_tToi_6C*Z=?4|Nl|Z{`ZAJ@o)22{2MI@WWHSy%lsaE86%I>W1sJb@o!dN#*W^c z&%5KdjA`_-6YO3n0k5*M`FhtrgK7L=XuaVf3^eKDBQWQr`|ySt1K-_#LObnOD#mx) ziRUW2;B#+&1jUahz^%K7kq7*yg2|P-{L(F3F+T}qEUIlCmVN9vhF61k(*TSsM z?*P@Vg>Y4I5isT&!;!qV;6U(3$WnD7+um%1Jp*qs*IUa#Uupr~@j0Gg_S}UVttJr) zUE_#^-g$)T{xCdqLJs&ggaDYr@5` zxN}yR$5R75?B!1U9eY0&yqtrNequvfKPrOeV}hyEvOL&&-iMTUaSGfX#unUtv>l%( zXk#W=r(tml!BpE@1}t>=%m_QqVN%JDm~B+S14G+3`a3vWGB0*+lC z0hw#hYFo&PVVSq95fD@xhI71)U!x)BdTdhVN+7t(;o**Bd%lo zDI>wGvNryY4`+eOoN69|sjxqRdL;H1T8(JrBe2lbHt_5YJ7{x$KHl?w32qVJBd~k# zPdL>PfV?mnf|@2gHKY&6eRdQ1&z*?Vy|OjCilhNBn80zul*U*|L2x zY4^|M{hJ(kM!45vxk1~8gKFLpwgr*?nZmCqNf#%XS>#F)d43oxs- z`=P}2W+8@KlPqXlPDhlTuS0R>Py(AFJ@4-V` z(gX{nAO4x|=>CNQ$)<()LJuDvf+-)oUVy-tOx*=_9nzurv$sMV!u!QMCB{OM zjafL2ZZ{-S6U>RT8#@G3uZR&hl}=CyC|2eqK;TvDzX%dla|!KBIk^Y|`*bq5K{t>H z@j1w(xf^OuX_#ig&r7CJP2$s`@yI3$0a;m!WEfWisJDN`XaZcbcpDA$uzQ6`LTsH< zLC~B}pcIdVMEDJ8T5m%7I_bdjPu5uY(*s!Vr*XL%YU2rQLtChcV8!}TlU4=7FKfr( zG-I!i0Z+Z8L4xgOm~(0~RQh#>%JmI~X_90X;@|#1e-Dsz^YA0pxypq zZo2rpLBC$iNH2%Rf41v^KLBDj;{;r`Dz;in_EMC4?DV*eo$H`~{Qe}DJ_ zZ+~S*d_sK=yhmois6*v~Y8!cCLd!3~zBU^l!<{0Pd~rCp=# zed$?FXVWp}f$kpO{8A=%FT<8MK4&sEY|;TTv;7i)PtU>=67S%H*VfciLmSA}Kaa(P z9tPs|X;}2n8Q|*EMfmLOz4(I<3k3+==3X>z zOv`wGutY`)rwQVk;K7Jv-#_pbvAKWF|C8nq12mHA9YQQ@Tgk&|u77@S@`7OMom`Ji z`VfRoL~M|L%KJXW8(a1gjXi<*p>$nPH!L1cn=?9B*^EI{v`T}dC?&A75yB${J@8j? z20=47;)IZ#{H^%54)V`=J;ZJ*PBT{dHl#W7;uAEz9`@(=u?HBC#^F#Ppz)hp#$288 z`mcIO+W^ZRX@_n0)tUFG51Yx2;C>q36E-v_+++{!{|if@#o zJQv7Ai)KB_^RqrY`Se+K%vV|M`|onJX79TQrmbEEY1pZk@vVsO#K}U>EY^v0vA^cnD_0BI|5~*1zrlzt_b zs?DUnb_K%E=w-kNjXj&(0ZoOJKFk`c4}&uv!_V*7fA;4t)t8Xw#QYXOv)%b-b}IiV zKCkCKsoZlP%-bf5)6}0-#K#?-k4NV5vA!)2v7L^y_{ztb*ytDMFhg!IcJ`wtZ^AW0 z=CN&;fLGELa9TB7;L&jte;t@leVO?l7P)Z*&UqYs$*7S;U*1UKh1Ci|`;;SbYmT)b z-C-v2zu0>dXsXuu|NjgriBd8rN+=mB8P1;UNV7_&C_@?IAS5)SK^j!XqHv1LLuEb# zng_WhQ<0%bQleCp>HqAr-Fwfy_k4fryMAl^)_<+LZhEiRvp=5Cdyk)IKl?b2b(OYU z1uYlk(z1hS3a*6RT)(5DXXg>@)tCk^`eiugK{?CI+H(>+b&`UfjPOB=OF}t7aNR8h zl#rgqLd0*=azt`lKFp-mz%r)_*bd?}_|+LIoVVEp9w}~ME8PDAiABYrDPtGVLo^$% z*MzMI%jG80(>NKOav+=wgtQ-s!KPiik14nCc*k23F{CRKUHUu_>uNHsP;IcpB+lBP z{;OQjTTw@lk^YV7$Z!6fX>;bF-#*>sD&HMO&X|3MoTDhPh>;Z}?cfMy>LXAWJqx-S zp}^p!Ze)13C?eIz=OJ$?IYwsaE%=&z2s~kpIAWFYkbTR%65cn>2maQP0&h7J#d*~u zi~@=~f4=_z z-_QU4GOxOn&#dru|>wpM#szP4`;Q z?U8+O(XV3I_d^O?Hu@8;xG4`$crA-CyY|B7pC%#|2XeVMct4Au_C#3u^dxw5jWkE< zP6<4noyJhCc7yt`kL=emUm?d&5@iN8sYdU!*RYotxI#w)CUL)fS3-;ve{vr9*&&?G zi@A^HV2DK98_xTlyNIofES96V46BKf#G)tYU{yumkSRv2K3pIlHx(q%SAXzP-_*z?XvY(g4^7d3Gz`aD>f9evaQsy*8Xh2@LDw|0i1P|ab~ z&%l`rgaj=8#1{XR3@amQTp;9Uo)YpzEE$<>@By77I|s`*QN@N%m|`>7alCRlHcCwl z=NwX;iGFl0N5tnAqxuaS(RDe8u_&ec74GK!*g$R?yHDpi+Isl~cWIzFYO`P>Z^D@s zXzpw+PST|rNRb?qYk1=l`rIR!4Fr8?)MY5#S;UCb(O?5X*Q5?XYfc`5F6>AvyWD97 zV^}6)|5g=Ua?+lfp&HkU0|s*c{RJdNBw z{SkRPc#Knf_YOSB6ocLGbinVY#c?ucDZS_@S&e91xDcIfWY;*6=2V zt7;mYV#I;{($6r=sIiQ_O$NM!{>CWx6!^tIzaa$U*mCFWb4T8{WFty*a*$JM5bwe0 zc5FrbTI}{!D@^IL2CuHY6D|6_8Qmkh1>Jb(IePK?25eFMIjAd>fgM=;9{J&_jag(3 zArENZ&^5Re9HXBCw|MP=YkeNW))iWu;G8AMmgaY5&Z!Xmq5= zDSe%cL_+h?H(NHLDz@)A-u2Isw~}@26=#y+x8O6^2(>*XwA^OLsJ&aTlsOM;@DOlZ!E5 zh@z|S1)&A6+R^ISld%17(osF|KA^V#FfMjF9Wk?N;C!4pAIVa9!hRsL5&p7mH9U3Y zTll`?9`5G&eMsl4ohYH)S8ZG%B*aC7FWE~D75iVgV;wzF*dDt}*u0uH-h<&!sO)BS zOx0{LCbfDNuQy&6d)_66S>@Mby5A;O3_EyZ;V)x&w``|jMyI|(ggzI)Fvl|F3@&GCsT)E zX3SdTe78Dk$5!GN_bf&7lj7L3+-ATF!Vj?TFByT_*v62-K^#&=qsm*F*^JI_HjI%* zUk3ZK4i5BPb`k=nVv#ae!fD2mmT9AbG!*JoN);0d>4jH zp8T4ziJ1gv&B@|D9n3<%Od2sFw7EH&@$x_(qw!@gLP&R3Mn%B!YgjJ21OFJO>GWbdD2KO+#*kc5*PiKDceSkT- zq~{&d|8x*hy7GqeC^jCsmaT>OoiRq@7V7a_2O`kvTDeGaS3Yv}@frB@fpf^??JQ*9 z%qxi9HgkCK;6Zq%_fPi1k`ZXx^Y4ZwBN~kCgl*t;frbBk{r|t`|9@4r|8r+R{R@2l zuS1qRXP>79Y;?-g=*P1PMoOX+<5S~F#?Xvp#`0!m=!o<)NOVs&tZ^v~847uV>?x1n zD8npx^E4gy{v$V`6?gXWxChUoJ<=Kop|i6^;SL)|c*3X?Lg?vp@R~o?0Ix{B4lj4Q z0ncGdL7}r}z|Xl8;b%)lVbh}zxPu4lkziI22MAs=hf!X5?;IqrHU~DD)&bvp8i}|R z`l3k`Db&RC9=fa4gjb=Oh@Nem#nTJdLS3^|DyF&xU>?Ci*bbnjh*rgg@Ff`I*G81k zXtYKJ5M~Lms8u+E0lk-S;rwuRgB9eKp@iCh1w&j0_b7AOWH%QuOZpYQO8t-$Y`PENmsXgopKrn!gV zHxKI|LOdM_$SR!;`8~L6xGQi2)b?g88wmQ%|1!EdJ`JTUKgOdjKZaJd81uEGOqDk$ zPaSRBy9xWPCmB0F@EBbfs)bQP0?|w9dYC0H%f1(ZqVp~vKwliGL#I$*BNt`OQ5jJj z?a1Y#9SZl5?f4f&QL~pFwsjg}kgp0E0%g^w8k9UtNaCd zo~ef_m2Srf8QwuF;=^Mx%GhL-(8nhloJAs9@bb0C;4%F;Sn828r_ZYowtid+Pc6L< zr}itu*Xb$nL@f)pviohwe4{k{NdkhMhFI+4@EcI!uoK5*Rw$A&3ng!9N9q7)Ud1Y;tLtDF}sfg z1RrUQh9Z6y{5SvqcNe>my*sKDN%^z>SFe4;_PqKA`Wat@3<5pXAK+|lAB3kyXhMW$ zJxziAuZkn-Ve@!A+Cg;UeQ{1{%>*R*CB&T?x*X96T8a`9(M>8lyjvW;m??`!C&;0n zZq$?mG2V!P&)WnN+pGr-A2)?Wj8{%UO~fTo``K%tkyZ9cps^U|2}Ksh!WScZba138ycT}-z5y;@ zFb~=Az!mw(DTQcC&r3Cdq;m`WlZi?s3d^`c+?o5VO$~=Hp++Ayw^nQq;o6-s~7J#3BC&wa*GKEOu z8c~?g!^%CdWpWzG)cNCj z-xIOjkkBHt(-0v|?gw6hw}|bUZe(9?I3_hO9*fgm zj=qVeV{4;EAs#I5YP9 zB0u$#&?&K%sGV{HCWn5;-kY7{&H9>*9yHE?bazic3|Cy^0iiq5S;(S!*RUcDRUQzk z*>{Y)jr{>lx$}#=<^8We-mhbLbE6TVje9P^geo{Ixh>i25o+W@Bi@VUMzgLmj2`An zG1OBd;C|=?toh&@N8{QFB*MY~^;E^s_jPR??p_L#^LZtl@DltHFvy2HYjG@67~6-e z2o6JE?mEG_xZVQ!UZ}>|zrzBN9#!Ws9OlChsfMLMhVjw5d_8~vjPb*^?Vt7k-}C>! zwC;c3El~d=f7ZVztqLNfQuG1p-x>(Nm%YS(RH*>3ucfkqAdfBvkJ^10{gV2NJ(k>! zOn|I7_jc98m++~uNB;wu?jje~DsosXq`Lj7d@V2SD$_;|(e{A>G`T58epyD_uF3=yx z|M#=r%rk{=9$E>Xw;5&wLF?O@Wk5#%c>e#d{(nDY|5AebpZI6}-*=E_13~+LHF1Fc zxSmdaRby{8c8AhkdO5o5Cn0B6`5?pz+e8AlFw_ywWwqe;$S2?=N+|c8L9CXM0`{*S{+lncJE|}!8 zc$kpm)DDhe%V&67z8XfTcR@asneqtwbZi>DcegzJYx1RX_=O?eYn;ejv=tqb;c(bFL?3rPR`5pH*jXOG=kk$ zLk`%euz?`==velS=-5Ag@5+a*!;Uftg5;ZOxev_b(QBKc(5CuIbgeg+yEKu97=JT@ zn^KO!)nyCW8I@1r(rcC6LD9!ZV3$0sq;>>m&Y#V7dCNiMjV`k1^W@;Iny1(~tx1sG zG8f2Wa}Xrz@eSI0Zqa|Q|NTp={D0mpQ2(NT*8h$!XHNEsJot>x68My4F5ERSo-==b z6--T_zdeh?0hpH8P%G_{moYmL4)*R z3}}t{XLg~O49xg+79n)uwHo}}wQ!i(tB8DjyAZi?qJgtziw-hidYW-8GYv{nOyOG3 zo`8yNe~#R2*GJbUN%JgUnxcL2SxA-W7i2|D5pOL#f(A;6R$O~zh)sMTk2()Tq5}gW zTw6v1s(N$ z13}?g-DUG*V-Taa;)wsbCCEZ8UGAH6-pCQjFA(#1H2k*60-j?Q1N%ya!|E>`(3t0H zy!&@e(Dea#xEmTCAa0X#jpQEmLH1VH%S|rXL3_1);G=_4@Dc@1>6Q`k|LXsLE|h=i zcR>A%{aOF3a^}PB7Y@PB^JbT&?aqSt7@I zP2}tqDqm^08A#2CP((NND@c2@C6lF#3 zqx7l>)b|VLJYKLG-pkD_`8=EhUERdu)NC*Lum1m~RsKKk7N~!jKkNVZey-_LI63Ll z;pHyXWk5#3^4r)zP(6yKJ7i@ z@aHLPAgC`?n+xeLMqbokDhFaXruuP!;L@Y6n6uM8EYCU$Hlg%kelFk{MeG&A;vC`b zvB*SH7fQg;sUOI!x=!BL6O*yY0g~K{hY-Z%rZ{iI{TV2h<$*j|e+b#!=*!tzeFuK* z-wPxD48-~UVNS;Z3L^az<^aLl9#nB?$~WOI&+BDCMyN;~+m!bO3K_eG9=~ac1;t!K zdKH zVTJ*`>B4pRom@5?4c>peCVC^B-aQAowr(~Y(tZ`b_p)s%p{TBjoNsQEU>P;M6v)sk z;TanUvM(1wE%qm%61>?QQ}Ee`8vD8s3&}o2u~r&dV4MuIEFQv^dbM!l{I~FkWG{Rw zG6tSyIs<7qx1zlCsXcUF<}E`#$OFp0a*VyGNCxKETrrXz>tRG5Tg;YJ-uTa-|NZy; z|9eUNO9|?K)}Qr{^_Fmq{2#$hi_OZz9NsYeMpO;Id(<0tUXq8{^(Zv?)nvF(Vk5%& zrHZbr-hk?Sc+a-XvV==|T%pf_hvCc_ySZhEy zZ^BK)WRE*y*7X@FT%yf5yf6z+r42H+bEd(zYs1hC<2>wX?s6>RYXC;umdU*crJ%FU zNuf>wGf^?q9^N&j6l}N7W#~fC5^RRb9pv_}W$5#jS*YrHaqJc)i`(8&jx1@> zUu|GQ*^w`d%=-fn{qPXBuEQ(nP+S-%$oL7o^tYMiZ4-AhHhf>gF+PdIDJuJ^?ZDwFwI9$n1 zUy+sW#~EKgo?{$o$YhAEkcQ+=NU?V;h=6no#n^d6a{sJBBJQ8!XIQ=O?ER6pt-YA7{=dX9R5%A#gcuTjgWRn!O6r_|@v4r&**k2*-BQ01tS zG*Ox)O^&8Qn@?LrGos!S_QDRfb~BwdcKLZ44xL^q=2^i}kY^v!fj2&m(ILCc;$9)%(`)9D|_x=5S|HqHVVqboqp}5pIqsAFca-JDU zHJx$lj&p#ddgM6I@M$DIlTU`YG@p>T3`w;?K4EcLl4?KsM8xIzM8)MvN^Tsd1h@nB@3%xk7v{e|d$94N0|;agOr2Qe2g!+8Cd!#OIAujnCEM>U^#dC$F2e z;`536ccO|?{+D&Xh$<>r`~UyeJs7R#gK-OtKZ2t{ueO_K|4w2*DR~P6_$*kUNm64Y zpSh|t#+f|M6p~B0d=@PJF;0HnQVJG-8(;1x`)N0k%UTR_d9Kkoe_w{im*H_D<3vfS z^3OjdS5;zsdFnW)jZ<=*)5rNgZ123M6B=XyT#s5FvdWIRv)G`T!}T=KNY z?arst`SAkkgmGRU=Z$d|lBACxM|vK)JYn-V?MRC7>z+~|Qc5mQ+%?Ye^Dv1#9tD%g z<54h)JRSv;FtXny<8k8S>>(-ondIcF<4hlC2FWQAB*j;bbJaM%j*~oZ1v32cic%mm zNXF&(;}fMou5*0(JxPV7Bo#wR&U!*pdAz?ee>|fUsHBqdIpldSm^;27bI12%?)ZMp zT}Jj(l^W;xaZ(-kQyuqH<&TS$0#!M(-@NhjF;8TCdEz)HjZ<`-wc~t7QjI^JPzuzy zkjv^_BsDgSldJz^|C$DLp9ulN2x>z^tKMh43N&E22UN9p?O41n@n za1KBp>UK1rP% zKBKhBs#c4CjWXDxiCMG|NUqU{x~91sxgbdd_zN#&wLH?{*k94&tE>Rewoim z@fwoqSNJ?5{u@bk{&ga9R-AtwiJTMX*R9Ao34Z;FoKsuE?{`i;jid&D91w{T=bu-R zD5b6Zc$A7QpV8v{^DGiA!N2ZAqSf@sxH`W+L}JA2_{%XqR70VmW^~RlH{_UX|dF10v}XtN6?5()_v?NteIRU(S$NO;Vaa z4v1t*tl=+bN~|5{I+9b#?a$QU*QH371b-YA$(G=cuOc}T{CX0}mDtGdpDSTOQiET= zB6$*<_{(`y$^Fiku;ecnNLcZCO~RVb>k>A6-jE>AZ=u9y{&JB7e_RzQmayk97fbN# zS)@dQydFyAAMoQP$|p#wka;C@3;D~X5)OQpNjQ?6M$TKxC7k%n<`rl67M4@h? z+JQO$4(d*7AoT$C2=yd23e5UbsOi)^Y7vz~y+wTpYQKrvMtw*9MD3^kqESKhPov4u zlxXv43u#Me3^4CsNn1~|rfsFU(3muTF!K+gh0`Kwv9yb{E3_;y_b;VY(C*S6)9Pr= zv{zvE-%I;J8=+62PodAC%Y*s923?1)PeZ!a3fVJCRPM$xppS;x>spB<_;9 zN8&z-2P7VnctoO_#A6aQBz`0Dgv9^*H9RF(R7>I+i8>PXBpOIGl4v6FoWu(f%_Le# zyd=>|qK!m5i4GF4NW3QThQwPE??`l#cu%5>#0L`HBtDY(M52epXA-?6`bc~s@s&hB ziEkvnllVbmfW#n)pCo>f7$PxDVuZvfi7`H=QAkip&`8ipOdugbVj_u2Bt%I}CLu;* z3JGx%5+tUQm_|a9#B>rfNJx>GNkW>03<+5hawOzQD3DMjF^hx}iPU!s;(%02Iqu#i=1hd*WaSA8aWP2>7TlD1xc`RdRYZ!P7=OjoIk>zitAmJy zEAwJ zCjNgjX^2%JQg)hu1E5eL+%=c~jzm1xVG<4^LQVYsYT|pfz5{f{{SLnd0Ds#Ycex|0 zLPU=IG;jtKYU2A>6Tb~9p+t(Gu@V4#36|cPJqg zNQ+Y%5>(;i%WkMV*uOIE;mF4z`)^JrNjn8suYh~#BUQx8n00lbfK*G|>yAIs!js_s z4nQHRH%apOn~8!UPNaCws0IMj5}dhIokc`q(IZ4esEPMqO?J#YfDL&e=U>sdcf^D$kV2UJrb8s-S5~&O0EL=(2%1RY zE}LSAuDJiQiVi?(Any8T13z-^hCB`;LQQrEnoPrkC!Xb}SRC&Q1u3BZJ+lk=ktDf_ zDi9HB;x1?+f$x@>1$t8Oz^9Ws0IABj+F6@W(83d^rvnH#ar>)Dz^6+cL`vYtWh_9d z48CxhiwY6BbmnIjpwKOG6*LjU{b#)=y5a#ncbx&LQn)+#Ghsx8m4FfyYT_bjB8s~$ zn#v+lcAlL~kh&aK8a1gRB54-`LIH)EY!@_{fO{8B0zJWHUwBFd5Df73Wsy-$gNj#?gI zZfS6eOFKSBS!R;tEV%lgxYsr-7FY@HOSb@^Q0L+{1;ZVng&_moA|iFN4lF>SCR+qep5cdRzBrNMUl*wYNS%h;C64hUC$jh>f>0BCL6dv<_UL$i zieKuDP{Kskcv#Wb8MN?I^&>34A|lje zv!KZ?eAn6$e#-9XG9m>`6x}x;?*J`4&4=X-DAdGO(8L3`uW;k1xUMNx0V&i&xOaaa zQ3Xf^CK+BV(84ba*oFcMHL(&fnQ$B5_Tv`O75AId>I_KCHfK{hh{&mX;sk}7SpLnV zGp~wB+1aPX0;C$_ZpYI*h{(|;YpMW+n2_}k=KpMZAbk<-BQ2e_jW!EB=STlJ|8Mp& zIC(PqLj9vP=EcQk*vW(145qb7vY5cyC)(h_!HLeqx;&<@CP8+VD-l=&=q&x!y{6_r5+eCr;3Q&7?>IgDAYt$(8LN4ShbVrio1HqbO3@a zSuuw{n&9D71>!qGO(qGNSmL(vibPl3{&ZRuATSA(y`w@z3KuoufI>|s3Yu)f?c@$t z5h-?0R&@YUr{aMz5h_F^W%efk;U*%2CTnp2$schd#aXkA1xWS6onCBrCL-bSvj_^^ zk_mz)%kkj56*!T?{9erhq;9~~!dHb7ktETn0K!e^f+oxGz?&H=M9L1+&`?0?65M@# z4^BjiewlOt3f&UgUrlzkzg8hq{G{ze0jVmuyUhj_(84d?zT^xj)P(vs6JA^>k>Z23 z15gMPEAcAO!mmH`RRI)gLiw9X{EQAF#b?>CP(bQT+&w~>XyHZLuULS>Op-zbP4w~L z<14B_SKO;K5`cIR(S1oy&R8B9ED#ZDa!Al*DZcXof6sAmyGEQak;Zq2SrW8A4FVMwld72%3c9+n-=6L`sk{c>`C*gS3+P zk>VPqQ1Bh0CL8~1;=ini=!*O3UL{DCz}@fI<3!|gNQ*O|P?HUUCj0PRQPM0TC2&GS z2OyYAxZClQ@k_f8f`D+7^@1j@c+lhfRiG=rMQe;m0Z(^Qe(o$Hay5U%8Bpk!nE%bB zO@ru)+hzHv0D{}5{Mh!vp6Uc7U$9$CIv5Kyab$xYMjcM6P{Z zO;D)GS^*P!H@-{e1?UOxGg)g15;t&5Nfjb;MfnsF5o)sLuO@zP!<>nfoe%s%0f_@U zNv?y4MBi4g0u*Yp`mZLz3u072SKOni9srma|ClzDAGw?!Rs|wLO;!n-RN>nX9Pa>K zai91vEI=^QQ>D69h{$niw+=v|CMyL^*tplpS^N|;tui8oDvR%E+>L`4e*0y36`)X) z6@n(YxXVf74$u{t9U@Yw(#Cx(Hx(js^ZOedP>2bVWcIrWO;4TCe*Vxmh0$TW$wfY@^LQR(a)x>|pMHZ3byR$eH z5IjxIN|RF|BF8ENS%5-Ka6yyVxT}o1Gm+wZn}P#U74ex9d_sxHsl~Td0EL(?qC(3xyvUScN zBGd#GG?B-dg?TEVEAH{;0Sk~i3*WUp1~e%6t3{J=K%pjxpouKLO>c}vq` z?(Qcdory?N_9Fn{Ca|E%bbQyReH}!KzYTv>BrdkId#Z>COP0TbLbn9^o5?F@XClRK z-P;a8!sN)_P$I&L+C@;P3FEIO+mpx>>i4_>2PxF)#y=RDEYQNwUbH77LQRYWOlTKy ze+$%^Nbx(j3V=8!lj^mqh)7sWWe1>86GK50Z`>cd8%m^j_1_~12C|uhJ}e?qe&7>; zFq8jH{ret!b|AO%(-`Gb!-q8uZ=Gb%k7_j5m?RkpuHG5>pJiBGhDw zph+w4(#{SAUGcz)$t*xnFjAkMI1`a`$^Y~HcCnzzL)@ig2R|jysSpRL;J{84xm*QW z`1z;1Lji?u$s$3MeBAS1F3}ZtUw8@!q#EEB%_5*d!4GS~Re(ZGbOlZF@ZEb>ITI_Ul1*7UnofI>~Q z|7sF&e76db;&Gnt3`kWnemktg0xg_1-JYOO6D>iLlequhbQL1S@8&Wb5X?a)#ylZf z_~9!jIsk>5EEF^e#9bWpREU(F^SVO;!8DVODe@yHe%>G`)I?LzWH;_#K|Z~BCy9X! zVsw_G%y$MY{9N~0fzh=D(2AVk&q9?!4g*bCQ0)JSMP`i&)rx>tc+=4*8vF5>(tx*DnukHxR!_r zS-nY;#$Qc>M!z@{DLa;L0U!oK(dDu%B2w^rtO`)5iMpT(gm1rNi4!T_0f_{`fe`PF z?;s)@afQkCOQD@M?AC*?K0EL>&5j6RTZ;!30B2xUr&#C}YXBhvSO738k9~=rI zLQPZzO+Mh;#-uwyS3G#C3z0$<$G6pO<42B)XR3gRP!nZAlV*JT`fwKLiu;*$I|G78 zDz}I0`H|B{S66|EP?OnzGx2}VPw}b!jYy#`#NFO{f(8XY`Qw%fpimQ~znTQc@#kQ; zS4yEXNFg3%jxNGM3y&S_Q~?xfGE30p1@7-01A2npxqG$)5L~ge14*Go=OAsgd4636q8oCP@l{n{gKpT0DbA ztki!?6aa;)g}X7ziL9VW2_6_s4<%BZN|zETU^3y_ zQwJL0Rif6*1cjQ&{LRGrH4eJsPDf0f0YUY-iEU*OksDb7IG|7yX+e`?c+iW~P$I?U zQaJ$s#Zhl9ek3I>jGz#cWl1x|h_`5vZ_}{Bcm2@m06lSkZH2zboL{XcnB5g8tAEoVS* zRNWuc6D_>hSDpnZ)ML7U$2>e(#k+&ZV7fC2f_)Jcn~f8Z%bSgeh)@qn0S^`2%VZYO z6StW@k05via9v7H&?>jIsep)3k7-ns z9Jbe0jx$P(U!-^iR&iK?}dRE2#resE34rhb$g=-+}0f2b;Tw0us;88v}?I zo-F>p15k(uQU6qWGzI(@{*V5OB26X!g|*EEZ>bLm+~rP@Q=m}Bo{x1<-;=G1B8lCm@9FJscXz%pt)4vz|e>RnJzb5v2xYwHI`P^HnyAX>|I>l z+;@0*G6Qx81_kfgyYI-+W8udmPMnO6iH(ate<309N^08G^o-1`>>Gte#U-U>`v5;>@muW26c8+wsDc+fX9$&NYGi(@T~M0 zqqv_f3MpLKZ2Thq=eOit&-PZYyj1jr;fcIU|5?4RU*=+`c2Kf|db5*G(z{yXtK_Us zVr~75`&NnrhKiNPa#rYaEc4bCYvwV)*7bm|clHK#KWa;oe&49Y@yDFv;}gK5h540} z^D|p|ElX-wG@rT9uK78)rXukE(Bd&lm-WO#%$p^qL2 zaF}ROqy4uKowML8h1`^PbqHGlicHOx4H`;yOMm{LJ+R`t$33tut8zB^WN6mKc@BYt z*5c8!9vrBkW`nw*+LBb_01@u%es7q~Y%Q`Vi7ZyswyKC>_Bio|mu@kAcQ41fxNM9P zpcqoTdB~FkzH*Cv(tC)*47LYsO>5DT`u(2rp1H*zM$KoN>&9&O>X{50v(5EW(|-mk zuH0CyOvGOELM~xMV4;ZSqn$%W)xOz||qvWGe z%Sd8M;PRS{h1Tww_AKVHY=g|iROZzzosV`4?{IB6zVq^TUaH*db@fzdT}X$1*xQoM z^cy!yYc^@GFYfi)YJAsbjB>)~#u%k;&DUS^Gqm@uyzMkNaDJq_*W+r&&C&9Zw)_(H zk>*-e>($KMqDR&_jgkGfrrzzG+#0*mg|@n-0}a+Ol;dQ;C1hSBeC0-gE=c#J!}4DHuCyjWn2C&bed0Pe5rAt`We;{ z)9}{P)w&6s!JwXOh4|#ckgRb1F-n+?_?MsB#aY=6y$!bx*!X^f&A_H}e>=IL+A*%L zX%uxGqwM3b=Vz&mQMOk0+S)1}>hWOaXgRmywTINny>S?Dz2HEqZ>)=@S#LQ+EGcsEyGw}*D{Qbz<5RN1I#;j#e z!`;fZ9Gmko_9b0olrP;Me2`@UY85@##whLjtBXIzN5v)Tw~W?oDsRYeZ!R<(o|v`M zQ?b*X8E3=$?iDt8t-b5V+R=u+`Q2-rUT4YhlwVa2?<*Z@Xsz9F^~lJsF$&LNd+F!K z#2V|g?3#hhtM=C?wdF-94g{{<=o^1Mn28G)C)Eq9))-|oxEeNBb~h$AOo(&HDted28fwU(A1L0`Q(^yTj1nK0 zq5Lb+_+651JlI#e_{(mY2}}cfVldV731ELZA-1x)QeYxhNCo4ZUh71?wiB`U8 zrBEh(|G&O>HG6bVJaai3I+mK52!`SGpSz!cdqcy*vS96i+{zv7mSJuCMF#J37T2HJ zRJ(e>HOsT!GCs}z>9bC+gC@;xV5nTs>{zoP)?&4pdV75Q6{o~C@d@kFi%nr4`>Q_63F^I{N1E%-KsR!TG5$=a zM^8_)ry?_ZxS?}j+tnXACv@C@x;U{bTkT)_<|}l+N~rA6S8lbhd*Gjk-tDLMrUL4p{hd%-lymH|9N=WSEe4e+#&gI8?9PxHNFq z^?C^UYYOwQpNZ^rd`_B&51KDwDDYxwx*LQ>aU{Lcs`+dXJ>?CkAOe#sU zPc~@j4+-upNI!t;rd~P zqh&^3hI~{Us&Nd=ZQJ{7?_y9ZHyT1t=6xv13smm}*JI_r+-_MXk0_tKF-rZ)G0Iu1 z#>Va(+tf38W=al+jT5|b8(#H;kzm9>lS?&BNbkw#_$Yd@K@ouq>qKg%J#->9y=Zqk zamqbab3b+kFSON1e0&2(zdMDMYBt0T70<0NGHgv>Il#0Jgf10B!|l2QIbFKPWtBbq z4qfUQh_l-;^4-CFrnQ6V=(47e?++`#Dg4~^e#9k&+hCVf)R=Bj5`EIVs9Dos=uxqn z+TyG{>wMSdVu`f<7atSvNwX2{ew4SG80ud0whUoUsv|3(x&E{rN&M>LK2+_rV9P+{ zKu*f2W^}VbS%NilNBaC|LKCC! zt9ga1_OMp9L-)aE1y1%F7b{{|U0!YO1}^bN`@^fcW50a1fB)Uo2>Yx z4e15dYOB|0SjJzqDexK8GfsH5ckUP^+45Qee&u9F))?i1PVZ=0>F5zBo%QWp-vKaQ zo=L2?oS$~(q?`UB_ty1k>H5nXOy2K)=99P3;|Fm{-M}?ekhyi`jve#*4H_c79&lIZ zF0ES~taqShz@{w0)ieEN``)Y;yOQjN#whQeVK8B7DjkK*;wrxwg3(a*C$oO7t&4r3 zLc{aa{DM`!gYiB2rZ;Qeer)m&sdFz_c?I167i&o!>MSpqzWQsif8lVAweICsiH(O_ zE4dABK4X+-=8cldUaRUIHa2&eZgovV#k$XJhl-^sX}{Kh}0He@P5UfD@{?g zW|~b`4lEhEVau}Y%F?cEG8_FKJRKCqMKJeh&RVTeV^I{_mG(1d%Z8ZF{N&~hFB_*t z%=>9y_9JE>PVLF?{>B{%U|Xe?nQX7Qa#=Y5*`5C@Hy@=4yXv4Pi;I5QDMrrY>8EL+rwl~GwN$(vo>icBs zwCLv=T^xurj;P%G>S8gNnsZfedwqR5M!C`OnXS6Bwx_Z+OFlC)Cv>o=vdhnK$hvAz zU`cyO6?1>e;Bd@HclQBV_15jpyk8SXz%7Aes*l%LUu70(;|)`+BsLbWXrSAyui)g` zb73ck(itHLpEUvko+e3{Na?HXCXn4jMOam$FpL=sd46io?Q3p0QS^93%Uh zM%ICobI=S+n)D0Y&)f2!fjJvkiFs6ZT94ILUoaKe?X<6W_m7`BS4(_fHqK_ZFSOMF z=QO(&Y|E9VB{k54c76Ty^FuinOY1@k&HKSYaF3W5zgjxjru6v>+YuLiy-y*!ZOq%{ zo;I)ITz!gV6AT9u$_t5>$80`&uH~M{#`{|Yf9Z<_)CVXUP-$?0D@gaMevi6e;IiUXaS_>qZ z_HK}7@2EmSuR8NvwhuIZk_(m{8Ce5Pvc*Fy4g1TQ#d=;Fvm26LFWfutOv}#RM6;pd zX3t;Ve$R7ON7&x`J z7f){}>s~W(H`iFnpk1OB?78E@b!i!Q9gp-?_ih;dzE6LqRb%^?FJS7|b#CS8naa;~ z3Q+i3hX%Xc0n5t5G0KaK{N(o5JVkSTJKNpN_FkK3phi-glwU7&;(cwJw%@m3f7!%d zj!gs8%xM5T+rK+=>3VT+#iTw2YD;c9FYBZ5Gg3MJI`N~{#%baEeD~+1Jg`k3?7wZ0 zII(c1%&yhyT{bH`jgNQwj;fcpYm8){dib)X)Y3K5`p|cqqT(U5d%dsn>y|%jI3Ls; za>t9IH7vVdpW_qd;+t5pqfd<+!(5A;e4L}+={qQW@JO0xU&(pzcHP$W4K890lY3m8 zIF8C+ev`J-P6**`)i|cee3@sUKGGk;bIj^%+wkq~7$wl_h2eo>@kr}5W|pe;US?Xc zy*=>=V9#Q{Lwsg`GyoSM*J+beyR~NB(~CauYix&?=X|}9-+bGbW72RT+pXY${d?q4 z%K^OrM?Et&t-!7j@iEG~s{%*%!^R~e$;Ja7t>*6bGG>*MUfugI^>SSeV6y%ANTYAxxb$?U%z|yoVCtA`|Psz+WV}$dVTaJV{0*u zyQ-cmlOB#dZt;q8(r$IUtR@Erac8%8>L+}~^lcB$l}6AxT>UPg9pQlFQze^Dae2e3 zs6Tq~cFq@S^Tm_f8BPo1GgdMvh)F|Zu@3@ZXNsnQ&{_Z;<!ZGi_%>;(OP{mXcNn=8$A&XUhbECh?2U9J{v{8@$8`7!60zF_DPFaiJER-^IJ2db+OF`eXqg0RBxh$Y zO%(O$i)=vjrueHhL-4ud(U5r!yC&NKAKO}W(!bbTrbK5l8mU|cq0mgof}P2x$iiop z^_8_g)n1=J$c&ffY)=Zgy+_h|iCt}yybgi_nI*j7ob+rTLfcc%9!&{}yr9z`U^V`!%q`Lt(}*VGnb9bk;ae z`7+srHLvZMy+e!3@OZ{G`r>eXYW=dtzUgh50@KUIPFz`eM>@N4eU-bc2l0WaC9a%6 zEpW+q@@5J6f86e%sbu|0^DFDFe!*6@WnD;t-g2vauKzg)*?6brfvZ$h>SWSm5%=PG z6r>8EVc&T#15kn7#u4@0TPe$+V|DjN&w^oodwV+*} z_DD*0XyI7&a<+1wR`R>JHt6QM!$<)%Sl>5OD{GlXj5~cSaClf%r&*d$036dGXY5nn>NnJ5z$*+Zl`n9iJ zRxwVzDrkF;ZkS%>krnSnrWNq4bZtT^d+2^`2G*3A8%6Azv`+ky*N0lvTX^Z@yA;O> zoXEy88An2`1{Yj1nX>xY5=!*zS6p`94qDzXwik!2odj18?$6z!2MS{@rS}I zy!~-ssJp*@WM968vOGM)p!0n_^(|Ann@&kTxWlD4vvg-tOsr4kwt|$Dq$pnlU%mL@ zxVgi%Iz|r790!`2fu2J+%oDyUg&C_7_B`bkn9@G~P?$}Rq|d#`Te6<95x9>Y_3gr5_6Jj6`=%H^J%#{cJmBDJ^xe)QrmA%AZ2ON^SH^>OG`y$%F{z zd+9TqOZs)^M@-)yf3IWkz{Z1>Qtld?QY%}LPK7u79qt;uzuLhU2K}B_oIE|#N`fzW zoJ-#|y#T*j?^>O$vAv;Pf*iw z7qN7C?2fvfc5No%H<~MG#2{)ElVIhLsrs(8dnrZsb*+@6qn}=(%5^OKT+tMs1&ek{ z_d5?+$I+elnMY$x3&JEv8jlUfHEBjX>-Rq{xi2m6^RC*~{-Cb=PmTHtqa_^cM>eV98Kvr!7$UR-FO^&F9NOv5!bp+z!&e=m$UAL5L%FL5r41$v zdR2`F_>?-wz1#w?xx<_bCwq3zv7?smS)CQp?3zsd!c-DPB6P|LIzHo2wjJR^?V?~64~lFV4@^x;2l$T0 z|4@(^4@b}VTnJixn3$e7Zvo!`*miuz`DRAxwf*5Co3~x zumi$)!)up~Vzm;LW4ByliqH4aVYNY#wN-n*k{)&AL_Mo_0CZ#h1YJuOv5-Mb}EcqJxFor;~e4Kt!QtgCRdW3$jy@0 zc-vFY>(XEq5*{xI$}W9V+gVKi*5*!5$#?md!ET`SI+5#7-kUJUH>ja-=6|wf)n~PS zf)#q~Aval>Yok5X=gp2%yEYz6ziN=5tWrfwphN%H=OJD?15dguYR$jTp-1_;(KYn$ zQJCOiFOzS0AWRZfaLnX~!X_HehaY-E;|oEh{5ap8mO{-07yhdqu&cuoZa&=RtCq<# z(GLkX?ayrV3#)uc=lV6Sl4j=L@vF8?d(_KF&W~v3t*A_`rD)2VAig6xv60^%C8+ye-*WLU|t5!R9vQFV!5bb)jv(u5}^R z_i5)fP98xo=0CQ-)I2HK*){A}RIVe>-H8XQAZ}zf*M?JOrK?B0F3bcoCN6|bC)54c z*YgUyEEjflSr@aqEXyR$4Rb~#V z$9*eWx%gAK#N@ltVwoFsq}n=Hz&uMOY?Ru^B@dQ$OM~n>-hExhio3&BfAYZrzL3y+ z8<0M9T&h$1xs)m3E?nx;pi9-YPU0TWbD(A#*z$SAqK-|De-sKLjh6Mtc2TsCTc+g< z@mYf{w^(z$Bwt@iy5dfWoYL6=rueF)owc*ZAHt`qS7O$aV_i1REM4k!ZTD*$1f#X1M#?zPzc< ztaY3wEA!-2BQtl}EQhBz)5(gq&*VJg)BI%GYINQq+2VR%`ZI2U@$h7kwS!aPG+B>3 zrCzI`af{Q0^Rd3!Z7n|(f-lpb`MP^aJE!b`kLKSj)QntK1*E&%!rbzt0F#^NWI^0{Xu}AM!(Car2Ae69%%={DxO1OBN80mvJ0V zaIK0GWC2^tekh#Kv+~Hu)HblTZHe;TCWzlEb@r>}Ta_E@IAmKuRLpg*RlxsC#Ac!U7b<4skx3z z=~MHmY~KMpyB2j;1Y*buXy>J{<;Zic`OJ`+)a48eu)su@B!!e!e;Cxikg*f$z2iM= z$gi00(GNq8N1K7wy5sqmhigx)^VN&XaC$PNORLq&meN`~lKbg*dB#j5x6Ej|FYOwg zl4)S=Z)2f#0JhO3M^m1_7Da8b%?-aYSR3#yT%u#d>nvQ54PjstOm6mj4YoVQeNf6z zd%}+qbdXum^g%P&qN^2KcuAl1@%^2)$U0p64d+C0=A4AgM0`Cj(Wi8e;zb$Fs(u%xP7EK`HH|KMW0# zVs~1Cpol%|cy*|(!wr8NXufLrUb{KhX-+=-Bg1CZyV|;p(;oEPtj13jvHpYWyKs}u zcU#$lieeauM+W1v;WmE&nbl>x;f+L@UORQIN!siFgOBU39p|%#Cl^TGxE%?Vv14UJ zkA5iJFaM!%_wE;s;a`orr?Q7EHa8f5nazG?Ch2+&|K-}QT6HVSOkyR9d&jD$vZ7%> z8vL!}(qLlE6v7IEv3k(Lg3`~~**DwT?}tKuWfhF_6h=%xV~c6wAkWGDB3q~G`ax*D z`Y)wwdTUZLYRy?UEEpjSN1JJS2V_JT_BKQoAE}hQ8({Zx#QqJ_qWoe?9UBUSzS_Ea z#XSxM^xFJLz6vYmYPoF=OjEX`tfA`YP4XiLa9X3H;3e0I0L$qlo{ccVr^;N`LVp>? zF@c$sn*Iu2xOSy+efs7`0^+NdQE%GDH1JifN_(&)turH)$+dxJj%EuIoyabPen9rVBJ=&zB8oyL*cT=2U#)9#v5o|ACp49c3q4b|B`U4Yw4h* zE1LBsXD&Syj$yzl4zDbUer*(_^*H*RiUKKT=9cfFVU713s;UO5S$Lc5T6O()<(Ey= zCBaz_rV(4J4->k7C`>#4^~;XxC(=3GbKHS-C;MYkq_GUj zG~X#Z(qZN;xX#^~nyKAxMX(PS-)m|d3bobf`PMivx%!xivTf9m*PR&$(>4uD_YHxA z{EJ@8G)pT>lg->B4$Ty{jU)3`y?tgXkA(7{wZ)tKQ_Cb3D@__6z^d-m^+9ixm+#otrFEih~k?`AU zSmbS|bA9Tl9NNa}xoVPNfx}imoCBu%yHSSVerp}Bbpan?z+Y;#8+;Chny$m&%4uxK zd`Fe_96R^ti++_(c6+Pj+nnt0AuDoj4zUk@hn5yLTqBYUegHG0h7pI4h4Fle*aG}C zYV6vKYbTjPj?3!dG_V>iOg0eqITf_j@^7cqc2JmnvGOr$O7};6&aw+3<}L8`UeR{n zvXUdDo6x!=!u@0(=X@GJb>_tBFih)w;hd3EOh%qXT4%S^mi6UC+dGHO%7U^2^Y(Ar z#T~vc^_$bT@;7#i$HO}CP_eFixM8oY(RWyninr7zgSV-}k{uAi-(tad+@_JQt7jod z4YA;XuSt;2sSL>N5*^FsTeNbCaQ~K)|L`&$ssbVylgNB);SDT zR#Dwq4VFqRE@JBrRu^n;EatKUuH$b->cE0kVjr9hTR4!+=4;5xoTE+VwER$**Lg6# zwW{%Jxd#}@BFX-Ec5wXQi|?NO5<&j)#(EkHHr7s?vO25W>()meW%R~3XQ!Ly*)gS* zlO2qsdP@&T`v`4AGhs)Rdk~IeS;Qnp7vs)sFICRdMm?Jw9PlN@C8zQAubF5mKh<85 zwyW}~X+~VJ=a+!~lZ%U7I{AAG8*+B{>1hm^+e=#W*dKMBFO^#6;z!;%j*p5MS8tqr zaY9x~>5I$af)5BxR#Wb~&+ri$| zy?P6n%jR=bB6EARCH@5hm#H=Ve(kVj*^$iUs+)7Ei!*z{BJsZgGnZwy&ZJd3q9}@K zd<&=I378t({Ae{jwGs0M9%Mz*H4|umZnn=(E`zBeq}RXUtL~cOo@2Im_3M(rNEipj z;7aOErdZj4pUH0E%CTtf)o|9bH%atjaB9JMr^_BJa00!P>cH|Kop6usmtr43DCz6b zOL4#Kz_hnl!~X+$CckL;Rk)}>tgy41^?C5&Z%4eV+8Wx*&CcfP{<7ePZmvs6!L%O= zzqjWMwtC%rd-Eo{`C+?kfW|m(Q&BD3-OG-vzO?hG)`On1XCV!H%h!kD_DDahP!{?R z5;j@LO08+EUQT`#TZ~Wc+bfs2ym5&W&)yobpW!qEidUA_8ZHc9Gxa+H zdZ4{h4-Lb4uOLF91!ctlhk|vGnM3}<9w^c+bLi4jwk{}twM`IWU?~Wz^iJzc#tjjR zk+TWvJDIXvLH+DLMsEHfm)gp+NYgv2H#xrtjwxshy`pb<^0{*yPSJ;^(5R)hO*F|k zX~G&em$=NG2g>!OX&W?pIkiRun)xWWcdVPI80QoNBOnkZkv?cX&1 z=E~a08p%;7kMoUdtG(Q0Jo>!%qpVNXxCT?V^SyRi!X&HEHD|1^%6| zqhck)CeGt>agT*+2h8OJFWQN=zs_`4Ua_2<|B zy#ii}*;c8VH7(`L@SbYxWP@k?y4H?C!7CTxCL88)z_8`F|Cfebu9d(VtP)R<>IcyzHs>*?u=n=0t(@^hjuX zq3@lH%neTH+Qn~8nC@ZMA)|jBvh-E+>IU~Q*0{c$EjF{Dhq0>&0kNm+dUc%!Kumm) zOsH?>A3dJX9v2VO(Tdc1GZSS?Gc!RvxSyE%*AoH+q(#N<+3&Wo>Um6)UN5|^MNcC` z+`*RSbkeJC)1;>u8^`nJ#Wtrs&NtmHTEOv zLF?f*^H0as3}X1VvtO^H@ekbAHCv~X-S#m*Ve;#SlijTPN4CBM4U39*{qfHti>Ac5 z@K1L5@dAub!`UiczyfxgZs-@6fr1=Df{d)1loS~PRSW;RD??+fpoPrsqJF;wt<^up z;3>ao4*tm8vKlyAJlm=q4jm`07SpOiX)g($C44`zJV`-4+s&!sUF|bzi4*6MFQ4&pXtpesfqUdF9nXbS_cEO=!RXVNW(kMzpcyN} zpc2AV#=`>nR8>Vnv3--F*e@SgS;OY#S6Em1#hZe^+uW3PnDLeRAgSs)-XsJPzvRdp z>O1(*5UdE>B>}=|i#=t}`J}J9%sQKlq}wBnSL+=M8m~TEY(Z;7*EuQw@nmfWwT?#9 zzj-^mRn3>Vs!PBR%6{13;7$J;+8EO&p75t}8&#|`qet&iACK*?byTl$=(wHvZC_a!A$~dPu$J<3a?CM zO1&P;01wYM`U&b_>(%FKWmS&ht?0O`+`_)hPyE>gHP}{Y;Big*8K&d8x22Ldobs1Y zpP|+S^ZaJ+_pq`Z!#adWbD20rQq#0D;^ zpIptYweKu+i7ARu{woK{cI0MmvC~(AC4RmS`Z?YbEiKYsLG=~E_IXxz<7Sr7=|p-x zO$_H*kCs=&#ar}eq|{m0tuAwjN$|`0({>Nn_#P$o7Wki3QfSe%>->`yUDW$7exUI& zcrGgWM_yc%ylcC|O%Pkcs@B^RPGITH=pi^(59QN+q0+!iWi4z!(*9T0?jH(UvKbGc za|-FOWqd!h(B?8@8GQ9K{^h9BjkH4@Y3RuTA>p^;4!;=VwyJENa#aqIDY<9b=JU!T zEw{2NA)t^~+~E?E{m8noo>P9JO(g|?x4tC$aC!qTgWN$5(Oo`LZSNL>{T>nWw)14q z+JeJ6RmFG%En}COrdwLbbiU^VGi0Ia$4nD628h+j+dFJO>DTnoYHyy_ZYwZW;XUH- zR68FA$yX+JaK6TlU*j3p%gE1#iPg3$gkgIF7BiJq^(ND(gt;xeQkIbR8zrO7Z;)?g z?o-L#f%o2Yp380Cd0EFcleM|Nk{-QxH%DIO+w74tX^3gnjcv3dc#U?IZQ7Ct&hI`K zv0uK+*l z3uT$yN5^5f)tK|(^>CZ}{*T51{2WOo|B!|3c1F52J4F2A&7L0$xBhf~la@0;tkQr% znc%Yi$gp4gG)J-4S{RM-Z)@=Og;$!*r4!BBIi`c9P6hG340|uHFz2IXMsWDrE31zF z;9`Q_;R4If@cbBc{$d`{MM%*atR!sPW^KjW%1`y8-9CXAiaJs#6q=33oQID8sZcXy zw=*l-;JlY`NE_bnJjUz8(&497t3zy|P-}-a_xpytZ`HnH?Flape}PaUs4qBD_OxxJ zp2GBs;k13ic6w8^r+dc7dXwL_6cy9|x?LE?4lX3jZRWQ3deROj_+@VE&7jHOqE{(R zKbkiOX84dN@`m4g5jVx2$a>cDzpWNK%*Ef~xu5T__j9rgb4A8IQm%yxGg1Cn+;e!q;B)oC)L|*_eCD@@*}t9a&?}|~MQ5aWXENiV zS?v@$P^JETP%24V+u4MGpiCIid@5Sop;S3Anptko;<1LUZNvNS$;i49MT3=3rLWXl zcn;zQhvWR`l7WXK?Y&nLr19n5_+#Pmu&8aflP$x0!`IdKQ{e-d)Pt4Q_)LY*tRo{V zK7C!61PGk8z>w+M#)@X_A;w&l-ephQ2n#xsH5|k2!zOYw?3Df0ls$W<-|NhOrq21Lk zUi3eB&UUR0E@f8W`_-ccNBEi)BoqY0LG%^wG^$HX5-Xa<^@9B&dU>*U8}AT3OBmZ_ zyN26(tk7)oP~&}mi@#s@aPEoQd9ZTlS!|rYw<=4^u8tM8u&rmtFNH%}-CR0hflZOX zRC(fn%N*Nbr5bK2SW6Ete6?%H8D5w5Q6lA8%yFPa-jw)qU&>UU2)DS)K7~2m0DEwI zQZk*Pr=J9WnM!H#oAjmq8Q~_E{Y~p)vUuCU@mP_We>7AzZ)+Wearw(KQMLI?TESoN zG9+SqqVvt_S>7-}`(8BmrJSVjV14X&6FxGqI$n7kHeKRM3nJpec&!%hbTme$gT}ZI zRvulu>*bKdpmZ0_q0_^iF8uDBTuMpLVhqz83XOZ7C!{|t_?%C# zi+1ROqryYJYw;1tX4d1|T(c!iN;cwDwN%7frV%q^cygxK_qC2@Ur#i?rMK^Ax`k2o zWU5tmQrpf7Fb{mUa%E*^1yNmARvk`_0hbFZXfZc>Gf{q89y9q_x-LP#Ci!(8y_Crk zT2@47T&Be2x_4KZroD!Rb4w1964@}&6YnGIzsBIb6m8}eOlg4{-6_)%oT$r4tKeSh zixcKUB?pLtPWJ3SvTxWI+@cl4=gtYAbs~uce1gt!TL*c*L8%`+uXw!Ix2M`XaBQUI z*;oK&)F#n$put<)G6l>RgM6*n*yh408JN6XaT4_%ydBhZ@3a>O)kTD*VSMVH8!TF6 zw`sU>jPV;zt<&{bD|X(Hg;P+f;E^gP=P5sl!;!#NQg?-YK?OL6;-B?rc)@Zwp*J(3 z%i14y89nMZ8Gs?V(9OEgnzr*z+AASbe_7q~dagqu!Qjy9FW|~xSQHcuUW_!_PQ6v)yN9$EZW`|DtoB+^x|FeWe->|O z+m2-4LmD$>tQqjx(>wM92j}@P+&-BryH@4%L!ophobqa`t;~n<%a=W^jwx-cPUa!L zTFctJ|Kpzvaq*U&Y5X;Dk{>njJ#FBB{{DBpKJoW;^6&ruAMwBBU)}z1e{Z}w`fGco zy_i2Y8iQ*vZ-rM)zz_&!&WywoJm;q66HVa%eEW6li0}gdH%EVMujGb#l&3errI`0G z&KNMnFgQ@s8i?m)EWA_#Jf@P-U)w9~!C3115^)h`jRa><;u-4(3HTuUO9GxVrjpTL z+biwH7){YlxCpcUN+2+VWbr;G4^vad>2`&jF_pmA_W%4Sf-6RE{zDTk#hB7}I73OS zPPw?^Ioy+0fxu%bfzR##QR0H_t=g4{i!e{|a1r>fdso+dNI(?PP*)6iOeOHW{Xa^a zu>%JQuDA$u#OZ^VL}kAtE{yTl&(j1RQwe-<|Bn(UjMYF1#6_5UuLI$ALid!{$wT2& zO~@Hj34C$?j}k}BJ@ac5T#D`Qjx7O(z$yoh-POc%3O~kRz+)+k z*?)Ci2{1g42O1EF=M*>5HG#)e0^i*KqlAWecxEKxBKtQD1_DFHvWOQn@tiY{ek%bU zQwe-@|Bn)TY;UGY6E3oUft@Qb)X5%cWFVdsdD#ePY$a1iE3w0TE(EyZB8=R2oI#1l z5%m&0C+75RJZH?3Oc|}j7HZ(@hzMhPt|o{;#nPwdBti;1W-2R zM(2%0mcbaWvfy5L2m_ycT6hYJdR|rnJjU%e-W(luN9iDT=+G7n7hy~s3IqlvGo8gv zc+MsD_7dPRm5h$MqjUgsS2uOVMd-AWL|}-v;qmE@Ks+a6__HSPm`X-R-BDs;{*D%K zB?L0To%20pZ2%{ zkEvvI)Ey-zwx6)12^aC(NG<_}w!Uv}6Ncxc6{IHukEvvI)E%Y$7{kN01Q+q`Qqcs4 zwtmQX93-G(%Zi$S$5b*p>W&fvJLF4G#6^4?6mSv6DcFqOc1XbEyf(#v$5b*p>W&f} zJCI8m5jot~=n4sF>z;4*H6ewCtb3jaJf@P-QFoNQutUF}!Y{=R?B|pKE6y^v%N}iaX-!HCkDRyA%>_A|}S(xv1TTMLYk1S1`$5b*p>W{pMvHi|Lfw+h_$0QLLlrY|Wa)lHY>39^>{KZ;p<-hbvhxkEP=K%nBs%m@b~@|7?O378GxT0gtI< zbkseili0!K)`_@?@9_~42*|=PCy(S@jAP(DrjpT7_moaRa5$t1F2xRqJ7K`kbyZA8 zqPbuxH$;#zwvy3N_mqxf%xj^Va4B|(aG(ho1`$S}yqTWTet`dYmau%zfVD zK)4h;aPk_?c<`VNsjhfVqVAqC3sHk(f{-4 zJUZ&0(ou|6{l|z1Yr{5>#Fgxk9m61nMHKdz0FPOc(NXu5j$rNzyGKM=8jqVm1S-~S z#yw3)VG*IRfxu%b869;`$shAzPsJ~V--}SjfT3coJ4Xh4tYjdo1aihyGCJy>k{`xu z`4z5&4pX@cXJ{vGXD^iCIhPBa1A)g>GCJy>k}tNe9DyrA$+agKFg%Xe;XqA1C!_CP z3GkRoM#s)mI*fVTJpxyPVU?xf3Jgk^@rOrpQZ=11NQ|jubnHB(Lzug`p#(04_@Cc! z5qLW+p1v!dbCx?&)nh36@AUuCQFoQXFvlgUHSwF#(huUSsEv6B`jy~0r)VS7#Td8W zcyn~rU8Rc{BTJBoi}+n^2n1GKitYP!W+W#?O`r)mV=5UPbyq1AJ2dk}AY6+1UPp0; z;8IhvPix{id5>xnfyY!bI_j=c2*!BHf-6CZ8NUe_f``#f`tcNY&fzW4*h)r6-Br4P z?a!SOh>IN9?NtH{W1>@dcp{#2zI7MQW0que)Lo_Xm{-;65fSFA0+7H1D{d}oz#xSM zZ_dPX##Ayo>aNl`?BI@7iMYuA)1O>{;c+z6js)U4w|>0GfX7raI_j=cFy>aC=ZcGX z&3u;#4B-s@$ougWcK2CI3GkRoMn~OM3c~hS+he%MK0*a9f`|TEa5E9lxyv5LfX7ra zI_j>{SYqn#!h@I!iTnlgK za9M~Zo>Q`*8vj3IDj6MhSLrlH@4NQ?J&Qsmjgir1`%JxP7_kt zDVYHVJcg40PXFIEdifEL?bEPo!f)pF=2alDB7)Jc8Dn@(g!pkH@EEt>cys4yC2}|u^8>`16N$cS=kC_ zD2ZpPd|0_kK9>kNV=5UPZ(k_}+q;_)2$y1qmo(uFu`Z{mFca~d3&$gY##S;q-o8>a z=Am{p5EnUc{cR#JD4BP^qXf@M{MZ%IMuu2BHrwjL|`b1SM5nWh4C~`;XJ02(ed_`BC&(>muuo8%+*p{ z1eDCzSAqomP~=W;SKu*~jE=XjbQxp*!b-$Nye!89;Y#+u&J4tJ5`TAf1s+q$&v^Uz zZ#-VY4nFI`FU8#5e!+kt+@;!;*hD<%%qoH=@R&+Q$Ie%Zzz#m1gyACYXTFvILnKna zS#$9ec6v^#EAW^~M#s)q3dj6Z*Nup{MLcc-5qLZM6ayduGgj3-P2e$B(-t{xm6MsA%;mIA zPTS>VA*UU3+9{`9a? zPP^r_M^0{X+AAk_IeExwpPW494cn4%84zfKslX~(`h-Kk<(c@1<5IR8uW_k3Z$`q|I-3~ z|MP*uDfplNr#~BRI{y=ZRF#0auJm(-YcbEeU5UVoy2fwYF5xNckA!#(c#HvP!%e4A zIu>Jx^$4!G#DNL>fp8~=hcGJ<&$;rxNfUTX9gd@P%*75p-wqdo>As~W5EyJ-56|(g zc+Qot{y2}R!{I;aI6Pge377EA*;WD!{xT1@&XJs}HVzo%jG<%GO`6<>0RJ$|4Jnw% zfeV^&DYjb+X#!SMh{g6{v95SlY?D_B@EBS)-n1WWi6mot@-;PakptTAfD{xhF?ZxW zp2EUs>`Vk6Q;FSZB}o`-?w%%G#4|e`7g3~OF7wvnDJ=I*m?rR;N^D0fxrKR-j|#*^ zJl>ADQ{g9G4__!u#B+kCvR#44R6-rCBoTgfuP+c6akZL`0V`6mebFxy@tnsO`kH{p zR6-f8Bmr~NcX7o!qN^C|exruG3{Z@jDxH`2a0z*j- z|CxxVurseG<2(NSXV19dk*Th9w+P^meE0UqHO$x+wQlu_;&X`K9Mk~3F9X9aM z#6=j+HHpBA@cV!LSQDNT<#x^$cuXah|CN-V*z|!d+BI>;`^jN&q2*MCf)}#&JO~|$n z8&Di~O;pexqaCE8nRi4NHP(@$v`!1>aegIH%G5;<&%GyoTJKx5Yh@L(HFvkrd0aM9 z);$T?LQh5P9!(&w=7b^}cx=&?bEnXn7?HKyaAn;i1V=I98S?sxj8vz4 zne-Yk`^pTo*XR@apzZt!()TSBhe+3x{Ga`bL={;g^gC?iV|^InbY4ojrd>^|9`i9I6az>{re!0p?!Te)von$Jo4Cm3Ok?!st_`Tqk()x% zP%iRC{dFPl)zzt#65cQd|WQ(*lV-tRN%Gr3j-9c`l;cd9G+? zQ?w9(Z1wXq?0U7)=+4|sgnmj1{W?%D29REos3cOCD|xY{vKTnxWvbXt#d|e?% z%xNzt1O@xc_5$^=IghobT+v@w7{ogJi4+Wtmwd>ip2T;SBw7o%ba-UOR!iRd5&~_-dj}i z(TsFx?w^9=mmUx|<_8efXA6ig4o^UEM6VAcAzl>zJ%GeLJ6Z7DZ7a(C?F0GE zjb8GG!$Bed`cxxbc;fjdgu6Of+_)l@G~fEL$mzgiG_7)X(GnYfqd%9H8LN*;iBEwdr)R2=Vxe4I-5~F}h@vfzYjQ6Kc%g zPJHueDiVHs6%wlBgS658kZj#!=;*Bqzx)6H$WH!$d8o7M7nlFj|DDdx76K4On~z1N&psMuT-ePA=)E!s zHyCo7ZnT>-Q+zUaDd}lp2I<|79Fo$j`vL%Q5?x}{sBcG{ZRJ5sN)#i%ZQu#i0#G#S zNMjMes8C5&@Ho|q=<2h-sCu8bQS$yG!9g_vQ82!t(Bmu7a9M7s;Off=qLrIe1VD8r zdx`+)-vwvA*e1NN+Xk^Zypb%?YavUs&B=%EamnF*CZs7{M@WX(u8A(TC8IWTokZi7 z*P&+)mWc;7I!XI4))LJo`k*F7m&LQTb4g#!&!QXSqR^zh^F`X(3()?ByU^p^mT0WO zO3_+AiZWDRiU6oAAV~!HdH-82p~MG^CLyebGvaw^G2~^MPsmHP%E<+-r^FW;gGkSZ zg~Xz-u?VNSh=jw?Pr0~XOO?F)6o-T^%O=GOCl&+9HCqi)9LCsF;=?HwM6CshsH565 zH0Z>iMF68Kk8Tvb)JitmLDUfKB5J^|y=WTXAibI-JalgX@?x(CsY&}ZDQJ#|2!Q@d zZW}?%yEjGCY91knb_Afpt7p(jhnhQvcTxa{gp<0oJ)-k zT?#Vf`}i15e2{LqA~Vm(8TrHL(CIRxfA{~tTim}2L;qj*Pydf;HoF5bAbs>xNb!Ln zB*X7w(e#N{$nFEP?$CBEFnaGk$Iu``)lgBrWCWjUdy7sm`ivZPwDfRHJvy}rV5Dan zB?kPon~4J!qImiabl$1ojBzMxPZUr6u$lDgg&%2VSTHG3Rwx7@PyPBva4t6mou7Xj zMT@IN3egRyc*bcV;HMqD=Z+l_2X=gw5b!hq@3*eB>w*~Y^ZxZ#fg%9<>JyucxcGwgH$hR*k5(DXh z#5{X-)YW|<+OB0HKDBxqY0lXs183K7MtL>PcL0X|mzsq~s+*DTis1zS{fql<2mr)Y z{AHw_;mb)=bjbowi(Fz{>l5U>T_y6`?Ve!&sVbs>OR*7-9IN%Bss-E7?mJrr0HW=* zZ$bbvQ+XWmV^2R(chJ~KyXr3SQzWm*@$Nz*sw^$CACD3L-T(h?0sks|Ry}OWKmGsW zBg9bn_9cs67Ff+o>V@wq^MoQ#;W{;>GbxmeO{dqworcSBMXr&lnT zHybhR;uNKk7|6T(H&7g^SM5kRX3y>xta{=7vwz*37k}sJ0Y&1xzha2-(j?+;3w42S z_6DM7ygxe z$YSzAE*VWPMR5??<{-Nb6j9&#x?~(5Ee1$3T{77$^ew3-TZ7C#n=Sl(Cz*V0f+|UT zV>Rh{>mosZOczmPtb;z@>VVq6A&UTLM(ma%j^$OOC1t^a#f}q@`)?Brwd~pqJ92qO z27lZ$ioK;tTy%0V@zhKo(Uz79H1NP_ApjZL{*;JgwpTu){Cg=v8w?gYxfi1x#mPkg zqxjly2#y7TVQBc3F!XN9Y9Ro*w<;a^<69Q;?ERlY0Aijt6)9Uc@890N`JB-I zHUH`V;lYZAIJUT{5OHW*9Vh}A{eAg_z%nFqxC?zbb4XacX9;R5+Ca=mDJD+Um?Nm~ zjYd9AN=9#OUQfD4@)tFv-ypdeZy@$Kd_&eBcrVy9I}6#xS%K^*CZpf@zY6K=C!^K# zN{xQBTp(hv^@%eD-9PHKBa*h9Vaz$A+`Of;)Xig;7)!! ziBGzXK7=2dn1Zfb$sx_ZaDln_2O+IGQu$sxd^@gEe)M} z>9TOG(^cen)+!MIZ9lXC!Lh`kvnVv_Eb{TnOkv^vHOR6X&O!jP_|!xr9M$!|5&r^6 zx|Rsm{viF-|L^(#@0R|r!qER0{nP&m35A9@6x-F1-Sdo*ZyybWs^KW&b?*-WfOtfi zAOs)-?pH-ufa?^7QV%t?yWK6F>uJ~>e@ThALwL=R9)dx2t)}ePrM^-#QyQ?#b24)Wv z3$ICpALrad=5~ESD#Q>7!69v-5iz~^e zJ)evA9TAZyUHyR!{Ay0NXipZ;i!38+?wy0CZ`L4D?--)5GFwnD#{)>-;X1TJJyejr z<1$*3WhS;b)d5nn*9BuNPPIsTj|IVA>=sLta_ zx$zij;=Pw50D5fSee}k=Iiy)Wg~D`k5mK|x1r0v2oD{Nhrr29Dla#XbipbLP9qRVm zfFQ);S0rwok>GK*6ES1lWur+8uNlplzYrnM2>Y+||2m_8`~Uw(4+YTwm;BTJx3>5T z8dgLRm5=@|FkeznG+)$IRQ;Vq+&%4~Am^e266APVv@rfE>E*<0Xs+83YJY}JY&3n3 zSah`$H+`9jmLyCdI-O5NTxIi79OT)C0^2n3XGc^Jaok&yAprcGZ~m@Y(?iRMI7*o< z2#%tQp~yr71ig@O0a;tkM(dl|LIARAZ+7vI>;`h0YeJ%q0m-{PUa71x5ed{XZMYs_!4J06f zgghiObieTOU>c&5zp7}BNdwX2biVLK{dly>H3`)}KZ&&On7in3dno#aun?U>cSVIs z%IKxL7U+*P_mK%Yg`|p`+e9_3SJ7x+7I9M25EApmQwTt=mHZ+A{Cp2#b4d?#d z|Nm|f|1u2yf9XH{pQEONbg~lAKP^8L0t_a1Ohj;~s@)+*B6o;pbrI11T_ z7e|CgEkiX2UZb{8!Vt6D1;~WAg~FF}u9L3p#RLGNS6c##<1yzrs=4SidNDsz2>3al z{awwPkBf*nrX_`Q~xN{`wCnWBv`1N#;sY>tK-hyVhdzmP}Q# zf!8$hyEorZ1(qWDlJN)e{+*uW9*_a;?6t2lVdF}k+7l#WPJ=Fi=N*i-&&?Ft}(PCx#X@Q|88`S z{P@TL@zUn2q$x8s(82g2(wvw*A^^IXbX~|=AA}Ch8V~}I8aFOl<@Y;@X+GBo$HLt+ zi8u;Q+!Ac7OZnMPQ!H7AjNA&NWW5xlq+{{u!ju@%T(?;C&6DpU09tqITanp}iNqVj ztwIOG(`d8tLecE~3(@647eoNmH+`DnMUshO?6gJ5^Xx@PY^;IkRGtBP_kiRM!0_Mp z|KBb0UxlInullF|f8iFQ4`5ucDNQXSj$a&;%#4uI@qLy%R1g#y*k<*hVqsi8f5gezkTt;!Q_r#0V zR_CK1VmQc&AByPjOU{Y_=&9vf$P|-(pNS2ba6QyXkMGMKDMN}m1Qqi7> z(yD#`&Fy#6@0`x>ANYJbo!6P;>XAP?mG z4TAf6o(lEVQ~vJ%|5yM2k6#G*{9FFXzx35l;8A%ZgjWpFxZojZZ@v}Np_2$-6~qDE z_DrB-F_?`N&cNF9{a9^02h~U=qX8C~D6hf{#fQZrWvLSOzPAJxUpSn-WG;mlg;~?d zM-RbmnK4LTNeTPL%w;u;=As8X4%$BCWxv{YviL@+ZR=u!L}DHvpbKO#16i^Dc)`0h zIPvUqF6L}FZaXo8t=&zbOsgB5@AO+({!2LLhR%@>p7u2>yC;&7zOmf%n@Z%>1{)0G ztFc(nFtWKmmxL{HuJN;3OEMM=L^U5LVQF7=j)#}uAIw>wnudFVkI_7EPX7Rmy(Wp} zmsNry9Ss~lVIQqK-5xDfRYFqr+fhP>COQ$g1X(y<@mi*r{|ono@B9Ze3ps{pt>I^&^hq z>oUW^f@U|AQM!puVGi;F>TS~16O*=LRI}EP|VJZm7OGsmCFXP2P15ddfsDZ&+4J*=|UGF zkE*@1o0aX{jmn0|RJ}dbX*24SCv&J^?!Wr~e?0AfA0D57+dujLG7U0|vsS=fy_eO| zPY%K%W@Chv4F@SJr9diE?F;1Xxj@JKW8)@c=}Q=fwF#!o^02ItW{V3_gLRx3|Y@c7eq_NMe(w9wK9omLma zDt=YW<;i#9zU4dN>}^+|sl-6CIcOqzi_-XVct5$^G8)gEBSD&b4WYZDB!-M>&BeBM z@?df(w=wP+&ia;yZN*Kzx^+bDg6ghV)odg)#v+?fpF;{(v z0nR^R>DNWviEX!WTF5!>_G4c%sK0*oZkq?Ve(Q10Zu4j&WqzCW6Pn=J{>FIfbt^R>XT^(Rakcb1rEQ3 z4k*vW3rknvV6_`eVbWMs_QhPtqcX(<*bJirbiQ{yW9_~c4iRgHSxHK0=}ZrL%^Y{Q zkR8HinT$nV9#3IPWPh~8ayT9Ed<;-17zXs~Co){P z8+@iGL>{liaLA?`RB!!U`1#QbBn*+jF=@f5Aa4UI!T$8hf%za}_(kFA7ZO0w^n?1o zZ7O*3Vl3=f9tiW4#gT`aCYpF!jPXf04(Elxgb}9(BK14^%+-Bf&|JF{cbN2G>0opA z^?(F?Fg+TFnVFOFt!ue$&YSRwFi%`}=q+CP$&Ucft0ebX5holyoMg1LGYw%WIBk3} z*OpX_dynsAC&%nU7vhm{Pl^`kH9iQoqW#F~s(|tQp@dAshC%la$Kmp}7a%X}9W;zf zhEvldP|ZDxv%Pnj-1s&fuQbTS50e}45-)u+LR^|uE>5bLbss_U{g-D^{my_U4XiBxMdLgKN5)Z;QD8kcMl-Za2;;_%HJ#6h^Nv!3+h-)c~ z!uRq&0-MjZ&{-=B?%k`4i{DFec;RGRVK$4Uda@GbejeW~ci7kZQu0!yapdq+a)tOUwbHhp_ z;}KFxMNvTq*~jSz(P=k(5}Poeq?FCVGeUFm{tPX)W5Y(0qQ47i`#a&AdgsvMXgM-_ zZwi-Vu0{f$Uc_BiC&;aow~XQgb+U6&DiqnLbB61f(uDi#r!v|{%iz#S790dc#eG_m`QsVI9vK2K=eiZ~p&M6=mJ&)sIOMxwHJv$$6-X_M_8j3?_ zom$|LeI6vVDA7~Y9RB71cP##AwtW8i*7on`e^V|_r0l;ZQ{yI#Wb|%NfjTk!gpDQ& zK;lCV9k+c4Fq*UjIlA0I+hc!%n-}!p-~ef)l4Ok(pC!VmH#=d}=3X?rthev}))xsy zBqC}5*jD6x=N5(s)m5SxRh1}MvHX;+$g^c>!c66(VD_|Zw(3q1TCjL4-ICu7pS`f9 zzm1oI@%B3WnBrvUo4$q4EG)yrjIXmdN-M|(`9YkSj|)C{U9~3OOqaZ?-G+BKX5x!- zd&vb}g5{_h>l@DGxb-S1av^U6$HS+@wOC%?`!py|hCa)6kelZqPVBus-d`QS^3YV< zlfS@CPWZ(1B&=TM$z}L@5#xLNS%V2Vc*t=>vUpfLnV%*}e5IU71f5LmEK|r`!96UJ zv}+^bNIW^2vIL08Z3^Ug_&k-%Hc`2K`w!DU59Jlcq0>!`jM!^Sv|E2LwP^D=s2wv4 zl$K0D&ifSL$f-Zzt=ao?YUW#v^88#-T&Dt>hM9uw>-Rz6Y;kPApp50AZm$PW zM4)7VH0LqsLYN!J!vjMX!teaQ#wni|9`tf3!UNAX;gquvnfA-=@Wtvp!7HB2G{)9T z!HcrlFaU{+J9CsVy!QZJbe3gfi-XbN^Zgj_f;CXhF_kg$-2=5+oUqG{Z&wTih=ikDVxlpw;=R#H;La~Nh|8&KK%@qxvOLtX zL6^N7{Te+tdcyJ$o|OR$>a)-hASGBdCk{?~6$mdc35DtFIA)>BVC3pt02XA|{VV@} z$Krox%jX~c$-n-9G_bF31l+SGlD4R-0ao8E0a<+vs0)SyE#^2F;AVoNUR^=LJCc*U>`W%Fc!=Yv24dk`BV@a0;oZ5d zc*(h$#AeBDe5ZUYF=6?gNMy;#?luabD~hYSKWgkqgq)coQsAhPzhKHYr90CaRsphW(< z|Nrm)-+%l{z~>+T$^VHVJJK1g{lFUg5 zLv*vj*S2x=%3TaFYxbs}xs|}koDgP7^&0ps#GRcT=8ZNV+|8cT$wyYl(*(j#5>%4f z8QS0IG9*Qt$+9ii$XCzz_{ZLTL{Iw?x-zdCo3yAf8jCk0-O4KVCO;N0LQ9+tiYmcY zORMqHFbU$L54fLS9^eLhReV|sW52EISTLawk&$|MLFWh@{Mv?jb~J(SU&vt`l%G_a;kn)TD8k zJ;LESmGju}TL~5f?j#n#l5;J-i<5KAYJNU)AVCIov~~mweP2!GoW7-FZEJI3NRcT@ z%=yR~l?=jR&r+F!pJ{MXM>LaQ9t#IGOIM$aittXZzZ*F2Qc>lt;g?$Og5sW1A~Ju}{9hV+obk7ZzJ2qBjlEdLg~VLIpZB`eY?7ZvroYDc zOL8{eWN?6qS-zayn|Ougp&chavb?_cExl_6(_D2E%`b3$@7uq-$6==J;ce6l;S_B1gvSB8g)@egALktPPZ@L_Tzm`$~(2=fL23S;9NdJfKp=Y1*~p zF=%jBq3*a>P=0QoX;MmH_!3KSO~D(~KRd>7-6vu7y-bdWOG10t!=XK>Yl6H$M1Wo3 z^KJoJS}>7_%!w6}q8(>Q#*{)-wx|KWU!}tGklmOhtS^2Le;fk1ao-oxdkb^4TL2k5Jw1U7UmeZoJx~jg9bV zLyE?owj!sS_rswwPUw4%BM~tzV@Ue9GsLI3f*s%4jwik!$nwxzcT4>KP6}TCVIk*m z;~rkDw*?pVyNqp|)N2-eTt#BUU$N1Z3-Ka@8La2CNOZ_t35nktg5b|baD>)1bgzCh z)6Xyw7S~{Q>1m7{?l{{Xf9Y*IX=@Jsai2Kse=iA(3=lhxL>iXX!L)L#zVq)CAj{-# zxdO4n6~^m_07c8F(l=^*pv@#Pw!f1%68snr6;hqxH&sm-zSJ2$nWzc;Vt;_EI?+PM zfLnjp|NqVZ_219G{h$1AQG3CR`tTA~SziYtPVFHy4@??t2}O2Ia$ybHCL`a*R8(QM z1BoxY$0%&;fZFO3P+!TbubdotcRRM=J(#Y{@%qLKg~~p&6?tLR0z|5@58v+nQx7m- zYgWS}Lqop`d410vmrYE?MlVwFAf*AMcFZ#3Fj1bIjZr6QQ-iUlvl(d|Fc=4|Ho
    1. sVy&wQ(G;?{! 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