Compare commits

..
110 Commits
Author SHA1 Message Date
Eberhard Graether ee1fd9c38b logic: Unblock UI when aborting indexing after partial refresh warning 2019-04-23 17:08:10 +02:00
mlangkabel 9e9d488834 data: added manual tests for python sourcegroup 2019-04-23 16:53:32 +02:00
mlangkabel 42cd0f05d7 logic: don't allow partial re-indexing for python source groups 2019-04-23 16:49:11 +02:00
mlangkabel b46b9d157d data: fix EULA date 2019-04-23 15:46:41 +02:00
Eberhard Graether 550ce9c7df logic: Start automatic update checks on second day of use
* Added status messages for update check
2019-04-23 14:28:56 +02:00
Eberhard Graether 76aed77f59 ui: renamed 'relations' to 'references' in overview stats 2019-04-23 14:14:49 +02:00
mlangkabel 25325244d7 logic: update version of python indexer 2019-04-23 13:30:06 +02:00
Eberhard Graether a00cdc18ca ui: Added "Show Definition in IDE" action to graph context menu for nodes (issue #687) 2019-04-23 13:15:56 +02:00
Eberhard Graether 4984e23c07 ui: Increased contrast in bright color scheme 2019-04-23 13:08:34 +02:00
Eberhard Graether 1f6179c1b8 logic: Delete log files older than a month (issue #676) 2019-04-23 13:02:55 +02:00
Eberhard Graether 02835ff59a ui: show multi-level inheritance edge in graph legend
* and added "multi-level" to tooltip
2019-04-23 10:07:33 +02:00
Eberhard Graether ff9467ccae ui: Fixed first character in search autocompletion list type string sometimes slightly cut 2019-04-23 09:34:34 +02:00
Eberhard Graether f9c2ff7c9f build: Updated docker images to clang 8 2019-04-23 08:18:39 +02:00
Eberhard Graether 4def43086e build: Updated to clang 8
* updated "runToolOnCodeWithArgs" from clang 3.7 code to clang 8 code
* fixed "clang-tool" may have occurred in compile command twice
2019-04-19 14:08:11 +02:00
Eberhard Graether 4dd032dcff ui: Multi-column layout within access nodes if no child node has edges
* use multiple columns for access nodes if no child has edges
* try to layout close to a square
* layout neighboring accesses to the width of the largest
* increase threshold to hide children on parent activation to 100
* use square layouting in inheritance trees as well
2019-04-16 16:24:38 +02:00
mlangkabel 92192659d9 ui: add python syntax highlighting for "self" 2019-04-09 14:13:57 +02:00
mlangkabel 7b514173c3 ui: print version number of used SourcetrailPythonIndexer in sourcegroup selection ui 2019-04-09 10:36:45 +02:00
Eberhard Graether edf319cde9 data: removed directory data/gui/installer and moved EULA files to data/license
* moved EULA files to data/license
* moved 3rd party license to data/license
* updated paths in installer scripts
2019-04-08 18:25:13 +02:00
mlangkabel f7d3275e89 logic: make python environment path configurable in project settings 2019-04-08 13:09:52 +02:00
mlangkabel 045a3a4e50 logic: Added "Empty Python" Sourcegroup to project setup
The respective release of the SourcetrailPythonIndexer project is automatically downloaded from GitHub when the setup script is executed.
2019-04-02 15:54:17 +02:00
Eberhard Graether 5d672fafc4 ui: edit search element on backspace instead of deleting (issue #681) 2019-03-20 14:47:39 +01:00
Eberhard Graether b02064a160 license: Implemented new license format
* Implemented new format splitting user, version, and usage period into separate lines
* Refactored all classes: License, LicenseGenerator, LicenseChecker
* Removed redundant license check hash from ApplicationSettings, don't generate, store and check it anymore
* Moved license checking and encoding logic to LicenseChecker
* Moved default for license generation to main.cpp
* Refactored license checking logic in whole app, removed involved message types
* Added LicenseCheckerTestSuite for checking all legacy and current license types
* Generate new license type lifelong
2019-03-18 14:49:52 +01:00
mlangkabel 6ff7d22641 data: update EULA to allow for lifelong licenses 2019-03-12 15:48:37 +01:00
mlangkabel db569ee551 logic: improved fulltext search performance (issue #680)
* move to multithreaded implementation
* omit unnecessary work
2019-03-12 11:16:49 +01:00
mlangkabel b6031fdb3a ui: fixed tooltips were not resizing if app font size was changed on windows 2019-03-11 18:01:16 +01:00
mlangkabel 65f9bdb976 build: use WIX Heat to harvest samples and data for building the windows installer 2019-03-11 09:53:58 +01:00
Eberhard Graether 1c11cd5e8c logic: Fixed crash when closing license window on force entering license 2019-02-26 15:39:13 +01:00
mlangkabel 91e2c2e7e5 ui: replace invalid characters in project name during project creation (issue #671) 2019-02-25 12:43:32 +01:00
mlangkabel 478f97d66b build: add syntax highlighting rules to portable windows package (issue #672) 2019-02-25 11:17:08 +01:00
Eberhard Graether 6ca5208ab5 build: Changelog for 2019.1.11 2019-02-12 12:45:46 +01:00
mlangkabel ad34bcd9e1 data: added python syntax highlighting rules to windows installer 2019-02-05 14:21:18 +01:00
Eberhard Graether e3b5e01435 logic: Show errors when executing custom commands in info message 2019-02-05 14:16:52 +01:00
mlangkabel b0cdd23fb3 UI: mention CDB can be generated by Qt Creator 2019-02-04 18:14:07 +01:00
mlangkabel 0ce7d93cef test: updated custom command test to index python code 2019-02-04 17:44:41 +01:00
mlangkabel 82a3c06a9d logic: implemented using regex capture ranges for syntax highlighting rules
* only first capture will be highlighted (-> only use one capture range per regex
* non-capturing braces can be used with start: "(?:" and end: ")"
2019-02-04 16:07:20 +01:00
Eberhard Graether 92c8c282f5 logic: Fixed qualifier locations not used in reference navigation and only highlighted on hovering 2019-02-04 02:04:38 +01:00
Eberhard Graether 463d3ebd4c ui: Fixed error count in status bar not restored after discarding interrupted index 2019-02-03 23:47:12 +01:00
Eberhard Graether 01ac38dd8a ui: Fixed inheritance chains not correctly layouted 2019-02-03 17:48:09 +01:00
Eberhard Graether f7eb1fc160 data: Added highlighting rules for Python
* fixed multiline highlights to work for any highlight type
* erase priority ranges contained within others
2019-02-03 15:53:40 +01:00
Eberhard Graether 03573abc3b ui: Fixed edge case in multiline CXX highlighting 2019-02-03 13:35:05 +01:00
Eberhard Graether 7d746ba947 logic: Fixes in header path detection
* Rerun header path detection when only cxx header path is present after update in migration
* Check if path exists in header and framework path detection on mac/linux
2019-01-29 13:49:40 +01:00
mlangkabel 5dcecdb3bd ui: fixed status error may not show up if custom command fails on windows 2019-01-21 16:38:47 +01:00
Eberhard Graether 6f0cc614e2 ui: Fixed right click on edge activates it on Windows 2019-01-21 15:46:21 +01:00
Eberhard Graether 7d30709306 logic: Fixes and improvements for C/C++ compiler header path handling
* Always add compiler header path when prefilling on first start, regardless of successful detection
* Show compiler header path in path list box on top and readonly
* Prepend compiler header path on Windows in system header path compiler flags, append otherwise
* Show warning when saving ApplicationSettings if compiler header path is not in global include paths
* Show warning when saving ApplicationSettings if there is another path containing compiler headers
2019-01-21 15:18:31 +01:00
mlangkabel 3eb9211520 logic: added option to execute custom indexer commands in parallel 2019-01-21 13:28:51 +01:00
Eberhard Graether 85bd0d39c3 ui: Fixed graph layout middle column offset to move all buckets in the same direction 2019-01-21 13:13:04 +01:00
Eberhard Graether f7b8563e57 ui: Align graph layout buckets in middle colum at middle gap to avoid edges going through nodes 2019-01-20 23:24:11 +01:00
Eberhard Graether f4859ee094 ui: Improved line number disappearing fix 2019-01-15 00:00:12 +01:00
Andreas Stallinger 711cd6ce1c ui: Fixed line numbers disappearing on hover on Linux 2019-01-14 18:27:19 +01:00
mlangkabel e3c9f12012 logic: fixed initialization of header search paths on first start
* updated version of fallback ApplicationSettings.xml to current settings version
* removed is-empty-check when pre-filling settings at the first start of Sourcetrail
2019-01-14 17:22:22 +01:00
Eberhard Graether fc64f1a958 ui: Recommended project setup from CDB and moved empty setup at end of list 2019-01-14 17:20:37 +01:00
Eberhard Graether 21ac50c204 ui: double click in project setup list box to add new item 2019-01-14 16:37:44 +01:00
mlangkabel 2d2f8f4f31 data: add java dependencies to repository
* this helps us prevent non-intended software updates which would require changes in code and windows installer
2019-01-14 10:02:19 +01:00
Eberhard Graether 2bc90c07bf ui: Only bundle importing files when import edge present 2019-01-10 23:13:18 +01:00
Eberhard Graether 08dc7ec98b ui: Prevent flickering of edges when going back after multiple edge activations 2019-01-10 22:56:14 +01:00
Eberhard Graether 3014dd35a8 logic: Fixed relative paths not working Code::Blocks project files (issue #663)
* Index non-target files if no others available
2019-01-10 22:11:05 +01:00
Eberhard Graether 7d94302712 ui: Remove virtual nodes in depth graph edges when moving nodes (issue #639) 2019-01-10 16:52:40 +01:00
Eberhard Graether 934131b877 logic: Added exception handling for HTTP request exceptions in update checker (issue #659) 2019-01-10 16:01:49 +01:00
Eberhard Graether 545969161e ui: Clear screen search matches when anything in the view changes (issue #660) 2019-01-10 15:53:09 +01:00
Eberhard Graether 322c353898 ui: Wrap lines in status and error table (issue #658) 2019-01-10 15:22:56 +01:00
Eberhard Graether 53c4ac77cf bin: reverted accidental change in tictactoe sample 2019-01-08 14:31:34 +01:00
Eberhard Graether 54f989f6f5 ui: Also elide name of active node if it has more than 100 characters (issue #652) 2019-01-08 14:25:28 +01:00
Eberhard Graether d6a07e9477 ui: Added link to changelog to help menu (issue #653) 2019-01-08 14:17:14 +01:00
Eberhard Graether 29d5ae2cd0 build: Changelog for 2018.4.45 2019-01-08 14:12:13 +01:00
Eberhard Graether 5b787e19d4 src: added exception handling to file reading in TextAccess 2019-01-08 14:10:08 +01:00
mlangkabel b4ea675c9a logic: fixed custom commands
* allow filesystem to rename temp db after indexing
* changed custom command variable syntax
* adjusted test checklist for custom commands
2018-12-18 15:02:45 +01:00
mlangkabel e3940fdf19 logic: skip project settings migration if version is 0 2018-12-18 13:23:28 +01:00
mlangkabel 6d2c89b127 data: updated windows installer 2018-12-18 11:42:44 +01:00
Eberhard Graether d091fc857b ui: fixed active code view mode button could be unchecked 2018-12-17 23:21:38 +01:00
Eberhard Graether 4152deb15e test: Fixed typos and issues in manual tests 2018-12-17 23:06:15 +01:00
Eberhard Graether 22b1b0cc40 build: fixed missing include on linux/gcc 2018-12-17 16:54:36 +01:00
Eberhard Graether 19190f4e5e logic: Suggest full reindex after changing custom command 2018-12-17 16:33:52 +01:00
Eberhard Graether f169805fbc data: record Clang Invocation errors as errors when nothing is recorded 2018-12-17 15:29:49 +01:00
Eberhard Graether 86190675a2 ui: Show Database Version in About and Custom Command Source Group description 2018-12-17 14:49:04 +01:00
Eberhard Graether 95e121159f ui: fixed annotations stay highlighted after hovering in tooltip list 2018-12-17 02:05:58 +01:00
Eberhard Graether 797bf2fee5 logic: Show error updates during custom command indexing
* fixed code view showing all locations when switching view mode while showing errors
2018-12-17 00:27:16 +01:00
Eberhard Graether dd4a880ec3 ui: Show overview bundles for non-indexed or symbol types if no others available 2018-12-16 23:51:53 +01:00
Eberhard Graether 1dabbab599 ui: Extracted syntax highlighting rules for java and cpp to files
* pass file language from storage to code view
* load syntax highlighting rules files from install directory "syntax_highlighting_rules"
* files must be named <language_identifier>.rules to make syntax highlighting work
2018-12-16 22:59:07 +01:00
Eberhard Graether a45dcb8a01 project: changed custom command parameter $STORAGE_VERSION to $DB_VERSION 2018-12-16 13:57:56 +01:00
mlangkabel 111e8a5588 logic: log the first 20.000 characters of clang invocations if verbose indexer logging is disabled 2018-12-14 17:56:33 +01:00
mlangkabel 92f4a9e056 logic: record language for files 2018-12-12 15:50:29 +01:00
Eberhard Graether d3d5b961ff data: Replaced NameDelimiterType in NameHierarchy with std::wstring to allow use with arbitrary delimiters 2018-12-11 16:29:08 +01:00
Eberhard Graether 6d5a3c047d logic: Added SourceGroupCustomCommand to use with SourcetrailDB binaries
* Added new Source Group type SourceGroupCustomCommand to UI and ProjectSettings
* The Source Group executes a specified command on every source file
* The variables $SOURCE_PATH, $PROJECT_PATH, $DB_PATH, $STORAGE_VERSION can be passed
* The commands are executed after all other source groups finished indexing
* The command is executed with working directory set to project directory
* Errors during command execution are shown as status update and in the Status View
* SourceGroupCustomCommand cannot be partially cleared, when one file needs clearing the project must be fully re-indexed
2018-12-11 14:05:26 +01:00
mlangkabel 21d947ed6c src: updated SymbolKind enum
* removed SymbolKinds for Parameter and LocalSymbol, because these are not stored as symbols inside the database
* added Module symbol kind for Python
2018-12-10 16:26:38 +01:00
Eberhard Graether 6d5937d18f ui: Fixed indexed source files not updated on changes in project setup
* Now updated when pressing "Show Files" button
2018-12-06 19:51:28 +01:00
Eberhard Graether c7cc70c22e build: Fixed issue in sourcetrail.sh Linux script (issue #638) 2018-12-06 18:08:40 +01:00
Eberhard Graether b47a0b5b72 logic: Inspect errors during indexing (issue #235)
* Enabled errors table during indexing
* Store intermediate errors in StorageCache
* Open tab for errors if no tab yet
* "Show errors" for file disabled during indexing
* Hide indexing dialogs with ESC instead of stopping indexing
2018-12-06 15:46:42 +01:00
Eberhard Graether 09c6155583 ui: Fixed header path selection also preselects non exsiting paths (issue #640) 2018-12-06 11:24:29 +01:00
Eberhard Graether 7a0edaec06 ui: Fixed graph node centering shows right end when node has greater width than view 2018-12-05 16:33:51 +01:00
Eberhard Graether 242ba3c2c7 data: refactored indexer log messages 2018-12-05 14:08:51 +01:00
Eberhard Graether dc76661a53 ui: fixed multiple multiline comments within one line not correctly highlighted 2018-12-05 00:20:46 +01:00
Eberhard Graether a044e17fdc ui: Reduced code view snippet style 2018-11-30 22:40:07 +01:00
Eberhard Graether bdce9a1841 test: Added graph view UI tests 2018-11-30 22:34:52 +01:00
mlangkabel a51799c279 logic: Store locations of errors in source_location table of DB 2018-11-30 16:02:10 +01:00
Eberhard Graether 34691a0555 ui: Display cmake export compile commands flag in project setup without space to avoid error on copy & paste 2018-11-28 16:04:32 +01:00
Eberhard Graether db69b45c58 utility: Don't shrink shared memory below initial size (issue #636) 2018-11-27 13:18:07 +01:00
mlangkabel f7ee5d0d39 src: simplify adding node hierarchies in ParserClient
* removed unnecessary NodeType parameter from ParserClientImpl addNodeHierarchy
2018-11-26 08:55:26 +01:00
Eberhard Graether 267d6b2eb7 logic: Fixed and improved indexing interruption (issue #634)
* Fixed indexing can be interrupted when dialog hidden
* Clear intermediate storages when interrupting
* Abort waiting for less queued storages when indexing interrupted
* Don't index another file when indexing was already interrupted
* Moved indexing interrupted progress dialog to TaskBuildIndex
* Use MessageIndexingInterrupted instead of MessageInterruptTasks
2018-11-23 15:33:20 +01:00
Eberhard Graether 308954635e ui: Fixed unhovering source location does not remove graph highlight 2018-11-21 16:01:17 +01:00
Eberhard Graether 8e0a60eec7 data: Reduced number of storages in shared memory queue until indexer starts waiting to 2 to save memory 2018-11-21 11:50:20 +01:00
Eberhard Graether 7ada0b56f9 build: Changelog for release 2018.4 2018-11-21 11:42:18 +01:00
mlangkabel 3e16235c12 src: changed name of template parameter symbol kind 2018-11-16 12:52:57 +01:00
mlangkabel e4f0269d94 logic: only log clang invocation in verbose indexer mode 2018-11-13 11:04:26 +01:00
Eberhard Graether c7afb0910d logic: Added weekday condition to news API 2018-11-12 23:40:07 +01:00
mlangkabel fb95762293 logic: fixed: search activates wrong symbol if multiple potential matches share the same "long" symbol name 2018-11-12 16:31:41 +01:00
Eberhard Graether 6490191972 ui: Fixed code file content requests in background tabs failing 2018-11-12 16:14:42 +01:00
mlangkabel 5d64910083 logic: fixed infinite iteration when trying to solve parent name of C++ template arguments with multiple parent contexts in Clang AST (this is a very rare edge case) 2018-11-12 15:28:54 +01:00
Eberhard Graether 8188fbd7be ui: Fixed multiple empty tabs opened when constantly closing tabs 2018-11-12 15:22:29 +01:00
Eberhard Graether 0169f04a7a data: optimized batch insert statement maxiumum variable use 2018-11-10 23:51:27 +01:00
Eberhard Graether 660482b294 build: Opt out of macOS Mojave dark mode 2018-11-09 19:58:48 +01:00
393 changed files with 10873 additions and 5809 deletions
+2 -1
View File
@@ -2,8 +2,9 @@
/distr/
/deps/
/bin/app/data/projects/ignored/
/bin/app/data/java/lib/
/bin/app/data/projects/ignored/
/bin/app/data/python/
/bin/app/user/log/
/bin/app/user/ApplicationSettings.xml
/bin/app/user/window_settings.ini
+5 -12
View File
@@ -1,7 +1,7 @@
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
IMAGE_64: coatisoftware/centos6_64_qt_llvm:qt5101-llvm700
IMAGE_32: coatisoftware/centos6_32_qt_llvm:qt5101-llvm700
IMAGE_64: coatisoftware/centos6_64_qt_llvm:qt5101-llvm800
IMAGE_32: coatisoftware/centos6_32_qt_llvm:qt5101-llvm800
## Templates ##
@@ -15,7 +15,7 @@ variables:
script:
- ./script/buildonly.sh all
- ./script/buildonly.sh package
- ./script/build.sh release test
# - ./script/build.sh release test
artifacts:
name: "$CI_JOB_NAME"
paths:
@@ -42,10 +42,7 @@ variables:
build:Linux64:
image: $IMAGE_64
only:
- /^release.*$/
- master
- tags
when: manual
cache:
key: cache_linux_64
paths:
@@ -55,16 +52,12 @@ build:Linux64:
build:Linux32:
image: $IMAGE_32
only:
- /^release.*$/
- master
- tags
when: manual
cache:
key: cache_linux_32
paths:
- ccache/
- java_indexer/.m2/repository
when: manual
<<: *build_def
LicenseGenerator:
+94
View File
@@ -1,5 +1,99 @@
### Changelog
#### 2019.1.11
released 2019-02-05
* Mention Compilation Database can be generated by QtCreator since version 4.8
* Code: Fixed qualifier locations were used in reference navigation
* Fixed error count in status bar not restored after discarding interrupted index
* Graph: Fixed layout for inheritance chains
* Added syntax highlighting rules for Python
* Rerun cxx global header path detection if skipped due to error in previous release (issue #664)
* Fixed status error may not show up if custom command fails on Windows
* Graph: Fixed right click activates edge on Windows but should not
* C/C++: Always add compiler header path to global include paths and warn user about possible problems
* Added option to execute custom indexer commands in parallel
* Graph: Align layout in middle column at middle gap to avoid edges going through nodes
* Code: Fixed line numbers disappearing on hover on Linux
* Fixed initialization of header search paths on first start of Sourcetrail
* Project Setup: Highlight project setup from Compilation Database as recommended for C/C++ projects
* Project Setup: Double-click in project setup list boxes adds new line
* Graph: Only bundle as "importing files" when "import" edge is present
* Graph: Prevent flickering of edges when going back after multiple edge activations
* Fixed relative paths not working in Code::Blocks project files (issue #663)
* Graph: Remove virtual nodes in depth-graph edges when moving nodes (issue #639)
* Added exception handling for HTTP request exceptions in update checker (issue #659)
* Clear screen-search matches when the active symbol in the view changes (issue #660)
* Wrap lines in status and error table (issue #658)
* Graph: Elide name of active node if it has more than 100 characters (issue #652)
* Added link to changelog to help menu (issue #653)
#### 2018.4.45
released 2018-12-18
* Code: Fixed active code view mode button can be unchecked and lose it's visual highlight
* C/C++: record Clang invocation errors as errors when nothing else is recorded
* Show Database Version in About and Custom Command Source Group description
* Graph: Show overview bundles for non-indexed or symbol types if no others available
* Code: Extract syntax highlighting rules to .rules files, to allow adding highlighting rules for new languages
* C/C++: Still log the first 20.000 characters of the Clang invocation if verbose indexer logging is disabled
* Added Source Group Custom Command to use with SourcetrailDB binaries
* Fixed indexed source files not updated when clicking "show files" after other changes in project setup
* Linux: Fixed issue in sourcetrail.sh script (issue #638)
* Inspect errors during indexing (issue #235)
* C/C++: Fixed header path selection in Source Group setup also preselects non exsiting paths (issue #640)
* Graph: Fixed graph node centering shows right end when node has greater width than view
* Code: Fixed multiple multiline comments within one line not correctly highlighted
* Code: Changed snippet style, removing per file frame and minimize/snippet buttons
* C/C++: Fixed shrinking shared memory below initial size (issue #636)
* Fixed indexers still waiting until less storages are queued, although indexing was already interrupted (issue #634)
* Fixed interrupting indexing while dialog hidden
* Graph: Fixed nodes and edges stay highlighted after hovering in code
* C/C++: Reduced shared memory consumption during indexing when indexers are faster than db insertion
#### 2018.4.8
released 2018-11-05
* Fixed search activates wrong symbol if multiple potential matches share the same "long" symbol name
* C++: Fixed infinite iteration when solving parent name of C++ template arguments with multiple parent contexts
* C++: Only log Clang tool invocation info when enabling "verbose indexer logging"
* Running shrink on shared memory that is used to transfer data between processes during indexing from time to time
* Added tabs UI to top of main window (issue #215)
* Linux: Fixed no write permission to ~/.config/sourcetrail after installation (issue #625, #626)
* C++: Added type usage edges from parent context for types that occur as template arguments
* C++: Skip recording of implicit local symbols
* Java: Show explicit error message if no Java path provided in preferences
* C/C++: Updated to LLVM/Clang 7.0.0
* Added news box to start screen, showing news returned with daily update check
* Reduced memory usage during project loading by iterating over database entries instead of retrieving in containers
* Code: Added copy action to context menu for code view
* Code: Removed accidental leading spaces in overview project description
* Fixed history menu to show global activation history chronologically
* Fixed handling of multiple active symbols broken when going back in history
* Removed std headers from tutorial
* Show hidden indexing dialog when clicking refresh while indexing is in progress
* Code: Fixed unhovering an active error in code view removed the "active-highlight"
* Fixed shared memory garbage collector mutex unlocking policy when stuck
* Code: Fixed crash on code view scope expansion
* Rewrote indexer data recording API to rely on IDs instead of strings for faster indexer performance
* Removed unnecessary SQLite indexes for smaller database size
* JAVA: display multi-line maven error messages (issue #622)
* Improved indexer storing performance by splitting insertion into multiples of pre-compiled SQLite batch insert statements
* Reduced copies during indexer data recording
* Improved cache lookups in indexer data recording
* Windows: fixed line breaking issues with carriage returns
* C/C++: Reduced waiting time when interrupting indexer processes
* C/C++: Improved name handling and caching performance
* Fixed edge cases in determining files to update/clear when re-indexing
* C/C++: record and display indexer configuration issues (issue #618)
* Windows: Log success of Visual Studio path detector instead of printing to console
* Generate and pass index file commands to indexers one by one to reduce memory consumption
* C/C++: Query files from compilation database one by one to reduce memory consumption
* Java: changed type_argument edges to originate in the generic type or method
* Optimized storage in-memory caches to reduce memory use during indexing
#### 2018.3.55
released 2018-08-31
+47 -2
View File
@@ -38,6 +38,7 @@ set(LIB_UTILITY_PROJECT_NAME "${PROJECT_NAME}_lib_utility")
set(LIB_GUI_PROJECT_NAME "${PROJECT_NAME}_lib_gui")
set(LIB_CXX_PROJECT_NAME "${PROJECT_NAME}_lib_cxx")
set(LIB_JAVA_PROJECT_NAME "${PROJECT_NAME}_lib_java")
set(LIB_PYTHON_PROJECT_NAME "${PROJECT_NAME}_lib_python")
set(LIB_PROJECT_NAME "${PROJECT_NAME}_lib")
set(LICENSE_GENERATOR_PROJECT_NAME "${PROJECT_NAME}_license_generator")
set(TEST_PROJECT_NAME "${PROJECT_NAME}_test")
@@ -241,6 +242,7 @@ add_subdirectory(src/lib)
add_subdirectory(src/lib_cxx)
add_subdirectory(src/lib_gui)
add_subdirectory(src/lib_java)
add_subdirectory(src/lib_python)
add_subdirectory(src/lib_license)
add_subdirectory(src/lib_utility)
add_subdirectory(src/license_generator)
@@ -349,6 +351,7 @@ set_property(
TARGET ${LIB_CXX_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${LIB_CXX_INCLUDE_PATHS}"
"${LIB_LICENSE_INCLUDE_PATHS}"
"${LIB_UTILITY_INCLUDE_PATHS}"
"${LIB_INCLUDE_PATHS}"
)
@@ -405,6 +408,30 @@ add_custom_command(
)
# Lib Python ---------------------------------------------------------------------
add_library(${LIB_PYTHON_PROJECT_NAME} ${LIB_PYTHON_FILES})
create_source_groups(${LIB_PYTHON_FILES})
set_property(
TARGET ${LIB_PYTHON_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${LIB_PYTHON_INCLUDE_PATHS}"
"${LIB_UTILITY_INCLUDE_PATHS}"
"${LIB_INCLUDE_PATHS}"
# "${LIB_GUI_INCLUDE_PATHS}"
)
#target_include_directories(${LIB_PYTHON_PROJECT_NAME} SYSTEM
# PUBLIC ${Boost_INCLUDE_DIRS}
#)
#link_directories(${Boost_LIBRARY_DIRS})
target_link_libraries(${LIB_PYTHON_PROJECT_NAME} ${LIB_UTILITY_PROJECT_NAME} ${LIB_PROJECT_NAME})
# Lib Gui ----------------------------------------------------------------------
# Find includes in corresponding build directories
@@ -448,6 +475,7 @@ set_property(
"${LIB_INCLUDE_PATHS}"
"${LIB_CXX_INCLUDE_PATHS}"
"${LIB_JAVA_INCLUDE_PATHS}"
"${LIB_PYTHON_INCLUDE_PATHS}" # required for QtProjectWizzardContentPathsSource::getFilePaths()
"${LIB_LICENSE_INCLUDE_PATHS}"
"${CMAKE_BINARY_DIR}/src/lib_gui"
"${CMAKE_BINARY_DIR}/src/lib_license"
@@ -509,7 +537,14 @@ endif ()
create_source_groups(${INDEXER_FILES})
target_link_libraries(${APP_INDEXER_NAME} ${LIB_GUI_PROJECT_NAME} ${LIB_CXX_PROJECT_NAME} ${LIB_JAVA_PROJECT_NAME} ${LIB_PROJECT_NAME})
target_link_libraries(
${APP_INDEXER_NAME}
${LIB_PROJECT_NAME}
${LIB_GUI_PROJECT_NAME}
${LIB_CXX_PROJECT_NAME}
${LIB_JAVA_PROJECT_NAME}
${LIB_PYTHON_PROJECT_NAME}
)
if (APPLE)
find_library(CORE_FOUNDATION CoreFoundation)
@@ -526,6 +561,7 @@ set_property(
"${LIB_LICENSE_INCLUDE_PATHS}"
"${LIB_CXX_INCLUDE_PATHS}"
"${LIB_JAVA_INCLUDE_PATHS}"
"${LIB_PYTHON_INCLUDE_PATHS}"
"${CMAKE_BINARY_DIR}/src/lib_gui"
"${CMAKE_BINARY_DIR}/src/lib_license"
)
@@ -570,7 +606,15 @@ endif ()
create_source_groups(${APP_FILES})
target_link_libraries(${APP_PROJECT_NAME} ${LIB_GUI_PROJECT_NAME} ${LIB_CXX_PROJECT_NAME} ${LIB_JAVA_PROJECT_NAME} ${LIB_PROJECT_NAME} ${LIB_LICENSE_PROJECT_NAME})
target_link_libraries(
${APP_PROJECT_NAME}
${LIB_PROJECT_NAME}
${LIB_GUI_PROJECT_NAME}
${LIB_LICENSE_PROJECT_NAME}
${LIB_CXX_PROJECT_NAME}
${LIB_JAVA_PROJECT_NAME}
${LIB_PYTHON_PROJECT_NAME}
)
set_property(
TARGET ${APP_PROJECT_NAME}
@@ -582,6 +626,7 @@ set_property(
"${LIB_LICENSE_INCLUDE_PATHS}"
"${LIB_CXX_INCLUDE_PATHS}"
"${LIB_JAVA_INCLUDE_PATHS}"
"${LIB_PYTHON_INCLUDE_PATHS}"
"${CMAKE_BINARY_DIR}/src/lib_gui"
"${CMAKE_BINARY_DIR}/src/lib_license"
)
+1 -1
View File
@@ -179,7 +179,7 @@
<struct></struct>
<enum></enum>
<typedef></typedef>
<template_parameter_type></template_parameter_type>
<template_parameter></template_parameter>
<type_parameter></type_parameter>
<function></function>
+11 -7
View File
@@ -100,17 +100,18 @@
<navigation>
<background>#494949</background>
<text>#CCCCCC</text>
<line>#CCCCCC</line>
<line>#FFF</line>
</navigation>
<file>
<background>#CCCCCC</background>
<background>#AAAAAA</background>
<hover>#999999</hover>
<title>
<text>black</text>
<normal>#CCCCCC</normal>
<hover>#BBBBBB</hover>
<press>#AAAAAA</press>
<hover>#CCCCCC</hover>
<press>#CCCCCC</press>
<icon>black</icon>
<border>#B1B1B1</border>
<hatching>grey</hatching>
@@ -142,7 +143,7 @@
</line_number>
<syntax>
<normal>#D4D4D4</normal>
<text>#D4D4D4</text>
<directive>#00A0B6</directive>
<keyword>#00BCD6</keyword>
<type>#FF5961</type>
@@ -283,9 +284,9 @@
<typedef>
<like>type</like>
</typedef>
<template_parameter_type>
<template_parameter>
<like>type</like>
</template_parameter_type>
</template_parameter>
<type_parameter>
<like>type</like>
</type_parameter>
@@ -348,6 +349,9 @@
<normal>#B05151</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
+29 -25
View File
@@ -27,27 +27,27 @@
<background>white</background>
<button>
<normal>#D0D0D0</normal>
<hover>#A2A2A2</hover>
<press>#727272</press>
<disabled>#F2F2F2</disabled>
<normal>#B0B0B0</normal>
<hover>#828282</hover>
<press>#626262</press>
<disabled>#E2E2E2</disabled>
<icon>white</icon>
<icon_disabled>#CECECE</icon_disabled>
<icon_disabled>#9E9E9E</icon_disabled>
</button>
<field>
<text>black</text>
<background>#D0D0D0</background>
<border>#D0D0D0</border>
<highlight>#A2A2A2</highlight>
<background>white</background>
<border>#B0B0B0</border>
<highlight>#929292</highlight>
</field>
<popup>
<text>black</text>
<by_text>#525252</by_text>
<background>white</background>
<highlight>#D0D0D0</highlight>
<line>#D0D0D0</line>
<highlight>#C0C0C0</highlight>
<line>#C0C0C0</line>
</popup>
<query>
@@ -104,13 +104,14 @@
</navigation>
<file>
<background>#D0D0D0</background>
<background>#D8D8D8</background>
<hover>#E0E0E0</hover>
<title>
<text>black</text>
<normal>#D0D0D0</normal>
<hover>#B2B2B2</hover>
<press>#A2A2A2</press>
<hover>#C0C0C0</hover>
<press>#B5B5B5</press>
<icon>black</icon>
<border>white</border>
<hatching>bright</hatching>
@@ -126,27 +127,27 @@
<background>white</background>
<title>
<text>#A0A0A0</text>
<text>#909090</text>
<background>transparent</background>
<hover>#F5F5F5</hover>
</title>
<line_number>
<text>black</text>
<inactive_text>#A0A0A0</inactive_text>
<inactive_text>#909090</inactive_text>
<background>white</background>
<marker>
<active>#D0D0D0</active>
<active>#C0C0C0</active>
<focus>#727272</focus>
</marker>
</line_number>
<syntax>
<normal>black</normal>
<text>black</text>
<directive>#1B8856</directive>
<keyword>#1B8856</keyword>
<type>#C1492D</type>
<comment>#6B9AB2</comment>
<comment>#3D84A8</comment>
<number>#C1315E</number>
<quotation>#865F9E</quotation>
<function>#B0812C</function>
@@ -232,7 +233,7 @@
<node>
<default>
<fill>
<normal>#E6E6E6</normal>
<normal>#D6D6D6</normal>
</fill>
<border>
<normal>#3C3C3C</normal>
@@ -244,7 +245,7 @@
<normal>black</normal>
</icon>
<hatching>
<normal>#F5F5F5</normal>
<normal>#F0F0F0</normal>
</hatching>
</default>
@@ -275,9 +276,9 @@
<typedef>
<like>type</like>
</typedef>
<template_parameter_type>
<template_parameter>
<like>type</like>
</template_parameter_type>
</template_parameter>
<type_parameter>
<like>type</like>
</type_parameter>
@@ -337,6 +338,9 @@
<normal>#FFDEDE</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
@@ -496,8 +500,8 @@
</annotation_use>
<aggregation>
<normal>#DDD</normal>
<focus>#CCC</focus>
<normal>#CCC</normal>
<focus>#BBB</focus>
</aggregation>
</edge>
</graph>
@@ -506,7 +510,7 @@
<background>white</background>
<bar>
<background>#E0E0E0</background>
<border>#BEBEBE</border>
<border>#A2A2A2</border>
<button>
<text>
<normal>#555</normal>
+8 -4
View File
@@ -100,11 +100,12 @@
<navigation>
<background>#272728</background>
<text>#C5C5C5</text>
<line>#CCC</line>
<line>#999</line>
</navigation>
<file>
<background>#5C5C5C</background>
<hover>#6C6C6C</hover>
<title>
<text>#F7F7F7</text>
@@ -142,7 +143,7 @@
</line_number>
<syntax>
<normal>#F7F7F7</normal>
<text>#F7F7F7</text>
<directive>#1F9C62</directive>
<keyword>#1F9C62</keyword>
<type>#D95233</type>
@@ -278,9 +279,9 @@
<typedef>
<like>type</like>
</typedef>
<template_parameter_type>
<template_parameter>
<like>type</like>
</template_parameter_type>
</template_parameter>
<type_parameter>
<like>type</like>
</type_parameter>
@@ -340,6 +341,9 @@
<normal>#521B1F</normal>
</hatching>
</namespace>
<module>
<like>namespace</like>
</module>
<package>
<like>namespace</like>
</package>
@@ -14,5 +14,5 @@
<recent_project>./projects/javaparser/javaparser.srctrlprj</recent_project>
</recent_projects>
</user>
<version>1</version>
<version>6</version>
</config>
+21 -8
View File
@@ -116,10 +116,9 @@
#code_file {
background-color: <color:code/snippet/background>;
border: 2px solid <color:code/file/background>;
border-radius: 12px;
margin-bottom: 0px;
border-bottom: 1px solid <color:code/file/background>; /* last file only */
font-size: <setting:font_size>px;
padding-bottom: 7px;
}
#title_bar, #title_bar_single {
@@ -128,9 +127,12 @@
border: none;
}
#title_bar:hover {
background-color: <color:code/file/hover>;
}
#title_bar[hovering=false] {
border-top-left-radius: 7px;
border-top-right-radius: 7px;
border-top: 1px solid <color:code/navigation/line>;
}
#title_bar_single {
@@ -143,13 +145,13 @@
}
#title_button {
background-color: <color:code/file/title/normal>;
background-color: transparent;
border: none;
border-radius: 3px;
color: <color:code/file/title/text>;
font-size: <setting:font_size>px;
padding: 2px 4px;
margin: 1px 8px;
margin: 1px 8px 1px 2px;
}
#title_bar_single #title_button {
@@ -180,7 +182,7 @@
#code_file #code_snippet {
background-color: <color:code/snippet/background>;
border-top: 2px solid <color:code/file/background>;
border-top: 1px solid <color:code/file/background>;
font-size: <setting:font_size>px;
}
@@ -190,6 +192,7 @@
color: <color:code/snippet/title/text>;
font-family: "<setting:font_name>";
font-size: <setting:font_size>px;
padding-bottom: 2px;
}
#code_file #code_snippet #scope_name:hover {
@@ -222,6 +225,16 @@
selection-background-color: <color:code/snippet/selection/background>;
}
#title_bar #expand_button, #title_bar_single #expand_button {
background: transparent;
border: none;
margin: 3px;
max-height: 16px;
max-width: 16px;
margin-left: 8px;
margin-right: 0px;
}
#title_bar #file_button, #title_bar_single #file_button {
background: transparent;
border: none;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

-655
View File
@@ -1,655 +0,0 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f60\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f61\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f63\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f64\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f65\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f66\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
{\f67\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f68\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f380\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f381\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
{\f383\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f384\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f387\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f388\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
{\f410\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f411\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f413\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f414\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\f417\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f418\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp
\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1031\langfe1031\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 \snext0 \sqformat \spriority0 Normal;}
{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1031\langfe1031\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031
\snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 \snext15 \sqformat \spriority1 \styrsid2585574 No Spacing;}}{\*\listtable{\list\listtemplateid-193139844\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid27729033}{\list\listtemplateid1375513438\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid96100686}{\list\listtemplateid300595816\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid253251691}{\list\listtemplateid76031560\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid300041076}{\list\listtemplateid-1730514658\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid311452362}{\list\listtemplateid1740521432\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid329989798}{\list\listtemplateid-2138013748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid337853658}{\list\listtemplateid-1979967268\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid407533594}{\list\listtemplateid-2064771084\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid520895476}{\list\listtemplateid266901952\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid559290299}{\list\listtemplateid1270663972\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid578827701}{\list\listtemplateid1940422034\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid611281618}{\list\listtemplateid-116596600\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid720053339}{\list\listtemplateid-1917002558\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid731805719}{\list\listtemplateid2071086706\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid777916200}{\list\listtemplateid-331980480\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid846598160}{\list\listtemplateid-1896473156\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid929775564}{\list\listtemplateid-1405195412\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid936400082}{\list\listtemplateid1352454040\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1164903365}{\list\listtemplateid2109785220\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1207254615}{\list\listtemplateid-1006051000\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1352025351}{\list\listtemplateid-204324422\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1380668622}{\list\listtemplateid948060056\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1422531975}{\list\listtemplateid1664367632\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1447502227}{\list\listtemplateid-1464407968\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1509439923}{\list\listtemplateid2097152234\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1638951864}{\list\listtemplateid248937908\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1951863245}}{\*\listoverridetable{\listoverride\listid846598160\listoverridecount0\ls1}{\listoverride\listid253251691\listoverridecount0\ls2}
{\listoverride\listid731805719\listoverridecount0\ls3}{\listoverride\listid1638951864\listoverridecount0\ls4}{\listoverride\listid1207254615\listoverridecount0\ls5}{\listoverride\listid27729033\listoverridecount0\ls6}{\listoverride\listid611281618
\listoverridecount0\ls7}{\listoverride\listid1352025351\listoverridecount0\ls8}{\listoverride\listid1380668622\listoverridecount0\ls9}{\listoverride\listid936400082\listoverridecount0\ls10}{\listoverride\listid1447502227\listoverridecount0\ls11}
{\listoverride\listid300041076\listoverridecount0\ls12}{\listoverride\listid578827701\listoverridecount0\ls13}{\listoverride\listid520895476\listoverridecount0\ls14}{\listoverride\listid1164903365\listoverridecount0\ls15}{\listoverride\listid929775564
\listoverridecount0\ls16}{\listoverride\listid777916200\listoverridecount0\ls17}{\listoverride\listid337853658\listoverridecount0\ls18}{\listoverride\listid1509439923\listoverridecount0\ls19}{\listoverride\listid96100686\listoverridecount0\ls20}
{\listoverride\listid720053339\listoverridecount0\ls21}{\listoverride\listid1422531975\listoverridecount0\ls22}{\listoverride\listid329989798\listoverridecount0\ls23}{\listoverride\listid311452362\listoverridecount0\ls24}{\listoverride\listid559290299
\listoverridecount0\ls25}{\listoverride\listid407533594\listoverridecount0\ls26}{\listoverride\listid1951863245\listoverridecount0\ls27}}{\*\rsidtbl \rsid2585574\rsid3083065\rsid4724161\rsid5248660\rsid5338747\rsid9004326\rsid9579172\rsid10582864
\rsid14037707}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Thomson, Clive}{\operator Malte}{\creatim\yr2017\mo6\dy20\hr14}
{\revtim\yr2018\mo4\dy16\hr18\min10}{\version10}{\edmins0}{\nofpages5}{\nofwords1945}{\nofchars10465}{\*\company CSR}{\nofcharsws12386}{\vern32859}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1440\margr1440\margt1417\margb1134\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120
\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot3083065 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\fs22\lang1031\langfe1031\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1031\langfenp1031 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 Sourcetrail
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 Software License Agreement (\'93\loch\f31506 \hich\f31506 AGREEMENT\'94\loch\f31506 )
\par \hich\af31506\dbch\af31505\loch\f31506 Last date of change: 2018-0}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 4}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 -}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid4724161 \hich\af31506\dbch\af31505\loch\f31506 23}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par \hich\af31506\dbch\af31505\loch\f31506 BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOM\hich\af31506\dbch\af31505\loch\f31506
ING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 1. DEFINITIONS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 "SOFTWARE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls21\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 a version of the cross-platform source code explorer kn\hich\af31506\dbch\af31505\loch\f31506
own as Sourcetrail in executable form. The version is defined by the two leading numbers of the version string (e.g. the version of Sourcetrail 2017.1.x is version 2017.1); and}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 documentation for that version of Sourcetrail; and}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 minor updates included i\hich\af31506\dbch\af31505\loch\f31506
n software maintenance which are indicated by an increase in the digits that follow the first two leading numbers of the version string (e.g. the update from Sourcetrail 2017.1.0 to Sourcetrail 2017.1.1 is a minor update).
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "LICENSE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 the permission\hich\af31506\dbch\af31505\loch\f31506
to use and distribute the SOFTWARE as defined by the following sections of this document. The permissions granted especially depend on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "LICENSOR" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 Coati Sof\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 tware KG, having a place of business at Jakob-Haringer-Stra\'df\loch\f31506 e 1/127, 5020 Salzburg, Austria.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "LICENSEE" means:}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls22\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 the individual who purchased a LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 the individual who was granted a LICENSE(s) for the SOFTWARE by LICENSOR;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 the c\hich\af31506\dbch\af31505\loch\f31506 ompany, corporation, organization, or legal entity that purchased a LICENSE(s) for the SOFTWARE;}{
\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 the company, corporation, organization, or legal entity that was granted a LICENSE(s) for the SOFTWARE by LICENSOR.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "PARTIES" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls23\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 both LICENSOR and LICE\hich\af31506\dbch\af31505\loch\f31506 NSEE collectively.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "AUTHORIZED USER" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls23\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid4724161\charrsid4724161 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid4724161\charrsid4724161 \hich\af31506\dbch\af31505\loch\f31506
an employee who is nameable on demand and might at any time use the SOFTWARE, of LICENSEE. Every AUTHORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWAR
\hich\af31506\dbch\af31505\loch\f31506
E anymore and said second user may start to use the SOFTWARE. At no time may the simultaneous number of users known by name exceed the agreed-upon number of AUTHORIZED USER(s). For each LICENSE that has been acquired before May 23th 2018 every AUTHORIZED
\hich\af31506\dbch\af31505\loch\f31506 U\hich\af31506\dbch\af31505\loch\f31506 SER known by name can be replaced by another user known by name instantly.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\tab
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 "ACTIVATION KEY" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name\hich\af31506\dbch\af31505\loch\f31506
of LICENSEE, the license type, the agreed-upon number of AUTHORIZED USERS, an upper limit for the licensed SOFTWARE version or an expiration date, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genu
\hich\af31506\dbch\af31505\loch\f31506 i\hich\af31506\dbch\af31505\loch\f31506 ne copy of the SOFTWARE for intended commercial use.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 2. GRANT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The SOFTWARE is handed over to LICENSEE for its intended use. The scope of the intended use permitted by this AGREEMENT depends on whether a SOFTWARE Non-Commercial License or a SOFTWARE Comm
\hich\af31506\dbch\af31505\loch\f31506
ercial License is agreed-upon. If a SOFTWARE Non-Commercial License is agreed-upon LICENSEE is allowed to use the SOFTWARE solely for non-commercial purposes. A purpose is non-commercial only if it is in no manner primarily intended for or directed toward
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 commercial advantage or private monetary compensation.
\par \hich\af31506\dbch\af31505\loch\f31506 Examples of non-commercial purposes:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls24\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 you are using the SOFTWARE to work on open-source projects for free;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are a student and you are using the SOFTWARE for your academic projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are usin\hich\af31506\dbch\af31505\loch\f31506
g the SOFTWARE in your spare time to work on the desktop application of your local football club for free.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 Examples of commercial purposes, i.e. when you will need a Commercial License:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls25\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 you are using the SOFTWARE to work on open-source as well as on your\hich\af31506\dbch\af31505\loch\f31506 company's projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are a student and you are using the SOFTWARE for your work as a freelancer;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 you are using the SOFTWARE in your spare time to work on the desktop application of your local football club and you are getting paid for that.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 Subjec\hich\af31506\dbch\af31505\loch\f31506 t to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid9004326
\hich\af31506\dbch\af31505\loch\f31506 a worldwide, non-transferable}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506
, non-exclusive, non-sub-licensable, limited LICENSE that allows:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls26\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 LICENSEE to distribute (an) ACTIVATION KEY(s) to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and AUTHORIZE\hich\af31506\dbch\af31505\loch\f31506
D USER(s) to install the SOFTWARE on any number of computer PCs where potential use of the full functionality of the SOFTWARE is restricted exclusively to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and AUTHORIZED USER(s) to use the command-line interface of the SOFTWA\hich\af31506\dbch\af31505\loch\f31506
RE without unlocking the full functionality of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;}{\rtlch\fcs1
\af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE and AUTHORIZED USER(s) to truthfully declare th\hich\af31506\dbch\af31505\loch\f31506
eir intend to solely use the SOFTWARE for non-commercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 AUTHORIZED USER(s) to apply any version of the unlocked SOFTWAR\hich\af31506\dbch\af31505\loch\f31506
E that specifies a version number less than or equal to the version number denoted in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a version number, the AUTHORIZED USER is allowed to use any version of the SOFTWA
\hich\af31506\dbch\af31505\loch\f31506 R\hich\af31506\dbch\af31505\loch\f31506 E for a period of time that is limited by the expiration date specified in the ACTIVATION KEY;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 3. RESTRICTIONS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LIC\hich\af31506\dbch\af31505\loch\f31506 ENSEE and AUTHORIZED USER(s) will not, and will have no right to:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls27\adjustright\rin0\lin720\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\hich\af31506\dbch\af31505\loch\f31506 modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise at
\hich\af31506\dbch\af31505\loch\f31506 tempt to discover the source code or underlying ideas or algorithms of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 sell, rent, lease, distribute, or otherwise transfer rights to the SOFTWARE without prior written consent from LICENSOR;}{\rtlch\fcs1 \af31507
\ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 remove any proprietary notices or labels from \hich\af31506\dbch\af31505\loch\f31506 the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \loch\af3\dbch\af31505\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 distribute, use, or transfer an ACTIVATION KEY(s) that has been superseded by an ACTIVATION KEY(s) provided with software maintenance.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2585574 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 4. CONFIDENTIALITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The SOFTWARE contains a feature that will automatically connect to LICENSOR's serve\hich\af31506\dbch\af31505\loch\f31506
rs to check for a new program version. The data sent in this process contains NO POTENTIALLY SENSITIVE INFORMATION. The user can opt-out from this feature.
\par \hich\af31506\dbch\af31505\loch\f31506 Unless a valid non-disclosure agreement exists between the Parties, in which case the terms of that \hich\af31506\dbch\af31505\loch\f31506
non-disclosure agreement shall apply, the following terms shall: Except as necessary for its performance under the AGREEMENT or required by law, LICENSOR shall not disclose to anyone any information furnished by LICENSEE that is marked as confidential or
\hich\af31506\dbch\af31505\loch\f31506 p\hich\af31506\dbch\af31505\loch\f31506 roprietary.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 5. TITLE AND COPYRIGHT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506
Title, ownership rights, intellectual property rights, and copyright to the SOFTWARE, and any copies or portions thereof, shall remain in LICENSOR. The SOFTWARE is protected by European copyright directives, Austrian c
\hich\af31506\dbch\af31505\loch\f31506 opyright laws as well as United States copyright laws and international treaty provisions.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 6. DISCLAIMER OF WARRANTY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WIT\hich\af31506\dbch\af31505\loch\f31506
HOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DI
\hich\af31506\dbch\af31505\loch\f31506 S\hich\af31506\dbch\af31505\loch\f31506 CLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 7. LIMITATION OF LIABILITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506
LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT
\hich\af31506\dbch\af31505\loch\f31506 L\hich\af31506\dbch\af31505\loch\f31506
IABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PR
\hich\af31506\dbch\af31505\loch\f31506 O\hich\af31506\dbch\af31505\loch\f31506
FITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN I
\hich\af31506\dbch\af31505\loch\f31506 N\hich\af31506\dbch\af31505\loch\f31506
FORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 8. TERMINATION
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The LICENSE granted herein shall be perpetual. If LICENSEE fails to comply with any of the terms of \hich\af31506\dbch\af31505\loch\f31506
this AGREEMENT, this AGREEMENT and the rights granted herein will terminate immediately. As such the Non-Commercial LICENSE terminates automatically if the usage of SOFTWARE becomes commercial. LICENSOR may, at its sole discretion and at any time, termina
\hich\af31506\dbch\af31505\loch\f31506 t\hich\af31506\dbch\af31505\loch\f31506 e this AGREEMENT. On termination, LICENSEE must cease using and destroy all copies of the SOFTWARE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 9. EXPORT CONTROLS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LICENSEE shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the Europe\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
an Parliament and of the Council and the Austrian Au\'df\loch\f31506
enwirtschaftsgesetz 2011, BGBl I No. 26/2011. LICENSEE shall not export, re-export or otherwise transfer the SOFTWARE to any country for which the United States or the European Union or Austria maintain\hich\af31506\dbch\af31505\loch\f31506 s
\hich\af31506\dbch\af31505\loch\f31506
an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. LICENSEE represents and warrants that LICENSEE is not located in, unde
\hich\af31506\dbch\af31505\loch\f31506 r\hich\af31506\dbch\af31505\loch\f31506 the control of, or a national or resident of any restricted country or on any such list.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 10. YOUR RESPONSIBILITIES.
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LICENSEE agrees to immediately notify LICENSOR in writing of any misuse, misappropriation or unauthorized use, disclosure, display or \hich\af31506\dbch\af31505\loch\f31506
copying of the SOFTWARE that may come to LICENSEE's attention. In addition, LICENSEE agrees to defend, indemnify and hold LICENSOR, its suppliers and any of its directors, officers, employees or affiliates of any of the foregoing harmless from any and all
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506 claims resulting from or arising out of LICENSEE's use of the Software or breach of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 11. THIRD PARTY CREDITS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 Portions of the SOFTWARE utilize or include third party software and other copyrighted materials. Credits, licensing terms, and d\hich\af31506\dbch\af31505\loch\f31506 \hich\f31506
isclaimers for such materials are contained in the installation directory for the SOFTWARE, and are accessible via the \'93\loch\f31506 \hich\f31506 3rd Party Licenses\'94\loch\f31506
dialog for the SOFTWARE. LICENSEE agrees that use of such copyrighted materials is governed by their respective ter\hich\af31506\dbch\af31505\loch\f31506 m\hich\af31506\dbch\af31505\loch\f31506 s.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 12. SEVERABILITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 If a particular term of this AGREEMENT is not enforceable, the unenforceability of that term will not affect any other terms of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 13. HEADINGS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 The section headings used herein are for convenience only and do not affect the interpretation of this AGREEMENT.
\par
\par \hich\af31506\dbch\af31505\loch\f31506
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 14. NO WAIVER
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 LICENSOR's failure to enforce or exercise any part of this AGREEMENT is not a waiver of that part.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 15. ENTIRE AGREEMENT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 T\hich\af31506\dbch\af31505\loch\f31506
his AGREEMENT represents the complete agreement concerning this SOFTWARE between the PARTIES and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both PARTIES. The inclusion of LICENSEE's own
\hich\af31506\dbch\af31505\loch\f31506 t\hich\af31506\dbch\af31505\loch\f31506
erms and conditions is contradicted, unless their validity has explicitly been agreed to. LICENSOR reserves the exclusive right to update this AGREEMENT for new SOFTWARE versions. By using these new SOFTWARE versions the new AGREEMENT supersedes any older
\hich\af31506\dbch\af31505\loch\f31506 \hich\af31506\dbch\af31505\loch\f31506
one. Any action arising out of or relating to this AGREEMENT may be brought exclusively in Salzburg, Austria, and the PARTIES irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1031\langnp1033\insrsid2585574\charrsid10582864 \hich\af31506\dbch\af31505\loch\f31506 CONTACT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574
\par \hich\af31506\dbch\af31505\loch\f31506 If you have questions regarding \hich\af31506\dbch\af31505\loch\f31506 this AGREEMENT, contact:
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 Coati Software KG
\par \hich\af31506\dbch\af31505\loch\f31506 \hich\f31506 Jakob-Haringer-Stra\'df\loch\f31506 e 1/127
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1031\langnp1033\insrsid2585574\charrsid2585574 \hich\af31506\dbch\af31505\loch\f31506 5020 Salzburg
\par \hich\af31506\dbch\af31505\loch\f31506 Austria
\par
\par \hich\af31506\dbch\af31505\loch\f31506 support@sourcetrail.com}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5338747\charrsid2585574
\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
29e245eb2b260a0238fd010000ffff0300504b030414000600080000002100e35a492797060000551b0000160000007468656d652f7468656d652f7468656d65
312e786d6cec594d6f1b4518be23f11f467b6f6327761a4775aad8b11b6852a2d82dea71bc3bde9d66766735334eea1b6a8f484888823850891b0704546a252e
e5d7048aa048fd0bbc33b3bbde89d72469235a417d48bcb3cfbcdf5f33be7aed5eccd0211192f2a4edd52fd73c44129f073409dbdead61ffd29a87a4c2498019
4f48db9b12e95ddb78ffbdab785d45242608f627721db7bd48a9747d6949fab08ce5659e9204de8db988b18247112e05021f01dd982d2dd76aab4b31a6898712
1c03d91d2ca894f8d21691344cbc8d9c7c8f018f4449bde03331d0c489bbc7808383ba86c8a9ec32810e316b7bc02ae04743724f798861a9e045dbab998fb7b4
717509af679b985ab0b7b4af6f3ed9be6c4370b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83aa569632cd467faddec9699640f6
eb3ced6ead596bb8f812fd9539995b9d4ea7d9ca64b1440dc87e6dcce1d76aab8dcd65076f4016df9cc3373a9bddeeaa8337208b5f9dc3f7afb4561b2ede8022
46938339b47668bf9f512f2063ceb62be16b005fab65f0190aa2a1082fcd62cc13b530d8627c978b3e203492614513a4a62919631f22b98be391a05873c0eb04
97ded8255fce2d696648fa82a6aaed7d9862c88a19bd97cf7e78f9ec093abefff4f8fecfc70f1e1cdfffc91272766de3242cef7af1dde77f3dfa04fdf9e4db17
0fbfacc6cb32feb71f3ffdf5972faa81903f33719e7ff5f8f7a78f9f7ffdd91fdf3fac806f0a3c2ac387342612dd2447689fc7a098b18a2b391989f3ed184698
96776c26a1c409d65c2ae8f754e4a06f4e31cbbce3c8d121ae056f0ba81f55c0eb93bb8ec083484c14ade07c238a1de02ee7acc345a5156e685e25330f274958
cd5c4ccab87d8c0fab787771e2f8b73749a172e661e928de8d8823e61ec389c221498842fa1d3f20a442bb3b943a76dda5bee0928f15ba435107d34a930ce9c8
89a6d9a66d1a835fa6553a83bf1ddbecde461dceaab4de22872e12b202b30ae187843966bc8e270ac755248738666583ef6015550939980abf8ceb49059e0e09
e3a81710686d15527c2440df92d36f602859956edf65d3d8450a450faa68ee60cecbc82d7ed08d709c5661073489cad80fe4018428467b5c55c177b99b21fa19
fc809385eebe4d89e3eed3abc12d1a3a22cd0244bf99086d45a8d54e058e69f24fe59851a8c7d6fa17578ea1003effe651854fdfd642bc093da92a13b64f94df
45b89345b7cb4540dffe9abb8527c91e81309f6f3cef4aeebb92ebfde74beea27c3e6ba19dd55628bb7a6eb053b19991e3c523f298323650534676a499922534
8aa00f8b7aa3392292e2cc9446f0352bec0e2e14d8ec4182ab8fa98a06114e61c2ae7b9a482833d2a144299770b433cb95b4351ea674650f864d7d64b0054162
b5cb03bbbca297f3934141c6b49bd09c3f73462b9ac05999ad5cc98882daafc2acae853a33b7ba11cdd43a875ba13238715e35582cac09130882b905acbc0a87
74cd1a4e26989140dbdd36dfdc2dc60b17e92219e180643ed27acffba86e9c94c78ab90c80d8a9f0913ee69d62b512b79626fb1adccee2a432bbc60276b9f75e
c74b7904cfbca413f7443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc3a116bec629785deaa10fb3106e877c256cd89f9acc26cb67de6ce58ab94950878b0a
6bf739859d3a900aa9b6b08c6c6898575908b04473b2f22f37c1ac17a5808df4579062650d82e18d490176745d4bc663e2abb2b34b2bda76f6312ba57ca28818
44c1111ab189d8c7e07e1daaa04f4025dc4d988aa01fe0264d5bdbbc728b739674e5fb2b83b3eb98a511cecaad4ed13c932ddce4712183792a8907ba55ca6e94
3bbf2a26e52f48957218ffcf54d1fd04ae0a5602ed011fee7205463a5fdb1e172ae25085d288fa7d019383a91d102d701b0baf21a8e046d9fc17e450ffb73967
6998b486139fdaa7211214fa918a04217b50964cf49d42ac9ef52e4b9265844c4495c495a9157b440e091bea1ab8aa7bbb87220875534db232607027e3cf7dce
326814ea21a79c6f4e0d297aafcd817f7bf2b1c90c4ab975d80c34b9fd0b112bbaaadd6fb6e7bdb7ac887e311bb31a795600b3522b686569ff8a229cb3d5da8a
35a7f17233170ebc38af312c1603510a173e48ff81fe4785cf880963dd50877c1f6a2b829f1a3431081b88ea4b76f040ba40dac5110c4e76d1069326654d9b8d
4eda6a79b3bee049b7e07bc2d85ab2b3f8fb9cc62e8633979d938b1769ecccc28eadedda425383674fa6282c8df3938c718cf95dabfcc3131fdd05476fc105ff
84296982097e55121846cf81c903487ecbd16cddf81b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f
7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f
2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e31
98720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d98505
28a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c02000013000000000000000000000000
00000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b0000000000000000000000
00002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c000000000000000000000000001402000074
68656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100e35a492797060000551b0000160000000000000000
0000000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000
0000000000000000009c0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000970a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000a0ef
dc729dd5d301feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

-1
View File
@@ -1,7 +1,6 @@
QToolTip {
background-color: #E0E0E0;
color: black;
font-size: <setting:font_size>px;
}
QPushButton {
+2 -1
View File
@@ -134,7 +134,8 @@ QCheckBox:disabled {
#menuButton {
background: white;
border: none;
border: 2px solid #CFD2E0;
border-right: none;
border-radius: 8px;
border-bottom-right-radius: 0px;
border-top-right-radius: 0px;
+444
View File
@@ -0,0 +1,444 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f59\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f60\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
{\f62\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f63\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f64\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f65\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
{\f66\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f67\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f379\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f380\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
{\f382\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f383\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f386\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f387\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp
\f31506\fs22\lang1031\langfe1033\langfenp1033 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext0 \sqformat \spriority0 \styrsid10694613 Normal;}{\*\cs10
\additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31506\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{
\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext15 \sqformat \spriority1 \styrsid13262607
No Spacing;}}{\*\listtable{\list\listtemplateid17829778\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}
\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
\fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
\fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
\fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid32462032}{\list\listtemplateid-1869340118
\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid58018902}{\list\listtemplateid1962457952\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid196238433}{\list\listtemplateid-1642172790\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1063259768}{\list\listtemplateid-285328028\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1391463661}{\list\listtemplateid-1311624652\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1461073771}{\list\listtemplateid-82662746\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid2092114155}}{\*\listoverridetable{\listoverride\listid32462032\listoverridecount0\ls1}{\listoverride\listid1391463661\listoverridecount0\ls2}
{\listoverride\listid1063259768\listoverridecount0\ls3}{\listoverride\listid1461073771\listoverridecount0\ls4}{\listoverride\listid58018902\listoverridecount0\ls5}{\listoverride\listid196238433\listoverridecount0\ls6}{\listoverride\listid2092114155
\listoverridecount0\ls7}}{\*\rsidtbl \rsid8066695\rsid10694613\rsid13262607}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Malte}{\operator Malte}
{\creatim\yr2019\mo4\dy8\hr18\min10}{\revtim\yr2019\mo4\dy23\hr15\min44}{\version2}{\edmins0}{\nofpages5}{\nofwords1729}{\nofchars10895}{\nofcharsws12599}{\vern32859}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect
\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves1\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot13262607\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid10694613\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13262607\charrsid13262607 Sourcetrail
\par Software License Agreement (\'93AGREEMENT\'94)
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8066695 Last date of change: 2019-04-23}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13262607\charrsid13262607
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 1. DEFINITIONS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par "SOFTWARE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 a ve
rsion of the cross-platform source code explorer known as Sourcetrail in executable form. The version is defined by the two leading numbers of the version string (e.g. the version of Sourcetrail 2017.1.x is version 2017.1); and}{\rtlch\fcs1 \af31507
\ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 documentation for that version of Sourcetrail; and}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
minor updates included in software maintenance which are indicated by an increase in the digits that follow the first two leading numbers of the version string (e.g. the update from Sourcetrail 2017.1.0 to Sourcetrail 2017.1.1 is a minor update).
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "LICENSE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
the permission to use and distribute the SOFTWARE as defined by the following sections of this document. The permissions granted especially depend on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "LICENSOR" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
Coati Software KG, having a place of business at Jakob-Haringer-Stra\'dfe 1/127, 5020 Salzburg, Austria.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "LICENSEE" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
the individual who purchased LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 the individual who was granted LICENSE(s) for the SOFTWARE by LICENSOR;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 the company, corporation, organization, or legal entity that purchased LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 the company, corporation, organization, or legal entity that was granted LICENSE(s) for the SOFTWARE by LICENSOR.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "PARTIES" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
both LICENSOR and LICENSEE collectively.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "AUTHORIZED USER" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 an employee who is nameable on demand and might at any time use the SOFT
WARE, of LICENSEE. Every AUTHORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWARE anymore and said second user may start to use the SOFTWARE. At no time
m
ay the simultaneous number of users known by name exceed the agreed-upon number of AUTHORIZED USER(s). For each LICENSE that has been acquired before May 23th 2018 every AUTHORIZED USER known by name can be replaced by another user known by name instantly
.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "ACTIVATION KEY" means:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name of LICENSEE, the license type, the agreed-upon number of AUTHORIZE
D USERS, the upper limit for the licensed SOFTWARE version, the end of the licensed usage period, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genuine copy of the SOFTWARE for intended commercial u
se.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 2. GRANT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par The SOFTWARE is handed over to LICENSEE for its intended use. The scope of the intended use permitted by this AGREEMENT depends on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon. If a SOFTWARE Non-C
ommercial License is agreed-upon LICENSEE is allowed to use the SOFTWARE solely for non-commercial purposes. A purpose is non-commercial only if it is in no manner primarily intended for or directed toward commercial advantage or private monetary compensa
tion.
\par Examples of non-commercial purposes:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
you are using the SOFTWARE to work on open-source projects for free;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are a student and you are using the SOFTWARE for your academic projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are using the SOFTWARE in your spare time to work on the desktop application of your local football club for free.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
Examples of commercial purposes, i.e. when you will need a Commercial License:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
you are using the SOFTWARE to work on open-source as well as on your company's projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are a student and you are using the SOFTWARE for your work as a freelancer;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are using the SOFTWARE in your spare time to work on the desktop application of your local football club and you are getting paid for that.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par Subject to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE a worldwide, non-transferable, non-exclusive, non-sub-licensable, limited LICENSE that allows:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
LICENSEE to distribute (an) ACTIVATION KEY(s) to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to install the SOFTWARE on any number of
computer PCs where potential use of the full functionality of the SOFTWARE is restricted exclusively to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to use the command-line interface of the SOFTWARE without unlocking the full functionality of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to truthfully declare their intend to solely use the SOFTWARE for non-comm
ercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 AUTHORIZED USER(s) to apply any version of the unlocked SOFTWARE that specifies a version number less than or equal to the licensed product version denoted
in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a licensed product version, "unlimited" licensed product version is assumed and all released product versions may be used. This permission is revoked at the end of
the licensed usage period denoted in the ACTIVATION KEY. If the ACTIVATION KEY does not denote the licensed usage period, "unlimited" licensed usage period is assumed and the SOFTWARE may be used perpetually;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 3. RESTRICTIONS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par LICENSEE and AUTHORIZED USER(s) will not, and will have no right to:
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms
of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 sell, rent, lease, distribute, or otherwise transfer rights to the SOFTWARE without prior written consent from LICENSOR;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 remove any proprietary notices or labels from the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 distribute, use, or transfer an ACTIVATION KEY(s) that has been superseded by an ACTIVATION KEY(s) provided with software maintenance.
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 4. CONFIDENTIALITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par The SOFTWARE contains a feature that will automatically connect to LICENSOR's servers to check for a new program version. The data sent in this process contains NO POTENTIALLY SENSITIVE INFORMATION. The user can opt-out from this feature.
\par Unless a valid non-disclosure agreement exists between the Parties, in which case the terms of that non-disclosure agreement shall apply, the following terms shall: Exc
ept as necessary for its performance under the AGREEMENT or required by law, LICENSOR shall not disclose to anyone any information furnished by LICENSEE that is marked as confidential or proprietary.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 5. TITLE AND COPYRIGHT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par Title, ownership rights, intel
lectual property rights, and copyright to the SOFTWARE, and any copies or portions thereof, shall remain in LICENSOR. The SOFTWARE is protected by European copyright directives, Austrian copyright laws as well as United States copyright laws and internati
onal treaty provisions.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 6. DISCLAIMER OF WARRANTY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU
LAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RI
GHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 7. LIMITATION OF LIABILITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par L
ICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT L
I
ABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PRO
F
ITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN IN
F
ORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO
NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 8. TERMINATION
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par The LICENSE granted herein shall be perpetual. If LICENSEE fails to comply with any of the terms of t
his AGREEMENT, this AGREEMENT and the rights granted herein will terminate immediately. As such the Non-Commercial LICENSE terminates automatically if the usage of SOFTWARE becomes commercial. LICENSOR may, at its sole discretion and at any time, terminat
e this AGREEMENT. On termination, LICENSEE must cease using and destroy all copies of the SOFTWARE.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 9. EXPORT CONTROLS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par LICENSEE shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the European Parliament and of the Council and the Austrian Au\'df
enwirtschaftsgesetz 2011, BGBl I No. 26/2011. LICENSEE shall not export, re-export or otherwise transfer the SOFTWARE to any country for which the United States or the European Union or Austria maintains
an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. LICENSEE represents and warrants that LICENSEE is not located in, under
the control of, or a national or resident of any restricted country or on any such list.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 10. YOUR RESPONSIBILITIES.
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par LICENSEE agrees to immediately notify LICENSOR in writing of any misuse, misappropriation or unauthorized use, disclosure, display or c
opying of the SOFTWARE that may come to LICENSEE's attention. In addition, LICENSEE agrees to defend, indemnify and hold LICENSOR, its suppliers and any of its directors, officers, employees or affiliates of any of the foregoing harmless from any and all
claims resulting from or arising out of LICENSEE's use of the Software or breach of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 11. THIRD PARTY CREDITS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par Portions of the SOFTWARE utilize or include third party software and other copyrighted materials. Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the SOFTWARE, and are accessible via the \'93
3rd Party Licenses\'94 dialog for the SOFTWARE. LICENSEE agrees that use of such copyrighted materials is governed by their respective terms.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 12. SEVERABILITY
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par If a particular term of this AGREEMENT is not enforceable, the unenforceability of that term will not affect any other terms of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 13. HEADINGS
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par The section headings used herein are for convenience only and do not affect the interpretation of this AGREEMENT.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 14. NO WAIVER
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par LICENSOR's failure to enforce or exercise any part of this AGREEMENT is not a waiver of that part.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 15. ENTIRE AGREEMENT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par T
his AGREEMENT represents the complete agreement concerning this SOFTWARE between the PARTIES and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both PARTIES. The inclusion of LICENSEE's own
t
erms and conditions is contradicted, unless their validity has explicitly been agreed to. LICENSOR reserves the exclusive right to update this AGREEMENT for new SOFTWARE versions. By using these new SOFTWARE versions the new AGREEMENT supersedes any older
one. Any action arising out of or relating to this AGREEMENT may be brought exclusively in Salzburg, Austria, and the PARTIES irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
\par
\par
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 CONTACT
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
\par If you have questions regarding this AGREEMENT, contact:
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13262607 Coati Software KG
\par Jakob-Haringer-Stra\'dfe 1/127
\par 5020 Salzburg
\par Austria
\par
\par support@sourcetrail.com}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid10694613\charrsid13262607
\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
29e245eb2b260a0238fd010000ffff0300504b030414000600080000002100e35a492797060000551b0000160000007468656d652f7468656d652f7468656d65
312e786d6cec594d6f1b4518be23f11f467b6f6327761a4775aad8b11b6852a2d82dea71bc3bde9d66766735334eea1b6a8f484888823850891b0704546a252e
e5d7048aa048fd0bbc33b3bbde89d72469235a417d48bcb3cfbcdf5f33be7aed5eccd0211192f2a4edd52fd73c44129f073409dbdead61ffd29a87a4c2498019
4f48db9b12e95ddb78ffbdab785d45242608f627721db7bd48a9747d6949fab08ce5659e9204de8db988b18247112e05021f01dd982d2dd76aab4b31a6898712
1c03d91d2ca894f8d21691344cbc8d9c7c8f018f4449bde03331d0c489bbc7808383ba86c8a9ec32810e316b7bc02ae04743724f798861a9e045dbab998fb7b4
717509af679b985ab0b7b4af6f3ed9be6c4370b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83aa569632cd467faddec9699640f6
eb3ced6ead596bb8f812fd9539995b9d4ea7d9ca64b1440dc87e6dcce1d76aab8dcd65076f4016df9cc3373a9bddeeaa8337208b5f9dc3f7afb4561b2ede8022
46938339b47668bf9f512f2063ceb62be16b005fab65f0190aa2a1082fcd62cc13b530d8627c978b3e203492614513a4a62919631f22b98be391a05873c0eb04
97ded8255fce2d696648fa82a6aaed7d9862c88a19bd97cf7e78f9ec093abefff4f8fecfc70f1e1cdfffc91272766de3242cef7af1dde77f3dfa04fdf9e4db17
0fbfacc6cb32feb71f3ffdf5972faa81903f33719e7ff5f8f7a78f9f7ffdd91fdf3fac806f0a3c2ac387342612dd2447689fc7a098b18a2b391989f3ed184698
96776c26a1c409d65c2ae8f754e4a06f4e31cbbce3c8d121ae056f0ba81f55c0eb93bb8ec083484c14ade07c238a1de02ee7acc345a5156e685e25330f274958
cd5c4ccab87d8c0fab787771e2f8b73749a172e661e928de8d8823e61ec389c221498842fa1d3f20a442bb3b943a76dda5bee0928f15ba435107d34a930ce9c8
89a6d9a66d1a835fa6553a83bf1ddbecde461dceaab4de22872e12b202b30ae187843966bc8e270ac755248738666583ef6015550939980abf8ceb49059e0e09
e3a81710686d15527c2440df92d36f602859956edf65d3d8450a450faa68ee60cecbc82d7ed08d709c5661073489cad80fe4018428467b5c55c177b99b21fa19
fc809385eebe4d89e3eed3abc12d1a3a22cd0244bf99086d45a8d54e058e69f24fe59851a8c7d6fa17578ea1003effe651854fdfd642bc093da92a13b64f94df
45b89345b7cb4540dffe9abb8527c91e81309f6f3cef4aeebb92ebfde74beea27c3e6ba19dd55628bb7a6eb053b19991e3c523f298323650534676a499922534
8aa00f8b7aa3392292e2cc9446f0352bec0e2e14d8ec4182ab8fa98a06114e61c2ae7b9a482833d2a144299770b433cb95b4351ea674650f864d7d64b0054162
b5cb03bbbca297f3934141c6b49bd09c3f73462b9ac05999ad5cc98882daafc2acae853a33b7ba11cdd43a875ba13238715e35582cac09130882b905acbc0a87
74cd1a4e26989140dbdd36dfdc2dc60b17e92219e180643ed27acffba86e9c94c78ab90c80d8a9f0913ee69d62b512b79626fb1adccee2a432bbc60276b9f75e
c74b7904cfbca413f7443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc3a116bec629785deaa10fb3106e877c256cd89f9acc26cb67de6ce58ab94950878b0a
6bf739859d3a900aa9b6b08c6c6898575908b04473b2f22f37c1ac17a5808df4579062650d82e18d490176745d4bc663e2abb2b34b2bda76f6312ba57ca28818
44c1111ab189d8c7e07e1daaa04f4025dc4d988aa01fe0264d5bdbbc728b739674e5fb2b83b3eb98a511cecaad4ed13c932ddce4712183792a8907ba55ca6e94
3bbf2a26e52f48957218ffcf54d1fd04ae0a5602ed011fee7205463a5fdb1e172ae25085d288fa7d019383a91d102d701b0baf21a8e046d9fc17e450ffb73967
6998b486139fdaa7211214fa918a04217b50964cf49d42ac9ef52e4b9265844c4495c495a9157b440e091bea1ab8aa7bbb87220875534db232607027e3cf7dce
326814ea21a79c6f4e0d297aafcd817f7bf2b1c90c4ab975d80c34b9fd0b112bbaaadd6fb6e7bdb7ac887e311bb31a795600b3522b686569ff8a229cb3d5da8a
35a7f17233170ebc38af312c1603510a173e48ff81fe4785cf880963dd50877c1f6a2b829f1a3431081b88ea4b76f040ba40dac5110c4e76d1069326654d9b8d
4eda6a79b3bee049b7e07bc2d85ab2b3f8fb9cc62e8633979d938b1769ecccc28eadedda425383674fa6282c8df3938c718cf95dabfcc3131fdd05476fc105ff
84296982097e55121846cf81c903487ecbd16cddf81b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f
7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f
2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e31
98720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d98505
28a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c02000013000000000000000000000000
00000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b0000000000000000000000
00002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c000000000000000000000000001402000074
68656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100e35a492797060000551b0000160000000000000000
0000000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000
0000000000000000009c0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000970a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000a0e7
dba0daf9d401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
@@ -1,6 +1,6 @@
Sourcetrail
Software License Agreement (“AGREEMENT”)
Last date of change: 2018-04-23
Last date of change: 2019-04-23
BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
@@ -16,17 +16,17 @@ BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSE
"LICENSOR" means:
* Coati Software KG, having a place of business at Jakob-Haringer-Straße 1/127, 5020 Salzburg, Austria.
"LICENSEE" means:
* the individual who purchased a LICENSE(s) for the SOFTWARE;
* the individual who was granted a LICENSE(s) for the SOFTWARE by LICENSOR;
* the company, corporation, organization, or legal entity that purchased a LICENSE(s) for the SOFTWARE;
* the company, corporation, organization, or legal entity that was granted a LICENSE(s) for the SOFTWARE by LICENSOR.
* the individual who purchased LICENSE(s) for the SOFTWARE;
* the individual who was granted LICENSE(s) for the SOFTWARE by LICENSOR;
* the company, corporation, organization, or legal entity that purchased LICENSE(s) for the SOFTWARE;
* the company, corporation, organization, or legal entity that was granted LICENSE(s) for the SOFTWARE by LICENSOR.
"PARTIES" means:
* both LICENSOR and LICENSEE collectively.
"AUTHORIZED USER" means:
* the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;
* an employee who is nameable on demand and might at any time use the SOFTWARE, of LICENSEE. Every AUTHORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWARE anymore and said second user may start to use the SOFTWARE. At no time may the simultaneous number of users known by name exceed the agreed-upon number of AUTHORIZED USER(s). For each LICENSE that has been acquired before May 23th 2018 every AUTHORIZED USER known by name can be replaced by another user known by name instantly.
"ACTIVATION KEY" means:
* a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name of LICENSEE, the license type, the agreed-upon number of AUTHORIZED USERS, an upper limit for the licensed SOFTWARE version or an expiration date, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genuine copy of the SOFTWARE for intended commercial use.
* a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name of LICENSEE, the license type, the agreed-upon number of AUTHORIZED USERS, the upper limit for the licensed SOFTWARE version, the end of the licensed usage period, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genuine copy of the SOFTWARE for intended commercial use.
2. GRANT
@@ -47,7 +47,7 @@ Subject to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE a worldw
* LICENSEE and AUTHORIZED USER(s) to use the command-line interface of the SOFTWARE without unlocking the full functionality of the SOFTWARE;
* LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;
* LICENSEE and AUTHORIZED USER(s) to truthfully declare their intend to solely use the SOFTWARE for non-commercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;
* AUTHORIZED USER(s) to apply any version of the unlocked SOFTWARE that specifies a version number less than or equal to the version number denoted in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a version number, the AUTHORIZED USER is allowed to use any version of the SOFTWARE for a period of time that is limited by the expiration date specified in the ACTIVATION KEY;
* AUTHORIZED USER(s) to apply any version of the unlocked SOFTWARE that specifies a version number less than or equal to the licensed product version denoted in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a licensed product version, "unlimited" licensed product version is assumed and all released product versions may be used. This permission is revoked at the end of the licensed usage period denoted in the ACTIVATION KEY. If the ACTIVATION KEY does not denote the licensed usage period, "unlimited" licensed usage period is assumed and the SOFTWARE may be used perpetually;
* LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
@@ -0,0 +1,170 @@
[
{
"type" : "quotation",
"patterns" : [ "\"(?:[^\"]|\\\\.)*\"", "\'[^\']\'" ],
"priority" : true
},
{
"type" : "comment",
"patterns" : [ "//[^\n]*" ],
"priority" : true
},
{
"type" : "comment",
"range" : {
"start" : "/\\*",
"end" : "\\*/"
},
"priority" : true
},
{
"type" : "keyword",
"patterns" : [
"\\balignas\\b",
"\\balignof\\b",
"\\band\\b",
"\\band_eq\\b",
"\\basm\\b",
"\\bassert\\b",
"\\bauto\\b",
"\\bbitand\\b",
"\\bbitor\\b",
"\\bbreak\\b",
"\\bcase\\b",
"\\bcatch\\b",
"\\bcompl\\b",
"\\bcomplex\\b",
"\\bconst\\b",
"\\bconst_cast\\b",
"\\bconstexpr\\b",
"\\bcontinue\\b",
"\\bdecltype\\b",
"\\bdefault\\b",
"\\bdelete\\b",
"\\bdo\\b",
"\\bdynamic_cast\\b",
"\\belse\\b",
"\\bexplicit\\b",
"\\bexport\\b",
"\\bextern\\b",
"\\bfalse\\b",
"\\bfinal\\b",
"\\bfor\\b",
"\\bfriend\\b",
"\\bgoto\\b",
"\\bif\\b",
"\\bimaginary\\b",
"\\binline\\b",
"\\bmutable\\b",
"\\bnew\\b",
"\\bnoexcept\\b",
"\\bnoreturn\\b",
"\\bnot\\b",
"\\bnot_eq\\b",
"\\bNULL\\b",
"\\bnullptr\\b",
"\\boperator\\b",
"\\bor\\b",
"\\bor_eq\\b",
"\\boverride\\b",
"\\bprivate\\b",
"\\bprotected\\b",
"\\bpublic\\b",
"\\bregister\\b",
"\\breinterpret_cast\\b",
"\\brequires\\b",
"\\breturn\\b",
"\\bsignals\\b",
"\\bsizeof\\b",
"\\bslots\\b",
"\\bstatic\\b",
"\\bstatic_assert\\b",
"\\bstatic_cast\\b",
"\\bswitch\\b",
"\\btemplate\\b",
"\\bthis\\b",
"\\bthread_local\\b",
"\\bthrow\\b",
"\\bthrows\\b",
"\\btrue\\b",
"\\btry\\b",
"\\btypedef\\b",
"\\btypeid\\b",
"\\btypename\\b",
"\\busing\\b",
"\\bvirtual\\b",
"\\bvolatile\\b",
"\\bwhile\\b",
"\\bxor\\b",
"\\bxor_eq\\b"
]
},
{
"type" : "type",
"patterns" : [
"\\bbool\\b",
"\\bchar16_t\\b",
"\\bchar32_t\\b",
"\\bchar\\b",
"\\bclass\\b",
"\\bdouble\\b",
"\\benum\\b",
"\\bfloat\\b",
"\\bint16_t\\b",
"\\bint32_t\\b",
"\\bint64_t\\b",
"\\bint8_t\\b",
"\\bint\\b",
"\\bint_fast16_t\\b",
"\\bint_fast32_t\\b",
"\\bint_fast64_t\\b",
"\\bint_fast8_t\\b",
"\\bint_least16_t\\b",
"\\bint_least32_t\\b",
"\\bint_least64_t\\b",
"\\bint_least8_t\\b",
"\\bintmax_t\\b",
"\\bintptr_t\\b",
"\\blong\\b",
"\\bnamespace\\b",
"\\bshort\\b",
"\\bsigned\\b",
"\\bsize_t\\b",
"\\bstruct\\b",
"\\buint16_t\\b",
"\\buint32_t\\b",
"\\buint64_t\\b",
"\\buint8_t\\b",
"\\buint_fast16_t\\b",
"\\buint_fast32_t\\b",
"\\buint_fast64_t\\b",
"\\buint_fast8_t\\b",
"\\buint_least16_t\\b",
"\\buint_least32_t\\b",
"\\buint_least64_t\\b",
"\\buint_least8_t\\b",
"\\buintmax_t\\b",
"\\buintptr_t\\b",
"\\bunion\\b",
"\\bunsigned\\b",
"\\bvoid\\b",
"\\bwchar_t\\b"
]
},
{
"type" : "directive",
"patterns" : [ "#[a-z]+\\b" ]
},
{
"type" : "number",
"patterns" : [ "\\b[0-9]+\\b" ]
},
{
"type" : "function",
"patterns" : [ "\\b[A-Za-z0-9_]+(?=\\()" ]
},
{
"type" : "quotation",
"patterns" : [ " <[^<>\\s]*>$" ]
}
]
@@ -0,0 +1,95 @@
[
{
"type" : "quotation",
"patterns" : [ "\"(?:[^\"]|\\\\.)*\"", "\'[^\']\'" ],
"priority" : true
},
{
"type" : "comment",
"range" : {
"start" : "/\\*",
"end" : "\\*/"
},
"priority" : true
},
{
"type" : "keyword",
"patterns" : [
"\\babstract\\b",
"\\bassert\\b",
"\\bbreak\\b",
"\\bcase\\b",
"\\bcatch\\b",
"\\bconst\\b",
"\\bcontinue\\b",
"\\bdefault\\b",
"\\bdo\\b",
"\\belse\\b",
"\\bextends\\b",
"\\bfalse\\b",
"\\bfinal\\b",
"\\bfinally\\b",
"\\bfor\\b",
"\\bfriend\\b",
"\\bgoto\\b",
"\\bif\\b",
"\\bimplements\\b",
"\\bimport\\b",
"\\binstanceof\\b",
"\\binterface\\b",
"\\bnative\\b",
"\\bnew\\b",
"\\bpackage\\b",
"\\bprivate\\b",
"\\bprotected\\b",
"\\bpublic\\b",
"\\breturn\\b",
"\\bstatic\\b",
"\\bstrictfp\\b",
"\\bsuper\\b",
"\\bswitch\\b",
"\\bsynchronized\\b",
"\\bthis\\b",
"\\bthrow\\b",
"\\bthrows\\b",
"\\btransient\\b",
"\\btrue\\b",
"\\btry\\b",
"\\bvolatile\\b",
"\\bwhile\\b"
]
},
{
"type" : "type",
"patterns" : [
"\\bboolean\\b",
"\\bbyte\\b",
"\\bchar\\b",
"\\bclass\\b",
"\\bdouble\\b",
"\\benum\\b",
"\\bfloat\\b",
"\\bint\\b",
"\\blong\\b",
"\\bpackage\\b",
"\\bshort\\b",
"\\bvoid\\b"
]
},
{
"type" : "directive",
"patterns" : [ "@[A-Za-z0-9_]+" ]
},
{
"type" : "number",
"patterns" : [ "\\b[0-9]+\\b" ]
},
{
"type" : "function",
"patterns" : [ "\\b[A-Za-z0-9_]+(?=\\()" ]
},
{
"type" : "comment",
"patterns" : [ "//[^\n]*" ]
}
]
@@ -0,0 +1,75 @@
[
{
"type" : "quotation",
"range" : {
"start" : "\'\'\'",
"end" : "\'\'\'"
},
"priority" : true
},
{
"type" : "quotation",
"range" : {
"start" : "\"\"\"",
"end" : "\"\"\""
},
"priority" : true
},
{
"type" : "quotation",
"patterns" : [ "(?:[^\"]|^)(\"(?:[^\"]|\\\\.)*\")(?:[^\"]|$)", "(?:[^\']|^)(\'(?:[^\']|\\\\.)*\')(?:[^\']|$)" ],
"priority" : true
},
{
"type" : "comment",
"patterns" : [ "#[^\n]*" ],
"priority" : true
},
{
"type" : "keyword",
"patterns" : [
"\\bself\\b",
"\\bFalse\\b",
"\\bclass\\b",
"\\bfinally\\b",
"\\bis\\b",
"\\breturn\\b",
"\\bNone\\b",
"\\bcontinue\\b",
"\\bfor\\b",
"\\blambda\\b",
"\\btry\\b",
"\\bTrue\\b",
"\\bdef\\b",
"\\bfrom\\b",
"\\bnonlocal\\b",
"\\bwhile\\b",
"\\band\\b",
"\\bdel\\b",
"\\bglobal\\b",
"\\bnot\\b",
"\\bwith\\b",
"\\bas\\b",
"\\belif\\b",
"\\bif\\b",
"\\bor\\b",
"\\byield\\b",
"\\bassert\\b",
"\\belse\\b",
"\\bimport\\b",
"\\bpass\\b",
"\\bbreak\\b",
"\\bexcept\\b",
"\\bin\\b",
"\\braise\\b"
]
},
{
"type" : "number",
"patterns" : [ "\\b[0-9]+\\b" ]
},
{
"type" : "function",
"patterns" : [ "\\b[A-Za-z0-9_]+(?=\\()" ]
}
]
@@ -82,7 +82,6 @@
</recent_projects>
<license>
<check><!-- STRING: hashed path of the working directory used when entering the license key --></check>
<license><!-- STRING: the license key --></license>
<non_commercial_use><!-- BOOL: if used non-commercially --></non_commercial_use>
</license>
@@ -0,0 +1,6 @@
SourceFilePath: "src/a.txt"
Custom Command: "echo "Hello World""
SourceFilePath: "src/b.txt"
Custom Command: "echo "Hello World""
SourceFilePath: "src/included/a.txt"
Custom Command: "echo "Hello World""
+1 -1
View File
@@ -4,7 +4,7 @@
set(LICENSES "")
set(LICENSE_ARRAY "")
set(LICENSEFOLDER "${CMAKE_SOURCE_DIR}/bin/app/data/3rd_party_licenses")
set(LICENSEFOLDER "${CMAKE_SOURCE_DIR}/bin/app/data/license/3rd_party_licenses")
function(ReadLicense licenseFile licenseVariable)
file(READ ${licenseFile} tempVariable)
+9 -5
View File
@@ -49,16 +49,19 @@ function(AddSharedToComponent)
INSTALL(DIRECTORY
${CMAKE_SOURCE_DIR}/bin/app/data
DESTINATION Sourcetrail
PATTERN "log/*" EXCLUDE
PATTERN "data/src" EXCLUDE
PATTERN "projects" EXCLUDE
PATTERN "data/install" EXCLUDE
PATTERN "install" EXCLUDE
PATTERN "ProjectSettings_template.xml" EXCLUDE
PATTERN "color_scheme_template.xml" EXCLUDE
PATTERN "python/SourcetrailPythonIndexer" EXCLUDE
)
INSTALL(PROGRAMS
${CMAKE_SOURCE_DIR}/bin/app/data/python/SourcetrailPythonIndexer
DESTINATION Sourcetrail/data/python
)
INSTALL(FILES
${CMAKE_SOURCE_DIR}/bin/app/data/gui/installer/EULA.txt
${CMAKE_SOURCE_DIR}/bin/app/data/license/EULA.txt
DESTINATION Sourcetrail
)
@@ -105,6 +108,7 @@ function(AddSharedToComponent)
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/bin/app/user
DESTINATION Sourcetrail
PATTERN "log/*" EXCLUDE
PATTERN "ApplicationSettings.xml" EXCLUDE
PATTERN "ApplicationSettings_template.xml" EXCLUDE
)
+5 -1
View File
@@ -11,7 +11,7 @@ docker build -t <account>/<reponame>:<tag> <Dockerfile>
Upload docker images
--------------------
docker login
docker login
docker push <account>/<reponame>:<tag>
@@ -24,6 +24,10 @@ $ docker image ls
$ docker rmi coatisoftware/centos6_64_qt_llvm:<tag>
$ docker rmi coatisoftware/centos6_32_qt_llvm:<tag>
# docker clean up
$ docker system prune
# change library version numbers in docker files
# build and upload docker images with new <tag> e.g. qt591-llvm500:
@@ -7,23 +7,18 @@ WORKDIR /opt
RUN rpm --rebuilddb; yum install -y yum-plugin-ovl ca-certificates;
RUN yum -y install wget && \
wget https://copr.fedorainfracloud.org/coprs/mlampe/devtoolset-4.1/repo/\
epel-6/mlampe-devtoolset-4.1-epel-6.repo -O /etc/yum.repos.d/mlampe-devtoolset.repo && \
wget https://copr.fedorainfracloud.org/coprs/tmz/git/repo/epel-6/tmz-git-epel-6.repo \
-O /etc/yum.repos.d/git.repo && \
yum -y install epel-release && \
wget https://centos6.iuscommunity.org/ius-release.rpm && \
rpm -Uvh ius-release*.rpm && \
wget https://copr.fedorainfracloud.org/coprs/mlampe/devtoolset-6/repo/\
epel-6/mlampe-devtoolset-6-epel-6.repo -O /etc/yum.repos.d/mlampe-devtoolset.repo && \
yum -y update && \
yum -y install devtoolset-4-gcc devtoolset-4-gcc-c++ devtoolset-4-binutils \
wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake \
glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel \
ibxml2-devel libstdc++-devel libXrender-devel patch xcb-util-keysyms-devel \
libXi-devel libudev-devel openssl-devel sqlite-devel \
gperftools gperf libicu-devel boost-devel \
libxslt-devel docbook-style-xsl.noarch python27 \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel \
java-1.8.0-openjdk-devel ccache re2c ImageMagick vim lftp && \
yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils \
wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake \
glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel \
ibxml2-devel libstdc++-devel libXrender-devel patch xcb-util-keysyms-devel \
libXi-devel libudev-devel openssl-devel sqlite-devel \
gperftools gperf libicu-devel boost-devel \
libxslt-devel docbook-style-xsl.noarch python27 \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel \
java-1.8.0-openjdk-devel ccache re2c ImageMagick vim lftp unzip && \
yum clean all
# CMake and Maven
@@ -50,8 +45,8 @@ RUN mkdir -p /qt && cd /qt && \
wget http://download.qt.io/archive/qt/${QVERSION_SHORT}/${QTVERSION}/\
single/qt-everywhere-src-${QTVERSION}.tar.xz && \
tar xvf qt-everywhere-src-${QTVERSION}.tar.xz && \
ln -sf /opt/rh/devtoolset-4/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-4/root/usr/bin/c++ /usr/bin/c++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/c++ /usr/bin/c++ && \
cd /qt/qt-everywhere-src-${QTVERSION} && \
./configure -v \
-prefix /opt/qt${QTVERSION} \
@@ -85,11 +80,17 @@ make -j8 install && rm -Rf /qt
## set env
ENV CXX=g++ \
CC=gcc \
DEVTOOLSET=/opt/rh/devtoolset-4/root/usr/
DEVTOOLSET=/opt/rh/devtoolset-6/root/usr/
RUN wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz && \
tar xzf Python-2.7.13.tgz && \
cd Python-2.7.13 && \
./configure && \
make altinstall
## Install llvm
ARG LLVM_VERSION=7.0.0
RUN alias python=/usr/bin/python2.7 && mkdir -p /llvm && cd /llvm && \
ARG LLVM_VERSION=8.0.0
RUN alias python=/usr/local/bin/python2.7 && mkdir -p /llvm && cd /llvm && \
wget http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz && \
tar xf llvm-${LLVM_VERSION}.src.tar.xz && \
cd llvm-${LLVM_VERSION}.src && pwd && \
@@ -99,9 +100,7 @@ tar xf cfe-${LLVM_VERSION}.src.tar.xz && \
cd /llvm/llvm-${LLVM_VERSION}.src/projects && \
wget http://llvm.org/releases/${LLVM_VERSION}/compiler-rt-${LLVM_VERSION}.src.tar.xz && \
tar xf compiler-rt-${LLVM_VERSION}.src.tar.xz && \
#. /opt/rh/python27/enable && \
. /opt/rh/devtoolset-4/enable && \
python --version && \
. /opt/rh/devtoolset-6/enable && \
cd /llvm/llvm-${LLVM_VERSION}.src && mkdir -p build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/llvm/ \
-DCMAKE_BUILD_TYPE=Release \
@@ -148,17 +147,17 @@ git checkout 4.4
RUN useradd builder
# Make sure the above SCLs are already enabled
#ENTRYPOINT ["/bin/bash", "-c", "source", "/opt/rh/devtoolset-4/enable"]
#CMD ["/bin/bash", "-c", "source", "/opt/rh/devtoolset-4/enable"]
#ENTRYPOINT ["/bin/bash", "-c", "source", "/opt/rh/devtoolset-6/enable"]
#CMD ["/bin/bash", "-c", "source", "/opt/rh/devtoolset-6/enable"]
RUN GCC_VERSION=$(g++ -dumpversion) && \
ln -s /opt/rh/devtoolset-4/root/usr/include/c++/${GCC_VERSION} /usr/include/c++/${GCC_VERSION} && \
ln -s /opt/rh/devtoolset-4/root/usr/lib/gcc/i686-redhat-linux/${GCC_VERSION} \
ln -s /opt/rh/devtoolset-6/root/usr/include/c++/${GCC_VERSION} /usr/include/c++/${GCC_VERSION} && \
ln -s /opt/rh/devtoolset-6/root/usr/lib/gcc/i686-redhat-linux/${GCC_VERSION} \
/usr/lib/gcc/i686-redhat-linux/${GCC_VERSION} && \
echo "source /opt/rh/devtoolset-4/enable" >> /etc/bashrc
## set env
ENV CXX=/opt/rh/devtoolset-4/root/usr/bin/g++ \
CC=/opt/rh/devtoolset-4/root/usr/bin/gcc \
echo "source /opt/rh/devtoolset-6/enable" >> /etc/bashrc
ENV CXX=/opt/rh/devtoolset-6/root/usr/bin/g++ \
CC=/opt/rh/devtoolset-6/root/usr/bin/gcc \
BOTAN_DIR=/opt/botan \
CXX_TEST_DIR=/opt/cxxtest \
JAVA_HOME=/usr/lib/jvm/java-openjdk \
@@ -1,4 +1,4 @@
FROM coatisoftware/centos6_64_gcc
FROM coatisoftware/centos6_64_base
MAINTAINER "Andreas Stallinger" <astallinger@coati.io>
@@ -20,8 +20,8 @@ RUN mkdir -p /qt && cd /qt && \
wget http://download.qt.io/archive/qt/${QVERSION_SHORT}/${QTVERSION}/\
single/qt-everywhere-src-${QTVERSION}.tar.xz && \
tar xvf qt-everywhere-src-${QTVERSION}.tar.xz && \
ln -sf /opt/rh/devtoolset-4/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-4/root/usr/bin/c++ /usr/bin/c++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/c++ /usr/bin/c++ && \
cd /qt/qt-everywhere-src-${QTVERSION} && \
./configure -v \
-prefix /opt/qt${QTVERSION} \
@@ -54,7 +54,7 @@ make -j8 && \
make -j8 install && rm -Rf /qt
## Install llvm
ARG LLVM_VERSION=7.0.0
ARG LLVM_VERSION=8.0.0
RUN mkdir -p /llvm && cd /llvm && \
wget http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz && \
tar xvf llvm-${LLVM_VERSION}.src.tar.xz && \
@@ -63,7 +63,7 @@ cd tools && \
wget http://llvm.org/releases/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz && \
tar xvf cfe-${LLVM_VERSION}.src.tar.xz && \
. /opt/rh/python27/enable && \
. /opt/rh/devtoolset-4/enable && \
. /opt/rh/devtoolset-6/enable && \
python --version && \
cd /llvm/llvm-${LLVM_VERSION}.src && mkdir -p build && cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/llvm/ \
@@ -75,8 +75,8 @@ WORKDIR /opt
## Botan
RUN git clone https://github.com/randombit/botan.git /botan && \
cd /botan && \
ln -sf /opt/rh/devtoolset-4/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-4/root/usr/bin/c++ /usr/bin/c++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/g++ /usr/bin/g++ && \
ln -sf /opt/rh/devtoolset-6/root/usr/bin/c++ /usr/bin/c++ && \
git checkout 2.1.0 && \
./configure.py --disable-shared --prefix=/opt/botan && \
make -j8 && make install && \
@@ -112,13 +112,8 @@ git checkout 4.4
RUN useradd -u 1000 builder
# Make sure the above SCLs are already enabled
ENTRYPOINT ["/usr/bin/scl", "enable", "python27", "devtoolset-4", "git19", "--"]
CMD ["/usr/bin/scl", "enable", "python27", "devtoolset-4", "git19", "--", "/bin/bash"]
RUN GCC_VERSION=$(g++ -dumpversion) && \
ln -s /opt/rh/devtoolset-4/root/usr/include/c++/${GCC_VERSION} /usr/include/c++/${GCC_VERSION} && \
ln -s /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/${GCC_VERSION} \
/usr/lib/gcc/x86_64-redhat-linux/${GCC_VERSION}
ENTRYPOINT ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "--"]
CMD ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "--", "/bin/bash"]
WORKDIR /home/builder
USER builder
@@ -7,15 +7,15 @@ WORKDIR /opt
RUN rpm --rebuilddb; yum install -y yum-plugin-ovl ca-certificates;
RUN yum -y install centos-release-scl epel-release && \
yum -y install wget devtoolset-4-gcc devtoolset-4-gcc-c++ devtoolset-4-binutils \
yum -y install wget devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils \
wget tar bzip2 git libtool which fuse fuse-devel libpng-devel automake \
glibc-headers libstdc++-devel gcc-c++ freetype-devel fontconfig-devel\
libxml2-devel libstdc++-devel libXrender-devel patch xcb-util-keysyms-devel \
libXi-devel libudev-devel.x86_64 openssl-devel sqlite-devel.x86_64 \
gperftools.x86_64 gperf.x86_64 libicu-devel.x86_64 boost-devel.x86_64 \
libxslt-devel.x86_64 python27.x86_64 \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel git19 \
java-1.8.0-openjdk-devel re2c ccache ImageMagick vim lftp && \
xz mesa-libEGL-devel mesa-libGL-devel glib-devel \
java-1.8.0-openjdk-devel re2c ccache ImageMagick vim lftp unzip && \
yum clean all
# CMake
@@ -31,15 +31,10 @@ rm apache-maven-3.5.0-bin.tar.gz
ENV M2_HOME=/opt/maven \
JAVA_HOME=/usr/lib/jvm/java-openjdk \
DEVTOOLSET=/opt/rh/devtoolset-4/root/usr/
DEVTOOLSET=/opt/rh/devtoolset-6/root/usr/
ENV PATH=${M2_HOME}/bin:${PATH}
# Make sure the above SCLs are already enabled
ENTRYPOINT ["/usr/bin/scl", "enable", "python27", "devtoolset-4", "git19", "--"]
CMD ["/usr/bin/scl", "enable", "python27", "devtoolset-4", "git19", "--", "/bin/bash"]
RUN GCC_VERSION=$(g++ -dumpversion) && \
ln -s /opt/rh/devtoolset-4/root/usr/include/c++/${GCC_VERSION} /usr/include/c++/${GCC_VERSION} && \
ln -s /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/${GCC_VERSION} \
/usr/lib/gcc/x86_64-redhat-linux/${GCC_VERSION}
ENTRYPOINT ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "git", "--"]
CMD ["/usr/bin/scl", "enable", "python27", "devtoolset-6", "git", "--", "/bin/bash"]
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
exclude-result-prefixes="wix">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:template match="wix:Wix">
<xsl:copy>
<!-- The following enters the directive for adding the config.wxi include file to the dynamically generated file -->
<!--xsl:processing-instruction name="include">$(sys.CURRENTDIR)wix\config.wxi</xsl:processing-instruction-->
<xsl:apply-templates select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<!-- ### Adding the Win64-attribute to all Components -->
<xsl:template match="wix:Component">
<xsl:copy>
<xsl:apply-templates select="@*" />
<!-- Adding the Win64-attribute as we have a x64 application -->
<xsl:attribute name="Win64">$(var.Win64)</xsl:attribute>
<!-- Now take the rest of the inner tag -->
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
+1 -575
View File
@@ -1,588 +1,14 @@
<?xml version='1.0'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?if $(sys.BUILDARCH) = x64 ?>
<?define Win64 = "yes" ?>
<?else ?>
<?define Win64 = "no" ?>
<?endif ?>
<Fragment>
<DirectoryRef Id='SourcetrailAppData'>
<Directory Id="SampleProjects" Name="projects">
<Component Id="SampleProjects" Guid="12F6C3BE-CE83-441A-8A5D-E49EA1483F24" Win64="$(var.Win64)">
<RemoveFolder Id='SampleProjects' On='uninstall' />
<RegistryValue Root='HKCU' Key='SampleProjectDir' Type='string' Value='' KeyPath='yes' />
</Component>
<Directory Id="SampleProjectTictactoe" Name="tictactoe">
<?if $(var.Win64)="yes" ?>
<?define TictactoeSourcetrailproject.Guid="E353FD02-79FD-4409-9874-3282B038DD10" ?>
<?else ?>
<?define TictactoeSourcetrailproject.Guid="E353FD02-79FD-4409-9874-3282B038DD13" ?>
<?endif ?>
<Component Id="TictactoeSourcetrailproject" Guid="$(var.TictactoeSourcetrailproject.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectTictactoe' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\tictactoeProjectKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='TictactoeDb' Name='tictactoe.srctrldb' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/tictactoe.srctrldb' KeyPath='no' />
<File Id='TictactoeProject' Name='tictactoe.srctrlprj' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/tictactoe.srctrlprj' KeyPath='no' />
</Component>
<Directory Id="TictactoeSrc" Name="src">
<?if $(var.Win64)="yes" ?>
<?define TictactoeCode.Guid="82854BB7-76B8-4310-B89E-E4BA1F83A212" ?>
<?else ?>
<?define TictactoeCode.Guid="778C6A37-309A-4230-9940-F1D5773CD257" ?>
<?endif ?>
<Component Id="TictactoeCode" Guid="$(var.TictactoeCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='TictactoeSrc' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\tictactoeCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='ArtificialPlayer' Name='artificial_player.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/artificial_player.cpp' KeyPath='no' />
<File Id='ArtificialPlayerHeader' Name='artificial_player.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/artificial_player.h' KeyPath='no' />
<File Id='Field' Name='field.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/field.cpp' KeyPath='no' />
<File Id='FieldHeader' Name='field.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/field.h' KeyPath='no' />
<File Id='GameObjectHeader' Name='game_object.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/game_object.h' KeyPath='no' />
<File Id='HumanPlayer' Name='human_player.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/human_player.cpp' KeyPath='no' />
<File Id='HumanPlayerHeader' Name='human_player.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/human_player.h' KeyPath='no' />
<File Id='IO' Name='io.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/io.cpp' KeyPath='no' />
<File Id='IOHeader' Name='io.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/io.h' KeyPath='no' />
<File Id='tictactoeMain' Name='main.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/main.cpp' KeyPath='no' />
<File Id='Player' Name='player.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/player.cpp' KeyPath='no' />
<File Id='PlayerHeader' Name='player.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/player.h' KeyPath='no' />
<File Id='tictactoeFile' Name='tictactoe.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/tictactoe.cpp' KeyPath='no' />
<File Id='tictactoeHeader' Name='tictactoe.h' DiskId='1' Source='./../../../bin/app/user/projects/tictactoe/src/tictactoe.h' KeyPath='no' />
</Component>
</Directory>
</Directory>
<Directory Id="SampleProjectTutorial" Name="tutorial">
<?if $(var.Win64)="yes" ?>
<?define TutorialSourcetrailproject.Guid="F1C54131-5B28-4E20-8E81-C67747A195B3" ?>
<?else ?>
<?define TutorialSourcetrailproject.Guid="A2D48B1D-474F-42D7-9020-BC7FFAB48311" ?>
<?endif ?>
<Component Id="TutorialSourcetrailproject" Guid="$(var.TutorialSourcetrailproject.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectTutorial' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\tutorialProjectKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='TutorialDb' Name='tutorial.srctrldb' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/tutorial.srctrldb' KeyPath='no' />
<File Id='TutorialProject' Name='tutorial.srctrlprj' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/tutorial.srctrlprj' KeyPath='no' />
</Component>
<Directory Id="TutorialSrc" Name="src">
<?if $(var.Win64)="yes" ?>
<?define TutorialCode.Guid="59506B3E-F0CE-4798-98BD-7BE4947D089C" ?>
<?else ?>
<?define TutorialCode.Guid="984A03F7-53C0-4636-B8A1-A54238E05351" ?>
<?endif ?>
<Component Id="TutorialCode" Guid="$(var.TutorialCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='TutorialSrc' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\tutorialCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='CodeTutorial1Header' Name='code_tutorial_1.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/code_tutorial_1.h' KeyPath='no' />
<File Id='CodeTutorial2Header' Name='code_tutorial_2.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/code_tutorial_2.h' KeyPath='no' />
<File Id='CodeTutorial3Header' Name='code_tutorial_3.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/code_tutorial_3.h' KeyPath='no' />
<File Id='GraphTutorial1Header' Name='graph_tutorial_1.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/graph_tutorial_1.h' KeyPath='no' />
<File Id='GraphTutorial2Header' Name='graph_tutorial_2.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/graph_tutorial_2.h' KeyPath='no' />
<File Id='GraphTutorial3Header' Name='graph_tutorial_3.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/graph_tutorial_3.h' KeyPath='no' />
<File Id='GraphTutorial4Header' Name='graph_tutorial_4.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/graph_tutorial_4.h' KeyPath='no' />
<File Id='GraphTutorial5Header' Name='graph_tutorial_5.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/graph_tutorial_5.h' KeyPath='no' />
<File Id='GraphTutorial6Header' Name='graph_tutorial_6.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/graph_tutorial_6.h' KeyPath='no' />
<File Id='MainCpp' Name='main.cpp' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/main.cpp' KeyPath='no' />
<File Id='MyFirstStepHeader' Name='my_first_step.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/my_first_step.h' KeyPath='no' />
<File Id='MyNextStepHeader' Name='my_next_step.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/my_next_step.h' KeyPath='no' />
<File Id='SearchTutorial1Header' Name='search_tutorial_1.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/search_tutorial_1.h' KeyPath='no' />
<File Id='SearchTutorial2Header' Name='search_tutorial_2.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/search_tutorial_2.h' KeyPath='no' />
<File Id='SearchTutorial3Header' Name='search_tutorial_3.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/search_tutorial_3.h' KeyPath='no' />
<File Id='SearchTutorial4Header' Name='search_tutorial_4.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/search_tutorial_4.h' KeyPath='no' />
<File Id='SearchTutorial5Header' Name='search_tutorial_5.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/search_tutorial_5.h' KeyPath='no' />
<File Id='StartExploringHeader' Name='start_exploring.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/start_exploring.h' KeyPath='no' />
<File Id='String' Name='string.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/string.h' KeyPath='no' />
<File Id='TheCentralHubHeader' Name='the_central_hub.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/the_central_hub.h' KeyPath='no' />
<File Id='UtilityHeader' Name='utility.h' DiskId='1' Source='./../../../bin/app/user/projects/tutorial/src/utility.h' KeyPath='no' />
</Component>
</Directory>
</Directory>
<Directory Id="SampleProjectJavaparser" Name="javaparser">
<?if $(var.Win64)="yes" ?>
<?define JavaparserSourcetrailproject.Guid="42C55AAF-7F69-424D-8F69-0FBDCF22DA51" ?>
<?else ?>
<?define JavaparserSourcetrailproject.Guid="D21D5599-8F4F-4D26-B8F4-B34D505BE2DE" ?>
<?endif ?>
<Component Id="JavaparserSourcetrailproject" Guid="$(var.JavaparserSourcetrailproject.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparser' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\JavaparserSourcetrailprojectKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='JavaparserDb' Name='javaparser.srctrldb' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/javaparser.srctrldb' KeyPath='no' />
<File Id='JavaparserProject' Name='javaparser.srctrlprj' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/javaparser.srctrlprj' KeyPath='no' />
</Component>
<Directory Id="SampleProjectJavaparserSrc" Name="src">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcFolder.Guid="54BBF6BA-A773-4F94-BABA-7ACD19D7D979" ?>
<?else ?>
<?define SampleProjectJavaparserSrcFolder.Guid="F4B57B24-02F5-4890-8A7E-77DE1B06310F" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcFolder" Guid="$(var.SampleProjectJavaparserSrcFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrc' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserSrcMain" Name="main">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainFolder.Guid="5E72343A-6592-4B4B-80D2-7EC7F35966FE" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainFolder.Guid="EC271FA9-866E-4B9D-9B0D-4BEAC4B32094" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainFolder" Guid="$(var.SampleProjectJavaparserSrcMainFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMain' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserSrcMainJava" Name="java">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaFolder.Guid="3026D534-2635-44DD-95A6-15AA25090FA8" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaFolder.Guid="A13E0FA3-1BC5-4DF2-9A8B-3D8E785F8C9F" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaFolder" Guid="$(var.SampleProjectJavaparserSrcMainJavaFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJava' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserSrcMainJavaCom" Name="com">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComFolder.Guid="C11F229C-0FDC-49C9-9F47-38565E1F3AFB" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComFolder.Guid="5B53E259-AB89-4ACD-9E75-B73AB614E9C3" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComFolder" Guid="$(var.SampleProjectJavaparserSrcMainJavaComFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaCom' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithub" Name="github">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubFolder.Guid="286F8E8E-C0DF-4869-A4C3-CCCF8DD69A1D" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubFolder.Guid="AFE95279-66CE-49F4-B19A-FE1526A59E9E" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubFolder" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithub' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparser" Name="javaparser">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserCode.Guid="25C71AB8-9E55-46FA-B566-A2CB7996C8FD" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserCode.Guid="55F3C7F4-565E-4D4B-8C66-9C8555956893" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparser' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='CommentsInserterJava' Name='CommentsInserter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/CommentsInserter.java' KeyPath='no' />
<File Id='JavaParserJava' Name='JavaParser.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/JavaParser.java' KeyPath='no' />
<File Id='PositionJava' Name='Position.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/Position.java' KeyPath='no' />
<File Id='RangeJava' Name='Range.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/Range.java' KeyPath='no' />
</Component>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAst" Name="ast">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCode.Guid="ED323360-F1F1-4AF7-952C-333E489F6B64" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCode.Guid="CBF7594F-0408-4BB0-BA23-54D49FB1DF62" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAst' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='AccessSpecifierJava' Name='AccessSpecifier.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/AccessSpecifier.java' KeyPath='no' />
<File Id='CompilationUnitJava' Name='CompilationUnit.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/CompilationUnit.java' KeyPath='no' />
<File Id='ImportDeclarationJava' Name='ImportDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/ImportDeclaration.java' KeyPath='no' />
<File Id='ModifierJava' Name='Modifier.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/Modifier.java' KeyPath='no' />
<File Id='NodeJava' Name='Node.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/Node.java' KeyPath='no' />
<File Id='PackageDeclarationJava' Name='PackageDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/PackageDeclaration.java' KeyPath='no' />
<File Id='TypeArgumentsJava' Name='TypeArguments.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/TypeArguments.java' KeyPath='no' />
<File Id='TypeParameterJava' Name='TypeParameter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/TypeParameter.java' KeyPath='no' />
</Component>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBody" Name="body">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBodyCode.Guid="BB7C6FC5-2581-482A-91BA-F5EDC97198CD" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBodyCode.Guid="45147534-4EAF-44F7-942D-FE36D80A1505" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBodyCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBodyCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBody' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBodyCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='AnnotationDeclarationJava' Name='AnnotationDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java' KeyPath='no' />
<File Id='AnnotationMemberDeclarationJava' Name='AnnotationMemberDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/AnnotationMemberDeclaration.java' KeyPath='no' />
<File Id='BaseParameterJava' Name='BaseParameter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/BaseParameter.java' KeyPath='no' />
<File Id='BodyDeclarationJava' Name='BodyDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/BodyDeclaration.java' KeyPath='no' />
<File Id='ClassOrInterfaceDeclarationJava' Name='ClassOrInterfaceDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/ClassOrInterfaceDeclaration.java' KeyPath='no' />
<File Id='ConstructorDeclarationJava' Name='ConstructorDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java' KeyPath='no' />
<File Id='EmptyMemberDeclarationJava' Name='EmptyMemberDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/EmptyMemberDeclaration.java' KeyPath='no' />
<File Id='EmptyTypeDeclarationJava' Name='EmptyTypeDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/EmptyTypeDeclaration.java' KeyPath='no' />
<File Id='EnumConstantDeclarationJava' Name='EnumConstantDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/EnumConstantDeclaration.java' KeyPath='no' />
<File Id='EnumDeclarationJava' Name='EnumDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java' KeyPath='no' />
<File Id='FieldDeclarationJava' Name='FieldDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java' KeyPath='no' />
<File Id='InitializerDeclarationJava' Name='InitializerDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/InitializerDeclaration.java' KeyPath='no' />
<File Id='MethodDeclarationJava' Name='MethodDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java' KeyPath='no' />
<File Id='MultiTypeParameterJava' Name='MultiTypeParameter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/MultiTypeParameter.java' KeyPath='no' />
<File Id='ParameterJava' Name='Parameter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/Parameter.java' KeyPath='no' />
<File Id='TypeDeclarationJava' Name='TypeDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java' KeyPath='no' />
<File Id='VariableDeclaratorJava' Name='VariableDeclarator.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/VariableDeclarator.java' KeyPath='no' />
<File Id='VariableDeclaratorIdJava' Name='VariableDeclaratorId.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/body/VariableDeclaratorId.java' KeyPath='no' />
</Component>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstComments" Name="comments">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCommentsCode.Guid="F0654528-E971-4567-AEDF-EAA62D2FA714" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCommentsCode.Guid="18FA13DA-C7ED-4398-BD13-1980E09EC3FF" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCommentsCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCommentsCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstComments' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCommentsCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='BlockCommentJava' Name='BlockComment.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/comments/BlockComment.java' KeyPath='no' />
<File Id='CommentJava' Name='Comment.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/comments/Comment.java' KeyPath='no' />
<File Id='CommentsCollectionJava' Name='CommentsCollection.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/comments/CommentsCollection.java' KeyPath='no' />
<File Id='CommentsParserJava' Name='CommentsParser.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/comments/CommentsParser.java' KeyPath='no' />
<File Id='JavadocCommentJava' Name='JavadocComment.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/comments/JavadocComment.java' KeyPath='no' />
<File Id='LineCommentJava' Name='LineComment.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/comments/LineComment.java' KeyPath='no' />
</Component>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExpr" Name="expr">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExprCode.Guid="A37B4D5D-D9E9-4D63-BECD-A7F993CD9F8F" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExprCode.Guid="08D50DE8-92BD-41A3-9ACE-E259B9ECFF14" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExprCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExprCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExpr' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExprCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='AnnotationExprJava' Name='AnnotationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/AnnotationExpr.java' KeyPath='no' />
<File Id='ArrayAccessExprJava' Name='ArrayAccessExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ArrayAccessExpr.java' KeyPath='no' />
<File Id='ArrayCreationExprJava' Name='ArrayCreationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ArrayCreationExpr.java' KeyPath='no' />
<File Id='ArrayInitializerExprJava' Name='ArrayInitializerExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ArrayInitializerExpr.java' KeyPath='no' />
<File Id='AssignExprJava' Name='AssignExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java' KeyPath='no' />
<File Id='BinaryExprJava' Name='BinaryExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java' KeyPath='no' />
<File Id='BooleanLiteralExprJava' Name='BooleanLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/BooleanLiteralExpr.java' KeyPath='no' />
<File Id='CastExprJava' Name='CastExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/CastExpr.java' KeyPath='no' />
<File Id='CharLiteralExprJava' Name='CharLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java' KeyPath='no' />
<File Id='ClassExprJava' Name='ClassExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ClassExpr.java' KeyPath='no' />
<File Id='ConditionalExprJava' Name='ConditionalExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ConditionalExpr.java' KeyPath='no' />
<File Id='DoubleLiteralExprJava' Name='DoubleLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/DoubleLiteralExpr.java' KeyPath='no' />
<File Id='EnclosedExprJava' Name='EnclosedExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/EnclosedExpr.java' KeyPath='no' />
<File Id='ExpressionJava' Name='Expression.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/Expression.java' KeyPath='no' />
<File Id='FieldAccessExprJava' Name='FieldAccessExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/FieldAccessExpr.java' KeyPath='no' />
<File Id='InstanceOfExprJava' Name='InstanceOfExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/InstanceOfExpr.java' KeyPath='no' />
<File Id='IntegerLiteralExprJava' Name='IntegerLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java' KeyPath='no' />
<File Id='IntegerLiteralMinValueExprJava' Name='IntegerLiteralMinValueExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralMinValueExpr.java' KeyPath='no' />
<File Id='LambdaExprJava' Name='LambdaExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/LambdaExpr.java' KeyPath='no' />
<File Id='LiteralExprJava' Name='LiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/LiteralExpr.java' KeyPath='no' />
<File Id='LongLiteralExprJava' Name='LongLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java' KeyPath='no' />
<File Id='LongLiteralMinValueExprJava' Name='LongLiteralMinValueExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/LongLiteralMinValueExpr.java' KeyPath='no' />
<File Id='MarkerAnnotationExprJava' Name='MarkerAnnotationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/MarkerAnnotationExpr.java' KeyPath='no' />
<File Id='MemberValuePairJava' Name='MemberValuePair.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/MemberValuePair.java' KeyPath='no' />
<File Id='MethodCallExprJava' Name='MethodCallExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/MethodCallExpr.java' KeyPath='no' />
<File Id='MethodReferenceExprJava' Name='MethodReferenceExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/MethodReferenceExpr.java' KeyPath='no' />
<File Id='NameExprJava' Name='NameExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/NameExpr.java' KeyPath='no' />
<File Id='NormalAnnotationExprJava' Name='NormalAnnotationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/NormalAnnotationExpr.java' KeyPath='no' />
<File Id='NullLiteralExprJava' Name='NullLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/NullLiteralExpr.java' KeyPath='no' />
<File Id='ObjectCreationExprJava' Name='ObjectCreationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ObjectCreationExpr.java' KeyPath='no' />
<File Id='QualifiedNameExprJava' Name='QualifiedNameExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/QualifiedNameExpr.java' KeyPath='no' />
<File Id='SingleMemberAnnotationExprJava' Name='SingleMemberAnnotationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/SingleMemberAnnotationExpr.java' KeyPath='no' />
<File Id='StringLiteralExprJava' Name='StringLiteralExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java' KeyPath='no' />
<File Id='SuperExprJava' Name='SuperExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/SuperExpr.java' KeyPath='no' />
<File Id='ThisExprJava' Name='ThisExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/ThisExpr.java' KeyPath='no' />
<File Id='TypeExprJava' Name='TypeExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/TypeExpr.java' KeyPath='no' />
<File Id='UnaryExprJava' Name='UnaryExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/UnaryExpr.java' KeyPath='no' />
<File Id='VariableDeclarationExprJava' Name='VariableDeclarationExpr.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/expr/VariableDeclarationExpr.java' KeyPath='no' />
</Component>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypes" Name="nodeTypes">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypesCode.Guid="2EB57D66-35C4-4419-83FF-E4816E5CC372" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypesCode.Guid="71DA387D-DFC5-4B63-8B4A-88D3DF114B3D" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypesCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypesCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypes' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypesCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='NodeWithAnnotationsJava' Name='NodeWithAnnotations.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithAnnotations.java' KeyPath='no' />
<File Id='NodeWithArraysJava' Name='NodeWithArrays.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithArrays.java' KeyPath='no' />
<File Id='NodeWithBlockStmtJava' Name='NodeWithBlockStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithBlockStmt.java' KeyPath='no' />
<File Id='NodeWithDeclarationJava' Name='NodeWithDeclaration.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithDeclaration.java' KeyPath='no' />
<File Id='NodeWithJavaDocJava' Name='NodeWithJavaDoc.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithJavaDoc.java' KeyPath='no' />
<File Id='NodeWithMembersJava' Name='NodeWithMembers.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithMembers.java' KeyPath='no' />
<File Id='NodeWithModifiersJava' Name='NodeWithModifiers.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithModifiers.java' KeyPath='no' />
<File Id='NodeWithNameJava' Name='NodeWithName.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithName.java' KeyPath='no' />
<File Id='NodeWithParametersJava' Name='NodeWithParameters.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithParameters.java' KeyPath='no' />
<File Id='NodeWithThrowableJava' Name='NodeWithThrowable.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithThrowable.java' KeyPath='no' />
<File Id='NodeWithTypeJava' Name='NodeWithType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithType.java' KeyPath='no' />
</Component>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmt" Name="stmt">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmtCode.Guid="A5693B9C-2952-497F-B0F2-CBB5696ACAAD" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmtCode.Guid="2A60C83F-F61B-4E5E-9EB9-309654F4D07B" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmtCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmtCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmt' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmtCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='AssertStmtJava' Name='AssertStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/AssertStmt.java' KeyPath='no' />
<File Id='BlockStmtJava' Name='BlockStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/BlockStmt.java' KeyPath='no' />
<File Id='BreakStmtJava' Name='BreakStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/BreakStmt.java' KeyPath='no' />
<File Id='CatchClauseJava' Name='CatchClause.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/CatchClause.java' KeyPath='no' />
<File Id='ContinueStmtJava' Name='ContinueStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ContinueStmt.java' KeyPath='no' />
<File Id='DoStmtJava' Name='DoStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/DoStmt.java' KeyPath='no' />
<File Id='EmptyStmtJava' Name='EmptyStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/EmptyStmt.java' KeyPath='no' />
<File Id='ExplicitConstructorInvocationStmtJava' Name='ExplicitConstructorInvocationStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ExplicitConstructorInvocationStmt.java' KeyPath='no' />
<File Id='ExpressionStmtJava' Name='ExpressionStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ExpressionStmt.java' KeyPath='no' />
<File Id='ForeachStmtJava' Name='ForeachStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ForeachStmt.java' KeyPath='no' />
<File Id='ForStmtJava' Name='ForStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ForStmt.java' KeyPath='no' />
<File Id='IfStmtJava' Name='IfStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/IfStmt.java' KeyPath='no' />
<File Id='LabeledStmtJava' Name='LabeledStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/LabeledStmt.java' KeyPath='no' />
<File Id='ReturnStmtJava' Name='ReturnStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ReturnStmt.java' KeyPath='no' />
<File Id='StatementJava' Name='Statement.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/Statement.java' KeyPath='no' />
<File Id='SwitchEntryStmtJava' Name='SwitchEntryStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/SwitchEntryStmt.java' KeyPath='no' />
<File Id='SwitchStmtJava' Name='SwitchStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/SwitchStmt.java' KeyPath='no' />
<File Id='SynchronizedStmtJava' Name='SynchronizedStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/SynchronizedStmt.java' KeyPath='no' />
<File Id='ThrowStmtJava' Name='ThrowStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/ThrowStmt.java' KeyPath='no' />
<File Id='TryStmtJava' Name='TryStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/TryStmt.java' KeyPath='no' />
<File Id='TypeDeclarationStmtJava' Name='TypeDeclarationStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/TypeDeclarationStmt.java' KeyPath='no' />
<File Id='WhileStmtJava' Name='WhileStmt.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/stmt/WhileStmt.java' KeyPath='no' />
</Component>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstType" Name="type">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstTypeCode.Guid="5E5D91B3-DFBE-438D-9210-66F153D15531" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstTypeCode.Guid="E5B93C32-3EF8-4C46-902A-B75BC6D157FC" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstTypeCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstTypeCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstType' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstTypeCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='ClassOrInterfaceTypeJava' Name='ClassOrInterfaceType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java' KeyPath='no' />
<File Id='IntersectionTypeJava' Name='IntersectionType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/IntersectionType.java' KeyPath='no' />
<File Id='PrimitiveTypeJava' Name='PrimitiveType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java' KeyPath='no' />
<File Id='ReferenceTypeJava' Name='ReferenceType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/ReferenceType.java' KeyPath='no' />
<File Id='TypeJava' Name='Type.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/Type.java' KeyPath='no' />
<File Id='UnionTypeJava' Name='UnionType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/UnionType.java' KeyPath='no' />
<File Id='UnknownTypeJava' Name='UnknownType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/UnknownType.java' KeyPath='no' />
<File Id='VoidTypeJava' Name='VoidType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/VoidType.java' KeyPath='no' />
<File Id='WildcardTypeJava' Name='WildcardType.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/type/WildcardType.java' KeyPath='no' />
</Component>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitor" Name="visitor">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitorCode.Guid="01FF3612-411C-4ECF-A540-B8CC7644E95F" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitorCode.Guid="6B1CF4C3-64AB-4F49-AE27-1BF94AE3E7C5" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitorCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitorCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitor' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitorCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='CloneVisitorJava' Name='CloneVisitor.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/CloneVisitor.java' KeyPath='no' />
<File Id='DumpVisitorJava' Name='DumpVisitor.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/DumpVisitor.java' KeyPath='no' />
<File Id='EqualsVisitorJava' Name='EqualsVisitor.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/EqualsVisitor.java' KeyPath='no' />
<File Id='GenericVisitorJava' Name='GenericVisitor.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/GenericVisitor.java' KeyPath='no' />
<File Id='GenericVisitorAdapterJava' Name='GenericVisitorAdapter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/GenericVisitorAdapter.java' KeyPath='no' />
<File Id='ModifierVisitorAdapterJava' Name='ModifierVisitorAdapter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/ModifierVisitorAdapter.java' KeyPath='no' />
<File Id='TreeVisitorJava' Name='TreeVisitor.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/TreeVisitor.java' KeyPath='no' />
<File Id='VoidVisitorJava' Name='VoidVisitor.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/VoidVisitor.java' KeyPath='no' />
<File Id='VoidVisitorAdapterJava' Name='VoidVisitorAdapter.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/ast/visitor/VoidVisitorAdapter.java' KeyPath='no' />
</Component>
</Directory>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtils" Name="utils">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtilsCode.Guid="08FFB90D-8F4C-4FF2-B4C0-425ED5411721" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtilsCode.Guid="DA62C2EF-4A95-4418-A4A2-522A1D941811" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtilsCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtilsCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtils' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtilsCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='ClassUtilsJava' Name='ClassUtils.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/utils/ClassUtils.java' KeyPath='no' />
<File Id='PositionUtilsJava' Name='PositionUtils.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/utils/PositionUtils.java' KeyPath='no' />
<File Id='UtilsJava' Name='Utils.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/java/com/github/javaparser/utils/Utils.java' KeyPath='no' />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
<Directory Id="SampleProjectJavaparserSrcMainJavacc" Name="javacc">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserSrcMainJavaccCode.Guid="F8524079-E942-45AD-B44F-3B51F7A493F5" ?>
<?else ?>
<?define SampleProjectJavaparserSrcMainJavaccCode.Guid="C80408CB-8A66-4D6F-91EA-E293054FF504" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserSrcMainJavaccCode" Guid="$(var.SampleProjectJavaparserSrcMainJavaccCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserSrcMainJavacc' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserSrcMainJavaccCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='Java_1_8Jj' Name='java_1_8.jj' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/src/main/javacc/java_1_8.jj' KeyPath='no' />
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="SampleProjectJavaparserTarget" Name="target">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserTargetFolder.Guid="EC25AED0-E605-4DED-8449-BFDD8A687145" ?>
<?else ?>
<?define SampleProjectJavaparserTargetFolder.Guid="136FE9E5-1C88-4067-8ED9-231471BB5655" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserTargetFolder" Guid="$(var.SampleProjectJavaparserTargetFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserTarget' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserTargetFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserTargetGeneratedSources" Name="generated-sources">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesFolder.Guid="F2333296-5084-45D5-A600-0E17380670D6" ?>
<?else ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesFolder.Guid="6984769A-AB93-4F62-A2BB-38464B6619C2" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserTargetGeneratedSourcesFolder" Guid="$(var.SampleProjectJavaparserTargetGeneratedSourcesFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserTargetGeneratedSources' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserTargetGeneratedSourcesFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserTargetGeneratedSourcesJavacc" Name="javacc">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesJavaccFolder.Guid="449BCF2E-E59C-4C9A-BFED-461E6E4D543C" ?>
<?else ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesJavaccFolder.Guid="25D4F6F3-CE4F-48A0-8F53-1BE859EC3DE7" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserTargetGeneratedSourcesJavaccFolder" Guid="$(var.SampleProjectJavaparserTargetGeneratedSourcesJavaccFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserTargetGeneratedSourcesJavacc' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserTargetGeneratedSourcesJavaccFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserTargetGeneratedSourcesJavaccCom" Name="com">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesJavaccComFolder.Guid="8FC76429-F35B-4B0F-B7F4-F9E325393E9C" ?>
<?else ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesJavaccComFolder.Guid="7BAFC930-EA2B-4012-8142-34C182B3F7A2" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserTargetGeneratedSourcesJavaccComFolder" Guid="$(var.SampleProjectJavaparserTargetGeneratedSourcesJavaccComFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserTargetGeneratedSourcesJavaccCom' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserTargetGeneratedSourcesJavaccComFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithub" Name="github">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubFolder.Guid="9103731D-C7B2-4076-9917-E6929ED294F3" ?>
<?else ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubFolder.Guid="86C63EBD-A3E5-4012-A325-8EAC27A351C3" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubFolder" Guid="$(var.SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubFolder.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithub' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubFolderKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
</Component>
<Directory Id="SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubJavaparser" Name="javaparser">
<?if $(var.Win64)="yes" ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesCode.Guid="D50D050F-9A5D-42EE-8EF9-7D8389D055C0" ?>
<?else ?>
<?define SampleProjectJavaparserTargetGeneratedSourcesCode.Guid="D6DEA249-6A6A-4189-B166-A15C7F2F92E0" ?>
<?endif ?>
<Component Id="SampleProjectJavaparserTargetGeneratedSourcesCode" Guid="$(var.SampleProjectJavaparserTargetGeneratedSourcesCode.Guid)" Win64="$(var.Win64)">
<CreateFolder />
<RemoveFolder Id='SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubJavaparser' On='uninstall' />
<RegistryKey Action="none" Key="Software\[Manufacturer]\[ProductName]\SampleProjectJavaparserTargetGenerated-sourcesJavaccComGithubJavaparserCodeKey" Root="HKCU" >
<RegistryValue Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<File Id='ASTParserJava' Name='ASTParser.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/ASTParser.java' KeyPath='no' />
<File Id='ASTParserConstantsJava' Name='ASTParserConstants.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/ASTParserConstants.java' KeyPath='no' />
<File Id='ASTParserTokenManagerJava' Name='ASTParserTokenManager.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/ASTParserTokenManager.java' KeyPath='no' />
<File Id='JavaCharStreamJava' Name='JavaCharStream.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/JavaCharStream.java' KeyPath='no' />
<File Id='ParseExceptionJava' Name='ParseException.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/ParseException.java' KeyPath='no' />
<File Id='ProviderJava' Name='Provider.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/Provider.java' KeyPath='no' />
<File Id='StreamProviderJava' Name='StreamProvider.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/StreamProvider.java' KeyPath='no' />
<File Id='StringProviderJava' Name='StringProvider.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/StringProvider.java' KeyPath='no' />
<File Id='TokenJava' Name='Token.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/Token.java' KeyPath='no' />
<File Id='TokenMgrExceptionJava' Name='TokenMgrException.java' DiskId='1' Source='./../../../bin/app/user/projects/javaparser/target/generated-sources/javacc/com/github/javaparser/TokenMgrException.java' KeyPath='no' />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
</Wix>
</Wix>
+70 -4
View File
@@ -1,9 +1,16 @@
ORIGINAL_PATH_TO_SCRIPT="${0}"
CLEANED_PATH_TO_SCRIPT="${ORIGINAL_PATH_TO_SCRIPT//\\//}"
SCRIPT_DIR=`dirname "$CLEANED_PATH_TO_SCRIPT"`
ROOT_DIR=$SCRIPT_DIR/../../..
WIN_ARCH=win32
X_ARCH=x86
WIN_64=no
if [ "$1" == "-win64" ]; then
WIN_ARCH=win64
X_ARCH=x64
WIN_64=yes
fi
VERSION_STRING=$(git describe --long)
@@ -21,8 +28,8 @@ rm -rf build
mkdir build
rm -rf ../../../bin/app/data/install/uninstall_wix_$WIN_ARCH.bat
echo $"%windir%\system32\msiexec.exe /x {$PRODUCT_GUID}" >../../../bin/app/data/install/uninstall_wix_$WIN_ARCH.bat
rm -rf $ROOT_DIR/bin/app/data/install/uninstall_wix_$WIN_ARCH.bat
echo $"%windir%\system32\msiexec.exe /x {$PRODUCT_GUID}" >$ROOT_DIR/bin/app/data/install/uninstall_wix_$WIN_ARCH.bat
"devenv.com" CustomActions/CustomActions.sln //build "Release|$X_ARCH"
@@ -32,8 +39,67 @@ OUTPUT_DIR=bin/$WIN_ARCH
rm -rf $OUTPUT_DIR
mkdir -p $OUTPUT_DIR
candle.exe -dProductVersion="$VERSION_STRING" -dProductGuid="$PRODUCT_GUID" -arch $X_ARCH sourcetrail.wxs customActions.wxs dialogShortcuts.wxs installDir.wxs appDataDir.wxs -out build/ > build/compileLog.txt
light.exe -ext WixUIExtension build/sourcetrail.wixobj build/customActions.wixobj build/dialogShortcuts.wixobj build/installDir.wixobj build/appDataDir.wixobj -out build/sourcetrail.msi > build/linkLog.txt
# user
SAMPLE_JAVAPARSER_DIR=$ROOT_DIR/bin/app/user/projects/javaparser
SAMPLE_TICTACTOE_DIR=$ROOT_DIR/bin/app/user/projects/tictactoe
SAMPLE_TUTORIAL_DIR=$ROOT_DIR/bin/app/user/projects/tutorial
heat.exe dir $SAMPLE_JAVAPARSER_DIR -cg SampleJavaparserComponentGroup -var var.SampleJavaparserSourceDir -out build/sampleJavaparser.wxs -gg -sfrag -g1 -dr SampleProjects -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $SAMPLE_TICTACTOE_DIR -cg SampleTictactoeComponentGroup -var var.SampleTictactoeSourceDir -out build/sampleTictactoe.wxs -gg -sfrag -g1 -dr SampleProjects -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $SAMPLE_TUTORIAL_DIR -cg SampleTutorialComponentGroup -var var.SampleTutorialSourceDir -out build/sampleTutorial.wxs -gg -sfrag -g1 -dr SampleProjects -t $SCRIPT_DIR/HeatTransform.xslt
# data
DATA_COLOR_SCHEMES_DIR=$ROOT_DIR/bin/app/data/color_schemes
DATA_CXX_DIR=$ROOT_DIR/bin/app/data/cxx
DATA_FALLBACK_DIR=$ROOT_DIR/bin/app/data/fallback
DATA_FONTS_DIR=$ROOT_DIR/bin/app/data/fonts
DATA_GUI_DIR=$ROOT_DIR/bin/app/data/gui
DATA_JAVA_DIR=$ROOT_DIR/bin/app/data/java
DATA_PYTHON_DIR=$ROOT_DIR/bin/app/data/python
DATA_SYNTAX_HIGHLIGHTING_RULES_DIR=$ROOT_DIR/bin/app/data/syntax_highlighting_rules
heat.exe dir $DATA_COLOR_SCHEMES_DIR -cg DataColorSchemesComponentGroup -var var.DataColorSchemesSourceDir -out build/dataColorSchemes.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_CXX_DIR -cg DataCxxComponentGroup -var var.DataCxxSourceDir -out build/dataCxx.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_FALLBACK_DIR -cg DataFallbackComponentGroup -var var.DataFallbackSourceDir -out build/dataFallback.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_FONTS_DIR -cg DataFontsComponentGroup -var var.DataFontsSourceDir -out build/dataFonts.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_GUI_DIR -cg DataGuiComponentGroup -var var.DataGuiSourceDir -out build/dataGui.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_JAVA_DIR -cg DataJavaComponentGroup -var var.DataJavaSourceDir -out build/dataJava.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_PYTHON_DIR -cg DataPythonComponentGroup -var var.DataPythonSourceDir -out build/dataPython.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
heat.exe dir $DATA_SYNTAX_HIGHLIGHTING_RULES_DIR -cg DataSyntaxHighlightingRulesComponentGroup -var var.DataSyntaxHighlightingRulesSourceDir -out build/dataSyntaxHighlightingRules.wxs -gg -sfrag -g1 -dr LieutenantCommanderData -t $SCRIPT_DIR/HeatTransform.xslt
candle.exe -dProductVersion="$VERSION_STRING" -dProductGuid="$PRODUCT_GUID" -dWin64="$WIN_64" -arch $X_ARCH -out build/ \
-dSampleJavaparserSourceDir="$SAMPLE_JAVAPARSER_DIR" build/sampleJavaparser.wxs \
-dSampleTictactoeSourceDir="$SAMPLE_TICTACTOE_DIR" build/sampleTictactoe.wxs \
-dSampleTutorialSourceDir="$SAMPLE_TUTORIAL_DIR" build/sampleTutorial.wxs \
-dDataColorSchemesSourceDir="$DATA_COLOR_SCHEMES_DIR" build/dataColorSchemes.wxs \
-dDataCxxSourceDir="$DATA_CXX_DIR" build/dataCxx.wxs \
-dDataFallbackSourceDir="$DATA_FALLBACK_DIR" build/dataFallback.wxs \
-dDataFontsSourceDir="$DATA_FONTS_DIR" build/dataFonts.wxs \
-dDataGuiSourceDir="$DATA_GUI_DIR" build/dataGui.wxs \
-dDataJavaSourceDir="$DATA_JAVA_DIR" build/dataJava.wxs \
-dDataPythonSourceDir="$DATA_PYTHON_DIR" build/dataPython.wxs \
-dDataSyntaxHighlightingRulesSourceDir="$DATA_SYNTAX_HIGHLIGHTING_RULES_DIR" build/dataSyntaxHighlightingRules.wxs \
sourcetrail.wxs customActions.wxs dialogShortcuts.wxs installDir.wxs appDataDir.wxs \
> build/compileLog.txt
light.exe -ext WixUIExtension \
build/sampleJavaparser.wixobj \
build/sampleTictactoe.wixobj \
build/sampleTutorial.wixobj \
build/dataColorSchemes.wixobj \
build/dataCxx.wixobj \
build/dataFallback.wixobj \
build/dataFonts.wixobj \
build/dataGui.wixobj \
build/dataJava.wixobj \
build/dataPython.wixobj \
build/dataSyntaxHighlightingRules.wixobj \
build/sourcetrail.wixobj build/customActions.wixobj build/dialogShortcuts.wixobj build/installDir.wixobj build/appDataDir.wixobj -out build/sourcetrail.msi \
> build/linkLog.txt
cp -u -r build/sourcetrail.msi $OUTPUT_DIR
cp -u -r readme.txt $OUTPUT_DIR
File diff suppressed because it is too large Load Diff
+14 -344
View File
@@ -2,18 +2,16 @@
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?define ProductName = "Sourcetrail" ?>
<?define ProductAuthor = "Coati Software OG" ?>
<?define ProductAuthor = "Coati Software KG" ?>
<?define ProductAppFolder = "InstallLocation" ?>
<?if $(sys.BUILDARCH) = x64 ?>
<?define ProductDisplayName = "$(var.ProductName) 64-bit" ?>
<?define ProductUpgradeCode = "693A35C7-8D56-4930-8653-1DC880D78678" ?>
<?define Win64 = "yes" ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define ProductDisplayName = "$(var.ProductName)" ?>
<?define ProductUpgradeCode = "6DAB9E05-6E5B-4D26-A2A0-8F1757F2A4EF" ?>
<?define Win64 = "no" ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
@@ -163,6 +161,7 @@
<!-- <MergeRef Id='VCRedist'/> --> <!-- see comment at declaration -->
<!-- Application Folder Stuff -->
<ComponentRef Id='MainExecutable'/>
<ComponentRef Id='ApplicationShortcut'/>
@@ -251,316 +250,14 @@
<ComponentRef Id='LicenseQtTxt'/>
<ComponentRef Id='LicenseTinyxmlTxt'/>
<ComponentRef Id='badRainbowXml'/>
<ComponentRef Id='brightXml'/>
<ComponentRef Id='darkXml'/>
<ComponentRef Id='ClangHeaderalgorithm'/>
<ComponentRef Id='ClangHeadercomplex'/>
<ComponentRef Id='ClangHeadernew'/>
<ComponentRef Id='ClangHeader__clang_cuda_builtin_varsH'/>
<ComponentRef Id='ClangHeader__clang_cuda_cmathH'/>
<ComponentRef Id='ClangHeader__clang_cuda_complex_builtinsH'/>
<ComponentRef Id='ClangHeader__clang_cuda_device_functionsH'/>
<ComponentRef Id='ClangHeader__clang_cuda_intrinsicsH'/>
<ComponentRef Id='ClangHeader__clang_cuda_libdevice_declaresH'/>
<ComponentRef Id='ClangHeader__clang_cuda_math_forward_declaresH'/>
<ComponentRef Id='ClangHeader__clang_cuda_runtime_wrapperH'/>
<ComponentRef Id='ClangHeader__stddef_max_align_tH'/>
<ComponentRef Id='ClangHeader__wmmintrin_aesH'/>
<ComponentRef Id='ClangHeader__wmmintrin_pclmulH'/>
<ComponentRef Id='ClangHeaderadxintrinH'/>
<ComponentRef Id='ClangHeaderaltivecH'/>
<ComponentRef Id='ClangHeaderammintrinH'/>
<ComponentRef Id='ClangHeaderarm64intrH'/>
<ComponentRef Id='ClangHeaderarmintrH'/>
<ComponentRef Id='ClangHeaderarm_acleH'/>
<ComponentRef Id='ClangHeaderarm_arm_fp16H'/>
<ComponentRef Id='ClangHeaderarm_neonH'/>
<ComponentRef Id='ClangHeaderavx2intrinH'/>
<ComponentRef Id='ClangHeaderavx512bitalgintrinH'/>
<ComponentRef Id='ClangHeaderavx512bwintrinH'/>
<ComponentRef Id='ClangHeaderavx512cdintrinH'/>
<ComponentRef Id='ClangHeaderavx512dqintrinH'/>
<ComponentRef Id='ClangHeaderavx512erintrinH'/>
<ComponentRef Id='ClangHeaderavx512fintrinH'/>
<ComponentRef Id='ClangHeaderavx512ifmaintrinH'/>
<ComponentRef Id='ClangHeaderavx512ifmavlintrinH'/>
<ComponentRef Id='ClangHeaderavx512pfintrinH'/>
<ComponentRef Id='ClangHeaderavx512vbmi2intrinH'/>
<ComponentRef Id='ClangHeaderavx512vbmiintrinH'/>
<ComponentRef Id='ClangHeaderavx512vbmivlintrinH'/>
<ComponentRef Id='ClangHeaderavx512vlbitalgintrinH'/>
<ComponentRef Id='ClangHeaderavx512vlbwintrinH'/>
<ComponentRef Id='ClangHeaderavx512vlcdintrinH'/>
<ComponentRef Id='ClangHeaderavx512vldqintrinH'/>
<ComponentRef Id='ClangHeaderavx512vlintrinH'/>
<ComponentRef Id='ClangHeaderavx512vlvbmi2intrinH'/>
<ComponentRef Id='ClangHeaderavx512vlvnniintrinH'/>
<ComponentRef Id='ClangHeaderavx512vnniintrinH'/>
<ComponentRef Id='ClangHeaderavx512vpopcntdqintrinH'/>
<ComponentRef Id='ClangHeaderavx512vpopcntdqvlintrinH'/>
<ComponentRef Id='ClangHeaderavxintrinH'/>
<ComponentRef Id='ClangHeaderbmi2intrinH'/>
<ComponentRef Id='ClangHeaderbmiintrinH'/>
<ComponentRef Id='ClangHeadercetintrinH'/>
<ComponentRef Id='ClangHeadercldemoteintrinH'/>
<ComponentRef Id='ClangHeaderclflushoptintrinH'/>
<ComponentRef Id='ClangHeaderclwbintrinH'/>
<ComponentRef Id='ClangHeaderclzerointrinH'/>
<ComponentRef Id='ClangHeadercpuidH'/>
<ComponentRef Id='ClangHeaderemmintrinH'/>
<ComponentRef Id='ClangHeaderf16cintrinH'/>
<ComponentRef Id='ClangHeaderfloatH'/>
<ComponentRef Id='ClangHeaderfma4intrinH'/>
<ComponentRef Id='ClangHeaderfmaintrinH'/>
<ComponentRef Id='ClangHeaderfxsrintrinH'/>
<ComponentRef Id='ClangHeadergfniintrinH'/>
<ComponentRef Id='ClangHeaderhtmintrinH'/>
<ComponentRef Id='ClangHeaderhtmxlintrinH'/>
<ComponentRef Id='ClangHeaderia32intrinH'/>
<ComponentRef Id='ClangHeaderimmintrinH'/>
<ComponentRef Id='ClangHeaderintrinH'/>
<ComponentRef Id='ClangHeaderinttypesH'/>
<ComponentRef Id='ClangHeaderinvpcidintrinH'/>
<ComponentRef Id='ClangHeaderiso646H'/>
<ComponentRef Id='ClangHeaderlimitsH'/>
<ComponentRef Id='ClangHeaderlwpintrinH'/>
<ComponentRef Id='ClangHeaderlzcntintrinH'/>
<ComponentRef Id='ClangHeadermm3dnowH'/>
<ComponentRef Id='ClangHeadermmintrinH'/>
<ComponentRef Id='ClangHeadermm_mallocH'/>
<ComponentRef Id='ClangHeadermoduleModulemap'/>
<ComponentRef Id='ClangHeadermovdirintrinH'/>
<ComponentRef Id='ClangHeadermsaH'/>
<ComponentRef Id='ClangHeadermwaitxintrinH'/>
<ComponentRef Id='ClangHeadernmmintrinH'/>
<ComponentRef Id='ClangHeaderopenclcH'/>
<ComponentRef Id='ClangHeaderpconfigintrinH'/>
<ComponentRef Id='ClangHeaderpkuintrinH'/>
<ComponentRef Id='ClangHeaderpmmintrinH'/>
<ComponentRef Id='ClangHeaderpopcntintrinH'/>
<ComponentRef Id='ClangHeaderprfchwintrinH'/>
<ComponentRef Id='ClangHeaderptwriteintrinH'/>
<ComponentRef Id='ClangHeaderrdseedintrinH'/>
<ComponentRef Id='ClangHeaderrtmintrinH'/>
<ComponentRef Id='ClangHeaders390intrinH'/>
<ComponentRef Id='ClangHeadersgxintrinH'/>
<ComponentRef Id='ClangHeadershaintrinH'/>
<ComponentRef Id='ClangHeadersmmintrinH'/>
<ComponentRef Id='ClangHeaderstdalignH'/>
<ComponentRef Id='ClangHeaderstdargH'/>
<ComponentRef Id='ClangHeaderstdatomicH'/>
<ComponentRef Id='ClangHeaderstdboolH'/>
<ComponentRef Id='ClangHeaderstddefH'/>
<ComponentRef Id='ClangHeaderstdintH'/>
<ComponentRef Id='ClangHeaderstdnoreturnH'/>
<ComponentRef Id='ClangHeadertbmintrinH'/>
<ComponentRef Id='ClangHeadertgmathH'/>
<ComponentRef Id='ClangHeadertmmintrinH'/>
<ComponentRef Id='ClangHeaderunwindH'/>
<ComponentRef Id='ClangHeadervadefsH'/>
<ComponentRef Id='ClangHeadervaesintrinH'/>
<ComponentRef Id='ClangHeadervarargsH'/>
<ComponentRef Id='ClangHeadervecintrinH'/>
<ComponentRef Id='ClangHeadervpclmulqdqintrinH'/>
<ComponentRef Id='ClangHeaderwaitpkgintrinH'/>
<ComponentRef Id='ClangHeaderwbnoinvdintrinH'/>
<ComponentRef Id='ClangHeaderwmmintrinH'/>
<ComponentRef Id='ClangHeaderx86intrinH'/>
<ComponentRef Id='ClangHeaderxmmintrinH'/>
<ComponentRef Id='ClangHeaderxopintrinH'/>
<ComponentRef Id='ClangHeaderxsavecintrinH'/>
<ComponentRef Id='ClangHeaderxsaveintrinH'/>
<ComponentRef Id='ClangHeaderxsaveoptintrinH'/>
<ComponentRef Id='ClangHeaderxsavesintrinH'/>
<ComponentRef Id='ClangHeaderxtestintrinH'/>
<ComponentRef Id='applicationSettingsXml'/>
<ComponentRef Id='window_settingsIni'/>
<ComponentRef Id='FiraSansLicensetxt'/>
<ComponentRef Id='FiraSansRegularotf'/>
<ComponentRef Id='FiraSansSemiBoldotf'/>
<ComponentRef Id='RobotoLicensetxt'/>
<ComponentRef Id='RobotoBoldttf'/>
<ComponentRef Id='RobotoRegularttf'/>
<ComponentRef Id='SourceCodeProLicensetxt'/>
<ComponentRef Id='SourceCodeProBoldotf'/>
<ComponentRef Id='SourceCodeProMediumotf'/>
<ComponentRef Id='SourceCodeProRegularotf'/>
<ComponentRef Id='AboutCss'/>
<ComponentRef Id='LogoSourcetrailPng'/>
<ComponentRef Id='BookmarkViewCss'/>
<ComponentRef Id='BookmarkViewArrowDownPng'/>
<ComponentRef Id='BookmarkViewArrowLineDownPng'/>
<ComponentRef Id='BookmarkViewArrowLineUpPng'/>
<ComponentRef Id='BookmarkViewArrowRightPng'/>
<ComponentRef Id='BookmarkViewBookmarkActivePng'/>
<ComponentRef Id='BookmarkViewBookmarkDeleteIconPng'/>
<ComponentRef Id='BookmarkViewBookmarkEditIconPng'/>
<ComponentRef Id='BookmarkViewBookmarkListIconPng'/>
<ComponentRef Id='BookmarkViewEditBookmarkIconPng'/>
<ComponentRef Id='CodeViewCss'/>
<ComponentRef Id='CodeViewArrowDownPng'/>
<ComponentRef Id='CodeViewArrowLeftPng'/>
<ComponentRef Id='CodeViewArrowRightPng'/>
<ComponentRef Id='CodeViewArrowUpPng'/>
<ComponentRef Id='CodeViewButtonBackgroundPng'/>
<ComponentRef Id='CodeViewEditPng'/>
<ComponentRef Id='CodeViewFilePng'/>
<ComponentRef Id='CodeViewListPng'/>
<ComponentRef Id='CodeViewMaximizeActivePng'/>
<ComponentRef Id='CodeViewMaximizeInactivePng'/>
<ComponentRef Id='CodeViewMinimizeActivePng'/>
<ComponentRef Id='CodeViewMinimizeInactivePng'/>
<ComponentRef Id='CodeViewPatternBrightPng'/>
<ComponentRef Id='CodeViewPatternDarkPng'/>
<ComponentRef Id='CodeViewPatternGreyPng'/>
<ComponentRef Id='CodeViewSnippetActivePng'/>
<ComponentRef Id='CodeViewSnippetInactivePng'/>
<ComponentRef Id='GraphViewCss'/>
<ComponentRef Id='AnnotationPng'/>
<ComponentRef Id='ArrowGraphPng'/>
<ComponentRef Id='BundlePng'/>
<ComponentRef Id='DefaultPng'/>
<ComponentRef Id='EnumPng'/>
<ComponentRef Id='FilePng'/>
<ComponentRef Id='FileIncompletePng'/>
<ComponentRef Id='GraphPng'/>
<ComponentRef Id='GraphArrowPng'/>
<ComponentRef Id='GraphDownPng'/>
<ComponentRef Id='GraphLeftPng'/>
<ComponentRef Id='GraphRightPng'/>
<ComponentRef Id='GraphUpPng'/>
<ComponentRef Id='GroupNamespacePng'/>
<ComponentRef Id='LegendPng'/>
<ComponentRef Id='MacroPng'/>
<ComponentRef Id='NamespacePng'/>
<ComponentRef Id='GraphPatternPng'/>
<ComponentRef Id='PrivatePng'/>
<ComponentRef Id='ProtectedPng'/>
<ComponentRef Id='PublicPng'/>
<ComponentRef Id='TemplatePng'/>
<ComponentRef Id='TypedefPng'/>
<ComponentRef Id='ZoomInPng'/>
<ComponentRef Id='ZoomOutPng'/>
<ComponentRef Id='HistoryListCss'/>
<ComponentRef Id='HistoryListArrowPng'/>
<ComponentRef Id='C_icon_Png'/>
<ComponentRef Id='Cbp_icon_Png'/>
<ComponentRef Id='Cdb_icon_Png'/>
<ComponentRef Id='SourcetrailIco'/>
<ComponentRef Id='Cpp_icon_Png'/>
<ComponentRef Id='Empty_icon_Png'/>
<ComponentRef Id='Gradle_icon_Png'/>
<ComponentRef Id='Java_icon_Png'/>
<ComponentRef Id='Logo_1024_1024_Png'/>
<ComponentRef Id='Mvn_icon_Png'/>
<ComponentRef Id='ProjectIco'/>
<ComponentRef Id='Project_256_256_Png'/>
<ComponentRef Id='Sonargraph_Icon_Png'/>
<ComponentRef Id='Vs_icon_Png'/>
<ComponentRef Id='ErrorPng'/>
<ComponentRef Id='FlagPng'/>
<ComponentRef Id='IndexingDialogCss'/>
<ComponentRef Id='ProgressBarElementPng'/>
<ComponentRef Id='LicenseCss'/>
<ComponentRef Id='MainCss'/>
<ComponentRef Id='ScrollbarCss'/>
<ComponentRef Id='CloseBlackPng'/>
<ComponentRef Id='CloseGreyPng'/>
<ComponentRef Id='CloseWhitePng'/>
<ComponentRef Id='FloatBlackPng'/>
<ComponentRef Id='FloatGreyPng'/>
<ComponentRef Id='FloatWhitePng'/>
<ComponentRef Id='EulaTxt'/>
<ComponentRef Id='KeyboardShortcutsCss'/>
<ComponentRef Id='RefreshViewCss'/>
<ComponentRef Id='RefreshPng'/>
<ComponentRef Id='ScreenSearchViewCss'/>
<ComponentRef Id='ScreenSearchViewClosePng'/>
<ComponentRef Id='SearchViewCss'/>
<ComponentRef Id='ArrowSearchPng'/>
<ComponentRef Id='HomePng'/>
<ComponentRef Id='SearchPng'/>
<ComponentRef Id='StartscreenCss'/>
<ComponentRef Id='DotPng'/>
<ComponentRef Id='LoaderGif'/>
<ComponentRef Id='TabbedViewCss'/>
<ComponentRef Id='TabbedViewArrowDownPng'/>
<ComponentRef Id='TabbedViewArrowUpPng'/>
<ComponentRef Id='TabsViewCss'/>
<ComponentRef Id='DataTabsViewAddPng'/>
<ComponentRef Id='DataTabsViewClosePng'/>
<ComponentRef Id='TooltipViewCss'/>
<ComponentRef Id='UndoRedoViewCss'/>
<ComponentRef Id='ArrowLeftPng'/>
<ComponentRef Id='ArrowRightPng'/>
<ComponentRef Id='HistoryPng'/>
<ComponentRef Id='WindowDotsPng'/>
<ComponentRef Id='WindowDotsHoverPng'/>
<ComponentRef Id='HelpPng'/>
<ComponentRef Id='HelpHoverPng'/>
<ComponentRef Id='ListboxCss'/>
<ComponentRef Id='LogoPng'/>
<ComponentRef Id='MinusPng'/>
<ComponentRef Id='MinusHoverPng'/>
<ComponentRef Id='PlusPng'/>
<ComponentRef Id='PlusHoverPng'/>
<ComponentRef Id='WindowRefreshPng'/>
<ComponentRef Id='RefreshHoverPng'/>
<ComponentRef Id='SizeGripBlackPng'/>
<ComponentRef Id='SizeGripWhitePng'/>
<ComponentRef Id='SourceGroupAddPng'/>
<ComponentRef Id='SourceGroupAddHoverPng'/>
<ComponentRef Id='SourceGroupCopyPng'/>
<ComponentRef Id='SourceGroupCopyHoverPng'/>
<ComponentRef Id='SourceGroupDeletePng'/>
<ComponentRef Id='SourceGroupDeleteHoverPng'/>
<ComponentRef Id='WindowCss'/>
<ComponentRef Id='JavaGradleInitGradle'/>
<ComponentRef Id='GradleToolingApiJar'/>
<ComponentRef Id='JavaJavaIndexerJar'/>
<ComponentRef Id='JavaOrgEclipseCoreCommandsJar'/>
<ComponentRef Id='JavaOrgEclipseCoreContenttypeJar'/>
<ComponentRef Id='JavaOrgEclipseCoreExpressionsJar'/>
<ComponentRef Id='JavaOrgEclipseCoreFilesystemJar'/>
<ComponentRef Id='JavaOrgEclipseCoreJobsJar'/>
<ComponentRef Id='JavaOrgEclipseCoreResourcesJar'/>
<ComponentRef Id='JavaOrgEclipseCoreRuntimeJar'/>
<ComponentRef Id='JavaOrgEclipseEquinoxJar'/>
<ComponentRef Id='JavaOrgEclipseEquinoxCommonJar'/>
<ComponentRef Id='JavaOrgEclipseEquinoxPreferencesJar'/>
<ComponentRef Id='JavaOrgEclipseEquinoxRegistryJar'/>
<ComponentRef Id='JavaOrgEclipseJdtCoreJar'/>
<ComponentRef Id='JavaOrgEclipseOsgiJar'/>
<ComponentRef Id='JavaOrgEclipseTextJar'/>
<ComponentRef Id='Slf4jApiJar'/>
<ComponentRef Id='Slf4jSimpleJar'/>
<ComponentGroupRef Id='DataColorSchemesComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataCxxComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataFallbackComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataFontsComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataGuiComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataJavaComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataPythonComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='DataSyntaxHighlightingRulesComponentGroup' Primary="yes"/>
<ComponentRef Id='UninstallBat'/>
@@ -573,36 +270,9 @@
<!-- Sample Projects for AddData Folder -->
<!-- <Feature Id='SampleCode' Title='Samples' Description='Tutorial and Sample Project' Level='1000'> -->
<ComponentRef Id='SampleProjects'/>
<ComponentRef Id='TictactoeSourcetrailproject'/>
<ComponentRef Id='TictactoeCode'/>
<ComponentRef Id='TutorialSourcetrailproject'/>
<ComponentRef Id='TutorialCode'/>
<ComponentRef Id='JavaparserSourcetrailproject'/>
<ComponentRef Id='SampleProjectJavaparserSrcFolder'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainFolder'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaFolder'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComFolder'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubFolder'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstBodyCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstCommentsCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstExprCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstNodeTypesCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstStmtCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstTypeCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserAstVisitorCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaComGithubJavaparserUtilsCode'/>
<ComponentRef Id='SampleProjectJavaparserSrcMainJavaccCode'/>
<ComponentRef Id='SampleProjectJavaparserTargetFolder'/>
<ComponentRef Id='SampleProjectJavaparserTargetGeneratedSourcesFolder'/>
<ComponentRef Id='SampleProjectJavaparserTargetGeneratedSourcesJavaccFolder'/>
<ComponentRef Id='SampleProjectJavaparserTargetGeneratedSourcesJavaccComFolder'/>
<ComponentRef Id='SampleProjectJavaparserTargetGeneratedSourcesJavaccComGithubFolder'/>
<ComponentRef Id='SampleProjectJavaparserTargetGeneratedSourcesCode'/>
<ComponentGroupRef Id='SampleJavaparserComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='SampleTictactoeComponentGroup' Primary="yes"/>
<ComponentGroupRef Id='SampleTutorialComponentGroup' Primary="yes"/>
</Feature>
</Feature>
@@ -634,7 +304,7 @@
<Icon Id="Sourcetrail.ico" SourceFile="./../../../bin/app/data/gui/icon/sourcetrail.ico" />
<Icon Id="Project.ico" SourceFile="./../../../bin/app/data/gui/icon/project.ico" />
<WixVariable Id="WixUILicenseRtf" Value="./../../../bin/app/data/gui/installer/EULA.rtf" />
<WixVariable Id="WixUILicenseRtf" Value="./../../../bin/app/data/license/EULA.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="Images/banner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="Images/w_installer.bmp" />
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+109 -8
View File
@@ -38,23 +38,124 @@
</repositories>
<dependencies>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.13.102</version>
</dependency>
<dependency>
<groupId>org.gradle</groupId>
<artifactId>gradle-tooling-api</artifactId>
<version>4.2</version>
<scope>system</scope>
<systemPath>${basedir}/lib/gradle-tooling-api-4.2.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.commands</artifactId>
<version>3.9.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.commands-3.9.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.contenttype</artifactId>
<version>3.7.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.contenttype-3.7.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.expressions</artifactId>
<version>3.6.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.expressions-3.6.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.filesystem</artifactId>
<version>1.7.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.filesystem-1.7.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.jobs</artifactId>
<version>3.10.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.jobs-3.10.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.resources</artifactId>
<version>3.13.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.resources-3.13.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.runtime</artifactId>
<version>3.15.100</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.core.runtime-3.15.100.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.app</artifactId>
<version>1.4.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.equinox.app-1.4.0.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.common</artifactId>
<version>3.10.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.equinox.common-3.10.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.preferences</artifactId>
<version>3.7.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.equinox.preferences-3.7.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.registry</artifactId>
<version>3.8.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.equinox.registry-3.8.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.13.102</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.jdt.core-3.13.102.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>org.eclipse.osgi</artifactId>
<version>3.13.200</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.osgi-3.13.200.jar</systemPath>
</dependency>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>org.eclipse.text</artifactId>
<version>3.8.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/org.eclipse.text-3.8.0.jar</systemPath>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
<scope>system</scope>
<systemPath>${basedir}/lib/slf4j-api-1.7.10.jar</systemPath>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.10</version>
<scope>test</scope>
<scope>system</scope>
<systemPath>${basedir}/lib/slf4j-simple-1.7.10.jar</systemPath>
</dependency>
</dependencies>
</project>
@@ -11,18 +11,17 @@ public enum SymbolKind
FUNCTION(7),
GLOBAL_VARIABLE(8),
INTERFACE(9),
LOCAL_VARIABLE(10),
MACRO(11),
METHOD(12),
MACRO(10),
METHOD(11),
MODULE(12),
NAMESPACE(13),
PACKAGE(14),
PARAMETER(15),
STRUCT(16),
TEMPLATE_PARAMETER(17),
TYPEDEF(18),
TYPE_PARAMETER(19),
UNION(20),
TYPE_MAX(21);
STRUCT(15),
TEMPLATE_PARAMETER(16),
TYPEDEF(17),
TYPE_PARAMETER(18),
UNION(19),
TYPE_MAX(20);
private final int m_value;
+2 -1
View File
@@ -24,7 +24,7 @@ fi
ROOT_DIR=$ROOT_DIR/..
# Enter masterproject directory
# Enter sourcetrail root directory
cd $ROOT_DIR/
if [ $PLATFORM == "Windows" ]; then
@@ -41,6 +41,7 @@ if [ $PLATFORM == "Windows" ]; then
fi
# Remove folders and contents
rm -rf bin/app/data/python
rm -rf java_indexer/bin
rm -rf build
+14 -12
View File
@@ -148,7 +148,7 @@ if [ $CREATE_INSTALLER_ZIP = true ]; then
cp -u -r ide_plugins/vscode/* $INSTALLER_PACKAGE_PLUGINS_DIR/vscode/
mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/visual_studio/
cp -u -r ide_plugins/visual_studio/* $INSTALLER_PACKAGE_PLUGINS_DIR/visual_studio/
cd ./release/
# PACKAGING SOURCETRAIL
@@ -166,7 +166,7 @@ if [ $CREATE_INSTALLER_ZIP = true ]; then
echo -e "$INFO Cleaning installer package folders for win$1"
rm -rf $INSTALLER_PACKAGE_DIR
}
create_installer_zip "32"
create_installer_zip "64"
fi
@@ -185,12 +185,12 @@ if [ $CREATE_PORTABLE_ZIP = true ]; then
rm -rf $PORTABLE_PACKAGE_DIR
mkdir -p $PORTABLE_PACKAGE_DIR
# COPYING APPLICATION DATA
mkdir -p $PORTABLE_PACKAGE_APP_DIR/license/3rd_party_licenses/
cp -u -r bin/app/data/3rd_party_licenses/* $PORTABLE_PACKAGE_APP_DIR/license/3rd_party_licenses/
cp -u -r bin/app/data/gui/installer/EULA.rtf $PORTABLE_PACKAGE_APP_DIR/license/
cp -u -r bin/app/data/license/3rd_party_licenses/* $PORTABLE_PACKAGE_APP_DIR/license/3rd_party_licenses/
cp -u -r bin/app/data/license/EULA.rtf $PORTABLE_PACKAGE_APP_DIR/license/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/color_schemes/
cp -u -r bin/app/data/color_schemes/* $PORTABLE_PACKAGE_APP_DIR/data/color_schemes/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/cxx/
@@ -205,24 +205,26 @@ if [ $CREATE_PORTABLE_ZIP = true ]; then
cp -u -r bin/app/data/install/* $PORTABLE_PACKAGE_APP_DIR/data/install/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/java/
cp -u -r bin/app/data/java/* $PORTABLE_PACKAGE_APP_DIR/data/java/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/syntax_highlighting_rules/
cp -u -r bin/app/data/syntax_highlighting_rules/* $PORTABLE_PACKAGE_APP_DIR/data/syntax_highlighting_rules/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/user/projects/javaparser/
cp -u -r bin/app/user/projects/javaparser/* $PORTABLE_PACKAGE_APP_DIR/user/projects/javaparser/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/user/projects/tictactoe/
cp -u -r bin/app/user/projects/tictactoe/* $PORTABLE_PACKAGE_APP_DIR/user/projects/tictactoe/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/user/projects/tutorial/
cp -u -r bin/app/user/projects/tutorial/* $PORTABLE_PACKAGE_APP_DIR/user/projects/tutorial/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/imageformats/
cp -u -r build/win$1/Release/app/imageformats/*.dll $PORTABLE_PACKAGE_APP_DIR/imageformats/
mkdir -p $PORTABLE_PACKAGE_APP_DIR/platforms/
cp -u -r build/win$1/Release/app/platforms/*.dll $PORTABLE_PACKAGE_APP_DIR/platforms/
cp -u -r build/win$1/Release/app/*.dll $PORTABLE_PACKAGE_APP_DIR/
cp -u -r build/win$1/Release/app/qt.conf $PORTABLE_PACKAGE_APP_DIR/
cp -u -r build/win$1/Release/app/Sourcetrail.exe $PORTABLE_PACKAGE_APP_DIR/
cp -u -r build/win$1/Release/app/sourcetrail_indexer.exe $PORTABLE_PACKAGE_APP_DIR/
# COPYING PLUGINS DATA
mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/atom/
@@ -243,7 +245,7 @@ if [ $CREATE_PORTABLE_ZIP = true ]; then
cp -u -r ide_plugins/vscode/* $PORTABLE_PACKAGE_PLUGINS_DIR/vscode/
mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/visual_studio/
cp -u -r ide_plugins/visual_studio/* $PORTABLE_PACKAGE_PLUGINS_DIR/visual_studio/
cd ./release/
# PACKAGING SOURCETRAIL
@@ -256,7 +258,7 @@ if [ $CREATE_PORTABLE_ZIP = true ]; then
echo -e "$INFO Cleaning portable package folders for win$1"
rm -rf $PORTABLE_PACKAGE_DIR
}
create_portable_zip "32"
create_portable_zip "64"
fi
+70
View File
@@ -0,0 +1,70 @@
#!/bin/bash
SOURCETRAIL_PYTHON_INDEXER_VERSION="v0_db23_p4"
# Determine current platform
PLATFORM='unknown'
if [ "$(uname)" == "Darwin" ]; then
PLATFORM='osx'
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
PLATFORM='linux'
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
PLATFORM='windows'
fi
PACKAGE_NAME="SourcetrailPythonIndexer_${SOURCETRAIL_PYTHON_INDEXER_VERSION}-${PLATFORM}"
PACKAGE_FILE_NAME="${PACKAGE_NAME}.zip"
PACKAGE_URL="https://github.com/CoatiSoftware/SourcetrailPythonIndexer/releases/download/${SOURCETRAIL_PYTHON_INDEXER_VERSION}/${PACKAGE_FILE_NAME}"
TEMP_PATH="build/temp"
TARGET_PATH="bin/app/data/python"
ABORT="\033[31mAbort:\033[00m"
SUCCESS="\033[32mSuccess:\033[00m"
INFO="\033[33mInfo:\033[00m"
if [ $PLATFORM == "windows" ]; then
ORIGINAL_PATH_TO_SCRIPT="${0}"
CLEANED_PATH_TO_SCRIPT="${ORIGINAL_PATH_TO_SCRIPT//\\//}"
ROOT_DIR=`dirname "$CLEANED_PATH_TO_SCRIPT"`
else
ROOT_DIR="$( cd "$( dirname "$0" )" && pwd )"
fi
ROOT_DIR=$ROOT_DIR/..
# Enter main directory
cd $ROOT_DIR/
mkdir -p $TEMP_PATH
echo -e $INFO "starting to download $PACKAGE_FILE_NAME"
if [ $PLATFORM == "linux" ]; then
wget -O $TEMP_PATH/$PACKAGE_FILE_NAME $PACKAGE_URL
elif [ $PLATFORM == "osx" ]; then
wget -O $TEMP_PATH/$PACKAGE_FILE_NAME $PACKAGE_URL
elif [ $PLATFORM == "windows" ]; then
certutil.exe -urlcache -split -f $PACKAGE_URL $TEMP_PATH/$PACKAGE_FILE_NAME
fi
echo -e $INFO "finished downloading $PACKAGE_FILE_NAME"
if [ $PLATFORM == "linux" ]; then
unzip -d $TEMP_PATH $TEMP_PATH/$PACKAGE_FILE_NAME
elif [ $PLATFORM == "osx" ]; then
unzip -d $TEMP_PATH $TEMP_PATH/$PACKAGE_FILE_NAME
elif [ $PLATFORM == "windows" ]; then
winrar x $TEMP_PATH/$PACKAGE_FILE_NAME $TEMP_PATH
fi
echo -e $INFO "clearing $TARGET_PATH"
rm -rf $TARGET_PATH
mkdir -p $TARGET_PATH
cp -r $TEMP_PATH/$PACKAGE_NAME/* $TARGET_PATH
echo -e $INFO "clearing temporary data at $TEMP_PATH"
rm -rf $TEMP_PATH
+9 -4
View File
@@ -34,10 +34,9 @@ echo -e $INFO "install git settings"
git config commit.template setup/git/git_commit_template.txt
git config color.ui true
if [ -d ".git/hooks" ]
then
cp setup/git/git_pre_commit_hook.sh .git/hooks/pre-commit
cp setup/git/git_pre_push_hook.sh .git/hooks/pre-push
if [ -d ".git/hooks" ]; then
cp setup/git/git_pre_commit_hook.sh .git/hooks/pre-commit
cp setup/git/git_pre_push_hook.sh .git/hooks/pre-push
fi
# Create Debug and Release folders
@@ -102,6 +101,12 @@ else
mkdir -p build/Release/test
fi
if [ $PLATFORM == "Windows" ]; then
sh script/download_python_indexer.sh
else
MY_PATH=`dirname "$0"`
$MY_PATH/download_python_indexer.sh
fi
if [ $PLATFORM == "Windows" ]; then
echo -e $INFO "creating program icon"
+2 -2
View File
@@ -30,7 +30,7 @@ cd $ROOT_DIR/
cd java_indexer
echo "cleaning and building java_indexer.jar"
mvn clean package dependency:copy-dependencies
mvn clean package
cd ../
@@ -38,4 +38,4 @@ echo -e $INFO "copy jars"
mkdir -p bin/app/data/java/lib/
rm -rf bin/app/data/java/lib/*
cp -r java_indexer/target/java-indexer-1.0.jar bin/app/data/java/lib/java-indexer.jar
cp -r java_indexer/target/dependency/*.jar bin/app/data/java/lib
cp -r java_indexer/lib/*.jar bin/app/data/java/lib
Regular → Executable
+4 -3
View File
@@ -5,9 +5,10 @@ SOURCE="${0}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
if [ "$SOURCE" != /* ]; then
SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
fi
case $SOURCE in # if $SOURCE is a relative symlink, we need to resolve it relative to the path where the symlink file was located
/*) ;;
*) SOURCE="$DIR/$SOURCE" ;;
esac
done
SOURCETRAIL_PATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+2
View File
@@ -36,6 +36,8 @@
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSRequiresAquaSystemAppearance</key>
<true/>
<key>CFBundleIconFile</key>
<string>icon</string>
<key>LSMinimumSystemVersion</key>
+4 -3
View File
@@ -71,13 +71,14 @@ cp $INDEXER_NAME $INDEXER_PATH
mkdir -p $RES_DIR/data
cp -R ../../../bin/app/data/color_schemes $RES_DIR/data/color_schemes
cp -R ../../../bin/app/data/syntax_highlighting_rules $RES_DIR/data/syntax_highlighting_rules
cp -R ../../../bin/app/data/fonts $RES_DIR/data/fonts
cp -R ../../../bin/app/data/gui $RES_DIR/data/gui
cp -R ../../../bin/app/data/java $RES_DIR/data/java
cp -R ../../../bin/app/data/python $RES_DIR/data/python
cp -R ../../../bin/app/data/fallback $RES_DIR/data/fallback
cp -R ../../../bin/app/user/projects $RES_DIR/data/fallback/projects
cp -R ../../../bin/app/data/3rd_party_licenses $RES_DIR/3rd_party_licenses
cp -R ../../../bin/app/data/license $RES_DIR/license
mkdir -p $RES_DIR/data/cxx/include
cp -R ../../../bin/app/data/cxx/include/* $RES_DIR/data/cxx/include
@@ -192,7 +193,7 @@ cp -R ../../../ide_plugins/eclipse $PACKAGE_DIR/plugins/eclipse/
cp -R ../../../ide_plugins/idea $PACKAGE_DIR/plugins/idea/
cp -R ../../../ide_plugins/qt_creator $PACKAGE_DIR/plugins/qt_creator/
cp ../../../bin/app/data/gui/installer/EULA.rtf $PACKAGE_DIR/EULA.rtf
cp ../../../bin/app/data/license/EULA.rtf $PACKAGE_DIR/EULA.rtf
ln -s /Applications $PACKAGE_DIR/Applications
+19 -15
View File
@@ -9,19 +9,20 @@
#include "SourceGroupFactory.h"
#include "SourceGroupFactoryModuleCxx.h"
#include "SourceGroupFactoryModuleJava.h"
#include "SourceGroupFactoryModulePython.h"
#include "SourceGroupFactoryModuleCustom.h"
#include "QtNetworkFactory.h"
#include "QtApplication.h"
#include "QtCoreApplication.h"
#include "utilityQt.h"
#include "QtViewFactory.h"
#include "QtEulaWindow.h"
#include "ApplicationSettings.h"
#include "CommandLineParser.h"
#include "ConsoleLogger.h"
#include "FileLogger.h"
#include "logging.h"
#include "LogManager.h"
#include "MessageInterruptTasks.h"
#include "MessageIndexingInterrupted.h"
#include "MessageLoadProject.h"
#include "MessageStatus.h"
#include "ResourcePaths.h"
@@ -37,8 +38,8 @@
void signalHandler(int signum)
{
std::cout << "interrupt running tasks" << std::endl;
MessageInterruptTasks().dispatch();
std::cout << "interrupt indexing" << std::endl;
MessageIndexingInterrupted().dispatch();
}
void setupLogging()
@@ -46,22 +47,21 @@ void setupLogging()
LogManager* logManager = LogManager::getInstance().get();
std::shared_ptr<ConsoleLogger> consoleLogger = std::make_shared<ConsoleLogger>();
// consoleLogger->setLogLevel(Logger::LOG_WARNINGS | Logger::LOG_ERRORS);
consoleLogger->setLogLevel(Logger::LOG_ALL);
logManager->addLogger(consoleLogger);
std::shared_ptr<FileLogger> fileLogger = std::make_shared<FileLogger>();
fileLogger->setLogDirectory(UserPaths::getLogPath().getAbsolute());
fileLogger->setFileName(FileLogger::generateDatedFileName(L"log"));
fileLogger->setLogLevel(Logger::LOG_ALL);
fileLogger->deleteLogFiles(FileLogger::generateDatedFileName(L"log", L"", -30));
logManager->addLogger(fileLogger);
}
void prefillJavaRuntimePath()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledJavaPath() && settings->getJavaPath().empty())
if (!settings->getHasPrefilledJavaPath())
{
LOG_INFO("Prefilling Java path");
std::shared_ptr<CombinedPathDetector> javaPathDetector = utility::getJavaRuntimePathDetector();
@@ -84,7 +84,7 @@ void prefillJavaRuntimePath()
void prefillJreSystemLibraryPaths()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledJreSystemLibraryPaths() && settings->getJreSystemLibraryPaths().empty())
if (!settings->getHasPrefilledJreSystemLibraryPaths())
{
LOG_INFO("Prefilling JRE system library path");
std::shared_ptr<CombinedPathDetector> jreSystemLibraryPathsDetector = utility::getJreSystemLibraryPathsDetector();
@@ -107,7 +107,7 @@ void prefillJreSystemLibraryPaths()
void prefillMavenExecutablePath()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledMavenPath() && settings->getMavenPath().empty())
if (!settings->getHasPrefilledMavenPath())
{
LOG_INFO("Prefilling Maven path");
std::shared_ptr<CombinedPathDetector> mavenPathDetector = utility::getMavenExecutablePathDetector();
@@ -130,12 +130,14 @@ void prefillMavenExecutablePath()
void prefillCxxHeaderPaths()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledHeaderSearchPaths() && settings->getHeaderSearchPaths().empty())
if (!settings->getHasPrefilledHeaderSearchPaths())
{
LOG_INFO("Prefilling header search paths");
std::shared_ptr<CombinedPathDetector> cxxHeaderDetector = utility::getCxxHeaderPathDetector();
std::vector<FilePath> paths = cxxHeaderDetector->getPaths();
paths = utility::replaceOrAddCxxCompilerHeaderPath(paths);
if (!paths.empty())
{
MessageStatus(L"Ran C/C++ header path detection, found " + std::to_wstring(paths.size()) + L" path" +
@@ -151,7 +153,7 @@ void prefillCxxHeaderPaths()
void prefillCxxFrameworkPaths()
{
std::shared_ptr<ApplicationSettings> settings = ApplicationSettings::getInstance();
if (!settings->getHasPrefilledFrameworkSearchPaths() && settings->getFrameworkSearchPaths().empty())
if (!settings->getHasPrefilledFrameworkSearchPaths())
{
LOG_INFO("Prefilling framework search paths");
std::shared_ptr<CombinedPathDetector> cxxFrameworkDetector = utility::getCxxFrameworkPathDetector();
@@ -184,9 +186,11 @@ void addLanguagePackages()
{
SourceGroupFactory::getInstance()->addModule(std::make_shared<SourceGroupFactoryModuleCxx>());
SourceGroupFactory::getInstance()->addModule(std::make_shared<SourceGroupFactoryModuleJava>());
SourceGroupFactory::getInstance()->addModule(std::make_shared<SourceGroupFactoryModulePython>());
SourceGroupFactory::getInstance()->addModule(std::make_shared<SourceGroupFactoryModuleCustom>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageJava>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageCxx>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageJava>());
}
QCoreApplication* createApplication(int &argc, char *argv[], bool noGUI = false)
@@ -254,7 +258,7 @@ int main(int argc, char *argv[])
// check if already agreed to EULA
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
if (appSettings->getAcceptedEulaVersion() < QtEulaWindow::EULA_VERSION)
if (appSettings->getAcceptedEulaVersion() < Application::EULA_VERSION)
{
if (!commandLineParser.acceptedEULA())
{
@@ -262,7 +266,7 @@ int main(int argc, char *argv[])
std::this_thread::sleep_for(std::chrono::milliseconds(250));
std::shared_ptr<TextAccess> text =
TextAccess::createFromFile(ResourcePaths::getGuiPath().concatenate(L"installer/EULA.txt"));
TextAccess::createFromFile(ResourcePaths::getLicensePath().concatenate(L"EULA.txt"));
std::cout << std::endl << text->getText() << std::endl;
std::cout << "Do you accept the Sourcetrail End User License Agreement? (y/n)" << std::endl;
@@ -278,7 +282,7 @@ int main(int argc, char *argv[])
}
std::cout << "\nSourcetrail End User License Agreement accepted.\n" << std::endl;
appSettings->setAcceptedEulaVersion(QtEulaWindow::EULA_VERSION);
appSettings->setAcceptedEulaVersion(Application::EULA_VERSION);
appSettings->save();
}
+4 -4
View File
@@ -15,10 +15,10 @@ void setupLogging(const FilePath& logFilePath)
{
LogManager* logManager = LogManager::getInstance().get();
std::shared_ptr<ConsoleLogger> consoleLogger = std::make_shared<ConsoleLogger>();
// consoleLogger->setLogLevel(Logger::LOG_WARNINGS | Logger::LOG_ERRORS);
consoleLogger->setLogLevel(Logger::LOG_ALL);
logManager->addLogger(consoleLogger);
// std::shared_ptr<ConsoleLogger> consoleLogger = std::make_shared<ConsoleLogger>();
// // consoleLogger->setLogLevel(Logger::LOG_WARNINGS | Logger::LOG_ERRORS);
// consoleLogger->setLogLevel(Logger::LOG_ALL);
// logManager->addLogger(consoleLogger);
std::shared_ptr<FileLogger> fileLogger = std::make_shared<FileLogger>();
fileLogger->setLogFilePath(logFilePath);
+90 -46
View File
@@ -1,36 +1,36 @@
#include "Application.h"
#include "IDECommunicationController.h"
#include "NetworkFactory.h"
#include "DialogView.h"
#include "GraphViewStyle.h"
#include "MainView.h"
#include "ViewFactory.h"
#include "StorageCache.h"
#include "LicenseChecker.h"
#include "ApplicationSettings.h"
#include "ProjectSettings.h"
#include "AppPath.h"
#include "ColorScheme.h"
#include "DialogView.h"
#include "FileSystem.h"
#include "SharedMemoryGarbageCollector.h"
#include "GraphViewStyle.h"
#include "IDECommunicationController.h"
#include "LicenseChecker.h"
#include "logging.h"
#include "LogManager.h"
#include "MainView.h"
#include "MessageFilterErrorCountUpdate.h"
#include "MessageFilterFocusInOut.h"
#include "MessageFilterSearchAutocomplete.h"
#include "MessageQueue.h"
#include "MessageForceEnterLicense.h"
#include "MessageQuitApplication.h"
#include "MessageStatus.h"
#include "NetworkFactory.h"
#include "ProjectSettings.h"
#include "SharedMemoryGarbageCollector.h"
#include "StorageCache.h"
#include "TabId.h"
#include "TaskManager.h"
#include "TaskScheduler.h"
#include "tracing.h"
#include "UpdateChecker.h"
#include "UserPaths.h"
#include "utilityString.h"
#include "utilityUuid.h"
#include "Version.h"
#include "UpdateChecker.h"
#include "ViewFactory.h"
std::shared_ptr<Application> Application::s_instance;
std::string Application::s_uuid;
@@ -38,7 +38,17 @@ std::string Application::s_uuid;
void Application::createInstance(
const Version& version, ViewFactory* viewFactory, NetworkFactory* networkFactory
){
bool hasGui = (viewFactory != nullptr);
Version::setApplicationVersion(version);
LicenseChecker::loadPublicKey();
LicenseChecker::setEncodeKey(AppPath::getAppPath().str());
if (hasGui)
{
GraphViewStyle::setImpl(viewFactory->createGraphStyleImpl());
}
loadSettings();
SharedMemoryGarbageCollector* collector = SharedMemoryGarbageCollector::createInstance();
@@ -51,7 +61,6 @@ void Application::createInstance(
TaskManager::createScheduler(TabId::background());
MessageQueue::getInstance();
bool hasGui = (viewFactory != nullptr);
s_instance = std::shared_ptr<Application>(new Application(hasGui));
s_instance->m_storageCache = std::make_shared<StorageCache>();
@@ -60,9 +69,6 @@ void Application::createInstance(
{
s_instance->m_mainView = viewFactory->createMainView(s_instance->m_storageCache.get());
s_instance->m_mainView->setup();
s_instance->updateTitle();
GraphViewStyle::setImpl(viewFactory->createGraphStyleImpl());
}
if (networkFactory != nullptr)
@@ -121,7 +127,6 @@ void Application::loadStyle(const FilePath& colorSchemePath)
Application::Application(bool withGUI)
: m_hasGUI(withGUI)
, m_licenseType(MessageEnteredLicense::LICENSE_NONE)
, m_lastLicenseCheck(TimeStamp::now())
{
}
@@ -207,21 +212,6 @@ void Application::handleMessage(MessageActivateWindow* message)
}
}
void Application::handleMessage(MessageEnteredLicense* message)
{
MessageStatus(L"Found valid license key, unlocked application.").dispatch();
m_licenseType = message->type;
updateTitle();
loadSettings();
if (m_hasGUI)
{
m_mainView->refreshViews();
}
}
void Application::handleMessage(MessageIndexingFinished* message)
{
logStorageStats();
@@ -241,11 +231,7 @@ void Application::handleMessage(MessageLoadProject* message)
TRACE("app load project");
FilePath projectSettingsFilePath(message->projectSettingsFilePath);
if (m_hasGUI)
{
bool showStartWindow = projectSettingsFilePath.empty();
m_mainView->loadWindow(showStartWindow);
}
loadWindow(projectSettingsFilePath.empty());
if (projectSettingsFilePath.empty())
{
@@ -332,6 +318,8 @@ void Application::handleMessage(MessageRefreshUI* message)
if (m_hasGUI)
{
updateTitle();
if (message->loadStyle)
{
loadStyle(ApplicationSettings::getInstance()->getColorSchemePath());
@@ -366,9 +354,9 @@ void Application::handleMessage(MessageWindowFocus* message)
m_lastLicenseCheck = TimeStamp::now();
LicenseChecker::LicenseState state = LicenseChecker::checkCurrentLicense();
if (state != LicenseChecker::LICENSE_VALID && state != LicenseChecker::LICENSE_MOVED)
if (state != LicenseChecker::LicenseState::VALID)
{
MessageForceEnterLicense(state).dispatch();
m_mainView->forceEnterLicense(LicenseChecker::getLicenseErrorForState(state));
}
}
}
@@ -378,7 +366,7 @@ FilePath Application::migrateProjectSettings(const FilePath& projectSettingsFile
if (projectSettingsFilePath.extension() == L".coatiproject")
{
MessageStatus(L"Migrating deprecated project file extension \".coatiproject\" to new file extension \".srctrlprj\"").dispatch();
const FilePath newSettingsPath = projectSettingsFilePath.replaceExtension(Project::PROJECT_FILE_EXTENSION);
const FilePath newSettingsPath = projectSettingsFilePath.replaceExtension(ProjectSettings::PROJECT_FILE_EXTENSION);
{
FileSystem::rename(projectSettingsFilePath, newSettingsPath);
const FilePath oldDbPath = projectSettingsFilePath.replaceExtension(L"coatidb");
@@ -417,6 +405,62 @@ void Application::startMessagingAndScheduling()
queue->startMessageLoopThreaded();
}
void Application::loadWindow(bool showStartWindow)
{
if (!m_hasGUI)
{
return;
}
if (!m_loadedWindow)
{
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
// delay first update check by 24 hours at first launch
if (!appSettings->getLastUpdateCheck().isValid())
{
appSettings->setLastUpdateCheck(TimeStamp::now());
appSettings->save();
}
LicenseChecker::LicenseState state = LicenseChecker::LicenseState::VALID;
std::string licenseError;
if (!appSettings->getNonCommercialUse())
{
state = LicenseChecker::setCurrentLicenseStringEncoded(appSettings->getLicenseString());
licenseError = LicenseChecker::getLicenseErrorForState(state);
if (state == LicenseChecker::LicenseState::VALID)
{
MessageStatus(L"Found valid license key, unlocked application.").dispatch();
}
else if (state == LicenseChecker::LicenseState::EMPTY)
{
licenseError = "";
}
else if (state == LicenseChecker::LicenseState::MALFORMED)
{
licenseError = "Plese re-enter your license key.";
appSettings->setLicenseString("");
appSettings->save();
}
}
updateTitle();
bool showEula = (appSettings->getAcceptedEulaVersion() < EULA_VERSION);
bool enterLicense = (state != LicenseChecker::LicenseState::VALID);
m_mainView->loadWindow(showStartWindow, showEula, enterLicense, licenseError);
m_loadedWindow = true;
}
else if (!showStartWindow)
{
m_mainView->hideStartScreen();
}
}
void Application::refreshProject(RefreshMode refreshMode)
{
if (m_project && checkSharedMemory())
@@ -487,16 +531,15 @@ void Application::updateTitle()
{
std::wstring title = L"Sourcetrail";
switch (m_licenseType)
switch (LicenseChecker::getCurrentLicenseType())
{
case MessageEnteredLicense::LICENSE_TEST:
case LicenseType::TEST:
title += L" [test]";
break;
case MessageEnteredLicense::LICENSE_NONE:
case MessageEnteredLicense::LICENSE_NON_COMMERCIAL:
case LicenseType::NON_COMMERCIAL:
title += L" [non-commercial]";
break;
case MessageEnteredLicense::LICENSE_COMMERCIAL:
case LicenseType::COMMERCIAL:
break;
}
@@ -519,7 +562,8 @@ bool Application::checkSharedMemory()
std::wstring error = utility::decodeFromUtf8(SharedMemory::checkSharedMemory(getUUID()));
if (error.size())
{
MessageStatus(L"Error on accessing shared memory. Indexing not possible. Please restart computer or run as admin: " + error, true).dispatch();
MessageStatus(L"Error on accessing shared memory. Indexing not possible. "
"Please restart computer or run as admin: " + error, true).dispatch();
handleDialog(
L"There was an error accessing shared memory on your computer: " + error + L"\n\n"
"Project indexing is not possible. Please restart your computer or try running Sourcetrail as admin. If the "
+6 -4
View File
@@ -7,7 +7,6 @@
#include "MessageListener.h"
#include "MessageIndexingFinished.h"
#include "MessageActivateWindow.h"
#include "MessageEnteredLicense.h"
#include "MessageLoadProject.h"
#include "MessageRefresh.h"
#include "MessageRefreshUI.h"
@@ -27,7 +26,6 @@ class ViewFactory;
class Application
: public MessageListener<MessageActivateWindow>
, public MessageListener<MessageEnteredLicense>
, public MessageListener<MessageIndexingFinished>
, public MessageListener<MessageLoadProject>
, public MessageListener<MessageRefresh>
@@ -36,6 +34,8 @@ class Application
, public MessageListener<MessageWindowFocus>
{
public:
static const int EULA_VERSION = 5;
static void createInstance(const Version& version, ViewFactory* viewFactory, NetworkFactory* networkFactory);
static std::shared_ptr<Application> getInstance();
static void destroyInstance();
@@ -68,7 +68,6 @@ private:
Application(bool withGUI = true);
void handleMessage(MessageActivateWindow* message) override;
void handleMessage(MessageEnteredLicense* message) override;
void handleMessage(MessageIndexingFinished* message) override;
void handleMessage(MessageLoadProject* message) override;
void handleMessage(MessageRefresh* message) override;
@@ -79,6 +78,8 @@ private:
FilePath migrateProjectSettings(const FilePath& projectSettingsFilePath) const;
void startMessagingAndScheduling();
void loadWindow(bool showStartWindow);
void refreshProject(RefreshMode refreshMode);
void updateRecentProjects(const FilePath& projectSettingsFilePath);
@@ -89,6 +90,8 @@ private:
bool checkSharedMemory();
const bool m_hasGUI;
bool m_loadedWindow = false;
std::shared_ptr<Project> m_project;
std::shared_ptr<StorageCache> m_storageCache;
@@ -97,7 +100,6 @@ private:
std::shared_ptr<IDECommunicationController> m_ideCommunicationController;
std::shared_ptr<UpdateChecker> m_updateChecker;
MessageEnteredLicense::LicenseType m_licenseType;
TimeStamp m_lastLicenseCheck;
};
+14 -5
View File
@@ -174,6 +174,8 @@ add_files(
data/indexer/IndexerBase.h
data/indexer/IndexerCommand.cpp
data/indexer/IndexerCommand.h
data/indexer/IndexerCommandCustom.cpp
data/indexer/IndexerCommandCustom.h
data/indexer/IndexerCommandProvider.cpp
data/indexer/IndexerCommandProvider.h
data/indexer/IndexerCommandType.cpp
@@ -185,6 +187,8 @@ add_files(
data/indexer/MemoryIndexerCommandProvider.h
data/indexer/TaskBuildIndex.cpp
data/indexer/TaskBuildIndex.h
data/indexer/TaskExecuteCustomCommands.cpp
data/indexer/TaskExecuteCustomCommands.h
data/indexer/TaskFillIndexerCommandQueue.cpp
data/indexer/TaskFillIndexerCommandQueue.h
@@ -298,10 +302,14 @@ add_files(
project/RefreshInfoGenerator.cpp
project/SourceGroup.cpp
project/SourceGroup.h
project/SourceGroupCustomCommand.cpp
project/SourceGroupCustomCommand.h
project/SourceGroupFactory.cpp
project/SourceGroupFactory.h
project/SourceGroupFactoryModule.cpp
project/SourceGroupFactoryModule.h
project/SourceGroupFactoryModuleCustom.cpp
project/SourceGroupFactoryModuleCustom.h
settings/migration/SettingsMigration.cpp
settings/migration/SettingsMigration.h
@@ -325,12 +333,15 @@ add_files(
settings/Settings.h
settings/SourceGroupSettings.cpp
settings/SourceGroupSettings.h
settings/SourceGroupSettingsBase.h
settings/SourceGroupSettingsCxx.cpp
settings/SourceGroupSettingsCxx.h
settings/SourceGroupSettingsCEmpty.cpp
settings/SourceGroupSettingsCEmpty.h
settings/SourceGroupSettingsCppEmpty.cpp
settings/SourceGroupSettingsCppEmpty.h
settings/SourceGroupSettingsCustomCommand.cpp
settings/SourceGroupSettingsCustomCommand.h
settings/SourceGroupSettingsCxxCdb.cpp
settings/SourceGroupSettingsCxxCdb.h
settings/SourceGroupSettingsCxxCdbVs.cpp
@@ -349,6 +360,8 @@ add_files(
settings/SourceGroupSettingsJavaMaven.h
settings/SourceGroupSettingsJavaSonargraph.cpp
settings/SourceGroupSettingsJavaSonargraph.h
settings/SourceGroupSettingsPythonEmpty.cpp
settings/SourceGroupSettingsPythonEmpty.h
settings/SourceGroupSettingsWithClasspath.cpp
settings/SourceGroupSettingsWithClasspath.h
settings/SourceGroupSettingsWithCppStandard.cpp
@@ -455,6 +468,7 @@ add_files(
utility/messaging/type/history/MessageHistoryUndo.h
utility/messaging/type/indexing/MessageIndexingFinished.h
utility/messaging/type/indexing/MessageIndexingInterrupted.h
utility/messaging/type/indexing/MessageIndexingShowDialog.h
utility/messaging/type/indexing/MessageIndexingStarted.h
utility/messaging/type/indexing/MessageIndexingStatus.h
@@ -483,18 +497,15 @@ add_files(
utility/messaging/type/MessageClearStatusView.h
utility/messaging/type/MessageCodeReference.h
utility/messaging/type/MessageDeactivateEdge.h
utility/messaging/type/MessageEnteredLicense.h
utility/messaging/type/MessageFind.h
utility/messaging/type/MessageFlushUpdates.h
utility/messaging/type/MessageFocusIn.h
utility/messaging/type/MessageFocusOut.h
utility/messaging/type/MessageForceEnterLicense.h
utility/messaging/type/MessageGraphNodeBundleSplit.h
utility/messaging/type/MessageGraphNodeExpand.h
utility/messaging/type/MessageGraphNodeHide.h
utility/messaging/type/MessageGraphNodeMove.h
utility/messaging/type/MessageIDECreateCDB.h
utility/messaging/type/MessageInterruptTasks.h
utility/messaging/type/MessageLoadProject.h
utility/messaging/type/MessageLogFilterChanged.h
utility/messaging/type/MessageMoveIDECursor.h
@@ -644,7 +655,5 @@ add_files(
LanguagePackage.h
LanguagePackageManager.cpp
LanguagePackageManager.h
LicenseChecker.cpp
LicenseChecker.h
UpdateChecker.h
)
-189
View File
@@ -1,189 +0,0 @@
#include "LicenseChecker.h"
#include "ApplicationSettings.h"
#include "AppPath.h"
#include "License.h"
#include "logging.h"
#include "utilityApp.h"
std::string LicenseChecker::getCurrentLicenseString()
{
License license;
bool isLoaded = license.loadFromEncodedString(
ApplicationSettings::getInstance()->getLicenseString(), AppPath::getAppPath().str());
if (isLoaded)
{
return license.getLicenseString();
}
return "";
}
void LicenseChecker::saveCurrentLicenseString(const std::string& licenseString)
{
License license;
bool isLoaded = license.loadFromString(licenseString);
if (!isLoaded)
{
return;
}
utility::saveLicense(&license);
}
bool LicenseChecker::isCurrentLicenseValid()
{
return checkCurrentLicense() == LICENSE_VALID;
}
LicenseChecker::LicenseState LicenseChecker::checkCurrentLicense()
{
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
if (appSettings == nullptr)
{
LOG_ERROR_STREAM(<< "Unable to retrieve app settings");
return LICENSE_EMPTY;
}
const FilePath appPath = AppPath::getAppPath();
if (appPath.empty())
{
LOG_ERROR_STREAM(<< "Failed to retrieve app path");
return LICENSE_EMPTY;
}
std::string licenseString = appSettings->getLicenseString();
if (licenseString.size() == 0)
{
LOG_ERROR_STREAM(<< "No license key available.");
return LICENSE_EMPTY;
}
if (!License::checkLocation(appPath.getAbsolute().str(), appSettings->getLicenseCheck()))
{
LOG_ERROR_STREAM(<< "Application was moved, reenter license key.");
return LICENSE_MOVED;
}
License license;
bool isLoaded = license.loadFromEncodedString(licenseString, appPath.str());
if (!isLoaded)
{
LOG_ERROR_STREAM(<< "License is invalid or application was moved.");
return LICENSE_MOVED;
}
return checkLicense(license);
}
LicenseChecker::LicenseState LicenseChecker::checkLicenseString(const std::string& licenseString)
{
if (licenseString.size() == 0)
{
return LICENSE_EMPTY;
}
License license;
bool isLoaded = license.loadFromString(licenseString);
if (!isLoaded)
{
return LICENSE_MALFORMED;
}
license.print();
return checkLicense(license);
}
MessageEnteredLicense::LicenseType LicenseChecker::getCurrentLicenseType()
{
License license;
bool isLoaded = license.loadFromEncodedString(
ApplicationSettings::getInstance()->getLicenseString(), AppPath::getAppPath().str());
if (!isLoaded)
{
return MessageEnteredLicense::LICENSE_NONE;
}
LicenseState state = checkLicense(license);
if (state != LICENSE_VALID)
{
return MessageEnteredLicense::LICENSE_NONE;
}
else if (license.isTestLicense())
{
return MessageEnteredLicense::LICENSE_TEST;
}
else if (license.isNonCommercialLicenseType())
{
return MessageEnteredLicense::LICENSE_NON_COMMERCIAL;
}
return MessageEnteredLicense::LICENSE_COMMERCIAL;
}
MessageEnteredLicense::LicenseType LicenseChecker::getLicenseType(const std::string& licenseString)
{
if (licenseString.size() == 0)
{
return MessageEnteredLicense::LICENSE_NONE;
}
License license;
bool isLoaded = license.loadFromString(licenseString);
if (!isLoaded)
{
return MessageEnteredLicense::LICENSE_NONE;
}
LicenseState state = checkLicense(license);
if (state != LICENSE_VALID)
{
return MessageEnteredLicense::LICENSE_NONE;
}
else if (license.isTestLicense())
{
return MessageEnteredLicense::LICENSE_TEST;
}
else if (license.isNonCommercialLicenseType())
{
return MessageEnteredLicense::LICENSE_NON_COMMERCIAL;
}
return MessageEnteredLicense::LICENSE_COMMERCIAL;
}
std::string LicenseChecker::getCurrentLicenseTypeString()
{
// WARNING: Don't change these string. The server API relies on them.
switch (getCurrentLicenseType())
{
case MessageEnteredLicense::LICENSE_NONE:
case MessageEnteredLicense::LICENSE_NON_COMMERCIAL:
return "private";
case MessageEnteredLicense::LICENSE_TEST:
return "test";
case MessageEnteredLicense::LICENSE_COMMERCIAL:
return "commercial";
}
return "private";
}
LicenseChecker::LicenseState LicenseChecker::checkLicense(License& license)
{
if (license.isExpired())
{
return LICENSE_EXPIRED;
}
if (license.isValid())
{
return LICENSE_VALID;
}
return LICENSE_INVALID;
}
-37
View File
@@ -1,37 +0,0 @@
#ifndef LICENSE_CHECKER_H
#define LICENSE_CHECKER_H
#include "MessageEnteredLicense.h"
class License;
class LicenseChecker
{
public:
enum LicenseState
{
LICENSE_EMPTY,
LICENSE_MOVED,
LICENSE_MALFORMED,
LICENSE_INVALID,
LICENSE_EXPIRED,
LICENSE_VALID
};
static std::string getCurrentLicenseString();
static void saveCurrentLicenseString(const std::string& licenseString);
static bool isCurrentLicenseValid();
static LicenseState checkCurrentLicense();
static LicenseState checkLicenseString(const std::string& licenseString);
static MessageEnteredLicense::LicenseType getCurrentLicenseType();
static MessageEnteredLicense::LicenseType getLicenseType(const std::string& licenseString);
static std::string getCurrentLicenseTypeString();
private:
static LicenseState checkLicense(License& license);
};
#endif // LICENSE_CHECKER_H
+3 -3
View File
@@ -66,9 +66,6 @@ void ComponentManager::setupMain(ViewLayout* viewLayout, Id appId)
std::shared_ptr<Component> tabsComponent = m_componentFactory.createTabsComponent(viewLayout, screenSearchController);
m_components.push_back(tabsComponent);
std::shared_ptr<Component> statusBarComponent = m_componentFactory.createStatusBarComponent(viewLayout);
m_components.push_back(statusBarComponent);
std::shared_ptr<Component> tooltipComponent = m_componentFactory.createTooltipComponent(viewLayout);
m_components.push_back(tooltipComponent);
@@ -98,6 +95,9 @@ void ComponentManager::setupMain(ViewLayout* viewLayout, Id appId)
std::shared_ptr<Component> activationComponent = m_componentFactory.createActivationComponent();
m_components.push_back(activationComponent);
std::shared_ptr<Component> statusBarComponent = m_componentFactory.createStatusBarComponent(viewLayout);
m_components.push_back(statusBarComponent);
}
void ComponentManager::setupTab(ViewLayout* viewLayout, Id tabId, ScreenSearchSender* screenSearchSender)
@@ -9,6 +9,7 @@
#include "ApplicationSettings.h"
#include "FileInfo.h"
#include "logging.h"
#include "MessageMoveIDECursor.h"
#include "MessageStatus.h"
#include "TextAccess.h"
#include "tracing.h"
@@ -48,7 +49,7 @@ void CodeController::handleMessage(MessageActivateAll* message)
statsSnippet.reduced = true;
statsSnippet.locationFile = std::make_shared<SourceLocationFile>(FilePath(), true, true, true);
statsSnippet.locationFile = std::make_shared<SourceLocationFile>(FilePath(), L"", true, true, true);
std::vector<std::string> description = getProjectDescription(statsSnippet.locationFile.get());
@@ -78,7 +79,7 @@ void CodeController::handleMessage(MessageActivateAll* message)
ss << "\t" + std::to_string(stats.fileLOCCount) + " lines of code\n";
ss << "\n";
ss << "\t" + std::to_string(stats.nodeCount) + " symbols\n";
ss << "\t" + std::to_string(stats.edgeCount) + " relations\n";
ss << "\t" + std::to_string(stats.edgeCount) + " references\n";
ss << "\n";
ss << "\t" + std::to_string(errorCount.total) + " errors (" + std::to_string(errorCount.fatal) + " fatal)\n";
ss << "\n";
@@ -286,7 +287,7 @@ void CodeController::handleMessage(MessageChangeFileView* message)
if (message->needsData && !message->filePath.empty())
{
showCodeSnippets(getSnippetsForFileWithState(message->filePath, state), CodeView::CodeParams());
showCodeSnippets(getSnippetsForFileWithState(message->filePath, state), CodeView::CodeParams(), !message->showErrors);
}
view->setFileState(message->filePath, state);
@@ -311,6 +312,7 @@ void CodeController::handleMessage(MessageCodeShowDefinition* message)
}
size_t lineNumber = 1;
size_t columnNumber = 1;
FilePath filePath;
// use first scope location for nodeId, otherwise first location
@@ -334,6 +336,7 @@ void CodeController::handleMessage(MessageCodeShowDefinition* message)
filePath = location->getFilePath();
lineNumber = location->getLineNumber();
columnNumber = location->getColumnNumber();
addedLocation = true;
return;
}
@@ -348,6 +351,7 @@ void CodeController::handleMessage(MessageCodeShowDefinition* message)
filePath = location->getFilePath();
lineNumber = location->getStartLocation()->getLineNumber();
columnNumber = location->getStartLocation()->getColumnNumber();
}
collection = filteredCollection;
@@ -357,6 +361,12 @@ void CodeController::handleMessage(MessageCodeShowDefinition* message)
filePath = collection->getSourceLocationFiles().begin()->second->getFilePath();
}
if (message->inIDE)
{
MessageMoveIDECursor(filePath, lineNumber, columnNumber).dispatch();
return;
}
std::vector<CodeSnippetParams> snippets = getSnippetsForFile(collection->getSourceLocationFiles().begin()->second);
if (snippets.size() != 1)
{
@@ -517,7 +527,17 @@ std::vector<CodeSnippetParams> CodeController::getSnippetsForFileWithState(
params.startLineNumber = 1;
params.refCount = -1;
std::shared_ptr<TextAccess> textAccess = m_storageAccess->getFileContent(filePath);
bool showsErrors = false;
if (m_collection->getSourceLocationFiles().size())
{
std::shared_ptr<SourceLocationFile> file = m_collection->getSourceLocationFiles().begin()->second;
if (file->getSourceLocations().size())
{
showsErrors = (*file->getSourceLocations().begin())->getType() == LOCATION_ERROR;
}
}
std::shared_ptr<TextAccess> textAccess = m_storageAccess->getFileContent(filePath, showsErrors);
params.code = textAccess->getText();
params.modificationTime = m_storageAccess->getFileInfoForFilePath(filePath).lastWriteTime;
@@ -619,7 +639,14 @@ std::vector<CodeSnippetParams> CodeController::getSnippetsForFile(
{
TRACE();
std::shared_ptr<TextAccess> textAccess = m_storageAccess->getFileContent(activeSourceLocations->getFilePath());
bool showsErrors = false;
if (activeSourceLocations->getSourceLocations().size())
{
showsErrors = (*activeSourceLocations->getSourceLocations().begin())->getType() == LOCATION_ERROR;
}
std::shared_ptr<TextAccess> textAccess =
m_storageAccess->getFileContent(activeSourceLocations->getFilePath(), showsErrors);
size_t lineCount = textAccess->getLineCount();
SnippetMerger fileScopedMerger(1, lineCount);
@@ -30,7 +30,7 @@ void ErrorController::errorFilterChanged(const ErrorFilter& filter)
void ErrorController::showError(Id errorId)
{
if (!m_tabShowsErrors[TabId::currentTab()])
if (!m_tabShowsErrors[TabId::currentTab()] || m_newErrorsAdded)
{
errorFilterChanged(getView()->getErrorFilter());
}
@@ -82,6 +82,9 @@ void ErrorController::handleMessage(MessageErrorCountClear* message)
void ErrorController::handleMessage(MessageErrorCountUpdate* message)
{
m_storageAccess->addErrorsToCache(message->newErrors, message->errorCount);
m_newErrorsAdded = true;
ErrorFilter filter = getView()->getErrorFilter();
int room = filter.limit - m_errorCount;
@@ -116,18 +119,21 @@ void ErrorController::handleMessage(MessageErrorCountUpdate* message)
void ErrorController::handleMessage(MessageErrorsAll* message)
{
if (canDisplayErrors())
{
MessageActivateErrors(getView()->getErrorFilter()).dispatch();
}
MessageActivateErrors(getView()->getErrorFilter()).dispatch();
}
void ErrorController::handleMessage(MessageErrorsForFile* message)
{
if (canDisplayErrors())
Project* project = Application::getInstance()->getCurrentProject().get();
if (project && project->isIndexing())
{
MessageActivateErrors(ErrorFilter(), message->file).dispatch();
Application::getInstance()->getDialogView(DialogView::UseCase::GENERAL)->confirm(
"Showing errors for a file is not possible while indexing."
);
return;
}
MessageActivateErrors(ErrorFilter(), message->file).dispatch();
}
void ErrorController::handleMessage(MessageErrorsHelpMessage* message)
@@ -155,16 +161,16 @@ void ErrorController::handleMessage(MessageErrorsHelpMessage* message)
void ErrorController::handleMessage(MessageIndexingFinished* message)
{
m_storageAccess->setUseErrorCache(false);
clear();
showErrors(getView()->getErrorFilter(), false);
getView()->setEnabled(true);
}
void ErrorController::handleMessage(MessageIndexingStarted* message)
{
getView()->setEnabled(false);
m_storageAccess->setUseErrorCache(true);
}
void ErrorController::handleMessage(MessageShowError* message)
@@ -182,6 +188,7 @@ void ErrorController::clear()
m_errorCount = 0;
m_tabShowsErrors.clear();
m_tabActiveFilePath.clear();
m_newErrorsAdded = false;
getView()->clear();
}
@@ -213,17 +220,3 @@ bool ErrorController::showErrors(const ErrorFilter& filter, bool scrollTo)
return errors.size();
}
bool ErrorController::canDisplayErrors() const
{
Project* project = Application::getInstance()->getCurrentProject().get();
if (project && project->isIndexing())
{
Application::getInstance()->getDialogView(DialogView::UseCase::GENERAL)->confirm(
"Errors cannot be activated while indexing."
);
return false;
}
return true;
}
@@ -61,7 +61,6 @@ private:
virtual void clear();
bool showErrors(const ErrorFilter& filter, bool scrollTo);
bool canDisplayErrors() const;
StorageAccess* m_storageAccess;
@@ -69,6 +68,8 @@ private:
std::map<Id, bool> m_tabShowsErrors;
std::map<Id, FilePath> m_tabActiveFilePath;
bool m_newErrorsAdded = false;
};
#endif // ERROR_CONTROLLER_H
+133 -57
View File
@@ -18,6 +18,7 @@
#include "StorageAccess.h"
#include "TokenComponentAccess.h"
#include "TokenComponentFilePath.h"
#include "TokenComponentInheritanceChain.h"
#include "Graph.h"
#include "AccessKind.h"
#include "ApplicationSettings.h"
@@ -99,13 +100,18 @@ void GraphController::handleMessage(MessageActivateTokens* message)
m_activeEdgeIds = message->tokenIds;
setActiveAndVisibility(utility::concat(m_activeNodeIds, m_activeEdgeIds));
if (message->isReplayed())
{
return;
}
Id edgeId = 0;
if (message->isEdge && message->tokenIds.size() == 1)
{
edgeId = message->tokenIds[0];
}
getView()->activateEdge(edgeId, message->isReplayed() && message->isLast());
getView()->activateEdge(edgeId);
return;
}
else if (message->isAggregation)
@@ -269,7 +275,10 @@ void GraphController::handleMessage(MessageActivateTrailEdge* message)
{
TRACE("trail edge activate");
getView()->activateEdge(message->edgeIds.back(), message->isReplayed() && message->isLast());
m_activeEdgeIds = message->edgeIds;
setVisibility(setActive(utility::concat(m_activeNodeIds, m_activeEdgeIds), true));
getView()->activateEdge(message->edgeIds.back());
}
void GraphController::handleMessage(MessageFlushUpdates* message)
@@ -516,6 +525,27 @@ void GraphController::handleMessage(MessageGraphNodeMove* message)
{
node->position += message->delta;
if (m_graph->getTrailMode() != Graph::TRAIL_NONE)
{
std::set<Id> childNodeIds;
for (const std::pair<Id, Id>& p : m_topLevelAncestorIds)
{
if (p.second == message->tokenId)
{
childNodeIds.insert(p.first);
}
}
for (std::shared_ptr<DummyEdge> edge : m_dummyEdges)
{
if (childNodeIds.find(edge->ownerId) != childNodeIds.end() ||
childNodeIds.find(edge->targetId) != childNodeIds.end())
{
edge->path.clear();
}
}
}
if (message->isReplayed())
{
buildGraph(message, GraphView::GraphParams());
@@ -816,18 +846,12 @@ bool GraphController::setActive(const std::vector<Id>& activeTokenIds, bool show
bool isInheritance = edge->data->isType(Edge::EDGE_INHERITANCE);
if (from && to && !edge->hidden &&
(showAllEdges || noActive || from->active || to->active || edge->active || isInheritance))
(showAllEdges || noActive || from->active || to->active || edge->active || isInheritance) &&
!(to->active && edge->data->isType(Edge::EDGE_TYPE_USAGE) && to->data->isParentOf(from->data))) // Don't show type use edges to active parent
{
edge->visible = true;
from->connected = true;
to->connected = true;
// Don't show children of active node with a type use edge to the parent
if (to->active && edge->data->isType(Edge::EDGE_TYPE_USAGE) && to->data->isParentOf(from->data))
{
from->connected = false;
to->connected = false;
}
}
else
{
@@ -1089,7 +1113,7 @@ void GraphController::bundleNodes()
bundleNodesAndEdgesMatching(
[](const DummyNode::BundleInfo& info, const Node* data)
{
return data->getType().isFile();
return data->getType().isFile() && data->findEdgeOfType(Edge::EDGE_IMPORT);
},
1,
false,
@@ -1379,6 +1403,8 @@ void GraphController::bundleNodesByType()
std::vector<std::shared_ptr<DummyNode>> oldNodes = std::move(m_dummyNodes);
m_dummyNodes.clear();
bool hasNonFileBundle = false;
for (const NodeType& nodeType : NodeType::getOverviewBundleNodeTypesOrdered())
{
Tree<NodeType::BundleInfo> bundleInfoTree = nodeType.getOverviewBundleTree();
@@ -1388,10 +1414,25 @@ void GraphController::bundleNodesByType()
if (bundleNode)
{
m_dummyNodes.push_back(bundleNode);
if (bundleNode->bundledNodeType.getType() != NodeType::NODE_FILE)
{
hasNonFileBundle = true;
}
}
}
}
if (nodes.size() && !hasNonFileBundle)
{
Tree<NodeType::BundleInfo> bundleInfoTree(NodeType::BundleInfo(L"Symbols"));
std::shared_ptr<DummyNode> bundleNode = bundleByType(nodes, NodeType::NODE_SYMBOL, bundleInfoTree, false);
if (bundleNode)
{
m_dummyNodes.push_back(bundleNode);
}
}
if (nodes.size())
{
LOG_ERROR("Nodes left after bundling for overview");
@@ -1683,7 +1724,7 @@ void GraphController::groupTrailNodes(GroupType groupType)
std::shared_ptr<DummyNode> groupNode = std::make_shared<DummyNode>(DummyNode::DUMMY_GROUP);
groupNode->visible = true;
groupNode->groupType = groupType;
groupNode->groupLayout = GroupLayout::SKEWED;
groupNode->groupLayout = GroupLayout::SQUARE;
// Use token Id of first node and make first 2 bits 1
groupNode->tokenId = ~(~Id(0) >> 2) + node.nodeId;
@@ -1779,7 +1820,7 @@ void GraphController::layoutNesting()
for (const std::shared_ptr<DummyNode>& node : m_dummyNodes)
{
layoutNestingRecursive(node.get());
layoutNestingRecursive(node.get(), -1);
}
for (const std::shared_ptr<DummyNode>& node : m_dummyNodes)
@@ -1822,11 +1863,11 @@ void GraphController::extendEqualFunctionNames(const std::vector<std::shared_ptr
}
}
void GraphController::layoutNestingRecursive(DummyNode* node) const
Vec4i GraphController::layoutNestingRecursive(DummyNode* node, int maxWidth) const
{
if (!node->visible)
{
return;
return Vec4i(0, 0, 0, 0);
}
GraphViewStyle::NodeMargins margins;
@@ -1858,7 +1899,7 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
}
else if (node->isQualifierNode())
{
return;
return Vec4i(0, 0, 0, 0);
}
else if (node->isTextNode())
{
@@ -1874,11 +1915,7 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
if (node->isGraphNode())
{
if (!node->active)
{
node->name = utility::elide(node->name, utility::ELIDE_RIGHT, 50);
}
node->name = utility::elide(node->name, utility::ELIDE_RIGHT, node->active ? 100 : 50);
width = margins.charWidth * node->name.size();
if (node->data->getType().isCollapsible() && node->data->getChildCount() > 0)
@@ -1898,6 +1935,8 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
width += margins.iconWidth;
width = std::max(width, margins.minWidth);
int maxAccessWidth = 0;
for (const std::shared_ptr<DummyNode>& subNode : node->subNodes)
{
if (!subNode->visible)
@@ -1911,47 +1950,75 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
continue;
}
layoutNestingRecursive(subNode.get());
Vec4i rect = layoutNestingRecursive(subNode.get(), maxWidth);
if (subNode->isExpandToggleNode())
{
width += margins.spacingX + subNode->size.x;
}
}
if (node->isGroupNode())
{
Vec2i viewSize = getView()->getViewSize();
switch (node->groupLayout)
else if (subNode->isAccessNode())
{
case GroupLayout::LIST:
viewSize.x = viewSize.x - 150; // prevent horizontal scroll
ListLayouter::layoutMultiColumn(viewSize, &node->subNodes);
break;
case GroupLayout::SKEWED:
ListLayouter::layoutSkewed(&node->subNodes, margins.spacingX, margins.spacingY, viewSize.x() * 1.5);
break;
case GroupLayout::BUCKET:
if (node->hasActiveSubNode() || !m_activeNodeIds.size() /* aggregations */)
{
BucketLayouter grid(viewSize);
grid.createBuckets(node->subNodes, m_dummyEdges);
grid.layoutBuckets(m_activeNodeIds.size());
node->subNodes = grid.getSortedNodes();
}
else
{
ListLayouter::layoutColumn(&node->subNodes, margins.spacingY);
}
break;
maxAccessWidth = std::max(maxAccessWidth, rect.z());
}
}
else
if (maxAccessWidth > 0)
{
ListLayouter::layoutColumn(&node->subNodes, margins.spacingY);
for (const std::shared_ptr<DummyNode>& subNode : node->subNodes)
{
if (!subNode->visible || !subNode->isAccessNode())
{
continue;
}
layoutNestingRecursive(subNode.get(), maxAccessWidth);
}
}
if (node->subNodes.size())
{
if (node->isGroupNode())
{
Vec2i viewSize = getView()->getViewSize();
switch (node->groupLayout)
{
case GroupLayout::LIST:
viewSize.x = viewSize.x - 150; // prevent horizontal scroll
ListLayouter::layoutMultiColumn(viewSize, &node->subNodes);
break;
case GroupLayout::SKEWED:
ListLayouter::layoutSkewed(&node->subNodes, margins.spacingX, margins.spacingY, viewSize.x() * 1.5);
break;
case GroupLayout::BUCKET:
if (node->hasActiveSubNode() || !m_activeNodeIds.size() /* aggregations */)
{
BucketLayouter grid(viewSize);
grid.createBuckets(node->subNodes, m_dummyEdges);
grid.layoutBuckets(m_activeNodeIds.size());
node->subNodes = grid.getSortedNodes();
}
else
{
ListLayouter::layoutColumn(&node->subNodes, margins.spacingY);
}
break;
case GroupLayout::SQUARE:
ListLayouter::layoutSquare(&node->subNodes, -1);
break;
}
}
else if (node->isAccessNode() && !node->hasConnectedSubNode())
{
ListLayouter::layoutSquare(&node->subNodes, maxWidth);
}
else
{
ListLayouter::layoutColumn(&node->subNodes, margins.spacingY);
}
}
Vec2i size = ListLayouter::offsetNodes(
@@ -1980,6 +2047,8 @@ void GraphController::layoutNestingRecursive(DummyNode* node) const
subNode->position.y = 6;
}
}
return ListLayouter::boundingRect(node->subNodes);
}
void GraphController::addExpandToggleNode(DummyNode* node) const
@@ -2377,6 +2446,8 @@ void GraphController::createLegendGraph()
addNode(NodeType::NODE_MACRO, L"Macro", Vec2i(x, y + dy * ++i));
addNode(NodeType::NODE_ANNOTATION, L"Annotation", Vec2i(x, y + dy * ++i));
addNode(NodeType::NODE_MODULE, L"module", Vec2i(x, y + dy * ++i));
y -= 15;
addNode(NodeType::NODE_NAMESPACE, L"namespace", Vec2i(x, y + dy * ++i));
y -= 15;
addNode(NodeType::NODE_PACKAGE, L"package", Vec2i(x, y + dy * ++i));
@@ -2431,7 +2502,7 @@ void GraphController::createLegendGraph()
i += 1;
Node* templateNode = addNode(NodeType::NODE_TYPE, L"TemplateType<typename ParameterType>", Vec2i(x, y + dy * ++i));
Node* templateParameterNode = addNode(NodeType::NODE_TEMPLATE_PARAMETER_TYPE, L"ParameterType", Vec2i());
Node* templateParameterNode = addNode(NodeType::NODE_TEMPLATE_PARAMETER, L"ParameterType", Vec2i());
addMember(templateNode, templateParameterNode, ACCESS_TEMPLATE_PARAMETER);
y += 5;
i += 2;
@@ -2530,10 +2601,15 @@ void GraphController::createLegendGraph()
{
addText(L"class inheritance", 0, Vec2i(x, y + dy * ++i));
Node* base = addNode(NodeType::NODE_CLASS, L"Base Class", Vec2i(x, y + dy * ++i));
i += 2;
Node* derived = addNode(NodeType::NODE_CLASS, L"Derived Class", Vec2i(x, y + dy * i));
Node* base = addNode(NodeType::NODE_CLASS, L"Base Class", Vec2i(x, y + dy * (i + 1)));
Node* derived = addNode(NodeType::NODE_CLASS, L"Derived Class", Vec2i(x, y + dy * (i + 3)));
addEdge(Edge::EDGE_INHERITANCE, derived, base);
Node* base2 = addNode(NodeType::NODE_CLASS, L"Base Class", Vec2i(x + 180, y + dy * (i + 1)));
Node* derived2 = addNode(NodeType::NODE_CLASS, L"Derived Derived Class", Vec2i(x + 180, y + dy * (i + 3)));
Edge* edge = addEdge(Edge::EDGE_INHERITANCE, derived2, base2);
edge->addComponent(std::make_shared<TokenComponentInheritanceChain>(std::vector<Id>({ 1, 2 })));
i += 3;
}
{
@@ -120,7 +120,7 @@ private:
void layoutNesting();
void extendEqualFunctionNames(const std::vector<std::shared_ptr<DummyNode>>& nodes) const;
void layoutNestingRecursive(DummyNode* node) const;
Vec4i layoutNestingRecursive(DummyNode* node, int maxWidth) const;
void addExpandToggleNode(DummyNode* node) const;
void layoutToGrid(DummyNode* node) const;
@@ -147,3 +147,73 @@ size_t ScreenSearchController::getResponderId(ScreenSearchResponder* responder)
return 0;
}
void ScreenSearchController::handleMessage(MessageActivateAll* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateErrors* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateFullTextSearch* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateLegend* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateLocalSymbols* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateTokens* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateTrail* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageActivateTrailEdge* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageChangeFileView* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageCodeShowDefinition* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageDeactivateEdge* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageGraphNodeBundleSplit* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageGraphNodeExpand* message)
{
clearMatches();
}
void ScreenSearchController::handleMessage(MessageGraphNodeHide* message)
{
clearMatches();
}
@@ -5,12 +5,40 @@
#include <set>
#include "Controller.h"
#include "ScreenSearchInterfaces.h"
#include "MessageActivateAll.h"
#include "MessageActivateErrors.h"
#include "MessageActivateFullTextSearch.h"
#include "MessageActivateLegend.h"
#include "MessageActivateLocalSymbols.h"
#include "MessageActivateTokens.h"
#include "MessageActivateTrail.h"
#include "MessageActivateTrailEdge.h"
#include "MessageChangeFileView.h"
#include "MessageCodeShowDefinition.h"
#include "MessageDeactivateEdge.h"
#include "MessageGraphNodeBundleSplit.h"
#include "MessageGraphNodeExpand.h"
#include "MessageGraphNodeHide.h"
#include "MessageListener.h"
#include "ScreenSearchInterfaces.h"
class ScreenSearchController
: public Controller
, public ScreenSearchSender
, public MessageListener<MessageActivateAll>
, public MessageListener<MessageActivateErrors>
, public MessageListener<MessageActivateFullTextSearch>
, public MessageListener<MessageActivateLegend>
, public MessageListener<MessageActivateLocalSymbols>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageActivateTrail>
, public MessageListener<MessageActivateTrailEdge>
, public MessageListener<MessageChangeFileView>
, public MessageListener<MessageCodeShowDefinition>
, public MessageListener<MessageDeactivateEdge>
, public MessageListener<MessageGraphNodeBundleSplit>
, public MessageListener<MessageGraphNodeExpand>
, public MessageListener<MessageGraphNodeHide>
{
public:
virtual ~ScreenSearchController() = default;
@@ -30,6 +58,21 @@ public:
private:
size_t getResponderId(ScreenSearchResponder* responder) const;
void handleMessage(MessageActivateAll* message) override;
void handleMessage(MessageActivateErrors* message) override;
void handleMessage(MessageActivateFullTextSearch* message) override;
void handleMessage(MessageActivateLegend* message) override;
void handleMessage(MessageActivateLocalSymbols* message) override;
void handleMessage(MessageActivateTokens* message) override;
void handleMessage(MessageActivateTrail* message) override;
void handleMessage(MessageActivateTrailEdge* message) override;
void handleMessage(MessageChangeFileView* message) override;
void handleMessage(MessageCodeShowDefinition* message) override;
void handleMessage(MessageDeactivateEdge* message) override;
void handleMessage(MessageGraphNodeBundleSplit* message) override;
void handleMessage(MessageGraphNodeExpand* message) override;
void handleMessage(MessageGraphNodeHide* message) override;
std::vector<ScreenSearchResponder*> m_responders;
std::vector<std::pair<size_t, size_t>> m_matches;
@@ -21,12 +21,14 @@ TabsController::TabsController(
, m_viewFactory(viewFactory)
, m_storageAccess(storageAccess)
, m_screenSearchSender(screenSearchSender)
, m_isCreatingTab(false)
{
}
void TabsController::clear()
{
getView()->clear();
m_isCreatingTab = false;
while (true)
{
@@ -71,6 +73,7 @@ void TabsController::addTab(Id tabId, SearchMatch match)
}
m_scrollToLine = std::make_tuple(0, FilePath(), 0);
m_isCreatingTab = false;
}
void TabsController::showTab(Id tabId)
@@ -129,9 +132,10 @@ void TabsController::destroyTab(Id tabId)
// destroy the tab on the qt thread to allow view destruction
m_tabs.erase(tabId);
if (m_tabs.empty() && Application::getInstance()->isProjectLoaded())
if (m_tabs.empty() && Application::getInstance()->isProjectLoaded() && !m_isCreatingTab)
{
MessageTabOpen().dispatch();
m_isCreatingTab = true;
}
}
@@ -146,6 +150,14 @@ TabsView* TabsController::getView() const
return Controller::getView<TabsView>();
}
void TabsController::handleMessage(MessageActivateErrors* message)
{
if (m_tabs.empty() && Application::getInstance()->isProjectLoaded())
{
MessageTabOpenWith(SearchMatch::createCommand(SearchMatch::COMMAND_ERROR)).dispatch();
}
}
void TabsController::handleMessage(MessageIndexingFinished* message)
{
if (m_tabs.empty() && Application::getInstance()->isProjectLoaded())
@@ -164,6 +176,7 @@ void TabsController::handleMessage(MessageTabOpen* message)
if (Application::getInstance()->isProjectLoaded())
{
getView()->openTab(true, SearchMatch());
m_isCreatingTab = true;
}
}
@@ -210,6 +223,7 @@ void TabsController::handleMessage(MessageTabOpenWith* message)
if (match.isValid())
{
getView()->openTab(message->showTab, match);
m_isCreatingTab = true;
}
}
@@ -2,6 +2,7 @@
#define TABS_CONTROLLER_H
#include "MessageListener.h"
#include "MessageActivateErrors.h"
#include "MessageIndexingFinished.h"
#include "MessageTabClose.h"
#include "MessageTabOpen.h"
@@ -21,6 +22,7 @@ class ViewLayout;
class TabsController
: public Controller
, public MessageListener<MessageActivateErrors>
, public MessageListener<MessageIndexingFinished>
, public MessageListener<MessageTabClose>
, public MessageListener<MessageTabOpen>
@@ -46,6 +48,7 @@ public:
void onClearTabs();
private:
virtual void handleMessage(MessageActivateErrors* message);
virtual void handleMessage(MessageIndexingFinished* message);
virtual void handleMessage(MessageTabClose* message);
virtual void handleMessage(MessageTabOpen* message);
@@ -63,6 +66,7 @@ private:
std::map<Id, std::shared_ptr<Tab>> m_tabs;
std::mutex m_tabsMutex;
bool m_isCreatingTab;
std::tuple<Id, FilePath, size_t> m_scrollToLine;
};
@@ -5,29 +5,29 @@
#include "MessageBase.h"
#include "MessageListener.h"
#include "MessageActivateLegend.h"
#include "MessageCodeShowDefinition.h"
#include "MessageActivateErrors.h"
#include "MessageShowError.h"
#include "MessageHistoryRedo.h"
#include "MessageHistoryToPosition.h"
#include "MessageHistoryUndo.h"
#include "MessageIndexingFinished.h"
#include "MessageActivateAll.h"
#include "MessageActivateErrors.h"
#include "MessageActivateFullTextSearch.h"
#include "MessageActivateLegend.h"
#include "MessageActivateLocalSymbols.h"
#include "MessageActivateTokens.h"
#include "MessageActivateTrail.h"
#include "MessageActivateTrailEdge.h"
#include "MessageChangeFileView.h"
#include "MessageCodeShowDefinition.h"
#include "MessageDeactivateEdge.h"
#include "MessageGraphNodeBundleSplit.h"
#include "MessageGraphNodeExpand.h"
#include "MessageGraphNodeHide.h"
#include "MessageGraphNodeMove.h"
#include "MessageHistoryRedo.h"
#include "MessageHistoryToPosition.h"
#include "MessageHistoryUndo.h"
#include "MessageIndexingFinished.h"
#include "MessageRefreshUI.h"
#include "MessageScrollCode.h"
#include "MessageScrollGraph.h"
#include "MessageShowError.h"
#include "MessageShowReference.h"
#include "MessageShowScope.h"
@@ -122,6 +122,8 @@ void Bucket::preLayout(Vec2i viewSize, bool addVerticalSplit, bool forceVertical
}
}
m_colWidths = std::move(colWidths);
addVerticalSplit &= nodesInCol.size() > 1 || forceVerticalSplit;
if (!addVerticalSplit)
{
@@ -219,6 +221,30 @@ void Bucket::layout(int x, int y, int width, int height)
}
}
const std::vector<int> Bucket::getColWidths() const
{
return m_colWidths;
}
int Bucket::getMiddleGapX() const
{
int middleGapX = 0;
int dist = getWidth() / 2;
for (int colWidth : m_colWidths)
{
int gapX = middleGapX + GraphViewStyle::toGridOffset(colWidth + 45);
int d = std::abs(getWidth() / 2 - gapX);
if (d < dist)
{
dist = d;
middleGapX = gapX;
}
}
return middleGapX;
}
BucketLayouter::BucketLayouter(Vec2i viewSize)
: m_viewSize(viewSize)
@@ -243,7 +269,8 @@ void BucketLayouter::createBuckets(
{
if (node->hasActiveSubNode() || !edges.size())
{
addNode(node);
getBucket(0, 0)->addNode(node);
node->bundleInfo.layoutVertical = false;
activeNodeAdded = true;
m_activeParentNode = node.get();
@@ -257,11 +284,23 @@ void BucketLayouter::createBuckets(
if (!activeNodeAdded)
{
addNode(nodes[0]);
getBucket(0, 0)->addNode(nodes[0]);
}
for (std::shared_ptr<DummyEdge> edge : edges)
std::deque<std::shared_ptr<DummyEdge>> remainingEdges(edges.begin(), edges.end());
size_t skipCount = 0;
bool force = false;
while (remainingEdges.size())
{
if (skipCount == remainingEdges.size())
{
force = true;
}
std::shared_ptr<DummyEdge> edge = remainingEdges.front();
remainingEdges.pop_front();
std::shared_ptr<DummyNode> owner = findTopMostDummyNodeRecursive(nodes, edge->ownerId, nullptr);
std::shared_ptr<DummyNode> target = findTopMostDummyNodeRecursive(nodes, edge->targetId, nullptr);
@@ -287,7 +326,44 @@ void BucketLayouter::createBuckets(
std::swap(owner, target);
}
horizontal = addNode(owner, target, horizontal);
Bucket* ownerBucket = getBucket(owner);
Bucket* targetBucket = getBucket(target);
if (!ownerBucket && !targetBucket)
{
if (force)
{
ownerBucket = getBucket(0, 0);
ownerBucket->addNode(owner);
}
else
{
remainingEdges.push_back(edge);
skipCount++;
continue;
}
}
if (ownerBucket && targetBucket)
{
horizontal = (ownerBucket->j == targetBucket->j);
}
else if (ownerBucket)
{
int i = horizontal ? ownerBucket->i + 1 : ownerBucket->i;
int j = horizontal ? ownerBucket->j : ownerBucket->j - 1;
getBucket(i, j)->addNode(target);
}
else
{
int i = horizontal ? targetBucket->i - 1 : targetBucket->i;
int j = horizontal ? targetBucket->j : targetBucket->j + 1;
getBucket(i, j)->addNode(owner);
}
skipCount = 0;
}
edge->layoutHorizontal = horizontal;
@@ -299,6 +375,9 @@ void BucketLayouter::layoutBuckets(bool addVerticalSplit)
std::map<int, int> widths;
std::map<int, int> heights;
int maxMidWidth = 0;
int maxMidWidthJ = m_j1;
for (int j = m_j1; j <= m_j2; j++)
{
for (int i = m_i1; i <= m_i2; i++)
@@ -318,6 +397,12 @@ void BucketLayouter::layoutBuckets(bool addVerticalSplit)
{
heights[j] = bucket->getHeight();
}
if (i == 0 && bucket->getWidth() > maxMidWidth)
{
maxMidWidth = bucket->getWidth();
maxMidWidthJ = j;
}
}
}
@@ -328,6 +413,45 @@ void BucketLayouter::layoutBuckets(bool addVerticalSplit)
verticalOffset = (rect.y + rect.w - m_activeParentNode->size.y) / 2;
}
// Calculate x offsets in the middle column to align all columns in each bucket at the column gap closest to the
// middle to avoid weird edge routing.
std::map<int, int> xOffs;
std::map<int, int> xOffsFront;
bool useFront = false;
Bucket* maxWidthBucket = &m_buckets[maxMidWidthJ][0];
int maxWidthMiddleGapX = maxWidthBucket->getMiddleGapX();
for (int j = m_j1; j <= m_j2; j++)
{
Bucket* bucket = &m_buckets[j][0];
// only align if max width bucket has multiple columns
if (j != maxMidWidthJ && maxWidthBucket->getColWidths().size() > 1)
{
int xOff = maxWidthMiddleGapX - bucket->getMiddleGapX() - (widths[0] - bucket->getWidth()) / 2;
xOffs[j] = xOff;
xOffsFront[j] = (bucket->getWidth() - widths[0]) / 2;
// move to front if moving to column gap would be further away
if (std::abs((widths[0] - bucket->getWidth()) / 2) < std::abs(xOff))
{
useFront = true;
}
}
else
{
xOffs[j] = 0;
xOffsFront[j] = 0;
}
}
if (useFront)
{
xOffs = xOffsFront;
}
int y = 0;
for (int j = m_j1; j <= m_j2; j++)
{
@@ -336,7 +460,9 @@ void BucketLayouter::layoutBuckets(bool addVerticalSplit)
{
Bucket* bucket = &m_buckets[j][i];
int xOff = 0;
int yOff = 0;
// move buckets over or below the middle one closer
if (i == 0 && (j == -1 || j == 1))
{
@@ -349,7 +475,12 @@ void BucketLayouter::layoutBuckets(bool addVerticalSplit)
yOff = verticalOffset;
}
bucket->layout(x, y + yOff, widths[i], heights[j]);
if (i == 0)
{
xOff = xOffs[j];
}
bucket->layout(x + xOff, y + yOff, widths[i], heights[j]);
x += widths[i] + GraphViewStyle::toGridGap(110);
}
@@ -395,47 +526,6 @@ std::shared_ptr<DummyNode> BucketLayouter::findTopMostDummyNodeRecursive(
return nullptr;
}
void BucketLayouter::addNode(std::shared_ptr<DummyNode> node)
{
Bucket* bucket = getBucket(0, 0);
bucket->addNode(node);
}
bool BucketLayouter::addNode(std::shared_ptr<DummyNode> owner, std::shared_ptr<DummyNode> target, bool horizontal)
{
Bucket* ownerBucket = getBucket(owner);
Bucket* targetBucket = getBucket(target);
if (!ownerBucket && !targetBucket)
{
ownerBucket = getBucket(0, 0);
ownerBucket->addNode(owner);
}
else if (ownerBucket && targetBucket)
{
return ownerBucket->j == targetBucket->j;
}
if (ownerBucket)
{
int i = horizontal ? ownerBucket->i + 1 : ownerBucket->i;
int j = horizontal ? ownerBucket->j : ownerBucket->j - 1;
Bucket* bucket = getBucket(i, j);
bucket->addNode(target);
}
else
{
int i = horizontal ? targetBucket->i - 1 : targetBucket->i;
int j = horizontal ? targetBucket->j : targetBucket->j + 1;
Bucket* bucket = getBucket(i, j);
bucket->addNode(owner);
}
return horizontal;
}
Bucket* BucketLayouter::getBucket(int i, int j)
{
bool newColumn = false;
@@ -26,6 +26,9 @@ public:
void preLayout(Vec2i viewSize, bool addVerticalSplit, bool forceVerticalSplit);
void layout(int x, int y, int width, int height);
const std::vector<int> getColWidths() const;
int getMiddleGapX() const;
int i;
int j;
@@ -34,6 +37,8 @@ private:
int m_height;
DummyNode::BundledNodesSet m_nodes;
std::vector<int> m_colWidths;
};
@@ -52,9 +57,6 @@ private:
std::shared_ptr<DummyNode> findTopMostDummyNodeRecursive(
std::vector<std::shared_ptr<DummyNode>>& nodes, Id tokenId, std::shared_ptr<DummyNode> top);
void addNode(std::shared_ptr<DummyNode> node);
bool addNode(std::shared_ptr<DummyNode> owner, std::shared_ptr<DummyNode> target, bool horizontal);
Bucket* getBucket(int i, int j);
Bucket* getBucket(std::shared_ptr<DummyNode> node);
@@ -128,6 +128,85 @@ void ListLayouter::layoutMultiColumn(Vec2i viewSize, std::vector<std::shared_ptr
}
}
void ListLayouter::layoutSquare(std::vector<std::shared_ptr<DummyNode>>* nodes, int maxWidth)
{
int gapX = GraphViewStyle::s_gridCellSize + 2 * GraphViewStyle::s_gridCellPadding;
int gapY = GraphViewStyle::s_gridCellPadding;
std::vector<std::shared_ptr<DummyNode>> visibleNodes;
for (auto node : *nodes)
{
if (node->getsLayouted())
{
visibleNodes.push_back(node);
}
}
int totalHeight = 0;
for (size_t i = 0; i < visibleNodes.size(); i++)
{
totalHeight += visibleNodes[i]->size.y() + gapY;
}
int diff = -1;
size_t cols = 1;
for (size_t i = cols; i < 100; i++)
{
if (layoutSquareInternal(visibleNodes, Vec2i(maxWidth, totalHeight * i / 100), Vec2i(gapX, gapY)))
{
Vec4i rect = boundingRect(visibleNodes);
int newDiff = rect.z() * rect.w() + (rect.z() - rect.w()) * (rect.z() - rect.w()) / 4;
if (maxWidth >= 0)
{
newDiff = rect.w();
}
if (diff < 0 || newDiff <= diff)
{
diff = newDiff;
cols = i;
}
}
}
layoutSquareInternal(visibleNodes, Vec2i(maxWidth, totalHeight * cols / 100), Vec2i(gapX, gapY));
}
bool ListLayouter::layoutSquareInternal(
std::vector<std::shared_ptr<DummyNode>>& visibleNodes, const Vec2i& maxSize, const Vec2i& gap)
{
int x = 0;
int y = 0;
int width = 0;
for (std::shared_ptr<DummyNode> node : visibleNodes)
{
node->position.x() = x;
node->position.y() = y;
y += node->size.y() + gap.y();
width = std::max(width, node->size.x());
if (maxSize.x > 0 && x + width > maxSize.x)
{
return false;
}
if (y >= maxSize.y)
{
y = 0;
x += width + gap.x();
width = 0;
}
}
return true;
}
void ListLayouter::layoutSkewed(std::vector<std::shared_ptr<DummyNode>>* nodes, int gapX, int gapY, int maxWidth)
{
std::vector<std::shared_ptr<DummyNode>> visibleNodes;
@@ -16,6 +16,7 @@ public:
static void layoutColumn(std::vector<std::shared_ptr<DummyNode>>* nodes, int gap);
static void layoutMultiColumn(Vec2i viewSize, std::vector<std::shared_ptr<DummyNode>>* nodes);
static void layoutSquare(std::vector<std::shared_ptr<DummyNode>>* nodes, int maxWidth);
static void layoutSkewed(std::vector<std::shared_ptr<DummyNode>>* nodes, int gapX, int gapY, int maxWidth);
static Vec4i boundingRect(const std::vector<std::shared_ptr<DummyNode>>& nodes);
@@ -23,6 +24,7 @@ public:
private:
static void layoutSimple(std::vector<std::shared_ptr<DummyNode>>* nodes, int gapX, int gapY, bool horizontal);
static bool layoutSquareInternal(std::vector<std::shared_ptr<DummyNode>>& visibleNodes, const Vec2i& maxSize, const Vec2i& gap);
};
#endif // LIST_LAYOUTER_H

Some files were not shown because too many files have changed in this diff Show More