diff --git a/CHANGELOG.md b/CHANGELOG.md index 8df70e78..7b4ffacb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,20 @@ If a copy of the MPL was not distributed with this file, You can obtain one at h ### Known Issues --> +## [0.11.1] Interim Release - The Tangent Fix + +### Added +* Added real-time update of file read-only status in the application title bar. + +### Fixes +* Fixed tangents and bitangents being thrown away after glTF import. +* Assets in glTF files that do not specify meshes but are otherwise valid can be imported now. + * A Mesh that loads a meshless glTF file will still show an error. + * A baked Mesh that loads a glTF file with no nodes referencing meshes will show an error. +* Fixed Mesh not being properly displayed after getting baked, unbaked, then baked again. +* Fixed missing update of broken link errors by undo/redo in some cases. + + ## [0.11.0] Lua Modules * **File version number has changed. Files saved with RaCo 0.11.0 cannot be opened by previous versions.** * **Export file format has changed. Scenes exported with RaCo 0.11.0 / ramses-logic 0.13.0 cannot be opened by previous ramses-logic versions.** @@ -52,6 +66,7 @@ If a copy of the MPL was not distributed with this file, You can obtain one at h * The property "timeRange" in Animations introduced in ramses-logic 0.13.0 is not supported yet. * The new "TimerNode" introduced in ramses-logic 0.13.0 cannot be created in RaCo yet. + ## [0.10.0] Animations * **File version number has changed. Files saved with RaCo 0.10.0 cannot be opened by previous versions.** diff --git a/CMakeLists.txt b/CMakeLists.txt index f5c6afd3..7236a87b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.19) SET(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo") -project(RaCoOS VERSION 0.11.0) +project(RaCoOS VERSION 0.11.1) SET(RACO_RELEASE_DIRECTORY ${CMAKE_BINARY_DIR}/release) diff --git a/EditorApp/mainwindow.cpp b/EditorApp/mainwindow.cpp index bb6239ac..5a89f33e 100644 --- a/EditorApp/mainwindow.cpp +++ b/EditorApp/mainwindow.cpp @@ -189,7 +189,7 @@ ads::CDockAreaWidget* createAndAddObjectTree(const char* title, const char* dock } ads::CDockAreaWidget* createAndAddProjectBrowser(MainWindow* mainWindow, const char* dockObjName, RaCoDockManager* dockManager, raco::object_tree::view::ObjectTreeDockManager& treeDockManager, raco::application::RaCoApplication* racoApplication, ads::CDockAreaWidget* dockArea) { - auto* model = new raco::object_tree::model::ObjectTreeViewExternalProjectModel(racoApplication->activeRaCoProject().commandInterface(), racoApplication->activeRaCoProject().fileChangeMonitor(), racoApplication->dataChangeDispatcher(), racoApplication->externalProjects()); + auto* model = new raco::object_tree::model::ObjectTreeViewExternalProjectModel(racoApplication->activeRaCoProject().commandInterface(), racoApplication->dataChangeDispatcher(), racoApplication->externalProjects()); return createAndAddObjectTree(MainWindow::DockWidgetTypes::PROJECT_BROWSER, dockObjName, model, new QSortFilterProxyModel, Queries::filterForVisibleObjects, ads::BottomDockWidgetArea, mainWindow, dockManager, treeDockManager, dockArea); } @@ -304,8 +304,7 @@ void createInitialWidgets(MainWindow* mainWindow, raco::ramses_widgets::Renderer MainWindow::MainWindow(raco::application::RaCoApplication* racoApplication, raco::ramses_widgets::RendererBackend* rendererBackend, QWidget* parent) : QMainWindow(parent), rendererBackend_{rendererBackend}, - racoApplication_{racoApplication}, - applicationName_("Ramses Composer") { + racoApplication_{racoApplication} { // Setup the UI from the QtCreator file mainwindow.ui ui = new Ui::MainWindow(); ui->setupUi(this); @@ -541,6 +540,7 @@ void MainWindow::openProject(const QString& file) { configureDebugActions(ui, this, racoApplication_->activeRaCoProject().commandInterface()); updateApplicationTitle(); + updateActiveProjectConnection(); if (racoApplication_->activeRaCoProject().project()->settings()->enableTimerFlag_.asBool() == true) { ui->menuDebug->addAction(ui->actionEnableRuntimeScriptPreview); @@ -560,17 +560,7 @@ MainWindow::~MainWindow() { } void MainWindow::updateApplicationTitle() { - raco::application::RaCoProject& project = racoApplication_->activeRaCoProject(); - if (racoApplication_->activeProjectPath().empty()) { - setWindowTitle(applicationName_ + " - "); - } else { - auto path = QString::fromStdString(racoApplication_->activeProjectPath()); - auto windowTitle = applicationName_ + " - " + project.name() + " (" + path + ")"; - if (!QFileInfo(path).isWritable()) { - windowTitle += " "; - } - setWindowTitle(windowTitle); - } + setWindowTitle(racoApplication_->generateApplicationTitle()); } bool MainWindow::saveActiveProject() { @@ -604,11 +594,12 @@ bool MainWindow::saveAsActiveProject() { if (racoApplication_->activeRaCoProject().saveAs(newPath, setProjectName)) { recentFileMenu_->addRecentFile(racoApplication_->activeProjectPath().c_str()); + updateActiveProjectConnection(); updateApplicationTitle(); return true; } else { updateApplicationTitle(); - QMessageBox::critical(this, "Save Error", fmt::format("Can not save project: Writing the project file '{}' failed (detailed error in the log). If you are using source control and the file is read-only: check if the file is in a state where you are allowed to edit it?", applicationName_.toStdString()).c_str(), QMessageBox::Ok); + QMessageBox::critical(this, "Save Error", fmt::format("Can not save project: Writing the project file '{}' failed (detailed error in the log). If you are using source control and the file is read-only: check if the file is in a state where you are allowed to edit it?", newPath.toStdString()).c_str(), QMessageBox::Ok); } } else { QMessageBox::warning(this, "Save Error", fmt::format("Can not save project: externally referenced projects not clean.").c_str(), QMessageBox::Ok); @@ -722,6 +713,15 @@ void MainWindow::resetDockManager() { dockManager_ = createDockManager(this); } +void MainWindow::updateActiveProjectConnection() { + QObject::disconnect(activeProjectFileConnection_); + if (!racoApplication_->activeProjectPath().empty()) { + activeProjectFileConnection_ = QObject::connect(&racoApplication_->activeRaCoProject(), &raco::application::RaCoProject::activeProjectFileChanged, [this]() { + updateApplicationTitle(); + }); + } +} + void MainWindow::showMeshImportErrorMessage(const std::string& filePath, const std::string& meshError) { auto filePathQString = QString::fromStdString(filePath); auto dialogText = meshError.empty() ? QString{"Ramses Composer encountered an unknown error while importing assets from %1.\nConsult with the logs or file contents to find the error."}.arg(filePathQString) diff --git a/EditorApp/mainwindow.h b/EditorApp/mainwindow.h index e17d0f1e..2f850d31 100644 --- a/EditorApp/mainwindow.h +++ b/EditorApp/mainwindow.h @@ -79,11 +79,12 @@ protected Q_SLOTS: bool saveAsActiveProject(); void importScene(); void resetDockManager(); + void updateActiveProjectConnection(); + Q_SIGNALS: void viewportChanged(const QSize& sceneSize); private: - QString applicationName_; Ui::MainWindow* ui; OpenRecentMenu* recentFileMenu_; RaCoDockManager* dockManager_; @@ -92,6 +93,7 @@ protected Q_SLOTS: raco::application::RaCoApplication* racoApplication_; raco::object_tree::view::ObjectTreeDockManager treeDockManager_; raco::common_widgets::TimingsModel timingsModel_{this}; + QMetaObject::Connection activeProjectFileConnection_; int renderTimerId_ = 0; }; diff --git a/components/libApplication/include/application/ExternalProjectsStore.h b/components/libApplication/include/application/ExternalProjectsStore.h index 7febb3f2..fd02d389 100644 --- a/components/libApplication/include/application/ExternalProjectsStore.h +++ b/components/libApplication/include/application/ExternalProjectsStore.h @@ -67,9 +67,9 @@ class ExternalProjectsStore : public raco::core::ExternalProjectsStoreInterface std::map> externalProjects_; - components::ExternalProjectFileChangeMonitor externalProjectFileChangeMonitor_; + components::ProjectFileChangeMonitor externalProjectFileChangeMonitor_; - std::unordered_map externalProjectFileChangeListeners_; + std::unordered_map externalProjectFileChangeListeners_; }; } // namespace raco::application diff --git a/components/libApplication/include/application/RaCoApplication.h b/components/libApplication/include/application/RaCoApplication.h index 109978e1..cc386f25 100644 --- a/components/libApplication/include/application/RaCoApplication.h +++ b/components/libApplication/include/application/RaCoApplication.h @@ -36,6 +36,8 @@ namespace raco::application { class RaCoApplication { public: + static const inline QString APPLICATION_NAME{"Ramses Composer"}; + explicit RaCoApplication(ramses_base::BaseEngineBackend& engine, const QString& initialProject = {}); RaCoProject& activeRaCoProject(); @@ -62,7 +64,6 @@ class RaCoApplication { raco::core::ExternalProjectsStoreInterface* externalProjects(); raco::core::MeshCache* meshCache(); - raco::core::FileChangeMonitor* fileChangeMonitor(); const core::SceneBackendInterface* sceneBackend() const; @@ -72,6 +73,8 @@ class RaCoApplication { raco::core::EngineInterface* engine(); + QString generateApplicationTitle() const; + private: // Needs to access externalProjectsStore_ directly: friend class ::ObjectTreeViewExternalProjectModelTest; @@ -84,7 +87,6 @@ class RaCoApplication { std::unique_ptr scenesBackend_; components::MeshCacheImpl meshCache_; - components::FileChangeMonitorImpl fileChangeMonitor_; std::unique_ptr activeProject_; diff --git a/components/libApplication/include/application/RaCoProject.h b/components/libApplication/include/application/RaCoProject.h index 83659ae7..817d9813 100644 --- a/components/libApplication/include/application/RaCoProject.h +++ b/components/libApplication/include/application/RaCoProject.h @@ -9,7 +9,6 @@ */ #pragma once -#include "components/FileChangeMonitorImpl.h" #include "components/MeshCacheImpl.h" #include "components/Naming.h" #include "core/CommandInterface.h" @@ -35,8 +34,8 @@ struct FutureFileVersion : public std::exception { } }; -class RaCoProject { - +class RaCoProject : public QObject { + Q_OBJECT public: Q_DISABLE_COPY(RaCoProject); ~RaCoProject(); @@ -62,12 +61,14 @@ class RaCoProject { raco::core::Errors* errors(); raco::core::DataChangeRecorder* recorder(); raco::core::CommandInterface* commandInterface(); - raco::core::FileChangeMonitor* fileChangeMonitor(); raco::core::UndoStack* undoStack(); raco::core::MeshCache* meshCache(); QJsonDocument serializeProject(const std::unordered_map>& currentVersions); +Q_SIGNALS: + void activeProjectFileChanged(); + private: // @exception ExtrefError RaCoProject(const QString& file, raco::core::Project& p, raco::core::EngineInterface* engineInterface, const raco::core::UndoStack::Callback& callback, raco::core::ExternalProjectsStoreInterface* externalProjectsStore, RaCoApplication* app, std::vector& pathStack); @@ -75,6 +76,7 @@ class RaCoProject { void onAfterProjectPathChange(const std::string& oldPath, const std::string& newPath); void generateProjectSubfolder(const std::string& subFolderPath); void generateAllProjectSubfolders(); + void updateActiveFileListener(); raco::core::DataChangeRecorder recorder_; raco::core::Errors errors_; @@ -83,7 +85,9 @@ class RaCoProject { std::shared_ptr context_; bool dirty_{false}; - raco::core::FileChangeMonitor* fileChangeMonitor_; + components::ProjectFileChangeMonitor activeProjectFileChangeMonitor_; + raco::components::ProjectFileChangeMonitor::UniqueListener activeProjectFileChangeListener_; + raco::core::MeshCache* meshCache_; raco::core::UndoStack undoStack_; raco::core::CommandInterface commandInterface_; diff --git a/components/libApplication/src/RaCoApplication.cpp b/components/libApplication/src/RaCoApplication.cpp index 8d8f1b50..23c5fdc2 100644 --- a/components/libApplication/src/RaCoApplication.cpp +++ b/components/libApplication/src/RaCoApplication.cpp @@ -23,6 +23,11 @@ #include +#ifdef OS_WINDOWS +// see: https://doc.qt.io/qt-5/qfileinfo.html#ntfs-permissions +extern Q_CORE_EXPORT int qt_ntfs_permission_lookup; +#endif + namespace raco::application { RaCoApplication::RaCoApplication(ramses_base::BaseEngineBackend& engine, const QString& initialProject) @@ -188,6 +193,32 @@ raco::core::EngineInterface* RaCoApplication::engine() { return engine_->coreInterface(); } +QString RaCoApplication::generateApplicationTitle() const { + const auto& project = activeRaCoProject(); + if (activeProjectPath().empty()) { + return APPLICATION_NAME + " - "; + } + + auto path = QString::fromStdString(activeProjectPath()); + auto windowTitle = APPLICATION_NAME + " - " + project.name() + " (" + path + ")"; + auto fileInfo = QFileInfo(path); + if (fileInfo.exists() && !fileInfo.isWritable()) { + windowTitle += " "; + } else { +#ifdef OS_WINDOWS + // check NTFS permissions under Win, only after simple read-only check returns false + // (the permissions may still forbid writing) + qt_ntfs_permission_lookup++; + fileInfo = QFileInfo(path); + if (fileInfo.exists() && !fileInfo.isWritable()) { + windowTitle += " "; + } + qt_ntfs_permission_lookup--; +#endif + } + return windowTitle; +} + core::ExternalProjectsStoreInterface* RaCoApplication::externalProjects() { return &externalProjectsStore_; } @@ -196,8 +227,4 @@ raco::core::MeshCache* RaCoApplication::meshCache() { return &meshCache_; } -raco::core::FileChangeMonitor* RaCoApplication::fileChangeMonitor() { - return &fileChangeMonitor_; -} - } // namespace raco::application \ No newline at end of file diff --git a/components/libApplication/src/RaCoProject.cpp b/components/libApplication/src/RaCoProject.cpp index b523d00c..cf5ea93c 100644 --- a/components/libApplication/src/RaCoProject.cpp +++ b/components/libApplication/src/RaCoProject.cpp @@ -19,7 +19,6 @@ #include "core/Queries.h" #include "core/Undo.h" #include "ramses_base/BaseEngineBackend.h" -#include "components/FileChangeMonitorImpl.h" #include "components/Naming.h" #include "application/RaCoApplication.h" #include "components/RaCoPreferences.h" @@ -62,11 +61,9 @@ RaCoProject::RaCoProject(const QString& file, Project& p, EngineInterface* engin callback(); }), commandInterface_(context_.get(), &undoStack_), - fileChangeMonitor_{app->fileChangeMonitor()}, meshCache_{app->meshCache()} { context_->setMeshCache(meshCache_); context_->setExternalProjectsStore(externalProjectsStore); - context_->setFileChangeMonitor(fileChangeMonitor_); // Abort file loading if we encounter external reference RenderPasses or extref cameras outside a Prefab. // A bug in V0.9.0 allowed to create such projects. @@ -134,6 +131,10 @@ RaCoProject::RaCoProject(const QString& file, Project& p, EngineInterface* engin undoStack_.reset(); context_->changeMultiplexer().reset(); + + if (!project_.currentFileName().empty()) { + updateActiveFileListener(); + } dirty_ = false; } @@ -151,6 +152,7 @@ void RaCoProject::onAfterProjectPathChange(const std::string& oldPath, const std } } project_.rerootExternalProjectPaths(oldPath, newPath); + updateActiveFileListener(); } void RaCoProject::generateProjectSubfolder(const std::string& subFolderPath) { @@ -168,6 +170,13 @@ void RaCoProject::generateAllProjectSubfolders() { generateProjectSubfolder(prefs.shaderSubdirectory.toStdString()); } +void RaCoProject::updateActiveFileListener() { + activeProjectFileChangeListener_ = activeProjectFileChangeMonitor_.registerFileChangedHandler(project_.currentPath(), + [this]() { + Q_EMIT activeProjectFileChanged(); + }); +} + RaCoProject::~RaCoProject() { for (const auto& instance : project_.instances()) { instance->onBeforeDeleteObject(errors_); @@ -410,10 +419,6 @@ CommandInterface* RaCoProject::commandInterface() { return &commandInterface_; } -FileChangeMonitor* RaCoProject::fileChangeMonitor() { - return fileChangeMonitor_; -} - UndoStack* RaCoProject::undoStack() { return &undoStack_; } diff --git a/components/libApplication/tests/CMakeLists.txt b/components/libApplication/tests/CMakeLists.txt index 3d49d39b..d8fee744 100644 --- a/components/libApplication/tests/CMakeLists.txt +++ b/components/libApplication/tests/CMakeLists.txt @@ -39,6 +39,7 @@ raco_package_add_test_resouces( meshes/InterpolationTest/interpolation.bin meshes/InterpolationTest/l.jpg meshes/Duck.glb + meshes/meshless.gltf meshes/negativeScaleQuad.gltf meshes/ToyCar/ToyCar.gltf meshes/ToyCar/ToyCar.bin diff --git a/components/libApplication/tests/RaCoApplication_test.cpp b/components/libApplication/tests/RaCoApplication_test.cpp index ab7fd890..8edc30eb 100644 --- a/components/libApplication/tests/RaCoApplication_test.cpp +++ b/components/libApplication/tests/RaCoApplication_test.cpp @@ -551,6 +551,49 @@ TEST_F(RaCoApplicationFixture, importglTFScenegraphWrongFileReturnsEmptyAnimSamp ASSERT_EQ(animSampler, nullptr); } +TEST_F(RaCoApplicationFixture, importglTFScenegraphWithNoMeshes) { + auto* commandInterface = application.activeRaCoProject().commandInterface(); + commandInterface->deleteObjects(application.activeRaCoProject().project()->instances()); + + raco::core::MeshDescriptor desc; + desc.absPath = cwd_path().append("meshes/meshless.gltf").string(); + desc.bakeAllSubmeshes = false; + + auto scenegraph = commandInterface->meshCache()->getMeshScenegraph(desc); + + ASSERT_NE(scenegraph, nullptr); + ASSERT_EQ(scenegraph->nodes.size(), 3); +} + +TEST_F(RaCoApplicationFixture, importglTFScenegraphWithNoMeshesAndNoNodes) { + auto* commandInterface = application.activeRaCoProject().commandInterface(); + commandInterface->deleteObjects(application.activeRaCoProject().project()->instances()); + + auto nodeless = makeFile("nodeless.gltf", R"( +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene" + } + ] +} + +)"); + + raco::core::MeshDescriptor desc; + desc.absPath = nodeless; + desc.bakeAllSubmeshes = false; + + auto scenegraph = commandInterface->meshCache()->getMeshScenegraph(desc); + + ASSERT_NE(scenegraph, nullptr); + ASSERT_TRUE(scenegraph->nodes.empty()); +} TEST_F(RaCoApplicationFixture, importglTFScenegraphMeshNodesDontReferenceDeselectedMeshes) { auto* commandInterface = application.activeRaCoProject().commandInterface(); commandInterface->deleteObjects(application.activeRaCoProject().project()->instances()); diff --git a/components/libApplication/tests/RaCoProject_test.cpp b/components/libApplication/tests/RaCoProject_test.cpp index 119dd7c2..e1e84f0a 100644 --- a/components/libApplication/tests/RaCoProject_test.cpp +++ b/components/libApplication/tests/RaCoProject_test.cpp @@ -784,4 +784,38 @@ TEST_F(RaCoProjectFixture, copyPasteDeepLuaScriptReferencingLuaScriptModule) { app.activeRaCoProject().commandInterface()->pasteObjects(clipboard); ASSERT_NO_FATAL_FAILURE(app.doOneLoop()); } -} \ No newline at end of file +} + +#if (!defined(__linux)) +// Skip this test in Linux because TC build on Linux seems to not properly change permissions +TEST_F(RaCoProjectFixture, readOnlyProject_appTitleSuffix) { + std::string clipboard; + auto projectPath = (cwd_path() / "project.rca"); + { + RaCoApplication app{backend}; + app.activeRaCoProject().project()->setCurrentPath((cwd_path() / "project.rca").string()); + app.activeRaCoProject().saveAs((cwd_path() / "project.rca").string().c_str()); + } + + std::error_code ec; + std::filesystem::permissions(projectPath, std::filesystem::perms::owner_read, ec); + ASSERT_TRUE(!ec) << "Failed to set permissons. Error code: " << ec.value() << " Error message: '" << ec.message() << "'"; + + { + RaCoApplication app{backend, (cwd_path() / "project.rca").string().c_str()}; + + auto expectedAppTitle = fmt::format("{} - ({}) ", RaCoApplication::APPLICATION_NAME.toStdString(), app.activeProjectPath()); + EXPECT_EQ(app.generateApplicationTitle().toStdString(), expectedAppTitle); + } + + std::filesystem::permissions(projectPath, std::filesystem::perms::all, ec); + ASSERT_TRUE(!ec) << "Failed to set permissons. Error code: " << ec.value() << " Error message: '" << ec.message() << "'"; + + { + RaCoApplication app{backend, (cwd_path() / "project.rca").string().c_str()}; + + auto expectedAppTitle = fmt::format("{} - ({})", RaCoApplication::APPLICATION_NAME.toStdString(), app.activeProjectPath()); + EXPECT_EQ(app.generateApplicationTitle().toStdString(), expectedAppTitle); + } +} +#endif \ No newline at end of file diff --git a/components/libComponents/include/components/FileChangeMonitorImpl.h b/components/libComponents/include/components/FileChangeMonitorImpl.h index 62144368..7a7d0bc2 100644 --- a/components/libComponents/include/components/FileChangeMonitorImpl.h +++ b/components/libComponents/include/components/FileChangeMonitorImpl.h @@ -74,7 +74,7 @@ class GenericFileChangeMonitorImpl : public Base { using FileChangeMonitorImpl = GenericFileChangeMonitorImpl; -using ExternalProjectFileChangeMonitor = GenericFileChangeMonitorImpl>>; +using ProjectFileChangeMonitor = GenericFileChangeMonitorImpl>>; } // namespace raco::core \ No newline at end of file diff --git a/components/libMeshLoader/include/mesh_loader/glTFMesh.h b/components/libMeshLoader/include/mesh_loader/glTFMesh.h index f015017c..7483624c 100644 --- a/components/libMeshLoader/include/mesh_loader/glTFMesh.h +++ b/components/libMeshLoader/include/mesh_loader/glTFMesh.h @@ -26,7 +26,7 @@ namespace raco::mesh_loader { class glTFMesh : public raco::core::MeshData { public: - glTFMesh(const tinygltf::Model &scene, core::MeshScenegraph &sceneGraph, const core::MeshDescriptor &descriptor); + glTFMesh(const tinygltf::Model &scene, const core::MeshScenegraph &sceneGraph, const core::MeshDescriptor &descriptor); uint32_t numSubmeshes() const override; uint32_t numTriangles() const override; diff --git a/components/libMeshLoader/src/glTFFileLoader.cpp b/components/libMeshLoader/src/glTFFileLoader.cpp index ee89dd00..dbc92313 100644 --- a/components/libMeshLoader/src/glTFFileLoader.cpp +++ b/components/libMeshLoader/src/glTFFileLoader.cpp @@ -167,15 +167,14 @@ bool glTFFileLoader::importglTFScene(const std::string& absPath) { } if (!err.empty()) { error_ = err; - } - - if (!error_.empty() || scene_->meshes.empty()) { LOG_ERROR(log_system::MESH_LOADER, "Encountered an error while loading glTF mesh {}\n\tError: {}", absPath, error_); + importer_.reset(); return false; } if (!buildglTFScenegraph()) { LOG_ERROR(log_system::MESH_LOADER, "Encountered an error while loading glTF mesh {}\n\tError: {}", absPath, error_); + importer_.reset(); sceneGraph_.reset(); return false; } @@ -323,8 +322,18 @@ raco::core::SharedMeshData glTFFileLoader::loadMesh(const core::MeshDescriptor& if (!importglTFScene(descriptor.absPath)) { return raco::core::SharedMeshData(); } - if (!descriptor.bakeAllSubmeshes && (descriptor.submeshIndex < 0 || descriptor.submeshIndex >= getTotalMeshCount())) { - error_ = "Selected submesh index is out of valid submesh index range [0," + std::to_string(getTotalMeshCount() - 1) + "]"; + auto meshCount = getTotalMeshCount(); + if (meshCount == 0) { + error_ = "Mesh file contains no valid submeshes to select"; + return raco::core::SharedMeshData(); + } else if (descriptor.bakeAllSubmeshes) { + if (std::all_of(sceneGraph_->nodes.begin(), sceneGraph_->nodes.end(), [](const auto& node) { return node->subMeshIndeces.empty(); })) { + error_ = "Mesh file contains no bakeable submeshes.\nSubmeshes should be referenced by nodes to be bakeable."; + return raco::core::SharedMeshData(); + } + } + if (!descriptor.bakeAllSubmeshes && (descriptor.submeshIndex < 0 || descriptor.submeshIndex >= meshCount)) { + error_ = "Selected submesh index is out of valid submesh index range [0," + std::to_string(meshCount - 1) + "]"; return raco::core::SharedMeshData(); } diff --git a/components/libMeshLoader/src/glTFMesh.cpp b/components/libMeshLoader/src/glTFMesh.cpp index f8ff3bbb..c5cb688a 100644 --- a/components/libMeshLoader/src/glTFMesh.cpp +++ b/components/libMeshLoader/src/glTFMesh.cpp @@ -25,7 +25,7 @@ namespace raco::mesh_loader { using namespace raco::core; -glTFMesh::glTFMesh(const tinygltf::Model &scene, core::MeshScenegraph &sceneGraph, const core::MeshDescriptor &descriptor) : numTriangles_(0), numVertices_(0) { +glTFMesh::glTFMesh(const tinygltf::Model &scene, const core::MeshScenegraph &sceneGraph, const core::MeshDescriptor &descriptor) : numTriangles_(0), numVertices_(0) { // Not included: Bones, textures, materials, node structure, etc. // set up buffers we are going to fill in the loop @@ -74,10 +74,6 @@ glTFMesh::glTFMesh(const tinygltf::Model &scene, core::MeshScenegraph &sceneGrap for (auto i = 0; i < sceneGraph.nodes.size(); ++i) { auto &node = sceneGraph.nodes[i].value(); nodeTrafos[i] = generateTrafoMatrix(node); - // Cleaning out the extracted transformation for easier debugging - node.transformations.translation = {0, 0, 0}; - node.transformations.rotation = {0, 0, 0}; - node.transformations.scale = {1, 1, 1}; } @@ -260,19 +256,29 @@ void glTFMesh::loadPrimitiveData(const tinygltf::Primitive &primitive, const tin if (tangentData) { auto tangent = tangentData->getDataAt(vertexIndex); - assert(tangent.size() == 4); - - tangentBuffer.insert(tangentBuffer.end(), tangent.begin(), tangent.end()); - auto tangentW = tangent[3]; - - // cross tangent with normal and multiply with tangent.W to get bitangent - auto bitangentXYZ = {tangentW * (currentNormal[1] * tangent[2] - currentNormal[2] * tangent[1]), - tangentW * (currentNormal[2] * tangent[0] - currentNormal[0] * tangent[2]), - tangentW * (currentNormal[0] * tangent[1] - currentNormal[1] * tangent[0])}; - bitangentBuffer.insert(bitangentBuffer.end(), bitangentXYZ.begin(), bitangentXYZ.end()); + auto tangentSize = tangent.size(); + + if (tangentSize >= 3) { + tangentBuffer.insert(tangentBuffer.end(), tangent.begin(), tangent.begin() + 3); + + if (tangentSize == 4) { + const auto &tangentX = tangent[0]; + const auto &tangentY = tangent[1]; + const auto &tangentZ = tangent[2]; + const auto &tangentW = tangent[3]; + + auto bitangent = glm::cross(glm::vec3{currentNormal[0], currentNormal[1], currentNormal[2]}, glm::vec3{tangentX, tangentY, tangentZ}) * tangentW; + bitangentBuffer.insert(bitangentBuffer.end(), {bitangent.x, bitangent.y, bitangent.z}); + } else { + LOG_ERROR(log_system::MESH_LOADER, "glTF tangent data is not in XYZW format - bitangent at vertexIndex {} will not be imported", vertexIndex); + bitangentBuffer.insert(bitangentBuffer.end(), {0, 0, 0}); + } + } else { + LOG_ERROR(log_system::MESH_LOADER, "glTF tangent data is not in XYZ format - tangent at vertexIndex {} will not be imported", vertexIndex); + tangentBuffer.insert(tangentBuffer.end(), {0, 0, 0}); + } } - } for (auto uvChannel = 0; uvChannel < MAX_NUMBER_TEXTURECOORDS; ++uvChannel) { diff --git a/components/libMeshLoader/tests/CMakeLists.txt b/components/libMeshLoader/tests/CMakeLists.txt index 3aa09563..56b9d31b 100644 --- a/components/libMeshLoader/tests/CMakeLists.txt +++ b/components/libMeshLoader/tests/CMakeLists.txt @@ -26,6 +26,8 @@ raco_package_add_headless_test( ) raco_package_add_test_resouces( libMeshLoader_test "${CMAKE_SOURCE_DIR}/resources" + meshes/AnimatedMorphCube/AnimatedMorphCube.bin + meshes/AnimatedMorphCube/AnimatedMorphCube.gltf meshes/CesiumMilkTruck/CesiumMilkTruck.gltf meshes/CesiumMilkTruck/CesiumMilkTruck.png meshes/CesiumMilkTruck/CesiumMilkTruck_data.bin diff --git a/components/libMeshLoader/tests/FileLoader_test.cpp b/components/libMeshLoader/tests/FileLoader_test.cpp index 95c64c98..a9a059f3 100644 --- a/components/libMeshLoader/tests/FileLoader_test.cpp +++ b/components/libMeshLoader/tests/FileLoader_test.cpp @@ -16,7 +16,21 @@ using namespace raco; -class MeshLoaderTest : public TestEnvironmentCore {}; +class MeshLoaderTest : public TestEnvironmentCore { + +protected: + + std::vector getPositionData(const raco::core::SharedMeshData mesh) { + auto posIndex = mesh->attribIndex(mesh->ATTRIBUTE_POSITION); + auto firstPos = mesh->attribBuffer(posIndex); + + auto posElementAmount = mesh->attribElementCount(posIndex); + std::vector posData(posElementAmount * 3); + std::memcpy(&posData[0], firstPos, posElementAmount * 3 * sizeof(float)); + + return posData; + }; +}; TEST_F(MeshLoaderTest, glTFLoadBaked) { core::MeshDescriptor desc; @@ -66,4 +80,74 @@ TEST_F(MeshLoaderTest, glTFLoadUnbakedThenBaked) { ASSERT_EQ(unbakedMesh->numSubmeshes(), 1); ASSERT_EQ(bakedMesh->numSubmeshes(), 1); // TODO should be 4 with full submesh support ASSERT_EQ(fileloader.getTotalMeshCount(), 4); +} + +TEST_F(MeshLoaderTest, glTFLoadBakedThenUnbakedThenBakedCorrectPositionData) { + core::MeshDescriptor desc; + desc.absPath = cwd_path().append("meshes/CesiumMilkTruck/CesiumMilkTruck.gltf").string(); + desc.bakeAllSubmeshes = true; + desc.submeshIndex = 0; + + mesh_loader::glTFFileLoader fileloader(desc.absPath); + auto firstUnbakedMesh = fileloader.loadMesh(desc); + auto firstUnbakedPosData = getPositionData(firstUnbakedMesh); + + desc.bakeAllSubmeshes = false; + auto bakedMesh = fileloader.loadMesh(desc); + + desc.bakeAllSubmeshes = true; + auto secondUnbakedMesh = fileloader.loadMesh(desc); + auto secondUnbakedPosData = getPositionData(secondUnbakedMesh); + + ASSERT_EQ(firstUnbakedPosData, secondUnbakedPosData); +} + +TEST_F(MeshLoaderTest, glTFLoadUnbakedThenBakedThenUnbakedCorrectPositionData) { + core::MeshDescriptor desc; + desc.absPath = cwd_path().append("meshes/CesiumMilkTruck/CesiumMilkTruck.gltf").string(); + desc.bakeAllSubmeshes = false; + desc.submeshIndex = 0; + + mesh_loader::glTFFileLoader fileloader(desc.absPath); + auto firstBakedMesh = fileloader.loadMesh(desc); + auto firstBakedPosData = getPositionData(firstBakedMesh); + + desc.bakeAllSubmeshes = true; + auto unbakedMesh = fileloader.loadMesh(desc); + + desc.bakeAllSubmeshes = false; + auto secondBakedMesh = fileloader.loadMesh(desc); + auto secondBakedPosData = getPositionData(secondBakedMesh); + + ASSERT_EQ(firstBakedPosData, secondBakedPosData); +} + +TEST_F(MeshLoaderTest, glTFLoadInvalidThenValid) { + auto meshFile = makeFile("mesh.gltf", ""); + + core::MeshDescriptor desc; + desc.absPath = meshFile; + desc.bakeAllSubmeshes = true; + desc.submeshIndex = 0; + + mesh_loader::glTFFileLoader fileloader(desc.absPath); + auto mesh = fileloader.loadMesh(desc); + ASSERT_EQ(mesh, nullptr); + + desc.absPath = cwd_path().append("meshes/CesiumMilkTruck/CesiumMilkTruck.gltf").string(); + mesh = fileloader.loadMesh(desc); + ASSERT_NE(mesh, nullptr); +} + +TEST_F(MeshLoaderTest, glTFWithTangentsAndBitangents) { + core::MeshDescriptor desc; + desc.absPath = cwd_path().append("meshes/AnimatedMorphCube/AnimatedMorphCube.gltf").string(); + desc.bakeAllSubmeshes = false; + desc.submeshIndex = 0; + + mesh_loader::glTFFileLoader fileloader(desc.absPath); + auto mesh = fileloader.loadMesh(desc); + + ASSERT_NE(mesh->attribIndex(mesh->ATTRIBUTE_TANGENT), -1); + ASSERT_NE(mesh->attribIndex(mesh->ATTRIBUTE_BITANGENT), -1); } \ No newline at end of file diff --git a/components/libRamsesBase/tests/CMakeLists.txt b/components/libRamsesBase/tests/CMakeLists.txt index ae0ed0e6..b66a23fd 100644 --- a/components/libRamsesBase/tests/CMakeLists.txt +++ b/components/libRamsesBase/tests/CMakeLists.txt @@ -49,6 +49,8 @@ raco_package_add_test_resouces( shaders/simple_texture.frag shaders/simple_texture.vert meshes/Duck.glb + meshes/meshrefless.gltf + meshes/meshless.gltf meshes/CesiumMilkTruck/CesiumMilkTruck.gltf meshes/CesiumMilkTruck/CesiumMilkTruck_data.bin meshes/InterpolationTest/InterpolationTest.gltf diff --git a/components/libRamsesBase/tests/MeshAdaptor_test.cpp b/components/libRamsesBase/tests/MeshAdaptor_test.cpp index db4397f2..d4fa2246 100644 --- a/components/libRamsesBase/tests/MeshAdaptor_test.cpp +++ b/components/libRamsesBase/tests/MeshAdaptor_test.cpp @@ -38,3 +38,42 @@ TEST_F(MeshAdaptorTest, context_mesh_name_change) { ASSERT_TRUE(isRamsesNameInArray("Changed_MeshVertexData_a_Normal", meshStuff)); ASSERT_TRUE(isRamsesNameInArray("Changed_MeshVertexData_a_TextureCoordinate", meshStuff)); } + +TEST_F(MeshAdaptorTest, gltf_without_meshes) { + auto mesh = context.createObject(raco::user_types::Mesh::typeDescription.typeName, "Mesh Name"); + context.set({mesh, &raco::user_types::Mesh::uri_}, cwd_path().append("meshes/meshless.gltf").string()); + + dispatch(); + + auto meshStuff{select(*sceneContext.scene(), ramses::ERamsesObjectType::ERamsesObjectType_ArrayResource)}; + EXPECT_EQ(meshStuff.size(), 0); +} + + +TEST_F(MeshAdaptorTest, gltf_with_meshes_but_no_mesh_refs_baked) { + auto mesh = context.createObject(raco::user_types::Mesh::typeDescription.typeName, "Mesh Name"); + context.set({mesh, &raco::user_types::Mesh::bakeMeshes_}, true); + context.set({mesh, &raco::user_types::Mesh::uri_}, cwd_path().append("meshes/meshrefless.gltf").string()); + + dispatch(); + + auto meshStuff{select(*sceneContext.scene(), ramses::ERamsesObjectType::ERamsesObjectType_ArrayResource)}; + EXPECT_EQ(meshStuff.size(), 0); + ASSERT_EQ(context.errors().getError(mesh).level(), raco::core::ErrorLevel::ERROR); +} + +TEST_F(MeshAdaptorTest, gltf_with_meshes_but_no_mesh_refs_unbaked) { + auto mesh = context.createObject(raco::user_types::Mesh::typeDescription.typeName, "Mesh Name"); + context.set({mesh, &raco::user_types::Mesh::bakeMeshes_}, false); + context.set({mesh, &raco::user_types::Mesh::uri_}, cwd_path().append("meshes/meshrefless.gltf").string()); + + dispatch(); + + auto meshStuff{select(*sceneContext.scene(), ramses::ERamsesObjectType::ERamsesObjectType_ArrayResource)}; + EXPECT_EQ(meshStuff.size(), 4); + ASSERT_TRUE(isRamsesNameInArray("Mesh Name_MeshIndexData", meshStuff)); + ASSERT_TRUE(isRamsesNameInArray("Mesh Name_MeshVertexData_a_Position", meshStuff)); + ASSERT_TRUE(isRamsesNameInArray("Mesh Name_MeshVertexData_a_Normal", meshStuff)); + ASSERT_TRUE(isRamsesNameInArray("Mesh Name_MeshVertexData_a_TextureCoordinate", meshStuff)); + ASSERT_EQ(context.errors().getError(mesh).level(), raco::core::ErrorLevel::INFORMATION); +} \ No newline at end of file diff --git a/components/libRamsesBase/tests/MeshNodeAdaptor_test.cpp b/components/libRamsesBase/tests/MeshNodeAdaptor_test.cpp index 7786af4c..f7aadcbd 100644 --- a/components/libRamsesBase/tests/MeshNodeAdaptor_test.cpp +++ b/components/libRamsesBase/tests/MeshNodeAdaptor_test.cpp @@ -414,3 +414,37 @@ TEST_F(MeshNodeAdaptorFixture, inContext_user_type_MeshNode_submeshSelection_cor ASSERT_EQ(context.errors().getError(ValueHandle{mesh}).level(), core::ErrorLevel::INFORMATION); } + +TEST_F(MeshNodeAdaptorFixture, inContext_user_type_MeshNode_valid_file_with_no_meshes_unbaked_submesh_error) { + auto meshNode = context.createObject(MeshNode::typeDescription.typeName, "MeshNode"); + dispatch(); + auto mesh = context.createObject(Mesh::typeDescription.typeName, "Mesh"); + dispatch(); + context.set(ValueHandle{meshNode, &raco::user_types::MeshNode::mesh_}, mesh); + dispatch(); + context.set(ValueHandle{mesh, &raco::user_types::Mesh::bakeMeshes_}, false); + dispatch(); + context.set(ValueHandle{mesh, &raco::user_types::Mesh::uri_}, cwd_path().append("meshes/meshless.gltf").string()); + dispatch(); + + ASSERT_TRUE(context.errors().hasError({mesh})); + ASSERT_EQ(context.errors().getError(ValueHandle{mesh}).level(), core::ErrorLevel::ERROR); +} + +TEST_F(MeshNodeAdaptorFixture, inContext_user_type_MeshNode_valid_file_with_no_meshes_baked_no_submesh_error) { + auto meshNode = context.createObject(MeshNode::typeDescription.typeName, "MeshNode"); + dispatch(); + auto mesh = context.createObject(Mesh::typeDescription.typeName, "Mesh"); + dispatch(); + context.set(ValueHandle{meshNode, &raco::user_types::MeshNode::mesh_}, mesh); + dispatch(); + context.set(ValueHandle{mesh, &raco::user_types::Mesh::bakeMeshes_}, false); + dispatch(); + context.set(ValueHandle{mesh, &raco::user_types::Mesh::uri_}, cwd_path().append("meshes/meshless.gltf").string()); + dispatch(); + context.set(ValueHandle{mesh, &raco::user_types::Mesh::bakeMeshes_}, true); + dispatch(); + + ASSERT_TRUE(context.errors().hasError({mesh})); + ASSERT_EQ(context.errors().getError(ValueHandle{mesh}).level(), core::ErrorLevel::ERROR); +} \ No newline at end of file diff --git a/datamodel/libCore/CMakeLists.txt b/datamodel/libCore/CMakeLists.txt index 611820ed..e0be0a00 100644 --- a/datamodel/libCore/CMakeLists.txt +++ b/datamodel/libCore/CMakeLists.txt @@ -15,7 +15,7 @@ add_library(libCore include/core/Context.h src/Context.cpp include/core/CommandInterface.h src/CommandInterface.cpp include/core/EditorObject.h src/EditorObject.cpp - include/core/FileChangeCallback.h + include/core/FileChangeCallback.h src/FileChangeCallback.cpp include/core/FileChangeMonitor.h include/core/Handles.h src/Handles.cpp include/core/Project.h src/Project.cpp diff --git a/datamodel/libCore/include/core/Context.h b/datamodel/libCore/include/core/Context.h index 948358eb..12a5b4a6 100644 --- a/datamodel/libCore/include/core/Context.h +++ b/datamodel/libCore/include/core/Context.h @@ -33,8 +33,6 @@ class UserObjectFactoryInterface; class EngineInterface; class FileChangeCallback; -template class FileChangeMonitorInterface; -using FileChangeMonitor = FileChangeMonitorInterface; // Contexts // - use context for every operation modifying the data model @@ -53,10 +51,6 @@ class BaseContext { MeshCache* meshCache(); void setMeshCache(MeshCache* cache); - FileChangeMonitor* fileChangeMonitor(); - void setFileChangeMonitor(FileChangeMonitor* monitor); - - MultiplexedDataChangeRecorder& changeMultiplexer(); DataChangeRecorder& modelChanges(); DataChangeRecorder& uiChanges(); @@ -194,7 +188,6 @@ class BaseContext { ExternalProjectsStoreInterface* externalProjectsStore_ = nullptr; MeshCache* meshCache_ = nullptr; - FileChangeMonitor* fileChangeMonitor_ = nullptr; UserObjectFactoryInterface* objectFactory_ = nullptr; Errors* errors_; DataChangeRecorder* uiChanges_ = nullptr; diff --git a/datamodel/libCore/include/core/EditorObject.h b/datamodel/libCore/include/core/EditorObject.h index 628463c1..cd045861 100644 --- a/datamodel/libCore/include/core/EditorObject.h +++ b/datamodel/libCore/include/core/EditorObject.h @@ -14,7 +14,9 @@ #include "data_storage/Table.h" #include "data_storage/BasicAnnotations.h" #include "core/CoreAnnotations.h" +#include "core/FileChangeMonitor.h" +#include #include #include #include @@ -141,20 +143,24 @@ class EditorObject : public ClassWithReflectedMembers, public std::enable_shared // Called // - after a context was created for the Project containg the EditorObject // - after undo/prefab update/external reference update has changed an EditorObject - // - // must perform sync with external files - // - this needs to invalidate any cached data related to external files, .e.g - // script or shader content - virtual void onAfterContextActivated(BaseContext& context) {} + virtual void onAfterContextActivated(BaseContext& context); // Called after changing a value inside this object, possibly nested multiple levels. - virtual void onAfterValueChanged(BaseContext& context, ValueHandle const& value) {} + virtual void onAfterValueChanged(BaseContext& context, ValueHandle const& value); // Called after any property in the changedObject changed and a property inside the current // object contains a reference property to changedObject. // - example: MeshNode update after either the Mesh or Material have changed. virtual void onAfterReferencedObjectChanged(BaseContext& context, ValueHandle const& changedObject) {} + // Called + // - after creating the object + // - when external files have changed + // + // must perform sync with external files + // - this needs to invalidate any cached data related to external files, .e.g + // script or shader content + virtual void updateFromExternalFile(BaseContext& context) {} // Data model children (not the same as scenegraph children): @@ -182,10 +188,14 @@ class EditorObject : public ClassWithReflectedMembers, public std::enable_shared private: friend class BaseContext; + FileChangeMonitor::UniqueListener registerFileChangedHandler(BaseContext& context, const ValueHandle& value, FileChangeCallback::Callback callback); + mutable WEditorObject parent_; // volatile mutable std::set> referencesToThis_; + + mutable std::map uriListeners_; }; class CompareEditorObjectByID { diff --git a/datamodel/libCore/include/core/FileChangeCallback.h b/datamodel/libCore/include/core/FileChangeCallback.h index bda50221..9df7dfc9 100644 --- a/datamodel/libCore/include/core/FileChangeCallback.h +++ b/datamodel/libCore/include/core/FileChangeCallback.h @@ -10,12 +10,12 @@ #pragma once #include - -#include "core/EditorObject.h" -#include "core/Context.h" +#include namespace raco::core { class BaseContext; +class EditorObject; +using SEditorObject = std::shared_ptr; class FileChangeCallback { public: @@ -23,12 +23,7 @@ class FileChangeCallback { FileChangeCallback(BaseContext* context, SEditorObject object, Callback callback) : context_(context), object_(object), callback_(callback) {} - void operator()() const { - callback_(); - if (object_ && context_) { - context_->callReferencedObjectChangedHandlers(object_); - } - } + void operator()() const; private: BaseContext* context_; @@ -36,5 +31,4 @@ class FileChangeCallback { Callback callback_; }; - } // namespace raco::core \ No newline at end of file diff --git a/datamodel/libCore/src/Context.cpp b/datamodel/libCore/src/Context.cpp index e8fcb785..72b7e46c 100644 --- a/datamodel/libCore/src/Context.cpp +++ b/datamodel/libCore/src/Context.cpp @@ -65,14 +65,6 @@ void BaseContext::setMeshCache(MeshCache* cache) { meshCache_ = cache; } -FileChangeMonitor* BaseContext::fileChangeMonitor() { - return fileChangeMonitor_; -} - -void BaseContext::setFileChangeMonitor(FileChangeMonitor* monitor) { - fileChangeMonitor_ = monitor; -} - EngineInterface& BaseContext::engineInterface() { return *engineInterface_; } diff --git a/datamodel/libCore/src/EditorObject.cpp b/datamodel/libCore/src/EditorObject.cpp index 5ca571f4..44454468 100644 --- a/datamodel/libCore/src/EditorObject.cpp +++ b/datamodel/libCore/src/EditorObject.cpp @@ -8,43 +8,48 @@ * If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "core/EditorObject.h" + +#include "core/Context.h" +#include "core/Errors.h" #include "core/Handles.h" #include "core/Iterators.h" +#include "core/PathQueries.h" #include "core/Queries.h" -#include "core/Errors.h" +#include "core/MeshCacheInterface.h" -#include -#include #include +#include + +#include namespace raco::core { using namespace raco::data_storage; -EditorObject::EditorObject(std::string name, std::string id) : +EditorObject::EditorObject(std::string name, std::string id) : ClassWithReflectedMembers(), objectName_{name, DisplayNameAnnotation("Object Name")}, - objectID_{normalizedObjectID(id), {}} + objectID_{normalizedObjectID(id), {}} { fillPropertyDescription(); } -std::string const& EditorObject::objectID() const +std::string const& EditorObject::objectID() const { return *objectID_; } -void EditorObject::setObjectID(std::string const& id) +void EditorObject::setObjectID(std::string const& id) { objectID_ = normalizedObjectID(id); } -std::string const& EditorObject::objectName() const +std::string const& EditorObject::objectName() const { return *objectName_; } -void EditorObject::setObjectName(std::string const& name) +void EditorObject::setObjectName(std::string const& name) { objectName_ = name; } @@ -59,9 +64,10 @@ EditorObject::ChildIterator EditorObject::end() { void EditorObject::onBeforeDeleteObject(Errors& errors) const { errors.removeAll(shared_from_this()); + uriListeners_.clear(); } -std::string EditorObject::normalizedObjectID(std::string const& id) +std::string EditorObject::normalizedObjectID(std::string const& id) { if (id.empty()) { return QUuid::createUuid().toString(QUuid::WithoutBraces).toStdString(); @@ -99,7 +105,7 @@ void EditorObject::onBeforeRemoveReferenceToThis(ValueHandle const& sourceRefere } void EditorObject::onAfterDeserialization() const { - // Note: removing the const is necessary since we can't create ValueHandles using a + // Note: removing the const is necessary since we can't create ValueHandles using a // shared_ptr // To void the cast we would need to create a ValueHandle class holding a shared_ptr // instead and additionally create/adapt all the supporting code. @@ -120,6 +126,36 @@ void EditorObject::onAfterAddReferenceToThis(ValueHandle const& sourceReferenceP } } +FileChangeMonitor::UniqueListener EditorObject::registerFileChangedHandler(BaseContext& context, const ValueHandle& value, FileChangeCallback::Callback callback) { + auto resourceAbsPath = PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), value); + return context.meshCache()->registerFileChangedHandler(resourceAbsPath, + {&context, shared_from_this(), std::move(callback)}); +} + +void EditorObject::onAfterContextActivated(BaseContext& context) { + for (size_t i = 0; i < size(); i++) { + if (get(i)->query()) { + auto propName = name(i); + ValueHandle handle{shared_from_this(), {i}}; + uriListeners_[propName] = registerFileChangedHandler(context, handle, [this, handle, &context]() { + this->updateFromExternalFile(context); + }); + } + } + updateFromExternalFile(context); +} + +void EditorObject::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { + if (value.query()) { + assert(value.depth() == 1); + auto propName = value.getPropName(); + uriListeners_[propName] = registerFileChangedHandler(context, value, [this, value, &context]() { + this->updateFromExternalFile(context); + }); + updateFromExternalFile(context); + } +} + int EditorObject::findChildIndex(const EditorObject* node) { for (int i = 0; i < children_->size(); i++) { SEditorObject child = children_->get(i)->asRef(); @@ -172,7 +208,7 @@ TreeIterator& TreeIterator::operator++() { if (*this) { SEditorObject current = operator*(); if (current->children_->size() > 0) { - stack_.push({ current->begin(), current->end() }); + stack_.push({current->begin(), current->end()}); } else { // Traverse siblings and ascend at end diff --git a/datamodel/libCore/src/FileChangeCallback.cpp b/datamodel/libCore/src/FileChangeCallback.cpp new file mode 100644 index 00000000..f00c32fc --- /dev/null +++ b/datamodel/libCore/src/FileChangeCallback.cpp @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of Ramses Composer + * (see https://github.com/GENIVI/ramses-composer). + * + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. + * If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "core/FileChangeCallback.h" + +#include "core/Context.h" +#include "core/EditorObject.h" + +namespace raco::core { +void FileChangeCallback::operator()() const { + callback_(); + if (object_ && context_) { + context_->callReferencedObjectChangedHandlers(object_); + } +} + +} // namespace raco::core \ No newline at end of file diff --git a/datamodel/libCore/src/Undo.cpp b/datamodel/libCore/src/Undo.cpp index 144a590d..bac78650 100644 --- a/datamodel/libCore/src/Undo.cpp +++ b/datamodel/libCore/src/Undo.cpp @@ -346,8 +346,10 @@ void UndoStack::restoreProjectState(Project *src, Project *dest, BaseContext &co // all changes relative to the last undo stack entry context_->modelChanges().reset(); - // Sync from external files for new or changed objects - auto changedObjects = changes.getAllChangedObjects(); + // Sync from external files for new or changed objects. + // Also update broken link error messages in Node::onAfterContextActivated, so we need to include + // the link endpoints in the changed object set. + auto changedObjects = changes.getAllChangedObjects(false, false, true); context_->performExternalFileReload({changedObjects.begin(), changedObjects.end()}); if (extrefDirty) { diff --git a/datamodel/libCore/tests/Undo_test.cpp b/datamodel/libCore/tests/Undo_test.cpp index 11d3a236..a79c59b2 100644 --- a/datamodel/libCore/tests/Undo_test.cpp +++ b/datamodel/libCore/tests/Undo_test.cpp @@ -852,9 +852,11 @@ end auto lua = create_lua("lua", luaFile); auto node = create("node"); + // #1: create link auto [sprop, eprop] = link(lua, {"luaOutputs", "vec"}, node, {"translation"}); checkLinks({{sprop, eprop, true}}); + // #2: remove link commandInterface.removeLink(eprop); checkLinks({}); @@ -869,14 +871,25 @@ end EXPECT_FALSE(luaOutputs.hasProperty("vec")); EXPECT_TRUE(luaOutputs.hasProperty("renamed")); + // undo #2 commandInterface.undoStack().undo(); checkLinks({{sprop, eprop, false}}); ASSERT_TRUE(commandInterface.errors().hasError({node})); + // undo #1 + commandInterface.undoStack().undo(); + checkLinks({}); + ASSERT_FALSE(commandInterface.errors().hasError({node})); + + // redo #1 + commandInterface.undoStack().redo(); + checkLinks({{sprop, eprop, false}}); + ASSERT_TRUE(commandInterface.errors().hasError({node})); + + // redo #2 commandInterface.undoStack().redo(); checkLinks({}); - //The assert fails - needs to be fixed. See RAOS-687 - //ASSERT_FALSE(commandInterface.errors().hasError({node})); + ASSERT_FALSE(commandInterface.errors().hasError({node})); } TEST_F(UndoTest, lua_link_create_inconsistent_undo_stack) { diff --git a/datamodel/libTesting/include/testing/TestEnvironmentCore.h b/datamodel/libTesting/include/testing/TestEnvironmentCore.h index 38fd9b15..97c6e34d 100644 --- a/datamodel/libTesting/include/testing/TestEnvironmentCore.h +++ b/datamodel/libTesting/include/testing/TestEnvironmentCore.h @@ -183,7 +183,6 @@ struct TestEnvironmentCoreT : public RacoBaseTest { spdlog::drop_all(); raco::log_system::init(); clearQEventLoop(); - context.setFileChangeMonitor(fileChangeMonitor.get()); context.setMeshCache(&meshCache); } virtual ~TestEnvironmentCoreT() { diff --git a/datamodel/libUserTypes/include/user_types/AnimationChannel.h b/datamodel/libUserTypes/include/user_types/AnimationChannel.h index 26d56801..9d78b7ff 100644 --- a/datamodel/libUserTypes/include/user_types/AnimationChannel.h +++ b/datamodel/libUserTypes/include/user_types/AnimationChannel.h @@ -41,11 +41,10 @@ class AnimationChannel : public BaseObject { properties_.emplace_back("samplerIndex", &samplerIndex_); } - void onBeforeDeleteObject(Errors& errors) const override; - - void onAfterContextActivated(BaseContext& context) override; void onAfterValueChanged(BaseContext& context, ValueHandle const& value) override; + void updateFromExternalFile(BaseContext& context) override; + PropertyInterface getOutputProperty() const; Property uri_{std::string(), {"glTF files (*.glTF *.glb);;All Files (*.*)"}, DisplayNameAnnotation("Animation Source")}; @@ -56,10 +55,7 @@ class AnimationChannel : public BaseObject { std::shared_ptr currentSamplerData_; private: - void onAnimationDataChange(BaseContext& context); void createSamplerInfoBox(BaseContext& context, int animationAmount, int samplerAmount); - - mutable FileChangeMonitor::UniqueListener uriListener_; }; using SAnimationChannel = std::shared_ptr; diff --git a/datamodel/libUserTypes/include/user_types/BaseObject.h b/datamodel/libUserTypes/include/user_types/BaseObject.h index ea8cbf90..7cdad24a 100644 --- a/datamodel/libUserTypes/include/user_types/BaseObject.h +++ b/datamodel/libUserTypes/include/user_types/BaseObject.h @@ -14,7 +14,6 @@ #include "core/CoreAnnotations.h" #include "core/EditorObject.h" #include "core/FileChangeCallback.h" -#include "core/FileChangeMonitor.h" #include "core/PathQueries.h" #include "core/Project.h" #include "data_storage/Table.h" @@ -46,11 +45,6 @@ class BaseObject : public EditorObject { void fillPropertyDescription() { } - virtual FileChangeMonitor::UniqueListener registerFileChangedHandler(BaseContext& context, const ValueHandle& value, FileChangeCallback::Callback callback) { - auto resourceAbsPath = PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), value); - return context.fileChangeMonitor()->registerFileChangedHandler(resourceAbsPath, - {&context, shared_from_this(), std::move(callback)}); - } }; } \ No newline at end of file diff --git a/datamodel/libUserTypes/include/user_types/CubeMap.h b/datamodel/libUserTypes/include/user_types/CubeMap.h index 0b7b8282..aaf7acc3 100644 --- a/datamodel/libUserTypes/include/user_types/CubeMap.h +++ b/datamodel/libUserTypes/include/user_types/CubeMap.h @@ -10,7 +10,6 @@ #pragma once #include "user_types/BaseTexture.h" -#include "core/FileChangeMonitor.h" namespace raco::user_types { @@ -46,12 +45,9 @@ class CubeMap : public BaseTexture { properties_.emplace_back("uriBottom", &uriBottom_); } - void onBeforeDeleteObject(Errors& errors) const override; + void updateFromExternalFile(BaseContext& context) override; - void onAfterContextActivated(BaseContext& context) override; - void onAfterValueChanged(BaseContext& context, ValueHandle const& value) override; - - Property uriFront_{ + Property uriFront_{ std::string{}, {"Image files(*.png)"}, DisplayNameAnnotation{"URI front"}}; Property uriBack_{ @@ -69,16 +65,6 @@ class CubeMap : public BaseTexture { Property uriBottom_{ std::string{}, {"Image files(*.png)"}, DisplayNameAnnotation{"URI bottom"}}; -private: - void afterContextActivatedURI(BaseContext& context, decltype(uriFront_) CubeMap::*ptom, FileChangeMonitor::UniqueListener& listener); - void onAfterValueChangedURI(BaseContext& context, ValueHandle const &value, decltype(uriFront_) CubeMap::*ptom, FileChangeMonitor::UniqueListener& listener); - - mutable FileChangeMonitor::UniqueListener frontListener_; - mutable FileChangeMonitor::UniqueListener backListener_; - mutable FileChangeMonitor::UniqueListener leftListener_; - mutable FileChangeMonitor::UniqueListener rightListener_; - mutable FileChangeMonitor::UniqueListener topListener_; - mutable FileChangeMonitor::UniqueListener bottomListener_; }; using SCubeMap = std::shared_ptr; diff --git a/datamodel/libUserTypes/include/user_types/LuaScript.h b/datamodel/libUserTypes/include/user_types/LuaScript.h index 7fae6b37..27dff0a6 100644 --- a/datamodel/libUserTypes/include/user_types/LuaScript.h +++ b/datamodel/libUserTypes/include/user_types/LuaScript.h @@ -12,7 +12,6 @@ #include "user_types/BaseObject.h" #include "user_types/SyncTableWithEngineInterface.h" -#include "core/FileChangeMonitor.h" #include namespace raco::user_types { @@ -40,12 +39,12 @@ class LuaScript : public BaseObject { properties_.emplace_back("luaOutputs", &luaOutputs_); } - void onBeforeDeleteObject(Errors& errors) const override; - - void onAfterContextActivated(BaseContext& context) override; void onAfterReferencedObjectChanged(BaseContext& context, ValueHandle const& changedObject) override; void onAfterValueChanged(BaseContext& context, ValueHandle const& value) override; + void updateFromExternalFile(BaseContext& context) override; + + Property uri_{std::string{}, {"Lua script files(*.lua)"}, DisplayNameAnnotation("URI")}; Property luaModules_{{}, DisplayNameAnnotation("Modules")}; @@ -53,11 +52,8 @@ class LuaScript : public BaseObject { Property luaOutputs_{{}, DisplayNameAnnotation("Outputs")}; private: - - void syncLuaInterface(BaseContext& context); void syncLuaModules(BaseContext& context, const std::string& fileContents, std::string &outError); - mutable FileChangeMonitor::UniqueListener uriListener_; OutdatedPropertiesStore cachedLuaInputValues_; std::map cachedModuleRefs_; }; diff --git a/datamodel/libUserTypes/include/user_types/LuaScriptModule.h b/datamodel/libUserTypes/include/user_types/LuaScriptModule.h index d044ebb3..f84daf9f 100644 --- a/datamodel/libUserTypes/include/user_types/LuaScriptModule.h +++ b/datamodel/libUserTypes/include/user_types/LuaScriptModule.h @@ -12,7 +12,6 @@ #include "user_types/BaseObject.h" #include "user_types/SyncTableWithEngineInterface.h" -#include "core/FileChangeMonitor.h" #include #include @@ -44,19 +43,15 @@ class LuaScriptModule : public BaseObject { properties_.emplace_back("uri", &uri_); } - void onBeforeDeleteObject(Errors& errors) const override; + void updateFromExternalFile(BaseContext& context) override; + - void onAfterContextActivated(BaseContext& context) override; - void onAfterValueChanged(BaseContext& context, ValueHandle const& value) override; - Property uri_{std::string{}, {"Lua script files(*.lua)"}, DisplayNameAnnotation("URI")}; std::string currentScriptContents_; private: void syncLuaInterface(BaseContext& context); - - mutable FileChangeMonitor::UniqueListener uriListener_; }; using SLuaScriptModule = std::shared_ptr; diff --git a/datamodel/libUserTypes/include/user_types/Material.h b/datamodel/libUserTypes/include/user_types/Material.h index 8bf78c46..cb59b2bc 100644 --- a/datamodel/libUserTypes/include/user_types/Material.h +++ b/datamodel/libUserTypes/include/user_types/Material.h @@ -10,7 +10,6 @@ #pragma once #include "core/EngineInterface.h" -#include "core/FileChangeMonitor.h" #include "user_types/BaseObject.h" #include "user_types/DefaultValues.h" #include "user_types/SyncTableWithEngineInterface.h" @@ -131,10 +130,8 @@ class Material : public BaseObject { properties_.emplace_back("uniforms", &uniforms_); } - void onBeforeDeleteObject(Errors& errors) const override; - void onAfterValueChanged(BaseContext& context, ValueHandle const& value) override; - void onAfterContextActivated(BaseContext& context) override; + void updateFromExternalFile(BaseContext& context) override; Property tags_{{}, {}, {}, {"Tags"}}; @@ -156,11 +153,6 @@ class Material : public BaseObject { private: void syncUniforms(BaseContext& context); - mutable FileChangeMonitor::UniqueListener vertexListener_; - mutable FileChangeMonitor::UniqueListener geometryListener_; - mutable FileChangeMonitor::UniqueListener fragmentListener_; - mutable FileChangeMonitor::UniqueListener definesListener_; - bool isShaderValid_ = false; PropertyInterfaceList attributes_; diff --git a/datamodel/libUserTypes/include/user_types/Mesh.h b/datamodel/libUserTypes/include/user_types/Mesh.h index fb2ab169..7649819a 100644 --- a/datamodel/libUserTypes/include/user_types/Mesh.h +++ b/datamodel/libUserTypes/include/user_types/Mesh.h @@ -42,11 +42,9 @@ class Mesh : public BaseObject { properties_.emplace_back("materialNames", &materialNames_); } - void onBeforeDeleteObject(Errors& errors) const override; - - void onAfterContextActivated(BaseContext& context) override; + void updateFromExternalFile(BaseContext& context) override; void onAfterValueChanged(BaseContext &context, ValueHandle const& value) override; - + std::vector materialNames(); Property uri_{std::string(), {"All Meshes (*.ctm *.glTF *.glb);;CTM files (*.ctm);;glTF files (*.glTF *.glb);;All Files (*.*)"}, DisplayNameAnnotation("URI")}; @@ -60,8 +58,8 @@ class Mesh : public BaseObject { return mesh_; } + private: - void updateMesh(BaseContext& context); SharedMeshData mesh_; diff --git a/datamodel/libUserTypes/include/user_types/Texture.h b/datamodel/libUserTypes/include/user_types/Texture.h index 7b9e1ccf..0ea46481 100644 --- a/datamodel/libUserTypes/include/user_types/Texture.h +++ b/datamodel/libUserTypes/include/user_types/Texture.h @@ -10,7 +10,6 @@ #pragma once #include "user_types/BaseObject.h" -#include "core/FileChangeMonitor.h" #include "user_types/BaseTexture.h" namespace raco::user_types { @@ -37,18 +36,12 @@ class Texture : public TextureSampler2DBase { properties_.emplace_back("generateMipmaps", &generateMipmaps_); } - void onBeforeDeleteObject(Errors& errors) const override; - - void onAfterContextActivated(BaseContext& context) override; - void onAfterValueChanged(BaseContext& context, ValueHandle const& value) override; + void updateFromExternalFile(BaseContext& context) override; Property uri_{std::string{}, {"Image files(*.png)"}, DisplayNameAnnotation("URI")}; Property flipTexture_{false, DisplayNameAnnotation("Flip Vertically")}; Property generateMipmaps_{false, DisplayNameAnnotation("Generate Mipmaps")}; - -private: - mutable FileChangeMonitor::UniqueListener uriListener_; }; using STexture = std::shared_ptr; diff --git a/datamodel/libUserTypes/src/AnimationChannel.cpp b/datamodel/libUserTypes/src/AnimationChannel.cpp index 6a26b8cf..8d43384d 100644 --- a/datamodel/libUserTypes/src/AnimationChannel.cpp +++ b/datamodel/libUserTypes/src/AnimationChannel.cpp @@ -15,30 +15,11 @@ namespace raco::user_types { -void AnimationChannel::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - uriListener_.reset(); -} - -void AnimationChannel::onAfterContextActivated(BaseContext& context) { - auto uriAbsPath = PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), {shared_from_this(), {"uri"}}); - uriListener_ = context.meshCache()->registerFileChangedHandler(uriAbsPath, {&context, shared_from_this(), - [this, &context]() { - onAnimationDataChange(context); - }}); - onAnimationDataChange(context); -} - void AnimationChannel::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { - if (value.isRefToProp(&AnimationChannel::uri_)) { - auto uriAbsPath = PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), {shared_from_this(), {"uri"}}); - uriListener_ = context.meshCache()->registerFileChangedHandler(uriAbsPath, {&context, shared_from_this(), - [this, &context]() { - onAnimationDataChange(context); - }}); - onAnimationDataChange(context); - } else if (value.isRefToProp(&AnimationChannel::animationIndex_) || value.isRefToProp(&AnimationChannel::samplerIndex_)) { - onAnimationDataChange(context); + BaseObject::onAfterValueChanged(context, value); + + if (value.isRefToProp(&AnimationChannel::animationIndex_) || value.isRefToProp(&AnimationChannel::samplerIndex_)) { + updateFromExternalFile(context); } } @@ -56,7 +37,7 @@ raco::core::PropertyInterface AnimationChannel::getOutputProperty() const { return {objectName(), type}; } -void AnimationChannel::onAnimationDataChange(BaseContext& context) { +void AnimationChannel::updateFromExternalFile(BaseContext& context) { context.errors().removeError({shared_from_this()}); context.errors().removeError({shared_from_this(), &AnimationChannel::uri_}); context.errors().removeError({shared_from_this(), &AnimationChannel::animationIndex_}); diff --git a/datamodel/libUserTypes/src/CubeMap.cpp b/datamodel/libUserTypes/src/CubeMap.cpp index 6e66e68a..8d7a84c5 100644 --- a/datamodel/libUserTypes/src/CubeMap.cpp +++ b/datamodel/libUserTypes/src/CubeMap.cpp @@ -19,55 +19,16 @@ namespace raco::user_types { -void CubeMap::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - frontListener_.reset(); - backListener_.reset(); - leftListener_.reset(); - rightListener_.reset(); - topListener_.reset(); - bottomListener_.reset(); -} - -void CubeMap::onAfterValueChangedURI(BaseContext& context, ValueHandle const& value, decltype(uriFront_) CubeMap::*ptom, FileChangeMonitor::UniqueListener& listener) { - if (value.isRefToProp(ptom)) { - ValueHandle handle(shared_from_this(), ptom); - validateURI(context, handle); - - listener = registerFileChangedHandler(context, handle, - [this, &context, handle]() { - validateURI(context, handle); - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); - }); - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); - } -} - -void CubeMap::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { +void CubeMap::updateFromExternalFile(BaseContext& context) { context.errors().removeError({shared_from_this()}); - onAfterValueChangedURI(context, value, &CubeMap::uriFront_, frontListener_); - onAfterValueChangedURI(context, value, &CubeMap::uriBack_, backListener_); - onAfterValueChangedURI(context, value, &CubeMap::uriLeft_, leftListener_); - onAfterValueChangedURI(context, value, &CubeMap::uriRight_, rightListener_); - onAfterValueChangedURI(context, value, &CubeMap::uriTop_, topListener_); - onAfterValueChangedURI(context, value, &CubeMap::uriBottom_, bottomListener_); -} - -void CubeMap::afterContextActivatedURI(BaseContext& context, decltype(uriFront_) CubeMap::*ptom, FileChangeMonitor::UniqueListener& listener) { - listener = registerFileChangedHandler(context, {shared_from_this(), ptom}, - [this, &context]() { - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); - }); -} - -void CubeMap::onAfterContextActivated(BaseContext& context) { - afterContextActivatedURI(context, &CubeMap::uriFront_, frontListener_); - afterContextActivatedURI(context, &CubeMap::uriBack_, backListener_); - afterContextActivatedURI(context, &CubeMap::uriLeft_, leftListener_); - afterContextActivatedURI(context, &CubeMap::uriRight_, rightListener_); - afterContextActivatedURI(context, &CubeMap::uriTop_, topListener_); - afterContextActivatedURI(context, &CubeMap::uriBottom_, bottomListener_); + validateURI(context, {shared_from_this(), &CubeMap::uriFront_}); + validateURI(context, {shared_from_this(), &CubeMap::uriBack_}); + validateURI(context, {shared_from_this(), &CubeMap::uriLeft_}); + validateURI(context, {shared_from_this(), &CubeMap::uriRight_}); + validateURI(context, {shared_from_this(), &CubeMap::uriTop_}); + validateURI(context, {shared_from_this(), &CubeMap::uriBottom_}); context.changeMultiplexer().recordPreviewDirty(shared_from_this()); } + } // namespace raco::user_types diff --git a/datamodel/libUserTypes/src/LuaScript.cpp b/datamodel/libUserTypes/src/LuaScript.cpp index 98bea504..42178d73 100644 --- a/datamodel/libUserTypes/src/LuaScript.cpp +++ b/datamodel/libUserTypes/src/LuaScript.cpp @@ -20,26 +20,13 @@ namespace raco::user_types { -void LuaScript::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - uriListener_.reset(); -} - -void LuaScript::onAfterContextActivated(BaseContext& context) { - uriListener_ = registerFileChangedHandler(context, {shared_from_this(), &LuaScript::uri_}, [this, &context]() { this->syncLuaInterface(context); }); - syncLuaInterface(context); -} void LuaScript::onAfterReferencedObjectChanged(BaseContext& context, ValueHandle const& changedObject) { - syncLuaInterface(context); - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); + updateFromExternalFile(context); } void LuaScript::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { - if (value.isRefToProp(&LuaScript::uri_)) { - uriListener_ = registerFileChangedHandler(context, value, [this, &context]() { this->syncLuaInterface(context); }); - syncLuaInterface(context); - } + BaseObject::onAfterValueChanged(context, value); if (ValueHandle(shared_from_this(), &LuaScript::objectName_) == value) { context.updateBrokenLinkErrorsAttachedTo(shared_from_this()); @@ -48,13 +35,13 @@ void LuaScript::onAfterValueChanged(BaseContext& context, ValueHandle const& val const auto& moduleTable = luaModules_.asTable(); for (auto i = 0; i < moduleTable.size(); ++i) { if (value == ValueHandle{shared_from_this(), {"luaModules", moduleTable.name(i)}}) { - syncLuaInterface(context); + updateFromExternalFile(context); return; } } } -void LuaScript::syncLuaInterface(BaseContext& context) { +void LuaScript::updateFromExternalFile(BaseContext& context) { std::string luaScript = utils::file::read(PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), {shared_from_this(), &LuaScript::uri_})); PropertyInterfaceList inputs{}; diff --git a/datamodel/libUserTypes/src/LuaScriptModule.cpp b/datamodel/libUserTypes/src/LuaScriptModule.cpp index 9f67c2c1..bff39781 100644 --- a/datamodel/libUserTypes/src/LuaScriptModule.cpp +++ b/datamodel/libUserTypes/src/LuaScriptModule.cpp @@ -18,24 +18,7 @@ namespace raco::user_types { -void LuaScriptModule::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - uriListener_.reset(); -} - -void LuaScriptModule::onAfterContextActivated(BaseContext& context) { - uriListener_ = registerFileChangedHandler(context, {shared_from_this(), &LuaScriptModule::uri_}, [this, &context]() { this->syncLuaInterface(context); }); - syncLuaInterface(context); -} - -void LuaScriptModule::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { - if (value.isRefToProp(&LuaScriptModule::uri_)) { - uriListener_ = registerFileChangedHandler(context, value, [this, &context]() { this->syncLuaInterface(context); }); - syncLuaInterface(context); - } -} - -void LuaScriptModule::syncLuaInterface(BaseContext& context) { +void LuaScriptModule::updateFromExternalFile(BaseContext& context) { std::string luaScript = utils::file::read(PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), {shared_from_this(), &LuaScriptModule::uri_})); std::string error; diff --git a/datamodel/libUserTypes/src/Material.cpp b/datamodel/libUserTypes/src/Material.cpp index 164dd673..e4ba4555 100644 --- a/datamodel/libUserTypes/src/Material.cpp +++ b/datamodel/libUserTypes/src/Material.cpp @@ -19,19 +19,12 @@ namespace raco::user_types { -void Material::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - vertexListener_.reset(); - geometryListener_.reset(); - fragmentListener_.reset(); - definesListener_.reset(); -} const PropertyInterfaceList& Material::attributes() const { return attributes_; } -void Material::syncUniforms(BaseContext& context) { +void Material::updateFromExternalFile(BaseContext& context) { context.errors().removeError(ValueHandle{shared_from_this()}); if (uriGeometry_.asString().empty() || validateURI(context, ValueHandle{shared_from_this(), &Material::uriGeometry_})) { context.errors().removeError(ValueHandle{shared_from_this(), &Material::uriGeometry_}); @@ -68,39 +61,11 @@ void Material::syncUniforms(BaseContext& context) { } void Material::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { - if (value.isRefToProp(&Material::uriVertex_)) { - vertexListener_ = registerFileChangedHandler(context, value, [this, &context]() { syncUniforms(context); }); - syncUniforms(context); - } - if (value.isRefToProp(&Material::uriFragment_)) { - fragmentListener_ = registerFileChangedHandler(context, value, [this, &context]() { syncUniforms(context); }); - syncUniforms(context); - } - if (value.isRefToProp(&Material::uriGeometry_)) { - geometryListener_ = registerFileChangedHandler(context, value, [this, &context]() { syncUniforms(context); }); - syncUniforms(context); - } - if (value.isRefToProp(&Material::uriDefines_)) { - definesListener_ = registerFileChangedHandler(context, value, [this, &context]() { syncUniforms(context); }); - syncUniforms(context); - } + BaseObject::onAfterValueChanged(context, value); if (value.isRefToProp(&Material::objectName_)) { context.updateBrokenLinkErrors(shared_from_this()); } } -void Material::onAfterContextActivated(BaseContext& context) { - vertexListener_ = registerFileChangedHandler(context, {shared_from_this(), &Material::uriVertex_}, [this, &context]() { syncUniforms(context); }); - - fragmentListener_ = registerFileChangedHandler(context, {shared_from_this(), &Material::uriFragment_}, [this, &context]() { syncUniforms(context); }); - - geometryListener_ = registerFileChangedHandler(context, {shared_from_this(), &Material::uriGeometry_}, [this, &context]() { syncUniforms(context); }); - - definesListener_ = registerFileChangedHandler(context, {shared_from_this(), &Material::uriDefines_}, - [this, &context]() { syncUniforms(context); }); - - syncUniforms(context); -} - } // namespace raco::user_types diff --git a/datamodel/libUserTypes/src/Mesh.cpp b/datamodel/libUserTypes/src/Mesh.cpp index 98d1ca1e..eab2adf9 100644 --- a/datamodel/libUserTypes/src/Mesh.cpp +++ b/datamodel/libUserTypes/src/Mesh.cpp @@ -18,19 +18,7 @@ namespace raco::user_types { -void Mesh::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - uriListener_.reset(); -} - -void Mesh::onAfterContextActivated(BaseContext& context) { - auto uriAbsPath = PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), {shared_from_this(), &Mesh::uri_}); - uriListener_ = context.meshCache()->registerFileChangedHandler(uriAbsPath, {&context, shared_from_this(), - [this, &context]() { updateMesh(context); }}); - updateMesh(context); -} - -void Mesh::updateMesh(BaseContext& context) { +void Mesh::updateFromExternalFile(BaseContext& context) { context.errors().removeError(ValueHandle{shared_from_this()}); MeshDescriptor desc; @@ -87,14 +75,11 @@ std::vector Mesh::materialNames() { } void Mesh::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { - if (value.isRefToProp(&Mesh::uri_)) { - auto uriAbsPath = PathQueries::resolveUriPropertyToAbsolutePath(*context.project(), {shared_from_this(), &Mesh::uri_}); - uriListener_ = context.meshCache()->registerFileChangedHandler(uriAbsPath, {&context, shared_from_this(), - [this, &context]() { updateMesh(context); }}); - updateMesh(context); - } else if (value.isRefToProp(&Mesh::bakeMeshes_) || !bakeMeshes_.asBool() && value.isRefToProp(&Mesh::meshIndex_)) { + BaseObject::onAfterValueChanged(context, value); + + if (value.isRefToProp(&Mesh::bakeMeshes_) || !bakeMeshes_.asBool() && value.isRefToProp(&Mesh::meshIndex_)) { context.changeMultiplexer().recordPreviewDirty(shared_from_this()); - updateMesh(context); + updateFromExternalFile(context); } } diff --git a/datamodel/libUserTypes/src/Texture.cpp b/datamodel/libUserTypes/src/Texture.cpp index 2b5955eb..1d499cb2 100644 --- a/datamodel/libUserTypes/src/Texture.cpp +++ b/datamodel/libUserTypes/src/Texture.cpp @@ -17,34 +17,9 @@ namespace raco::user_types { -void Texture::onBeforeDeleteObject(Errors& errors) const { - EditorObject::onBeforeDeleteObject(errors); - uriListener_.reset(); -} - -void Texture::onAfterContextActivated(BaseContext& context) { +void Texture::updateFromExternalFile(BaseContext& context) { context.errors().removeError({shared_from_this()}); validateURI(context, {shared_from_this(), &Texture::uri_}); - - uriListener_ = registerFileChangedHandler(context, {shared_from_this(), &Texture::uri_}, - [this, &context]() { - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); - }); - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); -} - -void Texture::onAfterValueChanged(BaseContext& context, ValueHandle const& value) { - if (value.isRefToProp(&Texture::uri_)) { - ValueHandle uriHandle{shared_from_this(), &Texture::uri_}; - context.errors().removeError({shared_from_this()}); - validateURI(context, uriHandle); - - uriListener_ = registerFileChangedHandler(context, {shared_from_this(), &Texture::uri_}, - [this, &context, uriHandle]() { - validateURI(context, uriHandle); - context.changeMultiplexer().recordPreviewDirty(shared_from_this()); - }); - } context.changeMultiplexer().recordPreviewDirty(shared_from_this()); } diff --git a/datamodel/libUserTypes/tests/AnimationChannel_test.cpp b/datamodel/libUserTypes/tests/AnimationChannel_test.cpp index 33df648b..3827a71f 100644 --- a/datamodel/libUserTypes/tests/AnimationChannel_test.cpp +++ b/datamodel/libUserTypes/tests/AnimationChannel_test.cpp @@ -9,8 +9,10 @@ */ #include "testing/TestEnvironmentCore.h" +#include "testing/TestUtil.h" #include "user_types/AnimationChannel.h" #include "utils/FileUtils.h" + #include using namespace raco::core; @@ -129,7 +131,6 @@ TEST_F(AnimationChannelTest, Inputs_setInvalidSamplerIndex_noError) { ASSERT_FALSE(commandInterface.errors().hasError(samplerIndexHandle)); } - TEST_F(AnimationChannelTest, invalidAnim_weights_supported) { auto animChannel{commandInterface.createObject(AnimationChannel::typeDescription.typeName)}; ValueHandle uriHandle{animChannel, {"uri"}}; @@ -141,4 +142,24 @@ TEST_F(AnimationChannelTest, invalidAnim_weights_supported) { ValueHandle animHandle{animChannel}; ASSERT_TRUE(commandInterface.errors().hasError(animHandle)); ASSERT_FALSE(commandInterface.errors().hasError(samplerIndexHandle)); -} \ No newline at end of file +} + +#if (!defined(__linux__)) +// awaitPreviewDirty does not work in Linux as expected. See RAOS-692 + +TEST_F(AnimationChannelTest, validAnim_madeInvalid) { + auto animChannel = create("anim_channel"); + ValueHandle uriHandle{animChannel, &raco::user_types::AnimationChannel::uri_}; + + auto animChannelPath = cwd_path().append("meshes/CesiumMilkTruck/CesiumMilkTruck.gltf").generic_string(); + commandInterface.set(uriHandle, animChannelPath); + ASSERT_FALSE(commandInterface.errors().hasError(uriHandle)); + + recorder.reset(); + raco::utils::file::write(animChannelPath, ""); + EXPECT_TRUE(raco::awaitPreviewDirty(recorder, animChannel)); + + ASSERT_TRUE(commandInterface.errors().hasError(uriHandle)); +} + +#endif \ No newline at end of file diff --git a/gui/libObjectTree/include/object_tree_view_model/ObjectTreeViewExternalProjectModel.h b/gui/libObjectTree/include/object_tree_view_model/ObjectTreeViewExternalProjectModel.h index 18159473..ae7b300d 100644 --- a/gui/libObjectTree/include/object_tree_view_model/ObjectTreeViewExternalProjectModel.h +++ b/gui/libObjectTree/include/object_tree_view_model/ObjectTreeViewExternalProjectModel.h @@ -39,7 +39,7 @@ class ObjectTreeViewExternalProjectModel : public ObjectTreeViewDefaultModel { } }; - ObjectTreeViewExternalProjectModel(raco::core::CommandInterface* commandInterface, core::FileChangeMonitor* fileChangeMonitor, components::SDataChangeDispatcher dispatcher, core::ExternalProjectsStoreInterface* externalProjectsStoreInterface); + ObjectTreeViewExternalProjectModel(raco::core::CommandInterface* commandInterface, components::SDataChangeDispatcher dispatcher, core::ExternalProjectsStoreInterface* externalProjectsStoreInterface); QVariant data(const QModelIndex& index, int role) const override; diff --git a/gui/libObjectTree/src/object_tree_view_model/ObjectTreeViewExternalProjectModel.cpp b/gui/libObjectTree/src/object_tree_view_model/ObjectTreeViewExternalProjectModel.cpp index 056a483e..304b7b97 100644 --- a/gui/libObjectTree/src/object_tree_view_model/ObjectTreeViewExternalProjectModel.cpp +++ b/gui/libObjectTree/src/object_tree_view_model/ObjectTreeViewExternalProjectModel.cpp @@ -19,7 +19,7 @@ namespace raco::object_tree::model { -ObjectTreeViewExternalProjectModel::ObjectTreeViewExternalProjectModel(raco::core::CommandInterface* commandInterface, core::FileChangeMonitor* fileChangeMonitor, components::SDataChangeDispatcher dispatcher, core::ExternalProjectsStoreInterface* externalProjectsStore) +ObjectTreeViewExternalProjectModel::ObjectTreeViewExternalProjectModel(raco::core::CommandInterface* commandInterface, components::SDataChangeDispatcher dispatcher, core::ExternalProjectsStoreInterface* externalProjectsStore) : ObjectTreeViewDefaultModel(commandInterface, dispatcher, externalProjectsStore) { // don't rebuild tree when creating/deleting local objects lifeCycleSubscriptions_.clear(); diff --git a/gui/libObjectTree/tests/ObjectTreeViewExternalProjectModel_test.cpp b/gui/libObjectTree/tests/ObjectTreeViewExternalProjectModel_test.cpp index 4cad88b8..5fda2cd6 100644 --- a/gui/libObjectTree/tests/ObjectTreeViewExternalProjectModel_test.cpp +++ b/gui/libObjectTree/tests/ObjectTreeViewExternalProjectModel_test.cpp @@ -31,7 +31,7 @@ class ExposedObjectTreeViewExternalProjectModel : public model::ObjectTreeViewEx } ExposedObjectTreeViewExternalProjectModel(raco::application::RaCoApplication &app) - : ObjectTreeViewExternalProjectModel(app.activeRaCoProject().commandInterface(), app.activeRaCoProject().fileChangeMonitor(), app.dataChangeDispatcher(), app.externalProjects()) {} + : ObjectTreeViewExternalProjectModel(app.activeRaCoProject().commandInterface(), app.dataChangeDispatcher(), app.externalProjects()) {} model::ObjectTreeNode *getInvisibleRootNode() { return invisibleRootNode_.get(); diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 4192be4a..0492f92f 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -17,6 +17,7 @@ set(RESOURCE_FILES images/text-right.png images/DuckCM.png meshes/Duck.glb + meshes/meshless.gltf meshes/README.md meshes/ToyCar/Fabric_baseColor.png meshes/ToyCar/Fabric_normal.png diff --git a/resources/meshes/meshless.gltf b/resources/meshes/meshless.gltf new file mode 100644 index 00000000..4419d773 --- /dev/null +++ b/resources/meshes/meshless.gltf @@ -0,0 +1,30 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 2 + ] + } + ], + "nodes" : [ + { + "name" : "childA1" + }, + { + "name" : "childA2" + }, + { + "children" : [ + 0, + 1 + ], + "name" : "parentA" + } + ] +} \ No newline at end of file diff --git a/resources/meshes/meshrefless.gltf b/resources/meshes/meshrefless.gltf new file mode 100644 index 00000000..ea9a1b33 --- /dev/null +++ b/resources/meshes/meshrefless.gltf @@ -0,0 +1,193 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 4 + ] + } + ], + "nodes" : [ + { + "name" : "CubeB", + "translation" : [ + -1, + 0, + 0 + ] + }, + { + "children" : [ + 0 + ], + "name" : "childB1_withMesh" + }, + { + "name" : "SphereB" + }, + { + "children" : [ + 2 + ], + "name" : "childB2_withMesh" + }, + { + "children" : [ + 1, + 3 + ], + "name" : "parentB" + } + ], + "meshes" : [ + { + "name" : "CubeBMesh", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3 + } + ] + }, + { + "name" : "SphereBMesh", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 2838, + "max" : [ + 0.9999997019767761, + 1, + 0.9999994039535522 + ], + "min" : [ + -0.9999990463256836, + -1, + -0.9999987483024597 + ], + "type" : "VEC3" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 2838, + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 2838, + "type" : "VEC2" + }, + { + "bufferView" : 7, + "componentType" : 5123, + "count" : 2880, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 288 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 576 + }, + { + "buffer" : 0, + "byteLength" : 72, + "byteOffset" : 768 + }, + { + "buffer" : 0, + "byteLength" : 34056, + "byteOffset" : 840 + }, + { + "buffer" : 0, + "byteLength" : 34056, + "byteOffset" : 34896 + }, + { + "buffer" : 0, + "byteLength" : 22704, + "byteOffset" : 68952 + }, + { + "buffer" : 0, + "byteLength" : 5760, + "byteOffset" : 91656 + } + ], + "buffers" : [ + { + "byteLength" : 97416, + "uri" : "data:application/octet-stream;base64,AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AAADAAkAAAAJAAYACAAKABUACAAVABMAFAAXABEAFAARAA4ADQAPAAQADQAEAAIABwASAAwABwAMAAEAFgALAAUAFgAFABAAAAAAAL4Uez/CxUe+AAAAAL4Uez/CxUe+AAAAAL4Uez/CxUe+AAAAAL4Uez/CxUe+AAAAAL4Uez/CxUe+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//8vPwAAQD///y8/AABAP///Lz8AAEA///8vPwAAQD8AAEA/AABAPwAAQD8AAEA/AABAPwAAQD8AAEA/AABAPwAAQD8AAEA/AABAPwAAQD8AAFA/AABAPwAAUD8AAEA/AABQPwAAQD8AAFA/AABAPwAAUD8AAEA/AABQPwAAOD/w/389AAA4P/D/fz0AADg/8P9/PQAAOD/w/389AAA4P/D/fz0AADg/AAAAPgAAOD8AAAA+AAA4PwAAAD4AADg/AAAAPgAAOD8AAAA+AAA4PwAAAD4AADg/AABAPgAAOD8AAEA+AAA4PwAAQD4AADg/AABAPgAAOD8AAEA+AAA4PwAAQD4AADg//P9/PgAAOD/8/38+AAA4P/z/fz4AADg//P9/PgAAOD/8/38+AAA4P/z/fz4AADg/AACgPgAAOD8AAKA+AAA4PwAAoD4AADg/AACgPgAAOD8AAKA+AAA4PwAAoD4AADg/AADAPgAAOD8AAMA+AAA4PwAAwD4AADg/AADAPgAAOD8AAMA+AAA4PwAAwD4AADg/AADgPgAAOD8AAOA+AAA4PwAA4D4AADg/AADgPgAAOD8AAOA+AAA4PwAA4D4AADg/AAAAPwAAOD8AAAA/AAA4PwAAAD8AADg/AAAAPwAAOD8AAAA/AAA4PwAAAD8AADg/AAAQPwAAOD8AABA/AAA4PwAAED8AADg/AAAQPwAAOD8AABA/AAA4PwAAED8AADg/AAAgPwAAOD8AACA/AAA4PwAAID8AADg/AAAgPwAAOD8AACA/AAA4PwAAID8AADg///8vPwAAOD///y8/AAA4P///Lz8AADg///8vPwAAOD///y8/AAA4P///Lz8AADg/AABAPwAAOD8AAEA/AAA4PwAAQD8AADg/AABAPwAAOD8AAEA/AAA4PwAAQD8AADg/AABQPwAAOD8AAFA/AAA4PwAAUD8AADg/AABQPwAAOD8AAFA/AAA4PwAAUD8AADg///9fPwAAOD///18/AAA4P///Xz8AADg///9fPwAAOD///18/AAA4P///Xz8AADg/AQBwPwAAOD8BAHA/AAA4PwEAcD8AADg/AQBwPwAAOD8BAHA/AAAwP/D/fz0AADA/8P9/PQAAMD/w/389AAAwP/D/fz0AADA/8P9/PQAAMD8AAAA+AAAwPwAAAD4AADA/AAAAPgAAMD8AAAA+AAAwPwAAAD4AADA/AAAAPgAAMD8AAEA+AAAwPwAAQD4AADA/AABAPgAAMD8AAEA+AAAwPwAAQD4AADA/AABAPgAAMD/8/38+AAAwP/z/fz4AADA//P9/PgAAMD/8/38+AAAwP/z/fz4AADA/AACgPgAAMD8AAKA+AAAwPwAAoD4AADA/AACgPgAAMD8AAKA+AAAwPwAAoD4AADA/AADAPgAAMD8AAMA+AAAwPwAAwD4AADA/AADAPgAAMD8AAMA+AAAwPwAAwD4AADA/AADgPgAAMD8AAOA+AAAwPwAA4D4AADA/AADgPgAAMD8AAOA+AAAwPwAA4D4AADA/AAAAPwAAMD8AAAA/AAAwPwAAAD8AADA/AAAAPwAAMD8AAAA/AAAwPwAAAD8AADA/AAAQPwAAMD8AABA/AAAwPwAAED8AADA/AAAQPwAAMD8AABA/AAAwPwAAED8AADA/AAAgPwAAMD8AACA/AAAwPwAAID8AADA/AAAgPwAAMD8AACA/AAAwPwAAID8AADA///8vPwAAMD///y8/AAAwP///Lz8AADA///8vPwAAMD///y8/AAAwP///Lz8AADA/AABAPwAAMD8AAEA/AAAwPwAAQD8AADA/AABAPwAAMD8AAEA/AAAwPwAAQD8AADA/AABQPwAAMD8AAFA/AAAwPwAAUD8AADA/AABQPwAAMD8AAFA/AAAwPwAAUD8AADA///9fPwAAMD///18/AAAwP///Xz8AADA///9fPwAAMD///18/AAAwP///Xz8AADA/AQBwPwAAMD8BAHA/AAAwPwEAcD8AADA/AQBwPwAAMD8BAHA/AAAoP/D/fz0AACg/8P9/PQAAKD/w/389AAAoP/D/fz0AACg/8P9/PQAAKD8AAAA+AAAoPwAAAD4AACg/AAAAPgAAKD8AAAA+AAAoPwAAAD4AACg/AAAAPgAAKD8AAEA+AAAoPwAAQD4AACg/AABAPgAAKD8AAEA+AAAoPwAAQD4AACg/AACAPgAAKD8AAIA+AAAoPwAAgD4AACg/AACAPgAAKD8AAIA+AAAoPwAAgD4AACg/AACgPgAAKD8AAKA+AAAoPwAAoD4AACg/AACgPgAAKD8AAKA+AAAoPwAAwD4AACg/AADAPgAAKD8AAMA+AAAoPwAAwD4AACg/AADAPgAAKD8AAMA+AAAoPwAA4D4AACg/AADgPgAAKD8AAOA+AAAoPwAA4D4AACg/AADgPgAAKD8AAOA+AAAoPwAAAD8AACg/AAAAPwAAKD8AAAA/AAAoPwAAAD8AACg/AAAAPwAAKD8AAAA/AAAoPwAAED8AACg/AAAQPwAAKD8AABA/AAAoPwAAED8AACg/AAAQPwAAKD8AABA/AAAoPwAAID8AACg/AAAgPwAAKD8AACA/AAAoPwAAID8AACg/AAAgPwAAKD8AACA/AAAoP///Lz8AACg///8vPwAAKD///y8/AAAoP///Lz8AACg///8vPwAAKD8AAEA/AAAoPwAAQD8AACg/AABAPwAAKD8AAEA/AAAoPwAAQD8AACg/AABAPwAAKD8AAFA/AAAoPwAAUD8AACg/AABQPwAAKD8AAFA/AAAoPwAAUD8AACg/AABQPwAAKD///18/AAAoP///Xz8AACg///9fPwAAKD///18/AAAoP///Xz8AACg///9fPwAAKD8BAHA/AAAoPwEAcD8AACg/AQBwPwAAKD8BAHA/AAAoPwEAcD///x8/8P9/Pf//Hz/w/389//8fP/D/fz3//x8/8P9/Pf//Hz/w/389//8fPwAAAD7//x8/AAAAPv//Hz8AAAA+//8fPwAAAD7//x8/AAAAPv//Hz8AAAA+//8fPwAAQD7//x8/AABAPv//Hz8AAEA+//8fPwAAQD7//x8/AABAPv//Hz8AAEA+AAAgP/z/fz4AACA//P9/PgAAID/8/38+AAAgP/z/fz4AACA//P9/PgAAID/+/58+AAAgP/7/nz4AACA//v+fPgAAID/+/58+AAAgP/7/nz4AACA//v+/PgAAID/+/78+AAAgP/7/vz4AACA//v+/PgAAID/+/78+AAAgP/7/vz4AACA/AADgPgAAID8AAOA+AAAgPwAA4D4AACA/AADgPgAAID8AAOA+AAAgPwAA4D4AACA/AAAAPwAAID8AAAA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AAAgPwAAAD8AACA/AAAQPwAAID8AABA/AAAgPwAAED8AACA/AAAQPwAAID8AABA/AAAgPwAAED8AACA/AAAgPwAAID8AACA/AAAgPwAAID8AACA/AAAgPwAAID8AACA/AAAgP///Lz8AACA///8vPwAAID///y8/AAAgP///Lz8AACA///8vPwAAID///y8/AAAgPwAAQD8AACA/AABAPwAAID8AAEA/AAAgPwAAQD8AACA/AABAPwAAID8AAEA/AAAgPwAAUD8AACA/AABQPwAAID8AAFA/AAAgPwAAUD8AACA/AABQPwAAID8AAFA/AAAgP///Xz8AACA///9fPwAAID///18/AAAgP///Xz8AACA///9fPwAAID///18///8fPwEAcD///x8/AQBwP///Hz8BAHA///8fPwEAcD///x8/AQBwP///Fz/w/389//8XP/D/fz3//xc/8P9/Pf//Fz/w/389//8XP/D/fz3//xc/AAAAPv//Fz8AAAA+//8XPwAAAD7//xc/AAAAPv//Fz8AAAA+//8XPwAAAD4AABg/AABAPgAAGD8AAEA+AAAYPwAAQD4AABg/AABAPgAAGD8AAEA+AAAYPwAAQD4AABg//P9/PgAAGD/8/38+AAAYP/z/fz4AABg//P9/PgAAGD/8/38+AAAYPwAAoD4AABg/AACgPgAAGD8AAKA+AAAYPwAAoD4AABg/AACgPgAAGD8AAKA+AAAYP/7/vz4AABg//v+/PgAAGD/+/78+AAAYP/7/vz4AABg//v+/PgAAGD/+/78+AAAYPwAA4D4AABg/AADgPgAAGD8AAOA+AAAYPwAA4D4AABg/AADgPgAAGD8AAOA+AAAYPwAAAD8AABg/AAAAPwAAGD8AAAA/AAAYPwAAAD8AABg/AAAAPwAAGD8AAAA/AAAYPwAAED8AABg/AAAQPwAAGD8AABA/AAAYPwAAED8AABg/AAAQPwAAGD8AABA/AAAYPwAAID8AABg/AAAgPwAAGD8AACA/AAAYPwAAID8AABg/AAAgPwAAGD8AACA/AAAYP///Lz8AABg///8vPwAAGD///y8/AAAYP///Lz8AABg///8vPwAAGD///y8/AAAYPwAAQD8AABg/AABAPwAAGD8AAEA/AAAYPwAAQD8AABg/AABAPwAAGD8AAEA/AAAYPwAAUD8AABg/AABQPwAAGD8AAFA/AAAYPwAAUD8AABg/AABQPwAAGD8AAFA/AAAYP///Xz8AABg///9fPwAAGD///18/AAAYP///Xz8AABg///9fPwAAGD///18///8XPwEAcD///xc/AQBwP///Fz8BAHA///8XPwEAcD///w8/8P9/Pf//Dz/w/389//8PP/D/fz3//w8/8P9/Pf//Dz/w/389//8PPwAAAD7//w8/AAAAPv//Dz8AAAA+//8PPwAAAD7//w8/AAAAPv//Dz8AAAA+//8PPwAAQD7//w8/AABAPv//Dz8AAEA+//8PPwAAQD7//w8/AABAPv//Dz8AAEA+AAAQP/z/fz4AABA//P9/PgAAED/8/38+AAAQP/z/fz4AABA//P9/PgAAED/8/38+AAAQPwAAoD4AABA/AACgPgAAED8AAKA+AAAQPwAAoD4AABA/AACgPgAAED8AAKA+AAAQP/7/vz4AABA//v+/PgAAED/+/78+AAAQP/7/vz4AABA//v+/PgAAED/+/78+AAAQPwAA4D4AABA/AADgPgAAED8AAOA+AAAQPwAA4D4AABA/AADgPgAAED8AAOA+AAAQPwAAAD8AABA/AAAAPwAAED8AAAA/AAAQPwAAAD8AABA/AAAAPwAAED8AAAA/AAAQPwAAED8AABA/AAAQPwAAED8AABA/AAAQPwAAED8AABA/AAAQPwAAED8AABA/AAAQPwAAID8AABA/AAAgPwAAED8AACA/AAAQPwAAID8AABA/AAAgPwAAED8AACA/AAAQP///Lz8AABA///8vPwAAED///y8/AAAQP///Lz8AABA///8vPwAAED///y8/AAAQPwAAQD8AABA/AABAPwAAED8AAEA/AAAQPwAAQD8AABA/AABAPwAAED8AAEA///8PPwAAUD///w8/AABQP///Dz8AAFA///8PPwAAUD///w8/AABQP///Dz8AAFA///8PP///Xz///w8///9fP///Dz///18///8PP///Xz///w8///9fP///Dz8BAHA///8PPwEAcD///w8/AQBwP///Dz8BAHA///8PPwEAcD///wc/8P9/Pf//Bz/w/389//8HP/D/fz3//wc/8P9/Pf//Bz/w/389//8HPwAAAD7//wc/AAAAPv//Bz8AAAA+//8HPwAAAD7//wc/AAAAPv//Bz8AAAA+//8HPwAAQD7//wc/AABAPv//Bz8AAEA+//8HPwAAQD7//wc/AABAPv//Bz8AAEA+AAAIP/z/fz4AAAg//P9/PgAACD/8/38+AAAIP/z/fz4AAAg//P9/PgAACD/8/38+AAAIP/7/nz4AAAg//v+fPgAACD/+/58+AAAIP/7/nz4AAAg//v+fPgAACD/+/58+AAAIP/7/vz4AAAg//v+/PgAACD/+/78+AAAIP/7/vz4AAAg//v+/PgAACD/+/78+AAAIPwAA4D4AAAg/AADgPgAACD8AAOA+AAAIPwAA4D4AAAg/AADgPgAACD8AAOA+AAAIPwAAAD8AAAg/AAAAPwAACD8AAAA/AAAIPwAAAD8AAAg/AAAAPwAACD8AAAA/AAAIPwAAED8AAAg/AAAQPwAACD8AABA/AAAIPwAAED8AAAg/AAAQPwAACD8AABA/AAAIPwAAID8AAAg/AAAgPwAACD8AACA/AAAIPwAAID8AAAg/AAAgPwAACD///y8/AAAIP///Lz8AAAg///8vPwAACD///y8/AAAIP///Lz8AAAg///8vPwAACD8AAEA/AAAIPwAAQD8AAAg/AABAPwAACD8AAEA/AAAIPwAAQD8AAAg/AABAP///Bz8AAFA///8HPwAAUD///wc/AABQP///Bz8AAFA///8HPwAAUD///wc/AABQP///Bz///18///8HP///Xz///wc///9fP///Bz///18///8HP///Xz///wc///9fP///Bz8BAHA///8HPwEAcD///wc/AQBwP///Bz8BAHA///8HPwEAcD/+//8+8P9/Pf7//z7w/389/v//PvD/fz3+//8+8P9/Pf7//z7w/389/v//PgAAAD7+//8+AAAAPv7//z4AAAA+/v//PgAAAD7+//8+AAAAPv7//z4AAAA+////PgAAQD7///8+AABAPv///z4AAEA+////PgAAQD7///8+AABAPv///z4AAEA+AAAAP/z/fz4AAAA//P9/PgAAAD/8/38+AAAAP/z/fz4AAAA//P9/PgAAAD/8/38+////Pv7/nz7///8+/v+fPv///z7+/58+////Pv7/nz7///8+/v+fPv///z7+/58+AAAAP/7/vz4AAAA//v+/PgAAAD/+/78+AAAAP/7/vz4AAAA//v+/PgAAAD/+/78+AAAAPwAA4D4AAAA/AADgPgAAAD8AAOA+AAAAPwAA4D4AAAA/AADgPv///z4AAAA/////PgAAAD////8+AAAAP////z4AAAA/////PgAAAD////8+AAAAPwAAAD8AABA/AAAAPwAAED8AAAA/AAAQPwAAAD8AABA/AAAAPwAAED////8+AAAgP////z4AACA/////PgAAID////8+AAAgP////z4AACA/////PgAAID////8+//8vP////z7//y8/////Pv//Lz////8+//8vP////z7//y8/////Pv//Lz8AAAA/AABAPwAAAD8AAEA/AAAAPwAAQD8AAAA/AABAPwAAAD8AAEA/AAAAPwAAQD////8+AABQP////z4AAFA/////PgAAUD////8+AABQP////z4AAFA/////PgAAUD////8+//9fP////z7//18/////Pv//Xz////8+//9fP////z7//18/////Pv//Xz/+//8+AQBwP/7//z4BAHA//v//PgEAcD/+//8+AQBwP/7//z4BAHA//v/vPvD/fz3+/+8+8P9/Pf7/7z7w/389/v/vPvD/fz3+/+8+8P9/Pf7/7z4AAAA+/v/vPgAAAD7+/+8+AAAAPv7/7z4AAAA+/v/vPgAAAD7//+8+AABAPv//7z4AAEA+///vPgAAQD7//+8+AABAPv//7z4AAEA+AADwPvz/fz4AAPA+/P9/PgAA8D78/38+AADwPvz/fz4AAPA+/P9/PgAA8D78/38+///vPv7/nz7//+8+/v+fPv//7z7+/58+///vPv7/nz7//+8+/v+fPv//7z7+/58+AADwPv7/vz4AAPA+/v+/PgAA8D7+/78+AADwPv7/vz4AAPA+/v+/PgAA8D4AAOA+AADwPgAA4D4AAPA+AADgPgAA8D4AAOA+AADwPgAA4D4AAPA+AADgPv//7z4AAAA////vPgAAAD///+8+AAAAP///7z4AAAA////vPgAAAD///+8+AAAAPwAA8D4AABA/AADwPgAAED8AAPA+AAAQPwAA8D4AABA/AADwPgAAED8AAPA+AAAQP///7z4AACA////vPgAAID///+8+AAAgP///7z4AACA////vPgAAID///+8+AAAgP///7z4BADA////vPgEAMD///+8+AQAwP///7z4BADA////vPgEAMD///+8+AQAwPwAA8D4AAEA/AADwPgAAQD8AAPA+AABAPwAA8D4AAEA/AADwPgAAQD8AAPA+AABAP///7z4AAFA////vPgAAUD///+8+AABQP///7z4AAFA////vPgAAUD///+8+AABQP///7z7//18////vPv//Xz///+8+//9fP///7z7//18////vPv//Xz///+8+//9fP/7/7z4BAHA//v/vPgEAcD/+/+8+AQBwP/7/7z4BAHA//v/fPvD/fz3+/98+8P9/Pf7/3z7w/389/v/fPvD/fz3+/98+AAAAPv7/3z4AAAA+/v/fPgAAAD7+/98+AAAAPv7/3z4AAAA+///fPvz/Pz7//98+/P8/Pv//3z78/z8+///fPvz/Pz7//98+/P8/Pv//3z78/z8+AADgPvz/fz4AAOA+/P9/PgAA4D78/38+AADgPvz/fz4AAOA+/P9/PgAA4D78/38+///fPv7/nz7//98+/v+fPv//3z7+/58+///fPv7/nz7//98+/v+fPgAA4D7+/78+AADgPv7/vz4AAOA+/v+/PgAA4D7+/78+AADgPv7/vz4AAOA+/v+/PgAA4D4AAOA+AADgPgAA4D4AAOA+AADgPgAA4D4AAOA+AADgPgAA4D4AAOA+AADgPv//3z4AAAA////fPgAAAD///98+AAAAP///3z4AAAA////fPgAAAD///98+AAAAPwAA4D4AABA/AADgPgAAED8AAOA+AAAQPwAA4D4AABA/AADgPgAAED8AAOA+AAAQP///3z4AACA////fPgAAID///98+AAAgP///3z4AACA////fPgAAID///98+AAAgP///3z4BADA////fPgEAMD///98+AQAwP///3z4BADA////fPgEAMD8AAOA+AABAPwAA4D4AAEA/AADgPgAAQD8AAOA+AABAPwAA4D4AAEA/AADgPgAAQD///98+AABQP///3z4AAFA////fPgAAUD///98+AABQP///3z4AAFA////fPgAAUD///98+//9fP///3z7//18////fPv//Xz///98+//9fP///3z7//18//v/fPgEAcD/+/98+AQBwP/7/3z4BAHA//v/fPgEAcD/+/98+AQBwP/7/zz7w/389/v/PPvD/fz3+/88+8P9/Pf7/zz7w/389/v/PPvD/fz3//88+AAAAPv//zz4AAAA+///PPgAAAD7//88+AAAAPv//zz4AAAA+///PPgAAAD7//88+/P8/Pv//zz78/z8+///PPvz/Pz7//88+/P8/Pv//zz78/z8+///PPvz/Pz4AANA+/P9/PgAA0D78/38+AADQPvz/fz4AANA+/P9/PgAA0D78/38+AADQPv7/nz4AANA+/v+fPgAA0D7+/58+AADQPv7/nz4AANA+/v+fPgAA0D7+/58+AADQPv7/vz4AANA+/v+/PgAA0D7+/78+AADQPv7/vz4AANA+/v+/PgAA0D7+/78+AADQPgAA4D4AANA+AADgPgAA0D4AAOA+AADQPgAA4D4AANA+AADgPgAA0D4AAOA+///PPgAAAD///88+AAAAP///zz4AAAA////PPgAAAD///88+AAAAP///zz4AAAA/AADQPgAAED8AANA+AAAQPwAA0D4AABA/AADQPgAAED8AANA+AAAQPwAA0D4AABA////PPgAAID///88+AAAgP///zz4AACA////PPgAAID///88+AAAgPwAA0D4BADA/AADQPgEAMD8AANA+AQAwPwAA0D4BADA/AADQPgEAMD8AANA+AQAwPwAA0D4AAEA/AADQPgAAQD8AANA+AABAPwAA0D4AAEA/AADQPgAAQD8AANA+AABAP///zz4AAFA////PPgAAUD///88+AABQP///zz4AAFA////PPgAAUD///88+AABQP///zz7//18////PPv//Xz///88+//9fP///zz7//18////PPv//Xz///88+//9fP/7/zz4BAHA//v/PPgEAcD/+/88+AQBwP/7/zz4BAHA//v/PPgEAcD/+/78+8P9/Pf7/vz7w/389/v+/PvD/fz3+/78+8P9/Pf7/vz7w/389/v+/PgAAAD7+/78+AAAAPv7/vz4AAAA+/v+/PgAAAD7+/78+AAAAPv7/vz4AAAA+//+/PgAAQD7//78+AABAPv//vz4AAEA+//+/PgAAQD7//78+AABAPv//vz4AAEA+AADAPvz/fz4AAMA+/P9/PgAAwD78/38+AADAPvz/fz4AAMA+/P9/PgAAwD78/38+AADAPv7/nz4AAMA+/v+fPgAAwD7+/58+AADAPv7/nz4AAMA+/v+fPgAAwD7+/58+AADAPv7/vz4AAMA+/v+/PgAAwD7+/78+AADAPv7/vz4AAMA+/v+/PgAAwD7+/78+AADAPgAA4D4AAMA+AADgPgAAwD4AAOA+AADAPgAA4D4AAMA+AADgPgAAwD4AAOA+/v+/PgAAAD/+/78+AAAAP/7/vz4AAAA//v+/PgAAAD/+/78+AAAAP/7/vz4AAAA/AADAPgAAED8AAMA+AAAQPwAAwD4AABA/AADAPgAAED8AAMA+AAAQPwAAwD4AABA/AADAPgAAID8AAMA+AAAgPwAAwD4AACA/AADAPgAAID8AAMA+AAAgPwAAwD4AACA/AADAPgEAMD8AAMA+AQAwPwAAwD4BADA/AADAPgEAMD8AAMA+AQAwPwAAwD4BADA/AADAPgAAQD8AAMA+AABAPwAAwD4AAEA/AADAPgAAQD8AAMA+AABAPwAAwD4AAEA///+/PgAAUD///78+AABQP///vz4AAFA///+/PgAAUD///78+AABQP///vz4AAFA///+/Pv//Xz///78+//9fP///vz7//18///+/Pv//Xz///78+//9fP/7/vz4BAHA//v+/PgEAcD/+/78+AQBwP/7/vz4BAHA//v+/PgEAcD///68+8P9/Pf//rz7w/389//+vPvD/fz3//68+8P9/Pf//rz7w/389AACwPgAAAD4AALA+AAAAPgAAsD4AAAA+AACwPgAAAD4AALA+AAAAPgAAsD4AAAA+AACwPgAAQD4AALA+AABAPgAAsD4AAEA+AACwPgAAQD4AALA+AABAPgAAsD4AAEA+AACwPvz/fz4AALA+/P9/PgAAsD78/38+AACwPvz/fz4AALA+/P9/PgAAsD78/38+AACwPv7/nz4AALA+/v+fPgAAsD7+/58+AACwPv7/nz4AALA+/v+fPgAAsD7+/58+AACwPv7/vz4AALA+/v+/PgAAsD7+/78+AACwPv7/vz4AALA+/v+/PgAAsD7+/78+AACwPgAA4D4AALA+AADgPgAAsD4AAOA+AACwPgAA4D4AALA+AADgPgAAsD4AAOA+/v+vPgAAAD/+/68+AAAAP/7/rz4AAAA//v+vPgAAAD/+/68+AAAAP/7/rz4AAAA/AACwPgAAED8AALA+AAAQPwAAsD4AABA/AACwPgAAED8AALA+AAAQPwAAsD4AABA/AACwPgAAID8AALA+AAAgPwAAsD4AACA/AACwPgAAID8AALA+AAAgPwAAsD4AACA/AACwPgEAMD8AALA+AQAwPwAAsD4BADA/AACwPgEAMD8AALA+AQAwPwAAsD4BADA/AACwPgAAQD8AALA+AABAPwAAsD4AAEA/AACwPgAAQD8AALA+AABAPwAAsD4AAEA/AACwPgAAUD8AALA+AABQPwAAsD4AAFA/AACwPgAAUD8AALA+AABQPwAAsD7//18/AACwPv//Xz8AALA+//9fPwAAsD7//18/AACwPv//Xz8AALA+//9fP///rz4BAHA///+vPgEAcD///68+AQBwP///rz4BAHA///+vPgEAcD8AAKA+8P9/PQAAoD7w/389AACgPvD/fz0AAKA+8P9/PQAAoD7w/389AACgPgAAAD4AAKA+AAAAPgAAoD4AAAA+AACgPgAAAD4AAKA+AAAAPgAAoD4AAAA+AACgPgAAQD4AAKA+AABAPgAAoD4AAEA+AACgPgAAQD4AAKA+AABAPgAAoD4AAEA+AACgPvz/fz4AAKA+/P9/PgAAoD78/38+AACgPvz/fz4AAKA+/P9/PgAAoD7+/58+AACgPv7/nz4AAKA+/v+fPgAAoD7+/58+AACgPv7/nz4AAKA+/v+fPgAAoD7+/78+AACgPv7/vz4AAKA+/v+/PgAAoD7+/78+AACgPv7/vz4AAKA+/v+/PgAAoD4AAOA+AACgPgAA4D4AAKA+AADgPgAAoD4AAOA+AACgPgAA4D4AAKA+AADgPv//nz4AAAA///+fPgAAAD///58+AAAAP///nz4AAAA///+fPgAAAD///58+AAAAPwAAoD4AABA/AACgPgAAED8AAKA+AAAQPwAAoD4AABA/AACgPgAAED8AAKA+AAAQPwAAoD4AACA/AACgPgAAID8AAKA+AAAgPwAAoD4AACA/AACgPgAAID8AAKA+AAAgPwAAoD4BADA/AACgPgEAMD8AAKA+AQAwPwAAoD4BADA/AACgPgEAMD8AAKA+AQAwPwAAoD4AAEA/AACgPgAAQD8AAKA+AABAPwAAoD4AAEA/AACgPgAAQD8AAKA+AABAPwAAoD4AAFA/AACgPgAAUD8AAKA+AABQPwAAoD4AAFA/AACgPgAAUD8AAKA+AABQPwAAoD7//18/AACgPv//Xz8AAKA+//9fPwAAoD7//18/AACgPv//Xz8AAKA+//9fPwAAoD4BAHA/AACgPgEAcD8AAKA+AQBwPwAAoD4BAHA/AACgPgEAcD8AAJA+8P9/PQAAkD7w/389AACQPvD/fz0AAJA+8P9/PQAAkD7w/389AACQPgAAAD4AAJA+AAAAPgAAkD4AAAA+AACQPgAAAD4AAJA+AAAAPgAAkD4AAAA+AACQPgAAQD4AAJA+AABAPgAAkD4AAEA+AACQPgAAQD4AAJA+AABAPgAAkD78/38+AACQPvz/fz4AAJA+/P9/PgAAkD78/38+AACQPvz/fz4AAJA+/P9/PgAAkD7+/58+AACQPv7/nz4AAJA+/v+fPgAAkD7+/58+AACQPv7/nz4AAJA+/v+fPgAAkD7+/78+AACQPv7/vz4AAJA+/v+/PgAAkD7+/78+AACQPv7/vz4AAJA+/v+/PgAAkD4AAOA+AACQPgAA4D4AAJA+AADgPgAAkD4AAOA+AACQPgAA4D4AAJA+AADgPv7/jz4AAAA//v+PPgAAAD/+/48+AAAAP/7/jz4AAAA//v+PPgAAAD/+/48+AAAAPwAAkD4AABA/AACQPgAAED8AAJA+AAAQPwAAkD4AABA/AACQPgAAED8AAJA+AAAQPwAAkD4AACA/AACQPgAAID8AAJA+AAAgPwAAkD4AACA/AACQPgAAID8AAJA+AAAgPwAAkD4BADA/AACQPgEAMD8AAJA+AQAwPwAAkD4BADA/AACQPgEAMD8AAJA+AQAwPwAAkD4AAEA/AACQPgAAQD8AAJA+AABAPwAAkD4AAEA/AACQPgAAQD8AAJA+AABAPwAAkD4AAFA/AACQPgAAUD8AAJA+AABQPwAAkD4AAFA/AACQPgAAUD8AAJA+AABQPwAAkD7//18/AACQPv//Xz8AAJA+//9fPwAAkD7//18/AACQPv//Xz8AAJA+//9fPwAAkD4BAHA/AACQPgEAcD8AAJA+AQBwPwAAkD4BAHA/AACQPgEAcD8AAIA+8P9/PQAAgD7w/389AACAPvD/fz0AAIA+8P9/PQAAgD7w/389AACAPgAAAD4AAIA+AAAAPgAAgD4AAAA+AACAPgAAAD4AAIA+AAAAPgAAgD4AAAA+/v9/PgAAQD7+/38+AABAPv7/fz4AAEA+/v9/PgAAQD7+/38+AABAPv7/fz4AAEA+AACAPvz/fz4AAIA+/P9/PgAAgD78/38+AACAPvz/fz4AAIA+/P9/PgAAgD78/38+AACAPv7/nz4AAIA+/v+fPgAAgD7+/58+AACAPv7/nz4AAIA+/v+fPgAAgD7+/58+AACAPv7/vz4AAIA+/v+/PgAAgD7+/78+AACAPv7/vz4AAIA+/v+/PgAAgD7+/78+AACAPv7/3z4AAIA+/v/fPgAAgD7+/98+AACAPv7/3z4AAIA+/v/fPgAAgD7+/98+/v9/PgAAAD/+/38+AAAAP/7/fz4AAAA//v9/PgAAAD/+/38+AAAAP/7/fz4AAAA/AACAPgAAED8AAIA+AAAQPwAAgD4AABA/AACAPgAAED8AAIA+AAAQPwAAgD4AABA//v9/PgAAID/+/38+AAAgP/7/fz4AACA//v9/PgAAID/+/38+AAAgP/7/fz4AACA/AACAPgEAMD8AAIA+AQAwPwAAgD4BADA/AACAPgEAMD8AAIA+AQAwPwAAgD4BADA/AACAPgAAQD8AAIA+AABAPwAAgD4AAEA/AACAPgAAQD8AAIA+AABAPwAAgD4AAEA//v9/PgAAUD/+/38+AABQP/7/fz4AAFA//v9/PgAAUD/+/38+AABQP/7/fz4AAFA/AACAPv//Xz8AAIA+//9fPwAAgD7//18/AACAPv//Xz8AAIA+//9fPwAAgD7//18/AACAPgEAcD8AAIA+AQBwPwAAgD4BAHA/AACAPgEAcD8AAIA+AQBwPwIAYD7w/389AgBgPvD/fz0CAGA+8P9/PQIAYD7w/389AgBgPvD/fz0AAGA+AAAAPgAAYD4AAAA+AABgPgAAAD4AAGA+AAAAPgAAYD4AAAA+AABgPgAAAD4AAGA+AABAPgAAYD4AAEA+AABgPgAAQD4AAGA+AABAPgAAYD4AAEA+AABgPgAAQD4CAGA+/P9/PgIAYD78/38+AgBgPvz/fz4CAGA+/P9/PgIAYD78/38+AgBgPvz/fz4AAGA+/v+fPgAAYD7+/58+AABgPv7/nz4AAGA+/v+fPgAAYD7+/58+AABgPv7/nz4AAGA+/v+/PgAAYD7+/78+AABgPv7/vz4AAGA+/v+/PgAAYD7+/78+AABgPv7/vz4AAGA+/v/fPgAAYD7+/98+AABgPv7/3z4AAGA+/v/fPgAAYD7+/98+/v9fPgAAAD/+/18+AAAAP/7/Xz4AAAA//v9fPgAAAD/+/18+AAAAP/7/Xz4AAAA/AABgPgAAED8AAGA+AAAQPwAAYD4AABA/AABgPgAAED8AAGA+AAAQPwAAYD4AABA/AABgPgAAID8AAGA+AAAgPwAAYD4AACA/AABgPgAAID8AAGA+AAAgPwAAYD4AACA/AABgPgEAMD8AAGA+AQAwPwAAYD4BADA/AABgPgEAMD8AAGA+AQAwPwAAYD4BADA/AgBgPgAAQD8CAGA+AABAPwIAYD4AAEA/AgBgPgAAQD8CAGA+AABAPwIAYD4AAEA/AABgPgAAUD8AAGA+AABQPwAAYD4AAFA/AABgPgAAUD8AAGA+AABQPwAAYD4AAFA/AABgPv//Xz8AAGA+//9fPwAAYD7//18/AABgPv//Xz8AAGA+//9fPwAAYD7//18/AgBgPgEAcD8CAGA+AQBwPwIAYD4BAHA/AgBgPgEAcD8CAGA+AQBwPwIAQD7w/389AgBAPvD/fz0CAEA+8P9/PQIAQD7w/389AgBAPvD/fz0AAEA+AAAAPgAAQD4AAAA+AABAPgAAAD4AAEA+AAAAPgAAQD4AAAA+AABAPgAAAD4AAEA+/P8/PgAAQD78/z8+AABAPvz/Pz4AAEA+/P8/PgAAQD78/z8+AABAPvz/Pz4CAEA+/P9/PgIAQD78/38+AgBAPvz/fz4CAEA+/P9/PgIAQD78/38+AgBAPvz/fz4AAEA+/v+fPgAAQD7+/58+AABAPv7/nz4AAEA+/v+fPgAAQD7+/58+AABAPv7/vz4AAEA+/v+/PgAAQD7+/78+AABAPv7/vz4AAEA+/v+/PgAAQD7+/98+AABAPv7/3z4AAEA+/v/fPgAAQD7+/98+AABAPv7/3z4AAEA+/v/fPv7/Pz4AAAA//v8/PgAAAD/+/z8+AAAAP/7/Pz4AAAA//v8/PgAAAD/+/z8+AAAAPwAAQD4AABA/AABAPgAAED8AAEA+AAAQPwAAQD4AABA/AABAPgAAED8AAEA+AAAQPwAAQD4AACA/AABAPgAAID8AAEA+AAAgPwAAQD4AACA/AABAPgAAID8AAEA+AAAgPwAAQD4BADA/AABAPgEAMD8AAEA+AQAwPwAAQD4BADA/AABAPgEAMD8AAEA+AQAwPwIAQD4AAEA/AgBAPgAAQD8CAEA+AABAPwIAQD4AAEA/AgBAPgAAQD8CAEA+AABAPwAAQD4AAFA/AABAPgAAUD8AAEA+AABQPwAAQD4AAFA/AABAPgAAUD8AAEA+AABQPwAAQD7//18/AABAPv//Xz8AAEA+//9fPwAAQD7//18/AABAPv//Xz8AAEA+//9fPwIAQD4BAHA/AgBAPgEAcD8CAEA+AQBwPwIAQD4BAHA/AgBAPgEAcD8EACA+8P9/PQQAID7w/389BAAgPvD/fz0EACA+8P9/PQQAID7w/389AgAgPgAAAD4CACA+AAAAPgIAID4AAAA+AgAgPgAAAD4CACA+AAAAPgIAID4AAAA+/v8fPvz/Pz7+/x8+/P8/Pv7/Hz78/z8+/v8fPvz/Pz7+/x8+/P8/Pv7/Hz78/z8+AgAgPvz/fz4CACA+/P9/PgIAID78/38+AgAgPvz/fz4CACA+/P9/PgIAID7+/58+AgAgPv7/nz4CACA+/v+fPgIAID7+/58+AgAgPv7/nz4CACA+/v+/PgIAID7+/78+AgAgPv7/vz4CACA+/v+/PgIAID7+/78+AgAgPv7/vz7+/x8+/v/fPv7/Hz7+/98+/v8fPv7/3z7+/x8+/v/fPv7/Hz7+/98+/v8fPv7/3z78/x8+AAAAP/z/Hz4AAAA//P8fPgAAAD/8/x8+AAAAP/z/Hz4AAAA//P8fPgAAAD/+/x8+AAAQP/7/Hz4AABA//v8fPgAAED/+/x8+AAAQP/7/Hz4AABA//v8fPgAAED/+/x8+AAAgP/7/Hz4AACA//v8fPgAAID/+/x8+AAAgP/7/Hz4AACA//v8fPgAAID8CACA+AQAwPwIAID4BADA/AgAgPgEAMD8CACA+AQAwPwIAID4BADA/AgAgPgEAMD8CACA+AABAPwIAID4AAEA/AgAgPgAAQD8CACA+AABAPwIAID4AAEA/AgAgPgAAQD/+/x8+AQBQP/7/Hz4BAFA//v8fPgEAUD/+/x8+AQBQP/7/Hz4BAFA//v8fPgEAUD8CACA+//9fPwIAID7//18/AgAgPv//Xz8CACA+//9fPwIAID7//18/AgAgPv//Xz8EACA+AQBwPwQAID4BAHA/BAAgPgEAcD8EACA+AQBwPwQAID4BAHA/BAAAPvD/fz0EAAA+8P9/PQQAAD7w/389BAAAPvD/fz0EAAA+8P9/PQAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD78/z8+AAAAPvz/Pz4AAAA+/P8/PgAAAD78/z8+AAAAPvz/Pz4AAAA+/P8/PgQAAD78/38+BAAAPvz/fz4EAAA+/P9/PgQAAD78/38+BAAAPvz/fz4AAAA+/v+fPgAAAD7+/58+AAAAPv7/nz4AAAA+/v+fPgAAAD7+/58+AAAAPv7/nz4AAAA+/v+/PgAAAD7+/78+AAAAPv7/vz4AAAA+/v+/PgAAAD7+/78+AAAAPv7/vz4AAAA+/v/fPgAAAD7+/98+AAAAPv7/3z4AAAA+/v/fPgAAAD7+/98+AAAAPv7/3z78//89AAAAP/z//z0AAAA//P//PQAAAD/8//89AAAAP/z//z0AAAA//P//PQAAAD8AAAA+AAAQPwAAAD4AABA/AAAAPgAAED8AAAA+AAAQPwAAAD4AABA/AAAAPgAAED8AAAA+AAAgPwAAAD4AACA/AAAAPgAAID8AAAA+AAAgPwAAAD4AACA/AAAAPgAAID8AAAA+AQAwPwAAAD4BADA/AAAAPgEAMD8AAAA+AQAwPwAAAD4BADA/BAAAPgEAQD8EAAA+AQBAPwQAAD4BAEA/BAAAPgEAQD8EAAA+AQBAPwQAAD4BAEA/AAAAPgEAUD8AAAA+AQBQPwAAAD4BAFA/AAAAPgEAUD8AAAA+AQBQPwAAAD4BAFA/AAAAPv//Xz8AAAA+//9fPwAAAD7//18/AAAAPv//Xz8AAAA+//9fPwAAAD7//18/BAAAPgEAcD8EAAA+AQBwPwQAAD4BAHA/BAAAPgEAcD8EAAA+AQBwPwgAwD3w/389CADAPfD/fz0IAMA98P9/PQgAwD3w/389CADAPfD/fz0EAMA9AAAAPgQAwD0AAAA+BADAPQAAAD4EAMA9AAAAPgQAwD0AAAA+BADAPQAAAD4AAMA9/P8/PgAAwD38/z8+AADAPfz/Pz4AAMA9/P8/PgAAwD38/z8+BADAPfz/fz4EAMA9/P9/PgQAwD38/38+BADAPfz/fz4EAMA9/P9/PgQAwD38/38+BADAPf7/nz4EAMA9/v+fPgQAwD3+/58+BADAPf7/nz4EAMA9/v+fPgQAwD3+/58+BADAPf7/vz4EAMA9/v+/PgQAwD3+/78+BADAPf7/vz4EAMA9/v+/PgQAwD3+/78+AADAPf7/3z4AAMA9/v/fPgAAwD3+/98+AADAPf7/3z4AAMA9/v/fPgAAwD3+/98+/P+/PQAAAD/8/789AAAAP/z/vz0AAAA//P+/PQAAAD/8/789AAAAP/z/vz0AAAA/AADAPQAAED8AAMA9AAAQPwAAwD0AABA/AADAPQAAED8AAMA9AAAQPwAAwD0AABA/AADAPQAAID8AAMA9AAAgPwAAwD0AACA/AADAPQAAID8AAMA9AAAgPwQAwD0BADA/BADAPQEAMD8EAMA9AQAwPwQAwD0BADA/BADAPQEAMD8EAMA9AQAwPwQAwD0BAEA/BADAPQEAQD8EAMA9AQBAPwQAwD0BAEA/BADAPQEAQD8EAMA9AQBAPwAAwD0BAFA/AADAPQEAUD8AAMA9AQBQPwAAwD0BAFA/AADAPQEAUD8AAMA9AQBQPwQAwD3//18/BADAPf//Xz8EAMA9//9fPwQAwD3//18/BADAPf//Xz8EAMA9//9fPwgAwD0BAHA/CADAPQEAcD8IAMA9AQBwPwgAwD0BAHA/CADAPQEAcD8CAHw/AAAAAEAAgDwAAAAAGABAPQAAAAACAHQ/AAAAAAIAbD8AAAAAEACgPQAAAAAMAOA9AAAAAAEAZD8AAAAAAQBcPwAAAAAEABA+AAAAAAEAVD8AAAAAAgAwPgAAAAACAFA+AAAAAAAATD8AAAAAAABEPwAAAAAAAHA+AAAAAAAAPD8AAAAA//+HPgAAAAD+/5c+AAAAAAAAND8AAAAAAAAsPwAAAAD9/6c+AAAAAP//Iz8AAAAA/v+3PgAAAAD9/8c+AAAAAP//Gz8AAAAA//8TPwAAAAD8/9c+AAAAAP7/Cz8AAAAA/P/nPgAAAAD8//c+AAAAAP7/Az8AAAAACACAPfD/fz0IAIA98P9/PQgAgD3w/389CACAPfD/fz0IAIA98P9/PQQAgD0AAAA+BACAPQAAAD4EAIA9AAAAPgQAgD0AAAA+BACAPQAAAD4EAIA9/P8/PgQAgD38/z8+BACAPfz/Pz4EAIA9/P8/PgQAgD38/z8+BACAPfz/Pz4EAIA9/P9/PgQAgD38/38+BACAPfz/fz4EAIA9/P9/PgQAgD38/38+BACAPfz/fz4EAIA9/v+fPgQAgD3+/58+BACAPf7/nz4EAIA9/v+fPgQAgD3+/58+BACAPf7/nz4EAIA9/v+/PgQAgD3+/78+BACAPf7/vz4EAIA9/v+/PgQAgD3+/78+BACAPf7/vz4AAIA9/v/fPgAAgD3+/98+AACAPf7/3z4AAIA9/v/fPgAAgD3+/98+AACAPf7/3z7w/389AAAAP/D/fz0AAAA/8P9/PQAAAD/w/389AAAAP/D/fz0AAAA/8P9/PQAAAD8AAIA9AAAQPwAAgD0AABA/AACAPQAAED8AAIA9AAAQPwAAgD0AABA/AACAPQAAED8AAIA9AAAgPwAAgD0AACA/AACAPQAAID8AAIA9AAAgPwAAgD0AACA/AACAPQAAID8EAIA9AQAwPwQAgD0BADA/BACAPQEAMD8EAIA9AQAwPwQAgD0BADA/BACAPQEAMD8EAIA9AQBAPwQAgD0BAEA/BACAPQEAQD8EAIA9AQBAPwQAgD0BAEA/BACAPQEAQD8EAIA9AQBQPwQAgD0BAFA/BACAPQEAUD8EAIA9AQBQPwQAgD0BAFA/BACAPQEAUD8EAIA9AABgPwQAgD0AAGA/BACAPQAAYD8EAIA9AABgPwQAgD0AAGA/BACAPQAAYD8IAIA9AQBwPwgAgD0BAHA/CACAPQEAcD8IAIA9AQBwPwgAgD0BAHA/GAAAPfD/fz0YAAA98P9/PRgAAD3w/389GAAAPfD/fz0YAAA98P9/PRAAAD0AAAA+EAAAPQAAAD4QAAA9AAAAPhAAAD0AAAA+EAAAPQAAAD4QAAA9AAAAPgAAAD38/z8+AAAAPfz/Pz4AAAA9/P8/PgAAAD38/z8+AAAAPfz/Pz4AAAA9/P8/PhAAAD38/38+EAAAPfz/fz4QAAA9/P9/PhAAAD38/38+EAAAPfz/fz4QAAA9/P9/PgAAAD3+/58+AAAAPf7/nz4AAAA9/v+fPgAAAD3+/58+AAAAPf7/nz4AAAA9/v+fPgAAAD3+/78+AAAAPf7/vz4AAAA9/v+/PgAAAD3+/78+AAAAPf7/vz4AAAA9/v+/PgAAAD3+/98+AAAAPf7/3z4AAAA9/v/fPgAAAD3+/98+AAAAPf7/3z4AAAA9/v/fPuD//zwAAAA/4P//PAAAAD/g//88AAAAP+D//zwAAAA/4P//PAAAAD/g//88AAAAPwAAAD0AABA/AAAAPQAAED8AAAA9AAAQPwAAAD0AABA/AAAAPQAAED8AAAA9AAAQPwAAAD0AACA/AAAAPQAAID8AAAA9AAAgPwAAAD0AACA/AAAAPQAAID8AAAA9AAAgPwAAAD0BADA/AAAAPQEAMD8AAAA9AQAwPwAAAD0BADA/AAAAPQEAMD8AAAA9AQAwPxAAAD0BAEA/EAAAPQEAQD8QAAA9AQBAPxAAAD0BAEA/EAAAPQEAQD8QAAA9AQBAPwAAAD0BAFA/AAAAPQEAUD8AAAA9AQBQPwAAAD0BAFA/AAAAPQEAUD8AAAA9AQBQPxAAAD0AAGA/EAAAPQAAYD8QAAA9AABgPxAAAD0AAGA/EAAAPQAAYD8QAAA9AABgPxgAAD0BAHA/GAAAPQEAcD8YAAA9AQBwPxgAAD0BAHA/GAAAPQEAcD8BAIA/8P9/PQAAwDPw/389AADAM/D/fz0BAIA/8P9/PQAAwDPw/389AACAPwAAAD4AAAAzAAAAPgAAADMAAAA+AACAPwAAAD4AAIA/AAAAPgAAADMAAAA+AACAP/z/Pz4AAAAA/P8/PgAAAAD8/z8+AACAP/z/Pz4AAIA//P8/PgAAAAD8/z8+AACAP/z/fz4AAAAz/P9/PgAAADP8/38+AACAP/z/fz4AAIA//P9/PgAAADP8/38+AAAAM/7/nz4AAAAz/v+fPgAAgD/+/58+AACAP/7/nz4AAIA//v+fPgAAADP+/58+AAAAAP7/vz4AAAAA/v+/PgAAgD/+/78+AAAAAP7/vz4AAIA//v+/PgAAgD/+/78+AAAAAP7/3z4AAAAA/v/fPgAAgD/+/98+AAAAAP7/3z4AAIA//v/fPgAAgD/+/98+AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AACAPwAAAD8AAIA/AAAAPwAAgD8AAAA/AAAAAAAAED8AAIA/AAAQPwAAgD8AABA/AACAPwAAED8AAAAAAAAQPwAAAAAAABA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAID8AAAAAAAAgPwAAgD8AACA/AAAAMwEAMD8AAIA/AQAwPwAAgD8BADA/AAAAMwEAMD8AAAAzAQAwPwAAgD8BADA/AAAAMwEAQD8AAIA/AQBAPwAAgD8BAEA/AAAAMwEAQD8AAAAzAQBAPwAAgD8BAFA/AAAAAAEAUD8AAAAAAQBQPwAAAAABAFA/AACAPwEAUD8AAAAzAABgPwAAgD8AAGA/AACAPwAAYD8AAIA/AABgPwAAADMAAGA/AAAAMwAAYD8BAIA/AQBwPwEAgD8BAHA/AADAMwEAcD8BAIA/AQBwPwAAwDMBAHA/AAB4P/D/fz0AAHg/8P9/PQAAeD/w/389AAB4P/D/fz0AAHg/8P9/PQAAeD8AAAA+AAB4PwAAAD4AAHg/AAAAPgAAeD8AAAA+AAB4PwAAAD4AAHg/AAAAPgAAeD/4/z8+AAB4P/j/Pz4AAHg/+P8/PgAAeD/4/z8+AAB4P/j/Pz4AAHg/+P8/PgAAeD/8/38+AAB4P/z/fz4AAHg//P9/PgAAeD/8/38+AAB4P/z/fz4AAHg//P9/PgAAeD/8/58+AAB4P/z/nz4AAHg//P+fPgAAeD/8/58+AAB4P/z/nz4AAHg//P+fPgAAeD/+/78+AAB4P/7/vz4AAHg//v+/PgAAeD/+/78+AAB4P/7/vz4AAHg//v+/PgAAeD/+/98+AAB4P/7/3z4AAHg//v/fPgAAeD/+/98+AAB4P/7/3z4AAHg//v/fPv7/dz8AAAA//v93PwAAAD/+/3c/AAAAP/7/dz8AAAA//v93PwAAAD/+/3c/AAAAPwAAeD8AABA/AAB4PwAAED8AAHg/AAAQPwAAeD8AABA/AAB4PwAAED8AAHg/AAAQP///dz8AACA///93PwAAID///3c/AAAgP///dz8AACA///93PwAAID///3c/AAAgPwAAeD8BADA/AAB4PwEAMD8AAHg/AQAwPwAAeD8BADA/AAB4PwEAMD8AAHg/AQBAPwAAeD8BAEA/AAB4PwEAQD8AAHg/AQBAPwAAeD8BAEA/AAB4PwEAUD8AAHg/AQBQPwAAeD8BAFA/AAB4PwEAUD8AAHg/AQBQPwAAeD8BAFA/AAB4PwAAYD8AAHg/AABgPwAAeD8AAGA/AAB4PwAAYD8AAHg/AABgPwAAeD8AAGA/AAB4PwEAcD8AAHg/AQBwPwAAeD8BAHA/AAB4PwEAcD8AAHg/AQBwPwEAcD/w/389AQBwP/D/fz0BAHA/8P9/PQEAcD/w/389AQBwP/D/fz0AAHA/+P//PQAAcD/4//89AABwP/j//z0AAHA/+P//PQAAcD/4//89AABwP/j//z0AAHA/+P8/PgAAcD/4/z8+AABwP/j/Pz4AAHA/+P8/PgAAcD/4/z8+AABwP/j/Pz4AAHA//P9/PgAAcD/8/38+AABwP/z/fz4AAHA//P9/PgAAcD/8/38+AABwP/z/fz4AAHA//P+fPgAAcD/8/58+AABwP/z/nz4AAHA//P+fPgAAcD/8/58+AABwP/z/nz4AAHA//v+/PgAAcD/+/78+AABwP/7/vz4AAHA//v+/PgAAcD/+/78+AABwP/7/vz4AAHA//v/fPgAAcD/+/98+AABwP/7/3z4AAHA//v/fPgAAcD/+/98+AABwP/7/3z7//28/AAAAP///bz8AAAA///9vPwAAAD///28/AAAAP///bz8AAAA///9vPwAAAD8AAHA/AAAQPwAAcD8AABA/AABwPwAAED8AAHA/AAAQPwAAcD8AABA/AABwPwAAED8AAHA/AAAgPwAAcD8AACA/AABwPwAAID8AAHA/AAAgPwAAcD8AACA/AABwPwAAID8AAHA/AQAwPwAAcD8BADA/AABwPwEAMD8AAHA/AQAwPwAAcD8BADA/AABwPwEAMD8AAHA/AQBAPwAAcD8BAEA/AABwPwEAQD8AAHA/AQBAPwAAcD8BAEA/AABwPwEAQD8AAHA/AQBQPwAAcD8BAFA/AABwPwEAUD8AAHA/AQBQPwAAcD8BAFA/AABwPwEAUD8AAHA/AABgPwAAcD8AAGA/AABwPwAAYD8AAHA/AABgPwAAcD8AAGA/AABwPwAAYD8BAHA/AQBwPwEAcD8BAHA/AQBwPwEAcD8BAHA/AQBwPwEAcD8BAHA/AABoP/D/fz0AAGg/8P9/PQAAaD/w/389AABoP/D/fz0AAGg/8P9/PQAAaD/4//89AABoP/j//z0AAGg/+P//PQAAaD/4//89AABoP/j//z0AAGg/+P//PQAAaD/4/z8+AABoP/j/Pz4AAGg/+P8/PgAAaD/4/z8+AABoP/j/Pz4AAGg/+P8/PgAAaD/8/38+AABoP/z/fz4AAGg//P9/PgAAaD/8/38+AABoP/z/fz4AAGg//P9/PgAAaD/8/58+AABoP/z/nz4AAGg//P+fPgAAaD/8/58+AABoP/z/nz4AAGg//P+fPgAAaD/+/78+AABoP/7/vz4AAGg//v+/PgAAaD/+/78+AABoP/7/vz4AAGg//v+/PgAAaD/+/98+AABoP/7/3z4AAGg//v/fPgAAaD/+/98+AABoP/7/3z4AAGg//v/fPv//Zz8AAAA///9nPwAAAD///2c/AAAAP///Zz8AAAA///9nPwAAAD///2c/AAAAPwAAaD8AABA/AABoPwAAED8AAGg/AAAQPwAAaD8AABA/AABoPwAAED8AAGg/AAAQPwAAaD8AACA/AABoPwAAID8AAGg/AAAgPwAAaD8AACA/AABoPwAAID8AAGg/AAAgPwAAaD8BADA/AABoPwEAMD8AAGg/AQAwPwAAaD8BADA/AABoPwEAMD8AAGg/AQAwPwAAaD8BAEA/AABoPwEAQD8AAGg/AQBAPwAAaD8BAEA/AABoPwEAQD8AAGg/AQBAPwAAaD8BAFA/AABoPwEAUD8AAGg/AQBQPwAAaD8BAFA/AABoPwEAUD8AAGg/AQBQPwAAaD8AAGA/AABoPwAAYD8AAGg/AABgPwAAaD8AAGA/AABoPwAAYD8AAGg/AABgPwAAaD8BAHA/AABoPwEAcD8AAGg/AQBwPwAAaD8BAHA/AABoPwEAcD8AAGA/8P9/PQAAYD/w/389AABgP/D/fz0AAGA/8P9/PQAAYD/w/389AABgP/j//z0AAGA/+P//PQAAYD/4//89AABgP/j//z0AAGA/+P//PQAAYD/4//89//9fP/j/Pz7//18/+P8/Pv//Xz/4/z8+//9fP/j/Pz7//18/+P8/Pv//Xz/4/z8+AABgP/z/fz4AAGA//P9/PgAAYD/8/38+AABgP/z/fz4AAGA//P9/PgAAYD/8/38+AABgP/z/nz4AAGA//P+fPgAAYD/8/58+AABgP/z/nz4AAGA//P+fPgAAYD/8/58+AABgP/7/vz4AAGA//v+/PgAAYD/+/78+AABgP/7/vz4AAGA//v+/PgAAYD/+/78+AABgP/7/3z4AAGA//v/fPgAAYD/+/98+AABgP/7/3z4AAGA//v/fPgAAYD/+/98+/v9fPwAAAD/+/18/AAAAP/7/Xz8AAAA//v9fPwAAAD/+/18/AAAAP/7/Xz8AAAA/AABgPwAAED8AAGA/AAAQPwAAYD8AABA/AABgPwAAED8AAGA/AAAQPwAAYD8AABA/AABgPwAAID8AAGA/AAAgPwAAYD8AACA/AABgPwAAID8AAGA/AAAgPwAAYD8AACA/AABgPwEAMD8AAGA/AQAwPwAAYD8BADA/AABgPwEAMD8AAGA/AQAwPwAAYD8BADA/AABgPwEAQD8AAGA/AQBAPwAAYD8BAEA/AABgPwEAQD8AAGA/AQBAPwAAYD8BAEA///9fPwEAUD///18/AQBQP///Xz8BAFA///9fPwEAUD///18/AQBQP///Xz8BAFA/AABgPwAAYD8AAGA/AABgPwAAYD8AAGA/AABgPwAAYD8AAGA/AABgPwAAYD8AAGA/AABgPwEAcD8AAGA/AQBwPwAAYD8BAHA/AABgPwEAcD8AAGA/AQBwPwAAWD/w/389AABYP/D/fz0AAFg/8P9/PQAAWD/w/389AABYP/D/fz0AAFg/+P//PQAAWD/4//89AABYP/j//z0AAFg/+P//PQAAWD/4//89AABYP/j//z0AAFg/+P8/PgAAWD/4/z8+AABYP/j/Pz4AAFg/+P8/PgAAWD/4/z8+AABYP/j/Pz4AAFg/+P9/PgAAWD/4/38+AABYP/j/fz4AAFg/+P9/PgAAWD/4/38+AABYP/j/fz4AAFg//P+fPgAAWD/8/58+AABYP/z/nz4AAFg//P+fPgAAWD/8/58+AABYP/z/nz4AAFg//v+/PgAAWD/+/78+AABYP/7/vz4AAFg//v+/PgAAWD/+/78+AABYP/7/vz4AAFg//v/fPgAAWD/+/98+AABYP/7/3z4AAFg//v/fPgAAWD/+/98+AABYP/7/3z7+/1c/AAAAP/7/Vz8AAAA//v9XPwAAAD/+/1c/AAAAP/7/Vz8AAAA//v9XPwAAAD8AAFg/AAAQPwAAWD8AABA/AABYPwAAED8AAFg/AAAQPwAAWD8AABA/AABYPwAAED8AAFg/AAAgPwAAWD8AACA/AABYPwAAID8AAFg/AAAgPwAAWD8AACA/AABYPwAAID8AAFg/AQAwPwAAWD8BADA/AABYPwEAMD8AAFg/AQAwPwAAWD8BADA/AABYPwEAMD8AAFg/AQBAPwAAWD8BAEA/AABYPwEAQD8AAFg/AQBAPwAAWD8BAEA/AABYPwEAQD8AAFg/AwBQPwAAWD8DAFA/AABYPwMAUD8AAFg/AwBQPwAAWD8DAFA/AABYPwMAUD8AAFg/AABgPwAAWD8AAGA/AABYPwAAYD8AAFg/AABgPwAAWD8AAGA/AABYPwAAYD8AAFg/AQBwPwAAWD8BAHA/AABYPwEAcD8AAFg/AQBwPwAAWD8BAHA/AABQP/D/fz0AAFA/8P9/PQAAUD/w/389AABQP/D/fz0AAFA/8P9/PQAAUD/4//89AABQP/j//z0AAFA/+P//PQAAUD/4//89AABQP/j//z0AAFA/+P//PQAAUD/4/z8+AABQP/j/Pz4AAFA/+P8/PgAAUD/4/z8+AABQP/j/Pz4AAFA/+P8/PgAAUD/4/38+AABQP/j/fz4AAFA/+P9/PgAAUD/4/38+AABQP/j/fz4AAFA/+P9/PgAAUD/8/58+AABQP/z/nz4AAFA//P+fPgAAUD/8/58+AABQP/z/nz4AAFA//P+fPgAAUD/+/78+AABQP/7/vz4AAFA//v+/PgAAUD/+/78+AABQP/7/vz4AAFA//v+/PgAAUD/+/98+AABQP/7/3z4AAFA//v/fPgAAUD/+/98+AABQP/7/3z4AAFA//v/fPv7/Tz8AAAA//v9PPwAAAD/+/08/AAAAP/7/Tz8AAAA//v9PPwAAAD/+/08/AAAAPwAAUD8AABA/AABQPwAAED8AAFA/AAAQPwAAUD8AABA/AABQPwAAED8AAFA/AAAQPwAAUD8AACA/AABQPwAAID8AAFA/AAAgPwAAUD8AACA/AABQPwAAID8AAFA/AAAgPwAAUD8CADA/AABQPwIAMD8AAFA/AgAwPwAAUD8CADA/AABQPwIAMD8AAFA/AgAwPwAAUD8BAEA/AABQPwEAQD8AAFA/AQBAPwAAUD8BAEA/AABQPwEAQD8AAFA/AQBAPwAAUD8DAFA/AABQPwMAUD8AAFA/AwBQPwAAUD8DAFA/AABQPwMAUD8AAFA/AwBQPwAAUD8AAGA/AABQPwAAYD8AAFA/AABgPwAAUD8AAGA/AABQPwAAYD8AAFA/AABgPwAAUD8BAHA/AABQPwEAcD8AAFA/AQBwPwAAUD8BAHA/AABQPwEAcD8AAEg/8P9/PQAASD/w/389AABIP/D/fz0AAEg/8P9/PQAASD/w/389//9HP/j//z3//0c/+P//Pf//Rz/4//89//9HP/j//z3//0c/+P//Pf//Rz/4//89//9HP/j/Pz7//0c/+P8/Pv//Rz/4/z8+//9HP/j/Pz7//0c/+P8/Pv//Rz/4/z8+AABIP/z/fz4AAEg//P9/PgAASD/8/38+AABIP/z/fz4AAEg//P9/PgAASD/8/38+AABIP/z/nz4AAEg//P+fPgAASD/8/58+AABIP/z/nz4AAEg//P+fPgAASD/8/58+AABIP/7/vz4AAEg//v+/PgAASD/+/78+AABIP/7/vz4AAEg//v+/PgAASD/+/78+//9HP/7/3z7//0c//v/fPv//Rz/+/98+//9HP/7/3z7//0c//v/fPv//Rz/+/98+/v9HPwAAAD/+/0c/AAAAP/7/Rz8AAAA//v9HPwAAAD/+/0c/AAAAP/7/Rz8AAAA///9HPwAAED///0c/AAAQP///Rz8AABA///9HPwAAED///0c/AAAQP///Rz8AABA///9HPwAAID///0c/AAAgP///Rz8AACA///9HPwAAID///0c/AAAgP///Rz8AACA/AABIPwIAMD8AAEg/AgAwPwAASD8CADA/AABIPwIAMD8AAEg/AgAwPwAASD8CADA/AABIPwEAQD8AAEg/AQBAPwAASD8BAEA/AABIPwEAQD8AAEg/AQBAPwAASD8BAEA///9HPwMAUD///0c/AwBQP///Rz8DAFA///9HPwMAUD///0c/AwBQP///Rz8DAFA/AABIPwAAYD8AAEg/AABgPwAASD8AAGA/AABIPwAAYD8AAEg/AABgPwAASD8AAGA/AABIPwIAcD8AAEg/AgBwPwAASD8CAHA/AABIPwIAcD8AAEg/AgBwP/7/Pz8AAAA//v8/PwAAAD/+/z8/AAAAP/7/Pz8AAAA//v8/PwAAAD/+/z8/AAAAP///Pz8AABA///8/PwAAED///z8/AAAQP///Pz8AABA///8/PwAAED///z8/AAAQP///Pz8AACA///8/PwAAID///z8/AAAgP///Pz8AACA///8/PwAAID///z8/AAAgP///Pz8AAGA///8/PwAAYD///z8/AABgP///Pz8AAGA///8/PwAAYD///z8/AABgP///Pz8CAHA///8/PwIAcD///z8/AgBwP///Pz8CAHA///8/PwIAcD8BAHw/AACAP0AAgDwAAIA/AQB0PwAAgD8YAEA9AACAPxAAoD0AAIA/AQBsPwAAgD8AAGQ/AACAPwwA4D0AAIA/AABcPwAAgD8EABA+AACAPwAAVD8AAIA/BAAwPgAAgD8AAEw/AACAPwIAUD4AAIA/AABwPgAAgD8AAEQ/AACAP///Oz8AAIA/AACIPgAAgD8AADQ/AACAPwAAmD4AAIA///8rPwAAgD/+/6c+AACAP///Iz8AAIA//v+3PgAAgD/9/8c+AACAP///Gz8AAIA//v8TPwAAgD/9/9c+AACAP/3/5z4AAIA//v8LPwAAgD/+/wM/AACAP/3/9z4AAIA/NAAsAHcAMwB2AH4AGgAWAE0AGwBOAFIAOgAyAH0AOQB8AIQAIAAcAFMAIQBUAFgA8Ao4AIMA7wqCAIoAJgAiAFkAJwBaAF4A9QruCokA9AqIAI8A3gooAGAA3QpfAGYAAwBeBzsABgvzCo4A4wrcCmQA5AplAGwACQAEAD0ACAA8AEAA6QriCmoA6gprAHIADgAKAEEADwBCAEYALQDoCnAALgBxAHgAFAAQAEcAFQBIAEwAegBzAMcAewDIAM8AUABLAKAATwCfAKQAgQB5AM4AgADNANUAVQBRAKUAVgCmAKkAhwB/ANQAhgDTANsAXABXAKsAWwCqAK8AjACFANkAjQDaAOEAYQBdALAAYgCxALUAkQCLAN8AkgDgAOcAaABjALYAaQC3AL0APgBhB5MACAuQAOUAbwBnALwAbgC7AMMAQwA/AJUARACWAJgAdQBtAMIAdADBAMkASQBFAJkASgCaAJ4A6ADiADQB6QA1ATwBvwC6AAwBwAANARMBlABiB+oACgvmADoBxgC+ABIBxQARARkBmwCXAOwAnADtAO8AywDEABcBzAAYAR8BoQCdAPIAogDzAPUA0QDKAB0B0gAeASUBpwCjAPYApwD2APoA1wDQACMB2AAkASoBrACoAPsArQD8AAAB3QDWACgB3gApATABsgCuAAEBswACAQUB4wDcAC4B5AAvATcBuQC0AAcBuAAGAQsB/QD5AE0B/gBOAVABLQEmAXgBLAF3AX8BAwH/AFEBAwFRAVUBMwErAX4BMgF9AYYBCQEEAVcBCAFWAVoBOAExAYMBOQGEAYwBDgEKAVsBDwFcAWABPgE2AYoBPQGJAZEBFAEQAWEBFQFiAWYB6wBkBz8BDAs7AY8BGwEWAWcBHAFoAW4B8ADuAEEB8QBCAUQBIQEaAWwBIgFtAXMB+AD0AEgB9wBHAUoBJwEgAXIBJwFyAXkBagFlAbcBawG4Ab4BQAFnB5QBDwuQAeYBcQFpAb0BcAG8AcQBRQFDAZYBRgGXAZkBdgFvAcMBdQHCAcoBTAFJAZ0BSwGcAZ8BfAF0AckBewHIAdABUgFPAaIBUwGjAaUBggF6Ac8BgQHOAdcBWAFUAagBWAGoAaoBiAGAAdUBhwHUAd0BXgFZAawBXQGrAbABjgGFAdsBjQHaAeMBYwFfAbEBZAGyAbYBkgGLAeABkwHhAegB2AHRASUC2QEmAi4CrgGpAf8BrQH+AQEC3gHWASsC3wEsAjQCtAGvAQUCswEEAgcC5QHcATIC5AExAjkCugG1AQkCuQEIAg0C6QHiATcC6QE3Aj4CwQG7AQ8CwAEOAhUClQFoB+oBEAvnATwCxwG/ARQCxgETAhsCmwGYAe0BmgHsAe8BzQHFARoCzAEZAiECoQGeAfMBoAHyAfUB0wHLASAC0gEfAigCpgGkAfgBpwH5AfsBEws9ApMCHgIWAmsCHQJqAnIC8QHuAUQC8AFDAkYCIwIcAnACJAJxAnkC9gH0AUkC9wFKAkwCKgIiAncCKQJ2An4C/QH6AVAC/AFPAlICMAInAnwCLwJ7AoQCAgIAAlUCAwJWAlgCNQItAoECNgKCAooCCgIGAlsCCwJcAl4COwIzAogCOgKHApACEQIMAmICEAJhAmQCPwI4Ao0CQAKOApUCGAISAmYCFwJlAmwC6wFqB0ECiwKDAtcCjALYAuACXwJdArMCYAK0ArcCkQKJAt4CkgLfAugCaAJjAroCZwK5ArwClgKPAuMClwLkAusCbwJpAr8CbgK+AsUCQgJtB5kCFAuUAukCdQJtAsQCdALDAsoCSAJFApwCRwKbAp8CegJzAsYCegLGAs4CTgJLAqECTQKgAqMCfwJ4AswCgALNAtYCUwJRAqYCVAKnAqkChgJ9AtMChQLSAtwCWgJXAq4CWQKtArECngKaAvICnQLxAvQC0ALHAh4DzwIdAyUDpQKiAvcCpAL2AvkC1QLLAiID1AIhAysDqgKoAvsCqwL8Av8C2gLRAicD2wIoAzEDsAKsAgIDrwIBAwUD4QLZAi0D4gIuAzcDtQKyAgcDtgIIAwsD5wLdAjQD5gIzAz0DuwK4Ag0DuwINAxED7QLlAjoD7AI5A0EDwgK9AhMDwQISAxkDmAJsB+8CFQvqAj8DyALAAhcDyQIYAx8DCQMGA1oDCgNbA18DPAMyA4cDOwOGA48DDwMMA2EDDgNgA2UDQAM4A4wDQAOMA5QDFQMQA2YDFgNnA20D7gJrB0MDEgs+A5EDHAMUA2wDGwNrA3MD8wLwAkUD8wJFA0gDJAMaA3IDIwNxA3kD+AL1AkoD+AJKA00DKgMgA3gDKQN3A34D/QL6Ak8D/gJQA1MDLwMmA3sDMAN8A4QDBAMAA1YDAwNVA1gDNgMsA4EDNQOAA4oDdgNuA8cDdQPGA80DSwNJA54DTAOfA6IDfQN0A8wDfQPMA9MDUgNOA6UDUQOkA6gDggN6A9EDgwPSA9kDVwNUA6oDVwOqA64DiAN/A9UDiQPWA98DXQNZA7ADXAOvA7QDjQOFA9sDjgPcA+UDYgNeA7UDYwO2A7oDkwOLA+IDkgPhA+oDaQNkA7wDaAO7A8ADQgNpB5YDEQuQA+cDbwNqA8EDcAPCA8gDRwNEA5kDRgOYA5wD4wPaAzME5AM0BDwEuAOzAw0EtwMMBBEE6QPgAzoE6AM5BEEEvwO5AxMEvgMSBBkElQNmB+wDDgvmAz4ExQO9AxgExAMXBB8EmwOXA+8DmgPuA/IDygPDAx0EywMeBCUEoAOdA/QDoQP1A/gD0APJAyQEzwMjBCsEpwOjA/sDpgP6A/8D1wPOAykE2AMqBDEErAOpAwEEqwMABAUE3QPUAy8E3gMwBDcEsgOtAwcEsQMGBAsE9gPzA0sE9wNMBFAEJwQgBHoEKAR7BIIE/AP5A1EE/QNSBFYELgQmBIEELQSABIgEAwT+A1gEAgRXBFwENQQsBIYENgSHBI0ECQQEBF4ECARdBGIEOwQyBIwEOwSMBJMEDgQKBGMEDwRkBGgEQAQ4BJAEPwSPBJgEFAQQBGkEFQRqBG4E6wNlB0MEDQs9BJUEHAQWBHAEGwRvBHYE8QPtA0YE8ANFBEkEIQQaBHQEIgR1BHwEZgRhBLoEZQS5BL4ElgSOBOgElwTpBO8EbARnBMAEawS/BMQEQgRjB5oECwuUBOwEcgRtBMUEcwTGBMwERwREBJwESASdBKEEeARxBMoEeQTLBNIETQRKBKIETgSjBKcEfwR3BNEEfgTQBNgEUwRPBKgEVASpBKwEhAR9BNYEhQTXBN4EWgRVBK4EWQStBLIEigSDBNwEiwTdBOQEYARbBLQEXwSzBLgEkgSJBOMEkQTiBOoE1QTNBCgF1AQnBS8FqgSmBP8EqgT/BAMF2gTTBC0F2wQuBTUFsASrBAUFrwQEBQkF4QTZBDQF4AQzBTsFtgSxBAsFtQQKBQ8F5wTfBDoF5gQ5BUEFvAS3BBEFuwQQBRUF7QTlBD8F7gRABUYFwwS9BBcFwgQWBR0FmQRgB/IECQvrBEUFyATBBBsFyQQcBSMFnwSbBPQEngTzBPgEzgTHBCEFzwQiBSkFpASgBPkEpQT6BP4ERAU8BZgFQwWXBZ4FGgUUBW8FGQVuBXUF8ARfB0kFBwtCBZ0FHwUYBXMFIAV0BXsF9gTxBEsF9QRKBU8FJgUeBXoFJQV5BYEF+wT3BFAF/ARRBVUFLAUkBYAFKwV/BYcFAQX9BFcFAAVWBVsFMgUqBYYFMQWFBY0FBgUCBVwFBwVdBWEFOAUwBYwFNwWLBZMFDQUIBWMFDAViBWcFPgU2BZIFPQWRBZkFEgUOBWgFEwVpBW0FiAWEBd0FiQXeBeIFYAVYBbQFXwWzBbsFjgWKBeMFjwXkBegFZgVeBboFZQW5BcEFlAWQBekFlQXqBe4FbAVkBcAFawW/BcYFmwWWBfAFmgXvBfQFcQVqBcUFcAXEBcoFSAVdB6MFBAucBfUFdgVyBcsFdwXMBdAFTQVHBaEFTgWiBakFfAV4BdEFfQXSBdYFUwVMBacFVAWoBa8FgwV+BdgFggXXBdwFWgVSBa4FWQWtBbUFoAVaB/oFAwvzBUsGzQXJBSEGzgUiBiYGpgWfBfgFpQX3BQAG1AXPBSgG0wUnBiwGrAWkBf8FqwX+BQYG2QXVBS0G2gUuBjIGsQWqBQQGsgUFBgwG4AXbBTQG3wUzBjgGtwWwBQoGuAULBhEG5gXhBToG5QU5Bj4GvgW2BRAGvQUPBhYG7AXnBUAG6wU/BkQGwwW8BRUGwwUVBhwG8gXtBUYG8QVFBkkGyAXCBRsGxwUaBiAGDgYHBmAGDgZgBmYGPAY3BpAGOwaPBpQGFAYNBmUGEwZkBmwGQgY9BpYGQQaVBpkGGQYSBmsGGAZqBnIGSAZDBpwGRwabBp8GHwYXBnEGHgZwBngG+QVZB1AGAQtKBqEGIwYdBnYGJAZ3BnwG/QX2BU4G/AVNBlYGKgYlBn4GKQZ9BoIGAwb7BVMGAgZSBlwGLwYrBoMGMAaEBogGCAYBBloGCQZbBmEGNgYxBooGNQaJBo4GeQZ1Bs4GegbPBtMGVQZMBqQGVAajBqwGgAZ7BtUGfwbUBtkGWQZRBqkGWAaoBrIGhQaBBtoGhgbbBt4GXwZXBq8GXgauBrcGjAaHBuAGiwbfBuQGYwZdBrYGYwa2Br0GkgaNBuYGkQblBukGaAZiBrsGaQa8BsMGmAaTBuwGlwbrBu8GbwZnBsIGbgbBBskGnQaaBvEGngbyBvUGcwZtBscGdAbIBs0GTwZXB6YG/wqgBvcG6AbjBjwH5wY7Bz8HwAa4BhIHvwYRBxkH7QbqBkEH7gZCB0UHxQa+BhcHxgYYBx8H8wbwBkcH9AZIB0sHywbEBh0HzAYeByUHpQZUB/wG/Qr2Bk0H0AbKBiMH0QYkBykHqgaiBvkGqwb6BgIH1wbSBisH1gYqBy8HsAanBv4GsQb/BgcH3AbYBjAH3AYwBzQHtAatBgQHtQYFBw0H4gbdBjYH4QY1BzkHugazBgoHuQYJBxMHAAf4Bm8HAQdwB3cHLQcoB6EHLAegB6UHBgf9BnQHBgd0B30HMQcuB6YHMgenB6oHCwcDB3kHDAd6B4MHNwczB6wHOAetB7AHDwcIB38HEAeAB4kHPgc6B7MHPQeyB7YHFQcOB4UHFgeGB48HRAdAB7kHQwe4B7wHGwcUB40HHAeOB5UHSQdGB74HSge/B8IHIQcaB5QHIAeTB5kH+wZTB3IH+gpMB8QHJgciB5oHJwebB58HjAeEB94HiwfdB+cHuge3BxAIuwcRCBQIkgeKB+QHkQfjB+0HwQe9BxcIwAcWCBoImAeQB+wHlwfrB/MHcQdQB8kH+QrDBxwInAeWB/EHnQfyB/cHdgduB8cHdQfGB88HoweeB/kHogf4B/wHewdzB8sHfAfMB9UHqQekB/8HqAf+BwIIggd4B9IHgQfRB9sHrwerBwUIrgcECAgIhwd+B9cHiAfYB+EHtQexBwsItAcKCA4I+wf2B1EI+gdQCFQI1AfKByQI0wcjCC0IAAj9B1UIAQhWCFgI2QfQBykI2gcqCDMIBggDCFsIBwhcCF4I3wfWBy8I4AcwCDkIDAgJCGEIDQhiCGQI5QfcBzQI5gc1CD0IEggPCGUIEwhmCGgI6QfiBzoI6gc7CEMIGQgVCG0IGAhsCHAI7wfoB0AI8AdBCEgIyAdPByEI9wobCHII9QfuB0cI9AdGCEwIzQfFBx4IzgcfCCcIaghnCLwIaQi7CL4IRQg8CJEIRAiQCJgIbwhrCMIIbgjBCMQISghCCJcISQiWCJwIIAhOB3YI9gpxCMcITghLCJ4ITQidCKIIJggdCHQIJQhzCHsIUwhPCKQIUgijCKgILAgiCHkIKwh4CIEIWQhXCKsIWgisCK4IMggoCH8IMQh+CIcIXwhdCLEIXwixCLMINwguCIQIOAiFCI0IYwhgCLYIYwi2CLgIPgg2CIoIPwiLCJMIsAitCAAJrwj/CAQJiQiACNUIiAjUCN0ItAiyCAcJtQgICQoJjgiGCNoIjwjbCOMIuQi3CA0JuggOCRAJlQiMCOEIlAjgCOgIvwi9CBMJwAgUCRYJmwiSCOcImgjmCO4IxQjDCBkJxggaCRwJoAiZCOwIoQjtCPQIdwhRB8wI+ArICB8JpQifCPIIpgjzCPgIfAh1CMkIfQjKCNEIqQinCPkIqgj6CP4Igwh6CM8IggjOCNcIHgkbCXIJHQlxCXQJ9QjvCEQJ9ghFCUoJzQhSByQJ+wogCXcJ/Aj3CEwJ+whLCVAJ0wjLCCIJ0gghCSkJAgn9CFIJAQlRCVYJ2QjQCCcJ2AgmCS8JBgkDCVgJBQlXCVwJ3wjWCC0J3ggsCTUJCwkJCV0JDAleCWIJ5QjcCDMJ5AgyCToJEQkPCWUJEglmCWgJ6gjiCDgJ6wg5CUAJFwkVCWsJGAlsCW4J8QjpCD8J8Ag+CUYJNgkuCYQJNwmFCYwJZAlhCbYJYwm1CboJPAk0CYoJPQmLCZIJaQlnCbsJagm8CcAJQwk7CZEJQgmQCZgJcAltCcQJbwnDCcYJSQlBCZcJSAmWCZ4JdglzCcoJdQnJCcwJTwlHCZ0JTgmcCaQJJQlVB3wJ/Ap4Cc8JVAlNCaMJUwmiCagJKwkjCXoJKgl5CYEJWglVCaoJWQmpCa4JMAkoCX4JMQl/CYcJXwlbCa8JYAmwCbQJpQmfCfQJpgn1CfoJfQlWB9QJ/grQCScKrAmnCfwJqwn7CQAKgwl7CdIJggnRCdkJsQmtCQEKsgkCCgYKiQmACdcJiAnWCd4JtwmzCQcKuAkICgwKjgmGCdwJjwndCeQJvQm5CQ0KvgkOChIKlAmNCeIJlQnjCeoJwgm/CRQKwQkTChgKmwmTCekJmgnoCfAJxwnFCRkKyAkaCh4KoAmZCe4JoQnvCfYJzgnLCSIKzQkhCiQKFgoRCmYKFQplCmoK7AnlCToK7Qk7CkIKHAoXCmwKGwprCnAK8wnrCUEK8glACkgKHwodCnEKIApyCnYK+AnxCUYK+QlHCk4KJgojCngKJQp3CnwK/gn3CUwK/wlNClQK1QlYBywKAAsoCn8KBAr9CVMKAwpSClgK2wnTCSoK2gkpCjAKCgoFCloKCQpZCl4K4QnYCS8K4AkuCjYKEAoLCmAKDwpfCmQK5wnfCTUK5gk0CjwKLQpbB4MKAguACtUKXApXCqwKWwqrCrAKMgorCoEKMwqCCogKYgpdCrIKYQqxCrYKOQoxCocKOAqGCo4KaApjCrgKZwq3CrwKPwo3Co0KPgqMCpQKbgppCr4KbQq9CsIKRAo9CpIKRQqTCpoKdApvCsQKcwrDCsgKSgpDCpgKSwqZCqAKegp1CsoKeQrJCs4KUQpJCp8KUAqeCqYKfQp7Cs8KfgrQCtQKVQpPCqQKVgqlCqoKnQqVChIAnAoRABkAzArHCjEAywowADUAogqbChcAowoYAB8A0QrNCjYA0go3AOsKqQqhCh4AqAodACUA1wrTCu0K1grsCvEKrQqnCiMArgokANkKhQpcBwIABQvYCvIKtAqvCtsKswraCt8KigqECgAAiwoBAAcAugq1CuEKuQrgCuUKkQqJCgYAkAoFAA0AwAq7CucKvwrmCikAlgqPCgsAlwoMABMAxQrBCioAxgorAC8A" + } + ] +}