From 2b521506f3b2a2e0a5c5eb1fb86672a6ce6e1ed7 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 25 Mar 2021 12:14:19 +0100 Subject: [PATCH 01/71] Bump version to 4.15.0-rc1 Change-Id: I522a8c88d636bcc09de2be0b2aa4f47a1c080ac9 Reviewed-by: Eike Ziller --- cmake/QtCreatorIDEBranding.cmake | 6 +++--- qbs/modules/qtc/qtc.qbs | 6 +++--- qtcreator_ide_branding.pri | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index d34d26a90a6..6138756b214 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "4.14.83") # The IDE version. -set(IDE_VERSION_COMPAT "4.14.83") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "4.15.0-beta2") # The IDE display version. +set(IDE_VERSION "4.14.84") # The IDE version. +set(IDE_VERSION_COMPAT "4.14.84") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "4.15.0-rc1") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2021") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index c96195ce756..b9454481f5f 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -3,16 +3,16 @@ import qbs.Environment import qbs.FileInfo Module { - property string qtcreator_display_version: '4.15.0-beta2' + property string qtcreator_display_version: '4.15.0-rc1' property string ide_version_major: '4' property string ide_version_minor: '14' - property string ide_version_release: '83' + property string ide_version_release: '84' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_compat_version_major: '4' property string ide_compat_version_minor: '14' - property string ide_compat_version_release: '83' + property string ide_compat_version_release: '84' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release diff --git a/qtcreator_ide_branding.pri b/qtcreator_ide_branding.pri index 35fa061c2b2..65ab1901905 100644 --- a/qtcreator_ide_branding.pri +++ b/qtcreator_ide_branding.pri @@ -1,6 +1,6 @@ -QTCREATOR_VERSION = 4.14.83 -QTCREATOR_COMPAT_VERSION = 4.14.83 -QTCREATOR_DISPLAY_VERSION = 4.15.0-beta2 +QTCREATOR_VERSION = 4.14.84 +QTCREATOR_COMPAT_VERSION = 4.14.84 +QTCREATOR_DISPLAY_VERSION = 4.15.0-rc1 QTCREATOR_COPYRIGHT_YEAR = 2021 IDE_DISPLAY_NAME = Qt Creator From bc158cdaee89e2bbbbc4087e2904682247ffe84f Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 25 Mar 2021 09:11:31 +0100 Subject: [PATCH 02/71] Help: Avoid extra 1-pixel frame in Help widgets For QTextBrowser and QLiteHtmlWidget based viewers Change-Id: I0e8003b555b15e8eca239c59e657d9cf417f2d58 Reviewed-by: Eike Ziller --- src/plugins/help/litehtmlhelpviewer.cpp | 1 + src/plugins/help/textbrowserhelpviewer.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/plugins/help/litehtmlhelpviewer.cpp b/src/plugins/help/litehtmlhelpviewer.cpp index 44fda661076..c33ebf62ef5 100644 --- a/src/plugins/help/litehtmlhelpviewer.cpp +++ b/src/plugins/help/litehtmlhelpviewer.cpp @@ -66,6 +66,7 @@ LiteHtmlHelpViewer::LiteHtmlHelpViewer(QWidget *parent) , m_viewer(new QLiteHtmlWidget) { m_viewer->setResourceHandler([](const QUrl &url) { return getData(url); }); + m_viewer->setFrameStyle(QFrame::NoFrame); m_viewer->viewport()->installEventFilter(this); connect(m_viewer, &QLiteHtmlWidget::linkClicked, this, &LiteHtmlHelpViewer::setSource); connect(m_viewer, diff --git a/src/plugins/help/textbrowserhelpviewer.cpp b/src/plugins/help/textbrowserhelpviewer.cpp index e5188c1d25b..fd6c36c4d4a 100644 --- a/src/plugins/help/textbrowserhelpviewer.cpp +++ b/src/plugins/help/textbrowserhelpviewer.cpp @@ -267,6 +267,7 @@ TextBrowserHelpWidget::TextBrowserHelpWidget(TextBrowserHelpViewer *parent) : QTextBrowser(parent) , m_parent(parent) { + setFrameShape(QFrame::NoFrame); installEventFilter(this); document()->setDocumentMargin(8); } From b9b4cd9262c8baa571df1c7733870b9d7185cd28 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Thu, 25 Mar 2021 11:52:22 +0100 Subject: [PATCH 03/71] Utils: Compile fix for MinGW Amends 611615f10b2e7d8e37aa7a958b350d71e68dd59e Change-Id: I27e474d98114dcb68b55082b7622eec38b5a0e2d Reviewed-by: Cristian Adam --- src/libs/utils/smallstringview.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/smallstringview.h b/src/libs/utils/smallstringview.h index 208d7034da4..ad6ee1df081 100644 --- a/src/libs/utils/smallstringview.h +++ b/src/libs/utils/smallstringview.h @@ -55,7 +55,7 @@ public: : std::string_view{std::addressof(*begin), static_cast(std::distance(begin, end))} {} -#ifdef Q_OS_WINDOWS +#ifdef Q_CC_MSVC constexpr SmallStringView(const char *const begin, const char *const end) noexcept : std::string_view{begin, static_cast(std::distance(begin, end))} {} From 3f265c37c619ed0d3a984289b243ad1d99117eba Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 25 Mar 2021 13:16:05 +0100 Subject: [PATCH 04/71] VcsBase: Avoid extra 1-pixel frame around SubmitEditorWidget Change-Id: I394bbce04f0feed01f917f81ce075a83776b71a4 Reviewed-by: Orgad Shaneh --- src/plugins/vcsbase/submiteditorwidget.ui | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/vcsbase/submiteditorwidget.ui b/src/plugins/vcsbase/submiteditorwidget.ui index b1ff57522c7..02699ea20ae 100644 --- a/src/plugins/vcsbase/submiteditorwidget.ui +++ b/src/plugins/vcsbase/submiteditorwidget.ui @@ -37,6 +37,9 @@ + + QFrame::NoFrame + true From bd9a61fa27bad34144a654b8363ae0667ddd98e1 Mon Sep 17 00:00:00 2001 From: Michael Winkelmann Date: Tue, 9 Mar 2021 12:07:05 +0100 Subject: [PATCH 05/71] Refactor AnnotationEditors to support different views Change-Id: I67797e911c320d77b8d6a2eba75de69546b30546 Reviewed-by: Leena Miettinen Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/CMakeLists.txt | 4 + .../annotationeditor/annotationcommenttab.cpp | 55 +-- .../annotationeditor/annotationcommenttab.h | 17 +- .../annotationeditor/annotationeditor.cpp | 4 +- .../annotationeditor/annotationeditor.pri | 8 + .../annotationeditor/annotationeditor.qrc | 5 + .../annotationeditordialog.cpp | 199 ++------ .../annotationeditor/annotationeditordialog.h | 52 +- .../annotationeditordialog.ui | 10 +- .../annotationeditor/annotationtableview.cpp | 446 ++++++++++++++++++ .../annotationeditor/annotationtableview.h | 170 +++++++ .../annotationeditor/annotationtabwidget.cpp | 154 ++++++ .../annotationeditor/annotationtabwidget.h | 59 +++ .../annotationeditor/defaultannotations.cpp | 181 +++++++ .../annotationeditor/defaultannotations.h | 80 ++++ .../annotationeditor/defaultannotations.json | 36 ++ .../globalannotationeditor.cpp | 3 +- .../globalannotationeditordialog.cpp | 225 +++------ .../globalannotationeditordialog.h | 40 +- .../globalannotationeditordialog.ui | 35 +- .../formeditor/formeditorannotationicon.cpp | 4 +- src/plugins/qmldesigner/qmldesignerplugin.qbs | 7 + 22 files changed, 1395 insertions(+), 399 deletions(-) create mode 100644 src/plugins/qmldesigner/components/annotationeditor/annotationeditor.qrc create mode 100644 src/plugins/qmldesigner/components/annotationeditor/annotationtableview.cpp create mode 100644 src/plugins/qmldesigner/components/annotationeditor/annotationtableview.h create mode 100644 src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp create mode 100644 src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h create mode 100644 src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp create mode 100644 src/plugins/qmldesigner/components/annotationeditor/defaultannotations.h create mode 100644 src/plugins/qmldesigner/components/annotationeditor/defaultannotations.json diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 34ab71154fb..63d24df6a13 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -637,6 +637,10 @@ extend_qtc_plugin(QmlDesigner globalannotationeditordialog.cpp globalannotationeditordialog.h globalannotationeditordialog.ui annotationeditor.cpp annotationeditor.h globalannotationeditor.cpp globalannotationeditor.h + defaultannotations.cpp defaultannotations.h + annotationtableview.cpp annotationtableview.h + annotationtabwidget.cpp annotationtabwidget.h + annotationeditor.qrc ) extend_qtc_plugin(QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.cpp index b8323bb80d2..9a930747215 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.cpp @@ -24,12 +24,12 @@ ****************************************************************************/ #include "annotationcommenttab.h" +#include "defaultannotations.h" #include "ui_annotationcommenttab.h" #include "richtexteditor/richtexteditor.h" #include -#include "QStringListModel" #include "projectexplorer/session.h" #include "projectexplorer/target.h" @@ -40,7 +40,7 @@ namespace QmlDesigner { AnnotationCommentTab::AnnotationCommentTab(QWidget *parent) : QWidget(parent) - , ui(new Ui::AnnotationCommentTab) + , ui(std::make_unique()) { ui->setupUi(this); @@ -57,33 +57,12 @@ AnnotationCommentTab::AnnotationCommentTab(QWidget *parent) ui->formLayout->setWidget(3, QFormLayout::FieldRole, m_editor); - ui->titleEdit->setModel(new QStringListModel{QStringList{"Description", - "Display Condition", - "helper lines", - "position marker", - "highlight", - "project author", - "project confirmed", - "project developer", - "project distributor", - "project modified", - "project type", - "project version", - "Screen Description", - "Section", - "normalcolor", - "focuscolor", - "selectedcolor", - "pressedcolor"}}); - - connect(ui->titleEdit, &QComboBox::currentTextChanged, - this, &AnnotationCommentTab::commentTitleChanged); + connect(ui->titleEdit, &QComboBox::currentTextChanged, this, [this](QString const &text) { + emit titleChanged(text, this); + }); } -AnnotationCommentTab::~AnnotationCommentTab() -{ - delete ui; -} +AnnotationCommentTab::~AnnotationCommentTab() {} Comment AnnotationCommentTab::currentComment() const { @@ -91,7 +70,10 @@ Comment AnnotationCommentTab::currentComment() const result.setTitle(ui->titleEdit->currentText().trimmed()); result.setAuthor(ui->authorEdit->text().trimmed()); - result.setText(m_editor->richText().trimmed()); + if (defaultAnnotations() && !defaultAnnotations()->isRichText(result)) { + result.setText(m_editor->plainText().trimmed()); + } else + result.setText(m_editor->richText().trimmed()); if (m_comment.sameContent(result)) result.setTimestamp(m_comment.timestamp()); @@ -129,9 +111,15 @@ void AnnotationCommentTab::resetComment() m_comment = currentComment(); } -void AnnotationCommentTab::commentTitleChanged(const QString &text) +DefaultAnnotationsModel *AnnotationCommentTab::defaultAnnotations() const { - emit titleChanged(text, this); + return m_defaults; +} + +void AnnotationCommentTab::setDefaultAnnotations(DefaultAnnotationsModel *defaults) +{ + m_defaults = defaults; + ui->titleEdit->setModel(m_defaults); } QString AnnotationCommentTab::backupFile(const QString &filePath) @@ -153,10 +141,8 @@ QString AnnotationCommentTab::backupFile(const QString &filePath) if (!newFile.exists()) { QFile(oldFile.absoluteFilePath()).copy(newFile.absoluteFilePath()); break; - } else if (compareFileChecksum(oldFile.absoluteFilePath(), - newFile.absoluteFilePath()) == 0) { + } else if (compareFileChecksum(oldFile.absoluteFilePath(), newFile.absoluteFilePath()) == 0) break; - } newFile.setFile(imgDir, newName.arg(i)); } @@ -166,9 +152,8 @@ QString AnnotationCommentTab::backupFile(const QString &filePath) void AnnotationCommentTab::ensureDir(const QDir &dir) { - if (!dir.exists()) { + if (!dir.exists()) dir.mkdir("."); - } } int AnnotationCommentTab::compareFileChecksum(const QString &firstFile, const QString &secondFile) diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.h b/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.h index 6fc647669d3..beb2e4c3774 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.h +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationcommenttab.h @@ -25,10 +25,13 @@ #pragma once -#include - #include "annotation.h" +#include +#include + +#include + QT_BEGIN_NAMESPACE class QDir; QT_END_NAMESPACE @@ -40,6 +43,7 @@ class AnnotationCommentTab; } class RichTextEditor; +class DefaultAnnotationsModel; class AnnotationCommentTab : public QWidget { @@ -57,17 +61,18 @@ public: void resetUI(); void resetComment(); + DefaultAnnotationsModel *defaultAnnotations() const; + void setDefaultAnnotations(DefaultAnnotationsModel *); + signals: void titleChanged(const QString &text, QWidget *widget); -private slots: - void commentTitleChanged(const QString &text); - private: - Ui::AnnotationCommentTab *ui; + std::unique_ptr ui; RichTextEditor *m_editor; Comment m_comment; + QPointer m_defaults; QString backupFile(const QString &filePath); void ensureDir(const QDir &dir); diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp index efdc727d754..cdc2611a765 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp @@ -61,8 +61,8 @@ void AnnotationEditor::showWidget() { m_dialog = new AnnotationEditorDialog(Core::ICore::dialogParent(), m_modelNode.id(), - m_modelNode.customId(), - m_modelNode.annotation()); + m_modelNode.customId()); + m_dialog->setAnnotation(m_modelNode.annotation()); QObject::connect(m_dialog, &AnnotationEditorDialog::acceptedDialog, this, &AnnotationEditor::acceptedClicked); diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri index b1773c2dcf6..d2340be8fb9 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri @@ -3,13 +3,21 @@ HEADERS += $$PWD/annotationeditordialog.h HEADERS += $$PWD/annotationeditor.h HEADERS += $$PWD/globalannotationeditor.h HEADERS += $$PWD/globalannotationeditordialog.h +HEADERS += $$PWD/defaultannotations.h +HEADERS += $$PWD/annotationtableview.h +HEADERS += $$PWD/annotationtabwidget.h SOURCES += $$PWD/annotationcommenttab.cpp SOURCES += $$PWD/annotationeditordialog.cpp SOURCES += $$PWD/annotationeditor.cpp SOURCES += $$PWD/globalannotationeditor.cpp SOURCES += $$PWD/globalannotationeditordialog.cpp +SOURCES += $$PWD/defaultannotations.cpp +SOURCES += $$PWD/annotationtableview.cpp +SOURCES += $$PWD/annotationtabwidget.cpp FORMS += $$PWD/annotationcommenttab.ui FORMS += $$PWD/annotationeditordialog.ui FORMS += $$PWD/globalannotationeditordialog.ui + +RESOURCES += $$PWD/annotationeditor.qrc diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.qrc b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.qrc new file mode 100644 index 00000000000..5ccf08a77fa --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.qrc @@ -0,0 +1,5 @@ + + + defaultannotations.json + + diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp index 29b1dc5a8b8..32695404665 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp @@ -24,80 +24,65 @@ ****************************************************************************/ #include "annotationeditordialog.h" -#include "ui_annotationeditordialog.h" #include "annotation.h" #include "annotationcommenttab.h" +#include "defaultannotations.h" -#include "ui_annotationcommenttab.h" +#include "ui_annotationeditordialog.h" #include #include -#include -#include #include #include +#include +#include namespace QmlDesigner { - -AnnotationEditorDialog::AnnotationEditorDialog(QWidget *parent, const QString &targetId, const QString &customId, const Annotation &annotation) +BasicAnnotationEditorDialog::BasicAnnotationEditorDialog(QWidget *parent) : QDialog(parent) - , ui(new Ui::AnnotationEditorDialog) - , m_customId(customId) - , m_annotation(annotation) + , m_defaults(std::make_unique()) { - ui->setupUi(this); - setWindowFlag(Qt::Tool, true); setModal(true); + loadDefaultAnnotations(DefaultAnnotationsModel::defaultJsonFilePath()); - connect(this, &QDialog::accepted, this, &AnnotationEditorDialog::acceptedClicked); + connect(this, &QDialog::accepted, this, &BasicAnnotationEditorDialog::acceptedClicked); +} - connect(ui->tabWidget, &QTabWidget::currentChanged, this, &AnnotationEditorDialog::tabChanged); +BasicAnnotationEditorDialog::~BasicAnnotationEditorDialog() {} - auto *commentCornerWidget = new QToolBar; +Annotation const &BasicAnnotationEditorDialog::annotation() const +{ + return m_annotation; +} - auto *commentAddAction = new QAction(TimelineIcons::ADD_TIMELINE.icon(), tr("Add Comment")); //timeline icons? - auto *commentRemoveAction = new QAction(TimelineIcons::REMOVE_TIMELINE.icon(), - tr("Remove Comment")); //timeline icons? +void BasicAnnotationEditorDialog::setAnnotation(const Annotation &annotation) +{ + m_annotation = annotation; + fillFields(); +} - connect(commentAddAction, &QAction::triggered, this, [this]() { - addComment(Comment()); - }); +void BasicAnnotationEditorDialog::loadDefaultAnnotations(QString const &filename) +{ + m_defaults->loadFromFile(filename); +} - connect(commentRemoveAction, &QAction::triggered, this, [this]() { +DefaultAnnotationsModel *BasicAnnotationEditorDialog::defaultAnnotations() const +{ + return m_defaults.get(); +} - if (ui->tabWidget->count() == 0) { //it is not even supposed to happen but lets be sure - QTC_ASSERT(true, return); - return; - } - - int currentIndex = ui->tabWidget->currentIndex(); - QString currentTitle = ui->tabWidget->tabText(currentIndex); - - QMessageBox *deleteDialog = new QMessageBox(this); - deleteDialog->setWindowTitle(currentTitle); - deleteDialog->setText(tr("Delete this comment?")); - deleteDialog->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - deleteDialog->setDefaultButton(QMessageBox::Yes); - - int result = deleteDialog->exec(); - - if (result == QMessageBox::Yes) { - removeComment(currentIndex); - } - - if (ui->tabWidget->count() == 0) //lets be sure that tabWidget is never empty - addComment(Comment()); - }); - - commentCornerWidget->addAction(commentAddAction); - commentCornerWidget->addAction(commentRemoveAction); - - ui->tabWidget->setCornerWidget(commentCornerWidget, Qt::TopRightCorner); +AnnotationEditorDialog::AnnotationEditorDialog(QWidget *parent, + const QString &targetId, + const QString &customId) + : BasicAnnotationEditorDialog(parent) + , ui(new Ui::AnnotationEditorDialog) + , m_customId(customId) +{ + ui->setupUi(this); ui->targetIdEdit->setText(targetId); - fillFields(); setWindowTitle(annotationEditorTitle); } @@ -106,17 +91,6 @@ AnnotationEditorDialog::~AnnotationEditorDialog() delete ui; } -void AnnotationEditorDialog::setAnnotation(const Annotation &annotation) -{ - m_annotation = annotation; - fillFields(); -} - -Annotation AnnotationEditorDialog::annotation() const -{ - return m_annotation; -} - void AnnotationEditorDialog::setCustomId(const QString &customId) { m_customId = customId; @@ -130,117 +104,34 @@ QString AnnotationEditorDialog::customId() const void AnnotationEditorDialog::acceptedClicked() { - m_customId = ui->customIdEdit->text(); - - Annotation annotation; - - annotation.removeComments(); - - for (int i = 0; i < ui->tabWidget->count(); i++) { - AnnotationCommentTab* tab = reinterpret_cast(ui->tabWidget->widget(i)); - if (!tab) - continue; - - Comment comment = tab->currentComment(); - - if (!comment.isEmpty()) - annotation.addComment(comment); - } - - m_annotation = annotation; - + updateAnnotation(); emit AnnotationEditorDialog::acceptedDialog(); } -void AnnotationEditorDialog::commentTitleChanged(const QString &text, QWidget *tab) -{ - int tabIndex = ui->tabWidget->indexOf(tab); - if (tabIndex >= 0) - ui->tabWidget->setTabText(tabIndex, text); - - if (text.isEmpty()) - ui->tabWidget->setTabText(tabIndex, - (defaultTabName + " " + QString::number(tabIndex+1))); -} - void AnnotationEditorDialog::fillFields() { ui->customIdEdit->setText(m_customId); - setupComments(); + ui->tabWidget->setupComments(m_annotation.comments()); } -void AnnotationEditorDialog::setupComments() +void AnnotationEditorDialog::updateAnnotation() { - ui->tabWidget->setUpdatesEnabled(false); - - deleteAllTabs(); - - const QVector comments = m_annotation.comments(); - - if (comments.isEmpty()) - addComment(Comment()); - - for (const Comment &comment : comments) { - addCommentTab(comment); - } - - ui->tabWidget->setUpdatesEnabled(true); + m_customId = ui->customIdEdit->text(); + Annotation annotation; + annotation.setComments(ui->tabWidget->fetchComments()); + m_annotation = annotation; } void AnnotationEditorDialog::addComment(const Comment &comment) { m_annotation.addComment(comment); - addCommentTab(comment); + ui->tabWidget->addCommentTab(comment); } void AnnotationEditorDialog::removeComment(int index) { - if ((m_annotation.commentsSize() > index) && (index >= 0)) { - m_annotation.removeComment(index); - removeCommentTab(index); - } -} - -void AnnotationEditorDialog::addCommentTab(const Comment &comment) -{ - auto commentTab = new AnnotationCommentTab(); - commentTab->setComment(comment); - - QString tabTitle(comment.title()); - int tabIndex = ui->tabWidget->addTab(commentTab, tabTitle); - ui->tabWidget->setCurrentIndex(tabIndex); - - if (tabTitle.isEmpty()) { - const QString appendix = ((tabIndex > 0) ? QString::number(tabIndex+1) : ""); - - tabTitle = QString("%1 %2").arg(defaultTabName).arg(appendix); - - ui->tabWidget->setTabText(tabIndex, tabTitle); - } - - connect(commentTab, &AnnotationCommentTab::titleChanged, - this, &AnnotationEditorDialog::commentTitleChanged); -} - -void AnnotationEditorDialog::removeCommentTab(int index) -{ - if ((ui->tabWidget->count() > index) && (index >= 0)) { - ui->tabWidget->removeTab(index); - } -} - -void AnnotationEditorDialog::deleteAllTabs() -{ - while (ui->tabWidget->count() > 0) { - QWidget *w = ui->tabWidget->widget(0); - ui->tabWidget->removeTab(0); - delete w; - } -} - -void AnnotationEditorDialog::tabChanged(int index) -{ - (void) index; + m_annotation.removeComment(index); + ui->tabWidget->removeTab(index); } } //namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.h b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.h index bc304c9ddd3..856eb9bb605 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.h +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.h @@ -34,46 +34,62 @@ namespace QmlDesigner { namespace Ui { class AnnotationEditorDialog; } +class DefaultAnnotationsModel; -class AnnotationEditorDialog : public QDialog +class BasicAnnotationEditorDialog : public QDialog { Q_OBJECT - public: - explicit AnnotationEditorDialog(QWidget *parent, const QString &targetId, const QString &customId, const Annotation &annotation); - ~AnnotationEditorDialog(); + explicit BasicAnnotationEditorDialog(QWidget *parent); + ~BasicAnnotationEditorDialog(); + Annotation const &annotation() const; void setAnnotation(const Annotation &annotation); - Annotation annotation() const; - void setCustomId(const QString &customId); - QString customId() const; + void loadDefaultAnnotations(QString const &filename); + + DefaultAnnotationsModel *defaultAnnotations() const; signals: void acceptedDialog(); //use instead of QDialog::accepted +protected: + virtual void fillFields() = 0; + virtual void acceptedClicked() = 0; + + Annotation m_annotation; + std::unique_ptr m_defaults; +}; + +class AnnotationEditorDialog : public BasicAnnotationEditorDialog +{ + Q_OBJECT + +public: + explicit AnnotationEditorDialog(QWidget *parent, + const QString &targetId, + const QString &customId); + ~AnnotationEditorDialog(); + + void setCustomId(const QString &customId); + QString customId() const; + private slots: - void acceptedClicked(); - void tabChanged(int index); - void commentTitleChanged(const QString &text, QWidget *tab); + void acceptedClicked() override; private: - void fillFields(); - void setupComments(); + void fillFields() override; + void updateAnnotation(); + void addComment(const Comment &comment); void removeComment(int index); - void addCommentTab(const Comment &comment); - void removeCommentTab(int index); - void deleteAllTabs(); - private: const QString annotationEditorTitle = {tr("Annotation Editor")}; - const QString defaultTabName = {tr("Annotation")}; + Ui::AnnotationEditorDialog *ui; QString m_customId; - Annotation m_annotation; }; } //namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.ui b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.ui index 92dc5c71d50..5dd747a7dc6 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.ui +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.ui @@ -56,7 +56,7 @@ - + 0 @@ -90,6 +90,14 @@ + + + AnnotationTabWidget + QTabWidget +
annotationtabwidget.h
+ 1 +
+
targetIdEdit customIdEdit diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtableview.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationtableview.cpp new file mode 100644 index 00000000000..8e289a344c9 --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtableview.cpp @@ -0,0 +1,446 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "annotationtableview.h" + +#include "defaultannotations.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace QmlDesigner { + +struct ColumnId +{ + enum Column { + Title = 0, + Author = 1, + Value = 2, + }; +}; + +CommentDelegate::CommentDelegate(QObject *parent) + : QItemDelegate(parent) + , m_completer(std::make_unique()) +{} + +CommentDelegate::~CommentDelegate() {} + +DefaultAnnotationsModel *CommentDelegate::defaultAnnotations() const +{ + return m_defaults; +} + +void CommentDelegate::setDefaultAnnotations(DefaultAnnotationsModel *defaults) +{ + m_defaults = defaults; + m_completer->setModel(m_defaults); +} + +QCompleter *CommentDelegate::completer() const +{ + return m_completer.get(); +} + +void CommentDelegate::updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + editor->setGeometry(option.rect); +} + +Comment CommentDelegate::comment(QModelIndex const &index) +{ + auto *model = index.model(); + return model->data(model->index(index.row(), ColumnId::Title), CommentRole).value(); +} + +CommentTitleDelegate::CommentTitleDelegate(QObject *parent) + : CommentDelegate(parent) +{} + +CommentTitleDelegate::~CommentTitleDelegate() {} + +QWidget *CommentTitleDelegate::createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + auto *editor = new QComboBox(parent); + editor->setEditable(true); + editor->setCompleter(completer()); + editor->setFrame(false); + editor->setFocusPolicy(Qt::StrongFocus); + + return editor; +} + +void CommentTitleDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const +{ + QString text = index.model()->data(index, Qt::DisplayRole).toString(); + auto *comboBox = qobject_cast(editor); + comboBox->setModel(defaultAnnotations()); + comboBox->setCurrentText(text); +} + +void CommentTitleDelegate::setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const +{ + auto *comboBox = qobject_cast(editor); + auto oldText = model->data(index, Qt::EditRole).toString(); + auto newText = comboBox->currentText(); + + if (oldText != newText) { + model->setData(index, comboBox->currentText(), Qt::EditRole); + auto comment = model->data(index, CommentRole).value(); + comment.setTitle(newText); + model->setData(index, QVariant::fromValue(comment), CommentRole); + + // Set default value to data item + auto colIdx = model->index(index.row(), ColumnId::Value); + if (defaultAnnotations()->hasDefault(comment)) + model->setData(colIdx, defaultAnnotations()->defaultValue(comment), Qt::DisplayRole); + else + // Reset to rich text when there is no default item + model->setData(colIdx, + QVariant::fromValue({comment.text()}), + Qt::DisplayRole); + } +} + +CommentValueDelegate::CommentValueDelegate(QObject *parent) + : CommentDelegate(parent) +{} + +CommentValueDelegate::~CommentValueDelegate() {} + +void CommentValueDelegate::paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + auto data = index.model()->data(index, Qt::DisplayRole); + if (data.userType() == qMetaTypeId()) + drawDisplay(painter, option, option.rect, data.value().plainText()); + else if (data.userType() == QMetaType::QColor) + painter->fillRect(option.rect, data.value()); + else + QItemDelegate::paint(painter, option, index); +} + +void CommentValueDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const +{ + auto data = index.model()->data(index, Qt::DisplayRole); + if (data.userType() == qMetaTypeId()) { + auto richText = data.value(); + auto *e = qobject_cast(editor); + e->setText(richText.plainText()); + e->setupSignal(index.row(), comment(index).title()); + connect(e, + &RichTextCellEditor::richTextClicked, + this, + &CommentValueDelegate::richTextEditorRequested, + Qt::UniqueConnection); + } else if (data.userType() == QMetaType::QString) { + auto *e = qobject_cast(editor); + e->setText(data.toString()); + } else if (data.userType() == QMetaType::QColor) { + auto *e = qobject_cast(editor); + e->setColor(data.value()); + } else + QItemDelegate::setEditorData(editor, index); +} + +void CommentValueDelegate::setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const +{ + auto data = model->data(index, Qt::EditRole); + if (data.userType() == qMetaTypeId()) + return; + else if (data.userType() == QMetaType::QColor) + model->setData(index, + qobject_cast(editor)->color(), + Qt::DisplayRole); + else if (data.userType() == QMetaType::QString) + model->setData(index, qobject_cast(editor)->text(), Qt::DisplayRole); + else + QItemDelegate::setModelData(editor, model, index); +} + +RichTextCellEditor::RichTextCellEditor(QWidget *parent) + : QLabel(parent) +{} + +RichTextCellEditor::~RichTextCellEditor() {} + +RichTextProxy RichTextCellEditor::richText() const +{ + return m_richText; +} + +void RichTextCellEditor::setRichText(const RichTextProxy &richText) +{ + if (richText.text == m_richText.text) + return; + + m_richText = richText; + setText(richText.plainText()); + + emit richTextChanged(); +} + +void RichTextCellEditor::setupSignal(int index, const QString &commentTitle) +{ + if (m_connection) + disconnect(m_connection); + + m_connection = connect(this, &RichTextCellEditor::clicked, this, [=]() { + emit richTextClicked(index, commentTitle); + }); +} + +void RichTextCellEditor::mouseReleaseEvent(QMouseEvent *) +{ + emit clicked(); +} + +AnnotationTableView::AnnotationTableView(QWidget *parent) + : QTableView(parent) + , m_model(std::make_unique()) + , m_editorFactory(std::make_unique()) +{ + setSelectionBehavior(QAbstractItemView::SelectRows); + setSelectionMode(QAbstractItemView::ContiguousSelection); + + setModel(m_model.get()); + connect(m_model.get(), &QStandardItemModel::itemChanged, this, [this](QStandardItem *item) { + if (item->isCheckable()) + m_model->setData(item->index(), item->checkState() == Qt::Checked); + + if (this->m_modelUpdating) + return; + + auto *valueItem = m_model->item(item->row(), ColumnId::Value); + + // When comment title was edited, make value item editable + if (item->column() == ColumnId::Title && valueItem) { + valueItem->setEditable(!item->text().isEmpty()); + valueItem->setCheckable(valueItem->data(Qt::DisplayRole).userType() == QMetaType::Bool); + } + + m_modelUpdating = true; + if (!rowIsEmpty(m_model->rowCount() - 1)) + addEmptyRow(); + m_modelUpdating = false; + }); + + horizontalHeader()->setStretchLastSection(true); + horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); + + m_editorFactory->registerEditor(qMetaTypeId(), + new QItemEditorCreator("richText")); + m_editorFactory->registerEditor(QMetaType::QColor, + new QItemEditorCreator("color")); + + m_valueDelegate.setItemEditorFactory(m_editorFactory.get()); + connect(&m_valueDelegate, + &CommentValueDelegate::richTextEditorRequested, + this, + &AnnotationTableView::richTextEditorRequested); + + verticalHeader()->hide(); +} + +AnnotationTableView::~AnnotationTableView() {} + +QVector AnnotationTableView::fetchComments() const +{ + QVector comments; + + for (int i = 0; i < m_model->rowCount(); ++i) { + Comment comment = fetchComment(i); + if (!comment.isEmpty()) + comments.push_back(comment); + } + + return comments; +} + +Comment AnnotationTableView::fetchComment(int row) const +{ + auto *item = m_model->item(row, ColumnId::Title); + if (item->text().isEmpty()) + return {}; + + Comment comment = item->data().value(); + comment.setTitle(item->text()); + comment.setAuthor(m_model->item(row, ColumnId::Author)->text()); + comment.setText(dataToCommentText(m_model->item(row, ColumnId::Value)->data(Qt::DisplayRole))); + return comment; +} + +void AnnotationTableView::setupComments(QVector const &comments) +{ + m_model->clear(); + m_modelUpdating = true; + m_model->setColumnCount(3); + m_model->setHeaderData(ColumnId::Title, Qt::Horizontal, tr("Title")); + m_model->setHeaderData(ColumnId::Author, Qt::Horizontal, tr("Author")); + m_model->setHeaderData(ColumnId::Value, Qt::Horizontal, tr("Value")); + setItemDelegateForColumn(ColumnId::Title, &m_titleDelegate); + setItemDelegateForColumn(ColumnId::Value, &m_valueDelegate); + + for (auto &comment : comments) { + if (comment.isEmpty()) + continue; + + addEmptyRow(); + changeRow(m_model->rowCount() - 1, comment); + } + + addEmptyRow(); + m_modelUpdating = false; +} + +DefaultAnnotationsModel *AnnotationTableView::defaultAnnotations() const +{ + return m_defaults; +} + +void AnnotationTableView::setDefaultAnnotations(DefaultAnnotationsModel *defaults) +{ + m_defaults = defaults; + m_titleDelegate.setDefaultAnnotations(defaults); + m_valueDelegate.setDefaultAnnotations(defaults); +} + +void AnnotationTableView::changeRow(int index, Comment const &comment) +{ + auto *titleItem = m_model->item(index, ColumnId::Title); + auto *authorItem = m_model->item(index, ColumnId::Author); + auto *textItem = m_model->item(index, ColumnId::Value); + + titleItem->setText(comment.title()); + titleItem->setData(QVariant::fromValue(comment)); + + authorItem->setText(comment.author()); + + QVariant data = commentToData(comment, + m_defaults ? m_defaults->defaultType(comment) + : QMetaType::UnknownType); + + textItem->setEditable(data.isValid()); + textItem->setCheckable(data.userType() == QMetaType::Bool); + textItem->setData(data, Qt::DisplayRole); +} + +void AnnotationTableView::removeRow(int index) +{ + m_model->removeRow(index); +} + +void AnnotationTableView::removeSelectedRows() +{ + const auto selRows = selectionModel()->selectedRows(); + for (auto it = selRows.rbegin(); it != selRows.rend(); ++it) + removeRow(it->row()); +} + +void AnnotationTableView::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Delete) + removeSelectedRows(); +} + +void AnnotationTableView::addEmptyRow() +{ + auto *valueItem = new QStandardItem; + valueItem->setEditable(false); + m_model->appendRow({new QStandardItem, new QStandardItem, valueItem}); +} + +bool AnnotationTableView::rowIsEmpty(int row) const +{ + auto itemText = [&](int col) { + return m_model->item(row, col) ? m_model->item(row, col)->text() : QString(); + }; + + return QString(itemText(0) + itemText(1) + itemText(2)).isEmpty(); +} + +QString AnnotationTableView::dataToCommentText(QVariant const &data) +{ + auto type = data.userType(); + if (type == qMetaTypeId()) + return data.value().text; + + switch (type) { + case QMetaType::QColor: + return data.value().name(); + case QMetaType::Bool: + return data.toBool() ? QStringLiteral("true") : QStringLiteral("false"); + case QMetaType::QString: + return data.toString(); + } + + return {}; +} + +QVariant AnnotationTableView::commentToData(Comment const& comment, QMetaType::Type type) +{ + switch (type) { + case QMetaType::Bool: + return QVariant::fromValue(comment.deescapedText().toLower().trimmed() == "true"); + case QMetaType::QColor: + return QVariant::fromValue(QColor(comment.deescapedText().toLower().trimmed())); + break; + case QMetaType::QString: + return QVariant::fromValue(comment.text()); + break; + default: + if (type == qMetaTypeId() || type == QMetaType::UnknownType) + return QVariant::fromValue({comment.text()}); + } + return {}; +} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtableview.h b/src/plugins/qmldesigner/components/annotationeditor/annotationtableview.h new file mode 100644 index 00000000000..6bc6e96c77b --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtableview.h @@ -0,0 +1,170 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include +#include +#include +#include + +#include + +#include "annotation.h" +#include "defaultannotations.h" + +QT_BEGIN_NAMESPACE +class QStandardItemModel; +class QCompleter; +QT_END_NAMESPACE + +namespace QmlDesigner { +class CommentDelegate : public QItemDelegate +{ + Q_OBJECT +public: + enum Role { CommentRole = Qt::UserRole + 1 }; + + CommentDelegate(QObject *parent = nullptr); + ~CommentDelegate() override; + + DefaultAnnotationsModel *defaultAnnotations() const; + void setDefaultAnnotations(DefaultAnnotationsModel *); + + QCompleter *completer() const; + + void updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + + static Comment comment(QModelIndex const &); + +private: + std::unique_ptr m_completer; + QPointer m_defaults; +}; + +class CommentTitleDelegate : public CommentDelegate +{ + Q_OBJECT +public: + CommentTitleDelegate(QObject *parent = nullptr); + ~CommentTitleDelegate() override; + + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + + void setEditorData(QWidget *editor, const QModelIndex &index) const override; + void setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const override; +signals: + void commentChanged(int row, Comment const &); +}; + +class CommentValueDelegate : public CommentDelegate +{ + Q_OBJECT +public: + CommentValueDelegate(QObject *parent = nullptr); + ~CommentValueDelegate(); + + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + + void setEditorData(QWidget *editor, const QModelIndex &index) const override; + void setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const override; +signals: + void richTextEditorRequested(int index, QString const &richText); +}; + +class RichTextCellEditor : public QLabel +{ + Q_OBJECT + Q_PROPERTY(QmlDesigner::RichTextProxy richText READ richText WRITE setRichText NOTIFY + richTextChanged USER true) +public: + RichTextCellEditor(QWidget *parent = nullptr); + ~RichTextCellEditor() override; + + RichTextProxy richText() const; + void setRichText(RichTextProxy const &); + + void setupSignal(int row, QString const &commentTitle); + +signals: + void clicked(); + void richTextChanged(); + void richTextClicked(int index, QString const &text); + +protected: + void mouseReleaseEvent(QMouseEvent *) override; + +private: + RichTextProxy m_richText; + QMetaObject::Connection m_connection; +}; + +class AnnotationTableView : public QTableView +{ + Q_OBJECT +public: + AnnotationTableView(QWidget *parent = nullptr); + ~AnnotationTableView(); + + QVector fetchComments() const; + Comment fetchComment(int row) const; + void setupComments(QVector const &comments); + + DefaultAnnotationsModel *defaultAnnotations() const; + void setDefaultAnnotations(DefaultAnnotationsModel *); + + void changeRow(int index, Comment const &comment); + void removeRow(int index); + void removeSelectedRows(); + +signals: + void richTextEditorRequested(int index, QString const &commentTitle); + +protected: + void keyPressEvent(QKeyEvent *) override; + +private: + void addEmptyRow(); + bool rowIsEmpty(int row) const; + static QString dataToCommentText(QVariant const &); + static QVariant commentToData(Comment const&, QMetaType::Type type); + + CommentTitleDelegate m_titleDelegate; + CommentValueDelegate m_valueDelegate; + + bool m_modelUpdating = false; + std::unique_ptr m_model; + std::unique_ptr m_editorFactory; + QPointer m_defaults; +}; +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp new file mode 100644 index 00000000000..8a3339acc4f --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "annotationtabwidget.h" + +#include "annotationcommenttab.h" + +#include + +#include +#include +#include + +namespace QmlDesigner { +AnnotationTabWidget::AnnotationTabWidget(QWidget *parent) + : QTabWidget(parent) +{ + auto *commentCornerWidget = new QToolBar; + + auto *commentAddAction = new QAction(TimelineIcons::ADD_TIMELINE.icon(), + tr("Add Comment")); //timeline icons? + auto *commentRemoveAction = new QAction(TimelineIcons::REMOVE_TIMELINE.icon(), + tr("Remove Comment")); //timeline icons? + connect(commentAddAction, &QAction::triggered, this, [this]() { addCommentTab(); }); + + connect(commentRemoveAction, &QAction::triggered, this, [this]() { + int currentIndex = this->currentIndex(); + QString currentTitle = tabText(currentIndex); + if (QMessageBox::question(this, + tr("Global Annotation"), + tr("Do you want to delete this annotation?")) + == QMessageBox::Yes) { + removeTab(currentIndex); + if (count() == 0) //lets be sure that tabWidget is never empty + addCommentTab(); + } + }); + + commentCornerWidget->addAction(commentAddAction); + commentCornerWidget->addAction(commentRemoveAction); + setCornerWidget(commentCornerWidget, Qt::TopRightCorner); +} + +AnnotationTabWidget::~AnnotationTabWidget() {} + +QVector AnnotationTabWidget::fetchComments() const +{ + QVector comments; + for (int i = 0; i < count(); i++) { + auto *tab = qobject_cast(widget(i)); + if (!tab) + continue; + + Comment comment = tab->currentComment(); + + if (!comment.isEmpty()) + comments.push_back(comment); + } + + return comments; +} + +void AnnotationTabWidget::setupComments(QVector const &comments) +{ + setUpdatesEnabled(false); + + deleteAllTabs(); + if (comments.isEmpty()) + addCommentTab(); + + for (const Comment &comment : comments) + addCommentTab(comment); + + setUpdatesEnabled(true); +} + +DefaultAnnotationsModel *AnnotationTabWidget::defaultAnnotations() const +{ + return m_defaults; +} + +void AnnotationTabWidget::setDefaultAnnotations(DefaultAnnotationsModel *defaults) +{ + m_defaults = defaults; + for (int i = 0; i < count(); i++) { + // The tab widget might be contain regular QTabs initially, hence we need this qobject_cast test + if (auto *tab = qobject_cast(widget(i))) + tab->setDefaultAnnotations(defaults); + } +} + +void AnnotationTabWidget::onCommentTitleChanged(const QString &text, QWidget *tab) +{ + int tabIndex = indexOf(tab); + if (tabIndex >= 0) + setTabText(tabIndex, text); + + if (text.isEmpty()) + setTabText(tabIndex, defaultTabName + " " + QString::number(tabIndex + 1)); +} + +void AnnotationTabWidget::addCommentTab(const Comment &comment) +{ + auto *commentTab = new AnnotationCommentTab(); + commentTab->setDefaultAnnotations(m_defaults); + commentTab->setComment(comment); + + QString tabTitle(comment.title()); + int tabIndex = addTab(commentTab, tabTitle); + setCurrentIndex(tabIndex); + + if (tabTitle.isEmpty()) { + const QString appendix = ((tabIndex > 0) ? QString::number(tabIndex + 1) : ""); + tabTitle = QString("%1 %2").arg(defaultTabName).arg(appendix); + setTabText(tabIndex, tabTitle); + } + connect(commentTab, + &AnnotationCommentTab::titleChanged, + this, + &AnnotationTabWidget::onCommentTitleChanged); +} + +void AnnotationTabWidget::deleteAllTabs() +{ + while (count() > 0) { + QWidget *w = widget(0); + removeTab(0); + delete w; + } +} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h new file mode 100644 index 00000000000..962a36e45e8 --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include + +#include "annotation.h" +#include "defaultannotations.h" + +namespace QmlDesigner { +class AnnotationCommentTab; + +class AnnotationTabWidget : public QTabWidget +{ + Q_OBJECT +public: + AnnotationTabWidget(QWidget *parent = nullptr); + ~AnnotationTabWidget(); + + QVector fetchComments() const; + void setupComments(QVector const &comments); + + DefaultAnnotationsModel *defaultAnnotations() const; + void setDefaultAnnotations(DefaultAnnotationsModel *); + +public slots: + void addCommentTab(const Comment &comment = {}); + void deleteAllTabs(); + +private slots: + void onCommentTitleChanged(const QString &text, QWidget *tab); + +private: + const QString defaultTabName = {tr("Annotation")}; + + QPointer m_defaults; +}; +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp new file mode 100644 index 00000000000..b5e0d548401 --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "defaultannotations.h" + +#include +#include +#include +#include +#include + +namespace QmlDesigner { +DefaultAnnotationsModel::DefaultAnnotationsModel(QObject *parent) + : QAbstractListModel(parent) +{ + qRegisterMetaType(); +} + +DefaultAnnotationsModel::~DefaultAnnotationsModel() {} + +int DefaultAnnotationsModel::rowCount(const QModelIndex &) const +{ + return static_cast(m_defaults.size()); +} + +QVariant DefaultAnnotationsModel::data(const QModelIndex &index, int role) const +{ + const auto row = static_cast(index.row()); + if (!index.isValid() || m_defaults.size() < row) + return {}; + + auto &item = m_defaults[row]; + + switch (role) { + case Qt::DisplayRole: + case Qt::EditRole: + case Name: + return item.first; + case Type: + return item.second.typeName(); + case Default: + return item.second; + } + + return {}; +} + +QVariantMap DefaultAnnotationsModel::fetchData() const +{ + return m_defaultMap; +} + +bool DefaultAnnotationsModel::hasDefault(const Comment &comment) const +{ + return m_defaultMap.count(comment.title().toLower()); +} + +QMetaType::Type DefaultAnnotationsModel::defaultType(const Comment &comment) const +{ + return hasDefault(comment) ? QMetaType::Type(m_defaultMap[comment.title().toLower()].userType()) + : QMetaType::UnknownType; +} + +QVariant DefaultAnnotationsModel::defaultValue(const Comment &comment) const +{ + return hasDefault(comment) ? m_defaultMap.value(comment.title().toLower()) : QVariant(); +} + +bool DefaultAnnotationsModel::isRichText(const Comment &comment) const +{ + const auto type = defaultType(comment); + return type == QMetaType::UnknownType || type == qMetaTypeId(); +} + +void DefaultAnnotationsModel::loadFromFile(QString const &filename) +{ + QFile file(filename); + if (file.open(QFile::ReadOnly)) { + loadFromFile(&file); + } +} + +void DefaultAnnotationsModel::loadFromFile(QIODevice *io) +{ + QJsonParseError error; + auto doc = QJsonDocument::fromJson(io->readAll(), &error); + + if (error.error == QJsonParseError::NoError) + loadFromJson(doc); + else { + } // TODO: Error handling +} + +void DefaultAnnotationsModel::loadFromJson(const QJsonDocument &doc) +{ + beginResetModel(); + m_defaultMap = asVariantMapFromJson(doc); + m_defaults.clear(); + m_defaults.reserve(m_defaultMap.size()); + + for (auto &key : m_defaultMap.keys()) + m_defaults.emplace_back(key, m_defaultMap.value(key)); + + endResetModel(); +} + +QVariantMap DefaultAnnotationsModel::asVariantMapFromJson(const QJsonDocument &doc) +{ + QVariantMap map; + QJsonObject obj = doc.object(); + for (auto key : obj.keys()) { + key = key.toLower(); + auto val = obj[key]; + + switch (val.type()) { + case QJsonValue::Double: + map[key] = double{0.0}; + break; + case QJsonValue::String: + map[key] = QString{}; + break; + case QJsonValue::Bool: + map[key] = false; + break; + case QJsonValue::Object: { + auto o = val.toObject(); + auto type = o["type"].toString().toLower(); + auto val = o["value"].toVariant(); + + if (type == QStringLiteral("richtext")) + map[key] = QVariant::fromValue(RichTextProxy{val.toString()}); + else if (type == QStringLiteral("string")) + map[key] = QVariant::fromValue(val.toString()); + else if (type == QStringLiteral("bool")) + map[key] = QVariant::fromValue(val.toBool()); + else if (type == QStringLiteral("double")) + map[key] = QVariant::fromValue(val.toDouble()); + else if (type == QStringLiteral("color")) + map[key] = QVariant::fromValue(QColor(val.toString())); + } + } + } + + return map; +} + +QString DefaultAnnotationsModel::defaultJsonFilePath() +{ + return QStringLiteral(":/annotationeditor/defaultannotations.json"); +} + +QString RichTextProxy::plainText() const +{ + QString plainText(text); + plainText.remove(QRegularExpression("<.*?>")); + return plainText.mid(plainText.indexOf("}") + 1); +} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.h b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.h new file mode 100644 index 00000000000..3553720773d --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ +#pragma once + +#include "annotation.h" + +#include + +QT_BEGIN_NAMESPACE +class QJsonDocument; +QT_END_NAMESPACE + +namespace QmlDesigner { + +// We need this proxy type to distinguish between a 'normal' QString +// and a 'richtext' string when they are stored in a QVariant +struct RichTextProxy +{ + QString text; + + QString plainText() const; +}; + +class DefaultAnnotationsModel : public QAbstractListModel +{ + Q_OBJECT +public: + enum Role { Name = Qt::UserRole + 1, Type, Default }; + Q_ENUM(Role) + + DefaultAnnotationsModel(QObject *parent = nullptr); + ~DefaultAnnotationsModel() override; + + int rowCount(const QModelIndex & = {}) const override; + QVariant data(const QModelIndex &, int role) const override; + + QVariantMap fetchData() const; + + bool hasDefault(const Comment &comment) const; + QMetaType::Type defaultType(const Comment &comment) const; + QVariant defaultValue(const Comment &comment) const; + bool isRichText(const Comment &comment) const; + + void loadFromFile(QString const &); + void loadFromFile(QIODevice *); + void loadFromJson(const QJsonDocument &); + + static QVariantMap asVariantMapFromJson(const QJsonDocument &); + static QString defaultJsonFilePath(); + +private: + std::vector> m_defaults; + QVariantMap m_defaultMap; +}; + +} // namespace QmlDesigner + +Q_DECLARE_METATYPE(QmlDesigner::RichTextProxy); diff --git a/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.json b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.json new file mode 100644 index 00000000000..aaa060a5558 --- /dev/null +++ b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.json @@ -0,0 +1,36 @@ +{ + "description" : "", + "display condition" : "", + "helper lines" : true, + "position marker" : true, + "highlight" : true, + "project author" : "", + "project confirmed" : true, + "project developer" : "", + "project distributor" : "", + "project modified" : "", + "project type" : "", + "project version" : "", + "screen description" : "", + "section" : "", + "normalcolor" : { + "type": "color", + "value": "#000000" + }, + "focuscolor" : { + "type": "color", + "value": "#000000" + }, + "selectedcolor" : { + "type": "color", + "value": "#000000" + }, + "pressedcolor" : { + "type": "color", + "value": "#000000" + }, + "overview" : { + "type": "richtext", + "value": "" + } +} diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp index f17833b0c7e..8875e9ba830 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp @@ -50,8 +50,8 @@ GlobalAnnotationEditor::~GlobalAnnotationEditor() void GlobalAnnotationEditor::showWidget() { m_dialog = new GlobalAnnotationEditorDialog(Core::ICore::dialogParent(), - modelNode().globalAnnotation(), modelNode().globalStatus()); + m_dialog->setAnnotation(modelNode().globalAnnotation()); QObject::connect(m_dialog, &GlobalAnnotationEditorDialog::acceptedDialog, this, &GlobalAnnotationEditor::acceptedClicked); @@ -142,7 +142,6 @@ void GlobalAnnotationEditor::acceptedClicked() hideWidget(); emit accepted(); - emit annotationChanged(); } diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.cpp b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.cpp index ecfa00baab4..3722935643b 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.cpp @@ -24,87 +24,55 @@ ****************************************************************************/ #include "globalannotationeditordialog.h" -#include "ui_globalannotationeditordialog.h" #include "annotation.h" #include "annotationcommenttab.h" - -#include "ui_annotationcommenttab.h" +#include "ui_globalannotationeditordialog.h" #include #include -#include -#include #include #include +#include +#include namespace QmlDesigner { -GlobalAnnotationEditorDialog::GlobalAnnotationEditorDialog(QWidget *parent, const Annotation &annotation, GlobalAnnotationStatus status) - : QDialog(parent) +GlobalAnnotationEditorDialog::GlobalAnnotationEditorDialog(QWidget *parent, + GlobalAnnotationStatus status) + : BasicAnnotationEditorDialog(parent) , ui(new Ui::GlobalAnnotationEditorDialog) - , m_annotation(annotation) , m_globalStatus(status) , m_statusIsActive(false) { ui->setupUi(this); + ui->tabWidget->setDefaultAnnotations(defaultAnnotations()); + ui->tableView->setDefaultAnnotations(defaultAnnotations()); - setWindowFlag(Qt::Tool, true); - setModal(true); + connect(ui->tableView, + &AnnotationTableView::richTextEditorRequested, + this, + [&](int index, QString const &) { + switchToTabView(); + ui->tabWidget->setCurrentIndex(index); + }); - connect(this, &QDialog::accepted, this, &GlobalAnnotationEditorDialog::acceptedClicked); - - connect(ui->tabWidget, &QTabWidget::currentChanged, this, &GlobalAnnotationEditorDialog::tabChanged); - - auto *commentCornerWidget = new QToolBar; - - auto *commentAddAction = new QAction(TimelineIcons::ADD_TIMELINE.icon(), tr("Add Comment")); //timeline icons? - auto *commentRemoveAction = new QAction(TimelineIcons::REMOVE_TIMELINE.icon(), - tr("Remove Comment")); //timeline icons? - - connect(commentAddAction, &QAction::triggered, this, [this]() { - addComment(Comment()); - }); - - connect(commentRemoveAction, &QAction::triggered, this, [this]() { - - if (ui->tabWidget->count() == 0) { //it is not even supposed to happen but lets be sure - QTC_ASSERT(false, return); - return; - } - - int currentIndex = ui->tabWidget->currentIndex(); - QString currentTitle = ui->tabWidget->tabText(currentIndex); - - QMessageBox *deleteDialog = new QMessageBox(this); - deleteDialog->setWindowTitle(currentTitle); - deleteDialog->setText(tr("Delete this comment?")); - deleteDialog->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - deleteDialog->setDefaultButton(QMessageBox::Yes); - - int result = deleteDialog->exec(); - - if (result == QMessageBox::Yes) { - removeComment(currentIndex); - } - - if (ui->tabWidget->count() == 0) //lets be sure that tabWidget is never empty - addComment(Comment()); - }); - - commentCornerWidget->addAction(commentAddAction); - commentCornerWidget->addAction(commentRemoveAction); - - ui->tabWidget->setCornerWidget(commentCornerWidget, Qt::TopRightCorner); - - connect(ui->statusAddButton, &QPushButton::clicked, [&](bool){ + connect(ui->statusAddButton, &QPushButton::clicked, this, [&](bool) { setStatusVisibility(true); }); - setStatus(m_globalStatus); + connect(ui->rbTableView, + &QRadioButton::clicked, + this, + &GlobalAnnotationEditorDialog::switchToTableView); + connect(ui->rbTabView, + &QRadioButton::clicked, + this, + &GlobalAnnotationEditorDialog::switchToTabView); - fillFields(); + setStatus(m_globalStatus); setWindowTitle(globalEditorTitle); + switchToTabView(); } GlobalAnnotationEditorDialog::~GlobalAnnotationEditorDialog() @@ -112,26 +80,18 @@ GlobalAnnotationEditorDialog::~GlobalAnnotationEditorDialog() delete ui; } -void GlobalAnnotationEditorDialog::setAnnotation(const Annotation &annotation) +GlobalAnnotationEditorDialog::ViewMode GlobalAnnotationEditorDialog::viewMode() const { - m_annotation = annotation; - fillFields(); -} - -Annotation GlobalAnnotationEditorDialog::annotation() const -{ - return m_annotation; + return ui->rbTableView->isChecked() ? TableView : TabsView; } void GlobalAnnotationEditorDialog::setStatus(GlobalAnnotationStatus status) { m_globalStatus = status; + bool hasStatus = status.status() != GlobalAnnotationStatus::NoStatus; - bool hasStatus = (status.status() != GlobalAnnotationStatus::NoStatus); - - if (hasStatus) { + if (hasStatus) ui->statusComboBox->setCurrentIndex(int(status.status())); - } setStatusVisibility(hasStatus); } @@ -141,117 +101,73 @@ GlobalAnnotationStatus GlobalAnnotationEditorDialog::globalStatus() const return m_globalStatus; } -void GlobalAnnotationEditorDialog::acceptedClicked() +void GlobalAnnotationEditorDialog::showStatusContainer(bool show) { - Annotation annotation; - - annotation.removeComments(); - - for (int i = 0; i < ui->tabWidget->count(); i++) { - AnnotationCommentTab* tab = reinterpret_cast(ui->tabWidget->widget(i)); - if (!tab) - continue; - - Comment comment = tab->currentComment(); - - if (!comment.isEmpty()) - annotation.addComment(comment); - } - - m_annotation = annotation; - - if (m_statusIsActive) { - m_globalStatus.setStatus(ui->statusComboBox->currentIndex()); - } - - emit GlobalAnnotationEditorDialog::acceptedDialog(); + ui->statusContainer->setVisible(show); } -void GlobalAnnotationEditorDialog::commentTitleChanged(const QString &text, QWidget *tab) +void GlobalAnnotationEditorDialog::switchToTabView() { - int tabIndex = ui->tabWidget->indexOf(tab); - if (tabIndex >= 0) - ui->tabWidget->setTabText(tabIndex, text); + m_annotation.setComments(ui->tableView->fetchComments()); + ui->rbTabView->setChecked(true); + ui->tableView->hide(); + ui->tabWidget->show(); + fillFields(); +} - if (text.isEmpty()) - ui->tabWidget->setTabText(tabIndex, - (defaultTabName + " " + QString::number(tabIndex+1))); +void GlobalAnnotationEditorDialog::switchToTableView() +{ + m_annotation.setComments(ui->tabWidget->fetchComments()); + ui->rbTableView->setChecked(true); + ui->tabWidget->hide(); + ui->tableView->show(); + fillFields(); +} + +void GlobalAnnotationEditorDialog::acceptedClicked() +{ + updateAnnotation(); + emit GlobalAnnotationEditorDialog::acceptedDialog(); } void GlobalAnnotationEditorDialog::fillFields() { - setupComments(); + ui->tabWidget->setupComments(m_annotation.comments()); + ui->tableView->setupComments(m_annotation.comments()); } -void GlobalAnnotationEditorDialog::setupComments() +void GlobalAnnotationEditorDialog::updateAnnotation() { - ui->tabWidget->setUpdatesEnabled(false); - - deleteAllTabs(); - - const QVector comments = m_annotation.comments(); - - if (comments.isEmpty()) - addComment(Comment()); - - for (const Comment &comment : comments) { - addCommentTab(comment); + Annotation annotation; + switch (viewMode()) { + case TabsView: + annotation.setComments(ui->tabWidget->fetchComments()); + break; + case TableView: + annotation.setComments(ui->tableView->fetchComments()); + break; } - ui->tabWidget->setUpdatesEnabled(true); + m_annotation = annotation; + + if (m_statusIsActive) + m_globalStatus.setStatus(ui->statusComboBox->currentIndex()); } void GlobalAnnotationEditorDialog::addComment(const Comment &comment) { m_annotation.addComment(comment); - addCommentTab(comment); + ui->tabWidget->addCommentTab(comment); } void GlobalAnnotationEditorDialog::removeComment(int index) { if ((m_annotation.commentsSize() > index) && (index >= 0)) { m_annotation.removeComment(index); - removeCommentTab(index); - } -} - -void GlobalAnnotationEditorDialog::addCommentTab(const Comment &comment) -{ - auto commentTab = new AnnotationCommentTab(); - commentTab->setComment(comment); - - QString tabTitle(comment.title()); - int tabIndex = ui->tabWidget->addTab(commentTab, tabTitle); - ui->tabWidget->setCurrentIndex(tabIndex); - - if (tabTitle.isEmpty()) { - const QString appendix = ((tabIndex > 0) ? QString::number(tabIndex+1) : ""); - - tabTitle = QString("%1 %2").arg(defaultTabName).arg(appendix); - - ui->tabWidget->setTabText(tabIndex, tabTitle); - } - - connect(commentTab, &AnnotationCommentTab::titleChanged, - this, &GlobalAnnotationEditorDialog::commentTitleChanged); -} - -void GlobalAnnotationEditorDialog::removeCommentTab(int index) -{ - if ((ui->tabWidget->count() > index) && (index >= 0)) { ui->tabWidget->removeTab(index); } } -void GlobalAnnotationEditorDialog::deleteAllTabs() -{ - while (ui->tabWidget->count() > 0) { - QWidget *w = ui->tabWidget->widget(0); - ui->tabWidget->removeTab(0); - delete w; - } -} - void GlobalAnnotationEditorDialog::setStatusVisibility(bool hasStatus) { ui->statusAddButton->setVisible(!hasStatus); @@ -260,9 +176,4 @@ void GlobalAnnotationEditorDialog::setStatusVisibility(bool hasStatus) m_statusIsActive = hasStatus; } -void GlobalAnnotationEditorDialog::tabChanged(int index) -{ - (void) index; -} - } //namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.h b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.h index 5688c54ecfa..2f4c942809b 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.h +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.h @@ -25,9 +25,7 @@ #pragma once -#include - -#include "annotation.h" +#include "annotationeditordialog.h" namespace QmlDesigner { @@ -35,46 +33,46 @@ namespace Ui { class GlobalAnnotationEditorDialog; } -class GlobalAnnotationEditorDialog : public QDialog +class GlobalAnnotationEditorDialog : public BasicAnnotationEditorDialog { Q_OBJECT - public: - explicit GlobalAnnotationEditorDialog(QWidget *parent, const Annotation &annotation, GlobalAnnotationStatus status); + enum ViewMode { + TableView, + TabsView + }; + + explicit GlobalAnnotationEditorDialog( + QWidget *parent = nullptr, GlobalAnnotationStatus status = GlobalAnnotationStatus::NoStatus); ~GlobalAnnotationEditorDialog(); - void setAnnotation(const Annotation &annotation); - Annotation annotation() const; + ViewMode viewMode() const; void setStatus(GlobalAnnotationStatus status); GlobalAnnotationStatus globalStatus() const; -signals: - void acceptedDialog(); //use instead of QDialog::accepted +public slots: + void showStatusContainer(bool show); + void switchToTabView(); + void switchToTableView(); private slots: - void acceptedClicked(); - void tabChanged(int index); - void commentTitleChanged(const QString &text, QWidget *tab); + void acceptedClicked() override; private: - void fillFields(); - void setupComments(); + + void fillFields() override; + void updateAnnotation(); void addComment(const Comment &comment); void removeComment(int index); - void addCommentTab(const Comment &comment); - void removeCommentTab(int index); - void deleteAllTabs(); - void setStatusVisibility(bool hasStatus); private: const QString globalEditorTitle = {tr("Global Annotation Editor")}; - const QString defaultTabName = {tr("Annotation")}; + Ui::GlobalAnnotationEditorDialog *ui; - Annotation m_annotation; GlobalAnnotationStatus m_globalStatus; bool m_statusIsActive; }; diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.ui b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.ui index bc0f3efdca2..75d99d26e0c 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.ui +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditordialog.ui @@ -73,6 +73,23 @@ + + + + Tab View + + + true + + + + + + + Table View + + + @@ -90,7 +107,7 @@ - + 0 @@ -109,6 +126,9 @@ + + + @@ -124,6 +144,19 @@ + + + AnnotationTabWidget + QTabWidget +
annotationtabwidget.h
+ 1 +
+ + AnnotationTableView + QTableView +
annotationtableview.h
+
+
tabWidget diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp index 997c712af6d..ff36174a4fe 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp @@ -426,8 +426,8 @@ void FormEditorAnnotationIcon::createAnnotationEditor() m_annotationEditor = new AnnotationEditorDialog(Core::ICore::dialogParent(), m_modelNode.displayName(), - m_modelNode.customId(), - m_modelNode.annotation()); + m_modelNode.customId()); + m_annotationEditor->setAnnotation(m_modelNode.annotation()); connect(m_annotationEditor, &AnnotationEditorDialog::acceptedDialog, this, &FormEditorAnnotationIcon::annotationDialogAccepted); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index 816c3d65732..cac16af404e 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -730,6 +730,7 @@ Project { "annotationeditor/annotationcommenttab.ui", "annotationeditor/annotationeditor.cpp", "annotationeditor/annotationeditor.h", + "annotationeditor/annotationeditor.qrc", "annotationeditor/globalannotationeditor.cpp", "annotationeditor/globalannotationeditor.h", "annotationeditor/annotationeditordialog.cpp", @@ -738,6 +739,12 @@ Project { "annotationeditor/globalannotationeditordialog.cpp", "annotationeditor/globalannotationeditordialog.h", "annotationeditor/globalannotationeditordialog.ui", + "annotationeditor/defaultannotations.cpp", + "annotationeditor/defaultannotations.h", + "annotationeditor/annotationtableview.cpp", + "annotationeditor/annotationtableview.h", + "annotationeditor/annotationtabwidget.cpp", + "annotationeditor/annotationtabwidget.h", "bindingeditor/bindingeditor.cpp", "bindingeditor/bindingeditor.h", "bindingeditor/actioneditor.cpp", From 92de8402c4459bfc36985bb2b78ab9a8551166fe Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 25 Mar 2021 16:39:11 +0100 Subject: [PATCH 06/71] build.py: Do not enforce building without PCH We have a guard for the CMake version in QtCreatorAPIInternal since a while. Change-Id: Ie76010b39e33d57c77b993db375a7821687145ea Reviewed-by: Cristian Adam --- scripts/build.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/build.py b/scripts/build.py index 2f26b674574..71fe262b30e 100755 --- a/scripts/build.py +++ b/scripts/build.py @@ -170,9 +170,6 @@ def build_qtcreator(args, paths): '-DBUILD_EXECUTABLE_WIN64INTERRUPT=OFF', '-DBUILD_LIBRARY_QTCREATORCDBEXT=OFF'] - # TODO this works around a CMake bug https://gitlab.kitware.com/cmake/cmake/issues/20119 - cmake_args += ['-DBUILD_WITH_PCH=OFF'] - ide_revision = common.get_commit_SHA(paths.src) if ide_revision: cmake_args += ['-DIDE_REVISION=ON', From 5faee6221fe03d831b2b0cbbdeb000f153d8737a Mon Sep 17 00:00:00 2001 From: Knud Dollereder Date: Wed, 24 Mar 2021 15:31:31 +0100 Subject: [PATCH 07/71] Load all curves when opening DS with lastsession Change-Id: I2de37fbd25b828e585739edee8bb079c02f58f94 Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/curveeditor/curveeditorview.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp index 865b04a453a..3f3f60d50a4 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp @@ -118,6 +118,11 @@ void CurveEditorView::nodeReparented(const ModelNode &node, updateKeyframes(); else if (QmlTimelineKeyframeGroup::checkKeyframesType(node)) updateKeyframes(); + else if (newPropertyParent.isValid() && !oldPropertyParent.isValid()) { + if (activeTimeline().hasKeyframeGroupForTarget(node)) { + updateKeyframes(); + } + } } void CurveEditorView::auxiliaryDataChanged(const ModelNode &node, From 83a8e32b3a8e7e1a444d65ba35e12bbedd3ecc90 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 25 Mar 2021 16:29:07 +0100 Subject: [PATCH 08/71] Fix build Amends bd9a61fa27bad34144a654b8363ae0667ddd98e1 Change-Id: Ib3cb0991419e8d85ee29591771cfb7f126b11076 Reviewed-by: Aleksei German Reviewed-by: Cristian Adam --- .../components/annotationeditor/annotationtabwidget.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h index 962a36e45e8..944400f5e63 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.h @@ -23,6 +23,7 @@ ** ****************************************************************************/ +#include #include #include "annotation.h" From 27c456dd9e771630bb7f5cbc6c0a4415f809cffa Mon Sep 17 00:00:00 2001 From: Michael Winkelmann Date: Mon, 22 Mar 2021 21:14:35 +0100 Subject: [PATCH 09/71] Common EditorProxy interface for Editors * Introduced a EditorProxy base class to have a common Qml interface for editors Change-Id: I93af944002801cc3e318653c67dcc464bd9f1213 Reviewed-by: Aleksei German Reviewed-by: Tapani Mattila Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/CMakeLists.txt | 1 + .../annotationeditor/annotationeditor.cpp | 148 +++++------------- .../annotationeditor/annotationeditor.h | 44 +----- .../globalannotationeditor.cpp | 114 +++++--------- .../annotationeditor/globalannotationeditor.h | 25 +-- .../componentcore/modelnodeoperations.cpp | 2 +- src/plugins/qmldesigner/editorproxy.cpp | 114 ++++++++++++++ src/plugins/qmldesigner/editorproxy.h | 101 ++++++++++++ src/plugins/qmldesigner/qmldesignerplugin.pri | 2 + src/plugins/qmldesigner/qmldesignerplugin.qbs | 2 + 10 files changed, 305 insertions(+), 248 deletions(-) create mode 100644 src/plugins/qmldesigner/editorproxy.cpp create mode 100644 src/plugins/qmldesigner/editorproxy.h diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 63d24df6a13..2b26ad383f3 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -31,6 +31,7 @@ add_qtc_plugin(QmlDesigner shortcutmanager.cpp shortcutmanager.h designermcumanager.cpp designermcumanager.h richtexteditordialog.cpp richtexteditordialog.h + editorproxy.cpp editorproxy.h EXPLICIT_MOC components/propertyeditor/propertyeditorvalue.h components/connectioneditor/connectionviewwidget.h diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp index cdc2611a765..664f693d559 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp @@ -25,8 +25,8 @@ #include "annotationeditor.h" -#include "annotationeditordialog.h" #include "annotation.h" +#include "annotationeditordialog.h" #include "qmlmodelnodeproxy.h" @@ -35,126 +35,52 @@ #include -#include -#include #include #include +#include +#include namespace QmlDesigner { AnnotationEditor::AnnotationEditor(QObject *parent) - : QObject(parent) -{ -} + : ModelNodeEditorProxy(parent) +{} -AnnotationEditor::~AnnotationEditor() +AnnotationEditor::~AnnotationEditor() {} + +QWidget *AnnotationEditor::createWidget() { - hideWidget(); + const auto &node = m_modelNode; + auto dialog = new AnnotationEditorDialog(Core::ICore::dialogParent(), + node.id(), + node.customId()); + dialog->setAnnotation(node.annotation()); + + QObject::connect(dialog, + &AnnotationEditorDialog::acceptedDialog, + this, + &AnnotationEditor::acceptedClicked); + QObject::connect(dialog, + &AnnotationEditorDialog::rejected, + this, + &AnnotationEditor::cancelClicked); + return dialog; } void AnnotationEditor::registerDeclarativeType() { - qmlRegisterType("HelperWidgets", 2, 0, "AnnotationEditor"); -} - -void AnnotationEditor::showWidget() -{ - m_dialog = new AnnotationEditorDialog(Core::ICore::dialogParent(), - m_modelNode.id(), - m_modelNode.customId()); - m_dialog->setAnnotation(m_modelNode.annotation()); - - QObject::connect(m_dialog, &AnnotationEditorDialog::acceptedDialog, - this, &AnnotationEditor::acceptedClicked); - QObject::connect(m_dialog, &AnnotationEditorDialog::rejected, - this, &AnnotationEditor::cancelClicked); - - m_dialog->setAttribute(Qt::WA_DeleteOnClose); - - m_dialog->show(); - m_dialog->raise(); -} - -void AnnotationEditor::showWidget(int x, int y) -{ - showWidget(); - m_dialog->move(x, y); -} - -void AnnotationEditor::hideWidget() -{ - if (m_dialog) - m_dialog->close(); - m_dialog = nullptr; -} - -AnnotationEditor* AnnotationEditor::showWidget(const ModelNode &modelNode) -{ - auto editor = new AnnotationEditor; - - editor->setModelNode(modelNode); - editor->showWidget(); - - connect(editor->m_dialog, &QDialog::destroyed, - [editor]() { editor->deleteLater(); } ); - - return editor; -} - -void AnnotationEditor::setModelNode(const ModelNode &modelNode) -{ - m_modelNodeBackend = {}; - m_modelNode = modelNode; -} - -ModelNode AnnotationEditor::modelNode() const -{ - return m_modelNode; -} - -void AnnotationEditor::setModelNodeBackend(const QVariant &modelNodeBackend) -{ - if (!modelNodeBackend.isNull() && modelNodeBackend.isValid()) { - m_modelNodeBackend = modelNodeBackend; - - const auto modelNodeBackendObject = modelNodeBackend.value(); - const auto backendObjectCasted = - qobject_cast(modelNodeBackendObject); - - if (backendObjectCasted) - m_modelNode = backendObjectCasted->qmlObjectNode().modelNode(); - - emit modelNodeBackendChanged(); - } -} - -QVariant AnnotationEditor::modelNodeBackend() const -{ - return m_modelNodeBackend; -} - -bool AnnotationEditor::hasCustomId() const -{ - if (m_modelNode.isValid()) - return m_modelNode.hasCustomId(); - return false; -} - -bool AnnotationEditor::hasAnnotation() const -{ - if (m_modelNode.isValid()) - return m_modelNode.hasAnnotation(); - return false; + registerType("AnnotationEditor"); } void AnnotationEditor::removeFullAnnotation() { - if (!m_modelNode.isValid()) + auto &node = this->m_modelNode; + if (!node.isValid()) return; QString dialogTitle = tr("Annotation"); - if (!m_modelNode.customId().isNull()) { - dialogTitle = m_modelNode.customId(); + if (!node.customId().isNull()) { + dialogTitle = node.customId(); } QPointer deleteDialog = new QMessageBox(Core::ICore::dialogParent()); deleteDialog->setWindowTitle(dialogTitle); @@ -168,8 +94,8 @@ void AnnotationEditor::removeFullAnnotation() deleteDialog->deleteLater(); if (result == QMessageBox::Yes) { - m_modelNode.removeCustomId(); - m_modelNode.removeAnnotation(); + node.removeCustomId(); + node.removeAnnotation(); } emit customIdChanged(); @@ -178,23 +104,23 @@ void AnnotationEditor::removeFullAnnotation() void AnnotationEditor::acceptedClicked() { - if (m_dialog) { + if (const auto *dialog = qobject_cast(widget())) { QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_ANNOTATION_ADDED); - QString customId = m_dialog->customId(); - Annotation annotation = m_dialog->annotation(); + const QString customId = dialog->customId(); + const Annotation annotation = dialog->annotation(); + auto &node = this->m_modelNode; - m_modelNode.setCustomId(customId); + node.setCustomId(customId); if (annotation.comments().isEmpty()) - m_modelNode.removeAnnotation(); + node.removeAnnotation(); else - m_modelNode.setAnnotation(annotation); + node.setAnnotation(annotation); } hideWidget(); emit accepted(); - emit customIdChanged(); emit annotationChanged(); } diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.h b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.h index 75fce6afe2b..3ebfd2d28b5 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.h +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.h @@ -25,65 +25,31 @@ #pragma once -#include #include -#include -#include "annotationeditordialog.h" -#include "annotation.h" - -#include "modelnode.h" +#include "editorproxy.h" namespace QmlDesigner { -class AnnotationEditor : public QObject +class AnnotationEditor : public ModelNodeEditorProxy { Q_OBJECT - - Q_PROPERTY(QVariant modelNodeBackendProperty READ modelNodeBackend WRITE setModelNodeBackend NOTIFY modelNodeBackendChanged) - Q_PROPERTY(bool hasCustomId READ hasCustomId NOTIFY customIdChanged) - Q_PROPERTY(bool hasAnnotation READ hasAnnotation NOTIFY annotationChanged) - public: explicit AnnotationEditor(QObject *parent = nullptr); ~AnnotationEditor(); - static void registerDeclarativeType(); - - Q_INVOKABLE void showWidget(); - Q_INVOKABLE void showWidget(int x, int y); - Q_INVOKABLE void hideWidget(); - - static AnnotationEditor* showWidget(const ModelNode &modelNode); - - void setModelNode(const ModelNode &modelNode); - ModelNode modelNode() const; - - void setModelNodeBackend(const QVariant &modelNodeBackend); - QVariant modelNodeBackend() const; - - Q_INVOKABLE bool hasCustomId() const; - Q_INVOKABLE bool hasAnnotation() const; - + QWidget *createWidget() override; Q_INVOKABLE void removeFullAnnotation(); + static void registerDeclarativeType(); + signals: void accepted(); void canceled(); - void modelNodeBackendChanged(); - - void customIdChanged(); - void annotationChanged(); private slots: void acceptedClicked(); void cancelClicked(); - -private: - QPointer m_dialog; - - ModelNode m_modelNode; - QVariant m_modelNodeBackend; }; } //namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp index 8875e9ba830..6adb2f4bf0b 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp @@ -25,78 +25,40 @@ #include "globalannotationeditor.h" -#include "globalannotationeditordialog.h" #include "annotation.h" +#include "globalannotationeditordialog.h" -#include "qmlmodelnodeproxy.h" #include - -#include -#include -#include #include namespace QmlDesigner { -GlobalAnnotationEditor::GlobalAnnotationEditor(QObject *) +GlobalAnnotationEditor::GlobalAnnotationEditor(QObject *parent) + : ModelNodeEditorProxy(parent) +{} + +GlobalAnnotationEditor::~GlobalAnnotationEditor() {} + +QWidget *GlobalAnnotationEditor::createWidget() { -} - -GlobalAnnotationEditor::~GlobalAnnotationEditor() -{ - hideWidget(); -} - -void GlobalAnnotationEditor::showWidget() -{ - m_dialog = new GlobalAnnotationEditorDialog(Core::ICore::dialogParent(), - modelNode().globalStatus()); - m_dialog->setAnnotation(modelNode().globalAnnotation()); - - QObject::connect(m_dialog, &GlobalAnnotationEditorDialog::acceptedDialog, - this, &GlobalAnnotationEditor::acceptedClicked); - QObject::connect(m_dialog, &GlobalAnnotationEditorDialog::rejected, - this, &GlobalAnnotationEditor::cancelClicked); - - m_dialog->setAttribute(Qt::WA_DeleteOnClose); - - m_dialog->show(); - m_dialog->raise(); -} - -void GlobalAnnotationEditor::showWidget(int x, int y) -{ - showWidget(); - m_dialog->move(x, y); -} - -void GlobalAnnotationEditor::hideWidget() -{ - if (m_dialog) - m_dialog->close(); - m_dialog = nullptr; -} - -void GlobalAnnotationEditor::setModelNode(const ModelNode &modelNode) -{ - m_modelNode = modelNode; -} - -ModelNode GlobalAnnotationEditor::modelNode() const -{ - return m_modelNode; -} - -bool GlobalAnnotationEditor::hasAnnotation() const -{ - if (m_modelNode.isValid()) - return m_modelNode.hasGlobalAnnotation(); - return false; -} + auto* dialog = new GlobalAnnotationEditorDialog(Core::ICore::dialogParent(), + this->m_modelNode.globalStatus()); + dialog->setAnnotation(this->m_modelNode.globalAnnotation()); + QObject::connect(dialog, + &GlobalAnnotationEditorDialog::acceptedDialog, + this, + &GlobalAnnotationEditor::acceptedClicked); + QObject::connect(dialog, + &GlobalAnnotationEditorDialog::rejected, + this, + &GlobalAnnotationEditor::cancelClicked); + return dialog; +}; void GlobalAnnotationEditor::removeFullAnnotation() { - if (!m_modelNode.isValid()) + auto &node = this->m_modelNode; + if (!node.isValid()) return; QString dialogTitle = tr("Global Annotation"); @@ -107,10 +69,11 @@ void GlobalAnnotationEditor::removeFullAnnotation() deleteDialog->setDefaultButton(QMessageBox::Yes); int result = deleteDialog->exec(); - if (deleteDialog) deleteDialog->deleteLater(); + if (deleteDialog) + deleteDialog->deleteLater(); if (result == QMessageBox::Yes) { - m_modelNode.removeGlobalAnnotation(); + node.removeGlobalAnnotation(); } emit annotationChanged(); @@ -118,25 +81,21 @@ void GlobalAnnotationEditor::removeFullAnnotation() void GlobalAnnotationEditor::acceptedClicked() { - if (m_dialog) { - - Annotation annotation = m_dialog->annotation(); + if (const auto *dialog = qobject_cast(widget())) { + auto &node = this->m_modelNode; + const Annotation annotation = dialog->annotation(); if (annotation.comments().isEmpty()) - m_modelNode.removeGlobalAnnotation(); + node.removeGlobalAnnotation(); else - m_modelNode.setGlobalAnnotation(annotation); + node.setGlobalAnnotation(annotation); - GlobalAnnotationStatus status = m_dialog->globalStatus(); + const GlobalAnnotationStatus status = dialog->globalStatus(); - if (status.status() == GlobalAnnotationStatus::NoStatus) { - if (m_modelNode.hasGlobalStatus()) { - m_modelNode.removeGlobalStatus(); - } - } - else { - m_modelNode.setGlobalStatus(status); - } + if (status.status() == GlobalAnnotationStatus::NoStatus) + node.removeGlobalStatus(); + else + node.setGlobalStatus(status); } hideWidget(); @@ -150,7 +109,6 @@ void GlobalAnnotationEditor::cancelClicked() hideWidget(); emit canceled(); - emit annotationChanged(); } diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.h b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.h index eefdaec553a..ed8973380f9 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.h +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.h @@ -26,32 +26,25 @@ #pragma once #include -#include #include +#include -#include "globalannotationeditordialog.h" +#include "abstractaction.h" #include "annotation.h" +#include "globalannotationeditordialog.h" +#include "editorproxy.h" #include "modelnode.h" namespace QmlDesigner { - -class GlobalAnnotationEditor : public QObject +class GlobalAnnotationEditor : public ModelNodeEditorProxy { Q_OBJECT - public: explicit GlobalAnnotationEditor(QObject *parent = nullptr); ~GlobalAnnotationEditor(); - Q_INVOKABLE void showWidget(); - Q_INVOKABLE void showWidget(int x, int y); - Q_INVOKABLE void hideWidget(); - - void setModelNode(const ModelNode &modelNode); - ModelNode modelNode() const; - - Q_INVOKABLE bool hasAnnotation() const; + QWidget *createWidget() override; Q_INVOKABLE void removeFullAnnotation(); @@ -59,17 +52,11 @@ signals: void accepted(); void canceled(); void modelNodeBackendChanged(); - void annotationChanged(); private slots: void acceptedClicked(); void cancelClicked(); - -private: - QPointer m_dialog; - - ModelNode m_modelNode; }; } //namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index e72c61829ac..3acfa1fce42 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1556,7 +1556,7 @@ void editAnnotation(const SelectionContext &selectionContext) { ModelNode selectedNode = selectionContext.currentSingleSelectedNode(); - AnnotationEditor::showWidget(selectedNode); + ModelNodeEditorProxy::fromModelNode(selectedNode); } QVariant previewImageDataForGenericNode(const ModelNode &modelNode) diff --git a/src/plugins/qmldesigner/editorproxy.cpp b/src/plugins/qmldesigner/editorproxy.cpp new file mode 100644 index 00000000000..0a40645b9bd --- /dev/null +++ b/src/plugins/qmldesigner/editorproxy.cpp @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ +#pragma once + +#include "editorproxy.h" +#include "qmlmodelnodeproxy.h" + +namespace QmlDesigner { + +EditorProxy::EditorProxy(QObject *parent) + : QObject(parent) +{} + +EditorProxy::~EditorProxy() +{ + hideWidget(); +} + +void EditorProxy::showWidget() +{ + if (m_widget = createWidget()) { + m_widget->setAttribute(Qt::WA_DeleteOnClose); + m_widget->show(); + m_widget->raise(); + } +} + +void EditorProxy::showWidget(int x, int y) +{ + showWidget(); + if (m_widget) { + m_widget->move(x, y); + } +} + +void EditorProxy::hideWidget() +{ + if (m_widget) + m_widget->close(); + m_widget = nullptr; +} + +QWidget* EditorProxy::widget() const { + return m_widget; +} + +ModelNodeEditorProxy::ModelNodeEditorProxy(QObject *parent) : EditorProxy(parent) {} + +ModelNodeEditorProxy::~ModelNodeEditorProxy() {} + +ModelNode ModelNodeEditorProxy::modelNode() const +{ + return m_modelNode; +} + +void ModelNodeEditorProxy::setModelNode(const ModelNode &modelNode) +{ + m_modelNodeBackend = {}; + m_modelNode = modelNode; +} + +void ModelNodeEditorProxy::setModelNodeBackend(const QVariant &modelNodeBackend) +{ + if (!modelNodeBackend.isNull() && modelNodeBackend.isValid()) { + const auto modelNodeBackendObject = modelNodeBackend.value(); + const auto backendObjectCasted = qobject_cast( + modelNodeBackendObject); + + if (backendObjectCasted) + m_modelNode = backendObjectCasted->qmlObjectNode().modelNode(); + m_modelNodeBackend = modelNodeBackend; + + emit modelNodeBackendChanged(); + } +} + +QVariant ModelNodeEditorProxy::modelNodeBackend() const +{ + return m_modelNodeBackend; +} + +bool ModelNodeEditorProxy::hasCustomId() const +{ + return m_modelNode.isValid() ? m_modelNode.hasCustomId() : false; +} + +bool ModelNodeEditorProxy::hasAnnotation() const +{ + return m_modelNode.isValid() ? m_modelNode.hasAnnotation() : false; +} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/editorproxy.h b/src/plugins/qmldesigner/editorproxy.h new file mode 100644 index 00000000000..20d39246fdb --- /dev/null +++ b/src/plugins/qmldesigner/editorproxy.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ +#pragma once + +#include +#include + +#include "modelnode.h" + +namespace QmlDesigner { +class EditorProxy : public QObject +{ + Q_OBJECT +public: + EditorProxy(QObject *parent = nullptr); + ~EditorProxy(); + + Q_INVOKABLE virtual void showWidget(); + Q_INVOKABLE void showWidget(int x, int y); + Q_INVOKABLE virtual void hideWidget(); + + QWidget *widget() const; + virtual QWidget *createWidget() = 0; + + template + static void registerType(const char *className) + { + qmlRegisterType("HelperWidgets", 2, 0, className); + } + +protected: + QPointer m_widget; +}; + +class ModelNodeEditorProxy : public EditorProxy +{ + Q_OBJECT + Q_PROPERTY(bool hasCustomId READ hasCustomId NOTIFY customIdChanged) + Q_PROPERTY(bool hasAnnotation READ hasAnnotation NOTIFY annotationChanged) + Q_PROPERTY(QVariant modelNodeBackendProperty READ modelNodeBackend WRITE setModelNodeBackend + NOTIFY modelNodeBackendChanged) +public: + ModelNodeEditorProxy(QObject *parent = nullptr); + ~ModelNodeEditorProxy(); + + ModelNode modelNode() const; + virtual void setModelNode(const ModelNode &modelNode); + + void setModelNodeBackend(const QVariant &modelNodeBackend); + QVariant modelNodeBackend() const; + + Q_INVOKABLE bool hasCustomId() const; + Q_INVOKABLE bool hasAnnotation() const; + + template + static T *fromModelNode(const ModelNode &modelNode, QVariant const &modelNodeBackend = {}) + { + auto *editor = new T; + editor->setModelNode(modelNode); + if (!modelNodeBackend.isNull()) + editor->setModelNodeBackend(modelNodeBackend); + + editor->showWidget(); + if (editor->m_widget) { + connect(editor->m_widget, &QObject::destroyed, [editor]() { editor->deleteLater(); }); + } + return editor; + } + +signals: + void customIdChanged(); + void annotationChanged(); + void modelNodeBackendChanged(); + +protected: + QVariant m_modelNodeBackend; + ModelNode m_modelNode; +}; +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pri b/src/plugins/qmldesigner/qmldesignerplugin.pri index c7d3c1df056..58fb55788f3 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.pri +++ b/src/plugins/qmldesigner/qmldesignerplugin.pri @@ -3,6 +3,7 @@ HEADERS += $$PWD/qmldesignerconstants.h \ $$PWD/qmldesignerplugin.h \ $$PWD/designmodewidget.h \ $$PWD/designersettings.h \ + $$PWD/editorproxy.h \ $$PWD/generateresource.h \ $$PWD/settingspage.h \ $$PWD/designmodecontext.h \ @@ -17,6 +18,7 @@ SOURCES += $$PWD/qmldesignerplugin.cpp \ $$PWD/shortcutmanager.cpp \ $$PWD/designmodewidget.cpp \ $$PWD/designersettings.cpp \ + $$PWD/editorproxy.cpp \ $$PWD/generateresource.cpp \ $$PWD/settingspage.cpp \ $$PWD/designmodecontext.cpp \ diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index cac16af404e..26d82c217a5 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -977,6 +977,8 @@ Project { "documentmanager.h", "documentwarningwidget.cpp", "documentwarningwidget.h", + "editorproxy.h", + "editorproxy.cpp", "openuiqmlfiledialog.cpp", "openuiqmlfiledialog.h", "openuiqmlfiledialog.ui", From b994bb7bd6cab24a57e815f25897f4a7ca122346 Mon Sep 17 00:00:00 2001 From: Michael Winkelmann Date: Tue, 23 Mar 2021 13:21:53 +0100 Subject: [PATCH 10/71] Annotation Editor question dialog Change-Id: I4c278abf34bd6c33fe989a5aa80006f1d88f687b Reviewed-by: Leena Miettinen Reviewed-by: Aleksei German Reviewed-by: Thomas Hartmann --- .../annotationeditor/annotationeditor.cpp | 25 +++++-------------- .../annotationeditor/annotationtabwidget.cpp | 4 +-- .../globalannotationeditor.cpp | 18 ++++--------- 3 files changed, 13 insertions(+), 34 deletions(-) diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp index 664f693d559..448aa3c46e5 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp @@ -78,28 +78,15 @@ void AnnotationEditor::removeFullAnnotation() if (!node.isValid()) return; - QString dialogTitle = tr("Annotation"); - if (!node.customId().isNull()) { - dialogTitle = node.customId(); - } - QPointer deleteDialog = new QMessageBox(Core::ICore::dialogParent()); - deleteDialog->setWindowTitle(dialogTitle); - deleteDialog->setText(tr("Delete this annotation?")); - deleteDialog->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - deleteDialog->setDefaultButton(QMessageBox::Yes); - - int result = deleteDialog->exec(); - - if (deleteDialog) - deleteDialog->deleteLater(); - - if (result == QMessageBox::Yes) { + if (QMessageBox::question(Core::ICore::dialogParent(), + node.customId().isNull() ? tr("Annotation") : node.customId(), + tr("Delete this annotation?")) + == QMessageBox::Yes) { node.removeCustomId(); node.removeAnnotation(); + emit customIdChanged(); + emit annotationChanged(); } - - emit customIdChanged(); - emit annotationChanged(); } void AnnotationEditor::acceptedClicked() diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp index 8a3339acc4f..d0b68b5cfb3 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp @@ -49,8 +49,8 @@ AnnotationTabWidget::AnnotationTabWidget(QWidget *parent) int currentIndex = this->currentIndex(); QString currentTitle = tabText(currentIndex); if (QMessageBox::question(this, - tr("Global Annotation"), - tr("Do you want to delete this annotation?")) + currentTitle, + tr("Delete this comment?")) == QMessageBox::Yes) { removeTab(currentIndex); if (count() == 0) //lets be sure that tabWidget is never empty diff --git a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp index 6adb2f4bf0b..0b04ed5f1c4 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/globalannotationeditor.cpp @@ -62,21 +62,13 @@ void GlobalAnnotationEditor::removeFullAnnotation() return; QString dialogTitle = tr("Global Annotation"); - QMessageBox *deleteDialog = new QMessageBox(Core::ICore::dialogParent()); - deleteDialog->setWindowTitle(dialogTitle); - deleteDialog->setText(tr("Delete this annotation?")); - deleteDialog->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - deleteDialog->setDefaultButton(QMessageBox::Yes); - - int result = deleteDialog->exec(); - if (deleteDialog) - deleteDialog->deleteLater(); - - if (result == QMessageBox::Yes) { + if (QMessageBox::question(Core::ICore::dialogParent(), + tr("Global Annotation"), + tr("Delete this annotation?")) + == QMessageBox::Yes) { node.removeGlobalAnnotation(); + emit annotationChanged(); } - - emit annotationChanged(); } void GlobalAnnotationEditor::acceptedClicked() From cd0a140bde8cb44e3957a9b77661af87620e988f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Tue, 23 Mar 2021 22:13:23 +0100 Subject: [PATCH 11/71] Improve translatable strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I0104209bb0f865a48f9ca2524f62457f7524bba9 Reviewed-by: André Hartmann Reviewed-by: Leena Miettinen --- src/plugins/autotest/boost/boosttestoutputreader.cpp | 8 ++++---- src/plugins/clangtools/clangtool.cpp | 9 ++++----- src/plugins/clangtools/clangtoolruncontrol.cpp | 2 +- .../cppeditor/cppquickfixprojectsettingswidget.ui | 3 --- src/plugins/cppeditor/cppquickfixsettingswidget.ui | 3 --- .../qmldesigner/components/bindingeditor/signallist.cpp | 4 ++-- src/plugins/vcsbase/submiteditorwidget.cpp | 4 ++-- 7 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/plugins/autotest/boost/boosttestoutputreader.cpp b/src/plugins/autotest/boost/boosttestoutputreader.cpp index ecc93648da9..7338c6a6609 100644 --- a/src/plugins/autotest/boost/boosttestoutputreader.cpp +++ b/src/plugins/autotest/boost/boosttestoutputreader.cpp @@ -421,17 +421,17 @@ void BoostTestOutputReader::onFinished(int exitCode, QProcess::ExitStatus /*exit if (m_logLevel == LogLevel::Nothing && m_reportLevel == ReportLevel::No) { switch (exitCode) { case 0: - reportNoOutputFinish(tr("Running tests exited with ") + "boost::exit_success.", + reportNoOutputFinish(tr("Running tests exited with %1").arg("boost::exit_success."), ResultType::Pass); break; case 200: reportNoOutputFinish( - tr("Running tests exited with ") + "boost::exit_test_exception.", + tr("Running tests exited with %1").arg("boost::exit_test_exception."), ResultType::MessageFatal); break; case 201: - reportNoOutputFinish(tr("Running tests exited with ") - + "boost::exit_test_failure.", ResultType::Fail); + reportNoOutputFinish(tr("Running tests exited with %1") + .arg("boost::exit_test_failure."), ResultType::Fail); break; } } else if (exitCode != 0 && exitCode != 201 && !m_description.isEmpty()) { diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index 27b2fe2c219..5866103df4b 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -1155,7 +1155,7 @@ void ClangTool::updateForCurrentState() const bool hasErrorText = !m_infoBarWidget->errorText().isEmpty(); const bool hasErrors = m_filesFailed > 0; if (hasErrors && !hasErrorText) { - const QString text = makeLink( tr("Failed to analyze %1 files.").arg(m_filesFailed)); + const QString text = makeLink(tr("Failed to analyze %n file(s).", nullptr, m_filesFailed)); m_infoBarWidget->setError(InfoBarWidget::Warning, text, [this]() { showOutputPane(); }); } @@ -1171,9 +1171,8 @@ void ClangTool::updateForCurrentState() if (m_filesCount == 0) { infoText = tr("Analyzing..."); // Not yet fully started/initialized } else { - infoText = tr("Analyzing... %1 of %2 files processed.") - .arg(m_filesSucceeded + m_filesFailed) - .arg(m_filesCount); + infoText = tr("Analyzing... %1 of %n file(s) processed.", nullptr, m_filesCount) + .arg(m_filesSucceeded + m_filesFailed); } break; case State::PreparationStarted: @@ -1186,7 +1185,7 @@ void ClangTool::updateForCurrentState() infoText = tr("Analysis stopped by user."); break; case State::AnalyzerFinished: - infoText = tr("Finished processing %1 files.").arg(m_filesCount); + infoText = tr("Finished processing %n file(s).", nullptr, m_filesCount); break; case State::ImportFinished: infoText = tr("Diagnostics imported."); diff --git a/src/plugins/clangtools/clangtoolruncontrol.cpp b/src/plugins/clangtools/clangtoolruncontrol.cpp index bd4ee19758c..4a8cbcfbf4b 100644 --- a/src/plugins/clangtools/clangtoolruncontrol.cpp +++ b/src/plugins/clangtools/clangtoolruncontrol.cpp @@ -418,7 +418,7 @@ void ClangToolRunWorker::finalize() { const QString toolName = tool()->name(); if (m_filesNotAnalyzed.size() != 0) { - appendMessage(tr("Error: Failed to analyze %1 files.").arg(m_filesNotAnalyzed.size()), + appendMessage(tr("Error: Failed to analyze %n files.", nullptr, m_filesNotAnalyzed.size()), ErrorMessageFormat); Target *target = runControl()->target(); if (target && target->activeBuildConfiguration() && !target->activeBuildConfiguration()->buildDirectory().exists() diff --git a/src/plugins/cppeditor/cppquickfixprojectsettingswidget.ui b/src/plugins/cppeditor/cppquickfixprojectsettingswidget.ui index ec419845a13..d0c047b9b68 100644 --- a/src/plugins/cppeditor/cppquickfixprojectsettingswidget.ui +++ b/src/plugins/cppeditor/cppquickfixprojectsettingswidget.ui @@ -10,9 +10,6 @@ 345 - - Form - diff --git a/src/plugins/cppeditor/cppquickfixsettingswidget.ui b/src/plugins/cppeditor/cppquickfixsettingswidget.ui index 41b68d8ba96..44ad80f9180 100644 --- a/src/plugins/cppeditor/cppquickfixsettingswidget.ui +++ b/src/plugins/cppeditor/cppquickfixsettingswidget.ui @@ -10,9 +10,6 @@ 1074 - - Form - diff --git a/src/plugins/qmldesigner/components/bindingeditor/signallist.cpp b/src/plugins/qmldesigner/components/bindingeditor/signallist.cpp index 5eb9ceabfaa..f87000ddbab 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/signallist.cpp +++ b/src/plugins/qmldesigner/components/bindingeditor/signallist.cpp @@ -96,8 +96,8 @@ void SignalList::prepareDialog() m_dialog = new SignalListDialog(Core::ICore::dialogParent()); m_dialog->setAttribute(Qt::WA_DeleteOnClose); m_dialog->initialize(m_model); - m_dialog->setWindowTitle(::QmlDesigner::SignalList::tr("Signal List for ") - + m_modelNode.validId()); + m_dialog->setWindowTitle(::QmlDesigner::SignalList::tr("Signal List for %1") + .arg(m_modelNode.validId())); auto *delegate = static_cast(m_dialog->tableView()->itemDelegate()); connect(delegate, &SignalListDelegate::connectClicked, this, &SignalList::connectClicked); diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp index 843310f2906..714dbe59d3f 100644 --- a/src/plugins/vcsbase/submiteditorwidget.cpp +++ b/src/plugins/vcsbase/submiteditorwidget.cpp @@ -546,10 +546,10 @@ void SubmitEditorWidget::verifyDescription() "
    " "
  • Avoid very short commit messages.
  • " "
  • Consider the first line as subject (like in email) " - "and keep it shorter than %1 characters.
  • " + "and keep it shorter than %n characters." "
  • After an empty second line, a longer description can be added.
  • " "
  • Describe why the change was done, not how it was done.
  • " - "
").arg(MaxSubjectLength)); + "", nullptr, MaxSubjectLength)); } } From 44d31cb6879bd4b582c4e7f2bf508e8bade65022 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 25 Mar 2021 16:53:31 +0100 Subject: [PATCH 12/71] cmake build: Disable PCH for CMake < 3.18 with GCC https://gitlab.kitware.com/cmake/cmake/-/issues/20119 was fixed in CMake 3.18. Change-Id: Iad335e8c7a70069404f5c80bb3b65c0d52f82393 Reviewed-by: Cristian Adam --- cmake/QtCreatorAPIInternal.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 103fa6045a5..15cdb05f9a3 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -1,5 +1,7 @@ -if (CMAKE_VERSION VERSION_LESS 3.16) - set(BUILD_WITH_PCH OFF) +if (CMAKE_VERSION VERSION_LESS 3.18) + if (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_VERSION VERSION_LESS 3.16) + set(BUILD_WITH_PCH OFF) + endif() endif() include(FeatureSummary) From 1dd52d39afb7a8a94d464dc8a997eaf0d912f25d Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 24 Mar 2021 17:58:18 +0200 Subject: [PATCH 13/71] QmlDesigner: Fix dropping files to assets view when in list mode Fixes: QDS-3996 Change-Id: I1ef38fc784d2cf97a370caa39e42d6d7bf6bc6ea Reviewed-by: Thomas Hartmann --- .../components/itemlibrary/itemlibraryresourceview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryresourceview.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryresourceview.cpp index 288f7024554..1eef27473d9 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryresourceview.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryresourceview.cpp @@ -75,7 +75,7 @@ ItemLibraryResourceView::ItemLibraryResourceView(AsynchronousImageCache &fontIma setSpacing(4); setViewMode(QListView::IconMode); - setMovement(QListView::Static); + setMovement(QListView::Snap); setResizeMode(QListView::Adjust); setSelectionRectVisible(false); setWrapping(true); From 60a275ce6245c0d3ce71b2d63bbeefd879dfef9c Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sun, 21 Mar 2021 21:40:50 +0100 Subject: [PATCH 14/71] CompileOutputWindow: Fix creation of task positions When jumping from the issues pane to the compile output, the selected text was always starting and ending one line earlier than expected. Probably broken by 1c6e4fbd3. Fixes: QTCREATORBUG-25497 Change-Id: Ia5b796f27faa91e45b10b945dbf6261f1dbce036 Reviewed-by: David Schulz Reviewed-by: hjk Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/compileoutputwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp index 2f322a660a0..74d6e2f485c 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.cpp +++ b/src/plugins/projectexplorer/compileoutputwindow.cpp @@ -247,7 +247,7 @@ void CompileOutputWindow::registerPositionOf(const Task &task, int linkedOutputL if (linkedOutputLines <= 0) return; - const int blocknumber = m_outputWindow->document()->blockCount() - offset - 1; + const int blocknumber = m_outputWindow->document()->blockCount() - offset; const int firstLine = blocknumber - linkedOutputLines - skipLines; const int lastLine = firstLine + linkedOutputLines - 1; From 28de5ec4fd2ad6ee3edd875840515164c7c7bf0c Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Thu, 25 Mar 2021 17:21:57 +0100 Subject: [PATCH 15/71] AssetExporter: Export type Label as text Task-number: QDS-3979 Change-Id: I0920d242a480da9a27f26d39b44ab1d3714917e4 Reviewed-by: Thomas Hartmann --- .../assetexporterplugin/dumpers/textnodedumper.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/assetexporterplugin/dumpers/textnodedumper.cpp b/src/plugins/qmldesigner/assetexporterplugin/dumpers/textnodedumper.cpp index 49d16cb393b..d9e9ace498f 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/dumpers/textnodedumper.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/dumpers/textnodedumper.cpp @@ -34,6 +34,8 @@ #include +#include + namespace { const QHash AlignMapping{ {"AlignRight", "RIGHT"}, @@ -63,7 +65,10 @@ TextNodeDumper::TextNodeDumper(const QByteArrayList &lineage, const ModelNode &n bool TextNodeDumper::isExportable() const { - return lineage().contains("QtQuick.Text"); + const QByteArrayList &baseClasses = lineage(); + return std::any_of(baseClasses.cbegin(), baseClasses.cend(), [](const QByteArray &type) { + return type == "QtQuick.Text" || type == "QtQuick.Controls.Label"; + }); } QJsonObject TextNodeDumper::json(Component &component) const From 23f6aea6d3ad405286aa4f5b5a492409d0860af4 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 26 Mar 2021 07:46:25 +0100 Subject: [PATCH 16/71] Android: Prevent crash in AndroidManager::applicationAbis ... in connection with CMakeBuildConfiguration initialization. Having an Android device type does not necessarily mean an Android Qt version is selected in an incomplete kit. Change-Id: Ib157166c45b7d2ac20eafd6437054b9232595c1e (cherry picked from commit fdd69e27b3f6525128b2f6615ee4d59e4f80384f) Reviewed-by: Eike Ziller --- src/plugins/android/androidmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index b8fd741928e..f77bfa6d1e7 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -182,7 +182,7 @@ QString AndroidManager::buildTargetSDK(const Target *target) QStringList AndroidManager::applicationAbis(const Target *target) { - auto qt = static_cast(QtSupport::QtKitAspect::qtVersion(target->kit())); + auto qt = dynamic_cast(QtSupport::QtKitAspect::qtVersion(target->kit())); return qt ? qt->androidAbis() : QStringList(); } From 9d0c3dc3d677956e0dbbfb1083d6ef22f4fa205f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 25 Mar 2021 13:32:57 +0100 Subject: [PATCH 17/71] Doc: Describe new Language Client options Fixes: QTCREATORBUG-25530 Change-Id: Ia59e476cdd6a1d655f269293c8e6ef97c5b084b5 Reviewed-by: David Schulz --- ...qtcreator-language-client-options-java.png | Bin 0 -> 7749 bytes .../qtcreator-language-client-options.png | Bin 10819 -> 10533 bytes doc/qtcreator/src/android/androiddev.qdoc | 6 +- .../creator-only/creator-language-server.qdoc | 61 +++++++++++++----- 4 files changed, 51 insertions(+), 16 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-language-client-options-java.png diff --git a/doc/qtcreator/images/qtcreator-language-client-options-java.png b/doc/qtcreator/images/qtcreator-language-client-options-java.png new file mode 100644 index 0000000000000000000000000000000000000000..d70df4dd4773da7cff2d9037be04ad4ccefc0b84 GIT binary patch literal 7749 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 T`d=9s7#KWV{an^LB{Ts5|DA-! literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-language-client-options.png b/doc/qtcreator/images/qtcreator-language-client-options.png index ab1a0e09d372a913fbc612a2bdb762e61852acee..0ae18ec4e413612eb6f1f1338c0003dfac829068 100644 GIT binary patch literal 10533 zcmeAS@N?(olHy`uVBq!ia0y~yU`k|QV07SMVqjpX?za(QV9EaktaqI2e?0)H+ zbLaoHO-a7eyf4G%TZYLl)&ON?Ukxwgpv|Tedt3LmO;#13wc&PKH1iRsri`s>D+XIw=>#|dm}{ zL*(3<7!K4}U)qtD^76t|xkOd6xk31L{4on339xU9@TJq%X?()@2CthD)e}8AO zyV)-paCqK{&fgoV=$@CCcZzL4F9U-?wU*g6E(Qhz&gbXn*Q+1D^6>5)YfF$h(=JYY znZJGJ=lJtGXEZ1?GC=HL0J*S0$$j5+h*(sgi1k0;LyO(}K_U6z#F>d+6PBqJf($S1pZDi_px;`N*{5D{D5hj8=Vk^>a9SIdZ6bA>yX(!YHwn9zixw}rVth(}jemA& zi$IgI?~-QKe-q@RcJI4zg6~w`sdIXL%I0QfDbfWhiY;f(O*G=$xpix4F6V^1Q|8LP zI`Q&P+-psXPpjkqzFI!N?$_P-b>*x2{+xB!|M#@r|JiamCl1SG_fr8+j4Xo6Hs6^T z|KpH&+_^~2r*C9`p3+|b=g)Kd{~$fDudVHr&HTmVF630OlxyALCT;8O)|KHd3 z^}lc5kK0+a^vcA}6?I?Q4|dNus9*Q()BJyL+UsjRUhMzGWdG~UQF;5{UtG_!|w5!@6XRj z+&sI=YSY!MrF-3W`n${7)&2^Rt9x#JU$QKI^_IK(J!!TR+fBagjB+vSWRMYk+U?=_ zmLXW(D`Dr-l9Q9_p5)tUMF*^ZbWY#JEVYj(EMnW6e!I;gc`}UKpRGxWN!;e~^Wmq{ z!cGM#ol3vY&u70{9@Y2fnEAeoW)s@GADp-zSN(Rm{ol-2N6(%;>u>k-$@Kkyo~~ZM z&#FmzYj}^E-SwbXhnz&8Ufw9am5KXIl*)#X7R{s2CWod-KR%(qg=_ht2b8j zZ0~^t@td!FUVpvSp6yZTbYhX^r+a&=r!PPF&2fMIhP~3fPvUK}Crm!~^|{Z~+2;9m z9}cqD&sGrr6kw~mJM!Viu%G``F{>#b3v;S^mF@m-(;q zbe}M_e94Dv(fLc8YQDXRw0dE6Dk6J9YX8ztH{I)Xz9t<^SQdCbqi@T)hf}}sH9uZ@ z?CRwm?<0Z|3)YmL_>sQOcK?#S);Avp#mR)t6WA2d7m_ri!|lx;H=C`(-kTE7om~Fc zGXG4Ax$vBsn`U1vTk_%E?)Rr0viHWxzb!AjvRCEVUbCOM`o}&bmx=o%%(%G!f9i_J zxt2e9jc%QCb_-bhJMYSdSMTk$*KJ6MEDpFLlYP~B>#_E>O&c$#^xn(ROyoAV!vznjk4#Dmln@VJiKIc)HH!6W#_&*$KorqN`5!5m}{Tq z?Z4^viT|hP@twD{O)+2n{KUz+%XNJm<*%-lMN)3pk}c^vL|8ugAD)HuqDH=lRJW zf2p-hSZN*fPhrZRqV7LmJC2Gid9&cnvNvxYSzP*gJA&18OI7pZb8k;>Pl@_^#$xT_ z8lJ~1PFBwoFxsdb9v*&_*F5je1pT{rBLh;dr?97*U%z%u?8wA__m3T#_?7{x}j+3%=gx-lR%S-=nM_3rWbCG+0y<)Yn)3R3{D;kvB|K+Y( zn3w(SQ{suZ?ApcmET{dC-F+jq&Ek^woGC9;7SBCCch|+e-p}7WpE_f!Xl~-gO;yXx z7ifh_zP`&L))#*L^~pW|?{UjEKKjISPpC<`@JWnS(UkqYrbYkt=PQSu2vsS1wbd

} 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 F696?*G^_vs diff --git a/doc/qtcreator/src/android/androiddev.qdoc b/doc/qtcreator/src/android/androiddev.qdoc index 2aa36b9f839..ed533106498 100644 --- a/doc/qtcreator/src/android/androiddev.qdoc +++ b/doc/qtcreator/src/android/androiddev.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -51,6 +51,10 @@ for such a Qt version, the minimum required Android version on devices is 5.0 (API level 21). For more information, see \l{Qt for Android}. + To enable helpful code editing features for Java, such as code completion, + highlighting, function tooltips, and navigating in code, specify settings + for a \l{Specifying Java Language Server Settings}{Java language server}. + The Android Debug Bridge (adb) command line tool is integrated to \QC to enable you to deploy applications to connected Android devices, to run them, and to read their logs. It includes a client and server that run on diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc index 3faa85d43a9..1d668a3e07a 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -78,17 +78,33 @@ \section1 Specifying Settings for Language Clients - To use a language server: + You can add a generic generic stdIO language server for Python, for example. + For \l{Connecting Android Devices}{Android development}, you can add a Java + language server. + + \section2 Adding Language Servers + + To view a list of language servers, select \uicontrol Tools > + \uicontrol Options > \uicontrol {Language Client} (or + \uicontrol {Qt Creator} > \uicontrol Preferences > + \uicontrol {Language Client} > on \macos). + + \image qtcreator-language-client-options.png "Language client options page" + + To enable a language server, select the check box next to the language + server name and specify settings for the server. + + To remove language servers from the list, select \uicontrol Delete. + + \section2 Specifying Generic Settings + + To add a generic language server: \list 1 \li Select \uicontrol Tools > \uicontrol Options > - \uicontrol {Language Client} (or \uicontrol {Qt Creator} > - \uicontrol Preferences > \uicontrol {Language Client} > on - \macos) to view a list of language servers. - \image qtcreator-language-client-options.png "Language client options page" - \li Select the check box next to the language server name to enable the - language server. - \li Select \uicontrol Add to add language servers. + \uicontrol {Language Client} > \uicontrol Add > + \uicontrol {New Generic StdIO Language Server} + to add a generic language server. \li In the \uicontrol Name field, enter a name for the language server. Select the \inlineimage replace.png (\uicontrol {Variables}) button to use a variable for the server @@ -102,9 +118,8 @@ with a matching MIME type is opened. The \uicontrol {General Messages} \l{Viewing Output}{output pane} displays information about the connection to the language server. - \li In the \uicontrol Capabilities field, you can see the features - that are supported by the language server. Only some of them are - implemented by \QC. + \li In the \uicontrol Initialization field, you can add language server + specific JSON attributes to pass to an \c initialize request. \li In the \uicontrol Executable field, enter the path to the language server executable. \li In the \uicontrol Arguments field, enter any required command line @@ -112,7 +127,23 @@ arguments. \endlist - To remove language servers from the list, select \uicontrol Delete. + \section2 Specifying Java Language Server Settings + + To add a Java language server: + + \list 1 + \li Select \uicontrol Tools > \uicontrol Options > + \uicontrol {Language Client} > \uicontrol Add > + \uicontrol {New Java Language Server} to add a Java language server. + \image qtcreator-language-client-options-java.png "Java language server options" + \li In the \uicontrol Name field, enter a name for the language server. + Select the \inlineimage replace.png + (\uicontrol {Variables}) button to use a variable for the server + name. For more information, see \l{Using Qt Creator Variables}. + \li In the \uicontrol Java field, enter the path to the Java executable. + \li In the \uicontrol {Java Language Server} field, enter the path to + the Java language server \c .jar file. + \endlist \section1 Supported Locator Filters @@ -129,8 +160,8 @@ \section1 Reporting Issues - The language service client has been mostly tested with Python. - If problems arise when you try it or some other language, please select + The language service client has been mostly tested with Python and Java. + If problems arise when you try them or some other language, please select \uicontrol Help > \uicontrol {Report Bug} to report them in the \l{https://bugreports.qt.io/}{Qt Project Bug Tracker}. The reports should include \QC console output with the environment From bd47caa3488a49df7f39aeed2a325f8363e09348 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 25 Mar 2021 13:14:09 +0100 Subject: [PATCH 18/71] LSP: Prevent soft asserts in LanguageClientArray::toList Change-Id: Icb935137d389c223ac1360b4a7e0af5c303b793c Reviewed-by: Eike Ziller --- src/libs/languageserverprotocol/jsonobject.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libs/languageserverprotocol/jsonobject.h b/src/libs/languageserverprotocol/jsonobject.h index ff2f420c87c..2df8d9dbfb6 100644 --- a/src/libs/languageserverprotocol/jsonobject.h +++ b/src/libs/languageserverprotocol/jsonobject.h @@ -175,15 +175,20 @@ Utils::optional> JsonObject::optionalClientValue(const QS template QList JsonObject::array(const QString &key) const { - return LanguageClientArray(value(key)).toList(); + const Utils::optional> &array = optionalArray(key); + if (array.has_value()) + return array.value(); + qCDebug(conversionLog) << QString("Expected array under %1 in:").arg(key) << *this; + return {}; } template Utils::optional> JsonObject::optionalArray(const QString &key) const { - using Result = Utils::optional>; - return contains(key) ? Result(LanguageClientArray(value(key)).toList()) - : Result(Utils::nullopt); + const QJsonValue &jsonValue = value(key); + if (jsonValue.isUndefined()) + return Utils::nullopt; + return Utils::transform>(jsonValue.toArray(), &fromJsonValue); } template From daf23d29a16de5c43fed59301e94688abaeb4abb Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 26 Mar 2021 09:02:52 +0100 Subject: [PATCH 19/71] Update perfparser to head of 4.15 branch Fixes build with Qt 6. Change-Id: I449f8ee0e507fbd9e4d1fe69aeaf38fa4da65cc4 Reviewed-by: Ulf Hermann --- src/tools/perfparser | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/perfparser b/src/tools/perfparser index 6998eeec65a..84180a4bbe9 160000 --- a/src/tools/perfparser +++ b/src/tools/perfparser @@ -1 +1 @@ -Subproject commit 6998eeec65ad30d67495e71dc3e2486c5a390d32 +Subproject commit 84180a4bbe9fad1426b6f6633b3d3b2f8d14d361 From d3faab0e725e2fcc38b0ce22a24bd62726807f47 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 9 Mar 2021 23:01:39 +0100 Subject: [PATCH 20/71] StringTable: Use QElapsedTimer instead of QTime Change-Id: I75065cbe32dcd4405360b90f3f51387f286d6186 Reviewed-by: hjk --- src/plugins/cpptools/stringtable.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/plugins/cpptools/stringtable.cpp b/src/plugins/cpptools/stringtable.cpp index efd186fada9..5122c3a8a93 100644 --- a/src/plugins/cpptools/stringtable.cpp +++ b/src/plugins/cpptools/stringtable.cpp @@ -28,10 +28,10 @@ #include #include +#include #include #include #include -#include #include using namespace CppTools::Internal; @@ -139,10 +139,10 @@ void StringTablePrivate::GC() QMutexLocker locker(&m_lock); int initialSize = 0; - QTime startTime; + QElapsedTimer timer; if (DebugStringTable) { initialSize = m_strings.size(); - startTime = QTime::currentTime(); + timer.start(); } // Collect all QStrings which have refcount 1. (One reference in m_strings and nowhere else.) @@ -159,7 +159,6 @@ void StringTablePrivate::GC() if (DebugStringTable) { const int currentSize = m_strings.size(); qDebug() << "StringTable::GC removed" << initialSize - currentSize - << "strings in" << startTime.msecsTo(QTime::currentTime()) - << "ms, size is now" << currentSize; + << "strings in" << timer.elapsed() << "ms, size is now" << currentSize; } } From c79df73bde5c1e416e3cfd2d16f16ff607d8d5b8 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 25 Mar 2021 09:50:46 +0100 Subject: [PATCH 21/71] Doc: Add info on exporting nested Figma component instances Fixes: QDS-4049 Change-Id: Ia5f370bab2d44fc90ded48ddc8b089bc9975d921 Reviewed-by: Vikas Pachdha --- doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc index c703074b95e..98817db6a97 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc @@ -57,6 +57,11 @@ as assets. If you use functional \QDS components in Figma, you will find it easier to merge new iterations of the design to \QDS and continue to build the screens there. + \li If your Figma components contain nested components, Figma allows + you to hot swap the nested instance inside the component instance. + However, \QBF doesn't support this so you get the original + component instead. If you want to make further changes to a + component, detach component instances from it before exporting it. \li Use descriptive and unique IDs to avoid duplicate IDs after exporting designs and importing them to \QDS. \endlist From eb516063d371ad3f001d664d44cd3a735c98157b Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 26 Mar 2021 10:32:03 +0100 Subject: [PATCH 22/71] Fix build with Qt 6 Change-Id: I546dd9457e68b9ff59b0fe50248553736d18729b Reviewed-by: Michael Winkelmann Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/editorproxy.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/editorproxy.cpp b/src/plugins/qmldesigner/editorproxy.cpp index 0a40645b9bd..03f66f8ea7a 100644 --- a/src/plugins/qmldesigner/editorproxy.cpp +++ b/src/plugins/qmldesigner/editorproxy.cpp @@ -27,6 +27,8 @@ #include "editorproxy.h" #include "qmlmodelnodeproxy.h" +#include + namespace QmlDesigner { EditorProxy::EditorProxy(QObject *parent) From 7785a3a65184102f3b2679c36092db8b33db8130 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 24 Mar 2021 18:10:55 +0100 Subject: [PATCH 23/71] Sqlite: Move result count to class declaration It move the magic number of column results to the sql statement and improves the mock a little bit. Change-Id: I101067444cf27ec5dea0c72de7fd484a7e8710f0 Reviewed-by: Thomas Hartmann --- src/libs/clangsupport/filepathstorage.h | 26 +- .../filepathstoragesqlitestatementfactory.h | 33 +- src/libs/clangsupport/projectpartsstorage.h | 39 +- src/libs/sqlite/CMakeLists.txt | 6 +- src/libs/sqlite/sqlite-lib.pri | 3 - src/libs/sqlite/sqlite-source.pri | 3 - src/libs/sqlite/sqlitebasestatement.h | 101 ++---- src/libs/sqlite/sqlitedatabase.cpp | 10 +- src/libs/sqlite/sqlitedatabase.h | 8 +- src/libs/sqlite/sqlitedatabasebackend.cpp | 8 +- src/libs/sqlite/sqlitereadstatement.cpp | 45 --- src/libs/sqlite/sqlitereadstatement.h | 36 +- src/libs/sqlite/sqlitereadwritestatement.cpp | 36 -- src/libs/sqlite/sqlitereadwritestatement.h | 24 +- src/libs/sqlite/sqlitesessions.cpp | 24 +- src/libs/sqlite/sqlitewritestatement.cpp | 43 --- src/libs/sqlite/sqlitewritestatement.h | 21 +- .../querysqlitestatementfactory.h | 31 +- src/plugins/clangrefactoring/symbolquery.h | 64 ++-- .../imagecache/imagecachestorage.h | 9 +- .../source/builddependenciesstorage.h | 50 +-- .../source/precompiledheaderstorage.h | 20 +- .../source/symbolstorage.h | 5 +- tests/unit/unittest/CMakeLists.txt | 4 - .../builddependenciesstorage-test.cpp | 153 ++++---- tests/unit/unittest/filepathcache-test.cpp | 20 +- tests/unit/unittest/filepathstorage-test.cpp | 209 +++++------ ...pathstoragesqlitestatementfactory-test.cpp | 10 +- .../unit/unittest/imagecachestorage-test.cpp | 9 +- tests/unit/unittest/lastchangedrowid-test.cpp | 12 +- tests/unit/unittest/mockfilepathstorage.h | 10 +- tests/unit/unittest/mocksqlitedatabase.h | 73 ---- .../unit/unittest/mocksqlitereadstatement.cpp | 284 --------------- tests/unit/unittest/mocksqlitereadstatement.h | 334 ------------------ tests/unit/unittest/mocksqlitestatement.h | 11 +- .../unit/unittest/mocksqlitewritestatement.h | 118 ------- tests/unit/unittest/mocksymbolstorage.h | 2 +- .../precompiledheaderstorage-test.cpp | 31 +- .../unittest/projectpartsstorage-test.cpp | 152 ++++---- .../refactoringdatabaseinitializer-test.cpp | 190 +++++----- tests/unit/unittest/sqlitedatabase-test.cpp | 2 +- tests/unit/unittest/sqlitedatabasemock.h | 3 +- .../unit/unittest/sqlitereadstatementmock.cpp | 29 +- tests/unit/unittest/sqlitereadstatementmock.h | 217 ++++++++++-- tests/unit/unittest/sqlitesessions-test.cpp | 12 +- tests/unit/unittest/sqlitestatement-test.cpp | 289 ++++----------- tests/unit/unittest/sqlitetable-test.cpp | 28 +- tests/unit/unittest/sqliteteststatement.h | 6 +- .../unit/unittest/sqlitetransaction-test.cpp | 4 +- .../unit/unittest/sqlitewritestatementmock.h | 27 ++ tests/unit/unittest/stringcache-test.cpp | 6 +- tests/unit/unittest/symbolindexer-test.cpp | 2 +- .../unittest/symbolindexertaskqueue-test.cpp | 4 +- tests/unit/unittest/symbolindexing-test.cpp | 2 +- tests/unit/unittest/symbolquery-test.cpp | 37 +- tests/unit/unittest/symbolstorage-test.cpp | 58 +-- tests/unit/unittest/unittest.pro | 8 +- tests/unit/unittest/unittest.qbs | 4 - 58 files changed, 1038 insertions(+), 1967 deletions(-) delete mode 100644 src/libs/sqlite/sqlitereadstatement.cpp delete mode 100644 src/libs/sqlite/sqlitereadwritestatement.cpp delete mode 100644 src/libs/sqlite/sqlitewritestatement.cpp delete mode 100644 tests/unit/unittest/mocksqlitedatabase.h delete mode 100644 tests/unit/unittest/mocksqlitereadstatement.cpp delete mode 100644 tests/unit/unittest/mocksqlitereadstatement.h delete mode 100644 tests/unit/unittest/mocksqlitewritestatement.h diff --git a/src/libs/clangsupport/filepathstorage.h b/src/libs/clangsupport/filepathstorage.h index 083782fec28..11c30939cd5 100644 --- a/src/libs/clangsupport/filepathstorage.h +++ b/src/libs/clangsupport/filepathstorage.h @@ -39,7 +39,8 @@ namespace ClangBackEnd { template class FilePathStorage { - using ReadStatement = typename StatementFactory::ReadStatement; + template + using ReadStatement = typename StatementFactory::template ReadStatement; using WriteStatement = typename StatementFactory::WriteStatement; using Database = typename StatementFactory::Database; @@ -84,7 +85,7 @@ public: Utils::optional readDirectoryId(Utils::SmallStringView directoryPath) { - ReadStatement &statement = m_statementFactory.selectDirectoryIdFromDirectoriesByDirectoryPath; + auto &statement = m_statementFactory.selectDirectoryIdFromDirectoriesByDirectoryPath; return statement.template value(directoryPath); } @@ -103,7 +104,7 @@ public: try { Sqlite::DeferredTransaction transaction{m_statementFactory.database}; - ReadStatement &statement = m_statementFactory.selectDirectoryPathFromDirectoriesByDirectoryId; + auto &statement = m_statementFactory.selectDirectoryPathFromDirectoriesByDirectoryId; auto optionalDirectoryPath = statement.template value(directoryPathId); @@ -123,9 +124,9 @@ public: try { Sqlite::DeferredTransaction transaction{m_statementFactory.database}; - ReadStatement &statement = m_statementFactory.selectAllDirectories; + auto &statement = m_statementFactory.selectAllDirectories; - auto directories = statement.template values(256); + auto directories = statement.template values(256); transaction.commit(); @@ -164,7 +165,7 @@ public: int writeSourceId(int directoryId, Utils::SmallStringView sourceName) { - WriteStatement &statement = m_statementFactory.insertIntoSources; + auto &statement = m_statementFactory.insertIntoSources; statement.write(directoryId, sourceName); @@ -173,7 +174,7 @@ public: Utils::optional readSourceId(int directoryId, Utils::SmallStringView sourceName) { - ReadStatement &statement = m_statementFactory.selectSourceIdFromSourcesByDirectoryIdAndSourceName; + auto &statement = m_statementFactory.selectSourceIdFromSourcesByDirectoryIdAndSourceName; return statement.template value(directoryId, sourceName); } @@ -183,9 +184,10 @@ public: try { Sqlite::DeferredTransaction transaction{m_statementFactory.database}; - ReadStatement &statement = m_statementFactory.selectSourceNameAndDirectoryIdFromSourcesBySourceId; + auto &statement = m_statementFactory.selectSourceNameAndDirectoryIdFromSourcesBySourceId; - auto optionalSourceName = statement.template value(sourceId); + auto optionalSourceName = statement.template value( + sourceId); if (!optionalSourceName) throw SourceNameIdDoesNotExists(); @@ -203,7 +205,7 @@ public: try { Sqlite::DeferredTransaction transaction{m_statementFactory.database}; - ReadStatement &statement = m_statementFactory.selectDirectoryIdFromSourcesBySourceId; + auto &statement = m_statementFactory.selectDirectoryIdFromSourcesBySourceId; auto optionalDirectoryId = statement.template value(sourceId); @@ -223,9 +225,9 @@ public: try { Sqlite::DeferredTransaction transaction{m_statementFactory.database}; - ReadStatement &statement = m_statementFactory.selectAllSources; + auto &statement = m_statementFactory.selectAllSources; - auto sources = statement.template values(8192); + auto sources = statement.template values(8192); transaction.commit(); diff --git a/src/libs/clangsupport/filepathstoragesqlitestatementfactory.h b/src/libs/clangsupport/filepathstoragesqlitestatementfactory.h index f0d261dd495..1698fcf0649 100644 --- a/src/libs/clangsupport/filepathstoragesqlitestatementfactory.h +++ b/src/libs/clangsupport/filepathstoragesqlitestatementfactory.h @@ -35,8 +35,9 @@ class FilePathStorageSqliteStatementFactory { public: using Database = DatabaseType; - using ReadStatement = typename DatabaseType::ReadStatement; - using WriteStatement = typename DatabaseType::WriteStatement; + template + using ReadStatement = typename Database::template ReadStatement; + using WriteStatement = typename Database::WriteStatement; FilePathStorageSqliteStatementFactory(Database &database) : database(database) @@ -45,32 +46,28 @@ public: public: Database &database; - ReadStatement selectDirectoryIdFromDirectoriesByDirectoryPath{ - "SELECT directoryId FROM directories WHERE directoryPath = ?", - database - }; - ReadStatement selectDirectoryPathFromDirectoriesByDirectoryId{ + ReadStatement<1> selectDirectoryIdFromDirectoriesByDirectoryPath{ + "SELECT directoryId FROM directories WHERE directoryPath = ?", database}; + ReadStatement<1> selectDirectoryPathFromDirectoriesByDirectoryId{ "SELECT directoryPath FROM directories WHERE directoryId = ?", database}; - ReadStatement selectAllDirectories{"SELECT directoryPath, directoryId FROM directories", database}; + ReadStatement<2> selectAllDirectories{"SELECT directoryPath, directoryId FROM directories", + database}; WriteStatement insertIntoDirectories{ "INSERT INTO directories(directoryPath) VALUES (?)", database }; - ReadStatement selectSourceIdFromSourcesByDirectoryIdAndSourceName{ - "SELECT sourceId FROM sources WHERE directoryId = ? AND sourceName = ?", - database - }; - ReadStatement selectSourceNameAndDirectoryIdFromSourcesBySourceId{ - "SELECT sourceName, directoryId FROM sources WHERE sourceId = ?", - database - }; - ReadStatement selectDirectoryIdFromSourcesBySourceId{ + ReadStatement<1> selectSourceIdFromSourcesByDirectoryIdAndSourceName{ + "SELECT sourceId FROM sources WHERE directoryId = ? AND sourceName = ?", database}; + ReadStatement<2> selectSourceNameAndDirectoryIdFromSourcesBySourceId{ + "SELECT sourceName, directoryId FROM sources WHERE sourceId = ?", database}; + ReadStatement<1> selectDirectoryIdFromSourcesBySourceId{ "SELECT directoryId FROM sources WHERE sourceId = ?", database}; WriteStatement insertIntoSources{ "INSERT INTO sources(directoryId, sourceName) VALUES (?,?)", database }; - ReadStatement selectAllSources{"SELECT sourceName, directoryId, sourceId FROM sources", database}; + ReadStatement<3> selectAllSources{"SELECT sourceName, directoryId, sourceId FROM sources", + database}; }; } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/projectpartsstorage.h b/src/libs/clangsupport/projectpartsstorage.h index 6363ae708fa..fa211b83bc2 100644 --- a/src/libs/clangsupport/projectpartsstorage.h +++ b/src/libs/clangsupport/projectpartsstorage.h @@ -36,7 +36,8 @@ namespace ClangBackEnd { template class ProjectPartsStorage final : public ProjectPartsStorageInterface { - using ReadStatement = typename Database::ReadStatement; + template + using ReadStatement = typename Database::template ReadStatement; using WriteStatement = typename Database::WriteStatement; public: @@ -52,7 +53,7 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - auto values = fetchProjectPartsStatement.template values(4096); + auto values = fetchProjectPartsStatement.template values(4096); transaction.commit(); @@ -91,7 +92,7 @@ public: Sqlite::DeferredTransaction transaction{database}; for (ProjectPartId projectPartId : projectPartIds) { - auto value = fetchProjectPartByIdStatement.template value( + auto value = fetchProjectPartByIdStatement.template value( projectPartId.projectPathId); if (value) { value->headerPathIds = fetchHeaders(projectPartId); @@ -243,9 +244,9 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - ReadStatement &statement = getProjectPartArtefactsBySourceId; + auto &statement = getProjectPartArtefactsBySourceId; - auto value = statement.template value(sourceId.filePathId); + auto value = statement.template value(sourceId.filePathId); transaction.commit(); @@ -260,9 +261,9 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - ReadStatement &statement = getProjectPartArtefactsByProjectPartId; + auto &statement = getProjectPartArtefactsByProjectPartId; - auto value = statement.template value(projectPartId.projectPathId); + auto value = statement.template value(projectPartId.projectPathId); transaction.commit(); @@ -342,9 +343,9 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - ReadStatement &statement = fetchAllProjectPartNamesAndIdsStatement; + auto &statement = fetchAllProjectPartNamesAndIdsStatement; - auto values = statement.template values(256); + auto values = statement.template values(256); transaction.commit(); @@ -357,18 +358,18 @@ public: public: Sqlite::ImmediateNonThrowingDestructorTransaction transaction; Database &database; - mutable ReadStatement fetchProjectPartIdStatement{ + mutable ReadStatement<1> fetchProjectPartIdStatement{ "SELECT projectPartId FROM projectParts WHERE projectPartName = ?", database}; mutable WriteStatement insertProjectPartNameStatement{ "INSERT INTO projectParts(projectPartName) VALUES (?)", database}; - mutable ReadStatement fetchProjectPartNameStatement{ + mutable ReadStatement<1> fetchProjectPartNameStatement{ "SELECT projectPartName FROM projectParts WHERE projectPartId = ?", database}; - mutable ReadStatement fetchProjectPartsStatement{ + mutable ReadStatement<8> fetchProjectPartsStatement{ "SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, " "projectIncludeSearchPaths, projectPartId, language, languageVersion, languageExtension " "FROM projectParts", database}; - mutable ReadStatement fetchProjectPartByIdStatement{ + mutable ReadStatement<8> fetchProjectPartByIdStatement{ "SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, " "projectIncludeSearchPaths, projectPartId, language, languageVersion, languageExtension " "FROM projectParts WHERE projectPartId = ?", @@ -378,13 +379,13 @@ public: "systemIncludeSearchPaths=?004, projectIncludeSearchPaths=?005, language=?006, " "languageVersion=?007, languageExtension=?008 WHERE projectPartId = ?001", database}; - mutable ReadStatement getProjectPartArtefactsBySourceId{ + mutable ReadStatement<8> getProjectPartArtefactsBySourceId{ "SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, " "projectIncludeSearchPaths, projectPartId, language, languageVersion, languageExtension " "FROM projectParts WHERE projectPartId = (SELECT " "projectPartId FROM projectPartsFiles WHERE sourceId = ?)", database}; - mutable ReadStatement getProjectPartArtefactsByProjectPartId{ + mutable ReadStatement<8> getProjectPartArtefactsByProjectPartId{ "SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, " "projectIncludeSearchPaths, projectPartId, language, languageVersion, languageExtension " "FROM projectParts WHERE projectPartId = ?", @@ -397,17 +398,17 @@ public: "INSERT INTO projectPartsHeaders(projectPartId, sourceId) VALUES (?,?)", database}; WriteStatement insertProjectPartsSourcesStatement{ "INSERT INTO projectPartsSources(projectPartId, sourceId) VALUES (?,?)", database}; - mutable ReadStatement fetchProjectPartsHeadersByIdStatement{ + mutable ReadStatement<1> fetchProjectPartsHeadersByIdStatement{ "SELECT sourceId FROM projectPartsHeaders WHERE projectPartId = ? ORDER BY sourceId", database}; - mutable ReadStatement fetchProjectPartsSourcesByIdStatement{ + mutable ReadStatement<1> fetchProjectPartsSourcesByIdStatement{ "SELECT sourceId FROM projectPartsSources WHERE projectPartId = ? ORDER BY sourceId", database}; - mutable ReadStatement fetchProjectPrecompiledHeaderBuildTimeStatement{ + mutable ReadStatement<1> fetchProjectPrecompiledHeaderBuildTimeStatement{ "SELECT projectPchBuildTime FROM precompiledHeaders WHERE projectPartId = ?", database}; WriteStatement resetDependentIndexingTimeStampsStatement{ "UPDATE fileStatuses SET indexingTimeStamp = NULL WHERE sourceId = ?", database}; - mutable ReadStatement fetchAllProjectPartNamesAndIdsStatement{ + mutable ReadStatement<2> fetchAllProjectPartNamesAndIdsStatement{ "SELECT projectPartName, projectPartId FROM projectParts", database}; }; } // namespace ClangBackEnd diff --git a/src/libs/sqlite/CMakeLists.txt b/src/libs/sqlite/CMakeLists.txt index f684fa0849f..4bf3ae91df0 100644 --- a/src/libs/sqlite/CMakeLists.txt +++ b/src/libs/sqlite/CMakeLists.txt @@ -30,15 +30,15 @@ add_qtc_library(Sqlite sqliteexception.cpp sqliteexception.h sqliteglobal.cpp sqliteglobal.h sqliteindex.h - sqlitereadstatement.cpp sqlitereadstatement.h - sqlitereadwritestatement.cpp sqlitereadwritestatement.h + sqlitereadstatement.h + sqlitereadwritestatement.h sqlitesessionchangeset.cpp sqlitesessionchangeset.h sqlitesessions.cpp sqlitesessions.h sqlitetable.h sqlitetransaction.h sqlitetransaction.h sqlitevalue.h - sqlitewritestatement.cpp sqlitewritestatement.h + sqlitewritestatement.h sqlstatementbuilder.cpp sqlstatementbuilder.h sqlstatementbuilderexception.h tableconstraints.h diff --git a/src/libs/sqlite/sqlite-lib.pri b/src/libs/sqlite/sqlite-lib.pri index fd02c8801f0..87b63eb388e 100644 --- a/src/libs/sqlite/sqlite-lib.pri +++ b/src/libs/sqlite/sqlite-lib.pri @@ -15,11 +15,8 @@ SOURCES += \ $$PWD/sqlitedatabasebackend.cpp \ $$PWD/sqliteexception.cpp \ $$PWD/sqliteglobal.cpp \ - $$PWD/sqlitereadstatement.cpp \ - $$PWD/sqlitereadwritestatement.cpp \ $$PWD/sqlitesessionchangeset.cpp \ $$PWD/sqlitesessions.cpp \ - $$PWD/sqlitewritestatement.cpp \ $$PWD/sqlstatementbuilder.cpp \ $$PWD/utf8string.cpp \ $$PWD/utf8stringvector.cpp \ diff --git a/src/libs/sqlite/sqlite-source.pri b/src/libs/sqlite/sqlite-source.pri index 57292939018..e951f2e1a7a 100644 --- a/src/libs/sqlite/sqlite-source.pri +++ b/src/libs/sqlite/sqlite-source.pri @@ -10,12 +10,9 @@ SOURCES += \ sqlitedatabaseconnectionproxy.cpp \ sqliteexception.cpp \ sqliteglobal.cpp \ - sqlitereadstatement.cpp \ - sqlitereadwritestatement.cpp \ sqlitestatement.cpp \ sqlitetransaction.cpp \ sqliteworkerthread.cpp \ - sqlitewritestatement.cpp \ sqlstatementbuilder.cpp \ utf8string.cpp \ utf8stringvector.cpp \ diff --git a/src/libs/sqlite/sqlitebasestatement.h b/src/libs/sqlite/sqlitebasestatement.h index d59e9adb14f..68b821a14c2 100644 --- a/src/libs/sqlite/sqlitebasestatement.h +++ b/src/libs/sqlite/sqlitebasestatement.h @@ -159,7 +159,7 @@ extern template SQLITE_EXPORT Utils::SmallStringView BaseStatement::fetchValue(int column) const; extern template SQLITE_EXPORT Utils::PathString BaseStatement::fetchValue(int column) const; -template +template class StatementImplementation : public BaseStatement { @@ -192,18 +192,15 @@ public: resetter.reset(); } - template + template std::vector values(std::size_t reserveSize) { - BaseStatement::checkColumnCount(ResultTypeCount); - Resetter resetter{*this}; std::vector resultValues; resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); while (BaseStatement::next()) - emplaceBackValues(resultValues); + emplaceBackValues(resultValues); setMaximumResultCount(resultValues.size()); @@ -212,11 +209,9 @@ public: return resultValues; } - template + template auto values(std::size_t reserveSize, const QueryTypes &...queryValues) { - BaseStatement::checkColumnCount(ResultTypeCount); - Resetter resetter{*this}; std::vector resultValues; resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); @@ -224,7 +219,7 @@ public: bindValues(queryValues...); while (BaseStatement::next()) - emplaceBackValues(resultValues); + emplaceBackValues(resultValues); setMaximumResultCount(resultValues.size()); @@ -233,66 +228,16 @@ public: return resultValues; } - template - auto values(std::size_t reserveSize, const std::vector &queryValues) - { - BaseStatement::checkColumnCount(ResultTypeCount); - - std::vector resultValues; - resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); - - for (const QueryElementType &queryValue : queryValues) { - Resetter resetter{*this}; - bindValues(queryValue); - - while (BaseStatement::next()) - emplaceBackValues(resultValues); - - setMaximumResultCount(resultValues.size()); - - resetter.reset(); - } - - return resultValues; - } - - template - auto values(std::size_t reserveSize, - const std::vector> &queryTuples) - { - BaseStatement::checkColumnCount(ResultTypeCount); - - using Container = std::vector; - Container resultValues; - resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); - - for (const auto &queryTuple : queryTuples) { - Resetter resetter{*this}; - bindTupleValues(queryTuple); - - while (BaseStatement::next()) - emplaceBackValues(resultValues); - - setMaximumResultCount(resultValues.size()); - - resetter.reset(); - } - - return resultValues; - } - - template + template auto value(const QueryTypes &...queryValues) { - BaseStatement::checkColumnCount(ResultTypeCount); - Resetter resetter{*this}; Utils::optional resultValue; bindValues(queryValues...); if (BaseStatement::next()) - resultValue = assignValue, ResultTypeCount>(); + resultValue = assignValue>(); resetter.reset(); @@ -311,17 +256,15 @@ public: return statement.template fetchValue(0); } - template + template void readCallback(Callable &&callable, const QueryTypes &...queryValues) { - BaseStatement::checkColumnCount(ResultTypeCount); - Resetter resetter{*this}; bindValues(queryValues...); while (BaseStatement::next()) { - auto control = callCallable(callable); + auto control = callCallable(callable); if (control == CallbackControl::Abort) break; @@ -333,14 +276,12 @@ public: template void readTo(Container &container, const QueryTypes &...queryValues) { - BaseStatement::checkColumnCount(ResultTypeCount); - Resetter resetter{*this}; bindValues(queryValues...); while (BaseStatement::next()) - emplaceBackValues(container); + emplaceBackValues(container); resetter.reset(); } @@ -399,18 +340,21 @@ private: int column; }; - template + constexpr int resultCount(int localResultCount) const + { + return ResultCount < 0 ? localResultCount : ResultCount; + } + + template void emplaceBackValues(ContainerType &container, std::integer_sequence) { container.emplace_back(ValueGetter(*this, ColumnIndices)...); } - template + template void emplaceBackValues(ContainerType &container) { - emplaceBackValues(container, std::make_integer_sequence{}); + emplaceBackValues(container, std::make_integer_sequence{}); } template + template ResultOptionalType assignValue() { - return assignValue(std::make_integer_sequence{}); + return assignValue(std::make_integer_sequence{}); } template @@ -433,10 +376,10 @@ private: return std::invoke(callable, ValueGetter(*this, ColumnIndices)...); } - template + template CallbackControl callCallable(Callable &&callable) { - return callCallable(callable, std::make_integer_sequence{}); + return callCallable(callable, std::make_integer_sequence{}); } template diff --git a/src/libs/sqlite/sqlitedatabase.cpp b/src/libs/sqlite/sqlitedatabase.cpp index 994dfd3c036..2cae9b2fc32 100644 --- a/src/libs/sqlite/sqlitedatabase.cpp +++ b/src/libs/sqlite/sqlitedatabase.cpp @@ -47,11 +47,11 @@ public: public: Database &database; - ReadWriteStatement deferredBegin{"BEGIN", database}; - ReadWriteStatement immediateBegin{"BEGIN IMMEDIATE", database}; - ReadWriteStatement exclusiveBegin{"BEGIN EXCLUSIVE", database}; - ReadWriteStatement commitBegin{"COMMIT", database}; - ReadWriteStatement rollbackBegin{"ROLLBACK", database}; + ReadWriteStatement<> deferredBegin{"BEGIN", database}; + ReadWriteStatement<> immediateBegin{"BEGIN IMMEDIATE", database}; + ReadWriteStatement<> exclusiveBegin{"BEGIN EXCLUSIVE", database}; + ReadWriteStatement<> commitBegin{"COMMIT", database}; + ReadWriteStatement<> rollbackBegin{"ROLLBACK", database}; Sessions sessions{database, "main", "databaseSessions"}; }; diff --git a/src/libs/sqlite/sqlitedatabase.h b/src/libs/sqlite/sqlitedatabase.h index 63afb6e72ec..077e2723e05 100644 --- a/src/libs/sqlite/sqlitedatabase.h +++ b/src/libs/sqlite/sqlitedatabase.h @@ -42,8 +42,10 @@ namespace Sqlite { using namespace std::chrono_literals; +template class ReadStatement; class WriteStatement; +template class ReadWriteStatement; class SQLITE_EXPORT Database final : public TransactionInterface, public DatabaseInterface @@ -54,9 +56,11 @@ class SQLITE_EXPORT Database final : public TransactionInterface, public Databas public: using MutexType = std::mutex; - using ReadStatement = Sqlite::ReadStatement; + template + using ReadStatement = Sqlite::ReadStatement; using WriteStatement = Sqlite::WriteStatement; - using ReadWriteStatement = Sqlite::ReadWriteStatement; + template + using ReadWriteStatement = Sqlite::ReadWriteStatement; using BusyHandler = DatabaseBackend::BusyHandler; Database(); diff --git a/src/libs/sqlite/sqlitedatabasebackend.cpp b/src/libs/sqlite/sqlitedatabasebackend.cpp index 46097406e8c..0101e826260 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.cpp +++ b/src/libs/sqlite/sqlitedatabasebackend.cpp @@ -128,7 +128,9 @@ sqlite3 *DatabaseBackend::sqliteDatabaseHandle() const void DatabaseBackend::setPragmaValue(Utils::SmallStringView pragmaKey, Utils::SmallStringView newPragmaValue) { - execute(Utils::SmallString{"PRAGMA ", pragmaKey, "='", newPragmaValue, "'"}); + ReadWriteStatement<1>{Utils::SmallString{"PRAGMA ", pragmaKey, "='", newPragmaValue, "'"}, + m_database} + .execute(); Utils::SmallString pragmeValueInDatabase = toValue("PRAGMA " + pragmaKey); checkPragmaValue(pragmeValueInDatabase, newPragmaValue); @@ -172,7 +174,7 @@ void DatabaseBackend::setLastInsertedRowId(int64_t rowId) void DatabaseBackend::execute(Utils::SmallStringView sqlStatement) { try { - ReadWriteStatement statement(sqlStatement, m_database); + ReadWriteStatement<0> statement(sqlStatement, m_database); statement.execute(); } catch (StatementIsBusy &) { execute(sqlStatement); @@ -454,7 +456,7 @@ template Type DatabaseBackend::toValue(Utils::SmallStringView sqlStatement) { try { - ReadWriteStatement statement(sqlStatement, m_database); + ReadWriteStatement<1> statement(sqlStatement, m_database); statement.next(); diff --git a/src/libs/sqlite/sqlitereadstatement.cpp b/src/libs/sqlite/sqlitereadstatement.cpp deleted file mode 100644 index 91e672985bd..00000000000 --- a/src/libs/sqlite/sqlitereadstatement.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlitereadstatement.h" - -#include "sqlite3.h" - -namespace Sqlite { - -ReadStatement::ReadStatement(Utils::SmallStringView sqlStatement, - Database &database) - : StatementImplementation(sqlStatement, database) -{ - checkIsReadOnlyStatement(); -} - -void ReadStatement::checkIsReadOnlyStatement() -{ - if (!isReadOnlyStatement()) - throw NotReadOnlySqlStatement("SqliteStatement::SqliteReadStatement: is not read only statement!"); -} - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlitereadstatement.h b/src/libs/sqlite/sqlitereadstatement.h index 236aab67f17..eb9c4e5cc5c 100644 --- a/src/libs/sqlite/sqlitereadstatement.h +++ b/src/libs/sqlite/sqlitereadstatement.h @@ -29,19 +29,37 @@ namespace Sqlite { -class SQLITE_EXPORT ReadStatement final : protected StatementImplementation +template +class ReadStatement final : protected StatementImplementation { -public: - explicit ReadStatement(Utils::SmallStringView sqlStatement, Database &database); + using Base = StatementImplementation; - using StatementImplementation::readCallback; - using StatementImplementation::readTo; - using StatementImplementation::toValue; - using StatementImplementation::value; - using StatementImplementation::values; +public: + ReadStatement(Utils::SmallStringView sqlStatement, Database &database) + : Base{sqlStatement, database} + { + checkIsReadOnlyStatement(); + Base::checkColumnCount(ResultCount); + } + + using Base::readCallback; + using Base::readTo; + using Base::toValue; + using Base::value; + using Base::values; protected: - void checkIsReadOnlyStatement(); + void checkIsReadOnlyStatement() + { + if (!Base::isReadOnlyStatement()) + throw NotReadOnlySqlStatement( + "SqliteStatement::SqliteReadStatement: is not read only statement!"); + } }; +template +ReadStatement(ReadStatement &) -> ReadStatement; +template +ReadStatement(const ReadStatement &) -> ReadStatement; + } // namespace Sqlite diff --git a/src/libs/sqlite/sqlitereadwritestatement.cpp b/src/libs/sqlite/sqlitereadwritestatement.cpp deleted file mode 100644 index 8910ffd7f06..00000000000 --- a/src/libs/sqlite/sqlitereadwritestatement.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlitereadwritestatement.h" - -namespace Sqlite { - -ReadWriteStatement::ReadWriteStatement(Utils::SmallStringView sqlStatement, - Database &database) - : StatementImplementation(sqlStatement, database) -{ -} - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlitereadwritestatement.h b/src/libs/sqlite/sqlitereadwritestatement.h index 6adc9ebb35f..4e2aecabc72 100644 --- a/src/libs/sqlite/sqlitereadwritestatement.h +++ b/src/libs/sqlite/sqlitereadwritestatement.h @@ -29,20 +29,26 @@ namespace Sqlite { -class SQLITE_EXPORT ReadWriteStatement final : protected StatementImplementation +template +class ReadWriteStatement final : protected StatementImplementation { friend class DatabaseBackend; + using Base = StatementImplementation; public: - ReadWriteStatement(Utils::SmallStringView sqlStatement, Database &database); + ReadWriteStatement(Utils::SmallStringView sqlStatement, Database &database) + : Base{sqlStatement, database} + { + Base::checkColumnCount(ResultCount); + } - using StatementImplementation::execute; - using StatementImplementation::readCallback; - using StatementImplementation::readTo; - using StatementImplementation::toValue; - using StatementImplementation::value; - using StatementImplementation::values; - using StatementImplementation::write; + using Base::execute; + using Base::readCallback; + using Base::readTo; + using Base::toValue; + using Base::value; + using Base::values; + using Base::write; }; } // namespace Sqlite diff --git a/src/libs/sqlite/sqlitesessions.cpp b/src/libs/sqlite/sqlitesessions.cpp index b1fc2361710..df668fdc593 100644 --- a/src/libs/sqlite/sqlitesessions.cpp +++ b/src/libs/sqlite/sqlitesessions.cpp @@ -127,10 +127,10 @@ void Internal::SessionsBase::createSessionTable(Database &database) void Sessions::revert() { - ReadStatement selectChangeSets{Utils::PathString{"SELECT changeset FROM ", - sessionsTableName, - " ORDER BY id DESC"}, - database}; + ReadStatement<1> selectChangeSets{Utils::PathString{"SELECT changeset FROM ", + sessionsTableName, + " ORDER BY id DESC"}, + database}; auto changeSets = selectChangeSets.values(1024); @@ -151,10 +151,10 @@ void Sessions::revert() void Sessions::apply() { - ReadStatement selectChangeSets{Utils::PathString{"SELECT changeset FROM ", - sessionsTableName, - " ORDER BY id"}, - database}; + ReadStatement<1> selectChangeSets{Utils::PathString{"SELECT changeset FROM ", + sessionsTableName, + " ORDER BY id"}, + database}; auto changeSets = selectChangeSets.values(1024); @@ -187,10 +187,10 @@ void Sessions::deleteAll() SessionChangeSets Sessions::changeSets() const { - ReadStatement selectChangeSets{Utils::PathString{"SELECT changeset FROM ", - sessionsTableName, - " ORDER BY id DESC"}, - database}; + ReadStatement<1> selectChangeSets{Utils::PathString{"SELECT changeset FROM ", + sessionsTableName, + " ORDER BY id DESC"}, + database}; return selectChangeSets.values(1024); } diff --git a/src/libs/sqlite/sqlitewritestatement.cpp b/src/libs/sqlite/sqlitewritestatement.cpp deleted file mode 100644 index 89fce7abf3d..00000000000 --- a/src/libs/sqlite/sqlitewritestatement.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlitewritestatement.h" - -namespace Sqlite { - -WriteStatement::WriteStatement(Utils::SmallStringView sqlStatement, - Database &database) - : StatementImplementation(sqlStatement, database) -{ - checkIsWritableStatement(); -} - -void WriteStatement::checkIsWritableStatement() -{ - if (isReadOnlyStatement()) - throw NotWriteSqlStatement("SqliteStatement::SqliteWriteStatement: is not a writable statement!"); -} - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlitewritestatement.h b/src/libs/sqlite/sqlitewritestatement.h index 4dbcd4f9c68..1a0bb5832ca 100644 --- a/src/libs/sqlite/sqlitewritestatement.h +++ b/src/libs/sqlite/sqlitewritestatement.h @@ -29,17 +29,28 @@ namespace Sqlite { -class SQLITE_EXPORT WriteStatement : protected StatementImplementation +class WriteStatement : protected StatementImplementation { -public: - explicit WriteStatement(Utils::SmallStringView sqlStatement, Database &database); + using Base = StatementImplementation; + +public: + WriteStatement(Utils::SmallStringView sqlStatement, Database &database) + : StatementImplementation(sqlStatement, database) + { + checkIsWritableStatement(); + } - using StatementImplementation::execute; using StatementImplementation::database; + using StatementImplementation::execute; using StatementImplementation::write; protected: - void checkIsWritableStatement(); + void checkIsWritableStatement() + { + if (Base::isReadOnlyStatement()) + throw NotWriteSqlStatement( + "SqliteStatement::SqliteWriteStatement: is not a writable statement!"); + } }; } // namespace Sqlite diff --git a/src/plugins/clangrefactoring/querysqlitestatementfactory.h b/src/plugins/clangrefactoring/querysqlitestatementfactory.h index 65d82895792..b503a72b0ac 100644 --- a/src/plugins/clangrefactoring/querysqlitestatementfactory.h +++ b/src/plugins/clangrefactoring/querysqlitestatementfactory.h @@ -27,51 +27,54 @@ namespace ClangRefactoring { -template +template class QuerySqliteStatementFactory { public: using DatabaseType = Database; - using ReadStatementType = ReadStatement; + template + using ReadStatement = typename Database::template ReadStatement; QuerySqliteStatementFactory(Database &database) : database(database) {} Database &database; - ReadStatement selectLocationsForSymbolLocation{ + ReadStatement<3> selectLocationsForSymbolLocation{ "SELECT sourceId, line, column FROM locations WHERE symbolId = " " (SELECT symbolId FROM locations WHERE sourceId=? AND line=? AND column=?) " "ORDER BY sourceId, line, column", database}; - ReadStatement selectSourceUsagesForSymbolLocation{ + ReadStatement<3> selectSourceUsagesForSymbolLocation{ "SELECT directoryPath || '/' || sourceName, line, column " "FROM locations NATURAL JOIN sources NATURAL JOIN directories " "WHERE symbolId = (SELECT symbolId FROM locations WHERE sourceId=? AND line=? AND " "column=?)", database}; - ReadStatement selectSourceUsagesOrderedForSymbolLocation{ + ReadStatement<3> selectSourceUsagesOrderedForSymbolLocation{ "SELECT directoryPath || '/' || sourceName, line, column " "FROM locations NATURAL JOIN sources NATURAL JOIN directories " "WHERE symbolId = (SELECT symbolId FROM locations WHERE sourceId=? AND line=? AND " "column=?) ORDER BY locationKind LIMIT 2", database}; - ReadStatement selectSourceUsagesByLocationKindForSymbolLocation{ + ReadStatement<3> selectSourceUsagesByLocationKindForSymbolLocation{ "SELECT directoryPath || '/' || sourceName, line, column " "FROM locations NATURAL JOIN sources NATURAL JOIN directories " "WHERE symbolId = (SELECT symbolId FROM locations WHERE sourceId=? AND line=? AND " "column=?) AND locationKind = ?", database}; - ReadStatement selectSymbolsForKindAndStartsWith{ - "SELECT symbolId, symbolName, signature FROM symbols WHERE symbolKind = ? AND symbolName LIKE ?", + ReadStatement<3> selectSymbolsForKindAndStartsWith{ + "SELECT symbolId, symbolName, signature FROM symbols WHERE symbolKind = ? AND symbolName " + "LIKE ?", database}; - ReadStatement selectSymbolsForKindAndStartsWith2{ - "SELECT symbolId, symbolName, signature FROM symbols WHERE symbolKind IN (?,?) AND symbolName LIKE ?", + ReadStatement<3> selectSymbolsForKindAndStartsWith2{ + "SELECT symbolId, symbolName, signature FROM symbols WHERE symbolKind IN (?,?) AND " + "symbolName LIKE ?", database}; - ReadStatement selectSymbolsForKindAndStartsWith3{ - "SELECT symbolId, symbolName, signature FROM symbols WHERE symbolKind IN (?,?,?) AND symbolName LIKE ?", + ReadStatement<3> selectSymbolsForKindAndStartsWith3{ + "SELECT symbolId, symbolName, signature FROM symbols WHERE symbolKind IN (?,?,?) AND " + "symbolName LIKE ?", database}; - ReadStatement selectLocationOfSymbol{ + ReadStatement<3> selectLocationOfSymbol{ "SELECT sourceId, line, column FROM locations AS l WHERE symbolId = ? AND locationKind = ?", database}; }; diff --git a/src/plugins/clangrefactoring/symbolquery.h b/src/plugins/clangrefactoring/symbolquery.h index 2468369c828..7ceab186fdc 100644 --- a/src/plugins/clangrefactoring/symbolquery.h +++ b/src/plugins/clangrefactoring/symbolquery.h @@ -40,8 +40,6 @@ namespace ClangRefactoring { template class SymbolQuery final : public SymbolQueryInterface { - using ReadStatement = typename StatementFactory::ReadStatementType; - public: SymbolQuery(StatementFactory &statementFactory) : m_statementFactory(statementFactory) @@ -51,28 +49,28 @@ public: int line, int utf8Column) const override { - ReadStatement &locationsStatement = m_statementFactory.selectLocationsForSymbolLocation; + auto &locationsStatement = m_statementFactory.selectLocationsForSymbolLocation; const std::size_t reserveSize = 128; - return locationsStatement.template values(reserveSize, - filePathId.filePathId, - line, - utf8Column); + return locationsStatement.template values(reserveSize, + filePathId.filePathId, + line, + utf8Column); } CppTools::Usages sourceUsagesAt(ClangBackEnd::FilePathId filePathId, int line, int utf8Column) const override { - ReadStatement &locationsStatement = m_statementFactory.selectSourceUsagesForSymbolLocation; + auto &locationsStatement = m_statementFactory.selectSourceUsagesForSymbolLocation; const std::size_t reserveSize = 128; - return locationsStatement.template values(reserveSize, - filePathId.filePathId, - line, - utf8Column); + return locationsStatement.template values(reserveSize, + filePathId.filePathId, + line, + utf8Column); } CppTools::Usages sourceUsagesAtByLocationKind(ClangBackEnd::FilePathId filePathId, @@ -80,46 +78,46 @@ public: int utf8Column, ClangBackEnd::SourceLocationKind kind) const override { - ReadStatement &locationsStatement = m_statementFactory.selectSourceUsagesByLocationKindForSymbolLocation; + auto &locationsStatement = m_statementFactory.selectSourceUsagesByLocationKindForSymbolLocation; const std::size_t reserveSize = 128; - return locationsStatement.template values(reserveSize, - filePathId.filePathId, - line, - utf8Column, - int(kind)); + return locationsStatement.template values(reserveSize, + filePathId.filePathId, + line, + utf8Column, + int(kind)); } CppTools::Usages declarationsAt(ClangBackEnd::FilePathId filePathId, int line, int utf8Column) const override { - ReadStatement &locationsStatement = m_statementFactory.selectSourceUsagesOrderedForSymbolLocation; + auto &locationsStatement = m_statementFactory.selectSourceUsagesOrderedForSymbolLocation; const std::size_t reserveSize = 128; - return locationsStatement.template values(reserveSize, - filePathId.filePathId, - line, - utf8Column); + return locationsStatement.template values(reserveSize, + filePathId.filePathId, + line, + utf8Column); } Symbols symbolsWithOneSymbolKinds(ClangBackEnd::SymbolKind symbolKind, Utils::SmallStringView searchTerm) const { - ReadStatement &statement = m_statementFactory.selectSymbolsForKindAndStartsWith; + auto &statement = m_statementFactory.selectSymbolsForKindAndStartsWith; - return statement.template values(100, int(symbolKind), searchTerm); + return statement.template values(100, int(symbolKind), searchTerm); } Symbols symbolsWithTwoSymbolKinds(ClangBackEnd::SymbolKind symbolKind1, ClangBackEnd::SymbolKind symbolKind2, Utils::SmallStringView searchTerm) const { - ReadStatement &statement = m_statementFactory.selectSymbolsForKindAndStartsWith2; + auto &statement = m_statementFactory.selectSymbolsForKindAndStartsWith2; - return statement.template values(100, int(symbolKind1), int(symbolKind2), searchTerm); + return statement.template values(100, int(symbolKind1), int(symbolKind2), searchTerm); } Symbols symbolsWithThreeSymbolKinds(ClangBackEnd::SymbolKind symbolKind1, @@ -127,9 +125,13 @@ public: ClangBackEnd::SymbolKind symbolKind3, Utils::SmallStringView searchTerm) const { - ReadStatement &statement = m_statementFactory.selectSymbolsForKindAndStartsWith3; + auto &statement = m_statementFactory.selectSymbolsForKindAndStartsWith3; - return statement.template values(100, int(symbolKind1), int(symbolKind2), int(symbolKind3), searchTerm); + return statement.template values(100, + int(symbolKind1), + int(symbolKind2), + int(symbolKind3), + searchTerm); } Symbols symbols(const ClangBackEnd::SymbolKinds &symbolKinds, @@ -148,9 +150,9 @@ public: Utils::optional locationForSymbolId(SymbolId symbolId, ClangBackEnd::SourceLocationKind kind) const override { - ReadStatement &statement = m_statementFactory.selectLocationOfSymbol; + auto &statement = m_statementFactory.selectLocationOfSymbol; - return statement.template value(symbolId, int(kind)); + return statement.template value(symbolId, int(kind)); } private: StatementFactory &m_statementFactory; diff --git a/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h b/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h index f34dd2fca4b..bf589d951d5 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h +++ b/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h @@ -43,7 +43,8 @@ template class ImageCacheStorage : public ImageCacheStorageInterface { public: - using ReadStatement = typename DatabaseType::ReadStatement; + template + using ReadStatement = typename DatabaseType::template ReadStatement; using WriteStatement = typename DatabaseType::WriteStatement; ImageCacheStorage(DatabaseType &database) @@ -272,11 +273,11 @@ public: DatabaseType &database; Initializer initializer{database}; Sqlite::ImmediateNonThrowingDestructorTransaction transaction{database}; - mutable ReadStatement selectImageStatement{ + mutable ReadStatement<1> selectImageStatement{ "SELECT image FROM images WHERE name=?1 AND mtime >= ?2", database}; - mutable ReadStatement selectSmallImageStatement{ + mutable ReadStatement<1> selectSmallImageStatement{ "SELECT smallImage FROM images WHERE name=?1 AND mtime >= ?2", database}; - mutable ReadStatement selectIconStatement{ + mutable ReadStatement<1> selectIconStatement{ "SELECT icon FROM icons WHERE name=?1 AND mtime >= ?2", database}; WriteStatement upsertImageStatement{ "INSERT INTO images(name, mtime, image, smallImage) VALUES (?1, ?2, ?3, ?4) ON " diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h index 96dd3205bca..19b3a982807 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h @@ -43,7 +43,8 @@ namespace ClangBackEnd { template class BuildDependenciesStorage final : public BuildDependenciesStorageInterface { - using ReadStatement = typename Database::ReadStatement; + template + using ReadStatement = typename Database::template ReadStatement; using WriteStatement = typename Database::WriteStatement; public: BuildDependenciesStorage(Database &database) @@ -99,7 +100,7 @@ public: long long fetchLowestLastModifiedTime(FilePathId sourceId) const override { - ReadStatement &statement = getLowestLastModifiedTimeOfDependencies; + auto &statement = getLowestLastModifiedTimeOfDependencies; return statement.template value(sourceId.filePathId).value_or(0); } @@ -143,12 +144,12 @@ public: SourceEntries fetchDependSources(FilePathId sourceId, ProjectPartId projectPartId) const override { return fetchSourceDependenciesStatement - .template values(300, sourceId.filePathId, projectPartId.projectPathId); + .template values(300, sourceId.filePathId, projectPartId.projectPathId); } UsedMacros fetchUsedMacros(FilePathId sourceId) const override { - return fetchUsedMacrosStatement.template values(128, sourceId.filePathId); + return fetchUsedMacrosStatement.template values(128, sourceId.filePathId); } void updatePchCreationTimeStamp(long long pchCreationTimeStamp, ProjectPartId projectPartId) override @@ -191,8 +192,7 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - auto timeStamps = fetchIndexingTimeStampsStatement.template values( - 1024); + auto timeStamps = fetchIndexingTimeStampsStatement.template values(1024); transaction.commit(); @@ -208,7 +208,7 @@ public: Sqlite::DeferredTransaction transaction{database}; auto timeStamps = fetchIncludedIndexingTimeStampsStatement - .template values(1024, sourcePathId.filePathId); + .template values(1024, sourcePathId.filePathId); transaction.commit(); @@ -325,10 +325,12 @@ public: "DELETE FROM newUsedMacros", database }; - mutable ReadStatement getLowestLastModifiedTimeOfDependencies{ - "WITH RECURSIVE sourceIds(sourceId) AS (VALUES(?) UNION SELECT dependencySourceId FROM sourceDependencies, sourceIds WHERE sourceDependencies.sourceId = sourceIds.sourceId) SELECT min(lastModified) FROM fileStatuses, sourceIds WHERE fileStatuses.sourceId = sourceIds.sourceId", - database - }; + mutable ReadStatement<1> getLowestLastModifiedTimeOfDependencies{ + "WITH RECURSIVE sourceIds(sourceId) AS (VALUES(?) UNION SELECT dependencySourceId FROM " + "sourceDependencies, sourceIds WHERE sourceDependencies.sourceId = sourceIds.sourceId) " + "SELECT min(lastModified) FROM fileStatuses, sourceIds WHERE fileStatuses.sourceId = " + "sourceIds.sourceId", + database}; WriteStatement insertIntoNewSourceDependenciesStatement{ "INSERT INTO newSourceDependencies(sourceId, dependencySourceId) VALUES (?,?)", database @@ -356,13 +358,13 @@ public: "CONFLICT(sourceId, projectPartId) DO UPDATE SET sourceType = ?003, " "hasMissingIncludes = ?004", database}; - mutable ReadStatement fetchPchSourcesStatement{ + mutable ReadStatement<1> fetchPchSourcesStatement{ "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? AND sourceType IN (0, 1, " "3, 4) ORDER BY sourceId", database}; - mutable ReadStatement fetchSourcesStatement{ + mutable ReadStatement<1> fetchSourcesStatement{ "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? ORDER BY sourceId", database}; - mutable ReadStatement fetchSourceDependenciesStatement{ + mutable ReadStatement<4> fetchSourceDependenciesStatement{ "WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION " "SELECT dependencySourceId FROM sourceDependencies, " "collectedDependencies WHERE sourceDependencies.sourceId == " @@ -371,16 +373,14 @@ public: "collectedDependencies NATURAL JOIN projectPartsFiles WHERE " "projectPartId = ? ORDER BY sourceId", database}; - mutable ReadStatement fetchProjectPartIdStatement{ - "SELECT projectPartId FROM projectParts WHERE projectPartName = ?", - database - }; + mutable ReadStatement<1> fetchProjectPartIdStatement{ + "SELECT projectPartId FROM projectParts WHERE projectPartName = ?", database}; WriteStatement insertProjectPartNameStatement{ "INSERT INTO projectParts(projectPartName) VALUES (?)", database}; - mutable ReadStatement fetchUsedMacrosStatement{ - "SELECT macroName, sourceId FROM usedMacros WHERE sourceId = ? ORDER BY sourceId, macroName", - database - }; + mutable ReadStatement<2> fetchUsedMacrosStatement{ + "SELECT macroName, sourceId FROM usedMacros WHERE sourceId = ? ORDER BY sourceId, " + "macroName", + database}; WriteStatement updatePchCreationTimeStampStatement{ "UPDATE projectPartsFiles SET pchCreationTimeStamp = ?001 WHERE projectPartId = ?002", database}; @@ -390,16 +390,16 @@ public: "INSERT INTO fileStatuses(sourceId, indexingTimeStamp) VALUES (?001, ?002) ON " "CONFLICT(sourceId) DO UPDATE SET indexingTimeStamp = ?002", database}; - mutable ReadStatement fetchIncludedIndexingTimeStampsStatement{ + mutable ReadStatement<2> fetchIncludedIndexingTimeStampsStatement{ "WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION SELECT " "dependencySourceId FROM sourceDependencies, collectedDependencies WHERE " "sourceDependencies.sourceId == collectedDependencies.sourceId) SELECT DISTINCT sourceId, " "indexingTimeStamp FROM collectedDependencies NATURAL LEFT JOIN fileStatuses ORDER BY " "sourceId", database}; - mutable ReadStatement fetchIndexingTimeStampsStatement{ + mutable ReadStatement<2> fetchIndexingTimeStampsStatement{ "SELECT sourceId, indexingTimeStamp FROM fileStatuses ORDER BY sourceId", database}; - mutable ReadStatement fetchDependentSourceIdsStatement{ + mutable ReadStatement<1> fetchDependentSourceIdsStatement{ "WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION SELECT " "sourceDependencies.sourceId FROM sourceDependencies, collectedDependencies WHERE " "sourceDependencies.dependencySourceId == collectedDependencies.sourceId) SELECT sourceId " diff --git a/src/tools/clangpchmanagerbackend/source/precompiledheaderstorage.h b/src/tools/clangpchmanagerbackend/source/precompiledheaderstorage.h index 8592757692d..58b3747a573 100644 --- a/src/tools/clangpchmanagerbackend/source/precompiledheaderstorage.h +++ b/src/tools/clangpchmanagerbackend/source/precompiledheaderstorage.h @@ -38,7 +38,8 @@ namespace ClangBackEnd { template class PrecompiledHeaderStorage final : public PrecompiledHeaderStorageInterface { - using ReadStatement = typename Database::ReadStatement; + template + using ReadStatement = typename Database::template ReadStatement; using WriteStatement = typename Database::WriteStatement; public: PrecompiledHeaderStorage(Database &database) @@ -184,7 +185,7 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - auto value = fetchPrecompiledHeadersStatement.template value( + auto value = fetchPrecompiledHeadersStatement.template value( projectPartId.projectPathId); transaction.commit(); @@ -204,7 +205,7 @@ public: try { Sqlite::DeferredTransaction transaction{database}; - auto value = fetchTimeStampsStatement.template value( + auto value = fetchTimeStampsStatement.template value( projectPartId.projectPathId); transaction.commit(); @@ -265,23 +266,22 @@ public: "systemPchPath=NULL,systemPchBuildTime=NULL,projectPchPath=NULL,projectPchBuildTime=NULL " "WHERE projectPartId = ?", database}; - ReadStatement fetchSystemPrecompiledHeaderPathStatement{ + ReadStatement<1> fetchSystemPrecompiledHeaderPathStatement{ "SELECT systemPchPath FROM precompiledHeaders WHERE projectPartId = ?", database}; - mutable ReadStatement fetchPrecompiledHeaderStatement{ + mutable ReadStatement<1> fetchPrecompiledHeaderStatement{ "SELECT ifnull(nullif(projectPchPath, ''), systemPchPath) " "FROM precompiledHeaders WHERE projectPartId = ?", database}; - mutable ReadStatement fetchPrecompiledHeadersStatement{ + mutable ReadStatement<2> fetchPrecompiledHeadersStatement{ "SELECT projectPchPath, systemPchPath FROM precompiledHeaders WHERE projectPartId = ?", database}; - mutable ReadStatement fetchTimeStampsStatement{ + mutable ReadStatement<2> fetchTimeStampsStatement{ "SELECT projectPchBuildTime, systemPchBuildTime FROM precompiledHeaders WHERE " "projectPartId = ?", database}; - mutable ReadStatement fetchAllPchPathsStatement{ + mutable ReadStatement<1> fetchAllPchPathsStatement{ "SELECT DISTINCT systemPchPath FROM precompiledHeaders UNION ALL SELECT " "DISTINCT projectPchPath FROM precompiledHeaders", database}; }; - -} +} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/symbolstorage.h b/src/tools/clangrefactoringbackend/source/symbolstorage.h index 89855b98cba..bc2d96b5f18 100644 --- a/src/tools/clangrefactoringbackend/source/symbolstorage.h +++ b/src/tools/clangrefactoringbackend/source/symbolstorage.h @@ -45,7 +45,8 @@ template class SymbolStorage final : public SymbolStorageInterface { using Database = DatabaseType; - using ReadStatement = typename Database::ReadStatement; + template + using ReadStatement = typename Database::template ReadStatement; using WriteStatement = typename Database::WriteStatement; public: @@ -166,7 +167,7 @@ public: "INSERT OR IGNORE INTO newLocations(temporarySymbolId, line, column, sourceId, " "locationKind) VALUES(?,?,?,?,?)", database}; - ReadStatement selectNewSourceIdsStatement{ + ReadStatement<1> selectNewSourceIdsStatement{ "SELECT DISTINCT sourceId FROM newLocations WHERE NOT EXISTS (SELECT sourceId FROM sources " "WHERE newLocations.sourceId == sources.sourceId)", database}; diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt index acbebe0fb1d..73f70489e8d 100644 --- a/tests/unit/unittest/CMakeLists.txt +++ b/tests/unit/unittest/CMakeLists.txt @@ -110,12 +110,8 @@ add_qtc_test(unittest GTEST mocksearch.h mocksearchhandle.h mocksearchresult.h - mocksqlitedatabase.h - mocksqlitereadstatement.cpp - mocksqlitereadstatement.h mocksqlitestatement.h mocksqlitetransactionbackend.h - mocksqlitewritestatement.h mocksymbolindexertaskqueue.h mocksymbolindexing.h mocksymbolquery.h diff --git a/tests/unit/unittest/builddependenciesstorage-test.cpp b/tests/unit/unittest/builddependenciesstorage-test.cpp index 125ac526d5e..f39d1dc2bbe 100644 --- a/tests/unit/unittest/builddependenciesstorage-test.cpp +++ b/tests/unit/unittest/builddependenciesstorage-test.cpp @@ -26,7 +26,7 @@ #include "googletest.h" #include "mockfilepathcaching.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include #include @@ -48,37 +48,40 @@ using Sqlite::Database; using Sqlite::Table; using Utils::PathString; -using Storage = ClangBackEnd::BuildDependenciesStorage; +using Storage = ClangBackEnd::BuildDependenciesStorage; class BuildDependenciesStorage : public testing::Test { protected: - NiceMock mockDatabase; - Storage storage{mockDatabase}; - MockSqliteWriteStatement &insertIntoNewUsedMacrosStatement = storage.insertIntoNewUsedMacrosStatement; - MockSqliteWriteStatement &syncNewUsedMacrosStatement =storage.syncNewUsedMacrosStatement; - MockSqliteWriteStatement &deleteOutdatedUsedMacrosStatement = storage.deleteOutdatedUsedMacrosStatement; - MockSqliteWriteStatement &deleteNewUsedMacrosTableStatement = storage.deleteNewUsedMacrosTableStatement; - MockSqliteWriteStatement &insertOrUpdateFileStatusesStatement = storage.insertOrUpdateFileStatusesStatement; - MockSqliteWriteStatement &insertIntoNewSourceDependenciesStatement = storage.insertIntoNewSourceDependenciesStatement; - MockSqliteWriteStatement &syncNewSourceDependenciesStatement = storage.syncNewSourceDependenciesStatement; - MockSqliteWriteStatement &deleteOutdatedSourceDependenciesStatement = storage.deleteOutdatedSourceDependenciesStatement; - MockSqliteWriteStatement &deleteNewSourceDependenciesStatement = storage.deleteNewSourceDependenciesStatement; - MockSqliteReadStatement &getLowestLastModifiedTimeOfDependencies = storage.getLowestLastModifiedTimeOfDependencies; - MockSqliteWriteStatement &insertOrUpdateProjectPartsFilesStatement = storage.insertOrUpdateProjectPartsFilesStatement; - MockSqliteReadStatement &fetchSourceDependenciesStatement = storage.fetchSourceDependenciesStatement; - MockSqliteReadStatement &fetchProjectPartIdStatement = storage.fetchProjectPartIdStatement; - MockSqliteReadStatement &fetchUsedMacrosStatement = storage.fetchUsedMacrosStatement; - MockSqliteWriteStatement &insertProjectPartNameStatement = storage.insertProjectPartNameStatement; - MockSqliteWriteStatement &updatePchCreationTimeStampStatement = storage.updatePchCreationTimeStampStatement; - MockSqliteWriteStatement &deleteAllProjectPartsFilesWithProjectPartNameStatement + NiceMock databaseMock; + template + using ReadStatement = NiceMock::ReadStatement; + using WriteStatement = NiceMock::WriteStatement; + Storage storage{databaseMock}; + WriteStatement &insertIntoNewUsedMacrosStatement = storage.insertIntoNewUsedMacrosStatement; + WriteStatement &syncNewUsedMacrosStatement = storage.syncNewUsedMacrosStatement; + WriteStatement &deleteOutdatedUsedMacrosStatement = storage.deleteOutdatedUsedMacrosStatement; + WriteStatement &deleteNewUsedMacrosTableStatement = storage.deleteNewUsedMacrosTableStatement; + WriteStatement &insertOrUpdateFileStatusesStatement = storage.insertOrUpdateFileStatusesStatement; + WriteStatement &insertIntoNewSourceDependenciesStatement = storage.insertIntoNewSourceDependenciesStatement; + WriteStatement &syncNewSourceDependenciesStatement = storage.syncNewSourceDependenciesStatement; + WriteStatement &deleteOutdatedSourceDependenciesStatement = storage.deleteOutdatedSourceDependenciesStatement; + WriteStatement &deleteNewSourceDependenciesStatement = storage.deleteNewSourceDependenciesStatement; + ReadStatement<1> &getLowestLastModifiedTimeOfDependencies = storage.getLowestLastModifiedTimeOfDependencies; + WriteStatement &insertOrUpdateProjectPartsFilesStatement = storage.insertOrUpdateProjectPartsFilesStatement; + ReadStatement<4> &fetchSourceDependenciesStatement = storage.fetchSourceDependenciesStatement; + ReadStatement<1> &fetchProjectPartIdStatement = storage.fetchProjectPartIdStatement; + ReadStatement<2> &fetchUsedMacrosStatement = storage.fetchUsedMacrosStatement; + WriteStatement &insertProjectPartNameStatement = storage.insertProjectPartNameStatement; + WriteStatement &updatePchCreationTimeStampStatement = storage.updatePchCreationTimeStampStatement; + WriteStatement &deleteAllProjectPartsFilesWithProjectPartNameStatement = storage.deleteAllProjectPartsFilesWithProjectPartNameStatement; - MockSqliteReadStatement &fetchPchSourcesStatement = storage.fetchPchSourcesStatement; - MockSqliteReadStatement &fetchSourcesStatement = storage.fetchSourcesStatement; - MockSqliteWriteStatement &inserOrUpdateIndexingTimesStampStatement = storage.inserOrUpdateIndexingTimesStampStatement; - MockSqliteReadStatement &fetchIndexingTimeStampsStatement = storage.fetchIndexingTimeStampsStatement; - MockSqliteReadStatement &fetchIncludedIndexingTimeStampsStatement = storage.fetchIncludedIndexingTimeStampsStatement; - MockSqliteReadStatement &fetchDependentSourceIdsStatement = storage.fetchDependentSourceIdsStatement; + ReadStatement<1> &fetchPchSourcesStatement = storage.fetchPchSourcesStatement; + ReadStatement<1> &fetchSourcesStatement = storage.fetchSourcesStatement; + WriteStatement &inserOrUpdateIndexingTimesStampStatement = storage.inserOrUpdateIndexingTimesStampStatement; + ReadStatement<2> &fetchIndexingTimeStampsStatement = storage.fetchIndexingTimeStampsStatement; + ReadStatement<2> &fetchIncludedIndexingTimeStampsStatement = storage.fetchIncludedIndexingTimeStampsStatement; + ReadStatement<1> &fetchDependentSourceIdsStatement = storage.fetchDependentSourceIdsStatement; }; TEST_F(BuildDependenciesStorage, ConvertStringsToJson) @@ -132,14 +135,24 @@ TEST_F(BuildDependenciesStorage, AddTablesInConstructor) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newUsedMacros(sourceId INTEGER, macroName TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newUsedMacros_sourceId_macroName ON newUsedMacros(sourceId, macroName)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newSourceDependencies(sourceId INTEGER, dependencySourceId TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSourceDependencies_sourceId_dependencySourceId ON newSourceDependencies(sourceId, dependencySourceId)"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, immediateBegin()); + EXPECT_CALL(databaseMock, + execute( + Eq("CREATE TEMPORARY TABLE newUsedMacros(sourceId INTEGER, macroName TEXT)"))); + EXPECT_CALL(databaseMock, + execute(Eq("CREATE INDEX IF NOT EXISTS index_newUsedMacros_sourceId_macroName ON " + "newUsedMacros(sourceId, macroName)"))); + EXPECT_CALL(databaseMock, + execute(Eq("CREATE TEMPORARY TABLE newSourceDependencies(sourceId INTEGER, " + "dependencySourceId TEXT)"))); + EXPECT_CALL( + databaseMock, + execute( + Eq("CREATE INDEX IF NOT EXISTS index_newSourceDependencies_sourceId_dependencySourceId " + "ON newSourceDependencies(sourceId, dependencySourceId)"))); + EXPECT_CALL(databaseMock, commit()); - Storage storage{mockDatabase}; + Storage storage{databaseMock}; } TEST_F(BuildDependenciesStorage, FetchLowestLastModifiedTimeIfNoModificationTimeExists) @@ -165,8 +178,12 @@ TEST_F(BuildDependenciesStorage, AddNewUsedMacroTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newUsedMacros(sourceId INTEGER, macroName TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newUsedMacros_sourceId_macroName ON newUsedMacros(sourceId, macroName)"))); + EXPECT_CALL(databaseMock, + execute( + Eq("CREATE TEMPORARY TABLE newUsedMacros(sourceId INTEGER, macroName TEXT)"))); + EXPECT_CALL(databaseMock, + execute(Eq("CREATE INDEX IF NOT EXISTS index_newUsedMacros_sourceId_macroName ON " + "newUsedMacros(sourceId, macroName)"))); storage.createNewUsedMacrosTable(); } @@ -175,8 +192,14 @@ TEST_F(BuildDependenciesStorage, AddNewSourceDependenciesTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newSourceDependencies(sourceId INTEGER, dependencySourceId TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSourceDependencies_sourceId_dependencySourceId ON newSourceDependencies(sourceId, dependencySourceId)"))); + EXPECT_CALL(databaseMock, + execute(Eq("CREATE TEMPORARY TABLE newSourceDependencies(sourceId INTEGER, " + "dependencySourceId TEXT)"))); + EXPECT_CALL( + databaseMock, + execute( + Eq("CREATE INDEX IF NOT EXISTS index_newSourceDependencies_sourceId_dependencySourceId " + "ON newSourceDependencies(sourceId, dependencySourceId)"))); storage.createNewSourceDependenciesTable(); } @@ -200,9 +223,9 @@ TEST_F(BuildDependenciesStorage, UpdatePchCreationTimeStamp) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(updatePchCreationTimeStampStatement, write(TypedEq(101), TypedEq(1))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.updatePchCreationTimeStamp(101, 1); } @@ -255,9 +278,9 @@ TEST_F(BuildDependenciesStorage, FetchPchSourcesCalls) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchPchSourcesStatement, valuesReturnFilePathIds(_, 22)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); auto sources = storage.fetchPchSources(22); } @@ -266,13 +289,13 @@ TEST_F(BuildDependenciesStorage, FetchPchSourcesCallsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchPchSourcesStatement, valuesReturnFilePathIds(_, 22)) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchPchSourcesStatement, valuesReturnFilePathIds(_, 22)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); auto sources = storage.fetchPchSources(22); } @@ -291,13 +314,13 @@ TEST_F(BuildDependenciesStorage, FetchIndexingTimeStampsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchIndexingTimeStampsStatement, valuesReturnSourceTimeStamps(1024)) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchIndexingTimeStampsStatement, valuesReturnSourceTimeStamps(1024)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchIndexingTimeStamps(); } @@ -306,12 +329,12 @@ TEST_F(BuildDependenciesStorage, InsertIndexingTimeStampWithoutTransaction) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()).Times(0); + EXPECT_CALL(databaseMock, immediateBegin()).Times(0); EXPECT_CALL(inserOrUpdateIndexingTimesStampStatement, write(TypedEq(1), TypedEq(34))); EXPECT_CALL(inserOrUpdateIndexingTimesStampStatement, write(TypedEq(2), TypedEq(34))); - EXPECT_CALL(mockDatabase, commit()).Times(0); + EXPECT_CALL(databaseMock, commit()).Times(0); storage.insertOrUpdateIndexingTimeStampsWithoutTransaction({1, 2}, 34); } @@ -320,12 +343,12 @@ TEST_F(BuildDependenciesStorage, InsertIndexingTimeStamp) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(inserOrUpdateIndexingTimesStampStatement, write(TypedEq(1), TypedEq(34))); EXPECT_CALL(inserOrUpdateIndexingTimesStampStatement, write(TypedEq(2), TypedEq(34))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.insertOrUpdateIndexingTimeStamps({1, 2}, 34); } @@ -334,13 +357,13 @@ TEST_F(BuildDependenciesStorage, InsertIndexingTimeStampsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()).WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()).WillOnce(Throw(Sqlite::StatementIsBusy{""})); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(inserOrUpdateIndexingTimesStampStatement, write(TypedEq(1), TypedEq(34))); EXPECT_CALL(inserOrUpdateIndexingTimesStampStatement, write(TypedEq(2), TypedEq(34))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.insertOrUpdateIndexingTimeStamps({1, 2}, 34); } @@ -349,15 +372,15 @@ TEST_F(BuildDependenciesStorage, FetchIncludedIndexingTimeStampsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchIncludedIndexingTimeStampsStatement, valuesReturnSourceTimeStamps(1024, TypedEq(1))) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchIncludedIndexingTimeStampsStatement, valuesReturnSourceTimeStamps(1024, TypedEq(1))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchIncludedIndexingTimeStamps(1); } @@ -366,16 +389,16 @@ TEST_F(BuildDependenciesStorage, FetchDependentSourceIdsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchDependentSourceIdsStatement, valuesReturnFilePathIds(1024, TypedEq(3))); EXPECT_CALL(fetchDependentSourceIdsStatement, valuesReturnFilePathIds(1024, TypedEq(2))) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchDependentSourceIdsStatement, valuesReturnFilePathIds(1024, TypedEq(3))); EXPECT_CALL(fetchDependentSourceIdsStatement, valuesReturnFilePathIds(1024, TypedEq(2))); EXPECT_CALL(fetchDependentSourceIdsStatement, valuesReturnFilePathIds(1024, TypedEq(7))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDependentSourceIds({3, 2, 7}); } diff --git a/tests/unit/unittest/filepathcache-test.cpp b/tests/unit/unittest/filepathcache-test.cpp index 4b43d3924c5..fce075ab46f 100644 --- a/tests/unit/unittest/filepathcache-test.cpp +++ b/tests/unit/unittest/filepathcache-test.cpp @@ -26,7 +26,7 @@ #include "googletest.h" #include "mockfilepathstorage.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include @@ -75,10 +75,10 @@ protected: } protected: - NiceMock mockDatabase; - NiceMock mockStorage{mockDatabase}; + NiceMock databaseMock; + NiceMock mockStorage{databaseMock}; Cache cache{mockStorage}; - NiceMock mockStorageFilled{mockDatabase}; + NiceMock mockStorageFilled{databaseMock}; Cache cacheNotFilled{mockStorageFilled}; }; @@ -402,14 +402,14 @@ TEST_F(FilePathCache, AddFilePathsCalls) Cache cacheFilled{mockStorageFilled}; InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(mockStorageFilled, fetchDirectoryIdUnguarded(Eq("/path3/to"))).WillOnce(Return(7)); EXPECT_CALL(mockStorageFilled, fetchDirectoryIdUnguarded(Eq("/path/to"))).Times(0); EXPECT_CALL(mockStorageFilled, fetchSourceIdUnguarded(5, Eq("file.h"))).WillOnce(Return(99)); EXPECT_CALL(mockStorageFilled, fetchSourceIdUnguarded(6, Eq("file2.h"))).WillOnce(Return(106)); EXPECT_CALL(mockStorageFilled, fetchSourceIdUnguarded(7, Eq("file.h"))).WillOnce(Return(101)); EXPECT_CALL(mockStorageFilled, fetchSourceIdUnguarded(5, Eq("file.cpp"))).Times(0); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); cacheFilled.addFilePaths( FilePathViews{"/path3/to/file.h", "/path/to/file.h", "/path2/to/file2.h", "/path/to/file.cpp"}); @@ -420,10 +420,10 @@ TEST_F(FilePathCache, DontUseTransactionIfNotAddingFilesInAddFilePathsCalls) Cache cacheFilled{mockStorageFilled}; InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()).Times(0); + EXPECT_CALL(databaseMock, deferredBegin()).Times(0); EXPECT_CALL(mockStorageFilled, fetchDirectoryIdUnguarded(Eq("/path/to"))).Times(0); EXPECT_CALL(mockStorageFilled, fetchSourceIdUnguarded(5, Eq("file.cpp"))).Times(0); - EXPECT_CALL(mockDatabase, commit()).Times(0); + EXPECT_CALL(databaseMock, commit()).Times(0); cacheFilled.addFilePaths(FilePathViews{"/path/to/file.cpp"}); } @@ -433,10 +433,10 @@ TEST_F(FilePathCache, UseTransactionIfAddingFilesOnlyInAddFilePathsCalls) Cache cacheFilled{mockStorageFilled}; InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(mockStorageFilled, fetchDirectoryIdUnguarded(Eq("/path/to"))).Times(0); EXPECT_CALL(mockStorageFilled, fetchSourceIdUnguarded(5, Eq("file.h"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); cacheFilled.addFilePaths(FilePathViews{"/path/to/file.h"}); } diff --git a/tests/unit/unittest/filepathstorage-test.cpp b/tests/unit/unittest/filepathstorage-test.cpp index e943ab43dad..b982156bcfa 100644 --- a/tests/unit/unittest/filepathstorage-test.cpp +++ b/tests/unit/unittest/filepathstorage-test.cpp @@ -26,17 +26,18 @@ #include "googletest.h" #include "mockmutex.h" -#include "mocksqlitedatabase.h" -#include "mocksqlitereadstatement.h" -#include "mocksqlitewritestatement.h" +#include "sqlitedatabasemock.h" #include #include namespace { -using StatementFactory = ClangBackEnd::FilePathStorageSqliteStatementFactory>; +using StatementFactory = ClangBackEnd::FilePathStorageSqliteStatementFactory>; using Storage = ClangBackEnd::FilePathStorage; +template +using ReadStatement = NiceMock::ReadStatement; +using WriteStatement = NiceMock::WriteStatement; using ClangBackEnd::Sources::Directory; using ClangBackEnd::Sources::Source; @@ -54,7 +55,7 @@ protected: ON_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(Utils::SmallStringView("/path/to"))) .WillByDefault(Return(Utils::optional(5))); - ON_CALL(mockDatabase, lastInsertedRowId()) + ON_CALL(databaseMock, lastInsertedRowId()) .WillByDefault(Return(12)); ON_CALL(selectAllDirectories, valuesReturnStdVectorDirectory(_)) .WillByDefault(Return(std::vector{{"/path/to", 1}, {"/other/path", 2}})); @@ -98,17 +99,17 @@ protected: } protected: - NiceMock mockDatabase; - StatementFactory factory{mockDatabase}; - MockSqliteReadStatement &selectDirectoryIdFromDirectoriesByDirectoryPath = factory.selectDirectoryIdFromDirectoriesByDirectoryPath; - MockSqliteReadStatement &selectSourceIdFromSourcesByDirectoryIdAndSourceName = factory.selectSourceIdFromSourcesByDirectoryIdAndSourceName; - MockSqliteReadStatement &selectDirectoryPathFromDirectoriesByDirectoryId = factory.selectDirectoryPathFromDirectoriesByDirectoryId; - MockSqliteReadStatement &selectSourceNameAndDirectoryIdFromSourcesBySourceId = factory.selectSourceNameAndDirectoryIdFromSourcesBySourceId; - MockSqliteReadStatement &selectAllDirectories = factory.selectAllDirectories; - MockSqliteWriteStatement &insertIntoDirectories = factory.insertIntoDirectories; - MockSqliteWriteStatement &insertIntoSources = factory.insertIntoSources; - MockSqliteReadStatement &selectAllSources = factory.selectAllSources; - MockSqliteReadStatement &selectDirectoryIdFromSourcesBySourceId = factory.selectDirectoryIdFromSourcesBySourceId; + NiceMock databaseMock; + StatementFactory factory{databaseMock}; + ReadStatement<1> &selectDirectoryIdFromDirectoriesByDirectoryPath = factory.selectDirectoryIdFromDirectoriesByDirectoryPath; + ReadStatement<1> &selectSourceIdFromSourcesByDirectoryIdAndSourceName = factory.selectSourceIdFromSourcesByDirectoryIdAndSourceName; + ReadStatement<1> &selectDirectoryPathFromDirectoriesByDirectoryId = factory.selectDirectoryPathFromDirectoriesByDirectoryId; + ReadStatement<2> &selectSourceNameAndDirectoryIdFromSourcesBySourceId = factory.selectSourceNameAndDirectoryIdFromSourcesBySourceId; + ReadStatement<2> &selectAllDirectories = factory.selectAllDirectories; + WriteStatement &insertIntoDirectories = factory.insertIntoDirectories; + WriteStatement &insertIntoSources = factory.insertIntoSources; + ReadStatement<3> &selectAllSources = factory.selectAllSources; + ReadStatement<1> &selectDirectoryIdFromSourcesBySourceId = factory.selectDirectoryIdFromSourcesBySourceId; Storage storage{factory}; }; @@ -229,10 +230,10 @@ TEST_F(FilePathStorage, CallSelectForFetchingDirectoryIdForKnownPath) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/path/to"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDirectoryId("/path/to"); } @@ -241,10 +242,10 @@ TEST_F(FilePathStorage, CallSelectForFetchingSourceIdForKnownPath) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("file.h"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchSourceId(5, "file.h"); } @@ -267,11 +268,11 @@ TEST_F(FilePathStorage, CallSelectAndWriteForFetchingDirectoryIdForUnknownPath) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/some/not/known/path"))); EXPECT_CALL(insertIntoDirectories, write(TypedEq("/some/not/known/path"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDirectoryId("/some/not/known/path"); } @@ -280,12 +281,12 @@ TEST_F(FilePathStorage, CallSelectAndWriteForFetchingSourceIdForUnknownEntry) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("unknownfile.h"))); EXPECT_CALL(insertIntoSources, write(TypedEq(5), TypedEq("unknownfile.h"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchSourceId(5, "unknownfile.h"); } @@ -294,13 +295,13 @@ TEST_F(FilePathStorage, RestartFetchDirectoryIDIfTheStatementIsBusyInBeginBecaus { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/other/unknow/path"))); EXPECT_CALL(insertIntoDirectories, write(TypedEq("/other/unknow/path"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDirectoryId("/other/unknow/path"); } @@ -310,17 +311,17 @@ TEST_F(FilePathStorage, { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/other/unknow/path"))); EXPECT_CALL(insertIntoDirectories, write(TypedEq("/other/unknow/path"))) .WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/other/unknow/path"))); EXPECT_CALL(insertIntoDirectories, write(TypedEq("/other/unknow/path"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDirectoryId("/other/unknow/path"); } @@ -329,16 +330,16 @@ TEST_F(FilePathStorage, CallSelectAndWriteForFetchingDirectoryIdTwoTimesIfTheInd { InSequence s; - EXPECT_CALL(mockDatabase,deferredBegin()); + EXPECT_CALL(databaseMock,deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/other/unknow/path"))); EXPECT_CALL(insertIntoDirectories, write(TypedEq("/other/unknow/path"))) .WillOnce(Throw(Sqlite::ConstraintPreventsModification("busy"))); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase,deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock,deferredBegin()); EXPECT_CALL(selectDirectoryIdFromDirectoriesByDirectoryPath, valueReturnInt32(TypedEq("/other/unknow/path"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDirectoryId("/other/unknow/path"); } @@ -347,14 +348,14 @@ TEST_F(FilePathStorage, RestartFetchSourceIdIfTheStatementIsBusyInBeginBecauseTh { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("otherunknownfile.h"))); EXPECT_CALL(insertIntoSources, write(TypedEq(5), TypedEq("otherunknownfile.h"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchSourceId(5, "otherunknownfile.h"); } @@ -364,19 +365,19 @@ TEST_F(FilePathStorage, { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("otherunknownfile.h"))); EXPECT_CALL(insertIntoSources, write(TypedEq(5), TypedEq("otherunknownfile.h"))) .WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("otherunknownfile.h"))); EXPECT_CALL(insertIntoSources, write(TypedEq(5), TypedEq("otherunknownfile.h"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchSourceId(5, "otherunknownfile.h"); } @@ -385,18 +386,18 @@ TEST_F(FilePathStorage, CallSelectAndWriteForFetchingSourceTwoTimesIfTheIndexIsC { InSequence s; - EXPECT_CALL(mockDatabase,deferredBegin()); + EXPECT_CALL(databaseMock,deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("otherunknownfile.h"))); EXPECT_CALL(insertIntoSources, write(TypedEq(5), TypedEq("otherunknownfile.h"))) .WillOnce(Throw(Sqlite::ConstraintPreventsModification("busy"))); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase,deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock,deferredBegin()); EXPECT_CALL(selectSourceIdFromSourcesByDirectoryIdAndSourceName, valueReturnInt32(5, Eq("otherunknownfile.h"))) .WillOnce(Return(Utils::optional(42))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchSourceId(5, "otherunknownfile.h"); } @@ -417,27 +418,27 @@ TEST_F(FilePathStorage, SelectAllSources) TEST_F(FilePathStorage, CallSelectAllDirectories) { - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectAllDirectories, valuesReturnStdVectorDirectory(256)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchAllDirectories(); } TEST_F(FilePathStorage, CallSelectAllSources) { - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectAllSources, valuesReturnStdVectorSource(8192)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchAllSources(); } TEST_F(FilePathStorage, CallValueForFetchDirectoryPathForId) { - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryPathFromDirectoriesByDirectoryId, valueReturnPathString(5)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchDirectoryPath(5); } @@ -456,9 +457,9 @@ TEST_F(FilePathStorage, ThrowAsFetchingDirectoryPathForNonExistingId) TEST_F(FilePathStorage, CallValueForFetchSoureNameForId) { - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceNameAndDirectoryIdFromSourcesBySourceId, valueReturnSourceNameAndDirectoryId(42)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchSourceNameAndDirectoryId(42); } @@ -480,15 +481,15 @@ TEST_F(FilePathStorage, RestartFetchSourceNameIfTheStatementIsBusyInBegin) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, unlock()); - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, unlock()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectSourceNameAndDirectoryIdFromSourcesBySourceId, valueReturnSourceNameAndDirectoryId(42)); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, unlock()); storage.fetchSourceNameAndDirectoryId(42); } @@ -497,15 +498,15 @@ TEST_F(FilePathStorage, RestartFetchDirectoryPathIfTheStatementIsBusyInBegin) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, unlock()); - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, unlock()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryPathFromDirectoriesByDirectoryId, valueReturnPathString(5)); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, unlock()); storage.fetchDirectoryPath(5); } @@ -514,15 +515,15 @@ TEST_F(FilePathStorage, RestartFetchAllDirectoriesIfBeginIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, unlock()); - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, unlock()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectAllDirectories, valuesReturnStdVectorDirectory(256)); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, unlock()); storage.fetchAllDirectories(); } @@ -531,15 +532,15 @@ TEST_F(FilePathStorage, RestartFetchAllSourcesIfBeginIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, unlock()); - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, unlock()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectAllSources, valuesReturnStdVectorSource(8192)); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, unlock()); storage.fetchAllSources(); } @@ -560,11 +561,11 @@ TEST_F(FilePathStorage, FetchDirectoryIdCalls) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromSourcesBySourceId, valueReturnInt32(TypedEq(42))); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, unlock()); storage.fetchDirectoryId(42); } @@ -573,15 +574,15 @@ TEST_F(FilePathStorage, FetchDirectoryIdCallsDatabaseIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()).Times(0); - EXPECT_CALL(mockDatabase, unlock()); - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()).WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); + EXPECT_CALL(databaseMock, rollback()).Times(0); + EXPECT_CALL(databaseMock, unlock()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromSourcesBySourceId, valueReturnInt32(TypedEq(42))); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, unlock()); storage.fetchDirectoryId(42); } @@ -590,11 +591,11 @@ TEST_F(FilePathStorage, FetchDirectoryIdCallsThrows) { InSequence s; - EXPECT_CALL(mockDatabase, lock()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, lock()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(selectDirectoryIdFromSourcesBySourceId, valueReturnInt32(TypedEq(41))); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, unlock()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, unlock()); ASSERT_ANY_THROW(storage.fetchDirectoryId(41)); } diff --git a/tests/unit/unittest/filepathstoragesqlitestatementfactory-test.cpp b/tests/unit/unittest/filepathstoragesqlitestatementfactory-test.cpp index 42c1d0541a3..0fb06aa87a8 100644 --- a/tests/unit/unittest/filepathstoragesqlitestatementfactory-test.cpp +++ b/tests/unit/unittest/filepathstoragesqlitestatementfactory-test.cpp @@ -26,21 +26,19 @@ #include "googletest.h" #include "mockmutex.h" -#include "mocksqlitedatabase.h" -#include "mocksqlitereadstatement.h" -#include "mocksqlitewritestatement.h" +#include "sqlitedatabasemock.h" #include namespace { -using StatementFactory = ClangBackEnd::FilePathStorageSqliteStatementFactory>; +using StatementFactory = ClangBackEnd::FilePathStorageSqliteStatementFactory>; class FilePathStorageSqliteStatementFactory : public testing::Test { protected: - NiceMock mockDatabase; - StatementFactory factory{mockDatabase}; + NiceMock databaseMock; + StatementFactory factory{databaseMock}; }; TEST_F(FilePathStorageSqliteStatementFactory, SelectDirectoryIdFromDirectoriesByDirectoryPath) diff --git a/tests/unit/unittest/imagecachestorage-test.cpp b/tests/unit/unittest/imagecachestorage-test.cpp index d1246452a24..50995e6c407 100644 --- a/tests/unit/unittest/imagecachestorage-test.cpp +++ b/tests/unit/unittest/imagecachestorage-test.cpp @@ -55,14 +55,15 @@ MATCHER_P2(IsIconEntry, class ImageCacheStorageTest : public testing::Test { protected: - using ReadStatement = QmlDesigner::ImageCacheStorage::ReadStatement; + template + using ReadStatement = QmlDesigner::ImageCacheStorage::ReadStatement; using WriteStatement = QmlDesigner::ImageCacheStorage::WriteStatement; NiceMock databaseMock; QmlDesigner::ImageCacheStorage storage{databaseMock}; - ReadStatement &selectImageStatement = storage.selectImageStatement; - ReadStatement &selectSmallImageStatement = storage.selectSmallImageStatement; - ReadStatement &selectIconStatement = storage.selectIconStatement; + ReadStatement<1> &selectImageStatement = storage.selectImageStatement; + ReadStatement<1> &selectSmallImageStatement = storage.selectSmallImageStatement; + ReadStatement<1> &selectIconStatement = storage.selectIconStatement; WriteStatement &upsertImageStatement = storage.upsertImageStatement; WriteStatement &upsertIconStatement = storage.upsertIconStatement; QImage image1{10, 10, QImage::Format_ARGB32}; diff --git a/tests/unit/unittest/lastchangedrowid-test.cpp b/tests/unit/unittest/lastchangedrowid-test.cpp index aee2d187e35..2ceb8b1731c 100644 --- a/tests/unit/unittest/lastchangedrowid-test.cpp +++ b/tests/unit/unittest/lastchangedrowid-test.cpp @@ -25,7 +25,7 @@ #include "googletest.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include @@ -34,7 +34,7 @@ namespace { class LastChangedRowId : public testing::Test { protected: - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; Sqlite::LastChangedRowId<1> lastRowId{mockSqliteDatabase, "main", "foo"}; }; @@ -112,7 +112,7 @@ TEST_F(LastChangedRowId, TakeLastRowIdResetsRowIdToMinusOne) class LastChangedRowIdWithTwoTables : public testing::Test { protected: - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; Sqlite::LastChangedRowId<2> lastRowId{mockSqliteDatabase, "main", "foo", "bar"}; }; @@ -197,7 +197,7 @@ TEST_F(LastChangedRowIdWithTwoTables, TakeLastRowIdResetsRowIdToMinusOne) class LastChangedRowIdWithThreeTables : public testing::Test { protected: - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; Sqlite::LastChangedRowId<3> lastRowId{mockSqliteDatabase, "main", "foo", "bar", "too"}; }; @@ -290,7 +290,7 @@ TEST_F(LastChangedRowIdWithThreeTables, TakeLastRowIdResetsRowIdToMinusOne) class LastChangedRowIdWithNoDatabaseAndTable : public testing::Test { protected: - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; Sqlite::LastChangedRowId<> lastRowId{mockSqliteDatabase}; }; @@ -350,7 +350,7 @@ TEST_F(LastChangedRowIdWithNoDatabaseAndTable, TakeLastRowIdResetsRowIdToMinusOn class LastChangedRowIdWithNoTable : public testing::Test { protected: - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; Sqlite::LastChangedRowId<> lastRowId{mockSqliteDatabase, "main"}; }; diff --git a/tests/unit/unittest/mockfilepathstorage.h b/tests/unit/unittest/mockfilepathstorage.h index cc6cfa07c7b..0ea6c1b16d7 100644 --- a/tests/unit/unittest/mockfilepathstorage.h +++ b/tests/unit/unittest/mockfilepathstorage.h @@ -27,15 +27,15 @@ #include "googletest.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include class MockFilePathStorage { public: - MockFilePathStorage(MockSqliteDatabase &mockDatabase) - : mockDatabase{mockDatabase} + MockFilePathStorage(SqliteDatabaseMock &databaseMock) + : databaseMock{databaseMock} {} MOCK_METHOD1(fetchDirectoryId, int(Utils::SmallStringView directoryPath)); @@ -50,8 +50,8 @@ public: MOCK_METHOD0(fetchAllDirectories, std::vector()); MOCK_METHOD0(fetchAllSources, std::vector()); - MockSqliteDatabase &database() { return mockDatabase; } + SqliteDatabaseMock &database() { return databaseMock; } - MockSqliteDatabase &mockDatabase; + SqliteDatabaseMock &databaseMock; }; diff --git a/tests/unit/unittest/mocksqlitedatabase.h b/tests/unit/unittest/mocksqlitedatabase.h deleted file mode 100644 index 7a4a8b9e75e..00000000000 --- a/tests/unit/unittest/mocksqlitedatabase.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "googletest.h" - -#include "mocksqlitereadstatement.h" -#include "mocksqlitetransactionbackend.h" -#include "mocksqlitewritestatement.h" - -#include -#include -#include - -#include - -class MockSqliteDatabase : public MockSqliteTransactionBackend, public Sqlite::DatabaseInterface -{ -public: - using ReadStatement = NiceMock; - using WriteStatement = NiceMock; - - MOCK_METHOD1(execute, - void (Utils::SmallStringView sqlStatement)); - - MOCK_CONST_METHOD0(lastInsertedRowId, - int64_t ()); - - MOCK_CONST_METHOD1(setLastInsertedRowId, - void (int64_t)); - - MOCK_CONST_METHOD0(isInitialized, - bool ()); - - MOCK_METHOD1(setIsInitialized, - void (bool)); - - MOCK_METHOD0(walCheckpointFull, void()); - - MOCK_METHOD2(setUpdateHook, - void(void *object, - void (*)(void *object, int, char const *database, char const *, long long rowId))); - - MOCK_METHOD0(resetUpdateHook, void()); - - MOCK_METHOD0(applyAndUpdateSessions, void()); - - MOCK_METHOD1(setAttachedTables, void(const Utils::SmallStringVector &tables)); -}; - diff --git a/tests/unit/unittest/mocksqlitereadstatement.cpp b/tests/unit/unittest/mocksqlitereadstatement.cpp deleted file mode 100644 index 1f5bc53759b..00000000000 --- a/tests/unit/unittest/mocksqlitereadstatement.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "mocksqlitereadstatement.h" - -template <> -SourceLocations -MockSqliteReadStatement::values(std::size_t reserveSize, - const int &sourceId, - const int &line, - const int &column) -{ - return valuesReturnSourceLocations(reserveSize, sourceId, line, column); -} - -template <> -CppTools::Usages -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &sourceId, - const int &line, - const int &column) -{ - return valuesReturnSourceUsages(reserveSize, sourceId, line, column); -} - -template<> -CppTools::Usages MockSqliteReadStatement::values(std::size_t reserveSize, - const int &sourceId, - const int &line, - const int &column, - const int &locationKind) -{ - return valuesReturnSourceUsages(reserveSize, sourceId, line, column, locationKind); -} - -template <> -Symbols -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &symbolKind, - const Utils::SmallStringView &searchTerm) -{ - return valuesReturnSymbols(reserveSize, symbolKind, searchTerm); -} - -template <> -Symbols -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &symbolKind1, - const int &symbolKind2, - const Utils::SmallStringView &searchTerm) -{ - return valuesReturnSymbols(reserveSize, symbolKind1, symbolKind2, searchTerm); - -} - -template <> -Symbols -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &symbolKind1, - const int &symbolKind2, - const int &symbolKind3, - const Utils::SmallStringView &searchTerm) -{ - return valuesReturnSymbols(reserveSize, symbolKind1, symbolKind2, symbolKind3, searchTerm); - -} - -template <> -UsedMacros -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &sourceId) -{ - return valuesReturnUsedMacros(reserveSize, sourceId); -} - -template<> -FilePathIds MockSqliteReadStatement::values(std::size_t reserveSize, - const int &projectPartId) -{ - return valuesReturnFilePathIds(reserveSize, projectPartId); -} - -template<> -ClangBackEnd::FilePaths MockSqliteReadStatement::values(std::size_t reserveSize) -{ - return valuesReturnFilePaths(reserveSize); -} - -template <> -std::vector MockSqliteReadStatement::values(std::size_t reserveSize) -{ - return valuesReturnStdVectorDirectory(reserveSize); -} - -template<> -std::vector MockSqliteReadStatement::values(std::size_t reserveSize) -{ - return valuesReturnStdVectorSource(reserveSize); -} - -template<> -ProjectPartNameIds MockSqliteReadStatement::values(std::size_t reserveSize) -{ - return valuesReturnProjectPartNameIds(reserveSize); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const Utils::SmallStringView &text) -{ - return valueReturnInt32(text); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const Utils::PathString &text) -{ - return valueReturnInt32(text); -} - -template<> -Utils::optional MockSqliteReadStatement::value( - const Utils::SmallStringView &text) -{ - return valueReturnProjectPartId(text); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const int &directoryId, const Utils::SmallStringView &text) -{ - return valueReturnInt32(directoryId, text); -} - -template<> -Utils::optional MockSqliteReadStatement::value(const int &value) -{ - return valueReturnInt32(value); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const int &sourceId) -{ - return valueReturnInt64(sourceId); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const int &directoryId) -{ - return valueReturnPathString(directoryId); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const Utils::SmallStringView &path) -{ - return valueReturnPathString(path); -} - -template<> -Utils::optional MockSqliteReadStatement::value( - const int &path) -{ - return valueReturnFilePath(path); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const int& sourceId) -{ - return valueReturnProjectPartArtefact(sourceId); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const Utils::SmallStringView &projectPartName) -{ - return valueReturnProjectPartArtefact(projectPartName); -} - -template<> -Utils::optional -MockSqliteReadStatement::value(const int &id) -{ - return valueReturnProjectPartContainer(id); -} - -template<> -ClangBackEnd::ProjectPartContainers MockSqliteReadStatement::values(std::size_t reserveSize) -{ - return valuesReturnProjectPartContainers(reserveSize); -} - -template<> -Utils::optional -MockSqliteReadStatement::value(const int &projectPartId) -{ - return valueReturnProjectPartPch(projectPartId); -} - -template<> -Utils::optional MockSqliteReadStatement::value( - const int &projectPartId) -{ - return valueReturnPchPaths(projectPartId); -} - -template<> -Utils::optional MockSqliteReadStatement::value(const int &sourceId) -{ - return valueReturnSmallString(sourceId); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const long long &symbolId, const int &locationKind) -{ - return valueReturnSourceLocation(symbolId, locationKind); -} - -template<> -SourceEntries MockSqliteReadStatement::values(std::size_t reserveSize, - const int &filePathId, - const int &projectPartId) -{ - return valuesReturnSourceEntries(reserveSize, filePathId, projectPartId); -} - -template<> -SourceTimeStamps MockSqliteReadStatement::values(std::size_t reserveSize) -{ - return valuesReturnSourceTimeStamps(reserveSize); -} - -template<> -SourceTimeStamps MockSqliteReadStatement::values(std::size_t reserveSize, - const int &sourcePathId) -{ - return valuesReturnSourceTimeStamps(reserveSize, sourcePathId); -} - -template <> -Utils::optional -MockSqliteReadStatement::value(const int &id) -{ - return valueReturnSourceNameAndDirectoryId(id); -} - -template<> -Utils::optional -MockSqliteReadStatement::value(const int &projectPartId) -{ - return valuesReturnPrecompiledHeaderTimeStamps(projectPartId); -} diff --git a/tests/unit/unittest/mocksqlitereadstatement.h b/tests/unit/unittest/mocksqlitereadstatement.h deleted file mode 100644 index 11a7b126e57..00000000000 --- a/tests/unit/unittest/mocksqlitereadstatement.h +++ /dev/null @@ -1,334 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "googletest.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include - -using ClangBackEnd::FilePathIds; -using ClangBackEnd::SourceEntries; -using ClangBackEnd::SourceEntry; -using ClangBackEnd::SourceTimeStamp; -using ClangBackEnd::SourceTimeStamps; -using ClangRefactoring::SourceLocation; -using ClangRefactoring::SourceLocations; -using std::int64_t; -namespace Sources = ClangBackEnd::Sources; -using ClangBackEnd::PrecompiledHeaderTimeStamps; -using ClangBackEnd::UsedMacros; -using ClangBackEnd::Internal::ProjectPartNameId; -using ClangBackEnd::Internal::ProjectPartNameIds; -using ClangRefactoring::Symbol; -using ClangRefactoring::Symbols; - -class MockSqliteDatabase; - -class MockSqliteReadStatement -{ -public: - MockSqliteReadStatement() = default; - MockSqliteReadStatement(Utils::SmallStringView sqlStatement, MockSqliteDatabase &) - : sqlStatement(sqlStatement) - {} - - MOCK_METHOD4(valuesReturnSourceLocations, - SourceLocations(std::size_t, int, int, int)); - - MOCK_METHOD4(valuesReturnSourceUsages, CppTools::Usages(std::size_t, int, int, int)); - - MOCK_METHOD5(valuesReturnSourceUsages, CppTools::Usages(std::size_t, int, int, int, int)); - - MOCK_METHOD1(valuesReturnStdVectorDirectory, - std::vector(std::size_t)); - - MOCK_METHOD1(valuesReturnStdVectorSource, - std::vector(std::size_t)); - - MOCK_METHOD3(valuesReturnSourceEntries, - SourceEntries(std::size_t, int, int)); - - MOCK_METHOD2(valuesReturnUsedMacros, UsedMacros(std::size_t, int)); - - MOCK_METHOD2(valuesReturnFilePathIds, FilePathIds(std::size_t, int)); - - MOCK_METHOD1(valuesReturnProjectPartNameIds, ProjectPartNameIds(std::size_t)); - - MOCK_METHOD1(valueReturnInt32, Utils::optional(Utils::SmallStringView)); - - MOCK_METHOD2(valueReturnInt32, Utils::optional(int, Utils::SmallStringView)); - - MOCK_METHOD1(valueReturnInt32, Utils::optional(int)); - - MOCK_METHOD1(valueReturnInt64, Utils::optional(int)); - - MOCK_METHOD1(valueReturnPathString, - Utils::optional(int)); - - MOCK_METHOD1(valueReturnPathString, - Utils::optional(Utils::SmallStringView)); - - MOCK_METHOD1(valueReturnFilePath, Utils::optional(int)); - - MOCK_METHOD1(valuesReturnFilePaths, ClangBackEnd::FilePaths(std::size_t)); - - MOCK_METHOD1(valueReturnSmallString, - Utils::optional(int)); - - MOCK_METHOD1(valueReturnSourceNameAndDirectoryId, - Utils::optional(int)); - - MOCK_METHOD1(valueReturnProjectPartArtefact, - Utils::optional(int)); - - MOCK_METHOD1(valueReturnProjectPartArtefact, - Utils::optional(Utils::SmallStringView)); - MOCK_METHOD1(valuesReturnProjectPartArtefacts, ClangBackEnd::ProjectPartArtefacts(std::size_t)); - MOCK_METHOD1(valueReturnProjectPartContainer, - Utils::optional(int)); - MOCK_METHOD1(valuesReturnProjectPartContainers, ClangBackEnd::ProjectPartContainers(std::size_t)); - MOCK_METHOD1(valueReturnProjectPartPch, Utils::optional(int)); - - MOCK_METHOD1(valueReturnPchPaths, Utils::optional(int)); - - MOCK_METHOD3(valuesReturnSymbols, Symbols(std::size_t, int, Utils::SmallStringView)); - - MOCK_METHOD4(valuesReturnSymbols, - Symbols(std::size_t, int, int, Utils::SmallStringView)); - - MOCK_METHOD5(valuesReturnSymbols, - Symbols(std::size_t, int, int, int, Utils::SmallStringView)); - - MOCK_METHOD2(valueReturnSourceLocation, - SourceLocation(long long, int)); - - MOCK_METHOD1(valueReturnProjectPartId, - Utils::optional(Utils::SmallStringView)); - - MOCK_METHOD1(valuesReturnSourceTimeStamps, SourceTimeStamps(std::size_t)); - MOCK_METHOD2(valuesReturnSourceTimeStamps, SourceTimeStamps(std::size_t, int sourcePathId)); - - MOCK_METHOD1(valuesReturnPrecompiledHeaderTimeStamps, - PrecompiledHeaderTimeStamps(int projectPartId)); - - template - std::vector values(std::size_t reserveSize, const QueryType &... queryValues); - - template - std::vector values(std::size_t reserveSize); - - template class QueryContainerType, - typename QueryElementType> - std::vector values(std::size_t reserveSize, - const QueryContainerType &queryValues); - - template - Utils::optional value(const QueryTypes&... queryValues); - -public: - Utils::SmallString sqlStatement; -}; - -template <> -SourceLocations -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &sourceId, - const int &line, - const int &column); - -template <> -CppTools::Usages -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &sourceId, - const int &line, - const int &column); - -template<> -CppTools::Usages MockSqliteReadStatement::values(std::size_t reserveSize, - const int &sourceId, - const int &line, - const int &column, - const int &locationKind); - -template <> -Symbols -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int&, - const Utils::SmallStringView&); - -template <> -Symbols -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int&, - const int&, - const Utils::SmallStringView&); - -template <> -Symbols -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int&, - const int&, - const int&, - const Utils::SmallStringView&); - -template <> -UsedMacros -MockSqliteReadStatement::values( - std::size_t reserveSize, - const int &sourceId); - -template<> -FilePathIds MockSqliteReadStatement::values(std::size_t reserveSize, - const int &projectPartId); - -template<> -ClangBackEnd::FilePaths MockSqliteReadStatement::values(std::size_t reserveSize); - -template <> -std::vector MockSqliteReadStatement::values(std::size_t reserveSize); - -template<> -std::vector MockSqliteReadStatement::values(std::size_t reserveSize); - -template<> -ProjectPartNameIds MockSqliteReadStatement::values(std::size_t reserveSize); - -template<> -Utils::optional MockSqliteReadStatement::value(const Utils::SmallStringView &); - -template <> -Utils::optional -MockSqliteReadStatement::value(const Utils::PathString&); - -template<> -Utils::optional MockSqliteReadStatement::value( - const Utils::SmallStringView &); - -template<> -Utils::optional MockSqliteReadStatement::value( - const int &); - -template <> -Utils::optional -MockSqliteReadStatement::value(const int&, const Utils::SmallStringView&); - -template<> -Utils::optional MockSqliteReadStatement::value(const int &); - -template <> -Utils::optional -MockSqliteReadStatement::value(const ClangBackEnd::FilePathId&); - -template <> -Utils::optional -MockSqliteReadStatement::value(const int&); - -template <> -Utils::optional -MockSqliteReadStatement::value(const Utils::SmallStringView&); - -template <> -Utils::optional -MockSqliteReadStatement::value(const int&); - -template <> -Utils::optional -MockSqliteReadStatement::value(const int&); - -template<> -Utils::optional -MockSqliteReadStatement::value(const int &); - -template<> -Utils::optional MockSqliteReadStatement::value( - const int &); - -template<> -ClangBackEnd::ProjectPartContainers MockSqliteReadStatement::values(std::size_t reserveSize); - -template<> -Utils::optional -MockSqliteReadStatement::value(const int &); - -template <> -Utils::optional -MockSqliteReadStatement::value(const int&); - -template <> -Utils::optional -MockSqliteReadStatement::value(const long long &symbolId, const int &locationKind); - -template<> -SourceEntries MockSqliteReadStatement::values(std::size_t reserveSize, - const int &, - const int &); - -template<> -SourceTimeStamps MockSqliteReadStatement::values(std::size_t reserveSize); - -template<> -SourceTimeStamps MockSqliteReadStatement::values(std::size_t reserveSize, - const int &sourcePathId); - -template <> -Utils::optional -MockSqliteReadStatement::value(const int&); - -template<> -Utils::optional -MockSqliteReadStatement::value(const int &); diff --git a/tests/unit/unittest/mocksqlitestatement.h b/tests/unit/unittest/mocksqlitestatement.h index 141eb9520ba..ff556a9a4d6 100644 --- a/tests/unit/unittest/mocksqlitestatement.h +++ b/tests/unit/unittest/mocksqlitestatement.h @@ -58,6 +58,8 @@ public: MOCK_METHOD1(prepare, void(Utils::SmallStringView sqlStatement)); MOCK_METHOD1(checkColumnCount, void(int)); + + MOCK_CONST_METHOD0(isReadOnlyStatement, bool()); }; template<> @@ -96,13 +98,12 @@ Utils::PathString BaseMockSqliteStatement::fetchValue(int col return fetchPathStringValue(column); } -class MockSqliteStatement : public Sqlite::StatementImplementation> +template +class MockSqliteStatement + : public Sqlite::StatementImplementation, ResultCount> { public: - explicit MockSqliteStatement() - : Sqlite::StatementImplementation>() - {} - + explicit MockSqliteStatement() {} protected: void checkIsWritableStatement(); diff --git a/tests/unit/unittest/mocksqlitewritestatement.h b/tests/unit/unittest/mocksqlitewritestatement.h deleted file mode 100644 index 329c5f7f39a..00000000000 --- a/tests/unit/unittest/mocksqlitewritestatement.h +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "googletest.h" - -#include - -class MockSqliteDatabase; - -class MockSqliteWriteStatement -{ -public: - MockSqliteWriteStatement() = default; - MockSqliteWriteStatement(Utils::SmallStringView sqlStatement, MockSqliteDatabase &) - : sqlStatement(sqlStatement) - {} - - MOCK_METHOD0(execute, - void ()); - - MOCK_METHOD2(bind, void(int, Utils::SmallStringView)); - - MOCK_METHOD2(bindValues, - void (Utils::SmallStringView, Utils::SmallStringView)); - - MOCK_METHOD4(write, - void (uint, Utils::SmallStringView, Utils::SmallStringView, uint)); - - MOCK_METHOD4(write, - void (uint, uint, uint, uint)); - - MOCK_METHOD4(write, - void (long long, int, int, int)); - - MOCK_METHOD5(write, - void (long long, int, int, int, int)); - - MOCK_METHOD2(write, void(uint, Utils::SmallStringView)); - - MOCK_METHOD2(write, void(int, Utils::SmallStringView)); - - MOCK_METHOD2(write, void(Utils::SmallStringView, Utils::SmallStringView)); - - MOCK_METHOD3(write, void(int, Utils::SmallStringView, long long)); - - MOCK_METHOD3(write, - void (Utils::SmallStringView, Utils::SmallStringView, Utils::SmallStringView)); - - MOCK_METHOD4(write, - void (Utils::SmallStringView, - Utils::SmallStringView, - Utils::SmallStringView, - Utils::SmallStringView)); - - MOCK_METHOD8(write, - void(int, - Utils::SmallStringView, - Utils::SmallStringView, - Utils::SmallStringView, - Utils::SmallStringView, - int, - int, - int)); - - MOCK_METHOD1(write, - void (Utils::SmallStringView)); - - MOCK_METHOD1(write, - void (long long)); - - MOCK_METHOD1(write, - void (int)); - - MOCK_METHOD2(write, void(int, long long)); - - MOCK_METHOD2(write, - void (int, int)); - - MOCK_METHOD3(write, - void (uint, uint, uint)); - - MOCK_METHOD3(write, void(int, off_t, time_t)); - - MOCK_METHOD2(write, - void (uint, uint)); - - MOCK_METHOD2(write, - void (uchar, int)); - MOCK_METHOD4(write, void(int, int, uchar, uchar)); - MOCK_METHOD2(write, - void (long long, int)); - MOCK_METHOD2(write, void(long long, Utils::SmallStringView)); - Utils::SmallString sqlStatement; -}; diff --git a/tests/unit/unittest/mocksymbolstorage.h b/tests/unit/unittest/mocksymbolstorage.h index a1743897358..ae5c0f775ad 100644 --- a/tests/unit/unittest/mocksymbolstorage.h +++ b/tests/unit/unittest/mocksymbolstorage.h @@ -27,7 +27,7 @@ #include "googletest.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include diff --git a/tests/unit/unittest/precompiledheaderstorage-test.cpp b/tests/unit/unittest/precompiledheaderstorage-test.cpp index 77574a28b91..d388f5fb437 100644 --- a/tests/unit/unittest/precompiledheaderstorage-test.cpp +++ b/tests/unit/unittest/precompiledheaderstorage-test.cpp @@ -24,7 +24,7 @@ ****************************************************************************/ #include "googletest.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include #include @@ -35,25 +35,28 @@ namespace { -using Storage = ClangBackEnd::PrecompiledHeaderStorage>; +using Storage = ClangBackEnd::PrecompiledHeaderStorage>; +template +using ReadStatement = NiceMock::ReadStatement; +using WriteStatement = NiceMock::WriteStatement; class PrecompiledHeaderStorage : public testing::Test { protected: - NiceMock database; + NiceMock database; Storage storage{database}; - MockSqliteWriteStatement &insertProjectPrecompiledHeaderStatement = storage.insertProjectPrecompiledHeaderStatement; - MockSqliteWriteStatement &deleteProjectPrecompiledHeaderStatement = storage.deleteProjectPrecompiledHeaderStatement; - MockSqliteWriteStatement &deleteProjectPrecompiledHeaderPathAndSetBuildTimeStatement + WriteStatement &insertProjectPrecompiledHeaderStatement = storage.insertProjectPrecompiledHeaderStatement; + WriteStatement &deleteProjectPrecompiledHeaderStatement = storage.deleteProjectPrecompiledHeaderStatement; + WriteStatement &deleteProjectPrecompiledHeaderPathAndSetBuildTimeStatement = storage.deleteProjectPrecompiledHeaderPathAndSetBuildTimeStatement; - MockSqliteWriteStatement &insertSystemPrecompiledHeaderStatement = storage.insertSystemPrecompiledHeaderStatement; - MockSqliteWriteStatement &deleteSystemPrecompiledHeaderStatement = storage.deleteSystemPrecompiledHeaderStatement; - MockSqliteWriteStatement &deleteSystemAndProjectPrecompiledHeaderStatement = storage.deleteSystemAndProjectPrecompiledHeaderStatement; - MockSqliteReadStatement &fetchSystemPrecompiledHeaderPathStatement = storage.fetchSystemPrecompiledHeaderPathStatement; - MockSqliteReadStatement &fetchPrecompiledHeaderStatement = storage.fetchPrecompiledHeaderStatement; - MockSqliteReadStatement &fetchPrecompiledHeadersStatement = storage.fetchPrecompiledHeadersStatement; - MockSqliteReadStatement &fetchTimeStampsStatement = storage.fetchTimeStampsStatement; - MockSqliteReadStatement &fetchAllPchPathsStatement = storage.fetchAllPchPathsStatement; + WriteStatement &insertSystemPrecompiledHeaderStatement = storage.insertSystemPrecompiledHeaderStatement; + WriteStatement &deleteSystemPrecompiledHeaderStatement = storage.deleteSystemPrecompiledHeaderStatement; + WriteStatement &deleteSystemAndProjectPrecompiledHeaderStatement = storage.deleteSystemAndProjectPrecompiledHeaderStatement; + ReadStatement<1> &fetchSystemPrecompiledHeaderPathStatement = storage.fetchSystemPrecompiledHeaderPathStatement; + ReadStatement<1> &fetchPrecompiledHeaderStatement = storage.fetchPrecompiledHeaderStatement; + ReadStatement<2> &fetchPrecompiledHeadersStatement = storage.fetchPrecompiledHeadersStatement; + ReadStatement<2> &fetchTimeStampsStatement = storage.fetchTimeStampsStatement; + ReadStatement<1> &fetchAllPchPathsStatement = storage.fetchAllPchPathsStatement; }; TEST_F(PrecompiledHeaderStorage, UseTransaction) diff --git a/tests/unit/unittest/projectpartsstorage-test.cpp b/tests/unit/unittest/projectpartsstorage-test.cpp index b67cd5a37c4..1039f55d35b 100644 --- a/tests/unit/unittest/projectpartsstorage-test.cpp +++ b/tests/unit/unittest/projectpartsstorage-test.cpp @@ -25,7 +25,7 @@ #include "googletest.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include #include @@ -72,7 +72,10 @@ protected: class ProjectPartsStorage : public testing::Test, public Data { - using Storage = ClangBackEnd::ProjectPartsStorage; + using Storage = ClangBackEnd::ProjectPartsStorage; + template + using ReadStatement = NiceMock::ReadStatement; + using WriteStatement = NiceMock::WriteStatement; protected: ProjectPartsStorage() @@ -90,26 +93,25 @@ protected: ON_CALL(fetchProjectPartsSourcesByIdStatement, valuesReturnFilePathIds(_, Eq(2))) .WillByDefault(Return(projectPart2.sourcePathIds)); } - NiceMock mockDatabase; - Storage storage{mockDatabase}; - MockSqliteReadStatement &fetchProjectPartIdStatement = storage.fetchProjectPartIdStatement; - MockSqliteWriteStatement &insertProjectPartNameStatement = storage.insertProjectPartNameStatement; - MockSqliteReadStatement &fetchProjectPartNameStatement = storage.fetchProjectPartNameStatement; - MockSqliteReadStatement &fetchProjectPartsStatement = storage.fetchProjectPartsStatement; - MockSqliteReadStatement &fetchProjectPartByIdStatement = storage.fetchProjectPartByIdStatement; - MockSqliteWriteStatement &updateProjectPartStatement = storage.updateProjectPartStatement; - MockSqliteReadStatement &getProjectPartArtefactsBySourceId = storage.getProjectPartArtefactsBySourceId; - MockSqliteReadStatement &getProjectPartArtefactsByProjectPartId = storage.getProjectPartArtefactsByProjectPartId; - MockSqliteWriteStatement &deleteProjectPartsHeadersByIdStatement = storage.deleteProjectPartsHeadersByIdStatement; - MockSqliteWriteStatement &deleteProjectPartsSourcesByIdStatement = storage.deleteProjectPartsSourcesByIdStatement; - MockSqliteWriteStatement &insertProjectPartsHeadersStatement = storage.insertProjectPartsHeadersStatement; - MockSqliteWriteStatement &insertProjectPartsSourcesStatement = storage.insertProjectPartsSourcesStatement; - MockSqliteReadStatement &fetchProjectPartsHeadersByIdStatement = storage.fetchProjectPartsHeadersByIdStatement; - MockSqliteReadStatement &fetchProjectPartsSourcesByIdStatement = storage.fetchProjectPartsSourcesByIdStatement; - MockSqliteReadStatement &fetchProjectPrecompiledHeaderPathStatement = storage.fetchProjectPrecompiledHeaderBuildTimeStatement; - MockSqliteReadStatement &fetchProjectPrecompiledHeaderBuildTimeStatement = storage.fetchProjectPrecompiledHeaderBuildTimeStatement; - MockSqliteWriteStatement &resetDependentIndexingTimeStampsStatement = storage.resetDependentIndexingTimeStampsStatement; - MockSqliteReadStatement &fetchAllProjectPartNamesAndIdsStatement = storage.fetchAllProjectPartNamesAndIdsStatement; + NiceMock databaseMock; + Storage storage{databaseMock}; + ReadStatement<1> &fetchProjectPartIdStatement = storage.fetchProjectPartIdStatement; + WriteStatement &insertProjectPartNameStatement = storage.insertProjectPartNameStatement; + ReadStatement<1> &fetchProjectPartNameStatement = storage.fetchProjectPartNameStatement; + ReadStatement<8> &fetchProjectPartsStatement = storage.fetchProjectPartsStatement; + ReadStatement<8> &fetchProjectPartByIdStatement = storage.fetchProjectPartByIdStatement; + WriteStatement &updateProjectPartStatement = storage.updateProjectPartStatement; + ReadStatement<8> &getProjectPartArtefactsBySourceId = storage.getProjectPartArtefactsBySourceId; + ReadStatement<8> &getProjectPartArtefactsByProjectPartId = storage.getProjectPartArtefactsByProjectPartId; + WriteStatement &deleteProjectPartsHeadersByIdStatement = storage.deleteProjectPartsHeadersByIdStatement; + WriteStatement &deleteProjectPartsSourcesByIdStatement = storage.deleteProjectPartsSourcesByIdStatement; + WriteStatement &insertProjectPartsHeadersStatement = storage.insertProjectPartsHeadersStatement; + WriteStatement &insertProjectPartsSourcesStatement = storage.insertProjectPartsSourcesStatement; + ReadStatement<1> &fetchProjectPartsHeadersByIdStatement = storage.fetchProjectPartsHeadersByIdStatement; + ReadStatement<1> &fetchProjectPartsSourcesByIdStatement = storage.fetchProjectPartsSourcesByIdStatement; + ReadStatement<1> &fetchProjectPrecompiledHeaderBuildTimeStatement = storage.fetchProjectPrecompiledHeaderBuildTimeStatement; + WriteStatement &resetDependentIndexingTimeStampsStatement = storage.resetDependentIndexingTimeStampsStatement; + ReadStatement<2> &fetchAllProjectPartNamesAndIdsStatement = storage.fetchAllProjectPartNamesAndIdsStatement; IncludeSearchPaths systemIncludeSearchPaths{{"/includes", 1, IncludeSearchPathType::BuiltIn}, {"/other/includes", 2, IncludeSearchPathType::System}}; IncludeSearchPaths projectIncludeSearchPaths{{"/project/includes", 1, IncludeSearchPathType::User}, @@ -134,11 +136,11 @@ TEST_F(ProjectPartsStorage, CallsFetchProjectIdWithNonExistingProjectPartName) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))); EXPECT_CALL(insertProjectPartNameStatement, write(TypedEq("test"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartId("test"); } @@ -158,12 +160,12 @@ TEST_F(ProjectPartsStorage, CallsFetchProjectIdWithExistingProjectPart) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))) .WillOnce(Return(Utils::optional{20})); EXPECT_CALL(insertProjectPartNameStatement, write(TypedEq("test"))).Times(0); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartId("test"); } @@ -184,17 +186,17 @@ TEST_F(ProjectPartsStorage, CallsFetchProjectIdWithBusyDatabaset) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))); EXPECT_CALL(insertProjectPartNameStatement, write(TypedEq("test"))) .WillOnce(Throw(Sqlite::StatementIsBusy("busy"))); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))); EXPECT_CALL(insertProjectPartNameStatement, write(TypedEq("test"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartId("test"); } @@ -204,7 +206,7 @@ TEST_F(ProjectPartsStorage, FetchProjectIdWithNonExistingProjectPartName) ON_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))) .WillByDefault(Return(Utils::optional{})); - ON_CALL(mockDatabase, lastInsertedRowId()).WillByDefault(Return(21)); + ON_CALL(databaseMock, lastInsertedRowId()).WillByDefault(Return(21)); auto id = storage.fetchProjectPartId("test"); @@ -216,7 +218,7 @@ TEST_F(ProjectPartsStorage, FetchProjectIdWithNonExistingProjectPartNameUnguarde ON_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))) .WillByDefault(Return(Utils::optional{})); - ON_CALL(mockDatabase, lastInsertedRowId()).WillByDefault(Return(21)); + ON_CALL(databaseMock, lastInsertedRowId()).WillByDefault(Return(21)); auto id = storage.fetchProjectPartIdUnguarded("test"); @@ -232,7 +234,7 @@ TEST_F(ProjectPartsStorage, FetchProjectIdWithNonExistingProjectPartNameAndIsBus EXPECT_CALL(fetchProjectPartIdStatement, valueReturnProjectPartId(TypedEq("test"))) .WillOnce(Return(ClangBackEnd::ProjectPartId{21})); - ON_CALL(mockDatabase, lastInsertedRowId()).WillByDefault(Return(21)); + ON_CALL(databaseMock, lastInsertedRowId()).WillByDefault(Return(21)); auto id = storage.fetchProjectPartId("test"); @@ -265,10 +267,10 @@ TEST_F(ProjectPartsStorage, FetchProjectPartName) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartNameStatement, valueReturnPathString(TypedEq(12))) .WillOnce(Return(Utils::optional{"test"})); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartName(12); } @@ -277,14 +279,14 @@ TEST_F(ProjectPartsStorage, FetchProjectPartNameStatementIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartNameStatement, valueReturnPathString(TypedEq(12))) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartNameStatement, valueReturnPathString(TypedEq(12))) .WillOnce(Return(Utils::optional{"test"})); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartName(12); } @@ -293,9 +295,9 @@ TEST_F(ProjectPartsStorage, FetchProjectParts) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartsStatement, valuesReturnProjectPartContainers(4096)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectParts(); } @@ -304,7 +306,7 @@ TEST_F(ProjectPartsStorage, FetchProjectPartsByIds) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartByIdStatement, valueReturnProjectPartContainer(Eq(1))); EXPECT_CALL(fetchProjectPartsHeadersByIdStatement, valuesReturnFilePathIds(1024, Eq(1))); EXPECT_CALL(fetchProjectPartsSourcesByIdStatement, valuesReturnFilePathIds(1024, Eq(1))); @@ -313,7 +315,7 @@ TEST_F(ProjectPartsStorage, FetchProjectPartsByIds) EXPECT_CALL(fetchProjectPartsHeadersByIdStatement, valuesReturnFilePathIds(1024, Eq(2))); EXPECT_CALL(fetchProjectPartsSourcesByIdStatement, valuesReturnFilePathIds(1024, Eq(2))); EXPECT_CALL(fetchProjectPrecompiledHeaderBuildTimeStatement, valueReturnInt64(Eq(2))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectParts({1, 2}); } @@ -322,15 +324,15 @@ TEST_F(ProjectPartsStorage, FetchProjectPartsByIdsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartByIdStatement, valueReturnProjectPartContainer(Eq(1))); EXPECT_CALL(fetchProjectPartByIdStatement, valueReturnProjectPartContainer(Eq(2))) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchProjectPartByIdStatement, valueReturnProjectPartContainer(Eq(1))); EXPECT_CALL(fetchProjectPartByIdStatement, valueReturnProjectPartContainer(Eq(2))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectParts({1, 2}); } @@ -385,7 +387,7 @@ TEST_F(ProjectPartsStorage, UpdateProjectParts) { InSequence sequence; - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(updateProjectPartStatement, write(TypedEq(1), TypedEq(R"(["-m32"])"), @@ -416,7 +418,7 @@ TEST_F(ProjectPartsStorage, UpdateProjectParts) EXPECT_CALL(deleteProjectPartsSourcesByIdStatement, write(TypedEq(2))); EXPECT_CALL(insertProjectPartsSourcesStatement, write(TypedEq(2), TypedEq(7))); EXPECT_CALL(insertProjectPartsSourcesStatement, write(TypedEq(2), TypedEq(8))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.updateProjectParts({projectPart1, projectPart2}); } @@ -425,8 +427,8 @@ TEST_F(ProjectPartsStorage, UpdateProjectPartsIsBusy) { InSequence sequence; - EXPECT_CALL(mockDatabase, immediateBegin()).WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()).WillOnce(Throw(Sqlite::StatementIsBusy{""})); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(updateProjectPartStatement, write(TypedEq(1), TypedEq(R"(["-m32"])"), @@ -436,7 +438,7 @@ TEST_F(ProjectPartsStorage, UpdateProjectPartsIsBusy) 2, 35, 2)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.updateProjectParts({projectPart1}); } @@ -445,10 +447,10 @@ TEST_F(ProjectPartsStorage, FetchProjectPartArtefactBySourceIdCallsValueInStatem { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(getProjectPartArtefactsBySourceId, valueReturnProjectPartArtefact(1)) .WillRepeatedly(Return(artefact)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartArtefact(FilePathId{1}); } @@ -457,14 +459,14 @@ TEST_F(ProjectPartsStorage, FetchProjectPartArtefactBySourceIdCallsValueInStatem { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(getProjectPartArtefactsBySourceId, valueReturnProjectPartArtefact(1)) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(getProjectPartArtefactsBySourceId, valueReturnProjectPartArtefact(1)) .WillRepeatedly(Return(artefact)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartArtefact(FilePathId{1}); } @@ -483,10 +485,10 @@ TEST_F(ProjectPartsStorage, FetchProjectPartArtefactByProjectPartIdCallsValueInS { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(getProjectPartArtefactsByProjectPartId, valueReturnProjectPartArtefact(74)) .WillRepeatedly(Return(artefact)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartArtefact(ProjectPartId{74}); } @@ -505,14 +507,14 @@ TEST_F(ProjectPartsStorage, FetchProjectPartArtefactByProjectPartIdReturnArtefac { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(getProjectPartArtefactsByProjectPartId, valueReturnProjectPartArtefact(74)) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(getProjectPartArtefactsByProjectPartId, valueReturnProjectPartArtefact(74)) .WillRepeatedly(Return(artefact)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchProjectPartArtefact(ProjectPartId{74}); } @@ -521,12 +523,12 @@ TEST_F(ProjectPartsStorage, ResetDependentIndexingTimeStamps) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(3))); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(4))); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(7))); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(8))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.resetIndexingTimeStamps({projectPart1, projectPart2}); } @@ -535,13 +537,13 @@ TEST_F(ProjectPartsStorage, ResetDependentIndexingTimeStampsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()).WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, immediateBegin()); + EXPECT_CALL(databaseMock, immediateBegin()).WillOnce(Throw(Sqlite::StatementIsBusy{""})); + EXPECT_CALL(databaseMock, immediateBegin()); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(3))); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(4))); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(7))); EXPECT_CALL(resetDependentIndexingTimeStampsStatement, write(TypedEq(8))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.resetIndexingTimeStamps({projectPart1, projectPart2}); } @@ -550,10 +552,10 @@ TEST_F(ProjectPartsStorage, FetchAllProjectPartNamesAndIdsCalls) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchAllProjectPartNamesAndIdsStatement, valuesReturnProjectPartNameIds(_)) .WillRepeatedly(Return(projectPartNameIds)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchAllProjectPartNamesAndIds(); } @@ -562,14 +564,14 @@ TEST_F(ProjectPartsStorage, FetchAllProjectPartNamesAndIdsCallsIsBusy) { InSequence s; - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchAllProjectPartNamesAndIdsStatement, valuesReturnProjectPartNameIds(_)) .WillOnce(Throw(Sqlite::StatementIsBusy{""})); - EXPECT_CALL(mockDatabase, rollback()); - EXPECT_CALL(mockDatabase, deferredBegin()); + EXPECT_CALL(databaseMock, rollback()); + EXPECT_CALL(databaseMock, deferredBegin()); EXPECT_CALL(fetchAllProjectPartNamesAndIdsStatement, valuesReturnProjectPartNameIds(_)) .WillRepeatedly(Return(projectPartNameIds)); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, commit()); storage.fetchAllProjectPartNamesAndIds(); } diff --git a/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp b/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp index 7af00158dfb..89df28be9f2 100644 --- a/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp +++ b/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp @@ -25,30 +25,30 @@ #include "googletest.h" -#include +#include #include namespace { -using Initializer = ClangBackEnd::RefactoringDatabaseInitializer>; +using Initializer = ClangBackEnd::RefactoringDatabaseInitializer>; using Sqlite::Table; class RefactoringDatabaseInitializer : public testing::Test { protected: - NiceMock mockDatabase; - Initializer initializer{mockDatabase}; + NiceMock databaseMock; + Initializer initializer{databaseMock}; }; TEST_F(RefactoringDatabaseInitializer, AddSymbolsTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr TEXT, symbolName TEXT, symbolKind INTEGER, signature TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_symbolKind_symbolName ON symbols(symbolKind, symbolName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr TEXT, symbolName TEXT, symbolKind INTEGER, signature TEXT)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_symbolKind_symbolName ON symbols(symbolKind, symbolName)"))); initializer.createSymbolsTable(); } @@ -57,10 +57,10 @@ TEST_F(RefactoringDatabaseInitializer, AddLocationsTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, column INTEGER, sourceId INTEGER, locationKind INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_locations_sourceId_line_column ON locations(sourceId, line, column)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_locations_sourceId_locationKind ON locations(sourceId, locationKind)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, column INTEGER, sourceId INTEGER, locationKind INTEGER)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_locations_sourceId_line_column ON locations(sourceId, line, column)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_locations_sourceId_locationKind ON locations(sourceId, locationKind)"))); + EXPECT_CALL(databaseMock, execute(Eq( "CREATE INDEX IF NOT EXISTS index_locations_symbolId ON locations(symbolId)"))); initializer.createLocationsTable(); @@ -70,8 +70,8 @@ TEST_F(RefactoringDatabaseInitializer, AddSourcesTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, directoryId INTEGER, sourceName TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_sources_directoryId_sourceName ON sources(directoryId, sourceName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, directoryId INTEGER, sourceName TEXT)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_sources_directoryId_sourceName ON sources(directoryId, sourceName)"))); initializer.createSourcesTable(); } @@ -80,8 +80,8 @@ TEST_F(RefactoringDatabaseInitializer, AddDirectoriesTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY KEY, directoryPath TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_directories_directoryPath ON directories(directoryPath)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY KEY, directoryPath TEXT)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_directories_directoryPath ON directories(directoryPath)"))); initializer.createDirectoriesTable(); } @@ -90,12 +90,12 @@ TEST_F(RefactoringDatabaseInitializer, AddProjectPartsTable) { InSequence s; - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY " "KEY, projectPartName TEXT, toolChainArguments TEXT, compilerMacros " "TEXT, systemIncludeSearchPaths TEXT, projectIncludeSearchPaths TEXT, " "language INTEGER, languageVersion INTEGER, languageExtension INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectParts_projectPartName ON projectParts(projectPartName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectParts_projectPartName ON projectParts(projectPartName)"))); initializer.createProjectPartsTable(); } @@ -104,12 +104,12 @@ TEST_F(RefactoringDatabaseInitializer, AddProjectPartsFilesTable) { InSequence s; - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsFiles(projectPartId INTEGER, " "sourceId INTEGER, sourceType INTEGER, pchCreationTimeStamp INTEGER, " "hasMissingIncludes INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsFiles_sourceId_projectPartId ON projectPartsFiles(sourceId, projectPartId)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsFiles_sourceId_projectPartId ON projectPartsFiles(sourceId, projectPartId)"))); + EXPECT_CALL(databaseMock, execute(Eq( "CREATE INDEX IF NOT EXISTS index_projectPartsFiles_projectPartId_sourceType " "ON projectPartsFiles(projectPartId, sourceType)"))); @@ -121,9 +121,9 @@ TEST_F(RefactoringDatabaseInitializer, AddUsedMacrosTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, sourceId INTEGER, macroName TEXT)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, sourceId INTEGER, macroName TEXT)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName)"))); initializer.createUsedMacrosTable(); } @@ -133,7 +133,7 @@ TEST_F(RefactoringDatabaseInitializer, AddFileStatusesTable) InSequence s; EXPECT_CALL( - mockDatabase, + databaseMock, execute(Eq( "CREATE TABLE IF NOT EXISTS fileStatuses(sourceId INTEGER PRIMARY KEY, size INTEGER, " "lastModified INTEGER, indexingTimeStamp INTEGER)"))); @@ -145,16 +145,16 @@ TEST_F(RefactoringDatabaseInitializer, AddSourceDependenciesTable) { InSequence s; - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, " "dependencySourceId INTEGER)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON " "sourceDependencies(sourceId, dependencySourceId)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_dependencySourceId_sourceId ON " "sourceDependencies(dependencySourceId, sourceId)"))); @@ -166,7 +166,7 @@ TEST_F(RefactoringDatabaseInitializer, AddPrecompiledHeaderTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS precompiledHeaders(projectPartId INTEGER PRIMARY KEY, projectPchPath TEXT, projectPchBuildTime INTEGER, systemPchPath TEXT, systemPchBuildTime INTEGER)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS precompiledHeaders(projectPartId INTEGER PRIMARY KEY, projectPchPath TEXT, projectPchBuildTime INTEGER, systemPchPath TEXT, systemPchBuildTime INTEGER)"))); initializer.createPrecompiledHeadersTable(); } @@ -175,10 +175,10 @@ TEST_F(RefactoringDatabaseInitializer, AddProjectPartsHeadersTable) { InSequence s; - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsHeaders(projectPartId INTEGER, " "sourceId INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsHeaders_projectPartId ON " "projectPartsHeaders(projectPartId)"))); @@ -189,10 +189,10 @@ TEST_F(RefactoringDatabaseInitializer, AddProjectPartsSourcesTable) { InSequence s; - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsSources(projectPartId INTEGER, " "sourceId INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON " "projectPartsSources(projectPartId)"))); @@ -203,166 +203,166 @@ TEST_F(RefactoringDatabaseInitializer, CreateInTheContructor) { InSequence s; - EXPECT_CALL(mockDatabase, isInitialized()).WillOnce(Return(false)); - EXPECT_CALL(mockDatabase, exclusiveBegin()); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, isInitialized()).WillOnce(Return(false)); + EXPECT_CALL(databaseMock, exclusiveBegin()); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr " "TEXT, symbolName TEXT, symbolKind INTEGER, signature TEXT)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_symbolKind_symbolName ON " "symbols(symbolKind, symbolName)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, " "column INTEGER, sourceId INTEGER, locationKind INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_locations_sourceId_line_column " "ON locations(sourceId, line, column)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_locations_sourceId_locationKind ON " "locations(sourceId, locationKind)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq( "CREATE INDEX IF NOT EXISTS index_locations_symbolId ON locations(symbolId)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, " "directoryId INTEGER, sourceName TEXT)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_sources_directoryId_sourceName " "ON sources(directoryId, sourceName)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY " "KEY, directoryPath TEXT)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_directories_directoryPath ON " "directories(directoryPath)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute( Eq("CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY " "KEY, projectPartName TEXT, toolChainArguments TEXT, compilerMacros " "TEXT, systemIncludeSearchPaths TEXT, projectIncludeSearchPaths TEXT, " "language INTEGER, languageVersion INTEGER, languageExtension INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectParts_projectPartName " "ON projectParts(projectPartName)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsFiles(projectPartId INTEGER, " "sourceId INTEGER, sourceType INTEGER, pchCreationTimeStamp INTEGER, " "hasMissingIncludes INTEGER)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsFiles_sourceId_projectPartId " "ON projectPartsFiles(sourceId, projectPartId)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsFiles_projectPartId_sourceType ON " "projectPartsFiles(projectPartId, sourceType)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, " "sourceId INTEGER, macroName TEXT)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON " "usedMacros(sourceId, macroName)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute(Eq( "CREATE TABLE IF NOT EXISTS fileStatuses(sourceId INTEGER PRIMARY KEY, size INTEGER, " "lastModified INTEGER, indexingTimeStamp INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, " "dependencySourceId INTEGER)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON " "sourceDependencies(sourceId, dependencySourceId)"))); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_dependencySourceId_sourceId ON " "sourceDependencies(dependencySourceId, sourceId)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS precompiledHeaders(projectPartId INTEGER " "PRIMARY KEY, projectPchPath TEXT, projectPchBuildTime INTEGER, " "systemPchPath TEXT, systemPchBuildTime INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsHeaders(projectPartId INTEGER, " "sourceId INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsHeaders_projectPartId ON " "projectPartsHeaders(projectPartId)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsSources(projectPartId INTEGER, " "sourceId INTEGER)"))); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON " "projectPartsSources(projectPartId)"))); - EXPECT_CALL(mockDatabase, commit()); - EXPECT_CALL(mockDatabase, setIsInitialized(true)); + EXPECT_CALL(databaseMock, commit()); + EXPECT_CALL(databaseMock, setIsInitialized(true)); - Initializer initializer{mockDatabase}; + Initializer initializer{databaseMock}; } TEST_F(RefactoringDatabaseInitializer, DontCreateIfAlreadyInitialized) { InSequence s; - EXPECT_CALL(mockDatabase, isInitialized()).WillOnce(Return(true)); - EXPECT_CALL(mockDatabase, exclusiveBegin()).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr TEXT, symbolName TEXT, symbolKind INTEGER, signature TEXT)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_symbolKind_symbolName ON symbols(symbolKind, symbolName)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, column INTEGER, sourceId INTEGER, locationKind INTEGER)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_locations_sourceId_line_column ON locations(sourceId, line, column)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_locations_sourceId_locationKind ON locations(sourceId, locationKind)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, directoryId INTEGER, sourceName TEXT, sourceType INTEGER)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_sources_directoryId_sourceName ON sources(directoryId, sourceName)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY KEY, directoryPath TEXT)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_directories_directoryPath ON directories(directoryPath)"))).Times(0); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, isInitialized()).WillOnce(Return(true)); + EXPECT_CALL(databaseMock, exclusiveBegin()).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr TEXT, symbolName TEXT, symbolKind INTEGER, signature TEXT)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_symbols_symbolKind_symbolName ON symbols(symbolKind, symbolName)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, column INTEGER, sourceId INTEGER, locationKind INTEGER)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_locations_sourceId_line_column ON locations(sourceId, line, column)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_locations_sourceId_locationKind ON locations(sourceId, locationKind)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, directoryId INTEGER, sourceName TEXT, sourceType INTEGER)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_sources_directoryId_sourceName ON sources(directoryId, sourceName)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY KEY, directoryPath TEXT)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_directories_directoryPath ON directories(directoryPath)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY " "KEY, projectPartName TEXT, toolChainArguments TEXT, compilerMacros " "TEXT, includeSearchPaths TEXT)"))) .Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectParts_projectPartName ON projectParts(projectPartName)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsFiles(projectPartId INTEGER, sourceId INTEGER)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsFiles_sourceId_projectPartId ON projectPartsFiles(sourceId, projectPartId)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsFiles_projectPartId ON projectPartsFiles(projectPartId)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, sourceId INTEGER, macroName TEXT)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName)"))).Times(0); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectParts_projectPartName ON projectParts(projectPartName)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsFiles(projectPartId INTEGER, sourceId INTEGER)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsFiles_sourceId_projectPartId ON projectPartsFiles(sourceId, projectPartId)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsFiles_projectPartId ON projectPartsFiles(projectPartId)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, sourceId INTEGER, macroName TEXT)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS fileStatuses(sourceId INTEGER PRIMARY KEY, " "size INTEGER, lastModified INTEGER, indexingTimeStamp INTEGER)"))) .Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, dependencySourceId INTEGER)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON sourceDependencies(sourceId, dependencySourceId)"))).Times(0); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS precompiledHeaders(projectPartId INTEGER PRIMARY KEY, pchPath TEXT, pchBuildTime INTEGER)"))).Times(0); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, dependencySourceId INTEGER)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON sourceDependencies(sourceId, dependencySourceId)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS precompiledHeaders(projectPartId INTEGER PRIMARY KEY, pchPath TEXT, pchBuildTime INTEGER)"))).Times(0); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsHeaders(projectPartId INTEGER, " "sourceId INTEGER)"))) .Times(0); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsHeaders_projectPartId ON " "projectPartsHeaders(projectPartId)"))) .Times(0); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE IF NOT EXISTS projectPartsSources(projectPartId INTEGER, " "sourceId INTEGER)"))) .Times(0); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON " "projectPartsSources(projectPartId)"))) .Times(0); - EXPECT_CALL(mockDatabase, commit()).Times(0); + EXPECT_CALL(databaseMock, commit()).Times(0); - Initializer initializer{mockDatabase}; + Initializer initializer{databaseMock}; } } diff --git a/tests/unit/unittest/sqlitedatabase-test.cpp b/tests/unit/unittest/sqlitedatabase-test.cpp index a93100c3e04..7ba3648a1c5 100644 --- a/tests/unit/unittest/sqlitedatabase-test.cpp +++ b/tests/unit/unittest/sqlitedatabase-test.cpp @@ -73,7 +73,7 @@ protected: std::vector names() const { - return Sqlite::ReadStatement("SELECT name FROM test", database).values(8); + return Sqlite::ReadStatement<1>("SELECT name FROM test", database).values(8); } static void updateHookCallback( diff --git a/tests/unit/unittest/sqlitedatabasemock.h b/tests/unit/unittest/sqlitedatabasemock.h index 8c1179e4248..d65dd3f0faf 100644 --- a/tests/unit/unittest/sqlitedatabasemock.h +++ b/tests/unit/unittest/sqlitedatabasemock.h @@ -40,7 +40,8 @@ class SqliteDatabaseMock : public SqliteTransactionBackendMock, public Sqlite::DatabaseInterface { public: - using ReadStatement = NiceMock; + template + using ReadStatement = NiceMock>; using WriteStatement = NiceMock; MOCK_METHOD(void, prepare, (Utils::SmallStringView sqlStatement), ()); diff --git a/tests/unit/unittest/sqlitereadstatementmock.cpp b/tests/unit/unittest/sqlitereadstatementmock.cpp index e3e22d4e161..742b17b314c 100644 --- a/tests/unit/unittest/sqlitereadstatementmock.cpp +++ b/tests/unit/unittest/sqlitereadstatementmock.cpp @@ -27,34 +27,9 @@ #include "sqlitedatabasemock.h" -SqliteReadStatementMock::SqliteReadStatementMock(Utils::SmallStringView sqlStatement, - SqliteDatabaseMock &databaseMock) +SqliteReadStatementMockBase::SqliteReadStatementMockBase(Utils::SmallStringView sqlStatement, + SqliteDatabaseMock &databaseMock) : sqlStatement(sqlStatement) { databaseMock.prepare(sqlStatement); } - -template<> -std::vector SqliteReadStatementMock::values(std::size_t reserveSize) -{ - return valuesReturnStringVector(reserveSize); -} - -template<> -std::vector SqliteReadStatementMock::values(std::size_t reserveSize) -{ - return valuesReturnRowIds(reserveSize); -} - -template<> -Utils::optional SqliteReadStatementMock::value() -{ - return valueReturnLongLong(); -} - -template<> -Utils::optional SqliteReadStatementMock::value( - const Utils::SmallStringView &name, const long long &blob) -{ - return valueReturnBlob(name, blob); -} diff --git a/tests/unit/unittest/sqlitereadstatementmock.h b/tests/unit/unittest/sqlitereadstatementmock.h index f74cce1e8ef..4c48bd9d0e1 100644 --- a/tests/unit/unittest/sqlitereadstatementmock.h +++ b/tests/unit/unittest/sqlitereadstatementmock.h @@ -27,7 +27,19 @@ #include "googletest.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include #include @@ -37,57 +49,196 @@ #include #include +using ClangBackEnd::FilePathIds; +using ClangBackEnd::SourceEntries; +using ClangBackEnd::SourceEntry; +using ClangBackEnd::SourceTimeStamp; +using ClangBackEnd::SourceTimeStamps; +using ClangRefactoring::SourceLocation; +using ClangRefactoring::SourceLocations; +using std::int64_t; +namespace Sources = ClangBackEnd::Sources; +using ClangBackEnd::PrecompiledHeaderTimeStamps; +using ClangBackEnd::UsedMacros; +using ClangBackEnd::Internal::ProjectPartNameId; +using ClangBackEnd::Internal::ProjectPartNameIds; +using ClangRefactoring::Symbol; +using ClangRefactoring::Symbols; + class SqliteDatabaseMock; -class SqliteReadStatementMock +class SqliteReadStatementMockBase { public: - SqliteReadStatementMock() = default; - SqliteReadStatementMock(Utils::SmallStringView sqlStatement, SqliteDatabaseMock &databaseMock); + SqliteReadStatementMockBase() = default; + SqliteReadStatementMockBase(Utils::SmallStringView sqlStatement, SqliteDatabaseMock &databaseMock); MOCK_METHOD(std::vector, valuesReturnStringVector, (std::size_t), ()); MOCK_METHOD(std::vector, valuesReturnRowIds, (std::size_t), ()); - MOCK_METHOD(Utils::optional, valueReturnLongLong, (), ()); + MOCK_METHOD(Utils::optional, valueReturnInt64, (), ()); MOCK_METHOD(Utils::optional, valueReturnBlob, (Utils::SmallStringView, long long), ()); - template - std::vector values(std::size_t reserveSize, const QueryType &... queryValues); + MOCK_METHOD(SourceLocations, valuesReturnSourceLocations, (std::size_t, int, int, int), ()); - template - std::vector values(std::size_t reserveSize); + MOCK_METHOD(CppTools::Usages, valuesReturnSourceUsages, (std::size_t, int, int, int), ()); - template class QueryContainerType, - typename QueryElementType> - std::vector values(std::size_t reserveSize, - const QueryContainerType &queryValues); + MOCK_METHOD(CppTools::Usages, valuesReturnSourceUsages, (std::size_t, int, int, int, int), ()); - template - Utils::optional value(const QueryTypes&... queryValues); + MOCK_METHOD(std::vector, valuesReturnStdVectorDirectory, (std::size_t), ()); + + MOCK_METHOD(std::vector, valuesReturnStdVectorSource, (std::size_t), ()); + + MOCK_METHOD(SourceEntries, valuesReturnSourceEntries, (std::size_t, int, int), ()); + + MOCK_METHOD(UsedMacros, valuesReturnUsedMacros, (std::size_t, int), ()); + + MOCK_METHOD(FilePathIds, valuesReturnFilePathIds, (std::size_t, int), ()); + + MOCK_METHOD(ProjectPartNameIds, valuesReturnProjectPartNameIds, (std::size_t), ()); + + MOCK_METHOD(Utils::optional, valueReturnInt32, (Utils::SmallStringView), ()); + + MOCK_METHOD(Utils::optional, valueReturnInt32, (int, Utils::SmallStringView), ()); + + MOCK_METHOD(Utils::optional, valueReturnInt32, (int), ()); + + MOCK_METHOD(Utils::optional, valueReturnInt64, (int), ()); + + MOCK_METHOD(Utils::optional, valueReturnPathString, (int), ()); + + MOCK_METHOD(Utils::optional, valueReturnPathString, (Utils::SmallStringView), ()); + + MOCK_METHOD(Utils::optional, valueReturnFilePath, (int), ()); + + MOCK_METHOD(ClangBackEnd::FilePaths, valuesReturnFilePaths, (std::size_t), ()); + + MOCK_METHOD(Utils::optional, valueReturnSmallString, (int), ()); + + MOCK_METHOD(Utils::optional, + valueReturnSourceNameAndDirectoryId, + (int) ); + + MOCK_METHOD(Utils::optional, + valueReturnProjectPartArtefact, + (int) ); + + MOCK_METHOD(Utils::optional, + valueReturnProjectPartArtefact, + (Utils::SmallStringView)); + MOCK_METHOD(ClangBackEnd::ProjectPartArtefacts, valuesReturnProjectPartArtefacts, (std::size_t), ()); + MOCK_METHOD(Utils::optional, + valueReturnProjectPartContainer, + (int) ); + MOCK_METHOD(ClangBackEnd::ProjectPartContainers, + valuesReturnProjectPartContainers, + (std::size_t), + ()); + MOCK_METHOD(Utils::optional, valueReturnProjectPartPch, (int), ()); + + MOCK_METHOD(Utils::optional, valueReturnPchPaths, (int), ()); + + MOCK_METHOD(Symbols, valuesReturnSymbols, (std::size_t, int, Utils::SmallStringView), ()); + + MOCK_METHOD(Symbols, valuesReturnSymbols, (std::size_t, int, int, Utils::SmallStringView), ()); + + MOCK_METHOD(Symbols, valuesReturnSymbols, (std::size_t, int, int, int, Utils::SmallStringView), ()); + + MOCK_METHOD(SourceLocation, valueReturnSourceLocation, (long long, int), ()); + + MOCK_METHOD(Utils::optional, + valueReturnProjectPartId, + (Utils::SmallStringView)); + + MOCK_METHOD(SourceTimeStamps, valuesReturnSourceTimeStamps, (std::size_t), ()); + MOCK_METHOD(SourceTimeStamps, valuesReturnSourceTimeStamps, (std::size_t, int sourcePathId), ()); + + MOCK_METHOD(Utils::optional, + valuesReturnPrecompiledHeaderTimeStamps, + (int projectPartId)); + + template + auto value(const QueryTypes &...queryValues) + { + if constexpr (std::is_same_v) + return valueReturnBlob(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnProjectPartId(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnInt32(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnInt64(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnPathString(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnFilePath(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnProjectPartArtefact(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnProjectPartContainer(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnProjectPartPch(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnPchPaths(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnSmallString(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnSourceLocation(queryValues...); + else if constexpr (std::is_same_v) + return valueReturnSourceNameAndDirectoryId(queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnPrecompiledHeaderTimeStamps(queryValues...); + else + static_assert(!std::is_same_v, + "SqliteReadStatementMock::value does not handle result type!"); + } + + template + auto values(std::size_t reserveSize, const QueryType &...queryValues) + { + if constexpr (std::is_same_v) + return valuesReturnStringVector(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnRowIds(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnSourceLocations(reserveSize, queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnSourceUsages(reserveSize, queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnSymbols(reserveSize, queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnUsedMacros(reserveSize, queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnFilePathIds(reserveSize, queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnFilePaths(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnStdVectorDirectory(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnStdVectorSource(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnProjectPartNameIds(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnProjectPartContainers(reserveSize); + else if constexpr (std::is_same_v) + return valuesReturnSourceEntries(reserveSize, queryValues...); + else if constexpr (std::is_same_v) + return valuesReturnSourceTimeStamps(reserveSize, queryValues...); + else + static_assert(!std::is_same_v, + "SqliteReadStatementMock::values does not handle result type!"); + } public: Utils::SmallString sqlStatement; }; -template<> -std::vector SqliteReadStatementMock::values( - std::size_t reserveSize); - -template<> -std::vector SqliteReadStatementMock::values(std::size_t reserveSize); - -template<> -Utils::optional SqliteReadStatementMock::value(); - -template<> -Utils::optional SqliteReadStatementMock::value( - const Utils::SmallStringView &name, const long long &blob); +template +class SqliteReadStatementMock : public SqliteReadStatementMockBase +{ +public: + using SqliteReadStatementMockBase::SqliteReadStatementMockBase; +}; diff --git a/tests/unit/unittest/sqlitesessions-test.cpp b/tests/unit/unittest/sqlitesessions-test.cpp index 31c71375511..10575731fb5 100644 --- a/tests/unit/unittest/sqlitesessions-test.cpp +++ b/tests/unit/unittest/sqlitesessions-test.cpp @@ -124,8 +124,8 @@ class Sessions : public testing::Test protected: Sessions() { sessions.setAttachedTables({"data", "tags"}); } - std::vector fetchData() { return selectData.values(8); } - std::vector fetchTags() { return selectTags.values(8); } + std::vector fetchData() { return selectData.values(8); } + std::vector fetchTags() { return selectTags.values(8); } protected: Sqlite::Database database{":memory:", Sqlite::JournalMode::Memory}; @@ -150,10 +150,10 @@ protected: "DELETE FROM tags WHERE dataId=(SELECT id FROM data WHERE name=?)", database}; Sqlite::WriteStatement insertTag{ "INSERT INTO tags(dataId, tag) VALUES ((SELECT id FROM data WHERE name=?1), ?2) ", database}; - Sqlite::ReadStatement selectData{"SELECT name, number, value FROM data", database}; - Sqlite::ReadStatement selectTags{"SELECT name, tag FROM tags JOIN data ON data.id=tags.dataId", - database}; - Sqlite::ReadStatement selectChangeSets{"SELECT changeset FROM testsessions", database}; + Sqlite::ReadStatement<3> selectData{"SELECT name, number, value FROM data", database}; + Sqlite::ReadStatement<2> selectTags{ + "SELECT name, tag FROM tags JOIN data ON data.id=tags.dataId", database}; + Sqlite::ReadStatement<1> selectChangeSets{"SELECT changeset FROM testsessions", database}; }; TEST_F(Sessions, DontThrowForCommittingWithoutSessionStart) diff --git a/tests/unit/unittest/sqlitestatement-test.cpp b/tests/unit/unittest/sqlitestatement-test.cpp index 1639c1dd1fb..065ad8d9762 100644 --- a/tests/unit/unittest/sqlitestatement-test.cpp +++ b/tests/unit/unittest/sqlitestatement-test.cpp @@ -121,12 +121,12 @@ struct Output TEST_F(SqliteStatement, ThrowsStatementHasErrorForWrongSqlStatement) { - ASSERT_THROW(ReadStatement("blah blah blah", database), Sqlite::StatementHasError); + ASSERT_THROW(ReadStatement<0>("blah blah blah", database), Sqlite::StatementHasError); } TEST_F(SqliteStatement, ThrowsNotReadOnlySqlStatementForWritableSqlStatementInReadStatement) { - ASSERT_THROW(ReadStatement("INSERT INTO test(name, number) VALUES (?, ?)", database), + ASSERT_THROW(ReadStatement<0>("INSERT INTO test(name, number) VALUES (?, ?)", database), Sqlite::NotReadOnlySqlStatement); } @@ -143,7 +143,7 @@ TEST_F(SqliteStatement, CountRows) while (statement.next()) ++nextCount; - int sqlCount = ReadStatement::toValue("SELECT count(*) FROM test", database); + int sqlCount = ReadStatement<1>::toValue("SELECT count(*) FROM test", database); ASSERT_THAT(nextCount, sqlCount); } @@ -174,24 +174,28 @@ TEST_F(SqliteStatement, Value) TEST_F(SqliteStatement, ToIntegerValue) { - auto value = ReadStatement::toValue("SELECT number FROM test WHERE name='foo'", database); + auto value = ReadStatement<1>::toValue("SELECT number FROM test WHERE name='foo'", database); ASSERT_THAT(value, 23); } TEST_F(SqliteStatement, ToLongIntegerValue) { - ASSERT_THAT(ReadStatement::toValue("SELECT number FROM test WHERE name='foo'", database), Eq(23)); + ASSERT_THAT(ReadStatement<1>::toValue("SELECT number FROM test WHERE name='foo'", database), + Eq(23)); } TEST_F(SqliteStatement, ToDoubleValue) { - ASSERT_THAT(ReadStatement::toValue("SELECT number FROM test WHERE name='foo'", database), 23.3); + ASSERT_THAT(ReadStatement<1>::toValue("SELECT number FROM test WHERE name='foo'", database), + 23.3); } TEST_F(SqliteStatement, ToStringValue) { - ASSERT_THAT(ReadStatement::toValue("SELECT name FROM test WHERE name='foo'", database), "foo"); + ASSERT_THAT(ReadStatement<1>::toValue( + "SELECT name FROM test WHERE name='foo'", database), + "foo"); } TEST_F(SqliteStatement, BindNull) @@ -544,16 +548,15 @@ TEST_F(SqliteStatement, CannotReadFromClosedDatabase) { database.close(); - ASSERT_THROW(ReadStatement("SELECT * FROM test", database), - Sqlite::DatabaseIsNotOpen); + ASSERT_THROW(ReadStatement<3>("SELECT * FROM test", database), Sqlite::DatabaseIsNotOpen); } TEST_F(SqliteStatement, GetTupleValuesWithoutArguments) { using Tuple = std::tuple; - ReadStatement statement("SELECT name, number, value FROM test", database); + ReadStatement<3> statement("SELECT name, number, value FROM test", database); - auto values = statement.values(3); + auto values = statement.values(3); ASSERT_THAT(values, UnorderedElementsAre(Tuple{"bar", 0, 1}, Tuple{"foo", 23.3, 2}, Tuple{"poo", 40.0, 3})); @@ -561,7 +564,7 @@ TEST_F(SqliteStatement, GetTupleValuesWithoutArguments) TEST_F(SqliteStatement, GetSingleValuesWithoutArguments) { - ReadStatement statement("SELECT name FROM test", database); + ReadStatement<1> statement("SELECT name FROM test", database); std::vector values = statement.values(3); @@ -586,7 +589,7 @@ public: TEST_F(SqliteStatement, GetSingleSqliteValuesWithoutArguments) { - ReadStatement statement("SELECT number FROM test", database); + ReadStatement<1> statement("SELECT number FROM test", database); database.execute("INSERT INTO test VALUES (NULL, NULL, NULL)"); std::vector values = statement.values(3); @@ -596,9 +599,9 @@ TEST_F(SqliteStatement, GetSingleSqliteValuesWithoutArguments) TEST_F(SqliteStatement, GetStructValuesWithoutArguments) { - ReadStatement statement("SELECT name, number, value FROM test", database); + ReadStatement<3> statement("SELECT name, number, value FROM test", database); - auto values = statement.values(3); + auto values = statement.values(3); ASSERT_THAT(values, UnorderedElementsAre(Output{"bar", "blah", 1}, @@ -608,7 +611,7 @@ TEST_F(SqliteStatement, GetStructValuesWithoutArguments) TEST_F(SqliteStatement, GetValuesForSingleOutputWithBindingMultipleTimes) { - ReadStatement statement("SELECT name FROM test WHERE number=?", database); + ReadStatement<1> statement("SELECT name FROM test WHERE number=?", database); statement.values(3, 40); std::vector values = statement.values(3, 40); @@ -616,56 +619,13 @@ TEST_F(SqliteStatement, GetValuesForSingleOutputWithBindingMultipleTimes) ASSERT_THAT(values, ElementsAre("poo")); } -TEST_F(SqliteStatement, GetValuesForMultipleOutputValuesAndContainerQueryValues) -{ - using Tuple = std::tuple; - std::vector queryValues = {40, 23.3}; - ReadStatement statement("SELECT name, number, value FROM test WHERE number=?", database); - - auto values = statement.values(3, queryValues); - - ASSERT_THAT(values, UnorderedElementsAre(Tuple{"poo", 40, 3.}, Tuple{"foo", 23.3, 2.})); -} - -TEST_F(SqliteStatement, GetValuesForSingleOutputValuesAndContainerQueryValues) -{ - std::vector queryValues = {40, 23.3}; - ReadStatement statement("SELECT name FROM test WHERE number=?", database); - - std::vector values = statement.values(3, queryValues); - - ASSERT_THAT(values, UnorderedElementsAre("poo", "foo")); -} - -TEST_F(SqliteStatement, GetValuesForMultipleOutputValuesAndContainerQueryTupleValues) -{ - using Tuple = std::tuple; - using ResultTuple = std::tuple; - std::vector queryValues = {{"poo", "40", 3}, {"bar", "blah", 1}}; - ReadStatement statement("SELECT name, number, value FROM test WHERE name= ? AND number=? AND value=?", database); - - auto values = statement.values(3, queryValues); - - ASSERT_THAT(values, UnorderedElementsAre(ResultTuple{"poo", 40, 3}, ResultTuple{"bar", 0, 1})); -} - -TEST_F(SqliteStatement, GetValuesForSingleOutputValuesAndContainerQueryTupleValues) -{ - using Tuple = std::tuple; - std::vector queryValues = {{"poo", "40"}, {"bar", "blah"}}; - ReadStatement statement("SELECT name FROM test WHERE name= ? AND number=?", database); - - std::vector values = statement.values(3, queryValues); - - ASSERT_THAT(values, UnorderedElementsAre("poo", "bar")); -} - TEST_F(SqliteStatement, GetValuesForMultipleOutputValuesAndMultipleQueryValue) { using Tuple = std::tuple; - ReadStatement statement("SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); + ReadStatement<3> statement( + "SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); - auto values = statement.values(3, "bar", "blah", 1); + auto values = statement.values(3, "bar", "blah", 1); ASSERT_THAT(values, ElementsAre(Tuple{"bar", "blah", 1})); } @@ -673,49 +633,29 @@ TEST_F(SqliteStatement, GetValuesForMultipleOutputValuesAndMultipleQueryValue) TEST_F(SqliteStatement, CallGetValuesForMultipleOutputValuesAndMultipleQueryValueMultipleTimes) { using Tuple = std::tuple; - ReadStatement statement("SELECT name, number, value FROM test WHERE name=? AND number=?", database); - statement.values(3, "bar", "blah"); + ReadStatement<3> statement("SELECT name, number, value FROM test WHERE name=? AND number=?", + database); + statement.values(3, "bar", "blah"); - auto values = statement.values(3, "bar", "blah"); + auto values = statement.values(3, "bar", "blah"); ASSERT_THAT(values, ElementsAre(Tuple{"bar", "blah", 1})); } TEST_F(SqliteStatement, GetStructOutputValuesAndMultipleQueryValue) { - ReadStatement statement("SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); + ReadStatement<3> statement( + "SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); - auto values = statement.values(3, "bar", "blah", 1); + auto values = statement.values(3, "bar", "blah", 1); ASSERT_THAT(values, ElementsAre(Output{"bar", "blah", 1})); } -TEST_F(SqliteStatement, GetStructOutputValuesAndContainerQueryValues) -{ - std::vector queryValues = {40, 23.3}; - ReadStatement statement("SELECT name, number, value FROM test WHERE number=?", database); - - auto values = statement.values(3, queryValues); - - ASSERT_THAT(values, ElementsAre(Output{"poo", "40", 3}, - Output{"foo", "23.3", 2})); -} - -TEST_F(SqliteStatement, GetStructOutputValuesAndContainerQueryTupleValues) -{ - using Tuple = std::tuple; - std::vector queryValues = {{"poo", "40", 3}, {"bar", "blah", 1}}; - ReadStatement statement("SELECT name, number, value FROM test WHERE name= ? AND number=? AND value=?", database); - - auto values = statement.values(3, queryValues); - - ASSERT_THAT(values, UnorderedElementsAre(Output{"poo", "40", 3}, Output{"bar", "blah", 1})); -} - TEST_F(SqliteStatement, GetBlobValues) { database.execute("INSERT INTO test VALUES ('blob', 40, x'AABBCCDD')"); - ReadStatement statement("SELECT value FROM test WHERE name='blob'", database); + ReadStatement<1> statement("SELECT value FROM test WHERE name='blob'", database); const int value = 0xDDCCBBAA; auto bytePointer = reinterpret_cast(&value); Sqlite::BlobView bytes{bytePointer, 4}; @@ -727,7 +667,7 @@ TEST_F(SqliteStatement, GetBlobValues) TEST_F(SqliteStatement, GetEmptyBlobValueForInteger) { - ReadStatement statement("SELECT value FROM test WHERE name='poo'", database); + ReadStatement<1> statement("SELECT value FROM test WHERE name='poo'", database); auto value = statement.value(); @@ -736,7 +676,7 @@ TEST_F(SqliteStatement, GetEmptyBlobValueForInteger) TEST_F(SqliteStatement, GetEmptyBlobValueForFloat) { - ReadStatement statement("SELECT number FROM test WHERE name='foo'", database); + ReadStatement<1> statement("SELECT number FROM test WHERE name='foo'", database); auto value = statement.value(); @@ -745,7 +685,7 @@ TEST_F(SqliteStatement, GetEmptyBlobValueForFloat) TEST_F(SqliteStatement, GetEmptyBlobValueForText) { - ReadStatement statement("SELECT number FROM test WHERE name='bar'", database); + ReadStatement<1> statement("SELECT number FROM test WHERE name='bar'", database); auto value = statement.value(); @@ -754,7 +694,8 @@ TEST_F(SqliteStatement, GetEmptyBlobValueForText) TEST_F(SqliteStatement, GetOptionalSingleValueAndMultipleQueryValue) { - ReadStatement statement("SELECT name FROM test WHERE name=? AND number=? AND value=?", database); + ReadStatement<1> statement("SELECT name FROM test WHERE name=? AND number=? AND value=?", + database); auto value = statement.value("bar", "blah", 1); @@ -763,9 +704,10 @@ TEST_F(SqliteStatement, GetOptionalSingleValueAndMultipleQueryValue) TEST_F(SqliteStatement, GetOptionalOutputValueAndMultipleQueryValue) { - ReadStatement statement("SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); + ReadStatement<3> statement( + "SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); - auto value = statement.value("bar", "blah", 1); + auto value = statement.value("bar", "blah", 1); ASSERT_THAT(value.value(), Eq(Output{"bar", "blah", 1})); } @@ -773,9 +715,10 @@ TEST_F(SqliteStatement, GetOptionalOutputValueAndMultipleQueryValue) TEST_F(SqliteStatement, GetOptionalTupleValueAndMultipleQueryValue) { using Tuple = std::tuple; - ReadStatement statement("SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); + ReadStatement<3> statement( + "SELECT name, number, value FROM test WHERE name=? AND number=? AND value=?", database); - auto value = statement.value("bar", "blah", 1); + auto value = statement.value("bar", "blah", 1); ASSERT_THAT(value.value(), Eq(Tuple{"bar", "blah", 1})); } @@ -837,65 +780,6 @@ TEST_F(SqliteStatement, GetValuesWithSimpleArgumentsCallsResetIfExceptionIsThrow EXPECT_THROW(mockStatement.values(3, "foo", "bar"), Sqlite::StatementHasError); } -TEST_F(SqliteStatement, GetValuesWithVectorArgumentsCallsReset) -{ - MockSqliteStatement mockStatement; - - EXPECT_CALL(mockStatement, reset()).Times(2); - - mockStatement.values(3, std::vector{"bar", "foo"}); -} - -TEST_F(SqliteStatement, GetValuesWithVectorArgumentCallsResetIfExceptionIsThrown) -{ - MockSqliteStatement mockStatement; - ON_CALL(mockStatement, next()).WillByDefault(Throw(Sqlite::StatementHasError(""))); - - EXPECT_CALL(mockStatement, reset()); - - EXPECT_THROW(mockStatement.values(3, std::vector{"bar", "foo"}), - Sqlite::StatementHasError); -} - -TEST_F(SqliteStatement, GetValuesWithTupleArgumentsCallsReset) -{ - MockSqliteStatement mockStatement; - - EXPECT_CALL(mockStatement, reset()).Times(2); - - mockStatement.values(3, std::vector>{{1}, {2}}); -} - -TEST_F(SqliteStatement, GetValuesWithTupleArgumentsCallsResetIfExceptionIsThrown) -{ - MockSqliteStatement mockStatement; - ON_CALL(mockStatement, next()).WillByDefault(Throw(Sqlite::StatementHasError(""))); - - EXPECT_CALL(mockStatement, reset()); - - EXPECT_THROW(mockStatement.values(3, std::vector>{{1}, {2}}), - Sqlite::StatementHasError); -} - -TEST_F(SqliteStatement, DoubleThrowExceptionsInReset) -{ - MockSqliteStatement mockStatement; - ON_CALL(mockStatement, next()).WillByDefault(Throw(Sqlite::StatementHasError(""))); - ON_CALL(mockStatement, reset()).WillByDefault(Throw(Sqlite::StatementHasError(""))); - - ASSERT_THROW(mockStatement.values(3, std::vector>{{1}, {2}}), - Sqlite::StatementHasError); -} - -TEST_F(SqliteStatement, ThrowExceptionOnlyInReset) -{ - MockSqliteStatement mockStatement; - ON_CALL(mockStatement, reset()).WillByDefault(Throw(Sqlite::StatementHasError(""))); - - ASSERT_THROW(mockStatement.values(3, std::vector>{{1}, {2}}), - Sqlite::StatementHasError); -} - TEST_F(SqliteStatement, ResetIfWriteIsThrowingException) { MockSqliteStatement mockStatement; @@ -917,138 +801,101 @@ TEST_F(SqliteStatement, ResetIfExecuteThrowsException) ASSERT_ANY_THROW(mockStatement.execute()); } -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForValue) +TEST_F(SqliteStatement, ReadStatementThrowsColumnCountDoesNotMatch) { - SqliteTestStatement statement("SELECT name, number FROM test", database); + MockFunction callbackMock; - ASSERT_THROW(statement.value(), Sqlite::ColumnCountDoesNotMatch); -} - -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForValues) -{ - SqliteTestStatement statement("SELECT name, number FROM test", database); - - ASSERT_THROW(statement.values(1), Sqlite::ColumnCountDoesNotMatch); -} - -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForValuesWithArguments) -{ - SqliteTestStatement statement("SELECT name, number FROM test WHERE name=?", database); - - ASSERT_THROW(statement.values(1, 2), Sqlite::ColumnCountDoesNotMatch); -} - -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForValuesWithVectorArguments) -{ - SqliteTestStatement statement("SELECT name, number FROM test", database); - - ASSERT_THROW(statement.values(1, std::vector{}), Sqlite::ColumnCountDoesNotMatch); -} - -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForValuesWithTupleArguments) -{ - SqliteTestStatement statement("SELECT name, number FROM test", database); - - ASSERT_THROW(statement.values(1, std::vector>{}), + ASSERT_THROW(ReadStatement<1> statement("SELECT name, number FROM test", database), Sqlite::ColumnCountDoesNotMatch); } -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForToValues) +TEST_F(SqliteStatement, ReadWriteStatementThrowsColumnCountDoesNotMatch) { - ASSERT_THROW(SqliteTestStatement::toValue("SELECT name, number FROM test", database), + MockFunction callbackMock; + + ASSERT_THROW(ReadWriteStatement<1> statement("SELECT name, number FROM test", database), Sqlite::ColumnCountDoesNotMatch); } TEST_F(SqliteStatement, ReadCallback) { MockFunction callbackMock; - ReadStatement statement("SELECT name, value FROM test", database); + ReadStatement<2> statement("SELECT name, value FROM test", database); EXPECT_CALL(callbackMock, Call(Eq("bar"), Eq(1))); EXPECT_CALL(callbackMock, Call(Eq("foo"), Eq(2))); EXPECT_CALL(callbackMock, Call(Eq("poo"), Eq(3))); - statement.readCallback<2>(callbackMock.AsStdFunction()); + statement.readCallback(callbackMock.AsStdFunction()); } TEST_F(SqliteStatement, ReadCallbackCalledWithArguments) { MockFunction callbackMock; - ReadStatement statement("SELECT name, value FROM test WHERE value=?", database); + ReadStatement<2> statement("SELECT name, value FROM test WHERE value=?", database); EXPECT_CALL(callbackMock, Call(Eq("foo"), Eq(2))); - statement.readCallback<2>(callbackMock.AsStdFunction(), 2); + statement.readCallback(callbackMock.AsStdFunction(), 2); } TEST_F(SqliteStatement, ReadCallbackAborts) { MockFunction callbackMock; - ReadStatement statement("SELECT name, value FROM test ORDER BY name", database); + ReadStatement<2> statement("SELECT name, value FROM test ORDER BY name", database); EXPECT_CALL(callbackMock, Call(Eq("bar"), Eq(1))); EXPECT_CALL(callbackMock, Call(Eq("foo"), Eq(2))).WillOnce(Return(Sqlite::CallbackControl::Abort)); EXPECT_CALL(callbackMock, Call(Eq("poo"), Eq(3))).Times(0); - statement.readCallback<2>(callbackMock.AsStdFunction()); -} - -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForReadCallback) -{ - MockFunction callbackMock; - SqliteTestStatement statement("SELECT name, number FROM test", database); - - ASSERT_THROW(statement.readCallback<1>(callbackMock.AsStdFunction()), - Sqlite::ColumnCountDoesNotMatch); + statement.readCallback(callbackMock.AsStdFunction()); } TEST_F(SqliteStatement, ReadCallbackCallsResetAfterCallbacks) { MockFunction callbackMock; - MockSqliteStatement mockStatement; + MockSqliteStatement<2> mockStatement; EXPECT_CALL(mockStatement, reset()); - mockStatement.readCallback<2>(callbackMock.AsStdFunction()); + mockStatement.readCallback(callbackMock.AsStdFunction()); } TEST_F(SqliteStatement, ReadCallbackCallsResetAfterCallbacksAborts) { MockFunction callbackMock; - MockSqliteStatement mockStatement; + MockSqliteStatement<2> mockStatement; ON_CALL(callbackMock, Call(_, _)).WillByDefault(Return(Sqlite::CallbackControl::Abort)); EXPECT_CALL(mockStatement, reset()); - mockStatement.readCallback<2>(callbackMock.AsStdFunction()); + mockStatement.readCallback(callbackMock.AsStdFunction()); } TEST_F(SqliteStatement, ReadCallbackThrowsForError) { MockFunction callbackMock; - MockSqliteStatement mockStatement; + MockSqliteStatement<2> mockStatement; ON_CALL(mockStatement, next()).WillByDefault(Throw(Sqlite::StatementHasError(""))); - ASSERT_THROW(mockStatement.readCallback<2>(callbackMock.AsStdFunction()), - Sqlite::StatementHasError); + ASSERT_THROW(mockStatement.readCallback(callbackMock.AsStdFunction()), Sqlite::StatementHasError); } TEST_F(SqliteStatement, ReadCallbackCallsResetIfExceptionIsThrown) { MockFunction callbackMock; - MockSqliteStatement mockStatement; + MockSqliteStatement<2> mockStatement; ON_CALL(mockStatement, next()).WillByDefault(Throw(Sqlite::StatementHasError(""))); EXPECT_CALL(mockStatement, reset()); - EXPECT_THROW(mockStatement.readCallback<2>(callbackMock.AsStdFunction()), - Sqlite::StatementHasError); + EXPECT_THROW(mockStatement.readCallback(callbackMock.AsStdFunction()), Sqlite::StatementHasError); } TEST_F(SqliteStatement, ReadToContainer) { std::deque values; - ReadStatement statement("SELECT number FROM test", database); + ReadStatement<1> statement("SELECT number FROM test", database); statement.readTo<1>(values); @@ -1058,21 +905,13 @@ TEST_F(SqliteStatement, ReadToContainer) TEST_F(SqliteStatement, ReadToContainerCallCallbackWithArguments) { std::deque values; - ReadStatement statement("SELECT number FROM test WHERE value=?", database); + ReadStatement<1> statement("SELECT number FROM test WHERE value=?", database); statement.readTo(values, 2); ASSERT_THAT(values, ElementsAre(Eq(23.3))); } -TEST_F(SqliteStatement, ThrowInvalidColumnFetchedForToManyArgumentsForReadTo) -{ - std::deque values; - SqliteTestStatement statement("SELECT name, number FROM test", database); - - ASSERT_THROW(statement.readTo<1>(values, 2), Sqlite::ColumnCountDoesNotMatch); -} - TEST_F(SqliteStatement, ReadToCallsResetAfterPushingAllValuesBack) { std::deque values; diff --git a/tests/unit/unittest/sqlitetable-test.cpp b/tests/unit/unittest/sqlitetable-test.cpp index f96b451785e..b916ad5bc89 100644 --- a/tests/unit/unittest/sqlitetable-test.cpp +++ b/tests/unit/unittest/sqlitetable-test.cpp @@ -27,7 +27,7 @@ #include "spydummy.h" #include -#include +#include #include namespace { @@ -45,7 +45,7 @@ using Sqlite::OpenMode; class SqliteTable : public ::testing::Test { protected: - NiceMock mockDatabase; + NiceMock databaseMock; Sqlite::Table table; Utils::SmallString tableName = "testTable"; }; @@ -93,9 +93,9 @@ TEST_F(SqliteTable, InitializeTable) table.addColumn("name"); table.addColumn("value"); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE IF NOT EXISTS testTable(name NUMERIC, value NUMERIC) WITHOUT ROWID"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TEMPORARY TABLE IF NOT EXISTS testTable(name NUMERIC, value NUMERIC) WITHOUT ROWID"))); - table.initialize(mockDatabase); + table.initialize(databaseMock); } TEST_F(SqliteTable, InitializeTableWithIndex) @@ -107,11 +107,11 @@ TEST_F(SqliteTable, InitializeTableWithIndex) table.addIndex({column}); table.addIndex({column2}); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE testTable(name NUMERIC, value NUMERIC)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_testTable_name ON testTable(name)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_testTable_value ON testTable(value)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE testTable(name NUMERIC, value NUMERIC)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_testTable_name ON testTable(name)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_testTable_value ON testTable(value)"))); - table.initialize(mockDatabase); + table.initialize(databaseMock); } TEST_F(SqliteTable, AddForeignKeyColumnWithTableCalls) @@ -125,11 +125,11 @@ TEST_F(SqliteTable, AddForeignKeyColumnWithTableCalls) ForeignKeyAction::Cascade, Enforment::Deferred); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute(Eq("CREATE TABLE testTable(name INTEGER REFERENCES foreignTable ON UPDATE " "SET NULL ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED)"))); - table.initialize(mockDatabase); + table.initialize(databaseMock); } TEST_F(SqliteTable, AddForeignKeyColumnWithColumnCalls) @@ -145,12 +145,12 @@ TEST_F(SqliteTable, AddForeignKeyColumnWithColumnCalls) Enforment::Deferred); EXPECT_CALL( - mockDatabase, + databaseMock, execute( Eq("CREATE TABLE testTable(name TEXT REFERENCES foreignTable(foreignColumn) ON UPDATE " "SET DEFAULT ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED)"))); - table.initialize(mockDatabase); + table.initialize(databaseMock); } TEST_F(SqliteTable, AddColumn) @@ -299,10 +299,10 @@ TEST_F(SqliteTable, AddPrimaryTableContraint) const auto &nameColumn = table.addColumn("name"); table.addPrimaryKeyContraint({idColumn, nameColumn}); - EXPECT_CALL(mockDatabase, + EXPECT_CALL(databaseMock, execute( Eq("CREATE TABLE testTable(id NUMERIC, name NUMERIC, PRIMARY KEY(id, name))"))); - table.initialize(mockDatabase); + table.initialize(databaseMock); } } // namespace diff --git a/tests/unit/unittest/sqliteteststatement.h b/tests/unit/unittest/sqliteteststatement.h index 8705280ca62..f2fe6ba2959 100644 --- a/tests/unit/unittest/sqliteteststatement.h +++ b/tests/unit/unittest/sqliteteststatement.h @@ -27,11 +27,13 @@ #include -class SqliteTestStatement : public Sqlite::StatementImplementation +class SqliteTestStatement : public Sqlite::StatementImplementation { + using Base = Sqlite::StatementImplementation; + public: explicit SqliteTestStatement(Utils::SmallStringView sqlStatement, Sqlite::Database &database) - : Sqlite::StatementImplementation(sqlStatement, database) + : Base(sqlStatement, database) {} }; diff --git a/tests/unit/unittest/sqlitetransaction-test.cpp b/tests/unit/unittest/sqlitetransaction-test.cpp index 0aa426db675..aaadd22d13e 100644 --- a/tests/unit/unittest/sqlitetransaction-test.cpp +++ b/tests/unit/unittest/sqlitetransaction-test.cpp @@ -27,9 +27,9 @@ #include "mocksqlitetransactionbackend.h" -#include +#include #include -#include +#include namespace { diff --git a/tests/unit/unittest/sqlitewritestatementmock.h b/tests/unit/unittest/sqlitewritestatementmock.h index 64ce061d607..30f8383b6be 100644 --- a/tests/unit/unittest/sqlitewritestatementmock.h +++ b/tests/unit/unittest/sqlitewritestatementmock.h @@ -74,8 +74,35 @@ public: Utils::SmallStringView, Utils::SmallStringView), ()); + MOCK_METHOD(void, + write, + (int, + Utils::SmallStringView, + Utils::SmallStringView, + Utils::SmallStringView, + Utils::SmallStringView, + int, + int, + int), + ()); MOCK_METHOD(void, write, (void *, long long), ()); + MOCK_METHOD(void, write, (int), ()); + MOCK_METHOD(void, write, (int, long long), ()); + MOCK_METHOD(void, write, (int, int), ()); + MOCK_METHOD(void, write, (uint, uint, uint), ()); + MOCK_METHOD(void, write, (int, off_t, time_t), ()); + MOCK_METHOD(void, write, (uint, uint), ()); + MOCK_METHOD(void, write, (uchar, int), ()); + MOCK_METHOD(void, write, (int, int, uchar, uchar), ()); + MOCK_METHOD(void, write, (long long, int), ()); + MOCK_METHOD(void, write, (uint, Utils::SmallStringView, Utils::SmallStringView, uint), ()); + MOCK_METHOD(void, write, (uint, uint, uint, uint), ()); + MOCK_METHOD(void, write, (long long, int, int, int), ()); + MOCK_METHOD(void, write, (long long, int, int, int, int), ()); + MOCK_METHOD(void, write, (uint, Utils::SmallStringView), ()); + MOCK_METHOD(void, write, (int, Utils::SmallStringView), ()); + MOCK_METHOD(void, write, (int, Utils::SmallStringView, long long), ()); Utils::SmallString sqlStatement; }; diff --git a/tests/unit/unittest/stringcache-test.cpp b/tests/unit/unittest/stringcache-test.cpp index 5a2b1d404dc..625de6e5a51 100644 --- a/tests/unit/unittest/stringcache-test.cpp +++ b/tests/unit/unittest/stringcache-test.cpp @@ -27,7 +27,7 @@ #include "mockfilepathstorage.h" #include "mockmutex.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include @@ -86,8 +86,8 @@ protected: } protected: - NiceMock mockDatabase; - NiceMock mockStorage{mockDatabase}; + NiceMock databaseMock; + NiceMock mockStorage{databaseMock}; StorageIdFunction mockStorageFetchDirectyId; StorageStringFunction mockStorageFetchDirectyPath; Cache cache; diff --git a/tests/unit/unittest/symbolindexer-test.cpp b/tests/unit/unittest/symbolindexer-test.cpp index 25c7056f022..63c8d04f6dc 100644 --- a/tests/unit/unittest/symbolindexer-test.cpp +++ b/tests/unit/unittest/symbolindexer-test.cpp @@ -263,7 +263,7 @@ protected: mockProjectPartsStorage, mockModifiedTimeChecker, testEnvironment}; - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; SymbolIndexerTaskQueue indexerQueue{indexerScheduler, progressCounter, mockSqliteDatabase}; Scheduler indexerScheduler{collectorManger, indexerQueue, diff --git a/tests/unit/unittest/symbolindexertaskqueue-test.cpp b/tests/unit/unittest/symbolindexertaskqueue-test.cpp index 1364091161a..7862231a66d 100644 --- a/tests/unit/unittest/symbolindexertaskqueue-test.cpp +++ b/tests/unit/unittest/symbolindexertaskqueue-test.cpp @@ -25,7 +25,7 @@ #include "googletest.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include "mocktaskscheduler.h" #include @@ -55,7 +55,7 @@ protected: NiceMock> mockSetProgressCallback; ClangBackEnd::ProgressCounter progressCounter{mockSetProgressCallback.AsStdFunction()}; NiceMock> mockTaskScheduler; - NiceMock mockSqliteDatabase; + NiceMock mockSqliteDatabase; ClangBackEnd::SymbolIndexerTaskQueue queue{mockTaskScheduler, progressCounter, mockSqliteDatabase}; }; diff --git a/tests/unit/unittest/symbolindexing-test.cpp b/tests/unit/unittest/symbolindexing-test.cpp index 67411efd370..d2233d95160 100644 --- a/tests/unit/unittest/symbolindexing-test.cpp +++ b/tests/unit/unittest/symbolindexing-test.cpp @@ -54,7 +54,7 @@ using ClangRefactoring::QuerySqliteStatementFactory; using Utils::PathString; using SL = ClangRefactoring::SourceLocations; -using StatementFactory = QuerySqliteStatementFactory; +using StatementFactory = QuerySqliteStatementFactory; using Query = SymbolQuery; MATCHER_P3(IsLocation, filePathId, line, column, diff --git a/tests/unit/unittest/symbolquery-test.cpp b/tests/unit/unittest/symbolquery-test.cpp index 3ff541564e5..e01891fa331 100644 --- a/tests/unit/unittest/symbolquery-test.cpp +++ b/tests/unit/unittest/symbolquery-test.cpp @@ -25,8 +25,7 @@ #include "googletest.h" -#include "mocksqlitedatabase.h" -#include "mocksqlitereadstatement.h" +#include "sqlitedatabasemock.h" #include #include @@ -42,28 +41,32 @@ using ClangRefactoring::QuerySqliteStatementFactory; using Sqlite::Database; using ClangBackEnd::SourceLocationKind; using ClangBackEnd::SymbolKind; -using MockStatementFactory = QuerySqliteStatementFactory; +using MockStatementFactory = QuerySqliteStatementFactory; using MockQuery = ClangRefactoring::SymbolQuery; -using RealStatementFactory = QuerySqliteStatementFactory; +using RealStatementFactory = QuerySqliteStatementFactory; using RealQuery = ClangRefactoring::SymbolQuery; class SymbolQuery : public testing::Test { + template + using ReadStatement = typename SqliteDatabaseMock::template ReadStatement; + protected: - NiceMock mockDatabase; - MockStatementFactory mockStatementFactory{mockDatabase}; - MockSqliteReadStatement &selectLocationsForSymbolLocation = mockStatementFactory.selectLocationsForSymbolLocation; - MockSqliteReadStatement &selectSourceUsagesForSymbolLocation = mockStatementFactory.selectSourceUsagesForSymbolLocation; - MockSqliteReadStatement &selectSymbolsForKindAndStartsWith = mockStatementFactory.selectSymbolsForKindAndStartsWith; - MockSqliteReadStatement &selectSymbolsForKindAndStartsWith2 = mockStatementFactory.selectSymbolsForKindAndStartsWith2; - MockSqliteReadStatement &selectSymbolsForKindAndStartsWith3 = mockStatementFactory.selectSymbolsForKindAndStartsWith3; - MockSqliteReadStatement &selectLocationOfSymbol = mockStatementFactory.selectLocationOfSymbol; - MockSqliteReadStatement &selectSourceUsagesOrderedForSymbolLocation = mockStatementFactory - .selectSourceUsagesOrderedForSymbolLocation; - MockSqliteReadStatement &selectSourceUsagesByLocationKindForSymbolLocation + NiceMock databaseMock; + MockStatementFactory mockStatementFactory{databaseMock}; + ReadStatement<3> &selectLocationsForSymbolLocation = mockStatementFactory.selectLocationsForSymbolLocation; + ReadStatement<3> &selectSourceUsagesForSymbolLocation = mockStatementFactory + .selectSourceUsagesForSymbolLocation; + ReadStatement<3> &selectSymbolsForKindAndStartsWith = mockStatementFactory.selectSymbolsForKindAndStartsWith; + ReadStatement<3> &selectSymbolsForKindAndStartsWith2 = mockStatementFactory + .selectSymbolsForKindAndStartsWith2; + ReadStatement<3> &selectSymbolsForKindAndStartsWith3 = mockStatementFactory + .selectSymbolsForKindAndStartsWith3; + ReadStatement<3> &selectLocationOfSymbol = mockStatementFactory.selectLocationOfSymbol; + ReadStatement<3> &selectSourceUsagesOrderedForSymbolLocation = mockStatementFactory + .selectSourceUsagesOrderedForSymbolLocation; + ReadStatement<3> &selectSourceUsagesByLocationKindForSymbolLocation = mockStatementFactory.selectSourceUsagesByLocationKindForSymbolLocation; SourceLocations locations{{1, 1, 1}, {1, 2, 3}, {2, 1, 1}, {2, 3, 1}, {4, 1, 1}, {4, 1, 3}}; MockQuery query{mockStatementFactory}; diff --git a/tests/unit/unittest/symbolstorage-test.cpp b/tests/unit/unittest/symbolstorage-test.cpp index c480296f120..a73d261fcc1 100644 --- a/tests/unit/unittest/symbolstorage-test.cpp +++ b/tests/unit/unittest/symbolstorage-test.cpp @@ -26,7 +26,7 @@ #include "googletest.h" #include "mockfilepathcaching.h" -#include "mocksqlitedatabase.h" +#include "sqlitedatabasemock.h" #include #include @@ -52,23 +52,27 @@ using Sqlite::Database; using Sqlite::Table; using Utils::PathString; -using Storage = ClangBackEnd::SymbolStorage; +using Storage = ClangBackEnd::SymbolStorage; +using DatabaseType = Database; +template +using ReadStatement = typename SqliteDatabaseMock::template ReadStatement; +using WriteStatement = typename SqliteDatabaseMock::WriteStatement; class SymbolStorage : public testing::Test { protected: - NiceMock mockDatabase; - Storage storage{mockDatabase}; - MockSqliteWriteStatement &insertSymbolsToNewSymbolsStatement = storage.insertSymbolsToNewSymbolsStatement; - MockSqliteWriteStatement &insertLocationsToNewLocationsStatement = storage.insertLocationsToNewLocationsStatement; - MockSqliteReadStatement &selectNewSourceIdsStatement = storage.selectNewSourceIdsStatement; - MockSqliteWriteStatement &addNewSymbolsToSymbolsStatement = storage.addNewSymbolsToSymbolsStatement; - MockSqliteWriteStatement &syncNewSymbolsFromSymbolsStatement = storage.syncNewSymbolsFromSymbolsStatement; - MockSqliteWriteStatement &syncSymbolsIntoNewLocationsStatement = storage.syncSymbolsIntoNewLocationsStatement; - MockSqliteWriteStatement &deleteAllLocationsFromUpdatedFilesStatement = storage.deleteAllLocationsFromUpdatedFilesStatement; - MockSqliteWriteStatement &insertNewLocationsInLocationsStatement = storage.insertNewLocationsInLocationsStatement; - MockSqliteWriteStatement &deleteNewSymbolsTableStatement = storage.deleteNewSymbolsTableStatement; - MockSqliteWriteStatement &deleteNewLocationsTableStatement = storage.deleteNewLocationsTableStatement; + NiceMock databaseMock; + Storage storage{databaseMock}; + WriteStatement &insertSymbolsToNewSymbolsStatement = storage.insertSymbolsToNewSymbolsStatement; + WriteStatement &insertLocationsToNewLocationsStatement = storage.insertLocationsToNewLocationsStatement; + ReadStatement<1> &selectNewSourceIdsStatement = storage.selectNewSourceIdsStatement; + WriteStatement &addNewSymbolsToSymbolsStatement = storage.addNewSymbolsToSymbolsStatement; + WriteStatement &syncNewSymbolsFromSymbolsStatement = storage.syncNewSymbolsFromSymbolsStatement; + WriteStatement &syncSymbolsIntoNewLocationsStatement = storage.syncSymbolsIntoNewLocationsStatement; + WriteStatement &deleteAllLocationsFromUpdatedFilesStatement = storage.deleteAllLocationsFromUpdatedFilesStatement; + WriteStatement &insertNewLocationsInLocationsStatement = storage.insertNewLocationsInLocationsStatement; + WriteStatement &deleteNewSymbolsTableStatement = storage.deleteNewSymbolsTableStatement; + WriteStatement &deleteNewLocationsTableStatement = storage.deleteNewLocationsTableStatement; SymbolEntries symbolEntries{{1, {"functionUSR", "function", SymbolKind::Function}}, {2, {"function2USR", "function2", SymbolKind::Function}}}; SourceLocationEntries sourceLocations{{1, 3, {42, 23}, SourceLocationKind::Declaration}, @@ -156,9 +160,9 @@ TEST_F(SymbolStorage, AddNewSymbolsTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newSymbols(temporarySymbolId INTEGER PRIMARY KEY, symbolId INTEGER, usr TEXT, symbolName TEXT, symbolKind INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_usr_symbolName ON newSymbols(usr, symbolName)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_symbolId ON newSymbols(symbolId)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TEMPORARY TABLE newSymbols(temporarySymbolId INTEGER PRIMARY KEY, symbolId INTEGER, usr TEXT, symbolName TEXT, symbolKind INTEGER)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_usr_symbolName ON newSymbols(usr, symbolName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_symbolId ON newSymbols(symbolId)"))); storage.createNewSymbolsTable(); } @@ -167,8 +171,8 @@ TEST_F(SymbolStorage, AddNewLocationsTable) { InSequence s; - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newLocations(temporarySymbolId INTEGER, symbolId INTEGER, sourceId INTEGER, line INTEGER, column INTEGER, locationKind INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_newLocations_sourceId_line_column ON newLocations(sourceId, line, column)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TEMPORARY TABLE newLocations(temporarySymbolId INTEGER, symbolId INTEGER, sourceId INTEGER, line INTEGER, column INTEGER, locationKind INTEGER)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_newLocations_sourceId_line_column ON newLocations(sourceId, line, column)"))); storage.createNewLocationsTable(); } @@ -177,15 +181,15 @@ TEST_F(SymbolStorage, AddTablesInConstructor) { InSequence s; - EXPECT_CALL(mockDatabase, immediateBegin()); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newSymbols(temporarySymbolId INTEGER PRIMARY KEY, symbolId INTEGER, usr TEXT, symbolName TEXT, symbolKind INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_usr_symbolName ON newSymbols(usr, symbolName)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_symbolId ON newSymbols(symbolId)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE TEMPORARY TABLE newLocations(temporarySymbolId INTEGER, symbolId INTEGER, sourceId INTEGER, line INTEGER, column INTEGER, locationKind INTEGER)"))); - EXPECT_CALL(mockDatabase, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_newLocations_sourceId_line_column ON newLocations(sourceId, line, column)"))); - EXPECT_CALL(mockDatabase, commit()); + EXPECT_CALL(databaseMock, immediateBegin()); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TEMPORARY TABLE newSymbols(temporarySymbolId INTEGER PRIMARY KEY, symbolId INTEGER, usr TEXT, symbolName TEXT, symbolKind INTEGER)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_usr_symbolName ON newSymbols(usr, symbolName)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE INDEX IF NOT EXISTS index_newSymbols_symbolId ON newSymbols(symbolId)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE TEMPORARY TABLE newLocations(temporarySymbolId INTEGER, symbolId INTEGER, sourceId INTEGER, line INTEGER, column INTEGER, locationKind INTEGER)"))); + EXPECT_CALL(databaseMock, execute(Eq("CREATE UNIQUE INDEX IF NOT EXISTS index_newLocations_sourceId_line_column ON newLocations(sourceId, line, column)"))); + EXPECT_CALL(databaseMock, commit()); - Storage storage{mockDatabase}; + Storage storage{databaseMock}; } } // namespace diff --git a/tests/unit/unittest/unittest.pro b/tests/unit/unittest/unittest.pro index 2d8d51b7bab..2a1a2d8ec56 100644 --- a/tests/unit/unittest/unittest.pro +++ b/tests/unit/unittest/unittest.pro @@ -97,7 +97,6 @@ SOURCES += \ unittests-main.cpp \ utf8-test.cpp \ symbolstorage-test.cpp \ - mocksqlitereadstatement.cpp \ symbolquery-test.cpp \ sqliteindex-test.cpp \ sqlitetransaction-test.cpp \ @@ -191,6 +190,8 @@ SOURCES += \ unsavedfiles-test.cpp \ unsavedfile-test.cpp \ utf8positionfromlinecolumn-test.cpp \ + clangreferencescollector-test.cpp \ + clangdocumentsuspenderresumer-test.cpp \ readexporteddiagnostics-test.cpp !isEmpty(QTC_UNITTEST_BUILD_CPP_PARSER):SOURCE += \ @@ -203,11 +204,9 @@ SOURCES += \ !isEmpty(LIBTOOLING_LIBS) { SOURCES += \ gtest-llvm-printing.cpp \ - clangdocumentsuspenderresumer-test.cpp \ clangquerygatherer-test.cpp \ clangqueryprojectfindfilter-test.cpp \ clangquery-test.cpp \ - clangreferencescollector-test.cpp \ pchcreator-test.cpp \ refactoringclientserverinprocess-test.cpp \ refactoringclient-test.cpp \ @@ -275,9 +274,6 @@ HEADERS += \ testenvironment.h \ mocksymbolscollector.h \ mocksymbolstorage.h \ - mocksqlitewritestatement.h \ - mocksqlitedatabase.h \ - mocksqlitereadstatement.h \ google-using-declarations.h \ mocksymbolindexing.h \ sqliteteststatement.h \ diff --git a/tests/unit/unittest/unittest.qbs b/tests/unit/unittest/unittest.qbs index 61ad2fb5291..cb3b8cda315 100644 --- a/tests/unit/unittest/unittest.qbs +++ b/tests/unit/unittest/unittest.qbs @@ -263,12 +263,8 @@ Project { "mocksearch.h", "mocksearchhandle.h", "mocksearchresult.h", - "mocksqlitedatabase.h", - "mocksqlitereadstatement.cpp", - "mocksqlitereadstatement.h", "mocksqlitestatement.h", "mocksqlitetransactionbackend.h", - "mocksqlitewritestatement.h", "mocksymbolindexertaskqueue.h", "mocksymbolindexing.h", "mocksymbolquery.h", From 5fa2911c631018534faf322f468b1fd0e0f9ee4a Mon Sep 17 00:00:00 2001 From: Michael Winkelmann Date: Fri, 26 Mar 2021 13:04:12 +0100 Subject: [PATCH 24/71] Editor Proxy: Fix warnings and code style Change-Id: I978aef31f7c09da33509dddd2a13ae138551c914 Reviewed-by: Eike Ziller --- src/plugins/qmldesigner/editorproxy.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/editorproxy.cpp b/src/plugins/qmldesigner/editorproxy.cpp index 03f66f8ea7a..16bc65cdff3 100644 --- a/src/plugins/qmldesigner/editorproxy.cpp +++ b/src/plugins/qmldesigner/editorproxy.cpp @@ -22,7 +22,6 @@ ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ -#pragma once #include "editorproxy.h" #include "qmlmodelnodeproxy.h" @@ -42,7 +41,7 @@ EditorProxy::~EditorProxy() void EditorProxy::showWidget() { - if (m_widget = createWidget()) { + if ((m_widget = createWidget())) { m_widget->setAttribute(Qt::WA_DeleteOnClose); m_widget->show(); m_widget->raise(); @@ -64,11 +63,14 @@ void EditorProxy::hideWidget() m_widget = nullptr; } -QWidget* EditorProxy::widget() const { +QWidget *EditorProxy::widget() const +{ return m_widget; } -ModelNodeEditorProxy::ModelNodeEditorProxy(QObject *parent) : EditorProxy(parent) {} +ModelNodeEditorProxy::ModelNodeEditorProxy(QObject *parent) + : EditorProxy(parent) +{} ModelNodeEditorProxy::~ModelNodeEditorProxy() {} From a96a94ac79311dd9b4892f335aa03e9b6f4666da Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 26 Mar 2021 13:53:44 +0100 Subject: [PATCH 25/71] GitHub Actions: Build without PCH ccache is not working very well when pch is enabled. Change-Id: I2922d2261bf4040ccd2837b2cc5c505ec2881207 Reviewed-by: Alessandro Portale --- scripts/build.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/build.py b/scripts/build.py index 71fe262b30e..d779a33d441 100755 --- a/scripts/build.py +++ b/scripts/build.py @@ -95,6 +95,8 @@ def get_arguments(): action='store_true', default=False) parser.add_argument('--with-tests', help='Enable building of tests', action='store_true', default=False) + parser.add_argument('--with-pch', help='Enable building with PCH', + action='store_true', default=False) parser.add_argument('--add-path', help='Prepends a CMAKE_PREFIX_PATH to the build', action='append', dest='prefix_paths', default=[]) parser.add_argument('--add-module-path', help='Prepends a CMAKE_MODULE_PATH to the build', @@ -139,6 +141,10 @@ def common_cmake_arguments(args): if python_library: cmake_args += ['-DPYTHON_LIBRARY=' + python_library[0], '-DPYTHON_INCLUDE_DIR=' + os.path.join(args.python_path, 'include')] + + pch_option = 'ON' if args.with_pch else 'OFF' + cmake_args += ['-DBUILD_WITH_PCH=' + pch_option] + return cmake_args def build_qtcreator(args, paths): From 981e3e734fb1e9a7eb5e7db526cee07c1ce61511 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 26 Mar 2021 15:27:55 +0100 Subject: [PATCH 26/71] StudioWelcome: Add effect demo ad download Change-Id: I95346189de1a6915f8b971cd2c9f69a027f63f6a Reviewed-by: Brook Cronin Reviewed-by: Alessandro Portale --- .../qml/welcomepage/ExamplesModel.qml | 9 +++++++++ .../welcomepage/images/effectdemo_thumbnail.png | Bin 0 -> 16220 bytes 2 files changed, 9 insertions(+) create mode 100644 src/plugins/studiowelcome/qml/welcomepage/images/effectdemo_thumbnail.png diff --git a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml index 25257f9ea7d..475070fea62 100644 --- a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml +++ b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml @@ -99,4 +99,13 @@ ListModel { url: "https://download.qt.io/learning/examples/qtdesignstudio/digitalcluster.zip" showDownload: true } + + ListElement { + projectName: "effectdemo" + qmlFileName: "Screen01.ui.qml" + thumbnail: "images/effectdemo_thumbnail.png" + displayName: "Effect Demo" + url: "https://download.qt.io/learning/examples/qtdesignstudio/effectdemo.zip" + showDownload: true + } } diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/effectdemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/effectdemo_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..505c02e88e9be99015d36b2e095ca7ff692491e9 GIT binary patch literal 16220 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%0Dx;)bwv|6VI6U`YTN}J}qD!dD zREw)Cgr;oMn`Cium!PlbQd6;yd+q-e+J7nEcfaUag5>43v&5W_9&?cGzO`blR}-ig zqs`BMcJ18PUCTQ^8;Nb{yVBW_S%3cU(S;_fl>CmmomDbZI_I_K=)_$iLeguu{&ErZ z6#2Zz=$L_#O~koXX;Xc4#8&mW3PeR0E-6XWEz7(1R*1g9kLg zb@jCV#;BV++l-=4Ut67-tt@$LMoHYoE{}}%o?E;3K7V+aU8lPutkg95h|Tp<)pIjS z6|PpM%3VAcwt8x+Z7b!tm0M`d5#72+JAYAAL%DPM8% ztgP&0J>BH|^Y`w}+c?9ZMDLZ$YmY~qz2M=ieF3GbqMmPYl+DalQMnlMdSX^vV(!Kb z-w(y|^Tnk_N@wP%6zU``)_t{xrSo&r;*A}fky~M**XIX1z{iQ2z*4e8yo*j7` z{rgx_;|rVJs}_~z-AZ|W(`1R?)s>CAJdDmndOA6IURWgd`|#T9_dkA6UVq|Ll;A5) z&b8SbuWlu+U1ii}=z82|?bNWtccRX2{(HMz=i4`f7_E(g{aehEbj$K?q&%N#A{w2W z5h9xzo7R)C;?j)_??p}#cW!QeZ^l&6)w#3e`b8E)yQ%SjDppvBLs8h7*>}V(H z&o+9j!TQ5#?iw>WvpqRL9Z7+*z=U?mJDHcCo*z$!% z{8-YZY^p7lcmJOG+xL-c!=$7pCB8eAwKZj9!Si>q)!V;a1x=lcW`ou{SYHo|&J`?; zTeH<{lEv!c4Gv4MPB`Kwt=wnw=Kek7W888zZ|41+x-{`dhDWDIQs=ocKh8 z)onUS`R}Lg-D@kkaEodCwl!4QdV zFx;|vR%ox`maQ>o(+a=8i>?0syJyAL$}+##9wk56g zQ@MJJt2n#oRgC1u`tt+nb%A?@YV4;hbRgS3(=ba#f8TJ(GMk-q@e2b0{fe z_1vwcYi5KV`*3IObD!#JqeU9Gy0*4ln<}E)3|jp&H(h|oaP=*Yrfsj7Wc!Y;Y`La9 z@xnE?Cbwi=p=0+p*uRawGgIbX{Hw#x?Cjdyfy-}MP4alXCh~0B=BSpV;J}ZM@R=NG zczZ>#=uw;V9ketc#%>{%E4M_p$M483 zeLiiYjmfmlm681Nc2_F5d7Sy2>9Gsf)^xSpJQLD=G{Ii% z(YdVtoo!opnmr5EJyx)0WpCu!&pCZtg`QO|E8Q5SqgK5=FH%SCQHX8m#cLZA*ZOTK zRhfG2+}T-gY!*jeDc!nNF#78f6|-Ai!Jb=O1EUYF(NaqG;ILv#^$FSPQW`4iYHWQi z?8@U?UP(G?m;deC7$M-Uv?}eZNv>=+XtHS5o0#aJU5i`=q;*T<=7?vPF7dJrUE6x4 zQ)NqE$}(3GM`v&2)mz1k6_=(-rEe`=)3G*bV?=}xwW|jk%J7a24mmn`Qihh9(#mt8rAk*9h4!~Ztu9WB=JkBzTfHoEQj5z` zH^D1Mv({cYcb`|y`ug=nO;(})*QZsfd1mw)o+%bQu5=`9_1d*o(_FlxJ-75-sr2Ni zzC15;Rtk?x?$xk>E0KkZT#r<)R1bN(XPcV!^|0(>lhQS7H$U2Qu5{cweRm#(=*M^Ci4xO0+3azsz7VOx))*`jS(YqtjWcXKRV+p#($`}tP$ zn>)9i3%z(ND|XeE(w!FiD>mQi>Q;3O2z5RDW@6Z;2^*r$3U#%ph)Jr5C3_^PL`Av3 z3JDPJ>^)aHaof5zTecQ&RL9ttfS4kwY^gW-J{lLg{}17 z>M9^D8WmbN({bh6ZI9MyJiF#5;IH+l$Z*aKZKn$>RwX`9E1l;!QBxS8_UYTn}9p|iyh2WEdQ*(fUQD#(&+tEnfPUAl6oYi8$M zX|tO$O`u9oL>bXRK*;J@wYj$BznKZ9-qW1UwH}>Hf-N?NlpezpGEX0=kZb z#YWp)+U2u$>$a@tTMcjS+!nFAcvZ=cklfN8Au=nCAGrvYE-6fL%h1jcG!a?YHf5(v zs7glX)(f{*^j=zErM%HlXl{CGsb=ZDJG&y@>|qm{JU87){oKofncLjf9{qaM&0C~! z(bkLC+_G1*@OFi)Rn1y^RY}A1s`Az__pG&kQ#!V_NIWuh4QSc6ZmHv&I}1QXuZs(B zbm>e`7yIam0v);VmZ;U+Ze8NKWg!;5@oLzGYi_ni)a_PoxO}986DY@oM5$b0t&5DvLpY|+V?eR|M&+gxQ z#reP7n^*WdK)%h|m|uKX7sqz~NLTrHhT(Zr4=bLRoe_V}JWu!R_is#*S-`PV9(S9bCFHYPGOn;Tn;xVnIhh1z1e{oN)iFUMnH#k1f~U^epld)pXJ> z=hLZs=l)f8{pRn}`Yr$5UVpuL#=T#OtNHJl&YP`k_dIp={0hgong#Nees+%^AA38s zS^h82=c3gA&-bVN?7JRabI@Jp--YyB)vw!SYyPK4?RmKGssFvLKejOMEl&8=R6Xtf z-<`99nyyXU))ckc`|R3e!zJ@BRQY7Qy))-%QsSo1KDTCu*)Cf;mBlsSN?5?=-dh|> zXRfXCSg}=7b1AmQ2BD z*R67#T^Cl}*lBsv;AW+oX0GkJwGr95S0h7nZP)2~$!aF8UOM;b!6zpk&b#{id(N7B z|7}vgewx>-6j5ukqBlz0R40Cxz`gHHy-)pZ^pEZp7pbj0?`9_#(z4*1(yPp_ZGNH~ zL#1=)hDV1^ympQ^%eQP@u8xwf>nhb!m2Iyg1d3l5I(kjDS|1V+8WqZ-xP)bE;42T; zE0LnoE0smBxJ?wg5*95Ox^k`6rE9KT+s<_UASFgpjYa5l$W!SE?+8q*|e)Zhh z)hEww)#c~A>Jz)dD|zuNqpjC=MQr`L#46j*wL`ctOeC;HX{iTm=^BoiSKTtMa~p(L36sgue#+PNqx1(D$FTh>M^(A%$zG>S5t4@>gd>dO*qPWeo6Pq zbH*oqY=e#{A9jnDUfg#iO7QuXuRC_^TcBE)`f{Lb880uQFVBBJ8vmoX z_Wu1piueDB|4YBT#o(C1_OR1a&;L7P{_|G+=lx&%zVEsI{oh&nZ4!q!YL%++mM+vP z)y<7vb1w63P0}v2_0#TKo?m_c$~pVA+)c%~j$XExq#WmFyw-}^vaM;CkL>ETR?hl|VetkY-JJXtLNS$*Hf=-P|tD>wf?8(zEg{h!zMhqpvnET1PJ zz3|#AtEhCAtrxF7?z-{Q<;>?#yPs8ljlT8sxQ)@xo!eGfnwoEE+Bq+vbfwj#FxJ9V zalQf3xqDw;w!izl_FVc;VtJP)mu4a|~i2a=P^Y+Vr%j8X;eV$#5nZ9aQNVnqBM|*a4ab+!D zd;f?3f42Ys>VM6ze0NSa+|YOO{y%r`KhCcEslQp`aMnE8%sHYaCEG&9v*(KE+N?a+ zWuI+Eon7J*Mg3mfCb3Sv zi=#^+O2|F$?fp-a<$nk)%1W-UKmYKd;?k{Qp`HQK2mANEmHl`0|6%*5|9{5+GynGe z`%=NHiUBs&JB()OZw;BO>bV^(N+OlHspM+~@0`e?EWzZ*G45@7r}3RMo7{ zFWa)TbYo(2MD|s;J+r21B`I&46_B;KX{YJ>wET*{ulGJbUf&e-=hFIrPwkSeNt_G|nW`)9`4o?A0zASEFPzUweLR35#*eUaXa7wWVy`gP+ge|J!Q4 zJ^ycC=B&C4t3l=TBM&cuGv~b1*Jg7mef5y#?pmR&nkaSH-Tqr)_2nlI9x`@LxBD@< z?zs7%*LMFtoxb*^0T#Z_hp!Z);QW!`gnE&5wW6hX{lMCR{<^d+__bB zrFPfa8ysC0i~EjLY6|kdyKkG9h>UhJ|0(}_Api6K&eH7rr8W1S*KB+L`=I=$ z2%VfI*PK?mdqqb(E&y=;syjo^m7-$#LmTQY{ z+`s)fy6&<4>+gU6{XcZ?-n`z%TN;jQL$h_aEn0gmc*?bjLC>#FzI98&>CK#pM?e|m z-tO}Gzh&Q79Jk(g-x!oiF1kHm)G_Hln$|0n2~Q}ghAZFl{j@cQ2TKil@d z@UMNmJyM6waqg$S8?zC9BcpX{{Pzj_r?F;+5W?I z{|E7mbkCYE$@1T;|I7bxHB8zl(RZbC;acTVx7?7UQ7d~_sb5{WZQYu(Ym-Xq>;GG4 z|2g-4&v)DV&xK8HR=T;03O;WQv(;R>_H)w?pWKim8@Ele2wSRR==P@H_I=&^-+Nx~ zeJ{LxS>{8d&{rC5cca+HB}%2MLR2>zu0HNMN5ku?n|I8bSCLnv zYQ1*-z4O_A%Z=S%XP@TZod_x-7Yjz`if+7Cl~!!KZf&m?=c|aorAMMXy=)a9c?f2$ zy*SBWjj7a;mA6){jaqGS)oOj&x|ctn&;Nh#<+tMfFPq<2KmT6A>r=K)|BO~v*hzsS zQ8uB`(T+J=whD@`OwOHqH7r_srSeyk!xO{iW+f|M^YXenanZRMOSjBhRJJay=gU#? zdH>(-jox1W`}e)y=iYymn)$|NcGyIVi$c@0Ut7JpdUSHvf^%H2B3f>BZN1?k80|VY z<8_kj9FGj!$=8;58M?(+Jbd@vrvCfR`k%7zYmR@f;Pow==jk1tYoM%A>Uz~m&>ysh zJh#Vcx!1~vNsc*7w!NCOO)qHc#elC%EGC|anXdgR;`NC+9rORXT@sJm@%yj7P5pQC zy^m${|J$wKc=FsCv85N-KhM zZD(7opSR9VbkB!JpY1;!`dnWB`rf@S%yyihArtAPeM?Gp{H{)JveGYIaxLoXjA;|B zrdou)auH%F)VgI6q*M}i{8dEGQMX){t)VPmmt2{+pzZisv#y6OYeikJoX^wW_u~)$ z-VcZFuHU_N|9@NiPs;X2zg0kGh;_7_-r3JO8O<|yvY zwMX2%qNHbLdMw@=mb6yFOe#p_lEAG=iK{!59p`2R=8EQe<}3*j3~~vX!V~SfLOFP? zt8-UNqV6THj`@4zKp}g#_T9Psy5qO+|GR6~skX7$cYVzp)%QPU*Izw%E>!j9+}pqJ z?>E=2yS@AV-*xZ5c|sPtzj?FAY|@vV*4zI-oBKTP@3r|A_kaJJHJ|bF+uPe^LGHbD z?%cVvySMKDu6+644`2I_`@a7zwRc{&?X=;sn&;=pFPZq> znzgJoCBxg>DLXGSl_&Ygv8=5{6+29H#mtUL981cOO!i3H88hqoR6{nU&IHr-I{ed( zlsYTt{pFD?t8?p_c=Ny0-COtn?~C64ZC~CjvHP#nFZ`G1a!6v6J#(1>1Uy~+T-G@y GGywori8?6& literal 0 HcmV?d00001 From ee281240eba92d8d7e810a3b1565e488369fd204 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 26 Mar 2021 15:26:03 +0100 Subject: [PATCH 27/71] StudioWelcome: Fix crash Check if a project does actually exist. Task-number: QDS-3309 Change-Id: I59beff2637bbe80175dd223d6f574ea3886d95c5 Reviewed-by: Aleksei German Reviewed-by: Thomas Hartmann --- src/plugins/studiowelcome/studiowelcomeplugin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index a2ac354fa01..35889ce5222 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -163,7 +163,8 @@ public: { const QString projectFile = data(index(row, 0), ProjectModel::FilePathRole).toString(); - ProjectExplorer::ProjectExplorerPlugin::openProjectWelcomePage(projectFile); + if (QFileInfo::exists(projectFile)) + ProjectExplorer::ProjectExplorerPlugin::openProjectWelcomePage(projectFile); } Q_INVOKABLE int get(int) From 254365b7d60b7cb30f22e3494798e931d1817563 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 26 Mar 2021 15:27:19 +0100 Subject: [PATCH 28/71] StudioWelcome: Set correct file for Digital Cluster Change-Id: Idf8513a7db3c7e096c814395ffa701689e1cc0cf Reviewed-by: Brook Cronin Reviewed-by: Thomas Hartmann --- src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml index 475070fea62..8dc80601710 100644 --- a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml +++ b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml @@ -92,7 +92,7 @@ ListModel { } ListElement { - projectName: "highendivisystem" + projectName: "digitalcluster" qmlFileName: "Screen01.ui.qml" thumbnail: "images/digital_cluster_thumbnail.png" displayName: "Digital Cluster" From a862c7b3549a1b1ecd1ed0733bf34c98498343d9 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 26 Mar 2021 16:24:03 +0100 Subject: [PATCH 29/71] CMakePM: Fix "Build type" for multi configuration generators The multi configuration generators (Visual Studio, Xcode) had an empty "Build type" which caused failures to parse the CMake file-api information. Change-Id: I70ee4978cee4d43e980edf4cd512d1ca95275638 Reviewed-by: Alessandro Portale --- .../cmakeprojectmanager/cmakebuildconfiguration.cpp | 10 ++++++++-- .../cmakeprojectmanager/cmakebuildconfiguration.h | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 4632ca14b79..95b9f21975c 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -903,6 +903,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) const Kit *k = target->kit(); QStringList initialArgs = defaultInitialCMakeArguments(k, info.typeName); + setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(k)); // Android magic: if (DeviceTypeKitAspect::deviceTypeId(k) == Android::Constants::ANDROID_DEVICE_TYPE) { @@ -1347,7 +1348,7 @@ QString CMakeBuildConfiguration::cmakeBuildType() const config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments()); } - if (!config.isEmpty()) { + if (!config.isEmpty() && !isMultiConfig()) { cmakeBuildType = QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config)); const_cast(this) ->setCMakeBuildType(cmakeBuildType); @@ -1368,7 +1369,12 @@ void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, b bool CMakeBuildConfiguration::isMultiConfig() const { - return m_buildSystem->isMultiConfig(); + return m_isMultiConfig; +} + +void CMakeBuildConfiguration::setIsMultiConfig(bool isMultiConfig) +{ + m_isMultiConfig = isMultiConfig; } namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 32ced5031ef..45519c77e3a 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -78,6 +78,7 @@ public: void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false); bool isMultiConfig() const; + void setIsMultiConfig(bool isMultiConfig); signals: void errorOccurred(const QString &message); @@ -115,6 +116,7 @@ private: Internal::CMakeBuildSystem *m_buildSystem = nullptr; QStringList m_extraCMakeArguments; + bool m_isMultiConfig = false; friend class Internal::CMakeBuildSettingsWidget; friend class Internal::CMakeBuildSystem; From 9a5d04f4fa695efb8addad10bf3ba325ae86cf5b Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Sun, 28 Mar 2021 12:38:08 +0200 Subject: [PATCH 30/71] Fix qmake build Change-Id: I5730de131f90c198bdf14b6983a4dbc0efbdcea5 Reviewed-by: Tim Jenssen --- .../components/annotationeditor/annotationeditor.pri | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri index d2340be8fb9..63ba86609b5 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri @@ -20,4 +20,6 @@ FORMS += $$PWD/annotationcommenttab.ui FORMS += $$PWD/annotationeditordialog.ui FORMS += $$PWD/globalannotationeditordialog.ui +INCLUDEPATH += $$PWD + RESOURCES += $$PWD/annotationeditor.qrc From 30c5fd6599bcb4e71b7404e7041512911ceecfd4 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 26 Mar 2021 16:31:13 +0100 Subject: [PATCH 31/71] Doc: Update info about building with CMake Reorganize tool-specific information into separate topics. The other build systems will be added in follow-up commits. Fixes: QTCREATORBUG-25460 Change-Id: I324f66a464d7ab799e351e77ebe20f29fb091622 Reviewed-by: Cristian Adam --- .../images/qtcreator-build-configurations.png | Bin 0 -> 14633 bytes .../qtcreator-build-run-options-cmake.png | Bin 0 -> 5000 bytes ...qtcreator-cmake-build-settings-initial.png | Bin 0 -> 18765 bytes .../images/qtcreator-cmake-build-settings.png | Bin 30751 -> 20446 bytes .../images/qtcreator-cmake-build-steps.png | Bin 7032 -> 8576 bytes .../images/qtcreator-cmake-clean-steps.png | Bin 6648 -> 8215 bytes .../images/qtcreator-projects-view-cmake.png | Bin 0 -> 10589 bytes ...c => creator-projects-cmake-building.qdoc} | 86 +++++++----- .../src/cmake/creator-projects-cmake.qdoc | 12 +- .../creator-build-settings-qmake.qdoc | 77 +++++++++++ .../creator-projects-settings-build.qdoc | 128 +++++++----------- .../creator-projects-targets.qdoc | 3 +- doc/qtcreator/src/qtcreator-toc.qdoc | 8 ++ 13 files changed, 195 insertions(+), 119 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-build-configurations.png create mode 100644 doc/qtcreator/images/qtcreator-build-run-options-cmake.png create mode 100644 doc/qtcreator/images/qtcreator-cmake-build-settings-initial.png create mode 100644 doc/qtcreator/images/qtcreator-projects-view-cmake.png rename doc/qtcreator/src/cmake/{creator-projects-cmake-building.qdocinc => creator-projects-cmake-building.qdoc} (64%) create mode 100644 doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc diff --git a/doc/qtcreator/images/qtcreator-build-configurations.png b/doc/qtcreator/images/qtcreator-build-configurations.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c2d7de82cb40b325af07f24f88adf570a978f6 GIT binary patch literal 14633 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-cmake-build-settings-initial.png b/doc/qtcreator/images/qtcreator-cmake-build-settings-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..0fce3dd71165b6b894c20860f9bf4c4a0acdffa7 GIT binary patch literal 18765 zcmeAS@N?(olHy`uVBq!ia0y~yV4BLnz<7s)iGhKEqvzO31_nWUZ`n}ax(WB0_{;vI|{MhqvZ9}hye|uW_(LpOLJoLI{?W%cJ%l)qY z+wo>}OAUz2mz7;_^K!bvOLn^W#rt z_kA`7hJ=86`Lf?$U#jk&yT%Z$Upt4pTIS!qH!|hbw$<~i)Q`_yd+md`z%8Hp^Nb7( z&#vFkEU^}U{{Eb2{*t|i?lUlKkooscHeK}Hxx(`+J~iDsZ~fHO_5F^^n^rx3{N0>^ z;egYR+p8vu|I>ReQC{YEC)LJOYgx`rtDOw&#C*f=jL4q zvfZ^m`uN0WAEfHlZ{>tuf3Wwh>Pm_J{o1qMEk6C^OtyamEa{LSoAIfWg|MaxKR44cLQs~|KvpE}H^u3b` zd|!Xh+VYN$_Kt7D56k#JFPR^^vvr!zwbwhp?_a&nyX|v%ZqX$7(`)iRe^UR)#?bKc zYrOHkjXicf`<2fJn^xB8TwAL5?N7wZyAR|lKWXeVD=w(NuBu*CJ#YFk28IJm{>tw8 zf2ZjauvIIvb!eyZ)9cw;fFLRtyllCZ&KiBQbiA$%AIuTi zKytcXY}NO><@Xgi%$J1hDSvs%NL;$8K}LanRWU<-{DwXH@%!#%ZN2sOo1CMF;!{Vj z)+xQ-)9=NfOLFF$!2HCal<&cNZnt%7pFH1L`uf^)mWORqxHP4MoThENF@gCBgJr-( z<{!VCCO(^Z_wL>E98TO|xt$O>fzynCYCry)CMM+Kx>s}ST-k50 z%Ava|TkZ*ir30T%G2esyKfVRex{j=`v#|gFF#Kw%EH~e3YJSm@jw!Q>E!N=ForJ*f#kc+hli-M$^GgkC&Pzyua~d+e;D0=N{f(BL9xv7ye!zH0R!)!0szs{?z{e_g7i_$@!DN zcKbLL9dYg7eDve@n5E@b?v7RKOd~)3I6M1z_p|q0u9ZyEM-K{r+MctdzR2R%$|>wcM=r}UlqK5fb-LF?j~ zNybqrOJ9D>ygy~-mN%lJ+e-2*(vu_~Jw5!R_<&`N%H5-mX_scy&Cw~Vnsv^qc24~? z{j6y|=_>Wp+_N@1=4UG(Sz&45P!+$=W~*@8|2Jnpr~G-E%;er!#;5zdb$|W@V`1O? z&oUAh?stlu=BkV=y=V1q>eMf~-lghy=Y^JUf0}-M&s(pxdkgm)-8Juhn0E5Yg_mM| zyRR`_`}Ft!kNf`@=Gkwue_1x^?6y-OPjmUhjOu?KPne%vJxTZRwm6fI+vDc_S$x9o z+qXs8zRPak)+11n~IY-XLEW6Pov@FNQ>MU1i#Iz}wOjq)7eop*jd7*4w z_U(sfwoLoF!e^!V!>4X#6GV@{SbSNDfA8Af3A&4)9a!-4>!h6Z(G%4ld%rj7W7;Zl zye|H0$BdM!+0PFse0@KoA^Y}$&CA|o)wj<#%Us=`YdL4djh{E>{@7rpzyiohYWA7;O1mNLlLj&(F^dEBz1Nk9+9Vb+TvbQqFn1y??KIDRtuh$&jj*Z`T@e zTN-3kZLMmW|EJMc4`(+e{@uHIbFpdnx9-oM z#ow+DpKHH&=Dj4NyY{x9o}KtIaf*NWxzMD4PN&@7oJs9E`(fhLd5_lbIWuF?*5GfaH)nkK-DYY0@Qc~`#>RK`;RikCW07~axbBvgU-5U( zwfon;t-V&1TYu&6_eqf#>(;&VO#NMX!}(>zDu6=)Nm%KRfo%&!g|$Pu0wP`}d{Z zr_Zmi+ov1%$E}uDex?CUL*OEH!xYO6Q{KmG|6Y9d*zahyI2P9@>-!57)Ahi`_J{8= zMHzCM(%*|88o$h6{i}Dc_=huF_wN1sP^d*^vWx=z3C36Vjeq^SqN>?+M56!p{y(Sp z?JX`T8<5mS`R%Y;39SXj2&$=I zVh8Rsfa*1v*n@lq1_p!}xYoicHbbz!-0zpr-sifXWEmI|7X8bU{r*d>>iFz%y?nd# z>5*!7Z=$$Cx*NJbe-C^2?#_;v^Y8Y3EdT$+Ab!*3w~zA~7#bo!lrM{RKN)@e__qB= zpM9J3^w83Cu`8qhom>5N=jpjmKj$(rFdPv0cW(BP!>@|oy^q^|+k4gHmy`C!o&Q+A zGi=?rEz9D5S>JaGt3Cf@uJ3cxIuTF>u30ZHKYz(RQO5MkS-&fnJuj(y`2O*_$W5UV zw|Cx+`@_k=!0`Cn_q0dP^1iD?9?Q-#*L@Wxyvx`){?morEdARTekL+7Fu3jfA6pjm z`CYv_)48|WySDyWd-rzPtNZO?s@2S7jK2NCJWCCg# zOB}=-3E(C)C>U`^47l}yh%8V`8`2^Hi~YN1zhhq=D8}_;|thr?;Ie4o5i>t9X$JrEd zBH(H5&rhj8SKQ5eubbg?1zu(^1x%vHLBe_HO4@cJgyb~YzD__2Zk3aAHp~4mKPrhwF zT=+iTc2bDT^)^|0!_ek~9q7|G>g*^{?OW?(Uv%((_mT zoUZfU%0DM%T2+ca{nJa0)IGQI>i&=0WqGzZ-b-u6N$1--`_;xjQR!!!%Gde$_r|ERH2h2Y8aJ|i}*mmBqu-D!> zlZ$TW%+y)DhUeD)`Y*BHriRI>8PAcOW^eUV{%BoYc;4~ojala3-p|f8^Yk-`{&aWU z57w(Z`4N6;NA5qjf75>X$L;Umzo-A*yu8ouZB~h8yxOVL3opF*=6DgtIRJ+-jZ#wPTn)0(~bN9tMz4r3D1a)e?LL;d`^2}asn1sb%hjJbZ?Uvy4bwll9c#=q zHu|2*y_`DfZbiZVDTSZX)$bbKyqdJkNBwowIlVHwy(Wggch=j_y;mPl6S_~Z)cn(F zsmZcO^Hnm}@8SyIOQ=lb6_y*$4B@8#n+ z=S*Lo#Q0M=R-xSGWBRrlBm23NeN=_h95*-o{r*|M|ttj=sEJgI#{= z|8Kb$m#LYpzAg35EZgiy>81;pU!Pmn#m!fpl=t^NzDG=Tc`PzwRxZKzj?KGU;Dvb*GfC*rR**%D*2zi+UsF> z;CgyH!r+*A@i)xNW|4=gdw26|R3zT>fsCk66e1wx5^( z?Rt^Abe8VVxS5-lPrKyNX0D^|%T*uSDBrxlcVW=QWyMCu%e~B}`7Jj(x%|?!iaC19 zuO;W6zHc;9|5?1!nfd!eqmTcQty{INI(*Hg?T_Dhx^CXHKWRrno#}@sIz`Xx`d;0C zS{Na7_^0dM@&$YW?j}qZ&TYP`&iD87BbRA8H&5KKem%2g346`LIg6?iubtIa74_Vf zt$wb&@~Tws#-h!kxAP0Q_xN~3E?@Jpe1_${nYBuqT_H0z-FN+4x<;49IQC%6{^@ty z?rd1P#IxG1v@H&sEzjH+P=hBugXZ z-{EOXO24?LC0cj=Oy>1`Ch~Xg%YsY)*6r=IYuImG99{Zr=hyPU{U`fE-!8fHW=_Pl z)qMPXa~5x$xiH&~_xll<=g&kw$5#6Byg&Stx4c=!a$9SG;ZmjOw>#6yw;o>4{da9> zz?uF}<@M&BBCgxxf1UhYx<~iN?fyHqq2F{@r1!si-z8+tS^s>So>bHt+0*aLt;_pT zI@Pv^oU+M$l>a`gB(~^Nj^Wl z6N~Z}?^f3~ohmbX%@ADWv689V=GvsUoBy7%ADMN@AI-8;aw z>aG{4Y>7HXYBD(_W)$EN>UevFO(=b7W;rZ@jx5wbr2uguD${isn; zSoXD9zl=6NI`H#m==<+iqpd^g^YioTcd#g)JOZie^^|Sy#_lS4d8}7jT3WhWH{WxC zO0ZD({*UI40!Ng7{5~}`bmOgGzkXf2cI{hJn~JZH#>qXKc6Gtztpk5#E&5O{X0_^R z?|$+2_4|HxJ)Wb`!OCs9xv&Z}4u{m50=LBe^n%(@;MNske#Vi_>F47FKW{*%;5uz>wBee!up6nV@yp9j!$&95LtK{*bO`W;np}^Y>$ubx|J!1?87D?*C}6 zqcQt@HK>`*$WZ_IJ?oe4a~}Ox+a>#Y@wv{wj{BDQh;Yl4{jOcyzV`9Fugi1$O04hJ z7wq#8v%QzI!FXQdCi}BV>g^AiHa?NK6kEFZ`rr6-=T5(~-C|x^B#{&2*|gQ+eT8<` zg^OEnY0Uf~4YJ|rx9yMD#;~n*DO|awC^UVU&C73GnX2{Q=9K>Rzua#mo@Z9vx!ri? zD(Cvu!c$LXE;8RKb5d+t=aGH)R6TYW+s$2PShak1>}JmZJD8+s-b3^lZVp{P1h$-Kk2VfA9JK*LW>gzSgYy%l(qR(DrTG*P7q$++0<8 zRz*DY-kb%!OCC;VI>7of`pn<;nKhr!nqU6*{q~cq&TKv#O_;Fo*+AP8I^VCkK z2p?tgfAaZR^lVnO&B?xhW4lg;2ku;wYP31;;qNu`qOP5LE0(tYW8~MC%{^h+@>lM6 z1+QMU{Nz{n_30s5v2(x7Evwe%yk>eTar=(z0*0$Mr&jyT%ipy9?}OXcvHLgL@0oOB zQl_fejyfaH4}aIzX)>JY+V5R?n`?g3-`$;)v!-*3{rGh?`uD5{CvV=IoHBFs=I#0M zvQt*?sqNm+T)(}mD=|zzZLt4XWl+}v@21ezWmDRxoltazec(5l)3oluH*+PZiZ>A z|Id2+J}6enZ|2PpQ~hD(U)``zliS)q{$l~p&qWOJ|D{ayBTfpx^; z-}etrZ7DJhP|aDLT2b_GoArySy3apm&pp+(e(DXzbvCC`*j|3kV|>Cd_{2W@-lBVd zycrX2{*7IA@$+h{z%WZE;ni=?96h6+9``ry_N-d(d;hNN4t-xU(citPB_3fSp-)Fo%e(6kj`gZ9#zePlOuYWVHzWOh0^2?`FuNj`bWA$<#&$p!v4f~~k z-d^YX%Jikv(u-aDmL5KFZOKyG_iw@quUmfk{$A_*+NAS`O^)e1PKgbgmY-F4@4iub z%H8+VA9^z;2>y91xjn*Y=f%}G^)A)>7RS|O`=7gHeRd_sRJMZr`FqXkOYdvheO2G0 zUpni{UH`lJmfr6_&aPuPymfxO%EP&LcS(I-Q-5)VOj+}@cGkZ^3@g5V_u2FR&)Qo| zGBZrGzv%s5Z>za$=Th5KUvI6t8oXxx9cBKgD_hsv+J3g~-q}CL^6ibMy3beDcGpE! z_a8XdUNC*ix6er@zgB)RXJF9y^K<_HpG%eQt>(G6f7_4zDo{VTIOPAo1$trO;q@Q8 z<3W8-1C`459hvtm=AW(mbXMMC%Y6X`f$!hrLyzfSI&i-yeo;@$#iCuo`7aOGrR00} z&b_>MqRlevKc1V;*w2ahUUGH%9Fg0c?AagXy?-B{zvv`?*}gK7X^h7lf3BVM)-S#8 z^-KNj^80?4?qNUqs&3zc`wf3}8p``^Dh}x1`EjE(diTMzY)ez$#M|EBX1=prkMVH9J&*-y041ai&>;K3Yi}{n^ke?@#jl>Tb-wR{)l{io%C`ym(VN+{H}}R>hP!?) zckNtNv2*XgILo)ZwZDGk_-!n=O1ZKxbl;)-593zm&*tCnky*lc;J(4_x6gxR{vG++ z61)YET*q1t~&*N`OQ8WM7zjglBst%E_V$D|<2`T&2cWp&$n7?JNGsR-K~?`{Xf^dzy0s^S@CXDzF%an&t_i4l6vfQ zV)(_nxQi7VgtmE4=Vb_G-p&%v^Hg7&FJE}e{C3aFY)d$ghnX)vTA{q=ay{>?!joM0 z?l-@9Y?3jLIW!?X%!1Dptx32K;2JL+J;@OP;K+kC({$@A-eRuj<{=NNd zKcp+_wHO%w9lH-2wgM%;h$-I+7I4abFh6tlhw7;ba>23*Oi{Yh1zp7~!JXHUG4?4{&G%oC2>&lHtZaH)-NFPc>9W|;ZuYSu2LUa{I^%92m# z{@kjWJE{F*k;Rhz%LADzTeTkK&-n90_20~rAdt@XtLr5jcjxg4Rf|kki(k7ed&alV z9@CeyO82MS`FCx7pw_2?rFl9t9pBgcFK01o;e3!kgC!bVWLG4gxaOTL zGC6I%K;R|QuKn6mwkbTG*t7oc9skV5r<-iZmjd2|8dhkdbmk_UZ%Fx_tS|JJ3F{V6XD^Ubn@tqSB`C7*Pe zFSKWdP{)48dgk}}jfDp*RDzqI?`Nz(yyw?%CU%9yHmSS6r4}yyJ2>x7yO;BW@9shQlb?%w-eorIPpmwqAGm+} z$E06BBsbpe+bh2LVYPX(a^DNLIolJxrT(x?UR&?KZl4`v{qdrns?xn_C!&wZOexu3rm_Uuh@ zL2r`jPnRQa_IAaD>DNleeca)DZKL^>ww=>sAGN%n)ctnb{?!wmPQMOhtUoN&8-M9Z zjrj$Tr`O3%U*!3B_pd0GYg04-wdr2G^;4SHJZW#I{+Z&f^BrS7Pn=qNdGo@g?5+R4 zeX^hCQ<}4}t##T%Plo!#K|S%8wxmYHu37ar=H}b1K+}Bt{3~e&=MPWoxqhEF-{APO z<>Jo2Zrr=Nf7Y(U_s-7cs=wajDXh8W3Mk4q^~4*k{Fm(;ciV2w{_rM2cd>*ULiYJv zzkQCXzpZ+3)%Wnd;(M2EPcD-T`DJt?>PDSh-%+8M+PG_Nzse>{)&&|AaR0pyazuap zqPq8|7`indr<;5)|L`Cz- zZmipR>v6-;_Se%|&(zSf-f`XjSJxhOW9;X@6Ew~34=<>E;`W)v_3CPPYmPXmyLMp9tsBpGy{+v@ zo^yeZzwln=^SR!xd%`7u%>MV>*ru-YZ$jubU#mHrFXaSpoOipY@Q{Q$?^K&-hJG*D z*{$C1`>ppiKceNM_bKrf)%ON3pVWPQ*7K*wB6*I%v6C!+ZN2(F%G|p2YxeK^8yFr> zUo!7C%lmJyLUJY>`bj)aId?fU-;-vZpyi* zqQ@K~{>WKOMn&$m0>(8J5q3XKbbiL}%RdI*F#;PaJsn{0wJm7!aqhH&X z7fdw&n*V3*y|}qYKYDlhWj*UYWU2f;KDkHuxtm4u9G}!4;r#romUsRy`}-$rIrBk6{o%c=-~IbPmP_4VcJOchA6^5Np28x< z4}Z-6E&DI^Z=S1sPj-UPF^ie=zpsA?sa`;9FCOGWy6E-HptU54f6x9tulVrh=5&3I zCWVfpT$bBGB}>CmM$j@1a1S0a3-ST9RO3OuMC;Y7{P*hr|1IZG;??8{QnAou_+b8T zUTJ0gzM7p^v$o!TYn$}axvNoxO;c#K{DK08KfU|YC06E~{26uc)@Mt{C5o+%T`eL! zeSBaU@l5@@cklk~QCKrUNs+aAF*B&AJ@eaklbK06hxjywAYE_E74`LA0$~CF*$&+Q zAzh#Saku$jlY4*OHL-kMEr0HO{g11A>RJD>G5pzk=HI^R@9)%we%sIae%j)H;{VB= zM<1Kt{Ptb=uZ2T0Z27^Xc_vGcVkKI{zpu56FDp!@qx@n`?btmp? zr$i^SZu&cY<>li)YqGc2|5~1KTk@~-mVql{KMO@|KoR=U(tUi`R`Wx&YNcwxogjrG^44f6yq1%S(bg= zHe2`hwSD`0Q?<)ZR(uRm+8wjO`~`>I4a2`y2V#BhPT5|yO}wyPJ-TUg`41mg{!D|~^W*oox3}fJx6Jh_`2D#5@662F_Y+O^S64mr zPUE)Lo@e*zS<2;mE<1eQ&PkYls-k3;&i5B4f3tor`4j&4Rl)Y;-BRy5trF80Y`=Ny z&Dz+dO3a6O0>5khzVdUL`*KG)FQl+PE4kldVS8S%t$Eje`MKZNzn0fb4~kD0I3bzoV&}BKtddbHTsHy=RMV&7ZKft96s*wXn%2bNqJBeHELv-@;bke7?yd^~vAN z(^jvtPE$X9JGA=#72injtlu#|bzf)%}Ug@^7RTz1OE<-6sHy{|$S&0i(#*!E<%dVS@5HgV@fw@3M)yz%_NeWSRe?#4py z>wmBBw^P!yTH^5lEc3B^@7C@E_kKt-d@wip{QcXvZ|y9Jt*~U_Q~dJMQfc$NoSYm5 zT_tW%CS8(HP{Qya|BvnNn4O!n(qDc3`gQHvwYl(&8XgvIX$8*5xvlHfxa!*#E;-x- zcWxm*x$Nk2btFKBI-nD&!9efz~_e$GtZFU7!cMiVro_d}Y20o0NO zO`e0NSD`JJ$Dh6*?9add??>rZ8BhshAX~rx?QDzRc6smA{vCS}{Nekv&vEZ7yOWt2 zKqC%P+i&grQGMy3m|^twpu2qk*ccAn_x zzp6h`5;(iQO3k=Vef9jgdrP%{r3HgVkczurs(vZge0JsOu0tQq85sVR-98^&c+j^lf8tM{?VJ&uyFMmU z_WQ4!GWYLq3Ja`VzK@S#!-Ie4daTXr)1T>S-CVVQXJp*#{O`*u>}NkV+00&Cvbb1> zkwNFf-}h%OxQ717-r2c!%lzkWZ~t6AZ~xn@lB(+8Z&z1)UEXzFEbLGI z_ioOYkLC;qF5Q7l1We~kPdsbAvpTo-Ro>f^k!8w%<1Q{f`)-Dq$<+4Phaa}DtV!p6 z5awO+;PH~bdv2f9-Iug=g?jeW+&4d@84?Wt+B$x!GV7nl`|(di;{6Tkv#uHHUMw?P zTs`S_)T#$x;+Yu^+;^VvJ?8Lz@!$VU1$SP#XgLiO(P#GU=iePR-JDMaw5)Z{e;JS< zD7k>^T?U2+`7@Z#&$F#|6ku`G2|KY<7F5mX@PSeZc#a)BXU>2$uYPz+WbEGuf4|?a zZS4O@LRZ~ONSN2em6PrgO@UztVt7=B1E>%OAk>a;!Y z?yorzEh_w)9t;ip6IXdCe|Y!qUHXv?iaXUSJsg=B{_tM@wtWlp;)e^Ji}>rA8UD3( zudJ{4;*q|xpOK-SUFOe^Z*TkK&F9-U_oRmJw|~97@Y~-Xm;3gAG-r75UOIk%)ouMp zZ&z3EJRtPhMt6Fpl93Rz>BkF8{@S*_ZZNDldfE8o>E@*1Z~K!!ffxSGykGH0O*=nd z?z-;I|A&A6sk3V%Eo8|L|m!bIm`#rN>%vAgP{p9NHk)<(O z_tV$E%9;>4)pq^S<)>#@ruv4g@pnr~ z)6e@>SL~|N%G{jv?9KA@r)B?M-~WGlb-nqYS1EnJFYoxbulV`7tvb*;&+IP8{wwp8 zFaQ1b^6`&dANd!@Us0H8o`3Jp%jNU`o#maW{CTgc>h}-k3}?3QXO{1-J~!`)+16#* zQ4PY$lA=>zS6ydmo$$$P|D*g;>vuAnwlW@11GWelszz&0B4e zO`5ds&9dfNOQB!8PloqDdLJ@B^NIWn$(u6A7xepYewm<~TK)IZ(u0fc<=wbfI&JED zW9i>&cMN|kIV}5Z`El;*kR4i}H5%OS-+$S*{Vwxr&)YjvHMP%}`F`HCE9|hP@3b`; zauOM(&(D83_U*kA_w=*RuKttDIIsL~U+wR2$0N50AKq%O_juxu9~1vg{CPoViht-j z(LC!IxBI-gn_qp~%=)%})5}*|xBU2YTL1rtcKeP!Pvd8XO`mw@@O_328{R&TZ+DV9 zaetv>_TRbJ-L;<|nIo>ZGHgNngcnQx#%_G>{A2guPj_|}d40`1e@4tq$^U=Y^`PyN zn^(Sif8*SZN!zyD@YSbt)&Kib32Fs0h;9Bq>))Q>+TS~Go8@iiWKTPFd*)idxNA}C zG7eh?-fesBwr^Knsk#51wW;gA_Sz-g%*`1?v?`mvcmKzpav@bP#bDG~9>5t|N zIy?8LfBCs?&Em+fbDq6E_e1zO^Shlp+}R%f0Ix@r{<+`o)3ZN+lD;qQ?~4`a9L=@E@-qQfi*7-BM!EifQmoRa(@C-WT5I0V_J_(O72L6^OL6K>aX)pKE0vEz`$@=vFPAskd+_I!PbF;3p`rI zzyM-{%=@#qff8|?N3kt^EELld-)Y628Mt0PJa8m_VA_4PmPYB z=Qr0}4>oo6zqe*fRxew=2dpBqezkW{93ulm{rN@vKc^LE+LuS42G#Em-b;S{eroEq z#2fW*e{S5(16peS>~A*6h>zxA2Seim%7*B{76@p|wqS7yiL2SqkAr$oGpp)yO20OL zzhD1rmj(esW`X(NivvEj=&tQCEJkH16k2LR$Hy#_`8j zVDszu`IjYD{QLV-=*X1U_ube3w%>o_?6UIsKX=~mw_CJ9$opOX?-eKhhxKvSYc@p) z)pzgwZ`zx`?`K-upTCfPSLoL{u3yd5m6IeNoz~x9^Yzu#KhdH8%UajIo~_&#;Z;BV z(>Bq#*Y9_izppczcjN!VJ@@VZC&vFhGF$%K%mNRiNFb`um`V zmp_*;dSad*qU(S9{`dFy?Ke67+Y?a#-_Al%_4#_8Cug3Xn!8!d@cE~6hk|!J&fk4T z{MWSqXAK|9aDG!v^tEOebku3u-~MiY+4FOAvmbXrR!GUs|MoQAc(sMe=baDdY&>>$ zwt4-pm&@zDozyM|9w5IX7-%scTXmtoN`8E+6Fbwq`XJd z_y2h+|NqBv`<;r#DRtW#=2V4+g`Il({?EVXZzMRlYAQ=wgeT6t>F6R*EN%Swz0dvY z>m(abhy4Gt@o%C<`k#rKcP4*t{qg(x{d#Rt*4I46%h#As$}NOg#GUUYMc1nSO4SOVe)N71S8gAta*_Y-X{*mJTrBItVtD?a+^@gS7nwv> zJlVcuTl}2w{{3D1`nU(fyx(_2cEsHH`)5ntoL` zEO;)pG3K8dhZ66_ZyjIrBhx(Nm`x}Ddv?tnl)O9t+MfFRe&dhb>skM;3oV~tUCHuK zjpL8)oc&K1r&a{SO|s;z|1at&5SEjh8@sP&W{pCJf!mkuYw8{!>+S9BJvwc>O28z| z&bd4G-&X|XXg0$|``5=rPSstre*NjtPe>~ytP1OohcPlRY>>QozY|o<>;DP$Yuy7X zK+enujp#y4MraS}9~-Dm3m#Vj^@M)hPI|o~e9!51-}g*C^Rgs$*X@tfa#T-$?K3|+ z=kU7iGuA}tO~^C*X>vD8@Gf7wFv9_xpVhfHDl5zQ?}(s9ESNq;WE4w?KV6*ZRrjVL$CGV=n%!-J|(`+Wb7#S@*uoI)3@(60vz( zcZqAu&Hr*1w5ZnL_`hjhFG0<2Z-GfZo^M*W&Y#Y;e){*W<@YY!_mr-Pvpzq4i%-rq zU6;IDH}+cXt^FUpH->?s;pW%vCi?o#`&DO(zkKiWu=h!9{C~4adMzjyoQd4Hq-{XEIyJjpWrpPrl|_q_kxey{v#n)&+X2JJlIU5j5mdHLbb zx}BW)t_%zjarNOEH-C$OD>}Io_siei*=g3fW1hy(DvQl)CZ1mY)98Bs-P7s!c9;IW zmEtt16SQ)s-u%P%yLIy_ey#r7zW?t14R7MC;-=byt0&pd)%}TjZvx5qa9buUq$uId{fO-niel-2LPBVQo$tQoUuE#B zCC^G`>b#uC^11Z%wY1{Hm$oje6*n&1DWGRiTE9H>!@I%)%SBt}hpV%zz0H5#q`$TF z*WwiWfJM(gc%9a>uUyITyBIY3vsdD4zVb__Cw=Enr4_HRkFWWkb%txai&cwr$&XgTH^RYT?}9 z_it9}+9sEs3Z56-S$McKOX<+FL!YbHF5ms+*7cXy%_jc7KXqzd-qv%M{^mcO9@;JN zkL^$H6Wyxptx<2ws`DM4C#i9sG1({c_xxU|^!xjGrko^q}8wQyq%KM4_W(u zW^3xl?_Ia0R!W5XHP!jvs*k#5vherW8Grw*tNa?g=T-8xSIsZy?caO$*f!&`dh;3$ z$zwnMlwY`MkYPVvUF}c%r^~C)mt5;C_w@R28lhG1y|kpf{QG8A4o|iB_UsWQS?@M5 z=uFwaw6aq2kM7AM_b;yu@m4})wBR4_h7}R!sXJycLq|T& zY})_+-rnCQpCr{jzjye)ozKqgo8@BFe%-tQ&-tC}zsdhwX7D-u_wRU6E^PSt13c2K zCi>|8U*7zCUpKk^n;m_9^8Wn0+FCDO-WTTbR0Ed`cQwqu1)IOGUn=ppD(LOLJbxdf z59SOYXP&;QE@A#%&Zgo=LjL2&Tcg>H5^wC*oPX*}b9A=wJyxiG+l-tyoohowK|}us z?l=Demmw{nGUS`DaqWh`N3YI)%g%qg@|kkr@2e-6W8*Mx84l43NWyX))fp_-*Kfqk?-(E0d{g=59e^$(GE7;?j z9dVwgUgB9&&We4e5h0)NN~CNoTB4cmv*A|D3gwtk{=ipDmnObS=y_`FP*=Nu$=MSJ zk`88+rnTHrWM8Cv?AK)@MG4{e8?uX(Wy~&|-_@mjRO&`~P|9!lpPhf_o-eDuviDLQ zQ?Z)lqp!QJ8GQCF(>eb~^Jlc(uL4e|Njpvc`5jLTIsSjzg)6CNr<7K!-<@aoU|H!N zQw#r>yDwH48t*Eu+qHfFE+fT_jHhSw7|NaTENc$W@?Tif*0lbIss5e&8xPq}*+042 z&o_Lh=~sy_MqcN4{c^55ByM%>$Gcf!x>r3f9V=WbQ!~+4Wp1fa&KzcDU73F}lfQoN zl{PmsGZTxxH_5^C*`y!U+Iy#5_f9l7++2RJI%)d3u%KVtHr4Na^g2v1>vTzuxs;yR z8FTi;T&Fj+o6k2m|E#_tCE62W@Z|Y9?%O>7#FD>luio)8PXEremu<_wYt`gkyDInT z@+l47^f?FPPAiw(+25yf^Zb_1pSM%~mHgQ|ZO?&{+S=^w>}qiSo03wuPvl=;U;Uh^ zPQMjS>WS`s_HohD6H|VaG$y~7SfPEHw>_~>ciEZmS}CHOlB@SmZI)LHu)A9$wlwpr z*>iO<^#XG z)AdsiZj+k%>CT4JHM=I>+4ruNefuxDl-R?{M{n=FCBrxAv3~M9qc45`7vBC}WW8gC zak%2sIL+N6al9|~CtrB-;C_SgY8O2trKjpY3g^aOKJ_Q_N3_6dUFVP!)erx~-V{rh zTKP%!uG7r*+1r_(9=)qO{hRKAj)vJ8`rBq0?YFs-Eo|iSd*}3Neoso6g|+AR?azIB zq|WzuUDsNH%j`HT# z{n}CX%WHo7yYfP16yNWYoqxGZbJbICH(#xY(^*;Ldi2_rZlV4AU7xxx zjF;H*>2dw5dm{2XI1@|i4+mY{f0pygmJ^ZBkAITb7Ipe`RcBrBpQcy$ML7f4>$a_` zH}_%fSy*GGcRkyC)|I`y&sr689JtQES>_+SHHR&0!$$8u<)1ly*Zkhi`*L}2QEB$l z(_yn_ZddIP%>-88|(&=)LlN^Yw=kJ_UI8U2<0aW_`>m?#kb5SD(83 zubKYyhje}a?|*w~I_59b0dFvm)UzKil<=^vfqO0#uzO(=0>+Rv}yfaE$L+|$<>;5^N zJL-D5sbcb1^S{@Zh1i{b^!z)+s?Xc+&&Yh&aOAfA-Sx9w{zm7o4qwl)ch&N%b$POr zT(fsxe)Kl{vi7ER&pZNepI=>k!`tso_zL?zBWL$lH@}7NFh9L_bJ$Vknz_#pChPp` z{r}+G5r?^}z2z{-3)~1m`~ZnZNslmifs&mwU_B&iW>HGJoOMt?iq$ z%abP@UGseZS}kv1C#fH|Zx@&LMKdqpzP;phdZ7|u6~onEx9`omWV7zOz1DBHnafp= zzs@)Bjl61kDgMZ};4+P=uIp02KKLXo9dbl_^SW;yFH3%JJeL&3*M2gvuJyr{g=HEy zd+yBU-oI#0@~#Wv|NFAqw*d^@ef4WSUsbpyMc$vUwPtN>d~|g5oA%?^ zChh3k&p2(xbeZX$8*co=>)rG z{`|@4M>M$kn6U8G{rP&10sq+;7@+lA%nC^T76Gc?_Rjr!WB%ftEE&)`bogisXt(2B z>+*HIs_WD*?S1!m=D+If|J(WH)!yVUnSbY(@3-fNb1Ea%et&+LpSQIB{;uiz_3y8J z%}$0_b2sj{Zd;%G#{SInDaI*}R{wqEznL{Z7(6Dm{rUT%uYr)pvFUsN>NLB(8^1qz z*vwvSetPD~`Km8#@`E39cs>jIdAq89iDbP`W#}eTt2n<8Zch`gEUO9Fw9m|9#@=bB z_rjlUXnX3d$KNb?;`GF`THm$I)bFTfAD;d2jFI9)pVA(q`U%HRYo9X6yRfE)?aAS+ zmHTfU6%uLdI;cHcu=f8>N!IMsmQLMwE}Wii>+|E3!|@XxrwG0C+3@yd5q!R*DZ_=ZyOiRxp=U-H~igIg@5a0PTc9S zxL0uEM9p*6=sy!@BtG~g$#u{C(HWj6QGu7*gyOc`&|t1*JG8BxzyIvP``oYJgQh

Mhmf7GV~$KE5H^RpQM3rPg~bkX}oj&uswQ1>3VTjZ|UWiR_D%MbNK#`>IoiuqPMi9 z-{Si_H^VOenSyZTj<6!#1l@-H>}&3pD5F=KmXm)IZu|C>O23x`XtFDU*A*v%fGdA zlG5J)*tu)k&dB6=jgn7WQ>@o6>a^EbBzpAluM=-Vr^OYYKCrh&bM@(yOh3z??o2dy z5;4!7#GUtjUvqTr_Dy}dzUgQXqxj=|$=ioVhL}G4rX_UWpDraQsKsq>r2+ZySn4n`MsZa%(D90w_|QWme%5_ z{>Sf^-E*rqeO+`x>(aFRO*6yz`M*|O3=P@#_shD?fh*$=T|FeA|77mul;F_sOWqzi zwdMAfWck{Y=T?|+-lIFC`Lyr)$u|@(C!LP=Rl68+;Lh*g|NgQo{-|E|>V9JK`r~{3x`}*p;>$B>%D*nyA7G!m*_vHOksb1IA zXgSx-%Y+m`RTDLOxCCUz&KQ*26{%@Q8UgYtq##h&uTy-|ddFNO4_euHLsmr&# z{wsT@pXZ%zxV>)j`_LZ_WpDLDXD`^}5NN*c_w8x}+X_F~SyRs+3eEez+HL==t)@#W z@4VjstaQ(d+0TU#mB^BUg%{H+7v9-a)%~-RSL>1EHOuyhJ^yE2zqL?re%kamK{lcW zwe{RdTT?r@DnI`-ZIE=Vw#(uwzmvY@eCFZbf=8D!-_@UX{(i&$3{5An@*~Iv*U>VyLi<(%hFZ5e%;$w z{_ERcxf<86CFNJ&u8Izw|Lf}aKc{Br@2g~IYd)B;!SC#Wr#m-4R|wsoWR&sthZT#X z086O`v$%rTi&h1WriQo$;!O%1OjV6>97yyF)+$91|HWMHs`>xkn&12Jc6mUL0!Nd= zg6+v)q>jAXxA*nd&7qFh7mD+=fsDD=cX9P3QHYWESQk$3t(yPym-N?$AHD1Co!d_2 z*ZqC@>)iTy{o|)J3Itdj1uoqF+Vc5ZX?sNZ`FFRkpI^MfQGmtKAwPX_oZaU&PExMC zV8=Xfjr-~+VhVQ2TZz42Z8py=cy{@;gFeU?U&{LLJ$@a1{cvtr{`*hWAjfgMIJ!O( zY?A&3ZbtzY#=Q`wF!~GAUXbN1U(Pk%GrwQ+nU4n)MssI1atlbi>ThCb0(k`*5Mci^ zL4yGlR0i%Wd~>dnk>cUk)53#9UZ;+;)_=fXI0LsTu>=~e56yP%Ku=3 zLDDkWn>TJa*d0h%82X}ilS$P-&TMt>?uFNR*mHs-3t4LcWn zcgtMsw%31c!_)q%{C)O6pPZZe>c^?M{%VuI=P#ObFid9emar@J+FzaSu{N*esNya8 zzhz5!eC<~E7quVnJ$$%V{Bn9#N1TbuhR_Y`Yo2Pq-}AZer@85?r)#dB?3QAV_WWY? zF6fupqVJ!co=)GjG5b58`sBma*RN75f&}k#cTcg@N>*jg-2TM$ z|M$|St1MBfCk$7+7~BxJVExr>wfA(rx$h3GyJu^&r~2!+e@Fhj_P@C*az5|*lC1Og z|NrpU|2X_VXqKfx{Vs2{nY=Il7Ui0+`u60nbi7*G;tV^ztL;Z8S|+|%Xg9cV=|=v) zXZicS->a4{G)_PB^A+3WEE)T{J9q0}vd<4GRnYjbuB?T9;^a`(ri0V2RW;x1+Oyoh z`rE9Ti=v&l-&(U zmV6PaCCIaF*Nf7F>6-!@F9jBstWJ2}F>mAXhcnfmC&g>}&M`Te(|pf6baT?|_C;4G z__|(YnpnocCT&u+TB-i>WTZ^}6X}>z$ zbXaJkYxC!SzZLXzLN7$~$JEaKz$11 z{cZj1v^&-5DgVRcubtQV@;xJZ@${`?CA)god|D*WA1(Xk(!CYyh4wL@3M5bF*e5fH#BB%AD_35a5^%rw9%o4tAGS!#hdC_{X;a=Da)9GOk zSu-Y|Vf$jo*L<)eH$Pw6{Q3!Y37svH7qgq@TbJh*7Z=~SW6EiA(xlUO;des`P#Iv9 zmGA{BQcJWcTb1opV!i_T!IzJBnBDc%Sfnk9~2iPM$I2 zUEb6!N3R;0Wj~g^!otzCAl2#pv16Ud$NPAHKUJFSF!_w@!tZ}>vx~Gpzkl!UO3tjF zpld=?=9nb%e>?WZtpDEYqZi8#By%(=WX!yf-H=kJm6x5JZ6XybyJF@NPyv-U$KoR2 z-u=I;_kUM^zgIoQ&#bR}YhniD=|aYEfHeYzs!oi?^ux5aWCo84msiLm9CtqabV7fe)p?&~(@#s6`E2>c zWWeGmu%&15z2#vCmdSth+qm6w+qLLJn`AD&+rhZb`n;L$Cf2;zTl4eN%*q>EtJ`xp$}8SW z?a%TH`M=Bl{F#eBM&hk;zv}`&#OdGlQ$4=^$haa9?CsFe~tG3@>y6wd&A0u%6oAKgB>gTg; ztG0hvpZxbW%Nf4&TFW646JC@awB8ozcscNmPwAU;E#~F9YBM2~+ZS-9cHz~+?~jgl zFMpP}*t)&F-0jVkvwuBnPsQl)-L*Y>|F^mS*^3BEp6ZK>_LzQH`|rkm`z0^7hO4Y; zjN`D1TD$+#WcB#pFV4J{cNR$b^5nan(bS}}FH+Z;{MR(hOkvt9a3yMa{O=bpZ@+gI zc#`tscKR1TCgv)|jGGsJ|2m$LrPy&Qr0eFzY`wWLjK(KfsuWk)R_*`(F?jpEc7+os zL%Oi!K-Mb76{c0^?^MY*DJ;KvareG`iAfgK-`;%t_N}#Xmgg+b1)k4-9b>z|?YQ=0 z^{p+Y0xXtidmy<`UV6*Yo!noX0)+OO-)~nqv6}mfQ>}CULp_5JRVJEyB{o`fUw6Ax zn(**?$6d8Ms=jNqRq_R|A9~1p$XBt{_{?7}_eY&O!*|K;&@?OeviCc-cu`H!_sHIp zjcJ!A-~avNwtu?+fB*Sk^;h@&JKLu-{e3cV=fnEHKbv3h3T)ZKRMp;g@6zoB zuU=oD!Dd!;sm1n&wET*OC4QXJwSOl`cRde0Ijb{{@5F-d0y}5c|Y-j*Z+I^{Qu{4e!ru64GWe|T`A)5e!_*_vAbSe z-Dsk>K#Q%ZdWuyv>w;~o>simQd42!uwHK)!b6NK`E%SY`w6?YC#O$950mrSr-a77I z^So|ld;P!D=l{Q)-hWTyf6e3i8IRBZyL|im+t79L_P>_L*ZtdWU%eo{bwTPi%?0HF zFM1EHT-4n>N1CJS=aWx6Bz}h-c9bqC&wq4&i_7}Hy(=$Bzm0I2x5|%$m-UOBU{(Gd z{jVR+*MIzJ|M$^F>1P$+FYh-!ZeJe}zv|zbFE1{OpPl(#Zsz0twI3YzOU+xUtRL#S z`VO<>UV#hN7GI3qymV$ZCh#u&w{(Ye?M{OvpK)qi}3s#8@_FO z|NqXBpEv98_#S)dQzove| zDc|r}+TXT0c8pgx&Z~I)SpWWx_*V~`<7@u)@2~jstC!urCWX)L_rtu(e|z2kN6b!0FZK!ZXwMxGJYu(Cr z`@h%E|9==SUwdBW|H;Mm2FL5azkG4^_u~0=X?^y8Uouxmul&ST9JKe>-v9q9YcJh< z))aE_UdZE?1$7x^U!)WyjdF8yd)*eVW;UH{GWkH)fxY)1>Kv;~Y2O@QGnb`$YWb0@ zb&sExL^oXx%>OAi;jhRivEXjmb0^K~8}2Q2dcT_g-;4KLKL5V>zq9|>KELkOdFiIQ zU+(oUF0PJUd#ElgkNZGOU5nx_DRrsZ42u`F*AhE|1v1=sh*i|o1X z-M+BskJkOBuf^whyr<3WU4MJk`tz&wWw^g|Wh8$r>AUxAd;7x33%_6A-xvSt;rzd+ zpV$A_?~hyk@6Y-EfA{|WWS{>pv@qu7=Kmkqzh2${Ycu|A6c-|90nt3WJrxUuONh5$dqsQ|*GZbY5Hc zk>;Nk8DVp4-aZz-zmMN>!sU~F;8t+r6>i7ih2M9}&;RlFw*ZUfOfN=Ifoc-}CGXEa zITlC1xeLHe*=OnL`uqNzdcQB|)zj|u#ot}lm!^SB;H}plZ?})Sf3sQP#LLs$?OvHz z?XP+}_5Q|yzpu7t$Fo)`W}Gbf6K!w!%$EAuM<{5b86Rc}{w^~~31+kO6G zbEOoxUir$pSMP_++n=lN|GK7qf7h;`Pd4lCN#WbG&Mtr5tjYR&KfIYEe^5mj+*S!= z+uNEOXSyI%llzO40E?q`>%DGq{duz{|2@_^-R=DE$J6!x99#L^{eIQaxu2)=O!Yr| z9Z_Z2etpwA{mz{t#yIY%>Pz#g>q7qgywsWwshxhjFkQzwF9K5Nb2Ke@xcK|*`+ueh zT)4gBf@8qX-N(01wp)M5R`B~1=bE3PljfDLwN}nAbgx@Af6<%UUeDVa%@-bPS#hrK zQXQvjlu4LiTjp7m@%)LY+&&|?YW|kELtA_}_GHG&|GvW^+jnw}_Z5*x zXN%)j&9na`db)kRT=li(m-aE;pXBqg`n}nqGwiF4>m6U1PWM~aFf&Duxyrl0an=5N z&CFA+?uh?Ac<+b9_f77ryxfEr+q-?sbO5n;-oowi{7rC2iZlRo(+3= zq4K9seEFg~dK`P7pPPI8&K()Ea$hE2qu>2;&mYBUIy`1twP^NEckXLpfd$)E*Sns4 zEc^M`BZ=ysGq;;Q@B3$>)?z1}yJwlx`z?&z?d4Xq25T>6x!buZaPWzV$L%-^0Ie0Mu*#p`7GWA6Kc+l@Zv+_e1I(A~-8toL*I zs!Ok*->5u)STx6IYw&Y6-Os5irWQY4Y~@YZBd13OA9-y0tYCsnW&iwX_BU#?Z3K79 zemPvje#my}ClAFFU*8)_yf`hYEw6IPzGKS#2d7i-tDXGgy5RZ=hD=eNgLmx~np;*r zO)q_AU0J#6@TJVjyOw-Xa-F_g>CG9%us3E;_pDyp%Q-XYP~?(S^-Dnx#oF_E_D&Jo zm_J$1;lj21>%WJqA609xa6hfTw`+fl)EAK{sxfzE6i&&#-YXjDI-S8a>8zn;@x5}^ zBU(K1e*=&A{WNXWd(pDvQc;AO`ZryZGZ8xk?Pun0E7y{r*x~!u|HNL_lmF)E@I?Kb z82*!~;C18gH!oVJrCxb`+s?k#b(UH9-xFUpN%OwoKHzTh%2&nZt(cGLtFu0=R~&z) zNL)LvA=U5NQkuxIJok{>&HTNd#fz?*aOzt2oWClWn>2I#^{2swL6b@XrG6$~3Y->s zJt8>isf}`bX3>@EA~Eh)>B6&e@PDwRxENU{J@iAK~{a13zeKpVZx$DA&FKJe7Je%eC^s=b^ z&cLOddyBrE*Oxq^&hzv5+2kv${qt7OwKRO7EPQT>*R7YSX0AHy$2-?#uh4weQf$@k zT9kC(sn~Ya11ZV7m--)YA6|6TYtQ|ypUXZhYKeKm_v~}Duf^@B1siXk)t~&Cc|rMx z7f*LHm_*FFv`mMibDGm@#c8vpUOipZ`R!8f$$&V?mxM!wV?+OYg{y&I$vR< z(dWi{qOSTZx=XiAPZ!&;>(1r16W7M6%yquzSgg0*LI1+-r|*9ssc%;LY{v1*r)=J` z>->^`O;^vkk|_Ld)xQZ#E<*Z$wr1dt7fY35hNW5Y!gh9E>Alzok~l#fE)J`tFS8yl zI5??L_rsY5pdqHqDv;s6K8d|)M&C|N)%IWCFf(P=5lGkJ;^OOPj;~{?@`dz5R_KE} zQwFa~M;rs#23o#cO6dEWKZ z`MpBZBepihxAOkkd*xk^+N@|rsjdnxuU|&R`@fajevo)mqog`tt4ytC$w`;ObwX+? zHY=;lC(XNitxub8!Gb-XBv+K3SX`IwzIuUyip{mBn!lva-K#%mwtAtN`Ik>_cYn#{ zhq|Zjk(aWm(%#Gvrn!693tic$mH(>v`9jL0?pV(#->wSfbTs(x4PWDhHR&P$4R<9!o0>27zxes8#~0`R{pIp?J7?&f z6KnYHES;J1O@8l@&&2`V$CBSI+x}kqG~h!(P>R z&qsSg=31q^j(bfP-iWDQS@}!N|I<{5{43U(q1_w?ukLM};lJ&1pyR37#*@=t*skxJ z(QUZ>+KY}8kNvOeR@H_tP_0^h?ehbMcej`6&)*~OCe!b}-}G|-oC@_P2XD38YR1gn z9dP~lq1s(gBPS37X}LblK$dt5&_-9?7a} zeR}(~#rKqqk5>!peDRC7lWhBW%IQxux6&H#t#*!w_Pgvqs=x8egm{Sxl@y=I@2^f7 zPqdVqr1&(rHJbfZN#LiS$(K}@MlMg;8g|{706F(yMp@pfvr8vyC#cOlz4u!7 z?`%@Ei z)|3}t7f$&bBfBvCWn#$W8wX|j`{K5-#ei#r#`IY87js**HKVi^C_Aj@tb2E7=h?Go z6N|5_Tu`~JvhBO|oXq1h-xn-f|Hb3X319zpojJE8?lA4mGYP1DbX(-)FR@iU%U^Nr zy_~mM>22(}34B4Pm;YY$RBz#&{N8hOf3Y&<9)TKcAPMA1?tN<64)WqjR`= zZ^=II#-%Hhi~g*-wyvOV$Bj8b>jkv)@0%?)kErIp7I}Gn(1qn(@mq3hmXs*J`z4n3 z#H#8j_wj?jj|as4+%n_g?v_paOoe6}&DYr$+3CwB{Qpwa_7_hx*RZXbxK~gtd0x%B z{@t!-rYDcE9lo#dIzqHNf3r|A&#S+wWi#EomNP}!RB`{x6Zuk`b79&uy}GkpO}i@c zmw*2H>7T#rnJ-orGYyW1HD7hs-}2~%sP?AXjF(kEJT3^HICuHWFU7_C)22?gI*s^Wg zwyj%DrFz%#UGcdDk~8<4!vLDrSfK2-UXo8rNAfz;d7fJ!8Q&yubN)pK%6Q%XyXp?0 z-a=!XvHWhX7p95=A>O3G5ykdpU&Z?mAMSM*yFOyFOS*Z%yUyc$ zwO&x&yQx0}SBd`7%6af!wLnIskl$ve$90XY6(5$ovhdgy7=8JV)KU8=wYOCd*e%{I z)Og!1@M=j7o6^3_?I+GVnf*yIUl+439Xiic z)xWByEk`Y0>HBNHm?PcmkF|G|oW3UfPUrFT9o)ax6(^UwPucRpaFyQsd8=9P7;pTS zv$9VUG|n+?ipic*k$(@qt$AUpQvR^}$1cbBA=^Y=sM>8|R_Hy>zDYjzO8T=6*X|tn zn{d5!wsm;s)9G=gj`nlotNdfmKUmWrHks|qx8*f#73;WWKl;?azE>Y|Jk0 zw-21F`F_vt{C{`$zdd~aUV8mJJ6Si;{~bmZxxcrcd@BD}gCnS}tG=zXf-hNZ=3aMD zfq&Icu>2gx$8#Ja?`_z9y!w>!;_Lph+gj{c~Nlm=5a_*Vglk?Q>u-#GH_qI~~u=<31 zi$y;D5Z>mvein16{39Ds*ojG8Hi&fS6EI;ZDc!gvLEzq@%kdnGy6Rj$IEY*-o$#ye zSJ*F}XG-w1jZ;6zNaOU!yjhxR5j_UPz#r|D7f6}pq-!4{N z3i;B;_T}9E8lx{p$5u#-Y-z0w^5}ZXQ~PYEZB^z?<;`2424&aokG2(*W!?87X4;dc z-LHIhRG*XiGU@9qj}|Y!BUSS+2rb^uXQx$RRy8TQwCIWZ4pEQ%(CKP*cdUb&t#@yY zZ|7dzRqGU6AIUYQCj6ZqY@zYep3Z=Vb&RDf<=fZ+AFd ztm^Nz%?YBKlbG$IK&@}x4-yBATjsdWwH4j%elTBV1?Poz0#%c<_tw2CJsxUrC9Tu* z{&9k|PPDJZ>&F*=^sQB?di^jk>0|)!I#7H)jMAS!?L_SBrwbpw$lZBu_6+4t+3Nvo zE@_lYESYrqM@!PX^jhB>8=r;WVh!?_bO zm$+USt)pgmZ@uZ8xN8@73(x+?S-haomn$miOVqDjp7Bh^ zRSRv3FTYE(x^v&YXQ4Td*u3s~7TaLOZNDxYw*MC>(4thi@?!S=`yBUPFLh?Ie8U~@ zx6fnZzUJ@=U;F#i!RdPohhp`tBe$QQy7aqrH?Je- zQ#++Ui{46a^!nZ%&$TGmX+5u9;%v#o;!pqDvCT8tRUvb?{it&1`Fp2j7^>Ji;vPpm z=oB@W?DJ=qD9c&@kJFn}0xQ}x^>k(iZxLYm!n8NmH0YPts}1&2O#zGx7rU(ASyIG$ z20D1tC%0Ga$IjyCX6EMYXJaQjO!k=^0c-2SX0DL?`#bk-WCV}$xT6i13$QqHyXv!m z<&f$T(2P3TH2DQ?&`21IV?h0d-5U!Z-Po9XxNheOl?w5-czMn^7i`N7{+h%tL)f{ zXUz3!?TNH9nNk_I+^_gjsKx3NAMRW&{I{lS_Xf#}*=@~i-p95cFm5&j2igtS1>1A7 zYfK+=WNJ+RxWV;6Gqb4i9m~pxi6P}n-DN)bKHhYF_t$UpPA7@ly)63iqiXa1{V7h5 z;sUQf)F{|@Y5$!GXODQ7?6LX0{$x9st?MLx^N)L1PiM;iHuu@Fb#Iv3`UAg~f8TTY zK*&qc*yy#+I(Ng5+oV4)U$X10`~vgqwTEB>mN6Z_S&nkr=-xS5G?OcuMW&yh$^UNk zq26^n5B~n8Hs9mU9ly>v_n7kudl`Fq7e_BJpEzN`Qsydgt9!ZgJPPby%|5mHO^&73 zbKYgiaj$Qx%D>%He9Y?a)%h2Gzh3%0RqM{#C_WLnj`E%R<7Q=E7XAJ1Gy99PuIp#^ z$FhEzm7>S8_tqQVcLm0x+qgVr^TM}+OZPML%PJ4QlY6h@-+FJ=QVS2In9SVe4*52U z&t2UZ_j1d9%8J*E@A+W&YVp&bYYPon&pN;D-O8EErX^STW>Wt)EeY$b+*Pk$+++J9 z{PMBvy^|j}mweYqeg`ewMU^9aJC^BXZ$`0#C=1g*;_W=&i(DW&(! zu{AqfQl@vkS({u|IgexaA8;>J%;eS6=F=NuJsK4yuj%)Fij248eJ#ylT z4PHf~pSgQ7X9(>*+48~NYyHrVjO`msr@$|CLlR3FN zue_T5)p;)^LOS5wuU{Ol`Ljx$%8#^lYr5|} z+TQ1Cef#eU^QjX)C;jJe+iNTF^^=jz;$*J98v`nxZ@*Bz7O|RJ?Dd+oje?4qe{C-v zdSYCYw(xqsE%&quN|p~6FMZLwOfN@9DRa5u3u7POnQq&91f#@*lXae*bh)3kJWfmb z3v*Azji>JKpPrt6z9i}TJK0}0R(r~Gx2;I)Rxp`-W@-HEt-H;TG8UcFKWZDb?lNl79@U+&vfs>>87kzwev3ImmQk6RLIus>m-+a z|L5y|wZRhu@|0?%lLPy-0y!$)sJL7hFArLb@Gi7x<+~MNdq1{J}QeGi6@nUKO=D z>U(FUzY{rGgm z_0;Fek~l@b{fRpH0voo}yFFTX*=5nwtM}PM?>BG>FG}mKXgIdSQFc%Kk$vvB|826h z_APz5>u&RcmLhq&0sz`PQ}k`%R>?k)F1e)5Hz^si9+{?t<;HVh@=XRK>=e@hU->=m?BI)=32GAm_ z3m(B_CC9G5>#12D!HmJvmQK09!*E|Rq)Ii3$Vx_dcKeDnPolKePe!G=v{45sck{U?PHDp&+<Z=k5}Oj2xnj1qjc)- zwP(Am)E919mH56>^yQ7E7q-Ti7nPo^U-3)gOmvx%=*nY_zy6A>TzpPA`Jc)2DeAd( zrJHIGzDQN({PIm`Z|cNPS9^Bcp8W6klj*U)N;z%s>Mio}X^wlh^Zatd58+z3WHTzK zhPv#{etu?`f|F*b^UE8pb+fK|H=6(UD^3nCJg+Xd_>;|!=X2SX-Hny^f8r2%af$hB zO_}iW+3G*v`n+zsc->9t#aqRy+Pz-k{TDLBABa^?+fu&b{%k5{d4o9Vepx3+ubU%htBJ#uelummvis_xT?5ikA74sv2*e7-o15yoa*II z7jGBNOS%5;8tdZiy($-OJAcVCwoJYMcCF#uSk1iK(w8lTms)J8fZm-kPcF;h6Fc9(@rbjWsBx4q6~^L7O}$F1%7^#1zqg!5~-y)@!XJ0nD>N(AErtDgIbJJf;U1=>ZbK}b;f5nA| zL`uz%L?<|Q#to;w)jT>;_b#RtAIeg><$1II{0rSxFV03kY@WukH%l<}MQYEvv8&cWs*Y+OL1}OkG4OK>dTaizci#e)!H3RCmNH32Ip;u(!U^7FfxB(Yw=i zHj}tkO~bO7ps0pd4P{|h#8%cGj3`mw8Sq6)VeQ(r$TPGKlh5=DtM{c{Sv_5=Ji1io z^@We0w}~nQPJAc#e9jK_4i(vA$=sUPjybNn5?|Gt_@fS0k@^wP)T`;TC zyeiDwm)fYVYH9i;>B}jn_4gA)dQK`Wj+@487j;U`w)7$6+PgMWCM{YPqf~uF?MXAA z#-XcXnO#jAAGj55d|`Unv03$T)PtFhvppAhF7wREzg9K%o9d>XiJ_~muoaqpnPj%8 z@{r}uYtoSyn%cHsJN^Cr6TO!o0}8)vi+L?NyVGdFA?_Mc{=;!5mc9NbF6=I|QApz2 z`~KA39jvv4z^yZ;{J<(fh9Pf)u;qb9rCc*#*<) zvPpW)E%19L^mpA)^+{J77r4$^m!Pw2;uA?#zGn@v!Ht+X&y~KNlA8Z*W{b68#=<4S z$|dcsJzBe3wXCKua+%a~(_i~&Rks&Y^7{&n_sUME|I`U;FWP4L?00$5>n0(uFy7Q{ z!LeaWrZ;66FHqvPac$E1R>CcGyF+DuL2P_!-?cSgGafr!koK3g)-ab;{p7MtV{voR z_EgciLLWPys`97Fzb|2Z+#z-HC}`2={3yogJ1fkCx((hmx2^r*?YMH+1i>sne&aW5 z-UZI{2{&N-mmOB@^1k~!AOHKkJ5Ds%y1qA9Wfh%$XqzU7)6=NTvwinYPuHIx`1aOb z=O6{U9kpszw;%4!{`tIlhPrTFyyyj1|09==`9R10zrQFw<6T_B^+hd1YaL{2;J}6I zmzS1aUIiJ^&nm5{uHRI@+v<7Ss;8#)i~iic6Mp-jyvV`#xAvdD5OwCula?c~_mv;b zzlSh#u8*4Ghe!$GJ~2j{q|*<+&VQCB#n`>GYj;9fZL#RW?y#pO;L=!EzbdvMb8%Cp za-mI9^5uy;p1kX44gVjK-{)$*7CIGv;nRZeC!^CQRIh%p&Q^4hAb484;hxNwxIGmg zr({7^K3)CjYn)t@?s9I%Vb9VSnYZ_Cj`pP#RLT5%Y2R?<&AWvgpUJqxdR0~Zar@<> zo8KyXfO;7;>W03~(3b1GYh!T6@>}lhUo7P z-gW&v>Fu`#wFe_Yly_#pS1+RV0XK4dndaK{Gxu6dV9@tzVM~Aa9S}|3Ub=Y6n)-PM z4$jX|R#;Ig__gk$@#`jzr6IgaH)}K<*JHi+#`XRcvgl&;h4RG<-X}M2Gby)rUH|BQ;99wb%4-kke*5_I z3UAowhu7q?%8&?qf>Q zCzT!auV_|nojGUI`)}7~oLeWd{cZ2dIi7dajY~iI*tSfs+c4Mu`IhKv%h=?*N!g3z zer#zk+C9~4=0~vSgu23cg^XukR|SnkslQECyuUJ=tF$Da`B&zdk9?r2=B4ea8P@+= zaxbiY=5TcFXP&)ArO%t0XUF~0yi>T>BQRO-r{%YVIbLa3wur4PJs6Rp%=tynvTFM& zE$MkW-0Nmse|kB4Pf%y%vRwunTV=u}BeqPeT;=xV+1g`{+I?|bJ3s?ZDOXwLyjDtG zUOe5!J3agK(rdr!wjWZeI3Pan^sk^0nNqbow&{FTCujMoIH|I~SumlNRjE|5N^|3j zEz`I~?Hq#jG}n5SI#_FGbzj++ptEJ-9HG5aV^zL2nQni=`9<#Lig5kVciUcBTwD0~ zd9Jp@BBi@~Ijoac#~)l_esN{Xf;o>IZ*M)bYXS#&bSbGfCnvO3?B5BsBUdJLU)1K_ zTh|_FsMg(670LG_L$mtJl~(pGcONXAB4YYf=%%unqI`*i;JR%d!6H4aW|P)_ZPl-N zc)jlJ^?frE9rEWRYK=?0N!?rTop>b7@^sCXkAJOqdRN(m$n4dQlyf4*(;_7|Y;#Kl_CsK*M={w!XZEPQU$Wd-Mz!skxL zEV^&{-({1Pz!s0oq9AWOy#KT~eBY*H%WKsh`msc5ygb5jH&Jmh7yG7{oas*!linw5 zyytTYSk!Ur*^Kx1Pp;+m(ug#ja?`Iga$+3UqO%QMciNmMDy$Z|+jPWC>7;th_3*iu zf7f0)*0{iYo>f^uo{`s+PM<(G_M>^HwX9Sh37__sJ7ah6CD*YeY0m}a0xzy+3ARnT zutBt5QzKN|$m#6M#J0ItZBI>p$>nyR^~*Q8z1{jRa$-4dFH_(U6@%^Rc)<$Y+yULx zu>dkz3o5-JVNhkMy68%6ap; zAH^AE$;%!&dA+4laAu%kyKCc~|LY^|lpdw+dF%OwMAc|HdCeX-oM4$ zb%M_1Z+_M_Y1j6g(5BDayY?5G**A3hPmwe9^kOb=S@gAWTHw<5nFpe?PNW5WFnZO* zAsW(Ky4G7Ad(rmw<>`vWPaPtUMz~(HIb$AvJMXi~e%Gv6gI{+%zKQJB-~0Q+!`=5I z7)-5yEqHg~_3O}GRV{s6o<*#>_0?y&%leGqko>D3=Ir?L`0lfXZJ)d6MT=LgXz91K zOY5p!n?9XM{cZ7S$=6@P>z&@OpFVH;N{fB-PBb2R{WkCI`tXxmYQB`sQNQ_hSLwkQ zrOK5{Uex}a+djF|Yu{DZ^=6ZUzumnjb@}GhN89!q&feM`GB4K3eCuJQkM}m%%Uw3x zSQaa%8G0o3OT^2~%k2$gkHlVi_P>}}>d2|O>ewzO&>)Ra z;iWjSqjPtC2zLK&wqU-8{QD1nZT<>--6e~U&)>jXbya4?j?#Gx!-{xt`#Yd#2~7)HG(s8uV?L_{Oq|`%UeShlktW?_v3J>E^QqAvd|y(&CSP zk%}!<;9eSnrO9F zFWh|dSs9a%9}K=bmt6S^YGOw?r$5e*H|Se4@r`xW{*QeN-<@7xZ(;bqN?=!yp^MJH zKOesS`e$yZ)4%^?-|nR;Whc*-+pY1h{ZU(PZ25Tc)*0gRS3U=>k6U#oH)*lU;S`TG zv)wY>HMIZce{S>+_$Ot*QE=}>(e*bPIHeA(m_Gf#glzDO-qusnx7_qEW(12K7rl5Q z%#nYC!Oxz!$QNI&d%7-0q+B^&bim#F;_Bso>$h!N_Bp_-YgSR`8$sph`FwmDhfeOf z)l#sr^q|Emw@vRsk)E~Z_g{Y9KU{Iw-fU?OWPbLmXXjhze{Dgf%UV|KU(OMFCOMj| zI&E^sRQ{-KTkpN|4vj7Ie0qI?W%w7h>s899qb^LiR`v7W+&ikaa$0@&re*I5-?#TES6L;s;!K59 z&Gv}&Zd(}fNpacAfR8V47JL!AyLZh(^Ig9c&om~Sv!7*U_E5)~*Jz5>!#QVEf5m?G zS6R*cWU;dJ?y9>Um);1m+dAmaG+(FI6o2hvG*9B$8DD$(SKD*<39+Rw3O}&*`HQLR z*L=*J@3}+x;B?E6eQV+xJXAK_nPB^?@XF7Z3+^bLma~4n*5a>k|IK@aO;um&1gqCy zH#=VQ-!CsV0My?;SGMYO*OwrHT(*!WN0eQgbUq+8-~G-PoRXRFqIY?p?3CNxLX}Fv zQ!YAgyuHchzz%h*SuM#^|d+dZ@WsebinSK#(t@7zK#N`u6CJC`eCa5r)~3W)J($R za=X`g`_G$fW>;vu_ebkJr#qF;=XI!wUoE)TT6FqfUTZ_NRZYaG5Sto?kW_pIb^ z>z-&Sd}fxnb1R(m$D&wCwDXwb*T1SVH`(_6k=k69wzZJ$*1iOpQc!b?zv{Ho(K{Ej z*J-S*_KpmD!~4^IiQQc7J2hX7mhVxqY)p5!c*KD@_~t9m`n_DUUw@hqDej`NG)rUe z-V6Dwt295P-OtQ><8{CFVRFbkcF-XG3jg?H(z@)YZXE}=YuDYq`^>ZM@#S3!UlvSc zshZBZw=3O!E2y+*+J2+>RmHiMxQhiXx*o@$O24{Yv3+NU)&3VdOB>t0e$05Byllqx zsxr-jOLp7mZ1k)Ds{Z9))yvA6U5{UP%4qDl_pa!;wFz_>CH&_#*2Vn2Di?O^yttZH zbZX!2=wz$iL3g&9FDq7?W&Uid#tj!ku9p%%|FzVazhD1VQfSdr5Vv(};QI-Gmn5B7 zEgJZ5X*Hy1Kf0Q&bLQFClTIX0@0k2;)0B5twl-Mp+Rm7%`@naPf5Mt&S4tIOZCc%T zpZ(BFcB6XjmHx|))MP*A_Icg3@rRqxi`cj?c~e8pY$C;C3=K~&zwWVg)6v-1Y-ZC} z&E2T&lk?EsR&)0&$-SyuFKk*I{x;n3i_tM`ZCe+mEXMc>J?@&oPq3oA+h`)k zRGAIUPTxd3uC%^bdSubtW@y{?tP`khyJq3$kK6Sny7N>T?;Y%|`Wo~!Z*^a4yPvLu z7Nh39 zm5Snv!^NsN&5k|3v10nuhW=@b!u{vobGe~)-dR&K>y+vy_nxHp4N7zJnv3p!)Z{wW z1Zrlff*Z480nhs5F3FhqTc}^JQqB&)(6#34CyeIohp2#~hc}4(LJHWW(zP?0-=EUm z1s?pE&GG%HX`Q2`tcZEa_rtH7_P(1bZMzp-<$G?;YIAJ?^QpyoL9NisqpLTo-S(+v*x&@?pez9 z&Bf*3>(J=Q33nRihB?>o@7NofIXih@z4~@NjfE*!1JbOorn**Xc9=11Z4wJmIkC%O zyTV2;ZO8ye*!Him0S*JvETxq{@@cH;-G#f=0tQzwo`izUI|? ziDbu&8(sTFrmW(YT=?vZ!QpeSF8RxSLZ;QHal(gU+=m+#!DT`S(!A6O}O=d&O4W4_Ir`AYLP zv*wuae?IH-#?1fI#oN0Q&McqEQpMgGcl7AuC|f7@sK)3wH&-*Reo~OlUur;p|Jz)7 zE%&iGQl1OSCt#LVf!oh$=_DVuee=nh|HiEq;&yKr&fGQC%kdM|PWQ?CE1zqvTwE=E z!GB4Ad4=$MVUPEL$L?Sq-+kEk+OI}KPDp6L^(Ry32 zeczobevoZf88YW;bPF2S1T{i=D1xA z?_9fWEO!v}+wQni@1F>3a$K*&n>SIoG%P(4MzUdr`WAJ(`T<`nAoV$uce?D){@0mO+E7!Hl6-xl*(8VeU3;#d zhIF7WuAlF6Uqr`T)?`um&pS6(i=WDF5}5L_POy6QC3u_crr`XDxK9b+KKg|lJiF$> zv{(C6c3A1lgFl3%wms5kUHZz&ZH1-nnGKtFxmOy+9z3ucUk4tvmC#yKOEnfH}6s|d?qSgTJ!l>@oJTHFZOY!RuJ=^7xa*b6`YlYP7sCIvr{#dR(H_K;9@4i%?_(Njq^MkhU zO$=ULp8nD8bmJx_qc2%<&t|VK+g>^8zSvehiN6^tjrW#1tY07g@|B>~C9U=EBEoOf zx~$JIJ@oAHiK+z`4jtQlR#=*Z!M`oF4`xp5zt{I!W%sr1dJ?vvZvRpTjQ;RyZmyRv zCN6p$>pxp*xAS77@7j5XBQ@u@+&k(me=9U(<4l>YKXx56H+m(zX>tfpt;jL5ommax9~0zfD=EMdtRkWe;$zSqSa5JAXktxZKWS!^@@f56NEd7BPJ`X?`;Q zv6V}B6W?Cl!kV1et8&4b0oG&^F*Mg+c3o-e^F2pq3x$5|e0Iq(cJfK}TSmvl8eI=~z2m!@*up0Hu>tW^m*D<-m3wOfNrDBqkZ7qeX4JT?*ZJ~G z*6rw%V5Bas^ThSP;gd=yuBqQ^(|CI|gf-a^RCGmU?|m5*%C9FJB5XeU@v26HWLRVt^fMznNGQ9e|y*B?N6iDXG9w>NLm=NbYoY0qW-Ko$JA3^ z#9GS<7`EOkf9cIq_RVyfmFQkXZ`CjDVutjk8G(DVK#fF5Z*+PTq%CFDs_mtIJ4pWB zm&I>c=ekPvzf|F$ThN!+g4#@Z^ zP@G>QFn=Ded;Z0{r=_YES1TWq;lSFW+V}6&;<@V*be2tAGEM|7xlZ540x%R{#x%YbOS;PDLCr67< z3Fusvn2u;x6{QQfHm%`9>Ulnkp0H@9%%a%yS+!T9-!1b&9VhgZK6HEaORi&0plW)< z{dC&U2W|ND6X23m|oidDP>nvWBg{Os_<1`Q?k8on6WypD8aR&7(O@d z1lf|oS|y)vgfwypKAr{Ai_E$rzVAb;e&la+PiDwSU-Liy2^QP;^ zSJ_`I>DAJF9V~c6AxbP`h1P8Km+Qk5i(?IpUN><}{URr;y>}yQ`u&$4k34kx-L3YQ z(Y*}IfH3E_xU+|Aj0Ja}om}%}o1R2%o{DT${+%5kmpAVH^=h@l`=pDje^iC6c7NgF zUEF<_@qAN8v9`~PskcOrZ;09U@~6{jn|rzQ?iJKsEPl%YDUda$H6 z&oX)LzgPY*{(imm*+}&Gbz#eZioJK&{{5;2Ds&G5@J5j#G&%C5y!`^?3N%G-MLPj`u(o%Z7EQe#lbSRJBq^UTNm z`@db$XXEE=+3e*ad-rxjol@J5==>J?pbil>V~HGNACajq`e+yFVW&lAxL{;FypL((E`hy?ixr((`7ccI_WB(ld*Phd4HMr`gI{+&+OqeWdmWC- z?|0il~#U%Sq_NCs>SSaT@?(W|`l zaMPsuM(p>Nt{1v-^LoUqD_rlewCQ*kO=PL6-hOyz1oy|yN>~3KoBLzCAD8g#tD4+f z=C9_QuKI#^W!7PHVZZi!b3eA6Q%jtEb=4}Fk0)f$7C#>PE}v9Fr7{(nFRry}#^!Hs2$R zy=htIuBMCcK}%2mR`0EmN)dYJBJj8Bsqf82EHid$R?hQVe&kuuqWnWg<8FuEe;q14 zF=0o;+%WCWb%ND@FXCqt{4#6dN6_lfHjr67*CtACklM5C zLbluS6KWtc4(>8yzQ*=N%EF!%Y}*>;Y`L#YdkrKui@%qZyH{OU_p$za^C{We?Du1@ z$}}8o0MGn49%ReD{!Z3Ut^NDDty~j}|G(wm6MUIJFa3C4)6|XWbzZC4=UMqpoW?hw zmo3`UIDxe)akcNg!~Av`u9J8^OtJaCXYXG}v+C{%x(;_!;}z|79rSt3^1(-$nDCed z?5_I$;lsPDw|@(NUjMhc{{IHK2XF89%{45a{eNn`*fV8?jal+;i&nndwcFqS?!EHn z)B9^aOb?Z@yRzhmfK++uo5w5X_uV;rNdDgo_x4XQZ#*YuUVJxw{_10zmk!N8SIhi| zg~!YR>?m!&xTbT99&Y!oJ9zN#?N>8jwfx-d)MfplWK6$kE?=J>6=}nRwnD%bCs;Zy+gIjNlb3SXVXB_{hn-{&4Pql31p3wQ(q^kH* zkn@!Kyb6CST_a}3gd16qMRW-p7;nAkJ9y6b_jO<9Hf!bLbAM*nFY8Et^e-uJ^NzD0 z&(>D2`j;T+U#i2us$b>%gynjCho38M_m2q)6_8IqHd*D8&^`IObwcSA#6GFKJN)gZ zticV1vkjszTGwh-M&6EVdU(}3MIon9blykC#Vs6%Ck8v(1b&%z{we#jqmtsj8~=Jc z^xcVzS5@c#|HIwx(=m0=C9b>U>()u7PY@H^+G@C$uX(LT)meU9d&cIq9kDwzY;XS6ic4A9X6sk! z$LuH&0%wp2_p}4EoZe60_ho7E^K-d*c}mN{Szz{Eo*>=`-nhjtV&m@{Og|6VxXuXH zbAu->A!|a`fnEDH3c9ZUc|OL>9G=^}i?_S!vw)6!;}*UEI_}L8+*V;>1Re7OI{XbO k<3iTELo=@Ss{j1mt1BLUaQ`aLz`(%Z>FVdQ&MBb@0Cs8wI{*Lx literal 30751 zcmeAS@N?(olHy`uVBq!ia0y~yV4B3hz_gTuiGhLP`_$Pg3=HMZJY5_^DsH{md%Hiz zz3#c?|MseFSA)z?CY48vzdF{f8>lDdIZ!qzc)2;5d=FESY`<0z} zvrqHewfAnldhwn2lH>L#3=9m#>bEOjeCPAqR(-p9qgQJVGs6L=)87(S&xrfJjV(%% z|AfcA)$di=qW6X-f4aLjhna!l%;p^F&+omqy;hDgs=i$&<1WbB7;{zlh2#GHvXkFh zeSG+B+25WR;y% z8m(i+z`(F2^7b~h>5orsQ{0%k>7-jx@~&BL-9IaZZ2oC{ZeodYCHGA|?b{);wf&d2 z>-+(QmrsHBtp&=;JEv`oTH=0hQrMC8MeBKgKWnkmPhsD*R!INUw#*Y7QY|?`j(1Gh z_f?jGAz{hZw^!#`&VJ*t?eEb~Ti6eLdit<2fsKFGol;k;3Aqb5Rc6j!tt|0@{qI`S zU-AqLCHl9YUCJrkpndaNyomCKQzJ@bm!S8OX?=a(4jD$Vm|>)RV|Ph@Pm8!`9IO@n0S zJ->u+vN1Gt=6hZ?O6K^fu}QWMD^Vz_B%FopNYrKR5I1v!GilBw??k{!AYIr2+#w2e7_ zxd=4Bl3vJ|?YWCr*Ma*2QxeDlHn;1hIZSY>ndiuTfoaQuOWPPW_2vjmY}oVR)$Z!* z_xq&m4^8mp)^X$Z*_-blyY2iP*&}y7%-uSU_}H8KIlz%4bK^OYt3*d-{FL%I|yMMJue&6Mgo;NoqUmv$gv!@8-&@T_XK# zar9=JbzQm&r?)+{u=*^!xAa)>wWxUa$#Lov`%-sb*FSaVs&7N&hIf~?RLv`GOqJ!l z>9$Q>?{;MQuNTT2y?wp6t&iPZc9`SU`ID#0Vq4#IamS^1E8i{-z5gxY?&Md2#e(kM}Jp(W*vw?!751y7N%B;o@h#m>mUcIHtdU|Mu?wn0h(B@;q7L zCdpod_J>QS$5s9R`~Ck3zE>Sq?~a7jDw`y{%rlPDsJgs%?!tG$mG@UKOaB@8|HKig zBbn{*q7Uq<3E8{4+vmFBf2;0on)U#CW?zF1=BCb6A0>dNT?zhV>ilrq zZ|3A>d0F!;&zmjZkoM@^mC6;m_pH+N&Qx+m*D5y&*8h0_@5lYlm+Yq|FQ2TsJL>wX zEhZ9IYyNNFW7O^ybYx?$sOBc!a^>%j4E1-OKDc?=<*gixwYRUh89edrs@)lP!{+yF z)Utx7zLe^JJ-+@}|21@r%X$W_G{W zX!df=zRNqf)>!KkVL}<~TVCG51%(r_Y;jK35*>GtEHw;ZgDUKM(oqSC~ZqU2WH07;>M3 zH)7ZA9^sPvJ9Y+_XzkbM+?yT5`)IrKcijznch9Z+&HmZ)>e*e(&ap2y?do2$%Ps$1 zNG>Q&Huv0S%6jd@u7BFWkK${CMi^ z|7J%Oksy&(^y&MC;{eoVd5FU2kGr@LDc&^3E5`UwvPl*ksEbeo*K{ zneBI9@lRDjThMvY25a8s@uFz<^CDMJBwTGkoThO-s4Xvw_jSQ)Ks5hn6g`D-{<|G{iohkR0>S411a+jZ&W@Ej7{S_nOweKr7y|rfuv*omXk#BwZ?Ad+W zRnOjz56l0w$#1=Ip%8ygD|fDE_N3gob+IZtZ9<0%JF*>}E`43>q}C2d}u&uaOgCsNnsI_=DEKpJ5cpS zJHGPG#^ZkTY<6zjR#xWNylU2}1*@Kg@B1Vg)gZQjb;8@oM9C_-g`XL{7h3fNeQ_7F zTEW$}%AflJllMKQ6W<&+@!0lX_}Re9aGD3y3TpthhQRGH1Pj_S1J_QVHk!h1SZfW; z0xLwYaBJq)xxM%8LayfBt4*vJ7!IhURF`HOTuIze`s~C)6O{4U{_D9n*nHU%xcI8Yj%danrIrVM9efgBh?`@tX7;H${ZMQn)OHEwd>9UzlhLQRv zyMM%-dmos`z|hc_TAiJ3Jw1Bq?xX1!J>pgr)$N(|cJ02tol%@yw@!)s%gMmNAbaxL zOrJ@=|Gw4fOAfrAR(#kmPgW;6@7A|3w*t=>z!G%W=CJD`djsVrsTq1u@X6J zKduHf11II)@0fdjPwm3e?Q^BA51-zf)t6%({L}RH!w))UplG@f2MP;@n`{gW3@OqK z3`ndAxiB#>%K@Yi!2&A;i-B3VH80b;t?oCEiGiVknH^*eLXX3?iKtejNRzAp)aVCk z!fij)$>RO#^Q+(8*qH1u$iZ^x54-8Cm4><|ch;_vsr~cuxP0V`1zIasb>`@AO56Y8 z5VyV%2g{*FEsu})+y8!3yeLiHswAVdw6wPN@24iVP}5My(6dt)yH9+3)aCBXbs)7# ztfrfO9-cd^ZPog7bFIJsabgd34D}6-OsO^uG*ewyz|^=Q!Lc{zU%_&o6Vvr#tMWLT zRxMklv#B>nn1kg|&FO8M6!n{PR%a>QK4I4AprCUo=l4xj4r7Dc`##TPbK2!ET~p@F z?VB9Kt(f*}r?Kd>EjLXWI}k9*(OeRn&#mG`?Z!qv&!X4kmh4&QruPU=SG{VRV6t9+YNIq~h@a`Qju zPn4~k`2G!F`TK}fnSQfgKYrz0`}r~V&Yx2YA2r|2F{;1awfX-8ufj)jV{Py5|K(6$ zd$l8G?&`^>lER)bPIa0WCAQzM>|cuY{u5sXHWZ$fpL)e(qWqjMs@IijH+$sAtY+W$ z=6sxvpnBb=ym)TjYmc`CEz0p<+!Vz4snNo7r@F%J$n9HFP0!Al_{lr;P}oLcd>I49=xInyP(R`u0L=Iseg4OLSTJG{CtG-u~lqqAbG<{aJst*ypi z@_(Ul^|^y5zqN9U_o=p>{{H>jyLdgj`?niDbw`Fv~7vPR6$TeW`j8ov))buP^n z4hyO`wFZ;)Cz6t({>-v6(8p__h#x?bI zcHI(zCow0tT0Ec6m3w|`RBLplOzFI^!mrzZ1-KQz=XvI~&2=K*$!-7FX58tUV`Osp z-P?}0cWp2B$J}GNbB}k;sq@ow+Vygxw|)JZBX$1^>$0E;$L1c&i%}2ld-=0HDdxwz zOu3rm$D;W&R=ZDl<&n#?p>4(^5qIwF)mzO9!&`N@9)xVxYc5{$_S3eBPL`=T6W+eL z<}MyEZ=2tqrpAl=f9TGt6MVm5V&A%0kf#+ioH~#3YLzsZ~=kF!E^vZA}0eqG=AMsi}_9gEv}FD!k--T!n+gl>zkd^&Zx z@ZqXuD_=iL|L^g)a!2v!m&^0trL^b0dvhnm{YvAb_)>-W6YpP{cs4-xy~&C!zqoDO zqI0(7nCng0KH;s?hF-}(drp^~3Kfj%Hq9xymNi%N?Z2yfOQxM)XZDKwc8sIG-aqM0 z2W}`Y&K1&V=dlgkw(rxsFK3N@6z{tjwx;``h2HH;Ig96=&ii+3z3;-Ny0U8zZvW_> zBB&zTxxLMPwOshN!=JyZWaqwEQ*u+RUNc$u=dHGh9bFSE^e<^Y|L}5?>~7HwSGVY# zdv-bTS(O(aH_C$T3^JR5%sacBkwV_(WL3D6MCLp%BtGNweJ6%c;(8=FVb$k zFk_k?U?*p}tmvVV&-AwkistCvE1USr@sx$_bz@s6%jnWQXB`7?=9wjXtur`>U-{;6m6PSN9Cxm1R(ibTsD^j%QY&4md zqr&gMRrcifRd*`B&osL2ce6xtmsM7D;POqi|Ni_8nXmHt`?qiJ){4*1f5US%{j*0| z#*X5}JrVV{ZfY-H(XW*ve|7n%C68)q7flVX)%mj1H{j}=L$|gqymmC|`@3}pnRV&c ze_iuA`_rq2=gj?!X)>BFzrN+=c+c8EumBU;>C5i?(BHIBeb%wN(SfNaJ>)bUD!gZH({Oon@~hmskj=%fA~T~eEjd=R z^jeyEaB=4Tqp2EVhr`cid|eu^wPMFRes#5ZcZz4N@7or(&hx~!#8dkoa_kgc7%X*>}y{m}A>@ z%`(fQ9KS~|WjE9 zsZ5)Cb3RYovO%fzSKU;-w#O9{XU)HrwK7Xn_d=nz>65F4to$C^*7lzLC$eGF{V#XE zH@Tem>btz*;;ze6_}zXzTfX9){=J0$Ox4@z=jYWXaW<_|gVz0bSOT}nSHIa9yxecD zU2WAy(`ax5UF>F@&z0t%F%Mao5)U>>-Td?L-HC~!s%h%}^J1c-t#>Z~H7^1}Kc6_o zwQ27Ro8Nbe_4j;W61Qx0h?r6E=f}tA^Qz-yK2DjT=~Yr#DCWHUoo!@TR{daz5ot{lgx1+9=#UVWuON{*I5WJUo+~Aw~LToXpKI<=+AA zb?1Mq+MZh%cq~MI702wq4+B;ox^?ZqkIN!GHgo^+ujvW7veuZhwXkLRk6`!P_r55% ztXh1sJFDICzk1li(2wh8d*b#jLqDDiB&)^x~n-z>FI;hSurhEwa5T<>*Wyb))o z=w4qHw2-^;&O3gswWt2cL_FVh|5?1KP=%VW)0{&hTyIZr`=J;$S0psJT+ub$9GpC06Y;Z-tweX1C_Q6PxbN$Slx`KfCtpcCSf$XYRE$ zwGTeZ>GPWX{r_oJ<*V}}I6l>XRzB8qbB^0~-JPXXwX2uBTRKO1o~w#sFoT7{&9J7w z?Ufa;*KS{?a{Kqw2^*@dmFE9z7g<=F9)6pv{C!Gc7k_BW?N`6QTuEy@DWVg)ExWcz zbVXk##|*pelYSr8Kl zygPY*Tkw(x3d3!w)Vi=yLWF#&bfQ{?_c)tSHa)DPt5h-7QQ+&!H`=d#d?oY zbjReaA96B%RJXr6d~MsFTeh;wmDM-D^`2knw0uR>M)d=Rla8+zvziq3=~tTens-On z-msX-bl^(r?Tc@sb}rYr{j;6@Do^G2xxZGg=3k}x^IyN6hSL5pd8ubcZ(hx`S~@A+ zdhzX>;^EyZzrAbzE){h8+3Tx<#!XX~?GiOOCF7yHKD!c@>h3U|rPE&}bWMyos>Ac(*+(7C^RMEL z?Og1)Bete*`7+^?{({eUFOx}=%1@749(LXPpPB!{eXbg>^wL%pf8S?XY`ALvOvzmn zb9421b3BDZ6LqJjC9ivV>-=8XxX$d`_jp?hgas~V9{yu(dDHCsovY72e$e$RnUx)~ z?I^E%tnd1LeRKEM$Sn91>AktKY8k_ZC7WWk7b&lP)Lzx}kb6Uh&pN()_e#?~2W34g z+Wm9wW}f`iB}=Z%oW*`ht?qS=fUzidOwH?QDjQ-GzOWxyBe~7A{ablEt9s>5o|y7d z)y>DYS2LW6SSC7ca&P5wW8U6$!(}UEOu!Kj{&h~;P7-#yx-8+JKU zJ9GWaIQf_P+fR!yOnCd3&C_`Liocb`OBWo>+`F);@yZm-y?6GDMFxIL{at-=ldIRe z>xMPY6-7Kd=4;*Clb3ou;Hz?N7H|TzKDTZ6PqjBr zlU)7!>63_?P4~_8SZ2I^Ans`}DcsQi+~OQ&hK2*v_kCGS z_7u`=)?9k+@f)X!Z|0}vu9nZel$Bh0w{7co(T7KkCfXG%Y_eVWvLbzxu9+IcCf?Y+ zs%wvG8!$ijyD8imJTLCSSDmMO)c<(xXnA$I)qJYH>$YS)&qt{r;#}))R4~u_S|;`K zY5B`dvN~lGt5=+t_!rXUa%Q&BbIs4EK6>uo9yasdT+cnV{L^oGyjuSJ@cK>P^OcWm zexsDiCb#|I+Fc$?xh(PojhwbI-fYW@?c`WIZ#nPETbau&P5o8Qal6%cZ~EysX~O*} zA~&aT-G3plbglO!56L6jCrjy1xNg?=fM0#D{nrgYnP$H64@_I6zy9mJ4^=m6t$UwG zFU>l+@a~dxb6Xy-_Wia{Y1@Xbu=`7Y#@;fEY2UN-XKuuFud+KrJIemtVpO<&VXpSX zbt%>in;E`Ir{CTye6~P5jjOWcrOTwZ z9{pW=3gYU1&;BB3d((N=)wgTUiuLAK^`F=lul14lL!DbwCo99vwwWfA{4WZ3>hfQ+ zxfeeDV(*iQhuHI*-3mN~0tMaK_GG1X|BAkJUg~?8(mG{{wBp=-digqsYSVmfe!K3q zigkLz{f@kceCu{>pY+yYWy(!H(YBjr3bzgB<=kH9;$&xeE8lbS_a@&f!kvLLY(8pD zKcbtdD6W>L_wkUoJ752kNh*0N{A+V(n-$c1NBz3%yw~mB$!$+&A9-zjZrRR`i8e`E z7H_2IzkXSFroF3talrpg`<6?d_jniX`-%7QZ=>sd(K7wday*+&}p)etpm} zT!}L|=>wxdc7~nIyw=&p_xWrlhVVE16jsoby`JyYr5JTja)S81ncI&2nY(0{O6IJO zvwv27u1-$6{*2L}{&bwFzPS03*55ua{g2+9BxYpft^H-%Z{gd10jkm;76zFuUO4w_ zuiqJOU$Mx7-APwmH9}7~?!Gd8LT<m#=1krw+$xc z$gj{Aobi17lF-duh3|cur}w?s`I!4yjRi;Kq3uhy{=PficUz^ml)~);r+pb2Cgg&0 zGHA$bLhcOh#pVg>>?zV|cc*qdh)rI#&*6{ljYjjiJ7;g7d-v8)=i7bG6AyDna(|7Q zythil_Rdz3b&hT&_LGAyA2Z|GS(^Fv$e)mEh257JAnEs>>9QBxN9rF%R;8GI^i5yq zJaNjJqg7igGG}SDbia{Gk@;@yYwDYExWYasx@YAVhk1<5Dbl;DyrVAcJ|7pfLT6vZ2|#w#p3-y`TdrOkQb7V|oeuTt*Yl)bhotaIFDJZZP7?=I<# zqSu$MdD#7wJCP$jA@{|lsT~_sb6@RqaG5XpmfiRILXSx~-e08>bE_j`ntPtsEnB!u zGxx@eYpFgr=Q;4FNbRlMP218Y zzumS(w>Nvj#JlI`WUk44Z8qiZE*AOE)-&Wfa+o*q?#W|4#&TUDxcND#c(I)PmiY^7 zlk}vre9!FHLTNJJjlC~2Ly|>~Gy}s;H}H_A14!-6?Y-s4V%C(YzvDm7#&^Q(ftQQK zr?$gwjs9I~Iji|Zt)H13x_$o611qI~={vtFO!_6fB>N%9>|1JEp46y)WZnLD{>tL$ z9@+GUoWqB93kiPq?Ni&mi9^)-%cWCCrYE({sXyUlkuT>WRM&L!+%|P{>-h~i?NL3? zcQf2&EJ){afR_(?tJmX=TB7W#s9OM zkn6B5ku#=~NBCLU#z&RLCjvIQ-d7a7`7PGHWlsH>-Ry!lixT$#-Lfw2@4UCa)~0;z zkJ}S`Mr(6_U%eOn&ypB0gi&Z@3-oA+HJ)7)vGvT?(MbuMaKRdt_+zFK_hTjKej$C)Yw z3U7xQO)@{V?WS-~WZj$Cr@Yb<-Mi;UsqMW|qrCII*wNiDZB%w%+qU{;`jejliJ+ol zL(e*wBQ^ZnJJfb;@|d3c{^aTgZmxr+E-w=wonfjHFub;Bu5Kpd&2RFnCvRWEo5~;i z=vGWT zefMQ&-P%)A9_$3gif3%+gKx=o_a?RFe4b|Fu&wc?83SlW9o+fay(zZkvztYD>*i3< zziTfZed z&SNQ8?)18|akt>MZH;FZ_uHMyk-j-EIb7*$_MT1QeP6sHOZ$5M=9s^8D=;^5yeYT* zXvKt_%+%Rib5pGU>Sk_!=A|-y`@HXL>*7>=@AN*%OF4G8_s7zyr}}f0Z=W#RBsTLonfu%Mo6k<6m1T=8pFO&v!&0ui zLwcrgxpJRJxBHA-{f{}f1M`;NJhN@$+sJa&ptshSC4agfyEmzAw_x@}>2l@ZLi0yc z!fX!RGIRU1JnN~RiS*59j2mv2sXkiAb$jxg7cOF80~5=Y>oS*qQoennOzz$}=Iq-i z%p9zCNLvb2uhvkYQMmp-ZST;FHOk3H;L_pnZa!~22eDlNHZ{iaug$j zg4XRllWT6K&UR1`;OG{gkjuc(u#+8Me_Ueb)TxX6?f?ByZu#c8b#|8RE&&FG+Xl90 z?Mhx;c=hVluV24Xon|kH^4U5&Ywy&>8s;Eb(JM89nf+C==RZR=U2Q8-VQ|=%D5c^3 zeyR8LdCEOfA+J}OEm3A<*u)z=DL3_vYppxqs;?7rL8?}5ew)s@m@Vx#LqiVprrsQ8 zhBI?>;w$s(|L?tissFsfT#>JH?$n&DaCHsiC`qKeYD2fXu1C@cS7{7^GBr@r1TrCKlT_RZS!@7{J^ zjrBYS8fO=M`04N7y}zgTZ{_(Hxp=9uH^!=pwe2~~2Vzc@S!$NBsQv%`t@&@#r?ty& z?dG5Ltota--Z`6}7k-&ob#G-J>m23Ktgp`_td8~A|Nrio*?x}q;-j5Su8!$*t9FGJ z<$gKme|~G^{0NV)bMIQst^dEd{{5M4!kf?a-LUuFmGj*F-TNso-`>&czk2zjPMKJG zdir_GNy`^6J~zL|`jl=KXeO>$=k`1v?UOh6#&)gvxbxtd*_>0u7W|5N9=71p!lEwy z6WeC=)w(PXlMP>e;?vGX)%4Uq`K7y7F1XoMdQYu1F=V|}mo}K&V#AUYt_bcU*b3S!{dR(P;`}Nc7p{LI6{45Yx z^YN(szYpzRo3HMFwOPV_tK24DhHmxSKPPS5xl-#WLte*Z!ID|G+H~ektx!=-J0fx6 zRmtn~H5Y$XH=fv^kmEs=jpzD{p$_Ngwb%yk6a7so~8V z+f(PHzFu9gvSQP}osDZ|`)$8{#Bc3{i0~89QYVAG?xm>Y>)vk5;{U5`ZN6%A-U`#g zui~3{84TF@8(6Qmv0mQ3G5A)6kLCSFxf@>3a(}Gad@X(N;_bz}N0ld@+*rTvC&TQS zfnQ2uCGH=1=d?oPwth!tNnCxulLvOKc7p> zhsD?bNGv;Iv$`YZXw9YnSr41CY(XjcPpS6iZw+A^%XR8h{@#(S589J@Qun5s!fl2P zJ)71pUvkj%p2&{9ug^XEtNil$x$d0px|ZM!w~4p7dD5KC>F4bnB}~B?is5FPCTOkK zT&vPoUtV73_`m@!4&XUk#&Xl5kmpZMPR`EGPUp;R$}+r~x9V%(nl%?DGBDh1%hdet zwd_v6z%6zYX$DZa0~rBCu)s6Ch*3f4Tx(lp`hWiYt6u0FJSV&2%&hL6mReciPdP20 zJpIJzur2Y_p0ED%f7bu|uCIBeeZjhPzGGX$FPwQh+Dt}iFAfM-nUCy&#V}D6Ibe&8~^X)1NH6Co%c)o&(d)7p;^?Z9Ki`l>3>R-{#(u z-}UR7?}eOc^0g04m+7s&JEN`O71QdTvV8Vc-)7C|xZGBz?D9JAzsAA)ObiopXPgQ7 z{WG0!|A#XVPqbLeFW^nwa6~g$Z7s{ukH0#EZcPxh=$^*^Wvj&XiP={KQ|DYiDW)}b zx{AqjZNH21B_EA6R|Q*3YHaX`?TMPX$>{mohw>M7lkYiuaB{g7t=v+VEVWwn*Xn?) zPvVbc9}ZBiC_T@W_V?FAh|Nb#F!M=iZ>F{JHsl;OS$?Z4 ze)pfN+0*xj{eS7d{!fW>5kGq_)pO1l z=h+)tGLD}0deM=g@?H4L`<5V|UuBk|TVl7qhzT(ZF;x^?&&w?NvvfPR+F!AM`MjX9 z4b!XNKC0gdys0;>^f24iSH+3R+qW+{>GtV%Xw^@)vhw!uX-)aLWzQEJ`=*gTdHTlt zr@Zga-MagtO!kHfl?{>pnX_jvxT$kdH*@{b?JuOIG{bc(ltrVMI`l z;>vB0qMz^kw)S(palgyFhkb$Xw^&8|S(__dHG@mo5LDUzUAgVjoBE{FWvizzyL)f$ zT3OGkdecoH=jkvge%`^kmIYLeg4b?tKCnl+clF*<;f))aL0V0Fw#Q2CKDb=-w(x#+ zgLx^@4Z9_;-DRAR8A~6CTBb!ZAv5$7HvXw>Nxdzw^Y-qa)mF~yG?nVSj)Z2Z$7_pgF8dlZeL{853iiHL zHk;b{PlvlVou05@_0%Os2DjNjU7v3$)<2eI-=6R8vh8$cUeoLeC%E^wtlaSVn~C-G z$-Z&6N~s+c4?et$(&3k1ILUmUW^6@zwUgw8T!s{BgGuHZEBSkV>w#9Aw+<%8wJ$aq9y(f5& zhs_%`71wRG@v>LL!}RWRS9~?NS0h)!wx*Sx@ATpJ2M#(1xp&mqPYh!#?wmWlg<0YD zhBN#PFM9(G%O`BJ=hvTmYHr&-?z9~nC-L0nbSt_T-fnpQ+D;C`z14g-Lp|>ZZZ&S_ zGxKXYJt6GhiO2h*!46;0$oca#XzFBQ?u$8|Feb_Z8pwzNq8J4={|G1`dUXpUs1?Zo zvLB`eVNb)x)as`%E*_Vw|0Bo*S~q-*&nsZcngwSkPs+WzBmUo~#r^ePvl$o|<}OHi z`r_hx<@3T5b4#ODj}j)Kyr6~7JSVrUICa7dw34}4 z;r6wh-#_#3YN|gf-}iNoq3QqU_p8?R{9Jpsrq3^(m4P9pdRotu?Acpwt`}~5mp5sZdTU@Enx#MT*J0p?Lg4UZ}w^epxH4d$GXT9 zr!F2B|2r`mw0wy3)VE5e#)OvF*Vq3)wf+y+TL*<74==jQ*DmFH_OUqBBAPXD+teAd z80(IFznX3KJozn{h3Ozi7Ee@U+2RagVyjp zet3O%pZ0BkAr2Ph72fYoOjO>&-1wl~Fg03of`06-FL#7kLeF*>i>AzWaM;G#@^eCN zs&gFM&9JL3+c;TLW;@KVyjf?>zc%gmc|FG&=W>1@Yd`G&E>_Dfe%JSt1wS70{?bT1 znRTWAEewj>Fp=} z*Hr=6J1TOgT<2@t@L}P!T=&h{Pv_0cN%#75(S4DWzc+mGcJqX{_rDyQpL0X2Noqrm zZ~6wMGdt774+iFWZ#!!jzjE8J_;}%KQxoEZj-|g=QW6kz+~$67QrW{pt;w-1kd-|9 zwi<{0f8~62X{6lO{t~IUs+UW@->?7Q|7n5U3j5dVLrm2*Zto9i+uptL#o_JsCpq%d zozJ&^O8(|4yCO+Kp0i~q=l(yZ_y0M_F8}8SXu)@!OMvpZhlkr={}8YHJo%B-2dkRe z(jW3n?A_fR4l`~W7;lPQ@oi&r)b^{(AD+|w?ET;4`@(=c_sz>SZ_oep>~>aE0*{XP zt4Jr^mtSuj<#35O^Wa3;(%V~Wu5aI=rE+3hfuJDAY3@{s8D zm8Z6uUYen1mmE6#Cv#$D%I!UquTF2-SGhH8{p#+g&b0x%IyhP?dAy9|Rv!vql-RUs zt;>x|54`4G{eSdHb^7w22lA0RH}eE<^teUn-Bc6cs0_%meU=k_G;-2*v$K08fqGvs;+vwAC%u4CkPyy@>bbBEQCwle_n|B z@pN&M6{}Wqt;&*%jGQ?or~4x#1B1-5DQ|sth8sPN`!RcVM;dsT#(Wbmq{PBo#Di{rc>W;U0YCf@y>&HS!GMEhtL0QtNtuYEPq3(oBYi;))%jImbTd3 zd~@4otJat57*_^{&nmaIwcX|G|9m`J$KVqh5Lzsk^83u)M$M(^@AAHSeGNSr^1`dO zxB1nbgJt)-mZer3|K9Q}(~^PV%;X$x!{GG_F_29ndlo=e9TY!(aq;EJZ?o_J`_^yw zlpldYh3#{H~IhJ5@PW%@QtA75Y_~^)&C=o5OvNer=j7x$E@K3dzd? z3AK4k@86p6?#zR;TXR3^F)}cug>Re6TPc|m9r~FeWp}_km9u&Ca004{Qt#m2-0Kce6Z9NV~24Mv;GQ?sKQv=a*D}J+jL#FPG1J*~L(ntpe-v zIY8Z`l-;QnUqOQ#@vhrqjcTWsPnzyD+r8j>%lA1~Uq}60`|`&H(P{>U8TODRmyaog(j1ACrtJG(ah-JY8jJ6?C>s&5yus$R7_ zM)3MUOF;&PY2n+Hz24MxgH}~I<#bL2GauGEaW{`T6<$SuPR#w{I`cziU;JoE{+;6rU#l+T!MYYx8-t5&}T$9~c;J z@}1uHmmy-=d9NMa_GM+?d~UAWSJ)~Cu7Ph)$$gsk_#`N*AQm4q_`(EkFMNyGw02(= zWEl)E1H)(C+poR^qc4DAV`#9P2G2tnt6q2+7>adn&n#M>a_a91r}iE2{L`&+d**4s z^VK&DzO$trJrmP%^PRQv|Aa7;<8N@XGMYnQpcyj3i?Mr{pJ&X{WkegENnPUC@hvu(WVU9wsj~7^#Z@4Sp@hHoR zEmtO}mm{*$CDd<9Zgk9E>;4B0>p$z}S-jd)U|Y9g)7&4;pB96%uzqXK`lou^o;q%r z&$-E%@va&B@vA;}u65PVy|}sPZtaq-InkeN`f{wj?$}&-{kx}V)!Yb!8GSj&>jUaU zK+9HAC%k=N5y8{6)!~|Oz;U*D_2-`5Icl=SsxZ5HMgNv5xsgWhlioh?^;{5=>Uw7L zgtw8Caz8IWxz?r9z{+{OjmFGMnQlM9w|e%f3b#*u+jDZ;()I5OR;n$insO%TR&so0 zUT)B}?upwXW@%4ZxSPfP(3Mo{`32v%@7XPI&_ixLpHI}bwZHeoEcq$$qE@UTjpf7KJ#_gl8U?dy4R?XSzM$k4N2*H-sU z`OP_FSx)%fqKsVblB8dEufD(ZXUc}0O|^f1bUr@bzkkDphZSOeI`40l+0A*%oVs4_ zXy*&NNYU-V<2-}(Eza$?TKt=m@lrsP^%9Zi=kopxeF;j{rKbZ_D7E|K4N~_mt%dh?b6GbZNleQ!cCJnAj5+zv^ z7N$hsoG{&STd3*8x1D|qmu--&K6UfporHCV7<3NjfYyVb*~Tcwll-)`+5*&h0A<*; z0C0=x%#%YWKZmd1UupaN)z8TXEe^i7;$AfilIbRX_;l>+b#2GG%H+qXAUzY_ZcO=o zsFnM;n&_0A{5fTPb5}gSzka^;#J{!gvP@;q|DP8C%iMjfm!)^AAuCzhv%m?zW%o3(>W89JElv;7yE9xb$#;FsjD|CE$UynBR^odUgy?k zzTeB+e|^0>&rEsUUYq*DTc&S2Iyf*K$>pGFci{CBLI3@q1 z^X?(>qjK9rF8METpCov%HhV{@zh=bEAHkDyzg`9J!V!<%R?Ob9Xn(G#%26Y}RmJSL z|2DpPd1=QPp*HoM5+^TiF@IV##e8#Ln936co1;s&m#b*At=~D%>Hn8f+fUhYJ965s z{(Eei8(WgJ_tljn*%vZ3cD|gY|C96neTjcpR837q{6g1uN2lm3U)G#sD5199VfBfB z=M5uo+M%>Z#G|)e|0G?$^Yd3@$FjWq?PvXV&MMut^-=ut>$ilPj;)i?a!WFKzhmDw zDea_bXJvl4O?n&n+}|MVcz}KR&6{Z-w!etj_V%>zw9j6bs%qmO%zZicZb|R-KU<`{ zvLsKR&Z=!K`}=x@*6v<2!<*N7?PYJ;&D$IM<;lsdTeoiJmI}EV!WwEiKR)Fq-!ExB ztNE3=BIa#&@%WUmU4^8mTq+>Z!i>nORE?OT@nn68(DhHPg3P z@4Fj$CkNe>N}GRPSkv`-T+9ab*KwCs<23y~N=4sT-6!p?ugbHn?t;A4+P8NPzntB_ zE5vEypVeL^WY6kW zTUPYqFYi&u^vli>&7bA>df3NvUFCZ9t)S4jR)?&b7_U+C1A(=i2mji9+ks6+bn7XFR)2SyV7z(`{C+`ZXr27xSmJ zoGw=OJUy4?^tlJKyZ%tadwh z*D-C?E9ZryZmj8(P)}`KtTWr#|3a=ti2IFNp$CcG!Jwm#ArPty%*vo5pG?pV$^WcVg;o-PzKYGd4EtJ63o6Lf>D{ z6J@*4W}GnFq-*n5;hl>4d;hz(58o-R%bxOW%@p6-5Iwgdlka+tw~pwAEeXDv=6!3* zuk^cr@A%sKZh9M~^VP`x#)-^y^Uj;wawdr9v&`*WmZ)N`ck+}<-ps9cJu8>Ilv*cp z(L*jjakBrkHIbZEPnjw6)BJcK$1tuXXj@#x=>UMwg zyS8kp@2>i=$LqJRTpqaX>=hR29eb9pxc6>}eEFNOZEvl_gr6RW69}Hx<-PJ<(duK% zbhdB0x5fHaNpHB`ZT|QNz8^}Of#F%iwyBIiFD>;xuj?3aHDs#mHb#boeW~!uFPDKK zqUGkd&E5htauK~B16N2RdTvW^`S)-4?sELK^b3lG75|X+IG}bbXy&g}Nbmmr+q>&; z{xtso{h!}Yrk1(UPtBj+cm1<$zcnYUe(~KDyYlPCXzRnDJZc?k1KdyBmvZ?9K`PDG zoa@W`rLP&UjV=FY!ar?({XQBE^y{1*qj81I(Smgee(WjzzDkVeLq}{gzO&6uhD)aFS55~ z=RHw=SuvTFj#2-=Xvju)?!R^LQE6Mp^%Evd?^UkXt+=*EdrKDY&iylerx%?3{b5yc zinYRR*A+*iLo!mTMT(XeE!zL~phHP!di9ITdLLpeO^$Vl^j@(mXJ)K=2-oLP`zUow9*|r_8U%O7o-JN{8D6UlZq+`m{{OFur$Gq)A z<|V95FihP&;kK4Y*4xu%%ie{FJY2KL%fHO~hgW_x5z~1R@5>pK zDSLAH`*&5or3D*G!)?6RpP2ETeeWlospqm%kAL5lv7{Qgp0Tw&r!=K<>e|F}vsa7G z^eK6Jl(l-(JJZ+~leWK~U-G+Me|y~BCD{*~4MJ~*<(bWkX>WpU^Rb|H6|*z$x=efdT>Dg%<6SwuvbF;C_qpkwmc>aw|E>R# zBVBZ6wZ3-Gj-;ncCX}6&cAX?vwa0ORMV|Sla)D=|+uDO1wxuU-dmCM{HgTie6`siz zwf?g4QF&8xiwx8d8YStIs%z0W7Z?9Etn`@d@Uwz`xw-=)hRlZ@2!e9u#+)W*1AkMfy*mK<-l<|j)(ZTFh;)o5#cz1f$mxx0R- z=Ep1vb<>Ryf8zjPAcN4sy*y)##&t^E8pmDAg{ z?uzNyqI0{HYvD5P*iZkA%1%8E```4)amKuy)tCL}T9y9#^781l9Prl6o2~ae^X_f9 zZGH0W@pUnsMdlrx;>-6i?rzPwzIlSu@!ii%_4CcWHA2HT*}j@)lDx)erdQJq``7YO z?^k&Jzv`pBGw#ZSo+okpC(XYr6}_$bx7i=wj6U6429u=c?l@r-2ZD#;DmT+-7{Cm*_e z_3Wm%YfYRnq@8EQfCdPW`o7awVr( zLAv*>%`1~uxUP=Ax$Sj?&lKirM=izc=Ig)y{kUpl@7c9$%-{Bz%`G_j+t$pEtG#4@xtW(mFZI_s7Tk+7RXOeM*iUk8wtHpXQdx3||HGT=>Eq}OGb3KdP&0R6aPq907QtsoY zeYcoreE5}gSU$Y-`?Tcq`IDYEXg|1j`@=$2%kyS`I4s#+*<;peA9kK}cu~Q%ysKum z#}6g?$L~2<7&GtR*ZDTJj~5<1zW;ap{vWgJPyAdzzwY#}Rgd`Xe$W1&eBW-z|NVat zKi~gbf9VOqmXefxUpJpWt@QVB`v1)Wik9E&f4=-5dQ8OsBj2)V1xsEXK69xRa#)Jh zonIdO>GF50(v&Y>=}kYzq1CEoYq|7`&Z`;9Q@uiqFQ!_Tzg7QrTaKs3chlChANOa! zo~AficTV)_xLwBfZJW~1uPDwwoEUh4yJ^PO2vd9glxm|*fB(+6`FgiqwcP%%{r`X6 z_J3>tK7W5@zN!5GbM-&}l)tlL|Nj5W`@hYFM@pWs{Qo&$dTCbIoVJRtVuQUc$|4MD z;-!Hl8n<^I(ptMt^v~kx$EUXK;$Ct7{H51!+uXUh^>1%YuXa51>u;l}?OB_zdDeW( zLt9QUZde+})A-F!m#w{)*xtNpbIQuB6W^v(y!vfl`Dr(QvE9G7|34i) zU-v)pYkI@(`Tvg2e_wt4d;PcX^Z$RlyR3Nj<%z<3K0p6>@W)S5_r2wg`MxzKKzT}bgWr9Qg=nUl%)?g!StyL0LJ{aYLV*_55}*P7#6S0!1N zCmH|$-uuesPjPk^htR zr#a;9Urzt<_V1fD{I6W>uCZ^IyEXqWe`C}Z?S&By?d5fO$0{?zmiXMvTHWq{DCfe` zoOB@#&m6T0ZNGj!imREay`sEMb{AQv%N#tcS&FBB^w%hkVzy9M*>tCP6|9@+K^ZD5E`TxJi*Zhl)K6>zxbJ?T% ze?K0-`7-~#xaZ!_pN;BvmzX>{XwG7V2XC(3NY_8a;Q>+CRtI zn->V*)bo!&zop=BrnLzB^{;1k2|S#AG~C(tew?`f`om}EezLJ&86Z~I^mXE|DOOHp zyK1}2cddG6bbec{^5$%}YtdJ|QqL-X3EA{9GBYJUB35oO&%c9DZkC08+GqSb|AbY5 zY1-}JMR0p8xAW^K&RtQwGRRD6wS|2B1DP+AO}TWQ+}qZY#JI_2 z)v^n{$*QlnU3H$pI`2)uHsj2%E!V|8bSGb37$D=g>u{2cU}j47pRKvMdhf1o_P^Zp zmZkdijC(HEu6gL4Z$7;H_M%O(QP-WX^32r>DA z79^)XZ?oD`o*!FlvR`9S+VRz!ucSZj5M67xR#EeP#k>vDn=Ky94XR6?c2K*2)w4zK zRnC72z2}+t=FzurE#K$-%wF5=TYboV(%Zo8OC;6ax$SPcsZexv!rPapza7s1_hNHU zpw`Y`5Bongw`OS0{K@}&Tg0@9#hR;*zUlUw=X>+_8~=Z+Cat(qVsrCciQk1H?O<=6 z)w@!@a-G;Vqx!Xw7puYTvwCHv?8;k3b>`%RpNf@U#j9wt|3v?t6=ijA-@bX%nsVFz zti9N|LpDJtiYLCj_x|6!@-EHi-rBdX8YkQKQdQ+ z-tALmwZaN^OLb3g`|Pvxd&kZ>r8}}teEX8}Tl#+Gil4py{~zD4`*@%0->1vouTJd$ zx8_H|%jNU`e~Gu>qO^Mbry2i0E}#GJOTPX8@cj>$en|gad8YsW)%a`kgD?O5H~*^U zoBvz9F4%5#asBaUdHuJY(#yTR?f-i-J#^FWd+dteCwjdQS6E+qt!Mt>3|JCPDU+GaC?j#{z8rY+G8{3fo zj8!@7|7^}>SRom|tzRZGP;-t=Wl?VK+c!gtwwNIEG`10e~T6y`Gxy%k{_3!@q zI0L2SvWeF~kZ=D-cCVfFFRSet8IGFg|ND`h|L@=r$lRI_C#WwB+Pnd8kAOxLQClTx zZrl3h?F;|>_$V%BC3F4|C#b3NEPC728JeNd$g^P^0^VCrczeb>RJN!*boRXK87IGr zF)-*f=g5aoT6QPLX8#4p(16g-Ki-@!TX*x8cH7&9LgAAb7*6ZmMi~b7^WS#=&$sRM zUkv?OYw7-d31)9!D`OONQl%KOI=l7|*3vPDZ+h(}^n((_*Dt$T3 z3<|ezf=7ri&&#zwb$89p*48_d-(Jnx1zMpC8ubskwry&{@{F>KZ4i-VkcNOCbl79X2iJ0AYnshuBFzxctaosa(=>^ZG(Tl=f%r=p0WeZ=w$fdN=Enm7M}tHvZP|Mxm8vXpLvmauqliq&{8{qz3K<+m!<@ugVB{;6DgA>Z6-;WsxH zP->X))(M`MAUa+byuBrD2lARj`X=NFu44V$%b^D_Wp7)xV3itZ7VNX$?cs>WxwXVKXZ5OycMrGo2Hl4Pq^`Lv$krLx|P#A%}sOT4&|lpK6l;U zY*OH!Et4nb&dsl=$^M$Hbo<1&Hz&%>)U2|y;xb=u%2iW6X_mJ?@k(Xc=ZaOo<{5Nn z-GBO|#A%bPe~r5n69LTXw zxyO=G7_C{NZo1fL`QzrItIyWGtGjxz=27Z>E(uT9%Z6b!o4nm_zg_xu@v6_?U%6a6 zwCPnn$CX8~oJW}?UdKOeU9TOqENAP~`S}ZO#JS~V-tAel`O3swKC*hNW+s;!#NB%E z<6HBz{h&?z=X-M2KVzOzzrp%uUPKU6#)RCDdFLm+-L-#e>^g}}#gZSMY}h{cYi_cM z`I^PKmon!uJ)658Z`lYdelb-sFn< zx^}~?XHPQjm6}d5v)Z@ym+8dZljtU$+0@ zg}I$!v0M7?&+vOtq_H;m-4_2CE8oevmfyFj@~pZ0Oe)e(XZ5j-lS*%&I%l4zvcY)M zWZurgADe@({8@c)fp2E={2& z6Xn@$D<-Dy&gERn^kUhDAZ?y2Wi1!BZQ7A@-Sn&1?XYdFi_(O@_-xNs&C|*KbgS(0 z`pz8X+ncvcwuyGQbiIDxG2>T$Mdxpvm}c_gkiwJqD(icnyj!+>!pj@8ol-Y#zbhY- zT$N=NColHqyj81Fuy^B`$b4z#N?66b&5(WTZLbsI8f#}yte%#k(tm1Oz?Dzh)t`O$ zY?=6R?Nx|nf9`w>*t41MWZ4UygMKrf9$IH2@m12`_0G3hKHJT0Bd1+GFwLY|d)mj0 zd@rk~YAY|Dk*im9y!P|=-$v=>W`DkIPre+c53V#9+^U{>cT>o#7dbCC-9B|Xd|s}# zBD67eWXr~nYtKThowntZQ9>He=KhUFwg*en4hED2sLHHu-Tf<8 zZNht-{`?bWn`{p`Pfkndmee_W_TZZSPiq`>Sx^ffs@leAqO15;sKd(J9yo1YBLW1KmJHh|Zpz z_}UHjGF_l9D+9xsX*ubWcJAK2|NjH7O}_Cg3=KD@y}d4{adcl*b@_^aSCyjnzlvI! z`R)0;w?_Zw-u?4AoBx%@&U?>y{Z80!v*ov+>`jYBlh@`6&gq%(mg%&!-#g*V%XR;M z6iAfFzMnsP^8N!cMFH>k9I4;@-le$qyVbu+CcUaX99ysN*P4DybK#V8v(~v(PW!yg zX&YXf&zttM z@8Nr+ow=7Ic7^Yfo0Ah?8*pax{hMoBj4$5`DqronLFntJj;?Lh$GsL>Oyb_qH+k;V zoAQlO`n}m2ZfEX(dv)HQUm{8w<=-Rq z7D-%J?t6aDQsMT&H;Y6K@91`KI(vJGbm-atjWx0U0(+MHZgye+?8g4uCnPAvdT-0! zvb9$CCr<92E^~8U;>~MSmFd@KnD2j96TR~5+q(x`ZrYy?Ofs&s`@2s!ZOfZYYeil6 z>{=x5_U6td*7c_D=ihDJF3W#M%jx6#V$C#jmXqcDj<)Bn-jay>n~_~<*UM>kqHKxM zxAc_iDV1fL1)ct0J7lu1_V%flEh)Qe=gY)zi=MLK^17v;Wle9kO;WzSS^IX|+T8|m z@l#W+XIrh_`DyOmN9TQ-dH?!N$#tJG@vY0|&{rnrWqE~*er><@)#;+Fbj82O^KGkT zwr|Uge&MkxcEw8tt^bGS9_QF3yY7VK@`V%Le$3Zit!7%)@oVAPmp>N7?B9_sZIji! ztyVihMb!6r#JLl7zPa1^*T_HJpR?XCMfYLay656IR=MsL>S8qzt2$-3QhU+b;CUbK zpD>SG|LWJ*sAVtBH%$sPd~MoMaPq9r>gJ$_bA4Xh1uTmxZ#c2jTle-h+1)02;g{bz zUC}lTonL~}Xbv@RBZP1=yVavS@y zq8%mAzW>u&zmq{GDAKS=e|wpUcZU1aw;8T)l#X8CR+y-Fa@!B)$W6KTWWW6ieQszL z6tO)Z^1sPDi`-6 zdsJ}wxwgbR_a=qqItUvlZL^(~<9>dvUy1HjE62-Aa_%r*F~56p>ys@v%cf=Cm%P7w ze(rItqGg5W1vkH)n0C9&{z~(jj1Lz!YZR+R@m?$abFAdhT^;L-b60nAKg`@DYj%5! zW@3WszU^zj2Zw>XhEtW3KUT4F8C0FjT|G7OQxUUo@WaJlC*|2yrE!!p?eXS~%FlW+l`$d)~c-Dq) zIN>|*$5idxoAcgD-JW{l`lXo88s3}pzRrDevuonMu2<>nCb_8AtgG&S<9EOM+^eky z>r$OPQ`jq-bEK7BbCkE&zLb)ldUn;(c|qPQI5xj6ipeKwutL*BJ=*O zcYAfESgeZZ0X zHC;jWvfZ;gttZZNb^EXUDJnSosHQ{mRfk`Vs~qp#dQo!2XeryaB{!otuJW5S<6PQ( zlg-EHZ_}4wR`B@Bw79<^txGE7-YHMLpzm;X_3P)NTc6(C(QJ6@)ah^^Gqu~9s`)09 zs#VMP6>Xo&d-vm!U$5A|PBXE!6|mym)SGkuX!NC1`>bCX%PG(2HaMj0uyFhOl9}gp zB3$@ZwLISb;m!89n`{`^ynhr0rwe{(xZaqyTxEldIs0Zk-Ot)}C(OXrz$V|@O1Cvk zKyAwtX5c~|bgT|&5eE36AJB*_1Gw9RO9p~MdtTkorm_jg?@ZX9d%iC_ z<%xB2vht?hoY!{Ct7kvlcIj*LORki6n@@i?yZe%Ln)VjG{^!4}K0j)=7U)$!Eh-+662 z<c z;ol8c@4ltH2{hssclfGG9MfK_iCZ_U`6bV^H6z?MjR=Rl|Qe^ zVcEdW^>|Ir%r(ElB8-ZQOy2L3^0J-`jvw}S8jE8$@3AUKfch3@ug%-<+!Kq~@A+!h$Aepr-YP2l#L#{hVu6Fn7ve@ADTXIvQHL~nh z%1Q{oICkmWqZ=JL%D2BNP1x7=xpdZpe}cCsOuc`;YPYJa^MoCpITBZ+%r~XCr+7=L zNKgKw7bSi2uCKr1<&D>4jc?w5$G=L@%yjOHt4|_>_qGN(^K7cx3N2tZ-+hxLT^z6* z++g1&xih`f?bC`JZdcv?TIxq0IXua2n!R_U;7zw}N1t!Yojo;CV#>V9W^1iV|6gNg zev~y&Rr+M>A(j+teVg5v6n^o{xazvv@b0}YDUo5!(U;z=jX1V=ujWgWc;9V0Pj63o zW3lz&_WiQ6w^i-z4{_ShaP{8mH`A5|xu^f1ayKk)->010Cp|RQ-cIUuD_XzeTzJ$K z<)w2Ef-O%zEE60Nk<&BvCFe3@?rRI0wH{{Z-nshTsIlgGWsb|X%AJ|p{WE7b>ZWao zFlXOvcWU#QEh3;ZxEK^}gH|nonv7sB1BiqcA+Q!HViumDQu(4icUbP6lPK)D-qszL zSF?zZi}$-#_OXw*ZcdLh(X-DuJ?q`hg?g)OB6r@cTM}N!^-?CY(6o2L?&mW$DbBqj zRQC7SWuy4Z@?~cVOK(FurR?Trprf1*b0k^ji`SkC^Sj$Do447%NnGIi^)(Z>K3{D7 zS*T;NV1~0@NmX8dEwsUQLen?=@{XO$Pn1=0?wmNe0i5b`&s5Ehoc_o0z7cPxcXH+_v0o)m9`VN-|I1nM z;$7p-ZwDx&d@4ypSg3cf;*>AF8iL2Swo<6$}9&eK&+D#zwdgMRp!0(TEYKyyOtRy@NWJ7<6P?Q z#6(U7joXiE=c(Q<_1CtJHcWXQd+YVCy>H*_GH@$CY;{X*?laAVdvCj)PMtm=cvGx6 zKiX*{L)^yL#Lu_DeXl7KE5pomZhSXC7J2hlv^ZwrpQrAXh*GrrwdcJ@(S z@!8#rMXDciY>GX;J^l7U>4=7Dn{#*n&$iu=a_>#W;f2=1Ypv2{_Z!ZAw)*6pZ=K%D zGdJlzzqhTWaqI0E<*j^Ak8Z=+SLLq&mmM3gZ#%p0C9jg~$+D8%-MbP5R9idiGLF zhZ*0Wz1*~xw>-zQ`CO0ZKfh16Jl^G1an0=8EBeCc+qU1$t3EGZCcJxAjq=Xz0aE)n zEpq#GO?3)a!nWD5Imvuk+ow)g9}s1({9WgwhuqZMg)5$hKW+K(VPeZAxi>d%7{>p) zG=1Nnr~3A@1SY(-tjW8*EmE@0@#VwJ+)k;eV@r)*l^x27K4GqKyVCOJRJOPC88^$# zUwf>i`tszfrRW98*Wb+Mes4|*y*XU^4%{5s`dw>x>dGq@Z(d5>K6Uzfo7-hZLSC=8 zMJ%3pM|;)hsbXI}GWpAL-bgGx?%pr=H_fC*ng7H$nSH8j-<&#=ow(63Y?=Cub2>9R z_*S(n-dYg8|1`^|xz9HW-hB3SnX3I*8)fo zR>VLH7tn?m3=$soCvP)PD&QLmVKUgea$j& z!_Dhr&U2ri^=_wPyx=MQ$+zFSzdGY&<$h`1GG*mw?<|+)c&Kk}iH$#Rv=R9S+_e!<7vC`mD{;pSBH8Hdc7)@^N+MpF6?e-ry;px$EcWs4RvyQCy{@C%$E!^!Ao%?Pb$# zH>a=Le(!GMyn|nHEL-u|CGq3)n`hZXuX?sbhWy^AxLkPBTeG`6v~T7G9`e)Y zotrOxGf(5~k(Ax%$~PW!OQ~*5i8gZ1P22yU|JSrkk7z0F)5SNvKb^?V+kf%j^U(e8 zXL?GOFDt95U1=fqMki{&{fbGe^rbJRJ@wb`Dq-6Ew)x{5?%>&3-q%Eamxmi`6uG%MYCA?Wl+1UN_uj_j+y!$&bGNdcVd`-x~M<=#bM5moByKC4tTDIm3 zGOC+qJU_e5IoL4b$IWeb|Ch#FDMy+IK{J^qlse8s;D7b9*R1;un~%xyc7*M>)R<6H#ip4b_#mKNhWHydtISJGrj>zH!NRgh z>D>;$q|RN>Z2Ikf$UkpN`NVxM-2yJ>>@oIn_`5H2p%Jg+LEn^Pivkb(6`gN8Ic-a- z()^;G)+e)-ckX_vnPT_p_soz=s>>6yx1yI+ zkE)9IY~eOFQ@YLl_s+K5%|<$whw?a{Uy|jzt#_&~PbD?}+c|*+{yowMKY4pZ>@<-- zU6%Km^>cDqTG>+FgT@Khif>LkFT`d z|5sLX@yf~CB|^VgSA2_0-L5m$$|`!-n{A&yO-;Y;=jN1oS1j9PQnjmSdtciny(>35 za`eAMUs_Y`+~9gNV&=RAtIY`)EmsKjT{{%}S5Npv`Ml$9DYK`~K6mCs_Ph59-I8aL z#OHntoVRq*QqUnyj0`u~kXEB$&i+iu1rP8;RuzIeQLu$8Se5>s@c60PgLPLs7RUdc zTePU<={El_uJixw`*&isr11S)8GCQs`B0f|#cP~>Qota7%}YP2PofKLB6rR$fHZ(S z_s?=WY5PRSXo_DJ=kB`4nKReFEVFvHV^?l*t_6ykgT@+jZtK$+K&BuRr3KbKUg!-^Qoc zZFgV2`%bM=EEgn@77}(bwZy`L;g8a_)qj?z{I=UR zX)kNTo9jN${k>7}W?ab4X=egvNACaOcz@G}4DaNdy-n)trrNF#w<-;PoR+JQ|gFLRvvAXamk^7dUHE-Ab_@6nY3ZZ|Qv`Q>@G$_JL7Gy8jL zpQyp4u4R|Acg#9scXPFHB=_l6{}lte%Tz_UC!CkkUA?|Mb?5a3li?jLDR+teD<*xk zjJtJHUV7r&r&Hcutr7Ud|4L45M}5B4#whnQYfic4m$h#AvtX^yE2mR_ThZQ5%n}bLeYETTfu8964+9r_Z;7pa$831@~^2E=kmPHm|Ze!dBZVL6@6y+l;|^i zb2*PPRU9o_uk&B(%V$w9?bIhHrWV&XF(}zVVS~vv(EVT$lZ7>bA8x+^%Pr?VOo+z3EoOElE%S zr{43Nr_1y*+ai8B=R5h0Jdv5|YWgQ;sx4kHF(!Jgs_^`L&&{Xg1!Aw8y_jixbCTKi zCv#8T^^5~|#XA44ny~lnzXejWf-iT*`tF;!=ggHLh2m?sk9pkN)e^*brfl+h9muo^ zv={b*Ls=yB_MBcvwYXb1<)qI(E3#9#?fo5GMDa8qTDR^%r*i4pHO0TP6PD?o-r=Xk z9g*;QLaxg7XPYhy;;amAL zvhA14{B&txJ^(GA=3y(IJ}2b9b587*^x3oj?2lfZ*LL2Fn?Ri|&_p$u0csjy_P$Eg zZ{N@1!k9P!T~GIEsebLtjaoITQjju?uWs94FVS<-4`W2ng)xE$coNi7e!sM_No`SI z{lP^JqHIELO7$YS12*jM<7EEIy`Lhi>hwN%OPoaBk1NJ=3uj6enK~(F@0#3JMM7c02$7 zLh*Z5uXR(Z>r$c%E^5VtiZ0`$es5g1oz-!vN? z0_F7f#-7_I`!sCU*_`TikcO7*bN1TPhZgJhE`4iN@hIx%=c=XLRi=5@zAZZSZm!zx zsvEp#w(%d+*FSSHBzn{F8@BGHe&9yctJu4jS2h3qa}ueP;$9f8zDaCa=zr%0VsE`P z#1!V6Muo-4PBcngz4lKH^U-fcMc%K|u2>xU;c8mEhVPiSb#!v_ako!VJGsxgZF}yy zE&Q|N3Hue*5fA?DeR(8H*3dXrdT-PMJ%4&TQUPcwpcDOqs+#N}}>- zcCTx@bneED8-H(oyIq-(TkV(zYF6DfTQ*NZK3iz|qdhmvGL%>^Slr(Bd;c|N?`LP{ znaS)jzPQT#+DGZjo$L{btt9rBkaONoRbX4PN(-Xk|-g5RI4u2_y`XERf7=0!WLWZ0#-<_ec_{^c1Hlx~;$ z?!B}P)T6p-Vt)B;RDd)n5J97kw`0$4kbL&qe9)d*jvIl73*#^KICMed2ukbilo}+#hfAk1tyb z9X`g@Uwh2)7&Z%O3~G*@DEn-1ec$Vz8l?k_32S`(4dzB};FJyFbkBacu5LQ#6YKNI z%I{U?bAoohvoJ0E++gDmzWWG#pcC{MC-}`j6F?`gu1(c5762dZ^p$ z`#->cc%O_=t&nl@p95B&q=@rMNS&t?vZTeOG z_-XPpcHQ&azD>Q9r!l8%zIK@8d7Xx@j`LHywrJm8cTH}ym#Cj{*rfma=Wf33E6~RD zq4K9?g5-lElA$VQJX5|Jt{Y6)}uDlQQN%|LxIV7Wr|Zl6mr^LIq|0%@td_HV6HG zt!X`B%0`_pMqh78mppGV_WihNMY7M?g_C>U9~CSAE?Zf&+ok=^qL@ruh6p32ur0g> zcW=EqT~NprNlZmI3w_SF4+Ji|ZE*H3Ev zu08BIZMK(Xo}Jju*IQyw*y^toZ+O`eanbAme@1n+*0XK>IfXl~O#D}RQFom;t1tFyY@|(fq~(V;04g7Y_~uK!WLczh7b8a aS>i5!op9es!j*x6fx*+&&t;ucLK6T>Z~}1v diff --git a/doc/qtcreator/images/qtcreator-cmake-build-steps.png b/doc/qtcreator/images/qtcreator-cmake-build-steps.png index 02784e47d207d294d3bbb89dca2716a1145eec6a..9ecce473c5be888c53c88e1f4e3a2018d77a6255 100644 GIT binary patch literal 8576 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 diff --git a/doc/qtcreator/images/qtcreator-cmake-clean-steps.png b/doc/qtcreator/images/qtcreator-cmake-clean-steps.png index e04711c3a74ab4e3fa418e141cbb7a51da54be41..9e1b9d512321f3f56990f955c46090c1ccab5693 100644 GIT binary patch literal 8215 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 \uicontrol {Clear CMake Configuration}, which removes the CMakeCache.txt file. This enables you to do a full rebuild. -//! [cmake build configuration] + \section1 Re-configuring with Initial Parameters + To reset CMake parameters to the initial ones, select + \uicontrol {Re-configure with Initial Parameters}. -//! [cmake build steps] + To be asked before \QC resets the changes, select \uicontrol Tools > + \uicontrol Options > \uicontrol {Build & Run} > \uicontrol CMake > + \uicontrol {Ask before re-configuring with initial parameters}. - \section2 CMake Build Steps + \image qtcreator-build-run-options-cmake.png "CMake Build & Run options" + + \section1 CMake Build Steps \QC builds CMake projects by running \c {cmake . --build}, which then runs the CMake generator specified in the project configuration: \c make, \c mingw32-make, \c nmake, or \c ninja, for example. The CMake generator - produces project files for \QC. + produces project files for \QC. Multi-config generators are also supported. You can add arguments to pass to CMake and the generator and targets for the build command in \uicontrol {Build Steps}. - \image qtcreator-cmake-build-steps.png + \image qtcreator-cmake-build-steps.png "CMake build steps" \note While the other CMake generators are installed together with Qt, - you usually need to install Ninja yourself. For more information, see - \l {Using Ninja as a CMake Generator}. + you usually need to install Ninja yourself. -//! [cmake build steps] - - -//! [cmake ninja] - - \section2 Using Ninja as a CMake Generator + \section1 Using Ninja as a CMake Generator To use \l {https://ninja-build.org/}{Ninja} with CMake, you must install it and select it as the CMake generator in the build and run kit: @@ -132,12 +142,18 @@ \uicontrol Build > \uicontrol {Rebuild Project}. This cleans up the build directory and performs a new build. -//! [cmake ninja] + \section1 Using CMake with Conan + \QC can automatically set up the \l {Setting Up Conan} + {Conan package manager} for use with CMake. -//! [cmake clean steps] + Select \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > + \uicontrol CMake > \uicontrol {Package manager auto setup} to set the + value of the \c CMAKE_PROJECT_INCLUDE_BEFORE variable to the path to a + CMake script that installs dependencies from a \c conanfile.txt, + \c conanfile.py, or \c vcpkg.json file in the project source directory. - \section2 CMake Clean Steps + \section1 CMake Clean Steps When building with CMake, you can add arguments to pass to CMake and the generator and targets for the clean command in \uicontrol {Clean Steps}. @@ -146,6 +162,4 @@ The build errors and warnings are parsed and displayed in the \uicontrol Issues output pane. - -//! [cmake clean steps] */ diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc index 594e7c16821..572180a1d6a 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -57,6 +57,14 @@ a \c CMakeLists.txt configuration file in a project. Project information is also automatically refreshed when you build the project. + The \uicontrol {File System} section in the sidebar \uicontrol Projects view + displays information from the file system. \QC cannot determine whether the + files are part of the project. For example, header files that \QC finds in + the project directories but that are not mentioned in the CMakeLists.txt + files are listed here. + + \image qtcreator-projects-view-cmake.png "File System section in Projects view" + \section1 Adding CMake Tools \QC requires CMake's \l{https://cmake.org/cmake/help/latest/manual/cmake-file-api.7.html} @@ -160,7 +168,7 @@ \list \li \l {Opening Projects} - \li \l {Specifying Build Settings} + \li \l {CMake Build Configuration} \li \l {Specifying Run Settings} \li \l {Deploying CMake Projects to Generic Remote Linux Devices} \endlist diff --git a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc new file mode 100644 index 00000000000..090c337a8fc --- /dev/null +++ b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Creator documentation. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + +/*! + \previouspage creator-build-settings-cmake.html + \page creator-build-settings-qmake.html + \nextpage creator-build-settings-qbs.html + + \title qmake Build Configuration + + \image qtcreator-projectpane.png "qmake general build settings pane" + + By default, \QC builds qmake projects in a separate directory from the + source directory, as \l{glossary-shadow-build} {shadow builds}. This + keeps the files generated for each \l{glossary-buildandrun-kit} + {build and run kit} separate. If you only build and run with a single + \l{glossary-buildandrun-kit}{kit}, you can deselect the + \uicontrol {Shadow build} checkbox. + + To make in-source builds the default option for all projects, select + \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > + \uicontrol {Default Build Properties}, and enter a period (.) in the + \uicontrol {Default build directory} field. + + You can create separate versions of project files to keep platform-dependent + code separate. You can use qmake \l{Adding Platform Specific Source Files} + {scopes} to select the file to process depending on which platform qmake is + run on. + + To generate debug symbols also for applications compiled in release mode, + select \uicontrol Enable in the \uicontrol {Separate debug info} field. For + more information, see \l{Using the Performance Analyzer}. To use default + settings, select \uicontrol {Leave at Default}. + + To set the default build properties, select \uicontrol Tools + > \uicontrol Options > \uicontrol {Build & Run} > + \uicontrol {Default Build Properties}. + + \section1 qmake Build Steps + + \QC builds qmake projects by running the \c make or \c nmake command from + the Qt version defined for the current build configuration. + + \image qtcreator-build-steps.png "Build steps" + + To override the shell command that \QC constructs by default, disable or + remove the build step and add a custom build step that specifies another + shell command. + + By default, \QC uses all the CPU cores available to achieve maximum build + parallelization. On Linux and \macos, you can specify the number of parallel + jobs to use for building in the \uicontrol {Parallel jobs} field. Select the + \uicontrol {Override MAKEFLAGS} check box to override existing MAKEFLAGS + variables. +*/ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc index 1acaa51a7cc..a710c8c1299 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -32,7 +32,7 @@ /*! \previouspage creator-debuggers.html \page creator-build-settings.html - \nextpage creator-run-settings.html + \nextpage creator-build-settings-cmake.html \title Specifying Build Settings @@ -57,6 +57,8 @@ \section1 Managing Build Configurations + \image qtcreator-build-configurations.png "Build Settings" + You specify build settings in the \uicontrol Projects mode. To add a new build configuration, click \uicontrol Add and select the type of configuration you would like to add. The options you have depend on the @@ -75,9 +77,19 @@ \uicontrol {Edit build configuration} field. The available build settings depend on the build system that you selected - for the project. + for the project: - \section2 Compiling QML + \list + \li \l{CMake Build Configuration}{CMake} + \li \l{qmake Build Configuration}{qmake} + \li \l{Qbs Build Configuration}{Qbs} + \li \l{Meson Build Configuration}{Meson} + \li \l{IncrediBuild Build Configuration}{IncrediBuild} + \endlist + + This topic describes the build settings at a general level. + + \section1 Compiling QML Since Qt 5.11, you can compile QML source code into the final binary. This improves the startup time of the application and eliminates the need to @@ -85,46 +97,14 @@ \l{Ahead-of-Time Compilation}. \QC project wizard templates create Qt Quick projects that can be compiled, - because they are set up to use the Qt Resource System. To compile Qt Quick - code, select \uicontrol Enable in the \uicontrol {Qt Quick Compiler} - field. To use default settings, select \uicontrol {Leave at Default}. + because they are set up to use the Qt Resource System. To compile QML code + for debugging and profiling the project, select \uicontrol Enable in the + \uicontrol {QML debugging and profiling} field. To use default settings, + select \uicontrol {Leave at Default}. \note In earlier Qt versions, this was a commercial feature. For more information, see \l{http://doc.qt.io/QtQuickCompiler/}{Qt Quick Compiler}. - \section2 qmake Build Configuration - - \image qtcreator-projectpane.png "qmake general build settings pane" - - By default, \QC builds projects in a separate directory from the source - directory, as \l{glossary-shadow-build} {shadow builds}. This keeps the - files generated for each \l{glossary-buildandrun-kit}{build and run kit} separate. - If you only build and run with a single \l{glossary-buildandrun-kit}{kit}, - you can deselect the \uicontrol {Shadow build} - checkbox. - - To make in-source builds the default option for all projects, select - \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > - \uicontrol {Default Build Properties}, and enter a period (.) in the - \uicontrol {Default build directory} field. - - You can create separate versions of project files to keep platform-dependent - code separate. You can use qmake \l{Adding Platform Specific Source Files} - {scopes} to select the file to process depending on which platform qmake is - run on. - - To generate debug symbols also for applications compiled in release mode, - select \uicontrol Enable in the \uicontrol {Separate debug info} field. For - more information, see \l{Using the Performance Analyzer}. To use default - settings, select \uicontrol {Leave at Default}. - - To set the default build properties, select \uicontrol Tools - > \uicontrol Options > \uicontrol {Build & Run} > - \uicontrol {Default Build Properties}. - - \include creator-projects-cmake-building.qdocinc cmake build configuration - \include creator-projects-meson-building.qdocinc meson build configuration - \section1 Starting External Processes \QC executes external processes to accomplish tasks such as building @@ -133,11 +113,10 @@ an executable name and optional command line arguments. The executable name is specified in the executable fields: \uicontrol qmake, - \uicontrol Make, \uicontrol Command, or \uicontrol Executable. It is either derived from the - project or specified manually. When you specify executables manually, you - can reference environment variables and \QC variables. However, no - quoting rules - apply. + \uicontrol Make, \uicontrol Command, or \uicontrol Executable. It is either + derived from the project or specified manually. When you specify executables + manually, you can reference environment variables and \QC variables. + However, no quoting rules apply. You can specify command-line arguments in the arguments fields: \uicontrol Arguments, \uicontrol {Additional arguments}, @@ -157,32 +136,21 @@ \section1 Build Steps - In \uicontrol{Build Steps} you can change the settings for the build system - selected for building the project: qmake, CMake, Meson, or Qbs. You can use - Incredibuild to accelerate the build process when using qmake or CMake. + \image qtcreator-cmake-build-steps.png "CMake build steps" - \section2 qmake Build Steps + In \uicontrol{Build Steps}, you can change the settings for the build system + selected for building the project: - \QC builds qmake projects by running the \c make or \c nmake command from - the Qt version defined for the current build configuration. + \list + \li \l{CMake Build Steps}{CMake} + \li \l{qmake Build Steps}{qmake} + \li \l{Qbs Build Steps}{Qbs} + \li \l{Meson Build Steps}{Meson} + \li \l{Conan Build Steps}{Conan} + \endlist - \image qtcreator-build-steps.png "Build steps" - - To override the shell command that \QC constructs by default, disable or remove - the build step and add a custom build step that specifies another shell - command. - - By default, \QC uses all the CPU cores available to achieve maximum build - parallelization. On Linux and \macos, you can specify the number of parallel - jobs to use for building in the \uicontrol {Parallel jobs} field. Select the - \uicontrol {Override MAKEFLAGS} check box to override existing MAKEFLAGS - variables. - - \include creator-projects-cmake-building.qdocinc cmake build steps - \include creator-projects-settings-build-qbs.qdocinc qbs build steps - \include creator-projects-meson-building.qdocinc meson build steps - \include creator-projects-incredibuild-building.qdocinc incredibuild build steps - \include creator-projects-conan-building.qdocinc conan build steps + You can use \l{IncrediBuild Build Steps}{IncrediBuild} to accelerate the + build process when using qmake or CMake. \section2 Adding Custom Build Steps @@ -203,13 +171,21 @@ \section1 Clean Steps - You can use the cleaning process to remove intermediate files. This process - might help you to fix obscure issues during the process of building a - project. - \image qtcreator-clean-steps.png "Clean steps" - You can define the cleaning steps for your builds in the \uicontrol{Clean Steps}. + You can use the cleaning process to remove intermediate files. This process + might help you to fix obscure issues during the process of building a + project using: + + \list + \li \l{CMake Clean Steps}{CMake} + \li qmake + \li \l{Qbs Clean Steps}{Qbs} + \li \l{Meson Clean Steps}{Meson} + \li \l{IncrediBuild Clean Steps}{IncrediBuild} + \endlist + + You can define the clean steps for your builds in \uicontrol {Clean Steps}. \list @@ -225,10 +201,4 @@ (\uicontrol {Move Up}) and \inlineimage arrowdown.png (\uicontrol {Move Down}). \endlist - - \include creator-projects-cmake-building.qdocinc cmake clean steps - \include creator-projects-settings-build-qbs.qdocinc qbs clean steps - \include creator-projects-meson-building.qdocinc meson clean steps - \include creator-projects-incredibuild-building.qdocinc incredibuild clean steps - */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc index 515e44cdbda..109be0f8483 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc @@ -175,6 +175,7 @@ with names beginning with the string \uicontrol CodeBlocks produce all the necessary data for the \QC code model. \QC displays a warning if you select a generator that is not supported. + For more information, see \l{Using Ninja as a CMake Generator}. \li In the \uicontrol {CMake configuration} field, select \uicontrol Change to edit the parameters of the CMake configuration @@ -195,8 +196,6 @@ choose the kit to use. To set the selected kit as the default kit, select \uicontrol {Make Default}. - \include creator-projects-cmake-building.qdocinc cmake ninja - \section1 Editing Qbs Profiles To view the Qbs profile associated with the kit, select \uicontrol Tools > diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 2c9d26bb34c..2c709e61477 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -75,6 +75,14 @@ \li \l{Adding Compilers} \li \l{Adding Debuggers} \li \l{Specifying Build Settings} + \list + \li \l{Cmake Build Configuration} + \li \l{qmake Build Configuration} + \li \l{Qbs Build Configuration} + \li \l{Meson Build Configuration} + \li \l{IncrediBuild Build Configuration} + \li \l{Conan Build Configuration} + \endlist \li \l{Specifying Run Settings} \li \l{Specifying Editor Settings} \li \l{Specifying Code Style Settings} From 0da8cbaf8e2bd6573fac3f4af49035213f07898d Mon Sep 17 00:00:00 2001 From: Johanna Vanhatapio Date: Wed, 24 Mar 2021 11:48:17 +0200 Subject: [PATCH 32/71] Doc: Update info about applying 3D materials Fixes: QDS-4032 Change-Id: Idbaea9f0d47ef4be894f68e884722c8dcab734d1 Reviewed-by: Leena Miettinen --- .../qtdesignstudio-3d-materials-shaders.qdoc | 18 ++++++++---------- .../qtdesignstudio-3d-materials.qdoc | 10 ++++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials-shaders.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials-shaders.qdoc index dc3cf6247b6..75cb1e12753 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials-shaders.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials-shaders.qdoc @@ -220,15 +220,13 @@ \section1 Applying Materials to Models - To apply materials to \l {Adding 3D Models}{models}: + To apply materials to models, you should first delete the default material, + and then drag-and-drop a new material from \l Library to a model component + in \l Navigator. - \list 1 - \li Drag and drop a material component from \l Library to a model - component in \l Navigator. - \li Select the Model component. - \li In the \uicontrol Properties view, select the material for the model - in the \uicontrol Materials list. - \li Select the material component to edit the properties of the material - in the \uicontrol Properties view. - \endlist + You can apply the same material to another component as well. Again, + delete the default material first. You should then select the component and + go to the \uicontrol Properties view. Find the \uicontrol Materials property, + select the \inlineimage plus.png + icon, and choose the new material in the dropdown menu. */ diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials.qdoc index c0dcf127a39..f84c5e9e391 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-materials.qdoc @@ -35,6 +35,16 @@ \QDS provides a set of pregenerated Qt Quick 3D materials that can be used to create good-looking \l {Adding 3D Models}{models} quickly and easily. + To apply 3D materials to models, you should first delete the default material, + and then drag-and-drop a new material from \l Library to a model component + in \l Navigator. + + You can apply the same material to another component as well. Again, + delete the default material first. You should then select the component and + go to the \uicontrol Properties view. Find the \uicontrol Materials property, + select the \inlineimage plus.png + icon, and choose the new material in the dropdown menu. + To apply a 3D material to a component, drag-and-drop a material from \l Library > \uicontrol Components > \uicontrol QtQuick3D > \uicontrol {Qt Quick 3D Materials} to a model component in \l Navigator. From efc6d089158ce859e77a3238e7a2b4b2fc95d95a Mon Sep 17 00:00:00 2001 From: Johanna Vanhatapio Date: Mon, 29 Mar 2021 12:01:44 +0300 Subject: [PATCH 33/71] Doc: Remove the extra qdoc command Change-Id: Ica5fe790156f2e1ffffd5f343c4fd60434dfc69a Reviewed-by: Leena Miettinen --- .../src/qtquick3d-editor/qtdesignstudio-3d-texture.qdoc | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-texture.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-texture.qdoc index b518ed20cc9..45ceaf00081 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-texture.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-texture.qdoc @@ -136,6 +136,4 @@ specify a new image to use in the \uicontrol Source field. \image studio-qtquick-3d-texture-properties.png "Texture properties" - - \endlist */ From dc2710cd00bd8d53c6ab5d195c142feeb75724db Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Mon, 29 Mar 2021 13:19:36 +0200 Subject: [PATCH 34/71] crashpad: fix windows builds + show settings checkbox coreplugin/CMakeLists.txt uses BUILD_WITH_CRASHPAD and not the old not existing variables Change-Id: I5ad9ebb3cf0ac1ee06d53a1e276d70a194b0ace4 Reviewed-by: Tim Jenssen --- cmake/FindCrashpad.cmake | 19 ++++++++++--------- src/plugins/coreplugin/CMakeLists.txt | 14 ++++---------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/cmake/FindCrashpad.cmake b/cmake/FindCrashpad.cmake index 919ec93cd8f..8b16fd83be2 100644 --- a/cmake/FindCrashpad.cmake +++ b/cmake/FindCrashpad.cmake @@ -49,6 +49,14 @@ find_path(CRASHPAD_LIB_DIR "${CMAKE_PREFIX_PATH}" ) +find_path(CRASHPAD_GEN_DIR + NAMES build/chromeos_buildflags.h + PATH_SUFFIXES gen + HINTS + "${CRASHPAD_BIN_DIR}" + "${CMAKE_PREFIX_PATH}" +) + if(APPLE) find_path(CRASHPAD_OBJ_DIR NAMES mig_output.child_portServer.o @@ -58,13 +66,6 @@ if(APPLE) "${CRASHPAD_LIB_DIR}/out/Default" "${CMAKE_PREFIX_PATH}" ) - find_path(CRASHPAD_GEN_DIR - NAMES build/chromeos_buildflags.h - PATH_SUFFIXES gen - HINTS - "${CRASHPAD_BIN_DIR}" - "${CMAKE_PREFIX_PATH}" - ) set(CRASHPAD_APPLE_VARS CRASHPAD_OBJ_DIR CRASHPAD_GEN_DIR) find_library(FWbsm bsm) find_library(FWAppKit AppKit) @@ -81,7 +82,8 @@ if(Crashpad_FOUND) add_library(Crashpad::Crashpad UNKNOWN IMPORTED) target_include_directories(Crashpad::Crashpad INTERFACE "${CRASHPAD_INCLUDE_DIR}" - "${CRASHPAD_INCLUDE_DIR}/third_party/mini_chromium/mini_chromium") + "${CRASHPAD_INCLUDE_DIR}/third_party/mini_chromium/mini_chromium" + "${CRASHPAD_GEN_DIR}") if(WIN32) target_link_libraries(Crashpad::Crashpad INTERFACE "${CRASHPAD_LIB_DIR}/third_party/mini_chromium/mini_chromium/base/base.lib" @@ -106,7 +108,6 @@ if(Crashpad_FOUND) ${FWbsm} ${FWAppKit} ${FWIOKit} ${FWSecurity}) set_target_properties(Crashpad::Crashpad PROPERTIES IMPORTED_LOCATION "${CRASHPAD_LIB_DIR}/client/libclient.a") - target_include_directories(Crashpad::Crashpad INTERFACE "${CRASHPAD_GEN_DIR}") elseif(UNIX) # TODO: Crashpad is not well supported on linux currently target_link_libraries(Crashpad::Crashpad INTERFACE diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt index 3d557cf7050..6b98b63bf9a 100644 --- a/src/plugins/coreplugin/CMakeLists.txt +++ b/src/plugins/coreplugin/CMakeLists.txt @@ -186,16 +186,10 @@ extend_qtc_plugin(Core SOURCES progressmanager/progressmanager_x11.cpp ) -if (CRASHPAD_BACKEND_URL - AND CRASHPAD_SRC - AND EXISTS "${CRASHPAD_SRC}" - AND CRASHPAD_BUILD - AND EXISTS "${CRASHPAD_BUILD}" - AND (WIN32 OR APPLE)) # LINUX isn't supported for now - extend_qtc_plugin(Core - DEFINES ENABLE_CRASHPAD - ) -endif() +extend_qtc_plugin(Core + CONDITION BUILD_WITH_CRASHPAD + DEFINES ENABLE_CRASHPAD +) if ((NOT WIN32) AND (NOT APPLE)) # install logo From de597ce8211745bf0e0153a78641f3f9cf4525f2 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 26 Mar 2021 13:48:41 +0100 Subject: [PATCH 35/71] Doc: Update the QDS workflow image in Getting Started Task-number: QDS-3985 Change-Id: I470ba3c453fbb4fd1863d87073bb5cb6201ca55b Reviewed-by: Johanna Vanhatapio Reviewed-by: Thomas Hartmann --- doc/qtdesignstudio/images/studio-workflow.png | Bin 49848 -> 67242 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/qtdesignstudio/images/studio-workflow.png b/doc/qtdesignstudio/images/studio-workflow.png index a155ed0da4c7ca8249be8820fdd04da53d287a58..e3aa970d02fadda677060e80c977914c12c0b7b4 100644 GIT binary patch literal 67242 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 z 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 literal 49848 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 Date: Fri, 26 Mar 2021 18:12:03 +0100 Subject: [PATCH 36/71] QmlDesigner: Fix for color roles Change-Id: I6336130d7db684a13081e5a128753816bf5bbcc5 Fixes: QDS-4038 Fixes: QDS-4039 Reviewed-by: Thomas Hartmann --- .../annotationeditor/annotationtabwidget.cpp | 3 +++ .../components/richtexteditor/richtexteditor.cpp | 10 +++++++++- .../components/timelineeditor/timelinewidget.cpp | 9 +++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp index d0b68b5cfb3..960920284a5 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtabwidget.cpp @@ -39,6 +39,9 @@ AnnotationTabWidget::AnnotationTabWidget(QWidget *parent) { auto *commentCornerWidget = new QToolBar; + //Making it look similar to timeline editor button: + commentCornerWidget->setStyleSheet("QToolBar { background-color: transparent; border-width: 1px; }"); + auto *commentAddAction = new QAction(TimelineIcons::ADD_TIMELINE.icon(), tr("Add Comment")); //timeline icons? auto *commentRemoveAction = new QAction(TimelineIcons::REMOVE_TIMELINE.icon(), diff --git a/src/plugins/qmldesigner/components/richtexteditor/richtexteditor.cpp b/src/plugins/qmldesigner/components/richtexteditor/richtexteditor.cpp index c58bed2995a..1cce16b26cf 100644 --- a/src/plugins/qmldesigner/components/richtexteditor/richtexteditor.cpp +++ b/src/plugins/qmldesigner/components/richtexteditor/richtexteditor.cpp @@ -119,6 +119,14 @@ RichTextEditor::RichTextEditor(QWidget *parent) ui->textEdit->setTextInteractionFlags(Qt::TextEditorInteraction | Qt::LinksAccessibleByMouse); ui->tableBar->setVisible(false); + const QColor backColor = Theme::getColor(Theme::DSpanelBackground); + + const QString toolBarStyleSheet = + QString("QToolBar { background-color: %1; border-width: 1px }").arg(backColor.name()); + + ui->toolBar->setStyleSheet(toolBarStyleSheet); + ui->tableBar->setStyleSheet(toolBarStyleSheet); + setupEditActions(); setupTextActions(); setupImageActions(); @@ -201,7 +209,7 @@ void RichTextEditor::setDocumentBaseUrl(const QUrl& url) QIcon RichTextEditor::getIcon(Theme::Icon icon) { const QString fontName = "qtds_propertyIconFont.ttf"; - const QColor iconColorNormal(Theme::getColor(Theme::IconsBaseColor)); + const QColor iconColorNormal(Theme::getColor(Theme::DStextColor)); return Utils::StyleHelper::getIconFromIconFont( fontName, Theme::getIconUnicode(icon), 20, 20, iconColorNormal); diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp index bfa56b89c7f..dbf5c597807 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp @@ -205,9 +205,10 @@ TimelineWidget::TimelineWidget(TimelineView *view) auto *topSpacer = new QSpacerItem(40, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); auto *bottomSpacer = new QSpacerItem(40, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); - QString labelText = - tr("This file does not contain a timeline.

\ - To create an animation, add a timeline by clicking the + button."); + const QString labelText = + tr("This file does not contain a timeline.

" + "To create an animation, add a timeline by clicking the + button."); + onboardingTopLabel->setText(labelText); onboardingTopLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); @@ -241,7 +242,7 @@ TimelineWidget::TimelineWidget(TimelineView *view) { QPalette timelinePalette; timelinePalette.setColor(QPalette::Text, Utils::creatorTheme()->color( - Utils::Theme::QmlDesigner_FormEditorForegroundColor)); + Utils::Theme::DStextColor)); timelinePalette.setColor(QPalette::WindowText, timelinePalette.color(QPalette::Text)); timelinePalette.setColor(QPalette::Window, Utils::creatorTheme()->color( Utils::Theme::QmlDesigner_BackgroundColorDarkAlternate)); From 22099bd71a2e04b0922c954b4268147aec8a1e25 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Mon, 29 Mar 2021 19:15:47 +0200 Subject: [PATCH 37/71] crashpad: fix execute permission Change-Id: I44f5412b3903349f8cfbe12307fdf3bc2b24a6c8 Reviewed-by: Tim Jenssen --- src/app/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 127e364536b..e372dc87180 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -89,5 +89,9 @@ extend_qtc_executable(qtcreator DEPENDS Crashpad::Crashpad ) if(BUILD_WITH_CRASHPAD) - install(FILES ${CRASHPAD_BIN_DIR}/crashpad_handler${CMAKE_EXECUTABLE_SUFFIX} DESTINATION "${IDE_LIBEXEC_PATH}") + install( + FILES ${CRASHPAD_BIN_DIR}/crashpad_handler${CMAKE_EXECUTABLE_SUFFIX} + DESTINATION "${IDE_LIBEXEC_PATH}" + USE_SOURCE_PERMISSIONS + ) endif() From f57694948e96c8570078c0331f2c53d68ffc01c4 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 29 Mar 2021 14:11:33 +0200 Subject: [PATCH 38/71] Sqlite: Cleanup sqlite statement Change-Id: I727a95491a45fe01bf59821d4f451f25483745ed Reviewed-by: Thomas Hartmann --- src/libs/sqlite/sqlitebasestatement.h | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/libs/sqlite/sqlitebasestatement.h b/src/libs/sqlite/sqlitebasestatement.h index 68b821a14c2..08fb7ed0ed0 100644 --- a/src/libs/sqlite/sqlitebasestatement.h +++ b/src/libs/sqlite/sqlitebasestatement.h @@ -173,9 +173,7 @@ public: resetter.reset(); } - void bindValues() - { - } + void bindValues() {} template void bindValues(const ValueType&... values) @@ -389,25 +387,12 @@ private: } template - void bindValuesByIndex(int index, const ValueType &value, const ValueTypes&... values) + void bindValuesByIndex(int index, const ValueType &value, const ValueTypes &...values) { BaseStatement::bind(index, value); bindValuesByIndex(index + 1, values...); } - template - void bindTupleValuesElement(const TupleType &tuple, std::index_sequence) - { - bindValues(std::get(tuple)...); - } - - template ::value>> - void bindTupleValues(const TupleType &element) - { - bindTupleValuesElement(element, ColumnIndices()); - } - void setMaximumResultCount(std::size_t count) { m_maximumResultCount = std::max(m_maximumResultCount, count); From 393c65e34e045d45f20fca6d7fa6fff67ac82256 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 29 Mar 2021 14:12:07 +0200 Subject: [PATCH 39/71] Sqlite: Use std::byte Change-Id: Ie5bdbae67f7d0f9e533ad20ddb66d03057df2028 Reviewed-by: Thomas Hartmann --- src/libs/sqlite/sqlitebasestatement.cpp | 3 ++- src/libs/sqlite/sqliteblob.h | 12 ++++++------ src/libs/sqlite/sqliteglobal.h | 2 -- src/libs/sqlite/sqlitesessionchangeset.cpp | 2 +- tests/unit/unittest/sqlitestatement-test.cpp | 6 +++--- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/libs/sqlite/sqlitebasestatement.cpp b/src/libs/sqlite/sqlitebasestatement.cpp index 7412473dad1..7f8cd86ab4b 100644 --- a/src/libs/sqlite/sqlitebasestatement.cpp +++ b/src/libs/sqlite/sqlitebasestatement.cpp @@ -687,7 +687,8 @@ StringType textForColumn(sqlite3_stmt *sqlStatment, int column) BlobView blobForColumn(sqlite3_stmt *sqlStatment, int column) { - const byte *blob = reinterpret_cast(sqlite3_column_blob(sqlStatment, column)); + const std::byte *blob = reinterpret_cast( + sqlite3_column_blob(sqlStatment, column)); std::size_t size = std::size_t(sqlite3_column_bytes(sqlStatment, column)); return {blob, size}; diff --git a/src/libs/sqlite/sqliteblob.h b/src/libs/sqlite/sqliteblob.h index 17d9426ad04..8d9a76107a1 100644 --- a/src/libs/sqlite/sqliteblob.h +++ b/src/libs/sqlite/sqliteblob.h @@ -42,22 +42,22 @@ class BlobView public: BlobView() = default; - BlobView(const byte *data, std::size_t size) + BlobView(const std::byte *data, std::size_t size) : m_data(data) , m_size(size) {} BlobView(const QByteArray &byteArray) - : m_data(reinterpret_cast(byteArray.constData())) + : m_data(reinterpret_cast(byteArray.constData())) , m_size(static_cast(byteArray.size())) {} - BlobView(const std::vector &bytes) + BlobView(const std::vector &bytes) : m_data(bytes.data()) , m_size(static_cast(bytes.size())) {} - const byte *data() const { return m_data; } + const std::byte *data() const { return m_data; } const char *cdata() const { return reinterpret_cast(m_data); } std::size_t size() const { return m_size; } int sisize() const { return static_cast(m_size); } @@ -71,7 +71,7 @@ public: } private: - const byte *m_data{}; + const std::byte *m_data{}; std::size_t m_size{}; }; @@ -84,7 +84,7 @@ public: std::copy_n(blobView.data(), blobView.size(), std::back_inserter(bytes)); } - std::vector bytes; + std::vector bytes; }; class ByteArrayBlob diff --git a/src/libs/sqlite/sqliteglobal.h b/src/libs/sqlite/sqliteglobal.h index 6f6ecba5423..0bdb3c2aef9 100644 --- a/src/libs/sqlite/sqliteglobal.h +++ b/src/libs/sqlite/sqliteglobal.h @@ -66,8 +66,6 @@ enum class OpenMode : char enum class ChangeType : int { Delete = 9, Insert = 18, Update = 23 }; -enum class byte : unsigned char {}; - enum class CallbackControl : unsigned char { Continue, Abort }; } // namespace Sqlite diff --git a/src/libs/sqlite/sqlitesessionchangeset.cpp b/src/libs/sqlite/sqlitesessionchangeset.cpp index bc18efaed7f..76fc088f92f 100644 --- a/src/libs/sqlite/sqlitesessionchangeset.cpp +++ b/src/libs/sqlite/sqlitesessionchangeset.cpp @@ -118,7 +118,7 @@ SessionChangeSet::~SessionChangeSet() BlobView SessionChangeSet::asBlobView() const { - return {static_cast(m_data), static_cast(m_size)}; + return {static_cast(m_data), static_cast(m_size)}; } SessionChangeSetInternal::ConstIterator SessionChangeSet::begin() const diff --git a/tests/unit/unittest/sqlitestatement-test.cpp b/tests/unit/unittest/sqlitestatement-test.cpp index 065ad8d9762..c526cc3d4bc 100644 --- a/tests/unit/unittest/sqlitestatement-test.cpp +++ b/tests/unit/unittest/sqlitestatement-test.cpp @@ -323,7 +323,7 @@ TEST_F(SqliteStatement, BindBlob) { SqliteTestStatement statement("WITH T(blob) AS (VALUES (?)) SELECT blob FROM T", database); const unsigned char chars[] = "aaafdfdlll"; - auto bytePointer = reinterpret_cast(chars); + auto bytePointer = reinterpret_cast(chars); Sqlite::BlobView bytes{bytePointer, sizeof(chars) - 1}; statement.bind(1, bytes); @@ -527,7 +527,7 @@ TEST_F(SqliteStatement, WriteBlobs) SqliteTestStatement statement("INSERT INTO test VALUES ('blob', 40, ?)", database); SqliteTestStatement readStatement("SELECT value FROM test WHERE name = 'blob'", database); const unsigned char chars[] = "aaafdfdlll"; - auto bytePointer = reinterpret_cast(chars); + auto bytePointer = reinterpret_cast(chars); Sqlite::BlobView bytes{bytePointer, sizeof(chars) - 1}; statement.write(bytes); @@ -657,7 +657,7 @@ TEST_F(SqliteStatement, GetBlobValues) database.execute("INSERT INTO test VALUES ('blob', 40, x'AABBCCDD')"); ReadStatement<1> statement("SELECT value FROM test WHERE name='blob'", database); const int value = 0xDDCCBBAA; - auto bytePointer = reinterpret_cast(&value); + auto bytePointer = reinterpret_cast(&value); Sqlite::BlobView bytes{bytePointer, 4}; auto values = statement.values(1); From 710b96cc89763d8177c84380a938366cfcab2612 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 29 Mar 2021 16:14:01 +0200 Subject: [PATCH 40/71] Sqlite: Value can now handle blob too This can be quite handy if we want to handle images in the database dynamically. Change-Id: I76b87d6b59e999b043bb2335192c90a371187431 Reviewed-by: Thomas Hartmann --- src/libs/sqlite/sqliteblob.h | 20 ++++++ src/libs/sqlite/sqlitevalue.h | 77 +++++++++++++++++++--- tests/unit/unittest/sqlitevalue-test.cpp | 81 ++++++++++++++++++++++-- 3 files changed, 165 insertions(+), 13 deletions(-) diff --git a/src/libs/sqlite/sqliteblob.h b/src/libs/sqlite/sqliteblob.h index 8d9a76107a1..311380e02a5 100644 --- a/src/libs/sqlite/sqliteblob.h +++ b/src/libs/sqlite/sqliteblob.h @@ -57,6 +57,11 @@ public: , m_size(static_cast(bytes.size())) {} + BlobView(Utils::span bytes) + : m_data(bytes.data()) + , m_size(static_cast(bytes.size())) + {} + const std::byte *data() const { return m_data; } const char *cdata() const { return reinterpret_cast(m_data); } std::size_t size() const { return m_size; } @@ -85,6 +90,21 @@ public: } std::vector bytes; + + friend bool operator==(const Sqlite::Blob &first, const Sqlite::Blob &second) + { + return BlobView{first.bytes} == BlobView{second.bytes}; + } + + friend bool operator==(const Sqlite::Blob &first, Sqlite::BlobView second) + { + return BlobView{first.bytes} == second; + } + + friend bool operator==(Sqlite::BlobView first, const Sqlite::Blob &second) + { + return second == first; + } }; class ByteArrayBlob diff --git a/src/libs/sqlite/sqlitevalue.h b/src/libs/sqlite/sqlitevalue.h index 8ace8a7bf19..220d8d1e063 100644 --- a/src/libs/sqlite/sqlitevalue.h +++ b/src/libs/sqlite/sqlitevalue.h @@ -25,6 +25,7 @@ #pragma once +#include "sqliteblob.h" #include "sqliteexception.h" #include @@ -36,7 +37,7 @@ namespace Sqlite { -enum class ValueType : unsigned char { Null, Integer, Float, String }; +enum class ValueType : unsigned char { Null, Integer, Float, String, Blob }; class NullValue { @@ -47,7 +48,7 @@ template class ValueBase { public: - using VariantType = Utils::variant; + using VariantType = Utils::variant; ValueBase() = default; @@ -81,6 +82,26 @@ public: {} + explicit ValueBase(StringType &&value) + : value(std::move(value)) + + {} + + explicit ValueBase(BlobView value) + : value(value) + + {} + + explicit ValueBase(Blob &&value) + : value(std::move(value)) + + {} + + explicit ValueBase(const Blob &value) + : value(value) + + {} + bool isNull() const { return value.index() == 0; } long long toInteger() const { return Utils::get(value); } @@ -92,6 +113,12 @@ public: return Utils::get(value); } + BlobView toBlobView() const + { + const Blob &blob = Utils::get(value); + + return {blob.bytes}; + } explicit operator QVariant() const { switch (type()) { @@ -101,6 +128,10 @@ public: return QVariant(toFloat()); case ValueType::String: return QVariant(QString(toStringView())); + case ValueType::Blob: { + auto blobView = toBlobView(); + return QVariant(QByteArray(blobView.cdata(), blobView.sisize())); + } case ValueType::Null: break; } @@ -121,9 +152,9 @@ public: friend bool operator==(const ValueBase &first, double second) { - auto maybeInteger = Utils::get_if(&first.value); + auto maybeFloat = Utils::get_if(&first.value); - return maybeInteger && *maybeInteger == second; + return maybeFloat && *maybeFloat == second; } friend bool operator==(const ValueBase &first, int second) @@ -144,9 +175,9 @@ public: friend bool operator==(const ValueBase &first, Utils::SmallStringView second) { - auto maybeInteger = Utils::get_if(&first.value); + auto maybeString = Utils::get_if(&first.value); - return maybeInteger && *maybeInteger == second; + return maybeString && *maybeString == second; } friend bool operator==(Utils::SmallStringView first, const ValueBase &second) @@ -156,10 +187,9 @@ public: friend bool operator==(const ValueBase &first, const QString &second) { - auto maybeInteger = Utils::get_if(&first.value); + auto maybeString = Utils::get_if(&first.value); - return maybeInteger - && second == QLatin1String{maybeInteger->data(), int(maybeInteger->size())}; + return maybeString && second == QLatin1String{maybeString->data(), int(maybeString->size())}; } friend bool operator==(const QString &first, const ValueBase &second) @@ -184,6 +214,15 @@ public: return !(first.value == second.value); } + friend bool operator==(const ValueBase &first, BlobView second) + { + auto maybeBlob = Utils::get_if(&first.value); + + return maybeBlob && *maybeBlob == second; + } + + friend bool operator==(BlobView first, const ValueBase &second) { return second == first; } + ValueType type() const { switch (value.index()) { @@ -195,6 +234,8 @@ public: return ValueType::Float; case 3: return ValueType::String; + case 4: + return ValueType::Blob; } return {}; @@ -253,6 +294,18 @@ public: : ValueBase(VariantType{Utils::SmallString(value)}) {} + explicit Value(const Blob &value) + : ValueBase(value) + {} + + explicit Value(Blob &&value) + : ValueBase(std::move(value)) + {} + + explicit Value(BlobView value) + : ValueBase(value) + {} + friend bool operator!=(const Value &first, const Value &second) { return !(first.value == second.value); @@ -282,6 +335,8 @@ public: return first.toFloat() == second.toFloat(); case ValueType::String: return first.toStringView() == second.toStringView(); + case ValueType::Blob: + return first.toBlobView() == second.toBlobView(); case ValueType::Null: return false; } @@ -308,6 +363,8 @@ private: return VariantType{value.toFloat()}; case QVariant::String: return VariantType{value.toString()}; + case QVariant::ByteArray: + return VariantType{Blob{value.toByteArray()}}; default: throw CannotConvert("Cannot convert this QVariant to a ValueBase"); } @@ -324,6 +381,8 @@ private: return VariantType{view.toFloat()}; case ValueType::String: return VariantType{view.toStringView()}; + case ValueType::Blob: + return VariantType{view.toBlobView()}; default: throw CannotConvert("Cannot convert this QVariant to a ValueBase"); } diff --git a/tests/unit/unittest/sqlitevalue-test.cpp b/tests/unit/unittest/sqlitevalue-test.cpp index 1a90c330f07..682e8087abb 100644 --- a/tests/unit/unittest/sqlitevalue-test.cpp +++ b/tests/unit/unittest/sqlitevalue-test.cpp @@ -26,6 +26,7 @@ #include "googletest.h" #include +#include namespace { @@ -85,13 +86,22 @@ TEST(SqliteValue, ConstructStringFromQString) ASSERT_THAT(value.toStringView(), Eq("foo")); } -TEST(SqliteValue, ConstructStringFromBlob) +TEST(SqliteValue, ConstructBlobFromSpan) { - // Utils::span bytes{reinterpret_cast("abcd"), 4}; + Utils::span bytes{reinterpret_cast("abcd"), 4}; - // Sqlite::Value value{bytes}; + Sqlite::Value value{Sqlite::BlobView{bytes}}; - //ASSERT_THAT(value.toBlob(), Eq(bytes)); + ASSERT_THAT(value.toBlobView(), Eq(bytes)); +} + +TEST(SqliteValue, ConstructBlobFromBlob) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + + Sqlite::Value value{Sqlite::Blob{bytes}}; + + ASSERT_THAT(value.toBlobView(), Eq(bytes)); } TEST(SqliteValue, ConstructNullFromNullQVariant) @@ -148,6 +158,16 @@ TEST(SqliteValue, ConstructStringFromStringQVariant) ASSERT_THAT(value.toStringView(), Eq("foo")); } +TEST(SqliteValue, ConstructBlobFromByteArrayQVariant) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + QVariant variant{QByteArray{"abcd"}}; + + Sqlite::Value value{variant}; + + ASSERT_THAT(value.toBlobView(), Eq(bytes)); +} + TEST(SqliteValue, ConvertToNullQVariant) { Sqlite::Value value{}; @@ -184,6 +204,16 @@ TEST(SqliteValue, ConvertToFloatQVariant) ASSERT_THAT(variant, Eq(1.1)); } +TEST(SqliteValue, ConvertToByteArrayQVariant) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + Sqlite::Value value{bytes}; + + auto variant = QVariant{value}; + + ASSERT_THAT(variant, Eq(QByteArray{"abcd"})); +} + TEST(SqliteValue, IntegerEquals) { bool isEqual = Sqlite::Value{1} == 1LL; @@ -226,6 +256,22 @@ TEST(SqliteValue, StringEqualsInverse) ASSERT_TRUE(isEqual); } +TEST(SqliteValue, BlobEquals) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + bool isEqual = Sqlite::Value{bytes} == bytes; + + ASSERT_TRUE(isEqual); +} + +TEST(SqliteValue, BlobInverseEquals) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + bool isEqual = bytes == Sqlite::Value{bytes}; + + ASSERT_TRUE(isEqual); +} + TEST(SqliteValue, IntegerAndFloatAreNotEquals) { bool isEqual = Sqlite::Value{1} == 1.; @@ -324,6 +370,14 @@ TEST(SqliteValue, StringType) ASSERT_THAT(type, Sqlite::ValueType::String); } +TEST(SqliteValue, BlobType) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + auto type = Sqlite::Value{bytes}.type(); + + ASSERT_THAT(type, Sqlite::ValueType::Blob); +} + TEST(SqliteValue, NullValueAndValueViewAreNotEqual) { bool isEqual = Sqlite::ValueView::create(Sqlite::NullValue{}) == Sqlite::Value{}; @@ -387,6 +441,15 @@ TEST(SqliteValue, StringValueAndIntergerValueViewAreNotEqual) ASSERT_FALSE(isEqual); } +TEST(SqliteValue, BlobValueAndValueViewEquals) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + + bool isEqual = Sqlite::ValueView::create(bytes) == Sqlite::Value{bytes}; + + ASSERT_TRUE(isEqual); +} + TEST(SqliteValue, ConvertNullValueViewIntoValue) { auto view = Sqlite::ValueView::create(Sqlite::NullValue{}); @@ -423,4 +486,14 @@ TEST(SqliteValue, ConvertFloatValueViewIntoValue) ASSERT_THAT(value, Eq(1.4)); } +TEST(SqliteValue, ConvertBlobValueViewIntoValue) +{ + Utils::span bytes{reinterpret_cast("abcd"), 4}; + auto view = Sqlite::ValueView::create(bytes); + + Sqlite::Value value{view}; + + ASSERT_THAT(value, Eq(Sqlite::BlobView{bytes})); +} + } // namespace From 8d00e04f2454a1d2e7b375cfe861475237bd938e Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 11 Mar 2021 18:08:46 +0100 Subject: [PATCH 41/71] Doc: Update info about Flow View and related items Task-number: QDS-3824 Change-Id: Id036f5643fd30204c212944d26ac05b8f3a0b692 Reviewed-by: Thomas Hartmann Reviewed-by: --- .../src/qtquick/qtquick-components.qdoc | 2 +- .../images/icons/flow-action-icon.png | Bin 0 -> 507 bytes .../images/icons/flow-decision-icon.png | Bin 0 -> 568 bytes .../images/icons/flow-wildcard-icon.png | Bin 0 -> 616 bytes .../studio-flow-action-area-properties.png | Bin 0 -> 23739 bytes .../images/studio-flow-action-area.png | Bin 0 -> 47650 bytes .../images/studio-flow-decision-preview.png | Bin 0 -> 12848 bytes .../studio-flow-decision-properties.png | Bin 0 -> 18844 bytes .../images/studio-flow-decision.png | Bin 40618 -> 46407 bytes .../images/studio-flow-effect-properties.png | Bin 0 -> 9094 bytes .../studio-flow-effect-push-properties.png | Bin 0 -> 16913 bytes .../images/studio-flow-event-list-trigger.png | Bin 0 -> 15777 bytes .../images/studio-flow-event-list.png | Bin 10092 -> 8020 bytes .../images/studio-flow-events-assign.png | Bin 0 -> 15537 bytes .../images/studio-flow-item-properties.png | Bin 0 -> 21844 bytes .../images/studio-flow-item.png | Bin 0 -> 14741 bytes .../images/studio-flow-steps.png | Bin 0 -> 57899 bytes ...studio-flow-transition-line-properties.png | Bin 0 -> 13834 bytes ...io-flow-transition-properties-question.png | Bin 0 -> 10032 bytes .../studio-flow-transition-properties.png | Bin 0 -> 18493 bytes ...studio-flow-view-properties-transition.png | Bin 0 -> 7231 bytes .../images/studio-flow-view-properties.png | Bin 0 -> 22902 bytes .../images/studio-flow-view.png | Bin 292721 -> 66848 bytes .../studio-flow-wildcard-properties.png | Bin 0 -> 19196 bytes .../src/qtdesignstudio-app-flows.qdoc | 653 ++++++++++++++---- .../src/qtdesignstudio-toc.qdoc | 10 + 26 files changed, 523 insertions(+), 142 deletions(-) create mode 100644 doc/qtdesignstudio/images/icons/flow-action-icon.png create mode 100644 doc/qtdesignstudio/images/icons/flow-decision-icon.png create mode 100644 doc/qtdesignstudio/images/icons/flow-wildcard-icon.png create mode 100644 doc/qtdesignstudio/images/studio-flow-action-area-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-action-area.png create mode 100644 doc/qtdesignstudio/images/studio-flow-decision-preview.png create mode 100644 doc/qtdesignstudio/images/studio-flow-decision-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-effect-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-effect-push-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-event-list-trigger.png create mode 100644 doc/qtdesignstudio/images/studio-flow-events-assign.png create mode 100644 doc/qtdesignstudio/images/studio-flow-item-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-item.png create mode 100644 doc/qtdesignstudio/images/studio-flow-steps.png create mode 100644 doc/qtdesignstudio/images/studio-flow-transition-line-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-transition-properties-question.png create mode 100644 doc/qtdesignstudio/images/studio-flow-transition-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-view-properties-transition.png create mode 100644 doc/qtdesignstudio/images/studio-flow-view-properties.png create mode 100644 doc/qtdesignstudio/images/studio-flow-wildcard-properties.png diff --git a/doc/qtcreator/src/qtquick/qtquick-components.qdoc b/doc/qtcreator/src/qtquick/qtquick-components.qdoc index 5acd02b103e..5e76c0068f2 100644 --- a/doc/qtcreator/src/qtquick/qtquick-components.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-components.qdoc @@ -32,7 +32,7 @@ /*! \page quick-components.html \if defined(qtdesignstudio) - \previouspage studio-app-flows.html + \previouspage studio-flow-external-events.html \else \previouspage creator-using-qt-quick-designer.html \endif diff --git a/doc/qtdesignstudio/images/icons/flow-action-icon.png b/doc/qtdesignstudio/images/icons/flow-action-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4527e4c62f88e947d094b71758971c17d7cb6c8b GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd5W$eeQS*<1fq^C6(btiIVPik{pF~y$1_p&> zk04(LhAK4%hK3dfhF=T}3=J(`2&?OK`gh;>KP|NsC0->(x5_Pl!g ze`Nvd|NrHF$3rIl_;B8HN0WHzjXRIFiLHCkF2)>ofF*g4@PRz0n1ge^-?+2Emo4k) zucH+;A5+#JkG6UEVMe!uN7@-R0r8e3VFtE63uB@dZd7MrU{Eb_jVMV;EJ?LWE=o-- zNo6oHFf!0JG}JXR2r)FUGBmI%X8$tf)^0ShS@nd%wn8R#ekhq)`b zRutqHl_&({l&0%?<|*ib1;bK{iZk=`tQ5@j3=9;UN;7j(6bv*K6l%TAof#My7(8A5 KT-G@yGywoDqO5-a literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/icons/flow-decision-icon.png b/doc/qtdesignstudio/images/icons/flow-decision-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1566b07cfc6ac2a7449bcaf672d523455544afda GIT binary patch literal 568 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd5W$eeQS*<1fq^C6(btiIVPik{pF~y$1_p&> zk04(LhAK4%hK3dfhF=T}3=J zxnt+wCH(mRf0E6a2W!I>zO zk04(LhAK4%hK3dfhF=T}3=JKSm!skoHgMaZXS|f5GE$ZE%t~#B1<58a$`s5k&X)8G~cq8irwY+ z=2n*9Q*eKOdHQF)gSzF*76keU^FQd;?vHMGpL#*?K=j{#JPe*(wJY|#idmI+Xt7H1 zjMvVaXZIKcuH(P0DjVIL%U-C}>>6EtZNirPITNmJDrA4TZOY3T-5oC4ujL~f6!c=F zC%xae|J43dC1+9|J~<%9ZTj_&^q-lIZPzZ{P-6LbpQm%-S4%-Bf&Plt&Q1Pey*Hd+ z{GV4~uIc%h;c4E**{6-I&%{Mkue6`f_b+M1T{9E8OHbG*{ggVmWYIfz1_lPz64!{5 zl*E!$tK_28#FA77BLgD?T|+}%BZCk_11m!VD+6O~0|P4q19qQG1{4js`6-!cmAEyO z30~a8z`&3UvZ1&v-6}ahH#aq}gh9bQH7~U&u_V99O2IKDKPgqgGbg9CxCAVuU}U0a zsAr&~5FF;N;960TUsR$HkW-qj>zSvZ2Nn!VEh^5;&$Ci6(=#woa4OBrNl`G+R8UB) R?o|Rg(9_k=Wt~$(69BG}+Q0w+ literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/studio-flow-action-area-properties.png b/doc/qtdesignstudio/images/studio-flow-action-area-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..efacaf237a1f26eb9c0efe9339522e77b9bb0dfa GIT binary patch literal 23739 zcmeAS@N?(olHy`uVBq!ia0y~yV9aG;V9MfPVqjp%?`sQSV2Ek*ba4!+xb=2#dvtK* z;_bEnSeM&;ox{)KDB$X=-*RtuP>u+9Q_04KH>8=Ax{?l>_3>IqFtCOM>N}CF*M9L|+mkR7E*=F1AC`Jge<1ilck$xIpLef6bz^`1{(1A} zeL8;R$PvRTm7A0Oel@F9+RokgkKcgvCr9e0`7{2Voo#;j(4mlO)g!MLELf0zeO+P< z^S;7Ij~*@ao4e|xkl?&2Q%p>1Zf;6tTf$LRJ`vgD*p4|R+BYDnS1dr z?Rh0xK8vJ`JXKRJaHn#e((Bimvm@E#Pov7_VpIa4QVqsh#&MG4Mv5{GTp zPqm4+TG*bz0*pAiUy8H!HW8 zzMSt`{dD@$u)urt)i5{-_Te2b)=dW@F&%={#2^QpRyz2zV0e&$b_0)P1) zeRpYFcTS-DpbLL$z+RMbSzy;l2grfR)nVW@9&{}CNulH$JN-&cj=vxl$k@#uSVJKp=c z+P*car9XK#eSB{6>~4jI5C2k4lOo3-N~Yd18lOGLx3O>Via!N|u8K+o=gczGg@88#_a~zTX**m9Y;rFG_HboS_ zZ4_W$-+k%P-DRf)VxKQg`e>LQ8>xJM$G>eF$}O)ZO6b`{Pu-q-^=8{5MY)T!_StOx z`BSW0a5C4Xz7t}1qYSfk(G6 zZZZ>4xDk4#=IHf+d-Ht5?@a1ElJIcnt>e;Xo@IYJab;(_wzQtESkIg(8z+9>*>y)l zIQMFy@9Za6FRP3EoUT;CEGH=?DaZJLU+TI>sF7Hwz!{!Bmw(k5hnMbCQ3*7aogYWTx z+%G+u+8ARKBO9gz^3NysCzlmeRi{o`z3`8FZtmNer-P%jC*AE`F>RIY|LjxmZKqzD_wCw?tZDDhFS_)1UCE^nah;Xl zlkdKKJl&$f{ojki-luK9eZQMW1gw{ov74^RzkG8=jal=tC!Z>H*iIigb?;u&>NU4` z<}F=3d9Gypzp2$v0<+7O{B&Tr8+uilXW!JtlbcohSDx6lFn7iYTfNC=R5o9odFlA= zIn(1ZR#?1PcE)sB=hn%S_b%m}?e|#6PG8U3J_pV&|diwS$;qFS4w&aki+VssEqOM%j-6N9p(YLDQt>pCkzm_d_ymH~< z^{+MeZ4Pewe3iBO`GkpY%I&Ie7aVKP*|$tP|GNFHH1EY9nbw(#9k;&Bvd~<5-utp8 zZu;E(A|-okFJB6{uTeW^O2z)A{|~SKdw1^L+?&y1bHuL8DE?M%o_|QKd-3Lt`_``Y zymjq=T#@C8Da$kqm1b?Q`uuA0v488TCx$hj?%w<*Ju%$7Hn%t6*43Xj_nJGmvGw;X zch3lWz4=w~qBSS>eSK8?sLS~s&my<3RsB_y?nk|8b=O{EemIwT-IeKb116wGm-d~>JQJDk_$<*av-Ia@7p3zv z;!ZAIFJ$}DWZL)6Pm>OFci3$1JC%9jW`d`M^`Elc29=E22{FZCG1DxjYi@2hqwG9C z$t}+6m1COSVcmyQe|RbQ2R}+#x%HVW*KF+sp=px)_E?+_lJfe#bHUn!%8y?O&br&T z{L+`H%S^5vntW*2*dT-M@($T|cr@4}JEwj9>5mDeCn+ zyNZJOD$j$aY`&y?ZsU5X%T7KkBGeSkqr1LaSsvZH%Kziz87)gf@7fkE{NlPs_^jcw z4gWqB>Gi%V+py@N*87kjgXY$V%HUB2?(O_Gn`?2fFCD&_JC%tY=o7cI1 z)%o9rnXlwHcVGRabxnU=z@HBldzxM(q#wKfdg8-lrh0|0F5J&gyEPolJgZtgH}YP( zi)g!;j&=Oh?N=*rwywIP`);+-tCjB>ol6}5>)Wn>y612B<)f)G&u1K3cG1S@i{?5l zIl(nP`DbpYEY&Ow?cc$pxqjzH)=SGh7k1x~Su=f(;6ddNCw5e~9E&N~vE)39t+jBW)lEL(kyeZ#5$O*RG%~E}4a?&SZ*L(d;6>G+254XRT z|6jB9P3j(Q!>pa5#qW=Ny_HmSAwjluzoS`{O5*Q%t2Ask9k6*b?bePqL;ao0tSari zb7PF3Xr?*aJX)z)*w^Lm!#-WS`lJ6pslQnkl+(}W1vCfk%k{6%dZgKupsNpIz?9^4IPLM@Yxk~SU0xHpgjZ_b`=S7~L)<&GH19q? z_0>hHScp+Wa=d}*1n#emZ%^F^j`w~M8A5uJM~rAckFNgY zhAD0TzTNU#xMl0gg-=V%AO5Q};I#SFDYsDY_3l-x>r1xPUfIi*HP!K+{7TDr$&X+7 z==|17z8J|QtuC%!ooy`F{qJj<`P`#V3$NHIY@Fw%vsf4Nb7 z=Wm;*_X~60JOA8S{ZJ58%k(pZfa3DOUT{4Y(yL|sQxsq8*+4mMsnpJ$dV*V>Zsk3FjFMqq^8>Yd`uw+?!z%k2{PQ9%QdMtTX%R@6D?3Ij8<9KYX-c z`_4S0XI9ZgCm;5u2YLS7*t*95E63r_9=_309h|2a8rE;)GuEwHbh(SW?-)8PVtz5ZR{@3p+&8nz4 znfSauBZddJS08?MF#JfV_+L{Vx3=#bpwxZB{-R>s3=R#S9XeJZ>$dRC-l1FYl&5^+ z>wVVC_q|Hma4bIK==-CGl^IHBv^(7RE!bID&{@1uvcj|(r_p4)w|{!dn3s<(go&#iB{ecI)F4=8`&aF7jq zUpK=-FHXGr%bBIp=6e5YO!SIYZf>wVr3-2u1+?3XLedF{$6(WB#K0iuD9OOk->`8i zBZI|#aXE0C4cz?dXJBBk`NWyf#h36&R8Eq;UqP5b%M8-PJD|*PK>0)-!vnz-b6jn* z`YrA+)YdgdKjN3O+mV00Eg_%%-}7Gu&psc%##YI3Lj2+D#TwVv^L;Cn+9PXc^NIcN zmyUgN=NFf>IwWhh&Z(&=fA93{MdM<%ufHEuxBRj;cH5`L;Zs-f|3VO7&&TDJM~sx# ze%$)w;?>~ell&6C{&FC2@-N#P@AY0(o4%?1+O=AZ@%U$X`9}ADHvJYyMN6ONZVUYD z_3)Er(cjCFHg>Zou};o^`rt`M_QC10TaQQ9#Kn|l>|6QhjV;^#Qx{JjoOC>7$$@0U zn@ri&*2R34A@ax1oV$3h>9oW(Wi9t9mu0s-EuZ?Xc(s9iAKCiv9YzE8_O=b@#R@YaKY+Vwa;3T72eiv)Q{F z`xGynow7!!#Q3;sXNzVZi|)q_OD^x&*6n2e?#|ZQwevS~I=_AOr?UIc^vZ~hCaOk< z9zU4)@e_x=#n!E_Cd~Fa_laqpSKQH4`xu@b*}uwicguUR+4nDA))VZMz8%-C|Eu`z zw!8T+|9{A?FHbLz{-$Pqe#f6{=CZtt+WPjbd;a^`#+luI*GtW=ZQts-bZ&n9^{HW7 z%eI-CZTtRpn*8U7JxKZg!-@2RB~RzR`?f{Edwa{Hf3K83r(_xM?$N0GzU$e=zv`vB zzPWoRU0z~j!qzuUME^roaBZpY>J5beaGu#t8VM(F6B3RXDj^m@9w{0Ejv$L{ULkZI!ga%p^2)| zoyQL*7Jlh)O(}c*Id&C$ckxwQC7bP6v{&wUvqRjw7TPphquF#}w(e9b})>R`Y#t9{=9+-v{;)iv?46^Ww|(FH6=!xA)|CIS;a+x0dDBn9 z=QqN8GZi;&KI!X}w@u`IX=F)MO!1Mqdfp2ID(>~aYPEQyIb|8!NB8d?FJGP6c1Xg# z;)!v>{=b>|w^yIJEyCYgE4w{x*2N!=*JsVvTmK-?(BgDZ)Ct9&V+R5!E8Q+||1Da- zZcqNDi<34@S!;Mf#bj-0QJH4+J#DpFb;q}g#!USw*!Q=~Ha+i|SeWqMJN5s|FYi3M zrtzm>tGkK%qK~!*lpntoJoica>{fT%&@{arr}aI(zFDrWXgN{5t#$VOUAF4)LiS|( z$EU7)COCbE(jn!VpBkELcc!dg-Q_;#+nyD>RkR&%%bu6YZ=2QgO0ezu#93yoGapQ} z7y31)R`vanneM{;K`QfVZ~guDQ7n30ebE&Y6B&evr>_qg?E__#c-Zg4+V zI`68H(emJmQ{fkV7hInCx$ml3+=6BMX1@E~ogx=_X6~9DTAC`qwR$Q~nqEEm`J~-C zg*Rc@u8X9d#r7}x7&hbP@`{$s?eDg^6e*wSVe9{M(croK%DV8n1HFa@{#8rAUY}H3 ztaCkeZ|45Jr@D3|_|+W#U(RgVvhjk5MOM(Cja4man>Dwu|9dV=S}AbZ;bU{I+eT*V zc0_Id92tL;(R}j(?X$9yt4~@vZRgp4^OyZv@sqcohTl|cH0sarW0CvG^Ln4p^xT`e z`}e%fn&z=Y_wHT)vfVmXK^L#zSIeAW*8O^RYx?vZ@2W0+T^6b&=DoXm_WRs2h1Xr4 z30}_rvm;ba-Ly+T`0x2!+aorsm#qH(_4JWenPTmjQ-T&|Xf3x^om8(Ae-TymE#Wz+q z)%<puG+k{ zL~QzT#m9pBJ}e@iQlE6ryDQAhHalPG!Nx1hkv5GE+ur# z(Py(h-1wBoHM!z!(usH;&M8;Li`m7~qZ_k=eD<|Ywfv~fdSpHS4eQ+k{OVdN?fHjN zSH(PCp<-b&F;Skqzh|}kf$di3xdJvm6s%x@PA@o?F*EctRIp$Uc`!EPXr+S2TZtKK zIWYf);G6vn3_o0u+qe+j4f=^*H%>g9W6d9vr%| zEXi-7*`phSFaWWnfl4Nbqe@R$1on_GhpE$$k8i_!`z>FeQp%61kDemv^won$eBRnqx3|5@alV)#cT(b*a@6H%G1+xHd)F^Ldw)Xo z{JqDH{f?XVj0q&)TykLViC#|21w;#m4Qz*<6ManUnWa z{c2JAAH?D>7CcLKVUfk$gz&)6qVdi9Pd)TI)TD_}wQRlDCUw=zpa>|sn{x5YeUMp69 zfB$dOd}mz|!Sr9tO~u|B&F^`{_TY2Xk^A@SdpuuM|4~_KnV=nCb#amV6O%iWs#7i` zxZHo-v!rPL)=jprcg~%}!GG(eM!U-9Kf$Zt<#qdL?%&_HcJ;)be|QS!~N({4?kcRBU5+?lK2*=>x1ZI^xgbmiKtlyYUQ zW#4@6cMHAT$;zh1H3KoIyY`^m%%6szm0kFkY%SV9SI>s&!2HJ(`zLdxvON3r*>rEd zwe;&O*WTRq_qWBw`&FpyeqI}YURrW*e%u=)kH_!2=Eg05PR!AK5`X_5 zr-_n_WP4pUCw&D7FW3lF4}h9cv}hEgYHi!j<0Ol_$={r?9YjUUpn4Ao5S(Tq51im z`YRuet{p7+Bw=Hed-1&K`lKAS`WE+)Z}JC0-pQ1c{QYlD)UCAL-71>*Qsy7d_$cam zuuS+WTmFL$Kl@hvzy9yqso&}46`#MbSG#O%|9pA+)ZR(y?9ZjMGynSaCwQkbsI7DF z_^iw~ZJLb2x&9fCW`%_9xgVJB(L6urz?QF3QShzLoQ9 zcLM!qrto{`ERNsuWKCMeKCXTSgF>56AAj2je=vLY{m-Xwwf^_2`l_1K*PO|yy?ae% z<@)JmU%q$i>7{4z&ys&xdEfip!#kI6-~PSp;Xl9jm9N6>zkENH=@DrrE614NRPp4y zVPwC}3BSwhPTxARbS4kqbm!U2?wpFOoLXUc*5lZgmAfXh$A{j2IP=bz$`5Jhw0_&1 zb_RJ^_!@X}9y*@@8M?W@$~}XD;X@{5-X1&&p|;1}<-vL8&&3b4XQsO*x4APkK*n*v zbuV~82s9Pb;l3))ZqM|Y3lBA0rzdaAyK6YMteP3mUZ;<2l-v|6=@Asee=yUN)clFYmdE0a*zE5AfCvxq<$nfhoKe5g$ zHHdz1m?W8lKWiT zPVYM}_io$O(A{ZIYBza=lohhR{k&)D$Lc#4)lcS6%kKMI@=E3C($%{|Y=XjnYT28c z@87U!+K+|XcI{cSX3?%`yBriwUwzeeY11aHg)3gUo#=UA_hfBvT-JxX_G^;mPs=Ol z)K2_v@c!j$uEf}@R~;6=|EG1MZvU!9e{SBL!Y!_MS9^{0Cy|L8R;^jHWzDKxkDe~R zlfLv6Uw7M=r-rSIZk>8`Da&Z?q2v6Y=S>Z{e$qQ8;^V8Ei|@Ff?^^w8UsV5}5Stsy zx2%HGFWijzmgAhIZXH|e?0ht@*y>95D$$JB=M#!5b&_kdW?SXP)-wN`R{F`}){*cH zw;O8$eSf)iX9h2?d3=2GOUq-nt5$p7mn(cRbH%4B3-61vCNs`HyAav^ly~+S*TXA= zHQxG#?Ynl(&|q0{h0LspIpPjQ`yHH_Yxk}+j+8lOGBuZ>lqYRtWy~+0%EZjqXA?eE zlqf%~YiXAMzO?d*yjkJTQxnt+i~6tF**>#H3WuiFg^WpEu5?5Yrp8v^XhI2{izW@JA)c&{f{JMDI_Z9C`oX(fm zD<}UmI9$dT{(FAY+v|RM^M0CZ&3ymwB;VeUm}>K`&*DEn@B6*{<+C%d@((FbKD)?B zOH@vG@6LONGW-rr-qm%5qli83-Ks68b{(&t`&F`gvi#}Ki+`Ow`83CNcPxMF)tS;~ z)v_fkWUBO5?b$df_rc6BPX9Wy=gSrRUgqw1E99K*P5XB7l9e$b6?eKVjzzVL*X(mx zu|_miQ#&L0?l=3DYxnK$v~YAiUKG78;D^Dji?cNNkDl1mqro4Wd$6tN)vis8lwQ5| z`(bi(_MKG`;R5qM1>SkHZu9g{?jgR(Jad%3tGenh`=5KselFjHtC7yXrnsy5 z{(2~1#dCY<#O~hxzqySSEWbwe+@A9OU*5*w2Ono2pXC3qqE3_%F^B*YRx`p zvs&2J+Twia_rtel?JnxyBM`dOZ3B-^t@->~rB(Z;Z!xpUX*@Y4zbeG}SsLb^6~3i=jF{4 zw6_(%dhd45GUbk4+H0!I5~Dl*uTuWLx>LII1zTR{d6z|tw(QlO{(CLQ$Ktv2v%|w{ z_3vH3nR|BU^hK*?uRd#P`_6l={KeRcRS^#-?%sX&zm;eC#g{^dYM)Pk;s5Jm%IlwJ z_sG{jS?6oHx8~UWo^-$86SrG_wlci&L;v}a=b`3@dg_00S357;@a<`5Yp~kivqrxJ zr%w8|=SldfpMp1cw9Sy8sM+x0MDs#_OLxDyKI+T;R;^?8oBf43J=kxqNARx@rTb?& z_Bs0Ovg_RX@As0EG3EOC?_K*g|Nl5Q@WItd$J4j#%}qX=F7^7~-`($f4j;?)dV2a> zhu-1jzXyx2U*0Tlr@va%?oRIV({Yu1o8Gkgly{zAuf1RBP|A9*)k1r1woS0`p18^F z?A)(*&bChH`j6Nv9y6WzC;#u6)TEHlJN#zsz3k?n{p-*Zrd7L-aqNuJ)3SPMJ$KFq zi;rH{Hf*iT&JXYIs5_m*pTrPSXgXz~Y3obRsqSHMiBnhT<@etexum@4cwt{vRFz+~ z{PocE9Dxk&pxKJm3dUcuDq|164L;r{Yh9{;Kx!{QXVGKG`p?(kuJnpW7cBE&KncZSL2(ukOrU zcI3g6-}3)HP2d0L$K&t!eP@|e9_-w`@mjsIP0^kVmwukQt}gdgmz~mUzS~-B?Ox{> z{A+y?n_9NKd-R{&OZHzRW8_$`mtJqZ>vH0Lngx6Aofk)cJe>WJqrJq%_1(@Ly|er7 ztX`vPyC{3_XGdMbvky00E_R!-^=QqeS?-fO`g1Q=8^ zxo(}-aBD+_5?H{GF2FAIee>Rim$ z&3v@y>6i1nZF%ee+`I7J>E_~y*Y*D<+aC{mpa1N3-?}+}AM1oapLsvCT1H#NP4?F0 ze~#smJ`a=g|6G?(bC0on?%tEV#fSO3jF(rB|DIX%_w{{z9G_O@E^l4-@(?sfjxE8k!DPSoDMczL;>ioBmq;qNMy&%Zr`#oz3&dfQ?Dx83vd zpCGUOVf`T~bGtg1-Pmv;IlFA_i<>7M+<&Wnj11k{FZ@g*L$XTER($F`i}_JnRaFfZ zUA3!T-*b0*_<8edF};}TZBXAUiGe( zeR2Q8EMC)9ny0O*Ejpjv_^Q6ObmzrlF#)!9+I#lsY83e1;eG0GI3w_r_r=xP%h!nu zSK5}pO6flPJ?qsxxzC%+qv}5F3;6QnK#a4m+)S_D?5_N`-4XA^1@`2;n{-&;<F@;f_KN^k#{A2W`pe0tPBr#Dj6{7~Az54N?rZ8>r)p7iwpE3a2xrm^X}#S4vR zk-CfJr^j;{En8;C`-e~CS!BD-(rL47=SsR&rl?NTc{tIl_vQOtD|$SA#M4}@HJ+8I z*RFp$>&K6CRrl`iUp(pRwV&(d_ste7*!f8NOUL_@;mp~AF7C6k_gd~<)EDKUt*5nG z)YiA)>h)P~>*LfeKAJym!v4|)zMs7&oqyE1N=`QR%#1Z>IsG&j<*nAL33V&I(^2odi@ZK+3fdIP8aQ3vSib`CwuI# zZjf}G?zM7`uH9>Qp9QaO=A2t0pn1CajOS|JBXjm2QaW*!z_JnLy@o`nw59K=f#e4p9yA#!J>wX9IYgd2l@L9iW)tV_4 zUUS=)bFk}8d^u(6I9I?0o91HapKn=jtn|OEWJ=?jV~|ne_9%!WqLi~!4tEr-Z@tPde1nU6)$U) zlT197@>NK2+Qp}gzmDnf)mlwFFeS4@ZQ}*Mb-$&8!b7LsKDozij;{{?<>lI9FIT1} zJbUx<*JSptoD+}t@$@(3KmPtmeRl3H^)-9<-{o2^##F%~_jB%sJ>`OvLna=1ugJjA ze*iS01ztnc;Lc#f#K2(mK#<{pdNoU|5yOGyec2OOF;*+Zx4196AoEA5{OHkl5pT0o zb?(PZd-zD+z<U;R?+rR42Nif&K3RSzyy zJpCs9+w~DH_FBD@?3}H zPp;dR>~V?Na(!0Txm|k4U!D3Ml`;8Yuj+RFr5YCdE;)VW4@mzVyY9WvvpL>gH|k#; zIXZj!;T?zfcz$wx)qhROY}upE>A{=5Z`+&1e_y_kiP6AME^%GujalL+Czi99zDIY%O=uUFY17K1x2fYjLGY@);pU$nhqQKDh&7Ey!N=WAfUpvr(MW?0R z`ZvG}77J`_lX9Nau2V8UlaSfe@i*$y^5YCTC)7-$Et4;_nu5}@0T%d z$;?PeF`1jT-EQwfqfEYM9t;<3)&;Ig(GgNyuHuk#T&HyJ)%U6viwnugaaSYnwpqxALBoiZ6Q}QvOKGezBHzB1d$=fNUcYVrRJ}H3*9F7a z$@hM2+wXnr!i|s1!e{M0nwDUfIKh2WwH>shA3NE7%a^;8R{y?NA8@As%bxeIE0q_2 zKieIfwraoqBISt5dbQW@D~fhY&$6;EUVP*5o|6l~$~e z=>^l;lT}Ado|_bz*M5y&=4*UKdQ-h+sT|Y%dr9ZhTKiVG`myEi}&qauwcPv5s=ao?>}-VPMj}V zvsiB7<{dF&b1M!e6yM~z%FUw|8?05r)@=7`@r!pCXIgT``DjT_V_IfZYc=_-xvBBf zjW0435|XM_3=BS~v$h1defMy1IB@;B;Po5o`ut}XU!L1bCl7stXCZgSt|39I|{ESS{!Qm`%h&*ekP+>s{Yhm=op-}sd9 z?hpt@PSEMZb1a>``SO;cRvFYH#6fXBzJgd~z_LJ7=@bo#S&7x4ygA;BJAus8Qze znOVE7xBv8AzGR!*oj=R=Py5hO`(^T>BRfmjx(}xsn(R?s-OC^S*(`eD)P~My6Q7=* zE+4$$Rm;Yz6pN`oXZ~?quD!qc(BkeJS9YjXDo&sEdqdwY{n}lZC%SFE|1+d0d+Ewo zylJbAr^pGm+|LtN(@!|5|B-q9_6~pDB;KCvh+;mQwVLaz|GvAs`}_WV*?YF<@_FaZ z*zzJGHT_>1yNQs&Mw>^^pO;54DvI<@+^^ZMaoqIWsY2enmdiFgy%)v(XzAZ~;%Cdl zxY|B@!9`a&IhBbF9e+|e6{2X??&tRaz9*sZu2U;GbN#E(TP24K09vj z+o2_ro>P*tsIj5*$wXD}X>YIiY zxhGd->FuhsO53^fS)uO@-K&MYKW|mfz1seKVphUg|3x-VJ{wN$mM-c3uw~k`)r>Yq zNe^~%ecXHY+yssp0dgO|e(eR>@#MtesuY&a3;VW}#!D{l$!{4!vuIVtz?*PZ9J&6OO-qd}Y|c&KV`@%5l+63;;0GTI zEpPo2v5oIuzsX3};!Y_zoBMVRYmV6Q7X4_>v<0bfk8=*c`ZxL zO}UTXzTI2gAaIJ~z3_fOGk-WP_1)L;*)*b@2fo5IZF!|8w)7e+PbM`YBJhW}9 zWqu&YV0Tja#&HfvDFYoBov43Q*}|Wnp`xYjb1mb6pZn@>{oKdE@L}a&K?cb3ILOo? zj=~Nkj5K+GR63#+sSWN}+Fl65=Mpw`@72E{Ue7(TG;eA zir&zRdzhN)5~mdJ6W(oO;UfArb6L02w&QPlZ*H_Za(ia72a7Mt{AKzQ7n9>5d$wOt z*#Fba#8$+TVg6xdM@L8b>1?`6yFvRvL@dSmbvAdO$lN8I;S+Z%(~I9ItlP#SrQv4X z^w+yvET2yj`X+Bx`0?3GgLfwVheg**e-57X=)3Ihz$+hjCG_u|_spfOcV$IBQp@QI z%oL-6vuY;xr>$Zrd~0qAjWRFK->0zIBP-{Dqnm4UfX65f|QI z{J|sl(_(7RWOtsu`li#5&dTO*k*J8BBKF=awCx3S){xIPrN?l&?#^p}ilpU_f+iX{ z9199QMA#~wz4!9<-Wf^retx8p?N?pHtC7a-ZrQ6_2{|It)t)`=5_ z&NJHF+}ti_mc70#tu^^sLLWwPY) z%^_mVP`}09PU@{@Fz=Vrt?aEYUJ59Jr`|LTFU($}m=cgwby+gTuHW>uN2TZS1n5lM zW4`GfZ8N&cm7L4Lb8dle7-|Zk4F@dE1GF47UWma)LJZQxfzSIYv867vF`=zE62?z4mAB345m#M!zFB z?LTrcb*EnZ!(#{KA2EEmX|t$u{_~A*4%-}k8jzW}X!06E?rr=3e7&wNZMo^#yRudL zisqkPFzrl4?f#8F%GT}pwPACNx%0L*v*MdI|D-&_wr)|HTvb}P*?-BO_xw> zd~VtD-tg%Xysv)zSZ-<)ak$)GRjYHN>8FL!&e}6XCuyGKnQ8i=PNTnPi);yOBNV8p zI;wo+oN{@a!LPRS$sbM>{5Hs*?JC|~|LKBynL)9A=sel|=C56qZeCS*blv{`q2T(y zgH4~m>TjQ&A*s7hscKK-orb~}*Dh$uos@VrF>qV+Hptc|ZaKyWmwzcYhZrr3eQf&v zv(2{J8N6ci*4OXrwU4}RwCq9XoL=Xolfgmq&#dQ#%amUaukKm*`QW4J)t!5Vw!T;> zx#-J;o3pmH$=y_5oGX(H?PW;IF+LDJZt69)=j#j3v%hWnbLG=?ukEtAxK-8o=4zuZ zzw`60az9ReHT&P?<-cRa??tb)iSH6DtZjD{P>vL`1uCp)6elgM3=vUc=TYGvdL(^-;4=FR$ta7*OduU@6 zteUc;c1GvVs|{C9-Tv(-BKmf#(yi@%j~l1=^BuXrdiTDN+M6@vrYWA{nCqMS--qMC z*MN_!E2`%%jCRiMe=>1n4!f@sWa`~N;|dw565 zOZ)Ql*!=(3+vlmzzUseM`FWW9+UFYeW)TH`F*}?WBxb)5v^ARccEMLjZ^5CSrQ!Tb zLEhgs{gv`*TATivEY1uToo)D9z+O_4@818&X!rXCt6p^qPX5XxVr`avLu!`8^#p~9 zj=OEM@9|YVQ1-c|eD412W$T+?F&;?&45_)0Dxw4CZv~|o7;2;t`qYcaPaXo>PZt^SDInj5qBpKS~3`aJ2uh7B7M^sP^W7icaK z%37@hZsvLS7F>(3nGmg!yK{G1;+xgSwg}wR>GV8tcG{!8eo{70 z!Y)g;@41odFJ7_E&!X7&^TW-Lj>$Pm@GQ60U%LHp=+)rcAv69iS@-f}o;cex_XmO> zu2!}@E?>Fw-H#gA&)aT(^6;uqS=aG_Bi`fd8^*5|Pt9<0m^Htf4{*~YL{hH)i?0$atHtW@AEV#ef=f78c7O5Kh zcYVCtsxv)8K`Z_*^;TN7I{)q8rH=!*Sf5r=Sh{fk-fck|s%r7kapmIg<{$s=huB7< za?bai;G+D;TnqJ|NYji&l{!DPD+>dE|=g#qM6I07+GwO)?{&e;F-$L5knYg8^ z)y375riO29IQ<~{_U*`78(x^OUBBYwu>9ReQt|9Nb@|-sKmX}y z-F@#RKjq)zYiml=R`Ksb?6?4}6^b-oYi|E4aL)C=opO~|X31u*6Fc_c!_KbDl`nJV zJz}w8JAdioNx#A#xk4|w{-X&W*S?Wm^J7YtMfdsc(|l*mMQ0R5mhj32RtkW2YJ|VE z+gaSP__xd)nOxl;I#xDJ2cEB-S>pXYH9CK5SxU~wxvyWmdi?%v&U;C@t*5R}v$m5H zY*}Wur)$3R*38RO%T>;oSzeOp3w-%??%6|Gf$rNs1a+{MCRC&+*G5NA-m>=p-X}#9 zesBA&`&Yj1?fZ9c@=o7NG2P_eA$)SXeeQYHMH}xVeYUQ;rK(hzd^`K2YdvT+)bkZH z#S)i)US(CSsxKdZTc~Wwo?o7Ix`is=H#dKtu|GfN^2LyEn;IUu-bzz9%Bd}Tym;-l zBii%+KW)48xA?`L2JNp)*;femXGYB0VQ_BhhmIZ3R*>8j^a z`OMb^e(q5CQshysPJZ?zSuEShMIS?GWUIpbI<+cq;|IK^x}W}o^Q-s<1cmn z$(s+KJ}sS*e_omSZJAB(shC{1$3Nx>a`x*dT$+>2_3E8`=dzCdVQMz}r}$Sr>9D?< zX&66UwN@b2vofXSr=V&7jCJR7w0jDdM7rF`tGypMv;6UocONRnd@5KP&W9LB+NDeF zzO3w%xu;=u?pyOFpJSDEEpFv^!!H$>9?1E3aM7yy(~B}prtfh2c=+*0u0_prZ^E~; zeKnLztdLuo>CL_Hp5^UBXY=pQ6E4@fw`KWyqjqPuLO_nc{1zOlb>rY+8){xT^_Bp zQ*ha~gu~H=p+OR_Ir2zaqk8v1 zT+O(swtr^-th` zHQ9Fg@~1~XKAjRQQ*QgR>avz#_tLw2&we+vHUPEX+|QasSML7&|L^PEt0&jmbG|+& zX!ld3|3YNUzD};1zMQ_MgU@EJ(0w3e$ZF=N=lAVenvKzvi0@C0o`!dtSWIDfkrQmK z?w%dY=d4;Q*WTm4$3QS(#Zs@u#ygi?d$MW0X8S+WX<`iVIcHO5-@G+rlSGbP{*U;b z2f*8LYO>C@Ag%gY%F1BF^g!^#)GI!3&U5uMd~gK~urYwP+Aw_Ja9hampeCLHRC<6{ z5P?SdY?$1bKNm23UXvhW)8xbO0<=~aUMhhrcSz}hY>o}nf$c8^v)`Kr1_r+VJJ)it z>JjKhWQS>eXO*EFX59AmKNP84x?$bEeV=Y+btf*m;2Xod{fN9xO~L(jya(^`)kr1h zecAixu=kC_(>QLc8=6~RYwk;8oPSc;ELz@t>iuf1m9}r!zC2L)$mZdE*QJ}9t8YT~ zC);l;+f*}EvnE>ZV$GYCR!1(je4TVUQSVz>m|9G)WUA!EYd@m?ym+-T`Q-9*vHNEW zJ@t?|xMzP%QR9ab1*%RTK~__qWipd z(1QujKWOetjkK}*IPa^t zXP1{7@0@~XBH>r2Zolcaw|UVAj^33~O3X`_y%J<=Kc9YBqv4Gr`#dk-FNTuujPCzF z&>QUdZ2w{9Jq_8tM?ao3aeQ&M?fLGN#k(w#2k+*TC@e?bk*v}8HMRQK)9w3SW(b&; zd?~fPZ{F`4a%b1MW52d-Q_GD0Uw!haLhw=HH{0%pFZ=M}xzESTb2mM%|JfMs%33|= zq_nll*SBwdePj3US!=U#hI_Jw+tTahX56b?W$zyHRuqe$=q|zcO8#t?v)kp{{PI=1 zci-afQ|Cz$ z=L@@T6MUpoRCrXeobBh?$l5ED_e|XTA*1z6+K$`l`kspCZy9;eI!N zLa&j>jeX0ty!v$v_;)WgTbFpoIxM)h#?Cu8M!0PCR;7ur<{Lv=kH*pmm3u0|+f!0C zjl^a2R$6R+>9Fug+6vHa?{)7_u4-HDxJ~=L$#j)7b2IKQO8(gK@gEx?1AGB~Fvx>?_{B6Ibt1U9R;yf9)oh)r?Z1MONnDkIYapYI5(`b^Sxl^yX79 z{;pb5GGF_;^~x7tch3v+tWCZwoWznZG~?2R%X(s+MP;p%7UyM!-&GW&)RjVL%CRo=d;Gtnb@*Y5dmwuOK0 z*yD1=`>bzf`o8wPs(cdh><)P4Fn&#MmYpo9tQ-!6VGi`YxLkEj2_9OgrZ4mCZW z{X(;O3)=Ly;dNaFi;&&~|LWsMwfC&)Nip|98H{xoOUv1JOwr%&1N|3YWCxqti2ofwniFZ~u63f9j${;=zM?@vw7kH7owYP_n5-Ee$f&ebg) zIi8iBJ2KXrs*1rzvD_=I3d566zV+7B)I<#9u4Fj{nlw+JVb0I+}JI`PDPH=6e_d3)4 zcaF&)Q+%fH1O81OOyEb>Hy?p)JUo_`j{*GNYJhIas%)Rz}_Ri#QC*Dl(dHFZA zq_jUq?nB2k*l1UKh0Ep3CwEubfB8CL&+qd3o97pb1wSq7EGa5kx*^$L_FEalf#v7> zS%P~^dHq7_?(e>SH&*2C-~DFu%C29ZUmg~<^?cQ*2-`*P3*CZN3dNs)JH@49!V6Um zc4gS;7vHyzWy@FhWS8iai<#W#PUn$)(^F#2@ZhrTr@#w`ja(!b9w~5$o}F>8YF&F* z{L$O5&+z%>ulFf3o#K9JnI7MJLEXpDvFQ+39u*5^lBty!Y1noM6_D*r1Rv~kD6 zm79&tyKEP^Z`l&bDBimFudL8Sk6T~A`Tq2re>1AtO7K_S$*Z;R?N@wrZ>!uDbv+q2 zXq{BIXZ8%Mxy#lY-@44My4t!_N^*tu)q+`E zZ7w~6_iPv*eD2ML6bztZq=E(9X5N?EpRhWcf#KX-2GC(aqztNoN|ywdeZStS2ORmp z@k2)L;Bw{<91h;i?hH0f)7t#m9|&$Ssj&jJw11Q^$T4PQf(pP3mp;6N%U7_>=c_4( z9gkojZ~)rwme`)2?KR<@+}xRy9~=$gO!}?zEbVyJg^QQ|*}ULkla*uKe^@yzT5fBa z`>fSl($^o^^LyjF$JghXs(O^$2ZYoe>OT4DZ)C`>`&0KEiz$f;DQ1!Tx%t5km$-Fr zDkpEhDkjG`|DB-JjaX?3w|;8`Pt8nS>-g9W<$OOc z)ji+5oj1Ma#u4w!Q@6jC&)poZ;*osz?%dmdmIVhzE9cc+j;~fKIsSLrKmPsS%FD~P zr{;6o=)QYBVVj4v%8|!XCyyUgp3gly^`YG}p4Fw_9|#)!lM}oy^Hrgmjc0pH_#^Gc zX^i2oy!m%bR9u#r`RI^E_|w>F6D@l!UvqAZSbJV$tzP}S7bh1O?w#ZvuUfT9g!2=0 z9(!eP_PMUpLeGt!KAx53Wp2`Tyiw>;p-sh;&q>>?nB^GjTijE4XQ%B0pGu>RdLYiJ z+jAbpU0wd8(8uZ0s&{fb1AZx8>wG2=98q6s89uWw*k|FFuo;}W8{FBRxj&Ix7`f(r zX4Qs+LZA_>>rVs^p89fZkFQ-}>!bGLk40VBSL+lO)t@(UhwhBN z6P|kIxqwl?vd6o&N6ZpCB;V}r6Mlc{v)oNhps~TPl}AdS&V4qiW#_Et4!(!;uiO9o znRWAYh4?ImKVfJ03SZCe{=RdCO2)o#ap_+lRz6W^Gqvyh#E~3VG#{e z?OSK}^mLHUi%BnM=-7tdy?&Hdn9U~1twKc{SEd4+-1?JM9-wTHuMWzM%4f1FmQUgIroc>AGX!~O1dceJbs8U=3zjkRIPy`a2% zAUz|~;=VYj_&{le98hn#>C4dHQ22qwv339c8Rz-qVMn4oQ1i#z=g+L`wWjIJ zXO7KS@n*rE{tq2*eBz&;U-$d8s(8n%bKktq?3RD+*Y197j@rbp@DBGGMai`%A{gxE zyN8_nzSKJB^n0zl?sISZCKvdu?U?*7=PX-aMDnM#G93ckcHMRl1h;keHZL}fm+XXe zh#&J*G=fI*%Sygj$E~@jY@(L_fW=;}`{1MKo7NG%Qy!SV7p%L`d#vfkP9|Zk`)pIE z%yPfdos;xbeZ~U0g%@+S+vlqLUwf+aH}b~Sp!jIzDP^U0{ofNVMdWS#DQo*yXyT5I zZ@2zfWIx@CVaIysTS~bTwtU^6zegs;3#|w1GJUpbd3oMv=|>(9qzXUJ{ukvd7ic?k z&$`VU_pM#)>7}BvP^d&=j)INT=35gke))E|{ocEE-rYRz>-f}FX{q7JXS3*o$CkZ1^6XI0eV)MdXhC5^;dl74G-pk> zIs7uwESWgF`RgR(CpsKIMUQPO_#D0c`H{I@=5JrFK6BM3Y1glHCi#>7V;25+__2cZ z;=yyp-^IKyJN=M<4=SMCd^wFC2$uHq=xSd5InmMenGwieKK%x7uic&Ik=HWw;*IY5 zReF{$Jj0BZi5t$Yx)Qu}-^Z|+sUpX$vOaXYK4pDYm9seX(X91*uSeEa$Z7Il`?I9~ z+ldP-hU)^qceG8qv>|S>hS6otsq+(*Dpim-`D-qp!Lr2U%l7MGTuayb^6IYN&HbJI zeI3fV0SPNAkMw-tFtk4nDXY$`f|XSnYTo{#-@kA7l(OEnR4DUk;aNFB-p7KxoQITO z{hhc_)ii&dO|on`ub$DZmQ(%)g*HyvuSq^aSivRhep{&^_W z;-0}{HvM!OPjJww9@(fAVJ-WEM?P}Qm;mZQfyyTEJOikpVua5ZAWzpdxbO4n2aO6s zH^m}4PxBd`MKanj9XqHjtmMl8n%e=53*w)>V31=>u(3_Dv#+VW!XSO^$F07X0m9q- zliuyM&C@EBEMENnseG9AF<<7A?=Q~GX=%K?;ep`2Cfn_wg0}D4_)yRw(bj3s^6N1Z zr>=T(M{T>|+*=-VYQw{)E_o%$d)zVWOUEzG{r7jc-*{(uzUu$??f3tMiaclOZ{U0* zc(wSD=%fde*f(wb5%!HQtY&AJgiNru^`i_kg@QUD3|y_M|SR; zGa=^+lRvDLnJX*%w@>`A@~51#o6~Opwcr2u+y1@hlWcEDTyI!^T6u}GmGtY|w`MKL z{rg^Zdb5wEcfDBI)+^VqaV(9Ud;YQQj4P3Q@^?pd7^h0#zQ1qn-<#)C4k+^+U-9MF zxwOQsD;7srXdY>@NGX2z?#?swBO5oFK6+;UckBIG?k{TES-Ia-W+n3c{#t(f|L^Vh z>#Bci6)N(7R!&&dpKUekRGe7A9*^5^R6c{}32wem*rB>dD4tVh#q&9-n!HPY$E5t7 z=zL{I+sn!gTRx`ESb0bpI>YdAB4hw-s(i&>*P1NB*V3}rXRO_M`}6Jm_g(zDK~I$L zS}Co4`Cm||GQRH2^^`x)V;Fw?`8#orY+T$vk4nTc@(eHjn3h7yP{P|L0#Pm(Dho z=ji+sJx3_T@L#bWL(N9Hn^NDv^NK}F4t=rGU1j-dkT7|7Cri#|9|__b5_>JDwc8{5Pu+O z)qUDLuan{@)kA`ewWE--Vw}Mbh_=^-3?l@GWEZ z|LY7U+wGm}ZZnI^GdwvhpHO6A$-v;lr^XH@CNnb}c#=@WaNvp5p4#{Of{Yd1UMYJ0 zKUe9w+Qib|-@ml9bY;6n?ZZQ@29^v`hq^?yzrDM=JNm%K$H%4rrQfi6lJoY~R!>jQ zApStB+I*0j_m6^`PqO|sDR@%e^mcixBd^#RDXkPf&CBQBS>ETpbF*M_@T~{eFJ5!~ zoYS=9*j(Qi3C6L7XALEN&((cgsHJ1J`uF#IwW#As)y5m0zbXCCRXE(ndwW~%?5?h^ z2&<)UZf(u}^5UX_<%Ma1VPWgO2lnYkZ(Ffy71#Ys^P>;{=UKgdae}@yW1QW=gS~H( z&fKhd75nSVOk?A;GalaF!rse8#Kpzy>+5I895}lCqn@4Vj63Jv?>ZNFPj<<%+#-&t zR|66+_{T<0-aTQB+KHP7jJ5JP-&h=rG%<4jEt|7!;*+Zj%dhqvtSdaBSY5XM+x^r3 z0y<{AGt`X9?36k)qid(_%hcCBQ>R}2_V%``Gt(CTe|9xL3O3H!F{5eQv0q0v@}#TesqR9~7O@Y`JQ-;UBlS-j3b7 zyWO5;+`oC#(!fAq?`j6|`EGlETuCZQvRb;WT3tF^Sur{I#oH$e&q@`4TU9Rql=3cP z!mUG=LXGB`bzy-IPxQ?>xlweL@3mJq{JJ^s`tq%Mx@4={vtv6m=XEBVyz_}UzH!|o zDRuAnSxXBH^KV$pRoIrcEn-Ld`5(6)O%SN_xcXwQiM{b^j&H36qL*(UeUy4u>r=-S z|CetfvwF|u-rcn|c)8ye|Mg$0z3$SK6N+z zX0KJ)p%iPh|AWe+(lGg%vn`9&`j0QJty-!vcgeAXPZ;#?UuSE=KNF4TlYn4n5wDAJ@h}sHS=DmXVeVDX(#q`1bhH$`+S@r?i?=Up?UE;!q0seUq6OMfgJGd;0tx&QoY7cUA*OS4aA-toia-qGcJhL*3sh_Kz5!oDr}+v}{N zt6>pqPhKs$bjxg6@YQRr%Qgk2^u12Y?KrvdlA7V)#@=b3fd;HEHI=-=)}HLllAfus zIbMA7(1iHAP0EM-LSLnQ{qSMJ zE)z~YI|gz2pK&#>OddC~c&}EzY`ZG-VNmJ2*j)7&>#ioH8(+|z!8LPA*&?;$9?{3U zB>7F}ZDH$87L%Fj7Q1??u!7m#q_oXmI=(^ECHa*CEw`->DcK`4{rEqD*^VX0nCHtY zHTb4)YB9Jho6*(0;$-JE(Rmt6jN~+$Pfpwrd}r#fk`_&qxJk<{damni=+?~Gd|^KG zO3}aBGn!(rx}KIwDk}YDyk`H&P`5iQ4~-_W1TMY2O>pMMfY1{)IX4!^{P4RlJ4&_Q zweMDP(Uu1sXG4~*3r#$=v-tUoIMtm9uSGpSb>K~t@@3WZRYu;EFIW|aDi^PPw#n)L zi{-4VRhFN)IK%7Yxr!Jc$LKb;qQL8Hd#}w|E2kEI-QM}JQ7Yc?gCVBoN%hCfxoX!FpImvh%wod5Qi-=$w0!&8oWsnw&AR3y5WSI2 zJeVP?)#XTJlV$O<3;S0+{hEHm%IDn4lPh;=@@+BcT)kS`hp*w-?jH|!uC92e#qgl} zujHxkj=a79bvSIwMH|xC!PRPptlD*>14r2zX2^i~V4~q<;^8*l+v0!IRpc2Mq}Y7; zq|I_}Bor|;h-DXXcr!6Duvs!NL}k6tGXCT9_6bW}EU1!ZV3^!|@??wH1jaun85y8; zwSgr=LJ=EmgXr>1I)>qc!!I@;ws+w9`wpFF(0 z`#o$Itn~HUSp2?F?)0_1h~0Nim+slxsHR$aNy_GE@zY^)wBR7B4qno>?2Ucp!wI_+p9k)qH1FxXkGFRgUcR^4Q1!gr8p$Q6VwTwCiHM8a z?|XI4J0Rrpy9&3$lbhYOeQz$_SvdXA-#>r+=JI>id{TRSAtGqstJSAGdrtSC;Q5-nHJB(P0(E%D`*7Q@-v;sqA#z6U%jxewz_Jm@YS56|Np-4Upa68)noVn|NFjcmdx{6 zcb>2LxwY+o@C+Frzdp6{pP!yq&AEH~_U+4;gF{0@ZG0B5u*kf$#5DWbij^x(Q*Cv- zf7L!ed-_Sw^gH@HA1+j$w8&b0jlrGE4c!fzD|l|q2q?(QGI!hWRCM@!+tS#w%R(J@ zI=B3O-ekPkax!;i&CQ+G z#>N)3J1o`E@{`A}mM_2Vmf!cRecE^ENkY-48F$_*T{-+jk9)=Cm8GSn-{0PLf4HSf zdTrOKCnqPj=3l*fHGF-XZPAkxyRIp>t@%15ENG_N;|K4l{9c9H z^A|5PZr%=f{XpRC$A3RLU;okwTb6NS?wRh`tI;zSCGAx=E?&QtYk4I19=(t2cWer@ zJiBq9=0orFpJ~TEX3TNAzVi8}_qy+*lS9w_waxpW@AqD_`=saTn8c#+gdzr$i6;=gi6QS!X3M zIXhU*-L~`2{-73X-?XCXtCfDQ%*;CU=xDd+1B>3p{(iPgt_W-O%)fd2_T`T4yRI!( zYdZ7w##>IVTgnG+hfH|nd+V8Rz5BgohiXc$RG*i#X0^_Lub*D@_20RtH@2uG7bO{~ zpO&~k@0{b$?R&qt9?d-Vb&s^1Qhm-c?c`7Xx3j|}Lf^j>x14%eqFU$gw(U11GS!yb z)r1#q`|omj*6LUHQvYmR68+g%#I-uSyGZVCZ_3Wc?-N5ZizdxXEMhQOdh+7c_H|#E z6qZbxymMB5>D8GsQ;UjTxlKm5WpAsVoDh_{<^Me@&%JDB_JWhK)7o^N zhXw^Ls^_~XFH+htsp#xH+v>;1dQD6^+qMR#Yy9mGkn{FFy*2y#wXO5MGQA4wmsL(r z%2HpHf2h_>{Y+$TMgGJWbEd?t3;*nto*901 zeel#@SMPqTx%G8s)m`-;%iSwpt`41br?+VhdwJgdeX^2sqdxt5`F81F>#Jc?n^s-z zJJPbY`O4}ePi)rev~P-dvATQ49GA2iG7P>sMfdCf+w%55W;=PYZm)0OWo5q^`~H5r zT{ZiT{r{i-QgX+6CoTT_t9SBaAHPqBfB)g(;Vbdy-(GNNT4uO2e~IGhO3ytn*7*x9JL0s^VpsVk`z;!EX^Dvkdn=^v zYAk#m*Jj%`vtC&!XLcs-`Pn0n_uSkU9Q=NP*H+=$vG=iT@6VU8&6*S5LPz%@u{NM{UPC2p1OK? zY5nP-*zc=DCJUbn`D@-C&teVy3;A)3$3*>q%4DD|RpAHLobNT9^LN z&MJ7nYDL5qPt6tfQx>I~=qLXF_t#|mm0P!N9XXQn;6URQ$ycvmd%r%=nHBl?+TjyY z)|FE$*G@3rZF^|Rs$FhM$5+Xnp8hgr?e}uMkC}@6L-BZlHWAr&i;R2^=oTu*LBGF_C*`|Swx1unR=kAC^u`) zoEH)eyZ(xvOioSk(|NT-eP>Lzu;!m?_vVX|9k_hHjGTiw2@ zn&+Q#qYNw=9F%9tm>Y#>6vZspYJIw*y|pZ3X@I0}--4MXNovPuhRyZqTaX&?L~in7 zW4VN)q959mE*s0eS|VcdqH7xKLdG?VE*j-&TI5CUP+PbB>8U&7Hr76T3>P%i+!tD` zE1&vH%)MXE*Ouu{5BnvHJRZr|k1yBuJbt1fUAp9w{dd>uaLeE|+3&SN*-#&4<-0sQX!`EOnQ)V3}LjxPrWMoJv z%Dwl5fq_Ad9n1x}fg#0srw-%(>mFgf3v^B`(mAzgP0BwzQzmd@JU}cpP%JgEh=E~- z%(@dA-J3MJH$jHiK;m#Iur?hZJ_d#?6U&(5K(H?9m0*#{&XH4GBd4^UWCS(%A=<#! zKg{X_8K=RGX43~%pLbuEn}1wCIe$uPd_~pUgjXM>%uWRyZrikW-VPnOc7*{Oepi+>;MJJRNR?5xeTW448L0k=%=ybKgmW1qZQxWYw0 zV{HxN$8fqC`|ML&`5|%6cSvFT% zc5K^XkgaROkQ!YM_EAGxVv)&FM~U9%V~uU6=NK4?PpOlg)&L54kY&BuMJB;hcfVg0 zEP7(~?5Wv-#zNu{A0!kp@a`7$?Yq|dSWIT2;OhVZ1%0*8X+eu$$!9B<&b5qSI(6s? zgAd<=#M8&0Wc-ZRt8u!_|4`l`E};0)t*ckR2p|-gPdj-rSZ0T{-da`0{|uiF?SEo( zeVyMj)@{QUfL@AbdL*iV!;3=!J$^p%Rlyds6}rnC z&)zxvI(BWT)Y77cw!f@CeI|Lu_wF65;9+oKS7Y~fxVbI6s7?49Yh2Qfsc{FmQ@=A^ z_cJ)cyI$z?(T6`h4?bs^bN9JnrFYV~&Z?Pr8dSH-tH?a&489 zYh`s~os*SqWo?B&J2wB4;(F?Ie8v2wQ(I>?mT8;s>^LMnuU1QVOMBO>Iei;Iuj=eRzw0`fvuR^6!~cU)*>?-ujl7CBb#=?z>(zeN zs{HSwtSfu^=k(39t#Z?&_u7k4`=LZDHTtUkkom{oM3s z&7D2Bt+%&|?Wy_x@9AZA|L#1Ud374brRKtuh3&iTJ{Q}ZJgcQuH7ESbr`&Uz&+kQD z(psLAxo0)w#GU%y>#JvV|Bqvv+`nw9Sjy7n%brfP+qu1Pie3)8ntJoet5ts&Nv~aU z^6G-Zu#b;ze`;TU{w`|z?&7jzLfsb8Gh|l0{^4E0aB5rMrccI}y2a}steNohnGgT{ zBgr#8t=(Qt5dKhEoipP^@4p+io|WQhJafvdwCi4Ts4X?08UN+i!nHS_a2+z=X|;Q! zMW2D_EE&&W$4`FO8cTAwsXv)lzWE!^N#2jIPS>=DKdS8fzU^Z9vh3%=|1)OyZku-R z$KTGv-8nCn&wj?#%c<3*2!n=Sz*%jr+Va$mfAa1ySd=&teA?#V|QnpJ4-tKc^=K}d#>v4 z;ya($spaSiU*~4sD7|LQHTzSaW+x>)sz(k&@7E(UBiHqwvogIJ;9Y&>+mbhz z{c3qT6|>(zk1a93x+&_j!TU=*!E3eDj`vO$o;Bx5WE%&cVC^&3=XdAa_m6sdX8p8X z)grUcMt%Bz$!zP)y+2RPT%8!WacAlje%mz$JC~X6ysRp|WARUUu6!H*{gGwQZ=OHD zbIRA9)~z=Wol??#n)6Z=ROYL-Z!)lq^!2NLv24d2W4|=B+j1ZK{0*jBA$efOx53ktu?@zH^{orc*adlaqHP_wj*PVT$a^5K9$P=IRxO2Sm8G37r z0w+r=eXQn<|E}=r`saV?mOZK(bUo|N zY85Y?zdvUh2&%Cs6lrizUcLEb=F3~}y1cD66=av3V>JhbT6#vkf~xg_$_Hl_{Mm8# zaOtfByz8qb8<*~n@Yu{fL*KFd$+R6YY691)k1btu+nrfRE>Fg(cDZ=)`uFye+IJ^;}^H(eY)=F-ah^}Y3jYuxfktL+RQhs3atuPJ(r}GSY&od%Ur;4=el~xcx=x?G;Cpgj|G$1-e^^MZYuR~^_!FXqo}cBWKN0!) z=-}n~^Do{$)UUe5|Mr}orDu;kv8(&Dqvq!)z1Uqf-|vjd*+2Nkir*o8qVM*Wvt@GWmqoCi^`aXZ+5esQ$O> z$+uY(tD@Q-Z?o0Vt)Db`-n5B-Ek2)WV$3Z(*4+4ZTJ_OX6LH1mU!HDmzkSTe_Du71 zce~0!sr{#?v2Ejx5QvKS*HeBWuK(l4H`Utg+}eh-#3l&u&s_2F$6UknannVgr98Fk zTXHa4&9Cles_V>}x)WUH#|}%xPPXV?x8vm68TxBKJycRt|5-iL=kw{h$T{=oObh>E zvHQWz%P({nKP)oXsb;*h+kbs<)vwz+od=7}=|Nr&iAhXwev)o&=OtY7WRepYU_Wr+b+t=^=)ph#j3K21}fA9bQ z)A!+<*03q}_>(OeTLmv})!6ct{p|jEXV2|e({Xa?yV(W@F3l2C6nu8+nz3wx>5;5} zdShkVx7VrE9{t{>l)ZbyLvvTr2Nk#Abj#Hak4wu}DEd$RBl|Iv~c5rqd9?AW;Oh{#Bc{Ze7|CUs(7tfB)ZY#m~&P1devMo`B8|9|)Ycb8ATxX3kx6C9#z z?>{+WSjKgxX2-T9C*|y-YPZbCZR`v_esXH!pSvbbdhmR^3jfFZPcJMypgw)pXN#Sw zr>F5s8o8LX%Dg*Y|F77|i78X&<&{Qe_N1hwBVK{~U%k7#JM-0*@AvD^-xR%id1bJ= zz5V`XcK%y8ZrD_QT9SOcPfkuwTt9A(WpP?U!h_CAV8G z-JtUQ-{{#nT90ggJubhqb1Nfge%sGZP5iIcyi1vXt$p-eR}xy-M@Z)ef|IU{{Py#x_`f3k3V^G(V|6lKc9+kT6g0{gx=xh{_|HX zSfQ}5`g>oMM{scP&h5f#J`p<#5=+(8Wkl06Gk2E04*Rn1kWj$3v&Wwl9A;+V-F?wV zZ;?&crT2R)R4QMbJiff-g~!E}&vJ_5;^NB6$`)z9eEBk^=>7fu>(4#ule6_IR^GO$ zgxb)SPrQXxI?mv6>tSfCnUx-!aS~d6DttO7LpoU)L44J$N zh6Rb;vt$0wyQcawZuyO)Pq^%-bS#ZNcDwf1TVdI#$(v)ZJUM4-JlVSRl}P5y6)l1J z%XaOuGJo7SEq98J(?K(B?bSPVCad}W`gS{izJ0ylC-?P-Y?hS2d-v|pb`!pSqYE~i z?{s;qX4}zW%><_sPKgd|{tSxk-}`U)~k4O>{bFP@W;fP;I+Lwru$c&C+=p zR-7`bb^rc;zLBD?_w<%=+C2u_XA2`|%IG>STC>JSSlnXfnsxBN-lcU{>;JxvpEz-%ZS}V$KY90W?q9~s#kJ^Rp~>c{YPJDfu5VU6 z-Wt6__r>3g+>Lr!WRPOn4=KY(fgR6_T ztvz!yYxdwQ{^gn?B8`h}Otzf6d2^<= zcW~tYPt*4YuuU?X^}<0@*}ZSc0)_G^Om%nKXWCSLvj6vyf7P5h{K)Zr`s|a8*~jDm zeZ1^`QmV^tT94-}wKLD=Jo|e4`KbrjrrFF-``W|)iec%`m$^f@*6*|nQ)w_eKrv;F4zddzwq{9iA6xx)V6k7RwZS3-Yf4?GC~^^)Viw6Qy^USc_G&W&xKKPu|&7q4I1oHJj_j73x!t?fv`b^Z5;WGh|LJ0(Fls*kr~`Htv@_T0h4*r;+Y(z+fFhRIW`xr zIH8DPOM}^(WUEuJ3o4FXHh&*yr+x0ce%-G}XJ23X^5JmYVxO&vMGR`~n>4s5H=ks@ z5OaG&-_I}1{a#*^_1Da{yW-;?Eil(u`qh?)L0*}eZxq#wWswaxIc}C?R{H;EZQtLL zRU7v-Z(RE4^1526iMO46)}5F5zVqB-pP6$d<3303N!#tS!RYG2Sb+w!8*SD8mb1c2 ziVr$us)g@gUdpJT56kUq_n(}p->1PdFa6k?mgnlM^Of~tc255F#&y+u6XQFqj2YFr zH?DllsCjenWlvQ-oE(yWd8H=&pA%?+%TB* z$G7^%vi3d6!959(;JuyXyYBm&)vgz_bqmE=7MN~J+{+le{mzL>Z=>&;zn}C79(FI_ z+5Rs5M9HpOZ+g7%Scmb08>!u!bgw=s$thbdHn-dq6mns=+e&}?Mbz4TJ9v*X>G6{- zzs~bNW3T>x+yWXB3)Plq8@>oS5w}mA2+&Erut=cp#w173I2}010@cLh z{=IwJT{LY|)9>HQzJW~NcD?QQjydPfSiICwRp5uDvYXG+i*8l5xv`x&ygBpukts)y z1o%srJ2FINN}EY0T3=bPtGP`%yftO%oRW#ZCa^=(hnYP{_l0SSAJRr;FY#yJ-GcjqbpOFuu)YFGN+=PB92 zccZ!vJYn$RO9c-;F)vuU4Uvh!i_vB=esSr}Q7|^JoZ=ceL*`u*!+|HWrk_;2rmBoA z1nSt&fD{#=`kqgXeR8wv0v#W|kYaI`1xuMhV-`;mIKg9R3{cM>dcwf4_SloC%a?a0 z6zN`k@?neKl-#4BK`7{iJ*cxN!@#h`cCxm<{`nIp7RCw^E-76_3CNE$A`PtbEv(4w*R*RLsm*bQd zUAR3lar?Xb^#a1er=O?W)kw^pHjQm^Gor^rR_ICM;fT*ZnbFC-#Cne3ZsdPGMx$xw~%PsCM7XrJE6{@*! zv@+UhUH;C+<<7E4QzXH~+Z1rs-f+@%5r*dY@+Uxo@Yq`~~uTX1WUb;|c-ZfUx(3&(TnjxVEs+zz&u*YXN zpUj-iQyR6W@b|j6v%{)(_sHkm3E4i~F8R)LtA3-@vb2h`=^tmkH9B}IgkA0Wk{5kZ zwJ-fn%zL>ks9yCtbK-Tgo~vtZH(p!ys{NyexqJ59S^cxDezvr}n~}qi-hA@v(I*W( z;KV(9`^m4LE$08$F;;r;AZ~v1@pCbsXXk4k7L7gsPs6_MbiiA-yJBa=-9^~W8z+|? z`aHSmyrB5HJD#=Ql&+S~lJr@3@`8N5g|T{byv(Ciy{9W)_IUdj^YvebSblgxD1V$y zRCeU)z{#1v-`%;#JGuE}<26nnzSP7b)0uOw{+e;=gDbPkVXd}fY@&(+;PJPx>m|Ks z*`p)*-ej*izRz?_RmWK|8CjJ!`@dMy&>u8rk%lSd`niz$QoD8S$tTd*fw+Ol>#f!_{D)IS$eZ) zPCZ#Y`(bd!8Rg`Sv70_`IO3T!yYxgJvwQx2)S?%a7)|CI1|KZ6xlpKRH}rnft~CVQc!&pOW+ zw#F|qKUQ9^Q#L!k@5x)avnM0-mrtI#e*RLo7PmAJ8$GS_mPb5hUpaDXl~Iw^XN&IX zQ77sPo+qArJzsu)nb}&kz|$qC7CsSAjr^Y9W_zmsvsU7F7UjDav)8ML?9uSqQ(f8n zc+Y9q{H{m&aXaOX)_>giW0AZ3#KqFn=WA+ynV+PvcG4?9(BLfNjF_{j&c=t9tDbx4 z*UK9nYYrMbpLO8Luc~_*d$t!%@aRemo$PIGb~7(M=a8NC-c`_%H{mBpLKFJ z*O|S}^X=^(CahR$n{o8+^?rXp!z8Ay*^A?s{=8vizw_RUyPEQmnUiNlWQV2%`rmWQ zmsob%blavmhs$;a32$xB>#9F{+t_XXSNq?}GuO+nTNq}MVd{GKT4WY~WW~FGSFawv zQD5}sGneM+wAqs$tho5a;o6fW;YweP4?HpO>y!M)nzF=qrp(fse}9V)Oz!@h^fzj!Z~@i$%V&34{uL;@?rDu zu(J|(!^1O*?pRp9F6}QmzkAk(pT05rB1iHhjNS#Ly?QtCRt)dO%;U>9Ox$rWd(r1} zmeSYriuR_*>vqLub571?V${M&lG)%m`l z>GPx0n}3BE?o@o8eBw!u_OGn-&yVLyXeAYeWxq@RQT+WvF~ z?_A3_x6PQd?&uzGOUv}TXSXC2_4dA-ad*%4&S>`+A?G42Vt?4>UEWalxoN(5{H#@l)eNDltScN(Y~J)>XYI*Q=zwd*YYudDvPJbU3t zXURIo!o`#CFL`*KomcUtuNG(`?aGQ3nOEmE~|Y^z(9g(%B25%O`W|*MI-yYUv$$@NaGK?=5en<4zw)Sd@Qm_6*)dn_IrB%bcp2 zUwGi$g`{sc*KB`(dcIx##P14v_Op5Szx424vsR1U+_2k9^X!uuF1m9M&U?Q3UR}-C zFE>|zUmxUuR^q^wv^ND7fB!x||MQk56W(T%+{gFERq8+Gi^sZI6yWk-c#^F)P`A8M(z z?YbqpljZe{fVFJL+7^9Q+wzsCmuE)JmgJ;UK^s?idhdU@m8axOudh$ukY?I@9gZ{{{GHFo25&anjb!N z>GEY|rM&igdpIX&zf=n^W4a(w+G%3>P!MdgO*fEU>hkedp=vaF4ql*FA2n zi`zYIe!M{0>#%!|k54Rrf9%MypsFv6-NV<#boSM`h=qs5#6(0$$jZ*0Gw00n&zbUu zJFn#y^)4v{nFX5VVes+GGqk+*Fg*wb0cc@*j{`b#| zfS4GYr~cmF%9FJT*8Bf{i%v^R zD=hqYdwc%RKR#YMnwpAJ7nXP};bCQEy`%l{-{0zWA$fW49v|;t$>Fo^>&%$NS#YB+ zl&FQjt`+ou-E`9QX77f&bz#MkD|vTV^=|f@Q?=^t7}d-Mi#*A#!ut#dG^=e>*ulx8Ag?|Mw?A>WjH)`Ma2n zR+)>+-Q3z_>{EPv&NMQ!pPOSD{C=rCWX%L<*~c>9bK75-NKeof_Ev9vEVpK-Nwsq2 z>?fUOPu^yoQ!9UTq|^S-Lw+ae#Vc=uR>)?izqzq7dV8K|+V3wfgU`>i-Mu;B-#exg z8?8!SD1<%l5L9+KZPwB+Z_g)d_2syHeMw1)j7`Od`hTD2PnaO!wS4E3`1-%5ptTsF z-oN_flXrD?JHNcR{*fyG)W3($q}oMPOxhJAzptzMU$Nz0-JcO&zqg!SEp<3MPtCmM zN5Q35&|2O_d8RYwOqi}8Kj~!Q$yi^7Z%OcK(>T zhn(lkxp?aK)2B~k%>0B`TAY;pF6k1vt0c2u&Nkzq!n?O0A0L1D_~OmapFaKjUjP5Q zGB?O+w ziiX-xUi@co^>@%xT#vP7Z*QsUc(<>JdbsfJ?(*WF`+q)@=H=z}Qepk_{k!_f;IOc3 zmoLA*v(uRM=Mg{mnf~+bbZ0GEw#?0T|K6&vi~1dzR;^g!p~NwnnW4cfv1kG7#XCNF z-$I3!vfJ-ht?c-(7aejpYQo9Dj_#7ivSt4B?W(`M`888!=Yze~-!tY<>3(*mICXo@ zO{Jho7dx1My>T`yn}WW|4<-{>yK>^GUQliqFB{x9(P zqkXN6h`FE1-Nxq!MQ6_4IK`W@^4y>N*qW-nGiTqqxY*s-$LAi$45L)8qr0T8J~{Ew zcO322}Qz_V(WjOsW{yEX!9YL&o=@eruIzV^W*E)13L_3 zlq_YIUf}6W%PVqj<59dXv~O?C&rjR$*PVX+QR@7YjP$FkLZ?`yossbMJ^Oy&?>?VA zyVE~EKhHccXVRoeGv-`Wu#9SINqP6=DRCS^whMytt%FT0-K-gM-YPTK^t0-@Nhr z`}>{Sj~+cLZJzh!Tc(7J`RvANANE#%Uw1?CmC)J@20=k~ez_$-FP7BqEPE^USIm2w zPGLcTg6`tdPSx{2{`@SqTD*6!t?T2Ab*l~LPTRCt;nAU1Zcwx`OlJ1=%Bu`H(*CE4 z$N1MKHTV7kh3em5B5TfezdnE1WixM|^z;u_t`#MxljUvJdULE*ap%5sL8)NN0e#+! zi#g`MN$u_F$#|sIsbK58=;#0WpiwLX%L`qYS+-+oe&{y0+)o1LHbv`@RZTWjad!!WSVm8kJ*P;v!CmW~n z+b+?b7TM7f8&ky0abSwbQZ8S%2vee&-&{u1sbJh1{FC!l%BYY z82??xXUVwfhYYA{e3D+Y%IezXXY226sQWsp((kbjuZiex{y9$`J<~gI7QBVUEM0x= z!C;&4b@AJ4w(YGfPhDp+`zCllOl#J%ZF=wW{0@H+5mi}jWF%#H_UKwJJ+o#V)|+?c zEbozAuyoaeJgcf*pCy7r9p~O<_bDosxFY*KmLZ{N!O!0^y}jK@;_Q8^@;VbhBbT10 zmg(uwt>TXDzVYt4?fKo+S?8ynz5Pw*6aTJVXV-0>cD(n_4)1?;OyADF@xFDf^2)j; z={w8+l;z#o@;%4rJD%KJJayTdz>TYP+H|et zP6(Vi?Y-;NJK1=XgTWKtUfC)A@#y8UT z;8;sjaq#YqGmEk8LYW*S>g^BNVd7=Ecu`||MPSSFxbL2fJ5SzTdqpGh-q}4JKh?T+ zyk=sU%zV~f!QK1R(?#W?2cEpjE-Ia5dG_PK{>NdnJC}N0*5}tkKe-2OAh>L_wE%H>D`;3dUu9# z!k>+6uGk*FQh1(~L5+Qu_RgoJ5-Omnot?9M`w9vRCq7kLXZpCR?uLx)wF5ov{qrpf zA601Y^}C`PHRbb*JeAY3_58|u>Gyc~*PdDg+n3=Hfx0ha;YrW1(77jfzRD_ld1>kD zX|30vzIihD@QiiQTNSN^eyo(dDZcFcAz5*T88R9B0!;kAb*=`b*2&XPel6NPOWrJe z`rGtU%Mx7+t=}J8Gw(*M|FmV3%&DY>=Uon0?TkCiJ$GsB)hB+OzU!*XkAKd*p8l$I z{)72)50|btb2Cv>51U#tS-bxGqMnCek5A`xzx#{J=v#r!eCfTL`i1g#FdTT|kiAFn z&=Uq9ze`VKWMxzLbgb^RnlpJIQ%cg@19{auOR2^R{}F+ zq-P6R`TINGc~W&Hb&ibdL$1l&BUT)E!jQoQnz-mlIm>(_<)+kcw;L(`ubCDY{?k;N zzP$9R@8byd%X6!2w*I*~`A$zsUEamb;jHP)CY`*iQT=<-8%y_}pMPtgJ#k;;>$15% z+Vzo>4nKcBbzjxIiUgNc5lAPonluwz**QW0P9A{}j_INeOA`7vJ98>3nGy8WMQ@jZV|D zRYj@i4fph8wnecRF*GK+b?UDHYi9RvVgTO76XTOG?!U4)@MV+k)roh&ZC)$S%-0oNR#$YyCoAW#HrTo1sVI}X*Yk(J8KJ}X3=9T4pQRRwU&?R$ zpz|kaNAJ}&J-=qiTopcA+;b}8Vff+Bpq3)F^RuMSJ~?IneJ#(qgHIBQKs^@*2DR%a z)Z9NyTU0;Zb|uw3L)drX42D404U<;Sis?GaYL+B^=;+}f8SS!3x_>geB9EdN`UPgoJ}49`+IvA+tnLYtJcP=xMrPQ^ml(>plIi!Rm)G#y3 z{&Fw;2pWB2{$ymi(|#>C14BZQua%!)me0CNb0pS3+Wb4_8TU&je&HvIvQNTaD9k@U zT|@8clOY%}B&KOC<@ zbeBu=&#s**doXOz&S#+>un0czWY)}+hVMk@A3U<_k!x~7&AtuyC!g<~CR{bo<+w)p z95M5i9_Lrg_^9w^>Ds9MEhjzK@9bI>I&W!G7qjr>#Ey##>p{iUoMO6dw-{X(di@q?(X8BV{!M~9`4DDR+*nk z{rF2a+H6hC3&YeF!O5W&TYew#)XRIvlXs49@!9IqpcPe9Zobs2GBaDc{9#9?Uf!ZJ zahp;ae@g_1PV|5J%3y_c-bRK4PxdVVEiovPQV;(>)5O5?0-Nu-n>TmrT`$-=@psT8 zGk!6f1#w5SqH7+#OPssK#z~IdvNSwEa)aKsJs;Nn@B5llT-Vwj>m}AH7e6|*CB(&D3N3s8WZq=Xo9VLE zMe{RXyt{I|kxu}$g*g7&lMSY4i^Degl@9&=3v^UB>*XEiN4 zxMy~y;AdZv!e&s#*`CdP9$G*osfC-*ygXBQTK(Cz;=9+sEmXEY;=DU(C(j-wFS&Kn zYgVc>pDdLtH~D(;7Nb|G!A|X|YRea7ys6cGeQXZn*r{e{`Lipw zc-`8YcIBer;=^;6%)>{IlrD$HT+9je>APQ{_U>BhqnC5oPy4t`^-lhkE1J=6(3He7pDz ztc?q7phCXRNK4W^WBN|7y6;vT$`(_VxQutZvUg zw{!Oef$d=ovo1Zk_3831mE269J&RN4+($Nk?ua~hIqx>t{ML;J zJ69W6&WPFTyY8IS@q{f8{BF(;&p&-=FV8Bi>F3U9x1R5kd!CZ|bn2d(llGRO?twXT zVs764wCVZz`O~LPpKgDeFV-+(@2iXD`lq!|d@FvzHJO<~?Rrja-=e}Lg*PiLE6+B( z*^@KLQqSo6CYg0|t0#btuQAx!wivuGOx!p0AcrYv+t{j8JzF&|EtIojYh#O=8!B?N z|B~NxJ(;;zL#G_+U$r8;Ol*iY z+~!6*p3=?RWF{x4t=e>V<(27LFAX8p-G?oD3=BT&41N39Ry;K|E?X-5$SyjfQYH6% zy{0oLrGV-~hRLhT=EN9xo%F2PcJSll6VGS;o$loyzxLOHtNb}!AXU(Mwb!mq7xm$BrN0yjpSWI3&V!!zhnqG5;pEBV&)223nbaK8oO!3owVPkwPHFnf)n6v=IG;BE zk>BlmO^dJgdH*iDP;#qoUyhQ>8+SiKU)db>On+`ZV7@{(UkMn*32Gd)Q~lqT6H4Q z*xe;BKkW?{ejOF+_Gs^g?C{7uJCBu?`B^U>PW7IyV=po3mc`fYl9PkqExNxvKR#Hu zG{f`pq8pLx{qNVg+_zJ+y}C;7wOPfjnDdpF*~{~1^(*baoOrDHPMWC6^IM=)e&Lkw zyNmY%x!$@2NbWB^+VK8X>8t{iedj{oO0PW;`YH7MO!11KHHHcI9Fl`)e>FG$@zPvO zq9o(~*{?GGeP6e`PJV6nF@VSZ=^388$5zB#t@^lf!D;ujSy~65?7Deb{OsRurJSn{ zQ?-uo>aiC%>~CQiyE@aZ>yO{{W%IAG&T0lV3k-IOpeb-)B{7ufTqT#50 z!qSeDsVernieF!w`(jB+)#P*DJ{}&AmTqR}c(?DEcbC71hv(zvb4uS{+qd}QovV{g zZ`I$gzx%dJc*)WG{QTVee`{#!Dytq?>HRz3XL{>06;-#`&(?*9{#TW>9f|yrsmaOt zkyCTel6JxEiypN)T5Em{f8z6ax%%;ApJ!Ap%5QIVKl;%~>)p;w&;CV9d9E%;m!)ip znrtnjombR#>ebyXUwOY)XRgw?6fJ7%>+5Tps@HP--DbH(E3Wxozu>Wc_bjE~ey+aG z&Y_VTjrx^Z7rN!_J?y`C&w~8)uYO&*(N98jue+x#iHm!-QMqe=OT@S&cr*a>166AwdtJTCiT7@Cu{8!{>mnLJ^95o z*?a%)@|x}WJ2Y-wpJir!sL7^u|GSI_l~bq7n7IGnoj-N0x%;Qd{??^`Us-?NT5goL z*5LQDxyM5OZ_u4)zb#mis7sHP?vvK)bqcYy!a4W{=L}d z<7Ss7tpPjUt)4$+>b|r|R#|=aKPGH7I{C|Z#vIvQyfSGkel)+_bbwj7y5@A)<$vt8 z=KpVe$^Oi{Z=FT_Z}}?yU8k~z)t0B2{rB2*Amy=s#n-n+ImIb%mn`|2tuicL*AyLl z%X=-$O1L&JyheV{3FhFhp}JvhOFypDGYAg4AhGqaoc+%?KDE5F=YH4z*MIqap6tbC zzwh`{JeH)pa%Jubid z=-=Oo6ANij$Re8?(mmBJzODrwZT3owG$t>#M z^e-N@pE{51p3V06!oJnT37?eZrI(i3N9FFFURFBqT=?7SGdm7=TfAIwaoyY``RQA& z%ku7SsJs2mb@8s6uX7(hNzK0g*4jnw`nuJxcSdw>mf7!8cg^qcsp8A$t_pA6pZmS} zYM7hGk}KzD#q2JV-4}jU(&A=u()Vxiul+t-iti|MS^n+**Vxj}We?)!Gq?B8wb)iQ zC2BWc)xCo+bCuMtAFg@BVjVsE;o-aA?w|HhwR~;)vViCRMaSQHTz6-#yW!5Rp22@t zV&Xip(v){MHWv4}q<&butzT}JmX7V$sMeErpD&;D`NHKF>HANZPddMQU-3Jh^61Ha zxx4bG{(Sbx-{Hjm+ybplwvDW^Y}&$*Db#~ z&NZLDZkmyhZ+OWszcb}Q!`#j$JbcfZ(D_0Azy$g^NUGhdsd7JCUpN7xP z&&;t(-Sv9P!sKhM=^xhRZ`m$q`22=*-Ko}_wM*vmsa>~FbLT((=;@Msr|UF+dnxhW zeBn}JWtG`&Y}tA5>WZg(7z`(Wep>mX4zvL~p~%LzO~b?&RR$=2K3?^c(*%h>YbmE@~Wf7XB9R;`(ScX#=ZsQbUO zqJACzn{2)H_qO}5IJT)By=d3p^7zS)d!bV5$2}!x-tj%TSthydLTPH-g{3T3rFqv6 zCM0^W#Yg?kQGL66=bWW4`6s^qRe#;@WWkcVKR!Ozsjj`huRGY`PVRlx$?adwuf1LO zDfaibyLX?OZCO`2drsFmjrDJjpNrWiSf;ONtD7^mwd>y*V^1HIb+0G%mKzEA?|${_ zyw&_e^*hRQ(pk^l4r<<`<}pjg*e@?x}c;6|ajK?^NaHCzbDY3pCFOYM9;Uq#i5%?K=lwzu&|3mh~H7 z9GM~W|67%JC~N3y-tEQ};d^{VS+|xx_FM54=x?tTmAi=wd}k@`!^RJ^3h!0 zeDdV&CvqwFQD<*kS>4tAUXtZ})vv1fYRx4A2B`Q@H@Wcjx)Wcy5uAMQs3 zwWmk?`!My|8-;soMfa}k{<4}czW#6N@xJ)2`PcnUmi^ya`ggzT%XY^<;)$oTU^6~E;osP4_uX0WGy-Q^R{TgS<|YL z3+-pjxw7x-PVt$EGhVK=k<-_m`^#qW_uF3!xqXtD=G_1L>-`3jwt#w)V%sHnPT-|=DGW_}XFqKm8RRX4LdnHxwf1G%IUChp! zpGJFsoRfN}_qN2qa_3AL`|10YQiW~f6MgnP-gV_I;~(yWGZTG0KWd-VR2NdZ z_Vxcm_Q#3Lq5I!%E;)ZDPPUqF>${6_g;(xny!suI^L_8P37tB^Y^DE~IqUadKE5pA z{VJ#Y<)+qUdAE1yJ~;QZ(n@y!JHxuK_xAofzSp%n-1YpSZ|k~d&$;sJeEe#YofYxb zSIgo{C3lvbU)cP+wk-E{{mY)^@50|+$=%Mv@~-U4y9?_+i|qe#Evv}$Ap7-oX&>dR zvrhJw)LmgzKkYc#jBWXn`}b^ooE*R*-J}Fhl)?PiFbF$HRk-u(f*{sd~)@<0l`LxCS_CM~+`R8>meP6X>SI~Xe>%qqF z-pw^Sk@f1^1(Uib*B;Kg>tOJ<$aqjCE>pO+j$Fb`DQzxqC79|H?dP?)Y~Qb zLA}?@Gh%+r>zaj`?);V|T>IGgo$Q=DuWx^Q)6*m|uGY{0+Ey`2Vbu;|F?%!KJ zMW}eg;)6{OmTZ1!YgMz<_B)rklJ&b2EL*?bzZ9@lI-5^&{&|EbA`=9m=NSA0!4_@=8YUX$l;ne~a&FLr;+ z+1hpL|Jw`uK5q&3Tzlck8-ANrbEbRWt!(=%9_x21L0$CtF_k5s-{;A#T6W>|M~mef zH@2%AuAZQob@S~S3IFr{oi~gF-90ZJII7>KJ5A`XM&nz%B{foq&0P)RE8U(vOU%mM zkzblyA@%;(qPja%E}cvMZg<9mr^H-#gNDY$-^(69nq>T_&w5kV(#LP)&)03h@xvoN(pquqVn7b3CGoTN0+r zF6?=uw^`4#$}4G4LZgtGbg_nI?@IfB_twsS7ckTvXKL!asdZ{BBbZ$~u zWyeZ&#fg^Fulx#j(N6SIyTiY~^7XmBH&XPHt1cb3-u~Xs%kR8LUuRd%gbDY4`S>}m z6xPjDbZCzK+9bC5!qw~VoVeRpWMsX}E?u@SP*s)p^;f}{o{jIS4(T~xU1!zSw(D*P zYwYr_xw~FTy(kF|7G2|{6d~#CAHO?0IUwq0F9-(_FD{&pcC)u<$B z)vxXgi}XY}v+jQ7*|Ix`b*@$R>r0#T&uFR4dJ{PDX#9-#QJcke!xr5Q-H^hwTca~? z{kkl#srECEyi6$KO|5@ec-mt3jyWyQjI*cO@z^$eb$Hl0O?>j>-judeqTM`G7eC*4 z>gtmhoC(a2j^+5=oI2@bwyzp{l)%|@PaJMnL`|P`^U&+emkUpynJUWAaFVm)=j+vs zg^T%@$WOkqa>9iRi}&r*)YQECGpyu`^2sA7c9+ZBR0OE!PmbcRRr!^$zOMG}B%gQ8 zXDc`|-rT$TeSfV*%oB5kvNIokcpeY(Pftq)%_;G1VV!(gdjBLg?W#+=QW!XV*If&A zU;867R>tvs-j{x9-|mKv&X5N)jlHMq?=O3M>*Zy}>+9q97d_3ovbWm3Pj2b^CnXLI z^XJ>YyuRh-xs>WdCF>r{+4*_e`Up?!@9*z_|7tsJ)~r|0-^&XLRXz7p*?acfxqXGo zEz?5#dwTX%y}dP2*?pyX`)c<$%uAkpc+q_Ecy^$n<;hTwSO4`}X8rc>uGfp5ws&Gy zf!}AJ%Gq(TH^she(YqkzyKbk=TJ9~ppl-8z>)QVB{=Rc{C51kJnm2#iv}12?_ieT= zymbER)w}oqUwL*mx~8^YKW+A`~%G5mb< ztk1u`^0MK;0poS=jL*gI*pYbnSY=$Cr{~Gl*VoAATALXdT&VuXv`Sq|%j=Wz1@_z1 z_U}*ao!ot5;-;#Ypr7SS*68j z^1ZY18ww5`@k~EIFM8XY&NF8}e|hxTI63)o*t!_k`^%Sq|FiS6jpgLUS(-`Plb&j= za?e`-I_96zuZpujZ=bH4@1EP_0qfl^(8qLy7Q`j_&djPPRgg6bhXLHXZD{rK7VFTx2t(w zAfIsK$wcsmvWAmiUz_dRvc*J5M`-=(>+5pA-d|R*Th@Ao=DSP&_LaYN7WeDL@7q*) zdfMja=ZrtEkK65+`sdFz&!v}^ELq~*-k)=CQ|V!T>GN}Jw-;S~^`Q2*dG1XoKKIzw z+1K+I{B-Y^U4C@ZNm;w1DUp48+fLU0_|nKGZ==C~{Zy)3d|DAtzTH0CS@qL?Elyvm zUl}O6cvl6VT05s2JHv~^2cF#8>$mRs#m?7HICe#xwLHA}-Q(Z$OfA_WYyU-kEQ@+G zY0FjpP4S1G7#w`Uz+kY`F0aVMV$0r*t8KgedSX>q*@aktyzBAI!|L+=eLWhSdv6tW z^{zO5GRtnRPR5GxFG{PgE-+TSc&Uiyp1$GDYiS%T_Wqnrg{}3M&L5R7 zep}iu^InXdZsMO7f04Utb>*}$m(`1>URssOoMD`ioH6;AOLKZhz4-lB7t^w@9{(a& zKY3|VX1YjAEIHf|6l8x7fwp)}J!yF4`M!IaH~ihc?sTu0O5bIZog8yEd)Bnn+&@j- z$1;{~dBx&+dGhX(0{3nE=FeGQKQZR8@WM9#*I5rM7s*_dJm}wdvN(5Ay8Ic7nVMpc zGGiC4zIg5Ot^y$@h67KwIF}Z$TDAIW9{w>}-$pf3~#ha*^4R_cglD9`0PdAb!@J?K;-x``WS0C4DHLkokX{FnJgU_{6AHS8&Pg!t1r~8ZBjPoDw?y5eY_kU}gUZ30H z+xJeiiT1ww^LoYFi?d2_cNck(xkpH=hz)l@e>z3mb!ru{$nHp*|M!JkJDAJn${ z#qKLUc6`U&-jFpbey(EQ61}Og_j+FYQjx1C^YzjmitsV`_+?*kUbJk9Zb<&*#oMQM z<$XCEE2ug1nU+FhcW;P~;yb6XxOiRs@S ze@Q&+yKZXZ%7b_Rtg<*WeeFTFZE<~Ws$YBlC~+zOwXkSsW|(|A>iL`XrooqER?7D6 z^y`cBdAvLHf7I>&-(1$zd*{DSdGktq#+=m$rt3NL2+5oj;I=w@=t;x68FwBX?S8-g z(BZ?2A2ZbxZkz}^eR0E+4p#FgoY6ZVj!?Q(^;77f6gX?$mjCWl+mU^Jc1%gB(?k8EQhhnC zCmCh4CTA-a&&`_Sv}>B}wAP=iN=;_v`cI0VZyqyS&Ae*KY1e<dqETm5dwlIaIOOjLI7OS-wHcEaqsAJsA1pc5v3uMy0T z)&2DTxV1u9;d#N*{MG$$f9R>i+n0%|vHuEszsl>G$wiB!s+n>9DgNOv%){qrN15$p zY?kF)y7b+4*;{LT&z(P5w@FC)@WNNKP10WeZQ9X$Y*tRn>d^9#O{>=J3OYDDJ}c;a zbu`aWNg0M2G2$B()5U%N?#kVybz`bl&w=ZqhNZ`2Jrar*^v9|{U+HqV`G>&rVxgcd z`BL}!=T${1*<=_`@Od}&%d0yNc{lH$TcR{uKIQ9DHFJmaDb6m(S}Ql3zKoSMdfcSr zoIBYH9KH*lIGoP?`04oR8y1bs3l^Si4RteM*QpY*a^Y25UKwv}yfyqmR-s1ldOhxZ z$mo}T`jkaXmb#F%Hbk$AWn^$P&Jvk)J8o7K~e+tV;lzb~&{Yy>2l)8$d#jdYjzU<9RSB}~-4NiA9N1OHD(0 zpTrf)UY&N5SHkFP%Yt9Av5!lOroLaLtu3)iD=t@ld7b^v#Rg-0Z;zM9zs!bCC99iF_m?Mseq$lrg^Qij3Tr|*Mj z^m&=hm+o^t%re;7cOmDER;bD{x3$9WfBXtFhs>EI6v@stea|i37b$mWtGr!p!@7e{ ztgTEPex9b3pcQ?UAZci@9r9doqjdz)^1!Kk{hzNu=tX# zRV^DEXc;2|gM+o2J8R0 z@BS7CbpaU|X3Qx&H|xZ&Pv&Jdj~1SPzd9^A-1aZaM%x`{Auj!rI=Ojurn$G2yHR_s z=v3L$KDPVLRz!)v2%7x+)bi4YDxi70gHI;3LPL<clb*FyGYfE!5clP?QS4*s%KPN2mt6||2BI+M#j`SMns z-h7J#-%A3^HthP~uMvkPoAai0SB_q2<;^(sgZP;t>fbKb#IpWSCe1}2#qz(vv5M>(}`SUorFKXQHQ^VjPuE*ks{yq;yY z4m_6w+x%oXcaI;RvK(j{4{YxY86Q7)AHP-CwrZ_~ILg41;n%E_f6vSR`w%&~P3`;6 zZqS;wEwyv!9GPBeGhO@gRxkY*xvT7X%R7XA?Ormk0}?PGZ7nB%W}iu)8MA!$^M?-$ z9X%(XJa~1>?6=$fUv~*rL~VJRb!kz;(t8&TI4b*djOSfr-F4+j)sxIvkk;iVCmx%d z51P!poVV?6bg#y`Il?UN-|m@B5i|o;18@aW?)E+2^=ExZi5!ky8oR9!|M);pyX9;%2j+leb6nS(WDR~>)Qdfx$&SxhBY zo=nq;EZQX)WcBqBD5;fgy8iR>pO)OTPQLBZTe)K4w~btj zp4I-{J*((ms|#$;@@F%j*mIRHp=y%-6VD)F*l~&X(rfYSt z8#a)%T`|;F2|B5z$^EsCo-t^|4(beO8yMCtp@+~J5SD~#g%z~Jz58fsDz?fvtwQ-Z|D2I&P{Y`=-%4sShtYC z)sd;0mk!R{%%{qIxR0HUg^h(J)_0og-yPL+H&@P9b3ZkGd0Nrr?;lbY#>IRUD~McCvVqtLBaK zkTfAY`L)C2h}yS$Dm-()tlQKR%cnkd|4N++Pdq*^VpgB6XQR7frREfm?$aqklK+=% z{&`8DGB!7|(I+e-^t+yU$yDC82MP}QfBH4+(j>N1N3PE-vtg*(eDdsEYx4~ge|~4W~UsqTs7Tr48mS(%4Il<%F z+;2X5o3y5J9l5#(R)2vHJCU7z$4vFyxpQ;#)P4M{BeQxx`$e1ErUovHxN+-A-OsoF zn=egYBbvW_n&lg9aJj%fnR&ta8F$isXU)Eo?rUKAHf6DEVc5yb{G5JU&31abn!iwv zthM_l3Qj4Y}O7z$Z>0d{R~V&F7hai3!j7x^pvP zj_uZ|s$Tzw6Jagr0+_Gg)@Zn!m|s0@dUd*?CI7wc7Rj zoB21*yO3C0x9a?&GofFazPI()vVsfeT_>LGVtPA|oAE+y$!ep=nX$LdgApca4>SVb->j4}I1j&3UMQblR!r>OC5Q2xl|wz4GKm-;Rkl zFPgW0KgUtG=p3unv{Hk>M!scs)8@{8Xsn%@`Tys>xoMd<+)GNG-c`^1^>!knRbs3* zUF{irs!X9*;p>0JifVJ`r7hRDjjh;uG&d4jhclGyJh_zr|HPT+^goq%%wp9%_~oeZ zRryt}tE3>_VPIHb?bEmGn4f4&(A;Tnf}Z7^;}2n&)~)m_IkU;X@Y(*eEmIow+g|ZsRa)g8vRKZF1>8ciWMFs^HFnf|Pm;3>R9})GMZ+mDzBuWBWm;hOh|bPw84$ zFTddcJC2=!AwI8Y?mTg3BR)g+H78zKXmDKMni#s#XQ@?W!N=FJYafHozk#+d7#KcC zs%=*(H7!1{>hD)x5tay3_N-wPedC&zV=B+5Teu!L&lp z*C*`Gj0={Bg~3UXk-GlEPMK{Z4OR;>n1SJfwoe{g{m0qy_b)B4|Mk{6=IiVEr{{mn`nkXMSMReY zSH*8=C@!{LDF8s@X7Epdzep#&@v_ObJ*&$1 z)wQIDN9(oTs;Yf|b#?XrpR@N{R(wcsbaZrbYFfDPA!yg@=a+Be|6YyXI{nwfcKLsg z?f)IVc5R#VwhMRf)?Qx+Zg(`CWMpWV=9{-MLG<&))d#j8b+=Y!uM4-Edvelq6Z6B> z(Rl{JMO#nY*Uq-(o%BLg4Rokw+F7Zqw>NFtwEy4h{e69X_qJqS{{OrFfBxY%UTO2Z zKX13+k6OaUCsXnJ+uQv=y7#YGvnJ))i4>!#b88|u|M~m3yQ?eX+*0r9&(6-?Uh(mf zb@{ss(TxrpQch0N3|{u;{{H`ukN2BAzp^rTef<8kN8A{fIy!fD7C+ydem?E| zyuBG0m3GGXtu6eL-79V0x9!Q#&(A>-3HHl1pS;Lx{Ab*YFHPU}BO}?5;q%1WuHyB3 z{Xhp&r6k+P`PVLMZa#c%ZFIk^^|$Bs|DLNvFZZ9Hmsq5!srmos{QsWDJ7eCRoUESd z=jnNJ|Nr0nfB*V*Z*O(^&reUy^X@EAt@-_Sd-%GTg+IQ$ybRi%{WSics)E9U=kx2$ z3=Kbi39%`?a_G>bKR-Y7R{#F}zF*GP%X?XyL)I(n>Tf!wKW^Q)G2#EjV;7g(|ND^~ z6eI+yMnEI!3rr_}J{NVq=E{*x81Z~5zgIA>*f7dcHheO z?JMc>@lz36d45Urn_Z=^ZyE3OpKtf_$=lrihf@6-GLct>R(S97;Nd;jm<`=E>lx;lX&Hnr%=y<>NBQ?@@z z=OsiLuR-`D^Dwcg}KW9Ed#byqhgA2(vw)TsOauU1O#Bgj`hw?XIa zewp~p+S)qUT<@$PS8Gbk+nF-CLYHUWu6n@gv#vR(q?9Rm{W-C?(6dXduALROeY50p ztrGKIW?!ujHxFt1?Co0V`9o^5Gy?-eeET(@cM13U&n!3hmfOKu^KzfcmCI6rlBYd- zmKVqd=Olev(?4H?+05Bn{^#>|cc%#7sD7s|E+OG@&V^az#V!+LW8&i%)Lt*>i;~JfB8x-?*JnuaRO~}}0f~q;wnyBfb`Bh22Mbg(N|NZyU=V9vC zNmufg|Jw4$f9l>>lKfXVrq7=39ketr)5reh?(+9np08NrSIc)f$}Rlv)924u>-8(Y z)z;Hnrn*AEw`|R?uf^~0@1O3WvftE6@axmnahD~cvt-|R=N8@lutl%1?}p~l-fOAT zjh4TAT&=-z;n38r^7n&F7kQc5rV55`SYH_>4yy3)B^7ziEasXdxAeHB$lsu#p9^=z z{Jhd0Z~ym|TExP*Glr?}UN+627v>T){q@N|-FrV|#$I{x)&Kt&e-i=6QeWu{v6GdX zjQR{hUngDUeN*}2Yk+G~)|Gobi)F8S&X8ennC`RgXv%b(3Y0dv=)-AbX)x(nL zx2L|$YswS+^x~rOuD{ZLQMCu2TsrdSWaj70(rYJ;f8-l){Cx1bLuiMVP^kKo3a_o5FU8)_7VtDNuh&yJbd}$0 z6(2r^1-I4QFF#!ro$d1Pg2jc+YVO6L=F?S^Rg))%Zrr+m-@?}xAEO)k7J4~_wrchK zTG+EHc=pvb>^^y4j@ZwDCuPyM{cjsH!CV(#>uJ7)R(+h<-|bI{@?(}HTXnhSNoRCqAw*g&s%qG zt~tEqE1vZOb84sp%fyuIoo`OJbZ_p+ zMVcwv!|ib2#4tyCsFuo|9 z%mhaT^=apE0-6Va+=Tyo3_MKVhU=u%U#TO->6y(l3 zA-t`i@DVEmsE2=RSH8ifSCJDVQs&xRo@L$~mk^(+`unJwdqq`MR#wrb4Y{9Vo@viC zth+LO<{jvS&DGO-)jHgtLtpcn-kztj-!8x6b!$n?rPB#NPE1sG-+gV}gCg?1@b+x*|-dumPSqP44CqF)^CY~sEVZkt*(e_`RQ8Fyxc zwI1KHbxy&10CxsCjNq*w0w=bL|K&uO8XM zSz2L+<1f3}ju!7hJJJm-Bbugd{`Bh*=Skyp;<2|UZ0=rG?0Wr0?mzw38{v2Ji{>vc zoI5inA~n`GlzC@(jQiGkmqnyAw!Lb6$*^={`o#~vKvX7J%V@Faor*4asW&pz3G{r@-aGs!kKM%dw zbLpas{=87Pi)UJHrMy{vFAsbL6398fa?PyWP2wLsp1ifOGNbX-lNY*YV-zCXSU0Q( zwSPdJrXH1xcp}F-0vs)R(Y+O zEwjNi)s3g7ZSIa???C3?1u zXva#=1&1zP{RkS*0d2Epm=SY6J(hJ}_L18&(zf~e_I0fl{29#hTM~R=1|!4d*FSSo zLUV4mcU`+_=G(X6kjTNhHt_vZ3S(BC}|5TYvet7>kenyz$uVBb+`ekyC; z^F5r(Q94aeU-+&5FelS0!qhvz<)_U3wY$H+`4<2B>7xvjTNSHzFE2N?S$_ML_O|qt z>e&}Ri0+BWJ#OTmA$w%zo{WV%P!;$Sa) z_MS1>_MP|q^-0>#dOz-%EHiyV(PiJ8F6m#KdrVReo)GJ;?{+SpzxI)zwXWB_vl(LL zpI1LJh%b|tHof+G;**KjZ!CKoI4j0__ClQx1}_p~ZuMVo2M_2l&XCz;U>R$&^JusD z{ruMU_T$%Q-!Xtp(@&M+EwWJ)lP{N9VxFh&Uvn+92c4_il#H;@>ja*}m3y-QKeqHy&{AOI)D^wisBA3lD1Hh0O16z@#?q65%+B|E3+ZJyg>HvTe;Dbse{FVpbhYxtK{fmv+v@o3w@?yuy3U>{ ze>Sf_*udEKI&O*F{3Q7~)5LOYH{6Wsx#k|aUsGQ@G$`zITvghw3E)cSirDR$C%5jF zT*Z6M_@=#onb^Zeqxlf8knjjJxcZ8{@- z*-h)I2do^d=Y{z}S{oB8X1YMHTHd@p8?YFSfcXr!z`*v>l>Fe{QR<28~D!6~u zJUQLu4^N!;TzA~Yy#F(Jy8qLMHm9mn{I|__mYF-h)$S>Ut_c8-1hOX-ojCO5*UFQv zq1Ud4m`+I+i#=$(;|LvGyDEXX6cRIqP>wJ z@!^ttC*IDH?F!_ZnB5!lzWwYj4Zknu(gqiDt}@@8Ju7Ku#GKjTL7$TLCbp|xzn8Y6 zzEv^UpJUbis|$Vk;2Do!ZTa`N7ZRP>R%Z9ZDxDo0t&1OQFl>v_OaC$U-?7nI_8*g@0M-n$X ze@JfP>$4gEME6PB)I2#M=*;$rg%?~CPG~*(wGv!AfQn3TPJ~Xjf+ifnLBaq!GDF6P zZyIP^m65@r-fU+}3(GIJ=*s|{4w4;}IZJGV{%998Nh7YA*xF>tp{QdQ_TYS@= zJs&w@2UFQ^{nRC7fmy>X|q1gYiT`tT>Z$gqfehc z1@*WMz$4nAiQT(XJ?y(MpS(Gesh7Vrqb0XYybQR)DaUG7Z3if@pW}rc=-R9{`HG2 zMMXtTCUc31PrndfSyz{us%m;Duw2WyJ*WT8+GWeyO!}t%e0Z20G%%>v4y~hiT?L)- z4!#J10TkXSu7#Wu0f{IE2FU215Qxjb0NFfr0yJF?I+qDFbTYa5WTO4yCkzaCbBbzT zX2#mc`7@a`l!fRUTH37T_J95Ab|fUKf2l$I1NIH1P=rW;218OnqtKuY&Fr3DUZ+^4 z8eW4|0)YCY20P=}kFCq{crOV(d&42zctQ4oK314%pcA;?8CcGZP=lr*u(u9?JP2|7 z6HxmGq`Cn-sSaX+9nQRf+jrgN$Kvy@u}*$%HTm%6T~*Oy{;x0PfzCMxHKIY|^AL|u zW?t}rW=xQfzTP|0`RD&XVs&$Mh0OlL<}4D5Y!iwuUNoF zUk?v~?xWxoTI7_JR99D5R#p}jHEYqC)!~QM=**Io6;>8WJ9_Nc-Wo~B5IVxSUwcmO ztrFE2;BZkAwEg$+>gw<%8J;$A^J4z}Im#UwC$}@IsL0F7NvSf*oU#5C3NVdtGO4^6{(r`&T@?!>lj&e%7l0lJ51c zDmn)|_rIV29JHKd`D(TBsHjtWR;*bw<@D31PeqR&JsPrX-@Z5%q44nV>sPN{ynpM~ zty!~XeSd#H*j)SXQX`Sd-`{j=%Rkve6X{i9we)9on!B~^AD-L!__+Vv-8H{YUJjO9 z_IA42jAAwG#~;#X%DB4BbO)!J$*=c<`cx+lJt?{RBxn0kG1vU9xo;zL)=k~pJa=iQ zqqLg&*%Nn;-8*+^hvHE)qwSjtH_W#<*Ks%GLP=9|^V+2=7w+42a%1m~80T7${ou7< zmLOK7?hKjhpUW8Q|9{uDc3IBuCK@90ysM~twfEz1=L|y3Eemrq>m1|OZCSC+?Dd}6 zD=!}UeCX1jIct0tuGylZccSym`HXM>eq6fM_2-Vv$~RBny_fd&tADi1!1Di%9A%IN zC|1q6+V-3^FnZ0@pyxXdTt0sM_~o0&F8%ha`<2)_c_YsYg`~jip&nR|PNW@zFEr^y#~O;jfgI|GmdIrk$L*zGlk* ztlilTdvu;{_&#T4nXuTLV3U0tWy{r{nVRo>bEf-r&G}R@`{;aL(2)$FK!YSp`|OiX zA|6k>uP+oIm2!^9dB%>Psx#-zJ%5+!-@%n!dyQvo(~qpWzI^Sy(8sLl#z(_#?w;qG z#P1hAt#n!5mE_Ae)9lKlzpdly^Sf*wSzu-R{2iA!$nXPCs$}H))fuH6thqo{&bsi~ zGQG|bh0Yr506->11}f6|GK}8)Xz8HM`*nRXgH8sUE7}iZj5?*(`apP*Krj4t?g+8e4M3kbC zNnwY6Sa(hBdMTutsWb1|(z`mKLY4tUOm0>MrF75$G^igs0kp&i;$4u{Al4i08FTn% z#)LP>awino<`>Pkt8F?7UJM4U0@6VjX88Ej`05`?D)jX1tlHRh%B#~wOMpX2Na$*+ zo@S@G`1h{!&+9+3xxk9%ltfV1caGStCyN#>wy*giASxOfA1@EC_G6=>e!cnm`O1|o zZ{EC_U;l6BJC!*zX8gFFzyGMZO2E$-FC>I^r=Opfo|ZQ0lIN03SFT)XX<;ckIAex{ zoW7-^p`pF~{7spenO#Qf<2W~O%1A5m=?R$Oy1L@05o8Wo5pp;1mV~0p%1Wn&AFi&h znCKxQKVLvv-2H9t%a<=rw{HE?bT3G9*8HhcRi~epoV@tZl`!|Go}c3OR=IXfJM#GH z$*1Sz_e^;DbmD4N_2mKHa##y_P=A?0ZMo^>#mBbI-kv9_T{(A(OYNE~i>@7dqNS~! ze|Mj+YG`iJmq#xzr?<9(u5C-PxpKoz|J12d^K7f9&D2~XcjL(vkxx52I!<(Tas4_y zk^Tv;+;oCR<2&Xc>mU|TTM+(-{0TAJTL5*cj}C% z7xpRrheZ8}LrFhe26W#v=;}u`_Q}e}&c|#k zs}+77c6RoP^=FGu{FrIC+IG&FE8$zpmOhVRH#R#ro#9Kx*(W|F@f$BN!D^*zPu7^Z zp7`mXw|d8q!&mf6b_M0A@oK^Trd)H?Jt<8I^J~#cgm?6Vp8)>Yb z)3fG`g-K|9@Z{HDek^tNf6Zi-UQ`hko`3pLX6&uAb-gED#ae#$=9~5B9x;7pvgew) z$wMh4_Nr~2OZPUPwNQRGx6$x=%i(7QYjfVN+2QrmcvijVoT`jvJ7=ymbl=ZAIXHUa zzPr;_T$-|%_geaat(%HB%+EOZ^u^&P3@_%*TA6Qow)FGerbq3wpZRW_Z&SXpd-2;Z zsjtJ&%+BC}w%2y$7Nye)Ixx_|YKddM6Ji&s^zP2p2^lg6{O&+nYK5uCG z?aShstqbE$6}K-u8nWGVx8L38;UcyXhH`4`4%@Hz?2hHUy2rLp=kNRP%ct5!8qZ^e z*>m(s1lwjl^^bnP-uj+M&FR*gK3SdJKT!H=)`eS7ZW#NeaQU5iQj%B1W|sZVQ)PS2 zEZ#WNNFgOpo(=8bsGR&-G-^`)(W@P|t{nCXZdTt6i$M4FlUJ`=y)tXTGA+%Du0!W| zp2weAsk>UIW>4GBt5ZJCVg9%@RCSV0Vp-n29}n4HoB8ym?)u`Dm%1=Qh3kIS^|q6m zVIgPNEI0ap^`xuU>dp7%Vxs~T1iMpHLq8ptetW~fl3~~4w7%%N^-r$F+#QnxQ0*>dx(%Zep4w;onuzs>pBN2K_rp2{&c-uah| zdZutK%g@MroM3iu}cP?3u8LxuT)@rT5*>y&0-<&zi`X zU%WNvu-TJYTk4q=U}Il*K?MVYY4Bzpcy(B?kHsO~m(Tw-lWhiQHSoM^SGR8lm0b*= zY8qaD1{fz6F@V}7d}{5VRT=g!ORM7rDS%ekj0--4`#sx@Zu>#EklEuCAe?|55R(_C?F~s7)*?I`t`?y7HXq)k&wzo=6Jq! z9qhF=N0{Lr`nBz3qB_HtlLx{5Fi^h}G~o+&1*lsExgUW6lzYJE`GVUC&;l5|YK#HY zVgR=}7{Jbi3=4q9s6iLDL7FX$7s~Ml*{_u+eG4MD*8TmpwOh8=%6f{lZ@jF`i>D`! zdHNbpmbSl~zO{XF2Tz7L+1R~>~kttseaL)y!n<$q`))teTQcpoMUV`Dcf#xPVO3?-rIKq zr|nyKsi-jJ#LLI(e(`&LexCaEo6g^pzb~oSPdvHxd-sJPS5SXv!O?nY9$xF8^)noQ zt3tESy6{D0;8ScIoXmH; zBRl6pM90~!o60wAHZe>PIu;|$H~a9`OAh_W zR!&{Jwsm6`^9{9W-}uZP_k8(1@1*JfteF1jOFtSkx8(DDxmqUT{`IIV(_}AYvnccY zCD|sH(;9#2U;46ogJO3He-1o`rPXCKuZhH*0+L|vC)bg9t z`I}c$|HQ=9XSM3)dF^|H_N2Y<*I&E##QC!mPsPdIlb;tK{C(fDHA~hQcZ%vp3xQ6tcDD`E&Ws zM z{%3XM+UgnM(c$5tVNoLWp9(Jbas58H>f@7FmAe%lUkLfT&A0Dc++qDoZ^Cc?tzCTb zrGJdL+H?8Yxh&m`UOG1C?pi)Ml>4{w<(*n{zsjf=i_1k1fCe>QPC8i_uSKUNdHB};alU+`>zeYxjW4?vJbaT} zb8~L0@ZI&#m%N$3YDV%qVJ$zNId{^1&Mo;GZv1h_T=D&<{q`U2%d-0Tt5x(!?)KEu zq$1tAt!-wO%)fOfep-^C&d0*G;&jaFX_l_pcV_m1)|7!WYSq${Fa2##oZq|e%ApxE zw)~#@W?jGJX~_Cy<1pjN$$IyKDw~rJWM{4rFV-^nx@+?J+s2+(EnH$Pvge(cw|09@ zUJ>u~`kOzFpODirPcKaSuW`oi@tHuY_63R=UQIJZ9_+HV`~C9bT(73QC0zQtCa<*B zp6{?;_%u9t)*ZjwVb)%y*J3{}(J0(ro33{KQTXDYk(Hf^7jITxv{p-O;d-$lb=~D_ z7BggCELT%s%k|OwYe}GAUDJgX%K~zK-@L&+DWTr;L+dKJjVzVXH*dUVs<*E@{AB%& zJp!4xKSt~i`TzRuI)bI;P=@4`m$Dq&Ij)30sUZVC)pGk5Bx?aNy0 z*PYZ1JNtck?DD9itd5(X9(c0v(i62c^|MZYDb+HVQ$A~cQOUK6`Mb|nh2J#pOXu=C z_r&CN?AM*q2kaNTQ8j^d&eLPq)sD|AR0=LgQrqm(9O*vk=kvN7^EGxp&OMfuR&?xh z-I)`-A7||Nv(Lt|qHEn&mCU4~XKVM*+I7zbX?6{?`f3E z|Gjocri$O$RH$ve?P=BPr)&SMSNOjsH}7GJ?5sQDZ?ui}_xa{c{>8Q>yU6M2y6l|x z?9`&KMKkV%&ybn>xA^h4+bd&_iYj^Dw7z-cX+hA>*{7I1`%Ls_t$Sh=Tcx^vlZTE_ zYyS7JnA)X#_SIe6w_}l))JFx)wVM7G2DeWvV4j>jEnr2&p)l*CtVKKXS7mk0{}E|o z;htAp>X;X{ZOtR!kEdfVTj)HtWPjwn+Dj$!(3?9p9}n|h+m&4;c=dgDcGe36@A{PO z(`Rr0m-R~RdX4+aTi4ZcIZxL|M{7;@NcowXdeJ&(_RN^W`j`HM&tCN@dEIUQot4}7 z9(RmB5Z<)BbgPNwN*}2?l|B15iPzs%F05Fm6Mjus#XG2<>--IM>&aJ-K2`f7Jo)vz z<)x|f3m$6zl8oLhds8Ua|L~O?Udz?=dfsZrt@tIdvh&Uur6`NP#oI$V9f!pE%-G|eM+ZV9_@RaSONhWnmOTJy|`=)7ASvN9*?e>T0k zHR!MQ?rpap-j0uYvu}s5UnMv9*6%sW!opAQF8N|vV$bbfon5S)`g!8Mg*$tj|FRS- zJ12jwjx#7%e7NeJ)1qG;$!AQnF3R56!Lseq*0;Zo@0=K|W)?fUzG&Uny~=l6TtqKD zpAl*8Q?y~O!MT>j%H|g`4nO&l={{rC10(ZSSwFAdXghYycl(E+`+;Y_%fD4*m-aSZ zrt!C^riSdmk@cv0x;b-mdpmag)JIj^6&g&v;g#1cGhYt_4~*ZHd^ow#vq z>x%W;Uuv)Zrt9P9KJVJm*ed5a8>)kX?G<>duGU^YaCsMl&pP>;cW$mZJvw391M^E6}K7v!WbniuBynN9uaoE2pv8xk#fm9DNk z85^#>X5vZCrm4xYO*22TYej#3y!z+NT_-PgKjY2O_3hhUka%m>v)_?=YrCfYySMD* z-+MPy?`9O8-EU-iYipVNjF|VPmWx}D$M3yiy?3GEg$qvuu5{ai8;w@UMK6OGV@2J= zSDmbq%9^=2ZD;b%^u(gOm(`AYcvh<|&yaiE9<+FR(Wmmz$UyGN!RIp5in40w^5$>N zEz+$H50%~Y>UHj`*rkQL4_?`tweXF|zJRNzo)i^LTc)?9o>lCW-6Q6=z5fHEOBe4l zofY$W{hc&z1)p`|+fRP=1+~Sl$NRin@L@^vsXIEE+t!E|xKy;UIqdnrR!(jCRpUJ8 z`|-t^nJ=tzjz19*6tBDd*Dgk~^QCNVQSOYGE~iQIa-oLm3>X=}&en6ue4=7gQw(e+KM zZpD_V7c`D*oAAV($h?2-%9|(I>n3Mka`*M=t6V$tWNF3R8145{{;jjiay-~{B{ll; zca!&>%L;`QCw_f9bIvB&zIvwXCqWZJpalv$gpP4V_ zTCcj^*|~nd+p`so6U;JKUg%e=DvYROQ(N9^ocD%tpZeNeiGS4m-_~sl?b^7)`UkR_A?h%SugdQRj@xdA;9LUM3tl{J!_lsv8Y$8&|)I zk8IcoI^S4^!C+^e;m#j-u75F|-!Z>bE5f~B*8c0`{&(KfCapMn?C4zU`nbYxU0wT% zzGjv9_&k`W(CFY`EN@r!WZx0xKQDtrXCCjDx3Br(;oQ4hyUOME;;gR4;;-@(i{k5# zP1Vx-lmEDGTZ#78^U?XA8Cll8H&|}B+;z**+Q(LL>$k*3w<+fDjg$I5OQGuRtXJ0h zSFN?5Fa5>)d|!dR_Wq*#8w^4HFNPU&_-4eo_?guD{#xC6lJza`w@=?ZJv~2u`n0p^ z>#cVU4*dT5S-spGcQ$8zouwQ7_x-)y<*&3wQGao#t-TcfVo`2`Ug(q`` z-^9+@8C9$N^6i>0s%Lb6{63H}*Jg5=#oxCJc#6-4RRtvyd)ZGC-v+xrjEyZd&9t#o|%=H}>-AdB+m`P<`E~NWt8x|Zv^Je6OBMso{C+aCoN?!QUq!~`tJ!~6 zu=f25+GQOpd0ELCSOjRe0XkSV$lgD$Z%}QRnTIH z88VwrKrZQtHMM+{b1l_--eu;GljW}Lh>2Y1KI{IOknf95C4q+gz%!Qzo|u?guJm~Y zDUnrwtL=R^@tVaYi>wLVr+pW!Z8~{SXhJLab}GN%$;l~wRuM0?t3O`16>1OWj@-^$ zxFGxSiH9pp`%L&1QV zHGSQDdD?|t86C{A((ZFtoiW=}|6fjx-P-{a5)1}A^&eh-KR@N`&+A_AF8Df_J!2`k zdzr7ykmUi;U}FXiF>HdY_=0xB85kC5`{ucQQaZ|O6qI%`!tV$B1+I|kYHH^fRXv^a zkki{?oBixN3=9lEtgOs;s;*r9vd264?fU!$3J%%eC`Es3LesdGU+6`_`&WEfzQ?3-j1a{L4r^&+4 zJH%t7kIX4wyjnOx@qu>dy1w*Pmmg(!TkZQHG_3&~`BsLOzJ2lhGT);<&3SPpd;X&{ z^|Lv}8RL0CyOlzwuW++1;b>x4xD6U+VQ^S)u=C49`?e`}Qf~#WnVcS@vn%lXN82SV zHDV#@dLpd>e-pKWJWkrK3b(kd%su%smyUb6yuAGRnai3(H=`flvbcBouIeiD!^OMS z{sk=tQ=WMM<@6Z26KAAt3mcbjpT7ESgzeMYj&n|SPxCSTwQTZM?O;2uJ+^n!qBgUc z&tLiH!0p;ejd8oB`57+kIvJ>cV`Y=~8Os@JyQf&rE@C<_7Pm9>*9X6w=VusfH4o%n zSmm^}^;OTRe}5uA2!r-jZ8EUbl|6YAv4o4=uy|kb?rFhVJo_swD()`~p8kH$M@jR{ z$4jNT=5eI_aX%G4-R#^~?(@6%mzYeIe^}BIuh+Y)$RgwY$7s)^Pe1O?5sf?giFfi6 z)$YmPd;(V8UEq0q^W|?5FG@F+d3jELAG^2c>8Y)^6E$5+Kh5rr%rce)9Sd{g+%aZ` zT?d}b5ck)P_w$>*-bz0C(3hQ%U1L?P#MRv-p`s$1FGnx3C`Hn69Yf&3ft#-ZY zZPyj%{)@c1&5#wobJC2hdzcw^9eNTH%=A0rK-m7whvy~;`OG)9Y~2}fcHytZadQin zxr?bSPx|=i==bP{4)!ohM}wx88Sh^^IFk z+AQOzeJq=?`V>ES+1PS5Be(r(KiWFq=}F$+c5-W6b@60rgQSDJm50Rgtktf&$uKM^ zot$0UvWRi5{^sPo)VtQoKVFtRTiW;g`U(ej;Z3#H)$8AQ`uH|Isg0X`IHVBdqU()k zG8Ywcy|n@__KKbQ3$oZtIrj4o{ra8P3L2KF9gq4JA@=NamR9OEThF@Mdmr4?rC%0J z{GYUUWt_Cy^<%eYPC+}}<@doWyQ4HJWrf$Oyjr#1b9W(wgZT`ZzGo+tx^*_iUfjKE zlI2;GyaNsSI%VqV@iUCePE1gAK5ORowC#+%Wx|z?;{A8DhMW2}+K?s4AF$SQK4bI$Y9)l-lI zUp#bESLp@XPUaPq6n}O$FS96jZS30e(gjbqRs4LM`X(%Po$OIY1_R5KiLPQd>x>>b z-haOE#X|E^uU9W8Ch*Ry>G*DSqU=HWJpQgr{Qh$H0zCYGCjM44Pk^8CGVPMI@%v3K zWrf!^r2R6zW*Z_<_bV){YuCxGd&^2Qp+~m(K2|MHHn~wTXC`9=c< znCvB0_Bq#F3m5Ib+0ck_q>8o4PR1&k@2H2jyenspGFieqv&t#p?>fJ|zU$_0HP5d5 zea+4yQs$9a+q%iCYrF|kzS%23wxABJWz52WC#fF2-p-E;1Hzb_(rW;pvtlF{Yzy!yt zRjHR1+60~1%C>zI>y|YsX-RqpUWaTr$E#$+M_6R#%r^&LQRJQivKU+`s2~poDm$ zED%)9LBkhRQ-LcaSS?;);tsPAY7(fbLQ-vDDKl}Rt5_tsx`CuO$YeB<8YC0HXih$C zC=PP?wr+3@;{)@>zB!DwvVV>snOA%B$%nTLK78ZT3oSwLL>*D%o?kn@ReGaVHu(|P;4s4+MaA_4^ty#1@ zXwCr~>{cm7VY8LE5B)i|T5{^=#*XETm$#&ca3vT*%7y_ zZ}b>vt&7RwDvZ*dGtHqpNH-vILU!u=jQsayla?D;F8(?F$jbJ#S+i$KNn30Cp1W}6 z*10;S>AaI)yPb(?Qs&k&%8T!v z-}78oIb-vUZ?EN_OgYiY6j(U(!>Z}7!OeZIRUQA#doQY=yZz|3XY*!fd+48?e*bjm zouu149K=vhjVL{J`+sJg@7>?CHci@eXoIi!`Ht1ysXsTxaIW=R6(Q@hZuf?=ShI4Q z+gWFmXUITf_nYiw;dHs;pe=nHm$U5`i;vHG37TX4A97Ttcz!@((u0)HQ#cTtg=qGlS?Zh8U(YQ+o^EfuE7TNd-=bbPeU7+PuGnBn^eW@GGY~J6r zf-ZT1rr!AcqO{ZU9?Eqyq~SA%SVYR`!vE=X|2PO*{lE+C^8|PabII_PZIxm+3!$`g6jS zmIa&93dGxlmXKo{CYE@8X=E4_VPtSl(Z}`?DJhMsI*b+1W1`Y2+Pxc*o zqO|J%^=nr`!ox4i-+cS@@ziqW%*#*K^gNg8&|kYqksCJL^~!tG=YGAFdcKxM-63bI z4qt9sRdn!W<(y-;yEUdI@A|N1!LnrmO1gTJJyZTnF0r?~yfnN>oBOCz;19F;YLlhi z)xI-miU&&XcYlzk#^M=3}5)h|vLJJQaWCK*3HyGB;c z@`j&8`k~Ci_vU>YXU?3-x%_JO*QXoc2Qe%v)qMU^de&`=8~z67Mj`QYJ6BG8celgk zdF=ATclp56tDsuzUOH%YFCVl<7*q~|;+`3)@F|e3v4)qn2cJB!`cZ}`#tLNNY4gyN zgd(^Us7=4F8QIM12e-qcNXBPffAjnu`)AAa?F5$&u~R?=InHwREVw`dFRYOPWlJ3& zz7k!DbcTc?3nk@l9Z;EGa^p!!(o6<;p$MK$gv)|fl_2>6JgNare++8u4%#S1F?hNU zT0b;^jwgbbj|rfFT5Jh*0(hzuQjlI3dz`Kpy*uvYt*P^hWzXE0C4Y_gxm<;y*n=hO z6AS-lTFbYxTT7elONY+sIZwOzXPtW5^CwI0M`T`nwfUGV zXe$rM=xys~&$+sc!}9;h+(+jQuQ>DR)fw)0k4!?(dg@W$$#)-FEIpXVWLG?VY;PakcE-9m(+KL+#{l9gfe^_a88nMKAIS z{^l3vC3^eBom0mS);+RN4$Yp)c>Pr0vxoxAU%qPT8CkjM_KmBxj+kxSQocbl{Ypw2 zXr1HYy?bwa#?4kcZe;LCN?K!j#u?Lx8!ThAqper>iQRbb+xNQATT0&G=$Vk6_oMy< zo%LDw(|=j?Z((>O%}<3b!>HSkB&lnouXFbN$x|Yyyu2SZ&Ebidvyw6J=u}ssi4jo| zdi(a=h)67Y^eQQGpH6sC#Am;%vxny#-4_2}VY!Q*NJrP{mhinR9`_rk9_Oxf?NreY z)>*&eWY*~?BBxK!0?`eIhEDcoDKcRI|FIh}R)@Sa<{cCFfUY0-}d zGuP?XYhLZk{X2Q)JattJOC`S7>Z`5i2Sa`mJlz z+;8gL>-D#m?4LJzQ~jz%sVAW8J$8Rd+xO#(jGz17)vwgl&)Ga%(y@6t+y1=bMgvP$ zHM#AdAC=!U%@57~u{6YbTkrfcF3Z2E!wVj}%TLaP+iCgS$@QO?YF3;2Vdw1rdB;C3 znR=!D)V2?M!#}LEuzhsxr0nUm2niE&%V|e%eb|%!dJbw49bB${>fNsyn@r4iwz2lb zgBN~$e%B(#ZPIkobk-fe=rsFne?Yc>^?!Eb6}wT>JchHrh^AiF=_fZX_os=qRn6R_ z#(v~<5?}TCpa0*^{TVDA&d~6G?!P&AWoG+2O>j_X5EckrA(q`suz56+ZT0?wWGv!6fN@K?~oXw7jV zS)BDdrG8&#(DvS4PuloTT)uix)%=iG?}l>I9VyF@%s*eq)%m^g{WkLhy62bvDQ5~z zKcSQHVe8d91v{c=N!gh1K4o?;vUcC*-AA96?ApEOtm^5yCZX+kQHBrhU=LtF{ZDxJgWyBwgd5_ruF~+jrkJ zxmPc!2KTQ1$>PN)E-pTOQgzr#PN|a#JP8v_n(r+TPxW3?+T{3ip~g(5-Y7@inL7W3 zb$t$g)}G?*T;0jp#T##7&Som?WuHdhIA6-t$ByW}2DmB;fTH7D4rym5L zo|$-|kd0U4q`%aJNx_{_o|n4(BUb+Fl--x|ILoea(&3{=k1l=kBR}^4=}F8Bo)i=o z7HV29c*3Az850u|(gmerJb-a0ArQ4U?J;v@O@|1R1pc#L_1kmJHBfWcK2NDblb6 z`C;8NkRp)#VTsA%BqPiT0Ywfc3tf+a0|KHPY}-3m?{jm0{d=U!T(c#is^^2v^^&(+ z&Zc`^Q)#UU-|~FQpDnh|zf1f*&RN!J>Bst>WWDGgS^VYA!>OK8AS=OUR(*KT z$=;syIXucexi&j{^6snU_rG4vnVfg5&VBjveamh=eD`L@j>Ji~{>wg}>*wzs?3{di zuC?j!bSXA3zb(3&>)vOSgreP;@- zmj7aGSoX1V+y1FrcNbTF4zYcIk`bB|_TIRB_1m)S{ZrU>gzT`{xBbbStJdm2-|y}8 zteifVJ)L(-+q<_-ZL8<2eY-dLwp7KgRem>%wtn=OrWsN6>rC_4aC26uzpv-}n)m$OT@FdQc|Yz< zw*Kl__3I16%0_AT#!0s)%2XI+#g$z8`*;#(lVNJzy?xHd{o^(A_k`|Eo+J@er1f}D z()p!V3lC26j);!>eYkH9gY>?g&weDiUAkrT{i2TZj(zItH^S!Zd|BUB_50B;k-1(S zbBY)I^H056xB8y>Ws`63??Kbu!+#}P_dn^md9*iux^H~=tACZZt1~?dr}fm9I(wfp z`M=}&rB(kXd7sfOo_FrPfJ(YwQ*G_e-39Ap)~P<W|wtZGL$1>}U4A5c_~> zZ}`&>zB#e6{yRM7w@tZoYR%qI(deK*=e@7KtbVnsd|Au1Ia4-nzZE$_limB=l-MgV z6Vv%`GG)g_TngM;yUG5($;#V@O5U%s%k}@>`Ao-=7E>b4%6anwrbxrFJ(zPYb_!Y-RqtmHV&1T(x>_{>OXS_R}Y?k-YIy zVQH@3+b>$brDeAA`kqVnUL4vcxqEfZzOeA*>gl(it~!NcKlCskC zCFF%|vRu}Fo*yeDb4_AxjaYW)h3qPOQPtv}t4UX~O4uT`R~*{({IZEmLz-RR?l zlm%_sClBtAE?R$h1|(JJfeN{n$dfY}kLiB<&!;9ouibnem#X_o#yvLw8N&CJZ*FSq S?qpzKVDNPHb6Mw<&;$S@^{& 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 literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/studio-flow-decision-properties.png b/doc/qtdesignstudio/images/studio-flow-decision-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..0877f728b5c40e8bd08405c112943f5be48be167 GIT binary patch literal 18844 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ν3quNNDXZ{(t{|D>A=$^!1&2 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 diff --git a/doc/qtdesignstudio/images/studio-flow-effect-properties.png b/doc/qtdesignstudio/images/studio-flow-effect-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..ae841a008273a7a5626bca8bda762befa288f2ea GIT binary patch literal 9094 zcmeAS@N?(olHy`uVBq!ia0y~yV60?dVED|z#K6Gt#`a?Z1B0@!r;B4q#jUq<(?di~ z-uwUl_4B*7&wnNT*B4`P6cCv)hw)^fQPZN1MJ}DHO}Sc z;JCoZP!su&@j3&;1F0Qs3_G4h-})DRCGW9!Y81cVOZ%4G_H2fV_`07@rzaopTdH~T z)Tv8ngoTBT%iqPUT`v5xu&^+=(Dz^ew>W!^Z4W{YZ#n;_dke4qjpcP8UTzlNoc^<2 zI)1H`{;buZ|35{p{hh5A!<;5nRaGTl6XNLQ)z#S8`0DAwW_HuhI#F9XJg#5AEP*3i`K)>KZ6T-8@sztFLZ9dvflNL@M8sj{(jA4 z0m&{4(*1u=l(@BI=|71%{{MPTtG{)4Gl5y&$+K%CXQ4@`euS>;#1#^fE911h4S1HF z{iWV3W&X5(N%phzs=nWw|K2dVZ@7!I!(?BOW7jjUqic=|&RW!%eSoL&#jD%faxYh9 z{QdRy-o1OXUcP+!@|{RtUY?kkSa3;iQc3ZH1C5r&&jfxS@mG3oana|l=}-GvS}~g& zH!+I_Ee&jzEqdVm(=Z=F(Ty-Fy=S>4r2&^hyodaa00?^=NlLMxv zwUzHa_WJma5ZfeWt36(ft0JdbtdH!Pc;dy1^e-n^vt zOQuU^d|EE&^YYmIzw0Zv6c(El@XlxySY}cAY01o)GqsLhxiY2Tpv%Uq7S{y|r~SI~ zp;y}cUah6R{`yIiguYtN`d;oE^UtPKSz}pvQ>K@`K-y3Bo$DV;T@qP#iZiX6H#&2N zn|IwKr^1vF)6*qiir(Kiap9!>oQP>kZsuJHT7XP2t_EKd4MWy0%f4s1F7Q}PR^^r{4r$W%>m=vL|L)u>teZc% z*d*kI3tKQ_V3hcwhf)TMJG#1*)M`6r>+9>2{>xf!-PI-`_V(uH=Xa+ouz9Vz(8;l^ z zGRHXg#CN>En6b`E(D=e*wYFuQ+5etyEn0Lk!O7wOr e3wzgl7%=_p&e?FfHI^DBv~Axv{~wwmEx4 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 Gp$P!f+MR9y literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/studio-flow-effect-push-properties.png b/doc/qtdesignstudio/images/studio-flow-effect-push-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cac374741f956431dcb5c8beeebaf5afef9d28 GIT binary patch literal 16913 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 literal 10092 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 Y$O9?&mo61W3=9kmp00i_>zopr0IsQ8761SM literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/studio-flow-item-properties.png b/doc/qtdesignstudio/images/studio-flow-item-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..28384e227734abc034484188115082db3626d9fc GIT binary patch literal 21844 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

%3M3cfJg8oA!d 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%0A7>ZuzKK7`)SI*NJbNjNiwwDYC5DTfun$hx_~k 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 E096$HcK`qY literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/studio-flow-transition-properties-question.png b/doc/qtdesignstudio/images/studio-flow-transition-properties-question.png new file mode 100644 index 0000000000000000000000000000000000000000..65e1f8b6ba9bfff0981df458746bf6783c98d82d GIT binary patch literal 10032 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 literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/images/studio-flow-view-properties-transition.png b/doc/qtdesignstudio/images/studio-flow-view-properties-transition.png new file mode 100644 index 0000000000000000000000000000000000000000..c4be840f6b3bb9e775d28df81b297da8cda83758 GIT binary patch literal 7231 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

|Be317>6?kq`Yh9F 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

ijpMM^!GfA{C@|0uD{NhUS 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 Date: Wed, 31 Mar 2021 12:26:41 +0200 Subject: [PATCH 55/71] qbs build: Install package-manager data Amends cc0fa86ffd. Change-Id: I56bb490f2e7b971f7d25255a4ee824b39c4d1ba9 Reviewed-by: Christian Stenger --- share/share.qbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share/share.qbs b/share/share.qbs index 9a1db42cff4..0e9fe5a5cf8 100644 --- a/share/share.qbs +++ b/share/share.qbs @@ -43,7 +43,8 @@ Product { qbs.installSourceBase: project.ide_source_tree + "/src/share/3rdparty" prefix: project.ide_source_tree + "/src/share/3rdparty/" files: [ - "fonts/**/*" + "fonts/**/*", + "package-manager/**/*", ] } From ca430f2a8b2ee7ea106d87bf517f1d4271d29b4b Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 30 Mar 2021 20:56:25 +0200 Subject: [PATCH 56/71] CMakePM: Copy the header file name to clipboard after adding class Fixes: QTCREATORBUG-25212 Fixes: QTCREATORBUG-24301 Change-Id: Idf6104548223f6d26820bc395ee60c1a8c794c6d Reviewed-by: Alessandro Portale --- .../cmakeprojectmanager/cmakebuildsystem.cpp | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index a260722ca54..87a552a2c7f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -78,27 +78,32 @@ using namespace Utils; namespace { -void copySourcePathToClipboard(Utils::optional srcPath, - const ProjectExplorer::ProjectNode *node) +void copySourcePathsToClipboard(const QStringList &srcPaths, + const ProjectExplorer::ProjectNode *node) { QClipboard *clip = QGuiApplication::clipboard(); QDir projDir{node->filePath().toFileInfo().absoluteFilePath()}; - clip->setText(QDir::cleanPath(projDir.relativeFilePath(srcPath.value()))); + QString data = Utils::transform(srcPaths, [projDir](const QString &path) { + return QDir::cleanPath(projDir.relativeFilePath(path)); + }).join(" "); + clip->setText(data); } void noAutoAdditionNotify(const QStringList &filePaths, const ProjectExplorer::ProjectNode *node) { - Utils::optional srcPath{}; + const QStringList srcPaths = Utils::filtered(filePaths, [](const QString& file) { + const auto mimeType = Utils::mimeTypeForFile(file).name(); + return mimeType == CppTools::Constants::C_SOURCE_MIMETYPE || + mimeType == CppTools::Constants::C_HEADER_MIMETYPE || + mimeType == CppTools::Constants::CPP_SOURCE_MIMETYPE || + mimeType == CppTools::Constants::CPP_HEADER_MIMETYPE || + mimeType == ProjectExplorer::Constants::FORM_MIMETYPE || + mimeType == ProjectExplorer::Constants::RESOURCE_MIMETYPE || + mimeType == ProjectExplorer::Constants::SCXML_MIMETYPE; + }); - for (const QString &file : filePaths) { - if (Utils::mimeTypeForFile(file).name() == CppTools::Constants::CPP_SOURCE_MIMETYPE) { - srcPath = file; - break; - } - } - - if (srcPath) { + if (!srcPaths.empty()) { CMakeProjectManager::Internal::CMakeSpecificSettings *settings = CMakeProjectManager::Internal::CMakeProjectPlugin::projectTypeSpecificSettings(); switch (settings->afterAddFileSetting()) { @@ -126,13 +131,13 @@ void noAutoAdditionNotify(const QStringList &filePaths, const ProjectExplorer::P } if (QDialogButtonBox::Yes == reply) { - copySourcePathToClipboard(srcPath, node); + copySourcePathsToClipboard(srcPaths, node); } break; } case CMakeProjectManager::Internal::COPY_FILE_PATH: { - copySourcePathToClipboard(srcPath, node); + copySourcePathsToClipboard(srcPaths, node); break; } From 719dc7ed89676972d5f98872167355e041ece7cd Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 31 Mar 2021 19:16:33 +0200 Subject: [PATCH 57/71] crashpad: fix install crashpad_handler USE_SOURCE_PERMISSIONS only works for directories Change-Id: Iff80e7914766cf48af05aac7fbe6c6e6e900fb48 Reviewed-by: Cristian Adam --- src/app/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index e372dc87180..83695baf6ca 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -90,8 +90,7 @@ extend_qtc_executable(qtcreator ) if(BUILD_WITH_CRASHPAD) install( - FILES ${CRASHPAD_BIN_DIR}/crashpad_handler${CMAKE_EXECUTABLE_SUFFIX} + PROGRAMS ${CRASHPAD_BIN_DIR}/crashpad_handler${CMAKE_EXECUTABLE_SUFFIX} DESTINATION "${IDE_LIBEXEC_PATH}" - USE_SOURCE_PERMISSIONS ) endif() From 392c466b20a449772257e15916c91a0de38f8e11 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 31 Mar 2021 18:47:14 +0300 Subject: [PATCH 58/71] QmlDesigner: Fix used imports not working correctly The existing logic (in qmljsinterpreter.cpp) for updating used imports doesn't work correctly. It takes into consideration items that are not part of the currently open document. Fixed by checking current model items in the document and updating used imports based on it. Fixes: QDS-3785 Change-Id: Ia50c3c7e7ca41b9bca0d69e7c2e253f29892933e Reviewed-by: Thomas Hartmann --- .../itemlibrary/itemlibrarymodel.cpp | 2 ++ .../designercore/model/texttomodelmerger.cpp | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp index 6c395fbd686..91a930b7831 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp @@ -212,6 +212,7 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model) QString projectName = project ? project->displayName() : ""; // create import sections + const QList usedImports = model->usedImports(); QHash importHash; for (const Import &import : model->imports()) { if (import.url() != projectName) { @@ -239,6 +240,7 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model) auto sectionType = isQuick3DAsset ? ItemLibraryImport::SectionType::Quick3DAssets : ItemLibraryImport::SectionType::Default; ItemLibraryImport *itemLibImport = new ItemLibraryImport(import, this, sectionType); + itemLibImport->setImportUsed(usedImports.contains(import)); importHash.insert(importUrl, itemLibImport); } } diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 2a23466e094..432667c63a4 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -934,15 +934,23 @@ void TextToModelMerger::setupUsedImports() const QList allImports = imports->all(); + QSet usedImportsSet; QList usedImports; - foreach (const QmlJS::Import &import, allImports) { - if (import.used && !import.info.name().isEmpty()) { - if (import.info.type() == ImportType::Library) { + // populate usedImportsSet from current model nodes + const QList allModelNodes = m_rewriterView->allModelNodes(); + for (const ModelNode &modelNode : allModelNodes) { + QString type = QString::fromUtf8(modelNode.type()); + if (type.contains('.')) + usedImportsSet.insert(type.left(type.lastIndexOf('.'))); + } + + for (const QmlJS::Import &import : allImports) { + if (!import.info.name().isEmpty() && usedImportsSet.contains(import.info.name())) { + if (import.info.type() == ImportType::Library) usedImports.append(Import::createLibraryImport(import.info.name(), import.info.version().toString(), import.info.as())); - } else if (import.info.type() == ImportType::Directory || import.info.type() == ImportType::File) { + else if (import.info.type() == ImportType::Directory || import.info.type() == ImportType::File) usedImports.append(Import::createFileImport(import.info.name(), import.info.version().toString(), import.info.as())); - } } } From 2fc05c056f13fdb78900cb32a62f0cd65bf750df Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Thu, 1 Apr 2021 06:30:38 +0200 Subject: [PATCH 59/71] studiowelcome: fix crashpad awareness Splashscreen shows some information text if that define is set. Change-Id: I272eb470b8c2493577a50451a3c11832254b16b8 Reviewed-by: Tim Jenssen --- src/plugins/studiowelcome/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/studiowelcome/CMakeLists.txt b/src/plugins/studiowelcome/CMakeLists.txt index fe7f34ca7f4..d22625e7c75 100644 --- a/src/plugins/studiowelcome/CMakeLists.txt +++ b/src/plugins/studiowelcome/CMakeLists.txt @@ -19,3 +19,8 @@ if (TARGET StudioWelcome) ) qtc_add_resources(StudioWelcome StudioWelcome_qml FILES ${qmlfiles}) endif() + +extend_qtc_plugin(StudioWelcome + CONDITION BUILD_WITH_CRASHPAD + DEFINES ENABLE_CRASHPAD +) From 919b46d9b90e7d4384f9f7e87a70976917d077a7 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 31 Mar 2021 15:46:21 +0200 Subject: [PATCH 60/71] Doc: Update info about Qbs build configuration Task-number: QTCREATORBUG-25162 Change-Id: Ifa419041d1633058d12a7b7bf04de4a0bd312f3a Reviewed-by: Christian Kandeler --- .../images/creator-qbs-build-app.png | Bin 17418 -> 13104 bytes .../images/creator-qbs-build-clean.png | Bin 8831 -> 7783 bytes .../images/qtcreator-build-settings-qbs.png | Bin 0 -> 9830 bytes .../creator-build-settings-qmake.qdoc | 5 ++-- .../creator-projects-settings-build-qbs.qdoc | 22 +++++++++++++++--- 5 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-build-settings-qbs.png diff --git a/doc/qtcreator/images/creator-qbs-build-app.png b/doc/qtcreator/images/creator-qbs-build-app.png index f6d5078fdbd38362194dcaa8adaf2d19e459f079..ef7ea3146251d2e6d52acf9c11e8d063aa606a77 100644 GIT binary patch literal 13104 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 literal 17418 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 diff --git a/doc/qtcreator/images/creator-qbs-build-clean.png b/doc/qtcreator/images/creator-qbs-build-clean.png index 5a4d859a827c96af755617d24880a0e65e9cd000..cc9cd9af04e14e089133ea8cfddeb1185d4c4cf9 100644 GIT binary patch literal 7783 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 Qfq{X+)78&qol`;+0Nk5xt^fc4 literal 8831 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 diff --git a/doc/qtcreator/images/qtcreator-build-settings-qbs.png b/doc/qtcreator/images/qtcreator-build-settings-qbs.png new file mode 100644 index 0000000000000000000000000000000000000000..4aba9efc58dd94f2ef63790ad2206e428c1340c4 GIT binary patch literal 9830 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 Pfq}u()z4*}Q$iB}!V&aI literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc index 353fa5332dd..eec535a6887 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc @@ -54,8 +54,9 @@ {scopes} to select the file to process depending on which platform qmake is run on. - To generate debug symbols also for applications compiled in release mode, - select \uicontrol Enable in the \uicontrol {Separate debug info} field. For + If debug info is being generated, you can have it placed into separate + files, rather than embedded into the binary, by selecting + \uicontrol Enable in the \uicontrol {Separate debug info} field. For more information, see \l{Using the Performance Analyzer}. To use default settings, select \uicontrol {Leave at Default}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc index bc89e8fa22e..0bffb2dffea 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc @@ -30,13 +30,29 @@ \title Qbs Build Configuration - You can specify build steps and clean steps for Qbs. + \image qtcreator-build-settings-qbs.png "Qbs build settings" + + Qbs builds projects in the directory specified in the + \uicontrol {Build Directory} field. + + In the \uicontrol {Tooltip in target selector} field, you can enter text + that is displayed as a tooltip when you hover the mouse over the build + configuration in the \l{Building for Multiple Platforms}{kit selector}. + + You can enter a name for the build configuration in the + \uicontrol {Configuration name} field. + + If debug info is being generated, you can have it placed into separate + files, rather than embedded into the binary, by selecting + \uicontrol Enable in the \uicontrol {Separate debug info} field. For + more information, see \l{Using the Performance Analyzer}. To use default + settings, select \uicontrol {Leave at Default}. For more information about configuring Qbs, see \l{Setting Up Qbs}. \section1 Qbs Build Steps - \image creator-qbs-build-app.png + \image creator-qbs-build-app.png "Qbs build steps" To specify build steps for Qbs: @@ -107,7 +123,7 @@ When building with Qbs, you can specify flags in \uicontrol {Clean Steps}: - \image creator-qbs-build-clean.png + \image creator-qbs-build-clean.png "Qbs clean steps" \list From 6a528949004ac105d06daf451b214d65ea7dfed2 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 30 Mar 2021 17:02:45 +0200 Subject: [PATCH 61/71] Doc: Describe new UI control project wizard templates Users can use wizards to create stylable check box, dial, slider, and spin box controls. Task-number: QDS-3407 Change-Id: I51cd03d6f571e56e5d01cad4959da7bc4958e2b1 Reviewed-by: Brook Cronin Reviewed-by: Thomas Hartmann --- doc/qtdesignstudio/images/studio-dial.png | Bin 0 -> 45261 bytes .../images/studio-project-wizards.png | Bin 15718 -> 16609 bytes .../src/qtdesignstudio-components.qdocinc | 37 +++++++++++++----- .../src/qtdesignstudio-projects.qdoc | 8 +++- 4 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 doc/qtdesignstudio/images/studio-dial.png diff --git a/doc/qtdesignstudio/images/studio-dial.png b/doc/qtdesignstudio/images/studio-dial.png new file mode 100644 index 0000000000000000000000000000000000000000..f440845e71ff1b19474616a39d888e7ff6dad7f8 GIT binary patch literal 45261 zcmeAS@N?(olHy`uVBq!ia0y~yVD@BSU~=JLVqjqK`ShcffnmcGPZ!6Kid%2?mPdp{ z?%ICW`2U>ORria})s)S8InUC!PfN>^V@9B15}!n1AkW&h5>ao(jMZEWFD(<>yg;EV zL4jjYN>>Djh@%6G)Yi8zXBvOL_WjMRP}e}lRUM*r-$TXUMO9yq3eC>XzWa5}2K$Gv zY&NHzy>!{O%%nJr@KgwtqwV`FVHl z#O&OyQG2{kHmXuF@5Y9MXU_P%)APE&DV6&U9|MDkqwnEPVfDW59VIV=p6^e)xTI;` z{tvgxc1!$UsrzGo&&w}QFS@mzSvOhef7ztj=K1TQwyxT+AwX+x&@}z{x~Hc^RrOuo zuU)wI#;bL|B8#V=NnX8u_Z7YT&U)*UM>>W3Wh|3YQdFk;X&&#Boo$vYb%&2(!CDC^ zsj>?F(+i#3eSCb5_`iI;<#YUIFVl`IGRI0b&n;b-`*xL@sCeA@n2OxpcTcV~J0q&T zgj;W&nNiQj?SgUThKrP~Ba>WQj+~mRty-UTVcYuk?|Y@qLpT(68&~A_@_rS|*;+qs zuXFNJmI+#E%k|H81ncuhg?q^o>ouyK$0&yh_a1O7 zDArgBA^p1kU!oX#npu%QTt20)=<=J_NXZfuSdFm%7xSU_s-@9PWj54m=_sfsHy1M%F z=g*n5|6MxIcXM^XOzw@Y2WO}^Mavz!`#d9yS!5TZ9wi%y&!(~+S=%+@1k~>y`7>N zoO1d6Tx)a313x}KX6Kb!k|MnN()Bfybk}_Fe0|L~?sj?5uFR=f*{VeuS0`owZEW@=Gux{k%6<~RrqVOFV}AFdl24Dzgl2XyH|er^>7AAi}n`BURv_#(Cc^H z>utBcPF6njKjpP|;1}h?`;XpL*%cZcw6t#KhW(01_6tOPJ9c7MY>y9L5m#ta_Vsl) zZ{70Z<#@5+c4hbRqg%i2y%7^Ml-Lc*S9!U2WBY2F6EI>i+%;6kf67w9l%}rSFVSD!vU244nIaR_^7uD^x`u zJC^XS^zv)lY<6b0FI_^sldda}uPy5+pW-7D2YrAn{<1f{6*_=;6W-$uok*0x-4 z^~zgr;M|&b-EZOBgU5O^`}qH+DxaKNXx(`1q|X`wmn%;^X3qN~!s!|OqHL0qd)|qh z)sM<@R!m!V^+LQ^1^0Glh8IkS+xhu9I0WpMZVZry8cE|7BM;~?F%bMBAi$iwbQuWo++w*SUhmbdu-`3pm zOKc0ubN^rBc&E>;s_XGF5zn~IX}xzM?`R!;n{w%$J`^?)`Hs? z%X2*n&}GfnyrKPlIWs7YPQ5UpUTU?Uv~k**1#ivzrrbUf^d{5*O`E8#{X)7cHS(4hoNE)}%?>wRx#PpG--m)r^;#o-xwfq@nxEsX|32hl>&cW8 zHt#QM%{%i(;NQB8%>hR*+{u}B$oXP&;iyed-z-~hy)$>dhGWpD92Iw~t$Fg%Q9+${5z;Fs z1_niz)lcr?UcX!4W^L^58FfAv7Fll!uE-EG|NCabuayf;#g%?quPs)#&TexnIaT)O z@LL9kTU@*xi~S6L-Tsy+n~@aych=imrmu2#CH)OISs7LTFmvr~-RNyT7d`xE9o?IB zlxyuCflPyCiw;gTDU8aRD!W6L!Qr@~>Bp&wcXySF)V^G`KJsmW_1&Bx)9;54|4k{h zk7QtAxck-g_Ez)hFaG@wU*LI_?Lk?AH3I{K)WfojAjUg<;!2>p;6YhN(8DqY1_p)~ zLZ=;78|Ja+u`@6*9C+JMwo`V|bdW^bK8Ck1Cx;&1esy{G0Zujs28Qj-1=c%a**CIz zHS7x7x{iUNz?uPM`VLu;ks#T(rPfg&ch0`ID&<^(;11b4ey{t0?9dEeb|Kb+olk~iJM*rmW&an;ynS}>Va*bexBr9rK&Ixg z@8aLYxJ&cG#l`N-OicU!|NAX#T_$5u(D3g6iziR6X#ZSrZtC$vhYlS-uCAhzvYlfW z>+@s1(z!V~CWqgC(Y>3t_GjYxf426&*3U3Lcd=7whmX9^MANqxd~v8f7_9u8vwON< znaP9`E)yo+pY*Zp*C+n6(wTcwcE)Q@^Di|#7JAn@&wW#AjODFs*0-cr%53`S(K&b0 z&l9g=cjp}!TYDxR?5FFyYZkHG4Y#^`tor}Izq8Hrw{71(y@xsQv)i-swQJex5BKAK$5zPiM{VZ>U#g7S36;DsOq!n#2o> zRcyeTnTac z%_|iB_Ko*Z)2;cJnPOP0PaD6Fi+$F z9>3+}^!U1)+r9+YJ&9I{n6LTZvcLV({UHIj^S&>)|J(WLr~TWH_5a`h554*};&;mZ z^xO5fe=GsDaqjqSzN4q5wTgLZa8LT-HeNL~wM!pGYXAQH{5)9Z#FZ;s)IVR;u?l|v z_xJbdYlNAZnY{v6t~>Ei2Mvn_95yznsJxx6OgVRrPJZFzUS zo@bnyVaU!ew@0AhUDr!=tT!kvu>Q6Bh0yZcb~grnH#gSDE0lly<7HXU0r2e{;r~`N-IA6%c=_(0=Ujy{P^(U z!zs)+A0Fux_B>bj>!tdsn3**kwUk_FwtV?_nHDQxp4u^YPjhQtIe*^rYkBVBA9^H>`(&-n%HQ27JAQlX z!?G{8mU>UW6!)qwzkE-ube_AH`~3}DrWd_FP+@&?$6O_W?aj9jzTI-{?V_l~H5W}L z%s*tdq-4#F!0ifOMT6MqTjV`?`_^~y!H~1ZLzqH870#6vnmKo_tkLXRuk%XIW|Ow% zF414zyRIns#$zY5U3okUr=PvIW8?BW>pqwI8JfNFTbfvA!rOEx|BB7VqBSXV{pZ`w z{iGf+lQSjc=X#}n5;PZ1nVFZDSO5F={S|>fe!X6=dB(BI z{i3z&$3C+=eG2*^%e2^jxrM3y@ct$fy}s%|^$xeB6$`Q*s-BwWb1zKZsk`^^skuMT zbh~m&-(7yX*m|?)af_wl&vtTc+7vcrYUq7S@#6V8Qfu^Ys{h`l^EPr)!x8Q5Inj6g zz9sCK`)jvs?Cvk~dyn*e+f;SE?2F&T+ZR_)(~VZ!w(obOBJ(HTF89%#a?b62Ncrx}<&Wa_TABK8kv#rEtIszf=+U2tWh=CI#QN`wonkXZ zbNV5hFWOV~ZC&Brr;_vb*4Dt+s z`2CD4`gCG}=*2xd@|WIum(@KX@@I>36TdJ^Pz8yKmdBshT=##)JtIzHD0X zt+w{iH^F0XQSmAEodCBS=9|{a67g*11epn{;uzhp&`%`)kGRzc+(I@GEl=FEgXay2Wa}QWag_1HQ{x7v)`A z;wcgoWIEqaDdd#<4W{lp>s&v%_@@L%J*xG2vF`Ylb=j}(+_*7gO5d01J{@T%Edsb$A36#!r z&-b}mR&|Rt?p~uHn~-Mkxv7OJK|X5pb+vgu8HiY4bC`d-^85CDj?>${Hu87`QXPl?rx#oFk z@I@1g8Nc4&cxSWCz5iEA=97&UC%)V*zpop$#p7yCN^_{!v&)X#g_nMra;wyLZt#M4 zhg!L>sCx%%tf;3p@p4T0NKYPN0L_Qlq@`ME}M>ZgUvx}sQu ztZtfh-%~vMKjiA$DdN_SGx91!c-1SKT)Q{&Mbzxx^F+E>2b?c7146J$Tr3QEWa_{=te4JhP ztAoAuLff5vSIqAC)fnUk)W1t*?6NAmU0{9f;R}7;@-5CxRjbSjcZcmeRH7A>l6A|Z z%vnic>Eha6P{vxnBewlFd*sZ;auHp30#={ew)Vj4&Q+$5rj^kR{)$_l<6py?fe(UAd=VeuI(_Afm>}LKyyr`+%_{$feVCaYiTouo~UgjQ}}T$6Ex zx!UIMmxY{OZ$2d65@6pxwa~h(NA~a1<@To(q;Ch?<+;}{4GR%lUT&24{Jv3K&&?$# zrU=;mzp7ckL-rL{-gVxAud*hyqv@KW{@#>zcZ_MU2 z-k&n8|1}=C|J`s!-8=rlrfgmj9Rnq z_os^%RU6NpJmB%hgMH=Mr0K`4YknAL%C3|%P0_l$qi3$KN0qyx^Q*!|KZU0lmo7d% zmycsR^Q+foEV>^w%B;6(Pjf04IlGLPD^L4n8H=y`q$2BUdqaw>o5T`de%c}X&YN+2 z^X->?w>Pd@ShLV%_9U?r3F=W^ZA~lO`(u}_YyW&PX7B5tyA~NvG~t_VHA|&g@Ji9w z*Vp@-n!LUp_IfG1mBYmUTQTF7gJlI z@V{5T_-psMh<%sxZ@N_1+TL6PhB_7>4s=Gp+?pR;-k)}+n{VC9l`A{GNvoW?l=N-sqgl7M zXELs9+8Y#E>GKDr$5U+H!MD5WcVgJte; zEnoX9KF(%)?Y!mzD5@IP?VRgXm2UXl%k`OF`O1(=r!>3YM*7LiXGg5>Io3L5${dOG zBXWCg{@43{kIV7Nxuj>UdzRn69;e}(fBx+|%>rxN(?89%;&aL`UM|1+uMg2wuTZ-DFx%>1hS~N7J4}*ZDtL&3Mi>|xZf`xTu>ZxW~9KVwuk5lj*0qnr(QF-d)LDoA>Unz?$7OF1 zUh03X;6~q-Q|zmAT-zh7;u{`1V!PQkb2m8KZ znU=QwN08&?-Mc4S5bDrK#~ay=z1QhWLCOXO2CH{vvPUk| zOjz9Az4)$!ck;5!q4!UmITXaiEqr*IGP}i&9XFz9c3G!??LB+Ow|B{ObwdL)b92KC zV{PSPZeiw5A0M7*wTH7JXGu$UY}57OO$-5#PJv1eXcRMo3K9lLF$5`Z8g4T(fCig( z$Tr+&lzlEd_mTa-FDK{k`+0c&@Ba^_uiMY)`|o`JW&I2L=l#s$|1PGzlz$uc?_%Lw z`B<}m7jv~gFW{~6>fDn3z{#q|az>n!{-4dFsfSXQCO@#}2ARE`dDg?S^;TT_h4;K- z@e;fEMSA~+dHTG*asmLSsk!RP}9N!}eDV#w??((9Yz572JXa9J}`bYWXTAyrxrvEW)$;n%` z{}F$-q5kjg)2EiM(K!4`O|4k#QH@&goRpVe((;}gS4-D}ihIzo9m9jNw^O6PH~wGL zRX_K#R!f=9)R!v0k3M=!{diyh{^Gui{QncUmM(h9d*Sv39p- z+p-J=yTkUJ(5??VxPQ*!`?_6|-`1SkKjp0dlaJc7t|rZq=Po^cDSFqGqkC-2=G-qA z>}`L1FUEi6vVKrR=dnL1V|cOaw(Yq!7Si#XpXM>IE@|}ivC-Mu7603D@3R7rK_k9PrW&2H4`?*z21Aq&Hm&i7ER{4YWk7y z)KA{Zy=}IB&but7kL$v8WO7-%n{G2M_?YJ&ETa^(n(z3vjY(U~_Dr1OXVd4)`~10< zmbvYIolmJ(FYd7V#qlP6p+Q_lmT0ZR4q1j*Ps*0XE&pW1-)AUdXZp!z($wObMH|1) zy3utaHLS`_`Fom4sQvDulKb=iy8FfLDZF&Ou}|pj(%$x`Gt1Yvw6?}_*B@E=KcM2! z>6oJY9M>u9mn_`4`^~ZX`j>3ZK6d)%Q5#AvpA?n7)Sch>rg~Pvo&}GNIjsNm1}=0{D16x!F=hs&$AB?${1F7 z&d>Spy8Tq}wp|U%B!@sT<2wRY!&Zy7EGZ1+B^y?@G=s^}>jgg*!9 z9NoUk_|s{Vq*zJDk(PB z?aU6$cl)MI**)vetlrGE-1#;?mze1-cG`T+Cv0oXuZHFGuB{U;xpIk}zxvxOEyg@{ zhw!6smwZ`QyD@prsoM0a$Qv?hX4lK_ZQXQ5p3U29#?Kk=m3N-qZyH|wNbiru@tYyH z-pcLM^RAvYWy+T~tjqW4SZ3^+Ixmj>Zr_x|KNoZI91Am#Typ%NzC)Hl>RFk{@kN$P zcE7v6xp2({_0mmY%ctfYcM8^alDocX{#>z$ebd&&6?*NEz3{>=a^pQs)v_kTvd2xE zjQIPFFB#7hm@~I9W6i>z7Red6duQ#ndy<)2dnhfOIkP(Yy=B>HJ3p)Xm=%o0b3$HS~GJUF+KD+mNjqy{vGb?Pq zd01q(Xtk_r)ndM7GoRhJd+yTjTQ{Xg&q)AVbo6aT5@YF}O=iyJ%-w#gpG?d6R-0oTsaN~! zcjnX((VV#fPe06hSjJFt?QKZfg!{E|Z)O?Zw|(aNi!Vbr@z<|Kmb|~1pT#~EmHlio zsc<*rA+h=^>z;>h%+7uK9@Io;xS+TFvB=bW9xKz@uLXwd`08jpnwIsbHfQ(Zm{nY> zCd6L!(V6_N$nmsk{U7x^d<}9X*0#^jcJ|8O`+MuhmHQjFw%lB|FZ}PfQdZts53ZV- z7whY9yEkWD@l_5SaTJ1R>|auV&q73MTXt-vjbOl_FdimRP35@sJp1gRgbBhAhW@B?gi_-@8ADFJwE+2 zGi&1V-K~Fa@y~i2u{T05R5ny0R5?^FR5MfuVXpS}*Lm@tCv}(q*1Pb+>Q(#RX`gmE z7)XXq|GQ@L(;(I$)1cI#sX<4BzJ7DqSzryT1$Z_}ikc)g>7=}Gu8P{tw{iPAt?62m zS52AQFSPmrn_PkQg4ucPT1>Y5clcg(-M;I;{!Zn8-D>8IOJwAJh3?)Kvnps+#51|n z@AvP87pU`t-3^+t+P$uD?r!~6+gy#3%JmkiE#JVC{A}0am{k$0;#Q@s%34(bQhD$# z1IYQij=s&aU4Ks};$WYcmF9%4**^`7bz>MQDZl@AmmA%dVvFE-qY{Vv~B zw_oe~GnTODYV5MqxwDS@^ir>BYd#Bsj081f3U=!i_BB1)mgG^eJ5P6e=$b7%M8Fl^ zfwv5I)&-w)e5e%mW}E9t`QNPDU%xAwY1kK-AGuc>(xU=}%d;ekzIJUt4KdHEUn*59-_e+*L&RqKD zLB!s;ygb?e4noDJUK|0b^1FWFwOqi)0_z2~dEpn&*lTw%uQV|f136Fa(~Mv@^*%p& zkZ()QzBN(u-yzGe_i@?#{|EQaJRWiAuG79%pVc2k?2UN${(q96pfnJpHo zTh{sXQs?5!?&=f$mU=x!Qkz?B?HBm+;ts2_nMoGYo=x*!-tU+6VX>9fLQtT9CO00G zIh5ahSLJ1D$*3DPXI?zt@k@7#UVhoA?RVc}Wg94r@9^cZZ)di8RmN$#NB;fZSn+!m z?^9J}yf2?#I@x3SB)<$NGk#DC1P==Ey_j=bv^ail&7nI@N+$c*`j*N*o!7g5p|IET zsea&QEo650g6{TikF`qtH$-FSA9{Fj11wDmH?HLdF&-8-Wq*6 z{q3lMkbs^tV}VYuo_WlIHzh^J+@~ItIk4Z!JFzA7pZ1=ZBj?%uzkZIlEIo4NJ>R=% z!*gNhxMf^-%RG~-{FLxLMcQ(Aj{4iG2^Bf}oV~lQ?U?(y=WhADd-u$4I=0%h`^5j8 z`(7mcDp%2)3z`DgZSL?fOuhRq%E-7?Nn_nQkF=#p7Sr6Od#jsx7<~M>tI1Qezx0gPh{=O%zsqFjHyXInjOJ6>{^tNHGw2W-i)!zQB6H-n{g;|8hf8Z^cbq zaBAZcTb*sLGn#ZTmMHH>#P;sdlekFbc=H9yPNlKOm4H|sA|=&xp#lO^?&vM?DPNomp$1VEE94v_|n@Y zTEQ~;i>o$?U+rYR+Ua}T&oO)Z=2AJcYnKn--T1vnDv#ad*xN(%46_%?R)>T$9lvy} zXs7D>jD^-#N5dz_AAZ|#ZTH--E8cdlm(P__yCL`S@8#?M`{fUMIC~x}?BcoUe{Xig z?TFxGx|;QWw>{a^AADLb?eX2&t6p_o`ZTNjeb+gCDV=+&W;}si$G`1Z^{jut>GkVZ z_t(|f?Rs*v&#>uJ%(U3&%ihT?kIPGcY?OAa=i<4wmvY>H-(UYz{O|hu>18R)Hg{Ea z-SOLIgG(UP2*z0>fe&x<_wFSkSdEbs7T?7V%`$7V`!;py@X4u(ovMoh<} zyWbuxiz;yYw({n;Ne{I-H)@=-)_NhZWwz9mP`QnlVi(>vtlcE;wW;4H=~3z7zsYe& z^Q8Qu`9AASdm{HWX#I}4zjyuaEt&qIXYpnizI5Xx--@IEFV+8yFZQe853}`Oc>Cna zGt->^$WK$xk#>zfXBU2Y6QA#vmp3#Egs<-TJSltqCO-ePRo8M;D^8xS6$aJI%P+ju zQ!{ehJ>mG)0-d*d=1)9V-|ju|w&B{Yxm*9upxvQ7)ZVgrtyS6TS(W-gxWp2;A&3XKG<)0a6x})Bv<=TJtNi1AZbMvL` z_RW&Jzn+X<_WtYiDSv}y*XFkA?f>*j{>%Tr+nb8J?^sP)u92r6JyW;h&yO`qRcm)| zeSD|*&Y@uAH&zu~$2zj=?#vTET6nyilVi`s*ow?XWl$OVWZUbByiqla>HORj!qNWFWm&F$;dyD`t~zIsIcTk7h!HzYZ?XM6FSUHVVOXBmHd zzuhxjiOcR%{kQwxhicl(O#C}PmIY1KOq>#;zV!O^9sc}Y=dI6IL>%{Pyz%zf`|8L~ zKSCCC#GbBB-(+-$FQei1M#tU3{@D*Bb_M9|HrpEVf-jGK%lWr!+H}Hk&ZLJX|CcvS+MwEeyTJN(raJd0f4}tPk}~7I)MxW<7yU?$ zY?+^(e>LKEvF4m~*3>=X|NQ@}zyJ11&`kDxaM`>yD~wb(%odz8uQ2OyqxjN?+HB=N zM0Rv!&2xJjnkF~r%I($X54>&IwL3P9(>y% zwrlRz=kK2T?%((S#uS+Y=L!`vA8@@%%yGChyY1DcNkVb8!B3mtAHT8f&7$6L`Fm3e zyW>O6YghE%f10X)PxWP4%)$jcabjV&e(Y*F-TOC@$N0j!FSWtNxo6rI?hQ+Rdv3C< z&Hs{j>;Ke;xvu-Z;cdt~rR|f~`gpGJi`%<8zvgek-wS>7o2Km)@!QRfbUjgt zX*hiB+{s*)&HvhFXQ=Xi)Qfh%zEIh{y6?M;YE-K8o^G+11>3ey^-0`RRPgzOjP;?j z7pL8n+xyZn^Ut@yz2V8H)-)#BA4y))?VJ92%f|AeGLbdB%E2?&o^Sk|5T$hN-m>83 z4k4eLielX_?YpRaXYSkTOi7U)vH|7Wl~+%$R_3ypCN^Dq-YK1+T8nLd zH<;})RGiIz{o>Xl;Z52vu3Tnyn9c|aL1?8LvVC&Sq4}X7nCE?3|Mbx0k}Y?#Wu7rD zIPI`1W`}G8c-El6dcnlJa?AG2TgKTBtgNE+=2q=ucwq!;pUQ&l+RiNXzHF=fkKMvQ z8a@9UyN{%1#cxrN`yuUsj2*X^h8Y^pel4@3&u{waveWxkG$C3OQt!$hxyi0ueEMmZ zs60qh)Z?{sr-U16M8uT=j$cv-p_NW~?PCt`VC{)9K=Os>8)iZi}A%R90_ zcFO7fQ_jZlOw?ZuD(Ki5?(k)-x_$Rt`mE0`axv^rjixik@+kIagWFgj$tAb{e!l-l zS<|OD?kC^6=AxgXXU`nnV7hAIiY2gibi=cqvbU$n`?tPc5TjUPc;WByNktW)_R{5& zFAm?&b2Q#&+*-VQ`qiG>ch59K)J(YTx+DzLe)HqL!#DN9T~p@m%vsONCc5_AR{i+E zN+X;jmgh-X`eTSYnjOy`c-!!7=iQkm$KHBL!R4#vt{eun^VphaHQr|AE#AHCzQo4c zlMnp=z`ujmHERvOzye z`8LT|3+!WvO=>&uPBuFB_FXYpfxYUL3AbbGzDa??-9X|B&mF#uNw+WdcogkEBejF? zR4(h?=}mXu{djBzP7?_M#s$_3JoCh7o!b#xDICN8beodm@}@g^>l3V4@9?eQpL~l2 z(lFg|SG|3b4^2+nn3}Ew>pjC~p6K+5Aey`(5$;{!TkLJ)Ku|@<_?cX(a{L3q}+k9vHSZ?}I$QU3{6hu6eG^Tn%5D)}pe)fax3J z&hMJLy1o8Sqk852cm8+k|FLUs-~8EXyZ*O>Qxrpt&HRe<-|a82T(kI(%TmcrZ{ECB zE@s!h_15V5hqascIX@_K*na1oba;_<)LW)?%|)rFmrgCbG5aE@3fM7s^ZT`@<~R!< zIsf+g9BplD`|J1e!ZHeTZ?2v-tENT+5fv16CeKn*T7Gy{;2X^8VJ9om!b61MU|KxqVw`O+mgp$ zJ}oq}4Fn}dzr1v-d3WAD`JpFb!=_2b1BB}lRV!A z>fi0T-I@JvUe9gIo|~atif`*o%=Vp8-@CnPn)T!zv04`+k6vo~b;{-ajE>lh=p^>- z%(q^b)h?fW`zXgdTZZe7JA(FY==SKbbSHS zt}j1aLzcdm&36+E){|{PFIdb7dLG4LR-kC+}@8 zpI8vE=x)ya6G8V+_I(nves9%UhXHcoPEhg&X ztUK?V)b8+QG~bTo|M@MB_xmBI@USCozwWMCv1i|vn^A|}&e?PR$<(;-(Vv3r(k3`C zy-nNvck4Rs_b1*@-a5BzlfwTeC1ve*dy;4Fe7;SlE>i5_^Hp}H*IwtP+yC3Wb9L?A zT+Kz5e;vMv`Zs>N`(P^hCQNNFYW&y6dM(CCc7ej_J-T1 z>po1{aOv4BB|pXWyB2MEmHYR!^W~UlEX()T-j9g=wrY=3=6#j44!PCM&C^?_n(fnj zSd?5ZahPX|cJ2KuG18k8S4drrc)wfr=Iyz`$}>7QD67kAaCNP}S-)OQV_(VI^BK#y zo~mUgrwE+*xBm-2_SPxrVVQ&Voj%@mmi)4|d2@~nsNbHZAhZ3! zl{*uYk6#qhSmY8tU2w5&8}GL58@H7fNxwR!)9k+bb>9aW^RgwT>g?A8!|5S$V7~{cVzUI(v1YsI{fVjqcvF*D9CX?g;GrwpPS1Pw5U{ z1K-ZMkE4oqzd2+CanR5AJ-1nx9(dazwsY>97LI2p{a#9~EQl;y{N(7ok6EF~JDyA2 z;d?RT_RbuY?WeW1K(*}6qWa(JkINc83#=EM&3kU}Jmb;izp;WdOq&5gP$ z0cw1doOyd^+oanU=Q=;M(g@!cv+K0M&b#kecF0~x+YYG=8S>bVH{E6gO)V}2)s41y z`D!<5h}Ujn$YY08hTnF~P0(`nPmNw4HN5%uC)eU+2`+ zV7>R^;L+192NN2U9+Ww7|8)Lu`J}Ah=wX>gxZln@Y{%XnDuOpwx^91+>z5}!Igs6TDpS%ic9Dqi=Opd($cW3^ccUcg5bB%R4{?YLY2r}Iu;y;AY>08s3nm@(Ep*f2Cv3Rzg2Z-i-}F1{{)mIBeAcxYzIoff zJKBQUrJx}}-=f{KD|>FIUOP}4kf*H_A2#u}Y<&#-cIK?3(3Kz!w`)Hw>AAl#HQ+(S ztysO?45yx^uLrkpKrOmSw?(<$*%s(AgIXOM?Vs`PjLk_?MKXQaeTnV2Cm*Q)Zym$_ zlPow|YV0oR}vbdSpke z(0cVb&B=vs?s8IZ%SsF<+@9Nsh>Oa+>0xJg$okG`yzb?8Rdn!qfZI?dl9lnf3w+kJ^7qj1D&SSrF@vT(- zkL}9qif3f_W`(}rIrr|)rnCGW@45KwCzkGh?TRikk zYC-R1SQiBpR=C2N*c<(I(N?ccs{y{i7Ytkdm*=$ig>|KG*^yAy4cCq8?> z^3E4EMUCvUg^tnan%gUdKYZAdq160FMe^yN5AHj z^qBr#bAPMm8E*f~8O( z#ie)pKAP=p_ndaU>X@Q%@HY`934*sjbcC-?U z9?<0Aop-KrKd0^H%|0wGyh(f4?YAeMaFy9isVTUlH|c7i!TJxcKHIE+J!fC~?SkE6 z`IFzIg{tPMCnqN@UECb~sO(aE=6X;&0;!iP5>Qg#eD`_nk(zJj?N9BOZ~eciWr5|p zbBF)xEh%4=aqjEVX|?+#_WUi}n71SLf91lLclOL){brYP@#Mnj^=@u+qu*vRY-f&o zS9av)52>y@bNtu5%-cS>Hb7nHvZ(dPsE0FEZav`P$X)F}t@AeLq0D}bEovSUFXu}i ze3Pmcbm0rfO}Wst=|^&UrWMHU-4kIk-RYUZ+tS_Koo80sOUG+RgNMIW?wtF!*-osO z?@!IgLoa17|E|CIytw-RZy%Ml3coA=JZ=%+>AJ|d+cMMBf1ZlX`7`=Yj=Yul7b^dF zruw|6PcHsjwCBw8PXGC8d(Wgg7r6ekym@m@jh|c5o)oq_kDA_ypFBTrdHVBb&r+VJ z#7!-+p806Yg|~I5CX`v%I&c1G#^=Y^tkd)5<;saGTU%RKDoQ^S&XMNqGkTl<{7FuJ z>MH$;w3Mv8yrdQPi+c9W+xPUz;m$ivE6zIWp6&Viu*~7~-FJm)tfn9AUG|>M$aiy{ zzFSs!#b)c{FYC?f@9te>>{;ntf9=cGZqpNQjkr(M?fE{<@9*L>T%b~R>+3S_b%it3 z`TuBkq}x2d^ZCTu!(VR}+!Id|=C{#$uoRe_zV6=h`yQmVoiqIRCR@1JR_*8I{k!sZPWO+SUXwNN>wOmXx?eAs&#(P<^nhq} zZA;#C?ch0nJLWe2UREuWcwv);_M!TW`>G{Z+G3@GohMa&Sl=$;(x2oi}%ew#8>st zUw$#C_4<2OJI_2kZMW>RzU>XuH>>UHz^!)tqNuD`u0T%!Bv z*2>EZpXd8KKk->`7+}^ zyB+n1cHduKUlu1TRqFPl>^z^h`1G~Xg}WIKr=Oc^oBV2tXWjDPE^d$OZ0G)K&YfL$ zZTJ3pqL&+ImzAwM+j8K?qC-!L@1LEs^IeS5*BdOpvp0M$3_Mu7@V4#qXLsY0^X<<3 z{>|-q=MVeA`)i{tlQ$UN;mg>2+m&P1Pv?#KRhQmcJ*Y3(tyf}Q)@33o2daCg6zmrJ zm$doK^YrV}BI71{q7SYecP)GLU-->d%ooG+n$`|KiFgUNPhiL=v5Z@@bO$ZH@?;R&x|has(Z{V z++DnG?S|qXW;Xr5A06@Ww!QX*OX=_PQ@do1@97zI{z@_5@gjMT>;=y4r?oV=JJNPN ze`KWfplsKJGRT#p8&BiTPYC*Ho3zkQudvdY^s&32prw~iMan^}@~@v`&d-Wz^*?dHGczb|%F@a)nZ z^^v=F80(iFdMhKDf4a7)@cuL1`cIy^cl^Zfyt{Ha%Ia>(CDEzeAlGVc|Gab7Y2BWC z9=41A8^81T^jP*?{makxd3Ei6^KFZ@R9-yzd1J?2pZPieHKq9j=jS|Vbw7Drt@iTs z{KH|ge3l!NC)LegfA_Ec{k>bxUfys%T=~1&lGDYzAGzD_`uo&-dA`1j+fmhYL+`a6 zcivr8p84q0mTPZ|lFz-nshaTkjOJ}QvBJscb)>DU>Joh70uLSRd{!kE+#I|ka=YH$ zbC2w-Z7%wp&pGt($Du=0xL>EA`}59;>$3W5(-yZ!g~o@=b)&ZwUGEil+HNfKFFB?# z@X*Vx+ zeJ|sGYk{8Y!{)PnS5|wKefzYie`~=rma}s=L{(bP4`TZpX)*m!(aEWEe(YWR@0iWs zswdm_UiM}EtYG&$>V5sbKVMcqtd?szXZCN)(YJP{vr4C3^E$a>Ps#!DLpt_PwHT)s@KAj4XH zzlQ?fOHY5fcV|s`xIF$wZpW#!Cr_O_C%k61QuLf} zcc&jZaN~?q&(4{Kt=DqVM+7XHz$KCmmT5{%yu> z(L!(TolA39%YoKG)XoU>Tt36kYZ@=cY)K!Pni#OK4SCV>I zW*hMCuZdd5cH>?1{7gWx)zG#}_MJL+16Q8=h1|z0fAV*&UVQITUa7T~>nBFg%8i#T zmok^G+BYrcZXS3=3#8#Gw0&`O;M?w%)1$6#3%}#Hro3Rcp62wuf~<36T+OG0)quwF zK@&PZ%tWtP&R$f}+w-o#I`q0^<894&y}74iFZOJ5KcQg_as)$w=nmNn2HUlt?OWv9 zbCUVovFj!GW4JW8Pp(Kh*=%zEZ&YuT|K4@~n1YRL{9?bQMK4u?wqE9ZY6@-xWlXre zuwGz+zu1AdQE+_d9-+V1 zIJFkRyFIgS*ZxueZ`EGdmCu`>bdMS)CEGu|z0TR~(ciL0#su zU3Y)if5?AkSXZ!pLcGG}SsPasYc7%7l&8MBdB*Eo8;k1yix;0-5%%)SMb8#cUjnot zV!LqAMV&d!g}P5m)8{yc-Mv+6y(an6!y@5IpQ)ERS7*HQ*jZq`pg3=N{!6p$v;5WH z-v7KND`(&S zdQy@0?4JvpEVSot;+xLBomuK_*~EzxSG}BjdfW4@{MT=IExEC_I_7Ul^J2T-XEIU} z%C5dW`uFM1xk2u)tn(^6x4NNMv!LqN=L;G0Bs==1y{tI=4UYXVPx&IUdz_@^tp8HXhq8J8@F9oW$q0FYjWU zdc8ht9m%`CarUu8Z>O~Qonl^Ba5OW@cZ2cMLvI_zcF1n5`B{{D>t*AD!wjzGw~W%Urb{9#qIg`>#oWD3tT$qL8nA9`*voBy?6R% z{khT8HTV1dN%vyCs?O@ZT=QCEmIU|q*9@QqS`%)}tvRV*b^B(~!!n2Eck&KwI`L}C z`?)H|@2~B6cC=ReX<7Kwow3pGX0?BoPJH;NsK`(^Fzu0~bM zFKvlbz3aF8{p(w6pI&;oU~-X3>-oydtPn5E?eFj3R4lhV_Q6wGiA05oMo(iT-Ib1} ze7d>mkOIGRY-$xa_?98Sf4lO#eJgI&Y)`CpdA#=d)dK5Mjp=?Y zbNQ?^CD-p>7PCY4Ldo{vxHl{Zw?7Ruo%4WGY|+<%FJIYp_Ql2)Tw1+8L1ykhhWDpa z_jDVdaWz(9^VoB3)mi08ZkY$dac3=`B(kVpQra%vneVwEG*4Yq_(^5K?t8l7L0fl& zh72xbfOarQ@Wfts{dmv(`X?_hFYQ;a=H(P!*dAZBbHmD=+j>qv-CKEmLUGzV1>3UJ z$;bN7`Z{?X7W;NNxMGP*%lV2o2hU7;-OYBObIY-}ZdMPYg)(N}?zCpy?z%TL?V`17 z-t})fTsvZS2Ryy3DNsHUG=aD7@Qc}?%C2ym{Eh1_R}N=o*c~`{^ys})A$Ojx%1=p4 z)I7Flt#a?#Grm00&(4E4E*$9G!n*ul#BPa<#kVhpa7pbs|0;I(MeEpo>$AU4^}c$p zOLlI@Bt1|uQ*z-gLx9|!=}Z~RZyR>!iA>*Ao6WQR z^{S$kRku5)!V6H#?XT717hW~bC^U_-o}Sn1P`vDMJxZPx_^|ixqcY#(?ev8`}a_y1sCC?8UP_ zC+(ds|J+$xuv3J?KUlQ#)jKYinV{95THDf3!74I_?UU7( zPpc2R&|3jsu*$hTc$N zv}3N(Q?r^U_FAIf4hOM@nSB599AR+qhMeQ}Km1Sqh-O)RpY_VJHZO1{?GX#r+%@m?P<;9Mfazvx3RLzSrlsT{g(Uc z-9@#veEX_kTh^|v6_PK!XYzF3oQwNQ&*>}=<2Ri$-HcQ?1@?UD^; z4Lz~$_ty~1U|K=>%sn5!UCZ)V8HM0NyqC$ChY5(f^c?DO}gW;RsUM18X z=kHH(oB&w>p*)Nzu%qwYR1*(DTUU7 ze2eCa6|W0PdoR1_e$kGdMekjHDlhe70gW@hUQ;Ym9Phd$>}~hT^xS7R7Vm1$J-6s; z()Mo8^*nVdTdY{9^DB4D74B&Eoj!&@`Jsnp5LCMTC66teodj+?zts=i>C8^ z>0RUVp?pG3c~g1P+6QwzcE#Ry*U}O!VMtC+uJLBtG1o-$XX^DytIOTEdG((Z>h_+z zEW5q?^a_qjr7c#kx|ZI1b*9Pa>rapyFV=2K+8gZk#%0sid&O^BIEB^E|NHi(`_-G~ zd1cy*Dhuy>?YtX$ZSpL;f0s^t`1k$U8}2&ivnh{?|BAJTFRgj6;&cDNlQRz_Z(VQsrCV>=R(_es_^6B_@4D={iPPfczP&NE=ICD*Ij1Vh`_kgO zdG7KPtm0lCzT|#S@b9;*Pp`LJ^FDmwEyIf?w*^nLmSpUiJMZQf?$nvq?mo8R$1Dw; zOdf`wht+7E&AjbzJ=WH2I2ESG-YnQS=hW(A-P>;`Pd(wN!+Tlp!zYzfOQ&eQ-6#CC ze@d_tI3ZuRK3?qi^XQT5w--s>u(N_u3Tc#KJCHnPb;MSKCp0KtkU@Pi}_ZK`lOkwzsv)# z0NQoia#C?+N(JM^{K(%66YjMhnbndrZ`tlxr?R6zkIa%^)H1)@P9ajZHlkE6o?|=n zu4iTZ()GDnIT;xlIayg%(Nf!!dA>%zx~;!6=Ejwn=wnYm-P@CW!qT{Wg3knaCCO2g zU~MZcegBgXzyIc}lRw4P(%Y7`J!gFP>r-(?rFq-B*NZCN&(5w?Rb47tTIz3RsZpcO zFKusT&Z)^8eZzn0cOFMju^)Th!aa=f==N0_CC6u7xb@*!_Rc?Nr0O2$OFb)l`7?E* z{^~xvRngin>QWy~+*oQ7t>i7z-*TIAfnMJ7{G7C#(~n*{bHbr$`a;Ssb~>a; zczezz8iSkw$p|J=9Y(e=83?Cp!UPmemPzVvp5`;DVM@{M6Cb!!rq zaopi+xK|FE^dTqtPu(-u|L62gKRRvdo?4q0S?_wPy?3ei z%`>+bn|peFk7Y3~n4osxlKX`n)oVZ_7@$5(!|l@b#T!0u$d>u{&t>70i_Lit3yk~c zA9+08Zc?lO+n0$QXQ}g!S@2``V9ku(TEakWSbzBwlOL_S#Ama_r_X3fj%KlzlG$P-<^4Y0?0hr+T?F5MC$;}MR`x1W<)<7vvv;Yc)ECI^&ThU1hhHRgoxB)(@!j(9 zppp%DTfM>avJ9Z;EwpBs!uUUu;SMNdX zLAyj57#Q-{uLw$mx0!>c9-3FK)P?O?)m^y%vIktIsrPpTj04-=x}7APjm?Yq_V^)1MWJHTuBz;1j{=3sj_kAq>s z@tIe07vwR%Fg$Y`Hmm!fj3Hyj?X4G&z#2bbKSE>wAZUvwEMnZdLDT8S`)Z-kAO6 z(F+sl*M*IlH;*sB!Eq@@e2z!`@7wLmj(y+1_w?=^B_8M14!s5K*JW_%-*NZl<>j|8 zSf4GizJ0Rse4O0;O#Oo0lZ|CGP9FRnlXzN-TYxDw{v-E)=pUOuy9?%eB*Po^twmH`c!sz*z=vp(YOFiBvtL`_)LhsR~rQUP@8--u_wN0@sYAajU*%McTie}Pm8{DYMR*Y=$rHXV^{6}y=YS2 z^S!29M5FJ1y`yFMl2R?^Y#>F(B@4f9@~*qH3T)AGiau1{Y> zl&&ywcm_cgTy$ zrRg8;NlCxby^(Y|wzg=B4jC@N2d1CC&IRiAfdlx*c0=U&m8U3_%6GW|3f2FA2 z>6urNpSr00%k^l1tG8e2Zm=&~{Z!)Q^GDac_fP9&K2`5oeR22Uc7ADT>C0w+m+JG~ ze9r_bElL=ES>4@Ly82FR_VsmhjZ(XEe(fxNuErr@U-xH$WAl^}>#6(BJS=lK`>5>r zb;EUTMP++JQ_g*;SQ79oqggI`&pruJoxRiJP9OW=BHi;-w?kx~%gh&dCq^$RNt+(L zqWju|16%vfF3osb)};Q$yi8mA3is2l?JVsZcYle>@A#FnH2(Cv3ALWpJ#x0Q_Obr@ z{@%a--w&B9<5hqWIzui4|&h#zp(tDTB4Er*@_c`dK&IPL_>}o0; z92$OT@*ev9;X^>lhAFo4Mj z^uMUy7gS&_IJ_oi=Oi`H3&(mSjWc%lDnH#N+xoZc-JP4E@y`mZ7vz0TxxR7re2!_3 zf?l&9YP^aPJu@xgQCZxgz1Qx`nzu;dm#4e8{7JthiyZfD zN_GU*D;Fela&uRjPy4s6Hi8|Tw?H*bq22eWH5s2+IPX8dJS}s@?TbHRTp#CV>g~O9 z$QvBVj7myMHK`HX^JH89?s|24&*8l5vL$P8Gj3)5J~`AKWbgvn_-7r8j7OlQFQ`fe zS7xBDYW3&lWntR6e4Zw;y;Kvm@2s?A@2 zzkk_S#o%!9Ki`)-nm-S)f{rK#E#v^5fWr*x*?|afX}_I$mS_F)iJzpsF&1;X}u;96*^(9VFXo5@wEzHu* zd!EM)u@w{n&`k^s|Er6!wM>+UUGA+D_J z@AvI^R+JDJy0={STC9HrKge^SjoN}Yyct0aK(NOT$jg0qaQq70@X)~cyzG77pPZXr zQ)RTLotytM?c*!|{Wrfgi*~C;@ITsT|KjYz&Gz?q9IidSEPr~v$-Qr}yEVI~t^L7y zdYSc}Lwi3T*IyJLV|MxDRloC_YVN)Gep~KY>-1bTy$GA5-;Qqk|9REbAFkQkcfP;1 z?cr?I&Bt%;GkkG(;(Wb%#(&-}-*;mEKDi6_dEce(oO^Qj+`WSb`L1&3v2S-SV~E=| z_vmxMr!T|(=UbJ&I&-vxCo}oz&sMRy`);1wcXgfq-VcY^KcAnX@kzP=XZ71}x9dNB zIym*5@IHIFLxS_PPjKb_zW(vO`krrxxWnSzrY?`&8$3ta;NR2s^Fh;Q#?5(U_h_lv z_SpghWEsBM3}p#6N&;lt*3#udL_&%K*>VwS|m zx9i(^em$N3h5J5Z!EU}bJ)VwT;-?G0`~6tTJo|Zn;h(SZ1#_Q^&y5e8QkndDie6pE z{EdIB?)-eOUi4qi?Dy^Uc11>++l!-xmnBJ6=0zojb~g%2ef*k#{MOgvuTs1IT=?s4 z-*fPO>5ka_yJGt{A5Og4c;oYHH~!iCZ$AIs-(L21|B1J|H*>1*E2(=|@}fddg?0bk zyoZNcug^<(d1>kS$7T9^enxt@Uh3!bFJ5VGXBGP~VfpC=%Xi)FJ(u_W*P6$wp3<`M z6|XOEb}iq(x%!WevR%K%u1!Dw9?x^{*Yvsn?9Xa_P!{`k+FQ552?v%fA z+qGz=R@!Tk-|>C(H|Xx$_25n0`fKavSZ?XAf49FkV4B>&BL}ZNob0T6s^k3~pQ<~3 zUDGF-s=S%wa{a``+-u_1kF8qx9Tr`c(2rzU-R_OotGCr#&~eu>%aZi=lwk0GXAZZJHJZj@BMo1w%Fo* zd*f!kwSO5pi+SplrFZsUcYE{l{9DV$=&H4k-fee|t5|k>ugyJk-IKK~3l?8{b4%^(^6uq3%Kp5SGpxNhssGqE-aj{c=WMMw*}nKquB@GPhz{@HsxvMA z`|nI&bIR`1QTNBOKIh-I>2i2YGGFni`H#}nHFkBkTl(Jj$JMW%b@k5Ax-XmE)N>dEc&E&!WxB z_+s?7{B7Bk_U4D7@|?G8bm#wi_WX|Cm+Wxs>lc&n%*mPO!!E79z3{P{Ma2J0#f-)? zCf6=0j}_Wo_BzNsY_-L!s4O{|*oVKO+Pl_DnwKR>FK)ZAJ+31Eq-o)w?`7vpc8kZB zFAH{e_earxIO&%&s4h)a(|=RZ`W>6+Vbez^=o(5^G23^NUMlh z`QX!{^18%3@6y+^A9%ats^NS&jdi}aEMI;!ehnau1fA+?svaPb>D`diQ?k2dk$T_a_3xLTYeh%YW;r8A|1DrQo`jvZ+;xq zSXU8x|7YTv&0!+Ezs(lKL}*OuVmY*mt#s0F5pC}4sp_9st!06jD2S^u*}cjuWJ-8|+Unrrc@myG1Ejw7a(|yZnf25O_@7^`7JrO*Q+cS|b&s`_` z@z3kG_nPDsC%N9xS{*-wS=Q$93WejvN4n1!S>N8e@oH)4)Gjlv>{+My{bc|AU}V3! zzWbczuaoU>^UN!5E!<@Dej@*O*N8f~$f~E}clnAp73@}*+;6&W+nX1Aj(fk6c|KRb zOzrKA1oN}TTX#J;@yCp}I8I7QY|ae-*H4b+?_7W8)9gg^!n-$rZ~v~B_50%~cF$>#yS(p2+;ZM7{masPi`lD{{}uc1{h9kL zrG4ElofBVXKKo%Hdn|8Pbj8-(yz51a+-H3_<+WUWKDTG0THf`)dqv*s?ol~+&-T^R zzWjaPFQ4F_7CSxdw|~vz$N%}1<~=H#rkyWxH{zq??ei=5pLE&3MWp|tereUT@8Yqi zdTk08Dm35r{&;TB=S58qUgmGNpY(NlVE^5Bd)4EfRA12Aarb;dWT9uA?AE-LF6~}>`V+U&%b%%wCXcQ1f1m8wab-?WEgVdz}L&&U`j`nygLv$CHP)+zr01 zKJ(an51qX`l4Qg$zbl^m_^tSSZO=P)eZQYi*r|TnXs`Muoy#Y7N;CP#b#{23ndqgw zzZ7)x&aabitCX#u$?JQ3pPBYkWc%h>k0wS1M^CHy-17ZaW%AqG%OmRlJ$t|BUf!nk ztcxpK4_jS2SoW`T&zH?|x3}fq-c|bh-tE@H+iLbdV?4Na+}->wXphk~?Y%$l{P~_y zJA2i_sHHjXYkh7!^7;04(&g~$tfi(VvtnYjrksAiM)uQ^+l9Z?llE<`efV)-SMt%5 zv*%dZpMIcOUA$Ua>UQ-4o=tHDHvX~N`uaK=TGKGEfL|9-j7 zeCFQUH)(9o%+h|Juh?>_^2jP~QQx1x?aE|!ec7_$(XTdtyE&f&*^AZsH*B6QIAQU= z{i$;f&#~QUsycnU-tUTEErpwHAFb|gdVb?F$KBA@7he`_i`_8!ZtyFv@0ZQp^E(2c zv!C6xxiqRGDx~u5=fq{#nUChp@=sgsSXEbf+{p2FB;!rpsE2Q*HM7<>u3UVrcU!IA z_RTY%Oq^4k@o&<)U9wk~H!X=3-ccV_U$aH!cKN2mi-cJ#r<(iRMFL(RtR=g-H z;y?+0vM+>IMS3f@Mx98)l z!@<(9zuIX|A4_rHV@Y=7x=J5~Zo-RNC&&u|b{(iZHYkB6cep_$d#I4=NUs@<@ zS9R*p+2_TtrHY%L7uGM`*?*dq-A*~Mc*c%@Z4NTq%1Unkl1%;B*#GwKwL4Qp<>z_Z zZ;{^ip`dQ^qg&GtzYO1VX?3RA^k=2Z|41laKC%7+AMbKk^;24U>xy!#9YSwg*-b9q z?fGuy*|u#LPxU?8s_vgG5P$d6-+iwqKDQC?*|hm>-|bqX)bOI8U-fVAd%WdMOyI8b zUmnJmT5o^9xOL+FZNATU)qy%DUl-s0>Q(0RwJt#L+u09&o>%AZyn9&k#>U&ir}g!U zB|bixy?^rUoojb1``$Hu7-;2Fgt<8{5-EP)vY`R@~v*NO8nX8S~ zzl*fb-?RDhoV_7?R204E=FVUK`QPNcbmN*(kBPIQRrNxyO^N@Tw&dxCb-U(Xz0q4P zdTP^~IghvkGiUDE_2`uOV{j>3usiM~-|365l~Q=KZdrt^6zI@SlG}ZE!g;=DS}BJn zEfVSsnpv9BC~SF8IRD?u`>vW-7EL;|$f&Z{>i?BbiF55<_56606uCAkWRAaa^dk1( z_L85T6f0_iI$KS*BX99eDYX8*aNXhClFy93Xf9{5z%tSN?UI3 z?wMzj*`r;$R@&;!)s@Mja}RGQoUGPUuw`?x#H&|laxZKsFOht9XJhc;dzDvq1nQ~n zxOcAZ)2;4GQ>%5ts~vA&T9kV0)8y{@wH3B|*-t&5$M@yEV($OE*GCQNrWCsei@f@6 zaOBm=iq(pI-(+Kh*5tf-b9-N|<&nxOHzr;YZOZ0&_$nv;=E`)IhTD>7-&Uzx>)e|4 zr$_2#R{mkr{~KR^`S<+ZedXi5(#C%Z`6sL2`*ZD^-r<$Lr+#caEW1{I>7~Ub8#Wb7 z`r1pse3f$h$jObaPslWIcA%qiEI`><@;^Rn}-tHke|TXTo+CgX#$17`}0L5+6?P~X+z{tj6^ zCIh>?yfRRq8nk#2H2N_w;pH1Pq<-}SPUcr<3?W0!5Ml5@#47PSe0l9}K&vz$LmJJu zAJ%d_C~MfBcfGv2@L}2CcV!6&n6|$z-)^iJu<=0|gU$TgH<{+`0-Xc=dCwm3$^^(k zo#1g4$Or?{00?+QVmsKiFSNI3|5xr_pI#?<{B6P9kEvbp#|o`u;vk28Z9go&58?#o z8IxIOOlD;$-ZWz}D`@lrtosQwWZ2+>eO`Jd_+SNyEprVWPFE>^(USjj&KeW|U~e_t zmOS~kK=9Wut-Z-Fc|iV!D3-m`ryhRtEHB6?=y=W!+4?(tuaSmNwm&`{x~ZfLY$-T2 z@9^avpS-$7P6Ixi0+Iu}6-Qq%wtb(Jq;&IvG`i^xcxb}O*@b#Vz zHxrSanf_lU@A=$WJLU7zSKaW7C{~MJ+H=o92=1Xhg}WsRk4R1Lv;X7Jg1GXT<+4x%O8`EpSwT%+l9Al-n941nxDFP?bFJS z1-l#DF1yDWCZ(P`dU<10we;^hZ=EVw?!3Fs$(Y7-=UmBV=2b`Hw-?70Ez>xhzw7FR zm%EdWdPQaiu3Qr(_}((Pe5I#-VFHGxmJ-YYmDEn-CteaE+$I_RUh8 zzg2baQL^9e5jL~FYUk>s{*PiGmN5%%uUu_cwo&Sz?+n8`ep*vE&0lmiOS`Vi^T>g> zyMp%md_4EB%4c=oRIRPkCy6#*JoWW@_Op2_<;!=RtgP>T%=qn~+_zc!zn823KFs$` ze)i4!9HT#pv;WEOE?NKP+P>GzH}Yo5*7ls`OuXM>yuYH%vR^gyg%Ou(DpOpn{NogM z`#X6D?nSN;y8kRC^$@#fXJ@D9%b!k(MIW5RxtEJhcfI-V@{WfVuV3!tKc&C6U|#J8 z51F^yi#AQ(+Io1>=S7d0H|NToKWU|F6+P*p?a{7%#wAaeK6(->yw>_?vR|3P<3CS% zlXt{cq=n{kgL1OTyL|x>6JxddHIp4ZbAFbZ{o#;)bNb(w$$#@!|1*!~{lE3-2l?5& z|MzwNzJEVIz5aWGe)Z<`p-K-iq@dyd4c_L*~Hn;&is5b+5frT--i{ubksA> zO_{6tbow;wZTwGl_p5jn&v#fiP26H_?!MAHeJKa0PR+G{Td>>HdJ@-SrtMoF3Vu@f z|0AZ|?;~gjFeysGQ*(mKbMK&Tk)NSD%jV2InY8=yjq8bT4i~fiULZDUzkS~I|7EKm z)^C43Q5KZ@U!1m#5uk0;(-+Ewzsb8bxTqUu=-9xs>8Gp`IU z`uMh1j{oMioIe7f=G5lfy*5{zn59EB|8MH%y>+&?V9kzY-}kNUs#4Gv?g-fXpzN<` z@ZB?yTF#jJ*}si={QBOk{ckT#%(*D;yZoHZ>AF2f{p=Dlg~ApkrF!W~MyE}**zOV& zp|ppI?&Rp?SA0?A=Z+>4?^-*%Q?F&epY^zvPDK%D9?+d^bVo&o}NXvA#X? zp5~+(ypzM?1k-fyydt$gN58#K?(**f#(`JHoLzseSU88>;Y zoc$`(JA8TWdFe0jEY$qSI(4N`nd0=fJ5Jl}JkZ+|p!$0{yScIH^N_=R1z)F%xNZz+ zd&Rol*pG*IbE|ma;}qj_MVD7@iF&u*y3}Ouua`4_olU%Y{E=32k=E%eK7r?7Ma}fP zufBeHh{7pN!O8kckYw~aPke3On!w_a@bJ|vhVwSR)y+wN+c$kxhQ8~}Ma#5KK6k!7 zf5)uHcbIpYnoinO6uERk$b_x=eOvG5%y(&>RTln4d>U7G{u*!&inON`CqglNq*g$C8+oC)a!4fJ$SB{9SXG_Rd`#Y~5F8HaF$W zuD$GC&hGpoyT8p-la08!vq#4CP-aK(+Qo+jPJcUISR`$pc;|)Sxo>wC|Iv}lGf&vK zv3$$cSBqDFx$(AcU)bJ7O8aB{Qgu9!@GaY|2{U1+bpG^;HBMA_Y|m!-aKuQgp? zncem-JFar$w~D4&Vyi$?&$gYNXIC#VE%sh#^eX&QoBZb6=by!1sdioIbor_0&q<4n zE;_`WZF|#j`)j68-b|a|bL+%6IA?+~%o^74mEZ5Y6TB3qJ2m=!^s4jcuH0tbdO_pp z1lzS+)=y}Q&bYvu$G*LKorKiiuCo&_ZMgGA*!N1)ySWTz-z=i#kLo?$6RIP zPoLiE{C#_nr(D?#?UUQRX08DpR9Ic+vvY%zUU-$lwk|WJJ2UO^3g)zN38AdU4jd)Z)$mo3dawvOg}HoBV=bU@N=z z+$FaPx_Rx-=vFU(_AmO~h8aP!rVByoW1f`rZ=MywoT6)4pTE*&j?Vm5R8jDGTgR;y zuDqhl2?lS^9XP?aBi27DV}IW!NALN(eaAzq+*WRDU(LK|>O%fiE8LZ9A1r+0aIpFI z!Ki|%zplN#CFr?iQdHUEhPAy3&itFcGv7QS%=SvgI~a89!rk*pucB|-GX6I7@(-St z|D&M$Qr(WgTE)mfl?k?+tm<~my_v>-XWebXD~W*-hx4Yt$cUQ1>(!6DVHf-6wAgey zs8mmp(Woe}j^JK*>GRH5|9?>zPtM-*Z0@ofV)Iu2R&Yq(*si1;6@N zY|?y`Ylmcn)M{sbksY$27I3(=es7RY~eYh1ykEz+gV=rxXt~7g=1dtB~ayaUV8DxtW0T(wYIi%5BMH> z*AZ~}-m4_h>}!km%iiI;*0kEh;Lf_aMH6)*&ulwxaO>xfGKSx8n08NF@2xlCLVECy zxjT2tn*KgJ^|g)C)x~^f6R+-klfO)P&%5X0pU&K#AX~8e-CEnJ*E93ePJDOKKKW{e zsrlQ@%lgz`#PV!^ymxEEI)e>&`jRrH_4Ym6Gw1Z&b6+-@7xS21*tF_)q>+_3LteUF zUij@pZ>#?rO|ky*HFp0sRmD>A$)YATN5k`-%MQHVC3ktz)3n%pu@^5c^X0bLP7OGz zyH@y73>WBhP>1oK=Rj^F!YyhAo)+1t94KZWj9OK)P%`+i2^mf4jhiIr2|IPr0NTwr(8&RiP%?r>fo zD1S0A-+C)oXz6bLD?wOxjorI~%L}VRC0m6iO5`1n-oE&4-P0_w87JQIEX_PV_4=3V zm!G6P&3!gUwqSRB|H6LTEtjS|d)mLG_-#l2lh-T4`OZylz0G*xcHVct{;CBfhH9Q? z?Dn5L>kzni`KtJcm5X;;esOr|zWudwbwKE3-dnYt#x(KK5KSt_QzLN#%K8I zcErlx{rfCT_xe|Zg+B>%LZ(er%83m3Z*%@1!Y_u1P(YW`>p>cw49GmY(pF>+ZkZ zr+OD&{Z~F^%b`hSC+yxoUXXO~Z3Tmwr$nN@Yxy~u*JV6!xp&VwZu+ABD*K&xD-E|C)7#%A>v=VIUu5l* zxX>)d?YWDj`3g>*^O;Gn85{TIuRtT;_eQSo@vq_iZvgYZuL1S704nV*SeR z&HMv#x6bn3x@gx>G<91HN51j>Hx0K-`xc6>@Kky>{Q&Q+i}xZzo5OBwese%dZE~~} z>-Of`UpL>D+&M3BInS)+KR%jWUvU4Yfc0O8@R)nn)yxmej=lWkAbV?-^w!twuK&3l zo4$GZQEe~RY6e%Kh*^>8?Dluog}=*5?*10km2~-R*81pG8%iqcR(f1|{KjFg$xb7l z?T4$c?zz)vof&d`t$x}5<2m1rr#H7Xe_z$&v}5kc9kH9+eja=If1mgBE!$K5dyMve zxEcHPVeX#ud^=*F@BG?pzPdJV^&+Fxy;rA7eHDU)>WjSV_e>WDoGd$PbXwu?h1#>~ zkF+0_sXZ*?mCEbAd-@*R>I2vI8lF0%w2@(V5~wn2H}AW4P0UDkbXg zbq>&fShhhdX6d?}ceDS#EPMM{cqi94=PCbm<9ly6E}P)OdMB@8cWkY;_0NWu<}@DO z-HSu`yN=XeT+3{@Y=&&X?r%T8{MFRa2$Y|uSg!)^b04U_+H+^!-y3g2Cg#2Txy!uP zmu;##slB~;=FV5Qx4vETv*zKK zhtBi9+Dr@H-s)C$cH{hiTd%Ks`grYwGPRzqcLTz&FZ_0GTJ5{Czj5bhncR^-@^ku) z+5d8UEw1}6uD-{x{qDemR_sRU@+5Xw@>>c~#b$$LN zSI(`RR$zVkNaewODXziAbE9H!-wByoR?w-v|8C#wH%k-Cy>2cEF4@D#-EsYSdA1vK z-gWV--QWJEp58IjF>BYimotC8(2=a+24$U+1s!X`s@yxrRV0pPPlIN zAUXH>2ZIxrj@?W2nEfu&nn&Jw|GQTS$(cpdPxEY;^J;c%W&LXx>39Ec^!)r67W(p_ zrI}5+bslq?_U;*{b((HW*xQy|ICUwL;GH~$5dBQq&->QbpI={k<>0b!s_`FmQ`qmk zyZBD&RmCRlpuOr*Gh-B9?k?werCNXY+@Zp&p@p-4KiTR2Np#Vqrad){PIB)J&(3=F z|H;~Nttp>2HSKxCmFj!&pXIjA{9?~pFYTE7cTsVwruFe{e}Ad;Pua70zNODiN$p_I z(_LMsRYQ-ei{CoZaN1Boyraw<@m0{ao6`f1J&4=S{0EpZb*PhZv}qDliK>T_p0RU{&3B-K%ePBInOr z(o=QPe*5pdCC!s3U%v2g^EMZ*PyBViELwA(&(%8nVNSxs4Nvy0_;Da-_VMCP{ddm2 zTb?()KIfgx|1Ipl=b3S_Y?rp!p=UWqPiIH@*FQgBfA4OQR1e!7`LWh-o9x_qQ&-+R z_4?QTH&=9R!o_DR>xv(G`)h60#g$2csyWXh(>5O8V7TR%%F)2i`s?i!I;%YT2zAo`)ah-Sp-K_wQ}%W_59vPpC8}KH~$fL zI#^_0%&R21yzBdRX~(Tty!lf6r%RU>+QzV(?ue}q(U0<&qM5$hdFSEv`*tkcKU=po zAJhPP8-6<>;Zv1Z*pX73oskPpzxuL~9n`FzXBqi=WnAW?+pq8F=%~H(5xMg{-mv=A z48i%bdXMhpEvlaN;8Ich@?CeEE~mbn_t<);Z0=UsM^>r-%x`~>KON+?zWyQ8cIkqw z?SB?2Tz-DhZ${znpr`%n&wd|z%NAuT?7igr=bO?0&b(yU9eYYw#hqW|ae1Xe{tcmJ zb=Uok-xUOBxQV{uy4fhF(f^L4_flZ~tXRQU3RcDIBNAJ7_g9?^-oChUm%j7TpN^Yl z>};pZerG**_TtU+iZ^KFpD)p#zW(r&os7mi3@v8Q{AXWiy;{?$>!Vw*7N$KZduv!S@7aCZ8{lU08za``tq^YcYjJX!{__;}w6BX6nZD(zKHSf$YFMdz=iG{`-CAN_PuJcK|9tf6 zttT~{Fgucs*lz3O%N}U6>p_9_l*Apfck&*@sO~OjOW~g~|0qYRsEPfLNz?O=NlsIA z<)32r{*%M+fA>CL@3B3XbZTcH*A3B4%(ek?h1$W-Dpx-XQ4dL<4C{$ZprP%8-Ha7e?;P7Tv+ef9Mbj4SzWSbZljicBo*Fx1?}zH& zzrAXEjj3>-iF((L*7Aatjq=6?o0`ApiGOt1X6z(e5(e;>ce*$2gy#1 zyjppIFR$GQl$H*@-6g3!$z$c?=C5&P|5$dbH{AZ}`Snvr5bwRUGi$aO+H79+d4ViA zE$*JFcVBLu+Fs?!W(J@oeW1lydj*x(CdaoFH4D#vXW%J&XWjJG;-=cm^2+jmWt80y z66H!M(7fCw$#L^w^7h4!*00jGD?7=~Qxxv_rEU#sLH*egvq1Yx-|d+$wu?($*^^f5 zFh{*q(8*%&m($pL`)OmJjr^O#b~_KqorqY?_ADjIkXh0C$HOxJy|-2hiA^}6_p~th z-mJP^zrlSRn-c3^by4c(iuB>h_Cw=xFne+^f+9a!pP zwCw)o=Jk2u*H4{$UXZ>!^;AUnw)^kwKqKZ3;Re0;j?PWaC{R*}`q^0jx<&cUEQ1}f z`JwAqSKcX+o9jPI@v#}hp~*gm5JTMEzfZa`_jKB(U;obVfrbni>UPNreswT=8lf!P z{tx)QB)RW(xzkl+xNau4<*5sKD|gMzXX+N-^y}KcJrHl~ zDc#)^bn)1Qtf)`+-*b{HP4BD|UlpDbHuY}ZGl4Tnry^GK%}Y6C_;Bsb78V#`t@+wRHIoO}%g~|3~gV^{MRt@2vAUX_NHT(eTupq{998 zBf&v9Z+C28Q*G7358Kus``;&&cYX4!ug)UB50`CI++vl@5Tbu%MoHO+^KbK}Z=75H zH9SbvmA`!p_+W?!WwoNt%jf2GU)%p;Wo+TXbt__6w!e=1x~R7PFyH3-s!he6Q&pcT zRS4N9{nECscviM${fh{;&%4$ySA1KP$O>5zyY77Qx+kyheSf~|!~JuU4!+$LxR;0R z-J3wEEz4S>gkuTn5A5Oi!W%o0n>5k^b(s>h}PQ87z zC%$^)3ct%srgbfOwQSm{-}5%VsR{^?Nz2_`bh&uh)y?z1K30DE>(>w6Wcj+onOC=J z{cKhJW~-TYj+;OI`ZlvwDxyN6leg`A@TBN^`u-()`x17@8boe4K3X*`RBL(iMfS># zz1!u#&uzM0y7#nm;m(YTg3tNeB>dD@&Dy#_Defr9O^4s!(odM_;IdludffWX)9bIi zVm~tXZSHpIZNE0HSo!Bvx$v#LIZID(+MLR3`S0>>+ZwYcn;$zJy&CE~U(`G;Iw-WT zF7VsE{#)(W*QCAEUe$fuW)u6;GexW7{c_VDyfHK0TJoc!-mm!R$;z_x6`rxR2SIar z#(6xYAF9k7mWfzPZ9e#RSKQtgHLFgrZ@Qm*_4b?0lR6U*PyQjE{O8Ss-rJn5qM58h zR@2JMr>t_(kX9()R(|)~yUod|zLmez?Du7x8E>DncSrfx4DQvE`#dAl|MD$8vD*9m zS{ci~$GI~PX-)N-B>CxXOW)0N3+GqdIWtjX^=j?Y?^yL^6Eh!f_>!`2&90SxiaT}} zZ~A+=?x|v*_WBU7b!>40C)Temd$!N;)A1X#COzQadC_?H{Qrxtwliw(Tpm{N%QWk6 z@1sf5+3pwYWB2o%?D_ut$4BPqvv;Cz%&2}4yu9!Kq?PfNm22Zagf5@{bZl-1qmV+-UpG4zmU4=W=_7Z+Ru{y?&jvfADGk_@MJ~ z2B5;FM>hESAts?4_BJ=R3l{8tzB;aQY0~k%y8k!c6qu(d-1*ScrpK_Z?8C9Q86mg7 zZ+o>n+cdLPXk*Ltyysqd;e|zY%d4LmQ{eTY>vp5-b)wv zyz4q`^l@jtnac`S_2+y)TjRI<{1V`J@uj@&d(K7XdiN)Xm!<7Z-}C0*vvZGozX^-2 zz5C^ByR3iGQzLVYwac{L%ueKwpXAyP^_-k@_02qyP22z6ToQaIv%g@sUYLGVPPx7N zuj8`6%Kt`Xw(Hn*PB%Pup093)Z0V-O!5Vct0^iClTqe7T`T4nTt8Pc0f7;&u=ty? z>GsS#+uf5E72LZ0sj*&rZNDS`6uq$ZV!Gv5Zv4M}NTXQNAtwZeLoe{eGRS(De9k_y0WZd+=e=uC_yuyEF5f&%R++oiyR- zTVBtcv|s60LtNhc%lf)ZSX1cYT3_L{nFnJW@@fN5@OO*Xz7&pIkQdfk=eW2)*yfTn z*ZKVT{UxvFsMkL=JQv?yxVS_%U-a}x>q)P_>hAm(tULc-%pHcu<$*<8H4bLantJp@ zY2YO**FWDr+DG%H|Ni*z&$DBjZnxW-<=)x%{1bC(@zJB9>-ys^ZJJuW3z8SF>lT=yA9EZ=26^bMq|esl{{N7k=CF+h+OlKg)0UM?I}o`&3sH6cf_%KRj60 z@^|&0Nibj88*Wi(n`ZOBc6y)K@dIynMeGgnExD&*o+lo8#-z$ZAV0Zhj_jX;-Dnp>mC1o zBSM6C?VALx+qLtf*Cix?sxIaN>&3?}9D2UFb82&Wb~~#%_fexAvD3c=g%sabU->z* zTa53>a|vbe*yygAmB%+em~#AiCCE~~18;j|i%moGL~nR;A2aR}E!e#-ME_Nm_wf^c zmS?wASqPj@?wKk3r@-1%w!G)fO`SX^@DXVTTJD}(@;Y)^kFU+idz=Y{Ppx*uhOfH5 zusZb0&AfXzt6uHr*M3yqV+d-`xl0FRR6g3c!|Nc!X-IR{xM;VNYIMcSz0XdcOFQ&- zSIFKnmlglByBqsXiyV0SLoWFYD5>A|m^}G*tXCihsPJY7&vOSJzUI0~yxe$wbrsmY z=hL(5Hy;%cSle>@qusF?HxKe}x1PQtqI$2|t45y)@U9t#?XQzOs@Z)F#mqT z?b4N1wH2ElmPdaTpTvIW1WS^S6)2T$NlLu?bykZFC#XnexU=qll9cJ2E6m@H&&_!z z$$V#>_SMsG9X`L`{_=6rQYQ<6`_N#KI=}2Gm!;|>@KL0UJ7VjPzTnYW)A9E`pV=pl zJL|l!o-Xr0Ex-Ns%QZe00`H-k-bZU$`E2u10Po^4$lY%IwMuN#k_D6Bx3g?L1X@wj z_9prNrxwwf-aQvLHOuF@_jYHBRWsa!v}8XQSw~rY+a9~C{I3Zpy4HVZy7_uvfkJVo zVN}_N!*9PW-Ecq!)SCi1=Xi`?;GPEyml|Ju2%7o5BKWx37NL|$_~yS9xYB^nf5Z1| zDalg<`Svxdf0{fGyU}!s#i{J}cg~s5ll21~pdj0D`)m1`uO>gG?Pl5MxbsiZ3teyj zK1sRnK;s$JV;P_*_`K_UpFMQz*w^wiXG?xo*RB1(kMnoR?vTB8yQlhEaKg>ayKei= zAQJ3^$>r9;>(euZ(zZ_j`&*4|`|DY^C087kU30=Gsb?A}31-E}NUW7H~*DLSy{ zj$Y)Md%P+2H~6-{4*L4*GT+|E_rxqF%se8Y3yRPycg{WE#s%uVFyvi7Z`i5yZI}G- z5@)l4Eo_J&8J(#JMYRh{5R;m|s zw1HA!B+Hh6wbS|dQq&CHPV?36nCrfzDmlXxl=d1Ty}Z2$vE-!J`T8+@MByL+yURF}PhxH>hj=jm~qkW-8V1YRF__{-u;8EDJZ37=L`LQzcz;P z@A@2oHbb-NFI-Z|Ivx^dR-_X20y-Xx1=>4GeK?KbPr{%sO&vN>A92f8Yt zMa@zXk85$OZwjv!;kXDom!ILzI{Ty-i@(kd`nJqox_XW&C|ic?ee`)r{oSS2=htst z62rp&sIX@usC=6qtn|-t%PrfWSn!RT4BKB%pCP7eJ^gIlha~Rx1%}`}`o)QJtNy>w ze6?APE*dS&AI*-PxOs50<;|dp=}WSlGfL}LdVp_7W!P?9*Ry9{ZhzwcFHio7=UqSg zYHFy?yt+jn|K}#DKh{3YqGTZu53NQP68MEO zUBCLum09S1{Q95Ud*8H6Up@M?!1^AvVqMB~@u>*w&bw1XSam(Xr%N^5mb6w|*wkxt zN>|i>`k}YGqV{IYynFF?s7apr-w5Ti4hI|I4H2W=H*z$0%J$xy%C{si7ZkY-&x@^v z*QRd?dy^4!HT#~_t4|Z6wU$YMN@{V_a*fbp_ft`9hM~f1I_5*$Yg@Oj&U@B3h1c)l zxfrvlavBTd8*el2h|NEC;m)IL24CaLUrn30KD)mWl$bAGU7ek%+*c6$&S=S+ouc!O z9F}+ts?qw^#jWm>J^x_Wos+L3S07`!!^h(T>H}Y&EAi^-#wRs*z2k1l3TExNTO7LH zjraE_wZ*FC%Z(yqg>5?9LC(0hW3JorL)|y8Nlep~cbH!TUQ0To^>!ftJ;U}{EBvM3 zes8&L8~!!x;>PC8o@sY#h0jg-`awnR7^JIUWotffuWp;`v<<(~z{S{(xq``j_t#e) zb~m=!VX5fPwY_@ZtJDX6&j0_GJ(D2T(nWrC2jp1wvRv-jKT z(_8iA)h>DK{ux}}%$RX|W|D39sa3Ot59u^Tc$|9-j)m~wtV<^Ce^eUQ@tEuZzj^RA-lRGPeWZO>DU2W5BH z$Nk^z`@U?0YY4Odqfn6M^>@}SQd0Ea^v}&VAg45!8&nuE+*$WN`Gw8}#`C#XpMAKsDJ!oW zHfoZeoR@kkZC=i=1b*wE57Z68W*m9tz4ia*vm31YG^HPU+H}5L|K`EW+k)xB+Vwjk z#p4fJ`JV=#E^^@QFO_E(_G+zmI6EU*$CYRM>%gyz4j=!wC)oZik9P3k$rVB%yY08{ zo~?XWBCJ|(_R86yl*9g@tX6VzoJM5n#&1{e-jZJw;cI+no%>bo#Q{ct98RCU_a;d% zJEK*7W({cA>;Ii~3w%T>w%^ikd>UHR9tv(&&6sq1W|-~n=yMr9hwAn}{IGY`{G$in z?z;E%pQ2?9FAj{L{QP?Ij9+2T zq>ta@Pw`&=>T%K1g5C4N*N03zXSCp|)`qV!ixw?edr{Wrq)YNIbL)ziWmj(AHuiFj z|G4v#`&=ey9ko}|S>2|tW?tmmRQBL6TPE`6UH|;bb-9)<-^$<9+w=Z@owdb@)8=Fe z)QFOKIucb@)OcG-I!3D^DJ_j#uZyh=IyWDzCJp)d{_9_ zS=-zCS@*8oI=-&3WuhL?qG|WN-ig;X>*sGOXWqG3 zPW$zig5CF4#jRwW)afqe`F_R1@VHKic`03nf9J{8lv-yo@6>nmtP-E7xY(5&6c)?{ zyW_eSK7OnJ{Gw9fy4(NeZdwj%V~6j3@#<|?$o?lw=a#LR$Th=-X}ZzI8I2P_X6&k3 z`0|r(;#Kyf)fpF?SU_3qfXbb7Dz7Aab#-mR%`3KlJAHbqChMf-#}2%mxBc|t#jAZ| z<<#aUy=UE|oaqzEUkowoPr>fxac@_-m6>(F^-YsBx^|&Q4wO3{l$9shRx%BwJ+g-7HJDfA$Zh&YoU* z&;YjbrKLI=ov|lUMYGm!(0{)s?EKeD+1HBxuf7PHCS>?<{q2kQFVoXsWkw{u-5P)U zH0So$o?o@rByD!S@w+-AV3FPPMDz7=dp1Amc4dlO*%f={;i)I*BFaqWs&bT?oC~>@ z8LYnNtjp%+`+4r|pC;aT>z(E)y6aI<;QITKpIjG4xXmxqaNP7n$Mw*sRWr7@dH(>bcY zp1ZX8VqdTI&8gv^BNLQvi=N)*V%%SyQ@`n7iIeJFQz!X4a3TER)LWIUIrm&`dA)OZ z)}GT4IsEq5x~i!wZtU^i^6H#}_VLZ#NB5SddkVk2z-`67dh^xNf4`RR)_c&mY42Bi zu(!YGEze2{{}d6>^e<}Gp3fIz{WmXOq_jT7XY$LEGF{Es=j(m9e~ph{xlni4_RT3P zA_}Y-empMQV)HsctNQA3gMS9sYu{d%XV1HS_?7F0lP|&?*{(l$HbJFz!}NDLyfzm~ z9_n|-{=U9C?v`-jR1-VKeB+C69_+m>Xvwur-}8OFyX1WJw`;AVBh+?HTBXn)UA*?) z$~^aYxrtgKIy+<;&Oa|>-Z}5C$7KGyw?9o=|INcH*xdGU;e)cf?>>F#IAU{h6E|=E z&*HO}G9=cAzst$7tiC+|@2=Z_=gZ%ma#_chX|nNEP$Tp2FWH3)pKd<6%GOh7&ySC+ z?;p;cdc|;8?Ofk?7q2VdzAe=Y-XHMeQP~yElCMi|*}uP{%aN%ORellP&TVANH$M8tfPMSoiEoxL z9qnY#sps1M$1nfI%ehOH8(vO6zimePj=N%@W&p#z9iX*R)Aw#U_j`7}-HNQ~JUe3J z!}S-%s4TA2nC6&s$x}@I&C9uGCv19|K3})&%h!7IOey}kS7q(19AU%IB3Mend$?sISI@y6Rl1WjSYumOLtE#u%3LD?{lH`+<6yOEKGT<<{XoKacQ!(_WI|yo`EK_7(U#8 z8)bUy@b^`0)!DhKT-b<`-#F5mVqH~#FS&%CXt^6o`uHGH~zb=LpOtQ)IOdRH54 z>$+xq@QIHhsIL^eNBPh;^KT!2oQj?J%GgsYG}-*U&ek`4zSBW{gV(kJFStdy^Vl0! z?vkCl?zd&ot?%E>%h$2HZ+!LhTjrs+RU50emfu^n?Z*}Cx3TuUAd>%LwQ zIxjTgwej7&e>ZecDx+{!&q%@c}7*=cdxCo;{JMJ?<$!&mT9Lz^Kju8 z%lO{(_N;oaZJNfSTY2|tXU$ytm7me@>bviC@5)Mk$>05cBS%w9><%Bpq)>kF9OvY7e4k6KXN4@4GnuH`!?$`z;DNObZ|>dI7wr(@ z7TNB7^JY%oZ{1qi(+SUwO0Qpj^5tRIv-&{L2C5k|ZU?^HHD%F^(nSxi-o3T-`Rkx= zk+wWrzB}vmSBY=mvckzN_m!R9dCQyM1K0T6J-gfguGNbc)mL0@f0Z+&y3eia)xA9N zGv`MCLti!@wz<1*?`%WaeMOr6Z+#!#yM6WS-95jBI=3vGnyntWB&9WUO~}zBSEGvd zeVe}sRN++EZGU~g%I)3+l}A=j_X!^mi+L86R`Pr2gR;Fho<2-BOi8#>b@*+<=h=3% z-mkm5M7;d6fxzMGpaQV;{kn@*7iZ*TCTuB6U-Bzy(;^Rz*I&yyz+pSN(E8VGiK(Hk zpKIT{4s* zXSLB=jh%dJvocuDfj3MgwB@;9=G|_b8Xvp1zMg+}#U$71U%%{pP*xkY_f~k{@4I0a zyXszbIe9l_lm>qP#-`L(e>3q}-tm`n8*U3ZTF2SuUA^Fz_Nprhw7Q$YKzsY*OQq(~ zUhe99pRX^pK6I$N`XR`$*uA%A->Y<68TaMNP4;5!-1j!(cg|T{?cTOkj63y8clHGFVyhE;%Z+aRy|t)u`^-|%3K(-Y!IST} zcRD}hTV5QyY-M_{8}s(&+l&b@+l|v~g}YKSg}(VpRA27rwLg>LvuNSY>!2ubkCmGz zkg^x3St_;ok3dxTx?|@e zKcD5>ad)!emT!60J7$%gi}MZ-y1#qgnYD{SX-}df&z<*$+CWpuYD(?ZoOQS_v+ud zNN}yreD3XwGjp0ZhORq!w%Mk%d))>R&-oGzch<$P60bbjctdOX-?jSHo0o=5p4Hms zf9??6w4*Dx7$39WbxVJq^%S45`wPp#3lNsQE%W?2sn>k<{SOx}TsZfso0mUj&F4cp zJLaz39b5gneRAijo6m39+upqK_>GfZu<60uXSA&!lPx9@!yMFExoo9YQ%S@+KPr7l?L@fTG)@#t_Erws0-u_xQPqsJQ z-|lGKt+Q!!Qm=oKoEvoY&aL*X!g=Xi^!WFetV*j{H|5)zNh|lfTN^2GX@XAM$(i1u z!OCCn-UZ*^Jx9p!=AU=bTDKAkwE|tYwS!wMKF8kfP*uCR$=7`K{g0O~Nj{%{KcVDa zWv%x1&Q1QSHSeseUmafk_}ZGJ!Vh;>b-GKlS7*Q6u;%hipBV1#kLy8;<2S9}v%;rD z-P`TC(fgh?wv$h8db(yCXwwLDLc(s@t81H#1gCz}JT4Xg;R+vT*3zApQSp}+8M~Rb z-u_zsHA{Vch|HuV5k(6R8g)dzO)a@)oBLpD^3ynGk1cz?c^o5<{xSb zj!5AYzGid#4Y(xz(tkT}erVS9ozJq)M%zivnl!s`&%>0au46e{s+2>6cid%I8Ta=1 zxqGKq+e|p6HaEq@%Ji9p^@Ky8&Q`F>y$9t_o4q`)mZ?Rz0_)Ve-}LWG z-g#H_J?o~U;a}7rX%%-JO?z6FHc7T%_w%la9!q+q!j?Td_Lgs1QCqpGKWI6lo;bMS z@@4bwiz}K}Op8608hcYVLUYH8@~Ir^40`?G$wTHO-=IcE-(;tvZn}efV+v?U}h{2i{iQxW6Mn zL3>S7qU#-z+yJBP2W{dOEWUQ_ZE^*;FY)Wt+ZDmij-uSUDfai$l=-Ar%-r|*-n6UY z+2_^5E|~=H50BY#*I`}UTSF7h&{av(KixQV`i|JG?SFZ${TNpq7S|Fji^~mCF6Tx;>-G95u`{_!dDE@QP;?vKy-?+_q z#_-05CpC9Ff1H}abdq7^j)L8d@q2I8yHs;@O?i_e_FLn~hi&WIOfn)0KCkNDTB4Wh zlb0IX-MLeC6La46-G(J8@>};=&tH36a^XF}b>H?cb^&dpxR9MUJzQzueC@qc*4z+? zGXKl-JAprZd&b5qzck8B!`-#J*g}rB-kuroHA~%n+2`Ghf4vB44o!Hi9T&B_;hN=g zY5wKLL8`Y}9ggSmrECW+5&vc47Poxq-z)C#!YkcYf_r{nPQ2w|d$;EBjU3Ibk3V&U zT&|qH%~7}6rgRHSogc?%?+4d@hMDsp>EhmQyz|vnxyh6CEycorUVR!BHS61^>F;>$ z%|43UF6eGe*<7Nj9h#Ntc#om->>?p43HOoH+jq z?wqA{UoLX@53XX4wEtgH)>jn2UKAF0{e5THvFDzdu74V0KeKF?ZitoJCFguM=){w6 zDlgP!b89ZUfA%lG>pd@O`ross_00l`uk%Q1uYdMz)e8}J<^5?X>{ScCRF{GFiZE2z zZPyNX;dJ?F$&rWU*Rz(%JwEkHe%tH#PigOiH{V>H6K~|bU}1-waKw4O?Zz)(ebrFg z>QH2~ujuaAS%vMh<8H70xqJ6JdATzm8KTR2f2tQqb8cR;Ye$UcNwMDNoGp9*S7lfx ztnQPpTP(Z&1bC+Hz}tqGJMZpDZacVp>;C)8{$J*^<(;~*Kt3%^@{nz zy84p?Zg2mYS}nU+QtH!Z_FQaA*NdG-T}LF3aygnV4ihOqEh+o`=T%?O z_CD}9(u{ex|DK*)`{2ISXP3jjq)oTvnH%~iEvnUcP-auS+uhJ4)?3fDJ^F%@&8@8; z+U7qzZ~gU2^#8p_KU|+{^@`_B)q>P}s^4lwZcjd98sRBY_&E1UNUNF21;0=!jwO03 zkxPpzZ6{wf&XhG*a8KVkZS|Imkw#hjg$mqvK6Lx~Xu__O$7ikF{b_dHoAbMGyx&%+ z)d^Wwc871qyxXdwFN(a6*jPw2QO!nLOUg^e19^?@E_>9GW$6QNL zYelu>k?X=o`zB;ReJ|&2Exlu-?JGH-+RzM-ezTMdH{>eio)<*#Sh&M6?u~DK9{-UG z%xt$-8~)6AeCcy(^r2NNcgIzvO&s{P zz^#_^&&#$Q$N`;mIM)(~g| eWA{1r_Fw%ZkAGHH(+?a533OXz&L}0iGhLPN>p$e1B1f~PZ!6Kid%2za&D0M zTKoKF$fns|S(~Tc@>;vsGpE_`kkE?_^F68ztmMAHFY1_G(y}3qV z9-q8r%*&0gIh=d$S@>=6yu@g`XSbqD!`q0PDPht~Wt$>ZLsGkQCaqoK_51htpYOAm zJ>OgTd0D#M{a@FrjsO4r{{O|ym;aa7|F8F-Z(8*9&duh&|9-uGny>V?S^iH#_wr0n&g|>!e5XIomDVc0{XM(t{_lJ0Pfy(ce*Ejc zDfi|FMLf6~9zXYH4}Z-A=E}D`msS0{&%IKu-u-2h=jGXZ3U;LiB zzmHDe3BRWQ&FIAE(@FeSxE;;vZyyQUI4fk<^mVFByf|iyiYWeHT=p%%c-#7G>m%M| z9?ks~miX|Kepq!?{Lxvrch|NC+<&!K^X}r4-ZPi2dVYTX{+gekA~&a1`k%Lczh|lU z^tg(Lt%+@}-D0toPp8hEHaYBe(YaqYOpDJevu_eI#W76NR zY}QPQEdow=k8rEG3pjBovc!Q@uGs%EiMOIrz=>nwyGKWVy%yV`43fO!yXVHXzw55e zl>2?F-tzS`e{n-=5s-E+eZ3jwf#Elp_JB;D&@cW;xS~?uz9eUnMRbEWhhocx125KW zK4(?<$i*sF=;>0;hexaJtIqqcTPgqRTBrT*)#Wzz&;9E&Yzlomoc^6k_WU_n{_orO zHSf=--~XQ-S@H3XROX>s&mU|4-h2e*gQ?`?~+W2m9vV+44Vr?f)<5XSLTQ9sVb?XNGZl zpWPK7S^ZCD@2%o~EcLyea6Pg)c3Vf;5~<^V(`P*N&fGdO}p#=Ec^Ae-{!OX|Ih2E)xEko-EZI58`t-J zPJV5Fxv1!ftiim^&s-L}{rr%0t8K4e*H!m-8Y^9IsLh+P@u!K#V#NonP8_@(i6ZIU z=RQ2TuX{_QUw_}{&g=jF)a(Afa@}qJr%Uz!Pw%h&dL=$G{`a}+cYk8E_xxzI%gf+j z9I;>O=abe1hMwn{#@mIKJ()I#kLgH!u=Kh}WA%BK!upRai@Q$cH_uz*8z&<9ed}J~ z{6$lP{gT`>YbNGIJgRgPzZ11(uFRF0NsL!Dbqy~bmq|Lk`YC(mdvPa@g^~(Ak8%t( z_uR1gb!+ARn12t_>vPVk+m)POZ};WR>G}(QF4kxNTWXWnD6T8NqTQ~!g1N(H?&JA0 z{yXs3sJN|pQZOUFsHQk~3h(Fiz9}zH3fiW}1y<&IoZnbduxXxTEk~JO;|tdihktqJ zD^8a%bP65bu9nsU+1aV^x8MV z+}~BiHUWRVO~jb3K}ClZxFgT1_mgxVUTDo4Gv#PAjhG819{{ z{5~?O`rFd*`uAV$|Ms6g^FQG3ulLh)eqIk>^Yh2T#ZBVVZA+H$#{Eck{dQs@Z{t17 zt=5{8mUSr?!FXrd}AN;<4=i`a<_vTIh`{#81kMw-cN2||n-~N7k{j;{} z`^CQxPOA`{XZ76AbHzrt*+;Qp_d&TTe2_j9s6o1x{NjPMXQ=}Gon5AF4BGLEI2C8ht3 z^tLXp`=)epLyz0b)83!NW7GDFOLoTw%T8OK-F0o!#>s+C9ABM+e@3o#nyl;^^Z(K2 zJ;JuV_m4X{+OFt6!RW-XaM7&|iO%95n6_nzev;_O6SQ{VP`qNg$KkJp_lw-=KTdMC z2snXqh+@kDZcxG32r7fH3JJ!|seZTf4F^b7sjz+rr1<+?Q7GpGDkG;u%0mutxh4QE z5fwjxOH8tb961#U*e1@#!1A%8G=!ZRN@Cldk%cWDj2~r&ap@1 zoOsMTP>uJMPyd|l_n0ykaBy{s-?_vCs^V}ar(bOPJBnC9N{k!C)7RJinZrB(xay`o zsV~159`BR&S2CG0iQoP{N6WJJw@p0vOn8{3sWtV9uJ``_Pa7@rulv8crf8LXR|L4oA*!jP2*v4z@UMhY`{N=&KFH0}pXi)icRqGog($nrK0%4^vT-3GS3hafv$IJ*xhu9)Rb2Y} zzgzqC_t!l6{{M~kasR1zFLA%@{-UvwBl+a5xtGfMI%<>+-bL@ZQS%^T0dw+fb8(5+ zSHzNeem-!u|Ix(CJ^lW#8FpXR?R-C-&*ppk{a^3y@A>d||KGXxb<5vOi}Q#-How;O z*V6Lfs@j8pS|J|VUSU|43H6`K zL-ua+l-qHzH&B26_f_8=y#1csQCV|oPQm=#uDFZEiw`mB7uCN`dYH6xl9POSe(eu$ z=3`>>%zKVLa}T?-G5=ob^&*ES(v5|hADk2$xtZBxj3n-E(ewzOH0QY6-k4AJCuY|? z(9)?a3EtE5z?3Dfgk4`Re$Eb+uh-i5^TaiXOFXVSz|E<-Lx_XJ@gQp_OC8Hb-tSj0 zCOb}3DA(Z=s$Tcu(G86Z#<&J?P%-pT;qlQ)9=lofkCj*7da*oLX1>KX>#qTu%&sPz zd;atBY3X)4ZhowoO|_q0Rqy7G>hC``CTGo#kPGp6z*+$^L}EIhz7j{oq@yAaU;lG{ zfAve*Ns*J+H>I$^EST`<=p+L_K^M6{;ah(k-68(HBj{N9Z&&|{g}na-FLHli+QXoK zfV+oXTz}o{t}=OByL}(6t~fV>T*nxfU~{2jW8ed(T_80d7Cos5G}PVw(4sHbTxWCC zvUlOHw&i|vRg5hNz1JFbZnf#{%vI$lbVB*BV)-s%9(z_r7rK*yF2ND?b(d7Ecvvzmpb-+24xY66SoZ9V>IWup z=me_mF_7*H^<`?ex;ESGXzd#o<*sr&cC{pt0)f0)Ke|^8KaNaaw zLDo&Ly(zbR%h&jtAFIB~88`Lp<=&p6u*tet{H7=8UhB@id;Ce==f!*{=ZW1Bjd~k) zW91XO{;TtHqF1SQzHrsuz3Wxw=AyF9FJc}M-cP5jl)QbWvOFqh-u1aXvT|FE-!n7E zDS%`1RKNJc3HfGMc1+^AySu$^^+dr&|EJ-LTbr7{OzLw{Jh>{>W3$%DV=cbDduQdP zYzlT&cmIR@lplbxT{uJrmkXY#@BX|-pLHdXj@zvEiFQmR$OyoWJnQ|{ac zu1V*gyuH*^ak1#LhW{pO-H%GYnS+D&>|mMd1y1}Wm2X{>9-QHnP+?zk!(s_}<}fH;WISe#0_-&XpYV{@r@|`t@2>6LnM)WcRDC+!&ni^XO{G z(x|RfwJ3?$S1(<>tuJ5f7OU+scl&3?tkdyz%Z+sf>+claaoIno=bg$T@y=~aqlDfE zmTmrPJ9)cz@du@k@3!2Eac{3E-;}m^QJLDeAfOYd@-=_@DLs&CSi+zI|`z z?(pc1-oX;b01A?$3XfTjJz!rD#0%n_h#k{ z^J(8Yo$YJBUockRvs}K`%Glrh&zITv>;FC}5w$Crcm6%tF=rmRy1q-xoR;?AXWiDn z_l~dnlUBBN_w<&ChwsbG4@sZ&d+*0_dcKS6im8G&%N9E>%8o5)F)m2H~D_e?=QBMmH%Ge&EHp6bhR$DWA@J@TAKg2POh7Ik2&T5 zI1oyt^`Bh3SNgsz*!256!D*4a=Q0jkZ&)4e(<&)b`C#6gV|ABS3C&^ry+3)bmgNs! z9q+l4v+H!@PF_^oxa-Q@4YT|TjOJ>^i>9hYJ-VK8(s%!zz8A?Uo7Sy)rYiMv`uls@ zch1U~Sl_)Fa&_+2h!y2^jjz}@EAQ!eyEJ5Jo9LCN?>?tIV+na_KXK+yx8?WNm-SxH z@?X~S-KX$-*{9@bI>!GJPux<;Uw&36F2-Wkr-_&E|NX}K{o_gI{QbZ0Zufs*BwYWw zWBS7*jQXknXWy@VyJY*xb=U9NZrJZDr~miZU-i5{-!knDe`@8Wf>Xw>Zt+(ua(Ak) zxo4UE?5+9JH5bno#JyQL$M=}impa9RzDko++nc9JsrW2jbk|q+qr#fgwux(5XRDt& zpV9ey(n9+S?|+M~*WO+Et8;5yU2vV;72EyW|1w(KoN;DV_w|S+-fA_VWFTv!7>cKVAAaf1hB=?Vq=HKmL9D$;71l z6~E8Ub@zKWg*|T3Kdrpym5|7k)xVM;Kj-wey^ZPD{;pW$&>?eEmskJGq|2K{)07MK zKV7kP5t{fX;-_x@ImsM}XP#H5-rd6z_vG#!?YlEduF77$5&8a;y8ETwSN0#?Jvk>% zaF2(nLTtswW7|DW?md{Z$7k=;mA*yUGb{JpnEUNy{+_STy#9ae{J7ok{S@|iyT8Y_ z`yJV2`}LW$x?fd)`MiqqKP$~D!|Gn&&9AYXw_nf_de6NAC!JxOMm}RBJRcP zD{q!n-7(%1u_YtWanFp+)`zwCmHzr#U-RAEZ_dA7;rIXU+RwYUP{`lr@3r0QS5LXT z|Kr-p+A2?1n#bE0UOK)1@sZvB_E*);&(WV>_gDA3>dDX3X2;iyZZ`&(W|y~aG0ykV z72Dg<_w}V}<3?72jW1k3wV2LS%I#n~m-2Jw_kYv8wX`DF<`(8(6>!vY{iw8h^U77$ zD>nwbFIp^qG450k7KIYh3hxDck^EyJ!^hH zhDHC`yO}foGU&BGZvr)+F2?Q&Sl)Rr%kh1~y1svXHQ}f%@0R-!@$P z^hC|iuJGK8CmlTz@^uW;4}(+Ths{yC0h%(h!Jl>BUSCi$rT$f@|JGyw{_UI?Cb;I| z&q!TxW<0?CA<5vwp^ZN8yO>YE6VP8)QT_egYBRPUZJ!>r_KPPAKfm99INZPK>cIYy5pjyl3B+gLC(@gUWl> zipGyVkB+X1+}!nm)p|<|ycSaXm~?&JT(D0Y#2*|riLJ@_{&s0w;_b9O6I-Pf?3u6f z)E9Amw~U(;?f_HeT3&a10e^kD;>{Cb<#%4(VfD)1I{nMp-M0Z5P?P5X4#gEhNfzH3W-c0}Lpw`$1M_~5^DHvfA4SD@+X z-76-`|F|5E+NyH*ST7Uekm@!syK)9!>P&OSU% zW%Xrqe)->_=_NLI8mmM@*H3(?ceSp%`5@Dt17KI2QHZNB-(6InXC!guu5{w-^8H_o zPe^VnTg`2IcQ>nB#r-ue*rFW$Ov`4uJ*(Z>HRZlldfM#Ii^aD-cy468?b7W`c5^Py z{P;<4V%KcBQ!8{&(JU}Fr}%AQ+VR6}M^{a_owdR!``!DNs_o(*vlBNk=o^5uk#VPZ zPfjm5elg^|)xqwPQp<{qyB@E7_jr|B$(1!; zZ^X7rz(S_ti;~psO>Qq__5^%Cx=m|l;{=hoCGN*H-SwlkT6T&DWoC(-Kc`c!mVG2| z@R8;d?F-B5S*ax2|p+cIZT zKsUpo&(+3(AvvY#NjJWII&nYEdryZ~@vR2GZnNcjcUIiYn^}~Rdoy_Zw`Gq{MpsX~ zx_iZzFLs_L3bC;{#kP|!u6n%ogVKsa{c$sT)u!+KrW&{7jpQ1!ZGZipf8AQ>w_eTY z?)k7Sol%n>-`{J#=4s7*tH<#@S7MYa7~{4alX@Tj)HsvrDu6J39?>Eo>7nAn*=!W=uIDUogr=_essWTsMs$usX9ItL+poob;hku~zbu%3|?*T8~~7WzBbuS}V<~S1k3* z)9!=PmuDOG@5KH8DpzsZxp(SqKHc4)UoPF={k{C%^6B?2_f=hge&+bRm%h!Z=NrU% zL?ynf$IZ$A5x&&y%GBkzt_Ey8J)tY!cgmUkwjBa(wp*lRZ>#g$tENnRvef;-Q2}|M z@caKf^4(tFeziZ(uFOTR`0k&88r(J!7{bKh4o`>OIbfz$IC^(C|n-UaXJILf(W zx@^V8`hAxoLaUFwyE!9P?6lp^qLW%5nvz+M)%J_OD`Nk^wC9ES`I+Sxd$;c0Zd=B( zq=QMfUp8`Q>G?T3#T&(Cv_U0m!iPonw%-?>zMfOfbco|-(%HNIC+r?JaDax95dEWn^Xi|5oc8*> z`h@bV6d{+9s!1U)256qwHE7V+E&Y82r`PmI__Pf4rPa3UumOqxcxb4#` zZsn7!wmuBY{defw`uSZfIs2b&KsKgZ(yuk7y?8{_CH8XJ3qZy(+m|L+vT zn|XI$J8bwnwS1oan)5vs{>{02=lpBax2adtFqkXk)0c8(>4k&5S{}EVmUaG`bms`~ ze3dLt>0phjiFw_4medzM>PESx*VUH!Y! zj$@V%Y%h&B1%&)OGt=10u%t=+PGel1HtX*1b{f&GUISK70_Xvrb{_m0r&_r8{C(G7l`Kz1+50sZ*}_h?n2>&<(j; zy{-z(E>*9NUhA{=z3jI|&0)NcE}grP@REOf)(vkR`!lDe$%TDhEdKA&g^fOOoLv2) zGY)izc!kAAHVUlOpX;XIwQjFQlX&9yTDG42+`YS))o4{T+ zVPR0I@$Q2R_70CcY!3RaOv@Kqt@@9*=T%q#YdxW(UVYb}HhP5V=1HH)dUoKws~3-U zPoGEptJz6!r>9*JeyejqJW-i{Qrq`KR|NkTT@F6~|3i=6DYLIj=ia<|Wx~o$D>+*B z87O&#Ys&;XOfcWc(trmkAw+t6gkx#)4Lw8F}k-KsTPV`sAd3fgS_V;A3#^I4Uz z1-fITqEv3H%-Pps`hC&0Njn^VPyTFuxLy38_yy+fjSTvSE-U{3vS3wOxM=5!%bed! zT<85z_g*R7x$Ad?*97OTs+^gn@9!KdkZ)NY5ta7eamHo)w5p$XSM4oJyEgUCDvx=6 z-hFQw*^)mb6;%iZx|%G=a%8H%=-e&x-tpL-u5R%#9{r@r+_%(rZf&{P;j_o%cRFp#bYT<|yQ0P~&; z9}mgbO81Fh4RAl2cA2~MM%r0E`D#Y~@(ZP#tM30@_J7y^ED3o|dDr{D4B~{&uQYN| zWuLu+w=8G9-gk|;_f~n#J2^$>HZ#w$2S=ZLa60-|#{b>%tfGpEG8Umc8{VBOeD zy|6soE54~@wVJ_0-qpXJc(|@Tv*F654-eib*;zi4t>iI%)#iAi-~%5Qr@Z^@-H%Hu z4sol zwl)q<;=gj^M;m+N&5A=Jlm>163v%=HOWRc*OB`ed*a%%ewc1}}T zKh5lV$&6l&MUyZ7Q?c6e`t*c2%cjEnzI{j7e+x)0ns`Gt_3EMSo)@h-L0_La?vma6 z!MiVsC$4MLww-HUeNZ;MddFt6cI5Hy8*&F8xNfft)3#;s{}gm)on@or#b1|S{?pZ8 zU46Zf_x1a@ggehG1lP{bVAIw*^i=%bt91gGn=o`3t*lb}mxOM+gm+4_L>*xo;p zYyI}k+q-ARqFIj?mbfgmx;n}5{<65g8asNPUM^cL{;B10M#e#xUP7#_==gYOi)^6n9`5+FWjPyX_KN#)Dfi4Nf!Jzu zrXp~Ajygy9ish!Kk8>|h^2#~9?e$i#4)IT`<|RdinYM}FQxhxag}6d4Z;!#5w&b0k zmESQRKFr<7R=F}r^u&g_ZnDr@5*0JbdhWLdJ2I z+|rJvEicoQXN0bdlAD+Ss`Hp0Cm!YI7yolyE>0qB3)A8>^S>2t-g_qa%D6A{vk~6Q z0B$77P0gBEqYm6llqd$xox!8NomGF;w7VN@qn8D4D4e=0clI7`!25#J}Ay0yEX_O(urKP=4~mk^V;$ACqI zMX*I~&yfd>)AK4E`E;uSH_M8ud`M%|E zIB&3TrA43gx&mgQLtL4AK6rKbZfy{M;QHNJe6xAZJv)`0hrc%R&fd;j$-unlz>Yl? zfiy}3Y4>!BGK-Zyx$KS#U2w2B-Q^;8zr+?-iN5_?jPG3Q{ABU& zkpJ<*9dktY%-D4P|A#kMv$v~Fi|MibGV^}bzoY*PU+MpQv{oKzKKbjc=%w$$Q@}A? zduG(BuTMJq;OG>a{DZ2}+uvMhzbE_sTEG9EPyYYE{QviJ{{Nrxr}SU8etCNIalOLd zOS?7q&NKfn1P&bVfX|}e`+i)~-hQuazumig_TNtK|Nr~{Z~bP~mltby&%d&}a&_hX zqtjy!f@9=CtNqoW)ghJE2fOorUTO_LJyqn_j^7`WAOAP%kh=RjbMNfv{QdtYonH5( z;RLj7yWAqa(K|?fBOhqK7E*9Q5;`bzFo5ShAejo%qXA_ba0&Q<>G8gU-Nol^w{yhB zG(qRdKyx7t;@*KPp*`isLe39Ku<0yt{s; zCa?JMVG)wqr(4Bm^UHLXB;;(KZSd^>T)m}U_ifZPg@uJTnn9)p4{-OK?i5cxu9o7! z|D^Y;9)pjMcH9xK>1IAMH)Qshz1<2f+8N^#dX_VSrq!FoXK#6aY}rNTNgF)beq7XW zbrp4M&Y8W3#a2_YPU%@CnmyR}K}8hV%UPWcaaI z8O%D?eKGl=!+X`0jK6PWTuXS%_mJIW568AIKNSyk_#XYJ6qvK$IP?NPtO6(rQiPl+OAkUrs`91-krVGccMFYMr)@f)oj0HXm6^axW?K0 zg4`~B^R4L{uU|g8EbIDwvE1C7u*mu7@X+O3nj>TnDVTphxD{^2$h9ZGvVc%G*n-ngo5fy?E< zLe|x{lxC~^I0RF@`Vpd$CU1Et8$G~yr>p>c+Ks^ zjo<;)2650@mf$@f92~1}g)FWXh{~9&>ow(u+hVbxjz6L$1&4*KW?jkoDc>C@k$Hjh z;~{OA>IDmqcez@FGdY9)54VIEwml!*zhAjAf2JoPM4L7Ub3vZeyJkSj7jVx zcX);3(~wm@eV}3k9G25{svg?qwu|4pEVD;|@4_OHx*rRdUCRy;&eo4|(HHTtczDa- zetF`mmqJ_jTwwtfEKT4l{C9a~dd`gXH+{>Wh{bs5yghSDZ0+O>`Mn>++rzm0`&1Uo z=3eiDC&k~-4uu@ve`ibL>aTOs7z8FQ(S3X7+_DbG)XDpOdG!yKlpcNgbK_GHL9s1| zxz`HRmo8^$mp-ph1u9vHqEZKaL*+O{FB*2vj`O z%QM(D9VB^>`{Q1I8^a2}FM@j>NH-Qneq?GES3TODXaH{)f&)8&CobW`qWIdAOQ*ly zmv?fL_4c=SEAKy!{eE}1-0tdh@jZ|4{VFke-?#g_&aS-7r2GcZ7!_zF$WZdV-0ved z?x{PyuY57N-?r|+uOkcB{rwJKYIM_JiIq^ z!y8HP5E`gCs`l9W{jT-qi@&OWtKIhR$inuuAKB&a{(qnh8kL*)>&IjNZymZvHl-in z?h^&4{24vHufF!%+TGi1xLaphZBocOc72O5u(y+p_7&V?`uuI~-X5+m`&09;v66gP}9ukl6Y**&2O>Q3Oy5ax4plk{JVu&3EU7q*sWQ4?@zaR&c447kI$0= z55g5*ep~!J{s>|a&gOa3PVb)7?|1&6Q2)l8Ea6D~J4gTSrVgC*?iFRQf zfhEhANKfk)=L0+3aGvBI51zx&EE>!znghxx0I*ST$Z zOS?SQthz3dELIW7b^c7w+#08>Ws$~*&wE~F4ZE%=_WEb+hqpbEhgYc^R)+ukY4?HY zvEniA`VhafjwxxU4|lIQGWY4Pf0DoYgOj4i){^}H8y+3y zIeV>gp;4=N)7rvmYgaJLc+9-c&j0#~rS`{KpTFrkn78IJ8@tN~rpKS$^zSTx`{7Xa ztY&eeMec!J3LJsK$_`dOi{^8?MPGfhtSUxAKPo?a#zCnd;XN;^&tJ)z`>cmQ`p3>J z#zz-p;;PE@P1C2}-LT4BRD#XhD2jA9dL(OJZ;nUy@EF&=Yt(o!#9GvCr1_hb3& zsXszIj$huo=ROMTU6 z$Z$G~e4M%Uh=v^RXGhM!pWwl+!%dwwx7Qk`n{But1Im}+Vo6|g>C<>$aOV;wm%p+hb=Dhh z1w1wXyMNDgP}7L@m~)%>tAFS0JVShL@8{j}@}7{@F7BmwUPR_GyuCL$D$eWv+#uCc zZ$){|=Pfeqj<#w9_v-o8<5V~f~m^|2&8 zw4dko1=Jr}_xDS&)UsK6f!#p1>35^Dx{x)fTks3RK4P#C=%&020FBb`)~Vf%_+*WRMK1 z1HlYL*ZNH`*wM-Rd>^n@96TtJ4CX@m{IE!d4yK?EhJY$5P!Aqq`W^d<#2KZljh41~ zac*0ja=SO`^&+j(+hkicV?)z>+0w){fC=8Ic=57$TKo>#j0a@pG}y!T4MmOgGg z)a|u3%~a)2LbRQ>M3^my>k02t<*5r<=SqlPo-}7$bd$}tRj<}Z_R2*si=GwVD)Pug zcKZjdd>e48|MPnr?Y2VYlR- zMT>Zr-Oahu^upCQsNylyZP`Ufma=OvXm8L;`E~etk4xK$(5(%J#kvY26;IXIt(g-k z7004!db=>Z&cKohGSpE~q3EOVk@@l(*Mps_o<3^wXONUM>Jr-E;Wr)B+yX_x;ZAWu zVU^=`^$*UUnc%JEx>!7vRYmkYV+CYd$VQ_gaPw@(FNb1xzKlzH6~9U=ytU(y=A;s~ zsd3-+JWDUzx&&N!uwv<4-qU9eb{7cqrpin!YXWD9>GJxkrb%5n8`sYJ>9IT{!&V3^ z5;sl&^~k{d7u!~E<(jMjNfnsUg(We7wH=s|FI>SGS72}y!o{i|+VO>?X!tk_cm@qz zdccxSg}}!}SvPraZ%&n(T6T8TmE3nr`M{ya6Sw6E_vNxzMb#zFIoD*D=RJ91$h4;b z)UpL9!9}`pEgpfJWmgyNOXMv0v9Whn==~H+zsrS(r9;K_UzvKlTCY*Kk{IG+&LWhf z>aS}&ksXp~`PJh>SXE;7OyFq!mnHDWe%oTu+p0VjKYZK>^nss)W8>iovEyj&}Sx4KdLZ2FL7Hrur49Uhb zJ}6!PwT2xs%*Up`tWW&kC+>S}U@Mb9EXuA(bkVj2&s2g&Hf`MxfXf}E5QgRd4gTy* z`gQ?6`+s!rui$g4T@(MKHGTsBs_)x7zm+#@#Mo^nT2-K1P-@~$3^^U<^qNN zgO^9UyKiY8>FySI<*oW*kw+ca_U}^q@AiE5`@qD@5T{~y5*$|V1mkp~x8*p-6uJC+ zB))&ea*uhN&)Zqg6<%mJvBtu7k4H_w)5$vXpP%^yQ7#)-k;53bpz&b0&mr)LV!`_l zN-5kQn0STamT)qIgWv(H6IijHXq-;$u9AJrtl#Z8Y%TM;bCP@CtnNKVIp0k4*Um$Z-cs?-kvc)aA2`Lec8^q-j8^kjhJ}6Drg?RaGg`ts=(fYY6 z{W4p-pSWbWsmPxb(C4aK0?y<-aSB)D^!0W;V1oFUJ5FR``4zVn`AZ+W3O0&Md{>T} zv-ek_5(H0jb@p+jq-3)Tu!p!MD zGHY&cC@m~KdLVk2=3L+Rj594FHYOcSbyj$}tV9gtr7PTfB6e@wwqjS(1Kqo44s*}6 zmSEd6A+JfCL$Rf*Ra|N@|PrL&i zOZ2Xp?c(Nl3J$BrUR;$szvkIY@%WmLGt=k&e6lSxRx7yc&b6tNmdplwCGO$TU%JEGtR{PU;nm*$rj-!sD}aPNka;#nV)W=}Y(&b;D

jZ&3PF(PLag@u zxbf?(eB`Dz$@w-Ve{S3hIkm9*`25KU$AYE*9x0XnZdd9P#CLc0>`kS2-#N!$4c^1^ zxca*9qR^ky@}50B`t^Ez{l_b%kN1i9=X5W>vm^Ju;L_ULd0&FJy}iBttoNPrWTo&4 zC#$7$Cux;!ngkCt^Zb7&O1-VWy-V-!&+lEz5hr86CGT+AY=Tc!(3GO&DT*H%p#IpAdH30Bas9V9 z_-%e)x*VOXDb2UHq-6c~ANLju`{#B%J?S0!{Yy)Z>i$YmvENhK_b_d@Q~hJu+4eL7 z6w0Tk>+jEawJZ8VQmR(z(o1%UoxAU*|Ng_C`0Yqoxjbha|E8?jK7p5fLEGB`&VNX{ ze6`!%>KpTUv;KFTOLHuK1WkCf=y1n^!{KrgoI$fbS>O5mcD&D98negaK(kHl$D_)PG4B{a*=eeve%SiE zC07?s?5jO}aC)D7%xn+KUB|0y&R^_2f5)ik>R+MNJGT0IB^B#Bzu3BR|KtrN#Z@1j z7CP$G2sS$YSmE$RNs@^XY?83PS=`nYR-Ef=Z}D1s%y9f?xA*ANX2bWY;<8T;PCG9% zeJ6jXvk!~@(x4XgI|Z#;uj*_MZ;r35%2_*mp{C{6{gboSmKgKvPt%Rwwm>@S=MzEu z9}4yJV|G4Rr(CD;$W_&If{ec0&eNxL^jC>Yee%5O)4ChMmGAb;1@MiXG^Na`0}+kg!^f3%~Ex zpY#9w<^0L}{H3995<&YbFHCsUdR#31+?^(=&c&QP^S9>p>ecg%m;2AZZ2Wzm|NnC@?dH!g&$sKdF)}*jc|an$=lA9L z6Y8f6I&mnr{E80X2GI+|S_GUp6j!h+wg@;ugaocMfrMDLDuAT2cJ8TvV_%ze_ImdW z;VuCuj)mH8x<@CnW;t>wwp$I!}kAY@BeK3Fa3Y=$%Dd78lQr8D-Wp?}8){Lj zIMe9c#if1HuSF%iL`z;S-nifZ=d?Rd99p}3wJ!^=e59;;E~`{5Wc-^+Wa}6Q$IeuUvmG~`T9@#=KKEWo9+42`@Zh| znfd>|evw_j_xJI7MU&5$zwiHY{@veS=j{q!EWfsQinDHVa&i^FSz*@6+k0PM5t?#s zv)z`xT-7Ip=6kfVAJk5^tV)_DTkRhDFj24e%f;5R+c)m|3n;c+NNDhOOwshwO@6=c zY2E+yHK+XVRX%uDyY>D2|FcEotzZ5-8UI#Z`hRD2e1?_NldsO=c2eEeiw`cIHt*}Q zw<4>V9p_w8IWfh@55NoH`c3t-Xf9E6;$MXu1#ms`<1f( z^X0tL%!0g)()|K|mR^{=MR1Oi#lpFBQ$+1gX{whlGRg4_*ZF$u0?T`iTb_LVGaY%Z zYUmnXJtiY?#`@IKJ?FUiDmDPMN`lsR%J zu2`Cz6}j>6f`HR&zWSg3=C8Ze{^Qf<`FFnllK*@3sAzokYR#=K7ny30r3yJb^0SZ% zIpyFzF~WP>lR4+?->m;!^*2XwrG!IW;IV5C{Jh9zS%mlOE0>letz__=aoJ#9 zc+LZzdCix*qGrh-t(hd~#KFtC=}TG5i|1iEb}#GR+t+&U+x4dzBuTBj|#GU@W}t?s(M!qLIroA_8)F6~Y5 zcK;kzQ%=4s3?)CYY(@$br`9>Di_%reD%-d$(?shF zxk|p8P&dQ#!>)q(IWqS=k7)R8E-aS2K55mAg+afr%>7fj>Dl>12KJVh6Dliry$Iw{ zmsD)Iz_7aAf2MYy4tt#SNp-`O%@UmluBym%Td;#lmNoAJxKCWtaWED+t8}SRz-h(( zm8_yyQ{3#-wtL!WfyyYIgHa*iGKSLxBh)xV_f_y!K+D&u1t#m|4tUaCOobJR9NI zGt4*rJKW1Z^Hz9V*js~>UVCO%Xy06v(>qHZthd%z_vVY{SGQMB zo3!Wo*Z-_Rk5~eyINtBrsTw#bj^8>z{%=9=9_G{0iFXf8GCrPFHKk-KC`hjSzamt2 z@8ImHd3!{ze!b2l_aRuh=mcBwlvQk58$W&PJ$)iXFZ%Wo#^B>wbt0#?aqI@w3AH}D zyoWggI5FEbS^H^FcjEnXD~=YdS>_Ikpn&*b?=+U> znWX5E z4u58s3#zspb-^_f%T^xkZ3U0{oj4Q;Mlx7K3$*q#(Y*5My&%`o>&y$q_6yG6#g%-g zakr_oYg_wU_8#Qp&vkJpIfQ<+dn;ciCByeHT7G4e%DcUvPTT)7SIj{=Rsq*dWTh z&!(#4=C0*=dnyg(O|CQSC%Znc>RB&4{}uMTm$)*$t5#(EzIc=S zeM8g&v7X<3QPY&RlxSX=B%Sf|&erbtH|NbdS9Jfy`jGm!Z=~P<{keYr&w~r1qZD%| ziY-;!p|h`g_7+*N8=|vrmOKerpWEC-~Nm`1cpz-}>0S ze$Q9-{eR=@{+yHl|MvZ#>-(j_!KOd|Pi^M(dp?<8OU=(Tf}Jrf>f0Qt@GXnBJU{W{ z$3&+)K`Z=2RP&j57ffUP(lh(n`a3~acYm&)U-fqTzYmWDK6K?}UfgS4@0tJXEq~qD zU$gU?!KQRaO*?YS)~qfi`PI>5cio@Z|J)h9cXOcGF_(Xv*KOxYs6_n?`1J3jdIS?=KPHu-mcX9sX! zX)=7ro;8u7Lp`y(!`{ZuGtgI}^W(j{wqj|V#p;X9IIz3E;lMwADdZ!dW*r z`1GTQ#ZJ2I?zOobm&|13o_&*!z^f@ z6=lY;nE|5AL04_M*43)JrFWzD#%(qW0LetbmzNYS6)#%_^_X_4BQ& z_F8=uwwrNf6Jrv{Un^L%40i?<-_5%5vHXg;2dCe3tEokyT93<`Kk9N&o-aG zd$S!R7f$Y4BzARb*4;{@%_Yw*zh<5fYflgLHr%$T_q?lLg4|Y>Z?AZ@pVXdO^y5O& zw(O+cyW=;UTsp0lLpO#4gw)iE&(dR9XpLK6w$gPxuGLSt85C z=2yt9Z9FMF!(x}*e$V+UT+ZdJ7S>#q)K|~fd~4gEm@PY^)~-7kxk>6`+^SE3&P{CB zwi;i4>VMOI_0=CwR!`r?yj1}j^miTSPka*+vOjd=AG>?+4Hog{8@NW6@$9a@dT`3A z&YXvBuUO|6ZSXE~QH$(YX;ij%;k~P;@+ax~@i24Ny?=52i1nO%skaW6)?8L_QOxQ* zwf>6K!@^+o3-#vFtKUd=znYm_`pxF`QM3OsMxnj_fxkZc%BdDIZB_g7EO^_Z?M?}; zQ3Bvp8sM#+)%i(X~$ zx%8#@WQg11-Y?Iu&Wft~rCHt1v5kFRRGOkmwiwutvGcA^dL>lk#QJic{yDYS1et8Z zV+NZHrf43y5XydcPh8#PoX%fcI<~S1J9+y~RIOc*G2JGM(^#Z?>k|IyekZp@c^gi2 z*?eBr{@SF>(uEP;{B}IRe3R>)62cj;w^`|f*xPOp9T?0ih?a_*BM%NCYT%PR_7sTp07@$=?|6|Sp; zLffVH&dgHtTKtghQnK8|#zpI{n5Ud=X8GSAR-Fw$>!8n*gW>hZ!aCXbva5vq&H}*a2;_{y}g@&Ggx8dhy^_Q2I)X(I}(%iPGGU@BvJxdQS zo_f>yl;QeWxe+(+dgv~jy4w((44fTxKQ`a)j$=P2-k5vu@9kqtSIX)btqJ?QnLEfM zdg{k%xn1)<-an^WxaUvG{kwneylehs_3?@A)cx;QE`4z7+1cwqu8E6X_up7}_02Qy zC9ht4&kTEa3>?s31h-BJkx&+#9}r$Bsvo$2o%d3g^GErQ9T%S7G}A~peA2O4A$L!^ zt$S}Q%{=$Y>|nz_v0BeKf48Y0g;Q(pmmMmscTP3RmRUCISNVoKJQCQobWucq9gS#uA=7FQcTmEQNQ}^nO#JIn^^r9}P&t9~Cm2kSo?9)E6 z=4xdZ*U1HIzKx$1Rb~Ei{q@J{ZPG7apUlubT(x6f-~Nf=lK+LSd&WOvGc{aiEjw*; z#N~~p$y-xr28-t1TeM=H)_Sg0oIB-I{&ityj%UfP^4ZTW?391B<;~(>v)TBT zRjfI>2kfxNmmVG~n3j0;%`)!YuRlleXqP90i-li#Ehk`eFP1QYj|&gre1vsEd(xBs1b_IAhC8DVG5)_hBe zIa_1Y&I3-q56u@TX9dEP7Uv_bR_Ep~94@K@) zRXki3?|+O(WZmsIQ`ToX>Ygm{3(mSYYvzlWyl2lZ?oDZp-mXzwc#mysO8?ZDe^$jW z&O{o8tuK9$ukmv^J|w5E`7PB;Kjm|Os6k;^jfVbZ}wlAv*%WhlkUq|DJK`)jp&}J zTXZgZv*%XXqft>Zt6#q9(6}}!*!HcC@6QPDPdt2wbW$OS!2W2|E5{j%N|Q7`2%IlD zxkSZmk+DYcahSG!|A>v|I3pN!>7 zZ}PUxYH6Q5zc=HL$I=~vUU8p;#jghb`@&kVTI?nN`wyowO}K)+|7~1#%vt(ekXpZ4 zxl--4S9$w+U1A#3AAh?#>pHjqn09dY=bcv%%dY!iyKCyka9~>Bx|C2>k|2!6MQAjvd?R3^2c7TNRxn; zYLZc))^=l*0XWkKa32fcewJ?%&%dJeJ_o4aftU|&J#F#VonQAPwg;R78lyl38(33t zf0S3zd!O&`vh;$Y%>2t=FA%@scyextTFhgsP2XQ^i}KGGpZ~_}+ne7ETNA(uc)_$s zf4gpnW}Vd3-CULQ>fN2Z@@XFrS+$mVu1mafQgE;8l&iw8Caw1TF2td>yZ7!NI|p5G zNQkXSRk{+y#msiG`G&XORlW9&EcILWcwJrjGivFzJDt-!u4vEHH4fc-MDOObWwWOF z>mCzYCV5Tu#dou9I(xqMoow@YeYuo*A*41q&Cn}Q89VXvl&D$jKSrnAeU>w?BkGmt z=?@vVQq~rgnJ<5`Zt@%*bhOyK?a9^ZjPNRnb*1at zldo@-9o=?&!L%7Sor?-ja?rOU71uZ1h1ol=0rW3r&%g^e{Mwglnb+>c$&j>v!>p%ot)I=EOF{g z*!l>WLs`bxCUr*eI7n~aIBl8exy92q+_F?p>t)GsUhf3RN}~ z-#Y)cgme1kL$d?CLvoi-(ptr@{=|=OYt4sONBiSz|1$r7>a{!_YLgwMp#4aSUpFdrzD$KWF>%+|kR=_4d6oIr+Kq zmnP4Xng{9E?zKiOn09dSw3Uzq{^3Eu>DS`=dp)MZxCRbMK z)$1H~s5@}%^q+%Xn)lm9Az4Cf#nV%}bC$n1KDF$En+?O2BEPmSy&o>0ejUBM-u4mj4|VUUR)K z{*CL`u+X?Un?HE3+|0Q30(0V>bBZ++@e zE3_x^{Q5qdniIEv^@>Ix(ck($f6BIfd#Zk4WdC+uZTX?1v;|^S3O&ESoJ%+DSp00U z$B8G8Pfxea`k1G)tH5uz-|VH+mR0VF=>9%Us`S$*XWanr`ITR%)lOz+FW+B^i>K@9 zoHMaC>{p!lTMVx>Eu3ceY3ud+hu*W@R)r0ck`Ok+h*_nE!FJPDPr@=-X2^1S7+Y!OJ-ZA zT$$B+Z}Asrz7N5R*w>x*UY=x~wbOd{lx1StH*70T7ag+s)FF6$@r01fW6D+ihs&k! zUB17!G%M(+*!tXEOshUEW4gRmD|%b7v78{N7HEsw_2PVN`QJOP%GulYet57s*zkqY z+G*R)$8HHa$Lv4zb&9M~XTg+HtAhKdd3;HhTgj{Mue()Y;=gIzcW)Ex7q`xgiZZ*V zbUtXa&rz}UYZuAa*V^r$bn$$`@lU2dtA9#%oORF*;0BEVd1rNAf53Y@=1o`!mo z*V%f{)=IzGKUG(^`p6rOz->49vR2}V!>mBI5H|gV_NYGGE0Qa$4Z{4U2m)HCM ziq`IZD70F0>xWkO30UvUs}J!Uv$4o_|H*AYzl?r5ST6OH^s%@G2?{93? zxTd69u;1hg6STTxd#_pi_WtuZQWFnKfD7lQh132mnN}wE7u+A1=D2v8u=Rbr`iJh* z@BRMp+uD8hmu0M*dh7o0<-e~x zbH&o*{$KQOzr7oyeBSP1nhej@0>6(1L8m((+wT%7*}M4tKK0vOiYbqOE3aI4YrG z%KdTkCvIQ7BD8{Op;!;7dEup(`)+y~*sb~5qe?}iZR(EC z*OaU-y_T2Hot0!WEqv3WmhHkBZ_3X3hk~93c-tS1+B1Failg;2 zopqx)6!}~|=FdIC{qnc|={s>xPfyo>t#FBN>ym!e&`HUf=T0mYtDQbqK8{aGDL2r& zs%1rR7UySmJ}%IR)|Z~BJ?(s%uVb`LZ*o9w*MIXNc(ZuF6u<vguEjgv2_ii59E^PcMLNjE&?ypKkm zWB=*w(RF*$y{AE^yJoIb?Gp05dnsem!f7FYgP(_Oa$Tqf3dB^Q6-T?orhYJMI&PG9 z-RgXFzU|gmyY@9MoOUnRJ4+*d$%(zkT{o3Jcw>8MXSpwb2lo|w+Y_wdkeL>B=%~}; zP`AIWDn-)+{Fi2EH$K&I>smO?bD`Kv$Ns(1Ebd%s%~4!e;2|u>)n*y4 zDZSSf)pL4!@`_ZWl~28XA31kXcx@2dY2DZQ=9%*!XckL6_FO8Kf7I_f|2mP5tt!`} z&DZYgTR2VAQ&$4inm&1Tj%D#K7v0NRj2%Z#_oiL5x_&*ne2eQD-qq`j6~#eH4oYM_ z)GP+8hLj1%{D>Dw`DBE&Ie|M($t1uR|5LUI; zC@aeV{`34`O&_l;64UOOu93qTHm!HX(vWSkx)P5kx2$>ftTk-Ukxl8I@w4r0xM2)7-s6QF)T*ow4a0+i#@covm$#Z*(mg&}q zUq99*IrDyxSZdL)yXVq}{^)Q04|MCL`vq7{FMf8v$oJME)HzA5N<@BL#5qnmjlNS$ z{NP@f4eEBW&?;jPJtnBsA2ny!?1f^VIVQ?)`Pjtu?1%3ofm<`Ww=JF-wdd|*qsM<< zI@x^DT+VrTOZCS&bLBe(l~%BRHlMYg{n*_lVo!_MG@JHCvhs5UcRzjmw%zB^2T%SL zuGRrD9rHDAU#yrgm09@hvo}8+K*QuerO#exeyn#s+i*iup91Hb57zJh^={p<@}+X; z;nZ^T?X^klmsYBl?)q?Lso2|XdozqeCPu&9Rh=)_7G)q8l(qBN{^gOW*(Oqf<}xgS zcM_^HSINxhkvb@IB_S-Ie}${8xm|!kwCWR~@b^+pFV*tSo_=-g&D6=oP3&Ip=UK(p zlrGoXdcyqV?E6pdZwvpBXYw;lb%m=a6O*&9guiW;X4X&X>|fEh9!aV^+pBi+>5+@h zGYmpk+H9;6yEoT;n}e?A1A!U5YV+C6PrF_eKWg%kH{Wn;$SS|5j-~!lHO^5Lhv$`T zpBMZw@6YADX@>*2j|F!|vE5rc-=TToG|%N?rT%+%t-W8kIP=53w)t{*_AEadrSjor zpr6Es&ayyDRl_*~a!XCr9tygFv&GB07p}hMdWKfbzdNI@{8$~(9m}8peY)fEgk{@T zv$NS|ZTxd)rPCvqqb65f64ZPiUT%#7byC}+)a0@S;{tmo?Gp99x9RGR{yl#Qzbbl*-Y_rZheEaL{nMq(Bk5{_rPB!{169MTi zgT^gjS-0eLYTmSFkfjD~Q4#GN&Y&p}aE%Kp5D*NI+d!2Rs4xK6jy)e$0#56+q@8U7 zYnEfkifp{lB?|7kA7ggVJuMiuPX=1XI6_20$!r0*6j?5^RmVBwrV-e6$)K4skWJ3I zv5TfH<Hhq)k}R|&i>|c>c@|YMSL7kqc2vivt53y zRoLk#$HT&-75*z#19x3X{BvU2hrRRUWgT_j{uEEU^W$ix_q$!`pPBjJZjrBj_VDd_ zzFkX2FNtMN-12&tr1>X7XI+W!rdxG7w^rx;IpOy9>!jY@{T_#oDL+o${dmg8jT@DB zAI_2f%VK+S!m?90->M&D=P2$yzEs~+Mtf?KMTnN>%{MqOYK1o7TbAPuBMb>z~Uede$Y`oUnR`4|2yeO&1 z3;W)j3p)L7V~6}7m7|QwyM1{cOgt#q8+FK*S*P=5N^)VAr|4{}s$E98SHv83b!$%F zVVy01%ks#cMb)33{qGr-+ksk#clxhvvbgr*#*c@*w_YEW=Iih8WwYNKe(7yHS5cmX ztnC`N%0D`ZhL79brygs%vZ3XLL{!tZmwWGCh*Q0HUTn7Iu78^{z~0YX@bvTRYxYL2 z6OMlVSNd9h9(X47apUr7Z+^3FyI{U}Ezi~rSJjoS8{1a$9ZT|c?~fN-4fgB5L!wi2 zUv_T4Em!|;=JS0&W4^us&v%~W5w$hWf5-)DqE}2<>DnJJBX?Kei2WbQtt%tE4bGR{ zNuQvzwPNP6zd9#hoN7Cq{5Wx8a#e&{G$bHFhR>?{_1td%uXnyHU+Vb3uY9L+u;cbEPPdeFy?hHIYp=UyT7!cl{>mnfg|6KTrrE^TKVI|O%x2a17yWj1 z56=AF|DXT=hyVXR%K!g3pDq3pSLW&W^M2YwW>LSIpJ@U`%tA4itvo&H_e{z!H~YW1 z`%~E8TE6~I{lCl|D!R8eeqLQ=Y;Lz9`PrK21@Kwo$FrZ+1io8&arfuFzvKTcPrMSm zIR5(VotdYFH>aJ4#CCU-n9`O4#VePlL8p;DK!iT?u|G zr0JUlVm<5)NHZ&-l<1&4Ct%KR^I7ZJuN=x}0cUJbgBO&`A*BPTH-#d64Ai>xU1uwqRBavBno=C4p&SGUKO%8R_A7bqlmti@O$m|VLH80 zLLHCaua-ZduX1l`&P_jEt!e8yzypS$YM?u+=HG=lGZB-P#tF}EK62?ia^)>Y-jn45 zo#HMRJKZ;3f8(;|=&4V^F1mG!x7w04)dgomrfD2>CHxb!I2R~3iyX_TypnV(XQ|Lr z0bcVd$>}SPu50fQ7FoB#^_1q+pJ^Z;f|3=_Ru}!~!0!J>?NKcHTV{9(=uF&`nUyJ( z9oX~8?Q&`JoM~&1^<3#mnEjp|?z}v+ye7GnC&!tY7EZX56BE3xg3s%9gtx)`?I9H{ z8nUx9E%%CpdeFo79!6rc;tjwWZd zj1hz8-9a@hEZ73Px3659V_kZ^G`sY;p6~pCZIgmmhjXc}`r@_qop{9hTTk`o@7vS- zX)P$ff>Lfp!pfyFrFR*myr#~|(N>zsdpv9I*@V+90_zwRgjyq9{k^s&?Y#2HNf+!k zQ2r9#x}>Un_dBc9(}j22xEilO(%>-<6`scjTUz}0#Omnx3Av;`s(pI5YpTC!=ia7E zT0##34@&5(1{(g4_;gus_P5?s`qA5hFW-l{qA|)q&LivNPv`2J0dx0qW!_l2>8efi z9F2)HcFAsR`ZJ}Y<4v5_YX-%e*=2r>b=wm3Evq7;v|QKE*t42rS<=*^Z(sRVIULvg zJ$2)cFxXlH8=EUaCEsQ?N+fTy$udmcW^`xrGBI6Ov(=pnzB3ku`}ALX@_zLS*NMI} z-wVS+@32_*$GB~a#Qvx9ZROB7VmQ?xMXA!)Q8u^2*m;T&0P1f)C)}IJ_ z4s0$IZV)Q@+2s^8InMXymYvGF$+`z??gbUutauyI9kwxPqu8_O&;U%Zv4JJkGr|`& z4qi=vJZrP2K;X?M>CW?gg_f<3o@E;2QPdo^;I*vAtd+fMW43uz#&w?5x;0_HqwHkmD8PC>|!<+MVMSfp&^xCy{_w8>h*1cYr zb3gv(HCFpyKN{mg-Y-10jQO#k?(1x7N+)vNR6huGa>q*-P$ncYkkfK6lac z!@Tsks)W}sYG==j*qwO%*4O^+Z+WfX-T(6>T<&i9g9i^!uG}z3az*QYQE*B7QaOKX zxep(UO}uTK@3U_++5YC+^XE>uI%nh&&|v1jFmNAjY5$&-$jbl4 z`p`i~oye%Rs2|adpb(g5_enpd{xNg(Hs3U!#s78FlRr<(-EZ*N4Pl*red4n>?%Uoo z#VDmzrrg%EREPH!U%JQFA3jt1di$HZ{~w9Ci&-*%zq>#67;pRob0$!AaWKI9|F2uG z({$pJY`-1Z_k1;U@J~N(lhZlo{esYH1QZ^SH~_g9-mScoetHl&ET~%XmW0=TGrvxxgCCQ zb{X_WZ~nV|4$syVF1tgv)l_#*J8q>1DzCup;ga^KpajK=M^kFKR$i-Z;#_zn(^0qc zNYK((Q-oW+yIhhUS@_=EB&%;G%vu5Jrh+QSOG~1;3{>lG2F!UF=<#LR_Qb93x^nAX zt|&>@wG|u=`mdg3ERpqc<7VZBbJL9ZYM=GApEAF*O?#Vc?fI<_Lk=gb{*$$0`z`06 zFD}UTob>yd7_)-)vE#C74aPNGoDoO9HRRX2^$x4@eqRY%e?q>* zE^S3>(FE0W6_c;2W@*MZvLv_lH1~=2N6BnoxbJ7@!;t8|Qa4_5H|(1GYpsrh+{K06 zvCJw`c^{=2wxSh;Mm=T)6QCJ3D4=x{v$1=cB@psDrjF? z(v>3L$=U8{Z=7@|Kln2-AXM+a z^XPhZ(ch(i12_L!eayf^F4$XHig(rP%cZjeyTvQYzizBK>ikM|qu7e4Tmjx@OD?KJ z%Wa)u6dmcH|8w)Xr@!U?_^I;EIw619>&NS92Yx9;T~;|7VOalZ_lNf2^M9J8%TC&I zL6(_${<&#-B+%fBQOicLT9qxX+hnpj4?6w+8fY?4ILyRNdva^Wbe3K>XZDF@D^z0* z*ZbYOGb<+RVmT+%x&ZEaJ%e}USs$Oxa?lMpZE(v%NK0hWp_1TjE+;m)f`-eYwLElB z9-Qvdn7A$FfRU%}Op)NDK8ez6AA(B69`@-`23L&MnDw^!eP`3!3aa`a{#eG<_~Nt2 zqr&s6<~p`BxXjsLqNyjN*mXQY*m0tW%#kkw(-zpeD@>kr!y`;bruVCytfY)mUPYDo z^|Rd{9dsqY)p7WPxT|j(!B(gO5ncYLa{UVGxo`W z$~@3O@Ii1N+%Wj`s?MP9RBPdw3!z>grca()n)>#c>(n_?-YXyjSpI=ok%oy`g?DDz zHg?_m>Si02vhM3A4a?IPL$m&F*rx{`WeVUv_SeQqB*1%Rj&&*Lv@3HM9CeO!GOK@@ zmYiy2(kQn&WTn@+UExhR)~R1F>m9%CcT`)~qDAD9S{^qM50=?s0mb@s+(ib%BL#UTXulACBl=lj6MtyuS3H zM3$zJ(-X%|VJA-xZ6h|32i{uFZ#K=62^P2bD4=rA-Zt=@NpI94k&~~_u1aiy^?Efu zbes5v-fqw?lkw6Fx8>qIaA?B8fGHoms?LD=1CSuy<)LeswPd2w1J2~O7zQn=Y(axh zD_zY%)hBo$VQJ=emG2C#8^!WBtu5y-F3{hyN4@J<=O)RJU61d7ezWxVlZ6pSLN^z_ z4z+HNS`=&IR5Y`f8#?0mq{RE_s-)IaDeRV?7Mp^j%jJ2nL5z7_SBxfrrUX>o zn!ruPo`qu96c2$TA0F*+Mq3n#@egVRf`%d>spMyG19%VuR30~hT8+@82Wn1&(#_*{ zfv5YnCtTS9q*Q zeSK|h0JjuVmS^o`u={OpT-lU#v`czY)r*Dgan)~4ZCyWkq)#~888F{t-yFfMFXBUf zs-6CRbA~*)MZxT^Yq!ZkHzQ-kQ4T$DV9QlxbxvT-ay;y!8(9DuSi8~$oyd7GFYxrI zr>ECn-;#P-?Em^b^E4`#7<)W*Sy8VNf373yi~g$rsnhaH&FsNxjeTB}QbA+Xg@OQY zu}E-cv9Y=GsG0jpQ(Hq+&k69Vmj{f?rb(_92|Ufy@+(L)OLG#$SpnQm;XP67_I`_k zc;9lX$i(}S3RkvYTDi0Xw6c6kl)xv{h4yZcT^!+IkTv-zdodtF&}I7IMg3BCXX}4l z6}|dVfA7Ej?KdtRsGOSrbZ+D7_4|IUTD|Vq&xO-W0^}w^loq7i{Qm9K)$DhX+h5N6 zZN|U+dhR5)sNesZ1!GtupFDqbv^#uVjHS_%Ny|K$?SJ1q|EsqZw7rCPi3&&I?^mYf zcWUo9rE0g|xa5$z%*3pkO@%|zc9%_S<+lKDDUGvJjyZu`&K7D^RrLLqFZZ;2c3-BY zc_nX7cX0F1+yD35>}3s0W?qT_ZMVCi5PW)<@8{`YCC>u8c^3GvW=%|k7+`yCQ{lf! zpDsktx~X!_D4VMzg4>B>VdL^?yRYTV*uKQ%%d|95N5zR_A>;CC)#hiSW2CCQjX$qg z8l!i94$~y4DYK*Y)x7_8TP%8R#o>MVeSeSL{P=Nl^8Sx!FS6&~E_n0g#y-C8S9_Pv zv|T>UTE6;7-Qd9weXwLN%h z^>gRL8<7jA`E||W@iwmZ(e3Blut#LmskwK%CfxaXNfP8ifln)+o~yoAU-+oJ8JV?LO!>#dhoUZ{~-;A6|1yPk4%naF!#7qREXbn_j*9 z{Y)?7+P3n!S$npsPh7M@)uZy$+K)O7bpJ(-R+WW=XRx2XRFev8Ms6AcqIrbh+&EK<@*zsK|RArE-_lIn`o zf19?|-oN<$yj<*LFTt#j+eEkC*`D+6veu?cN~&9TPgDFf>&$t+J1tRRYa$8{AKCh< z)i^yaVyaI?adeTk->$^lv*X@9*dMTR`pH-|jZ8I=sTmtqKJD9m{jO1cCVO152djtQ zp3+w>e{8nAoc6nqqwGh%?ZOThGqb%lVQdY4b1SlKYP2US%_s_st8%qnn{HA1=)yeH zI5y5#Ds^Qc(V1!aD_t3n&30VjQpZ)3Q*F#KXHH;{$)u%X{AGV)^mDxTOu4=qTqI~X z>XxtFn|g23!tExTuV1gh%fBGItvd1h{`}HZ$V>~&l9ZHu zSkA225?~*6diwjlKeruq&d*f45;P_1*_oM#-?KS!EUa5H&HDY^&qqNrX~J1E4Ot-t zM@5!oWbOGm`g)LzmU?qjYH(u|G}$p;+q8b){)(Tco<0rToF8j(WEz{7@zRYqjSH@Z zhTpAvy_Q={M=hQ;aRyf^U{H(yX!x1TQ75RUZa2g zugl@_wO{Y-ES|0xyDP^-)ps(Rm$CilndcqAC5&W@)^Qb%g=#x^)-P>zOZli;`*XS7 z*Ol|-vpku*6}Ul>!m;q+LU2igwy_tSH=S1auT1^+=H?s@&~7PShOII-6%<L3_fW z^4?dBil6!Tv4FN#u{A`^=;nSFa(?xx?3% \uicontrol {New File or Project} > \uicontrol {Files and Classes} > \uicontrol {Qt Quick Controls}. \li Select the control to create, and then select \uicontrol Choose. - \note Components are listed in the \uicontrol {My Components} - tab of the \uicontrol Library only if the filename begins - with a capital letter. - \li Edit component properties in the \uicontrol Properties view. + \note Components are listed in \l Library > \uicontrol Components > + \uicontrol {My Components} only if the filename begins with a + capital letter. + \li Edit component properties in the \l Properties view. The available properties depend on the component type. You can \l{Specifying Dynamic Properties}{add properties for components} in the \uicontrol Properties tab of the \uicontrol {Connection View}. \endlist - For an example of using the \uicontrol Button template to create a button, - see \l{Creating a Push Button} in the \l{Log In UI - Part 1} tutorial. + For an example of using the \uicontrol Button template to create a button + and styling it, see \l{Creating a Push Button} in the \l{Log In UI - Part 1} + tutorial. //! [creating studio components] */ diff --git a/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc index 3c3c64cef55..544c23a0317 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc @@ -147,10 +147,15 @@ List View. For more information, see \l{List and Grid Views}. \endlist - \li \uicontrol {Qt Quick Controls} + \li \uicontrol {Qt Quick Controls} create stylable versions of the + components in the Qt Quick Controls module: \list \li \l {Button}{Custom Button} creates a push button with a text label. + \li \l {Check Box}{Custom CheckBox} creates a check box. + \li \l {Slider and Dial}{Custom Dial} creates a dial. + \li \l {Slider and Dial}{Custom Slider} creates a slider. + \li \l {Spin Box}{Custom SpinBox} creates a spin box. \li \l {Switch}{Custom Switch} creates a switch with on and off states. \li \l [Qt Quick Controls 2] {Pane} provides a background that @@ -160,6 +165,7 @@ \li \l [Qt Quick Controls 2] {SwipeView} enables users to navigate pages by swiping sideways. \endlist + For more information, see \l{Creating Custom Controls}. \li \uicontrol ListModel adds a \l{Editing List Models}{list model} to the project. \li \uicontrol {JavaScript File} generates files that you can use to From 44cd41a85b9584f5158a64842f9908f30954a355 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 30 Mar 2021 11:28:11 +0200 Subject: [PATCH 62/71] Doc: Update info about Figma export options Update the name of the "SVG Path Item" Studio Component. Change-Id: Ic7bfd96d89a2c8291f778f3cf8b60f879ac178c8 Reviewed-by: Reviewed-by: Thomas Hartmann --- .../qtquick/library/qtquick-data-models.qdoc | 2 +- .../library/qtquick-pathview-editor.qdocinc | 14 ++--- .../src/qtbridge/qtbridge-figma-using.qdoc | 55 +++++++++++-------- 3 files changed, 39 insertions(+), 32 deletions(-) diff --git a/doc/qtcreator/src/qtquick/library/qtquick-data-models.qdoc b/doc/qtcreator/src/qtquick/library/qtquick-data-models.qdoc index ad7c2e8c6b7..025320416ec 100644 --- a/doc/qtcreator/src/qtquick/library/qtquick-data-models.qdoc +++ b/doc/qtcreator/src/qtquick/library/qtquick-data-models.qdoc @@ -236,7 +236,7 @@ \if defined(qtdesignstudio) \row \li \inlineimage icons/item-svg-16px.png - \li SvgPath + \li \l{SVG Path Item} \li Studio Components \li \li An SVG path data string that is used to draw a path as a line. diff --git a/doc/qtcreator/src/qtquick/library/qtquick-pathview-editor.qdocinc b/doc/qtcreator/src/qtquick/library/qtquick-pathview-editor.qdocinc index 8acab27e58d..6fd54606d5c 100644 --- a/doc/qtcreator/src/qtquick/library/qtquick-pathview-editor.qdocinc +++ b/doc/qtcreator/src/qtquick/library/qtquick-pathview-editor.qdocinc @@ -68,17 +68,18 @@ number of items in the model. \if defined(qtdesignstudio) - \note You can also use the \l SvgPath Studio Component to specify an SVG - path data string that draws a path. + \note You can also use the \l {SVG Path Item} Studio Component to specify an + SVG path data string that draws a path. \endif //! [pathview] //! [svgpath] - \section1 SvgPath + \section1 SVG Path Item - The Svg Path component uses an SVG path data string to draw a path as a line. + The \uicontrol {SVG Path Item} component uses an SVG path data string to + draw a path as a line. The stroke property values that specify the appearance of the path are described in \l{Strokes}. @@ -89,10 +90,5 @@ string that specifies the path. For more information, see \l{https://www.w3.org/TR/SVG/paths.html#PathData}{W3C SVG Path Data}. - \note Mixing SvgPath with other types of components is not always supported. - For example, when \l Shape is backed by \c GL_NV_path_rendering, a - \l ShapePath can contain one or more SvgPath elements, or one or more - components of other types, but not both. - //! [svgpath] */ diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc index 9e5a16f8490..e654eab67e5 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc @@ -120,20 +120,28 @@ \li Determines how to export the group or layer: \list \li \uicontrol Child exports each asset of the selected group - or layer as a separate PNG file, with references - to the images in the component file. - \li \uicontrol Merged merges the selected groups and layers into - the parent frame or group as one component. + or layer as a separate component file. Images are exported + as separate files nested in \l{Images}{Image} components. + You select the image file format in \uicontrol Settings > + \uicontrol {Asset settings}. + + Figma rectangles are exported as \l{basic-rectangle} + {Rectangle} components. Figma vectors are exported as + \l{SVG Path Item} components from the \l{Shapes} + {Studio Components} module. + \li \uicontrol Merged merges the selected groups and layers + into one component. \li \uicontrol Skipped completely skips the selected layer. \endlist \row \li \uicontrol {Custom Component Type} \li Determines the \l{Component Types}{component type} to morph this layer into. The component that is generated during import will be - of this type. For example, if you drew a rectangle, you can export - it as a \l Rectangle component. You can provide the - \l{Learn More - Components}{import statement} of the component - set where the component is defined in the \uicontrol {Imports} field. + of this type. For example, if you drew a button, you can export + it as a \l Button component from the Qt Quick Controls module. + You can provide the import statement of the + \l{Adding and Removing Modules}{module} where the component + is defined in the \uicontrol {Imports} field. \row \li \uicontrol Properties \li Sets values of properties for the component. You can add properties @@ -141,13 +149,14 @@ \row \li \uicontrol Imports \li If you want to make additional components available in the component - file, you can enter the import statements of the component sets in - this field. For example, to use components of the Controls type from - version 2.3, you need the import statement \c {QtQuick.Controls 2.3} - and to use Studio Components from version 1.0, you need the import - statement \c {QtQuick.Studio.Components 1.0}. You can add components - from all the available component sets in \QDS later. You can also - import a component set as an \e alias. + file, you can enter the import statements of the modules that + contain the components in this field. For example, to use components + from version 2.3 of the Qt Quick Controls module, you need the + import statement \c {QtQuick.Controls 2.3} and to use version 1.0 + Studio Components, you need the import statement + \c {QtQuick.Studio.Components 1.0}. You can add components from all + the available modules in \QDS later. You can also import a module as + an \e alias. \row \li \uicontrol Alias \li Exports the component generated from this layer as an alias in the @@ -168,9 +177,13 @@ You can export assets in the selected format (JPG, PNG, or SVG). - In addition, you can export shapes as components of the type SvgPathItem. - This might not work for layers that have particular effects applied to them. - In that case, the layers are exported as images. + By default, vectors are exported as \l{SVG Path Item} components from the + Studio Components module. This might not work for layers that have + particular effects applied to them. In that case, the layers are exported + as images. + + Because MCUs only support simple images, disable the + \uicontrol {Export as shapes} check box when designing for MCUs. \table \header @@ -181,10 +194,8 @@ \li Exports assets in the selected format (JPG, PNG, or SVG). \row \li \uicontrol {Export as shapes} - \li Exports shapes as components of the type SvgPathItem. - - Because MCUs only support simple images, disable this - check box when designing for MCUs. + \li Exports vectors as components of the type \l{SVG Path Item} from the + Studio Components module. \row \li \uicontrol {Reset plugin data} \li Resets all settings for all layers and groups (also in the From 405cf39ee0e493fb7141f2c40461401734f2cbc6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 1 Apr 2021 16:19:32 +0200 Subject: [PATCH 63/71] QmlDesigner: Fix auto generated sheets Section does not have padding properties. Change-Id: I1a527d1ea168ec7ca7eb354b99fee879950270e7 Reviewed-by: Thomas Hartmann --- .../components/propertyeditor/propertyeditorqmlbackend.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index 609f4f45326..e498d20156c 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -669,7 +669,6 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &type, bool emptyTemplate = true; const QString anchorLeftRight = "anchors.left: parent.left\nanchors.right: parent.right\n"; - const QString paddingLeftTopBottom = "leftPadding: 0\ntopPadding: 0\nbottomPadding: 0\n"; qmlTemplate += "Column {\n"; qmlTemplate += anchorLeftRight; @@ -680,7 +679,6 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &type, qmlTemplate += "Section {\n"; qmlTemplate += "caption: \"User added properties\"\n"; qmlTemplate += anchorLeftRight; - qmlTemplate += paddingLeftTopBottom; qmlTemplate += "Column {\n"; qmlTemplate += "width: parent.width\n"; @@ -747,7 +745,6 @@ QString PropertyEditorQmlBackend::templateGeneration(const NodeMetaInfo &type, qmlTemplate += "Section {\n"; qmlTemplate += QStringLiteral("caption: \"%1 - %2\"\n").arg(QString::fromUtf8(p)).arg(QString::fromUtf8(parentTypeName)); qmlTemplate += anchorLeftRight; - qmlTemplate += paddingLeftTopBottom; qmlTemplate += "level: 1\n"; qmlTemplate += "Column {\n"; qmlTemplate += "width: parent.width\n"; From 1e9c42d76bf7c9db7d060bbca4a53e1afac72433 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 1 Apr 2021 12:19:11 +0200 Subject: [PATCH 64/71] ProjectExplorer: Do not cut off the "file extension" ... when constructing a run configuration display name. The target name is not typically a file name and might legitimately contain a dot. Fixes: QTCREATORBUG-25480 Change-Id: I7954763661d36ae20b931d6d05ef3e29b36a9fc9 Reviewed-by: hjk --- src/plugins/projectexplorer/runconfiguration.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index 5ec7b9c33cf..539cf2c8a87 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -432,9 +432,7 @@ RunConfigurationFactory::~RunConfigurationFactory() QString RunConfigurationFactory::decoratedTargetName(const QString &targetName, Target *target) { - QString displayName; - if (!targetName.isEmpty()) - displayName = QFileInfo(targetName).completeBaseName(); + QString displayName = targetName; Utils::Id devType = DeviceTypeKitAspect::deviceTypeId(target->kit()); if (devType != Constants::DESKTOP_DEVICE_TYPE) { if (IDevice::ConstPtr dev = DeviceKitAspect::device(target->kit())) { From 7d1d9a000219ffeb39de44d6f3426b90db476fbb Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 1 Apr 2021 13:00:51 +0200 Subject: [PATCH 65/71] Conan: Do not create implicit plugin category Change-Id: Ic4d028c6a237a8b72058ec98d15d111fc0479425 Reviewed-by: Alessandro Portale --- src/plugins/conan/Conan.json.in | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/conan/Conan.json.in b/src/plugins/conan/Conan.json.in index ac2cfcd52ef..4ee078c1c90 100644 --- a/src/plugins/conan/Conan.json.in +++ b/src/plugins/conan/Conan.json.in @@ -12,7 +12,6 @@ \"\", \"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html.\" ], - \"Category\" : \"Utilities\", \"Experimental\" : true, \"Description\" : \"Conan integration.\", \"Url\" : \"http://www.qt.io\", From 16cb026b8bfd8ff25643c7bc1f552c550773d6e5 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 1 Apr 2021 11:16:09 +0200 Subject: [PATCH 66/71] Doc: Add info about finding type alias definitions Task-number: QTCREATORBUG-25162 Change-Id: I05f0d602b2949b37edad54e32e9e17cdc3e93154 Reviewed-by: Christian Kandeler --- doc/qtcreator/images/qtcreator-locator.png | Bin 15649 -> 13532 bytes .../src/editors/creator-code-refactoring.qdoc | 6 +++--- .../src/editors/creator-locator.qdoc | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-locator.png b/doc/qtcreator/images/qtcreator-locator.png index 16b656317d2ed41e81883e008070c72c7ee5a38c..82fff209d834d2fd86519d8ad249c2e09f3f5669 100644 GIT binary patch literal 13532 zcmeAS@N?(olHy`uVBq!ia0y~yV0yv8!05}t#K6FCmyws9fx%?4r;B4q#jUqyj5Poj2$wzgN7`<3=D+xPST{&W8q_U7?3Ffb%2{t(D#WME)W(3@nO0|k?BFVoZ8 z|8whq6Sddt|L`y{FgP^qU|?Wicod|jxBvV4e-qD4KJM=p z5NBXuh-m0I{he?A-_`TW_kGNdcZ>nq!I%~E@3eIIzfbAe@xQOH4-=ctU-xmlf85h# z=7`uM`ixuuK6<-t*~io7^HL^Pd|G|KHudOo!Cy=MJ?mwzOG?~%G>sSGCh8h2!ZuoS9egChm?|j(zS3Q1frgpzZs)JiWFZoXBmn)y!_y1V`_qhGd zAD6DaSI}cH`2I+#S;kk{R(Q@Ii^~o%426>K%U%@g|7~ag|5x7jk9__9|DSk|urj=g z;d}b^_x1OGgY4>ld(P79bQbjd^(0h%sZjizua1+BN3p$X=D+s0`AH$)`+UW6pVvEB z+fRt9)IGfY^7EsU_iNwhPm;Yd#->=x8J()ax&-Wwq;>y0n@BglSfA#@> zgEb3woQahaXSlVh&~x3LllP5(#+%M^*z;Fq--4{7U=_)G>Yp7=bU*wT`?NP^M@ZGo z@9!qZo_KoHZoYHa+E3qvRari5eC&TP(?nw1r^4Rt+LI-U=RA3_@mIxtmWHGLqIXwM z)cW;QT3$hq!6oL5`s3`iWm~VA6`uUUqJHYgQQ0MtM^xq9Kg+!q$dVB}&(YGvlrB5V z?Qo*D%=fo@cr5-1IWKq0XF9M*{Q17v)fVCm0@H&EHGSWO2u=?OvkHk3`qHEFHi`Sl zj7LJVj!ik@%B$TM9USwkcS-rK%RR_mxZew&~tg)ZS40>4~_%msiujYg*?@@3Azriil79!_L6a;M%q0 zLW&>*1B2L`bxKEA85kJA3D_a#Rrl$T;~*7NnLx>$;mA^-n0 z|8pD+Sr_Z`w#?64eDKoBR2%>KoJR4OUrQS#rPq*77ymE-pCV zuezpXht1cJ?{{av{{Oyy-oksV46Bs%-~PVX_v_QnxrXkiYnJ{Dm@GVf+r9Q%#n`}R(@RPMfQ@ykbS@@xztorW&Ldz`upPO~J5ZWf>Jxt~9| zv-@Rz2e;1l9USN8zqYe@XS3(>&I|89RWdkSW$650^zLuoi=QS@3sS9o6g{@8?Gt#% zGigiDk9T3e4C)tdY?fMUf5O=E=8T`Fp{bQV|4)>6$n&)Qi}CqTyMakDYlVi?(VYf= zH`*OeG5NkA%IieO%7~%`d-LaQE<0~-asJTv$~m0OkD7KcIA}i#5>d!h(0es&R$OZ9 zniTOpZ#DLxN^?~ybo8l`o!bBTbo#btt)PkiS=Wo+-nwJnCuG2{`+pH%$S=E=7Kd`3 z%iDjwj9k5XU+o1hL2*^Rdz+`-H@&NEaemYHogZ5m3unfxdhzd~)Ji1=3GGLV{!Y#R zvsS)p--;BMm~We2$7`|QTfIhD>%_V#E8ooszAB?}&)9Cx`ej$Gmldn7lP~+C>%dHEX!_6SP>TQNtq36WT&L8>TbtTWe zQ2(EIMQnOb+tEjp`A@H-$p=G8Bk$llXejxGhcOENlU*WPg!oE$65phPwbqLXreW3s)L?eY|Ppvo%Y=eUk2(Ha_;4y zb>W1pSL=c#w&j1;DXr}|Zkuf$8d5$l?;LlbV@#T!Ua!~!=NN_qK9W7v{uB03E4IG0 ze~n0Cr*_`<%IlA-J4L_;VwQ+CP|MWUq z$#yCFs~S(o>54~(CjDnHIG-|8mcb#$Xhk+-!_htEoD5+<)+sSGRBHdbyWEM10i0JH zK;=C{A-LFQC|qbE4$5CXF*{_XKn%@CmogZw7#J8FVxm?R?ks(qb5`{~W5QF;b(Ya{ zUwI#z{&uC5LbzhCvu!79z4V+-+b*qLzEhduQIKOy%H*T7UzjXMRkzc7 z@67fn9p5{Fr=q#fUM~8vMXc$lp!mUOY47g^KL2>vc)DKRheQU4${ndp8@q0Hdlv@3 zmhA4{e%9y_Q-`-{q2L_*>$L@UDl3*3FTDTsGeg6rDeco<8nh~0o%O?M$Ki=kzKf(~ta!n!%FxsA!onZ#zl%1SbJ73b-4(iek#818#C%c~Ti)gL zNN7#rN^QN;+C^)QrM`M}sp1gBXLY^1aqqwNex0@5Io`Ier0Or1y!3%nV$b!c;+_xT4^<8FBE}H42T&^M7)FnCR)9$Vd~X8zCKaa zCn6Oaq(c(1t|d4p8BO{@oyy||y1RFbrOgU={}bx$&e>E^JXfuoA>eb- z3$wp7e>512O}E^2K>yRukeMe%(lW|Vzq;6vnR(Q8!_J$#%db?{d_S|aTe?PqAwbo{ z=;92Qsr$}$a6bxaxjbK{Fft1@UF+VgeE;O)%Y&(QW(`yMwnyah>2iOpGyhU^u)&Yp z;VNsu)2T_1H}1P)&Alq^bZe%!f{1>4Ro7ntE+w%}qyfSTU2&0TtvjJz}U%zwAx_q_RHhJMpTgF3za zzn|SCzl6=+5*(tR_4Qm`b$gE-wNLm_q_?i1%C!0G(tn5MF5L6!rnN};OqI_)^F8BK zZyP=Luc}pAeY#WHV)^x3e?q_Z&5Kbu%)V*4%K9~FOFcepy|vZSCSmDKu`}+n8e%&( zb##~QSmVF^Tb)#}seSPO{(v+C#zM`Xj#-~3H}BXoMQd067PnO#49B{5WYk|^|JTC% z=V_GUqe&c&pTsM|@-qMHzWaUI=J)Mew-V3Ha9^sv_R)ovvUfkfoBDp4rqkS;QS+T% zJe@bg{ov28<1;`0=-PC7<*xZFC##>5mu6g8_f~$%EPKliZ|$Qy+p|TUGaYEjih1Q8 zs~N+Z;G$!JX1~ zp_>jRPpzLY>(3Jfz0IQ2^VXODK328&_CillMu$J?*$>t&VtXVc70~_sb|>@s`L}LO z|K#=TulCJb`}bL8^r=3NagNE7+xx3=*3vF6qxi;~Rd%hDm_xlpEAu!m+1VwpdT23W zV%C}aR_-yU>L*A+Em7mXps2@?z2CboHd2Q(kuS(=v3)%a0!%3fE|uHvnm;-~(d zc)xei#JLe$?1JBJofedGQ^`Ci^jmYtugT1BySTmoF(1g9r0Ny+@kRHC&H`!UM^2Mn z85ka)|10*tD)0LX?!x&}kD7LbfUAoIQ=Q)bUGz!`Ql&uKW>8Aw94n~*AtavH&IW19 znM5}5ftqmBw`IlT#ac(_pR8wS;M7r%`aA9VCfm7BZ|@b+EezYrY_R<$)0xH{C)B#l zuV-%JU2x|i05m$`-md7BR;b&4@cyU^~=rSSR zBlVrfC3>3##T!@!#1H-~zRP}mZhN_v_^-Q@=4Ni<*zhVswq&c_F|X`L*?;_Qt@o=b z*UpZezW2fn$KGXIcbq;}V)f*0^xnENaaGL^_n9u6m2THpF+qRt`n3n;EvoK(@PCtR z;?Vcl{MwX1>RV-Zu4SBC9N4~0kwHPPgPXx;#+O~Q<4U&b_=I^0#owCD;T|I}IqvAw z$1&oYWJ4x))dcOHFneun^Hhy>{x8^zPREoj{;}isMAMuXFP7zeH4WUn{E4k*`Me^Q z%d2~?ox1udjA8X$SVnmzzWd3nNiRKS^;_E!9x2y;a8w7F76eHc*u)eA#~4 zsxv)h+r%l`RxnL}v^YJv&#kP+WA>!?OM0T7{c-VGc}dAOErE@p@S_;Ck;FTJQ(-;J z72)YRZGr3fGEc442n|utE1Y?Hn?~Nr!&(;|M0bP;O}`Q2v+=^RkeZ;#b*J?8QaTt4 zS1LfOma6T}leL&4zCOCsSeG02uOrUC?-D0dD?f#vKglzM$>u)2^Y>NvIp6nT4>!8= ztvmVp@a1ok423fnA`)@1SnIC!tM>h`c(lme;tl`2+nKi)F$he*w7bj9y!v~eRsZ{W zJ4*_i`I#BQykkD8brcKzV|0jFb%(F^U(EM|h0h<(J=a<{{X8?ntC-nOPwmu7oKkt9 zEM+T?PG)PyyZ2uTLu@(j=J;hycqLqHZJa(=@N!JVJ=;K;yEYT&mLye{XGp0sJu*sv zRP^-0mx&u?-+vTjT9ec3y+-g5=cdu>omcOx`7}FyF(it$PdWTz~9z##?v5l&;oxe}6Kid^9xOatup6l;w-$Ul| z=M_TL(&n^oS)}%8((HG-#t~LWjB3nwRxeUbXIO z_Ur3Uuve@1`|;0vc9_{AMnIh5NNU+5r5ktN+_ipXv#Xb$`LrXd)mO`=bamK2x>Vj4 zDmbMnS#@1)FvQ9O)RtFb%0I))(x0hnu%y z$B(y1R>gm;J^kK1v5<3F*PY~vT1*jHg_%1TWFIj#?3g0{yeh~wa7x`}&MuK|Zz(TM z@#kHF^Urn{FTE2mhkHZKBT#?o!m4)+43C10A34QxGbrdWZ14cJAv?fq28M^OY`sd?E3YhHRmnwR=N`5Cl(FUm&gg{|IYdwu`&o0m0rb-dMhy?lk5 zu+$ zdSBRerqf&0ez!5NnYV)jy|8!|7PBp7`ir_x`MQNOZyoVEs(Rt5R3YP$R2j5Z=H1Ho zPXc$%jd==6Jb%6|uu@Q){`Oz-&Fg9HuAjFyFPxhg*dh4HHua7w|NJYW)Aw9Yw$Wbe zn{2kaDR{#DRy?Meulc&!WvcM8EPw)DyN+3dh+;-&^yh`g?@_rKFoFt zRebbFT)dWVYoE}p&DIHD`xz1#Vd*F21ZyFq!lOsKBeDV;O+p0hA9pXVID1%`rK-)N z%cF{SUBsN(*%L%31XQVb z^~lmk?hG3&9$k9-HSd1J`f}?n9NXu}#rW~EfsI(H^k4paT4ru)pc ztt$fJf>9gRZH?TPAyar!{iXGmQm(WI>KohNo`|0FI@Vsz;OZ`S&3VO>`xz1(kF=`( zXJn{}I#w#15T~rCW5v#pknns7L&CpzT1*TLIvWoK<%2r3pwVJ*?+BcR8AP6gx=W8P z;pyk^1@-f<8s1_%$(n1scB=N`xMw z=PHk0OUe=h)qKn5gKEAo<|)Us?E1IKIU;(Q+P?7C)rot;0=;9-dPw zP6zKvYF3tN&;s(9=G3_hCofp3sHgNPF*9JAF4sP-4UfE6?s#F$uQ4&UZuKI^&W}0n zBF~u~8L<{7o~&nxNSd?hj$!QC$v>GKV$x&_6E9jaMELbYFFStBFN9G+@2%)_CI%hx zldH6ZR~dNkoNb4QJ_{eA-}Z zyMj?*`iJsV&={2IEFC6>lD%ge#C&5OnMPfCwd?P}V(VQOB(ndomu0KzE#y?zYuFJY zfH@K+TJv_gxOdDavtCAB@58#SyA|~sc5G47Yx?|r7k{5M|N9cXFT0mocmKQavaHCo z?%6BDl}Zg)mAE}5v|on{PX7_zywGck#ZHOM&x?2bEVepy;QBv<$tv&jUPU`j7jk-L z(!sZv|K9tydGD|02hQwC-fPd$;VoNu@?|?MRtwxG8?iF0I*T z=XW1<<(m|@0(cEwE|vqF3nmlF+uM&@0_)Yk>lXB zjn{tk$aZ?|>9-7FJ1xE!taU3~x2OF@ioadmuV0#vm^L&?7&7b5y|`<~jAoH;?+q2M z{fbks?eI|#71^-VBF|+NM;NSr{+ib=_Hf$e=F_o%^)imICQKE`gf!oqdW7Csc$n3off_0w#$1hExmKS z=T+;4U)`OOH<`ZB;M$nNXPz4XF`578^^r-9I z;p1gsVCWVp%-q5t3!Zk0da;E%3Qol7(wce z38QvNy&i2UpHLQMQ!(p2e?sX|SCjvzt2MK08NbGzIyc#kKjrG&LiM}BZ?;X{tMUHX z4%wM^g&$9Mxu}t6^@2~M+ROZG3gZExu5OWOryqS3U8wI8&k(lrnCf}qlj_0V6E-dK zIrM!=g~DB@;F)V)7u{jA{3`nM#wlmXzDb$A#tYU3Gi;c$a?x-1?6X0x)$09y-+yp0 zg0$D=i0$rR=q%xQKl$TncV$su&gb*aT=3iV^4sDvW44~dHn)B-Y)Ao(toU{p&)-+q zwS!?zQLney^A+lP8#7ic@R+${Md6W$dmbh6YIuI~UDCxc%_{~nuKqQ@{hU{H%BmMB z{rv(B9o=(9y=;`fEUD@IAYpu6SWH|n&r`^=Y~RTnzS03ZxeLV`mI{Fiv6CIAKY9ku z_TIsoa5Ot+%k9b#*}RXFcNQN}-EzspE7&!1xtn{tGc!bsl&%9i0|P^cx3{U@ z_H}dD?tfx0yO1$#?%EpHn41C_+Y6o_@Y;QJ#nr#ki{+;;b7eTKq_^qhqqAR^`HC?n zq^>>sV&06M-TQ?0>j}J^{HfLR`a;g&qL|fpl^Jw4ptk3j3mF@@HVSw%?eU$xH|*iv z#9xn$);?xZ(97-Ue(-1KyXME|4qMOV{+p*-c+=Wrm(H@>MZB{w%Eg~7w{|FJn8tGP z(1nw{N9WF*-}&dH@_L68?158U^Fs8G*(^^!>b+)JXXI_yo&WQG7G9mhY&Kao$wcDD zTv<^r)k}?_PlaLUC$|7 zXusk?mJM$NryCV&if|ZzS7|ce=$vBx<*U&Hi)D{ahK8;zESwy9OEKhWZ(&SuKSP2a zsMR)0?71DdwYK2c(yCtX%BO4mW6m5l6_{?}k<1gVrMHS_W{BW{J00HJukWr+-uv(E zg~-fqAJMsQB-t+C7I2gZa%J#7TQ=v}%}b|!SKSR2(W|)_?Akd+qEg2AQ=o0=6StV6 z=1ymK)|E=uGmbpxGhhc#d`Mbb+Ie>68Ap27s^0VS3n@^op7bcDL3K^Z$F=7+$%=|U zXPX!DbHSohk+~^T>%3Z&3u5m7GQ1Q%X>PmQ*L9(DX1_mHdxfD`NzXX;Q~c31h6K&Y z?xkYWSGQc~GwW#-jc0gf`N(LqT6f_ujrHY>3@ZYdY^E-Km6dvsA>m(F@$yccnv-US zbQvxr{aGflHHEuVu_06pG(iLI@PQ^}Kt&aJXpP}Ws!id{m*BDPh8;bU7^T&-N&gub zY#)m~I;m6hi0?&gkvKybw8v38ONZ&eDPjGsi=z0yv7dkIlk5QMzkb|^ZTPzFnGeUI#{5Wxed zgpb=Zm5Z7ROux_&m85Y})l=DUl6$n#=_}>?MD)KL4`1__G2!5mr7xLE!u#a|=Wsh5 z%2@PzM+MuNVAsgZw;2+>MpG|l=daaYd(mapiMxypVt(L30tN;#%}0k86@%v?z%>i* zHo4I@q=wK-rV>a)C=lEbn&thEnc>TotZnmJ^PY3vUz4_f!n(_A4xBDqvOUNsJ#Op4 zuQhdC4Lf}NAU#QN!{-S1EB0vavpaXZ(3Ma({(N%ojy&}=_t&RlrwNEhlwr2ZLpryL zm=@0~E<71+=9lwqvh~M(S0=AL6SAoBN4|OWd2KnS!bVZF(NnJEQ*0MaB3U9H7Id2* zUZgiu>FGi#nOT)fZ&a+&|2nVZ-T(7O#x?79{J8D-{+Ebi_OmtD({DVLy2V}I_9-YT z?)<~Jd6Q2~{bMvgE_?f`L;`TGC=3V!n zyggCHe061JsqwoxTUX3@e)rs|Nj6i>L;W{L-QyCNzH({TJNdPtzM`?dy0&HmF9x$fcLqWJ#k2aoMSm=W!x!A})%V!xPb=%K2uPRD7@18bq*>A&-|Ct_LiYk2fFsk=a%n{ZG zsp*fT#7oZ_YZ*U!&|bChmr;V#wSUi2t>r6u3O)HIE^Sv+)>}9;Tzq=Pr`wBmsPeCN zVg70s1{1^WjW=-nbqCivyK_LxSZCAT)D``G_7BA&aoFd{~pC?-=8>b*{zG>xvMT3Y)W+sJ-K2!dwN`KOw!Fut2&-MsQTfu zH~eVeq91#O9^VK)rCs?|Oa6QB*E!4n8h)&2d}Ndi?v*rLZT`J9aU!IN*RX>@=SHk6 zsLz4B?*W=F2N#?hJOrmNgN@?2K}K;vlZ4uR+djS7w>>kktv<1?R_1-}&YN26j?LOL zZ)p_s-1*(?>bu@@|yx#Q^q--aDN zzA-GbXYZ|cpL@Lge9W#L2iqALO4pqdU4KFJ=+YJMw`8nOHjgp+#jdEwpskGB*$_Q8 zg?G_bweCgFAHDp#xB2p$nWtYm&+=f_*}cP~`Udaqp7om(uB|wK`JaKre$P0)e`oh= zi>Ozs$tGHFn)P3D?xM@;q5TejHOkJrz7Hr2KlCH?-cM=e>RA>{3VOO--CM*idpt_J zxSW0Z(Z_p*pK5>lcv4Q@;DFKf9Z%Q-0%M+JPoB}W+{rcO-_~^})@gAr4an_!I&b&B zbLW2veii6@81439nTmqS^Eq$d&)sir1nwu#0r!(lLrYv+f^}p&mG#2Ax)N=#8z8~7cxd1l@gC{bG`fKvG%#MWuHZ! z@3NHD-ZY8L>CT~9IWMPQG}v@l<>U4#-9JvJU2cl`nQ}1T;ZJMjZ01kQ%pIp&j(~@5 zW(Ak>N;4cuEfN$Lo6F3Qaja|#dkcfW^qcoWSr{0uUbrPFkjDrgMMexJ3y6bfBNz$| zACzT)R`D(A067iR9w^LQeC+A9t(#4!|6ymiU@h2o?V`N!+hfUF>(-^~M%BM=5Sez5 zJ;JJRqOVx~y6d1O@Pb`}OWO<+%R9p_d@s|H>eUhS{KfC%5~G%9nIWv87mTHAJT;=@ z;^E3e-S@@6cJ#S0E5=T0aawuJql5cE7FzSP)iAX=WB18N_YP)$JM;9*!fP(SyuO9} z5@Lvmu$iS4;{4iu$K*1ZkhXm~b?c-y93WZ>4*E9;+U<0cfpHdH&!Kl?>Quu1QPNcG@go5#|OJPSoKZPe~w z=FN$SUHMg@&wAz~hR%g{H~)PqG+Gdr_}JE0Nv{Fa$%V8)PS|0^PJQjK{S$)YbkAIhy3i~BjEwkw{ z0bQpGeM~>{glg%rF6V66;o}7DKAGmXe_PhYb@Zs8XyiR+hVF{+z`BXsiZxy)A5Qyr z*i-WURolL@iuYQVl(la;K7M|5a-+`FjC^l%3?Z`c*D}d={nk*lJEaWwqL(I&@0&Wo%fm(UQ!$v&uaD`QTffUZ0#dd z@4d5Qe~y{%iK+f#JgIZ)7Fb+g^I@rlxWM$z4p4vVz>>(l5{FyzS=k-Hy{?YaS8nuu zY7k&}WVCvB7XyR9^j%L+{+@R<0Ww>xIm`#eA~Q zWt_XMnXO@JviYT1oTpsh{eAr?+<9-=DfUqBzeUW(2b8+OD>wGKO?KV;QGj91iXAO3 ziB+$6^ppqG*52Oo`J#n8i$lyUVbpP;5Ml9Oyo?HZ+^Tw&myev35o9RL42@xVe!f&* zrd;mc%a|AC-iLKFH@hr$G+|h?X~&cEZ+=#r-C%)B9a zDtqSy=K9Gge^qCyo~RP(ue@Tn!qDlJ>dN&Qp9TN6J(>KChgo;c<%y4fsszs2QKe=( zC;b^{U^WOe=i(vCc;JYVo|fH2R^3PGH5WPNmx;(OI_LQJsNT-+DH|srv4103#ccWW z#KN1C5}1ypvVl`#Hz*|@S$aj$rmVcgiIxCOvN3(o>ALJliZk z!|V}L$7vq;g3+MWerD&^vP=)0xnPF{``2kFGR}9u68pN;_%LY5+j|v9189)@mV)l- zr)wD^rgU)oiZLdXPF%TYSNCoPhufeA^=kK`Y!ge_hGma7nVsbY6_X9FLgHo+u+1~~ zvM8LxnHMZR{r;~z&l%Dj{waSyn_qYNm*O95+|{I=N0rCz$WUp?BIy6eAp^}uk!ia>G5?p zOQ(0Wug;T|=i2*k?xwYic8hd(7fiXn@3ZVf?fw7H7>n!IeVmy-Pn7NRt?c!pJGdV) zfn9TZPDi)FRPp#4!*b^9v072yrLRA9pH8>?Ecu%C(T)8Rb02N2aC>9CZ%0Q&_l9Zp z8-7~SV=FO&9He7^nr_xhJTZ1FQ5ng(q#{C(}rv^{sEYP?^c`qui~?Pg^E zzD=grRKChSN?d&RZN{ys+)g2W1Eu5k#F&;9c_Om5--seyVLk3Rm(UZooS zU;F%95uQ-z7?XHGw$E!>W83!Z+fnoNxBbt_`XYb!|7f-UdGhzkZ-3YOg~jaq@^=0* z<^BIJ=htUG+ut2mV{HBFcmBQ`kKVgj_KTg1xBeS;uP&Esv;CfLi?3heZH4n9_;bH^UARbv$LU8(ucGwoK6YQ5td#zxS^f`0q2NO?U(LABrjumD zW6pH=avh2&+{KrpXvuD*J zhWf7_UD94G^0B-;Wy+xws$VasfBW8k`&g)r_d%8Exm#zi=AI?|qdb^%?h{YJOBdMm zEvDJ28vj%LzH#4czi2<5u6?5Y$(`L2r>ZLV98SnsKIeCde2<# zaO?03U$)$~{5|dH)1&6me~$bW|5$cpX{&$y{}<7}4J)p1*X`O-v*^>dCyzco^470? zUw!{_c8pp5bNPFFDnGxDuixi(#I;+P!@HwwQ+HJn@3ip0DgKXD(`?)8mQG*q>*})i z+TF{$XK$J2u(ac!)87cz;8QuuFND8s*(|uK!`tI@jI&eBGG)EBmEJ<@^RGrlS=Ub0 z%Chvop7mhq-VWz~d}sds_~p6%+y8s_zvgl)>N&Z$9e&tf|L5_eUy&P~MO=HcW5gU{ zS{BFbuZvCTZrRcJ(U1RT}&6ymNcWdT&S3aw(+N4{L7R@_3SD|7}!H30Oz1}YhEkdvOFFAE;mSEw`#vNPobc-jL zW|{|HJNNMG_B~ra=f7<~Z}B+H{@*vgeLGezii!DFbNjg6w~Z>EDoh^U+ImXnU*4~e z6~0zfQBm>l^Zy+ePwjlRHBv3O?c#~)=7B{E)Puc>^rHAQ3Qm51|7=NDS(~fm>P4C} z5B6K+1XqLyDi?ab+i~rE?4o0-w;n0|f0O+-{M+<>f78ldY zs@@{;@}ldyHmE7_0HpuJ5F0% z3n~boxTZ05<+MFPUrk?E*?)STx=AQ%cfz%^vnzycf90)8GqcMJTfMq6^g+b8DO(sO z8UOUr-?EVF$kHd~6?mMR6x}#)nY1pz($xTi%0^(+7+cbBb{^MUXZNGGO zxI4!o$@5f$y}FtZx=|7*|wcx)1z+x>EdPp6}iXSc7W;)NOjZU9TCHj n1``L>P8&CF+<5llxBraZ3*;1>ZWrAEHJdzL{an^LB{Ts5hL}oI literal 15649 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 E0BjnJq5uE@ diff --git a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc index 23f7d690639..05d5554aed0 100644 --- a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc +++ b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc @@ -55,9 +55,9 @@ \note You can also select \uicontrol Edit > \uicontrol {Find/Replace} > \uicontrol {Advanced Find} > \uicontrol {C++ Symbols} to search for - classes, functions, enums, and declarations either from files listed as - part of the project or from all files that are used by the code, such as - include files. + classes, functions, enums, and declarations (including type aliases) either + from files listed as part of the project or from all files that are used by + the code, such as include files. \image qtcreator-search-cpp-symbols.png \endif diff --git a/doc/qtcreator/src/editors/creator-locator.qdoc b/doc/qtcreator/src/editors/creator-locator.qdoc index e351ebc746d..cfd44c19de5 100644 --- a/doc/qtcreator/src/editors/creator-locator.qdoc +++ b/doc/qtcreator/src/editors/creator-locator.qdoc @@ -113,8 +113,9 @@ \li Locating bookmarks (\c {b}). For more information, see \l{Using Bookmarks}. - \li Locating class (\c {c}), enum, and function (\c {m}) definitions in - your project or anywhere referenced from your project (\c {:}) + \li Locating class (\c {c}), enum, function (\c {m}), and type alias + definitions in your project or anywhere referenced from your + project (\c {:}) \endif \li Locating QML methods (\c {m}) From 4b3a7463328b657650da873cd485bfd5ced9c247 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 23 Mar 2021 17:54:06 +0100 Subject: [PATCH 67/71] CMake build: Fix remaining issues with Devel package On Linux (and Windows) we should not create toplevel files (README.md etc) or directories (doc/, scripts/ etc). On macOS, move the whole Devel package contents into the app bundle, because that is installed toplevel in the Qt installers, and we shouldn't even create include/, lib/ or any other directory at the toplevel at all. Since the prefix path must now point to the Resources folder inside the app bundle, adapt build_plugin.py to also accept --qtc-path pointing to the app bundle (Qt Creator.app) itself, and also to the app bundles parent directory. Adapt the Qt Creator plugin project template similarly. Task-number: QTCREATORBUG-25414 Fixes: QTCREATORBUG-25415 Change-Id: Ic756237fb920b54b1ec95d076649ad947b39a7e8 Reviewed-by: Cristian Adam --- CMakeLists.txt | 4 +-- cmake/QtCreatorAPI.cmake | 26 ++++++++++++++----- cmake/QtCreatorAPIInternal.cmake | 13 ++++++++-- cmake/QtCreatorDocumentation.cmake | 5 +++- doc/CMakeLists.txt | 2 +- scripts/build_plugin.py | 8 ++++++ .../wizards/qtcreatorplugin/CMakeLists.txt | 8 ++++++ .../wizards/qtcreatorplugin/README.md | 7 ++--- src/CMakeLists.txt | 10 +++---- src/app/CMakeLists.txt | 2 +- src/libs/CMakeLists.txt | 2 +- 11 files changed, 64 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d1b2a39d3d..cc1b3be88bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,7 +162,7 @@ install( qtcreator.pri qtcreatordata.pri qtcreator_ide_branding.pri - DESTINATION include + DESTINATION ${IDE_HEADER_INSTALL_PATH} COMPONENT Devel EXCLUDE_FROM_ALL ) install( @@ -171,7 +171,7 @@ install( src/qtcreatorplugin.pri src/qtcreatortool.pri src/rpath.pri - DESTINATION include/src + DESTINATION ${IDE_HEADER_INSTALL_PATH}/src COMPONENT Devel EXCLUDE_FROM_ALL ) diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index aefae6f7298..921106a3f6e 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -18,6 +18,9 @@ set(IDE_DATA_PATH "${_IDE_DATA_PATH}") # The IDE data path (rel set(IDE_DOC_PATH "${_IDE_DOC_PATH}") # The IDE documentation path (relative to CMAKE_INSTALL_PREFIX). set(IDE_BIN_PATH "${_IDE_BIN_PATH}") # The IDE bin path (relative to CMAKE_INSTALL_PREFIX). +set(IDE_HEADER_INSTALL_PATH "${_IDE_HEADER_INSTALL_PATH}") +set(IDE_CMAKE_INSTALL_PATH "${_IDE_CMAKE_INSTALL_PATH}") + file(RELATIVE_PATH RELATIVE_PLUGIN_PATH "/${IDE_BIN_PATH}" "/${IDE_PLUGIN_PATH}") file(RELATIVE_PATH RELATIVE_LIBEXEC_PATH "/${IDE_BIN_PATH}" "/${IDE_LIBEXEC_PATH}") file(RELATIVE_PATH RELATIVE_DATA_PATH "/${IDE_BIN_PATH}" "/${IDE_DATA_PATH}") @@ -93,6 +96,14 @@ function(qtc_output_binary_dir varName) endif() endfunction() +function(qtc_source_dir varName) + if (QTC_MERGE_BINARY_DIR) + set(${varName} ${QtCreator_SOURCE_DIR} PARENT_SCOPE) + else() + set(${varName} ${PROJECT_SOURCE_DIR} PARENT_SCOPE) + endif() +endfunction() + function(add_qtc_library name) cmake_parse_arguments(_arg "STATIC;OBJECT;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;UNVERSIONED;FEATURE_INFO" "DESTINATION;COMPONENT;SOURCES_PREFIX;BUILD_DEFAULT" @@ -208,7 +219,7 @@ function(add_qtc_library name) "$" PUBLIC "$" - "$" + "$" ) endif() @@ -463,7 +474,7 @@ function(add_qtc_plugin target_name) "$" PUBLIC "$" - "$" + "$" ) set(plugin_dir "${IDE_PLUGIN_PATH}") @@ -531,18 +542,18 @@ function(add_qtc_plugin target_name) # export of external plugins install(EXPORT ${export} FILE ${export}Targets.cmake - DESTINATION lib/cmake/${export} + DESTINATION ${IDE_CMAKE_INSTALL_PATH}/${export} COMPONENT Devel EXCLUDE_FROM_ALL NAMESPACE QtCreator:: ) include(CMakePackageConfigHelpers) configure_package_config_file(${_THIS_MODULE_BASE_DIR}/Config.cmake.in "${CMAKE_BINARY_DIR}/cmake/${export}Config.cmake" - INSTALL_DESTINATION lib/cmake/${export} + INSTALL_DESTINATION ${IDE_CMAKE_INSTALL_PATH}/${export} ) install( FILES ${CMAKE_BINARY_DIR}/cmake/${export}Config.cmake - DESTINATION lib/cmake/${export} + DESTINATION ${IDE_CMAKE_INSTALL_PATH}/${export} COMPONENT Devel EXCLUDE_FROM_ALL ) export(EXPORT ${export} @@ -971,12 +982,13 @@ function(qtc_add_public_header header) set(header "${CMAKE_CURRENT_SOURCE_DIR}/${header}") endif() + qtc_source_dir(qtcreator_source_dir) get_filename_component(source_dir ${header} DIRECTORY) - file(RELATIVE_PATH include_dir_relative_path ${PROJECT_SOURCE_DIR} ${source_dir}) + file(RELATIVE_PATH include_dir_relative_path ${qtcreator_source_dir} ${source_dir}) install( FILES ${header} - DESTINATION "include/${include_dir_relative_path}" + DESTINATION "${IDE_HEADER_INSTALL_PATH}/${include_dir_relative_path}" COMPONENT Devel EXCLUDE_FROM_ALL ) endfunction() diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 15cdb05f9a3..8335ae34578 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -37,7 +37,7 @@ if (APPLE) set(_IDE_APP_PATH ".") set(_IDE_APP_TARGET "${IDE_DISPLAY_NAME}") - set(_IDE_OUTPUT_PATH "${_IDE_APP_PATH}/${_IDE_APP_TARGET}.app/Contents") + set(_IDE_OUTPUT_PATH "${_IDE_APP_TARGET}.app/Contents") set(_IDE_LIBRARY_BASE_PATH "Frameworks") set(_IDE_LIBRARY_PATH "${_IDE_OUTPUT_PATH}/${_IDE_LIBRARY_BASE_PATH}") @@ -46,6 +46,9 @@ if (APPLE) set(_IDE_DATA_PATH "${_IDE_OUTPUT_PATH}/Resources") set(_IDE_DOC_PATH "${_IDE_OUTPUT_PATH}/Resources/doc") set(_IDE_BIN_PATH "${_IDE_OUTPUT_PATH}/MacOS") + + set(_IDE_HEADER_INSTALL_PATH "${_IDE_DATA_PATH}/Headers/qtcreator") + set(_IDE_CMAKE_INSTALL_PATH "${_IDE_DATA_PATH}/lib/cmake") elseif(WIN32) set(_IDE_APP_PATH "bin") set(_IDE_APP_TARGET "${IDE_ID}") @@ -57,6 +60,9 @@ elseif(WIN32) set(_IDE_DATA_PATH "share/qtcreator") set(_IDE_DOC_PATH "share/doc/qtcreator") set(_IDE_BIN_PATH "bin") + + set(_IDE_HEADER_INSTALL_PATH "include/qtcreator") + set(_IDE_CMAKE_INSTALL_PATH "lib/cmake") else () include(GNUInstallDirs) set(_IDE_APP_PATH "${CMAKE_INSTALL_BINDIR}") @@ -69,6 +75,9 @@ else () set(_IDE_DATA_PATH "${CMAKE_INSTALL_DATAROOTDIR}/qtcreator") set(_IDE_DOC_PATH "${CMAKE_INSTALL_DATAROOTDIR}/doc/qtcreator") set(_IDE_BIN_PATH "${CMAKE_INSTALL_BINDIR}") + + set(_IDE_HEADER_INSTALL_PATH "include/qtcreator") + set(_IDE_CMAKE_INSTALL_PATH "lib/cmake") endif () file(RELATIVE_PATH _PLUGIN_TO_LIB "/${_IDE_PLUGIN_PATH}" "/${_IDE_LIBRARY_PATH}") @@ -192,7 +201,7 @@ function(set_public_includes target includes) file(RELATIVE_PATH include_dir_relative_path ${PROJECT_SOURCE_DIR} ${inc_dir}) target_include_directories(${target} PUBLIC $ - $ + $ ) endforeach() endfunction() diff --git a/cmake/QtCreatorDocumentation.cmake b/cmake/QtCreatorDocumentation.cmake index b2cf79224e2..49bf3d2d02d 100644 --- a/cmake/QtCreatorDocumentation.cmake +++ b/cmake/QtCreatorDocumentation.cmake @@ -219,7 +219,10 @@ function(qtc_docs_dir varName) set(${varName} "${QtCreator_SOURCE_DIR}/doc" PARENT_SCOPE) elseif(QtCreatorDocumentation_LIST_DIR MATCHES /lib/cmake/QtCreator$) # Dev package - set(${varName} "${QtCreatorDocumentation_LIST_DIR}/../../../doc" PARENT_SCOPE) + file(RELATIVE_PATH relative_header_path "/${IDE_CMAKE_INSTALL_PATH}/QtCreator" "/${IDE_HEADER_INSTALL_PATH}") + set(${varName} + "${QtCreatorDocumentation_LIST_DIR}/${relative_header_path}/doc" + PARENT_SCOPE) else() message(FATAL_ERROR "Could not find qtc_docs_dir") endif() diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 8425aa50241..077d181493d 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -53,7 +53,7 @@ if(WITH_ONLINE_DOCS) endif() install(DIRECTORY config - DESTINATION doc + DESTINATION ${IDE_HEADER_INSTALL_PATH}/doc COMPONENT Devel EXCLUDE_FROM_ALL ) diff --git a/scripts/build_plugin.py b/scripts/build_plugin.py index 8ec5eb44641..c70d6051283 100755 --- a/scripts/build_plugin.py +++ b/scripts/build_plugin.py @@ -69,6 +69,14 @@ def build(args, paths): if not os.path.exists(paths.result): os.makedirs(paths.result) prefix_paths = [os.path.abspath(fp) for fp in args.prefix_paths] + [paths.qt_creator, paths.qt] + if common.is_mac_platform(): + # --qtc-path may be + # "/path/Qt Creator.app/Contents/Resources", + # "/path/Qt Creator.app", or + # "/path", + # so add some variants to the prefix path + prefix_paths += [os.path.join(paths.qt_creator, 'Contents', 'Resources'), + os.path.join(paths.qt_creator, 'Qt Creator.app', 'Contents', 'Resources')] prefix_paths = [common.to_posix_path(fp) for fp in prefix_paths] separate_debug_info_option = 'ON' if args.with_debug_info else 'OFF' cmake_args = ['cmake', diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt index d9a268a634d..b27b902e028 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt @@ -1,7 +1,15 @@ cmake_minimum_required(VERSION 3.10) # Remove when sharing with others. +@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources')} +list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}/Qt Creator.app/Contents/Resources") +@else + @if %{JS: Util.isDirectory('%{QtCreatorBuild}/Contents/Resources')} +list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}/Contents/Resources") + @else list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}") + @endif +@endif project(%{PluginName}) diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/README.md b/share/qtcreator/templates/wizards/qtcreatorplugin/README.md index bdd9b8a67d8..035b6c5c885 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/README.md +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/README.md @@ -7,9 +7,10 @@ Create a build directory and run cmake -DCMAKE_PREFIX_PATH= -DCMAKE_BUILD_TYPE=RelWithDebInfo cmake --build . -where `` is the relative or absolute path to a Qt Creator build directory, or to -a combined binary and development package, and `` is the relative or absolute -path to this plugin directory. +where `` is the relative or absolute path to a Qt Creator build directory, or to a +combined binary and development package (Windows / Linux), or to the `Qt Creator.app/Contents/Resources/` +directory of a combined binary and development package (macOS), and `` is the +relative or absolute path to this plugin directory. ## How to Run diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f8223319650..799d8ef68c9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ add_library(app_version INTERFACE) target_include_directories(app_version INTERFACE $ - INTERFACE $) + INTERFACE $) install(TARGETS app_version EXPORT QtCreator) add_subdirectory(libs) @@ -16,20 +16,20 @@ install( ${PROJECT_SOURCE_DIR}/HACKING ${PROJECT_SOURCE_DIR}/LICENSE.GPL3-EXCEPT ${PROJECT_SOURCE_DIR}/README.md - DESTINATION ./ + DESTINATION ${IDE_DATA_PATH} COMPONENT Devel EXCLUDE_FROM_ALL ) install( DIRECTORY ${PROJECT_SOURCE_DIR}/scripts - DESTINATION ./ + DESTINATION ${IDE_DATA_PATH} COMPONENT Devel EXCLUDE_FROM_ALL USE_SOURCE_PERMISSIONS ) install(EXPORT QtCreator - DESTINATION "lib/cmake/QtCreator" + DESTINATION ${IDE_CMAKE_INSTALL_PATH}/QtCreator COMPONENT Devel EXCLUDE_FROM_ALL NAMESPACE QtCreator:: FILE QtCreatorTargets.cmake @@ -106,6 +106,6 @@ install( ${PROJECT_SOURCE_DIR}/cmake/QtcSeparateDebugInfo.cmake ${PROJECT_SOURCE_DIR}/cmake/QtcSeparateDebugInfo.Info.plist.in ${CMAKE_BINARY_DIR}/cmake/QtCreatorConfig.cmake - DESTINATION lib/cmake/QtCreator + DESTINATION ${IDE_CMAKE_INSTALL_PATH}/QtCreator COMPONENT Devel EXCLUDE_FROM_ALL ) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 83695baf6ca..b08211cf573 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -2,7 +2,7 @@ configure_file(app_version.h.cmakein app_version.h ESCAPE_QUOTES) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/app_version.h - DESTINATION include/src/app + DESTINATION ${IDE_HEADER_INSTALL_PATH}/src/app COMPONENT Devel EXCLUDE_FROM_ALL ) diff --git a/src/libs/CMakeLists.txt b/src/libs/CMakeLists.txt index bdcd9aabc9a..7907d8272af 100644 --- a/src/libs/CMakeLists.txt +++ b/src/libs/CMakeLists.txt @@ -28,7 +28,7 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/qlitehtml/src/CMakeLists.txt) set(QLITEHTML_EXPORT QtCreator) set(QLITEHTML_DEVEL_COMPONENT Devel) set(QLITEHTML_DEVEL_EXCLUDE_FROM_ALL ON) - set(QLITEHTML_HEADER_PATH "include/src/lib/qlitehtml") + set(QLITEHTML_HEADER_PATH "${IDE_HEADER_INSTALL_PATH}/src/lib/qlitehtml") add_subdirectory(qlitehtml/src) endif() if(TARGET qlitehtml) From 2ce76937d422cb35812977cfeab65312f830b14d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 25 Mar 2021 13:45:37 +0100 Subject: [PATCH 68/71] macOS: Fix compile warning warning: 'NSCompositeCopy' is deprecated: first deprecated in macOS 10.12 [-Wdeprecated-declarations] Change-Id: I471b7156e3d3111fbffd6d7a1ff99e8e847af7fe Reviewed-by: Vikas Pachdha Reviewed-by: Christian Stenger --- .../coreplugin/progressmanager/progressmanager_mac.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/progressmanager/progressmanager_mac.mm b/src/plugins/coreplugin/progressmanager/progressmanager_mac.mm index 0541a8441a5..3cbd811dd22 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager_mac.mm +++ b/src/plugins/coreplugin/progressmanager/progressmanager_mac.mm @@ -91,9 +91,9 @@ static ApplicationProgressView *sharedProgressView = nil; Q_UNUSED(rect) NSRect boundary = [self bounds]; [[NSApp applicationIconImage] drawInRect:boundary - fromRect:NSZeroRect - operation:NSCompositeCopy - fraction:1.0]; + fromRect:NSZeroRect + operation:NSCompositingOperationCopy + fraction:1.0]; NSRect progressBoundary = boundary; progressBoundary.size.height *= 0.13; progressBoundary.size.width *= 0.8; From 94ad31be139877f6a97f55df8658b98bc9fa50c7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 6 Apr 2021 14:11:32 +0200 Subject: [PATCH 69/71] QmlDesigner: Add more info to the DebugView Change-Id: I5d50fa19ed4993cb97992bad5d6068902e288a1c Reviewed-by: Thomas Hartmann --- .../components/debugview/debugview.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/debugview/debugview.cpp b/src/plugins/qmldesigner/components/debugview/debugview.cpp index a51283bb543..c4dd86c44e7 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugview.cpp @@ -163,8 +163,21 @@ void DebugView::nodeIdChanged(const ModelNode &node, const QString &newId, const } } -void DebugView::propertiesAboutToBeRemoved(const QList & /*propertyList*/) +void DebugView::propertiesAboutToBeRemoved(const QList &propertyList) { + if (isDebugViewEnabled()) { + QTextStream message; + QString string; + message.setString(&string); + for (const AbstractProperty &property : propertyList) { + message << property; + if (property.isNodeAbstractProperty()) + message << " is NodeAbstractProperty"; + if (property.isDefaultProperty()) + message << " is DefaultProperty"; + } + log("::propertiesAboutToBeRemoved:", string); + } } void DebugView::variantPropertiesChanged(const QList &propertyList, From 3da99f783296f32051b36e12b4d17bba76db4cb4 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 30 Mar 2021 17:56:02 +0200 Subject: [PATCH 70/71] CMakePM: Filter out utility targets from target configuration list In the build target list there is no reason to have _autogen or _autogen_timestamps targets. Also do not sort the target list, so that the special targets stay at top (all, clean, install etc) Change-Id: I3107150bb40d68cc95246d4d09abc300a6e3d3fc Reviewed-by: Eike Ziller --- src/plugins/cmakeprojectmanager/cmakebuildstep.cpp | 2 -- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 5ac0e381676..90b7bd7db06 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -532,8 +532,6 @@ void CMakeBuildStep::recreateBuildTargetsModel() if (idx != -1) m_buildTargets[idx] = QString("INSTALL"); } - - targetList.sort(); targetList.removeDuplicates(); addItem(QString(), true); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 87a552a2c7f..a94bd9cc1ba 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1051,7 +1051,11 @@ const QList CMakeBuildSystem::appTargets() const QStringList CMakeBuildSystem::buildTargetTitles() const { - return transform(m_buildTargets, &CMakeBuildTarget::title); + auto nonUtilityTargets = filtered(m_buildTargets, [this](const CMakeBuildTarget &target){ + return target.targetType != UtilityType || + CMakeBuildStep::specialTargets(usesAllCapsTargets()).contains(target.title); + }); + return transform(nonUtilityTargets, &CMakeBuildTarget::title); } const QList &CMakeBuildSystem::buildTargets() const From a8d9fb0e6e87f1ad4f16cb5690271f1d85a95776 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 6 Apr 2021 10:41:04 +0200 Subject: [PATCH 71/71] Update qbs submodule To HEAD of 1.19 branch. Change-Id: Ic26d07818b5e37f6726b80d1790e06e240b4d4b5 Reviewed-by: Richard Weickelt Reviewed-by: Ivan Komissarov --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index a5c9fa92c86..44ef0344723 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit a5c9fa92c86982e0260f691ea27b790748851db6 +Subproject commit 44ef034472337abdb894f76f593da6648f9782d5

F4L^?u*-=7c1)T*7G~}!h%MQ=|@Ep1HXf2ZKM=+ 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 diff --git a/doc/qtdesignstudio/images/studio-flow-wildcard-properties.png b/doc/qtdesignstudio/images/studio-flow-wildcard-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..21ec962071cc2873dd27363bad5e851e2210fb39 GIT binary patch literal 19196 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 AtN;K2 literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/src/qtdesignstudio-app-flows.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-app-flows.qdoc index 9dc01844d2c..68b3e65a65f 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-app-flows.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-app-flows.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -26,15 +26,15 @@ /*! \page studio-app-flows.html \previouspage quick-uis.html - \nextpage quick-components.html + \nextpage studio-flow-view.html \title Designing Application Flows - You can design the application flow in the form of a \e {schematic diagram} - that shows all significant components of an application UI and their + You can design an application in the form of a \e {schematic diagram} + that shows all significant components of the application UI and their interconnections by means of symbols. This results in an interactive prototype that can be clicked through to simulate the user experience of - the application. The QML code is created in the background and can be used + the application. Code is created in the background and can be used as the base of the production version of the application. \image studio-flow-view.png "Application flow in Form Editor" @@ -44,25 +44,63 @@ lines} that connect them, thus illustrating the possible user pathways through the UI. You use \e {action areas} as starting points for transition lines. You can attach effects to transition lines, such as fade or push, - to determine what users see when one screen changes into another. + to determine what users see when one flow item changes into another. You can use \e {flow decisions} to set up alternative pathways between - screens in the UI. For example, if user input determines which screen + flow items in the UI. For example, if user input determines which flow item should open next, you can test the different scenarios in the prototype - by having a dialog pop up, where you can select which screen to show next. + by having a dialog pop up where you can select which flow item to show next. Especially on mobile and embedded platforms, the application might need to react to external events from the platform, such as notifications or other applications requiring the users' attention. You can use \e {flow wildcards} - to determine the priority of screens by whitelisting or blacklisting them. + to determine the priority of flow items by adding them to positive and + negative lists. - \section1 Creating Flows + To design application flows: + + \image studio-flow-steps.png "Designing application flows" + + \list 1 + \li Use a project wizard template to add a \uicontrol {Flow View} + component, as described in \l{Adding Flow Views}. + \li Use a project wizard template to add a \uicontrol {Flow Item} + component for each screen in the UI, as described in + \l{Adding Flow Items}. + \li Use context menu commands to add action areas and transitions, + as described in \l{Adding Action Areas and Transitions}. + \li Use context menu commands to apply effects to transitions, + as described in \l{Applying Effects to Transitions}. + \li When you are ready for production, use the event list simulator + to replace transition lines with connections to real signals + from UI controls, as described in \l{Simulating Events}. + \li To set up alternative pathways between flow items, use + \uicontrol {Flow Decision} components from \l Library, as + described in \l{Simulating Conditions}. + \li Use \l{Adding States}{states} in flows to modify the appearance + of components on screens in response to user interaction, as + described in \l{Applying States in Flows}. + \li Use \uicontrol {Flow Wildcard} components from \uicontrol Library + to prioritize events from other applications and to stop some + screens from appearing on others, as described in + \l{Reacting to External Events}. + \endlist +*/ + +/*! + \page studio-flow-view.html + \previouspage studio-app-flows.html + \nextpage studio-flow-item.html + + \title Adding Flow Views You can add a flow view to an existing project or create a new project - for it, as described in \l {Creating Projects}. To create the flow - view, select \uicontrol File > \uicontrol {New File or Project} > - \uicontrol {Files and Classes} > \uicontrol {Qt Quick Files} > - \uicontrol {Flow View} and follow the instructions of the wizard. + for it, as described in \l {Creating Projects}. + + To create the flow view, select \uicontrol File > + \uicontrol {New File or Project} > \uicontrol {Files and Classes} > + \uicontrol {Qt Quick Files} > \uicontrol {Flow View} + and follow the instructions of the wizard. You only need to select the \uicontrol {Use event simulator} check box if you want to add an event simulator to the flow view. @@ -71,26 +109,89 @@ the items in the flow: action areas, transition lines, decisions, and wildcards. You can change the global settings for all items by editing flow view properties, or you can select an individual action area or - transition line and change the appearance of just that item, including + transition line and change the appearance of just that component, including the color, line thickness, dotted or solid lines, and even the curve of - the connections. This enables you to add extra semantics to the design + the line. This enables you to add extra semantics to the design of the flow diagram itself. - \section1 Adding Flow Items + You can \l{Adding Flow Items}{add flow items} to the flow view to design + the UI. - If you imported your screen designs from a design tool as individual - components (\e {.ui.qml} files), you can use them as content for flow - items. If you are building your UI from scratch in \QDS, you must first - add components to the flow items to create the screens as you would - any QML components. For more information, see \l {Creating Components}. - The flow items that you attach the components to are listed under - \uicontrol {My QML Components}. + \section1 Flow View Properties + + You can specify basic properties for a \uicontrol {Flow View} component + in the \l {Type}{Component}, \l {2D Geometry}{Geometry}, and + \l Visibility groups. + + \image studio-flow-view-properties.png "Flow View component properties" + + To specify the \uicontrol {Flow Item} that is currently visible in the + flow view, set its index in the \uicontrol {Current index} field. + + You can use the \l{Picking Colors}{color picker} to set colors for: + + \list + \li Transition lines + \li Area outlines + \li Area fills + \li Block items + \endlist + + You can set some additional global properties for drawing transition lines: + + \image studio-flow-view-properties-transition.png "Flow View transition properties" + + \list + \li In the \uicontrol {Type} field, select \uicontrol Bezier to draw + transition lines as bezier curves. + \li In the \uicontrol {Radius} field, specify the corner radius for + default curves. + \li In the \uicontrol {Bezier factor} field, specify the factor that + modifies the positions of the control points used for bezier curves. + \endlist + + For more information about changing the appearance of a particular action + area or transition line, see \l{Flow Action Area Properties} and + \l{Flow Transition Properties}. + + In the \uicontrol Layout tab, you can use \l{Setting Anchors and Margins} + {anchors} to position the component. + + In the \uicontrol Advanced tab, you can manage the more + \l{Specifying Developer Properties}{advanced properties} + of components. +*/ + +/*! + \page studio-flow-item.html + \previouspage studio-flow-view.html + \nextpage studio-flow-action-area.html + + \title Adding Flow Items + + After you create a \l{Adding Flow Views}{Flow View} component, you can + use a project wizard template to add a \uicontrol {Flow Item} component + for each screen in the UI. + + If you \l{Importing 2D Assets}{imported} your screen designs from a + design tool as individual \l{glossary-component}{components} + (\e {.ui.qml} files), you can use them as content for flow items. + The imported components are listed in \l Library > \uicontrol Components + > \uicontrol {My Components}. + + If you are building your UI from scratch in \QDS, you must first add + components to the flow items to create the screens as you would any + components. For more information, see \l {Creating Components}. The + flow items that you attach the components to are listed under + \uicontrol {My Components}. + + \image studio-flow-item.png "Custom Flow Item in Library" \note You must use the wizard to create the flow items. After you create a flow view, the \uicontrol {Flow View} section becomes visible in - \uicontrol Library. It contains a \uicontrol {Flow Item} type that you - can use to apply states to flow items, and that you should use solely for - that purpose. + \uicontrol Library. It contains a \uicontrol {Flow Item} component that + you can use to \l{Applying States in Flows}{apply states to flow items}, + and that you should use solely for that purpose. To add flow items: @@ -101,136 +202,329 @@ to create flow items for each screen in the UI. \li Add content to the flow item in one of the following ways: \list - \li Drag and drop components to a flow item in - \uicontrol {Form Editor} or \uicontrol Navigator and - edit their properties in \uicontrol Properties. + \li Drag and drop components from \l Library to a flow + item in \l {Form Editor} or \l Navigator. \li Drag a screen from \uicontrol Library > - \uicontrol {My QML Components} to a flow item in + \uicontrol {My Components} to a flow item in \uicontrol {Form Editor} or \uicontrol Navigator. \endlist - \li In \uicontrol Properties, edit the properties globally for all - flow items, action areas, or transition lines in the flow view. + \li In \l Properties, edit the properties of each flow item. \endlist - To include another flow view into a flow view, select the \e {.ui.qml} file - that specifies the flow view in the \uicontrol {Loader source} field in - \uicontrol Properties. - You can now drag the flow items from \uicontrol Library > - \uicontrol {My QML Components} to the flow view in \uicontrol {Form Editor} - or \uicontrol Navigator. When you have all the screens in place, you can - add action areas to them to create transitions between them. + \uicontrol {My Components} to the flow view in \uicontrol {Form Editor} + or \uicontrol Navigator. When you have all the flow items in place, you can + \l{Adding Action Areas and Transitions}{add action areas} to them to create + transitions between them. - \section1 Adding Action Areas and Transitions + \section1 Flow Item Properties + + You can specify basic properties for a \uicontrol {Flow Item} component + in the \l {Type}{Component}, \l {2D Geometry}{Geometry}, and + \l Visibility groups. + + \image studio-flow-item-properties.png "Flow Item properties" + + The \uicontrol {State change target} and \uicontrol {Target state} + properties are used to \l{Applying States in Flows}{apply states} + in flows. + + To include another flow view into a flow view, select the UI file (.ui.qml) + that specifies the flow view in the \uicontrol {Loader source} field. + + By default, transitions are drawn from action areas to the target flow item. + To draw the transitions from the edges of flow items instead, select the + \uicontrol {Join lines} check box. + + In the \uicontrol Layout tab, you can use \l{Setting Anchors and Margins} + {anchors} to position the component. + + In the \uicontrol Advanced tab, you can manage the more + \l{Specifying Developer Properties}{advanced properties} of components. +*/ + +/*! + \page studio-flow-action-area.html + \previouspage studio-flow-item.html + \nextpage studio-flow-effects.html + + \title Adding Action Areas and Transitions \e {Action areas} can act as clickable areas that initiate transitions - between screens or they can create connections to any signal from any - component in a flow item. For example, you could connect an action - to the \c onPressed signal of a button in your screen. + between flow items or they can \l{Connecting Components to Signals} + {create connections} to any signal from any component in a + \l{Adding Flow Items}{flow item}. For example, you could connect an + action to the \c onPressed signal of a button in your flow item to + determine what should happen when users press the button. - Typically, a screen can be connected to several other screens in the flow, - with two-way connections. To avoid clutter, you can set an action area as - \e {go back}, instead of adding explicit transition lines to and from - every potentially connected screen. When the \uicontrol {Go back} option is - enabled, the transition will always take the user back to the previous - screen. + \image studio-flow-action-area.png "Flow Action Area in Form Editor" + + You can select the type of the mouse or touch input to use for triggering + events, such as click, double-click, flick, pinch, or press. + + Typically, a flow item can be connected to several other flow items in the + flow with two-way connections. To avoid clutter, you can set an action area + as \e {go back} instead of adding explicit transition lines to and from + every potentially connected flow item. When the \uicontrol {Go back} option + is enabled, the transition will always take the user back to the previous + flow item. + + You can specify the appearance of each action area or transition line, + including the color, line thickness, dotted or solid lines, and even + the curve of the transition lines. You can change some of these properties + globally, as instructed in \l{Flow View Properties}. To create action areas: \list 1 - \li Right-click the flow item in \uicontrol {Form Editor} and select - \uicontrol {Flow} > \uicontrol {Create Flow Action} in the context - menu. - \li Drag the action area to the screen control that you want to connect - to the other screen. For example, to a button that opens another - screen when clicked. + \li Right-click the flow item in \l {Form Editor} and select + \uicontrol {Flow} > \uicontrol {Create Flow Action} in + the context menu. + \li Drag the action area to the UI control that you want to connect + to the other flow item. For example, to a button that opens another + flow item when clicked. \li Double-click the action area and drag the transition line to the flow item you want to connect to. - \li In \uicontrol Properties, modify the properties of the action area + \li In \l Properties, modify the properties of the action area and transition line. \endlist To preview the flow, select the \inlineimage live_preview.png - (\uicontrol {Show Live Preview}) button on the \uicontrol {Form Editor} - toolbar or press \key {Alt+P}. + (\uicontrol {Show Live Preview}) button on the Design mode + \l{Summary of Main Toolbar Actions}{toolbar} or press \key {Alt+P}. - \section1 Applying Effects to Transitions + \section1 Common Properties - You can apply effects, such as fade, move, or push to transitions. A fade - effect makes the first screen appear to fade out, while the next screen - fades in. A move effect makes the second screen appear to move in over the - first screen, while the push effect appears to make a screen push out the - previous one. You can also design and use custom effects. + You can specify basic properties for \uicontrol {Flow Action Area} + and \uicontrol {Flow Transition} components in the \l {Type}{Component}, + \l {2D Geometry}{Geometry}, and \l Visibility groups. - The transition direction determines the direction the new screen appears + You can use the \l{Picking Colors}{color picker} to set line and fill + color. + + In the \uicontrol Layout tab, you can use \l{Setting Anchors and Margins} + {anchors} to position the component. + + In the \uicontrol Advanced tab, you can manage the more + \l{Specifying Developer Properties}{advanced properties} of components. + + \section1 Flow Action Area Properties + + \image studio-flow-action-area-properties.png "Flow Action Area properties" + + You can specify some additional properties for action areas: + + \list + \li Select the \uicontrol {Go back} check box to specify that the + transition will always take the user back to the previous flow item. + \li In the \uicontrol {Event IDs} field, specify the IDs of the + events to connect to, such as mouse, touch or keyboard events. + \li In the \uicontrol {Action type} field, select the type of the + mouse or touch input to use for triggering events. + \li In the \uicontrol {Line width} field, set the width of the + action area outline. + \li Select the \uicontrol {Dashed line} check box to draw a dashed + action area outline. + \li Select the \uicontrol Enabled check box to enable interaction + with the action area during preview. + \endlist + + \section1 Flow Transition Properties + + You can specify some additional properties for transitions between + \l{Adding Flow Items}{flow items}: + + \image studio-flow-transition-properties.png "Flow Transition properties" + + \list + \li Select the \uicontrol Condition checkbox to activate the + transition. You can select \inlineimage icons/action-icon.png + to \l{Adding Bindings Between Properties}{bind} a condition + to the transition. + \li In the \uicontrol Question field, enter the text that will appear + next to the transition line. If the transition represents the + connection to a \uicontrol {Flow Decision} component, the + text will also be visible in the selection dialog that opens when + the \l{Simulating Conditions}{condition} is triggered. + \li In the \uicontrol {Event IDs} field, specify the IDs of the + events to connect to, such as mouse, touch or keyboard events. + \li In the \uicontrol From and \uicontrol To fields, select the + flow item where the transition starts and the one where it + ends. + \endlist + + You can specify the following properties to change the appearance of + transition lines in \l{Form Editor}: + + \image studio-flow-transition-line-properties.png "Flow Transition Line properties" + + \list + \li In the \uicontrol {Line width} field, set the width of the + transition line. + \li In the \uicontrol {In-offset}, \uicontrol {Out-offset}, and + \uicontrol {Break-offset} fields, set the start or end point of a + transition line or a break to the specified offset. This enables + you to move them up and down or left and right. + \li Select the \uicontrol {Dashed line} check box to draw a dashed line. + \li In the \uicontrol Type field, select \uicontrol Bezier to draw + transition lines as bezier curves. + \li In the \uicontrol Radius field, specify the corner radius for + default curves. + \li In the \uicontrol {Bezier factor} field, specify the factor that + modifies the positions of the control points used for a bezier + curve. + \li In the \uicontrol {Label position} field, set the position of + the value of the \uicontrol Question field in respect to the + transition start point. + \li Select the \uicontrol {Label flip side} check box to move the + \uicontrol Question value to the opposite side of the transition + line. + \endlist +*/ + +/*! + \page studio-flow-effects.html + \previouspage studio-flow-action-area.html + \nextpage studio-flow-events.html + + \title Applying Effects to Transitions + + You can apply effects, such as fade, move, or push to + \l{Adding Action Areas and Transitions}{transitions} between + \l{Adding Flow Items}{flow items}. A fade effect makes the first + flow item appear to fade out, while the next flow item fades in. + A move effect makes the second flow item appear to move in over the + first flow item, while the push effect appears to make a flow item + push out the previous one. You can also design and use custom effects. + + The transition direction determines the direction the new flow item appears from: left, right, top, bottom. You can set the duration of the effect and \l{Editing Easing Curves}{attach an easing curve} to the effect. To add effects: \list 1 - \li Select a transition line in \uicontrol {Form Editor}. + \li Select a transition line in \l {Form Editor}. \li In the context menu, select \uicontrol {Flow} > \uicontrol {Assign Flow Effects}, and then select the effect to apply. - \li In \uicontrol Properties, modify the properties of the effect. + \li In \l Properties, modify the properties of the effect. \endlist - To edit effect properties, select a transition, and then select + To edit effect properties later, select a transition, and then select \uicontrol {Flow} > \uicontrol {Select Effect} in the context menu. - \section1 Simulating Events + \section1 Flow Effect Properties - While transition lines are useful for prototyping, in production you need to - use the real signals from UI screens to control the flow of the application. + You can specify basic properties for a \uicontrol {Flow Effect} + component in the \l Type and \l ID fields. + + \image studio-flow-effect-properties.png "Flow Effect properties" + + You can set the duration and easing curve of all flow effects: + + \list + \li In the \uicontrol Duration field, specify the duration of the + effect. + \li Select the \inlineimage curve_editor.png + button to open \uicontrol {Easing Curve Editor} for attaching an + \l{Editing Easing Curves}{easing curve} to the effect. + \endlist + + For a move or push effect, you can set some additional properties: + + \image studio-flow-effect-push-properties.png "Flow Push Effect properties" + + \list + \li In the \uicontrol Direction field, specify the direction that + the target \uicontrol {Flow Item} appears from: left, right, top, + or bottom. + \li In the \uicontrol Scale field, set scaling for the effect. + \li In the \uicontrol {Incoming opacity} and + \uicontrol {Outgoing opacity} fields, specify the opacity of + the effect as a number between 0 and 1. + \li Select the \uicontrol Reveal check box to reveal the + \uicontrol {Flow Item} where the transition starts. + \endlist +*/ + +/*! + \page studio-flow-events.html + \previouspage studio-flow-effects.html + \nextpage studio-flow-conditions.html + + \title Simulating Events + + While \l{Adding Action Areas and Transitions}{transition lines} + are useful for prototyping, in production you need to use the real + \l{Connecting Components to Signals}{signals} from UI + \l{glossary-component}{components} to control the flow of the application. For this purpose, you can use action areas in a more advanced way, by - having them listen to signals from screens or the controls in them and - by connecting these to the flow view. You can use keyboard shortcuts to - simulate these events when you preview the UI. + having them listen to signals from flow items or the controls in them and + by connecting these to the \l{Adding Flow Views}{flow view}. You can use + keyboard shortcuts to simulate these events when you preview the UI. - When you use the wizard to create a \uicontrol {Flow View} item, select the - \uicontrol {Use event simulator} check box to add an event simulator to the - flow view. + When you use the wizard to create a \uicontrol {Flow View} component, select + the \uicontrol {Use event simulator} check box to add an event simulator to + the flow view. You can create an event list where you assign keyboard shortcuts to events, and then use context-menu commands to attach the events to action areas or transition lines. + \section1 Creating Event Lists + To create an event list: \list 1 - \li In \uicontrol Navigator, select the \uicontrol EventListSimulator - type, and then select the \uicontrol Active check box in - \uicontrol Properties to activate the event simulator. \li Select the \inlineimage icons/edit.png - (\uicontrol {Show Event List}) button on the Design mode toolbar, - or press \key {Alt+E}. - \image studio-flow-event-list.png "Event List Dialog" - \li Select \inlineimage plus.png + (\uicontrol {Show Event List}) button on the Design mode + \l{Summary of Main Toolbar Actions}{toolbar}, or press \key {Alt+E}. + \li In the \uicontrol {Event List} dialog, select \inlineimage plus.png to add a keyboard shortcut for triggering an event to the list. - \li In the \uicontrol Id field, enter an identifier for the event. + \image studio-flow-event-list.png "Event List dialog" + \li In the \uicontrol {Event ID} field, enter an identifier for the + event. You can search for existing events by entering search + criteria in the \uicontrol Filter field. + \li In the \uicontrol Description field, describe the keyboard shortcut. \li In the \uicontrol Shortcut field, press the keyboard key that will trigger the event, and then select \uicontrol R to record the keyboard shortcut. The key identifier appears in the field. - \li In the \uicontrol Description field, describe the keyboard shortcut. \endlist - You can now assign the events to the action areas in the flow to use the - keyboard shortcuts to trigger events when you preview the UI. + You can now assign the events to action areas and transitions. + + \section1 Assigning Events to Actions To assign events to actions: \list 1 \li In \uicontrol Navigator, select an action area or transition line. - \li In the context menu, select \uicontrol {Flow} > - \uicontrol {Event List} > \uicontrol {Assign Events to Actions}. - \li Select an event in the list, and then select \uicontrol Accept. + \li In the context menu, select \uicontrol {Event List} > + \uicontrol {Assign Events to Actions}. + \image studio-flow-events-assign.png "Assign Events to Actions dialog" + \li In the \uicontrol ID field, select a transition or an action area + \inlineimage icons/flow-action-icon.png + . You can search for events by entering search criteria in the + \uicontrol Filter field. + \li To connect an event, select \uicontrol Connect next to an event in + the list. To release a connected event, select \uicontrol Release. \li Press \key {Alt+P} to preview the UI. - \li Double-click events in the event list or use the keyboard shortcuts - to trigger events. + \li Select action areas in the preview, double-click events in the + event list, or use the keyboard shortcuts to trigger events. + \image studio-flow-decision-preview.png "Event list in preview" \endlist - \section1 Simulating Conditions + If the event triggers a \l{Simulating Conditions}{flow decision}, you + can select the path to take to the next flow item. +*/ + +/*! + \page studio-flow-conditions.html + \previouspage studio-flow-events.html + \nextpage studio-flow-states.html + + \title Simulating Conditions Part of any complex UI is the conditional logic it uses to present its state to users or to collect and process data from various sources. Data @@ -238,88 +532,165 @@ buttons and controls, sensor readings from arrays of equipment, or general values received from backend or service APIs. - The \uicontrol {Flow Decision} type simulates conditions by displaying a + The \uicontrol {Flow Decision} component simulates conditions by displaying a list of options you can choose from when you preview the flow. This enables you to prototype complex interactions before you have access to the physical controls, backend, or sensor data that will be required for the production version. + \image studio-flow-decision.png "Flow Decision in Form Editor" + To simulate conditions: \list 1 - \li Drag a \uicontrol {Flow Decision} QML type from \uicontrol Library - to a flow view in \uicontrol Navigator or \uicontrol {Form Editor}. - \li Select the screen where you want the application to start in + \li Drag a \uicontrol {Flow Decision} component from \l Library + to a \l{Adding Flow Views}{flow view} in \l Navigator or + \l {Form Editor}. + \li Select the flow item where you want the application to start in \uicontrol Navigator or \uicontrol {Form Editor}, and then select - \uicontrol {Flow} > \uicontrol {Add Start} in the context menu. - \li Create an action area for the component that will trigger the - condition and connect it to the flow decision. - \li In \uicontrol Properties, \uicontrol Question field, enter the text - that will appear next to the transition line that represents the - connection to the flow decision type. + \uicontrol {Flow} > \uicontrol {Set Flow Start} in the context menu. + \li Create an \l{Adding Action Areas and Transitions}{action area} for + the component that will trigger the condition and connect it to the + flow decision. \li Select the flow decision, and then select \uicontrol Connect in the - context menu to create connections to the screens that will open + context menu to create connections to the flow items that will open depending on whether the condition is met. - \li In \uicontrol Properties, \uicontrol Title field, enter a title for - the selection dialog that opens when the condition is triggered. - \li Select a transition line and add a descriptive text in the - \uicontrol {Question} field to represent a choice in the selection - dialog. + \li In \uicontrol Properties, \uicontrol {Dialog title} field, enter a + title for the selection dialog that opens when the condition is + triggered. + \li Select a transition line in \uicontrol Navigator or + \uicontrol {Form Editor} and add a descriptive text in the + \uicontrol {Question} field in \uicontrol Properties to represent + a choice in the selection dialog. + \image studio-flow-transition-properties-question.png "Flow Transition properties" \li Press \key {Alt+P} to preview the UI. + \li Select action areas in the preview, double-click events in the + event list, or use the keyboard shortcuts to trigger events. \endlist - When you preview the UI, you can click the action areas to display a dialog - that you can use to select which condition is met and see the results. + Flow decisions are listed in a dialog where you can select which condition + is met to see the results. - \image studio-flow-decision.png + \image studio-flow-decision-preview.png "Selection dialog for flow decision" - \section1 Applying States in Flows + \section1 Flow Decision Properties - You can use \l{Adding States}{states} in flows to modify the appearance of - components on screens in response to user interaction, for example. For - this purpose, you use the \uicontrol {Flow Item} QML types availabe in - \uicontrol Library. + You can specify basic properties for a \uicontrol {Flow Decision} + component in the \l Type and \l ID fields. + + \image studio-flow-decision-properties.png "Flow Decision properties" + + In the \uicontrol {Dialog title} field, enter a title for the selection + dialog that opens when the condition is triggered. + + You can specify the following properties to change the appearance of the + flow decision icon \inlineimage icons/flow-decision-icon.png + : + + \list + \li Select the \uicontrol {Show label} check box to display the ID + of the \uicontrol {Flow Decision} component in \l {Form Editor}. + \li In the \uicontrol {Label position} field, select the corner of + the flow decision icon to place the label in. + \li In the \uicontrol Size field, specify the size of the flow + decision icon. + \li In the \uicontrol Radius field, specify the radius of the flow + decision icon corners. + \endlist + + You can use the \l{Picking Colors}{color picker} to set the outline and + fill color of the flow decision icon. +*/ + +/*! + \page studio-flow-states.html + \previouspage studio-flow-conditions.html + \nextpage studio-flow-external-events.html + + \title Applying States in Flows + + You can use \l{Adding States}{states} in flows to modify the appearance + of \l{glossary-component}{components} in flow items in response to user + interaction, for example. For this purpose, you use the + \uicontrol {Flow Item} components available in \l Library. \list 1 \li Select \uicontrol File > \uicontrol {New File or Project} > \uicontrol {Files and Classes} > \uicontrol {Qt Quick Files} > \uicontrol {Flow Item} to create a flow item. - \li In \uicontrol States, add states to the flow item. - \li Open the .ui.qml file that contains the flow view in - \uicontrol {Form Editor} and drag the flow item to the flow view - in \uicontrol Navigator or \uicontrol {Form Editor}. - \li Drag an empty \uicontrol {Flow Item} QML type from the - \uicontrol Library view \uicontrol {Flow View} tab to the - flow for each state that you added. - \li In \uicontrol Properties, in the \uicontrol {State change target} + \li In \l States, add states to the flow item. + \li Open the .ui.qml file that contains the \l{Adding Flow Views} + {flow view} in \l {Form Editor} and drag the flow item to the + flow view in \l Navigator or \l {Form Editor}. + \li Drag an empty \uicontrol {Flow Item} component from + \uicontrol Library > \uicontrol Components > \uicontrol {Flow View} + to the flow for each state that you added. + \li In \l Properties, in the \uicontrol {State change target} field, select the flow item that you created using the wizard. + \image studio-flow-item-properties.png "Flow Item properties" \li In the \uicontrol {Target state} field, select the state to apply to the flow item. \endlist - You can now add action areas and flow decisions to apply the different - states. + You can now add \l{Adding Action Areas and Transitions}{action areas} and + \l{Simulating Conditions}{flow decisions} to apply the different states. +*/ - \section1 Reacting to External Events +/*! + \page studio-flow-external-events.html + \previouspage studio-flow-states.html + \nextpage quick-components.html + + \title Reacting to External Events On mobile and embedded platforms, applications are usually integrated into - the platform, and therefore screens might pop-up from anywhere or at any + the platform and therefore screens might pop-up from anywhere or at any time, based on a conditional event. For example, push notifications appear on mobile devices and incoming call screens on a car's HMI. - You can use the \uicontrol {Flow Wildcard} type to model this type of - screens in your flow, using real or simulated signals and conditions. You - can whitelist or blacklist wildcard events to prioritize them and stop some - screens from appearing on others. For example, you could block the incoming - call screen from appearing on a warning screen for the engine, if you - consider the warning more important. + You can use the \uicontrol {Flow Wildcard} component to model this type of + screens in your \l{Adding Flow Views}{flow view} using real or simulated + \l{Connecting Components to Signals}{signals} and \l{Simulating Conditions} + {conditions}. You can add \l{Adding Flow Items}{flow items} to a positive + list to prioritize them or to a negative list to stop some screens from + appearing on others. For example, you could block the incoming call screen + from appearing on a warning screen for the engine if you consider the + warning more important. To use wildcards: \list 1 - \li Drag a \uicontrol {Flow Wildcard} QML type from \uicontrol Library - to a flow view in \uicontrol Navigator or \uicontrol {Form Editor}. - \li In \uicontrol Properties, add screens to the white and black list - for the screen. + \li Drag a \uicontrol {Flow Wildcard} component from \l Library + to an \l{Adding Action Areas and Transitions}{action area} in + \l Navigator or \l {Form Editor}. + \li In \l Properties, select flow items to add them to the + positive and negative list of the action area. \endlist + + \section1 Flow Wildcard Properties + + You can specify basic properties for a \uicontrol {Flow Wildcard} + component in the \l Type and \l ID fields. + + \image studio-flow-wildcard-properties.png "Flow Wildcard properties" + + In the \uicontrol {Event IDs} field, specify the IDs of the events to + connect to, such as mouse, touch or keyboard events. + + To give flow items high priority, select them in the + \uicontrol {Positive list} field. To block flow items, + select them in the \uicontrol {Negative list} field. + + You can specify the following properties to change the appearance of the + wildcard icon \inlineimage icons/flow-wildcard-icon.png + : + + \list + \li In the \uicontrol Size field, specify the size of the wildcard icon. + \li In the \uicontrol Radius field, specify the radius of the wildcard + icon corners. + \endlist + + You can use the \l{Picking Colors}{color picker} to set the outline and + fill color of the wildcard icon. */ diff --git a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc index f45f0908900..f0a42db9f2e 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc @@ -93,6 +93,16 @@ \li \l{Creating UIs} \list \li \l{Designing Application Flows} + \list + \li \l{Adding Flow Views} + \li \l{Adding Flow Items} + \li \l{Adding Action Areas and Transitions} + \li \l{Applying Effects to Transitions} + \li \l{Simulating Events} + \li \l{Simulating Conditions} + \li \l{Applying States in Flows} + \li \l{Reacting to External Events} + \endlist \li \l{Creating Components} \list \li \l{Shapes} From a1ce4c9bc7b1a1e0cb525f9db9333f385cb669a8 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 30 Mar 2021 11:38:25 +0200 Subject: [PATCH 42/71] QmlDesigner: Fix crash Change-Id: Ia96a163efb6a612861d5cc90e37a121fcb3db646 Reviewed-by: Aleksei German Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/documentmanager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp index 49350f634f9..7cd0b2d14c2 100644 --- a/src/plugins/qmldesigner/documentmanager.cpp +++ b/src/plugins/qmldesigner/documentmanager.cpp @@ -324,6 +324,9 @@ void DocumentManager::addFileToVersionControl(const QString &directoryPath, cons Utils::FilePath DocumentManager::currentFilePath() { + if (!QmlDesignerPlugin::instance()->currentDesignDocument()) + return {}; + return QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()->fileName(); } From d815751824b3d7679592b503be9fb4bb1448f5bf Mon Sep 17 00:00:00 2001 From: Aleksei German Date: Mon, 29 Mar 2021 18:07:27 +0200 Subject: [PATCH 43/71] QmlDesigner: Fix for Form Editor color roles Change-Id: I429842fa875c89201aa7f273a35d3e7dde4666ed Fixes: QDS-4062 Reviewed-by: Thomas Hartmann --- .../components/formeditor/formeditorannotationicon.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp index ff36174a4fe..67bbdbbb8c3 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp @@ -316,7 +316,7 @@ QGraphicsItem *FormEditorAnnotationIcon::createCommentBubble(QRectF rect, const const QString &author, const QString &text, const QString &date, QGraphicsItem *parent) { - static QColor textColor = Utils::creatorTheme()->color(Utils::Theme::QmlDesigner_FormEditorForegroundColor); + static QColor textColor = Utils::creatorTheme()->color(Utils::Theme::DStextColor); static QColor backgroundColor = Utils::creatorTheme()->color(Utils::Theme::QmlDesigner_BackgroundColorDarker); static QColor frameColor = Utils::creatorTheme()->color(Utils::Theme::QmlDesigner_BackgroundColor); QFont font; @@ -384,7 +384,7 @@ QGraphicsItem *FormEditorAnnotationIcon::createCommentBubble(QRectF rect, const QGraphicsItem *FormEditorAnnotationIcon::createTitleBubble(const QRectF &rect, const QString &text, QGraphicsItem *parent) { - static QColor textColor = Utils::creatorTheme()->color(Utils::Theme::QmlDesigner_FormEditorForegroundColor); + static QColor textColor = Utils::creatorTheme()->color(Utils::Theme::DStextColor); static QColor backgroundColor = Utils::creatorTheme()->color(Utils::Theme::QmlDesigner_BackgroundColorDarker); static QColor frameColor = Utils::creatorTheme()->color(Utils::Theme::QmlDesigner_BackgroundColor); QFont font; From 33359883f29ec47a567035518bbce0d8055cf654 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 30 Mar 2021 10:23:25 +0200 Subject: [PATCH 44/71] Fix qbs unittest build Change-Id: Ifb7f564217921c9907dd7e300bc1c31ad7ae1536 Reviewed-by: Marco Bubke --- tests/unit/unittest/unittest.qbs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/unit/unittest/unittest.qbs b/tests/unit/unittest/unittest.qbs index cb3b8cda315..79c3c17f897 100644 --- a/tests/unit/unittest/unittest.qbs +++ b/tests/unit/unittest/unittest.qbs @@ -314,6 +314,8 @@ Project { "sqliteteststatement.h", "sqlitetransaction-test.cpp", "sqlitevalue-test.cpp", + "sqlitewritestatementmock.cpp" + "sqlitewritestatementmock.h" "sqlstatementbuilder-test.cpp", "stringcache-test.cpp", "symbolindexer-test.cpp", From d1228a6f39b4287303fffb67a819fd4f06aee19f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 29 Mar 2021 16:59:28 +0200 Subject: [PATCH 45/71] Doc: Describe detaching changed Figma component instances before export Task-number: QDS-3338 Change-Id: I86e7c057a2e97ecd30b84e6f4b52d230fda80c5f Reviewed-by: Reviewed-by: Thomas Hartmann --- .../src/qtbridge/qtbridge-figma-using.qdoc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc index 98817db6a97..9e5a16f8490 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-figma-using.qdoc @@ -57,11 +57,14 @@ as assets. If you use functional \QDS components in Figma, you will find it easier to merge new iterations of the design to \QDS and continue to build the screens there. - \li If your Figma components contain nested components, Figma allows - you to hot swap the nested instance inside the component instance. + \li \QBF does not support exporting changes in component instances. + If you make changes to component instances in Figma, you must + detach the instances before exporting them. Similarly, if your + Figma components contain nested components, Figma allows you to + hot swap the nested instance inside the component instance. However, \QBF doesn't support this so you get the original - component instead. If you want to make further changes to a - component, detach component instances from it before exporting it. + component unless you detach the component instance before + exporting it. \li Use descriptive and unique IDs to avoid duplicate IDs after exporting designs and importing them to \QDS. \endlist From 0a792d3b9d383ccf139fa10608cdd896314c6841 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 29 Mar 2021 18:37:49 +0200 Subject: [PATCH 46/71] Doc: Fix instructions for styling buttons in Login UI tutorial 1 Fixes: QDS-4051 Change-Id: I7d9f9fa0666feb9f81b8f3468e09a29b5dbd10d3 Reviewed-by: Thomas Hartmann --- .../doc/images/loginui1-button-styled.png | Bin 68167 -> 44423 bytes .../examples/doc/images/loginui1-button.png | Bin 56456 -> 40840 bytes doc/qtdesignstudio/examples/doc/loginui1.qdoc | 9 +++++---- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/qtdesignstudio/examples/doc/images/loginui1-button-styled.png b/doc/qtdesignstudio/examples/doc/images/loginui1-button-styled.png index ee8545d6ffb9aa29ce5e3e6991cde6cacf805c60..ac7583de9502fda9602cd147c077fa45b5ab8f64 100644 GIT binary patch literal 44423 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 cjHKhZPtdB3_@|BS`*Lv?})~A;z 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 bvid)BxBHyFQ(xCT2MKt(`njxgN@xNAf%~?l diff --git a/doc/qtdesignstudio/examples/doc/images/loginui1-button.png b/doc/qtdesignstudio/examples/doc/images/loginui1-button.png index b1d9e7e532f5f174fe32cd4d4dff74196fd79ca6..5ee1d3cc4bc1c15c7d1106eaa151021b90a64cb7 100644 GIT binary patch literal 40840 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 literal 56456 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 F0RX)JHK_mq diff --git a/doc/qtdesignstudio/examples/doc/loginui1.qdoc b/doc/qtdesignstudio/examples/doc/loginui1.qdoc index 2b9c2f9805e..210d8fe8f09 100644 --- a/doc/qtdesignstudio/examples/doc/loginui1.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui1.qdoc @@ -360,10 +360,11 @@ \li Press \key Enter or select \uicontrol OK to save the new value. \li In the \uicontrol Radius field, enter 20 to give the button rounded corners. - \li In the \uicontrol States view, select the \e down state and modify - the background and border color as above. - \li Select the text component in \uicontrol Navigator to display its - properties in \uicontrol Properties. + \li In the \uicontrol States view, select the \e normal state and modify + the background color as above. + \li Select the \e base state, and then select the text component + in \uicontrol Navigator to display its properties in + \uicontrol Properties. \li In the \uicontrol {Text Color} field, select \uicontrol Actions > \uicontrol Reset to reset the text color to the default color, black. From 392d9038f8f50966d0f949e1eb3931928c71b320 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 30 Mar 2021 12:07:55 +0200 Subject: [PATCH 47/71] QmlDesigner: Fix qbs build Change-Id: I7dbbf49d96e80deab2e7ce002fb1ac08f7548228 Reviewed-by: David Schulz --- src/plugins/qmldesigner/qmldesignerplugin.qbs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index 26d82c217a5..9f9124691ff 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -43,6 +43,7 @@ Project { "../../../share/qtcreator/qml/qmlpuppet/commands", "../../../share/qtcreator/qml/qmlpuppet/types", "components", + "components/annotationeditor", "components/componentcore", "components/curveeditor", "components/connectioneditor", From 98012fb89d94b682a241be9c3e353aadd1e7f792 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 30 Mar 2021 12:34:26 +0200 Subject: [PATCH 48/71] Unit test: Fix qbs build Change-Id: I6046fe9b99e288dcd14a763bce9c337ab45c2eb5 Reviewed-by: David Schulz --- tests/unit/unittest/unittest.qbs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/unit/unittest/unittest.qbs b/tests/unit/unittest/unittest.qbs index 79c3c17f897..7f2bea7cf8a 100644 --- a/tests/unit/unittest/unittest.qbs +++ b/tests/unit/unittest/unittest.qbs @@ -308,14 +308,17 @@ Project { "sqlitecolumn-test.cpp", "sqlitedatabase-test.cpp", "sqlitedatabasebackend-test.cpp", + "sqlitedatabasemock.h", "sqliteindex-test.cpp", + "sqlitereadstatementmock.cpp", + "sqlitereadstatementmock.h", "sqlitestatement-test.cpp", "sqlitetable-test.cpp", "sqliteteststatement.h", "sqlitetransaction-test.cpp", "sqlitevalue-test.cpp", - "sqlitewritestatementmock.cpp" - "sqlitewritestatementmock.h" + "sqlitewritestatementmock.cpp", + "sqlitewritestatementmock.h", "sqlstatementbuilder-test.cpp", "stringcache-test.cpp", "symbolindexer-test.cpp", From 105d65b19c80795aada03b2b1b5a82a409a5333e Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 30 Mar 2021 15:02:11 +0200 Subject: [PATCH 49/71] WebAssembly: Always use system environment to run em++ -dumpversion On Windows, we would start with a clean environment just with the emsdk environment added in order to run "em++.bat -dumpversion". That fails for some emsdk versions for reasons unknown. Let's reduce OS- specific special casing and instead use the system environment as basis everywhere. Change-Id: I143fe6193528390e17ee0a62936ad03d2c5a109e Reviewed-by: Cristian Adam --- src/plugins/webassembly/webassemblyemsdk.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/plugins/webassembly/webassemblyemsdk.cpp b/src/plugins/webassembly/webassemblyemsdk.cpp index e2185b0a566..5997c83f06d 100644 --- a/src/plugins/webassembly/webassemblyemsdk.cpp +++ b/src/plugins/webassembly/webassemblyemsdk.cpp @@ -104,10 +104,7 @@ QVersionNumber WebAssemblyEmSdk::version(const FilePath &sdkRoot) return {}; const QString cacheKey = sdkRoot.toString(); if (!emSdkVersionCache()->contains(cacheKey)) { - Environment env; - // Non-Windows: Need python in path (not provided by emsdk), thus use systemEnvironment - if (!HostOsInfo::isWindowsHost()) - env = Environment::systemEnvironment(); + Environment env = Environment::systemEnvironment(); WebAssemblyEmSdk::addToEnvironment(sdkRoot, env); const QString scriptFile = QLatin1String("emcc") + QLatin1String(HostOsInfo::isWindowsHost() ? ".bat" : ""); From 8d54fb22bccc5c0750882788451d3f8df63915d3 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 26 Mar 2021 22:09:43 +0100 Subject: [PATCH 50/71] GitHub Actions: Update ccache to version 4.2.1 Also display the ccache statistics as separate step and not at the end of the build step. ccache clear Change-Id: Ia8b2ae4b73f2070ab6cf14ab704e5fc4200d49de Reviewed-by: Orgad Shaneh --- .github/workflows/build_cmake.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index d98d5dd35d4..a65437bdd4c 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -9,7 +9,7 @@ env: CMAKE_VERSION: 3.18.3 NINJA_VERSION: 1.10.1 BUILD_TYPE: Release - CCACHE_VERSION: 3.7.7 + CCACHE_VERSION: 4.2.1 QT_MIRRORS: download.qt.io;mirrors.ocf.berkeley.edu/qt;ftp.fau.de/qtproject;mirror.bit.edu.cn/qtproject jobs: @@ -485,6 +485,19 @@ jobs: message(FATAL_ERROR "Build failed") endif() + - name: ccache statistics + shell: cmake -P {0} + run: | + file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" ccache_basedir) + set(ENV{CCACHE_BASEDIR} "${ccache_basedir}") + set(ENV{CCACHE_DIR} "${ccache_basedir}/.ccache") + set(ENV{CCACHE_SLOPPINESS} "pch_defines,time_macros") + set(ENV{CCACHE_COMPRESS} "true") + set(ENV{CCACHE_COMPRESSLEVEL} "6") + set(ENV{CCACHE_MAXSIZE} "800M") + if ("${{ matrix.config.cxx }}" STREQUAL "cl") + set(ENV{CCACHE_MAXSIZE} "1200M") + endif() execute_process(COMMAND ccache -s) - name: Run tests From 49c7f2189172327d3acb673731fada23b01eea20 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 26 Mar 2021 16:38:39 +0100 Subject: [PATCH 51/71] Doc: Reorganize info about build settings by build system Change-Id: Iaee9cc581f76a45cc10c9ae8cba601889320be86 Reviewed-by: hjk Reviewed-by: Joerg Bornemann Reviewed-by: Christian Kandeler --- ...c => creator-projects-conan-building.qdoc} | 16 +++++++---- .../src/conan/creator-projects-conan.qdoc | 2 +- ...eator-projects-incredibuild-building.qdoc} | 27 ++++++++++--------- ...c => creator-projects-meson-building.qdoc} | 22 +++++---------- .../src/meson/creator-projects-meson.qdoc | 2 +- .../creator-only/creator-projects-qbs.qdoc | 4 +-- ... creator-projects-settings-build-qbs.qdoc} | 23 ++++++++-------- 7 files changed, 49 insertions(+), 47 deletions(-) rename doc/qtcreator/src/conan/{creator-projects-conan-building.qdocinc => creator-projects-conan-building.qdoc} (87%) rename doc/qtcreator/src/incredibuild/{creator-projects-incredibuild-building.qdocinc => creator-projects-incredibuild-building.qdoc} (91%) rename doc/qtcreator/src/meson/{creator-projects-meson-building.qdocinc => creator-projects-meson-building.qdoc} (89%) rename doc/qtcreator/src/projects/creator-only/{creator-projects-settings-build-qbs.qdocinc => creator-projects-settings-build-qbs.qdoc} (91%) diff --git a/doc/qtcreator/src/conan/creator-projects-conan-building.qdocinc b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc similarity index 87% rename from doc/qtcreator/src/conan/creator-projects-conan-building.qdocinc rename to doc/qtcreator/src/conan/creator-projects-conan-building.qdoc index c4d8ff26e52..20e0c4159bd 100644 --- a/doc/qtcreator/src/conan/creator-projects-conan-building.qdocinc +++ b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc @@ -24,8 +24,17 @@ ****************************************************************************/ /*! -//! [conan build steps] - \section1 Specifying Build Settings for Conan + \previouspage creator-build-settings-incredibuild.html + \page creator-build-settings-conan.html + \nextpage creator-run-settings.html + + \title Conan Build Configuration + + You can specify build steps for Conan. + + For more information about configuring Conan, see \l{Setting Up Conan}. + + \section1 Conan Build Steps To configure a project to be built using the Conan package manager, select \uicontrol {Add Build Step} > \uicontrol {Run Conan Install}. @@ -38,7 +47,4 @@ The \uicontrol {Conan install} field displays the effective build command. You can add arguments for the command in the \uicontrol {Additional arguments} field. - - For more information about configuring Conan, see \l{Setting Up Conan}. -//! [conan build steps] */ diff --git a/doc/qtcreator/src/conan/creator-projects-conan.qdoc b/doc/qtcreator/src/conan/creator-projects-conan.qdoc index a846c252047..abaf4139393 100644 --- a/doc/qtcreator/src/conan/creator-projects-conan.qdoc +++ b/doc/qtcreator/src/conan/creator-projects-conan.qdoc @@ -62,5 +62,5 @@ {conanfile.txt} file that specifies the needed libraries and packages. Then, you must edit the build settings of the project to specify the location of the file and the contents of the Conan install command. - For more information, see \l {Specifying Build Settings for Conan}. + For more information, see \l {Conan Build Steps}. */ diff --git a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdocinc b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc similarity index 91% rename from doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdocinc rename to doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc index bb7bfcd6ad9..e742979df72 100644 --- a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdocinc +++ b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -23,9 +23,18 @@ ** ****************************************************************************/ /*! -//! [incredibuild build steps] + \previouspage creator-build-settings-meson.html + \page creator-build-settings-incredibuild.html + \nextpage creator-build-settings-conan.html - \section2 IncrediBuild Build Steps + \title IncrediBuild Build Configuration + + You can specify build steps and clean steps for IncrediBuild. + + For more information about configuring IncrediBuild, see + \l{Setting Up IncrediBuild}. + + \section1 IncrediBuild Build Steps To use IncrediBuild, select \uicontrol {Add Build Step} > \uicontrol {IncrediBuild for Linux} or @@ -53,7 +62,7 @@ The distribution control settings to specify depend on whether you are using Linux or Windows. - \section3 Distribution Control Settings on Linux + \section2 Distribution Control Settings on Linux \image qtcreator-incredibuild-build-steps-linux.png @@ -66,7 +75,7 @@ \li \uicontrol {Alternate tasks preference} \endlist - \section3 Distribution Control Settings on Windows + \section2 Distribution Control Settings on Windows \image qtcreator-incredibuild-build-steps-windows.png @@ -125,11 +134,7 @@ starts. \endlist -//! [incredibuild build steps] - -//! [incredibuild clean steps] - - \section2 IncrediBuild Clean Steps + \section1 IncrediBuild Clean Steps When building with IncrediBuild, you can add arguments and targets for the clean command in \uicontrol {Clean Steps}. @@ -138,6 +143,4 @@ The build errors and warnings are parsed and displayed in the \uicontrol Issues output pane. - -//! [incredibuild clean steps] */ diff --git a/doc/qtcreator/src/meson/creator-projects-meson-building.qdocinc b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc similarity index 89% rename from doc/qtcreator/src/meson/creator-projects-meson-building.qdocinc rename to doc/qtcreator/src/meson/creator-projects-meson-building.qdoc index 40b5f929fee..852c6018fd0 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson-building.qdocinc +++ b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -23,9 +23,11 @@ ** ****************************************************************************/ /*! -//! [meson build configuration] + \previouspage creator-build-settings-qbs.html + \page creator-build-settings-meson.html + \nextpage creator-build-settings-incredibuild.html - \section2 Meson Build Configuration + \title Meson Build Configuration \image qtcreator-meson-build-settings.png @@ -43,12 +45,7 @@ \note Any modified setting will remain in bold until \uicontrol {Apply configuration changes} is selected. -//! [meson build configuration] - - -//! [meson build steps] - - \section2 Meson Build Steps + \section1 Meson Build Steps \QC builds Meson projects by running \c {ninja -v target}. @@ -60,11 +57,7 @@ The build errors and warnings are parsed and displayed in the \uicontrol Issues output pane. -//! [meson build steps] - -//! [meson clean steps] - - \section2 Meson Clean Steps + \section1 Meson Clean Steps When building with Meson, you can add arguments and targets for the clean command in \uicontrol {Clean Steps}. @@ -74,5 +67,4 @@ The build errors and warnings are parsed and displayed in the \uicontrol Issues output pane. -//! [meson clean steps] */ diff --git a/doc/qtcreator/src/meson/creator-projects-meson.qdoc b/doc/qtcreator/src/meson/creator-projects-meson.qdoc index 48a9d310d33..bffec6b41e7 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson.qdoc +++ b/doc/qtcreator/src/meson/creator-projects-meson.qdoc @@ -111,7 +111,7 @@ \list \li \l {Opening Projects} - \li \l {Specifying Build Settings} + \li \l {Meson Build Configuration} \li \l {Specifying Run Settings} \endlist */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc index df44ceba5e0..9c79a1c4936 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -89,7 +89,7 @@ \list \li \l {Opening Projects} - \li \l {Specifying Build Settings} + \li \l {Qbs Build Configuration} \li \l {Specifying Run Settings} \endlist */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc similarity index 91% rename from doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdocinc rename to doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc index 54e2f3c03e5..bc89e8fa22e 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -24,9 +24,17 @@ ****************************************************************************/ /*! -//! [qbs build steps] + \previouspage creator-build-settings-qmake.html + \page creator-build-settings-qbs.html + \nextpage creator-build-settings-meson.html - \section2 Qbs Build Steps + \title Qbs Build Configuration + + You can specify build steps and clean steps for Qbs. + + For more information about configuring Qbs, see \l{Setting Up Qbs}. + + \section1 Qbs Build Steps \image creator-qbs-build-app.png @@ -95,12 +103,7 @@ The \uicontrol {Equivalent command line} field displays the build command that is constructed based on the selected options. -//! [qbs build steps] - - -//! [qbs clean steps] - - \section2 Qbs Clean Steps + \section1 Qbs Clean Steps When building with Qbs, you can specify flags in \uicontrol {Clean Steps}: @@ -118,6 +121,4 @@ The \uicontrol {Equivalent command line} field displays the clean command that is constructed based on the selected options. - -//! [qbs clean steps] */ From f98510960e271189a8f54833827c7b1f3cc206e8 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 31 Mar 2021 09:02:03 +0200 Subject: [PATCH 52/71] QmlDesigner: Fix missing include Amends bd9a61fa27b. Change-Id: I890c0766931064f665aee9b6a705d4d7ce9a1e71 Reviewed-by: hjk --- .../components/annotationeditor/defaultannotations.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp index b5e0d548401..3623dceeb95 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/defaultannotations.cpp @@ -30,6 +30,7 @@ #include #include #include +#include namespace QmlDesigner { DefaultAnnotationsModel::DefaultAnnotationsModel(QObject *parent) From d241832e07e6a065ae78f25e3e7349f89a16b12c Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 29 Mar 2021 16:10:36 +0200 Subject: [PATCH 53/71] Doc: update info about qmake build configuration Change-Id: I40e7491b079ae879d97b595fb2d440b92a11d66b Reviewed-by: Christian Kandeler --- .../qtcreator-build-settings-default.png | Bin 0 -> 7735 bytes .../images/qtcreator-build-settings-qmake.png | Bin 0 -> 4362 bytes .../images/qtcreator-projectpane.png | Bin 11906 -> 9730 bytes .../src/debugger/qtquick-debugging.qdoc | 7 ++- .../creator-build-settings-qmake.qdoc | 47 +++++++++++++++++- .../creator-projects-settings-build.qdoc | 17 +------ 6 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-build-settings-default.png create mode 100644 doc/qtcreator/images/qtcreator-build-settings-qmake.png diff --git a/doc/qtcreator/images/qtcreator-build-settings-default.png b/doc/qtcreator/images/qtcreator-build-settings-default.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca79641a6bd6f820059d3d37ce94f60fd0246e8 GIT binary patch literal 7735 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 BXYv35 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-build-settings-qmake.png b/doc/qtcreator/images/qtcreator-build-settings-qmake.png new file mode 100644 index 0000000000000000000000000000000000000000..6371c6172508ce6d26b41fc2babeb7a3cd805518 GIT binary patch literal 4362 zcmeAS@N?(olHy`uVBq!ia0y~yV4BLnz%ZGEnSp`fg{RO$1_s8L0X`wF($dm$a&q$W z@(KzHii(O#N=nMg$|@=gpOA8k(A#+S=MWIy$-_;IFHjtLxvXo4Zs`PtU-> zzz_t23=Q)QgSrj#ml=UTzEM!OQT{SxV`CE&6LWKOD=RA-8ykCjdj|&xM@L5|Cnpyd z7gtwTH#awTcXtmD4^K}|FE1}|Z*M<8KYv|ae_eln-CTeFPXEpWfq{WRhK50gK|zN3 zK}JSFLES<5%YwR>1$7??4GoQqjEstkN={DB%*@Q}Jdg`^T&`|zu7784=Yia%OLLdr z$_G0x-!MPl$S6OkJ0Ap=<#!**U$!iN*@66Jx5~=OYHMqoo10r(TRZ)AJN zkdCEGmmWB<^uVp9x0WuwbzteOTg&ndm*pER%MV(XpTDd-XxXx5%MNreJ8)pxfm_RN zEn9Z$z_MGnR;^mKe*OB58#iv>zJ1rOUHkX%KhWuapgZWm^ce?c&OESm>49bW2bL`Z zx#d7N$oK=x4jede;MURux0W5ab>P6QTZaxEI(ne{*3#Tt%kppS*m3JX=dAuPE--KVOh*o{*+x59_-C+{r3+e10_N@ZJoBUHvIhuZ{&pTBZ*u69*MYUoUXWmENX1_3@%(zw4}K^>`JkZC|zVOl^hMEU%fTrab&I z^;2p_u}S3m$L5Len(xogpJ}>DBl7#3J3&lo$DX>@KMaXpU%k~p^Yzr-o9`G-WzUOM z;nM#9ulU39)dzWRmfqX1v7*Lj&$_O|5n8iXPx&!xYwnG*kXL+u4{HC{& zJKu|ouTHtWf8PViFum^wo$`MET)H=Sf2`b9T|X0sPt#`gt>x1@QiamJu#|10#rDp668;=I{8`d+OCRg`jgwj#QgWJ@#P5 z&Rdq1@w-jmY;jwacr(3lYwAt?8)au(Zy8PUy4cTQ(sDdzi>=xMv*Wh{Ej=auR(_mg zyd&gQzt7Vdau-AAuVnvmr~OjOw_pA;pEq$lJ@<0w1(&0XgW~qTX4!Y*{QBf7uGMQd z@XPy2{XQFhW6Fg#$&i$}mX}?YW;9b*>a-F>951SN|SmcdGH%U5$yvq6! zQgzwSd8zrwEzg`wKdL7-&S`QFS{c)|&j`> zf~)6B_h)Ibc3o|&n7gt&KRV!LSm(*kMVl5&eO&F_uaS4j^6B=}GgG&KHFh_ zZ`pd0+L~!b8OvSRE;e*RAJlUZI#v9i2t?hQ%#af+LKNxJU^v%TjXr*)%Pramj0;f5c+w#a8}6b zmUCMYyQXV2CYXNt9s1d)=~!KCS6m6p^(o%VH0EWlufD7tokE_aH~rpxH+ZM;TCw2#fS;NR zHU&4Hs^k98KTk;OcVK=1r`Bb!rzgaPvX@LhQ+uWF_r||$lcOX&{Zh4VP5S>zylR8V zhpjFFb|0^nEG!VIn(*c8@=1X|p9E{Ja#73d=XboV7Qor)#lbXHU`2}p3e$0c(65xB z%4c&H8}Bd+kXm8$ylt6Xdp7gZu2b%POojU*b>A7%`sh>WHzCZhn+dO;X_1y*8+q%^R=T~L* zt7&y76&H7$@|w(eK4ts2#YW}fya6}Wwf1lSX4U^-(y>=_f8IEKBlfzwVcZM#sj^?E z?!C{k;8XIlPdm@^@zuS2|NqCPdExuaX50VvvW;K$Jax*>n~zRCUHfwC>8u-i>wI*& z7)g1Dc`zQYt7%HxIZM)<@yT$6(XXcekZhMPdvBTxlepmlxgnOTeny7YEKW<`loRJ zo_S`^;@(YKUan6!Kkv#3ym#P{TKMq=o20e&@Ba2nx!FF-I{DgztG_{qHsVu4uIX>bcaG!)SP8`nF}RO@|)U?AxVyP;_r@;nO2mD=%N~yk;5w`1^DX zNoBQ7yr)Z8PX%3js#PuAeJ9yl+9;xL*`+xe7aUtpY5oYCYW~E=IwVnl4QKMzTZ_3Y zL`!~oO+A)!acSqGcW0-)JHPAsjYWIfmhz@9WzyQc@Kg8xXzR~UcGv&ivv5uq)M?yMBwwk5N-G3O>0c4sUopPDmE@bc53X|vw` z{j)i4n%9e#e}}fedb%)Jf1`LGXYSUFw|Cc8ihgk~hz;?*?kVp2Tzi{^ok+xfv)5K^ zrB+S$AGdGay7m2y``X;*@iWic|32mvSr#~rcfMDtUYl3?qvLB|6uB{)Vg%ngsU_51??HEwh-_H$${1ZRUM+p2nS7PuHJ{Y1tT6pvHAd@o}r+!^qH+DXbZm$3>rPl|8(w`_j_b zORg77H$Fd;_;s#TG~?9RAj=xhjb8gWmnN+sIipyL}{PuR&gr8isD@QBw-kSKB*{a9eEKWvheRJ8Dvd_qQ-L_XctEM;$ziBmn z=<6I}baUpp0Hbvedd_{`7aS6K-Bo<)y6#{Z`Bk%n&Py!FTOm_p_4B`l*;mFbT1^Y& zR=oMS-qM?~iX1K*hQ?C{Q?;M+DGM%G-%>WoYvG*w_rbBI;_vuk&SkF>A<7oKmg|MA-i z7PE!yv%TtaV)R3f9TqC|vay`_Uued*CvHzVbk`Sa3ELORJy_m+s)hIA6D^$*$E7ZT zwn8Sm`g5P2G8Pb~;oT{#T@|#n1rh_commB^Q1Jak( zZCW+o_SgRZ78?bhh%5EhtXnS6=$Lz0W}i{6%n}KXnxH8;bA{r}!Ao3H1tefr}!k@Lzzo#?j@ug>K3 z;EH)*Clx1UR~Rb1!|0+2rMo5fB$emAZeYoE7PH`AxxO%ksV-@cm#-psNZO)H_1E?!&)C1_ zNA+3P2hE!=Z|~l2df1As>1K!CuC&c-C-GEIE!>_^^vU~I;pI=354Jf3%v96z?)A_r z<=)C4`Ji~ElJE)V?<>FaO?|j;lkC*1+r|81DpU8pSYEtx&k?_=Q~58)Jlig1B|5i% z;iZRyAbX#x^m&~z0`tp8qJgWfNwd`9eD~E2KBn+&TL636^i)PyJi5 zHo5NTtVzl}hmQNFo{3LC!}7My>wVj)X%ji;{J(vZQERrAm{(lHo7KhvO8Ap6Mk|16 zssNubH+!r;V1tF|aJFfcH9y85}Sb4q9e E09YVJF8}}l literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-projectpane.png b/doc/qtcreator/images/qtcreator-projectpane.png index b6d01fd0ca93c697bab6e2144514cc19302fc3fb..0112b9e8967cc59617beb7b982187b75bec40303 100644 GIT binary patch literal 9730 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 Qmes@OUtCQD zbZho8x;)eR8?YeEsEeKD;Z)BLu#Q~M@vY$~J-KD~v>!h2TJHboGrKB#vwcg9y^H?O zex+jj&lA_F|GBdN!sT~Q4pzTPY^wZx>3F`xPq)6mI(t5a%zO5Jo{HPny%#P%l!>eS z^5SCd)NOs%b04q0Ek65C^DN6vcVBOfKk~hIzoczI@8v!9|Nq_Ip1*(V2cf`h8~ z*B>aUKKeUQU+u%ZC@ERSl-9*@o{RU_eG2+H?em^XAB26J{hx<1X>460C!W!zSi3r- zzbs#h;d#kzReNvB*|C`7=*WTUic$K}I*Vg#v+SZR1 zPahs`-yV{+Y~uFH)jsEs3ZFlm|I)m4Va@6y{r!3SeRfDL%xeC+y6IVT*6ynH0lUiI z-#6_BTDm`Zecq9rX~+FK zZJE{@*2#PM-ifX;7JJ$p*J*leN_*sIjXjI56jfA6Oy-Jfycx6o{PPZ{%fSy1xt-kO zaMUK^TSQU%R{Je^^0U}qzn)r@c4ij)=J`!>60U~)W=Z7t%2vMaIV*6-i%DFVoqPJs zmt0j9XYWL8=a2PB3!BZK!Swo@;QAStW4uLQf7=^ZQO37EW=gn=sFB_cZuc7XN!xF~ zeKd7@_}6zYr^VjMa*K>!achFsr&+yOrG9TZDp-H)KGCS&p_XpeS-JM)=dL?8AKScU zyUTC+dj8v-IsERk&GX*O6o?rpqBt4U;lKH_`gd4TOuzM|Llvohpgx(wbI_no1uMh)14k-TYis`sU)tbV z#Sa>qyAZRts?Dp^pnxFqedRTkqOrsAGIN2XZ{4ynMjB@5tm?7yg0j#}B7+DpGHp+J02)q~or=^S{iII`(|( z#FC>=t5Qqcrz`vb&4wj=L5h#?%%k-b?x-tS-Y|BkhVc@+{B0&mCo$U67NZQzqD?ie>SD6vgBTv{-&bLH+qj3 z^zfXL+1y~+iZ9)iL+aQzJXz}`t~ zi{|dBzp#-hGEL<1_Z`6p^4$U~uf}~mu3h`M&SJ-H^|*5}D+`ZZIuPgSuJt?X{+fAz zbFKu*UQRx{`opQ~5Bqbhe=IzrlhoJc_H?Swzi($0@?LH}!QWPTTCYv+kIeG4^z}|r zwX*`>PEEL-$NNBZ>9oU#56=ksz;))7O~e^(SD%yW6T9YwOqH>$s#YT0LUfa6PBvJ>l-hfG()Dwe+gno##yE3GR@{hhAV-z`OV>vsRz zwe?bK>9Pl__CE4;I%aRQ{=9bD-fv%9W%oMnO`565|KrpAZKCflpU}HmdnC!Vc&~S4 z`f&}36Cd{mEtjl}{Z@8HyDs}9*O}j?$HZ&quHLU@$F=HTUFx=-4gKe5hWDIrK6zIt ze@f=(7tSk}^1IK@ymoKqWI>H!l~}WCZ?9EMRns@`_27NFPX63EyBWW$Lc>j*MT6FV zdVBxRv9)XOltoo1gMG*lx3YELl2?cR-IH6-^V_p^-O&|qrv|EW-kj;UOu2X6)(X}g z_7Vm48v?72N-+2|h90{ZwTG#K^}{JhKUvx9(##6h4_s$V;e%|BoX`C)^Sg2j$4TefW5w$0DVeG=c4yea2ma!h{2F~&9i4D(hFJuP}^r*IHxjs{$o zg9iJNM%s{9;uOCYWngId4Cx3kFo0AwR6h96c=32@={1hm9t;c&44$rjF6*2UngBQ) B*J=O& literal 11906 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 diff --git a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc index 39a87166ac7..bdc1bda67e1 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -64,7 +64,10 @@ \list 1 - \li Debugging is enabled by default for Qt 5.0, or later. + \li If you use qmake as the build system, make sure that + debugging is enabled in the \uicontrol {Build Settings}, + \uicontrol {QML debugging and profiling} field, either + explicitly for the project or globally by default. \image qtcreator-projectpane.png "qmake general build settings pane" diff --git a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc index 090c337a8fc..353fa5332dd 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc @@ -30,20 +30,25 @@ \title qmake Build Configuration - \image qtcreator-projectpane.png "qmake general build settings pane" + \image qtcreator-projectpane.png "qmake build settings" By default, \QC builds qmake projects in a separate directory from the source directory, as \l{glossary-shadow-build} {shadow builds}. This keeps the files generated for each \l{glossary-buildandrun-kit} {build and run kit} separate. If you only build and run with a single \l{glossary-buildandrun-kit}{kit}, you can deselect the - \uicontrol {Shadow build} checkbox. + \uicontrol {Shadow build} checkbox. Select the build directory in the + \uicontrol {Build Directory} field. To make in-source builds the default option for all projects, select \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > \uicontrol {Default Build Properties}, and enter a period (.) in the \uicontrol {Default build directory} field. + In the \uicontrol {Tooltip in target selector} field, you can enter text + that is displayed as a tooltip when you hover the mouse over the build + configuration in the \l{Building for Multiple Platforms}{kit selector}. + You can create separate versions of project files to keep platform-dependent code separate. You can use qmake \l{Adding Platform Specific Source Files} {scopes} to select the file to process depending on which platform qmake is @@ -54,10 +59,41 @@ more information, see \l{Using the Performance Analyzer}. To use default settings, select \uicontrol {Leave at Default}. + In the \uicontrol {qmake system() behavior when parsing} field, you can + select whether processes are run via qmake's \c system() function or + ignored. Setting this option to \uicontrol Ignore might help if opening + or closing projects takes too long, but it might produce inexact parsing + results. + + \section1 Global qmake Settings + + To specify settings for all qmake builds, select \uicontrol Tools + > \uicontrol Options > \uicontrol {Build & Run} > + \uicontrol Qmake. + + \image qtcreator-build-settings-qmake.png "qmake build and run options" + To set the default build properties, select \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > \uicontrol {Default Build Properties}. + \image qtcreator-build-settings-default.png "default build options" + + \section1 Compiling QML + + Since Qt 5.11, you can compile QML source code into the final binary. This + improves the startup time of the application and eliminates the need to + deploy QML files together with the application. For more information, see + \l{Ahead-of-Time Compilation}. + + \QC project wizard templates create Qt Quick projects that can be compiled, + because they are set up to use the Qt Resource System. To compile QML code, + select \uicontrol Enable in the \uicontrol {Qt Quick Compiler} field. To + use default settings, select \uicontrol {Leave at Default}. + + \note In earlier Qt versions, this was a commercial feature. For more + information, see \l{http://doc.qt.io/QtQuickCompiler/}{Qt Quick Compiler}. + \section1 qmake Build Steps \QC builds qmake projects by running the \c make or \c nmake command from @@ -74,4 +110,11 @@ jobs to use for building in the \uicontrol {Parallel jobs} field. Select the \uicontrol {Override MAKEFLAGS} check box to override existing MAKEFLAGS variables. + + Select \uicontrol {Add Build Step} > \uicontrol {IncrediBuild for Linux} or + \uicontrol {IncrediBuild for Windows} to accelerate builds by using + \l{IncrediBuild Build Configuration}{IncrediBuild}. + + Select \uicontrol {Add Build Step} > \uicontrol {Run Conan Install} to use + the \l{Conan Build Configuration}{Conan} package manager with qmake */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc index a710c8c1299..eb4faea02c1 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc @@ -89,21 +89,8 @@ This topic describes the build settings at a general level. - \section1 Compiling QML - - Since Qt 5.11, you can compile QML source code into the final binary. This - improves the startup time of the application and eliminates the need to - deploy QML files together with the application. For more information, see - \l{Ahead-of-Time Compilation}. - - \QC project wizard templates create Qt Quick projects that can be compiled, - because they are set up to use the Qt Resource System. To compile QML code - for debugging and profiling the project, select \uicontrol Enable in the - \uicontrol {QML debugging and profiling} field. To use default settings, - select \uicontrol {Leave at Default}. - - \note In earlier Qt versions, this was a commercial feature. For more - information, see \l{http://doc.qt.io/QtQuickCompiler/}{Qt Quick Compiler}. + For more information about debugging Qt Quick projects, see + \l{Setting Up QML Debugging}. \section1 Starting External Processes From 943f46876297ce556e1a0751d9b6d1ffdde85c47 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 31 Mar 2021 11:19:31 +0200 Subject: [PATCH 54/71] Doc: Update screenshots and UI text capitalization for IncrediBuild Change-Id: Ibc58a1dea78fdaabf1ebcef48d4f307556f962f0 Reviewed-by: Christian Kandeler --- ...eator-incredibuild-build-steps-general.png | Bin 6881 -> 9439 bytes ...eator-incredibuild-build-steps-windows.png | Bin 11710 -> 9427 bytes ...reator-projects-incredibuild-building.qdoc | 19 +++++++++--------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-incredibuild-build-steps-general.png b/doc/qtcreator/images/qtcreator-incredibuild-build-steps-general.png index 44be472332c6cbf03e2faa17d649ae45afe289da..96dcf371cac3cb4b89e62853c7e7fc61ce9a77e5 100644 GIT binary patch literal 9439 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 diff --git a/doc/qtcreator/images/qtcreator-incredibuild-build-steps-windows.png b/doc/qtcreator/images/qtcreator-incredibuild-build-steps-windows.png index c9767fe860effe2fcc557b4bd0e9549a2fc00e32..3077759fcbc90b97cc9f5f812ef865cb794f011c 100644 GIT binary patch literal 9427 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 literal 11710 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