diff options
author | Norbert Preining <norbert@preining.info> | 2023-06-08 03:01:59 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-06-08 03:01:59 +0000 |
commit | 538e6d6e7c75b7cca5470604811205f9dbd55c03 (patch) | |
tree | 4807afb694acc9e4ecff2d466d5e37788127d6fb /graphics | |
parent | 5c99135c06494b236cce7fd76e346851cf8c4408 (diff) |
CTAN sync 202306080301
Diffstat (limited to 'graphics')
189 files changed, 5831 insertions, 3822 deletions
diff --git a/graphics/asymptote/ChangeLog b/graphics/asymptote/ChangeLog index 5c972b52ba..0909f1be8a 100644 --- a/graphics/asymptote/ChangeLog +++ b/graphics/asymptote/ChangeLog @@ -1,3 +1,347 @@ +commit 4d5224cf59d75f08c7360382bf7e7c12167ce35f +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 6 19:59:30 2023 -0600 + + Update build script. + +commit 3c359d89cc4bfba685d5c29794af934e08c5329f +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 6 17:15:36 2023 -0600 + + Fix type. + +commit 0104aea26bf8f76dc15f717a5ea78e0ff46b659f +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 6 16:26:53 2023 -0600 + + Fix compilation under MSDOS. + +commit 13fac7197d9f62f890f3c78d40eda8f5b819c99c +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 6 00:17:26 2023 -0600 + + Fix boost issues. + +commit fbe3f431adc74ff6ac307fd4868da8f8b363efaa +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 6 00:00:47 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "9b0d99d1" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "9b0d99d1" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit 728e00fa9dcc9d13f9fa5da82c2f901420485c61 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jun 5 22:47:35 2023 -0600 + + Fix std::optional compilation issues. + +commit c18c01677cfbeb3d956633df86a79e984a8f8255 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jun 5 22:47:05 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "1a04514e" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "1a04514e" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit b24fba5df113d4a5e7af41d01011b912916b2a06 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jun 5 01:36:17 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "97ccf8e9" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "97ccf8e9" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit 346ec934bd279beaf1d1605d657fd8e15378022b +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jun 5 01:10:41 2023 -0600 + + Work around unavailable clock_gettime under old versions of MacOS. + +commit 1d7caee225a5fe892c9ba2f7ffff1e63335352fa +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Jun 5 01:10:06 2023 -0600 + + Fix portability issue with GLSL_VERSION. + +commit e49ed605f0e13ff75ae21f5b653f3c4b319a33f6 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 22:49:48 2023 -0600 + + Initialize spin counter; remove remaining gettimeofday calls. + +commit 59bb7930b9a08c530f66957c5c60f64b07a59374 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 15:53:40 2023 -0600 + + Update Boehm GC to 8.2.4. + +commit 4080bee015b099acd933bf40a89d2933c1edbdc2 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 11:58:51 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "018aaca5" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "018aaca5" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit 267922a9d8d7f9077d6d5bd7260e176cf200d010 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 11:36:51 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "6874d444" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "6874d444" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit 2d541360013d7357be3258c1ba6ea7ed98ae1e45 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 11:35:18 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "530bd22e" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "530bd22e" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit bd3813ca7592cc3dba43fa4007ff4f129d668f24 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 10:52:31 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "6c723f47" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "6c723f47" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit a3f45abc54caf855167b662ffd3717e2ab733289 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jun 4 10:51:34 2023 -0600 + + Revert "Revert "Change boost::optional to std::optional"." + + This reverts commit d6ddd54262b7bf61830572988e2f4bd953802a28. + +commit 6cb475a540d695b3fcee20252e2ffac2c8f1adb5 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 3 15:06:24 2023 -0600 + + git subrepo pull (merge) LspCpp + + subrepo: + subdir: "LspCpp" + merged: "acde1180" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "936b427d" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit d6ddd54262b7bf61830572988e2f4bd953802a28 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 3 14:55:20 2023 -0600 + + Revert "Change boost::optional to std::optional". + + This reverts commit 0de3cfdb930d53d9ea2c03674e8ab228bf31b0d1. + +commit 5a4f72184e494aafaf5298b0b51f7338d7fb97f0 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 3 14:42:17 2023 -0600 + + git subrepo pull --force LspCpp + + subrepo: + subdir: "LspCpp" + merged: "f96a1ac0" + upstream: + origin: "git@github.com:vectorgraphics/LspCpp" + branch: "master" + commit: "f96a1ac0" + git-subrepo: + version: "0.4.6" + origin: "???" + commit: "???" + +commit b3345619ab5aad88fcf229591c5a20f0d0864eaa +Merge: 5c40136f 7366fe26 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 3 12:21:01 2023 -0600 + + Merge pull request #356 from yarusome/master + + Fixing bugs in the inversion section of the `geometry` module + +commit 5c40136f60cbeab6924626085c68cc161d0dae45 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 3 12:11:23 2023 -0600 + + Reformat code. + +commit 4709f6e6956d3f455c127fa5d44debf6f70d027e +Merge: 456ae992 7f5cdf0b +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jun 3 11:59:50 2023 -0600 + + Merge pull request #377 from LemonBoy/fix-io-read + + io: Fix reading of NaN and inf values + +commit 456ae99203a291f9c50128ec55965ad948e11971 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jun 2 21:42:12 2023 -0600 + + Remove lsp option when disabled. + +commit 214b8969a66af0dde0168ac17e2a343debb7d047 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon May 29 10:33:28 2023 -0600 + + Remove unused cast. + +commit 7f5cdf0b2c6aed2e26ff7310aa3d181419a6eea8 +Author: LemonBoy <thatlemon@gmail.com> +Date: Sun May 28 19:09:57 2023 +0200 + + io: Fix reading of NaN and inf values + + Previously asymptote would silently stop while trying to read a textual + dataset containing inf or nan values, while the language itself is + perfectly capable of handling such values. + +commit 43cf506b5bce0957205650246c8616b97e143133 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun May 14 13:54:15 2023 -0600 + + Remove unused variables. + +commit 494e8120ee967aa9c71ae26e2476b5632211b6e2 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 17 21:23:57 2023 -0600 + + Fix compilation when configured with --disable-gl. + +commit 4715fea108852e25cd38a6a74079985f5fe91e7f +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Apr 15 16:31:59 2023 -0600 + + Suppress .setblendmode for EPS output. + +commit 700aaec3a6d1fd3a78f04537a61bad82a5f07057 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Mar 12 00:03:46 2023 -0700 + + Fix portability issues. + +commit fffdb62031f4f68007b2721bdd8ef86ef37d8e3d +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Mar 11 23:42:20 2023 -0700 + + Fix boolean operator. + +commit da81bd59f89ba8be1131243f680f06ed57fee571 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Mar 11 23:33:28 2023 -0700 + + Update config.guess. + +commit 65165fe1528692980fd52c7f1c3735c7ac5bd2c0 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Mar 5 20:48:00 2023 -0700 + + Fix bug #370: automatically apply PDF transfer functions. + +commit 11c8cc57a4b66e5f04f3ab2f1cfd6f33d2c8d43d +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Feb 20 13:41:10 2023 -0700 + + Clear initial index buffer. + +commit 7623f325b1a370851db9559a5a058e552b71a2f6 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Feb 19 01:32:10 2023 -0700 + + Fix last revision. + +commit 0a248a219e44d2945bcc31c5424153ec1ace41bb +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Feb 19 01:28:30 2023 -0700 + + Only output unscaled primitives. + +commit e8e88fb4412ce92acf222ceafe18e3be26984b90 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Feb 8 23:39:44 2023 -0700 + + Increment version to 2.86. + commit 9e242d4e7d6d79656c09d4f6c7c385dd7ea61bb3 Author: John Bowman <bowman@ualberta.ca> Date: Wed Feb 8 21:30:27 2023 -0700 @@ -166,6 +510,12 @@ Date: Sun Jan 22 22:06:10 2023 -0700 Increment version to 2.85. +commit 7366fe26314370241c949921389492a4cb862f33 +Author: yarusome <97945148+yarusome@users.noreply.github.com> +Date: Mon Jan 23 12:15:54 2023 +0800 + + Fixing the use of `inverse()` + commit 430c7a661c060568720f6d65e611a2087ea1dde6 Author: John Bowman <bowman@ualberta.ca> Date: Sat Jan 21 22:48:26 2023 -0700 @@ -218,6 +568,22 @@ Date: Mon Dec 12 22:19:03 2022 -0700 Avoid division by zero. +commit 58af9b461ff373ec32e6d1db869c80cf3b6dd137 +Author: yarusome <97945148+yarusome@users.noreply.github.com> +Date: Sun Dec 11 13:59:36 2022 +0800 + + Simplifying the internal use of `inversion` + + This commit replaces `(real, point, ...)` with `(inversion, ...)` in the parameter list of internally-used functions in the inversion section, and simplifies the initializer definitions of `inversion` using `operator init`. + +commit 1fcc742a8e372b8280e92573a31542ed3cdc9117 +Author: yarusome <97945148+yarusome@users.noreply.github.com> +Date: Sun Dec 11 13:19:55 2022 +0800 + + Fixing the inversion section of the `geometry` module + + This commit fixes bugs related to coordinate systems in the inversion section, and all the returned `point`s are in `currentcoordsys` now. + commit 46d6ea7351699bbed0418ec6d7f2195011178e5a Author: John Bowman <bowman@ualberta.ca> Date: Mon Nov 28 20:20:35 2022 -0700 diff --git a/graphics/asymptote/GUI/icons_rc.py b/graphics/asymptote/GUI/icons_rc.py index 7a59d361a5..fa6b3c56ff 100644 --- a/graphics/asymptote/GUI/icons_rc.py +++ b/graphics/asymptote/GUI/icons_rc.py @@ -2,14 +2,14 @@ # Resource object code # -# Created by: The Resource Compiler for PyQt5 (Qt v5.15.8) +# Created by: The Resource Compiler for PyQt5 (Qt v5.15.9) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ -\x00\x00\x02\xf0\ +\x00\x00\x02\x98\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -40,31 +40,26 @@ qt_resource_data = b"\ \x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x32\x30\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\ -\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x34\x38\x43\x31\ -\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x34\x38\x2c\x31\x34\x31\ -\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\x35\x36\x73\x39\x33\x2e\x36\ -\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\x38\x2c\x32\x30\x38\x73\x32\ -\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2d\x32\x30\ -\x38\x53\x33\x37\x30\x2e\x33\x39\x39\x2c\x34\x38\x2c\x32\x35\x36\ -\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\ -\x39\x0a\x09\x09\x09\x63\x2d\x39\x31\x2e\x35\x31\x38\x2c\x30\x2d\ -\x31\x36\x36\x2e\x33\x39\x39\x2d\x37\x34\x2e\x38\x38\x32\x2d\x31\ -\x36\x36\x2e\x33\x39\x39\x2d\x31\x36\x36\x2e\x33\x39\x39\x53\x31\ -\x36\x34\x2e\x34\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\x35\x36\x2c\ -\x38\x39\x2e\x36\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\x34\x2e\x34\ -\x38\x32\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\x33\x34\x37\ -\x2e\x35\x31\x38\x2c\x34\x32\x32\x2e\x33\x39\x39\x2c\x32\x35\x36\ -\x2c\x34\x32\x32\x2e\x33\x39\x39\x7a\x22\x2f\x3e\x0a\x09\x3c\x2f\ -\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x02\x77\ +\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ +\x64\x3d\x22\x4d\x31\x32\x38\x2c\x34\x30\x35\x2e\x34\x32\x39\x43\ +\x31\x32\x38\x2c\x34\x32\x38\x2e\x38\x34\x36\x2c\x31\x34\x37\x2e\ +\x31\x39\x38\x2c\x34\x34\x38\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\ +\x34\x34\x38\x68\x31\x37\x30\x2e\x36\x36\x37\x43\x33\x36\x34\x2e\ +\x38\x30\x32\x2c\x34\x34\x38\x2c\x33\x38\x34\x2c\x34\x32\x38\x2e\ +\x38\x34\x36\x2c\x33\x38\x34\x2c\x34\x30\x35\x2e\x34\x32\x39\x56\ +\x31\x36\x30\x48\x31\x32\x38\x56\x34\x30\x35\x2e\x34\x32\x39\x7a\ +\x20\x4d\x34\x31\x36\x2c\x39\x36\x0a\x09\x09\x68\x2d\x38\x30\x6c\ +\x2d\x32\x36\x2e\x37\x38\x35\x2d\x33\x32\x48\x32\x30\x32\x2e\x37\ +\x38\x36\x4c\x31\x37\x36\x2c\x39\x36\x48\x39\x36\x76\x33\x32\x68\ +\x33\x32\x30\x56\x39\x36\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\ +\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\xda\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ \x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ \x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x30\x2e\x30\x2c\x20\ \x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ \x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ \x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ @@ -85,20 +80,91 @@ qt_resource_data = b"\ \x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ \x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ \x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ -\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ -\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ -\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ -\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x70\x6f\x6c\ -\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x32\x38\x38\ -\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\x34\x35\x2e\x39\x20\ -\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\x37\x34\x2c\x32\x30\ -\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\x33\x37\x2e\x39\x20\ -\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\x31\x36\x20\x32\x32\ -\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\x2c\x33\x36\x36\x2e\ -\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\x2e\x39\x20\x33\x36\ -\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0a\x09\x34\x31\x36\x2c\ -\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\x20\x22\x2f\x3e\x0a\x3c\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ +\x64\x3d\x22\x4d\x34\x38\x2e\x34\x35\x31\x2c\x34\x36\x34\x2e\x38\ +\x32\x38\x63\x34\x30\x2e\x30\x32\x33\x2d\x30\x2e\x33\x31\x35\x2c\ +\x34\x35\x2e\x30\x31\x2d\x39\x2e\x39\x35\x35\x2c\x35\x38\x2e\x30\ +\x35\x32\x2d\x35\x30\x2e\x31\x33\x32\x63\x32\x34\x2e\x30\x35\x37\ +\x2d\x36\x33\x2e\x34\x30\x38\x2c\x31\x33\x32\x2e\x34\x31\x39\x2c\ +\x31\x36\x2e\x35\x39\x31\x2c\x36\x35\x2e\x32\x36\x39\x2c\x34\x34\ +\x2e\x33\x37\x34\x0a\x09\x09\x43\x31\x30\x34\x2e\x36\x32\x32\x2c\ +\x34\x38\x36\x2e\x38\x35\x32\x2c\x38\x2e\x34\x32\x38\x2c\x34\x36\ +\x35\x2e\x31\x34\x33\x2c\x34\x38\x2e\x34\x35\x31\x2c\x34\x36\x34\ +\x2e\x38\x32\x38\x7a\x22\x2f\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ +\x64\x3d\x22\x4d\x34\x35\x38\x2e\x38\x35\x37\x2c\x34\x36\x2e\x39\ +\x30\x32\x63\x2d\x31\x39\x2e\x34\x31\x37\x2d\x31\x35\x2e\x36\x34\ +\x37\x2d\x35\x31\x2e\x35\x39\x32\x2d\x37\x2e\x39\x33\x38\x2d\x37\ +\x31\x2e\x38\x36\x34\x2c\x31\x37\x2e\x32\x31\x39\x4c\x31\x38\x31\ +\x2e\x36\x34\x35\x2c\x33\x35\x35\x2e\x38\x34\x39\x63\x2d\x32\x30\ +\x2e\x32\x37\x32\x2c\x32\x35\x2e\x31\x35\x34\x2d\x32\x30\x2e\x31\ +\x37\x31\x2c\x32\x30\x2e\x33\x34\x37\x2d\x30\x2e\x37\x35\x34\x2c\ +\x33\x35\x2e\x39\x39\x32\x0a\x09\x09\x63\x31\x39\x2e\x34\x31\x37\ +\x2c\x31\x35\x2e\x36\x34\x38\x2c\x31\x34\x2e\x37\x33\x38\x2c\x31\ +\x36\x2e\x37\x37\x2c\x33\x35\x2e\x30\x31\x31\x2d\x38\x2e\x33\x38\ +\x38\x6c\x32\x34\x31\x2e\x34\x30\x36\x2d\x32\x36\x32\x2e\x36\x36\ +\x39\x43\x34\x37\x37\x2e\x35\x38\x31\x2c\x39\x35\x2e\x36\x32\x38\ +\x2c\x34\x37\x38\x2e\x32\x37\x35\x2c\x36\x32\x2e\x35\x35\x2c\x34\ +\x35\x38\x2e\x38\x35\x37\x2c\x34\x36\x2e\x39\x30\x32\x7a\x20\x4d\ +\x34\x30\x36\x2e\x30\x36\x35\x2c\x38\x31\x2e\x38\x32\x35\x0a\x09\ +\x09\x63\x30\x2c\x30\x2d\x33\x2d\x33\x2e\x35\x2d\x31\x33\x2d\x31\ +\x31\x2e\x35\x63\x31\x35\x2d\x32\x34\x2e\x35\x2c\x34\x34\x2e\x35\ +\x2d\x32\x30\x2c\x34\x34\x2e\x35\x2d\x32\x30\x43\x34\x30\x39\x2e\ +\x35\x36\x35\x2c\x36\x36\x2e\x38\x32\x35\x2c\x34\x30\x36\x2e\x30\ +\x36\x35\x2c\x38\x31\x2e\x38\x32\x35\x2c\x34\x30\x36\x2e\x30\x36\ +\x35\x2c\x38\x31\x2e\x38\x32\x35\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\xe7\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ +\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\x20\ +\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ +\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ +\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ +\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ +\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ +\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ +\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ +\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ +\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ +\x69\x72\x63\x6c\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\ +\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\ +\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\ +\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\ +\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\ +\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x79\ +\x3d\x22\x35\x31\x32\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\ +\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\ +\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ +\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\ +\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\ +\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\ +\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x30\x2c\x30\x2e\ +\x34\x43\x34\x2e\x36\x39\x38\x2c\x30\x2e\x34\x2c\x30\x2e\x34\x2c\ +\x34\x2e\x36\x39\x38\x2c\x30\x2e\x34\x2c\x31\x30\x43\x30\x2e\x34\ +\x2c\x31\x35\x2e\x33\x30\x32\x2c\x34\x2e\x36\x39\x38\x2c\x31\x39\ +\x2e\x36\x2c\x31\x30\x2c\x31\x39\x2e\x36\x63\x35\x2e\x33\x30\x31\ +\x2c\x30\x2c\x39\x2e\x36\x2d\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\ +\x2d\x39\x2e\x36\x30\x31\x0a\x09\x43\x31\x39\x2e\x36\x2c\x34\x2e\ +\x36\x39\x38\x2c\x31\x35\x2e\x33\x30\x31\x2c\x30\x2e\x34\x2c\x31\ +\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\x30\x2c\x31\x37\x2e\x35\x39\ +\x39\x63\x2d\x34\x2e\x31\x39\x37\x2c\x30\x2d\x37\x2e\x36\x2d\x33\ +\x2e\x34\x30\x32\x2d\x37\x2e\x36\x2d\x37\x2e\x36\x53\x35\x2e\x38\ +\x30\x32\x2c\x32\x2e\x34\x2c\x31\x30\x2c\x32\x2e\x34\x63\x34\x2e\ +\x31\x39\x37\x2c\x30\x2c\x37\x2e\x36\x30\x31\x2c\x33\x2e\x34\x30\ +\x32\x2c\x37\x2e\x36\x30\x31\x2c\x37\x2e\x36\x0a\x09\x53\x31\x34\ +\x2e\x31\x39\x37\x2c\x31\x37\x2e\x35\x39\x39\x2c\x31\x30\x2c\x31\ +\x37\x2e\x35\x39\x39\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ \x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x03\xfe\ \x3c\ @@ -166,13 +232,22 @@ qt_resource_data = b"\ \x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\ \x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\ \x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ -\x00\x00\x04\x9c\ +\x00\x00\x00\x6c\ +\x3c\ +\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ +\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\ +\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\ +\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\ +\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\ +\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\ +\x00\x00\x03\xe8\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ \x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ \x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\x20\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\x20\ \x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ \x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ \x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ @@ -184,133 +259,54 @@ qt_resource_data = b"\ \x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ \x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ \x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ -\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ +\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\x64\x5f\x6c\ +\x65\x66\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ \x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\ \x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ \x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\ -\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\x3d\x22\x32\ -\x34\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\ -\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\ -\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\ -\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\ -\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\ -\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\ -\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\ -\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x3c\x70\x61\x74\ -\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\x2c\x31\x34\x2e\x37\ -\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\x30\x2e\x34\x37\x34\ -\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\x34\x2d\x30\x2e\x32\ -\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\x30\x6c\x35\x2e\x33\ -\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\x37\x34\x38\x2c\x34\ -\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\x2e\x39\x32\x32\x2c\ -\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\x0a\x09\x63\x30\x2e\ -\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x33\x2c\x31\ -\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\ -\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\x33\x2e\x33\x37\x38\x2c\ -\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\ -\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\x39\x39\x2c\x30\x2e\x30\ -\x38\x33\x2c\x31\x2e\x34\x31\x32\x0a\x09\x43\x36\x2e\x32\x36\x39\ -\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\x2e\x39\x39\x34\x2c\x31\x34\ -\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\x2c\x31\x34\x2e\x37\x35\x7a\ -\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\x31\x34\x2e\x37\x34\x38\x4c\ -\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\x6c\x2d\x35\x2e\x30\x36\x2d\ -\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\x34\x31\x33\x2d\x30\x2e\x33\ -\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\x30\x2e\x33\x33\x2d\x31\x2e\ -\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\x0a\x09\x63\x2d\x30\x2e\x33\ -\x36\x37\x2c\x30\x2e\x34\x31\x33\x2d\x30\x2e\x33\x33\x2c\x31\x2e\ -\x30\x34\x35\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x4c\ -\x31\x36\x2e\x39\x39\x35\x2c\x31\x30\x6c\x2d\x33\x2e\x36\x35\x39\ -\x2c\x33\x2e\x32\x35\x32\x63\x2d\x30\x2e\x34\x31\x33\x2c\x30\x2e\ -\x33\x36\x37\x2d\x30\x2e\x34\x35\x2c\x30\x2e\x39\x39\x39\x2d\x30\ -\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x43\x31\x33\x2e\x34\x35\ -\x2c\x31\x34\x2e\x38\x38\x37\x2c\x31\x33\x2e\x37\x32\x35\x2c\x31\ -\x35\x2c\x31\x34\x2c\x31\x35\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\ -\x2c\x31\x35\x2c\x31\x34\x2e\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\ -\x37\x2c\x31\x34\x2e\x36\x36\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\ -\x20\x4d\x39\x2e\x39\x38\x36\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\ -\x2d\x31\x32\x63\x30\x2e\x30\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\ -\x30\x2e\x32\x37\x37\x2d\x31\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\ -\x2d\x31\x2e\x31\x35\x31\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\ -\x30\x2e\x30\x39\x32\x2d\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\ -\x37\x2d\x31\x2e\x31\x35\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\ -\x31\x32\x63\x2d\x30\x2e\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\ -\x30\x2e\x32\x37\x37\x2c\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\ -\x2c\x31\x2e\x31\x35\x31\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\ -\x39\x39\x36\x2c\x38\x2e\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\ -\x30\x31\x2c\x31\x37\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\ -\x2c\x39\x2e\x39\x30\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\ -\x39\x38\x36\x2c\x31\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0a\x3c\ -\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x04\x17\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x69\x73\x6f\ -\x2d\x38\x38\x35\x39\x2d\x31\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\ -\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\ -\x20\x49\x6c\x6c\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x39\x2e\ -\x30\x2e\x30\x2c\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\ -\x50\x6c\x75\x67\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\ -\x72\x73\x69\x6f\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\ -\x64\x20\x30\x29\x20\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\ -\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\ -\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\ -\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\ -\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\ -\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\ -\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\ -\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\ -\x79\x3d\x22\x30\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x22\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\x20\x34\ -\x32\x33\x2e\x37\x35\x34\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x65\ -\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ -\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\ -\x20\x34\x32\x33\x2e\x37\x35\x34\x3b\x22\x20\x78\x6d\x6c\x3a\x73\ -\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\ -\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x33\x35\x34\x2e\x32\ -\x34\x2c\x34\x37\x2e\x34\x6c\x33\x39\x2e\x38\x37\x39\x2d\x33\x39\ -\x2e\x38\x37\x39\x48\x32\x37\x32\x2e\x31\x39\x36\x76\x31\x32\x31\ -\x2e\x39\x32\x34\x6c\x36\x30\x2e\x38\x30\x31\x2d\x36\x30\x2e\x38\ -\x30\x31\x63\x35\x36\x2c\x35\x30\x2e\x30\x36\x36\x2c\x37\x37\x2e\ -\x32\x35\x31\x2c\x31\x33\x32\x2e\x30\x30\x34\x2c\x34\x36\x2e\x39\ -\x31\x38\x2c\x32\x30\x35\x2e\x32\x33\x35\x0a\x09\x63\x2d\x31\x38\ -\x2e\x35\x38\x35\x2c\x34\x34\x2e\x38\x36\x39\x2d\x35\x33\x2e\x35\ -\x33\x31\x2c\x37\x39\x2e\x38\x31\x35\x2d\x39\x38\x2e\x34\x2c\x39\ -\x38\x2e\x34\x63\x2d\x34\x34\x2e\x38\x36\x36\x2c\x31\x38\x2e\x35\ -\x38\x35\x2d\x39\x34\x2e\x32\x38\x38\x2c\x31\x38\x2e\x35\x38\x35\ -\x2d\x31\x33\x39\x2e\x31\x35\x38\x2c\x30\x63\x2d\x34\x34\x2e\x38\ -\x36\x39\x2d\x31\x38\x2e\x35\x38\x35\x2d\x37\x39\x2e\x38\x31\x35\ -\x2d\x35\x33\x2e\x35\x33\x31\x2d\x39\x38\x2e\x34\x2d\x39\x38\x2e\ -\x34\x0a\x09\x63\x2d\x31\x38\x2e\x35\x38\x35\x2d\x34\x34\x2e\x38\ -\x36\x39\x2d\x31\x38\x2e\x35\x38\x35\x2d\x39\x34\x2e\x32\x39\x2c\ -\x30\x2d\x31\x33\x39\x2e\x31\x35\x39\x6c\x2d\x32\x37\x2e\x37\x31\ -\x37\x2d\x31\x31\x2e\x34\x38\x63\x2d\x32\x31\x2e\x36\x35\x31\x2c\ -\x35\x32\x2e\x32\x37\x32\x2d\x32\x31\x2e\x36\x35\x31\x2c\x31\x30\ -\x39\x2e\x38\x34\x38\x2c\x30\x2c\x31\x36\x32\x2e\x31\x32\x0a\x09\ -\x63\x32\x31\x2e\x36\x35\x32\x2c\x35\x32\x2e\x32\x37\x32\x2c\x36\ -\x32\x2e\x33\x36\x34\x2c\x39\x32\x2e\x39\x38\x34\x2c\x31\x31\x34\ -\x2e\x36\x33\x37\x2c\x31\x31\x34\x2e\x36\x33\x36\x63\x32\x36\x2e\ -\x31\x34\x2c\x31\x30\x2e\x38\x32\x37\x2c\x35\x33\x2e\x35\x39\x35\ -\x2c\x31\x36\x2e\x32\x34\x2c\x38\x31\x2e\x30\x36\x2c\x31\x36\x2e\ -\x32\x33\x39\x63\x32\x37\x2e\x34\x35\x39\x2d\x30\x2e\x30\x30\x31\ -\x2c\x35\x34\x2e\x39\x32\x37\x2d\x35\x2e\x34\x31\x34\x2c\x38\x31\ -\x2e\x30\x36\x31\x2d\x31\x36\x2e\x32\x33\x39\x0a\x09\x63\x35\x32\ -\x2e\x32\x37\x31\x2d\x32\x31\x2e\x36\x35\x32\x2c\x39\x32\x2e\x39\ -\x38\x33\x2d\x36\x32\x2e\x33\x36\x34\x2c\x31\x31\x34\x2e\x36\x33\ -\x36\x2d\x31\x31\x34\x2e\x36\x33\x36\x43\x34\x34\x32\x2e\x37\x33\ -\x39\x2c\x32\x30\x30\x2e\x36\x2c\x34\x31\x38\x2e\x35\x33\x32\x2c\ -\x31\x30\x35\x2e\x38\x32\x36\x2c\x33\x35\x34\x2e\x32\x34\x2c\x34\ -\x37\x2e\x34\x7a\x22\x2f\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\ -\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\ -\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\ -\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\ -\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\ -\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\ -\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\x3d\ +\x6b\x22\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\ +\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ +\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\x30\ +\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\ +\x20\x64\x3d\x22\x4d\x31\x31\x2e\x33\x30\x32\x2c\x36\x2e\x37\x37\ +\x36\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2d\x30\ +\x2e\x35\x31\x35\x2d\x30\x2e\x31\x39\x37\x2d\x30\x2e\x37\x31\x2c\ +\x30\x4c\x37\x2e\x37\x38\x35\x2c\x39\x2e\x36\x34\x31\x63\x2d\x30\ +\x2e\x31\x39\x36\x2c\x30\x2e\x31\x39\x39\x2d\x30\x2e\x31\x39\x36\ +\x2c\x30\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x32\x2e\ +\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0a\x09\x63\x30\x2e\x31\x39\ +\x35\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x35\x31\x34\x2c\x30\x2e\ +\x31\x39\x38\x2c\x30\x2e\x37\x31\x2c\x30\x63\x30\x2e\x31\x39\x36\ +\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\ +\x31\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x39\x2c\x31\x30\x6c\ +\x32\x2e\x33\x30\x32\x2d\x32\x2e\x35\x30\x36\x43\x31\x31\x2e\x34\ +\x39\x38\x2c\x37\x2e\x32\x39\x36\x2c\x31\x31\x2e\x34\x39\x38\x2c\ +\x36\x2e\x39\x37\x36\x2c\x31\x31\x2e\x33\x30\x32\x2c\x36\x2e\x37\ +\x37\x36\x7a\x0a\x09\x20\x4d\x31\x30\x2c\x30\x2e\x34\x63\x2d\x35\ +\x2e\x33\x30\x32\x2c\x30\x2d\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\ +\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\ +\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\x2c\x39\x2e\x36\x2c\x39\ +\x2e\x36\x73\x39\x2e\x36\x2d\x34\x2e\x32\x39\x37\x2c\x39\x2e\x36\ +\x2d\x39\x2e\x36\x43\x31\x39\x2e\x36\x2c\x34\x2e\x36\x39\x38\x2c\ +\x31\x35\x2e\x33\x30\x32\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\ +\x34\x7a\x20\x4d\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\x0a\x09\x63\ +\x2d\x34\x2e\x36\x31\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2d\x33\ +\x2e\x37\x34\x2d\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\ +\x30\x2d\x34\x2e\x36\x31\x34\x2c\x33\x2e\x37\x33\x39\x2d\x38\x2e\ +\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\ +\x34\x2e\x36\x31\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2c\x33\x2e\ +\x37\x34\x2c\x38\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0a\x09\ +\x43\x31\x38\x2e\x33\x35\x34\x2c\x31\x34\x2e\x36\x31\x34\x2c\x31\ +\x34\x2e\x36\x31\x33\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\ +\x31\x38\x2e\x33\x35\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\ +\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x04\x54\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -337,33 +333,51 @@ qt_resource_data = b"\ \x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ \x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ \x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ -\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ -\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ -\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ -\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x70\x61\x74\ -\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\x2c\x33\x38\x36\x2e\ -\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\x6c\x31\x33\x30\x2e\ -\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2d\x31\x34\x2e\ -\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2c\x30\x2d\x35\x30\ -\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\ -\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\x39\x2c\x30\x4c\x32\ -\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\x35\x2e\x34\x2c\x37\ -\x34\x2e\x35\x0a\x09\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\x2e\x31\ -\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\x39\x2c\ -\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x31\x34\x2e\ -\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\x30\x2e\x39\x4c\x32\x30\ -\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\x2e\x35\x2c\x33\x38\x36\ -\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x31\x34\ -\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\x30\x2e\x39\x0a\x09\ -\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\ -\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\x2c\x30\x4c\x32\x35\x36\x2c\ -\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\x2e\x36\x2c\x31\x33\x30\x2e\ -\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\ -\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\x2c\x30\x43\x34\x35\x31\ -\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\x34\x35\x31\x2e\x35\x2c\x34\ -\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\x35\x2c\x33\x38\x36\x2e\x36\ -\x7a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ +\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\ +\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\x37\x36\x63\x2d\x34\x34\x2e\ +\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\x30\x30\x31\x2c\x33\x36\x2d\ +\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x30\x2c\x34\x34\x2e\x30\ +\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\x2c\x38\x30\x2c\x38\x30\x2e\ +\x30\x30\x31\x2c\x38\x30\x63\x34\x34\x2e\x30\x30\x35\x2c\x30\x2c\ +\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\x2e\x39\x39\x36\x2c\x37\x39\ +\x2e\x39\x39\x39\x2d\x38\x30\x0a\x09\x09\x09\x43\x33\x33\x35\x2e\ +\x39\x39\x39\x2c\x32\x31\x32\x2c\x33\x30\x30\x2e\x30\x30\x35\x2c\ +\x31\x37\x36\x2c\x32\x35\x36\x2c\x31\x37\x36\x7a\x20\x4d\x34\x34\ +\x36\x2e\x39\x33\x38\x2c\x32\x33\x34\x2e\x36\x36\x37\x63\x2d\x39\ +\x2e\x36\x30\x35\x2d\x38\x38\x2e\x35\x33\x31\x2d\x38\x31\x2e\x30\ +\x37\x34\x2d\x31\x36\x30\x2d\x31\x36\x39\x2e\x36\x30\x35\x2d\x31\ +\x36\x39\x2e\x35\x39\x39\x56\x33\x32\x68\x2d\x34\x32\x2e\x36\x36\ +\x36\x76\x33\x33\x2e\x30\x36\x37\x0a\x09\x09\x09\x63\x2d\x38\x38\ +\x2e\x35\x33\x31\x2c\x39\x2e\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\ +\x31\x2e\x30\x36\x38\x2d\x31\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\ +\x39\x2e\x35\x39\x39\x48\x33\x32\x76\x34\x32\x2e\x36\x36\x37\x68\ +\x33\x33\x2e\x30\x36\x32\x63\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\ +\x35\x33\x31\x2c\x38\x31\x2e\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\ +\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x36\x30\x34\x56\x34\ +\x38\x30\x68\x34\x32\x2e\x36\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\ +\x32\x0a\x09\x09\x09\x63\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\ +\x30\x34\x2c\x31\x36\x30\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\ +\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\ +\x30\x76\x2d\x34\x32\x2e\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\ +\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\ +\x2d\x38\x32\x2e\x31\x33\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\ +\x34\x2d\x36\x37\x2e\x31\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\ +\x2d\x31\x34\x39\x2e\x33\x33\x33\x0a\x09\x09\x09\x63\x30\x2d\x38\ +\x32\x2e\x31\x33\x36\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\ +\x2e\x33\x33\x33\x2c\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\ +\x2e\x33\x33\x33\x63\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\ +\x39\x2e\x33\x33\x32\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\ +\x2e\x33\x33\x32\x2c\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\ +\x2e\x33\x33\x32\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\ +\x2e\x31\x33\x35\x2c\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\ +\x2c\x34\x30\x35\x2e\x33\x33\x33\x7a\x0a\x09\x09\x09\x22\x2f\x3e\ +\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ \x00\x00\x03\xb7\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -426,268 +440,39 @@ qt_resource_data = b"\ \x30\x34\x2c\x31\x30\x2e\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\ \x38\x2e\x32\x38\x37\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ \x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x04\x22\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ -\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ -\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\ -\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\ -\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\ -\x31\x31\x2e\x31\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\ -\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\ -\x73\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ -\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\ -\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ -\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ -\x27\x36\x34\x2e\x30\x30\x30\x31\x70\x74\x27\x20\x68\x65\x69\x67\ -\x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x27\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x20\x36\x34\x2e\x30\x30\x30\x31\x20\x36\x34\x27\x3e\x0a\ -\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ -\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ -\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ -\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ -\x27\x4d\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\x4c\ -\x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ -\x4c\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\x37\ -\x38\x4c\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\x31\ -\x31\x39\x4c\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\ -\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\ -\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\ -\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ -\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\ -\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\ -\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\ -\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\ -\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\ -\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\ -\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\ -\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\ -\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\x2e\ -\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\x27\ -\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\ -\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\ -\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\ -\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\ -\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\ -\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\ -\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\x20\ -\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\x6c\ -\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\ -\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\ -\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\ -\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\ -\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\ -\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\ -\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\x27\ -\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\ -\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\ -\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ -\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ -\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ -\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ -\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\ -\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\x37\ -\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\ -\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\ -\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\ -\x3e\ -\x00\x00\x03\xd9\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ -\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\x20\ -\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ -\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ -\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ -\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ -\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ -\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ -\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ -\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ -\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ -\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\x64\x5f\x72\ -\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\ -\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\ -\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\ -\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ -\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\ -\x6e\x6b\x22\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ -\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\ -\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\ -\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\ -\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\ -\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\ -\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\ -\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\ -\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0a\x3c\x70\x61\x74\ -\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\x30\x4c\x38\x2e\x36\x39\ -\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\ -\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\x39\ -\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\x2e\x31\x39\x36\x2d\x30\ -\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\x2d\x30\x2e\x31\x39\x37\ -\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\x38\x30\x37\x2c\x32\x2e\ -\x38\x36\x34\x0a\x09\x63\x30\x2e\x31\x39\x36\x2c\x30\x2e\x31\x39\ -\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\x2e\x35\x32\x2c\x30\x2c\x30\ -\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\x30\x37\x2c\x32\x2e\x38\x36\ -\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\x30\x2e\x31\x39\x39\x2d\x30\ -\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\x38\x2d\x30\x2e\x37\x31\x2c\ -\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2d\x30\ -\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\x38\x2c\x30\x2d\x30\x2e\x37\ -\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\x20\x4d\x31\x30\x2c\x30\x2e\ -\x34\x0a\x09\x63\x35\x2e\x33\x30\x32\x2c\x30\x2c\x39\x2e\x36\x2c\ -\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\x2c\x39\x2e\x36\x63\x30\x2c\ -\x35\x2e\x33\x30\x33\x2d\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\x2d\ -\x39\x2e\x36\x2c\x39\x2e\x36\x53\x30\x2e\x34\x2c\x31\x35\x2e\x33\ -\x30\x33\x2c\x30\x2e\x34\x2c\x31\x30\x43\x30\x2e\x34\x2c\x34\x2e\ -\x36\x39\x38\x2c\x34\x2e\x36\x39\x38\x2c\x30\x2e\x34\x2c\x31\x30\ -\x2c\x30\x2e\x34\x7a\x20\x4d\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\ -\x0a\x09\x63\x34\x2e\x36\x31\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\ -\x2d\x33\x2e\x37\x34\x2c\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\ -\x34\x63\x30\x2d\x34\x2e\x36\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\ -\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\ -\x34\x63\x2d\x34\x2e\x36\x31\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\ -\x2c\x33\x2e\x37\x34\x2d\x38\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\ -\x34\x0a\x09\x43\x31\x2e\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\ -\x2c\x35\x2e\x33\x38\x35\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\ -\x2c\x31\x38\x2e\x33\x35\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\ -\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x04\xa3\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ -\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ -\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\ -\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\ -\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\ -\x31\x31\x2e\x31\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\ -\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\ -\x73\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ -\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\ -\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ -\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ -\x27\x36\x34\x2e\x30\x30\x30\x31\x70\x74\x27\x20\x68\x65\x69\x67\ -\x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x27\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x20\x36\x34\x2e\x30\x30\x30\x31\x20\x36\x34\x27\x3e\x0a\ -\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ -\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ -\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ -\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ -\x27\x4d\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\x43\ -\x20\x34\x2e\x33\x35\x34\x33\x38\x20\x32\x34\x2e\x39\x32\x38\x37\ -\x20\x38\x2e\x34\x33\x32\x31\x37\x20\x31\x38\x2e\x30\x30\x31\x34\ -\x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ -\x43\x20\x33\x31\x2e\x37\x33\x33\x39\x20\x2d\x33\x2e\x33\x31\x36\ -\x37\x35\x20\x35\x37\x2e\x32\x39\x34\x33\x20\x33\x2e\x35\x39\x37\ -\x39\x37\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\ -\x37\x38\x43\x20\x35\x38\x2e\x36\x37\x38\x38\x20\x33\x30\x2e\x38\ -\x30\x31\x39\x20\x35\x31\x2e\x31\x37\x38\x33\x20\x33\x37\x2e\x36\ -\x34\x34\x31\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\ -\x31\x31\x39\x43\x20\x32\x37\x2e\x34\x36\x34\x36\x20\x34\x39\x2e\ -\x30\x38\x31\x38\x20\x39\x2e\x32\x36\x34\x35\x31\x20\x34\x36\x2e\ -\x30\x39\x36\x34\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\ -\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ -\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ -\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ -\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ -\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ -\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\ -\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ -\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ -\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ -\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ -\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\ -\x2e\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\ -\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\ -\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ -\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\ -\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\ -\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\ -\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\ -\x20\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\ -\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\ -\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ -\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ -\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\ -\x63\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\ -\x27\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\ -\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\ -\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\ -\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\ -\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\ -\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\ -\x34\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\ -\x37\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\ -\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ -\x67\x3e\ -\x00\x00\x03\x03\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ -\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\x20\ -\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ -\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ -\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ -\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ -\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ -\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ -\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ -\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ -\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ -\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\ -\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\ -\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\ -\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ -\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\ -\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ -\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\ -\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\ -\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\ -\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\ -\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\ -\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x2e\x32\x39\ -\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\x2e\x34\x33\x35\x2c\ -\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\x30\x33\x2d\x31\x2e\ -\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\x2e\x36\x31\x2c\x31\ -\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\x35\x2d\x30\x2e\x36\ -\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\x34\x38\x36\x2c\x30\ -\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0a\x09\x63\x30\x2e\x36\x31\ -\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\x34\x38\x38\x2d\x30\x2e\ -\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\x30\x2e\x32\x37\x6c\x32\ -\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\x6c\x35\x2e\x39\x31\x31\ -\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\x30\x37\x2d\x30\x2e\x36\ -\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\x2e\x38\x35\x32\x2c\x31\ -\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\x0a\x09\x63\x30\x2e\x36\ -\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\x30\x2e\x38\x35\x34\x2c\x31\ -\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\x36\x2c\x31\x2e\x39\x32\x4c\ -\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\x33\x34\x63\x2d\x30\x2e\x32\ -\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\x30\x2e\x36\x36\x31\x2c\x30\ -\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\x2c\x30\x2e\x36\x35\x36\x43\ -\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\x39\x39\x38\x2c\x38\x2e\x33\ -\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\x2c\x38\x2e\x32\x39\x34\x2c\ -\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\ -\x3e\x0a\ -\x00\x00\x02\x72\ +\x00\x00\x01\xd8\ +\x00\ +\x00\x06\xc4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\xe3\x5f\x31\ +\xdd\x5b\x25\xf6\x0b\x62\x62\x53\xe3\xa8\xfe\x90\x65\x29\x6d\x2d\ +\x35\x75\xd5\x53\x85\x61\x0b\x28\x14\x10\x2c\x60\xe7\xd7\x77\x77\ +\xed\x54\xa9\x14\x5f\x43\x0f\x3b\xab\x9d\x79\xf3\xe6\x0d\x4f\x62\ +\x76\x77\xfc\x9d\x43\x27\xea\x26\x2b\x8b\x00\x71\xc2\x10\x88\x22\ +\x2a\xe3\xac\x48\x02\xd4\xca\x5f\x78\x82\xee\xe6\xa3\xd9\x3b\x8c\ +\x61\x23\x0a\x51\x87\xb2\xac\x7d\xf8\x18\x97\x07\x01\xdb\x3c\x6f\ +\x1b\x69\x52\xc0\x3d\xe2\x10\x6e\xc3\xd7\xfd\x06\xd6\xc7\xaa\xac\ +\x25\xec\xf2\x36\xc1\xdb\x02\x88\x49\xee\xcf\x33\x7c\xf0\x08\x63\ +\xb0\x68\xb3\x3c\x06\xf6\x1e\x00\x63\x4d\xbf\xfa\xb2\x7c\xf8\xb1\ +\x5b\x43\xd3\x25\xb0\xfb\xb6\xb8\xdf\x2e\x01\x61\x4a\xbf\xbb\x4b\ +\x4a\x57\x0f\x2b\xc3\xc0\x09\xa7\x74\xfd\x19\x01\x4a\xa5\xac\x7c\ +\x4a\xfb\xbe\x27\xbd\x4b\xca\x3a\xa1\x9b\x3a\xac\xd2\x2c\x6a\xa8\ +\x02\x52\x0d\x54\x4d\x54\x91\x71\x4e\x62\x19\x23\x35\x42\x33\xbf\ +\xd8\x93\x23\xc8\xe2\x00\xdd\x87\x27\x51\xff\x54\x0f\xf5\x19\x8a\ +\x26\x78\x85\xd9\x61\x8c\x69\xa6\x0b\xc4\x3f\xe6\x59\xf1\xf8\x1a\ +\x90\x4f\xa7\x53\x6a\xaa\x0a\x1a\x20\x56\x1d\x11\x9c\xce\xf7\xc8\ +\x82\x3e\x8b\x65\x1a\xa0\x31\x77\x74\x3e\x15\x59\x92\xca\xbf\xcf\ +\x2e\x13\xfd\xa2\xd4\x4d\xc0\x40\xe5\xf4\x41\xd0\xc8\x53\x2e\x02\ +\x24\x8a\xf0\x90\x0b\x7c\x08\xa3\xc7\xa4\x2e\xdb\x22\xf6\x0b\xd1\ +\xc3\x0b\xe4\x07\x23\xcd\x6f\xaa\x30\x52\xf0\xaa\x16\x8d\xa8\x3b\ +\xa1\x77\x4e\xe6\x23\xcb\x04\x6b\x56\x85\x32\x05\xb5\xf0\x27\xee\ +\x31\x9b\x8f\x5d\xe2\x46\xcc\x76\xc9\x2d\x76\x6d\x4f\x45\x75\xf4\ +\x9d\xe2\x31\x23\xe3\x08\xab\x82\xcd\x74\x12\xbb\xf8\x52\xee\xce\ +\x25\x66\x6a\xee\x73\x83\xbe\x53\x53\x30\x2d\x3a\x65\x1b\x46\x7d\ +\xf6\x66\xce\x93\x5a\xdf\xb2\xe8\xbf\x2a\x9c\xc9\xe4\x3f\x50\x71\ +\xc3\xbd\xa1\x54\xcc\xe8\x35\x73\x9c\x09\x7f\x13\x41\x66\xce\x55\ +\x73\x86\x57\xa1\xcd\x19\x48\xc5\x75\x73\x6e\xd8\xf4\x4d\x04\x99\ +\x39\x57\xcd\x19\x5e\x85\x36\x67\x20\x15\xc6\x9c\x4b\x50\xff\xe5\ +\xf9\xe8\x0f\x44\x1a\x94\x79\ +\x00\x00\x02\xab\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -719,26 +504,20 @@ qt_resource_data = b"\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ \x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x38\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\ -\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\x37\x2c\x32\x33\x34\x2e\x36\ -\x32\x35\x48\x31\x36\x37\x2e\x32\x39\x36\x6c\x31\x31\x39\x2e\x37\ -\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\x32\x4c\x32\x35\x36\x2c\x38\ -\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\x31\x37\x31\x2c\x31\x37\x31\ -\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\x39\x2e\x39\x32\x34\x4c\x31\ -\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\x37\x2e\x33\x37\x35\x48\x34\ -\x32\x37\x56\x32\x33\x34\x2e\x36\x32\x35\x7a\x22\x2f\x3e\x0a\x09\ -\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ -\x0a\ -\x00\x00\x00\x6c\ -\x3c\ -\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\ -\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ -\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\ -\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\ -\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\ -\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\ -\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\ -\x00\x00\x03\x2a\ +\x5f\x35\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x6f\ +\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x34\x30\ +\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\x20\x33\x37\x35\x2e\x32\x30\ +\x32\x2c\x31\x30\x37\x20\x32\x35\x36\x2c\x32\x32\x36\x2e\x32\x30\ +\x32\x20\x31\x33\x36\x2e\x37\x39\x38\x2c\x31\x30\x37\x20\x31\x30\ +\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\x20\x32\x32\x36\x2e\x32\x30\ +\x32\x2c\x32\x35\x36\x20\x31\x30\x37\x2c\x33\x37\x35\x2e\x32\x30\ +\x32\x20\x31\x33\x36\x2e\x37\x39\x38\x2c\x34\x30\x35\x20\x32\x35\ +\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\x20\x0a\x09\x09\x09\x33\x37\ +\x35\x2e\x32\x30\x32\x2c\x34\x30\x35\x20\x34\x30\x35\x2c\x33\x37\ +\x35\x2e\x32\x30\x32\x20\x32\x38\x35\x2e\x37\x39\x38\x2c\x32\x35\ +\x36\x20\x09\x09\x22\x2f\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\x1b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -769,49 +548,28 @@ qt_resource_data = b"\ \x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x6f\x6c\x79\x67\ -\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x33\x39\x36\x2e\x37\ -\x39\x35\x2c\x33\x39\x36\x2e\x38\x20\x33\x32\x30\x2c\x33\x39\x36\ -\x2e\x38\x20\x33\x32\x30\x2c\x34\x34\x38\x20\x34\x34\x38\x2c\x34\ -\x34\x38\x20\x34\x34\x38\x2c\x33\x32\x30\x20\x33\x39\x36\x2e\x37\ -\x39\x35\x2c\x33\x32\x30\x20\x09\x22\x2f\x3e\x0a\x09\x3c\x70\x6f\ -\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x33\x39\ -\x36\x2e\x38\x2c\x31\x31\x35\x2e\x32\x30\x35\x20\x33\x39\x36\x2e\ -\x38\x2c\x31\x39\x32\x20\x34\x34\x38\x2c\x31\x39\x32\x20\x34\x34\ -\x38\x2c\x36\x34\x20\x33\x32\x30\x2c\x36\x34\x20\x33\x32\x30\x2c\ -\x31\x31\x35\x2e\x32\x30\x35\x20\x09\x22\x2f\x3e\x0a\x09\x3c\x70\ -\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\ -\x31\x35\x2e\x32\x30\x35\x2c\x31\x31\x35\x2e\x32\x20\x31\x39\x32\ -\x2c\x31\x31\x35\x2e\x32\x20\x31\x39\x32\x2c\x36\x34\x20\x36\x34\ -\x2c\x36\x34\x20\x36\x34\x2c\x31\x39\x32\x20\x31\x31\x35\x2e\x32\ -\x30\x35\x2c\x31\x39\x32\x20\x09\x22\x2f\x3e\x0a\x09\x3c\x70\x6f\ -\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\ -\x35\x2e\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\x20\x31\x31\x35\x2e\ -\x32\x2c\x33\x32\x30\x20\x36\x34\x2c\x33\x32\x30\x20\x36\x34\x2c\ -\x34\x34\x38\x20\x31\x39\x32\x2c\x34\x34\x38\x20\x31\x39\x32\x2c\ -\x33\x39\x36\x2e\x37\x39\x35\x20\x09\x22\x2f\x3e\x0a\x3c\x2f\x67\ -\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x01\x1c\ -\x3c\ -\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\ -\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ -\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\ -\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\ -\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\ -\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\ -\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\ -\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\ -\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\ -\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\ -\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\ -\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\ -\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\ -\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\ -\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\ -\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\ -\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\ -\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x04\x54\ +\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ +\x64\x3d\x22\x4d\x32\x35\x36\x2c\x33\x38\x38\x63\x2d\x37\x32\x2e\ +\x35\x39\x37\x2c\x30\x2d\x31\x33\x32\x2d\x35\x39\x2e\x34\x30\x35\ +\x2d\x31\x33\x32\x2d\x31\x33\x32\x63\x30\x2d\x37\x32\x2e\x36\x30\ +\x31\x2c\x35\x39\x2e\x34\x30\x33\x2d\x31\x33\x32\x2c\x31\x33\x32\ +\x2d\x31\x33\x32\x63\x33\x36\x2e\x33\x2c\x30\x2c\x36\x39\x2e\x32\ +\x39\x39\x2c\x31\x35\x2e\x34\x2c\x39\x32\x2e\x34\x30\x36\x2c\x33\ +\x39\x2e\x36\x30\x31\x4c\x32\x37\x38\x2c\x32\x33\x34\x68\x31\x35\ +\x34\x56\x38\x30\x0a\x09\x09\x6c\x2d\x35\x31\x2e\x36\x39\x38\x2c\ +\x35\x31\x2e\x37\x30\x32\x43\x33\x34\x38\x2e\x34\x30\x36\x2c\x39\ +\x39\x2e\x37\x39\x38\x2c\x33\x30\x34\x2e\x34\x30\x36\x2c\x38\x30\ +\x2c\x32\x35\x36\x2c\x38\x30\x63\x2d\x39\x36\x2e\x37\x39\x37\x2c\ +\x30\x2d\x31\x37\x36\x2c\x37\x39\x2e\x32\x30\x33\x2d\x31\x37\x36\ +\x2c\x31\x37\x36\x73\x37\x38\x2e\x30\x39\x34\x2c\x31\x37\x36\x2c\ +\x31\x37\x36\x2c\x31\x37\x36\x0a\x09\x09\x63\x38\x31\x2e\x30\x34\ +\x35\x2c\x30\x2c\x31\x34\x38\x2e\x32\x38\x37\x2d\x35\x34\x2e\x31\ +\x33\x34\x2c\x31\x36\x39\x2e\x34\x30\x31\x2d\x31\x32\x38\x48\x33\ +\x37\x38\x2e\x38\x35\x43\x33\x36\x30\x2e\x31\x30\x35\x2c\x33\x35\ +\x33\x2e\x35\x36\x31\x2c\x33\x31\x31\x2e\x37\x31\x32\x2c\x33\x38\ +\x38\x2c\x32\x35\x36\x2c\x33\x38\x38\x7a\x22\x2f\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x77\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -838,52 +596,22 @@ qt_resource_data = b"\ \x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ \x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ \x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\ -\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\x37\x36\x63\x2d\x34\x34\x2e\ -\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\x30\x30\x31\x2c\x33\x36\x2d\ -\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x30\x2c\x34\x34\x2e\x30\ -\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\x2c\x38\x30\x2c\x38\x30\x2e\ -\x30\x30\x31\x2c\x38\x30\x63\x34\x34\x2e\x30\x30\x35\x2c\x30\x2c\ -\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\x2e\x39\x39\x36\x2c\x37\x39\ -\x2e\x39\x39\x39\x2d\x38\x30\x0a\x09\x09\x09\x43\x33\x33\x35\x2e\ -\x39\x39\x39\x2c\x32\x31\x32\x2c\x33\x30\x30\x2e\x30\x30\x35\x2c\ -\x31\x37\x36\x2c\x32\x35\x36\x2c\x31\x37\x36\x7a\x20\x4d\x34\x34\ -\x36\x2e\x39\x33\x38\x2c\x32\x33\x34\x2e\x36\x36\x37\x63\x2d\x39\ -\x2e\x36\x30\x35\x2d\x38\x38\x2e\x35\x33\x31\x2d\x38\x31\x2e\x30\ -\x37\x34\x2d\x31\x36\x30\x2d\x31\x36\x39\x2e\x36\x30\x35\x2d\x31\ -\x36\x39\x2e\x35\x39\x39\x56\x33\x32\x68\x2d\x34\x32\x2e\x36\x36\ -\x36\x76\x33\x33\x2e\x30\x36\x37\x0a\x09\x09\x09\x63\x2d\x38\x38\ -\x2e\x35\x33\x31\x2c\x39\x2e\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\ -\x31\x2e\x30\x36\x38\x2d\x31\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\ -\x39\x2e\x35\x39\x39\x48\x33\x32\x76\x34\x32\x2e\x36\x36\x37\x68\ -\x33\x33\x2e\x30\x36\x32\x63\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\ -\x35\x33\x31\x2c\x38\x31\x2e\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\ -\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x36\x30\x34\x56\x34\ -\x38\x30\x68\x34\x32\x2e\x36\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\ -\x32\x0a\x09\x09\x09\x63\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\ -\x30\x34\x2c\x31\x36\x30\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\ -\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\ -\x30\x76\x2d\x34\x32\x2e\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\ -\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\ -\x2d\x38\x32\x2e\x31\x33\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\ -\x34\x2d\x36\x37\x2e\x31\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\ -\x2d\x31\x34\x39\x2e\x33\x33\x33\x0a\x09\x09\x09\x63\x30\x2d\x38\ -\x32\x2e\x31\x33\x36\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\ -\x2e\x33\x33\x33\x2c\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\ -\x2e\x33\x33\x33\x63\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\ -\x39\x2e\x33\x33\x32\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\ -\x2e\x33\x33\x32\x2c\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\ -\x2e\x33\x33\x32\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\ -\x2e\x31\x33\x35\x2c\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\ -\x2c\x34\x30\x35\x2e\x33\x33\x33\x7a\x0a\x09\x09\x09\x22\x2f\x3e\ -\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ -\x67\x3e\x0a\ -\x00\x00\x02\x72\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ +\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ +\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ +\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x70\x6f\x6c\ +\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x32\x38\x38\ +\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\x34\x35\x2e\x39\x20\ +\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\x37\x34\x2c\x32\x30\ +\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\x33\x37\x2e\x39\x20\ +\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\x31\x36\x20\x32\x32\ +\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\x2c\x33\x36\x36\x2e\ +\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\x2e\x39\x20\x33\x36\ +\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0a\x09\x34\x31\x36\x2c\ +\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\x20\x22\x2f\x3e\x0a\x3c\ +\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x6c\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -915,17 +643,16 @@ qt_resource_data = b"\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ \x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x38\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\ -\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\x2c\x32\x37\x37\x2e\x33\x37\ -\x35\x68\x32\x35\x39\x2e\x37\x30\x34\x4c\x32\x32\x35\x2e\x30\x30\ -\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\x4c\x32\x35\x36\x2c\x34\x32\ -\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\x4c\x32\x35\x36\x2c\x38\x35\ -\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\x32\x39\x2e\x39\x32\x34\x6c\ -\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\x31\x39\x2e\x37\x30\x31\x48\ -\x38\x35\x56\x32\x37\x37\x2e\x33\x37\x35\x7a\x22\x2f\x3e\x0a\x09\ -\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ -\x0a\ -\x00\x00\x04\x13\ +\x5f\x31\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x67\x3e\ +\x0a\x09\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\ +\x6e\x74\x73\x3d\x22\x31\x38\x36\x2e\x33\x30\x31\x2c\x33\x33\x39\ +\x2e\x38\x39\x33\x20\x39\x36\x2c\x32\x34\x39\x2e\x34\x36\x31\x20\ +\x36\x34\x2c\x32\x37\x39\x2e\x39\x36\x38\x20\x31\x38\x36\x2e\x33\ +\x30\x31\x2c\x34\x30\x32\x20\x34\x34\x38\x2c\x31\x34\x30\x2e\x35\ +\x30\x36\x20\x34\x31\x36\x2c\x31\x31\x30\x20\x09\x09\x09\x22\x2f\ +\x3e\x0a\x09\x09\x3c\x2f\x67\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\ +\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x04\x22\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ \x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ @@ -952,48 +679,49 @@ qt_resource_data = b"\ \x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ \x4c\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\x37\ \x38\x4c\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\x31\ -\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ -\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ -\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ -\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ -\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ -\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\ -\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ +\x31\x39\x4c\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\ +\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\ +\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\ +\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ +\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\ +\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\ +\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\ +\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\ +\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\ +\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\ +\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\ +\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\ +\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\x2e\ +\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\x27\ +\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\ +\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\ +\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\ +\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\ +\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\ +\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\ +\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\x20\ +\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\x6c\ +\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\ +\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\ +\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\ +\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\ +\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\ +\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\ +\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\x27\ +\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\ +\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\ +\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ \x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ \x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ \x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ -\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\ -\x2e\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\ -\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\ -\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ -\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\ -\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\ -\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\ -\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\ -\x20\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\ -\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\ -\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ -\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ -\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\ -\x63\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\ -\x27\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\ -\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\ -\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\ -\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\ -\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\ -\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\ -\x34\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\ -\x37\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\ -\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ -\x67\x3e\ -\x00\x00\x03\xdc\ +\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\ +\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\x37\ +\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\ +\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\ +\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\ +\x3e\ +\x00\x00\x03\x16\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -1020,94 +748,38 @@ qt_resource_data = b"\ \x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ \x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ \x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ -\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ -\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ -\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ -\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\ -\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\ -\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\x2d\x31\x34\x35\x2e\x37\ -\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\x31\x32\x38\x63\x36\x37\ -\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\x34\x2c\x31\x32\x38\x2c\ -\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\x2e\x39\x2c\x30\x2c\x31\ -\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\x32\x32\x34\x2d\x31\x32\ -\x36\x2e\x36\x0a\x09\x09\x43\x34\x32\x38\x2e\x32\x2c\x31\x39\x38\ -\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\x31\x32\x38\x2c\x32\x35\x36\ -\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\x36\x2c\x33\x34\x37\x2e\x33\ -\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\x38\x39\x2e\x36\x2d\x34\x31\ -\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x63\x30\x2d\x35\x30\x2e\ -\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\x2e\x33\x2c\x38\x39\x2e\x36\ -\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\x36\x2c\x34\x31\x2c\x38\x39\ -\x2e\x36\x2c\x39\x31\x2e\x33\x0a\x09\x09\x43\x33\x34\x35\x2e\x36\ -\x2c\x33\x30\x36\x2e\x34\x2c\x33\x30\x35\x2e\x34\x2c\x33\x34\x37\ -\x2e\x33\x2c\x32\x35\x36\x2c\x33\x34\x37\x2e\x33\x7a\x22\x2f\x3e\ -\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\ -\x22\x4d\x32\x35\x36\x2c\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\ -\x32\x2e\x39\x2d\x31\x35\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\ -\x37\x63\x2d\x32\x2e\x35\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\ -\x2d\x37\x2e\x36\x2d\x30\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\ -\x2d\x35\x32\x2e\x33\x2c\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\ -\x35\x33\x2e\x33\x63\x30\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\ -\x2c\x35\x33\x2e\x33\x2c\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0a\ -\x09\x09\x09\x73\x35\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\ -\x2e\x33\x2d\x35\x33\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\ -\x32\x2d\x34\x2e\x36\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\ -\x2e\x35\x2c\x34\x2e\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\ -\x31\x39\x2e\x38\x2c\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\ -\x35\x36\x2c\x32\x35\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\ -\x2c\x32\x32\x34\x7a\x22\x2f\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\ -\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x02\x97\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ -\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\x20\ -\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ -\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ -\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ -\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ -\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ -\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ -\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ -\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ -\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x53\ -\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ -\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\ -\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\ -\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x79\x3d\x22\ -\x35\x31\x32\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\x78\ -\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\ -\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ -\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\ -\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\ -\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\ -\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\ -\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0a\x3c\ -\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x35\x2e\x31\x37\x33\x2c\ -\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\x2e\ -\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\x2c\x31\x2e\x31\x2c\x30\ -\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\x68\x31\x32\x63\x31\x2e\ -\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\x39\x2c\x32\x2d\x32\x56\ -\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\x37\x33\x2c\x32\x7a\x20\ -\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\x35\x34\x39\x2d\x30\x2e\ -\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\x0a\x09\x43\x36\x2e\x34\ -\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\x34\x39\x2c\x36\x2c\x38\x56\ -\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\x33\x2c\x34\x68\x2d\x32\x76\ -\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x02\xe7\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x63\x69\x72\x63\x6c\ +\x65\x20\x63\x78\x3d\x22\x32\x35\x36\x22\x20\x63\x79\x3d\x22\x32\ +\x38\x30\x22\x20\x72\x3d\x22\x36\x33\x22\x2f\x3e\x0a\x09\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x34\x30\x2c\x39\x36\x68\x2d\ +\x38\x38\x6c\x2d\x33\x32\x2d\x33\x32\x48\x31\x39\x32\x6c\x2d\x33\ +\x32\x2c\x33\x32\x48\x37\x32\x63\x2d\x32\x32\x2e\x30\x39\x32\x2c\ +\x30\x2d\x34\x30\x2c\x31\x37\x2e\x39\x30\x38\x2d\x34\x30\x2c\x34\ +\x30\x76\x32\x37\x32\x63\x30\x2c\x32\x32\x2e\x30\x39\x32\x2c\x31\ +\x37\x2e\x39\x30\x38\x2c\x34\x30\x2c\x34\x30\x2c\x34\x30\x68\x33\ +\x36\x38\x63\x32\x32\x2e\x30\x39\x32\x2c\x30\x2c\x34\x30\x2d\x31\ +\x37\x2e\x39\x30\x38\x2c\x34\x30\x2d\x34\x30\x0a\x09\x09\x56\x31\ +\x33\x36\x43\x34\x38\x30\x2c\x31\x31\x33\x2e\x39\x30\x38\x2c\x34\ +\x36\x32\x2e\x30\x39\x32\x2c\x39\x36\x2c\x34\x34\x30\x2c\x39\x36\ +\x7a\x20\x4d\x32\x35\x36\x2c\x33\x39\x32\x63\x2d\x36\x31\x2e\x38\ +\x35\x35\x2c\x30\x2d\x31\x31\x32\x2d\x35\x30\x2e\x31\x34\x35\x2d\ +\x31\x31\x32\x2d\x31\x31\x32\x73\x35\x30\x2e\x31\x34\x35\x2d\x31\ +\x31\x32\x2c\x31\x31\x32\x2d\x31\x31\x32\x73\x31\x31\x32\x2c\x35\ +\x30\x2e\x31\x34\x35\x2c\x31\x31\x32\x2c\x31\x31\x32\x0a\x09\x09\ +\x53\x33\x31\x37\x2e\x38\x35\x35\x2c\x33\x39\x32\x2c\x32\x35\x36\ +\x2c\x33\x39\x32\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\ +\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\xc1\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ \x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ \x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\x20\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ \x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ \x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ \x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ @@ -1118,39 +790,37 @@ qt_resource_data = b"\ \x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ \x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ \x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ -\x69\x72\x63\x6c\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\ -\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\ -\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\ -\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\ -\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\ -\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x79\ -\x3d\x22\x35\x31\x32\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\ -\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\ -\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\ -\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ -\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ -\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\ -\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\ -\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\ -\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x30\x2c\x30\x2e\ -\x34\x43\x34\x2e\x36\x39\x38\x2c\x30\x2e\x34\x2c\x30\x2e\x34\x2c\ -\x34\x2e\x36\x39\x38\x2c\x30\x2e\x34\x2c\x31\x30\x43\x30\x2e\x34\ -\x2c\x31\x35\x2e\x33\x30\x32\x2c\x34\x2e\x36\x39\x38\x2c\x31\x39\ -\x2e\x36\x2c\x31\x30\x2c\x31\x39\x2e\x36\x63\x35\x2e\x33\x30\x31\ -\x2c\x30\x2c\x39\x2e\x36\x2d\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\ -\x2d\x39\x2e\x36\x30\x31\x0a\x09\x43\x31\x39\x2e\x36\x2c\x34\x2e\ -\x36\x39\x38\x2c\x31\x35\x2e\x33\x30\x31\x2c\x30\x2e\x34\x2c\x31\ -\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\x30\x2c\x31\x37\x2e\x35\x39\ -\x39\x63\x2d\x34\x2e\x31\x39\x37\x2c\x30\x2d\x37\x2e\x36\x2d\x33\ -\x2e\x34\x30\x32\x2d\x37\x2e\x36\x2d\x37\x2e\x36\x53\x35\x2e\x38\ -\x30\x32\x2c\x32\x2e\x34\x2c\x31\x30\x2c\x32\x2e\x34\x63\x34\x2e\ -\x31\x39\x37\x2c\x30\x2c\x37\x2e\x36\x30\x31\x2c\x33\x2e\x34\x30\ -\x32\x2c\x37\x2e\x36\x30\x31\x2c\x37\x2e\x36\x0a\x09\x53\x31\x34\ -\x2e\x31\x39\x37\x2c\x31\x37\x2e\x35\x39\x39\x2c\x31\x30\x2c\x31\ -\x37\x2e\x35\x39\x39\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\x16\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ +\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ +\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ +\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ +\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ +\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ +\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ +\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ +\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ +\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ +\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ +\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x70\x6f\x6c\ +\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x34\x38\x30\ +\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\x30\x20\x33\x38\x34\ +\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\x36\x20\x32\x37\x36\ +\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\x38\x20\x32\x35\x36\ +\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\ +\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\ +\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\x20\x33\x32\x2c\x32\ +\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\x0a\x09\x31\x32\x38\ +\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\x37\x36\x20\x32\x33\x36\ +\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\x38\x34\x20\x32\x35\x36\ +\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\x38\x34\x20\x32\x37\x35\ +\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\x2e\x34\x2c\x32\x37\x35\ +\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\x2e\x38\x20\x33\x38\x34\ +\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\ +\x00\x00\x02\xf0\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -1181,28 +851,25 @@ qt_resource_data = b"\ \x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x63\x69\x72\x63\x6c\ -\x65\x20\x63\x78\x3d\x22\x32\x35\x36\x22\x20\x63\x79\x3d\x22\x32\ -\x38\x30\x22\x20\x72\x3d\x22\x36\x33\x22\x2f\x3e\x0a\x09\x3c\x70\ -\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x34\x30\x2c\x39\x36\x68\x2d\ -\x38\x38\x6c\x2d\x33\x32\x2d\x33\x32\x48\x31\x39\x32\x6c\x2d\x33\ -\x32\x2c\x33\x32\x48\x37\x32\x63\x2d\x32\x32\x2e\x30\x39\x32\x2c\ -\x30\x2d\x34\x30\x2c\x31\x37\x2e\x39\x30\x38\x2d\x34\x30\x2c\x34\ -\x30\x76\x32\x37\x32\x63\x30\x2c\x32\x32\x2e\x30\x39\x32\x2c\x31\ -\x37\x2e\x39\x30\x38\x2c\x34\x30\x2c\x34\x30\x2c\x34\x30\x68\x33\ -\x36\x38\x63\x32\x32\x2e\x30\x39\x32\x2c\x30\x2c\x34\x30\x2d\x31\ -\x37\x2e\x39\x30\x38\x2c\x34\x30\x2d\x34\x30\x0a\x09\x09\x56\x31\ -\x33\x36\x43\x34\x38\x30\x2c\x31\x31\x33\x2e\x39\x30\x38\x2c\x34\ -\x36\x32\x2e\x30\x39\x32\x2c\x39\x36\x2c\x34\x34\x30\x2c\x39\x36\ -\x7a\x20\x4d\x32\x35\x36\x2c\x33\x39\x32\x63\x2d\x36\x31\x2e\x38\ -\x35\x35\x2c\x30\x2d\x31\x31\x32\x2d\x35\x30\x2e\x31\x34\x35\x2d\ -\x31\x31\x32\x2d\x31\x31\x32\x73\x35\x30\x2e\x31\x34\x35\x2d\x31\ -\x31\x32\x2c\x31\x31\x32\x2d\x31\x31\x32\x73\x31\x31\x32\x2c\x35\ -\x30\x2e\x31\x34\x35\x2c\x31\x31\x32\x2c\x31\x31\x32\x0a\x09\x09\ -\x53\x33\x31\x37\x2e\x38\x35\x35\x2c\x33\x39\x32\x2c\x32\x35\x36\ -\x2c\x33\x39\x32\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\ -\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\x3f\ +\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ +\x5f\x32\x30\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x34\x38\x43\x31\ +\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x34\x38\x2c\x31\x34\x31\ +\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\x35\x36\x73\x39\x33\x2e\x36\ +\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\x38\x2c\x32\x30\x38\x73\x32\ +\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2d\x32\x30\ +\x38\x53\x33\x37\x30\x2e\x33\x39\x39\x2c\x34\x38\x2c\x32\x35\x36\ +\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\ +\x39\x0a\x09\x09\x09\x63\x2d\x39\x31\x2e\x35\x31\x38\x2c\x30\x2d\ +\x31\x36\x36\x2e\x33\x39\x39\x2d\x37\x34\x2e\x38\x38\x32\x2d\x31\ +\x36\x36\x2e\x33\x39\x39\x2d\x31\x36\x36\x2e\x33\x39\x39\x53\x31\ +\x36\x34\x2e\x34\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\x35\x36\x2c\ +\x38\x39\x2e\x36\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\x34\x2e\x34\ +\x38\x32\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\x33\x34\x37\ +\x2e\x35\x31\x38\x2c\x34\x32\x32\x2e\x33\x39\x39\x2c\x32\x35\x36\ +\x2c\x34\x32\x32\x2e\x33\x39\x39\x7a\x22\x2f\x3e\x0a\x09\x3c\x2f\ +\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\x2a\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -1233,100 +900,176 @@ qt_resource_data = b"\ \x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x32\x31\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\ -\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\x35\x32\x63\ -\x2d\x35\x37\x2e\x32\x2c\x30\x2d\x31\x30\x34\x2c\x34\x36\x2e\x38\ -\x2d\x31\x30\x34\x2c\x31\x30\x34\x73\x34\x36\x2e\x38\x2c\x31\x30\ -\x34\x2c\x31\x30\x34\x2c\x31\x30\x34\x73\x31\x30\x34\x2d\x34\x36\ -\x2e\x38\x2c\x31\x30\x34\x2d\x31\x30\x34\x53\x33\x31\x33\x2e\x32\ -\x2c\x31\x35\x32\x2c\x32\x35\x36\x2c\x31\x35\x32\x7a\x20\x4d\x32\ -\x35\x36\x2c\x34\x38\x0a\x09\x09\x09\x43\x31\x34\x31\x2e\x36\x30\ -\x31\x2c\x34\x38\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\ -\x34\x38\x2c\x32\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\ -\x38\x2c\x32\x30\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\ -\x2e\x36\x30\x31\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\ -\x2e\x33\x39\x39\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\ -\x4d\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\x0a\x09\x09\x09\x63\x2d\ -\x39\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x34\x2d\x37\ -\x34\x2e\x38\x38\x33\x2d\x31\x36\x36\x2e\x34\x2d\x31\x36\x36\x2e\ -\x34\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\ -\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\ -\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\ -\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\ -\x36\x2c\x34\x32\x32\x2e\x34\x7a\x22\x2f\x3e\x0a\x09\x3c\x2f\x67\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x04\x42\ +\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x6f\x6c\x79\x67\ +\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x33\x39\x36\x2e\x37\ +\x39\x35\x2c\x33\x39\x36\x2e\x38\x20\x33\x32\x30\x2c\x33\x39\x36\ +\x2e\x38\x20\x33\x32\x30\x2c\x34\x34\x38\x20\x34\x34\x38\x2c\x34\ +\x34\x38\x20\x34\x34\x38\x2c\x33\x32\x30\x20\x33\x39\x36\x2e\x37\ +\x39\x35\x2c\x33\x32\x30\x20\x09\x22\x2f\x3e\x0a\x09\x3c\x70\x6f\ +\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x33\x39\ +\x36\x2e\x38\x2c\x31\x31\x35\x2e\x32\x30\x35\x20\x33\x39\x36\x2e\ +\x38\x2c\x31\x39\x32\x20\x34\x34\x38\x2c\x31\x39\x32\x20\x34\x34\ +\x38\x2c\x36\x34\x20\x33\x32\x30\x2c\x36\x34\x20\x33\x32\x30\x2c\ +\x31\x31\x35\x2e\x32\x30\x35\x20\x09\x22\x2f\x3e\x0a\x09\x3c\x70\ +\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\ +\x31\x35\x2e\x32\x30\x35\x2c\x31\x31\x35\x2e\x32\x20\x31\x39\x32\ +\x2c\x31\x31\x35\x2e\x32\x20\x31\x39\x32\x2c\x36\x34\x20\x36\x34\ +\x2c\x36\x34\x20\x36\x34\x2c\x31\x39\x32\x20\x31\x31\x35\x2e\x32\ +\x30\x35\x2c\x31\x39\x32\x20\x09\x22\x2f\x3e\x0a\x09\x3c\x70\x6f\ +\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x31\ +\x35\x2e\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\x20\x31\x31\x35\x2e\ +\x32\x2c\x33\x32\x30\x20\x36\x34\x2c\x33\x32\x30\x20\x36\x34\x2c\ +\x34\x34\x38\x20\x31\x39\x32\x2c\x34\x34\x38\x20\x31\x39\x32\x2c\ +\x33\x39\x36\x2e\x37\x39\x35\x20\x09\x22\x2f\x3e\x0a\x3c\x2f\x67\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x05\x9c\ \x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x69\x73\x6f\ -\x2d\x38\x38\x35\x39\x2d\x31\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\ -\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\ -\x20\x49\x6c\x6c\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x39\x2e\ -\x30\x2e\x30\x2c\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\ -\x50\x6c\x75\x67\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\ -\x72\x73\x69\x6f\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\ -\x64\x20\x30\x29\x20\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\ -\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\ -\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\ -\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\ -\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\ -\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\ -\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\ -\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\ -\x79\x3d\x22\x30\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x22\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\x20\x34\ -\x32\x33\x2e\x37\x35\x34\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x65\ -\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ -\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\ -\x20\x34\x32\x33\x2e\x37\x35\x34\x3b\x22\x20\x78\x6d\x6c\x3a\x73\ -\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\ -\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x30\x37\x2e\x35\ -\x31\x36\x2c\x31\x32\x33\x2e\x32\x33\x39\x6c\x2d\x32\x37\x2e\x37\ -\x31\x37\x2c\x31\x31\x2e\x34\x38\x63\x31\x38\x2e\x35\x38\x35\x2c\ -\x34\x34\x2e\x38\x36\x39\x2c\x31\x38\x2e\x35\x38\x35\x2c\x39\x34\ -\x2e\x32\x39\x31\x2c\x30\x2c\x31\x33\x39\x2e\x31\x35\x39\x63\x2d\ -\x31\x38\x2e\x35\x38\x35\x2c\x34\x34\x2e\x38\x36\x39\x2d\x35\x33\ -\x2e\x35\x33\x31\x2c\x37\x39\x2e\x38\x31\x35\x2d\x39\x38\x2e\x34\ -\x2c\x39\x38\x2e\x34\x0a\x09\x63\x2d\x32\x32\x2e\x34\x33\x38\x2c\ -\x39\x2e\x32\x39\x33\x2d\x34\x36\x2e\x30\x30\x34\x2c\x31\x33\x2e\ -\x39\x34\x2d\x36\x39\x2e\x35\x37\x39\x2c\x31\x33\x2e\x39\x33\x39\ -\x63\x2d\x32\x33\x2e\x35\x36\x39\x2d\x30\x2e\x30\x30\x31\x2d\x34\ -\x37\x2e\x31\x34\x37\x2d\x34\x2e\x36\x34\x37\x2d\x36\x39\x2e\x35\ -\x37\x39\x2d\x31\x33\x2e\x39\x33\x39\x63\x2d\x34\x34\x2e\x38\x36\ -\x39\x2d\x31\x38\x2e\x35\x38\x35\x2d\x37\x39\x2e\x38\x31\x35\x2d\ -\x35\x33\x2e\x35\x33\x31\x2d\x39\x38\x2e\x34\x2d\x39\x38\x2e\x34\ -\x0a\x09\x43\x31\x33\x2e\x35\x30\x37\x2c\x32\x30\x30\x2e\x36\x34\ -\x37\x2c\x33\x34\x2e\x37\x35\x38\x2c\x31\x31\x38\x2e\x37\x31\x2c\ -\x39\x30\x2e\x37\x35\x38\x2c\x36\x38\x2e\x36\x34\x34\x6c\x36\x30\ -\x2e\x38\x30\x31\x2c\x36\x30\x2e\x38\x30\x31\x56\x37\x2e\x35\x32\ -\x31\x48\x32\x39\x2e\x36\x33\x35\x4c\x36\x39\x2e\x35\x31\x34\x2c\ -\x34\x37\x2e\x34\x43\x35\x2e\x32\x32\x32\x2c\x31\x30\x35\x2e\x38\ -\x32\x36\x2d\x31\x38\x2e\x39\x38\x35\x2c\x32\x30\x30\x2e\x36\x2c\ -\x31\x36\x2e\x31\x32\x33\x2c\x32\x38\x35\x2e\x33\x35\x39\x0a\x09\ -\x63\x32\x31\x2e\x36\x35\x32\x2c\x35\x32\x2e\x32\x37\x32\x2c\x36\ -\x32\x2e\x33\x36\x34\x2c\x39\x32\x2e\x39\x38\x34\x2c\x31\x31\x34\ -\x2e\x36\x33\x36\x2c\x31\x31\x34\x2e\x36\x33\x36\x63\x32\x36\x2e\ -\x31\x33\x37\x2c\x31\x30\x2e\x38\x32\x36\x2c\x35\x33\x2e\x35\x39\ -\x39\x2c\x31\x36\x2e\x32\x33\x39\x2c\x38\x31\x2e\x30\x36\x31\x2c\ -\x31\x36\x2e\x32\x33\x39\x73\x35\x34\x2e\x39\x32\x34\x2d\x35\x2e\ -\x34\x31\x33\x2c\x38\x31\x2e\x30\x36\x2d\x31\x36\x2e\x32\x33\x39\ -\x0a\x09\x63\x35\x32\x2e\x32\x37\x32\x2d\x32\x31\x2e\x36\x35\x32\ -\x2c\x39\x32\x2e\x39\x38\x34\x2d\x36\x32\x2e\x33\x36\x34\x2c\x31\ -\x31\x34\x2e\x36\x33\x37\x2d\x31\x31\x34\x2e\x36\x33\x36\x43\x34\ -\x32\x39\x2e\x31\x36\x37\x2c\x32\x33\x33\x2e\x30\x38\x37\x2c\x34\ -\x32\x39\x2e\x31\x36\x37\x2c\x31\x37\x35\x2e\x35\x31\x31\x2c\x34\ -\x30\x37\x2e\x35\x31\x36\x2c\x31\x32\x33\x2e\x32\x33\x39\x7a\x22\ -\x2f\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\ -\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\ -\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\ -\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\ -\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\ -\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\ -\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ -\x0a\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ +\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ +\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\ +\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\ +\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\ +\x31\x31\x2e\x31\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\ +\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\ +\x73\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ +\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\ +\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ +\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ +\x27\x36\x33\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\ +\x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ +\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x34\x27\x3e\x0a\ +\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ +\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\x34\x30\x39\x34\x20\x31\ +\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ +\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ +\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x32\x34\x2e\x35\x32\ +\x39\x31\x43\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x32\x30\x2e\x33\ +\x33\x36\x38\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x31\x36\x2e\x39\ +\x33\x38\x33\x20\x33\x32\x2e\x31\x32\x20\x31\x36\x2e\x39\x33\x38\ +\x33\x43\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x31\x36\x2e\x39\x33\ +\x38\x33\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x32\x30\x2e\x33\x33\ +\x36\x38\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x32\x34\x2e\x35\x32\ +\x39\x31\x43\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x32\x38\x2e\x37\ +\x32\x31\x35\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x33\x32\x2e\x31\ +\x32\x20\x33\x32\x2e\x31\x32\x20\x33\x32\x2e\x31\x32\x43\x20\x34\ +\x34\x2e\x36\x39\x36\x39\x20\x33\x32\x2e\x31\x32\x20\x35\x34\x2e\ +\x38\x39\x32\x36\x20\x32\x38\x2e\x37\x32\x31\x35\x20\x35\x34\x2e\ +\x38\x39\x32\x36\x20\x32\x34\x2e\x35\x32\x39\x31\x5a\x27\x20\x66\ +\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\ +\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\ +\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ +\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\ +\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\ +\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ +\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\ +\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ +\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\ +\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\ +\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x39\x2e\x33\x34\x37\x34\x32\ +\x20\x32\x34\x2e\x35\x32\x39\x31\x4c\x20\x39\x2e\x33\x34\x37\x34\ +\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x4c\x20\x39\x2e\x33\x34\x37\ +\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x43\x20\x39\x2e\x33\x34\ +\x37\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x39\x2e\x33\x34\ +\x37\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x39\x2e\x33\x34\ +\x37\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x43\x20\x39\x2e\x33\ +\x34\x37\x34\x32\x20\x35\x39\x2e\x30\x38\x34\x39\x20\x31\x39\x2e\ +\x35\x34\x33\x31\x20\x36\x32\x2e\x34\x38\x33\x34\x20\x33\x32\x2e\ +\x31\x32\x20\x36\x32\x2e\x34\x38\x33\x34\x43\x20\x34\x34\x2e\x36\ +\x39\x36\x39\x20\x36\x32\x2e\x34\x38\x33\x34\x20\x35\x34\x2e\x38\ +\x39\x32\x36\x20\x35\x39\x2e\x30\x38\x34\x39\x20\x35\x34\x2e\x38\ +\x39\x32\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x4c\x20\x35\x34\x2e\ +\x38\x39\x32\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x4c\x20\x35\x34\ +\x2e\x38\x39\x32\x36\x20\x32\x34\x2e\x35\x32\x39\x31\x27\x20\x66\ +\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\ +\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\ +\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ +\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\ +\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\ +\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ +\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\ +\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ +\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\ +\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\ +\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\x36\ +\x20\x32\x34\x2e\x35\x32\x39\x31\x43\x20\x35\x34\x2e\x38\x39\x32\ +\x36\x20\x31\x31\x2e\x39\x35\x32\x32\x20\x34\x34\x2e\x36\x39\x36\ +\x39\x20\x31\x2e\x37\x35\x36\x35\x36\x20\x33\x32\x2e\x31\x32\x20\ +\x31\x2e\x37\x35\x36\x35\x36\x43\x20\x31\x39\x2e\x35\x34\x33\x31\ +\x20\x31\x2e\x37\x35\x36\x35\x36\x20\x39\x2e\x33\x34\x37\x34\x32\ +\x20\x31\x31\x2e\x39\x35\x32\x32\x20\x39\x2e\x33\x34\x37\x34\x32\ +\x20\x32\x34\x2e\x35\x32\x39\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\ +\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\ +\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ +\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\ +\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\ +\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\ +\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\ +\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\ +\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\ +\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x00\x00\x03\x5a\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ +\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ +\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\ +\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\ +\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\ +\x31\x31\x2e\x31\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\ +\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\ +\x73\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ +\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\ +\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ +\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ +\x27\x36\x33\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\ +\x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ +\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x34\x27\x3e\x0a\ +\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ +\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\x34\x30\x39\x34\x20\x31\ +\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ +\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ +\x27\x4d\x20\x32\x2e\x30\x30\x37\x35\x20\x36\x32\x2e\x32\x33\x32\ +\x35\x4c\x20\x36\x32\x2e\x32\x33\x32\x35\x20\x36\x32\x2e\x32\x33\ +\x32\x35\x4c\x20\x36\x32\x2e\x32\x33\x32\x35\x20\x32\x2e\x30\x30\ +\x37\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x32\x2e\x30\x30\x37\ +\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x36\x32\x2e\x32\x33\x32\ +\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ +\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ +\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ +\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ +\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\ +\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\ +\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\ +\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\ +\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\ +\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x34\x37\x2e\x31\ +\x37\x36\x32\x20\x33\x32\x2e\x31\x32\x43\x20\x34\x37\x2e\x31\x37\ +\x36\x32\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x34\x30\x2e\x34\x33\ +\x35\x33\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x33\x32\x2e\x31\x32\ +\x20\x31\x37\x2e\x30\x36\x33\x37\x43\x20\x32\x33\x2e\x38\x30\x34\ +\x37\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x31\x37\x2e\x30\x36\x33\ +\x37\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x31\x37\x2e\x30\x36\x33\ +\x37\x20\x33\x32\x2e\x31\x32\x43\x20\x31\x37\x2e\x30\x36\x33\x37\ +\x20\x34\x30\x2e\x34\x33\x35\x33\x20\x32\x33\x2e\x38\x30\x34\x37\ +\x20\x34\x37\x2e\x31\x37\x36\x32\x20\x33\x32\x2e\x31\x32\x20\x34\ +\x37\x2e\x31\x37\x36\x32\x43\x20\x34\x30\x2e\x34\x33\x35\x33\x20\ +\x34\x37\x2e\x31\x37\x36\x32\x20\x34\x37\x2e\x31\x37\x36\x32\x20\ +\x34\x30\x2e\x34\x33\x35\x33\x20\x34\x37\x2e\x31\x37\x36\x32\x20\ +\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\ +\x30\x30\x30\x30\x30\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ \x00\x00\x07\x6b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -1448,90 +1191,6 @@ qt_resource_data = b"\ \x32\x37\x34\x2c\x33\x38\x32\x2e\x38\x32\x2c\x33\x30\x37\x2e\x38\ \x36\x37\x2c\x33\x38\x32\x2e\x38\x32\x7a\x22\x2f\x3e\x0a\x3c\x2f\ \x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x05\x16\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ -\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ -\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ -\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ -\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ -\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ -\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ -\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ -\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ -\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ -\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ -\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ -\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ -\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ -\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ -\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ -\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ -\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ -\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ -\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x31\x32\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\ -\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x36\x34\x43\x31\ -\x35\x30\x2e\x34\x30\x31\x2c\x36\x34\x2c\x36\x34\x2c\x31\x35\x30\ -\x2e\x34\x30\x31\x2c\x36\x34\x2c\x32\x35\x36\x63\x30\x2c\x31\x30\ -\x35\x2e\x36\x30\x34\x2c\x38\x36\x2e\x34\x30\x31\x2c\x31\x39\x32\ -\x2c\x31\x39\x32\x2c\x31\x39\x32\x63\x31\x38\x2e\x31\x33\x36\x2c\ -\x30\x2c\x33\x32\x2d\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2d\x33\ -\x32\x0a\x09\x09\x09\x63\x30\x2d\x38\x2e\x35\x33\x31\x2d\x33\x2e\ -\x31\x39\x38\x2d\x31\x36\x2d\x38\x2e\x35\x33\x31\x2d\x32\x31\x2e\ -\x33\x33\x33\x63\x2d\x35\x2e\x33\x33\x33\x2d\x35\x2e\x33\x33\x34\ -\x2d\x38\x2e\x35\x33\x31\x2d\x31\x32\x2e\x38\x30\x33\x2d\x38\x2e\ -\x35\x33\x31\x2d\x32\x31\x2e\x33\x33\x34\x63\x30\x2d\x31\x38\x2e\ -\x31\x33\x35\x2c\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\ -\x2d\x33\x32\x68\x33\x38\x2e\x33\x39\x36\x0a\x09\x09\x09\x63\x35\ -\x38\x2e\x36\x36\x37\x2c\x30\x2c\x31\x30\x36\x2e\x36\x36\x37\x2d\ -\x34\x38\x2c\x31\x30\x36\x2e\x36\x36\x37\x2d\x31\x30\x36\x2e\x36\ -\x36\x36\x43\x34\x34\x38\x2c\x31\x34\x30\x2e\x38\x30\x32\x2c\x33\ -\x36\x31\x2e\x36\x30\x34\x2c\x36\x34\x2c\x32\x35\x36\x2c\x36\x34\ -\x7a\x20\x4d\x31\x33\x38\x2e\x36\x36\x37\x2c\x32\x35\x36\x63\x2d\ -\x31\x38\x2e\x31\x33\x36\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\ -\x36\x34\x2d\x33\x32\x2d\x33\x32\x73\x31\x33\x2e\x38\x36\x34\x2d\ -\x33\x32\x2c\x33\x32\x2d\x33\x32\x0a\x09\x09\x09\x63\x31\x38\x2e\ -\x31\x33\x35\x2c\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\ -\x33\x32\x2c\x33\x32\x53\x31\x35\x36\x2e\x38\x30\x32\x2c\x32\x35\ -\x36\x2c\x31\x33\x38\x2e\x36\x36\x37\x2c\x32\x35\x36\x7a\x20\x4d\ -\x32\x30\x32\x2e\x36\x36\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x63\ -\x2d\x31\x38\x2e\x31\x33\x36\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\ -\x38\x36\x35\x2d\x33\x32\x2d\x33\x32\x63\x30\x2d\x31\x38\x2e\x31\ -\x33\x36\x2c\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\ -\x33\x32\x0a\x09\x09\x09\x63\x31\x38\x2e\x31\x33\x35\x2c\x30\x2c\ -\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x43\ -\x32\x33\x34\x2e\x36\x36\x37\x2c\x31\x35\x36\x2e\x38\x30\x32\x2c\ -\x32\x32\x30\x2e\x38\x30\x32\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\ -\x32\x30\x32\x2e\x36\x36\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x7a\ -\x20\x4d\x33\x30\x39\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\ -\x37\x63\x2d\x31\x38\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\x2d\x31\ -\x33\x2e\x38\x36\x35\x2d\x33\x32\x2d\x33\x32\x0a\x09\x09\x09\x63\ -\x30\x2d\x31\x38\x2e\x31\x33\x36\x2c\x31\x33\x2e\x38\x36\x35\x2d\ -\x33\x32\x2c\x33\x32\x2d\x33\x32\x63\x31\x38\x2e\x31\x33\x36\x2c\ -\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\ -\x32\x43\x33\x34\x31\x2e\x33\x33\x33\x2c\x31\x35\x36\x2e\x38\x30\ -\x32\x2c\x33\x32\x37\x2e\x34\x36\x39\x2c\x31\x37\x30\x2e\x36\x36\ -\x37\x2c\x33\x30\x39\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\ -\x37\x7a\x20\x4d\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x0a\ -\x09\x09\x09\x63\x2d\x31\x38\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\ -\x2d\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2d\x33\x32\x73\x31\x33\ -\x2e\x38\x36\x35\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x63\x31\x38\ -\x2e\x31\x33\x36\x2c\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\ -\x2c\x33\x32\x2c\x33\x32\x53\x33\x39\x31\x2e\x34\x36\x39\x2c\x32\ -\x35\x36\x2c\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x7a\x22\ -\x2f\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\ -\x73\x76\x67\x3e\x0a\ \x00\x00\x05\xbb\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -1626,7 +1285,7 @@ qt_resource_data = b"\ \x32\x2c\x34\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\ \x2c\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\ \x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x02\xab\ +\x00\x00\x02\x72\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -1658,26 +1317,23 @@ qt_resource_data = b"\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ \x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x35\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x6f\ -\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x34\x30\ -\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\x20\x33\x37\x35\x2e\x32\x30\ -\x32\x2c\x31\x30\x37\x20\x32\x35\x36\x2c\x32\x32\x36\x2e\x32\x30\ -\x32\x20\x31\x33\x36\x2e\x37\x39\x38\x2c\x31\x30\x37\x20\x31\x30\ -\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\x20\x32\x32\x36\x2e\x32\x30\ -\x32\x2c\x32\x35\x36\x20\x31\x30\x37\x2c\x33\x37\x35\x2e\x32\x30\ -\x32\x20\x31\x33\x36\x2e\x37\x39\x38\x2c\x34\x30\x35\x20\x32\x35\ -\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\x20\x0a\x09\x09\x09\x33\x37\ -\x35\x2e\x32\x30\x32\x2c\x34\x30\x35\x20\x34\x30\x35\x2c\x33\x37\ -\x35\x2e\x32\x30\x32\x20\x32\x38\x35\x2e\x37\x39\x38\x2c\x32\x35\ -\x36\x20\x09\x09\x22\x2f\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\x1b\ +\x5f\x38\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\x37\x2c\x32\x33\x34\x2e\x36\ +\x32\x35\x48\x31\x36\x37\x2e\x32\x39\x36\x6c\x31\x31\x39\x2e\x37\ +\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\x32\x4c\x32\x35\x36\x2c\x38\ +\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\x31\x37\x31\x2c\x31\x37\x31\ +\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\x39\x2e\x39\x32\x34\x4c\x31\ +\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\x37\x2e\x33\x37\x35\x48\x34\ +\x32\x37\x56\x32\x33\x34\x2e\x36\x32\x35\x7a\x22\x2f\x3e\x0a\x09\ +\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x04\x9c\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ \x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ \x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\x20\ \x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ \x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ \x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ @@ -1688,67 +1344,66 @@ qt_resource_data = b"\ \x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ \x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ \x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ -\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ -\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ -\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ -\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ -\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ -\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ -\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ -\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ -\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ -\x64\x3d\x22\x4d\x32\x35\x36\x2c\x33\x38\x38\x63\x2d\x37\x32\x2e\ -\x35\x39\x37\x2c\x30\x2d\x31\x33\x32\x2d\x35\x39\x2e\x34\x30\x35\ -\x2d\x31\x33\x32\x2d\x31\x33\x32\x63\x30\x2d\x37\x32\x2e\x36\x30\ -\x31\x2c\x35\x39\x2e\x34\x30\x33\x2d\x31\x33\x32\x2c\x31\x33\x32\ -\x2d\x31\x33\x32\x63\x33\x36\x2e\x33\x2c\x30\x2c\x36\x39\x2e\x32\ -\x39\x39\x2c\x31\x35\x2e\x34\x2c\x39\x32\x2e\x34\x30\x36\x2c\x33\ -\x39\x2e\x36\x30\x31\x4c\x32\x37\x38\x2c\x32\x33\x34\x68\x31\x35\ -\x34\x56\x38\x30\x0a\x09\x09\x6c\x2d\x35\x31\x2e\x36\x39\x38\x2c\ -\x35\x31\x2e\x37\x30\x32\x43\x33\x34\x38\x2e\x34\x30\x36\x2c\x39\ -\x39\x2e\x37\x39\x38\x2c\x33\x30\x34\x2e\x34\x30\x36\x2c\x38\x30\ -\x2c\x32\x35\x36\x2c\x38\x30\x63\x2d\x39\x36\x2e\x37\x39\x37\x2c\ -\x30\x2d\x31\x37\x36\x2c\x37\x39\x2e\x32\x30\x33\x2d\x31\x37\x36\ -\x2c\x31\x37\x36\x73\x37\x38\x2e\x30\x39\x34\x2c\x31\x37\x36\x2c\ -\x31\x37\x36\x2c\x31\x37\x36\x0a\x09\x09\x63\x38\x31\x2e\x30\x34\ -\x35\x2c\x30\x2c\x31\x34\x38\x2e\x32\x38\x37\x2d\x35\x34\x2e\x31\ -\x33\x34\x2c\x31\x36\x39\x2e\x34\x30\x31\x2d\x31\x32\x38\x48\x33\ -\x37\x38\x2e\x38\x35\x43\x33\x36\x30\x2e\x31\x30\x35\x2c\x33\x35\ -\x33\x2e\x35\x36\x31\x2c\x33\x31\x31\x2e\x37\x31\x32\x2c\x33\x38\ -\x38\x2c\x32\x35\x36\x2c\x33\x38\x38\x7a\x22\x2f\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x01\x69\ -\x3c\ -\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\ -\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ -\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\ -\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\ -\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\ -\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x3c\x67\x20\x74\x72\x61\ -\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\ -\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x3c\ -\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2e\x33\x34\x20\x31\x35\ -\x2e\x36\x36\x41\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\x30\x20\ -\x30\x20\x30\x20\x39\x20\x31\x37\x2e\x39\x34\x56\x31\x30\x48\x35\ -\x56\x38\x68\x34\x56\x35\x2e\x38\x33\x61\x33\x20\x33\x20\x30\x20\ -\x31\x20\x31\x20\x32\x20\x30\x56\x38\x68\x34\x76\x32\x68\x2d\x34\ -\x76\x37\x2e\x39\x34\x61\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\ -\x30\x20\x30\x20\x30\x20\x34\x2e\x36\x36\x2d\x32\x2e\x32\x38\x6c\ -\x2d\x31\x2e\x34\x32\x2d\x31\x2e\x34\x32\x68\x35\x2e\x36\x36\x6c\ -\x2d\x32\x2e\x38\x33\x20\x32\x2e\x38\x33\x61\x31\x30\x20\x31\x30\ -\x20\x30\x20\x30\x20\x31\x2d\x31\x34\x2e\x31\x34\x20\x30\x4c\x2e\ -\x31\x20\x31\x34\x2e\x32\x34\x68\x35\x2e\x36\x36\x6c\x2d\x31\x2e\ -\x34\x32\x20\x31\x2e\x34\x32\x7a\x4d\x31\x30\x20\x34\x61\x31\x20\ -\x31\x20\x30\x20\x31\x20\x30\x20\x30\x2d\x32\x20\x31\x20\x31\x20\ -\x30\x20\x30\x20\x30\x20\x30\x20\x32\x7a\x22\x2f\x3e\x3c\x2f\x67\ -\x3e\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x02\xc1\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ +\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ +\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\ +\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\ +\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\x3d\x22\x32\ +\x34\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\ +\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\ +\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\ +\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\ +\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\ +\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\ +\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\ +\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x3c\x70\x61\x74\ +\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\x2c\x31\x34\x2e\x37\ +\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\x30\x2e\x34\x37\x34\ +\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\x34\x2d\x30\x2e\x32\ +\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\x30\x6c\x35\x2e\x33\ +\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\x37\x34\x38\x2c\x34\ +\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\x2e\x39\x32\x32\x2c\ +\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\x0a\x09\x63\x30\x2e\ +\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x33\x2c\x31\ +\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\ +\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\x33\x2e\x33\x37\x38\x2c\ +\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\ +\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\x39\x39\x2c\x30\x2e\x30\ +\x38\x33\x2c\x31\x2e\x34\x31\x32\x0a\x09\x43\x36\x2e\x32\x36\x39\ +\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\x2e\x39\x39\x34\x2c\x31\x34\ +\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\x2c\x31\x34\x2e\x37\x35\x7a\ +\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\x31\x34\x2e\x37\x34\x38\x4c\ +\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\x6c\x2d\x35\x2e\x30\x36\x2d\ +\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\x34\x31\x33\x2d\x30\x2e\x33\ +\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\x30\x2e\x33\x33\x2d\x31\x2e\ +\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\x0a\x09\x63\x2d\x30\x2e\x33\ +\x36\x37\x2c\x30\x2e\x34\x31\x33\x2d\x30\x2e\x33\x33\x2c\x31\x2e\ +\x30\x34\x35\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x4c\ +\x31\x36\x2e\x39\x39\x35\x2c\x31\x30\x6c\x2d\x33\x2e\x36\x35\x39\ +\x2c\x33\x2e\x32\x35\x32\x63\x2d\x30\x2e\x34\x31\x33\x2c\x30\x2e\ +\x33\x36\x37\x2d\x30\x2e\x34\x35\x2c\x30\x2e\x39\x39\x39\x2d\x30\ +\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x43\x31\x33\x2e\x34\x35\ +\x2c\x31\x34\x2e\x38\x38\x37\x2c\x31\x33\x2e\x37\x32\x35\x2c\x31\ +\x35\x2c\x31\x34\x2c\x31\x35\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\ +\x2c\x31\x35\x2c\x31\x34\x2e\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\ +\x37\x2c\x31\x34\x2e\x36\x36\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\ +\x20\x4d\x39\x2e\x39\x38\x36\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\ +\x2d\x31\x32\x63\x30\x2e\x30\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\ +\x30\x2e\x32\x37\x37\x2d\x31\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\ +\x2d\x31\x2e\x31\x35\x31\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\ +\x30\x2e\x30\x39\x32\x2d\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\ +\x37\x2d\x31\x2e\x31\x35\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\ +\x31\x32\x63\x2d\x30\x2e\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\ +\x30\x2e\x32\x37\x37\x2c\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\ +\x2c\x31\x2e\x31\x35\x31\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\ +\x39\x39\x36\x2c\x38\x2e\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\ +\x30\x31\x2c\x31\x37\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\ +\x2c\x39\x2e\x39\x30\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\ +\x39\x38\x36\x2c\x31\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0a\x3c\ +\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x05\x16\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -1775,101 +1430,70 @@ qt_resource_data = b"\ \x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ \x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ \x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ -\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ -\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ -\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ -\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x70\x6f\x6c\ -\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x34\x38\x30\ -\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\x30\x20\x33\x38\x34\ -\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\x36\x20\x32\x37\x36\ -\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\x38\x20\x32\x35\x36\ -\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\ -\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\ -\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\x20\x33\x32\x2c\x32\ -\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\x0a\x09\x31\x32\x38\ -\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\x37\x36\x20\x32\x33\x36\ -\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\x38\x34\x20\x32\x35\x36\ -\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\x38\x34\x20\x32\x37\x35\ -\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\x2e\x34\x2c\x32\x37\x35\ -\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\x2e\x38\x20\x33\x38\x34\ -\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\ -\x00\x00\x02\x1c\ -\x00\ -\x00\x07\x5c\x78\x9c\xdd\x55\x4d\x73\x9b\x30\x10\xbd\xf7\x57\x6c\ -\xa7\x07\x25\x07\x84\xbe\x10\x28\x13\x92\x99\x7a\xa6\xa7\xf4\x96\ -\x5c\x7a\xc3\x41\x80\x1a\x0c\x1e\xa0\xc6\xfd\xf7\x95\x6d\x49\x76\ -\x69\x33\xbd\xe4\xd0\x89\x0f\x98\xf7\x56\x6f\xd9\xb7\xcb\x0e\xb7\ -\xf7\xfb\x4d\x0b\x3b\x3d\x8c\xa6\xef\x72\x44\x31\x41\xa0\xbb\xe7\ -\xbe\x34\x5d\x9d\xa3\xa7\xc7\x2f\x51\x86\xee\xef\x3e\xdc\x7e\x8c\ -\x22\x78\x6c\xcc\x08\x95\x69\x35\xcc\xc5\x08\xb5\xee\xf4\x50\x4c\ -\xba\x84\xf5\x4f\x28\x77\x66\xdc\xd5\x1b\x60\x98\x52\x4c\x21\x8a\ -\xac\xc4\x12\x97\x89\x29\x02\xfb\xa8\x6e\xcc\x51\x33\x4d\xdb\x9b\ -\x38\x9e\xe7\x19\xcf\x1c\xf7\x43\x1d\x33\x42\x48\x6c\xcf\xbb\x23\ -\x37\xfb\xd6\x74\x2f\x7f\x3b\x48\x95\x52\xf1\x31\x8a\x60\x36\xe5\ -\xd4\xe4\x48\x72\x6c\x49\xb9\x9d\x10\x34\xda\xd4\xcd\x64\x29\x71\ -\x40\x3b\xa3\xe7\xcf\xfd\x3e\x47\x89\xc4\x82\x28\x01\x94\xa6\x38\ -\x4b\x32\x70\x0a\x90\x02\xd9\x32\x6b\x30\x65\x8e\xb6\x45\xad\xe9\ -\x09\x4e\x43\xd1\x8d\x55\x3f\x6c\x72\x74\xbc\x6d\xad\xc9\xab\x45\ -\x8e\xeb\xf1\xb9\x68\xf5\x95\xcd\x23\x99\x14\xd7\x07\xe1\xb6\x98\ -\x1a\xb0\x99\xbe\x82\xc2\x5c\xa4\x82\x81\x60\x38\x15\x29\x7b\x08\ -\x44\x22\x70\xa6\x98\xfc\x83\x58\x2d\x89\x7f\xe1\x0b\x81\xc2\x24\ -\x13\x0a\xa8\xc2\x89\xe0\x14\x24\xc3\x22\xe3\x02\xb8\x9d\x04\xf3\ -\x68\x05\x42\x60\xa9\xa4\x0a\x61\x9f\xd7\xcb\x03\xf6\x15\xbe\x4a\ -\x04\x53\x9e\xe0\x04\x4b\x42\xb3\x55\x20\xd8\xb1\x55\x49\x78\x26\ -\xe3\x98\x50\xea\x2a\x3a\x81\x55\xa8\xd7\x05\xbd\x1d\xaf\xf5\xd8\ -\x25\x7f\x58\xf6\xf4\x1b\x3a\xbc\x88\x6d\x8e\x3e\xad\xab\x75\x55\ -\x55\x28\xb6\x13\x88\xeb\xb7\x99\x5f\x30\x22\x70\xc2\x14\xbd\x70\ -\x46\x30\xe7\x32\x0b\xce\xa8\xc4\x8a\x67\xdc\x59\x73\xe8\xec\xcd\ -\x87\x83\x39\x27\x0f\xd8\xe7\x0f\x44\x86\x53\x46\x93\x90\xe0\x94\ -\xf7\xe2\x7a\x1e\xe4\x89\x0c\x85\x39\xe1\xa2\xf2\xd0\xa5\xae\xef\ -\x34\x82\x71\x1a\xfa\x17\x6d\x7b\x46\x8e\x3f\x4f\x44\x76\x9d\xf4\ -\x73\xb1\xcd\xd1\xd0\xff\xe8\xca\xdf\xe8\xef\xbd\xe9\x96\xfc\xc6\ -\x4c\x7a\x68\x8d\xfd\xb3\x6b\x4d\x30\xe1\x69\x12\x62\x6e\x27\x39\ -\x4e\x28\xa7\xec\x4d\xa7\xb2\xe8\xda\xfb\xda\x2a\x67\xea\x3d\xcd\ -\xeb\xd5\x2d\xb2\x5f\x08\x95\x30\x76\xde\x22\x9c\x26\x32\x91\x7e\ -\x8b\x4e\xe8\x62\x8b\x5c\xd8\xcf\xc6\xcb\x17\xef\xc3\x7f\xd3\xba\ -\xd3\xc5\x7e\xcc\xee\x7e\x01\xb3\x30\xdb\xa9\ -\x00\x00\x01\xd8\ -\x00\ -\x00\x06\xc4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\xe3\x5f\x31\ -\xdd\x5b\x25\xf6\x0b\x62\x62\x53\xe3\xa8\xfe\x90\x65\x29\x6d\x2d\ -\x35\x75\xd5\x53\x85\x61\x0b\x28\x14\x10\x2c\x60\xe7\xd7\x77\x77\ -\xed\x54\xa9\x14\x5f\x43\x0f\x3b\xab\x9d\x79\xf3\xe6\x0d\x4f\x62\ -\x76\x77\xfc\x9d\x43\x27\xea\x26\x2b\x8b\x00\x71\xc2\x10\x88\x22\ -\x2a\xe3\xac\x48\x02\xd4\xca\x5f\x78\x82\xee\xe6\xa3\xd9\x3b\x8c\ -\x61\x23\x0a\x51\x87\xb2\xac\x7d\xf8\x18\x97\x07\x01\xdb\x3c\x6f\ -\x1b\x69\x52\xc0\x3d\xe2\x10\x6e\xc3\xd7\xfd\x06\xd6\xc7\xaa\xac\ -\x25\xec\xf2\x36\xc1\xdb\x02\x88\x49\xee\xcf\x33\x7c\xf0\x08\x63\ -\xb0\x68\xb3\x3c\x06\xf6\x1e\x00\x63\x4d\xbf\xfa\xb2\x7c\xf8\xb1\ -\x5b\x43\xd3\x25\xb0\xfb\xb6\xb8\xdf\x2e\x01\x61\x4a\xbf\xbb\x4b\ -\x4a\x57\x0f\x2b\xc3\xc0\x09\xa7\x74\xfd\x19\x01\x4a\xa5\xac\x7c\ -\x4a\xfb\xbe\x27\xbd\x4b\xca\x3a\xa1\x9b\x3a\xac\xd2\x2c\x6a\xa8\ -\x02\x52\x0d\x54\x4d\x54\x91\x71\x4e\x62\x19\x23\x35\x42\x33\xbf\ -\xd8\x93\x23\xc8\xe2\x00\xdd\x87\x27\x51\xff\x54\x0f\xf5\x19\x8a\ -\x26\x78\x85\xd9\x61\x8c\x69\xa6\x0b\xc4\x3f\xe6\x59\xf1\xf8\x1a\ -\x90\x4f\xa7\x53\x6a\xaa\x0a\x1a\x20\x56\x1d\x11\x9c\xce\xf7\xc8\ -\x82\x3e\x8b\x65\x1a\xa0\x31\x77\x74\x3e\x15\x59\x92\xca\xbf\xcf\ -\x2e\x13\xfd\xa2\xd4\x4d\xc0\x40\xe5\xf4\x41\xd0\xc8\x53\x2e\x02\ -\x24\x8a\xf0\x90\x0b\x7c\x08\xa3\xc7\xa4\x2e\xdb\x22\xf6\x0b\xd1\ -\xc3\x0b\xe4\x07\x23\xcd\x6f\xaa\x30\x52\xf0\xaa\x16\x8d\xa8\x3b\ -\xa1\x77\x4e\xe6\x23\xcb\x04\x6b\x56\x85\x32\x05\xb5\xf0\x27\xee\ -\x31\x9b\x8f\x5d\xe2\x46\xcc\x76\xc9\x2d\x76\x6d\x4f\x45\x75\xf4\ -\x9d\xe2\x31\x23\xe3\x08\xab\x82\xcd\x74\x12\xbb\xf8\x52\xee\xce\ -\x25\x66\x6a\xee\x73\x83\xbe\x53\x53\x30\x2d\x3a\x65\x1b\x46\x7d\ -\xf6\x66\xce\x93\x5a\xdf\xb2\xe8\xbf\x2a\x9c\xc9\xe4\x3f\x50\x71\ -\xc3\xbd\xa1\x54\xcc\xe8\x35\x73\x9c\x09\x7f\x13\x41\x66\xce\x55\ -\x73\x86\x57\xa1\xcd\x19\x48\xc5\x75\x73\x6e\xd8\xf4\x4d\x04\x99\ -\x39\x57\xcd\x19\x5e\x85\x36\x67\x20\x15\xc6\x9c\x4b\x50\xff\xe5\ -\xf9\xe8\x0f\x44\x1a\x94\x79\ -\x00\x00\x02\x98\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ +\x5f\x31\x32\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x36\x34\x43\x31\ +\x35\x30\x2e\x34\x30\x31\x2c\x36\x34\x2c\x36\x34\x2c\x31\x35\x30\ +\x2e\x34\x30\x31\x2c\x36\x34\x2c\x32\x35\x36\x63\x30\x2c\x31\x30\ +\x35\x2e\x36\x30\x34\x2c\x38\x36\x2e\x34\x30\x31\x2c\x31\x39\x32\ +\x2c\x31\x39\x32\x2c\x31\x39\x32\x63\x31\x38\x2e\x31\x33\x36\x2c\ +\x30\x2c\x33\x32\x2d\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2d\x33\ +\x32\x0a\x09\x09\x09\x63\x30\x2d\x38\x2e\x35\x33\x31\x2d\x33\x2e\ +\x31\x39\x38\x2d\x31\x36\x2d\x38\x2e\x35\x33\x31\x2d\x32\x31\x2e\ +\x33\x33\x33\x63\x2d\x35\x2e\x33\x33\x33\x2d\x35\x2e\x33\x33\x34\ +\x2d\x38\x2e\x35\x33\x31\x2d\x31\x32\x2e\x38\x30\x33\x2d\x38\x2e\ +\x35\x33\x31\x2d\x32\x31\x2e\x33\x33\x34\x63\x30\x2d\x31\x38\x2e\ +\x31\x33\x35\x2c\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\ +\x2d\x33\x32\x68\x33\x38\x2e\x33\x39\x36\x0a\x09\x09\x09\x63\x35\ +\x38\x2e\x36\x36\x37\x2c\x30\x2c\x31\x30\x36\x2e\x36\x36\x37\x2d\ +\x34\x38\x2c\x31\x30\x36\x2e\x36\x36\x37\x2d\x31\x30\x36\x2e\x36\ +\x36\x36\x43\x34\x34\x38\x2c\x31\x34\x30\x2e\x38\x30\x32\x2c\x33\ +\x36\x31\x2e\x36\x30\x34\x2c\x36\x34\x2c\x32\x35\x36\x2c\x36\x34\ +\x7a\x20\x4d\x31\x33\x38\x2e\x36\x36\x37\x2c\x32\x35\x36\x63\x2d\ +\x31\x38\x2e\x31\x33\x36\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\ +\x36\x34\x2d\x33\x32\x2d\x33\x32\x73\x31\x33\x2e\x38\x36\x34\x2d\ +\x33\x32\x2c\x33\x32\x2d\x33\x32\x0a\x09\x09\x09\x63\x31\x38\x2e\ +\x31\x33\x35\x2c\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\ +\x33\x32\x2c\x33\x32\x53\x31\x35\x36\x2e\x38\x30\x32\x2c\x32\x35\ +\x36\x2c\x31\x33\x38\x2e\x36\x36\x37\x2c\x32\x35\x36\x7a\x20\x4d\ +\x32\x30\x32\x2e\x36\x36\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x63\ +\x2d\x31\x38\x2e\x31\x33\x36\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\ +\x38\x36\x35\x2d\x33\x32\x2d\x33\x32\x63\x30\x2d\x31\x38\x2e\x31\ +\x33\x36\x2c\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\ +\x33\x32\x0a\x09\x09\x09\x63\x31\x38\x2e\x31\x33\x35\x2c\x30\x2c\ +\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x43\ +\x32\x33\x34\x2e\x36\x36\x37\x2c\x31\x35\x36\x2e\x38\x30\x32\x2c\ +\x32\x32\x30\x2e\x38\x30\x32\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\ +\x32\x30\x32\x2e\x36\x36\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x7a\ +\x20\x4d\x33\x30\x39\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\ +\x37\x63\x2d\x31\x38\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\x2d\x31\ +\x33\x2e\x38\x36\x35\x2d\x33\x32\x2d\x33\x32\x0a\x09\x09\x09\x63\ +\x30\x2d\x31\x38\x2e\x31\x33\x36\x2c\x31\x33\x2e\x38\x36\x35\x2d\ +\x33\x32\x2c\x33\x32\x2d\x33\x32\x63\x31\x38\x2e\x31\x33\x36\x2c\ +\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\ +\x32\x43\x33\x34\x31\x2e\x33\x33\x33\x2c\x31\x35\x36\x2e\x38\x30\ +\x32\x2c\x33\x32\x37\x2e\x34\x36\x39\x2c\x31\x37\x30\x2e\x36\x36\ +\x37\x2c\x33\x30\x39\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\ +\x37\x7a\x20\x4d\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x0a\ +\x09\x09\x09\x63\x2d\x31\x38\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\ +\x2d\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2d\x33\x32\x73\x31\x33\ +\x2e\x38\x36\x35\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x63\x31\x38\ +\x2e\x31\x33\x36\x2c\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\ +\x2c\x33\x32\x2c\x33\x32\x53\x33\x39\x31\x2e\x34\x36\x39\x2c\x32\ +\x35\x36\x2c\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x7a\x22\ +\x2f\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\ +\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\xd9\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ \x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ \x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\x20\ \x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ \x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ \x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ @@ -1880,34 +1504,193 @@ qt_resource_data = b"\ \x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ \x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ \x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ -\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ -\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ -\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ -\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ -\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ -\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ -\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ -\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ -\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ -\x64\x3d\x22\x4d\x31\x32\x38\x2c\x34\x30\x35\x2e\x34\x32\x39\x43\ -\x31\x32\x38\x2c\x34\x32\x38\x2e\x38\x34\x36\x2c\x31\x34\x37\x2e\ -\x31\x39\x38\x2c\x34\x34\x38\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\ -\x34\x34\x38\x68\x31\x37\x30\x2e\x36\x36\x37\x43\x33\x36\x34\x2e\ -\x38\x30\x32\x2c\x34\x34\x38\x2c\x33\x38\x34\x2c\x34\x32\x38\x2e\ -\x38\x34\x36\x2c\x33\x38\x34\x2c\x34\x30\x35\x2e\x34\x32\x39\x56\ -\x31\x36\x30\x48\x31\x32\x38\x56\x34\x30\x35\x2e\x34\x32\x39\x7a\ -\x20\x4d\x34\x31\x36\x2c\x39\x36\x0a\x09\x09\x68\x2d\x38\x30\x6c\ -\x2d\x32\x36\x2e\x37\x38\x35\x2d\x33\x32\x48\x32\x30\x32\x2e\x37\ -\x38\x36\x4c\x31\x37\x36\x2c\x39\x36\x48\x39\x36\x76\x33\x32\x68\ -\x33\x32\x30\x56\x39\x36\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\ -\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\x5a\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ +\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\x64\x5f\x72\ +\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\ +\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\ +\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\ +\x6e\x6b\x22\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ +\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\ +\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\ +\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\ +\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\ +\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\ +\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\ +\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\ +\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0a\x3c\x70\x61\x74\ +\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\x30\x4c\x38\x2e\x36\x39\ +\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\ +\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\x39\ +\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\x2e\x31\x39\x36\x2d\x30\ +\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\x2d\x30\x2e\x31\x39\x37\ +\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\x38\x30\x37\x2c\x32\x2e\ +\x38\x36\x34\x0a\x09\x63\x30\x2e\x31\x39\x36\x2c\x30\x2e\x31\x39\ +\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\x2e\x35\x32\x2c\x30\x2c\x30\ +\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\x30\x37\x2c\x32\x2e\x38\x36\ +\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\x30\x2e\x31\x39\x39\x2d\x30\ +\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\x38\x2d\x30\x2e\x37\x31\x2c\ +\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2d\x30\ +\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\x38\x2c\x30\x2d\x30\x2e\x37\ +\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\x20\x4d\x31\x30\x2c\x30\x2e\ +\x34\x0a\x09\x63\x35\x2e\x33\x30\x32\x2c\x30\x2c\x39\x2e\x36\x2c\ +\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\x2c\x39\x2e\x36\x63\x30\x2c\ +\x35\x2e\x33\x30\x33\x2d\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\x2d\ +\x39\x2e\x36\x2c\x39\x2e\x36\x53\x30\x2e\x34\x2c\x31\x35\x2e\x33\ +\x30\x33\x2c\x30\x2e\x34\x2c\x31\x30\x43\x30\x2e\x34\x2c\x34\x2e\ +\x36\x39\x38\x2c\x34\x2e\x36\x39\x38\x2c\x30\x2e\x34\x2c\x31\x30\ +\x2c\x30\x2e\x34\x7a\x20\x4d\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\ +\x0a\x09\x63\x34\x2e\x36\x31\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\ +\x2d\x33\x2e\x37\x34\x2c\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\ +\x34\x63\x30\x2d\x34\x2e\x36\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\ +\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\ +\x34\x63\x2d\x34\x2e\x36\x31\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\ +\x2c\x33\x2e\x37\x34\x2d\x38\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\ +\x34\x0a\x09\x43\x31\x2e\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\ +\x2c\x35\x2e\x33\x38\x35\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\ +\x2c\x31\x38\x2e\x33\x35\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\ +\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x04\x42\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x69\x73\x6f\ +\x2d\x38\x38\x35\x39\x2d\x31\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\ +\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\ +\x20\x49\x6c\x6c\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x39\x2e\ +\x30\x2e\x30\x2c\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\ +\x50\x6c\x75\x67\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\ +\x72\x73\x69\x6f\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\ +\x64\x20\x30\x29\x20\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\ +\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\ +\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\ +\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\ +\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\ +\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\ +\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\ +\x79\x3d\x22\x30\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\ +\x78\x3d\x22\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\x20\x34\ +\x32\x33\x2e\x37\x35\x34\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\ +\x20\x34\x32\x33\x2e\x37\x35\x34\x3b\x22\x20\x78\x6d\x6c\x3a\x73\ +\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\ +\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x30\x37\x2e\x35\ +\x31\x36\x2c\x31\x32\x33\x2e\x32\x33\x39\x6c\x2d\x32\x37\x2e\x37\ +\x31\x37\x2c\x31\x31\x2e\x34\x38\x63\x31\x38\x2e\x35\x38\x35\x2c\ +\x34\x34\x2e\x38\x36\x39\x2c\x31\x38\x2e\x35\x38\x35\x2c\x39\x34\ +\x2e\x32\x39\x31\x2c\x30\x2c\x31\x33\x39\x2e\x31\x35\x39\x63\x2d\ +\x31\x38\x2e\x35\x38\x35\x2c\x34\x34\x2e\x38\x36\x39\x2d\x35\x33\ +\x2e\x35\x33\x31\x2c\x37\x39\x2e\x38\x31\x35\x2d\x39\x38\x2e\x34\ +\x2c\x39\x38\x2e\x34\x0a\x09\x63\x2d\x32\x32\x2e\x34\x33\x38\x2c\ +\x39\x2e\x32\x39\x33\x2d\x34\x36\x2e\x30\x30\x34\x2c\x31\x33\x2e\ +\x39\x34\x2d\x36\x39\x2e\x35\x37\x39\x2c\x31\x33\x2e\x39\x33\x39\ +\x63\x2d\x32\x33\x2e\x35\x36\x39\x2d\x30\x2e\x30\x30\x31\x2d\x34\ +\x37\x2e\x31\x34\x37\x2d\x34\x2e\x36\x34\x37\x2d\x36\x39\x2e\x35\ +\x37\x39\x2d\x31\x33\x2e\x39\x33\x39\x63\x2d\x34\x34\x2e\x38\x36\ +\x39\x2d\x31\x38\x2e\x35\x38\x35\x2d\x37\x39\x2e\x38\x31\x35\x2d\ +\x35\x33\x2e\x35\x33\x31\x2d\x39\x38\x2e\x34\x2d\x39\x38\x2e\x34\ +\x0a\x09\x43\x31\x33\x2e\x35\x30\x37\x2c\x32\x30\x30\x2e\x36\x34\ +\x37\x2c\x33\x34\x2e\x37\x35\x38\x2c\x31\x31\x38\x2e\x37\x31\x2c\ +\x39\x30\x2e\x37\x35\x38\x2c\x36\x38\x2e\x36\x34\x34\x6c\x36\x30\ +\x2e\x38\x30\x31\x2c\x36\x30\x2e\x38\x30\x31\x56\x37\x2e\x35\x32\ +\x31\x48\x32\x39\x2e\x36\x33\x35\x4c\x36\x39\x2e\x35\x31\x34\x2c\ +\x34\x37\x2e\x34\x43\x35\x2e\x32\x32\x32\x2c\x31\x30\x35\x2e\x38\ +\x32\x36\x2d\x31\x38\x2e\x39\x38\x35\x2c\x32\x30\x30\x2e\x36\x2c\ +\x31\x36\x2e\x31\x32\x33\x2c\x32\x38\x35\x2e\x33\x35\x39\x0a\x09\ +\x63\x32\x31\x2e\x36\x35\x32\x2c\x35\x32\x2e\x32\x37\x32\x2c\x36\ +\x32\x2e\x33\x36\x34\x2c\x39\x32\x2e\x39\x38\x34\x2c\x31\x31\x34\ +\x2e\x36\x33\x36\x2c\x31\x31\x34\x2e\x36\x33\x36\x63\x32\x36\x2e\ +\x31\x33\x37\x2c\x31\x30\x2e\x38\x32\x36\x2c\x35\x33\x2e\x35\x39\ +\x39\x2c\x31\x36\x2e\x32\x33\x39\x2c\x38\x31\x2e\x30\x36\x31\x2c\ +\x31\x36\x2e\x32\x33\x39\x73\x35\x34\x2e\x39\x32\x34\x2d\x35\x2e\ +\x34\x31\x33\x2c\x38\x31\x2e\x30\x36\x2d\x31\x36\x2e\x32\x33\x39\ +\x0a\x09\x63\x35\x32\x2e\x32\x37\x32\x2d\x32\x31\x2e\x36\x35\x32\ +\x2c\x39\x32\x2e\x39\x38\x34\x2d\x36\x32\x2e\x33\x36\x34\x2c\x31\ +\x31\x34\x2e\x36\x33\x37\x2d\x31\x31\x34\x2e\x36\x33\x36\x43\x34\ +\x32\x39\x2e\x31\x36\x37\x2c\x32\x33\x33\x2e\x30\x38\x37\x2c\x34\ +\x32\x39\x2e\x31\x36\x37\x2c\x31\x37\x35\x2e\x35\x31\x31\x2c\x34\ +\x30\x37\x2e\x35\x31\x36\x2c\x31\x32\x33\x2e\x32\x33\x39\x7a\x22\ +\x2f\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\ +\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\ +\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\ +\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\ +\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\ +\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ +\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\ +\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x04\x17\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x69\x73\x6f\ +\x2d\x38\x38\x35\x39\x2d\x31\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\ +\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\ +\x20\x49\x6c\x6c\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x39\x2e\ +\x30\x2e\x30\x2c\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\ +\x50\x6c\x75\x67\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\ +\x72\x73\x69\x6f\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\ +\x64\x20\x30\x29\x20\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\ +\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\ +\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\ +\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\ +\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\ +\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\ +\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\ +\x79\x3d\x22\x30\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\ +\x78\x3d\x22\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\x20\x34\ +\x32\x33\x2e\x37\x35\x34\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x34\x32\x33\x2e\x37\x35\x34\ +\x20\x34\x32\x33\x2e\x37\x35\x34\x3b\x22\x20\x78\x6d\x6c\x3a\x73\ +\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\ +\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x33\x35\x34\x2e\x32\ +\x34\x2c\x34\x37\x2e\x34\x6c\x33\x39\x2e\x38\x37\x39\x2d\x33\x39\ +\x2e\x38\x37\x39\x48\x32\x37\x32\x2e\x31\x39\x36\x76\x31\x32\x31\ +\x2e\x39\x32\x34\x6c\x36\x30\x2e\x38\x30\x31\x2d\x36\x30\x2e\x38\ +\x30\x31\x63\x35\x36\x2c\x35\x30\x2e\x30\x36\x36\x2c\x37\x37\x2e\ +\x32\x35\x31\x2c\x31\x33\x32\x2e\x30\x30\x34\x2c\x34\x36\x2e\x39\ +\x31\x38\x2c\x32\x30\x35\x2e\x32\x33\x35\x0a\x09\x63\x2d\x31\x38\ +\x2e\x35\x38\x35\x2c\x34\x34\x2e\x38\x36\x39\x2d\x35\x33\x2e\x35\ +\x33\x31\x2c\x37\x39\x2e\x38\x31\x35\x2d\x39\x38\x2e\x34\x2c\x39\ +\x38\x2e\x34\x63\x2d\x34\x34\x2e\x38\x36\x36\x2c\x31\x38\x2e\x35\ +\x38\x35\x2d\x39\x34\x2e\x32\x38\x38\x2c\x31\x38\x2e\x35\x38\x35\ +\x2d\x31\x33\x39\x2e\x31\x35\x38\x2c\x30\x63\x2d\x34\x34\x2e\x38\ +\x36\x39\x2d\x31\x38\x2e\x35\x38\x35\x2d\x37\x39\x2e\x38\x31\x35\ +\x2d\x35\x33\x2e\x35\x33\x31\x2d\x39\x38\x2e\x34\x2d\x39\x38\x2e\ +\x34\x0a\x09\x63\x2d\x31\x38\x2e\x35\x38\x35\x2d\x34\x34\x2e\x38\ +\x36\x39\x2d\x31\x38\x2e\x35\x38\x35\x2d\x39\x34\x2e\x32\x39\x2c\ +\x30\x2d\x31\x33\x39\x2e\x31\x35\x39\x6c\x2d\x32\x37\x2e\x37\x31\ +\x37\x2d\x31\x31\x2e\x34\x38\x63\x2d\x32\x31\x2e\x36\x35\x31\x2c\ +\x35\x32\x2e\x32\x37\x32\x2d\x32\x31\x2e\x36\x35\x31\x2c\x31\x30\ +\x39\x2e\x38\x34\x38\x2c\x30\x2c\x31\x36\x32\x2e\x31\x32\x0a\x09\ +\x63\x32\x31\x2e\x36\x35\x32\x2c\x35\x32\x2e\x32\x37\x32\x2c\x36\ +\x32\x2e\x33\x36\x34\x2c\x39\x32\x2e\x39\x38\x34\x2c\x31\x31\x34\ +\x2e\x36\x33\x37\x2c\x31\x31\x34\x2e\x36\x33\x36\x63\x32\x36\x2e\ +\x31\x34\x2c\x31\x30\x2e\x38\x32\x37\x2c\x35\x33\x2e\x35\x39\x35\ +\x2c\x31\x36\x2e\x32\x34\x2c\x38\x31\x2e\x30\x36\x2c\x31\x36\x2e\ +\x32\x33\x39\x63\x32\x37\x2e\x34\x35\x39\x2d\x30\x2e\x30\x30\x31\ +\x2c\x35\x34\x2e\x39\x32\x37\x2d\x35\x2e\x34\x31\x34\x2c\x38\x31\ +\x2e\x30\x36\x31\x2d\x31\x36\x2e\x32\x33\x39\x0a\x09\x63\x35\x32\ +\x2e\x32\x37\x31\x2d\x32\x31\x2e\x36\x35\x32\x2c\x39\x32\x2e\x39\ +\x38\x33\x2d\x36\x32\x2e\x33\x36\x34\x2c\x31\x31\x34\x2e\x36\x33\ +\x36\x2d\x31\x31\x34\x2e\x36\x33\x36\x43\x34\x34\x32\x2e\x37\x33\ +\x39\x2c\x32\x30\x30\x2e\x36\x2c\x34\x31\x38\x2e\x35\x33\x32\x2c\ +\x31\x30\x35\x2e\x38\x32\x36\x2c\x33\x35\x34\x2e\x32\x34\x2c\x34\ +\x37\x2e\x34\x7a\x22\x2f\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\ +\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\ +\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\ +\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\ +\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\ +\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\ +\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ +\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x04\x73\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ \x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ @@ -1921,104 +1704,66 @@ qt_resource_data = b"\ \x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ \x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ -\x27\x36\x33\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\ +\x27\x36\x34\x2e\x30\x30\x30\x31\x70\x74\x27\x20\x68\x65\x69\x67\ \x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x34\x27\x3e\x0a\ +\x78\x3d\x27\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x20\x36\x34\x2e\x30\x30\x30\x31\x20\x36\x34\x27\x3e\x0a\ \x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ \x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\x34\x30\x39\x34\x20\x31\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ \x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ \x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ -\x27\x4d\x20\x32\x2e\x30\x30\x37\x35\x20\x36\x32\x2e\x32\x33\x32\ -\x35\x4c\x20\x36\x32\x2e\x32\x33\x32\x35\x20\x36\x32\x2e\x32\x33\ -\x32\x35\x4c\x20\x36\x32\x2e\x32\x33\x32\x35\x20\x32\x2e\x30\x30\ -\x37\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x32\x2e\x30\x30\x37\ -\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x36\x32\x2e\x32\x33\x32\ -\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ +\x27\x4d\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\x43\ +\x20\x36\x2e\x32\x32\x30\x37\x32\x20\x32\x34\x2e\x39\x36\x35\x35\ +\x20\x39\x2e\x30\x34\x39\x38\x39\x20\x31\x38\x2e\x31\x33\x35\x33\ +\x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ +\x43\x20\x32\x39\x2e\x35\x30\x36\x32\x20\x2d\x33\x2e\x34\x38\x36\ +\x38\x36\x20\x35\x35\x2e\x33\x36\x37\x33\x20\x32\x2e\x36\x39\x39\ +\x35\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\x37\ +\x38\x43\x20\x35\x39\x2e\x36\x39\x32\x32\x20\x33\x31\x2e\x35\x38\ +\x38\x31\x20\x35\x32\x2e\x36\x35\x30\x38\x20\x34\x30\x2e\x36\x37\ +\x37\x39\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\x31\ +\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ \x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ \x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ \x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ \x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ \x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ \x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ -\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\ -\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\ -\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\ -\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\ -\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\ -\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x34\x37\x2e\x31\ -\x37\x36\x32\x20\x33\x32\x2e\x31\x32\x43\x20\x34\x37\x2e\x31\x37\ -\x36\x32\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x34\x30\x2e\x34\x33\ -\x35\x33\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x33\x32\x2e\x31\x32\ -\x20\x31\x37\x2e\x30\x36\x33\x37\x43\x20\x32\x33\x2e\x38\x30\x34\ -\x37\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x31\x37\x2e\x30\x36\x33\ -\x37\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x31\x37\x2e\x30\x36\x33\ -\x37\x20\x33\x32\x2e\x31\x32\x43\x20\x31\x37\x2e\x30\x36\x33\x37\ -\x20\x34\x30\x2e\x34\x33\x35\x33\x20\x32\x33\x2e\x38\x30\x34\x37\ -\x20\x34\x37\x2e\x31\x37\x36\x32\x20\x33\x32\x2e\x31\x32\x20\x34\ -\x37\x2e\x31\x37\x36\x32\x43\x20\x34\x30\x2e\x34\x33\x35\x33\x20\ -\x34\x37\x2e\x31\x37\x36\x32\x20\x34\x37\x2e\x31\x37\x36\x32\x20\ -\x34\x30\x2e\x34\x33\x35\x33\x20\x34\x37\x2e\x31\x37\x36\x32\x20\ -\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\ -\x30\x30\x30\x30\x30\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ -\x00\x00\x03\x5f\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ -\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ -\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ -\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ -\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ -\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ -\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ -\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ -\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ -\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ -\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ -\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ -\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ -\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ -\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ -\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ -\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ -\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ -\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ -\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x0a\x09\x09\x3c\x72\x65\ -\x63\x74\x20\x78\x3d\x22\x31\x37\x38\x2e\x38\x34\x36\x22\x20\x79\ -\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\x20\x74\x72\x61\x6e\x73\x66\ -\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x2d\x30\x2e\x37\ -\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\x31\x20\x30\x2e\x37\x30\ -\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\x31\x20\x32\x32\x34\x2e\x33\ -\x34\x37\x36\x20\x36\x33\x31\x2e\x31\x34\x39\x38\x29\x22\x20\x77\ -\x69\x64\x74\x68\x3d\x22\x31\x32\x38\x2e\x30\x38\x35\x22\x20\x68\ -\x65\x69\x67\x68\x74\x3d\x22\x33\x35\x34\x2e\x30\x34\x39\x22\x2f\ -\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x37\x31\ -\x2e\x37\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x6c\x2d\x34\x38\x2e\ -\x31\x31\x35\x2d\x34\x38\x2e\x31\x31\x34\x63\x2d\x31\x31\x2e\x37\ -\x32\x33\x2d\x31\x31\x2e\x37\x32\x34\x2d\x33\x31\x2e\x35\x35\x38\ -\x2d\x31\x30\x2e\x38\x39\x36\x2d\x34\x34\x2e\x33\x30\x34\x2c\x31\ -\x2e\x38\x35\x6c\x2d\x34\x35\x2e\x32\x30\x32\x2c\x34\x35\x2e\x32\ -\x30\x33\x6c\x39\x30\x2e\x35\x36\x39\x2c\x39\x30\x2e\x35\x36\x38\ -\x6c\x34\x35\x2e\x32\x30\x32\x2d\x34\x35\x2e\x32\x30\x32\x0a\x09\ -\x09\x43\x34\x38\x32\x2e\x36\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\ -\x32\x2c\x34\x38\x33\x2e\x34\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\ -\x36\x2c\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\ -\x7a\x22\x2f\x3e\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\ -\x6f\x69\x6e\x74\x73\x3d\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\ -\x33\x2e\x32\x35\x32\x20\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\ -\x2e\x37\x33\x37\x2c\x34\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\ +\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ +\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ +\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ +\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ +\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\ +\x2e\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\ +\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\ +\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ +\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\ +\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\ +\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\ +\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\ +\x20\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\ +\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\ +\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ +\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ +\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ +\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\ +\x63\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\ +\x27\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\ +\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\ +\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\ +\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\ +\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\ +\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\ +\x34\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\ +\x37\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\ +\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\ \x00\x00\x03\x48\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -2074,7 +1819,7 @@ qt_resource_data = b"\ \x38\x38\x35\x2c\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\ \x37\x0a\x09\x56\x33\x37\x33\x2e\x33\x33\x33\x7a\x22\x2f\x3e\x0a\ \x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x02\x6c\ +\x00\x00\x03\x3d\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ @@ -2101,92 +1846,40 @@ qt_resource_data = b"\ \x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ \x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ \x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ -\x5f\x31\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x67\x3e\ -\x0a\x09\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\ -\x6e\x74\x73\x3d\x22\x31\x38\x36\x2e\x33\x30\x31\x2c\x33\x33\x39\ -\x2e\x38\x39\x33\x20\x39\x36\x2c\x32\x34\x39\x2e\x34\x36\x31\x20\ -\x36\x34\x2c\x32\x37\x39\x2e\x39\x36\x38\x20\x31\x38\x36\x2e\x33\ -\x30\x31\x2c\x34\x30\x32\x20\x34\x34\x38\x2c\x31\x34\x30\x2e\x35\ -\x30\x36\x20\x34\x31\x36\x2c\x31\x31\x30\x20\x09\x09\x09\x22\x2f\ -\x3e\x0a\x09\x09\x3c\x2f\x67\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\ -\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\xe8\ -\x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ -\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ -\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ -\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\x20\ -\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ -\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ -\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ -\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ -\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ -\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ -\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ -\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ -\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ -\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ -\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\x64\x5f\x6c\ -\x65\x66\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ -\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\ -\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ -\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\ -\x6b\x22\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\ -\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ -\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ -\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ -\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ -\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\x30\ -\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\ -\x20\x64\x3d\x22\x4d\x31\x31\x2e\x33\x30\x32\x2c\x36\x2e\x37\x37\ -\x36\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2d\x30\ -\x2e\x35\x31\x35\x2d\x30\x2e\x31\x39\x37\x2d\x30\x2e\x37\x31\x2c\ -\x30\x4c\x37\x2e\x37\x38\x35\x2c\x39\x2e\x36\x34\x31\x63\x2d\x30\ -\x2e\x31\x39\x36\x2c\x30\x2e\x31\x39\x39\x2d\x30\x2e\x31\x39\x36\ -\x2c\x30\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x32\x2e\ -\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0a\x09\x63\x30\x2e\x31\x39\ -\x35\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x35\x31\x34\x2c\x30\x2e\ -\x31\x39\x38\x2c\x30\x2e\x37\x31\x2c\x30\x63\x30\x2e\x31\x39\x36\ -\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\ -\x31\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x39\x2c\x31\x30\x6c\ -\x32\x2e\x33\x30\x32\x2d\x32\x2e\x35\x30\x36\x43\x31\x31\x2e\x34\ -\x39\x38\x2c\x37\x2e\x32\x39\x36\x2c\x31\x31\x2e\x34\x39\x38\x2c\ -\x36\x2e\x39\x37\x36\x2c\x31\x31\x2e\x33\x30\x32\x2c\x36\x2e\x37\ -\x37\x36\x7a\x0a\x09\x20\x4d\x31\x30\x2c\x30\x2e\x34\x63\x2d\x35\ -\x2e\x33\x30\x32\x2c\x30\x2d\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\ -\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\ -\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\x36\x2c\x39\x2e\x36\x2c\x39\ -\x2e\x36\x73\x39\x2e\x36\x2d\x34\x2e\x32\x39\x37\x2c\x39\x2e\x36\ -\x2d\x39\x2e\x36\x43\x31\x39\x2e\x36\x2c\x34\x2e\x36\x39\x38\x2c\ -\x31\x35\x2e\x33\x30\x32\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\ -\x34\x7a\x20\x4d\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\x0a\x09\x63\ -\x2d\x34\x2e\x36\x31\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2d\x33\ -\x2e\x37\x34\x2d\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\ -\x30\x2d\x34\x2e\x36\x31\x34\x2c\x33\x2e\x37\x33\x39\x2d\x38\x2e\ -\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\ -\x34\x2e\x36\x31\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2c\x33\x2e\ -\x37\x34\x2c\x38\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0a\x09\ -\x43\x31\x38\x2e\x33\x35\x34\x2c\x31\x34\x2e\x36\x31\x34\x2c\x31\ -\x34\x2e\x36\x31\x33\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\ -\x31\x38\x2e\x33\x35\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\ -\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x03\xda\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ +\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ +\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ +\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x70\x61\x74\ +\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\x2c\x33\x38\x36\x2e\ +\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\x6c\x31\x33\x30\x2e\ +\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2d\x31\x34\x2e\ +\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2c\x30\x2d\x35\x30\ +\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\ +\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\x39\x2c\x30\x4c\x32\ +\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\x35\x2e\x34\x2c\x37\ +\x34\x2e\x35\x0a\x09\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\x2e\x31\ +\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\x39\x2c\ +\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x31\x34\x2e\ +\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\x30\x2e\x39\x4c\x32\x30\ +\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\x2e\x35\x2c\x33\x38\x36\ +\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x31\x34\ +\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\x30\x2e\x39\x0a\x09\ +\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\ +\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\x2c\x30\x4c\x32\x35\x36\x2c\ +\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\x2e\x36\x2c\x31\x33\x30\x2e\ +\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\ +\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\x2c\x30\x43\x34\x35\x31\ +\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\x34\x35\x31\x2e\x35\x2c\x34\ +\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\x35\x2c\x33\x38\x36\x2e\x36\ +\x7a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x72\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ \x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ \x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ -\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x30\x2e\x30\x2c\x20\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ \x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ \x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ \x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ @@ -2211,113 +1904,42 @@ qt_resource_data = b"\ \x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ \x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ \x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ -\x64\x3d\x22\x4d\x34\x38\x2e\x34\x35\x31\x2c\x34\x36\x34\x2e\x38\ -\x32\x38\x63\x34\x30\x2e\x30\x32\x33\x2d\x30\x2e\x33\x31\x35\x2c\ -\x34\x35\x2e\x30\x31\x2d\x39\x2e\x39\x35\x35\x2c\x35\x38\x2e\x30\ -\x35\x32\x2d\x35\x30\x2e\x31\x33\x32\x63\x32\x34\x2e\x30\x35\x37\ -\x2d\x36\x33\x2e\x34\x30\x38\x2c\x31\x33\x32\x2e\x34\x31\x39\x2c\ -\x31\x36\x2e\x35\x39\x31\x2c\x36\x35\x2e\x32\x36\x39\x2c\x34\x34\ -\x2e\x33\x37\x34\x0a\x09\x09\x43\x31\x30\x34\x2e\x36\x32\x32\x2c\ -\x34\x38\x36\x2e\x38\x35\x32\x2c\x38\x2e\x34\x32\x38\x2c\x34\x36\ -\x35\x2e\x31\x34\x33\x2c\x34\x38\x2e\x34\x35\x31\x2c\x34\x36\x34\ -\x2e\x38\x32\x38\x7a\x22\x2f\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\ -\x64\x3d\x22\x4d\x34\x35\x38\x2e\x38\x35\x37\x2c\x34\x36\x2e\x39\ -\x30\x32\x63\x2d\x31\x39\x2e\x34\x31\x37\x2d\x31\x35\x2e\x36\x34\ -\x37\x2d\x35\x31\x2e\x35\x39\x32\x2d\x37\x2e\x39\x33\x38\x2d\x37\ -\x31\x2e\x38\x36\x34\x2c\x31\x37\x2e\x32\x31\x39\x4c\x31\x38\x31\ -\x2e\x36\x34\x35\x2c\x33\x35\x35\x2e\x38\x34\x39\x63\x2d\x32\x30\ -\x2e\x32\x37\x32\x2c\x32\x35\x2e\x31\x35\x34\x2d\x32\x30\x2e\x31\ -\x37\x31\x2c\x32\x30\x2e\x33\x34\x37\x2d\x30\x2e\x37\x35\x34\x2c\ -\x33\x35\x2e\x39\x39\x32\x0a\x09\x09\x63\x31\x39\x2e\x34\x31\x37\ -\x2c\x31\x35\x2e\x36\x34\x38\x2c\x31\x34\x2e\x37\x33\x38\x2c\x31\ -\x36\x2e\x37\x37\x2c\x33\x35\x2e\x30\x31\x31\x2d\x38\x2e\x33\x38\ -\x38\x6c\x32\x34\x31\x2e\x34\x30\x36\x2d\x32\x36\x32\x2e\x36\x36\ -\x39\x43\x34\x37\x37\x2e\x35\x38\x31\x2c\x39\x35\x2e\x36\x32\x38\ -\x2c\x34\x37\x38\x2e\x32\x37\x35\x2c\x36\x32\x2e\x35\x35\x2c\x34\ -\x35\x38\x2e\x38\x35\x37\x2c\x34\x36\x2e\x39\x30\x32\x7a\x20\x4d\ -\x34\x30\x36\x2e\x30\x36\x35\x2c\x38\x31\x2e\x38\x32\x35\x0a\x09\ -\x09\x63\x30\x2c\x30\x2d\x33\x2d\x33\x2e\x35\x2d\x31\x33\x2d\x31\ -\x31\x2e\x35\x63\x31\x35\x2d\x32\x34\x2e\x35\x2c\x34\x34\x2e\x35\ -\x2d\x32\x30\x2c\x34\x34\x2e\x35\x2d\x32\x30\x43\x34\x30\x39\x2e\ -\x35\x36\x35\x2c\x36\x36\x2e\x38\x32\x35\x2c\x34\x30\x36\x2e\x30\ -\x36\x35\x2c\x38\x31\x2e\x38\x32\x35\x2c\x34\x30\x36\x2e\x30\x36\ -\x35\x2c\x38\x31\x2e\x38\x32\x35\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\ -\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x04\x73\ +\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ +\x5f\x38\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\x2c\x32\x37\x37\x2e\x33\x37\ +\x35\x68\x32\x35\x39\x2e\x37\x30\x34\x4c\x32\x32\x35\x2e\x30\x30\ +\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\x4c\x32\x35\x36\x2c\x34\x32\ +\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\x4c\x32\x35\x36\x2c\x38\x35\ +\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\x32\x39\x2e\x39\x32\x34\x6c\ +\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\x31\x39\x2e\x37\x30\x31\x48\ +\x38\x35\x56\x32\x37\x37\x2e\x33\x37\x35\x7a\x22\x2f\x3e\x0a\x09\ +\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\x69\ \x3c\ -\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ -\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ -\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\ -\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\ -\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\ -\x31\x31\x2e\x31\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\ -\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\ -\x73\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ -\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\ -\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ -\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ -\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ -\x27\x36\x34\x2e\x30\x30\x30\x31\x70\x74\x27\x20\x68\x65\x69\x67\ -\x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x27\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x20\x36\x34\x2e\x30\x30\x30\x31\x20\x36\x34\x27\x3e\x0a\ -\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ -\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ -\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ -\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ -\x27\x4d\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\x43\ -\x20\x36\x2e\x32\x32\x30\x37\x32\x20\x32\x34\x2e\x39\x36\x35\x35\ -\x20\x39\x2e\x30\x34\x39\x38\x39\x20\x31\x38\x2e\x31\x33\x35\x33\ -\x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ -\x43\x20\x32\x39\x2e\x35\x30\x36\x32\x20\x2d\x33\x2e\x34\x38\x36\ -\x38\x36\x20\x35\x35\x2e\x33\x36\x37\x33\x20\x32\x2e\x36\x39\x39\ -\x35\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\x37\ -\x38\x43\x20\x35\x39\x2e\x36\x39\x32\x32\x20\x33\x31\x2e\x35\x38\ -\x38\x31\x20\x35\x32\x2e\x36\x35\x30\x38\x20\x34\x30\x2e\x36\x37\ -\x37\x39\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\x31\ -\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ -\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ -\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ -\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ -\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ -\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ -\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\ -\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ -\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ -\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ -\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ -\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\ -\x2e\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\ -\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\ -\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\ -\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ -\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\ -\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\ -\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\ -\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\ -\x20\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\ -\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\ -\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ -\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ -\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ -\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\ -\x63\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\ -\x27\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\ -\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\ -\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\ -\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\ -\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\ -\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\ -\x34\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\ -\x37\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\ -\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\ -\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ -\x67\x3e\ +\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ +\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\ +\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\ +\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\ +\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x3c\x67\x20\x74\x72\x61\ +\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\ +\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2e\x33\x34\x20\x31\x35\ +\x2e\x36\x36\x41\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\x30\x20\ +\x30\x20\x30\x20\x39\x20\x31\x37\x2e\x39\x34\x56\x31\x30\x48\x35\ +\x56\x38\x68\x34\x56\x35\x2e\x38\x33\x61\x33\x20\x33\x20\x30\x20\ +\x31\x20\x31\x20\x32\x20\x30\x56\x38\x68\x34\x76\x32\x68\x2d\x34\ +\x76\x37\x2e\x39\x34\x61\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\ +\x30\x20\x30\x20\x30\x20\x34\x2e\x36\x36\x2d\x32\x2e\x32\x38\x6c\ +\x2d\x31\x2e\x34\x32\x2d\x31\x2e\x34\x32\x68\x35\x2e\x36\x36\x6c\ +\x2d\x32\x2e\x38\x33\x20\x32\x2e\x38\x33\x61\x31\x30\x20\x31\x30\ +\x20\x30\x20\x30\x20\x31\x2d\x31\x34\x2e\x31\x34\x20\x30\x4c\x2e\ +\x31\x20\x31\x34\x2e\x32\x34\x68\x35\x2e\x36\x36\x6c\x2d\x31\x2e\ +\x34\x32\x20\x31\x2e\x34\x32\x7a\x4d\x31\x30\x20\x34\x61\x31\x20\ +\x31\x20\x30\x20\x31\x20\x30\x20\x30\x2d\x32\x20\x31\x20\x31\x20\ +\x30\x20\x30\x20\x30\x20\x30\x20\x32\x7a\x22\x2f\x3e\x3c\x2f\x67\ +\x3e\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x04\xca\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -2397,7 +2019,217 @@ qt_resource_data = b"\ \x36\x37\x2c\x37\x2e\x34\x37\x30\x34\x0a\x09\x48\x33\x2e\x33\x37\ \x33\x33\x4c\x37\x2e\x35\x2c\x33\x2e\x38\x39\x39\x33\x7a\x22\x2f\ \x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ -\x00\x00\x05\x9c\ +\x00\x00\x02\x1c\ +\x00\ +\x00\x07\x5c\x78\x9c\xdd\x55\x4d\x73\x9b\x30\x10\xbd\xf7\x57\x6c\ +\xa7\x07\x25\x07\x84\xbe\x10\x28\x13\x92\x99\x7a\xa6\xa7\xf4\x96\ +\x5c\x7a\xc3\x41\x80\x1a\x0c\x1e\xa0\xc6\xfd\xf7\x95\x6d\x49\x76\ +\x69\x33\xbd\xe4\xd0\x89\x0f\x98\xf7\x56\x6f\xd9\xb7\xcb\x0e\xb7\ +\xf7\xfb\x4d\x0b\x3b\x3d\x8c\xa6\xef\x72\x44\x31\x41\xa0\xbb\xe7\ +\xbe\x34\x5d\x9d\xa3\xa7\xc7\x2f\x51\x86\xee\xef\x3e\xdc\x7e\x8c\ +\x22\x78\x6c\xcc\x08\x95\x69\x35\xcc\xc5\x08\xb5\xee\xf4\x50\x4c\ +\xba\x84\xf5\x4f\x28\x77\x66\xdc\xd5\x1b\x60\x98\x52\x4c\x21\x8a\ +\xac\xc4\x12\x97\x89\x29\x02\xfb\xa8\x6e\xcc\x51\x33\x4d\xdb\x9b\ +\x38\x9e\xe7\x19\xcf\x1c\xf7\x43\x1d\x33\x42\x48\x6c\xcf\xbb\x23\ +\x37\xfb\xd6\x74\x2f\x7f\x3b\x48\x95\x52\xf1\x31\x8a\x60\x36\xe5\ +\xd4\xe4\x48\x72\x6c\x49\xb9\x9d\x10\x34\xda\xd4\xcd\x64\x29\x71\ +\x40\x3b\xa3\xe7\xcf\xfd\x3e\x47\x89\xc4\x82\x28\x01\x94\xa6\x38\ +\x4b\x32\x70\x0a\x90\x02\xd9\x32\x6b\x30\x65\x8e\xb6\x45\xad\xe9\ +\x09\x4e\x43\xd1\x8d\x55\x3f\x6c\x72\x74\xbc\x6d\xad\xc9\xab\x45\ +\x8e\xeb\xf1\xb9\x68\xf5\x95\xcd\x23\x99\x14\xd7\x07\xe1\xb6\x98\ +\x1a\xb0\x99\xbe\x82\xc2\x5c\xa4\x82\x81\x60\x38\x15\x29\x7b\x08\ +\x44\x22\x70\xa6\x98\xfc\x83\x58\x2d\x89\x7f\xe1\x0b\x81\xc2\x24\ +\x13\x0a\xa8\xc2\x89\xe0\x14\x24\xc3\x22\xe3\x02\xb8\x9d\x04\xf3\ +\x68\x05\x42\x60\xa9\xa4\x0a\x61\x9f\xd7\xcb\x03\xf6\x15\xbe\x4a\ +\x04\x53\x9e\xe0\x04\x4b\x42\xb3\x55\x20\xd8\xb1\x55\x49\x78\x26\ +\xe3\x98\x50\xea\x2a\x3a\x81\x55\xa8\xd7\x05\xbd\x1d\xaf\xf5\xd8\ +\x25\x7f\x58\xf6\xf4\x1b\x3a\xbc\x88\x6d\x8e\x3e\xad\xab\x75\x55\ +\x55\x28\xb6\x13\x88\xeb\xb7\x99\x5f\x30\x22\x70\xc2\x14\xbd\x70\ +\x46\x30\xe7\x32\x0b\xce\xa8\xc4\x8a\x67\xdc\x59\x73\xe8\xec\xcd\ +\x87\x83\x39\x27\x0f\xd8\xe7\x0f\x44\x86\x53\x46\x93\x90\xe0\x94\ +\xf7\xe2\x7a\x1e\xe4\x89\x0c\x85\x39\xe1\xa2\xf2\xd0\xa5\xae\xef\ +\x34\x82\x71\x1a\xfa\x17\x6d\x7b\x46\x8e\x3f\x4f\x44\x76\x9d\xf4\ +\x73\xb1\xcd\xd1\xd0\xff\xe8\xca\xdf\xe8\xef\xbd\xe9\x96\xfc\xc6\ +\x4c\x7a\x68\x8d\xfd\xb3\x6b\x4d\x30\xe1\x69\x12\x62\x6e\x27\x39\ +\x4e\x28\xa7\xec\x4d\xa7\xb2\xe8\xda\xfb\xda\x2a\x67\xea\x3d\xcd\ +\xeb\xd5\x2d\xb2\x5f\x08\x95\x30\x76\xde\x22\x9c\x26\x32\x91\x7e\ +\x8b\x4e\xe8\x62\x8b\x5c\xd8\xcf\xc6\xcb\x17\xef\xc3\x7f\xd3\xba\ +\xd3\xc5\x7e\xcc\xee\x7e\x01\xb3\x30\xdb\xa9\ +\x00\x00\x03\x3f\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ +\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ +\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ +\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ +\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ +\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ +\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ +\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ +\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ +\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ +\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ +\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ +\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ +\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ +\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ +\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ +\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ +\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ +\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x22\x49\x63\x6f\x6e\ +\x5f\x32\x31\x5f\x22\x3e\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\x35\x32\x63\ +\x2d\x35\x37\x2e\x32\x2c\x30\x2d\x31\x30\x34\x2c\x34\x36\x2e\x38\ +\x2d\x31\x30\x34\x2c\x31\x30\x34\x73\x34\x36\x2e\x38\x2c\x31\x30\ +\x34\x2c\x31\x30\x34\x2c\x31\x30\x34\x73\x31\x30\x34\x2d\x34\x36\ +\x2e\x38\x2c\x31\x30\x34\x2d\x31\x30\x34\x53\x33\x31\x33\x2e\x32\ +\x2c\x31\x35\x32\x2c\x32\x35\x36\x2c\x31\x35\x32\x7a\x20\x4d\x32\ +\x35\x36\x2c\x34\x38\x0a\x09\x09\x09\x43\x31\x34\x31\x2e\x36\x30\ +\x31\x2c\x34\x38\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\ +\x34\x38\x2c\x32\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\ +\x38\x2c\x32\x30\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\ +\x2e\x36\x30\x31\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\ +\x2e\x33\x39\x39\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\ +\x4d\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\x0a\x09\x09\x09\x63\x2d\ +\x39\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x34\x2d\x37\ +\x34\x2e\x38\x38\x33\x2d\x31\x36\x36\x2e\x34\x2d\x31\x36\x36\x2e\ +\x34\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\x39\x2e\x36\x2c\x32\ +\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\x2e\x34\x2c\x31\x36\ +\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x53\ +\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\ +\x36\x2c\x34\x32\x32\x2e\x34\x7a\x22\x2f\x3e\x0a\x09\x3c\x2f\x67\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\xdc\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ +\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ +\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ +\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ +\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ +\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ +\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ +\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ +\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ +\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ +\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ +\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ +\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ +\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ +\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ +\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ +\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ +\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ +\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\ +\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\ +\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\ +\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\ +\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\ +\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\x2d\x31\x34\x35\x2e\x37\ +\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\x31\x32\x38\x63\x36\x37\ +\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\x34\x2c\x31\x32\x38\x2c\ +\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\x2e\x39\x2c\x30\x2c\x31\ +\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\x32\x32\x34\x2d\x31\x32\ +\x36\x2e\x36\x0a\x09\x09\x43\x34\x32\x38\x2e\x32\x2c\x31\x39\x38\ +\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\x31\x32\x38\x2c\x32\x35\x36\ +\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\x36\x2c\x33\x34\x37\x2e\x33\ +\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\x38\x39\x2e\x36\x2d\x34\x31\ +\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x63\x30\x2d\x35\x30\x2e\ +\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\x2e\x33\x2c\x38\x39\x2e\x36\ +\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\x36\x2c\x34\x31\x2c\x38\x39\ +\x2e\x36\x2c\x39\x31\x2e\x33\x0a\x09\x09\x43\x33\x34\x35\x2e\x36\ +\x2c\x33\x30\x36\x2e\x34\x2c\x33\x30\x35\x2e\x34\x2c\x33\x34\x37\ +\x2e\x33\x2c\x32\x35\x36\x2c\x33\x34\x37\x2e\x33\x7a\x22\x2f\x3e\ +\x0a\x09\x3c\x67\x3e\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\ +\x22\x4d\x32\x35\x36\x2c\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\ +\x32\x2e\x39\x2d\x31\x35\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\ +\x37\x63\x2d\x32\x2e\x35\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\ +\x2d\x37\x2e\x36\x2d\x30\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\ +\x2d\x35\x32\x2e\x33\x2c\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\ +\x35\x33\x2e\x33\x63\x30\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\ +\x2c\x35\x33\x2e\x33\x2c\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0a\ +\x09\x09\x09\x73\x35\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\ +\x2e\x33\x2d\x35\x33\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\ +\x32\x2d\x34\x2e\x36\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\ +\x2e\x35\x2c\x34\x2e\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\ +\x31\x39\x2e\x38\x2c\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\ +\x35\x36\x2c\x32\x35\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\ +\x2c\x32\x32\x34\x7a\x22\x2f\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\ +\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\x5f\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ +\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\x20\ +\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ +\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ +\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ +\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ +\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ +\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ +\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ +\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ +\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x4c\ +\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ +\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\ +\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\ +\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\ +\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\ +\x22\x30\x70\x78\x22\x0a\x09\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ +\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\ +\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\ +\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\ +\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\ +\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x3c\x67\x3e\x0a\x09\x0a\x09\x09\x3c\x72\x65\ +\x63\x74\x20\x78\x3d\x22\x31\x37\x38\x2e\x38\x34\x36\x22\x20\x79\ +\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\x20\x74\x72\x61\x6e\x73\x66\ +\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x2d\x30\x2e\x37\ +\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\x31\x20\x30\x2e\x37\x30\ +\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\x31\x20\x32\x32\x34\x2e\x33\ +\x34\x37\x36\x20\x36\x33\x31\x2e\x31\x34\x39\x38\x29\x22\x20\x77\ +\x69\x64\x74\x68\x3d\x22\x31\x32\x38\x2e\x30\x38\x35\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x33\x35\x34\x2e\x30\x34\x39\x22\x2f\ +\x3e\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x37\x31\ +\x2e\x37\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x6c\x2d\x34\x38\x2e\ +\x31\x31\x35\x2d\x34\x38\x2e\x31\x31\x34\x63\x2d\x31\x31\x2e\x37\ +\x32\x33\x2d\x31\x31\x2e\x37\x32\x34\x2d\x33\x31\x2e\x35\x35\x38\ +\x2d\x31\x30\x2e\x38\x39\x36\x2d\x34\x34\x2e\x33\x30\x34\x2c\x31\ +\x2e\x38\x35\x6c\x2d\x34\x35\x2e\x32\x30\x32\x2c\x34\x35\x2e\x32\ +\x30\x33\x6c\x39\x30\x2e\x35\x36\x39\x2c\x39\x30\x2e\x35\x36\x38\ +\x6c\x34\x35\x2e\x32\x30\x32\x2d\x34\x35\x2e\x32\x30\x32\x0a\x09\ +\x09\x43\x34\x38\x32\x2e\x36\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\ +\x32\x2c\x34\x38\x33\x2e\x34\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\ +\x36\x2c\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\ +\x7a\x22\x2f\x3e\x0a\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\ +\x6f\x69\x6e\x74\x73\x3d\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\ +\x33\x2e\x32\x35\x32\x20\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\ +\x2e\x37\x33\x37\x2c\x34\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x04\x13\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ \x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ @@ -2411,84 +2243,60 @@ qt_resource_data = b"\ \x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ \x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ -\x27\x36\x33\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\ +\x27\x36\x34\x2e\x30\x30\x30\x31\x70\x74\x27\x20\x68\x65\x69\x67\ \x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ -\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\ -\x35\x38\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x34\x27\x3e\x0a\ +\x78\x3d\x27\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x20\x36\x34\x2e\x30\x30\x30\x31\x20\x36\x34\x27\x3e\x0a\ \x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ \x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ -\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\x34\x30\x39\x34\x20\x31\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ \x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ \x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ -\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x32\x34\x2e\x35\x32\ -\x39\x31\x43\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x32\x30\x2e\x33\ -\x33\x36\x38\x20\x34\x34\x2e\x36\x39\x36\x39\x20\x31\x36\x2e\x39\ -\x33\x38\x33\x20\x33\x32\x2e\x31\x32\x20\x31\x36\x2e\x39\x33\x38\ -\x33\x43\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x31\x36\x2e\x39\x33\ -\x38\x33\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x32\x30\x2e\x33\x33\ -\x36\x38\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x32\x34\x2e\x35\x32\ -\x39\x31\x43\x20\x39\x2e\x33\x34\x37\x34\x32\x20\x32\x38\x2e\x37\ -\x32\x31\x35\x20\x31\x39\x2e\x35\x34\x33\x31\x20\x33\x32\x2e\x31\ -\x32\x20\x33\x32\x2e\x31\x32\x20\x33\x32\x2e\x31\x32\x43\x20\x34\ -\x34\x2e\x36\x39\x36\x39\x20\x33\x32\x2e\x31\x32\x20\x35\x34\x2e\ -\x38\x39\x32\x36\x20\x32\x38\x2e\x37\x32\x31\x35\x20\x35\x34\x2e\ -\x38\x39\x32\x36\x20\x32\x34\x2e\x35\x32\x39\x31\x5a\x27\x20\x66\ -\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\ -\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\ -\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\ -\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ -\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\ -\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\ -\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ -\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\ -\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ -\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\ -\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\ -\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\ -\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x39\x2e\x33\x34\x37\x34\x32\ -\x20\x32\x34\x2e\x35\x32\x39\x31\x4c\x20\x39\x2e\x33\x34\x37\x34\ -\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x4c\x20\x39\x2e\x33\x34\x37\ -\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x43\x20\x39\x2e\x33\x34\ -\x37\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x39\x2e\x33\x34\ -\x37\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x20\x39\x2e\x33\x34\ -\x37\x34\x32\x20\x35\x34\x2e\x38\x39\x32\x36\x43\x20\x39\x2e\x33\ -\x34\x37\x34\x32\x20\x35\x39\x2e\x30\x38\x34\x39\x20\x31\x39\x2e\ -\x35\x34\x33\x31\x20\x36\x32\x2e\x34\x38\x33\x34\x20\x33\x32\x2e\ -\x31\x32\x20\x36\x32\x2e\x34\x38\x33\x34\x43\x20\x34\x34\x2e\x36\ -\x39\x36\x39\x20\x36\x32\x2e\x34\x38\x33\x34\x20\x35\x34\x2e\x38\ -\x39\x32\x36\x20\x35\x39\x2e\x30\x38\x34\x39\x20\x35\x34\x2e\x38\ -\x39\x32\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x4c\x20\x35\x34\x2e\ -\x38\x39\x32\x36\x20\x35\x34\x2e\x38\x39\x32\x36\x4c\x20\x35\x34\ -\x2e\x38\x39\x32\x36\x20\x32\x34\x2e\x35\x32\x39\x31\x27\x20\x66\ -\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\ -\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\ -\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\ -\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ -\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\ -\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\ -\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ -\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\ -\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ -\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x36\x2e\ -\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\ -\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\ -\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x35\x34\x2e\x38\x39\x32\x36\ -\x20\x32\x34\x2e\x35\x32\x39\x31\x43\x20\x35\x34\x2e\x38\x39\x32\ -\x36\x20\x31\x31\x2e\x39\x35\x32\x32\x20\x34\x34\x2e\x36\x39\x36\ -\x39\x20\x31\x2e\x37\x35\x36\x35\x36\x20\x33\x32\x2e\x31\x32\x20\ -\x31\x2e\x37\x35\x36\x35\x36\x43\x20\x31\x39\x2e\x35\x34\x33\x31\ -\x20\x31\x2e\x37\x35\x36\x35\x36\x20\x39\x2e\x33\x34\x37\x34\x32\ -\x20\x31\x31\x2e\x39\x35\x32\x32\x20\x39\x2e\x33\x34\x37\x34\x32\ -\x20\x32\x34\x2e\x35\x32\x39\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\ -\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\ -\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ -\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\ -\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\ -\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\ -\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\ -\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\ -\x33\x2e\x35\x31\x33\x31\x32\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\ -\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x27\x4d\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\x4c\ +\x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ +\x4c\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\x37\ +\x38\x4c\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\x31\ +\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ +\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ +\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ +\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ +\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\ +\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ +\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ +\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ +\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ +\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\ +\x2e\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\ +\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\ +\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ +\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\ +\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\ +\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\ +\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\ +\x20\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\ +\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\ +\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ +\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ +\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ +\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\ +\x63\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\ +\x27\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\ +\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\ +\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\ +\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\ +\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\ +\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\ +\x34\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\ +\x37\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\ +\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\ \x00\x00\x02\xee\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -2538,6 +2346,198 @@ qt_resource_data = b"\ \x32\x0a\x09\x43\x34\x34\x38\x2c\x32\x33\x38\x2e\x33\x2c\x34\x33\ \x34\x2e\x33\x2c\x32\x32\x34\x2c\x34\x31\x37\x2e\x34\x2c\x32\x32\ \x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x04\xa3\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\ +\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\ +\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\ +\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\ +\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\ +\x31\x31\x2e\x31\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\ +\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\ +\x73\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ +\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\ +\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\ +\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\ +\x27\x36\x34\x2e\x30\x30\x30\x31\x70\x74\x27\x20\x68\x65\x69\x67\ +\x68\x74\x3d\x27\x36\x34\x70\x74\x27\x20\x76\x69\x65\x77\x42\x6f\ +\x78\x3d\x27\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x20\x36\x34\x2e\x30\x30\x30\x31\x20\x36\x34\x27\x3e\x0a\ +\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\x67\x65\x31\x27\x3e\x0a\x3c\ +\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ +\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ +\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\ +\x27\x4d\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\x32\x43\ +\x20\x34\x2e\x33\x35\x34\x33\x38\x20\x32\x34\x2e\x39\x32\x38\x37\ +\x20\x38\x2e\x34\x33\x32\x31\x37\x20\x31\x38\x2e\x30\x30\x31\x34\ +\x20\x31\x33\x2e\x39\x36\x38\x37\x20\x31\x32\x2e\x39\x33\x36\x31\ +\x43\x20\x33\x31\x2e\x37\x33\x33\x39\x20\x2d\x33\x2e\x33\x31\x36\ +\x37\x35\x20\x35\x37\x2e\x32\x39\x34\x33\x20\x33\x2e\x35\x39\x37\ +\x39\x37\x20\x35\x38\x2e\x32\x31\x37\x35\x20\x32\x31\x2e\x37\x33\ +\x37\x38\x43\x20\x35\x38\x2e\x36\x37\x38\x38\x20\x33\x30\x2e\x38\ +\x30\x31\x39\x20\x35\x31\x2e\x31\x37\x38\x33\x20\x33\x37\x2e\x36\ +\x34\x34\x31\x20\x34\x32\x2e\x37\x34\x34\x35\x20\x34\x31\x2e\x37\ +\x31\x31\x39\x43\x20\x32\x37\x2e\x34\x36\x34\x36\x20\x34\x39\x2e\ +\x30\x38\x31\x38\x20\x39\x2e\x32\x36\x34\x35\x31\x20\x34\x36\x2e\ +\x30\x39\x36\x34\x20\x36\x2e\x30\x32\x32\x35\x20\x33\x32\x2e\x31\ +\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\ +\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\ +\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ +\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\ +\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\ +\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\ +\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\ +\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\ +\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\x29\ +\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x36\ +\x2e\x30\x32\x32\x35\x27\x20\x63\x79\x3d\x27\x33\x32\x2e\x31\x32\ +\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\ +\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\ +\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ +\x27\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\ +\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\ +\x28\x2e\x39\x39\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\ +\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x33\x2e\x39\x36\x38\x37\x27\ +\x20\x63\x79\x3d\x27\x31\x32\x2e\x39\x33\x36\x31\x27\x20\x66\x69\ +\x6c\x6c\x3d\x27\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\ +\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ +\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\ +\x6e\x73\x6c\x61\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\ +\x31\x37\x2e\x38\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\ +\x36\x32\x36\x34\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\ +\x63\x78\x3d\x27\x35\x38\x2e\x32\x31\x37\x35\x27\x20\x63\x79\x3d\ +\x27\x32\x31\x2e\x37\x33\x37\x38\x27\x20\x66\x69\x6c\x6c\x3d\x27\ +\x23\x66\x66\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\ +\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\ +\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x74\x72\x61\x6e\x73\x6c\x61\ +\x74\x65\x28\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\ +\x35\x38\x29\x73\x63\x61\x6c\x65\x28\x2e\x39\x39\x36\x32\x36\x34\ +\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\ +\x34\x32\x2e\x37\x34\x34\x35\x27\x20\x63\x79\x3d\x27\x34\x31\x2e\ +\x37\x31\x31\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x66\x66\x30\ +\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\ +\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\ +\x00\x00\x01\x1c\ +\x3c\ +\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\ +\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\ +\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\ +\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\ +\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\ +\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\ +\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\ +\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\ +\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\ +\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\ +\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\ +\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\ +\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\ +\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\ +\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\ +\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\ +\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x03\x03\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ +\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\x20\ +\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ +\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ +\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ +\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ +\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ +\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ +\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ +\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ +\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x43\ +\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\ +\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\ +\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\ +\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\ +\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\ +\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\ +\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\ +\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\ +\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\ +\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x2e\x32\x39\ +\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\x2e\x34\x33\x35\x2c\ +\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\x30\x33\x2d\x31\x2e\ +\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\x2e\x36\x31\x2c\x31\ +\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\x35\x2d\x30\x2e\x36\ +\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\x34\x38\x36\x2c\x30\ +\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0a\x09\x63\x30\x2e\x36\x31\ +\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\x34\x38\x38\x2d\x30\x2e\ +\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\x30\x2e\x32\x37\x6c\x32\ +\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\x6c\x35\x2e\x39\x31\x31\ +\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\x30\x37\x2d\x30\x2e\x36\ +\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\x2e\x38\x35\x32\x2c\x31\ +\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\x0a\x09\x63\x30\x2e\x36\ +\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\x30\x2e\x38\x35\x34\x2c\x31\ +\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\x36\x2c\x31\x2e\x39\x32\x4c\ +\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\x33\x34\x63\x2d\x30\x2e\x32\ +\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\x30\x2e\x36\x36\x31\x2c\x30\ +\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\x2c\x30\x2e\x36\x35\x36\x43\ +\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\x39\x39\x38\x2c\x38\x2e\x33\ +\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\x2c\x38\x2e\x32\x39\x34\x2c\ +\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\ +\x3e\x0a\ +\x00\x00\x02\x97\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\ +\x2d\x38\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\x72\ +\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\x75\ +\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\x20\ +\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\x2d\ +\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\x6e\ +\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\x20\ +\x20\x2d\x2d\x3e\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\x20\x73\ +\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\x57\x33\ +\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\x2f\x2f\ +\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\x73\x2f\ +\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\x67\x31\ +\x31\x2e\x64\x74\x64\x22\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\ +\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\x3d\x22\x53\ +\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ +\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\ +\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\ +\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x79\x3d\x22\ +\x35\x31\x32\x70\x78\x22\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\x78\ +\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\ +\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\ +\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\ +\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\ +\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0a\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x35\x2e\x31\x37\x33\x2c\ +\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\x2e\ +\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\x2c\x31\x2e\x31\x2c\x30\ +\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\x68\x31\x32\x63\x31\x2e\ +\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\x39\x2c\x32\x2d\x32\x56\ +\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\x37\x33\x2c\x32\x7a\x20\ +\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\x35\x34\x39\x2d\x30\x2e\ +\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\x0a\x09\x43\x36\x2e\x34\ +\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\x34\x39\x2c\x36\x2c\x38\x56\ +\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\x33\x2c\x34\x68\x2d\x32\x76\ +\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\ +\x2f\x73\x76\x67\x3e\x0a\ " qt_resource_name = b"\ @@ -2545,127 +2545,47 @@ qt_resource_name = b"\ \x00\x6f\xa6\x53\ \x00\x69\ \x00\x63\x00\x6f\x00\x6e\x00\x73\ -\x00\x1c\ -\x08\x8a\x79\x07\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\ -\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x10\ -\x0c\x57\x65\x47\ +\x00\x12\ +\x08\x55\xef\xc7\ \x00\x61\ -\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\ +\x00\x67\ +\x00\x09\ +\x0c\x9b\x89\xe7\ +\x00\x62\ +\x00\x72\x00\x75\x00\x73\x00\x68\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0a\ +\x0a\x2d\x1b\xc7\ +\x00\x63\ +\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x10\ \x08\x89\xfa\x47\ \x00\x63\ \x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x08\ -\x05\xa8\x57\x87\ -\x00\x63\ -\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x08\ -\x04\xb2\x55\x47\ -\x00\x75\ -\x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x0f\ -\x09\x76\x60\xc7\ -\x00\x63\ -\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x14\ -\x0f\xa5\xe0\xc7\ -\x00\x6d\ -\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\ -\x00\x73\x00\x76\x00\x67\ -\x00\x11\ -\x0c\xa7\xc7\x47\ -\x00\x63\ -\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ -\ -\x00\x1d\ -\x06\xec\xf4\xc7\ -\x00\x63\ -\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\ -\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x0f\ -\x04\xf2\xa7\x87\ -\x00\x63\ -\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x09\ -\x0b\x9e\x89\x07\ -\x00\x63\ -\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x16\ -\x01\xfb\x76\x27\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\ -\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x15\ \x0f\xc4\x59\xe7\ \x00\x73\ \x00\x75\x00\x62\x00\x64\x00\x69\x00\x72\x00\x65\x00\x63\x00\x74\x00\x6f\x00\x72\x00\x79\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\ \x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x12\ -\x04\xb2\x21\x47\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\ -\x00\x67\ -\x00\x08\ -\x0c\xf7\x55\x87\ -\x00\x74\ -\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1c\ +\x04\x66\xe1\x67\ +\x00\x63\ +\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\ +\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x12\ \x0c\x5e\xd4\xa7\ \x00\x61\ \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\ \x00\x67\ -\x00\x19\ -\x0a\x43\x45\xc7\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\ -\x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x0f\ -\x07\x0e\xc4\x87\ -\x00\x6f\ -\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x07\ -\x0c\xf8\x5a\x07\ -\x00\x65\ -\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x14\ +\x0f\xa5\xe0\xc7\ +\x00\x6d\ +\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\ +\x00\x73\x00\x76\x00\x67\ \x00\x08\ -\x08\xc8\x55\xe7\ -\x00\x73\ -\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x0a\ -\x0a\x2d\x1b\xc7\ -\x00\x63\ -\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x12\ -\x08\x79\x97\xe7\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\ +\x08\xf7\x57\x07\ \x00\x67\ -\x00\x1b\ -\x0e\xb5\x68\xe7\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\ -\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x08\ -\x0b\xb2\x55\xc7\ -\x00\x72\ -\x00\x65\x00\x64\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x11\ -\x01\x60\xbc\x47\ -\x00\x73\ -\x00\x6f\x00\x63\x00\x69\x00\x61\x00\x6c\x00\x2d\x00\x70\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ -\ -\x00\x19\ -\x0f\xef\x7b\xe7\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2d\x00\x70\x00\x61\x00\x6c\ -\x00\x65\x00\x74\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x10\ -\x06\xe3\xaf\xe7\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x11\ \x0c\xdb\x38\xe7\ \x00\x61\ @@ -2676,119 +2596,199 @@ qt_resource_name = b"\ \x00\x61\ \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x65\x00\x66\x00\x72\x00\x65\x00\x73\x00\x68\x00\x2e\x00\x73\ \x00\x76\x00\x67\ -\x00\x0a\ -\x0f\x68\x53\xe7\ +\x00\x10\ +\x0c\x57\x65\x47\ \x00\x61\ -\x00\x6e\x00\x63\x00\x68\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x10\ +\x08\xe4\xaf\x47\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x11\ +\x0c\xa7\xc7\x47\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\ +\x00\x12\ +\x08\x79\x97\xe7\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\ +\x00\x67\ \x00\x0e\ \x05\xed\x38\x67\ \x00\x61\ \x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x10\ -\x04\xa9\x22\xc7\ -\x00\x66\ -\x00\x69\x00\x6c\x00\x6c\x00\x65\x00\x64\x00\x62\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x08\ -\x08\xf7\x57\x07\ -\x00\x67\ -\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1c\ +\x08\x8a\x79\x07\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\ +\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x12\ -\x08\x55\xef\xc7\ +\x04\xb2\x21\x47\ \x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\ \x00\x67\ \x00\x0a\ +\x01\xca\x6d\x87\ +\x00\x62\ +\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0a\ \x0a\xc8\x62\x67\ \x00\x63\ \x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x08\ -\x0b\x07\x57\xa7\ -\x00\x65\ -\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x17\ -\x07\x87\x48\x27\ -\x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\ -\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x11\ +\x01\x60\xbc\x47\ +\x00\x73\ +\x00\x6f\x00\x63\x00\x69\x00\x61\x00\x6c\x00\x2d\x00\x70\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\ \x00\x10\ -\x08\xe4\xaf\x47\ +\x06\xe3\xaf\xe7\ \x00\x61\ -\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x1c\ -\x04\x66\xe1\x67\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x16\ +\x01\xfb\x76\x27\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\ +\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x05\xa8\x57\x87\ +\x00\x63\ +\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x19\ +\x0f\xef\x7b\xe7\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2d\x00\x70\x00\x61\x00\x6c\ +\x00\x65\x00\x74\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1d\ +\x06\xec\xf4\xc7\ \x00\x63\ \x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\ -\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x09\ -\x0c\x9b\x89\xe7\ -\x00\x62\ -\x00\x72\x00\x75\x00\x73\x00\x68\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x0b\xb2\x55\xc7\ +\x00\x72\ +\x00\x65\x00\x64\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x04\xb2\x55\x47\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0d\ \x05\x20\xce\x87\ \x00\x6f\ \x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x17\ +\x07\x87\x48\x27\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\ +\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0f\ +\x09\x76\x60\xc7\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x19\ +\x0a\x43\x45\xc7\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\ +\x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0a\ +\x0f\x68\x53\xe7\ +\x00\x61\ +\x00\x6e\x00\x63\x00\x68\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x17\ \x06\xc6\x02\xa7\ \x00\x74\ \x00\x72\x00\x69\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2d\x00\x73\x00\x74\x00\x72\x00\x6f\x00\x6b\x00\x65\x00\x64\x00\x2d\ \x00\x31\x00\x35\x00\x2e\x00\x73\x00\x76\x00\x67\ -\x00\x0a\ -\x01\xca\x6d\x87\ -\x00\x62\ -\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x10\ +\x04\xa9\x22\xc7\ +\x00\x66\ +\x00\x69\x00\x6c\x00\x6c\x00\x65\x00\x64\x00\x62\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1b\ +\x0e\xb5\x68\xe7\ +\x00\x61\ +\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\ +\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x07\ +\x0c\xf8\x5a\x07\ +\x00\x65\ +\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x0b\x07\x57\xa7\ +\x00\x65\ +\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0f\ +\x07\x0e\xc4\x87\ +\x00\x6f\ +\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0e\ \x0f\xcb\xd5\xc7\ \x00\x70\ \x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0f\ +\x04\xf2\xa7\x87\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x0c\xf7\x55\x87\ +\x00\x74\ +\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x09\ +\x0b\x9e\x89\x07\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x08\xc8\x55\xe7\ +\x00\x73\ +\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x02\ -\x00\x00\x03\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x4e\xfb\ -\x00\x00\x06\x54\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x67\ -\x00\x00\x01\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x28\xd9\ -\x00\x00\x04\x52\x00\x00\x00\x00\x00\x01\x00\x00\x63\xf2\ -\x00\x00\x05\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x58\ -\x00\x00\x04\xba\x00\x01\x00\x00\x00\x01\x00\x00\x6b\x43\ -\x00\x00\x02\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x2b\xbf\ -\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x11\ -\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x21\x2b\ -\x00\x00\x06\x00\x00\x00\x00\x00\x00\x01\x00\x00\x86\x22\ -\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x09\x71\ -\x00\x00\x04\x98\x00\x00\x00\x00\x00\x01\x00\x00\x68\x7e\ -\x00\x00\x06\x20\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x99\ -\x00\x00\x04\x04\x00\x00\x00\x00\x00\x01\x00\x00\x5b\x84\ -\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x4e\ -\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x36\xdb\ -\x00\x00\x05\x50\x00\x00\x00\x00\x00\x01\x00\x00\x78\x9c\ -\x00\x00\x04\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x6f\x3f\ -\x00\x00\x03\x28\x00\x00\x00\x00\x00\x01\x00\x00\x44\x58\ -\x00\x00\x00\x74\x00\x00\x00\x00\x00\x01\x00\x00\x05\x6f\ +\x00\x00\x03\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x90\ +\x00\x00\x02\xea\x00\x00\x00\x00\x00\x01\x00\x00\x36\x92\ +\x00\x00\x03\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x4c\xbe\ +\x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x61\ +\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xd7\ +\x00\x00\x05\x56\x00\x01\x00\x00\x00\x01\x00\x00\x78\xe1\ +\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x33\x64\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x61\x11\ +\x00\x00\x06\x28\x00\x00\x00\x00\x00\x01\x00\x00\x8c\x90\ +\x00\x00\x04\x58\x00\x00\x00\x00\x00\x01\x00\x00\x65\x2c\ +\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x4f\x34\ +\x00\x00\x02\x60\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xab\ +\x00\x00\x05\x22\x00\x00\x00\x00\x00\x01\x00\x00\x74\x13\ +\x00\x00\x03\x46\x00\x00\x00\x00\x00\x01\x00\x00\x46\xff\ +\x00\x00\x03\xec\x00\x00\x00\x00\x00\x01\x00\x00\x58\xee\ +\x00\x00\x05\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x85\x87\ +\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x69\xa3\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x02\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xd2\ -\x00\x00\x05\x84\x00\x00\x00\x00\x00\x01\x00\x00\x7b\xe8\ -\x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x00\x6d\x63\ -\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x12\x2c\ -\x00\x00\x03\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x41\x6d\ -\x00\x00\x02\x88\x00\x00\x00\x00\x00\x01\x00\x00\x34\x65\ -\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x00\x71\xdb\ -\x00\x00\x05\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x75\x39\ -\x00\x00\x01\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x25\xd2\ -\x00\x00\x03\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xb5\ -\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x02\xf4\ -\x00\x00\x02\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x30\x0d\ -\x00\x00\x05\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x82\x44\ -\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x19\x28\ -\x00\x00\x04\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x61\x43\ -\x00\x00\x02\x48\x00\x00\x00\x00\x00\x01\x00\x00\x2e\xed\ -\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x3a\xf2\ -\x00\x00\x03\x52\x00\x00\x00\x00\x00\x01\x00\x00\x47\x72\ -\x00\x00\x04\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x67\x11\ -\x00\x00\x00\xea\x00\x00\x00\x00\x00\x01\x00\x00\x15\x6d\ -\x00\x00\x01\xee\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x4f\ -\x00\x00\x06\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x95\x07\ -\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x56\x6a\ +\x00\x00\x02\x36\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x91\ +\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x09\x65\ +\x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00\x30\x70\ +\x00\x00\x06\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x95\x5e\ +\x00\x00\x01\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x23\xfb\ +\x00\x00\x01\x58\x00\x01\x00\x00\x00\x01\x00\x00\x19\xd6\ +\x00\x00\x04\xac\x00\x00\x00\x00\x00\x01\x00\x00\x6c\xef\ +\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x06\x7a\ +\x00\x00\x04\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x30\ +\x00\x00\x03\x04\x00\x00\x00\x00\x00\x01\x00\x00\x3c\x32\ +\x00\x00\x05\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x82\x24\ +\x00\x00\x06\x62\x00\x00\x00\x00\x00\x01\x00\x00\x92\x57\ +\x00\x00\x04\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x5c\xcb\ +\x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x21\x80\ +\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x11\xc3\ +\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x02\x9c\ +\x00\x00\x02\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x26\x6b\ +\x00\x00\x01\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xb2\ +\x00\x00\x06\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x91\x37\ +\x00\x00\x05\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x44\ +\x00\x00\x05\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x01\ +\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x72\xa6\ +\x00\x00\x01\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x16\x1b\ +\x00\x00\x00\x92\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x67\ +\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x89\x9e\ +\x00\x00\x03\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x53\xd4\ " qt_resource_struct_v2 = b"\ @@ -2796,94 +2796,94 @@ qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x03\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x4e\xfb\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x06\x54\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x67\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x01\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x28\xd9\ -\x00\x00\x01\x86\x34\x85\x88\xf4\ -\x00\x00\x04\x52\x00\x00\x00\x00\x00\x01\x00\x00\x63\xf2\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x05\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x58\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x04\xba\x00\x01\x00\x00\x00\x01\x00\x00\x6b\x43\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x02\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x2b\xbf\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x11\ -\x00\x00\x01\x86\x34\x85\x88\xf9\ -\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x21\x2b\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x06\x00\x00\x00\x00\x00\x00\x01\x00\x00\x86\x22\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x09\x71\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x04\x98\x00\x00\x00\x00\x00\x01\x00\x00\x68\x7e\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x06\x20\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x99\ -\x00\x00\x01\x86\x34\x85\x88\xf9\ -\x00\x00\x04\x04\x00\x00\x00\x00\x00\x01\x00\x00\x5b\x84\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x4e\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x36\xdb\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x05\x50\x00\x00\x00\x00\x00\x01\x00\x00\x78\x9c\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x04\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x6f\x3f\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x03\x28\x00\x00\x00\x00\x00\x01\x00\x00\x44\x58\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x00\x74\x00\x00\x00\x00\x00\x01\x00\x00\x05\x6f\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ +\x00\x00\x03\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x90\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x02\xea\x00\x00\x00\x00\x00\x01\x00\x00\x36\x92\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x03\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x4c\xbe\ +\x00\x00\x01\x88\x93\x94\xc0\x96\ +\x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x61\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xd7\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x05\x56\x00\x01\x00\x00\x00\x01\x00\x00\x78\xe1\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x33\x64\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x61\x11\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x06\x28\x00\x00\x00\x00\x00\x01\x00\x00\x8c\x90\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x04\x58\x00\x00\x00\x00\x00\x01\x00\x00\x65\x2c\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x4f\x34\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x02\x60\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xab\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x05\x22\x00\x00\x00\x00\x00\x01\x00\x00\x74\x13\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x03\x46\x00\x00\x00\x00\x00\x01\x00\x00\x46\xff\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x03\xec\x00\x00\x00\x00\x00\x01\x00\x00\x58\xee\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x05\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x85\x87\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x69\xa3\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x02\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xd2\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x05\x84\x00\x00\x00\x00\x00\x01\x00\x00\x7b\xe8\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x00\x6d\x63\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x12\x2c\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x03\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x41\x6d\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x02\x88\x00\x00\x00\x00\x00\x01\x00\x00\x34\x65\ -\x00\x00\x01\x86\x34\x85\x88\xf4\ -\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x00\x71\xdb\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x05\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x75\x39\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x01\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x25\xd2\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x03\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xb5\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x02\xf4\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x02\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x30\x0d\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x05\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x82\x44\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x19\x28\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x04\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x61\x43\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ -\x00\x00\x02\x48\x00\x00\x00\x00\x00\x01\x00\x00\x2e\xed\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x3a\xf2\ -\x00\x00\x01\x86\x34\x85\x88\xf7\ -\x00\x00\x03\x52\x00\x00\x00\x00\x00\x01\x00\x00\x47\x72\ -\x00\x00\x01\x86\x34\x85\x88\xf6\ -\x00\x00\x04\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x67\x11\ -\x00\x00\x01\x86\x34\x85\x88\xf4\ -\x00\x00\x00\xea\x00\x00\x00\x00\x00\x01\x00\x00\x15\x6d\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x01\xee\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x4f\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x06\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x95\x07\ -\x00\x00\x01\x86\x34\x85\x88\xf8\ -\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x56\x6a\ -\x00\x00\x01\x86\x34\x85\x88\xf5\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x02\x36\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x91\ +\x00\x00\x01\x88\x93\x94\xc0\x96\ +\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x09\x65\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00\x30\x70\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x06\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x95\x5e\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x01\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x23\xfb\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x01\x58\x00\x01\x00\x00\x00\x01\x00\x00\x19\xd6\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x04\xac\x00\x00\x00\x00\x00\x01\x00\x00\x6c\xef\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x06\x7a\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x04\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x30\ +\x00\x00\x01\x88\x93\x94\xc0\x96\ +\x00\x00\x03\x04\x00\x00\x00\x00\x00\x01\x00\x00\x3c\x32\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x05\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x82\x24\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x06\x62\x00\x00\x00\x00\x00\x01\x00\x00\x92\x57\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x04\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x5c\xcb\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x21\x80\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x11\xc3\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x02\x9c\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x02\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x26\x6b\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x01\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xb2\ +\x00\x00\x01\x88\x93\x94\xc0\x96\ +\x00\x00\x06\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x91\x37\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x05\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x44\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x05\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x01\ +\x00\x00\x01\x88\x93\x94\xc0\x97\ +\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x72\xa6\ +\x00\x00\x01\x88\x93\x94\xc0\x96\ +\x00\x00\x01\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x16\x1b\ +\x00\x00\x01\x88\x93\x94\xc0\x98\ +\x00\x00\x00\x92\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x67\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x89\x9e\ +\x00\x00\x01\x88\x93\x94\xc0\x99\ +\x00\x00\x03\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x53\xd4\ +\x00\x00\x01\x88\x93\x94\xc0\x96\ " qt_version = [int(v) for v in QtCore.qVersion().split('.')] diff --git a/graphics/asymptote/GUI/pyUIClass/custMatTransform.py b/graphics/asymptote/GUI/pyUIClass/custMatTransform.py index 8fa36cbc94..19e1e2e587 100644 --- a/graphics/asymptote/GUI/pyUIClass/custMatTransform.py +++ b/graphics/asymptote/GUI/pyUIClass/custMatTransform.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/custMatTransform.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/labelTextEditor.py b/graphics/asymptote/GUI/pyUIClass/labelTextEditor.py index afbf7ea85b..8b7016dadc 100644 --- a/graphics/asymptote/GUI/pyUIClass/labelTextEditor.py +++ b/graphics/asymptote/GUI/pyUIClass/labelTextEditor.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/labelTextEditor.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/setCustomAnchor.py b/graphics/asymptote/GUI/pyUIClass/setCustomAnchor.py index 502f6573ab..d513f96d8f 100644 --- a/graphics/asymptote/GUI/pyUIClass/setCustomAnchor.py +++ b/graphics/asymptote/GUI/pyUIClass/setCustomAnchor.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/setCustomAnchor.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/widg_addLabel.py b/graphics/asymptote/GUI/pyUIClass/widg_addLabel.py index 2199d887d6..df22e1c7ed 100644 --- a/graphics/asymptote/GUI/pyUIClass/widg_addLabel.py +++ b/graphics/asymptote/GUI/pyUIClass/widg_addLabel.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/widg_addLabel.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/widg_addPolyOpt.py b/graphics/asymptote/GUI/pyUIClass/widg_addPolyOpt.py index 2c58c5f2d1..c9ad76a8de 100644 --- a/graphics/asymptote/GUI/pyUIClass/widg_addPolyOpt.py +++ b/graphics/asymptote/GUI/pyUIClass/widg_addPolyOpt.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/widg_addPolyOpt.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/widg_editBezier.py b/graphics/asymptote/GUI/pyUIClass/widg_editBezier.py index f4c5e5ba78..ccad74fd01 100644 --- a/graphics/asymptote/GUI/pyUIClass/widg_editBezier.py +++ b/graphics/asymptote/GUI/pyUIClass/widg_editBezier.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/widg_editBezier.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/widgetPointEditor.py b/graphics/asymptote/GUI/pyUIClass/widgetPointEditor.py index 53702920c0..b3f94b07fb 100644 --- a/graphics/asymptote/GUI/pyUIClass/widgetPointEditor.py +++ b/graphics/asymptote/GUI/pyUIClass/widgetPointEditor.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/widgetPointEditor.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/GUI/pyUIClass/window1.py b/graphics/asymptote/GUI/pyUIClass/window1.py index 457a67a600..5887ebb2bf 100644 --- a/graphics/asymptote/GUI/pyUIClass/window1.py +++ b/graphics/asymptote/GUI/pyUIClass/window1.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'GUI/windows/window1.ui' # -# Created by: PyQt5 UI code generator 5.15.6 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/graphics/asymptote/LspCpp/CMakeLists.txt b/graphics/asymptote/LspCpp/CMakeLists.txt index fe35bfcb8c..8def30abce 100644 --- a/graphics/asymptote/LspCpp/CMakeLists.txt +++ b/graphics/asymptote/LspCpp/CMakeLists.txt @@ -38,6 +38,7 @@ option_if_not_defined(USE_SYSTEM_RAPIDJSON "Use system RapidJSON instead of the option_if_not_defined(LSPCPP_WARNINGS_AS_ERRORS "Treat warnings as errors" OFF) option_if_not_defined(LSPCPP_BUILD_EXAMPLES "Build example applications" OFF) option_if_not_defined(LSPCPP_BUILD_FUZZER "Build fuzzer" OFF) +option_if_not_defined(LSPCPP_BUILD_WEBSOCKETS "Build websocket server" ON) option_if_not_defined(LSPCPP_ASAN "Build lsp with address sanitizer" OFF) option_if_not_defined(LSPCPP_MSAN "Build lsp with memory sanitizer" OFF) option_if_not_defined(LSPCPP_TSAN "Build lsp with thread sanitizer" OFF) @@ -241,7 +242,7 @@ foreach(include_dir ${LSPCPP_THIRD_PARTY_DIR_LIST}) endforeach() ### Sources -set(LSPCPP_LIST +set(JSONRPC_LIST src/jsonrpc/Context.cpp src/jsonrpc/Endpoint.cpp src/jsonrpc/GCThreadContext.cpp @@ -252,8 +253,8 @@ set(LSPCPP_LIST src/jsonrpc/StreamMessageProducer.cpp src/jsonrpc/TcpServer.cpp src/jsonrpc/threaded_queue.cpp - src/jsonrpc/WebSocketServer.cpp - +) +set(LSPCPP_LIST src/lsp/initialize.cpp src/lsp/lsp.cpp src/lsp/lsp_diagnostic.cpp @@ -265,7 +266,15 @@ set(LSPCPP_LIST src/lsp/working_files.cpp ) +if(LSPCPP_BUILD_WEBSOCKETS) + set(JSONRPC_LIST + ${JSONRPC_LIST} + src/jsonrpc/WebSocketServer.cpp + ) +endif() + target_sources(lspcpp PRIVATE + ${JSONRPC_LIST} ${LSPCPP_LIST}) ### Compile options diff --git a/graphics/asymptote/LspCpp/examples/StdIOClientExample.cpp b/graphics/asymptote/LspCpp/examples/StdIOClientExample.cpp index 1c75974912..7683808ab4 100644 --- a/graphics/asymptote/LspCpp/examples/StdIOClientExample.cpp +++ b/graphics/asymptote/LspCpp/examples/StdIOClientExample.cpp @@ -22,6 +22,7 @@ #include <boost/asio.hpp> #include <iostream> +#include <thread> using namespace boost::asio::ip; using namespace std; diff --git a/graphics/asymptote/LspCpp/examples/StdIOServerExample.cpp b/graphics/asymptote/LspCpp/examples/StdIOServerExample.cpp index 028283ab8d..8b2d2b2d29 100644 --- a/graphics/asymptote/LspCpp/examples/StdIOServerExample.cpp +++ b/graphics/asymptote/LspCpp/examples/StdIOServerExample.cpp @@ -20,6 +20,8 @@ #include <boost/filesystem.hpp> #include <boost/asio.hpp> #include <iostream> +#include <thread> + using namespace boost::asio::ip; using namespace std; class DummyLog :public lsp::Log diff --git a/graphics/asymptote/LspCpp/examples/TcpServerExample.cpp b/graphics/asymptote/LspCpp/examples/TcpServerExample.cpp index 42ed73407e..37a4266c94 100644 --- a/graphics/asymptote/LspCpp/examples/TcpServerExample.cpp +++ b/graphics/asymptote/LspCpp/examples/TcpServerExample.cpp @@ -19,6 +19,8 @@ #include <boost/filesystem.hpp> #include <boost/asio.hpp> #include <iostream> +#include <thread> + using namespace boost::asio::ip; using namespace std; class DummyLog :public lsp::Log diff --git a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/optionalVersion.h b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/optionalVersion.h new file mode 100644 index 0000000000..f767b18f90 --- /dev/null +++ b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/optionalVersion.h @@ -0,0 +1,13 @@ +#ifndef boost +#if __cplusplus < 201703L + +#include <boost/optional.hpp> +using boost::optional; + +#else + +#include <optional> +using std::optional; + +#endif +#endif diff --git a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h index 477c822845..1763c84f5f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h @@ -1,11 +1,6 @@ #pragma once #include "macro_map.h" -#ifdef boost -#include "optional.hpp" -#else -#include <boost/optional.hpp> -#endif #include <cassert> #include <memory> @@ -16,6 +11,7 @@ #include <map> #include <algorithm> +#include "optionalVersion.h" struct AbsolutePath; @@ -205,9 +201,8 @@ void Reflect(Reader& visitor, SerializeFormat& value); void Reflect(Writer& visitor, SerializeFormat& value); //// Type constructors - template <typename T> -void Reflect(Reader& visitor, boost::optional<T>& value) { +void Reflect(Reader& visitor, optional<T>& value) { if (visitor.IsNull()) { visitor.GetNull(); return; @@ -217,7 +212,7 @@ void Reflect(Reader& visitor, boost::optional<T>& value) { value = std::move(real_value); } template <typename T> -void Reflect(Writer& visitor, boost::optional<T>& value) { +void Reflect(Writer& visitor, optional<T>& value) { if (value) Reflect(visitor, *value); else @@ -226,7 +221,7 @@ void Reflect(Writer& visitor, boost::optional<T>& value) { template <typename T> -void ReflectMember(Writer& visitor, const char* name, boost::optional<T>& value) { +void ReflectMember(Writer& visitor, const char* name, optional<T>& value) { // For TypeScript optional property key?: value in the spec, // We omit both key and value if value is std::nullopt (null) for JsonWriter // to reduce output. But keep it for other serialization formats. @@ -237,7 +232,6 @@ void ReflectMember(Writer& visitor, const char* name, boost::optional<T>& value) } - template <typename T> void ReflectMember(Writer& visitor, const char* name, @@ -329,7 +323,7 @@ void ReflectMember(Writer& visitor, const char* name, T& value) { } template<class _Ty1, class _Ty2> -void Reflect(Writer& visitor, std::pair< boost::optional<_Ty1>, boost::optional<_Ty2> >& value) +void Reflect(Writer& visitor, std::pair< optional<_Ty1>, optional<_Ty2> >& value) { if (value.first) { @@ -341,7 +335,7 @@ void Reflect(Writer& visitor, std::pair< boost::optional<_Ty1>, boost::optional } } template<class _Ty2> -void Reflect(Reader& visitor, std::pair< boost::optional<bool>, boost::optional<_Ty2> >& value) +void Reflect(Reader& visitor, std::pair< optional<bool>, optional<_Ty2> >& value) { if(visitor.IsBool()) { @@ -352,7 +346,7 @@ void Reflect(Reader& visitor, std::pair< boost::optional<bool>, boost::optional Reflect(visitor, value.second); } template<class _Ty2> -void Reflect(Reader& visitor, std::pair< boost::optional<std::string>, boost::optional<_Ty2> >& value) +void Reflect(Reader& visitor, std::pair< optional<std::string>, optional<_Ty2> >& value) { if (visitor.IsString()) { @@ -365,7 +359,7 @@ void Reflect(Reader& visitor, std::pair< boost::optional<std::string>, boost::o template<class _Ty1, class _Ty2> -void Reflect(Reader& visitor, std::pair< boost::optional<_Ty1>, boost::optional<_Ty2> >& value) +void Reflect(Reader& visitor, std::pair< optional<_Ty1>, optional<_Ty2> >& value) { try { diff --git a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h index 3e1ba547ca..e8fc6d13ea 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h @@ -1,6 +1,6 @@ #pragma once -#include <boost/optional/optional.hpp> +#include <optional> #include <algorithm> #include <atomic> #include <condition_variable> @@ -11,6 +11,7 @@ #include <utility> #include <vector> +#include "optionalVersion.h" struct MultiQueueWaiter; @@ -156,7 +157,7 @@ struct ThreadedQueue : public BaseThreadQueue { // Get the first element from the queue without blocking. Returns a null // value if the queue is empty. - boost::optional<T> TryDequeue(bool priority) { + optional<T> TryDequeue(bool priority) { std::lock_guard<std::mutex> lock(mutex); auto pop = [&](std::deque<T>* q) { @@ -167,7 +168,7 @@ struct ThreadedQueue : public BaseThreadQueue { }; auto get_result = [&](std::deque<T>* first, - std::deque<T>* second) -> boost::optional<T> { + std::deque<T>* second) -> optional<T> { if (!first->empty()) return pop(first); if (!second->empty()) diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h index 29ab82b1c6..26afc484b6 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h @@ -79,14 +79,14 @@ public: return v3supported && isDynamicRegistrationSupported(textDocument.signatureHelp); } template<typename T> - static bool isDynamicRegistrationSupported(boost::optional<T>& capability) + static bool isDynamicRegistrationSupported(optional<T>& capability) { if(capability) return (capability.value().dynamicRegistration.value()); return false; } - bool isTrue(const boost::optional<bool>& value) + bool isTrue(const optional<bool>& value) { return value.get_value_or(false); } @@ -282,8 +282,8 @@ public: return false; } - bool isTagSupported(const boost::optional < std::pair<boost::optional<bool>, - boost::optional<DiagnosticsTagSupport> > >& tagSupport) { + bool isTagSupported(const optional < std::pair<optional<bool>, + optional<DiagnosticsTagSupport> > >& tagSupport) { if(tagSupport) { auto &v = tagSupport.value(); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h index 1704dd33c6..6c30ce82da 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h @@ -77,7 +77,7 @@ struct lsCodeActionContext { * * See {@link CodeActionKind} for allowed values. */ - boost::optional<std::vector<std::string>> only; + optional<std::vector<std::string>> only; MAKE_SWAP_METHOD(lsCodeActionContext, diagnostics, only); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h index 5ad4e07d8d..bb73d8a46f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h @@ -13,7 +13,7 @@ struct ExecuteCommandParams { * The arguments are typically specified when a command is returned from the server to the client. * Example requests that return a command are textDocument/codeAction or textDocument/codeLens. */ - boost::optional<std::vector<lsp::Any>> arguments; + optional<std::vector<lsp::Any>> arguments; MAKE_SWAP_METHOD(ExecuteCommandParams, command, arguments); }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h index ea60205900..3d317a8153 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h @@ -18,12 +18,12 @@ struct CreateFileOptions{ /** * Overwrite existing file. Overwrite wins over `ignoreIfExists` */ - boost::optional<bool> overwrite = false; + optional<bool> overwrite = false; /** * Ignore if exists. */ - boost::optional< bool> ignoreIfExists =false; + optional< bool> ignoreIfExists =false; MAKE_SWAP_METHOD(CreateFileOptions, overwrite, ignoreIfExists) }; @@ -39,7 +39,7 @@ struct lsCreateFile :public ResourceOperation { /** * Additional options */ - boost::optional<CreateFileOptions> options; + optional<CreateFileOptions> options; /** @@ -47,7 +47,7 @@ struct lsCreateFile :public ResourceOperation { * * @since 3.16.0 */ - boost::optional<lsChangeAnnotationIdentifier> annotationId; + optional<lsChangeAnnotationIdentifier> annotationId; MAKE_SWAP_METHOD(lsCreateFile, kind, uri, options, annotationId) }; @@ -58,12 +58,12 @@ struct DeleteFileOptions { /** * Delete the content recursively if a folder is denoted. */ - boost::optional<bool> recursive = false; + optional<bool> recursive = false; /** * Ignore the operation if the file doesn't exist. */ - boost::optional<bool> ignoreIfNotExists = false; + optional<bool> ignoreIfNotExists = false; MAKE_SWAP_METHOD(DeleteFileOptions, recursive, ignoreIfNotExists); @@ -81,7 +81,7 @@ struct lsDeleteFile :public ResourceOperation { /** * Delete options. */ - boost::optional<DeleteFileOptions> options; + optional<DeleteFileOptions> options; MAKE_SWAP_METHOD(lsDeleteFile, kind, uri, options); }; @@ -104,14 +104,14 @@ struct lsRenameFile :public ResourceOperation { /** * Rename options. */ - boost::optional<RenameFileOptions> options; + optional<RenameFileOptions> options; /** * An optional annotation identifer describing the operation. * * @since 3.16.0 */ - boost::optional<lsChangeAnnotationIdentifier> annotationId; + optional<lsChangeAnnotationIdentifier> annotationId; MAKE_SWAP_METHOD(lsRenameFile, kind, oldUri, newUri, options, annotationId) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h index 56f09a0a53..8fbe2caa8d 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h @@ -35,7 +35,7 @@ struct MoveParams { /** * The code action params when the move operation is triggered. */ - boost::optional<lsCodeActionParams> params; + optional<lsCodeActionParams> params; /** * The possible destination: a folder/package, class, instanceDeclaration. */ diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h index 131612dc2e..23549ecbcc 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h @@ -47,7 +47,7 @@ struct GetRefactorEditParams std::string command; std::vector<lsp::Any> commandArguments; lsCodeActionParams context; - boost::optional<lsFormattingOptions> options; + optional<lsFormattingOptions> options; MAKE_SWAP_METHOD(GetRefactorEditParams, command, context, options); }; MAKE_REFLECT_STRUCT(GetRefactorEditParams, command, context, options); @@ -65,9 +65,9 @@ struct RefactorWorkspaceEdit { * command, first the edit is executed and then the command. */ - boost::optional<std::string> errorMessage; + optional<std::string> errorMessage; - boost::optional < lsCommandWithAny > command; + optional < lsCommandWithAny > command; MAKE_SWAP_METHOD(RefactorWorkspaceEdit, edit, command, errorMessage) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h index 18a2f9999e..6639ad2cf4 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h @@ -13,9 +13,9 @@ struct SearchSymbolParams :public WorkspaceSymbolParams { - boost::optional<std::string> projectName; - boost::optional< bool >sourceOnly; - boost::optional< int> maxResults; + optional<std::string> projectName; + optional< bool >sourceOnly; + optional< int> maxResults; MAKE_SWAP_METHOD(SearchSymbolParams, query, projectName, sourceOnly, maxResults); }; MAKE_REFLECT_STRUCT(SearchSymbolParams, query, projectName, sourceOnly, maxResults); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h index 0823469ba9..6752c40812 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h @@ -1,6 +1,6 @@ #pragma once #include <string> -#include <boost/optional.hpp> +#include <optional> #include "LibLsp/JsonRpc/RequestInMessage.h" #include "LibLsp/lsp/lsDocumentUri.h" #include "LibLsp/lsp/lsAny.h" @@ -18,8 +18,8 @@ struct LintRule return name + " (" + key + ")"; } bool activeByDefault = true; - boost::optional<std::string> severity; - boost::optional<std::string> type; + optional<std::string> severity; + optional<std::string> type; int icon_index = -1; MAKE_SWAP_METHOD(LintRule, key, name, activeByDefault, severity, type); @@ -29,25 +29,25 @@ MAKE_REFLECT_STRUCT(LintRule, key, name, activeByDefault, severity, type); struct RuleParameter { std::string name; - boost::optional<std::string> description; - boost::optional<std::string> defaultValue; + optional<std::string> description; + optional<std::string> defaultValue; }; MAKE_REFLECT_STRUCT(RuleParameter, name, description, defaultValue); struct ShowRuleDescriptionParams { - boost::optional<std::string> key; + optional<std::string> key; - boost::optional<std::string> name; + optional<std::string> name; - boost::optional<std::string> htmlDescription; + optional<std::string> htmlDescription; - boost::optional<std::string> type; + optional<std::string> type; - boost::optional<std::string> severity; + optional<std::string> severity; - boost::optional< std::vector<RuleParameter> > parameters; + optional< std::vector<RuleParameter> > parameters; MAKE_SWAP_METHOD(ShowRuleDescriptionParams, key, name, htmlDescription, type, severity, parameters) @@ -82,7 +82,7 @@ struct ServerConnectionSettings { std::string connectionId; std::string serverUrl; std::string token; - boost::optional<std::string> organizationKey; + optional<std::string> organizationKey; MAKE_SWAP_METHOD(ServerConnectionSettings, connectionId, serverUrl, token, organizationKey) }; @@ -114,28 +114,28 @@ struct RuleSetting off(); } } - boost::optional< std::map<std::string, std::string > > parameters; + optional< std::map<std::string, std::string > > parameters; }; MAKE_REFLECT_STRUCT(RuleSetting, level, parameters) struct ConsoleParams { - boost::optional < bool >showAnalyzerLogs; - boost::optional < bool >showVerboseLogs; + optional < bool >showAnalyzerLogs; + optional < bool >showVerboseLogs; MAKE_SWAP_METHOD(ConsoleParams, showAnalyzerLogs, showVerboseLogs) }; MAKE_REFLECT_STRUCT(ConsoleParams, showAnalyzerLogs, showVerboseLogs) struct SonarLintWorkspaceSettings { - boost::optional < bool > disableTelemetry; - boost::optional < std::map<std::string, ServerConnectionSettings> >connectedMode; - boost::optional<std::map<std::string, RuleSetting>> rules; - boost::optional<ConsoleParams> output; + optional < bool > disableTelemetry; + optional < std::map<std::string, ServerConnectionSettings> >connectedMode; + optional<std::map<std::string, RuleSetting>> rules; + optional<ConsoleParams> output; - boost::optional<std::string > pathToNodeExecutable; + optional<std::string > pathToNodeExecutable; - boost::optional< std::map<std::string, std::string > > getConfigurationParameters(const std::string& ruleKey); + optional< std::map<std::string, std::string > > getConfigurationParameters(const std::string& ruleKey); }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h index c07cc8149d..145c63087f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h @@ -7,7 +7,7 @@ struct ClientInfo { std::string name; - boost::optional<std::string> version; + optional<std::string> version; MAKE_SWAP_METHOD(ClientInfo,name,version); }; @@ -18,14 +18,14 @@ struct lsInitializeParams { // the server. Is null if the process has not been started by another process. // If the parent process is not alive then the server should exit (see exit // notification) its process. - boost::optional<int> processId; + optional<int> processId; /** * Information about the client * * @since 3.15.0 */ - boost::optional<ClientInfo> clientInfo; + optional<ClientInfo> clientInfo; /** * The locale the client is currently showing the user interface * in. This must not necessarily be the locale of the operating @@ -36,32 +36,32 @@ struct lsInitializeParams { * * @since 3.16.0 */ - boost::optional<std::string> locale; + optional<std::string> locale; // The rootPath of the workspace. Is null // if no folder is open. // // @deprecated in favour of rootUri. - boost::optional<std::string> rootPath; + optional<std::string> rootPath; // The rootUri of the workspace. Is null if no // folder is open. If both `rootPath` and `rootUri` are set // `rootUri` wins. - boost::optional<lsDocumentUri> rootUri; + optional<lsDocumentUri> rootUri; // User provided initialization options. - boost::optional<lsp::Any> initializationOptions; + optional<lsp::Any> initializationOptions; // The capabilities provided by the client (editor or tool) lsClientCapabilities capabilities; /** - * An boost::optional extension to the protocol. + * An optional extension to the protocol. * To tell the server what client (editor) is talking to it. */ // @Deprecated - boost::optional< std::string >clientName; + optional< std::string >clientName; @@ -85,7 +85,7 @@ struct lsInitializeParams { * * Since 3.6.0 */ - boost::optional< std::vector<WorkspaceFolder> > workspaceFolders; + optional< std::vector<WorkspaceFolder> > workspaceFolders; MAKE_SWAP_METHOD(lsInitializeParams, processId, diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/exit.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/exit.h index 02fe216017..bef9cad31d 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/exit.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/exit.h @@ -4,4 +4,4 @@ /** * A notification to ask the server to exit its process. */ -DEFINE_NOTIFICATION_TYPE(Notify_Exit, boost::optional<JsonNull>, "exit"); +DEFINE_NOTIFICATION_TYPE(Notify_Exit, optional<JsonNull>, "exit"); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h index 29129565e4..4ec9744258 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h @@ -18,7 +18,7 @@ struct MarkdownClientCapabilities { /** * The version of the parser. */ - boost::optional<std::string> version; + optional<std::string> version; MAKE_SWAP_METHOD(MarkdownClientCapabilities, parser, version) }; @@ -26,19 +26,19 @@ MAKE_REFLECT_STRUCT(MarkdownClientCapabilities, parser, version) struct lsClientCapabilities { // Workspace specific client capabilities. - boost::optional<lsWorkspaceClientCapabilites> workspace; + optional<lsWorkspaceClientCapabilites> workspace; // Text document specific client capabilities. - boost::optional<lsTextDocumentClientCapabilities> textDocument; + optional<lsTextDocumentClientCapabilities> textDocument; /** * Window specific client capabilities. */ - boost::optional<lsp::Any> window; + optional<lsp::Any> window; /** * Experimental client capabilities. */ - boost::optional<lsp::Any> experimental; + optional<lsp::Any> experimental; MAKE_SWAP_METHOD(lsClientCapabilities, workspace, textDocument, window, experimental) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h index d62d3e4dfd..e8624681b3 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h @@ -10,7 +10,7 @@ #include "LibLsp/lsp/textDocument/SemanticTokens.h" -extern void Reflect(Reader&, std::pair<boost::optional<lsTextDocumentSyncKind>, boost::optional<lsTextDocumentSyncOptions> >&); +extern void Reflect(Reader&, std::pair<optional<lsTextDocumentSyncKind>, optional<lsTextDocumentSyncOptions> >&); // // Code Action options. @@ -32,7 +32,7 @@ struct CodeLensOptions : WorkDoneProgressOptions { // // Code lens has a resolve provider as well. // - boost::optional<bool> resolveProvider ; + optional<bool> resolveProvider ; MAKE_SWAP_METHOD(CodeLensOptions, workDoneProgress, resolveProvider); }; MAKE_REFLECT_STRUCT(CodeLensOptions, workDoneProgress, resolveProvider) @@ -56,7 +56,7 @@ struct RenameOptions : WorkDoneProgressOptions { // // Renames should be checked and tested before being executed. // - boost::optional<bool> prepareProvider; + optional<bool> prepareProvider; MAKE_SWAP_METHOD(RenameOptions, workDoneProgress, prepareProvider); }; MAKE_REFLECT_STRUCT(RenameOptions,workDoneProgress,prepareProvider) @@ -65,11 +65,11 @@ struct DocumentFilter{ // // A language id, like `typescript`. // - boost::optional<std::string> language; + optional<std::string> language; // // A Uri [scheme](#Uri.scheme), like `file` or `untitled`. // - boost::optional<std::string>scheme; + optional<std::string>scheme; // // A glob pattern, like `*.{ts,js}`. // @@ -85,7 +85,7 @@ struct DocumentFilter{ // (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but // not `example.0`) // - boost::optional<std::string>pattern; + optional<std::string>pattern; MAKE_SWAP_METHOD(DocumentFilter, language, scheme, pattern) }; MAKE_REFLECT_STRUCT(DocumentFilter, language, scheme, pattern) @@ -96,7 +96,7 @@ using DocumentSelector = std::vector<DocumentFilter>; // Document link options struct lsDocumentLinkOptions :WorkDoneProgressOptions { // Document links have a resolve provider as well. - boost::optional<bool> resolveProvider; + optional<bool> resolveProvider; MAKE_SWAP_METHOD(lsDocumentLinkOptions, workDoneProgress, resolveProvider); }; MAKE_REFLECT_STRUCT(lsDocumentLinkOptions, workDoneProgress,resolveProvider); @@ -116,7 +116,7 @@ struct TextDocumentRegistrationOptions // A document selector to identify the scope of the registration. If set to null // the document selector provided on the client side will be used. // - boost::optional<DocumentSelector> documentSelector; + optional<DocumentSelector> documentSelector; MAKE_SWAP_METHOD(TextDocumentRegistrationOptions, documentSelector); }; @@ -131,7 +131,7 @@ struct StaticRegistrationOptions :public TextDocumentRegistrationOptions // The id used to register the request. The id can be used to deregister // the request again. See also Registration#id. // - boost::optional<std::string> id; + optional<std::string> id; MAKE_SWAP_METHOD(StaticRegistrationOptions, documentSelector, id) }; MAKE_REFLECT_STRUCT(StaticRegistrationOptions, documentSelector,id) @@ -146,7 +146,7 @@ struct WorkspaceFoldersOptions { // // The server has support for workspace folders // - boost::optional<bool> supported; + optional<bool> supported; // // Whether the server wants to receive workspace folder @@ -157,7 +157,7 @@ struct WorkspaceFoldersOptions { // side. The ID can be used to unregister for these events // using the `client/unregisterCapability` request. // - boost::optional<std::pair< boost::optional<std::string>, boost::optional<bool> > > changeNotifications; + optional<std::pair< optional<std::string>, optional<bool> > > changeNotifications; MAKE_SWAP_METHOD(WorkspaceFoldersOptions, supported, changeNotifications); }; MAKE_REFLECT_STRUCT(WorkspaceFoldersOptions, supported, changeNotifications); @@ -185,7 +185,7 @@ struct lsFileOperationPatternOptions { // // The pattern should be matched ignoring casing. // - boost::optional<bool> ignoreCase; + optional<bool> ignoreCase; MAKE_SWAP_METHOD(lsFileOperationPatternOptions, ignoreCase) }; MAKE_REFLECT_STRUCT(lsFileOperationPatternOptions, ignoreCase) @@ -216,12 +216,12 @@ struct lsFileOperationPattern { // // Matches both if undefined. // - boost::optional<lsFileOperationPatternKind> matches; + optional<lsFileOperationPatternKind> matches; // // Additional options used during matching. // - boost::optional<lsFileOperationPatternOptions> options ; + optional<lsFileOperationPatternOptions> options ; MAKE_SWAP_METHOD(lsFileOperationPattern, glob, matches, options) }; MAKE_REFLECT_STRUCT(lsFileOperationPattern, glob, matches, options) @@ -236,12 +236,12 @@ struct lsFileOperationFilter { // // A Uri like `file` or `untitled`. // - boost::optional<std::string> scheme; + optional<std::string> scheme; // // The actual file operation pattern. // - boost::optional<lsFileOperationPattern> pattern; + optional<lsFileOperationPattern> pattern; MAKE_SWAP_METHOD(lsFileOperationFilter, scheme, pattern) }; MAKE_REFLECT_STRUCT(lsFileOperationFilter, scheme, pattern) @@ -254,7 +254,7 @@ struct lsFileOperationRegistrationOptions { // // The actual filters. // - boost::optional<std::vector<lsFileOperationFilter>> filters; + optional<std::vector<lsFileOperationFilter>> filters; MAKE_SWAP_METHOD(lsFileOperationRegistrationOptions, filters) }; MAKE_REFLECT_STRUCT(lsFileOperationRegistrationOptions, filters) @@ -279,38 +279,38 @@ struct WorkspaceServerCapabilities { // The server is interested in receiving didCreateFiles // notifications. // - boost::optional<lsFileOperationRegistrationOptions> didCreate; + optional<lsFileOperationRegistrationOptions> didCreate; // // The server is interested in receiving willCreateFiles requests. // - boost::optional<lsFileOperationRegistrationOptions> willCreate; + optional<lsFileOperationRegistrationOptions> willCreate; // // The server is interested in receiving didRenameFiles // notifications. // - boost::optional<lsFileOperationRegistrationOptions> didRename; + optional<lsFileOperationRegistrationOptions> didRename; // // The server is interested in receiving willRenameFiles requests. // - boost::optional<lsFileOperationRegistrationOptions> willRename; + optional<lsFileOperationRegistrationOptions> willRename; // // The server is interested in receiving didDeleteFiles file // notifications. // - boost::optional<lsFileOperationRegistrationOptions> didDelete; + optional<lsFileOperationRegistrationOptions> didDelete; // // The server is interested in receiving willDeleteFiles file // requests. // - boost::optional<lsFileOperationRegistrationOptions> willDelete; + optional<lsFileOperationRegistrationOptions> willDelete; MAKE_SWAP_METHOD(lsFileOperations, didCreate, willCreate, didRename, willRename, didDelete, willDelete) }; - boost::optional<lsFileOperations>fileOperations; + optional<lsFileOperations>fileOperations; MAKE_SWAP_METHOD(WorkspaceServerCapabilities, workspaceFolders, fileOperations) @@ -356,24 +356,24 @@ struct SemanticTokensWithRegistrationOptions // Server supports providing semantic tokens for a specific range // of a document. // - boost::optional< std::pair< boost::optional<bool>, boost::optional<lsp::Any> > > range; + optional< std::pair< optional<bool>, optional<lsp::Any> > > range; // // Server supports providing semantic tokens for a full document. // - boost::optional< std::pair< boost::optional<bool>, - boost::optional<SemanticTokensServerFull> > > full; + optional< std::pair< optional<bool>, + optional<SemanticTokensServerFull> > > full; // // A document selector to identify the scope of the registration. If set to null // the document selector provided on the client side will be used. // - boost::optional < std::vector<DocumentFilter> > documentSelector; + optional < std::vector<DocumentFilter> > documentSelector; // // The id used to register the request. The id can be used to deregister // the request again. See also Registration#id. // - boost::optional<std::string> id; + optional<std::string> id; MAKE_SWAP_METHOD(SemanticTokensWithRegistrationOptions, legend, range, full, documentSelector, id) }; MAKE_REFLECT_STRUCT(SemanticTokensWithRegistrationOptions, legend, range, full, documentSelector ,id) @@ -385,20 +385,20 @@ struct lsServerCapabilities { // defining each notification or for backwards compatibility the // TextDocumentSyncKind number. - boost::optional< std::pair<boost::optional<lsTextDocumentSyncKind>, - boost::optional<lsTextDocumentSyncOptions> >> textDocumentSync; + optional< std::pair<optional<lsTextDocumentSyncKind>, + optional<lsTextDocumentSyncOptions> >> textDocumentSync; // The server provides hover support. - boost::optional<bool> hoverProvider; + optional<bool> hoverProvider; // The server provides completion support. - boost::optional < lsCompletionOptions > completionProvider; + optional < lsCompletionOptions > completionProvider; // The server provides signature help support. - boost::optional < lsSignatureHelpOptions > signatureHelpProvider; + optional < lsSignatureHelpOptions > signatureHelpProvider; // The server provides goto definition support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > definitionProvider; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > definitionProvider; // @@ -406,44 +406,44 @@ struct lsServerCapabilities { // // Since 3.6.0 // - boost::optional< std::pair< boost::optional<bool>, boost::optional<StaticRegistrationOptions> > > typeDefinitionProvider ; + optional< std::pair< optional<bool>, optional<StaticRegistrationOptions> > > typeDefinitionProvider ; // The server provides implementation support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<StaticRegistrationOptions> > > implementationProvider ; + optional< std::pair< optional<bool>, optional<StaticRegistrationOptions> > > implementationProvider ; // The server provides find references support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > referencesProvider ; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > referencesProvider ; // The server provides document highlight support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentHighlightProvider ; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > documentHighlightProvider ; // The server provides document symbol support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentSymbolProvider ; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > documentSymbolProvider ; // The server provides workspace symbol support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > workspaceSymbolProvider ; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > workspaceSymbolProvider ; // The server provides code actions. - boost::optional< std::pair< boost::optional<bool>, boost::optional<CodeActionOptions> > > codeActionProvider ; + optional< std::pair< optional<bool>, optional<CodeActionOptions> > > codeActionProvider ; // The server provides code lens. - boost::optional<CodeLensOptions> codeLensProvider; + optional<CodeLensOptions> codeLensProvider; // The server provides document formatting. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentFormattingProvider ; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > documentFormattingProvider ; // The server provides document range formatting. - boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentRangeFormattingProvider ; + optional< std::pair< optional<bool>, optional<WorkDoneProgressOptions> > > documentRangeFormattingProvider ; // The server provides document formatting on typing. - boost::optional<lsDocumentOnTypeFormattingOptions> documentOnTypeFormattingProvider; + optional<lsDocumentOnTypeFormattingOptions> documentOnTypeFormattingProvider; // The server provides rename support. - boost::optional< std::pair< boost::optional<bool>, boost::optional<RenameOptions> > > renameProvider; + optional< std::pair< optional<bool>, optional<RenameOptions> > > renameProvider; // The server provides document link support. - boost::optional<lsDocumentLinkOptions > documentLinkProvider; + optional<lsDocumentLinkOptions > documentLinkProvider; // @@ -451,7 +451,7 @@ struct lsServerCapabilities { // // @since 3.6.0 // - boost::optional< std::pair< boost::optional<bool>, boost::optional<DocumentColorOptions> > > colorProvider; + optional< std::pair< optional<bool>, optional<DocumentColorOptions> > > colorProvider; // @@ -459,22 +459,22 @@ struct lsServerCapabilities { // // @since 3.10.0 // - boost::optional < std::pair< boost::optional<bool>, boost::optional<FoldingRangeOptions> > > foldingRangeProvider; + optional < std::pair< optional<bool>, optional<FoldingRangeOptions> > > foldingRangeProvider; // The server provides execute command support. - boost::optional < lsExecuteCommandOptions >executeCommandProvider; + optional < lsExecuteCommandOptions >executeCommandProvider; // // Workspace specific server capabilities // - boost::optional< WorkspaceServerCapabilities > workspace; + optional< WorkspaceServerCapabilities > workspace; // // Semantic highlighting server capabilities. // - boost::optional< SemanticHighlightingServerCapabilities >semanticHighlighting; + optional< SemanticHighlightingServerCapabilities >semanticHighlighting; // // Server capability for calculating super- and subtype hierarchies. @@ -486,31 +486,31 @@ struct lsServerCapabilities { // language feature</a> is not yet part of the official LSP specification. // - boost::optional< std::pair< boost::optional<bool>, - boost::optional<StaticRegistrationOptions> > > typeHierarchyProvider; + optional< std::pair< optional<bool>, + optional<StaticRegistrationOptions> > > typeHierarchyProvider; // // The server provides Call Hierarchy support. // - boost::optional< std::pair< boost::optional<bool>, - boost::optional<StaticRegistrationOptions> > > callHierarchyProvider; + optional< std::pair< optional<bool>, + optional<StaticRegistrationOptions> > > callHierarchyProvider; // // The server provides selection range support. // // Since 3.15.0 // - boost::optional< std::pair< boost::optional<bool>, - boost::optional<StaticRegistrationOptions> > > selectionRangeProvider; + optional< std::pair< optional<bool>, + optional<StaticRegistrationOptions> > > selectionRangeProvider; // // The server provides linked editing range support. // // Since 3.16.0 // - boost::optional< std::pair< boost::optional<bool>, - boost::optional<StaticRegistrationOptions> > > linkedEditingRangeProvider; + optional< std::pair< optional<bool>, + optional<StaticRegistrationOptions> > > linkedEditingRangeProvider; // @@ -518,17 +518,17 @@ struct lsServerCapabilities { // // Since 3.16.0 // - boost::optional < SemanticTokensWithRegistrationOptions> semanticTokensProvider; + optional < SemanticTokensWithRegistrationOptions> semanticTokensProvider; // // Whether server provides moniker support. // // Since 3.16.0 // - boost::optional< std::pair< boost::optional<bool>, - boost::optional<StaticRegistrationOptions> > > monikerProvider; + optional< std::pair< optional<bool>, + optional<StaticRegistrationOptions> > > monikerProvider; - boost::optional<lsp::Any> experimental; + optional<lsp::Any> experimental; MAKE_SWAP_METHOD(lsServerCapabilities, diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h index 4e66bcb7ae..1523254d63 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h @@ -14,7 +14,7 @@ struct WorkDoneProgressOptions { - boost::optional<bool>workDoneProgress; + optional<bool>workDoneProgress; MAKE_SWAP_METHOD(WorkDoneProgressOptions, workDoneProgress); }; MAKE_REFLECT_STRUCT(WorkDoneProgressOptions, workDoneProgress); @@ -24,7 +24,7 @@ struct lsCompletionOptions:WorkDoneProgressOptions { // The server provides support to resolve additional // information for a completion item. - boost::optional<bool> resolveProvider = false; + optional<bool> resolveProvider = false; // // Most tools trigger completion request automatically without explicitly requesting @@ -37,14 +37,14 @@ struct lsCompletionOptions:WorkDoneProgressOptions // an identifier (for example `.` in JavaScript) list them in `triggerCharacters`. // // https://github.com/Microsoft/language-server-protocol/issues/138. - boost::optional< std::vector<std::string> > triggerCharacters ; + optional< std::vector<std::string> > triggerCharacters ; // // The list of all possible characters that commit a completion. This field can be used // if clients don't support individual commmit characters per completion item. See // `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport` // - boost::optional< std::vector<std::string> > allCommitCharacters; + optional< std::vector<std::string> > allCommitCharacters; MAKE_SWAP_METHOD(lsCompletionOptions, workDoneProgress, resolveProvider, triggerCharacters, allCommitCharacters); }; @@ -102,16 +102,16 @@ MAKE_REFLECT_TYPE_PROXY(lsTextDocumentSyncKind) struct lsTextDocumentSyncOptions { // Open and close notifications are sent to the server. - boost::optional<bool> openClose ; + optional<bool> openClose ; // Change notificatins are sent to the server. See TextDocumentSyncKind.None, // TextDocumentSyncKind.Full and TextDocumentSyncKindIncremental. - boost::optional< lsTextDocumentSyncKind> change ; + optional< lsTextDocumentSyncKind> change ; // Will save notifications are sent to the server. - boost::optional<bool> willSave; + optional<bool> willSave; // Will save wait until requests are sent to the server. - boost::optional<bool> willSaveWaitUntil; + optional<bool> willSaveWaitUntil; // Save notifications are sent to the server. - boost::optional<lsSaveOptions> save; + optional<lsSaveOptions> save; MAKE_SWAP_METHOD(lsTextDocumentSyncOptions, openClose, @@ -129,18 +129,18 @@ MAKE_REFLECT_STRUCT(lsTextDocumentSyncOptions, struct SynchronizationCapabilities { // Whether text document synchronization supports dynamic registration. - boost::optional<bool> dynamicRegistration; + optional<bool> dynamicRegistration; // The client supports sending will save notifications. - boost::optional<bool> willSave; + optional<bool> willSave; // The client supports sending a will save request and // waits for a response providing text edits which will // be applied to the document before it is saved. - boost::optional<bool> willSaveWaitUntil; + optional<bool> willSaveWaitUntil; // The client supports did save notifications. - boost::optional<bool> didSave; + optional<bool> didSave; MAKE_SWAP_METHOD(SynchronizationCapabilities, dynamicRegistration, @@ -156,7 +156,7 @@ MAKE_REFLECT_STRUCT(SynchronizationCapabilities, struct CompletionItemKindCapabilities { - boost::optional<std::vector<lsCompletionItemKind> >valueSet; + optional<std::vector<lsCompletionItemKind> >valueSet; MAKE_SWAP_METHOD(CompletionItemKindCapabilities, valueSet); }; MAKE_REFLECT_STRUCT(CompletionItemKindCapabilities, valueSet); @@ -168,26 +168,26 @@ struct CompletionItemCapabilities { // and `${3:foo}`. `$0` defines the final tab stop, it defaults to // the end of the snippet. Placeholders with equal identifiers are linked, // that is typing in one will update others too. - boost::optional<bool> snippetSupport; + optional<bool> snippetSupport; // Client supports commit characters on a completion item. - boost::optional<bool> commitCharactersSupport; + optional<bool> commitCharactersSupport; // Client supports the following content formats for the documentation // property. The order describes the preferred format of the client. - boost::optional< std::vector<std::string> > documentationFormat; + optional< std::vector<std::string> > documentationFormat; // Client supports the deprecated property on a completion item. - boost::optional<bool> deprecatedSupport; + optional<bool> deprecatedSupport; // // Client supports the preselect property on a completion item. // - boost::optional<bool> preselectSupport; + optional<bool> preselectSupport; MAKE_SWAP_METHOD(CompletionItemCapabilities, snippetSupport, @@ -207,25 +207,25 @@ MAKE_REFLECT_STRUCT(CompletionItemCapabilities, // struct CompletionCapabilities { // Whether completion supports dynamic registration. - boost::optional<bool> dynamicRegistration; + optional<bool> dynamicRegistration; // The client supports the following `CompletionItem` specific // capabilities. - boost::optional<CompletionItemCapabilities> completionItem; + optional<CompletionItemCapabilities> completionItem; // // The client supports the following `CompletionItemKind` specific // capabilities. // - boost::optional<CompletionItemKindCapabilities> completionItemKind; + optional<CompletionItemKindCapabilities> completionItemKind; // // The client supports sending additional context information for a // `textDocument/completion` request. // - boost::optional<bool> contextSupport; + optional<bool> contextSupport; MAKE_SWAP_METHOD(CompletionCapabilities, @@ -246,7 +246,7 @@ struct HoverCapabilities:public DynamicRegistrationCapabilities // // See {@link MarkupKind} for allowed values. // - boost::optional<std::vector<std::string>> contentFormat; + optional<std::vector<std::string>> contentFormat; MAKE_SWAP_METHOD(HoverCapabilities, dynamicRegistration, contentFormat); }; @@ -262,7 +262,7 @@ struct ParameterInformationCapabilities { // // Since 3.14.0 // - boost::optional<bool> labelOffsetSupport; + optional<bool> labelOffsetSupport; MAKE_SWAP_METHOD(ParameterInformationCapabilities, labelOffsetSupport); }; @@ -293,7 +293,7 @@ struct SignatureHelpCapabilities :public DynamicRegistrationCapabilities // The client supports the following `SignatureInformation` // specific properties. // - boost::optional< SignatureInformationCapabilities > signatureInformation; + optional< SignatureInformationCapabilities > signatureInformation; MAKE_SWAP_METHOD(SignatureHelpCapabilities, dynamicRegistration, signatureInformation) }; @@ -303,12 +303,12 @@ struct DocumentSymbolCapabilities :public DynamicRegistrationCapabilities { // // Specific capabilities for the `SymbolKind`. // - boost::optional<SymbolKindCapabilities> symbolKind; + optional<SymbolKindCapabilities> symbolKind; // // The client support hierarchical document symbols. // - boost::optional<bool> hierarchicalDocumentSymbolSupport; + optional<bool> hierarchicalDocumentSymbolSupport; MAKE_SWAP_METHOD(DocumentSymbolCapabilities, dynamicRegistration, symbolKind, hierarchicalDocumentSymbolSupport) }; @@ -318,7 +318,7 @@ struct DeclarationCapabilities:public DynamicRegistrationCapabilities{ // // The client supports additional metadata in the form of declaration links. // - boost::optional<bool>linkSupport; + optional<bool>linkSupport; MAKE_SWAP_METHOD(DeclarationCapabilities, dynamicRegistration, linkSupport); }; @@ -335,7 +335,7 @@ struct CodeActionKindCapabilities // // See {@link CodeActionKind} for allowed values. // - boost::optional< std::vector< std::string> >valueSet; + optional< std::vector< std::string> >valueSet; MAKE_SWAP_METHOD(CodeActionKindCapabilities, valueSet) }; @@ -343,7 +343,7 @@ MAKE_REFLECT_STRUCT(CodeActionKindCapabilities,valueSet) struct CodeActionLiteralSupportCapabilities { - boost::optional<CodeActionKindCapabilities> codeActionKind; + optional<CodeActionKindCapabilities> codeActionKind; MAKE_SWAP_METHOD(CodeActionLiteralSupportCapabilities, codeActionKind) }; @@ -354,7 +354,7 @@ struct CodeActionCapabilities:public DynamicRegistrationCapabilities{ // The client support code action literals as a valid // response of the `textDocument/codeAction` request. // - boost::optional<CodeActionLiteralSupportCapabilities> codeActionLiteralSupport; + optional<CodeActionLiteralSupportCapabilities> codeActionLiteralSupport; MAKE_SWAP_METHOD(CodeActionCapabilities, dynamicRegistration, codeActionLiteralSupport) }; @@ -365,7 +365,7 @@ struct RenameCapabilities :public DynamicRegistrationCapabilities { // The client support code action literals as a valid // response of the `textDocument/codeAction` request. // - boost::optional<bool> prepareSupport; + optional<bool> prepareSupport; MAKE_SWAP_METHOD(RenameCapabilities, dynamicRegistration, prepareSupport) }; @@ -385,7 +385,7 @@ struct PublishDiagnosticsClientCapabilities :public DynamicRegistrationCapabilit * The client support code action literals as a valid * response of the `textDocument/codeAction` request. */ - boost::optional<bool> relatedInformation; + optional<bool> relatedInformation; /** * Client supports the tag property to provide meta data about a diagnostic. @@ -398,7 +398,7 @@ struct PublishDiagnosticsClientCapabilities :public DynamicRegistrationCapabilit * * Since 3.15 */ - boost::optional < std::pair<boost::optional<bool>, boost::optional<DiagnosticsTagSupport> > > tagSupport; + optional < std::pair<optional<bool>, optional<DiagnosticsTagSupport> > > tagSupport; /** * Whether the client interprets the version property of the @@ -406,14 +406,14 @@ struct PublishDiagnosticsClientCapabilities :public DynamicRegistrationCapabilit * * Since 3.15.0 */ - boost::optional<bool> versionSupport; + optional<bool> versionSupport; /** * Client supports a codeDescription property * * @since 3.16.0 */ - boost::optional<bool> codeDescriptionSupport ; + optional<bool> codeDescriptionSupport ; /** * Whether code action supports the `data` property which is @@ -422,7 +422,7 @@ struct PublishDiagnosticsClientCapabilities :public DynamicRegistrationCapabilit * * @since 3.16.0 */ - boost::optional<bool> dataSupport ; + optional<bool> dataSupport ; MAKE_SWAP_METHOD(PublishDiagnosticsClientCapabilities, dynamicRegistration, relatedInformation, tagSupport,versionSupport,codeDescriptionSupport,dataSupport) @@ -435,13 +435,13 @@ struct FoldingRangeCapabilities :public DynamicRegistrationCapabilities { // The maximum number of folding ranges that the client prefers to receive per document. The value serves as a // hint, servers are free to follow the limit. // - boost::optional<int> rangeLimit; + optional<int> rangeLimit; // // If set, the client signals that it only supports folding complete lines. If set, client will // ignore specified `startCharacter` and `endCharacter` properties in a FoldingRange. // - boost::optional<bool> lineFoldingOnly; + optional<bool> lineFoldingOnly; MAKE_SWAP_METHOD(FoldingRangeCapabilities, dynamicRegistration, rangeLimit, lineFoldingOnly) }; MAKE_REFLECT_STRUCT(FoldingRangeCapabilities, dynamicRegistration, rangeLimit,lineFoldingOnly) @@ -452,7 +452,7 @@ struct SemanticHighlightingCapabilities :public DynamicRegistrationCapabilities // The client support code action literals as a valid // response of the `textDocument/codeAction` request. // - boost::optional<bool> semanticHighlighting; + optional<bool> semanticHighlighting; MAKE_SWAP_METHOD(SemanticHighlightingCapabilities, dynamicRegistration, semanticHighlighting) }; @@ -478,13 +478,13 @@ struct SemanticTokensClientCapabilities : public DynamicRegistrationCapabilitie // The client will send the `textDocument/semanticTokens/range` request // if the server provides a corresponding handler. // - boost::optional<std::pair< boost::optional<bool>, - boost::optional<SemanticTokensClientCapabilitiesRequestsFull>>> range; + optional<std::pair< optional<bool>, + optional<SemanticTokensClientCapabilitiesRequestsFull>>> range; // // The client will send the `textDocument/semanticTokens/full` request // if the server provides a corresponding handler. // - boost::optional<std::pair< boost::optional<bool>, boost::optional<lsp::Any>>> full; + optional<std::pair< optional<bool>, optional<lsp::Any>>> full; MAKE_SWAP_METHOD(lsRequests, range, full) }; @@ -505,12 +505,12 @@ struct SemanticTokensClientCapabilities : public DynamicRegistrationCapabilitie // // Whether the client supports tokens that can overlap each other. // - boost::optional < bool >overlappingTokenSupport; + optional < bool >overlappingTokenSupport; // // Whether the client supports tokens that can span multiple lines. // - boost::optional < bool > multilineTokenSupport; + optional < bool > multilineTokenSupport; MAKE_SWAP_METHOD(SemanticTokensClientCapabilities, dynamicRegistration,requests, tokenTypes, tokenModifiers, formats, overlappingTokenSupport, multilineTokenSupport) @@ -527,37 +527,37 @@ struct lsTextDocumentClientCapabilities { // Capabilities specific to the `textDocument/completion` - boost::optional<CompletionCapabilities> completion; + optional<CompletionCapabilities> completion; // Capabilities specific to the `textDocument/hover` - boost::optional<HoverCapabilities> hover; + optional<HoverCapabilities> hover; // Capabilities specific to the `textDocument/signatureHelp` - boost::optional<SignatureHelpCapabilities> signatureHelp; + optional<SignatureHelpCapabilities> signatureHelp; // Capabilities specific to the `textDocument/references` - boost::optional<DynamicRegistrationCapabilities> references; + optional<DynamicRegistrationCapabilities> references; // Capabilities specific to the `textDocument/documentHighlight` - boost::optional<DynamicRegistrationCapabilities> documentHighlight; + optional<DynamicRegistrationCapabilities> documentHighlight; // Capabilities specific to the `textDocument/documentSymbol` - boost::optional<DocumentSymbolCapabilities> documentSymbol; + optional<DocumentSymbolCapabilities> documentSymbol; // Capabilities specific to the `textDocument/formatting` - boost::optional<DynamicRegistrationCapabilities> formatting; + optional<DynamicRegistrationCapabilities> formatting; // Capabilities specific to the `textDocument/rangeFormatting` - boost::optional<DynamicRegistrationCapabilities> rangeFormatting; + optional<DynamicRegistrationCapabilities> rangeFormatting; // Capabilities specific to the `textDocument/onTypeFormatting` - boost::optional<DynamicRegistrationCapabilities> onTypeFormatting; + optional<DynamicRegistrationCapabilities> onTypeFormatting; // @@ -565,12 +565,12 @@ struct lsTextDocumentClientCapabilities { // // Since 3.14.0 // - boost::optional< DeclarationCapabilities> declaration; + optional< DeclarationCapabilities> declaration; typedef DeclarationCapabilities DefinitionCapabilities; // Capabilities specific to the `textDocument/definition` - boost::optional<DefinitionCapabilities> definition; + optional<DefinitionCapabilities> definition; @@ -580,23 +580,23 @@ struct lsTextDocumentClientCapabilities { // Since 3.6.0 // typedef DeclarationCapabilities TypeDefinitionCapabilities; - boost::optional<TypeDefinitionCapabilities> typeDefinition; + optional<TypeDefinitionCapabilities> typeDefinition; typedef DeclarationCapabilities ImplementationCapabilities; // Capabilities specific to the `textDocument/implementation` - boost::optional<ImplementationCapabilities> implementation; + optional<ImplementationCapabilities> implementation; // Capabilities specific to the `textDocument/codeAction` - boost::optional<CodeActionCapabilities> codeAction; + optional<CodeActionCapabilities> codeAction; // Capabilities specific to the `textDocument/codeLens` - boost::optional<DynamicRegistrationCapabilities> codeLens; + optional<DynamicRegistrationCapabilities> codeLens; // Capabilities specific to the `textDocument/documentLink` - boost::optional<DynamicRegistrationCapabilities> documentLink; + optional<DynamicRegistrationCapabilities> documentLink; // // Capabilities specific to the `textDocument/documentColor` and the @@ -604,33 +604,33 @@ struct lsTextDocumentClientCapabilities { // // Since 3.6.0 // - boost::optional<DynamicRegistrationCapabilities> colorProvider; + optional<DynamicRegistrationCapabilities> colorProvider; // Capabilities specific to the `textDocument/rename` - boost::optional<RenameCapabilities> rename; + optional<RenameCapabilities> rename; // // Capabilities specific to `textDocument/publishDiagnostics`. // - boost::optional<PublishDiagnosticsClientCapabilities> publishDiagnostics; + optional<PublishDiagnosticsClientCapabilities> publishDiagnostics; // // Capabilities specific to `textDocument/foldingRange` requests. // // Since 3.10.0 // - boost::optional< FoldingRangeCapabilities > foldingRange; + optional< FoldingRangeCapabilities > foldingRange; // // Capabilities specific to {@code textDocument/semanticHighlighting}. // - boost::optional< SemanticHighlightingCapabilities > semanticHighlightingCapabilities; + optional< SemanticHighlightingCapabilities > semanticHighlightingCapabilities; // // Capabilities specific to {@code textDocument/typeHierarchy}. // - boost::optional< DynamicRegistrationCapabilities > typeHierarchyCapabilities; + optional< DynamicRegistrationCapabilities > typeHierarchyCapabilities; @@ -638,35 +638,35 @@ struct lsTextDocumentClientCapabilities { // Capabilities specific to `textDocument/selectionRange` requests // - boost::optional< DynamicRegistrationCapabilities > selectionRange; + optional< DynamicRegistrationCapabilities > selectionRange; // // Capabilities specific to the `textDocument/linkedEditingRange` request. // // @since 3.16.0 // - boost::optional< DynamicRegistrationCapabilities > linkedEditingRange; + optional< DynamicRegistrationCapabilities > linkedEditingRange; // // Capabilities specific to the various call hierarchy requests. // // @since 3.16.0 // - boost::optional< DynamicRegistrationCapabilities > callHierarchy; + optional< DynamicRegistrationCapabilities > callHierarchy; // // Capabilities specific to the various semantic token requests. // // @since 3.16.0 // - boost::optional< SemanticTokensClientCapabilities > semanticTokens; + optional< SemanticTokensClientCapabilities > semanticTokens; // // Capabilities specific to the `textDocument/moniker` request. // // @since 3.16.0 // - boost::optional< DynamicRegistrationCapabilities > moniker; + optional< DynamicRegistrationCapabilities > moniker; MAKE_SWAP_METHOD(lsTextDocumentClientCapabilities, synchronization, diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h index ee672aa111..4b48aec414 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h @@ -26,7 +26,7 @@ struct lschangeAnnotationSupport * for instance all edits labelled with "Changes in Strings" would * be a tree node. */ - boost::optional<bool> groupsOnLabel; + optional<bool> groupsOnLabel; MAKE_SWAP_METHOD(lschangeAnnotationSupport, groupsOnLabel) }; MAKE_REFLECT_STRUCT(lschangeAnnotationSupport, groupsOnLabel) @@ -35,7 +35,7 @@ struct WorkspaceEditCapabilities { /** * The client supports versioned document changes in `WorkspaceEdit`s */ - boost::optional<bool> documentChanges; + optional<bool> documentChanges; /** * The client supports resource changes @@ -44,7 +44,7 @@ struct WorkspaceEditCapabilities { * @deprecated Since LSP introduces resource operations, use {link #resourceOperations} */ - boost::optional<bool> resourceChanges; + optional<bool> resourceChanges; /** * The resource operations the client supports. Clients should at least @@ -52,7 +52,7 @@ struct WorkspaceEditCapabilities { * * @since 3.13.0 */ - boost::optional< std::vector<std::string> > resourceOperations; + optional< std::vector<std::string> > resourceOperations; /** * The failure handling strategy of a client if applying the workspace edit @@ -60,7 +60,7 @@ struct WorkspaceEditCapabilities { * * See {@link FailureHandlingKind} for allowed values. */ - boost::optional<std::string > failureHandling; + optional<std::string > failureHandling; /** * Whether the client normalizes line endings to the client specific @@ -70,7 +70,7 @@ struct WorkspaceEditCapabilities { * * @since 3.16.0 */ - boost::optional<bool> normalizesLineEndings;; + optional<bool> normalizesLineEndings;; /** * Whether the client in general supports change annotations on text edits, @@ -78,7 +78,7 @@ struct WorkspaceEditCapabilities { * * @since 3.16.0 */ - boost::optional<lschangeAnnotationSupport> changeAnnotationSupport; + optional<lschangeAnnotationSupport> changeAnnotationSupport; MAKE_SWAP_METHOD(WorkspaceEditCapabilities, documentChanges, resourceChanges, resourceOperations, failureHandling, normalizesLineEndings, changeAnnotationSupport) @@ -88,7 +88,7 @@ MAKE_REFLECT_STRUCT(WorkspaceEditCapabilities,documentChanges, resourceChanges, struct DynamicRegistrationCapabilities { // Did foo notification supports dynamic registration. - boost::optional<bool> dynamicRegistration; + optional<bool> dynamicRegistration; MAKE_SWAP_METHOD(DynamicRegistrationCapabilities, dynamicRegistration); @@ -102,7 +102,7 @@ MAKE_REFLECT_STRUCT(DynamicRegistrationCapabilities, // Workspace specific client capabilities. struct SymbolKindCapabilities { - boost::optional< std::vector<lsSymbolKind> > valueSet; + optional< std::vector<lsSymbolKind> > valueSet; MAKE_SWAP_METHOD(SymbolKindCapabilities, valueSet) @@ -117,7 +117,7 @@ struct SymbolCapabilities :public DynamicRegistrationCapabilities { /** * Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. */ - boost::optional<SymbolKindCapabilities> symbolKind; + optional<SymbolKindCapabilities> symbolKind; MAKE_SWAP_METHOD(SymbolCapabilities, symbolKind, dynamicRegistration) @@ -132,37 +132,37 @@ struct lsFileOperations * Whether the client supports dynamic registration for file * requests/notifications. */ - boost::optional<bool> dynamicRegistration ; + optional<bool> dynamicRegistration ; /** * The client has support for sending didCreateFiles notifications. */ - boost::optional<bool>didCreate ; + optional<bool>didCreate ; /** * The client has support for sending willCreateFiles requests. */ - boost::optional<bool>willCreate ; + optional<bool>willCreate ; /** * The client has support for sending didRenameFiles notifications. */ - boost::optional<bool>didRename ; + optional<bool>didRename ; /** * The client has support for sending willRenameFiles requests. */ - boost::optional<bool>willRename ; + optional<bool>willRename ; /** * The client has support for sending didDeleteFiles notifications. */ - boost::optional<bool>didDelete ; + optional<bool>didDelete ; /** * The client has support for sending willDeleteFiles requests. */ - boost::optional<bool> willDelete ; + optional<bool> willDelete ; MAKE_SWAP_METHOD(lsFileOperations, dynamicRegistration, didCreate, willCreate, didRename, willRename, didDelete, willDelete) }; @@ -171,28 +171,28 @@ MAKE_REFLECT_STRUCT(lsFileOperations, dynamicRegistration, didCreate, willCreate struct lsWorkspaceClientCapabilites { // The client supports applying batch edits to the workspace. - boost::optional<bool> applyEdit; + optional<bool> applyEdit; // Capabilities specific to `WorkspaceEdit`s - boost::optional<WorkspaceEditCapabilities> workspaceEdit; + optional<WorkspaceEditCapabilities> workspaceEdit; // Capabilities specific to the `workspace/didChangeConfiguration` // notification. - boost::optional<DynamicRegistrationCapabilities> didChangeConfiguration; + optional<DynamicRegistrationCapabilities> didChangeConfiguration; // Capabilities specific to the `workspace/didChangeWatchedFiles` // notification. - boost::optional<DynamicRegistrationCapabilities> didChangeWatchedFiles; + optional<DynamicRegistrationCapabilities> didChangeWatchedFiles; // Capabilities specific to the `workspace/symbol` request. - boost::optional<SymbolCapabilities> symbol; + optional<SymbolCapabilities> symbol; // Capabilities specific to the `workspace/executeCommand` request. - boost::optional<DynamicRegistrationCapabilities> executeCommand; + optional<DynamicRegistrationCapabilities> executeCommand; /** @@ -200,14 +200,14 @@ struct lsWorkspaceClientCapabilites { * * Since 3.6.0 */ - boost::optional<bool> workspaceFolders; + optional<bool> workspaceFolders; /** * The client supports `workspace/configuration` requests. * * Since 3.6.0 */ - boost::optional<bool> configuration; + optional<bool> configuration; /** @@ -216,7 +216,7 @@ struct lsWorkspaceClientCapabilites { * * @since 3.16.0 */ - boost::optional<DynamicRegistrationCapabilities> semanticTokens ; + optional<DynamicRegistrationCapabilities> semanticTokens ; /** * Capabilities specific to the code lens requests scoped to the @@ -224,14 +224,14 @@ struct lsWorkspaceClientCapabilites { * * @since 3.16.0 */ - boost::optional<DynamicRegistrationCapabilities> codeLens ; + optional<DynamicRegistrationCapabilities> codeLens ; /** * The client has support for file requests/notifications. * * @since 3.16.0 */ - boost::optional<lsFileOperations> fileOperations; + optional<lsFileOperations> fileOperations; MAKE_SWAP_METHOD(lsWorkspaceClientCapabilites, applyEdit, diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h index bf70d58842..d21cfc52f8 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h @@ -8,7 +8,7 @@ //and partial result progress to support streaming of results. struct ProgressParams { - std::pair<boost::optional<std::string> , boost::optional<int> > token; + std::pair<optional<std::string> , optional<int> > token; lsp::Any value; MAKE_SWAP_METHOD(ProgressParams, token, value) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/shutdown.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/shutdown.h index 5366ff89d6..2571334503 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/shutdown.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/general/shutdown.h @@ -11,5 +11,5 @@ * that asks the server to exit. */ -DEFINE_REQUEST_RESPONSE_TYPE(td_shutdown, boost::optional<JsonNull>, boost::optional<lsp::Any>, "shutdown"); +DEFINE_REQUEST_RESPONSE_TYPE(td_shutdown, optional<JsonNull>, optional<lsp::Any>, "shutdown"); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/language/language.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/language/language.h index 3f64946972..96b4b61fa9 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/language/language.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/language/language.h @@ -89,7 +89,7 @@ struct ActionableNotification { * */ - boost::optional<lsp::Any> data; + optional<lsp::Any> data; /** diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/location_type.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/location_type.h index c4197917a9..f1d8070bf5 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/location_type.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/location_type.h @@ -35,7 +35,7 @@ struct LocationLink * Used as the underlined span for mouse interaction. Defaults to the word range at * the mouse position. */ - boost::optional<lsRange> originSelectionRange; + optional<lsRange> originSelectionRange; /** * The target resource identifier of this link. diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h index 035382669f..49a917e4f6 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h @@ -64,7 +64,7 @@ namespace lsp template <typename T> bool GetForMapHelper(T& value); bool GetForMapHelper(std::string& value); - bool GetForMapHelper(boost::optional<std::string>& value); + bool GetForMapHelper(optional<std::string>& value); private: std::unique_ptr<Reader> GetReader(); std::unique_ptr<Writer> GetWriter() const; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h index cf0a2aa65b..1b398cae2b 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h @@ -24,24 +24,24 @@ struct CodeAction * * Used to filter code actions. */ - boost::optional < std::string> kind; + optional < std::string> kind; /** * The diagnostics that this code action resolves. */ - boost::optional < std::vector<lsDiagnostic>> diagnostics; + optional < std::vector<lsDiagnostic>> diagnostics; /** * The workspace edit this code action performs. */ - boost::optional < lsWorkspaceEdit >edit; + optional < lsWorkspaceEdit >edit; /** * A command this code action executes. If a code action * provides a edit and a command, first the edit is * executed and then the command. */ - boost::optional< lsCommandWithAny > command; + optional< lsCommandWithAny > command; MAKE_SWAP_METHOD(CodeAction, title, kind, diagnostics, edit, command) }; @@ -50,7 +50,7 @@ struct TextDocumentCodeAction { - typedef std::pair<boost::optional<lsCommandWithAny>, boost::optional<CodeAction> > Either; + typedef std::pair<optional<lsCommandWithAny>, optional<CodeAction> > Either; }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h index 88ced6e41c..2d624c3d99 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h @@ -22,7 +22,7 @@ struct lsCommand { // Arguments to run the command with. // **NOTE** This must be serialized as an array. Use // MAKE_REFLECT_STRUCT_WRITER_AS_ARRAY. - boost::optional<AnyArray> arguments; + optional<AnyArray> arguments; void swap(lsCommand<AnyArray>& arg) noexcept { diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h index cc3ad4bbac..0c3999896b 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h @@ -4,9 +4,9 @@ struct lsFormattingOptions { struct KeyData { - boost::optional<bool> _boolean; - boost::optional<int32_t> _integer; - boost::optional<std::string> _string; + optional<bool> _boolean; + optional<int32_t> _integer; + optional<std::string> _string; }; // Size of a tab in spaces. @@ -19,22 +19,22 @@ struct lsFormattingOptions { * * @since 3.15.0 */ - boost::optional<bool> trimTrailingWhitespace; + optional<bool> trimTrailingWhitespace; /** * Insert a newline character at the end of the file if one does not exist. * * @since 3.15.0 */ - boost::optional<bool> insertFinalNewline; + optional<bool> insertFinalNewline; /** * Trim all newlines after the final newline at the end of the file. * * @since 3.15.0 */ - boost::optional<bool> trimFinalNewlines; - boost::optional<KeyData> key; + optional<bool> trimFinalNewlines; + optional<KeyData> key; MAKE_SWAP_METHOD(lsFormattingOptions, tabSize, insertSpaces, trimTrailingWhitespace, insertFinalNewline, trimFinalNewlines, key) }; MAKE_REFLECT_STRUCT(lsFormattingOptions, tabSize, insertSpaces, trimTrailingWhitespace, insertFinalNewline, trimFinalNewlines, key); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h index 975ee4fed0..8478c055c5 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h @@ -20,7 +20,7 @@ // Note that markdown strings will be sanitized - that means html will be // escaped. struct lsMarkedString { - boost::optional<std::string> language; + optional<std::string> language; std::string value; }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h index 9b0120e3e4..254e76f757 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h @@ -108,7 +108,7 @@ struct lsResponseError { * A primitive or structured value that contains additional * information about the error. Can be omitted. */ - boost::optional<lsp::Any> data; + optional<lsp::Any> data; std::string ToString(); void Write(Writer& visitor); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h index 6f0940c0b2..a46fa22a9e 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h @@ -18,7 +18,7 @@ struct lsTextDocumentPositionParams { /** * Legacy property to support protocol version 1.0 requests. */ - boost::optional<lsDocumentUri> uri; + optional<lsDocumentUri> uri; MAKE_SWAP_METHOD(lsTextDocumentPositionParams, textDocument, position, uri); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h index de06e85e92..29699c9c31 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h @@ -27,13 +27,13 @@ struct lsChangeAnnotation * A flag which indicates that user confirmation is needed * before applying the change. */ - boost::optional<bool> needsConfirmation; + optional<bool> needsConfirmation; /** * A human-readable string which is rendered less prominent in * the user interface. */ - boost::optional < std::string > description; + optional < std::string > description; MAKE_REFLECT_STRUCT(lsChangeAnnotation, label, needsConfirmation, description) }; MAKE_REFLECT_STRUCT(lsChangeAnnotation, label, needsConfirmation, description) @@ -75,7 +75,7 @@ struct lsTextEdit { /** * The actual annotation identifier. */ - boost::optional<lsChangeAnnotationIdentifier> annotationId; + optional<lsChangeAnnotationIdentifier> annotationId; bool operator==(const lsTextEdit& that); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h index 7e8ccbd635..2b17a4fb0b 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h @@ -10,7 +10,7 @@ struct lsVersionedTextDocumentIdentifier { lsDocumentUri uri; // The version number of this document. number | null - boost::optional<int> version; + optional<int> version; lsTextDocumentIdentifier AsTextDocumentIdentifier() const; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h index 4df020d7a2..4caf296c28 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h @@ -33,10 +33,10 @@ struct lsWorkspaceEdit { // version of a text document. Whether a client supports versioned document // edits is expressed via `WorkspaceClientCapabilites.versionedWorkspaceEdit`. // - boost::optional< std::map<std::string, std::vector<lsTextEdit> > > changes; - typedef std::pair < boost::optional<lsTextDocumentEdit>, boost::optional<lsp::Any> > Either; + optional< std::map<std::string, std::vector<lsTextEdit> > > changes; + typedef std::pair < optional<lsTextDocumentEdit>, optional<lsp::Any> > Either; - boost::optional < std::vector< Either > > documentChanges; + optional < std::vector< Either > > documentChanges; /** * A map of change annotations that can be referenced in * `AnnotatedTextEdit`s or create, rename and delete file / folder @@ -47,7 +47,7 @@ struct lsWorkspaceEdit { * * @since 3.16.0 */ - boost::optional< lsChangeAnnotations > changeAnnotations; + optional< lsChangeAnnotations > changeAnnotations; MAKE_SWAP_METHOD(lsWorkspaceEdit, changes, documentChanges, changeAnnotations) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h index d434b31d13..fca45e9cb7 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h @@ -75,20 +75,20 @@ struct lsCompletionItem { // The kind of this completion item. Based of the kind // an icon is chosen by the editor. - boost::optional<lsCompletionItemKind> kind ; + optional<lsCompletionItemKind> kind ; // A human-readable string with additional information // about this item, like type or symbol information. - boost::optional < std::string > detail; + optional < std::string > detail; // A human-readable string that represents a doc-comment. - boost::optional< std::pair<boost::optional< std::string> , boost::optional<MarkupContent> > > documentation; + optional< std::pair<optional< std::string> , optional<MarkupContent> > > documentation; /** * Indicates if this item is deprecated. */ - boost::optional< bool >deprecated; + optional< bool >deprecated; /** @@ -98,7 +98,7 @@ struct lsCompletionItem { * tool / client decides which item that is. The rule is that the *first * item of those that match best is selected. */ - boost::optional< bool > preselect; + optional< bool > preselect; // Internal information to order candidates. @@ -106,33 +106,33 @@ struct lsCompletionItem { // A string that shoud be used when comparing this item // with other items. When `falsy` the label is used. - boost::optional< std::string > sortText; + optional< std::string > sortText; // A string that should be used when filtering a set of // completion items. When `falsy` the label is used. - boost::optional<std::string> filterText; + optional<std::string> filterText; // A string that should be inserted a document when selecting // this completion. When `falsy` the label is used. - boost::optional<std::string> insertText; + optional<std::string> insertText; // The format of the insert text. The format applies to both the `insertText` // property and the `newText` property of a provided `textEdit`. - boost::optional< lsInsertTextFormat> insertTextFormat ; + optional< lsInsertTextFormat> insertTextFormat ; // An edit which is applied to a document when selecting this completion. When // an edit is provided the value of `insertText` is ignored. // // *Note:* The range of the edit must be a single line range and it must // contain the position at which completion has been requested. - boost::optional<lsTextEdit> textEdit; + optional<lsTextEdit> textEdit; - // An boost::optional array of additional text edits that are applied when + // An optional array of additional text edits that are applied when // selecting this completion. Edits must not overlap with the main edit // nor with themselves. // std::vector<TextEdit> additionalTextEdits; - // An boost::optional command that is executed *after* inserting this completion. + // An optional command that is executed *after* inserting this completion. // *Note* that additional modifications to the current document should be // described with the additionalTextEdits-property. Command command; @@ -147,7 +147,7 @@ struct lsCompletionItem { std::string DisplayText(); /** - * An boost::optional array of additional text edits that are applied when + * An optional array of additional text edits that are applied when * selecting this completion. Edits must not overlap (including the same insert position) * with the main edit nor with themselves. * @@ -155,26 +155,26 @@ struct lsCompletionItem { * (for example adding an import statement at the top of the file if the completion item will * insert an unqualified type). */ - boost::optional<std::vector<lsTextEdit> >additionalTextEdits; + optional<std::vector<lsTextEdit> >additionalTextEdits; /** -* An boost::optional set of characters that when pressed while this completion is active will accept it first and +* An optional set of characters that when pressed while this completion is active will accept it first and * then type that character. *Note* that all commit characters should have `length=1` and that superfluous * characters will be ignored. */ - boost::optional< std::vector<std::string> > commitCharacters; + optional< std::vector<std::string> > commitCharacters; /** -* An boost::optional command that is executed *after* inserting this completion. *Note* that +* An optional command that is executed *after* inserting this completion. *Note* that * additional modifications to the current document should be described with the * additionalTextEdits-property. */ - boost::optional<lsCommandWithAny> command; + optional<lsCommandWithAny> command; /** * An data entry field that is preserved on a completion item between a completion and a completion resolve request. */ - boost::optional<lsp::Any> data; + optional<lsp::Any> data; std::string ToString(); MAKE_SWAP_METHOD(lsCompletionItem, label, diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h index 3ddea4b9ee..e05e816b69 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h @@ -1,4 +1,5 @@ #pragma once +#include <optional> #include "lsRange.h" #include "lsTextEdit.h" #include "lsDocumentUri.h" @@ -92,15 +93,15 @@ struct lsDiagnostic { // The diagnostic's severity. Can be omitted. If omitted it is up to the // client to interpret diagnostics as error, warning, info or hint. - boost::optional<lsDiagnosticSeverity> severity; + optional<lsDiagnosticSeverity> severity; // The diagnostic's code. Can be omitted. - boost::optional< std::pair<boost::optional<std::string>, boost::optional<int>> > code; + optional< std::pair<optional<std::string>, optional<int>> > code; - boost::optional<DiagnosticCodeDescription> codeDescription; + optional<DiagnosticCodeDescription> codeDescription; // A human-readable string describing the source of this // diagnostic, e.g. 'typescript' or 'super lint'. - boost::optional < std::string >source ; + optional < std::string >source ; // The diagnostic's message. std::string message; @@ -113,7 +114,7 @@ struct lsDiagnostic { * * @since 3.15.0 */ - boost::optional<std::vector<DiagnosticTag>> tags; + optional<std::vector<DiagnosticTag>> tags; /** @@ -122,7 +123,7 @@ struct lsDiagnostic { * * Since 3.7.0 */ - boost::optional<std::vector<DiagnosticRelatedInformation>> relatedInformation; + optional<std::vector<DiagnosticRelatedInformation>> relatedInformation; /** * A data entry field that is preserved between a @@ -131,7 +132,7 @@ struct lsDiagnostic { * * @since 3.16.0 */ - boost::optional<lsp::Any> data; + optional<lsp::Any> data; bool operator==(const lsDiagnostic& rhs) const; bool operator!=(const lsDiagnostic& rhs) const; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/out_list.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/out_list.h index 60f8ba3c7f..8ede0b4a60 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/out_list.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/out_list.h @@ -15,7 +15,7 @@ namespace LocationListEither{ - typedef std::pair< boost::optional<std::vector<lsLocation>> , boost::optional<std::vector<LocationLink> > > Either; + typedef std::pair< optional<std::vector<lsLocation>> , optional<std::vector<LocationLink> > > Either; }; extern void Reflect(Reader& visitor, LocationListEither::Either& value); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/symbol.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/symbol.h index 87ebfe89ed..216c3f7d13 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/symbol.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/symbol.h @@ -66,7 +66,7 @@ struct lsDocumentHighlight { lsRange range; // The highlight kind, default is DocumentHighlightKind.Text. - boost::optional<lsDocumentHighlightKind> kind ; + optional<lsDocumentHighlightKind> kind ; MAKE_SWAP_METHOD(lsDocumentHighlight, range, kind) }; @@ -85,7 +85,7 @@ struct lsSymbolInformation { /** * Indicates if this symbol is deprecated. */ - boost::optional<bool> deprecated; + optional<bool> deprecated; /** * The location of this symbol. The location's range is used by a tool * to reveal the location in the editor. If the symbol is selected in the @@ -104,7 +104,7 @@ struct lsSymbolInformation { * if necessary). It can't be used to re-infer a hierarchy for the document * symbols. */ - boost::optional<std::string> containerName; + optional<std::string> containerName; MAKE_SWAP_METHOD(lsSymbolInformation, name, kind, deprecated, location, containerName); @@ -144,17 +144,17 @@ struct lsDocumentSymbol { * More detail for this symbol, e.g the signature of a function. If not provided the * name is used. */ - boost::optional< std::string > detail; + optional< std::string > detail; /** * Indicates if this symbol is deprecated. */ - boost::optional< bool > deprecated; + optional< bool > deprecated; /** * Children of this symbol, e.g. properties of a class. */ - boost::optional < std::vector<lsDocumentSymbol> > children; + optional < std::vector<lsDocumentSymbol> > children; //internal use int flags=0; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h index 7f5978ff84..8a24ebdd45 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h @@ -199,7 +199,7 @@ struct SemanticTokens{ * A server can then instead of computing all semantic tokens again simply * send a delta. */ - boost::optional<std::string> resultId; + optional<std::string> resultId; MAKE_SWAP_METHOD(SemanticTokens, data, resultId) }; MAKE_REFLECT_STRUCT(SemanticTokens, data, resultId) @@ -245,12 +245,12 @@ MAKE_REFLECT_STRUCT(SemanticTokensEdit, startToken, deleteTokens, tokens) /// This models LSP SemanticTokensDelta | SemanticTokens, which is the result of /// textDocument/semanticTokens/full/delta. struct SemanticTokensOrDelta { - boost::optional<std::string > resultId; + optional<std::string > resultId; /// Set if we computed edits relative to a previous set of tokens. - boost::optional< std::vector<SemanticTokensEdit> > edits; + optional< std::vector<SemanticTokensEdit> > edits; /// Set if we computed a fresh set of tokens. /// Set if we computed edits relative to a previous set of tokens. - boost::optional<std::vector<int32_t>> tokens; // encoded as integer array + optional<std::vector<int32_t>> tokens; // encoded as integer array MAKE_REFLECT_STRUCT(SemanticTokensOrDelta, resultId, edits, tokens) }; MAKE_REFLECT_STRUCT(SemanticTokensOrDelta, resultId, edits, tokens) @@ -263,5 +263,5 @@ struct SemanticTokensLegend { }; MAKE_REFLECT_STRUCT(SemanticTokensLegend, tokenTypes, tokenModifiers) -DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full, SemanticTokensParams,boost::optional<SemanticTokens >,"textDocument/semanticTokens/full") -DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full_delta, SemanticTokensDeltaParams, boost::optional<SemanticTokensOrDelta >, "textDocument/semanticTokens/full/delta") +DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full, SemanticTokensParams,optional<SemanticTokens >,"textDocument/semanticTokens/full") +DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full_delta, SemanticTokensDeltaParams, optional<SemanticTokensOrDelta >, "textDocument/semanticTokens/full/delta") diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h index 432fa518d5..408767d937 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h @@ -35,10 +35,10 @@ struct CallHierarchyItem { SymbolKind kind; /// Tags for this item. - boost::optional<std::vector<SymbolTag>> tags; + optional<std::vector<SymbolTag>> tags; /// More detaill for this item, e.g. the signature of a function. - boost::optional<std::string> detail; + optional<std::string> detail; /// The resource identifier of this item. lsDocumentUri uri; @@ -60,7 +60,7 @@ struct CallHierarchyItem { * A data entry field that is preserved between a call hierarchy prepare and * incoming calls or outgoing calls requests. */ - boost::optional<lsp::Any> data; + optional<lsp::Any> data; MAKE_SWAP_METHOD(CallHierarchyItem, name, kind, tags, detail, uri, range, selectionRange, data) }; MAKE_REFLECT_STRUCT(CallHierarchyItem, name, kind, tags, detail, uri, range, selectionRange, data) @@ -112,10 +112,10 @@ MAKE_REFLECT_STRUCT(CallHierarchyOutgoingCall, to, fromRanges) DEFINE_REQUEST_RESPONSE_TYPE(td_prepareCallHierarchy, CallHierarchyPrepareParams, - boost::optional<std::vector<CallHierarchyItem>>, "textDocument/prepareCallHierarchy") + optional<std::vector<CallHierarchyItem>>, "textDocument/prepareCallHierarchy") DEFINE_REQUEST_RESPONSE_TYPE(td_incomingCalls, CallHierarchyIncomingCallsParams, - boost::optional<std::vector<CallHierarchyIncomingCall>>, "callHierarchy/incomingCalls") + optional<std::vector<CallHierarchyIncomingCall>>, "callHierarchy/incomingCalls") DEFINE_REQUEST_RESPONSE_TYPE(td_outgoingCalls, CallHierarchyOutgoingCallsParams, - boost::optional<std::vector<CallHierarchyOutgoingCall>>, "callHierarchy/CallHierarchyOutgoingCall") + optional<std::vector<CallHierarchyOutgoingCall>>, "callHierarchy/CallHierarchyOutgoingCall") diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h index 9dd763333d..b9241de06b 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h @@ -21,10 +21,10 @@ struct lsCodeLens { // The range in which this code lens is valid. Should only span a single line. lsRange range; // The command this code lens represents. - boost::optional<lsCommandWithAny> command; + optional<lsCommandWithAny> command; // A data entry field that is preserved on a code lens item between // a code lens and a code lens resolve request. - boost::optional< lsp::Any> data; + optional< lsp::Any> data; MAKE_SWAP_METHOD(lsCodeLens, range, command, data) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h index 916d4550e9..edcf1e1724 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h @@ -30,7 +30,7 @@ struct lsCompletionContext { // The trigger character (a single character) that has trigger code complete. // Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` - boost::optional<std::string> triggerCharacter; + optional<std::string> triggerCharacter; MAKE_SWAP_METHOD(lsCompletionContext, triggerKind, triggerCharacter); }; @@ -40,7 +40,7 @@ struct lsCompletionParams : lsTextDocumentPositionParams { // The completion context. This is only available it the client specifies to // send this using // `ClientCapabilities.textDocument.completion.contextSupport === true` - boost::optional<lsCompletionContext> context; + optional<lsCompletionContext> context; MAKE_SWAP_METHOD(lsCompletionParams, textDocument, position, context); @@ -57,7 +57,7 @@ MAKE_REFLECT_STRUCT(lsCompletionParams, textDocument, position, context); namespace TextDocumentComplete{ - typedef std::pair< boost::optional<std::vector<lsCompletionItem>>, boost::optional<CompletionList> > Either; + typedef std::pair< optional<std::vector<lsCompletionItem>>, optional<CompletionList> > Either; }; extern void Reflect(Reader& visitor, TextDocumentComplete::Either& value); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h index a7c6fdba34..d88d0e1307 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h @@ -38,7 +38,7 @@ public: MAKE_REFLECT_STRUCT(FileRenameParams, files); -DEFINE_REQUEST_RESPONSE_TYPE(td_didRenameFiles, FileRenameParams, boost::optional<lsWorkspaceEdit>, "java/didRenameFiles"); +DEFINE_REQUEST_RESPONSE_TYPE(td_didRenameFiles, FileRenameParams, optional<lsWorkspaceEdit>, "java/didRenameFiles"); -DEFINE_REQUEST_RESPONSE_TYPE(td_willRenameFiles, FileRenameParams, boost::optional<lsWorkspaceEdit>, "java/willRenameFiles"); +DEFINE_REQUEST_RESPONSE_TYPE(td_willRenameFiles, FileRenameParams, optional<lsWorkspaceEdit>, "java/willRenameFiles"); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h index fda407f93f..8450bd343a 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h @@ -9,9 +9,9 @@ #include "LibLsp/lsp/lsDocumentUri.h" struct lsTextDocumentContentChangeEvent { // The range of the document that changed. - boost::optional<lsRange> range; + optional<lsRange> range; // The length of the range that got replaced. - boost::optional<int> rangeLength; + optional<int> rangeLength; // The new text of the range/document. std::string text; @@ -28,7 +28,7 @@ struct lsTextDocumentDidChangeParams { * Legacy property to support protocol version 1.0 requests. */ - boost::optional<lsDocumentUri> uri; + optional<lsDocumentUri> uri; void swap(lsTextDocumentDidChangeParams& arg) noexcept { diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h index ed5dfa535f..379f35989f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h @@ -16,7 +16,7 @@ namespace TextDocumentDidOpen { /** * Legacy property to support protocol version 1.0 requests. */ - boost::optional<std::string> text; + optional<std::string> text; MAKE_SWAP_METHOD(TextDocumentDidOpen::Params, textDocument, text); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h index 649c9b76ec..5d00af0c20 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h @@ -13,7 +13,7 @@ namespace TextDocumentDidSave { // Optional the content when saved. Depends on the includeText value // when the save notifcation was requested. - boost::optional<std::string> text; + optional<std::string> text; MAKE_SWAP_METHOD(TextDocumentDidSave::Params, textDocument, text); }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h index e450a08df1..92f02b24f1 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h @@ -24,9 +24,9 @@ struct lsDocumentLink { // The range this link applies to. lsRange range; // The uri this link points to. If missing a resolve request is sent later. - boost::optional<lsDocumentUri> target; + optional<lsDocumentUri> target; - boost::optional<lsp::Any> data; + optional<lsp::Any> data; MAKE_SWAP_METHOD(lsDocumentLink, range, target, data) @@ -34,11 +34,11 @@ struct lsDocumentLink { MAKE_REFLECT_STRUCT(lsDocumentLink, range, target,data); -DEFINE_REQUEST_RESPONSE_TYPE(td_links, TextDocumentDocumentLink::Params, lsDocumentLink, "textDocument/documentLink"); +DEFINE_REQUEST_RESPONSE_TYPE(td_links, TextDocumentDocumentLink::Params, std::vector<lsDocumentLink>, "textDocument/documentLink"); /** * The document link resolve request is sent from the client to the server to resolve the target of a given document link. */ -DEFINE_REQUEST_RESPONSE_TYPE(td_linkResolve, std::vector<lsDocumentLink>, lsDocumentLink, "documentLink/resolve"); +DEFINE_REQUEST_RESPONSE_TYPE(td_linkResolve, lsDocumentLink, lsDocumentLink, "documentLink/resolve"); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h index 150dde1f0b..b01ffe0dc7 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h @@ -18,7 +18,7 @@ MAKE_REFLECT_STRUCT(lsDocumentSymbolParams, textDocument); struct TextDocumentDocumentSymbol{ - typedef std::pair< boost::optional<lsSymbolInformation> , boost::optional<lsDocumentSymbol> > Either; + typedef std::pair< optional<lsSymbolInformation> , optional<lsDocumentSymbol> > Either; }; void Reflect(Reader& visitor, TextDocumentDocumentSymbol::Either& value); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h index 06f3f9613e..f2c15c3c44 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h @@ -16,8 +16,8 @@ namespace TextDocumentHover { - typedef boost::optional< std::vector< std::pair<boost::optional<std::string>, boost::optional<lsMarkedString>> > > Left; - typedef std::pair< Left, boost::optional<MarkupContent> > Either; + typedef optional< std::vector< std::pair<optional<std::string>, optional<lsMarkedString>> > > Left; + typedef std::pair< Left, optional<MarkupContent> > Either; struct Result { /** * The hover's content as markdown @@ -25,16 +25,16 @@ namespace TextDocumentHover Either contents; /** - * An boost::optional range + * An optional range */ - boost::optional<lsRange> range; + optional<lsRange> range; MAKE_SWAP_METHOD(Result, contents, range) }; } MAKE_REFLECT_STRUCT(TextDocumentHover::Result, contents, range); -extern void Reflect(Reader& visitor, std::pair<boost::optional<std::string>, boost::optional<lsMarkedString>>& value); +extern void Reflect(Reader& visitor, std::pair<optional<std::string>, optional<lsMarkedString>>& value); extern void Reflect(Reader& visitor, TextDocumentHover::Either& value); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h index 96e938a89f..dfac99d378 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h @@ -38,7 +38,7 @@ struct LinkedEditingRanges * pattern will be used. */ - boost::optional<std::string> wordPattern; + optional<std::string> wordPattern; MAKE_SWAP_METHOD(LinkedEditingRanges, ranges, wordPattern) @@ -48,4 +48,4 @@ MAKE_REFLECT_STRUCT(LinkedEditingRanges, ranges, wordPattern) DEFINE_REQUEST_RESPONSE_TYPE(td_linkedEditingRange, LinkedEditingRangeParams, - boost::optional<std::vector<LinkedEditingRanges >>,"textDocument/linkedEditingRange") + optional<std::vector<LinkedEditingRanges >>,"textDocument/linkedEditingRange") diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h index a7ece38114..1ffe5456f7 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h @@ -32,7 +32,7 @@ MAKE_REFLECT_STRUCT(PrepareRenameResult,range,placeholder) -typedef std::pair< boost::optional< lsRange>, boost::optional<PrepareRenameResult>> TextDocumentPrepareRenameResult; +typedef std::pair< optional< lsRange>, optional<PrepareRenameResult>> TextDocumentPrepareRenameResult; extern void Reflect(Reader& visitor, TextDocumentPrepareRenameResult& value); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h index f398a0b859..46782c3d6d 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h @@ -11,7 +11,7 @@ namespace TextDocumentReferences { struct lsReferenceContext { // Include the declaration of the current symbol. - boost::optional<bool> includeDeclaration; + optional<bool> includeDeclaration; MAKE_REFLECT_STRUCT(lsReferenceContext, includeDeclaration) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h index dceba1fb8f..8b5f115af7 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h @@ -18,7 +18,7 @@ struct ResolveTypeHierarchyItemParams { /** * The number of hierarchy levels to resolve. {@code 0} indicates no hierarchy level. */ - boost::optional<int> resolve; + optional<int> resolve; /** * The direction of the type hierarchy resolution. diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h index 91915275bd..2c908bd57f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h @@ -35,11 +35,11 @@ struct SelectionRange { /** * The parent selection range containing this range. Therefore `parent.range` must contain `this.range`. */ - boost::optional<SelectionRange*> parent; + optional<SelectionRange*> parent; MAKE_SWAP_METHOD(SelectionRange, range, parent) }; -extern void Reflect(Reader& visitor, boost::optional<SelectionRange*>& value); +extern void Reflect(Reader& visitor, optional<SelectionRange*>& value); extern void Reflect(Writer& visitor, SelectionRange* value); MAKE_REFLECT_STRUCT(SelectionRange,range,parent) diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h index 837096695e..bb5cd1dc52 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h @@ -7,7 +7,7 @@ #include "LibLsp/lsp/lsTextDocumentPositionParams.h" extern void Reflect(Reader& visitor, - std::pair<boost::optional<std::string>, boost::optional<MarkupContent>>& value); + std::pair<optional<std::string>, optional<MarkupContent>>& value); @@ -20,7 +20,7 @@ struct lsParameterInformation { // The human-readable doc-comment of this parameter. Will be shown // in the UI but can be omitted. - boost::optional< std::pair< boost::optional<std::string> , boost::optional <MarkupContent> > > documentation; + optional< std::pair< optional<std::string> , optional <MarkupContent> > > documentation; MAKE_SWAP_METHOD(lsParameterInformation, label, documentation) }; @@ -36,7 +36,7 @@ struct lsSignatureInformation { // The human-readable doc-comment of this signature. Will be shown // in the UI but can be omitted. - boost::optional< std::pair< boost::optional<std::string>, boost::optional <MarkupContent> > > documentation; + optional< std::pair< optional<std::string>, optional <MarkupContent> > > documentation; // The parameters of this signature. std::vector<lsParameterInformation> parameters; @@ -59,7 +59,7 @@ struct lsSignatureHelp { // rely on a default value. // In future version of the protocol this property might become // mandantory to better express this. - boost::optional<int> activeSignature; + optional<int> activeSignature; // The active parameter of the active signature. If omitted or the value // lies outside the range of `signatures[activeSignature].parameters` @@ -68,7 +68,7 @@ struct lsSignatureHelp { // In future version of the protocol this property might become // mandantory to better express the active parameter if the // active signature does have any. - boost::optional<int> activeParameter; + optional<int> activeParameter; MAKE_SWAP_METHOD(lsSignatureHelp, diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h index 384cfb68c9..8fe99edd87 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h @@ -42,8 +42,8 @@ void Reflect(Writer& writer, TypeHierarchyDirection& value); struct TypeHierarchyParams :public lsTextDocumentPositionParams { - boost::optional<int> resolve; - boost::optional<TypeHierarchyDirection> direction ; + optional<int> resolve; + optional<TypeHierarchyDirection> direction ; MAKE_SWAP_METHOD(TypeHierarchyParams, textDocument, position, resolve, direction) }; @@ -67,7 +67,7 @@ struct TypeHierarchyItem { /** * Optional detail for the hierarchy item. It can be, for instance, the signature of a function or method. */ - boost::optional<std::string> + optional<std::string> detail; /** @@ -80,7 +80,7 @@ struct TypeHierarchyItem { * {@code true} if the hierarchy item is deprecated. Otherwise, {@code false}. It is {@code false} by default. */ - boost::optional<bool> deprecated; + optional<bool> deprecated; /** * The URI of the text document where this type hierarchy item belongs to. @@ -111,18 +111,18 @@ struct TypeHierarchyItem { * If this type hierarchy item is resolved, it contains the direct parents. Could be empty if the item does not have any * direct parents. If not defined, the parents have not been resolved yet. */ - boost::optional< std::vector<TypeHierarchyItem> > parents; + optional< std::vector<TypeHierarchyItem> > parents; /** * If this type hierarchy item is resolved, it contains the direct children of the current item. * Could be empty if the item does not have any descendants. If not defined, the children have not been resolved. */ - boost::optional< std::vector<TypeHierarchyItem> > children; + optional< std::vector<TypeHierarchyItem> > children; /** - * An boost::optional data field can be used to identify a type hierarchy item in a resolve request. + * An optional data field can be used to identify a type hierarchy item in a resolve request. */ - boost::optional<lsp::Any> data; + optional<lsp::Any> data; MAKE_SWAP_METHOD(TypeHierarchyItem, name, detail, kind, deprecated, uri, range, selectionRange, parents, children, data) }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h index 29afcac41a..4fe33d1dcc 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h @@ -40,7 +40,7 @@ namespace WillSaveTextDocumentParams { * A reason why a text document is saved. */ - boost::optional<TextDocumentSaveReason> reason; + optional<TextDocumentSaveReason> reason; MAKE_SWAP_METHOD(Params, textDocument, reason); }; diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/utils.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/utils.h index 95064c34d6..5f1769f80a 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/utils.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/utils.h @@ -7,7 +7,7 @@ #include <memory> #include <string> #include <vector> -#include <boost/optional/optional.hpp> +#include <optional> #include <LibLsp/lsp/AbsolutePath.h> #include "lsPosition.h" @@ -80,7 +80,7 @@ std::string EscapeFileName(std::string path); // FIXME: Move ReadContent into ICacheManager? bool FileExists(const std::string& filename); -boost::optional<std::string> ReadContent(const AbsolutePath& filename); +optional<std::string> ReadContent(const AbsolutePath& filename); std::vector<std::string> ReadLinesWithEnding(const AbsolutePath& filename); bool WriteToFile(const std::string& filename, const std::string& content); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h index d1d4bc85df..eb1f250b2f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h @@ -33,7 +33,7 @@ MAKE_REFLECT_STRUCT(ApplyWorkspaceEditParams, edit, label); struct ApplyWorkspaceEditResponse { bool applied; - boost::optional<std::string> failureReason; + optional<std::string> failureReason; MAKE_SWAP_METHOD(ApplyWorkspaceEditResponse, applied, failureReason) }; MAKE_REFLECT_STRUCT(ApplyWorkspaceEditResponse, applied, failureReason); diff --git a/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h b/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h index 1ba33b501c..136c1d777b 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h @@ -30,5 +30,5 @@ MAKE_REFLECT_STRUCT(WorkspaceFolder, uri, name); * the workspace folders otherwise. */ DEFINE_REQUEST_RESPONSE_TYPE(WorkspaceFolders, - boost::optional<JsonNull>, boost::optional<std::vector< WorkspaceFolder>>, "workspace/workspaceFolders"); + optional<JsonNull>, optional<std::vector< WorkspaceFolder>>, "workspace/workspaceFolders"); diff --git a/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp b/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp index e8bdc073f3..b501d35a18 100644 --- a/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp +++ b/graphics/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp @@ -15,6 +15,7 @@ #include "LibLsp/JsonRpc/ScopeExit.h" #include "LibLsp/JsonRpc/stream.h" #include <atomic> +#include <optional> #include <boost/asio/thread_pool.hpp> #include <boost/asio/post.hpp> @@ -103,7 +104,7 @@ namespace lsp { /// (If the context is within multiple nested tasks, true if any are cancelled). /// Always zero if there is no active cancelable task. /// This isn't free (context lookup) - don't call it in a tight loop. - boost::optional<CancelMonitor> getCancelledMonitor(const lsRequestId& id, const Context& ctx = Context::current()){ + optional<CancelMonitor> getCancelledMonitor(const lsRequestId& id, const Context& ctx = Context::current()){ for (const CancelState* state = ctx.get(g_stateKey); state != nullptr; state = state->parent) { diff --git a/graphics/asymptote/LspCpp/src/lsp/initialize.cpp b/graphics/asymptote/LspCpp/src/lsp/initialize.cpp index 7348cbd0df..504caa3e65 100644 --- a/graphics/asymptote/LspCpp/src/lsp/initialize.cpp +++ b/graphics/asymptote/LspCpp/src/lsp/initialize.cpp @@ -32,7 +32,7 @@ void Reflect(Writer& writer, lsInitializeParams::lsTrace& value) break; } } - void Reflect(Reader& visitor, std::pair<boost::optional<lsTextDocumentSyncKind>, boost::optional<lsTextDocumentSyncOptions> >& value) + void Reflect(Reader& visitor, std::pair<optional<lsTextDocumentSyncKind>, optional<lsTextDocumentSyncOptions> >& value) { if(((JsonReader&)visitor).m_->IsObject()) { diff --git a/graphics/asymptote/LspCpp/src/lsp/lsp.cpp b/graphics/asymptote/LspCpp/src/lsp/lsp.cpp index 792995c8fb..d070f22be1 100644 --- a/graphics/asymptote/LspCpp/src/lsp/lsp.cpp +++ b/graphics/asymptote/LspCpp/src/lsp/lsp.cpp @@ -397,7 +397,7 @@ bool lsp::Any::GetForMapHelper(std::string& value) return Get(value); } -bool lsp::Any::GetForMapHelper(boost::optional<std::string>& value) +bool lsp::Any::GetForMapHelper(optional<std::string>& value) { return Get(value); } @@ -558,7 +558,7 @@ lsRenameFile::lsRenameFile() } -void Reflect(Reader& visitor, boost::optional< SelectionRange* >& value) +void Reflect(Reader& visitor, optional< SelectionRange* >& value) { if (visitor.IsNull()) { visitor.GetNull(); diff --git a/graphics/asymptote/LspCpp/src/lsp/textDocument.cpp b/graphics/asymptote/LspCpp/src/lsp/textDocument.cpp index a95c2b1ea8..c87a047d3f 100644 --- a/graphics/asymptote/LspCpp/src/lsp/textDocument.cpp +++ b/graphics/asymptote/LspCpp/src/lsp/textDocument.cpp @@ -231,7 +231,7 @@ void Reflect(Reader& visitor, TextDocumentDocumentSymbol::Either& value) } } -void Reflect(Reader& visitor, std::pair<boost::optional<std::string>, boost::optional<lsMarkedString>>& value) +void Reflect(Reader& visitor, std::pair<optional<std::string>, optional<lsMarkedString>>& value) { if (!visitor.IsString()) @@ -244,7 +244,7 @@ void Reflect(Reader& visitor, std::pair<boost::optional<std::string>, boost::opt } } -void Reflect(Reader& visitor, std::pair<boost::optional<std::string>, boost::optional<MarkupContent>>& value) +void Reflect(Reader& visitor, std::pair<optional<std::string>, optional<MarkupContent>>& value) { if (!visitor.IsString()) { diff --git a/graphics/asymptote/LspCpp/src/lsp/utils.cpp b/graphics/asymptote/LspCpp/src/lsp/utils.cpp index 445f4a72cf..f950b9ee79 100644 --- a/graphics/asymptote/LspCpp/src/lsp/utils.cpp +++ b/graphics/asymptote/LspCpp/src/lsp/utils.cpp @@ -191,7 +191,7 @@ bool FileExists(const std::string& filename) { return cache.is_open(); } -boost::optional<std::string> ReadContent(const AbsolutePath& filename) { +optional<std::string> ReadContent(const AbsolutePath& filename) { std::ifstream cache; cache.open(filename.path); diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/CMakeLists.txt b/graphics/asymptote/LspCpp/third_party/rapidjson/CMakeLists.txt index bdfdd6779e..dd1f173d1c 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/CMakeLists.txt +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12) if(POLICY CMP0025) # detect Apple's Clang cmake_policy(SET CMP0025 NEW) @@ -68,7 +68,7 @@ endif(CCACHE_FOUND) if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(RAPIDJSON_ENABLE_INSTRUMENTATION_OPT AND NOT CMAKE_CROSSCOMPILING) - if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native") else() #FIXME: x86 is -march=native, but doesn't mean every arch is this option. To keep original project's compatibility, I leave this except POWER. @@ -102,7 +102,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(NOT CMAKE_CROSSCOMPILING) - if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native") else() #FIXME: x86 is -march=native, but doesn't mean every arch is this option. To keep original project's compatibility, I leave this except POWER. @@ -128,6 +128,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") endif() elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) + add_definitions(-DNOMINMAX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") # CMake >= 3.10 should handle the above CMAKE_CXX_STANDARD fine, otherwise use /std:c++XX with MSVC >= 19.10 if (RAPIDJSON_BUILD_CXX11 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.10") diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/bin/unittestschema/address.json b/graphics/asymptote/LspCpp/third_party/rapidjson/bin/unittestschema/address.json index c3cf642613..abec3ec577 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/bin/unittestschema/address.json +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/bin/unittestschema/address.json @@ -97,11 +97,11 @@ }, "county_type": { "type": "string", - "enum": ["Sussex", "Surrey", "Kent"] + "enum": ["Sussex", "Surrey", "Kent", "Narnia"] }, "province_type": { "type": "string", - "enum": ["Quebec", "BC", "Alberta"] + "enum": ["Quebec", "Narnia", "BC", "Alberta"] }, "date_type": { "pattern": "^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1]))?)?$", @@ -132,7 +132,6 @@ "type": "string" }, "url_type": { - "pattern": "^\\S*$", "type": "string" } } diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/contrib/natvis/rapidjson.natvis b/graphics/asymptote/LspCpp/third_party/rapidjson/contrib/natvis/rapidjson.natvis index e7bd44b6ed..2a4316ee98 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/contrib/natvis/rapidjson.natvis +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/contrib/natvis/rapidjson.natvis @@ -2,30 +2,30 @@ <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <!-- rapidjson::GenericValue - basic support --> <Type Name="rapidjson::GenericValue<*,*>"> - <DisplayString Condition="(data_.f.flags & kTypeMask) == kNullType">null</DisplayString> + <DisplayString Condition="(data_.f.flags & kTypeMask) == rapidjson::kNullType">null</DisplayString> <DisplayString Condition="data_.f.flags == kTrueFlag">true</DisplayString> <DisplayString Condition="data_.f.flags == kFalseFlag">false</DisplayString> <DisplayString Condition="data_.f.flags == kShortStringFlag">{(const Ch*)data_.ss.str,na}</DisplayString> - <DisplayString Condition="(data_.f.flags & kTypeMask) == kStringType">{(const Ch*)((size_t)data_.s.str & 0x0000FFFFFFFFFFFF),na}</DisplayString> + <DisplayString Condition="(data_.f.flags & kTypeMask) == rapidjson::kStringType">{(const Ch*)((size_t)data_.s.str & 0x0000FFFFFFFFFFFF),[data_.s.length]na}</DisplayString> <DisplayString Condition="(data_.f.flags & kNumberIntFlag) == kNumberIntFlag">{data_.n.i.i}</DisplayString> <DisplayString Condition="(data_.f.flags & kNumberUintFlag) == kNumberUintFlag">{data_.n.u.u}</DisplayString> <DisplayString Condition="(data_.f.flags & kNumberInt64Flag) == kNumberInt64Flag">{data_.n.i64}</DisplayString> <DisplayString Condition="(data_.f.flags & kNumberUint64Flag) == kNumberUint64Flag">{data_.n.u64}</DisplayString> <DisplayString Condition="(data_.f.flags & kNumberDoubleFlag) == kNumberDoubleFlag">{data_.n.d}</DisplayString> - <DisplayString Condition="data_.f.flags == kObjectType">Object members={data_.o.size}</DisplayString> - <DisplayString Condition="data_.f.flags == kArrayType">Array members={data_.a.size}</DisplayString> + <DisplayString Condition="data_.f.flags == rapidjson::kObjectType">Object members={data_.o.size}</DisplayString> + <DisplayString Condition="data_.f.flags == rapidjson::kArrayType">Array members={data_.a.size}</DisplayString> <Expand> - <Item Condition="data_.f.flags == kObjectType" Name="[size]">data_.o.size</Item> - <Item Condition="data_.f.flags == kObjectType" Name="[capacity]">data_.o.capacity</Item> - <ArrayItems Condition="data_.f.flags == kObjectType"> + <Item Condition="data_.f.flags == rapidjson::kObjectType" Name="[size]">data_.o.size</Item> + <Item Condition="data_.f.flags == rapidjson::kObjectType" Name="[capacity]">data_.o.capacity</Item> + <ArrayItems Condition="data_.f.flags == rapidjson::kObjectType"> <Size>data_.o.size</Size> <!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask --> <ValuePointer>(rapidjson::GenericMember<$T1,$T2>*)(((size_t)data_.o.members) & 0x0000FFFFFFFFFFFF)</ValuePointer> </ArrayItems> - <Item Condition="data_.f.flags == kArrayType" Name="[size]">data_.a.size</Item> - <Item Condition="data_.f.flags == kArrayType" Name="[capacity]">data_.a.capacity</Item> - <ArrayItems Condition="data_.f.flags == kArrayType"> + <Item Condition="data_.f.flags == rapidjson::kArrayType" Name="[size]">data_.a.size</Item> + <Item Condition="data_.f.flags == rapidjson::kArrayType" Name="[capacity]">data_.a.capacity</Item> + <ArrayItems Condition="data_.f.flags == rapidjson::kArrayType"> <Size>data_.a.size</Size> <!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask --> <ValuePointer>(rapidjson::GenericValue<$T1,$T2>*)(((size_t)data_.a.elements) & 0x0000FFFFFFFFFFFF)</ValuePointer> diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/doc/features.md b/graphics/asymptote/LspCpp/third_party/rapidjson/doc/features.md index 0d79e7f892..4d159370ac 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/doc/features.md +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/doc/features.md @@ -22,13 +22,15 @@ * RapidJSON should be fully RFC4627/ECMA-404 compliance. * Support JSON Pointer (RFC6901). * Support JSON Schema Draft v4. +* Support Swagger v2 schema. +* Support OpenAPI v3.0.x schema. * Support Unicode surrogate. * Support null character (`"\u0000"`) - * For example, `["Hello\u0000World"]` can be parsed and handled gracefully. There is API for getting/setting lengths of string. +* For example, `["Hello\u0000World"]` can be parsed and handled gracefully. There is API for getting/setting lengths of string. * Support optional relaxed syntax. - * Single line (`// ...`) and multiple line (`/* ... */`) comments (`kParseCommentsFlag`). - * Trailing commas at the end of objects and arrays (`kParseTrailingCommasFlag`). - * `NaN`, `Inf`, `Infinity`, `-Inf` and `-Infinity` as `double` values (`kParseNanAndInfFlag`) +* Single line (`// ...`) and multiple line (`/* ... */`) comments (`kParseCommentsFlag`). +* Trailing commas at the end of objects and arrays (`kParseTrailingCommasFlag`). +* `NaN`, `Inf`, `Infinity`, `-Inf` and `-Infinity` as `double` values (`kParseNanAndInfFlag`) * [NPM compliant](http://github.com/Tencent/rapidjson/blob/master/doc/npm.md). ## Unicode diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/doc/schema.md b/graphics/asymptote/LspCpp/third_party/rapidjson/doc/schema.md index 238d7a56ae..4da4474b2e 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/doc/schema.md +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/doc/schema.md @@ -24,7 +24,15 @@ if (sd.Parse(schemaJson).HasParseError()) { // the schema is not a valid JSON. // ... } + SchemaDocument schema(sd); // Compile a Document to SchemaDocument +if (!schema.GetError().ObjectEmpty()) { + // there was a problem compiling the schema + StringBuffer sb; + Writer<StringBuffer> w(sb); + schema.GetError().Accept(w); + printf("Invalid schema: %s\n", sb.GetString()); +} // sd is no longer needed here. Document d; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp index 9fa1bb10a1..0d3d0632f2 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp @@ -41,7 +41,8 @@ static std::string GetString(const ValueType& val) { s << "false"; else if (val.IsFloat()) s << val.GetFloat(); - return s.str();} + return s.str(); +} // Create the error message for a named error // The error object can either be empty or contain at least member properties: diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h index 8918cf76fe..a943cf1993 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h @@ -19,6 +19,7 @@ #include "internal/meta.h" #include <memory> +#include <limits> #if RAPIDJSON_HAS_CXX11 #include <type_traits> @@ -433,7 +434,7 @@ namespace internal { template<typename T, typename A> inline T* Realloc(A& a, T* old_p, size_t old_n, size_t new_n) { - RAPIDJSON_NOEXCEPT_ASSERT(old_n <= SIZE_MAX / sizeof(T) && new_n <= SIZE_MAX / sizeof(T)); + RAPIDJSON_NOEXCEPT_ASSERT(old_n <= (std::numeric_limits<size_t>::max)() / sizeof(T) && new_n <= (std::numeric_limits<size_t>::max)() / sizeof(T)); return static_cast<T*>(a.Realloc(old_p, old_n * sizeof(T), new_n * sizeof(T))); } diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h index 660e14eb53..d1420719bb 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h @@ -75,7 +75,7 @@ class GenericDocument; User can define this to use CrtAllocator or MemoryPoolAllocator. */ #ifndef RAPIDJSON_DEFAULT_ALLOCATOR -#define RAPIDJSON_DEFAULT_ALLOCATOR MemoryPoolAllocator<CrtAllocator> +#define RAPIDJSON_DEFAULT_ALLOCATOR ::RAPIDJSON_NAMESPACE::MemoryPoolAllocator<::RAPIDJSON_NAMESPACE::CrtAllocator> #endif /*! \def RAPIDJSON_DEFAULT_STACK_ALLOCATOR @@ -85,7 +85,7 @@ class GenericDocument; User can define this to use CrtAllocator or MemoryPoolAllocator. */ #ifndef RAPIDJSON_DEFAULT_STACK_ALLOCATOR -#define RAPIDJSON_DEFAULT_STACK_ALLOCATOR CrtAllocator +#define RAPIDJSON_DEFAULT_STACK_ALLOCATOR ::RAPIDJSON_NAMESPACE::CrtAllocator #endif /*! \def RAPIDJSON_VALUE_DEFAULT_OBJECT_CAPACITY @@ -1078,6 +1078,7 @@ public: */ template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>,internal::IsGenericValue<T> >), (bool)) operator==(const T& rhs) const { return *this == GenericValue(rhs); } +#ifndef __cpp_impl_three_way_comparison //! Not-equal-to operator /*! \return !(*this == rhs) */ @@ -1092,7 +1093,6 @@ public: */ template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator!=(const T& rhs) const { return !(*this == rhs); } -#ifndef __cpp_lib_three_way_comparison //! Equal-to operator with arbitrary types (symmetric version) /*! \return (rhs == lhs) */ @@ -1230,13 +1230,28 @@ public: else { RAPIDJSON_ASSERT(false); // see above note - // This will generate -Wexit-time-destructors in clang - // static GenericValue NullValue; - // return NullValue; - - // Use static buffer and placement-new to prevent destruction - static char buffer[sizeof(GenericValue)]; +#if RAPIDJSON_HAS_CXX11 + // Use thread-local storage to prevent races between threads. + // Use static buffer and placement-new to prevent destruction, with + // alignas() to ensure proper alignment. + alignas(GenericValue) thread_local static char buffer[sizeof(GenericValue)]; + return *new (buffer) GenericValue(); +#elif defined(_MSC_VER) && _MSC_VER < 1900 + // There's no way to solve both thread locality and proper alignment + // simultaneously. + __declspec(thread) static char buffer[sizeof(GenericValue)]; return *new (buffer) GenericValue(); +#elif defined(__GNUC__) || defined(__clang__) + // This will generate -Wexit-time-destructors in clang, but that's + // better than having under-alignment. + __thread static GenericValue buffer; + return buffer; +#else + // Don't know what compiler this is, so don't know how to ensure + // thread-locality. + static GenericValue buffer; + return buffer; +#endif } } template <typename SourceAllocator> @@ -2486,6 +2501,7 @@ public: typedef typename Encoding::Ch Ch; //!< Character type derived from Encoding. typedef GenericValue<Encoding, Allocator> ValueType; //!< Value type of the document. typedef Allocator AllocatorType; //!< Allocator type from template parameter. + typedef StackAllocator StackAllocatorType; //!< StackAllocator type from template parameter. //! Constructor /*! Creates an empty document of specified type. diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h index 7c620a2e6b..c87b04eb13 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h @@ -104,15 +104,69 @@ inline const RAPIDJSON_ERROR_CHARTYPE* GetValidateError_En(ValidateErrorCode val case kValidateErrorType: return RAPIDJSON_ERROR_STRING("Property has a type '%actual' that is not in the following list: '%expected'."); case kValidateErrorOneOf: return RAPIDJSON_ERROR_STRING("Property did not match any of the sub-schemas specified by 'oneOf', refer to following errors."); - case kValidateErrorOneOfMatch: return RAPIDJSON_ERROR_STRING("Property matched more than one of the sub-schemas specified by 'oneOf'."); + case kValidateErrorOneOfMatch: return RAPIDJSON_ERROR_STRING("Property matched more than one of the sub-schemas specified by 'oneOf', indices '%matches'."); case kValidateErrorAllOf: return RAPIDJSON_ERROR_STRING("Property did not match all of the sub-schemas specified by 'allOf', refer to following errors."); case kValidateErrorAnyOf: return RAPIDJSON_ERROR_STRING("Property did not match any of the sub-schemas specified by 'anyOf', refer to following errors."); case kValidateErrorNot: return RAPIDJSON_ERROR_STRING("Property matched the sub-schema specified by 'not'."); + case kValidateErrorReadOnly: return RAPIDJSON_ERROR_STRING("Property is read-only but has been provided when validation is for writing."); + case kValidateErrorWriteOnly: return RAPIDJSON_ERROR_STRING("Property is write-only but has been provided when validation is for reading."); + default: return RAPIDJSON_ERROR_STRING("Unknown error."); } } +//! Maps error code of schema document compilation into error message. +/*! + \ingroup RAPIDJSON_ERRORS + \param schemaErrorCode Error code obtained from compiling the schema document. + \return the error message. + \note User can make a copy of this function for localization. + Using switch-case is safer for future modification of error codes. +*/ + inline const RAPIDJSON_ERROR_CHARTYPE* GetSchemaError_En(SchemaErrorCode schemaErrorCode) { + switch (schemaErrorCode) { + case kSchemaErrorNone: return RAPIDJSON_ERROR_STRING("No error."); + + case kSchemaErrorStartUnknown: return RAPIDJSON_ERROR_STRING("Pointer '%value' to start of schema does not resolve to a location in the document."); + case kSchemaErrorRefPlainName: return RAPIDJSON_ERROR_STRING("$ref fragment '%value' must be a JSON pointer."); + case kSchemaErrorRefInvalid: return RAPIDJSON_ERROR_STRING("$ref must not be an empty string."); + case kSchemaErrorRefPointerInvalid: return RAPIDJSON_ERROR_STRING("$ref fragment '%value' is not a valid JSON pointer at offset '%offset'."); + case kSchemaErrorRefUnknown: return RAPIDJSON_ERROR_STRING("$ref '%value' does not resolve to a location in the target document."); + case kSchemaErrorRefCyclical: return RAPIDJSON_ERROR_STRING("$ref '%value' is cyclical."); + case kSchemaErrorRefNoRemoteProvider: return RAPIDJSON_ERROR_STRING("$ref is remote but there is no remote provider."); + case kSchemaErrorRefNoRemoteSchema: return RAPIDJSON_ERROR_STRING("$ref '%value' is remote but the remote provider did not return a schema."); + case kSchemaErrorRegexInvalid: return RAPIDJSON_ERROR_STRING("Invalid regular expression '%value' in 'pattern' or 'patternProperties'."); + case kSchemaErrorSpecUnknown: return RAPIDJSON_ERROR_STRING("JSON schema draft or OpenAPI version is not recognized."); + case kSchemaErrorSpecUnsupported: return RAPIDJSON_ERROR_STRING("JSON schema draft or OpenAPI version is not supported."); + case kSchemaErrorSpecIllegal: return RAPIDJSON_ERROR_STRING("Both JSON schema draft and OpenAPI version found in document."); + case kSchemaErrorReadOnlyAndWriteOnly: return RAPIDJSON_ERROR_STRING("Property must not be both 'readOnly' and 'writeOnly'."); + + default: return RAPIDJSON_ERROR_STRING("Unknown error."); + } + } + +//! Maps error code of pointer parse into error message. +/*! + \ingroup RAPIDJSON_ERRORS + \param pointerParseErrorCode Error code obtained from pointer parse. + \return the error message. + \note User can make a copy of this function for localization. + Using switch-case is safer for future modification of error codes. +*/ +inline const RAPIDJSON_ERROR_CHARTYPE* GetPointerParseError_En(PointerParseErrorCode pointerParseErrorCode) { + switch (pointerParseErrorCode) { + case kPointerParseErrorNone: return RAPIDJSON_ERROR_STRING("No error."); + + case kPointerParseErrorTokenMustBeginWithSolidus: return RAPIDJSON_ERROR_STRING("A token must begin with a '/'."); + case kPointerParseErrorInvalidEscape: return RAPIDJSON_ERROR_STRING("Invalid escape."); + case kPointerParseErrorInvalidPercentEncoding: return RAPIDJSON_ERROR_STRING("Invalid percent encoding in URI fragment."); + case kPointerParseErrorCharacterMustPercentEncode: return RAPIDJSON_ERROR_STRING("A character must be percent encoded in a URI fragment."); + + default: return RAPIDJSON_ERROR_STRING("Unknown error."); + } +} + RAPIDJSON_NAMESPACE_END #ifdef __clang__ diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h index 5c890ba0ea..cae345db36 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h @@ -42,7 +42,7 @@ RAPIDJSON_DIAG_OFF(padded) /////////////////////////////////////////////////////////////////////////////// // RAPIDJSON_ERROR_STRING -//! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[]. +//! Macro for converting string literal to \ref RAPIDJSON_ERROR_CHARTYPE[]. /*! \ingroup RAPIDJSON_ERRORS By default this conversion macro does nothing. On Windows, user can define this macro as \c _T(x) for supporting both @@ -185,14 +185,17 @@ enum ValidateErrorCode { kValidateErrorPatternProperties, //!< See other errors. kValidateErrorDependencies, //!< Object has missing property or schema dependencies. - kValidateErrorEnum, //!< Property has a value that is not one of its allowed enumerated values - kValidateErrorType, //!< Property has a type that is not allowed by the schema.. + kValidateErrorEnum, //!< Property has a value that is not one of its allowed enumerated values. + kValidateErrorType, //!< Property has a type that is not allowed by the schema. kValidateErrorOneOf, //!< Property did not match any of the sub-schemas specified by 'oneOf'. kValidateErrorOneOfMatch, //!< Property matched more than one of the sub-schemas specified by 'oneOf'. kValidateErrorAllOf, //!< Property did not match all of the sub-schemas specified by 'allOf'. kValidateErrorAnyOf, //!< Property did not match any of the sub-schemas specified by 'anyOf'. - kValidateErrorNot //!< Property matched the sub-schema specified by 'not'. + kValidateErrorNot, //!< Property matched the sub-schema specified by 'not'. + + kValidateErrorReadOnly, //!< Property is read-only but has been provided when validation is for writing + kValidateErrorWriteOnly //!< Property is write-only but has been provided when validation is for reading }; //! Function pointer type of GetValidateError(). @@ -207,6 +210,72 @@ enum ValidateErrorCode { */ typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetValidateErrorFunc)(ValidateErrorCode); +/////////////////////////////////////////////////////////////////////////////// +// SchemaErrorCode + +//! Error codes when validating. +/*! \ingroup RAPIDJSON_ERRORS + \see GenericSchemaValidator +*/ +enum SchemaErrorCode { + kSchemaErrorNone = 0, //!< No error. + + kSchemaErrorStartUnknown, //!< Pointer to start of schema does not resolve to a location in the document + kSchemaErrorRefPlainName, //!< $ref fragment must be a JSON pointer + kSchemaErrorRefInvalid, //!< $ref must not be an empty string + kSchemaErrorRefPointerInvalid, //!< $ref fragment is not a valid JSON pointer at offset + kSchemaErrorRefUnknown, //!< $ref does not resolve to a location in the target document + kSchemaErrorRefCyclical, //!< $ref is cyclical + kSchemaErrorRefNoRemoteProvider, //!< $ref is remote but there is no remote provider + kSchemaErrorRefNoRemoteSchema, //!< $ref is remote but the remote provider did not return a schema + kSchemaErrorRegexInvalid, //!< Invalid regular expression in 'pattern' or 'patternProperties' + kSchemaErrorSpecUnknown, //!< JSON schema draft or OpenAPI version is not recognized + kSchemaErrorSpecUnsupported, //!< JSON schema draft or OpenAPI version is not supported + kSchemaErrorSpecIllegal, //!< Both JSON schema draft and OpenAPI version found in document + kSchemaErrorReadOnlyAndWriteOnly //!< Property must not be both 'readOnly' and 'writeOnly' +}; + +//! Function pointer type of GetSchemaError(). +/*! \ingroup RAPIDJSON_ERRORS + + This is the prototype for \c GetSchemaError_X(), where \c X is a locale. + User can dynamically change locale in runtime, e.g.: +\code + GetSchemaErrorFunc GetSchemaError = GetSchemaError_En; // or whatever + const RAPIDJSON_ERROR_CHARTYPE* s = GetSchemaError(validator.GetInvalidSchemaCode()); +\endcode +*/ +typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetSchemaErrorFunc)(SchemaErrorCode); + +/////////////////////////////////////////////////////////////////////////////// +// PointerParseErrorCode + +//! Error code of JSON pointer parsing. +/*! \ingroup RAPIDJSON_ERRORS + \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode +*/ +enum PointerParseErrorCode { + kPointerParseErrorNone = 0, //!< The parse is successful + + kPointerParseErrorTokenMustBeginWithSolidus, //!< A token must begin with a '/' + kPointerParseErrorInvalidEscape, //!< Invalid escape + kPointerParseErrorInvalidPercentEncoding, //!< Invalid percent encoding in URI fragment + kPointerParseErrorCharacterMustPercentEncode //!< A character must percent encoded in URI fragment +}; + +//! Function pointer type of GetPointerParseError(). +/*! \ingroup RAPIDJSON_ERRORS + + This is the prototype for \c GetPointerParseError_X(), where \c X is a locale. + User can dynamically change locale in runtime, e.g.: +\code + GetPointerParseErrorFunc GetPointerParseError = GetPointerParseError_En; // or whatever + const RAPIDJSON_ERROR_CHARTYPE* s = GetPointerParseError(pointer.GetParseErrorCode()); +\endcode +*/ +typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetPointerParseErrorFunc)(PointerParseErrorCode); + + RAPIDJSON_NAMESPACE_END #ifdef __clang__ diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h index 6c58fc87bb..09d0387fe6 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h @@ -259,7 +259,7 @@ private: if (low < k) (*outHigh)++; return low; -#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) __extension__ typedef unsigned __int128 uint128; uint128 p = static_cast<uint128>(a) * static_cast<uint128>(b); p += k; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/diyfp.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/diyfp.h index f7d46539a9..1f60fb60ca 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/diyfp.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/diyfp.h @@ -79,7 +79,7 @@ struct DiyFp { if (l & (uint64_t(1) << 63)) // rounding h++; return DiyFp(h, e + rhs.e + 64); -#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__) __extension__ typedef unsigned __int128 uint128; uint128 p = static_cast<uint128>(f) * static_cast<uint128>(rhs.f); uint64_t h = static_cast<uint64_t>(p >> 64); diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h index aa27f7b673..91c5756d92 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h @@ -58,11 +58,11 @@ inline int CountDecimalDigit32(uint32_t n) { } inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buffer, int* len, int* K) { - static const uint64_t kPow10[] = { 1U, 10U, 100U, 1000U, 10000U, 100000U, 1000000U, 10000000U, 100000000U, - 1000000000U, 10000000000U, 100000000000U, 1000000000000U, - 10000000000000U, 100000000000000U, 1000000000000000U, - 10000000000000000U, 100000000000000000U, 1000000000000000000U, - 10000000000000000000U }; + static const uint64_t kPow10[] = { 1ULL, 10ULL, 100ULL, 1000ULL, 10000ULL, 100000ULL, 1000000ULL, 10000000ULL, 100000000ULL, + 1000000000ULL, 10000000000ULL, 100000000000ULL, 1000000000000ULL, + 10000000000000ULL, 100000000000000ULL, 1000000000000000ULL, + 10000000000000000ULL, 100000000000000000ULL, 1000000000000000000ULL, + 10000000000000000000ULL }; const DiyFp one(uint64_t(1) << -Mp.e, Mp.e); const DiyFp wp_w = Mp - W; uint32_t p1 = static_cast<uint32_t>(Mp.f >> -one.e); diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h index d89f943c91..fb1a5ae267 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h @@ -18,6 +18,7 @@ #include "document.h" #include "uri.h" #include "internal/itoa.h" +#include "error/error.h" // PointerParseErrorCode #ifdef __clang__ RAPIDJSON_DIAG_PUSH @@ -31,19 +32,6 @@ RAPIDJSON_NAMESPACE_BEGIN static const SizeType kPointerInvalidIndex = ~SizeType(0); //!< Represents an invalid index in GenericPointer::Token -//! Error code of parsing. -/*! \ingroup RAPIDJSON_ERRORS - \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode -*/ -enum PointerParseErrorCode { - kPointerParseErrorNone = 0, //!< The parse is successful - - kPointerParseErrorTokenMustBeginWithSolidus, //!< A token must begin with a '/' - kPointerParseErrorInvalidEscape, //!< Invalid escape - kPointerParseErrorInvalidPercentEncoding, //!< Invalid percent encoding in URI fragment - kPointerParseErrorCharacterMustPercentEncode //!< A character must percent encoded in URI fragment -}; - /////////////////////////////////////////////////////////////////////////////// // GenericPointer @@ -84,7 +72,7 @@ public: typedef GenericUri<ValueType, Allocator> UriType; - //! A token is the basic units of internal representation. + //! A token is the basic units of internal representation. /*! A JSON pointer string representation "/foo/123" is parsed to two tokens: "foo" and 123. 123 will be represented in both numeric form and string form. @@ -902,10 +890,16 @@ private: std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * sizeof(Ch)); } - // Adjust pointers to name buffer - std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_; - for (Token *t = tokens_; t != tokens_ + rhs.tokenCount_; ++t) - t->name += diff; + // The names of each token point to a string in the nameBuffer_. The + // previous memcpy copied over string pointers into the rhs.nameBuffer_, + // but they should point to the strings in the new nameBuffer_. + for (size_t i = 0; i < rhs.tokenCount_; ++i) { + // The offset between the string address and the name buffer should + // still be constant, so we can just get this offset and set each new + // token name according the new buffer start + the known offset. + std::ptrdiff_t name_offset = rhs.tokens_[i].name - rhs.nameBuffer_; + tokens_[i].name = nameBuffer_ + name_offset; + } return nameBuffer_ + nameBufferSize; } diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h index 77cede6067..89de838619 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h @@ -195,7 +195,7 @@ */ #ifndef RAPIDJSON_NO_INT64DEFINE //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN -#if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013 +#if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013 #include "msinttypes/stdint.h" #include "msinttypes/inttypes.h" #else diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/reader.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/reader.h index b37afffb2e..55546601e2 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/reader.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/reader.h @@ -1433,7 +1433,7 @@ private: class NumberStream<InputStream, StackCharacter, true, false> : public NumberStream<InputStream, StackCharacter, false, false> { typedef NumberStream<InputStream, StackCharacter, false, false> Base; public: - NumberStream(GenericReader& reader, InputStream& is) : Base(reader, is), stackStream(reader.stack_) {} + NumberStream(GenericReader& reader, InputStream& s) : Base(reader, s), stackStream(reader.stack_) {} RAPIDJSON_FORCEINLINE Ch TakePush() { stackStream.Put(static_cast<StackCharacter>(Base::is.Peek())); @@ -1459,7 +1459,7 @@ private: class NumberStream<InputStream, StackCharacter, true, true> : public NumberStream<InputStream, StackCharacter, true, false> { typedef NumberStream<InputStream, StackCharacter, true, false> Base; public: - NumberStream(GenericReader& reader, InputStream& is) : Base(reader, is) {} + NumberStream(GenericReader& reader, InputStream& s) : Base(reader, s) {} RAPIDJSON_FORCEINLINE Ch Take() { return Base::TakePush(); } }; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h index 1db4b57cbf..cb799cbacf 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h @@ -50,10 +50,6 @@ #define RAPIDJSON_SCHEMA_VERBOSE 0 #endif -#if RAPIDJSON_SCHEMA_VERBOSE -#include "stringbuffer.h" -#endif - RAPIDJSON_DIAG_PUSH #if defined(__GNUC__) @@ -78,48 +74,94 @@ RAPIDJSON_NAMESPACE_BEGIN namespace internal { -inline void PrintInvalidKeyword(const char* keyword) { - printf("Fail keyword: %s\n", keyword); +inline void PrintInvalidKeywordData(const char* keyword) { + printf(" Fail keyword: '%s'\n", keyword); +} + +inline void PrintInvalidKeywordData(const wchar_t* keyword) { + wprintf(L" Fail keyword: '%ls'\n", keyword); +} + +inline void PrintInvalidDocumentData(const char* document) { + printf(" Fail document: '%s'\n", document); +} + +inline void PrintInvalidDocumentData(const wchar_t* document) { + wprintf(L" Fail document: '%ls'\n", document); +} + +inline void PrintValidatorPointersData(const char* s, const char* d, unsigned depth) { + printf(" Sch: %*s'%s'\n Doc: %*s'%s'\n", depth * 4, " ", s, depth * 4, " ", d); +} + +inline void PrintValidatorPointersData(const wchar_t* s, const wchar_t* d, unsigned depth) { + wprintf(L" Sch: %*ls'%ls'\n Doc: %*ls'%ls'\n", depth * 4, L" ", s, depth * 4, L" ", d); +} + +inline void PrintSchemaIdsData(const char* base, const char* local, const char* resolved) { + printf(" Resolving id: Base: '%s', Local: '%s', Resolved: '%s'\n", base, local, resolved); +} + +inline void PrintSchemaIdsData(const wchar_t* base, const wchar_t* local, const wchar_t* resolved) { + wprintf(L" Resolving id: Base: '%ls', Local: '%ls', Resolved: '%ls'\n", base, local, resolved); +} + +inline void PrintMethodData(const char* method) { + printf("%s\n", method); +} + +inline void PrintMethodData(const char* method, bool b) { + printf("%s, Data: '%s'\n", method, b ? "true" : "false"); +} + +inline void PrintMethodData(const char* method, int64_t i) { + printf("%s, Data: '%" PRId64 "'\n", method, i); } -inline void PrintInvalidKeyword(const wchar_t* keyword) { - wprintf(L"Fail keyword: %ls\n", keyword); +inline void PrintMethodData(const char* method, uint64_t u) { + printf("%s, Data: '%" PRIu64 "'\n", method, u); } -inline void PrintInvalidDocument(const char* document) { - printf("Fail document: %s\n\n", document); +inline void PrintMethodData(const char* method, double d) { + printf("%s, Data: '%lf'\n", method, d); } -inline void PrintInvalidDocument(const wchar_t* document) { - wprintf(L"Fail document: %ls\n\n", document); +inline void PrintMethodData(const char* method, const char* s) { + printf("%s, Data: '%s'\n", method, s); } -inline void PrintValidatorPointers(unsigned depth, const char* s, const char* d) { - printf("S: %*s%s\nD: %*s%s\n\n", depth * 4, " ", s, depth * 4, " ", d); +inline void PrintMethodData(const char* method, const wchar_t* s) { + wprintf(L"%hs, Data: '%ls'\n", method, s); } -inline void PrintValidatorPointers(unsigned depth, const wchar_t* s, const wchar_t* d) { - wprintf(L"S: %*ls%ls\nD: %*ls%ls\n\n", depth * 4, L" ", s, depth * 4, L" ", d); +inline void PrintMethodData(const char* method, const char* s1, const char* s2) { + printf("%s, Data: '%s', '%s'\n", method, s1, s2); +} + +inline void PrintMethodData(const char* method, const wchar_t* s1, const wchar_t* s2) { + wprintf(L"%hs, Data: '%ls', '%ls'\n", method, s1, s2); } } // namespace internal #endif // RAPIDJSON_SCHEMA_VERBOSE -/////////////////////////////////////////////////////////////////////////////// -// RAPIDJSON_INVALID_KEYWORD_RETURN - +#ifndef RAPIDJSON_SCHEMA_PRINT #if RAPIDJSON_SCHEMA_VERBOSE -#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword) +#define RAPIDJSON_SCHEMA_PRINT(name, ...) internal::Print##name##Data(__VA_ARGS__) #else -#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) +#define RAPIDJSON_SCHEMA_PRINT(name, ...) +#endif #endif +/////////////////////////////////////////////////////////////////////////////// +// RAPIDJSON_INVALID_KEYWORD_RETURN + #define RAPIDJSON_INVALID_KEYWORD_RETURN(code)\ RAPIDJSON_MULTILINEMACRO_BEGIN\ context.invalidCode = code;\ context.invalidKeyword = SchemaType::GetValidateErrorKeyword(code).GetString();\ - RAPIDJSON_INVALID_KEYWORD_VERBOSE(context.invalidKeyword);\ + RAPIDJSON_SCHEMA_PRINT(InvalidKeyword, context.invalidKeyword);\ return false;\ RAPIDJSON_MULTILINEMACRO_END @@ -142,10 +184,54 @@ RAPIDJSON_MULTILINEMACRO_END enum ValidateFlag { kValidateNoFlags = 0, //!< No flags are set. kValidateContinueOnErrorFlag = 1, //!< Don't stop after first validation error. + kValidateReadFlag = 2, //!< Validation is for a read semantic. + kValidateWriteFlag = 4, //!< Validation is for a write semantic. kValidateDefaultFlags = RAPIDJSON_VALIDATE_DEFAULT_FLAGS //!< Default validate flags. Can be customized by defining RAPIDJSON_VALIDATE_DEFAULT_FLAGS }; /////////////////////////////////////////////////////////////////////////////// +// Specification +enum SchemaDraft { + kDraftUnknown = -1, + kDraftNone = 0, + kDraft03 = 3, + kDraftMin = 4, //!< Current minimum supported draft + kDraft04 = 4, + kDraft05 = 5, + kDraftMax = 5, //!< Current maximum supported draft + kDraft06 = 6, + kDraft07 = 7, + kDraft2019_09 = 8, + kDraft2020_12 = 9 +}; + +enum OpenApiVersion { + kVersionUnknown = -1, + kVersionNone = 0, + kVersionMin = 2, //!< Current minimum supported version + kVersion20 = 2, + kVersion30 = 3, + kVersionMax = 3, //!< Current maximum supported version + kVersion31 = 4, +}; + +struct Specification { + Specification(SchemaDraft d) : draft(d), oapi(kVersionNone) {} + Specification(OpenApiVersion o) : oapi(o) { + if (oapi == kVersion20) draft = kDraft04; + else if (oapi == kVersion30) draft = kDraft05; + else if (oapi == kVersion31) draft = kDraft2020_12; + else draft = kDraft04; + } + ~Specification() {} + bool IsSupported() const { + return ((draft >= kDraftMin && draft <= kDraftMax) && ((oapi == kVersionNone) || (oapi >= kVersionMin && oapi <= kVersionMax))); + } + SchemaDraft draft; + OpenApiVersion oapi; +}; + +/////////////////////////////////////////////////////////////////////////////// // Forward declarations template <typename ValueType, typename Allocator> @@ -234,8 +320,11 @@ public: virtual void EndDisallowedType(const typename SchemaType::ValueType& actualType) = 0; virtual void NotAllOf(ISchemaValidator** subvalidators, SizeType count) = 0; virtual void NoneOf(ISchemaValidator** subvalidators, SizeType count) = 0; - virtual void NotOneOf(ISchemaValidator** subvalidators, SizeType count, bool matched) = 0; + virtual void NotOneOf(ISchemaValidator** subvalidators, SizeType count) = 0; + virtual void MultipleOneOf(SizeType index1, SizeType index2) = 0; virtual void Disallowed() = 0; + virtual void DisallowedWhenWriting() = 0; + virtual void DisallowedWhenReading() = 0; }; @@ -353,10 +442,11 @@ struct SchemaValidationContext { kPatternValidatorWithAdditionalProperty }; - SchemaValidationContext(SchemaValidatorFactoryType& f, ErrorHandlerType& eh, const SchemaType* s) : + SchemaValidationContext(SchemaValidatorFactoryType& f, ErrorHandlerType& eh, const SchemaType* s, unsigned fl = 0) : factory(f), error_handler(eh), schema(s), + flags(fl), valueSchema(), invalidKeyword(), invalidCode(), @@ -380,13 +470,19 @@ struct SchemaValidationContext { if (hasher) factory.DestroryHasher(hasher); if (validators) { - for (SizeType i = 0; i < validatorCount; i++) - factory.DestroySchemaValidator(validators[i]); + for (SizeType i = 0; i < validatorCount; i++) { + if (validators[i]) { + factory.DestroySchemaValidator(validators[i]); + } + } factory.FreeState(validators); } if (patternPropertiesValidators) { - for (SizeType i = 0; i < patternPropertiesValidatorCount; i++) - factory.DestroySchemaValidator(patternPropertiesValidators[i]); + for (SizeType i = 0; i < patternPropertiesValidatorCount; i++) { + if (patternPropertiesValidators[i]) { + factory.DestroySchemaValidator(patternPropertiesValidators[i]); + } + } factory.FreeState(patternPropertiesValidators); } if (patternPropertiesSchemas) @@ -398,6 +494,7 @@ struct SchemaValidationContext { SchemaValidatorFactoryType& factory; ErrorHandlerType& error_handler; const SchemaType* schema; + unsigned flags; const SchemaType* valueSchema; const Ch* invalidKeyword; ValidateErrorCode invalidCode; @@ -439,7 +536,8 @@ public: Schema(SchemaDocumentType* schemaDocument, const PointerType& p, const ValueType& value, const ValueType& document, AllocatorType* allocator, const UriType& id = UriType()) : allocator_(allocator), uri_(schemaDocument->GetURI(), *allocator), - id_(id), + id_(id, allocator), + spec_(schemaDocument->GetSpecification()), pointer_(p, allocator), typeless_(schemaDocument->GetTypeless()), enum_(), @@ -472,8 +570,15 @@ public: maxLength_(~SizeType(0)), exclusiveMinimum_(false), exclusiveMaximum_(false), - defaultValueLength_(0) + defaultValueLength_(0), + readOnly_(false), + writeOnly_(false), + nullable_(false) { + GenericStringBuffer<EncodingType> sb; + p.StringifyUriFragment(sb); + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Schema", sb.GetString(), id.GetString()); + typedef typename ValueType::ConstValueIterator ConstValueIterator; typedef typename ValueType::ConstMemberIterator ConstMemberIterator; @@ -492,10 +597,13 @@ public: return; // If we have an id property, resolve it with the in-scope id + // Not supported for open api 2.0 or 3.0 + if (spec_.oapi != kVersion20 && spec_.oapi != kVersion30) if (const ValueType* v = GetMember(value, GetIdString())) { if (v->IsString()) { UriType local(*v, allocator); id_ = local.Resolve(id_, allocator); + RAPIDJSON_SCHEMA_PRINT(SchemaIds, id.GetString(), v->GetString(), id_.GetString()); } } @@ -512,9 +620,9 @@ public: if (v->IsArray() && v->Size() > 0) { enum_ = static_cast<uint64_t*>(allocator_->Malloc(sizeof(uint64_t) * v->Size())); for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) { - typedef Hasher<EncodingType, MemoryPoolAllocator<> > EnumHasherType; + typedef Hasher<EncodingType, MemoryPoolAllocator<AllocatorType> > EnumHasherType; char buffer[256u + 24]; - MemoryPoolAllocator<> hasherAllocator(buffer, sizeof(buffer)); + MemoryPoolAllocator<AllocatorType> hasherAllocator(buffer, sizeof(buffer)); EnumHasherType h(&hasherAllocator, 256); itr->Accept(h); enum_[enumCount_++] = h.GetHashCode(); @@ -522,8 +630,11 @@ public: } } - if (schemaDocument) { + if (schemaDocument) AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document); + + // AnyOf, OneOf, Not not supported for open api 2.0 + if (schemaDocument && spec_.oapi != kVersion20) { AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document); AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document); @@ -552,6 +663,8 @@ public: if (itr->IsString()) AddUniqueElement(allProperties, *itr); + // Dependencies not supported for open api 2.0 and 3.0 + if (spec_.oapi != kVersion20 && spec_.oapi != kVersion30) if (dependencies && dependencies->IsObject()) for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) { AddUniqueElement(allProperties, itr->name); @@ -581,6 +694,8 @@ public: } } + // PatternProperties not supported for open api 2.0 and 3.0 + if (spec_.oapi != kVersion20 && spec_.oapi != kVersion30) if (const ValueType* v = GetMember(value, GetPatternPropertiesString())) { PointerType q = p.Append(GetPatternPropertiesString(), allocator_); patternProperties_ = static_cast<PatternProperty*>(allocator_->Malloc(sizeof(PatternProperty) * v->MemberCount())); @@ -588,8 +703,9 @@ public: for (ConstMemberIterator itr = v->MemberBegin(); itr != v->MemberEnd(); ++itr) { new (&patternProperties_[patternPropertyCount_]) PatternProperty(); - patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr->name); - schemaDocument->CreateSchema(&patternProperties_[patternPropertyCount_].schema, q.Append(itr->name, allocator_), itr->value, document, id_); + PointerType r = q.Append(itr->name, allocator_); + patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr->name, schemaDocument, r); + schemaDocument->CreateSchema(&patternProperties_[patternPropertyCount_].schema, r, itr->value, document, id_); patternPropertyCount_++; } } @@ -604,6 +720,8 @@ public: } } + // Dependencies not supported for open api 2.0 and 3.0 + if (spec_.oapi != kVersion20 && spec_.oapi != kVersion30) if (dependencies && dependencies->IsObject()) { PointerType q = p.Append(GetDependenciesString(), allocator_); hasDependencies_ = true; @@ -655,6 +773,8 @@ public: AssignIfExist(minItems_, value, GetMinItemsString()); AssignIfExist(maxItems_, value, GetMaxItemsString()); + // AdditionalItems not supported for openapi 2.0 and 3.0 + if (spec_.oapi != kVersion20 && spec_.oapi != kVersion30) if (const ValueType* v = GetMember(value, GetAdditionalItemsString())) { if (v->IsBool()) additionalItems_ = v->GetBool(); @@ -669,7 +789,7 @@ public: AssignIfExist(maxLength_, value, GetMaxLengthString()); if (const ValueType* v = GetMember(value, GetPatternString())) - pattern_ = CreatePattern(*v); + pattern_ = CreatePattern(*v, schemaDocument, p.Append(GetPatternString(), allocator_)); // Number if (const ValueType* v = GetMember(value, GetMinimumString())) @@ -692,6 +812,23 @@ public: if (v->IsString()) defaultValueLength_ = v->GetStringLength(); + // ReadOnly - open api only (until draft 7 supported) + // WriteOnly - open api 3 only (until draft 7 supported) + // Both can't be true + if (spec_.oapi != kVersionNone) + AssignIfExist(readOnly_, value, GetReadOnlyString()); + if (spec_.oapi >= kVersion30) + AssignIfExist(writeOnly_, value, GetWriteOnlyString()); + if (readOnly_ && writeOnly_) + schemaDocument->SchemaError(kSchemaErrorReadOnlyAndWriteOnly, p); + + // Nullable - open api 3 only + // If true add 'null' as allowable type + if (spec_.oapi >= kVersion30) { + AssignIfExist(nullable_, value, GetNullableString()); + if (nullable_) + AddType(GetNullString()); + } } ~Schema() { @@ -723,11 +860,16 @@ public: return id_; } + const Specification& GetSpecification() const { + return spec_; + } + const PointerType& GetPointer() const { return pointer_; } bool BeginValue(Context& context) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::BeginValue"); if (context.inArray) { if (uniqueItems_) context.valueUniqueness = true; @@ -759,6 +901,7 @@ public: } RAPIDJSON_FORCEINLINE bool EndValue(Context& context) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::EndValue"); // Only check pattern properties if we have validators if (context.patternPropertiesValidatorCount > 0) { bool otherValid = false; @@ -822,16 +965,19 @@ public: if (oneOf_.schemas) { bool oneValid = false; + SizeType firstMatch = 0; for (SizeType i = oneOf_.begin; i < oneOf_.begin + oneOf_.count; i++) if (context.validators[i]->IsValid()) { if (oneValid) { - context.error_handler.NotOneOf(&context.validators[oneOf_.begin], oneOf_.count, true); + context.error_handler.MultipleOneOf(firstMatch, i - oneOf_.begin); RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorOneOfMatch); - } else + } else { oneValid = true; + firstMatch = i - oneOf_.begin; + } } if (!oneValid) { - context.error_handler.NotOneOf(&context.validators[oneOf_.begin], oneOf_.count, false); + context.error_handler.NotOneOf(&context.validators[oneOf_.begin], oneOf_.count); RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorOneOf); } } @@ -846,6 +992,7 @@ public: } bool Null(Context& context) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Null"); if (!(type_ & (1 << kNullSchemaType))) { DisallowedType(context, GetNullString()); RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorType); @@ -853,39 +1000,43 @@ public: return CreateParallelValidator(context); } - bool Bool(Context& context, bool) const { - if (!(type_ & (1 << kBooleanSchemaType))) { - DisallowedType(context, GetBooleanString()); - RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorType); - } + bool Bool(Context& context, bool b) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Bool", b); + if (!CheckBool(context, b)) + return false; return CreateParallelValidator(context); } bool Int(Context& context, int i) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Int", (int64_t)i); if (!CheckInt(context, i)) return false; return CreateParallelValidator(context); } bool Uint(Context& context, unsigned u) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Uint", (uint64_t)u); if (!CheckUint(context, u)) return false; return CreateParallelValidator(context); } bool Int64(Context& context, int64_t i) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Int64", i); if (!CheckInt(context, i)) return false; return CreateParallelValidator(context); } bool Uint64(Context& context, uint64_t u) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Uint64", u); if (!CheckUint(context, u)) return false; return CreateParallelValidator(context); } bool Double(Context& context, double d) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Double", d); if (!(type_ & (1 << kNumberSchemaType))) { DisallowedType(context, GetNumberString()); RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorType); @@ -904,6 +1055,7 @@ public: } bool String(Context& context, const Ch* str, SizeType length, bool) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::String", str); if (!(type_ & (1 << kStringSchemaType))) { DisallowedType(context, GetStringString()); RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorType); @@ -932,6 +1084,7 @@ public: } bool StartObject(Context& context) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::StartObject"); if (!(type_ & (1 << kObjectSchemaType))) { DisallowedType(context, GetObjectString()); RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorType); @@ -953,6 +1106,8 @@ public: } bool Key(Context& context, const Ch* str, SizeType len, bool) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::Key", str); + if (patternProperties_) { context.patternPropertiesSchemaCount = 0; for (SizeType i = 0; i < patternPropertyCount_; i++) @@ -1004,6 +1159,7 @@ public: } bool EndObject(Context& context, SizeType memberCount) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::EndObject"); if (hasRequired_) { context.error_handler.StartMissingProperties(); for (SizeType index = 0; index < propertyCount_; index++) @@ -1051,6 +1207,7 @@ public: } bool StartArray(Context& context) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::StartArray"); context.arrayElementIndex = 0; context.inArray = true; // Ensure we note that we are in an array @@ -1063,6 +1220,7 @@ public: } bool EndArray(Context& context, SizeType elementCount) const { + RAPIDJSON_SCHEMA_PRINT(Method, "Schema::EndArray"); context.inArray = false; if (elementCount < minItems_) { @@ -1111,6 +1269,9 @@ public: case kValidateErrorAnyOf: return GetAnyOfString(); case kValidateErrorNot: return GetNotString(); + case kValidateErrorReadOnly: return GetReadOnlyString(); + case kValidateErrorWriteOnly: return GetWriteOnlyString(); + default: return GetNullString(); } } @@ -1158,15 +1319,14 @@ public: RAPIDJSON_STRING_(ExclusiveMaximum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'a', 'x', 'i', 'm', 'u', 'm') RAPIDJSON_STRING_(MultipleOf, 'm', 'u', 'l', 't', 'i', 'p', 'l', 'e', 'O', 'f') RAPIDJSON_STRING_(DefaultValue, 'd', 'e', 'f', 'a', 'u', 'l', 't') + RAPIDJSON_STRING_(Schema, '$', 's', 'c', 'h', 'e', 'm', 'a') RAPIDJSON_STRING_(Ref, '$', 'r', 'e', 'f') RAPIDJSON_STRING_(Id, 'i', 'd') - - RAPIDJSON_STRING_(SchemeEnd, ':') - RAPIDJSON_STRING_(AuthStart, '/', '/') - RAPIDJSON_STRING_(QueryStart, '?') - RAPIDJSON_STRING_(FragStart, '#') - RAPIDJSON_STRING_(Slash, '/') - RAPIDJSON_STRING_(Dot, '.') + RAPIDJSON_STRING_(Swagger, 's', 'w', 'a', 'g', 'g', 'e', 'r') + RAPIDJSON_STRING_(OpenApi, 'o', 'p', 'e', 'n', 'a', 'p', 'i') + RAPIDJSON_STRING_(ReadOnly, 'r', 'e', 'a', 'd', 'O', 'n', 'l', 'y') + RAPIDJSON_STRING_(WriteOnly, 'w', 'r', 'i', 't', 'e', 'O', 'n', 'l', 'y') + RAPIDJSON_STRING_(Nullable, 'n', 'u', 'l', 'l', 'a', 'b', 'l', 'e') #undef RAPIDJSON_STRING_ @@ -1241,10 +1401,11 @@ private: #if RAPIDJSON_SCHEMA_USE_INTERNALREGEX template <typename ValueType> - RegexType* CreatePattern(const ValueType& value) { + RegexType* CreatePattern(const ValueType& value, SchemaDocumentType* sd, const PointerType& p) { if (value.IsString()) { RegexType* r = new (allocator_->Malloc(sizeof(RegexType))) RegexType(value.GetString(), allocator_); if (!r->IsValid()) { + sd->SchemaErrorValue(kSchemaErrorRegexInvalid, p, value.GetString(), value.GetStringLength()); r->~RegexType(); AllocatorType::Free(r); r = 0; @@ -1260,13 +1421,14 @@ private: } #elif RAPIDJSON_SCHEMA_USE_STDREGEX template <typename ValueType> - RegexType* CreatePattern(const ValueType& value) { + RegexType* CreatePattern(const ValueType& value, SchemaDocumentType* sd, const PointerType& p) { if (value.IsString()) { RegexType *r = static_cast<RegexType*>(allocator_->Malloc(sizeof(RegexType))); try { return new (r) RegexType(value.GetString(), std::size_t(value.GetStringLength()), std::regex_constants::ECMAScript); } - catch (const std::regex_error&) { + catch (const std::regex_error& e) { + sd->SchemaErrorValue(kSchemaErrorRegexInvalid, p, value.GetString(), value.GetStringLength()); AllocatorType::Free(r); } } @@ -1279,7 +1441,9 @@ private: } #else template <typename ValueType> - RegexType* CreatePattern(const ValueType&) { return 0; } + RegexType* CreatePattern(const ValueType&) { + return 0; + } static bool IsPatternMatch(const RegexType*, const Ch *, SizeType) { return true; } #endif // RAPIDJSON_SCHEMA_USE_STDREGEX @@ -1294,6 +1458,9 @@ private: else if (type == GetNumberString() ) type_ |= (1 << kNumberSchemaType) | (1 << kIntegerSchemaType); } + // Creates parallel validators for allOf, anyOf, oneOf, not and schema dependencies, if required. + // Also creates a hasher for enums and array uniqueness, if required. + // Also a useful place to add type-independent error checks. bool CreateParallelValidator(Context& context) const { if (enum_ || context.arrayUniqueness) context.hasher = context.factory.CreateHasher(); @@ -1301,6 +1468,7 @@ private: if (validatorCount_) { RAPIDJSON_ASSERT(context.validators == 0); context.validators = static_cast<ISchemaValidator**>(context.factory.MallocState(sizeof(ISchemaValidator*) * validatorCount_)); + std::memset(context.validators, 0, sizeof(ISchemaValidator*) * validatorCount_); context.validatorCount = validatorCount_; // Always return after first failure for these sub-validators @@ -1323,6 +1491,16 @@ private: } } + // Add any other type-independent checks here + if (readOnly_ && (context.flags & kValidateWriteFlag)) { + context.error_handler.DisallowedWhenWriting(); + RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorReadOnly); + } + if (writeOnly_ && (context.flags & kValidateReadFlag)) { + context.error_handler.DisallowedWhenReading(); + RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorWriteOnly); + } + return true; } @@ -1345,6 +1523,14 @@ private: return false; } + bool CheckBool(Context& context, bool) const { + if (!(type_ & (1 << kBooleanSchemaType))) { + DisallowedType(context, GetBooleanString()); + RAPIDJSON_INVALID_KEYWORD_RETURN(kValidateErrorType); + } + return true; + } + bool CheckInt(Context& context, int64_t i) const { if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType)))) { DisallowedType(context, GetIntegerString()); @@ -1510,6 +1696,7 @@ private: AllocatorType* allocator_; SValue uri_; UriType id_; + Specification spec_; PointerType pointer_; const SchemaType* typeless_; uint64_t* enum_; @@ -1554,6 +1741,10 @@ private: bool exclusiveMaximum_; SizeType defaultValueLength_; + + bool readOnly_; + bool writeOnly_; + bool nullable_; }; template<typename Stack, typename Ch> @@ -1600,7 +1791,13 @@ public: virtual ~IGenericRemoteSchemaDocumentProvider() {} virtual const SchemaDocumentType* GetRemoteDocument(const Ch* uri, SizeType length) = 0; - virtual const SchemaDocumentType* GetRemoteDocument(GenericUri<ValueType, AllocatorType> uri) { return GetRemoteDocument(uri.GetBaseString(), uri.GetBaseStringLength()); } + virtual const SchemaDocumentType* GetRemoteDocument(const GenericUri<ValueType, AllocatorType> uri, Specification& spec) { + // Default implementation just calls through for compatibility + // Following line suppresses unused parameter warning + (void)spec; + // printf("GetRemoteDocument: %d %d\n", spec.draft, spec.oapi); + return GetRemoteDocument(uri.GetBaseString(), uri.GetBaseStringLength()); + } }; /////////////////////////////////////////////////////////////////////////////// @@ -1625,8 +1822,9 @@ public: typedef typename EncodingType::Ch Ch; typedef internal::Schema<GenericSchemaDocument> SchemaType; typedef GenericPointer<ValueType, Allocator> PointerType; - typedef GenericValue<EncodingType, AllocatorType> SValue; + typedef GenericValue<EncodingType, AllocatorType> GValue; typedef GenericUri<ValueType, Allocator> UriType; + typedef GenericStringRef<Ch> StringRefType; friend class internal::Schema<GenericSchemaDocument>; template <typename, typename, typename> friend class GenericSchemaValidator; @@ -1641,18 +1839,24 @@ public: \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null. \param allocator An optional allocator instance for allocating memory. Can be null. \param pointer An optional JSON pointer to the start of the schema document + \param spec Optional schema draft or OpenAPI version. Used if no specification in document. Defaults to draft-04. */ explicit GenericSchemaDocument(const ValueType& document, const Ch* uri = 0, SizeType uriLength = 0, IRemoteSchemaDocumentProviderType* remoteProvider = 0, Allocator* allocator = 0, - const PointerType& pointer = PointerType()) : // PR #1393 + const PointerType& pointer = PointerType(), // PR #1393 + const Specification& spec = Specification(kDraft04)) : remoteProvider_(remoteProvider), allocator_(allocator), ownAllocator_(), root_(), typeless_(), schemaMap_(allocator, kInitialSchemaMapSize), - schemaRef_(allocator, kInitialSchemaRefSize) + schemaRef_(allocator, kInitialSchemaRefSize), + spec_(spec), + error_(kObjectType), + currentError_() { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaDocument::GenericSchemaDocument"); if (!allocator_) ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)(); @@ -1663,6 +1867,10 @@ public: typeless_ = static_cast<SchemaType*>(allocator_->Malloc(sizeof(SchemaType))); new (typeless_) SchemaType(this, PointerType(), ValueType(kObjectType).Move(), ValueType(kObjectType).Move(), allocator_, docId_); + // Establish the schema draft or open api version. + // We only ever look for '$schema' or 'swagger' or 'openapi' at the root of the document. + SetSchemaSpecification(document); + // Generate root schema, it will call CreateSchema() to create sub-schemas, // And call HandleRefSchema() if there are $ref. // PR #1393 use input pointer if supplied @@ -1673,6 +1881,11 @@ public: else if (const ValueType* v = pointer.Get(document)) { CreateSchema(&root_, pointer, *v, document, docId_); } + else { + GenericStringBuffer<EncodingType> sb; + pointer.StringifyUriFragment(sb); + SchemaErrorValue(kSchemaErrorStartUnknown, PointerType(), sb.GetString(), static_cast<SizeType>(sb.GetSize() / sizeof(Ch))); + } RAPIDJSON_ASSERT(root_ != 0); @@ -1690,7 +1903,10 @@ public: schemaMap_(std::move(rhs.schemaMap_)), schemaRef_(std::move(rhs.schemaRef_)), uri_(std::move(rhs.uri_)), - docId_(rhs.docId_) + docId_(std::move(rhs.docId_)), + spec_(rhs.spec_), + error_(std::move(rhs.error_)), + currentError_(std::move(rhs.currentError_)) { rhs.remoteProvider_ = 0; rhs.allocator_ = 0; @@ -1709,15 +1925,81 @@ public: Allocator::Free(typeless_); } + // these may contain some allocator data so clear before deleting ownAllocator_ + uri_.SetNull(); + error_.SetNull(); + currentError_.SetNull(); + RAPIDJSON_DELETE(ownAllocator_); } - const SValue& GetURI() const { return uri_; } + const GValue& GetURI() const { return uri_; } + + const Specification& GetSpecification() const { return spec_; } + bool IsSupportedSpecification() const { return spec_.IsSupported(); } + + //! Static method to get the specification of any schema document + // Returns kDraftNone if document is silent + static const Specification GetSpecification(const ValueType& document) { + SchemaDraft draft = GetSchemaDraft(document); + if (draft != kDraftNone) + return Specification(draft); + else { + OpenApiVersion oapi = GetOpenApiVersion(document); + if (oapi != kVersionNone) + return Specification(oapi); + } + return Specification(kDraftNone); + } //! Get the root schema. const SchemaType& GetRoot() const { return *root_; } -private: + //! Gets the error object. + GValue& GetError() { return error_; } + const GValue& GetError() const { return error_; } + + static const StringRefType& GetSchemaErrorKeyword(SchemaErrorCode schemaErrorCode) { + switch (schemaErrorCode) { + case kSchemaErrorStartUnknown: return GetStartUnknownString(); + case kSchemaErrorRefPlainName: return GetRefPlainNameString(); + case kSchemaErrorRefInvalid: return GetRefInvalidString(); + case kSchemaErrorRefPointerInvalid: return GetRefPointerInvalidString(); + case kSchemaErrorRefUnknown: return GetRefUnknownString(); + case kSchemaErrorRefCyclical: return GetRefCyclicalString(); + case kSchemaErrorRefNoRemoteProvider: return GetRefNoRemoteProviderString(); + case kSchemaErrorRefNoRemoteSchema: return GetRefNoRemoteSchemaString(); + case kSchemaErrorRegexInvalid: return GetRegexInvalidString(); + case kSchemaErrorSpecUnknown: return GetSpecUnknownString(); + case kSchemaErrorSpecUnsupported: return GetSpecUnsupportedString(); + case kSchemaErrorSpecIllegal: return GetSpecIllegalString(); + case kSchemaErrorReadOnlyAndWriteOnly: return GetReadOnlyAndWriteOnlyString(); + default: return GetNullString(); + } + } + + //! Default error method + void SchemaError(const SchemaErrorCode code, const PointerType& location) { + currentError_ = GValue(kObjectType); + AddCurrentError(code, location); + } + + //! Method for error with single string value insert + void SchemaErrorValue(const SchemaErrorCode code, const PointerType& location, const Ch* value, SizeType length) { + currentError_ = GValue(kObjectType); + currentError_.AddMember(GetValueString(), GValue(value, length, *allocator_).Move(), *allocator_); + AddCurrentError(code, location); + } + + //! Method for error with invalid pointer + void SchemaErrorPointer(const SchemaErrorCode code, const PointerType& location, const Ch* value, SizeType length, const PointerType& pointer) { + currentError_ = GValue(kObjectType); + currentError_.AddMember(GetValueString(), GValue(value, length, *allocator_).Move(), *allocator_); + currentError_.AddMember(GetOffsetString(), static_cast<SizeType>(pointer.GetParseErrorOffset() / sizeof(Ch)), *allocator_); + AddCurrentError(code, location); + } + + private: //! Prohibit copying GenericSchemaDocument(const GenericSchemaDocument&); //! Prohibit assignment @@ -1738,6 +2020,146 @@ private: bool owned; }; + void AddErrorInstanceLocation(GValue& result, const PointerType& location) { + GenericStringBuffer<EncodingType> sb; + location.StringifyUriFragment(sb); + GValue instanceRef(sb.GetString(), static_cast<SizeType>(sb.GetSize() / sizeof(Ch)), *allocator_); + result.AddMember(GetInstanceRefString(), instanceRef, *allocator_); + } + + void AddError(GValue& keyword, GValue& error) { + typename GValue::MemberIterator member = error_.FindMember(keyword); + if (member == error_.MemberEnd()) + error_.AddMember(keyword, error, *allocator_); + else { + if (member->value.IsObject()) { + GValue errors(kArrayType); + errors.PushBack(member->value, *allocator_); + member->value = errors; + } + member->value.PushBack(error, *allocator_); + } + } + + void AddCurrentError(const SchemaErrorCode code, const PointerType& location) { + RAPIDJSON_SCHEMA_PRINT(InvalidKeyword, GetSchemaErrorKeyword(code)); + currentError_.AddMember(GetErrorCodeString(), code, *allocator_); + AddErrorInstanceLocation(currentError_, location); + AddError(GValue(GetSchemaErrorKeyword(code)).Move(), currentError_); + } + +#define RAPIDJSON_STRING_(name, ...) \ + static const StringRefType& Get##name##String() {\ + static const Ch s[] = { __VA_ARGS__, '\0' };\ + static const StringRefType v(s, static_cast<SizeType>(sizeof(s) / sizeof(Ch) - 1)); \ + return v;\ + } + + RAPIDJSON_STRING_(InstanceRef, 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', 'R', 'e', 'f') + RAPIDJSON_STRING_(ErrorCode, 'e', 'r', 'r', 'o', 'r', 'C', 'o', 'd', 'e') + RAPIDJSON_STRING_(Value, 'v', 'a', 'l', 'u', 'e') + RAPIDJSON_STRING_(Offset, 'o', 'f', 'f', 's', 'e', 't') + + RAPIDJSON_STRING_(Null, 'n', 'u', 'l', 'l') + RAPIDJSON_STRING_(SpecUnknown, 'S', 'p', 'e', 'c', 'U', 'n', 'k', 'n', 'o', 'w', 'n') + RAPIDJSON_STRING_(SpecUnsupported, 'S', 'p', 'e', 'c', 'U', 'n', 's', 'u', 'p', 'p', 'o', 'r', 't', 'e', 'd') + RAPIDJSON_STRING_(SpecIllegal, 'S', 'p', 'e', 'c', 'I', 'l', 'l', 'e', 'g', 'a', 'l') + RAPIDJSON_STRING_(StartUnknown, 'S', 't', 'a', 'r', 't', 'U', 'n', 'k', 'n', 'o', 'w', 'n') + RAPIDJSON_STRING_(RefPlainName, 'R', 'e', 'f', 'P', 'l', 'a', 'i', 'n', 'N', 'a', 'm', 'e') + RAPIDJSON_STRING_(RefInvalid, 'R', 'e', 'f', 'I', 'n', 'v', 'a', 'l', 'i', 'd') + RAPIDJSON_STRING_(RefPointerInvalid, 'R', 'e', 'f', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'I', 'n', 'v', 'a', 'l', 'i', 'd') + RAPIDJSON_STRING_(RefUnknown, 'R', 'e', 'f', 'U', 'n', 'k', 'n', 'o', 'w', 'n') + RAPIDJSON_STRING_(RefCyclical, 'R', 'e', 'f', 'C', 'y', 'c', 'l', 'i', 'c', 'a', 'l') + RAPIDJSON_STRING_(RefNoRemoteProvider, 'R', 'e', 'f', 'N', 'o', 'R', 'e', 'm', 'o', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r') + RAPIDJSON_STRING_(RefNoRemoteSchema, 'R', 'e', 'f', 'N', 'o', 'R', 'e', 'm', 'o', 't', 'e', 'S', 'c', 'h', 'e', 'm', 'a') + RAPIDJSON_STRING_(ReadOnlyAndWriteOnly, 'R', 'e', 'a', 'd', 'O', 'n', 'l', 'y', 'A', 'n', 'd', 'W', 'r', 'i', 't', 'e', 'O', 'n', 'l', 'y') + RAPIDJSON_STRING_(RegexInvalid, 'R', 'e', 'g', 'e', 'x', 'I', 'n', 'v', 'a', 'l', 'i', 'd') + +#undef RAPIDJSON_STRING_ + + // Static method to get schema draft of any schema document + static SchemaDraft GetSchemaDraft(const ValueType& document) { + static const Ch kDraft03String[] = { 'h', 't', 't', 'p', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '-', '0', '3', '/', 's', 'c', 'h', 'e', 'm', 'a', '#', '\0' }; + static const Ch kDraft04String[] = { 'h', 't', 't', 'p', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '-', '0', '4', '/', 's', 'c', 'h', 'e', 'm', 'a', '#', '\0' }; + static const Ch kDraft05String[] = { 'h', 't', 't', 'p', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '-', '0', '5', '/', 's', 'c', 'h', 'e', 'm', 'a', '#', '\0' }; + static const Ch kDraft06String[] = { 'h', 't', 't', 'p', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '-', '0', '6', '/', 's', 'c', 'h', 'e', 'm', 'a', '#', '\0' }; + static const Ch kDraft07String[] = { 'h', 't', 't', 'p', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '-', '0', '7', '/', 's', 'c', 'h', 'e', 'm', 'a', '#', '\0' }; + static const Ch kDraft2019_09String[] = { 'h', 't', 't', 'p', 's', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '/', '2', '0', '1', '9', '-', '0', '9', '/', 's', 'c', 'h', 'e', 'm', 'a', '\0' }; + static const Ch kDraft2020_12String[] = { 'h', 't', 't', 'p', 's', ':', '/', '/', 'j', 's', 'o', 'n', '-', 's', 'c', 'h', 'e', 'm', 'a', '.', 'o', 'r', 'g', '/', 'd', 'r', 'a', 'f', 't', '/', '2', '0', '2', '0', '-', '1', '2', '/', 's', 'c', 'h', 'e', 'm', 'a', '\0' }; + + if (!document.IsObject()) { + return kDraftNone; + } + + // Get the schema draft from the $schema keyword at the supplied location + typename ValueType::ConstMemberIterator itr = document.FindMember(SchemaType::GetSchemaString()); + if (itr != document.MemberEnd()) { + if (!itr->value.IsString()) return kDraftUnknown; + const UriType draftUri(itr->value); + // Check base uri for match + if (draftUri.Match(UriType(kDraft04String), false)) return kDraft04; + if (draftUri.Match(UriType(kDraft05String), false)) return kDraft05; + if (draftUri.Match(UriType(kDraft06String), false)) return kDraft06; + if (draftUri.Match(UriType(kDraft07String), false)) return kDraft07; + if (draftUri.Match(UriType(kDraft03String), false)) return kDraft03; + if (draftUri.Match(UriType(kDraft2019_09String), false)) return kDraft2019_09; + if (draftUri.Match(UriType(kDraft2020_12String), false)) return kDraft2020_12; + return kDraftUnknown; + } + // $schema not found + return kDraftNone; + } + + + // Get open api version of any schema document + static OpenApiVersion GetOpenApiVersion(const ValueType& document) { + static const Ch kVersion20String[] = { '2', '.', '0', '\0' }; + static const Ch kVersion30String[] = { '3', '.', '0', '.', '\0' }; // ignore patch level + static const Ch kVersion31String[] = { '3', '.', '1', '.', '\0' }; // ignore patch level + static SizeType len = internal::StrLen<Ch>(kVersion30String); + + if (!document.IsObject()) { + return kVersionNone; + } + + // Get the open api version from the swagger / openapi keyword at the supplied location + typename ValueType::ConstMemberIterator itr = document.FindMember(SchemaType::GetSwaggerString()); + if (itr == document.MemberEnd()) itr = document.FindMember(SchemaType::GetOpenApiString()); + if (itr != document.MemberEnd()) { + if (!itr->value.IsString()) return kVersionUnknown; + const ValueType kVersion20Value(kVersion20String); + if (kVersion20Value == itr->value) return kVersion20; // must match 2.0 exactly + const ValueType kVersion30Value(kVersion30String); + if (itr->value.GetStringLength() > len && kVersion30Value == ValueType(itr->value.GetString(), len)) return kVersion30; // must match 3.0.x + const ValueType kVersion31Value(kVersion31String); + if (itr->value.GetStringLength() > len && kVersion31Value == ValueType(itr->value.GetString(), len)) return kVersion31; // must match 3.1.x + return kVersionUnknown; + } + // swagger or openapi not found + return kVersionNone; + } + + // Get the draft of the schema or the open api version (which implies the draft). + // Report an error if schema draft or open api version not supported or not recognized, or both in document, and carry on. + void SetSchemaSpecification(const ValueType& document) { + // Look for '$schema', 'swagger' or 'openapi' keyword at document root + SchemaDraft docDraft = GetSchemaDraft(document); + OpenApiVersion docOapi = GetOpenApiVersion(document); + // Error if both in document + if (docDraft != kDraftNone && docOapi != kVersionNone) + SchemaError(kSchemaErrorSpecIllegal, PointerType()); + // Use document draft or open api version if present or use spec from constructor + if (docDraft != kDraftNone) + spec_ = Specification(docDraft); + else if (docOapi != kVersionNone) + spec_ = Specification(docOapi); + // Error if draft or version unknown + if (spec_.draft == kDraftUnknown || spec_.oapi == kVersionUnknown) + SchemaError(kSchemaErrorSpecUnknown, PointerType()); + else if (!spec_.IsSupported()) + SchemaError(kSchemaErrorSpecUnsupported, PointerType()); + } + // Changed by PR #1393 void CreateSchemaRecursive(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document, const UriType& id) { if (v.GetType() == kObjectType) { @@ -1754,6 +2176,9 @@ private: // Changed by PR #1393 const UriType& CreateSchema(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document, const UriType& id) { RAPIDJSON_ASSERT(pointer.IsValid()); + GenericStringBuffer<EncodingType> sb; + pointer.StringifyUriFragment(sb); + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaDocument::CreateSchema", sb.GetString(), id.GetString()); if (v.IsObject()) { if (const SchemaType* sc = GetSchema(pointer)) { if (schema) @@ -1783,41 +2208,53 @@ private: if (itr == v.MemberEnd()) return false; + GenericStringBuffer<EncodingType> sb; + source.StringifyUriFragment(sb); + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaDocument::HandleRefSchema", sb.GetString(), id.GetString()); // Resolve the source pointer to the $ref'ed schema (finally) new (schemaRef_.template Push<SchemaRefPtr>()) SchemaRefPtr(&source); if (itr->value.IsString()) { SizeType len = itr->value.GetStringLength(); - if (len > 0) { + if (len == 0) + SchemaError(kSchemaErrorRefInvalid, source); + else { // First resolve $ref against the in-scope id UriType scopeId = UriType(id, allocator_); UriType ref = UriType(itr->value, allocator_).Resolve(scopeId, allocator_); + RAPIDJSON_SCHEMA_PRINT(SchemaIds, id.GetString(), itr->value.GetString(), ref.GetString()); // See if the resolved $ref minus the fragment matches a resolved id in this document // Search from the root. Returns the subschema in the document and its absolute JSON pointer. PointerType basePointer = PointerType(); const ValueType *base = FindId(document, ref, basePointer, docId_, false); if (!base) { // Remote reference - call the remote document provider - if (remoteProvider_) { - if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(ref)) { + if (!remoteProvider_) + SchemaError(kSchemaErrorRefNoRemoteProvider, source); + else { + if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(ref, spec_)) { const Ch* s = ref.GetFragString(); len = ref.GetFragStringLength(); if (len <= 1 || s[1] == '/') { // JSON pointer fragment, absolute in the remote schema const PointerType pointer(s, len, allocator_); - if (pointer.IsValid()) { + if (!pointer.IsValid()) + SchemaErrorPointer(kSchemaErrorRefPointerInvalid, source, s, len, pointer); + else { // Get the subschema if (const SchemaType *sc = remoteDocument->GetSchema(pointer)) { if (schema) *schema = sc; AddSchemaRefs(const_cast<SchemaType *>(sc)); return true; - } + } else + SchemaErrorValue(kSchemaErrorRefUnknown, source, ref.GetString(), ref.GetStringLength()); } - } else { - // Plain name fragment, not allowed - } - } + } else + // Plain name fragment, not allowed in remote schema + SchemaErrorValue(kSchemaErrorRefPlainName, source, s, len); + } else + SchemaErrorValue(kSchemaErrorRefNoRemoteSchema, source, ref.GetString(), ref.GetStringLength()); } } else { // Local reference @@ -1826,16 +2263,18 @@ private: if (len <= 1 || s[1] == '/') { // JSON pointer fragment, relative to the resolved URI const PointerType relPointer(s, len, allocator_); - if (relPointer.IsValid()) { + if (!relPointer.IsValid()) + SchemaErrorPointer(kSchemaErrorRefPointerInvalid, source, s, len, relPointer); + else { // Get the subschema if (const ValueType *pv = relPointer.Get(*base)) { // Now get the absolute JSON pointer by adding relative to base - PointerType pointer(basePointer); + PointerType pointer(basePointer, allocator_); for (SizeType i = 0; i < relPointer.GetTokenCount(); i++) pointer = pointer.Append(relPointer.GetTokens()[i], allocator_); - //GenericStringBuffer<EncodingType> sb; - //pointer.StringifyUriFragment(sb); - if (pointer.IsValid() && !IsCyclicRef(pointer)) { + if (IsCyclicRef(pointer)) + SchemaErrorValue(kSchemaErrorRefCyclical, source, ref.GetString(), ref.GetStringLength()); + else { // Call CreateSchema recursively, but first compute the in-scope id for the $ref target as we have jumped there // TODO: cache pointer <-> id mapping size_t unresolvedTokenIndex; @@ -1843,17 +2282,21 @@ private: CreateSchema(schema, pointer, *pv, document, scopeId); return true; } - } + } else + SchemaErrorValue(kSchemaErrorRefUnknown, source, ref.GetString(), ref.GetStringLength()); } } else { // Plain name fragment, relative to the resolved URI + // Not supported in open api 2.0 and 3.0 + PointerType pointer(allocator_); + if (spec_.oapi == kVersion20 || spec_.oapi == kVersion30) + SchemaErrorValue(kSchemaErrorRefPlainName, source, s, len); // See if the fragment matches an id in this document. // Search from the base we just established. Returns the subschema in the document and its absolute JSON pointer. - PointerType pointer = PointerType(); - if (const ValueType *pv = FindId(*base, ref, pointer, UriType(ref.GetBaseString(), ref.GetBaseStringLength(), allocator_), true, basePointer)) { - if (!IsCyclicRef(pointer)) { - //GenericStringBuffer<EncodingType> sb; - //pointer.StringifyUriFragment(sb); + else if (const ValueType *pv = FindId(*base, ref, pointer, UriType(ref.GetBaseString(), ref.GetBaseStringLength(), allocator_), true, basePointer)) { + if (IsCyclicRef(pointer)) + SchemaErrorValue(kSchemaErrorRefCyclical, source, ref.GetString(), ref.GetStringLength()); + else { // Call CreateSchema recursively, but first compute the in-scope id for the $ref target as we have jumped there // TODO: cache pointer <-> id mapping size_t unresolvedTokenIndex; @@ -1861,7 +2304,8 @@ private: CreateSchema(schema, pointer, *pv, document, scopeId); return true; } - } + } else + SchemaErrorValue(kSchemaErrorRefUnknown, source, ref.GetString(), ref.GetStringLength()); } } } @@ -1891,6 +2335,7 @@ private: } // See if it matches if (localuri.Match(finduri, full)) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaDocument::FindId (match)", full ? localuri.GetString() : localuri.GetBaseString()); resval = const_cast<ValueType *>(&doc); resptr = here; return resval; @@ -1917,6 +2362,7 @@ private: // Added by PR #1393 void AddSchemaRefs(SchemaType* schema) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaDocument::AddSchemaRefs"); while (!schemaRef_.Empty()) { SchemaRefPtr *ref = schemaRef_.template Pop<SchemaRefPtr>(1); SchemaEntry *entry = schemaMap_.template Push<SchemaEntry>(); @@ -1958,8 +2404,11 @@ private: SchemaType* typeless_; internal::Stack<Allocator> schemaMap_; // Stores created Pointer -> Schemas internal::Stack<Allocator> schemaRef_; // Stores Pointer(s) from $ref(s) until resolved - SValue uri_; // Schema document URI + GValue uri_; // Schema document URI UriType docId_; + Specification spec_; + GValue error_; + GValue currentError_; }; //! GenericSchemaDocument using Value type. @@ -2023,11 +2472,10 @@ public: currentError_(), missingDependents_(), valid_(true), - flags_(kValidateDefaultFlags) -#if RAPIDJSON_SCHEMA_VERBOSE - , depth_(0) -#endif + flags_(kValidateDefaultFlags), + depth_(0) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::GenericSchemaValidator"); } //! Constructor with output handler. @@ -2055,11 +2503,10 @@ public: currentError_(), missingDependents_(), valid_(true), - flags_(kValidateDefaultFlags) -#if RAPIDJSON_SCHEMA_VERBOSE - , depth_(0) -#endif + flags_(kValidateDefaultFlags), + depth_(0) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::GenericSchemaValidator (output handler)"); } //! Destructor. @@ -2092,13 +2539,12 @@ public: return flags_; } - //! Checks whether the current state is valid. - // Implementation of ISchemaValidator virtual bool IsValid() const { if (!valid_) return false; if (GetContinueOnErrors() && !error_.ObjectEmpty()) return false; return true; } + //! End of Implementation of ISchemaValidator //! Gets the error object. ValueType& GetError() { return error_; } @@ -2306,13 +2752,29 @@ public: void NoneOf(ISchemaValidator** subvalidators, SizeType count) { AddErrorArray(kValidateErrorAnyOf, subvalidators, count); } - void NotOneOf(ISchemaValidator** subvalidators, SizeType count, bool matched = false) { - AddErrorArray(matched ? kValidateErrorOneOfMatch : kValidateErrorOneOf, subvalidators, count); + void NotOneOf(ISchemaValidator** subvalidators, SizeType count) { + AddErrorArray(kValidateErrorOneOf, subvalidators, count); + } + void MultipleOneOf(SizeType index1, SizeType index2) { + ValueType matches(kArrayType); + matches.PushBack(index1, GetStateAllocator()); + matches.PushBack(index2, GetStateAllocator()); + currentError_.SetObject(); + currentError_.AddMember(GetMatchesString(), matches, GetStateAllocator()); + AddCurrentError(kValidateErrorOneOfMatch); } void Disallowed() { currentError_.SetObject(); AddCurrentError(kValidateErrorNot); } + void DisallowedWhenWriting() { + currentError_.SetObject(); + AddCurrentError(kValidateErrorReadOnly); + } + void DisallowedWhenReading() { + currentError_.SetObject(); + AddCurrentError(kValidateErrorWriteOnly); + } #define RAPIDJSON_STRING_(name, ...) \ static const StringRefType& Get##name##String() {\ @@ -2331,25 +2793,18 @@ public: RAPIDJSON_STRING_(ErrorCode, 'e', 'r', 'r', 'o', 'r', 'C', 'o', 'd', 'e') RAPIDJSON_STRING_(ErrorMessage, 'e', 'r', 'r', 'o', 'r', 'M', 'e', 's', 's', 'a', 'g', 'e') RAPIDJSON_STRING_(Duplicates, 'd', 'u', 'p', 'l', 'i', 'c', 'a', 't', 'e', 's') + RAPIDJSON_STRING_(Matches, 'm', 'a', 't', 'c', 'h', 'e', 's') #undef RAPIDJSON_STRING_ -#if RAPIDJSON_SCHEMA_VERBOSE -#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \ -RAPIDJSON_MULTILINEMACRO_BEGIN\ - *documentStack_.template Push<Ch>() = '\0';\ - documentStack_.template Pop<Ch>(1);\ - internal::PrintInvalidDocument(documentStack_.template Bottom<Ch>());\ -RAPIDJSON_MULTILINEMACRO_END -#else -#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() -#endif - #define RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\ if (!valid_) return false; \ if ((!BeginValue() && !GetContinueOnErrors()) || (!CurrentSchema().method arg1 && !GetContinueOnErrors())) {\ - RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\ - return valid_ = false;\ + *documentStack_.template Push<Ch>() = '\0';\ + documentStack_.template Pop<Ch>(1);\ + RAPIDJSON_SCHEMA_PRINT(InvalidDocument, documentStack_.template Bottom<Ch>());\ + valid_ = false;\ + return valid_;\ } #define RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\ @@ -2386,50 +2841,66 @@ RAPIDJSON_MULTILINEMACRO_END { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); } bool StartObject() { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::StartObject"); RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartObject, (CurrentContext())); RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ()); - return valid_ = !outputHandler_ || outputHandler_->StartObject(); + valid_ = !outputHandler_ || outputHandler_->StartObject(); + return valid_; } bool Key(const Ch* str, SizeType len, bool copy) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::Key", str); if (!valid_) return false; AppendToken(str, len); - if (!CurrentSchema().Key(CurrentContext(), str, len, copy) && !GetContinueOnErrors()) return valid_ = false; + if (!CurrentSchema().Key(CurrentContext(), str, len, copy) && !GetContinueOnErrors()) { + valid_ = false; + return valid_; + } RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy)); - return valid_ = !outputHandler_ || outputHandler_->Key(str, len, copy); + valid_ = !outputHandler_ || outputHandler_->Key(str, len, copy); + return valid_; } bool EndObject(SizeType memberCount) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::EndObject"); if (!valid_) return false; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount)); - if (!CurrentSchema().EndObject(CurrentContext(), memberCount) && !GetContinueOnErrors()) return valid_ = false; + if (!CurrentSchema().EndObject(CurrentContext(), memberCount) && !GetContinueOnErrors()) { + valid_ = false; + return valid_; + } RAPIDJSON_SCHEMA_HANDLE_END_(EndObject, (memberCount)); } bool StartArray() { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::StartArray"); RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartArray, (CurrentContext())); RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ()); - return valid_ = !outputHandler_ || outputHandler_->StartArray(); + valid_ = !outputHandler_ || outputHandler_->StartArray(); + return valid_; } bool EndArray(SizeType elementCount) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::EndArray"); if (!valid_) return false; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount)); - if (!CurrentSchema().EndArray(CurrentContext(), elementCount) && !GetContinueOnErrors()) return valid_ = false; + if (!CurrentSchema().EndArray(CurrentContext(), elementCount) && !GetContinueOnErrors()) { + valid_ = false; + return valid_; + } RAPIDJSON_SCHEMA_HANDLE_END_(EndArray, (elementCount)); } -#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_ #undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_ #undef RAPIDJSON_SCHEMA_HANDLE_PARALLEL_ #undef RAPIDJSON_SCHEMA_HANDLE_VALUE_ // Implementation of ISchemaStateFactory<SchemaType> virtual ISchemaValidator* CreateSchemaValidator(const SchemaType& root, const bool inheritContinueOnErrors) { + *documentStack_.template Push<Ch>() = '\0'; + documentStack_.template Pop<Ch>(1); ISchemaValidator* sv = new (GetStateAllocator().Malloc(sizeof(GenericSchemaValidator))) GenericSchemaValidator(*schemaDocument_, root, documentStack_.template Bottom<char>(), documentStack_.GetSize(), -#if RAPIDJSON_SCHEMA_VERBOSE depth_ + 1, -#endif &GetStateAllocator()); sv->SetValidateFlags(inheritContinueOnErrors ? GetValidateFlags() : GetValidateFlags() & ~(unsigned)kValidateContinueOnErrorFlag); return sv; @@ -2462,6 +2933,7 @@ RAPIDJSON_MULTILINEMACRO_END virtual void FreeState(void* p) { StateAllocator::Free(p); } + // End of implementation of ISchemaStateFactory<SchemaType> private: typedef typename SchemaType::Context Context; @@ -2472,9 +2944,7 @@ private: const SchemaDocumentType& schemaDocument, const SchemaType& root, const char* basePath, size_t basePathSize, -#if RAPIDJSON_SCHEMA_VERBOSE unsigned depth, -#endif StateAllocator* allocator = 0, size_t schemaStackCapacity = kDefaultSchemaStackCapacity, size_t documentStackCapacity = kDefaultDocumentStackCapacity) @@ -2490,11 +2960,10 @@ private: currentError_(), missingDependents_(), valid_(true), - flags_(kValidateDefaultFlags) -#if RAPIDJSON_SCHEMA_VERBOSE - , depth_(depth) -#endif + flags_(kValidateDefaultFlags), + depth_(depth) { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::GenericSchemaValidator (internal)", basePath && basePathSize ? basePath : ""); if (basePath && basePathSize) memcpy(documentStack_.template Push<char>(basePathSize), basePath, basePathSize); } @@ -2510,6 +2979,7 @@ private: } bool BeginValue() { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::BeginValue"); if (schemaStack_.Empty()) PushSchema(root_); else { @@ -2531,6 +3001,7 @@ private: ISchemaValidator**& va = CurrentContext().patternPropertiesValidators; SizeType& validatorCount = CurrentContext().patternPropertiesValidatorCount; va = static_cast<ISchemaValidator**>(MallocState(sizeof(ISchemaValidator*) * count)); + std::memset(va, 0, sizeof(ISchemaValidator*) * count); for (SizeType i = 0; i < count; i++) va[validatorCount++] = CreateSchemaValidator(*sa[i], true); // Inherit continueOnError } @@ -2541,17 +3012,15 @@ private: } bool EndValue() { + RAPIDJSON_SCHEMA_PRINT(Method, "GenericSchemaValidator::EndValue"); if (!CurrentSchema().EndValue(CurrentContext()) && !GetContinueOnErrors()) return false; -#if RAPIDJSON_SCHEMA_VERBOSE GenericStringBuffer<EncodingType> sb; - schemaDocument_->GetPointer(&CurrentSchema()).Stringify(sb); - + schemaDocument_->GetPointer(&CurrentSchema()).StringifyUriFragment(sb); *documentStack_.template Push<Ch>() = '\0'; documentStack_.template Pop<Ch>(1); - internal::PrintValidatorPointers(depth_, sb.GetString(), documentStack_.template Bottom<Ch>()); -#endif + RAPIDJSON_SCHEMA_PRINT(ValidatorPointers, sb.GetString(), documentStack_.template Bottom<Ch>(), depth_); void* hasher = CurrentContext().hasher; uint64_t h = hasher && CurrentContext().arrayUniqueness ? static_cast<HasherType*>(hasher)->GetHashCode() : 0; @@ -2602,7 +3071,7 @@ private: } } - RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType& schema) { new (schemaStack_.template Push<Context>()) Context(*this, *this, &schema); } + RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType& schema) { new (schemaStack_.template Push<Context>()) Context(*this, *this, &schema, flags_); } RAPIDJSON_FORCEINLINE void PopSchema() { Context* c = schemaStack_.template Pop<Context>(1); @@ -2704,9 +3173,7 @@ private: ValueType missingDependents_; bool valid_; unsigned flags_; -#if RAPIDJSON_SCHEMA_VERBOSE unsigned depth_; -#endif }; typedef GenericSchemaValidator<SchemaDocument> SchemaValidator; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/cursorstreamwrappertest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/cursorstreamwrappertest.cpp index dad3359459..49e3d5e549 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/cursorstreamwrappertest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/cursorstreamwrappertest.cpp @@ -20,7 +20,7 @@ using namespace rapidjson; // static const char json[] = "{\"string\"\n\n:\"my string\",\"array\"\n:[\"1\", \"2\", \"3\"]}"; -bool testJson(const char *json, size_t &line, size_t &col) { +static bool testJson(const char *json, size_t &line, size_t &col) { StringStream ss(json); CursorStreamWrapper<StringStream> csw(ss); Document document; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp index 52e5040bb0..72a3441107 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp @@ -113,8 +113,8 @@ protected: EXPECT_EQ(expected, actual); } EXPECT_EQ('\0', s.Peek()); - free(data); EXPECT_EQ(size, eis.Tell()); + free(data); } } diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp index ec809e2edc..707d3647d0 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp @@ -77,7 +77,7 @@ static void TestFileStream() { } fp = fopen(filename, "r"); - ASSERT_TRUE( fp != NULL ); + ASSERT_TRUE( fp != NULL ); for (const char* p = s; *p; p++) EXPECT_EQ(*p, static_cast<char>(fgetc(fp))); fclose(fp); diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp index 4173f15e7e..471ed7effc 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp @@ -303,7 +303,7 @@ TEST(Pointer, Parse_URIFragment) { } { - // Decode UTF-8 perecent encoding to UTF-8 + // Decode UTF-8 percent encoding to UTF-8 Pointer p("#/%C2%A2"); EXPECT_TRUE(p.IsValid()); EXPECT_EQ(1u, p.GetTokenCount()); @@ -311,7 +311,7 @@ TEST(Pointer, Parse_URIFragment) { } { - // Decode UTF-8 perecent encoding to UTF-16 + // Decode UTF-8 percent encoding to UTF-16 GenericPointer<GenericValue<UTF16<> > > p(L"#/%C2%A2"); EXPECT_TRUE(p.IsValid()); EXPECT_EQ(1u, p.GetTokenCount()); @@ -320,7 +320,7 @@ TEST(Pointer, Parse_URIFragment) { } { - // Decode UTF-8 perecent encoding to UTF-16 + // Decode UTF-8 percent encoding to UTF-16 GenericPointer<GenericValue<UTF16<> > > p(L"#/%E2%82%AC"); EXPECT_TRUE(p.IsValid()); EXPECT_EQ(1u, p.GetTokenCount()); diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp index 92c1b72384..3f511b3e17 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp @@ -112,6 +112,13 @@ TEST(SchemaValidator, Hasher) { #define VALIDATE(schema, json, expected) \ {\ + VALIDATE_(schema, json, expected, true) \ +} + +#define VALIDATE_(schema, json, expected, expected2) \ +{\ + EXPECT_TRUE(expected2 == schema.GetError().ObjectEmpty());\ + EXPECT_TRUE(schema.IsSupportedSpecification());\ SchemaValidator validator(schema);\ Document d;\ /*printf("\n%s\n", json);*/\ @@ -149,6 +156,8 @@ TEST(SchemaValidator, Hasher) { #define INVALIDATE_(schema, json, invalidSchemaPointer, invalidSchemaKeyword, invalidDocumentPointer, error, \ flags, SchemaValidatorType, PointerType) \ {\ + EXPECT_TRUE(schema.GetError().ObjectEmpty());\ + EXPECT_TRUE(schema.IsSupportedSpecification());\ SchemaValidatorType validator(schema);\ validator.SetValidateFlags(flags);\ Document d;\ @@ -188,6 +197,20 @@ TEST(SchemaValidator, Hasher) { }\ } +// Use for checking whether a compiled schema document contains errors +#define SCHEMAERROR(schema, error) \ +{\ + Document e;\ + e.Parse(error);\ + if (schema.GetError() != e) {\ + StringBuffer sb;\ + Writer<StringBuffer> w(sb);\ + schema.GetError().Accept(w);\ + printf("GetError() Expected: %s Actual: %s\n", error, sb.GetString());\ + ADD_FAILURE();\ + }\ +} + TEST(SchemaValidator, Typeless) { Document sd; sd.Parse("{}"); @@ -223,7 +246,7 @@ TEST(SchemaValidator, Enum_Typed) { "{ \"enum\": { \"errorCode\": 19, \"instanceRef\": \"#\", \"schemaRef\": \"#\" }}"); } -TEST(SchemaValidator, Enum_Typless) { +TEST(SchemaValidator, Enum_Typeless) { Document sd; sd.Parse("{ \"enum\": [\"red\", \"amber\", \"green\", null, 42] }"); SchemaDocument s(sd); @@ -333,7 +356,7 @@ TEST(SchemaValidator, OneOf) { " ]" "}}"); INVALIDATE(s, "15", "", "oneOf", "", - "{ \"oneOf\": { \"errorCode\": 22, \"instanceRef\": \"#\", \"schemaRef\": \"#\", \"errors\": [{}, {}]}}"); + "{ \"oneOf\": { \"errorCode\": 22, \"instanceRef\": \"#\", \"schemaRef\": \"#\", \"matches\": [0,1]}}"); } TEST(SchemaValidator, Not) { @@ -502,12 +525,13 @@ TEST(SchemaValidator, String_Pattern) { TEST(SchemaValidator, String_Pattern_Invalid) { Document sd; - sd.Parse("{\"type\":\"string\",\"pattern\":\"a{0}\"}"); // TODO: report regex is invalid somehow + sd.Parse("{\"type\":\"string\",\"pattern\":\"a{0}\"}"); SchemaDocument s(sd); + SCHEMAERROR(s, "{\"RegexInvalid\":{\"errorCode\":9,\"instanceRef\":\"#/pattern\",\"value\":\"a{0}\"}}"); - VALIDATE(s, "\"\"", true); - VALIDATE(s, "\"a\"", true); - VALIDATE(s, "\"aa\"", true); + VALIDATE_(s, "\"\"", true, false); + VALIDATE_(s, "\"a\"", true, false); + VALIDATE_(s, "\"aa\"", true, false); } #endif @@ -1886,12 +1910,6 @@ TEST(SchemaValidator, SchemaPointer) { " }," " \"f\": {" " \"type\": \"boolean\"" - " }," - " \"cyclic_source\": {" - " \"$ref\": \"#/definitions/Resp_200/properties/cyclic_target\"" - " }," - " \"cyclic_target\": {" - " \"$ref\": \"#/definitions/Resp_200/properties/cyclic_source\"" " }" " }," " \"type\": \"object\"" @@ -2135,9 +2153,13 @@ public: } virtual const SchemaDocumentType* GetRemoteDocument(const char* uri, SizeType length) { + //printf("GetRemoteDocument : %s\n", uri); for (size_t i = 0; i < kCount; i++) - if (typename SchemaDocumentType::SValue(uri, length) == sd_[i]->GetURI()) + if (typename SchemaDocumentType::GValue(uri, length) == sd_[i]->GetURI()) { + //printf("Matched document"); return sd_[i]; + } + //printf("No matched document"); return 0; } @@ -2390,7 +2412,9 @@ TEST(SchemaValidator, Issue728_AllOfRef) { Document sd; sd.Parse("{\"allOf\": [{\"$ref\": \"#/abc\"}]}"); SchemaDocument s(sd); - VALIDATE(s, "{\"key1\": \"abc\", \"key2\": \"def\"}", true); + SCHEMAERROR(s, "{\"RefUnknown\":{\"errorCode\":5,\"instanceRef\":\"#/allOf/0\",\"value\":\"#/abc\"}}"); + + VALIDATE_(s, "{\"key1\": \"abc\", \"key2\": \"def\"}", true, false); } TEST(SchemaValidator, Issue1017_allOfHandler) { @@ -2625,7 +2649,7 @@ TEST(SchemaValidator, Ref_remote_issue1210) { SchemaDocumentProvider(SchemaDocument** collection) : collection(collection) { } virtual const SchemaDocument* GetRemoteDocument(const char* uri, SizeType length) { int i = 0; - while (collection[i] && SchemaDocument::SValue(uri, length) != collection[i]->GetURI()) ++i; + while (collection[i] && SchemaDocument::GValue(uri, length) != collection[i]->GetURI()) ++i; return collection[i]; } }; @@ -2656,7 +2680,7 @@ TEST(SchemaValidator, ContinueOnErrors) { ASSERT_FALSE(sd.HasParseError()); SchemaDocument s(sd); VALIDATE(s, "{\"version\": 1.0, \"address\": {\"number\": 24, \"street1\": \"The Woodlands\", \"street3\": \"Ham\", \"city\": \"Romsey\", \"area\": \"Kent\", \"country\": \"UK\", \"postcode\": \"SO51 0GP\"}, \"phones\": [\"0111-222333\", \"0777-666888\"], \"names\": [\"Fred\", \"Bloggs\"]}", true); - INVALIDATE_(s, "{\"version\": 1.01, \"address\": {\"number\": 0, \"street2\": false, \"street3\": \"Ham\", \"city\": \"RomseyTownFC\", \"area\": \"BC\", \"country\": \"USA\", \"postcode\": \"999ABC\"}, \"phones\": [], \"planet\": \"Earth\", \"extra\": {\"S_xxx\": 123}}", "#", "errors", "#", + INVALIDATE_(s, "{\"version\": 1.01, \"address\": {\"number\": 0, \"street2\": false, \"street3\": \"Ham\", \"city\": \"RomseyTownFC\", \"area\": \"Narnia\", \"country\": \"USA\", \"postcode\": \"999ABC\"}, \"phones\": [], \"planet\": \"Earth\", \"extra\": {\"S_xxx\": 123}}", "#", "errors", "#", "{ \"multipleOf\": {" " \"errorCode\": 1, \"instanceRef\": \"#/version\", \"schemaRef\": \"#/definitions/decimal_type\", \"expected\": 1.0, \"actual\": 1.01" " }," @@ -2691,6 +2715,9 @@ TEST(SchemaValidator, ContinueOnErrors) { " }," " \"required\": {" " \"missing\": [\"street1\"], \"errorCode\": 15, \"instanceRef\": \"#/address\", \"schemaRef\": \"#/definitions/address_type\"" + " }," + " \"oneOf\": {" + " \"matches\": [0, 1], \"errorCode\": 22, \"instanceRef\": \"#/address/area\", \"schemaRef\": \"#/definitions/address_type/properties/area\"" " }" "}", kValidateDefaultFlags | kValidateContinueOnErrorFlag, SchemaValidator, Pointer); @@ -2917,7 +2944,7 @@ TEST(SchemaValidator, ContinueOnErrors_RogueString) { // Test that when kValidateContinueOnErrorFlag is set, an incorrect simple type with a sub-schema is handled correctly. // This tests that we don't blow up when there is a type mismatch but there is a sub-schema present -TEST(SchemaValidator, ContinueOnErrors_Issue2) { +TEST(SchemaValidator, ContinueOnErrors_BadSimpleType) { Document sd; sd.Parse("{\"type\":\"string\", \"anyOf\":[{\"maxLength\":2}]}"); ASSERT_FALSE(sd.HasParseError()); @@ -2943,10 +2970,606 @@ TEST(SchemaValidator, ContinueOnErrors_Issue2) { kValidateDefaultFlags | kValidateContinueOnErrorFlag, SchemaValidator, Pointer); } -TEST(SchemaValidator, Schema_UnknownError) { + +TEST(SchemaValidator, UnknownValidationError) { ASSERT_TRUE(SchemaValidator::SchemaType::GetValidateErrorKeyword(kValidateErrors).GetString() == std::string("null")); } +// The first occurrence of a duplicate keyword is taken +TEST(SchemaValidator, DuplicateKeyword) { + Document sd; + sd.Parse("{ \"title\": \"test\",\"type\": \"number\", \"type\": \"string\" }"); + EXPECT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + VALIDATE(s, "42", true); + INVALIDATE(s, "\"Life, the universe, and everything\"", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"number\"], \"actual\": \"string\"" + "}}"); +} + + +// SchemaDocument tests + +// Specification (schema draft, open api version) +TEST(SchemaValidator, Schema_SupportedNotObject) { + Document sd; + sd.Parse("true"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedNoSpec) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedNoSpecStatic) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + Specification spec = SchemaDocumentType::GetSpecification(sd); + ASSERT_FALSE(spec.IsSupported()); + ASSERT_TRUE(spec.draft == kDraftNone); + ASSERT_TRUE(spec.oapi == kVersionNone); +} + +TEST(SchemaValidator, Schema_SupportedDraft5Static) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-05/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + Specification spec = SchemaDocumentType::GetSpecification(sd); + ASSERT_TRUE(spec.IsSupported()); + ASSERT_TRUE(spec.draft == kDraft05); + ASSERT_TRUE(spec.oapi == kVersionNone); +} + +TEST(SchemaValidator, Schema_SupportedDraft4) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-04/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedDraft4NoFrag) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-04/schema\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedDraft5) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-05/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft05); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedDraft5NoFrag) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-05/schema\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft05); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_IgnoreDraftEmbedded) { + Document sd; + sd.Parse("{\"root\": {\"$schema\":\"http://json-schema.org/draft-05/schema#\", \"type\": \"integer\"}}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, SchemaDocument::PointerType("/root")); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedDraftOverride) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kDraft04)); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_UnknownDraftOverride) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kDraftUnknown)); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraftUnknown); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedDraftOverride) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kDraft03)); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft03); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnknownDraft) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-xxx/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraftUnknown); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnknownDraftNotString) { + Document sd; + sd.Parse("{\"$schema\": 4, \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraftUnknown); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedDraft3) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-03/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft03); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedDraft6) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-06/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft06); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedDraft7) { + Document sd; + sd.Parse("{\"$schema\":\"http://json-schema.org/draft-07/schema#\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft07); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedDraft2019_09) { + Document sd; + sd.Parse("{\"$schema\":\"https://json-schema.org/draft/2019-09/schema\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft2019_09); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedDraft2020_12) { + Document sd; + sd.Parse("{\"$schema\":\"https://json-schema.org/draft/2020-12/schema\", \"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().draft == kDraft2020_12); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionNone); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_SupportedVersion20Static) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"swagger\":\"2.0\"}"); + ASSERT_FALSE(sd.HasParseError()); + Specification spec = SchemaDocumentType::GetSpecification(sd); + ASSERT_TRUE(spec.IsSupported()); + ASSERT_TRUE(spec.draft == kDraft04); + ASSERT_TRUE(spec.oapi == kVersion20); +} + +TEST(SchemaValidator, Schema_SupportedVersion20) { + Document sd; + sd.Parse("{\"swagger\":\"2.0\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersion20); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedVersion30x) { + Document sd; + sd.Parse("{\"openapi\":\"3.0.0\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersion30); + ASSERT_TRUE(s.GetSpecification().draft == kDraft05); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_SupportedVersionOverride) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kVersion20)); + ASSERT_TRUE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersion20); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + EXPECT_TRUE(s.GetError().ObjectEmpty()); +} + +TEST(SchemaValidator, Schema_UnknownVersionOverride) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kVersionUnknown)); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionUnknown); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedVersionOverride) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kVersion31)); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersion31); + ASSERT_TRUE(s.GetSpecification().draft == kDraft2020_12); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnknownVersion) { + Document sd; + sd.Parse("{\"openapi\":\"1.0\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionUnknown); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnknownVersionShort) { + Document sd; + sd.Parse("{\"openapi\":\"3.0.\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionUnknown); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnknownVersionNotString) { + Document sd; + sd.Parse("{\"swagger\": 2}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersionUnknown); + ASSERT_TRUE(s.GetSpecification().draft == kDraft04); + SCHEMAERROR(s, "{\"SpecUnknown\":{\"errorCode\":10,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_UnsupportedVersion31) { + Document sd; + sd.Parse("{\"openapi\":\"3.1.0\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_FALSE(s.IsSupportedSpecification()); + ASSERT_TRUE(s.GetSpecification().oapi == kVersion31); + ASSERT_TRUE(s.GetSpecification().draft == kDraft2020_12); + SCHEMAERROR(s, "{\"SpecUnsupported\":{\"errorCode\":11,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_DraftAndVersion) { + Document sd; + sd.Parse("{\"swagger\": \"2.0\", \"$schema\": \"http://json-schema.org/draft-04/schema#\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + ASSERT_TRUE(s.IsSupportedSpecification()); + SCHEMAERROR(s, "{\"SpecIllegal\":{\"errorCode\":12,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, Schema_StartUnknown) { + Document sd; + sd.Parse("{\"type\": \"integer\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd, 0, 0, 0, 0, SchemaDocument::PointerType("/nowhere")); + SCHEMAERROR(s, "{\"StartUnknown\":{\"errorCode\":1,\"instanceRef\":\"#\", \"value\":\"#/nowhere\"}}"); +} + +TEST(SchemaValidator, Schema_MultipleErrors) { + Document sd; + sd.Parse("{\"swagger\": \"foo\", \"$schema\": \"bar\"}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s(sd); + SCHEMAERROR(s, "{ \"SpecUnknown\": {\"errorCode\":10,\"instanceRef\":\"#\"}," + " \"SpecIllegal\": {\"errorCode\":12,\"instanceRef\":\"#\"}" + "}"); +} + +// $ref is a non-JSON pointer fragment - not allowed when OpenAPI +TEST(SchemaValidator, Schema_RefPlainNameOpenApi) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"swagger\": \"2.0\", \"type\": \"object\", \"properties\": {\"myInt1\": {\"$ref\": \"#myId\"}, \"myStr\": {\"type\": \"string\", \"id\": \"#myStrId\"}, \"myInt2\": {\"type\": \"integer\", \"id\": \"#myId\"}}}"); + SchemaDocumentType s(sd); + SCHEMAERROR(s, "{\"RefPlainName\":{\"errorCode\":2,\"instanceRef\":\"#/properties/myInt1\",\"value\":\"#myId\"}}"); +} + +// $ref is a non-JSON pointer fragment - not allowed when remote document +TEST(SchemaValidator, Schema_RefPlainNameRemote) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + RemoteSchemaDocumentProvider<SchemaDocumentType> provider; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"/subSchemas.json#plainname\"}}}"); + SchemaDocumentType s(sd, "http://localhost:1234/xxxx", 26, &provider); + SCHEMAERROR(s, "{\"RefPlainName\":{\"errorCode\":2,\"instanceRef\":\"#/properties/myInt\",\"value\":\"#plainname\"}}"); +} + +// $ref is an empty string +TEST(SchemaValidator, Schema_RefEmptyString) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt1\": {\"$ref\": \"\"}}}"); + SchemaDocumentType s(sd); + SCHEMAERROR(s, "{\"RefInvalid\":{\"errorCode\":3,\"instanceRef\":\"#/properties/myInt1\"}}"); +} + +// $ref is remote but no provider +TEST(SchemaValidator, Schema_RefNoRemoteProvider) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"/subSchemas.json#plainname\"}}}"); + SchemaDocumentType s(sd, "http://localhost:1234/xxxx", 26, 0); + SCHEMAERROR(s, "{\"RefNoRemoteProvider\":{\"errorCode\":7,\"instanceRef\":\"#/properties/myInt\"}}"); +} + +// $ref is remote but no schema returned +TEST(SchemaValidator, Schema_RefNoRemoteSchema) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + RemoteSchemaDocumentProvider<SchemaDocumentType> provider; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"/will-not-resolve.json\"}}}"); + SchemaDocumentType s(sd, "http://localhost:1234/xxxx", 26, &provider); + SCHEMAERROR(s, "{\"RefNoRemoteSchema\":{\"errorCode\":8,\"instanceRef\":\"#/properties/myInt\",\"value\":\"http://localhost:1234/will-not-resolve.json\"}}"); +} + +// $ref pointer is invalid +TEST(SchemaValidator, Schema_RefPointerInvalid) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"#/&&&&&\"}}}"); + SchemaDocumentType s(sd); + SCHEMAERROR(s, "{\"RefPointerInvalid\":{\"errorCode\":4,\"instanceRef\":\"#/properties/myInt\",\"value\":\"#/&&&&&\",\"offset\":2}}"); +} + +// $ref is remote and pointer is invalid +TEST(SchemaValidator, Schema_RefPointerInvalidRemote) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + RemoteSchemaDocumentProvider<SchemaDocumentType> provider; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"/subSchemas.json#/abc&&&&&\"}}}"); + SchemaDocumentType s(sd, "http://localhost:1234/xxxx", 26, &provider); + SCHEMAERROR(s, "{\"RefPointerInvalid\":{\"errorCode\":4,\"instanceRef\":\"#/properties/myInt\",\"value\":\"#/abc&&&&&\",\"offset\":5}}"); +} + +// $ref is unknown non-pointer +TEST(SchemaValidator, Schema_RefUnknownPlainName) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"#plainname\"}}}"); + SchemaDocumentType s(sd); + SCHEMAERROR(s, "{\"RefUnknown\":{\"errorCode\":5,\"instanceRef\":\"#/properties/myInt\",\"value\":\"#plainname\"}}"); +} + +/// $ref is unknown pointer +TEST(SchemaValidator, Schema_RefUnknownPointer) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"#/a/b\"}}}"); + SchemaDocumentType s(sd); + SCHEMAERROR(s, "{\"RefUnknown\":{\"errorCode\":5,\"instanceRef\":\"#/properties/myInt\",\"value\":\"#/a/b\"}}"); +} + +// $ref is remote and unknown pointer +TEST(SchemaValidator, Schema_RefUnknownPointerRemote) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + RemoteSchemaDocumentProvider<SchemaDocumentType> provider; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {\"myInt\": {\"$ref\": \"/subSchemas.json#/a/b\"}}}"); + SchemaDocumentType s(sd, "http://localhost:1234/xxxx", 26, &provider); + SCHEMAERROR(s, "{\"RefUnknown\":{\"errorCode\":5,\"instanceRef\":\"#/properties/myInt\",\"value\":\"http://localhost:1234/subSchemas.json#/a/b\"}}"); +} + +// $ref is cyclical +TEST(SchemaValidator, Schema_RefCyclical) { + typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType; + Document sd; + sd.Parse("{\"type\": \"object\", \"properties\": {" + " \"cyclic_source\": {" + " \"$ref\": \"#/properties/cyclic_target\"" + " }," + " \"cyclic_target\": {" + " \"$ref\": \"#/properties/cyclic_source\"" + " }" + "}}"); + SchemaDocumentType s(sd); + SCHEMAERROR(s, "{\"RefCyclical\":{\"errorCode\":6,\"instanceRef\":\"#/properties/cyclic_target\",\"value\":\"#/properties/cyclic_source\"}}"); +} + +TEST(SchemaValidator, Schema_ReadOnlyAndWriteOnly) { + Document sd; + sd.Parse("{\"type\": \"integer\", \"readOnly\": true, \"writeOnly\": true}"); + ASSERT_FALSE(sd.HasParseError()); + SchemaDocument s1(sd, 0, 0, 0, 0, 0, Specification(kDraft04)); + EXPECT_TRUE(s1.GetError().ObjectEmpty()); + SchemaDocument s2(sd, 0, 0, 0, 0, 0, Specification(kVersion30)); + SCHEMAERROR(s2, "{\"ReadOnlyAndWriteOnly\":{\"errorCode\":13,\"instanceRef\":\"#\"}}"); +} + +TEST(SchemaValidator, ReadOnlyWhenWriting) { + Document sd; + sd.Parse( + "{" + " \"type\":\"object\"," + " \"properties\": {" + " \"rprop\" : {" + " \"type\": \"string\"," + " \"readOnly\": true" + " }" + " }" + "}"); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kVersion20)); + VALIDATE(s, "{ \"rprop\": \"hello\" }", true); + INVALIDATE_(s, "{ \"rprop\": \"hello\" }", "/properties/rprop", "readOnly", "/rprop", + "{ \"readOnly\": {" + " \"errorCode\": 26, \"instanceRef\": \"#/rprop\", \"schemaRef\": \"#/properties/rprop\"" + " }" + "}", + kValidateDefaultFlags | kValidateWriteFlag, SchemaValidator, Pointer); +} + +TEST(SchemaValidator, WriteOnlyWhenReading) { + Document sd; + sd.Parse( + "{" + " \"type\":\"object\"," + " \"properties\": {" + " \"wprop\" : {" + " \"type\": \"boolean\"," + " \"writeOnly\": true" + " }" + " }" + "}"); + SchemaDocument s(sd, 0, 0, 0, 0, 0, Specification(kVersion30)); + VALIDATE(s, "{ \"wprop\": true }", true); + INVALIDATE_(s, "{ \"wprop\": true }", "/properties/wprop", "writeOnly", "/wprop", + "{ \"writeOnly\": {" + " \"errorCode\": 27, \"instanceRef\": \"#/wprop\", \"schemaRef\": \"#/properties/wprop\"" + " }" + "}", + kValidateDefaultFlags | kValidateReadFlag, SchemaValidator, Pointer); +} + +TEST(SchemaValidator, NullableTrue) { + Document sd; + sd.Parse("{\"type\": \"string\", \"nullable\": true}"); + SchemaDocument s(sd, 0, 0, 0, 0, 0, kVersion20); + + VALIDATE(s, "\"hello\"", true); + INVALIDATE(s, "null", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"string\"], \"actual\": \"null\"" + "}}"); + INVALIDATE(s, "false", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"string\"], \"actual\": \"boolean\"" + "}}"); + + SchemaDocument s30(sd, 0, 0, 0, 0, 0, kVersion30); + + VALIDATE(s30, "\"hello\"", true); + VALIDATE(s30, "null", true); + INVALIDATE(s30, "false", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"null\", \"string\"], \"actual\": \"boolean\"" + "}}"); +} + +TEST(SchemaValidator, NullableFalse) { + Document sd; + sd.Parse("{\"type\": \"string\", \"nullable\": false}"); + SchemaDocument s(sd, 0, 0, 0, 0, 0, kVersion20); + + VALIDATE(s, "\"hello\"", true); + INVALIDATE(s, "null", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"string\"], \"actual\": \"null\"" + "}}"); + INVALIDATE(s, "false", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"string\"], \"actual\": \"boolean\"" + "}}"); + + SchemaDocument s30(sd, 0, 0, 0, 0, 0, kVersion30); + + VALIDATE(s30, "\"hello\"", true); + INVALIDATE(s, "null", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"string\"], \"actual\": \"null\"" + "}}"); + INVALIDATE(s30, "false", "", "type", "", + "{ \"type\": {" + " \"errorCode\": 20," + " \"instanceRef\": \"#\", \"schemaRef\": \"#\"," + " \"expected\": [\"string\"], \"actual\": \"boolean\"" + "}}"); +} + #if defined(_MSC_VER) || defined(__clang__) RAPIDJSON_DIAG_POP #endif diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp index 924fd5c1b3..1e1b937cf3 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp @@ -49,10 +49,12 @@ using namespace rapidjson_simd; #define SIMD_SUFFIX(name) name #endif +#define SIMD_SIZE_ALIGN(n) ((size_t(n) + 15) & ~size_t(15)) + template <typename StreamType> void TestSkipWhitespace() { for (size_t step = 1; step < 32; step++) { - char buffer[1025]; + char buffer[SIMD_SIZE_ALIGN(1025)]; for (size_t i = 0; i < 1024; i++) buffer[i] = " \t\r\n"[i % 4]; for (size_t i = 0; i < 1024; i += step) @@ -79,7 +81,7 @@ TEST(SIMD, SIMD_SUFFIX(SkipWhitespace)) { TEST(SIMD, SIMD_SUFFIX(SkipWhitespace_EncodedMemoryStream)) { for (size_t step = 1; step < 32; step++) { - char buffer[1024]; + char buffer[SIMD_SIZE_ALIGN(1024)]; for (size_t i = 0; i < 1024; i++) buffer[i] = " \t\r\n"[i % 4]; for (size_t i = 0; i < 1024; i += step) @@ -87,14 +89,12 @@ TEST(SIMD, SIMD_SUFFIX(SkipWhitespace_EncodedMemoryStream)) { MemoryStream ms(buffer, 1024); EncodedInputStream<UTF8<>, MemoryStream> s(ms); - size_t i = 0; for (;;) { SkipWhitespace(s); if (s.Peek() == '\0') break; //EXPECT_EQ(i, s.Tell()); EXPECT_EQ('X', s.Take()); - i += step; } } } @@ -109,8 +109,8 @@ struct ScanCopyUnescapedStringHandler : BaseReaderHandler<UTF8<>, ScanCopyUnesca template <unsigned parseFlags, typename StreamType> void TestScanCopyUnescapedString() { - char buffer[1024u + 5 + 32]; - char backup[1024u + 5 + 32]; + char buffer[SIMD_SIZE_ALIGN(1024u + 5 + 32)]; + char backup[SIMD_SIZE_ALIGN(1024u + 5 + 32)]; // Test "ABCDABCD...\\" for (size_t offset = 0; offset < 32; offset++) { @@ -167,7 +167,7 @@ TEST(SIMD, SIMD_SUFFIX(ScanCopyUnescapedString)) { } TEST(SIMD, SIMD_SUFFIX(ScanWriteUnescapedString)) { - char buffer[2048 + 1 + 32]; + char buffer[SIMD_SIZE_ALIGN(2048 + 1 + 32)]; for (size_t offset = 0; offset < 32; offset++) { for (size_t step = 0; step < 1024; step++) { char* s = buffer + offset; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/uritest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/uritest.cpp index 5506aa1e8c..789c9dd828 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/uritest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/uritest.cpp @@ -48,7 +48,6 @@ TEST(Uri, DefaultConstructor) { EXPECT_TRUE(u.GetStringLength() == 0); } - TEST(Uri, Parse) { typedef GenericUri<Value, MemoryPoolAllocator<> > UriType; MemoryPoolAllocator<CrtAllocator> allocator; @@ -66,21 +65,8 @@ TEST(Uri, Parse) { u.Get(w, allocator); EXPECT_TRUE(*w.GetString() == *v.GetString()); -#if RAPIDJSON_HAS_STDSTRING - typedef std::basic_string<Value::Ch> String; - String str = "http://auth/path/xxx?query#frag"; - const UriType uri = UriType(str); - EXPECT_TRUE(UriType::GetScheme(uri) == "http:"); - EXPECT_TRUE(UriType::GetAuth(uri) == "//auth"); - EXPECT_TRUE(UriType::GetPath(uri) == "/path/xxx"); - EXPECT_TRUE(UriType::GetBase(uri) == "http://auth/path/xxx?query"); - EXPECT_TRUE(UriType::GetQuery(uri) == "?query"); - EXPECT_TRUE(UriType::GetFrag(uri) == "#frag"); - EXPECT_TRUE(UriType::Get(uri) == str); -#endif - v.SetString("urn:uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f", allocator); - u = UriType(v); + u = UriType(v, &allocator); EXPECT_TRUE(StrCmp(u.GetSchemeString(), "urn:") == 0); EXPECT_TRUE(u.GetAuthStringLength() == 0); EXPECT_TRUE(StrCmp(u.GetPathString(), "uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f") == 0); @@ -91,7 +77,7 @@ TEST(Uri, Parse) { EXPECT_TRUE(*w.GetString() == *v.GetString()); v.SetString("", allocator); - u = UriType(v); + u = UriType(v, &allocator); EXPECT_TRUE(u.GetSchemeStringLength() == 0); EXPECT_TRUE(u.GetAuthStringLength() == 0); EXPECT_TRUE(u.GetPathStringLength() == 0); @@ -100,7 +86,7 @@ TEST(Uri, Parse) { EXPECT_TRUE(u.GetFragStringLength() == 0); v.SetString("http://auth/", allocator); - u = UriType(v); + u = UriType(v, &allocator); EXPECT_TRUE(StrCmp(u.GetSchemeString(), "http:") == 0); EXPECT_TRUE(StrCmp(u.GetAuthString(), "//auth") == 0); EXPECT_TRUE(StrCmp(u.GetPathString(), "/") == 0); @@ -162,12 +148,11 @@ TEST(Uri, Parse) { EXPECT_TRUE(u.GetFragStringLength() == len); // Incomplete auth treated as path - str = "http:/"; - const UriType u2 = UriType(str); - EXPECT_TRUE(StrCmp(u2.GetSchemeString(), "http:") == 0); - EXPECT_TRUE(u2.GetAuthStringLength() == 0); - EXPECT_TRUE(StrCmp(u2.GetPathString(), "/") == 0); - EXPECT_TRUE(StrCmp(u2.GetBaseString(), "http:/") == 0); + u = UriType("http:/"); + EXPECT_TRUE(StrCmp(u.GetSchemeString(), "http:") == 0); + EXPECT_TRUE(u.GetAuthStringLength() == 0); + EXPECT_TRUE(StrCmp(u.GetPathString(), "/") == 0); + EXPECT_TRUE(StrCmp(u.GetBaseString(), "http:/") == 0); } TEST(Uri, Parse_UTF16) { @@ -188,21 +173,8 @@ TEST(Uri, Parse_UTF16) { u.Get(w, allocator); EXPECT_TRUE(*w.GetString() == *v.GetString()); -#if RAPIDJSON_HAS_STDSTRING - typedef std::basic_string<Value16::Ch> String; - String str = L"http://auth/path/xxx?query#frag"; - const UriType uri = UriType(str); - EXPECT_TRUE(UriType::GetScheme(uri) == L"http:"); - EXPECT_TRUE(UriType::GetAuth(uri) == L"//auth"); - EXPECT_TRUE(UriType::GetPath(uri) == L"/path/xxx"); - EXPECT_TRUE(UriType::GetBase(uri) == L"http://auth/path/xxx?query"); - EXPECT_TRUE(UriType::GetQuery(uri) == L"?query"); - EXPECT_TRUE(UriType::GetFrag(uri) == L"#frag"); - EXPECT_TRUE(UriType::Get(uri) == str); -#endif - v.SetString(L"urn:uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f", allocator); - u = UriType(v); + u = UriType(v, &allocator); EXPECT_TRUE(StrCmp(u.GetSchemeString(), L"urn:") == 0); EXPECT_TRUE(u.GetAuthStringLength() == 0); EXPECT_TRUE(StrCmp(u.GetPathString(), L"uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f") == 0); @@ -213,7 +185,7 @@ TEST(Uri, Parse_UTF16) { EXPECT_TRUE(*w.GetString() == *v.GetString()); v.SetString(L"", allocator); - u = UriType(v); + u = UriType(v, &allocator); EXPECT_TRUE(u.GetSchemeStringLength() == 0); EXPECT_TRUE(u.GetAuthStringLength() == 0); EXPECT_TRUE(u.GetPathStringLength() == 0); @@ -222,7 +194,7 @@ TEST(Uri, Parse_UTF16) { EXPECT_TRUE(u.GetFragStringLength() == 0); v.SetString(L"http://auth/", allocator); - u = UriType(v); + u = UriType(v, &allocator); EXPECT_TRUE(StrCmp(u.GetSchemeString(), L"http:") == 0); EXPECT_TRUE(StrCmp(u.GetAuthString(), L"//auth") == 0); EXPECT_TRUE(StrCmp(u.GetPathString(), L"/") == 0); @@ -291,6 +263,41 @@ TEST(Uri, Parse_UTF16) { EXPECT_TRUE(StrCmp(u.GetBaseString(), L"http:/") == 0); } +#if RAPIDJSON_HAS_STDSTRING +TEST(Uri, Parse_Std) { + typedef GenericUri<Value, MemoryPoolAllocator<> > UriType; + MemoryPoolAllocator<CrtAllocator> allocator; + typedef std::basic_string<Value::Ch> String; + + String str = "http://auth/path/xxx?query#frag"; + const UriType uri = UriType(str, &allocator); + EXPECT_TRUE(UriType::GetScheme(uri) == "http:"); + EXPECT_TRUE(UriType::GetAuth(uri) == "//auth"); + EXPECT_TRUE(UriType::GetPath(uri) == "/path/xxx"); + EXPECT_TRUE(UriType::GetBase(uri) == "http://auth/path/xxx?query"); + EXPECT_TRUE(UriType::GetQuery(uri) == "?query"); + EXPECT_TRUE(UriType::GetFrag(uri) == "#frag"); + EXPECT_TRUE(UriType::Get(uri) == str); +} + +TEST(Uri, Parse_UTF16_Std) { + typedef GenericValue<UTF16<> > Value16; + typedef GenericUri<Value16, MemoryPoolAllocator<> > UriType; + MemoryPoolAllocator<CrtAllocator> allocator; + typedef std::basic_string<Value16::Ch> String; + + String str = L"http://auth/path/xxx?query#frag"; + const UriType uri = UriType(str, &allocator); + EXPECT_TRUE(UriType::GetScheme(uri) == L"http:"); + EXPECT_TRUE(UriType::GetAuth(uri) == L"//auth"); + EXPECT_TRUE(UriType::GetPath(uri) == L"/path/xxx"); + EXPECT_TRUE(UriType::GetBase(uri) == L"http://auth/path/xxx?query"); + EXPECT_TRUE(UriType::GetQuery(uri) == L"?query"); + EXPECT_TRUE(UriType::GetFrag(uri) == L"#frag"); + EXPECT_TRUE(UriType::Get(uri) == str); +} +#endif + TEST(Uri, CopyConstructor) { typedef GenericUri<Value> UriType; CrtAllocator allocator; diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp index 6ef22b7260..e0e40a2652 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp @@ -1581,7 +1581,7 @@ TEST(Value, ObjectHelperRangeFor) { { int i = 0; for (auto& m : x.GetObject()) { - char name[10]; + char name[11]; sprintf(name, "%d", i); EXPECT_STREQ(name, m.name.GetString()); EXPECT_EQ(i, m.value.GetInt()); @@ -1592,7 +1592,7 @@ TEST(Value, ObjectHelperRangeFor) { { int i = 0; for (const auto& m : const_cast<const Value&>(x).GetObject()) { - char name[10]; + char name[11]; sprintf(name, "%d", i); EXPECT_STREQ(name, m.name.GetString()); EXPECT_EQ(i, m.value.GetInt()); @@ -1717,17 +1717,17 @@ static void TestShortStringOptimization(const char* str) { rapidjson::Value val; val.SetString(str, len, doc.GetAllocator()); - EXPECT_EQ(val.GetStringLength(), len); - EXPECT_STREQ(val.GetString(), str); + EXPECT_EQ(val.GetStringLength(), len); + EXPECT_STREQ(val.GetString(), str); } TEST(Value, AllocateShortString) { - TestShortStringOptimization(""); // edge case: empty string - TestShortStringOptimization("12345678"); // regular case for short strings: 8 chars - TestShortStringOptimization("12345678901"); // edge case: 11 chars in 32-bit mode (=> short string) - TestShortStringOptimization("123456789012"); // edge case: 12 chars in 32-bit mode (=> regular string) - TestShortStringOptimization("123456789012345"); // edge case: 15 chars in 64-bit mode (=> short string) - TestShortStringOptimization("1234567890123456"); // edge case: 16 chars in 64-bit mode (=> regular string) + TestShortStringOptimization(""); // edge case: empty string + TestShortStringOptimization("12345678"); // regular case for short strings: 8 chars + TestShortStringOptimization("12345678901"); // edge case: 11 chars in 32-bit mode (=> short string) + TestShortStringOptimization("123456789012"); // edge case: 12 chars in 32-bit mode (=> regular string) + TestShortStringOptimization("123456789012345"); // edge case: 15 chars in 64-bit mode (=> short string) + TestShortStringOptimization("1234567890123456"); // edge case: 16 chars in 64-bit mode (=> regular string) } template <int e> diff --git a/graphics/asymptote/LspCpp/third_party/rapidjson/test/valgrind.supp b/graphics/asymptote/LspCpp/third_party/rapidjson/test/valgrind.supp index 1fed18bea3..c9d3d22656 100644 --- a/graphics/asymptote/LspCpp/third_party/rapidjson/test/valgrind.supp +++ b/graphics/asymptote/LspCpp/third_party/rapidjson/test/valgrind.supp @@ -15,3 +15,12 @@ Memcheck:Value8 fun:__wcslen_sse2 } + +{ + Suppress wmemcmp valgrind report 4 + Memcheck:Addr32 + fun:__wmemcmp_avx2_movbe + ... + fun:*Uri*Parse_UTF16_Std* +} + diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake index 0af0e082c5..c8723fecaa 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake @@ -1,9 +1,9 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # Relative path conversion top directories. -set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.85/LspCpp") -set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.85/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.86/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.86/LspCpp") # Force unix paths in dependencies. set(CMAKE_FORCE_UNIX_PATHS 1) diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake index dc55e44b55..45a25b7803 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake @@ -10,8 +10,8 @@ set(CMAKE_DEPENDS_LANGUAGES set(CMAKE_DEPENDS_DEPENDENCY_FILES ) -# Targets to which this target links. -set(CMAKE_TARGET_LINKED_INFO_FILES +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES ) # Fortran module output directory. diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make index 994bfaa5af..ddd6707269 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make +++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make @@ -1,5 +1,5 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # Delete rule output on recipe failure. .DELETE_ON_ERROR: @@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.86/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.86/LspCpp # Utility rule file for doc. @@ -70,8 +70,8 @@ include third_party/uri/CMakeFiles/doc.dir/compiler_depend.make include third_party/uri/CMakeFiles/doc.dir/progress.make third_party/uri/CMakeFiles/doc: - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/Doxyfile + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/Doxyfile doc: third_party/uri/CMakeFiles/doc doc: third_party/uri/CMakeFiles/doc.dir/build.make @@ -82,10 +82,10 @@ third_party/uri/CMakeFiles/doc.dir/build: doc .PHONY : third_party/uri/CMakeFiles/doc.dir/build third_party/uri/CMakeFiles/doc.dir/clean: - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake .PHONY : third_party/uri/CMakeFiles/doc.dir/clean third_party/uri/CMakeFiles/doc.dir/depend: - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.85/LspCpp /usr/local/src/asymptote-2.85/LspCpp/third_party/uri /usr/local/src/asymptote-2.85/LspCpp /usr/local/src/asymptote-2.85/LspCpp/third_party/uri /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake --color=$(COLOR) + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.86/LspCpp /usr/local/src/asymptote-2.86/LspCpp/third_party/uri /usr/local/src/asymptote-2.86/LspCpp /usr/local/src/asymptote-2.86/LspCpp/third_party/uri /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake --color=$(COLOR) .PHONY : third_party/uri/CMakeFiles/doc.dir/depend diff --git a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile index 330b39dfa1..03d5f7ed10 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile +++ b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile @@ -128,7 +128,7 @@ FULL_PATH_NAMES = YES # If left blank the directory from which doxygen is run is used as the # path to strip. -STRIP_FROM_PATH = /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/ +STRIP_FROM_PATH = /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells @@ -626,7 +626,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include +INPUT = /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -658,7 +658,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail +EXCLUDE = /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -821,7 +821,7 @@ COLS_IN_ALPHA_INDEX = 5 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. -IGNORE_PREFIX = /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/uri/src/ +IGNORE_PREFIX = /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/uri/src/ #--------------------------------------------------------------------------- # configuration options related to the HTML output diff --git a/graphics/asymptote/LspCpp/third_party/uri/Makefile b/graphics/asymptote/LspCpp/third_party/uri/Makefile index 39e5192cbf..07d7a37974 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/Makefile +++ b/graphics/asymptote/LspCpp/third_party/uri/Makefile @@ -1,5 +1,5 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # Default target executed when no arguments are given to make. default_target: all @@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.86/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.86/LspCpp #============================================================================= # Targets provided globally by CMake. @@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast # The main all target all: cmake_check_build_system - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.85/LspCpp/CMakeFiles /usr/local/src/asymptote-2.85/LspCpp/third_party/uri//CMakeFiles/progress.marks - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all - $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.85/LspCpp/CMakeFiles 0 + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.86/LspCpp/CMakeFiles /usr/local/src/asymptote-2.86/LspCpp/third_party/uri//CMakeFiles/progress.marks + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all + $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.86/LspCpp/CMakeFiles 0 .PHONY : all # The main clean target clean: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean .PHONY : clean # The main clean target @@ -151,22 +151,22 @@ clean/fast: clean # Prepare targets for installation. preinstall: all - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall .PHONY : preinstall # Prepare targets for installation. preinstall/fast: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall .PHONY : preinstall/fast # clear depends depend: - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend # Convenience name for target. third_party/uri/CMakeFiles/doc.dir/rule: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule .PHONY : third_party/uri/CMakeFiles/doc.dir/rule # Convenience name for target. @@ -175,7 +175,7 @@ doc: third_party/uri/CMakeFiles/doc.dir/rule # fast build rule for target. doc/fast: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build .PHONY : doc/fast # Help Target @@ -202,6 +202,6 @@ help: # No rule that depends on this can have commands that come from listfiles # because they might be regenerated. cmake_check_build_system: - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 .PHONY : cmake_check_build_system diff --git a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake index e62d7db666..c0309bdeb7 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake @@ -1,4 +1,4 @@ -# Install script for directory: /usr/local/src/asymptote-2.85/LspCpp/third_party/uri +# Install script for directory: /usr/local/src/asymptote-2.86/LspCpp/third_party/uri # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) @@ -43,12 +43,12 @@ if(NOT DEFINED CMAKE_OBJDUMP) endif() if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include") endif() if(NOT CMAKE_INSTALL_LOCAL_ONLY) # Include the install script for each subdirectory. - include("/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/cmake_install.cmake") + include("/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/cmake_install.cmake") endif() diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake index 0af0e082c5..c8723fecaa 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake @@ -1,9 +1,9 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # Relative path conversion top directories. -set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.85/LspCpp") -set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.85/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.86/LspCpp") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.86/LspCpp") # Force unix paths in dependencies. set(CMAKE_FORCE_UNIX_PATHS 1) diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake index 3ce1ac6ff1..32bdf946b5 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake @@ -8,18 +8,18 @@ set(CMAKE_DEPENDS_LANGUAGES # The set of dependency files which are needed: set(CMAKE_DEPENDS_DEPENDENCY_FILES - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d" - "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d" + "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d" ) -# Targets to which this target links. -set(CMAKE_TARGET_LINKED_INFO_FILES +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES ) # Fortran module output directory. diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make index b61109a6d3..a811e7cf04 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make @@ -1,5 +1,5 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # Delete rule output on recipe failure. .DELETE_ON_ERROR: @@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.86/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.86/LspCpp # Include any dependencies generated for this target. include third_party/uri/src/CMakeFiles/network-uri.dir/depend.make @@ -75,114 +75,114 @@ include third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/uri.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/uri_builder.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_builder.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_builder.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_builder.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_builder.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/uri_errors.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_errors.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_errors.cpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_errors.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_errors.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/detail/uri_parse.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/detail/uri_parse_authority.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/detail/uri_normalize.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/detail/uri_resolve.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.cpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s # Object files for target network-uri network__uri_OBJECTS = \ @@ -208,19 +208,19 @@ third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/link.txt - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/usr/local/src/asymptote-2.85/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a" - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/usr/local/src/asymptote-2.86/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a" + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE) # Rule to build all files generated by this target. third_party/uri/src/CMakeFiles/network-uri.dir/build: third_party/uri/src/libnetwork-uri.a .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/build third_party/uri/src/CMakeFiles/network-uri.dir/clean: - cd /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake + cd /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/clean third_party/uri/src/CMakeFiles/network-uri.dir/depend: - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.85/LspCpp /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.85/LspCpp /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake --color=$(COLOR) + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.86/LspCpp /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.86/LspCpp /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake --color=$(COLOR) .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/depend diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal index 1542483042..fd72dc9ebf 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal @@ -1,11 +1,11 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp /usr/include/stdc-predef.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp /usr/include/c++/12/string /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h /usr/include/bits/wordsize.h @@ -175,7 +175,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o /usr/include/c++/12/typeinfo /usr/include/c++/12/bits/nested_exception.h /usr/include/c++/12/bits/streambuf.tcc - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp /usr/include/c++/12/memory /usr/include/c++/12/bits/stl_uninitialized.h /usr/include/c++/12/bits/stl_tempbuf.h @@ -199,16 +199,16 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o /usr/include/c++/12/bits/algorithmfwd.h /usr/include/c++/12/bits/stl_heap.h /usr/include/c++/12/bits/uniform_int_dist.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp /usr/include/c++/12/cassert /usr/include/assert.h /usr/include/c++/12/limits third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.cpp /usr/include/stdc-predef.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri.hpp /usr/include/c++/12/iterator /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h /usr/include/bits/wordsize.h @@ -401,23 +401,23 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o /usr/include/c++/12/bits/atomic_base.h /usr/include/c++/12/bits/atomic_lockfree_defines.h /usr/include/c++/12/backward/auto_ptr.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp /usr/include/c++/12/cassert /usr/include/assert.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp /usr/include/c++/12/utility /usr/include/c++/12/bits/stl_relops.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp /usr/include/c++/12/cstring /usr/include/string.h /usr/include/strings.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp /usr/include/c++/12/vector /usr/include/c++/12/bits/stl_vector.h /usr/include/c++/12/bits/stl_bvector.h @@ -438,14 +438,14 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o /usr/include/c++/12/bits/codecvt.h /usr/include/c++/12/bits/locale_facets_nonio.tcc /usr/include/c++/12/bits/locale_conv.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/algorithm.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/algorithm_split.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/algorithm.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/algorithm_split.hpp third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.cpp /usr/include/stdc-predef.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp /usr/include/c++/12/string /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h /usr/include/bits/wordsize.h @@ -622,7 +622,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o /usr/include/c++/12/bits/stl_tempbuf.h /usr/include/c++/12/bits/uniform_int_dist.h /usr/include/c++/12/limits - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/grammar.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/grammar.hpp /usr/include/c++/12/locale /usr/include/c++/12/bits/locale_facets.h /usr/include/c++/12/cwctype @@ -642,10 +642,10 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o /usr/include/c++/12/cstring /usr/include/string.h /usr/include/strings.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp /usr/include/c++/12/utility /usr/include/c++/12/bits/stl_relops.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp /usr/include/c++/12/memory /usr/include/c++/12/bits/stl_uninitialized.h /usr/include/c++/12/bits/stl_raw_storage_iter.h @@ -665,10 +665,10 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o /usr/include/c++/12/backward/auto_ptr.h third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp /usr/include/stdc-predef.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp /usr/include/c++/12/string /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h /usr/include/bits/wordsize.h @@ -838,7 +838,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o /usr/include/c++/12/typeinfo /usr/include/c++/12/bits/nested_exception.h /usr/include/c++/12/bits/streambuf.tcc - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp /usr/include/c++/12/memory /usr/include/c++/12/bits/stl_uninitialized.h /usr/include/c++/12/bits/stl_tempbuf.h @@ -862,11 +862,11 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o /usr/include/c++/12/bits/algorithmfwd.h /usr/include/c++/12/bits/stl_heap.h /usr/include/c++/12/bits/uniform_int_dist.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp /usr/include/c++/12/cassert /usr/include/assert.h /usr/include/c++/12/limits - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/grammar.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/grammar.hpp /usr/include/c++/12/locale /usr/include/c++/12/bits/locale_facets.h /usr/include/c++/12/cwctype @@ -888,10 +888,10 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o /usr/include/strings.h third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.cpp /usr/include/stdc-predef.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri.hpp /usr/include/c++/12/iterator /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h /usr/include/bits/wordsize.h @@ -1084,27 +1084,27 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o /usr/include/c++/12/bits/atomic_base.h /usr/include/c++/12/bits/atomic_lockfree_defines.h /usr/include/c++/12/backward/auto_ptr.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp /usr/include/c++/12/cassert /usr/include/assert.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp /usr/include/c++/12/utility /usr/include/c++/12/bits/stl_relops.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp /usr/include/c++/12/cstring /usr/include/string.h /usr/include/strings.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/algorithm_find.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/algorithm_find.hpp /usr/include/c++/12/cstddef third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri.cpp /usr/include/stdc-predef.h /usr/include/c++/12/cassert /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h @@ -1299,7 +1299,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o /usr/include/c++/12/tuple /usr/include/c++/12/bits/uses_allocator.h /usr/include/c++/12/bits/std_function.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri.hpp /usr/include/c++/12/iterator /usr/include/c++/12/bits/stream_iterator.h /usr/include/c++/12/memory @@ -1317,33 +1317,33 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o /usr/include/c++/12/bits/atomic_base.h /usr/include/c++/12/bits/atomic_lockfree_defines.h /usr/include/c++/12/backward/auto_ptr.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp /usr/include/c++/12/utility /usr/include/c++/12/bits/stl_relops.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp /usr/include/c++/12/cstring /usr/include/string.h /usr/include/strings.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp /usr/include/c++/12/vector /usr/include/c++/12/bits/stl_vector.h /usr/include/c++/12/bits/stl_bvector.h /usr/include/c++/12/bits/vector.tcc - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_resolve.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/algorithm.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_resolve.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/algorithm.hpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_builder.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_builder.cpp /usr/include/stdc-predef.h /usr/include/c++/12/locale /usr/include/c++/12/bits/localefwd.h @@ -1526,10 +1526,10 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o /usr/include/c++/12/bits/codecvt.h /usr/include/c++/12/bits/locale_facets_nonio.tcc /usr/include/c++/12/bits/locale_conv.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp /usr/include/c++/12/utility /usr/include/c++/12/bits/stl_relops.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri.hpp /usr/include/c++/12/iterator /usr/include/c++/12/bits/stream_iterator.h /usr/include/c++/12/algorithm @@ -1557,25 +1557,25 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o /usr/include/c++/12/bits/atomic_base.h /usr/include/c++/12/bits/atomic_lockfree_defines.h /usr/include/c++/12/backward/auto_ptr.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/string_view.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/string_view.hpp /usr/include/c++/12/cassert /usr/include/assert.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/optional.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/config.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/optional.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp /usr/include/c++/12/cstring /usr/include/string.h /usr/include/strings.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_normalize.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/detail/algorithm.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_normalize.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/detail/algorithm.hpp third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/uri_errors.cpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/uri_errors.cpp /usr/include/stdc-predef.h /usr/include/c++/12/string /usr/include/c++/12/x86_64-redhat-linux/bits/c++config.h @@ -1710,7 +1710,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o /usr/include/c++/12/bits/functional_hash.h /usr/include/c++/12/bits/hash_bytes.h /usr/include/c++/12/bits/basic_string.tcc - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp /usr/include/c++/12/system_error /usr/include/c++/12/x86_64-redhat-linux/bits/error_constants.h /usr/include/c++/12/stdexcept @@ -1719,5 +1719,5 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o /usr/include/c++/12/bits/cxxabi_init_exception.h /usr/include/c++/12/typeinfo /usr/include/c++/12/bits/nested_exception.h - /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include/network/uri/config.hpp + /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include/network/uri/config.hpp diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make index d8013e34c3..595b036f31 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make @@ -1,5 +1,5 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp \ /usr/include/stdc-predef.h \ diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make index a977a075c6..866335975d 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make +++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make @@ -1,10 +1,10 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # compile CXX with /bin/c++ CXX_DEFINES = -CXX_INCLUDES = -I/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/include +CXX_INCLUDES = -I/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/include -CXX_FLAGS = -fPIE -D_FILE_OFFSET_BIS=64 -DUSEGC -I../gc-8.2.0/include -std=c++11 -Wall -Werror -Wno-parentheses -O2 -g -DNDEBUG +CXX_FLAGS = -fPIE -D_FILE_OFFSET_BIS=64 -DUSEGC -I../gc-8.2.4/include -std=c++11 -Wall -Werror -Wno-parentheses -O2 -g -DNDEBUG diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile index 9913f5cc91..6bddcf7b3c 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile +++ b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile @@ -1,5 +1,5 @@ # CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.25 +# Generated by "Unix Makefiles" Generator, CMake Version 3.26 # Default target executed when no arguments are given to make. default_target: all @@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f EQUALS = = # The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.86/LspCpp # The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.85/LspCpp +CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.86/LspCpp #============================================================================= # Targets provided globally by CMake. @@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast # The main all target all: cmake_check_build_system - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.85/LspCpp/CMakeFiles /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src//CMakeFiles/progress.marks - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all - $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.85/LspCpp/CMakeFiles 0 + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.86/LspCpp/CMakeFiles /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src//CMakeFiles/progress.marks + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all + $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.86/LspCpp/CMakeFiles 0 .PHONY : all # The main clean target clean: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean .PHONY : clean # The main clean target @@ -151,22 +151,22 @@ clean/fast: clean # Prepare targets for installation. preinstall: all - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall .PHONY : preinstall # Prepare targets for installation. preinstall/fast: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall .PHONY : preinstall/fast # clear depends depend: - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend # Convenience name for target. third_party/uri/src/CMakeFiles/network-uri.dir/rule: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule .PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/rule # Convenience name for target. @@ -175,7 +175,7 @@ network-uri: third_party/uri/src/CMakeFiles/network-uri.dir/rule # fast build rule for target. network-uri/fast: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build .PHONY : network-uri/fast detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o @@ -183,7 +183,7 @@ detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o # target to build an object file detail/uri_advance_parts.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o .PHONY : detail/uri_advance_parts.cpp.o detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i @@ -191,7 +191,7 @@ detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i # target to preprocess a source file detail/uri_advance_parts.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i .PHONY : detail/uri_advance_parts.cpp.i detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s @@ -199,7 +199,7 @@ detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s # target to generate assembly for a file detail/uri_advance_parts.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s .PHONY : detail/uri_advance_parts.cpp.s detail/uri_normalize.o: detail/uri_normalize.cpp.o @@ -207,7 +207,7 @@ detail/uri_normalize.o: detail/uri_normalize.cpp.o # target to build an object file detail/uri_normalize.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o .PHONY : detail/uri_normalize.cpp.o detail/uri_normalize.i: detail/uri_normalize.cpp.i @@ -215,7 +215,7 @@ detail/uri_normalize.i: detail/uri_normalize.cpp.i # target to preprocess a source file detail/uri_normalize.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i .PHONY : detail/uri_normalize.cpp.i detail/uri_normalize.s: detail/uri_normalize.cpp.s @@ -223,7 +223,7 @@ detail/uri_normalize.s: detail/uri_normalize.cpp.s # target to generate assembly for a file detail/uri_normalize.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s .PHONY : detail/uri_normalize.cpp.s detail/uri_parse.o: detail/uri_parse.cpp.o @@ -231,7 +231,7 @@ detail/uri_parse.o: detail/uri_parse.cpp.o # target to build an object file detail/uri_parse.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o .PHONY : detail/uri_parse.cpp.o detail/uri_parse.i: detail/uri_parse.cpp.i @@ -239,7 +239,7 @@ detail/uri_parse.i: detail/uri_parse.cpp.i # target to preprocess a source file detail/uri_parse.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i .PHONY : detail/uri_parse.cpp.i detail/uri_parse.s: detail/uri_parse.cpp.s @@ -247,7 +247,7 @@ detail/uri_parse.s: detail/uri_parse.cpp.s # target to generate assembly for a file detail/uri_parse.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s .PHONY : detail/uri_parse.cpp.s detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o @@ -255,7 +255,7 @@ detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o # target to build an object file detail/uri_parse_authority.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o .PHONY : detail/uri_parse_authority.cpp.o detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i @@ -263,7 +263,7 @@ detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i # target to preprocess a source file detail/uri_parse_authority.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i .PHONY : detail/uri_parse_authority.cpp.i detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s @@ -271,7 +271,7 @@ detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s # target to generate assembly for a file detail/uri_parse_authority.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s .PHONY : detail/uri_parse_authority.cpp.s detail/uri_resolve.o: detail/uri_resolve.cpp.o @@ -279,7 +279,7 @@ detail/uri_resolve.o: detail/uri_resolve.cpp.o # target to build an object file detail/uri_resolve.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o .PHONY : detail/uri_resolve.cpp.o detail/uri_resolve.i: detail/uri_resolve.cpp.i @@ -287,7 +287,7 @@ detail/uri_resolve.i: detail/uri_resolve.cpp.i # target to preprocess a source file detail/uri_resolve.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i .PHONY : detail/uri_resolve.cpp.i detail/uri_resolve.s: detail/uri_resolve.cpp.s @@ -295,7 +295,7 @@ detail/uri_resolve.s: detail/uri_resolve.cpp.s # target to generate assembly for a file detail/uri_resolve.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s .PHONY : detail/uri_resolve.cpp.s uri.o: uri.cpp.o @@ -303,7 +303,7 @@ uri.o: uri.cpp.o # target to build an object file uri.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o .PHONY : uri.cpp.o uri.i: uri.cpp.i @@ -311,7 +311,7 @@ uri.i: uri.cpp.i # target to preprocess a source file uri.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i .PHONY : uri.cpp.i uri.s: uri.cpp.s @@ -319,7 +319,7 @@ uri.s: uri.cpp.s # target to generate assembly for a file uri.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s .PHONY : uri.cpp.s uri_builder.o: uri_builder.cpp.o @@ -327,7 +327,7 @@ uri_builder.o: uri_builder.cpp.o # target to build an object file uri_builder.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o .PHONY : uri_builder.cpp.o uri_builder.i: uri_builder.cpp.i @@ -335,7 +335,7 @@ uri_builder.i: uri_builder.cpp.i # target to preprocess a source file uri_builder.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i .PHONY : uri_builder.cpp.i uri_builder.s: uri_builder.cpp.s @@ -343,7 +343,7 @@ uri_builder.s: uri_builder.cpp.s # target to generate assembly for a file uri_builder.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s .PHONY : uri_builder.cpp.s uri_errors.o: uri_errors.cpp.o @@ -351,7 +351,7 @@ uri_errors.o: uri_errors.cpp.o # target to build an object file uri_errors.cpp.o: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o .PHONY : uri_errors.cpp.o uri_errors.i: uri_errors.cpp.i @@ -359,7 +359,7 @@ uri_errors.i: uri_errors.cpp.i # target to preprocess a source file uri_errors.cpp.i: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i .PHONY : uri_errors.cpp.i uri_errors.s: uri_errors.cpp.s @@ -367,7 +367,7 @@ uri_errors.s: uri_errors.cpp.s # target to generate assembly for a file uri_errors.cpp.s: - cd /usr/local/src/asymptote-2.85/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s + cd /usr/local/src/asymptote-2.86/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s .PHONY : uri_errors.cpp.s # Help Target @@ -418,6 +418,6 @@ help: # No rule that depends on this can have commands that come from listfiles # because they might be regenerated. cmake_check_build_system: - cd /usr/local/src/asymptote-2.85/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 + cd /usr/local/src/asymptote-2.86/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 .PHONY : cmake_check_build_system diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake index bdaabf2bd4..18b85f6720 100644 --- a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake +++ b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake @@ -1,4 +1,4 @@ -# Install script for directory: /usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src +# Install script for directory: /usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) @@ -43,6 +43,6 @@ if(NOT DEFINED CMAKE_OBJDUMP) endif() if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.85/LspCpp/third_party/uri/src/libnetwork-uri.a") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.86/LspCpp/third_party/uri/src/libnetwork-uri.a") endif() diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/CMakeLists.txt b/graphics/asymptote/LspCpp/third_party/utfcpp/CMakeLists.txt index f1a2e1f1e9..c8d4b7a3c5 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/CMakeLists.txt +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required (VERSION 3.0.2) -project (utf8cpp VERSION 3.2 LANGUAGES CXX) +project (utf8cpp VERSION 3.2.2 LANGUAGES CXX) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(IS_ROOT_PROJECT ON) @@ -19,6 +19,7 @@ target_include_directories(utf8cpp INTERFACE add_library(utf8::cpp ALIAS utf8cpp) if(UTF8_INSTALL) + include(CMakePackageConfigHelpers) if(MSVC) set(DEF_INSTALL_CMAKE_DIR CMake) else() @@ -26,9 +27,28 @@ if(UTF8_INSTALL) set(DEF_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/utf8cpp) endif() + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/utf8cppConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion + ) + + configure_package_config_file( + ${PROJECT_SOURCE_DIR}/utf8cppConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/utf8cppConfig.cmake + INSTALL_DESTINATION ${DEF_INSTALL_CMAKE_DIR} + ) + install(DIRECTORY source/ DESTINATION include/utf8cpp) - install(TARGETS utf8cpp EXPORT utf8cppConfig) - install(EXPORT utf8cppConfig DESTINATION ${DEF_INSTALL_CMAKE_DIR}) + install(TARGETS utf8cpp EXPORT utf8cppTargets) + install(EXPORT utf8cppTargets DESTINATION ${DEF_INSTALL_CMAKE_DIR}) + install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/utf8cppConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/utf8cppConfigVersion.cmake + DESTINATION + ${DEF_INSTALL_CMAKE_DIR} + ) endif() if(UTF8_SAMPLES) diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/README.md b/graphics/asymptote/LspCpp/third_party/utfcpp/README.md index a519cdb963..02d9f75d93 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/README.md +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/README.md @@ -11,7 +11,7 @@ The purpose of this article is not to offer an introduction to Unicode in genera ## Examples of use -### Introductionary Sample +### Introductory Sample To illustrate the use of the library, let's start with a small but complete program that opens a file containing UTF-8 encoded text, reads it line by line, checks each line for invalid UTF-8 byte sequences, and converts it to UTF-16 encoding and back to UTF-8: @@ -149,7 +149,7 @@ The function will replace any invalid UTF-8 sequence with a Unicode replacement The library was designed to be: 1. Generic: for better or worse, there are many C++ string classes out there, and the library should work with as many of them as possible. -2. Portable: the library should be portable both accross different platforms and compilers. The only non-portable code is a small section that declares unsigned integers of different sizes: three typedefs. They can be changed by the users of the library if they don't match their platform. The default setting should work for Windows (both 32 and 64 bit), and most 32 bit and 64 bit Unix derivatives. Support for post C++03 language features is included for modern compilers at API level only, so the library should work even with pretty old compilers. +2. Portable: the library should be portable both across different platforms and compilers. The only non-portable code is a small section that declares unsigned integers of different sizes: three typedefs. They can be changed by the users of the library if they don't match their platform. The default setting should work for Windows (both 32 and 64 bit), and most 32 bit and 64 bit Unix derivatives. Support for post C++03 language features is included for modern compilers at API level only, so the library should work even with pretty old compilers. 3. Lightweight: follow the "pay only for what you use" guideline. 4. Unintrusive: avoid forcing any particular design or even programming style on the user. This is a library, not a framework. @@ -157,7 +157,7 @@ The library was designed to be: In case you want to look into other means of working with UTF-8 strings from C++, here is the list of solutions I am aware of: -1. [ICU Library](http://icu.sourceforge.net/). It is very powerful, complete, feature-rich, mature, and widely used. Also big, intrusive, non-generic, and doesn't play well with the Standard Library. I definitelly recommend looking at ICU even if you don't plan to use it. +1. [ICU Library](http://icu.sourceforge.net/). It is very powerful, complete, feature-rich, mature, and widely used. Also big, intrusive, non-generic, and doesn't play well with the Standard Library. I definitely recommend looking at ICU even if you don't plan to use it. 2. C++11 language and library features. Still far from complete, and not easy to use. 3. [Glib::ustring](http://www.gtkmm.org/gtkmm2/docs/tutorial/html/ch03s04.html). A class specifically made to work with UTF-8 strings, and also feel like `std::string`. If you prefer to have yet another string class in your code, it may be worth a look. Be aware of the licensing issues, though. 4. Platform dependent solutions: Windows and POSIX have functions to convert strings from one encoding to another. That is only a subset of what my library offers, but if that is all you need it may be good enough. @@ -247,7 +247,7 @@ assert (w == twochars + 3); This function is typically used to iterate through a UTF-8 encoded string. -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. #### utf8::peek_next @@ -276,7 +276,7 @@ assert (cp == 0x65e5); assert (w == twochars); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. #### utf8::prior @@ -345,7 +345,7 @@ In case of an invalid code point, a `utf8::invalid_code_point` exception is thro Available in version 1.0 and later. -Given the iterators to two UTF-8 encoded code points in a seqence, returns the number of code points between them. +Given the iterators to two UTF-8 encoded code points in a sequence, returns the number of code points between them. ```cpp template <typename octet_iterator> @@ -367,7 +367,7 @@ assert (dist == 2); This function is used to find the length (in code points) of a UTF-8 encoded string. The reason it is called _distance_, rather than, say, _length_ is mainly because developers are used that _length_ is an O(1) function. Computing the length of an UTF-8 string is a linear operation, and it looked better to model it after `std::distance` algorithm. -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. If `last` does not point to the past-of-end of a UTF-8 seqence, a `utf8::not_enough_room` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. If `last` does not point to the past-of-end of a UTF-8 sequence, a `utf8::not_enough_room` exception is thrown. #### utf8::utf16to8 @@ -469,7 +469,7 @@ assert (utf16result[2] == 0xd834); assert (utf16result[3] == 0xdd1e); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. #### utf8::utf8to16 @@ -494,7 +494,7 @@ assert (utf16result[2] == 0xd834); assert (utf16result[3] == 0xdd1e); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. #### utf8::utf8to16 @@ -525,7 +525,7 @@ assert (utf16result[2] == 0xd834); assert (utf16result[3] == 0xdd1e); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. If `end` does not point to the past-of-end of a UTF-8 seqence, a `utf8::not_enough_room` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. If `end` does not point to the past-of-end of a UTF-8 sequence, a `utf8::not_enough_room` exception is thrown. #### utf8::utf32to8 @@ -625,7 +625,7 @@ u32string utf32result = utf8to32(twochars); assert (utf32result.size() == 2); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. #### utf8::utf8to32 @@ -648,7 +648,7 @@ u32string utf32result = utf8to32(twochars); assert (utf32result.size() == 2); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. #### utf8::utf8to32 @@ -678,7 +678,7 @@ utf8to32(twochars, twochars + 5, back_inserter(utf32result)); assert (utf32result.size() == 2); ``` -In case of an invalid UTF-8 seqence, a `utf8::invalid_utf8` exception is thrown. If `end` does not point to the past-of-end of a UTF-8 seqence, a `utf8::not_enough_room` exception is thrown. +In case of an invalid UTF-8 sequence, a `utf8::invalid_utf8` exception is thrown. If `end` does not point to the past-of-end of a UTF-8 sequence, a `utf8::not_enough_room` exception is thrown. #### utf8::find_invalid @@ -824,7 +824,7 @@ bool bvalid = is_valid(utf_invalid, utf_invalid + 6); assert (bvalid == false); ``` -`is_valid` is a shorthand for `find_invalid(start, end) == end;`. You may want to use it to make sure that a byte seqence is a valid UTF-8 string without the need to know where it fails if it is not valid. +`is_valid` is a shorthand for `find_invalid(start, end) == end;`. You may want to use it to make sure that a byte sequence is a valid UTF-8 string without the need to know where it fails if it is not valid. #### utf8::replace_invalid @@ -1094,9 +1094,9 @@ class iterator; `uint32_t operator * () const;` decodes the utf-8 sequence the underlying octet_iterator is pointing to and returns the code point. -`bool operator == (const iterator& rhs) const;` returns `true` if the two underlaying iterators are equal. +`bool operator == (const iterator& rhs) const;` returns `true` if the two underlying iterators are equal. -`bool operator != (const iterator& rhs) const;` returns `true` if the two underlaying iterators are not equal. +`bool operator != (const iterator& rhs) const;` returns `true` if the two underlying iterators are not equal. `iterator& operator ++ ();` the prefix increment - moves the iterator to the next UTF-8 encoded code point. @@ -1219,7 +1219,7 @@ This is a faster but less safe version of `utf8::peek_next`. It does not check f Available in version 1.02 and later. -Given a reference to an iterator pointing to an octet in a UTF-8 seqence, it decreases the iterator until it hits the beginning of the previous UTF-8 encoded code point and returns the 32 bits representation of the code point. +Given a reference to an iterator pointing to an octet in a UTF-8 sequence, it decreases the iterator until it hits the beginning of the previous UTF-8 encoded code point and returns the 32 bits representation of the code point. ```cpp template <typename octet_iterator> @@ -1270,7 +1270,7 @@ This is a faster but less safe version of `utf8::advance`. It does not check for Available in version 1.0 and later. -Given the iterators to two UTF-8 encoded code points in a seqence, returns the number of code points between them. +Given the iterators to two UTF-8 encoded code points in a sequence, returns the number of code points between them. ```cpp template <typename octet_iterator> @@ -1460,9 +1460,9 @@ class iterator; `uint32_t operator * () const;` decodes the utf-8 sequence the underlying octet_iterator is pointing to and returns the code point. -`bool operator == (const iterator& rhs) const;` returns `true` if the two underlaying iterators are equal. +`bool operator == (const iterator& rhs) const;` returns `true` if the two underlying iterators are equal. -`bool operator != (const iterator& rhs) const;` returns `true` if the two underlaying iterators are not equal. +`bool operator != (const iterator& rhs) const;` returns `true` if the two underlying iterators are not equal. `iterator& operator ++ ();` the prefix increment - moves the iterator to the next UTF-8 encoded code point. diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/checked.h b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/checked.h index 993b7f7c5f..512dcc2fba 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/checked.h +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/checked.h @@ -50,6 +50,7 @@ namespace utf8 uint8_t u8; public: invalid_utf8 (uint8_t u) : u8(u) {} + invalid_utf8 (char c) : u8(static_cast<uint8_t>(c)) {} virtual const char* what() const UTF_CPP_NOEXCEPT UTF_CPP_OVERRIDE { return "Invalid UTF-8"; } uint8_t utf8_octet() const {return u8;} }; @@ -75,24 +76,7 @@ namespace utf8 if (!utf8::internal::is_code_point_valid(cp)) throw invalid_code_point(cp); - if (cp < 0x80) // one octet - *(result++) = static_cast<uint8_t>(cp); - else if (cp < 0x800) { // two octets - *(result++) = static_cast<uint8_t>((cp >> 6) | 0xc0); - *(result++) = static_cast<uint8_t>((cp & 0x3f) | 0x80); - } - else if (cp < 0x10000) { // three octets - *(result++) = static_cast<uint8_t>((cp >> 12) | 0xe0); - *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f) | 0x80); - *(result++) = static_cast<uint8_t>((cp & 0x3f) | 0x80); - } - else { // four octets - *(result++) = static_cast<uint8_t>((cp >> 18) | 0xf0); - *(result++) = static_cast<uint8_t>(((cp >> 12) & 0x3f) | 0x80); - *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f) | 0x80); - *(result++) = static_cast<uint8_t>((cp & 0x3f) | 0x80); - } - return result; + return internal::append(cp, result); } template <typename octet_iterator, typename output_iterator> @@ -148,7 +132,7 @@ namespace utf8 case internal::INVALID_LEAD : case internal::INCOMPLETE_SEQUENCE : case internal::OVERLONG_SEQUENCE : - throw invalid_utf8(*it); + throw invalid_utf8(static_cast<uint8_t>(*it)); case internal::INVALID_CODE_POINT : throw invalid_code_point(cp); } diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/core.h b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/core.h index d237e77a07..0eaf6a7d2a 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/core.h +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/core.h @@ -297,6 +297,55 @@ namespace internal return utf8::internal::validate_next(it, end, ignored); } + // Internal implementation of both checked and unchecked append() function + // This function will be invoked by the overloads below, as they will know + // the octet_type. + template <typename octet_iterator, typename octet_type> + octet_iterator append(uint32_t cp, octet_iterator result) { + if (cp < 0x80) // one octet + *(result++) = static_cast<octet_type>(cp); + else if (cp < 0x800) { // two octets + *(result++) = static_cast<octet_type>((cp >> 6) | 0xc0); + *(result++) = static_cast<octet_type>((cp & 0x3f) | 0x80); + } + else if (cp < 0x10000) { // three octets + *(result++) = static_cast<octet_type>((cp >> 12) | 0xe0); + *(result++) = static_cast<octet_type>(((cp >> 6) & 0x3f) | 0x80); + *(result++) = static_cast<octet_type>((cp & 0x3f) | 0x80); + } + else { // four octets + *(result++) = static_cast<octet_type>((cp >> 18) | 0xf0); + *(result++) = static_cast<octet_type>(((cp >> 12) & 0x3f)| 0x80); + *(result++) = static_cast<octet_type>(((cp >> 6) & 0x3f) | 0x80); + *(result++) = static_cast<octet_type>((cp & 0x3f) | 0x80); + } + return result; + } + + // One of the following overloads will be invoked from the API calls + + // A simple (but dangerous) case: the caller appends byte(s) to a char array + inline char* append(uint32_t cp, char* result) { + return append<char*, char>(cp, result); + } + + // Hopefully, most common case: the caller uses back_inserter + // i.e. append(cp, std::back_inserter(str)); + template<typename container_type> + std::back_insert_iterator<container_type> append + (uint32_t cp, std::back_insert_iterator<container_type> result) { + return append<std::back_insert_iterator<container_type>, + typename container_type::value_type>(cp, result); + } + + // The caller uses some other kind of output operator - not covered above + // Note that in this case we are not able to determine octet_type + // so we assume it's uint_8; that can cause a conversion warning if we are wrong. + template <typename octet_iterator> + octet_iterator append(uint32_t cp, octet_iterator result) { + return append<octet_iterator, uint8_t>(cp, result); + } + } // namespace internal /// The library API - functions intended to be called by the users diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp11.h b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp11.h index 77771ff8e1..2c9c9ba0be 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp11.h +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp11.h @@ -70,7 +70,7 @@ namespace utf8 inline std::size_t find_invalid(const std::string& s) { std::string::const_iterator invalid = find_invalid(s.begin(), s.end()); - return (invalid == s.end()) ? std::string::npos : (invalid - s.begin()); + return (invalid == s.end()) ? std::string::npos : static_cast<std::size_t>(invalid - s.begin()); } inline bool is_valid(const std::string& s) diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp17.h b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp17.h index 0205f12796..39b12b7c93 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp17.h +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp17.h @@ -70,7 +70,7 @@ namespace utf8 inline std::size_t find_invalid(std::string_view s) { std::string_view::const_iterator invalid = find_invalid(s.begin(), s.end()); - return (invalid == s.end()) ? std::string_view::npos : (invalid - s.begin()); + return (invalid == s.end()) ? std::string_view::npos : static_cast<std::size_t>(invalid - s.begin()); } inline bool is_valid(std::string_view s) diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/unchecked.h b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/unchecked.h index 8bc34e8f65..7151a35b67 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/unchecked.h +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/unchecked.h @@ -37,24 +37,7 @@ namespace utf8 template <typename octet_iterator> octet_iterator append(uint32_t cp, octet_iterator result) { - if (cp < 0x80) // one octet - *(result++) = static_cast<uint8_t>(cp); - else if (cp < 0x800) { // two octets - *(result++) = static_cast<uint8_t>((cp >> 6) | 0xc0); - *(result++) = static_cast<uint8_t>((cp & 0x3f) | 0x80); - } - else if (cp < 0x10000) { // three octets - *(result++) = static_cast<uint8_t>((cp >> 12) | 0xe0); - *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f) | 0x80); - *(result++) = static_cast<uint8_t>((cp & 0x3f) | 0x80); - } - else { // four octets - *(result++) = static_cast<uint8_t>((cp >> 18) | 0xf0); - *(result++) = static_cast<uint8_t>(((cp >> 12) & 0x3f)| 0x80); - *(result++) = static_cast<uint8_t>(((cp >> 6) & 0x3f) | 0x80); - *(result++) = static_cast<uint8_t>((cp & 0x3f) | 0x80); - } - return result; + return internal::append(cp, result); } template <typename octet_iterator, typename output_iterator> diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/CMakeLists.txt b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/CMakeLists.txt index 4063df7c67..f3ce2584c9 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/CMakeLists.txt +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/CMakeLists.txt @@ -1,17 +1,9 @@ add_executable(negative ${PROJECT_SOURCE_DIR}/tests/negative.cpp) add_executable(cpp11 ${PROJECT_SOURCE_DIR}/tests/test_cpp11.cpp) add_executable(cpp17 ${PROJECT_SOURCE_DIR}/tests/test_cpp17.cpp) -add_executable(apitests - ${PROJECT_SOURCE_DIR}/tests/test_checked_api.cpp - ${PROJECT_SOURCE_DIR}/tests/test_unchecked_api.cpp - ${PROJECT_SOURCE_DIR}/tests/test_checked_iterator.cpp - ${PROJECT_SOURCE_DIR}/tests/test_unchecked_iterator.cpp -) - -add_executable(noexceptionstests - ${PROJECT_SOURCE_DIR}/tests/test_unchecked_api.cpp - ${PROJECT_SOURCE_DIR}/tests/test_unchecked_iterator.cpp -) +add_executable(apitests ${PROJECT_SOURCE_DIR}/tests/apitests.cpp) + +add_executable(noexceptionstests ${PROJECT_SOURCE_DIR}/tests/noexceptionstests.cpp) target_link_libraries(negative PRIVATE utf8::cpp) target_link_libraries(cpp11 PRIVATE utf8::cpp) @@ -19,6 +11,10 @@ target_link_libraries(cpp17 PRIVATE utf8::cpp) target_link_libraries(apitests PRIVATE utf8::cpp) target_link_libraries(noexceptionstests PRIVATE utf8::cpp) +target_compile_options(${PROJECT_NAME} INTERFACE + $<$<CXX_COMPILER_ID:MSVC>:/W4> + $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall -Wextra -Wpedantic -Wconversion>) + target_compile_options(noexceptionstests PUBLIC -fno-exceptions) set_target_properties(negative apitests noexceptionstests diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/apitests.cpp b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/apitests.cpp new file mode 100644 index 0000000000..083266d7d2 --- /dev/null +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/apitests.cpp @@ -0,0 +1,6 @@ +#include "../extern/ftest/ftest.h" + +#include "test_checked_api.h" +#include "test_checked_iterator.h" +#include "test_unchecked_api.h" +#include "test_unchecked_iterator.h" diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/noexceptionstests.cpp b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/noexceptionstests.cpp new file mode 100644 index 0000000000..108ee750cd --- /dev/null +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/noexceptionstests.cpp @@ -0,0 +1,4 @@ +#include "../extern/ftest/ftest.h" + +#include "test_unchecked_api.h" +#include "test_unchecked_iterator.h" diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_api.cpp b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_api.h index b57e1bc894..3a7067b76a 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_api.cpp +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_api.h @@ -1,5 +1,6 @@ -#define F_TEST_NO_MAIN -#include "../extern/ftest/ftest.h" +#ifndef UTF8_FOR_CPP_TEST_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_TEST_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 + #include "utf8.h" #include <string> @@ -38,13 +39,19 @@ TEST(CheckedAPITests, test_append) EXPECT_EQ (u[2], 0x8d); EXPECT_EQ (u[3], 0x86); EXPECT_EQ (u[4], 0); + + // Ensure no warnings with plain char + char c[2] = {0,0}; + append('a', c); + EXPECT_EQ (c[0], 'a'); + EXPECT_EQ (c[1], 0); } TEST(CheckedAPITests, test_next) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; const char* w = twochars; - int cp = next(w, twochars + 6); + unsigned int cp = next(w, twochars + 6); EXPECT_EQ (cp, 0x65e5); EXPECT_EQ (w, twochars + 3); @@ -67,7 +74,7 @@ TEST(CheckedAPITests, test_next) TEST(CheckedAPITests, test_peek_next) { const char* const cw = "\xe6\x97\xa5\xd1\x88"; - int cp = peek_next(cw, cw + 6); + unsigned int cp = peek_next(cw, cw + 6); EXPECT_EQ (cp, 0x65e5); } @@ -75,7 +82,7 @@ TEST(CheckedAPITests, test_prior) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; const char* w = twochars + 3; - int cp = prior (w, twochars); + unsigned int cp = prior (w, twochars); EXPECT_EQ (cp, 0x65e5); EXPECT_EQ (w, twochars); @@ -111,13 +118,13 @@ TEST(CheckedAPITests, test_advance) TEST(CheckedAPITests, test_distance) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; - size_t dist = utf8::distance(twochars, twochars + 5); + size_t dist = static_cast<size_t>(utf8::distance(twochars, twochars + 5)); EXPECT_EQ (dist, 2); } TEST(CheckedAPITests, test_utf32to8) { - int utf32string[] = {0x448, 0x65E5, 0x10346, 0}; + unsigned int utf32string[] = {0x448, 0x65E5, 0x10346, 0}; string utf8result; utf32to8(utf32string, utf32string + 3, back_inserter(utf8result)); EXPECT_EQ (utf8result.size(), 9); @@ -126,7 +133,7 @@ TEST(CheckedAPITests, test_utf32to8) TEST(CheckedAPITests, test_utf8to32) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; - vector<int> utf32result; + vector<unsigned int> utf32result; utf8to32(twochars, twochars + 5, back_inserter(utf32result)); EXPECT_EQ (utf32result.size(), 2); } @@ -187,3 +194,5 @@ TEST(CheckedAPITests, test_starts_with_bom) bool no_bbom = starts_with_bom(threechars, threechars + sizeof(threechars)); EXPECT_FALSE (no_bbom); } + +#endif diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_iterator.cpp b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_iterator.h index 3f9bfe96a2..2829a734ed 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_iterator.cpp +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_iterator.h @@ -1,5 +1,6 @@ -#define F_TEST_NO_MAIN -#include "../extern/ftest/ftest.h" +#ifndef UTF8_FOR_CPP_TEST_CHECKED_ITERATOR_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_TEST_CHECKED_ITERATOR_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 + #include "utf8.h" using namespace utf8; @@ -30,3 +31,5 @@ TEST(CheckedIteratrTests, test_decrement) EXPECT_EQ (--it, utf8::iterator<const char*>(threechars, threechars, threechars + 9)); EXPECT_EQ (*it, 0x10346); } + +#endif diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_api.cpp b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_api.h index c400ada0d2..10c5991ede 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_api.cpp +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_api.h @@ -1,36 +1,38 @@ -#include "../extern/ftest/ftest.h" +#ifndef UTF8_FOR_CPP_TEST_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_TEST_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 + #include "utf8/unchecked.h" #include <string> #include <vector> -using namespace utf8::unchecked; + using namespace std; TEST(UnCheckedAPITests, test_append) { unsigned char u[5] = {0,0,0,0,0}; - append(0x0448, u); + utf8::unchecked::append(0x0448, u); EXPECT_EQ (u[0], 0xd1); EXPECT_EQ (u[1], 0x88); EXPECT_EQ (u[2], 0); EXPECT_EQ (u[3], 0); EXPECT_EQ (u[4], 0); - append(0x65e5, u); + utf8::unchecked::append(0x65e5, u); EXPECT_EQ (u[0], 0xe6); EXPECT_EQ (u[1], 0x97); EXPECT_EQ (u[2], 0xa5); EXPECT_EQ (u[3], 0); EXPECT_EQ (u[4], 0); - append(0x3044, u); + utf8::unchecked::append(0x3044, u); EXPECT_EQ (u[0], 0xe3); EXPECT_EQ (u[1], 0x81); EXPECT_EQ (u[2], 0x84); EXPECT_EQ (u[3], 0); EXPECT_EQ (u[4], 0); - append(0x10346, u); + utf8::unchecked::append(0x10346, u); EXPECT_EQ (u[0], 0xf0); EXPECT_EQ (u[1], 0x90); EXPECT_EQ (u[2], 0x8d); @@ -42,7 +44,7 @@ TEST(UnCheckedAPITests, test_next) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; const char* w = twochars; - int cp = utf8::unchecked::next(w); + unsigned int cp = utf8::unchecked::next(w); EXPECT_EQ (cp, 0x65e5); EXPECT_EQ (w, twochars + 3); @@ -65,7 +67,7 @@ TEST(UnCheckedAPITests, test_next) TEST(UnCheckedAPITests, test_peek_next) { const char* const cw = "\xe6\x97\xa5\xd1\x88"; - int cp = peek_next(cw); + unsigned int cp = utf8::unchecked::peek_next(cw); EXPECT_EQ (cp, 0x65e5); } @@ -73,19 +75,19 @@ TEST(UnCheckedAPITests, test_prior) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; const char* w = twochars + 3; - int cp = prior (w); + unsigned int cp = utf8::unchecked::prior (w); EXPECT_EQ (cp, 0x65e5); EXPECT_EQ (w, twochars); const char* threechars = "\xf0\x90\x8d\x86\xe6\x97\xa5\xd1\x88"; w = threechars + 9; - cp = prior(w); + cp = utf8::unchecked::prior(w); EXPECT_EQ (cp, 0x0448); EXPECT_EQ (w, threechars + 7); - cp = prior(w); + cp = utf8::unchecked::prior(w); EXPECT_EQ (cp, 0x65e5); EXPECT_EQ (w, threechars + 4); - cp = prior(w); + cp = utf8::unchecked::prior(w); EXPECT_EQ (cp, 0x10346); EXPECT_EQ (w, threechars); } @@ -109,23 +111,23 @@ TEST(UnCheckedAPITests, test_advance) TEST(UnCheckedAPITests, test_distance) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; - size_t dist = utf8::unchecked::distance(twochars, twochars + 5); + size_t dist = static_cast<size_t>(utf8::unchecked::distance(twochars, twochars + 5)); EXPECT_EQ (dist, 2); } TEST(UnCheckedAPITests, test_utf32to8) { - int utf32string[] = {0x448, 0x65E5, 0x10346, 0}; + unsigned int utf32string[] = {0x448, 0x65E5, 0x10346, 0}; string utf8result; - utf32to8(utf32string, utf32string + 3, back_inserter(utf8result)); + utf8::unchecked::utf32to8(utf32string, utf32string + 3, back_inserter(utf8result)); EXPECT_EQ (utf8result.size(), 9); } TEST(UnCheckedAPITests, test_utf8to32) { const char* twochars = "\xe6\x97\xa5\xd1\x88"; - vector<int> utf32result; - utf8to32(twochars, twochars + 5, back_inserter(utf32result)); + vector<unsigned int> utf32result; + utf8::unchecked::utf8to32(twochars, twochars + 5, back_inserter(utf32result)); EXPECT_EQ (utf32result.size(), 2); } @@ -133,7 +135,7 @@ TEST(UnCheckedAPITests, test_utf16to8) { unsigned short utf16string[] = {0x41, 0x0448, 0x65e5, 0xd834, 0xdd1e}; string utf8result; - utf16to8(utf16string, utf16string + 5, back_inserter(utf8result)); + utf8::unchecked::utf16to8(utf16string, utf16string + 5, back_inserter(utf8result)); EXPECT_EQ (utf8result.size(), 10); } @@ -141,7 +143,7 @@ TEST(UnCheckedAPITests, test_utf8to16) { char utf8_with_surrogates[] = "\xe6\x97\xa5\xd1\x88\xf0\x9d\x84\x9e"; vector <unsigned short> utf16result; - utf8to16(utf8_with_surrogates, utf8_with_surrogates + 9, back_inserter(utf16result)); + utf8::unchecked::utf8to16(utf8_with_surrogates, utf8_with_surrogates + 9, back_inserter(utf16result)); EXPECT_EQ (utf16result.size(), 4); EXPECT_EQ (utf16result[2], 0xd834); EXPECT_EQ (utf16result[3], 0xdd1e); @@ -151,7 +153,7 @@ TEST(UnCheckedAPITests, test_replace_invalid) { char invalid_sequence[] = "a\x80\xe0\xa0\xc0\xaf\xed\xa0\x80z"; vector<char> replace_invalid_result; - replace_invalid (invalid_sequence, invalid_sequence + sizeof(invalid_sequence), std::back_inserter(replace_invalid_result), '?'); + utf8::unchecked::replace_invalid (invalid_sequence, invalid_sequence + sizeof(invalid_sequence), std::back_inserter(replace_invalid_result), '?'); bool bvalid = utf8::is_valid(replace_invalid_result.begin(), replace_invalid_result.end()); EXPECT_TRUE (bvalid); const char fixed_invalid_sequence[] = "a????z"; @@ -159,3 +161,4 @@ TEST(UnCheckedAPITests, test_replace_invalid) EXPECT_TRUE (std::equal(replace_invalid_result.begin(), replace_invalid_result.begin() + sizeof(fixed_invalid_sequence), fixed_invalid_sequence)); } +#endif diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_iterator.cpp b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_iterator.h index 68943bf94c..4294232d6a 100644 --- a/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_iterator.cpp +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_iterator.h @@ -1,5 +1,5 @@ -#define F_TEST_NO_MAIN -#include "../extern/ftest/ftest.h" +#ifndef UTF8_FOR_CPP_TEST_UNCHECKED_ITERATOR_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 +#define UTF8_FOR_CPP_TEST_UNCHECKED_ITERATOR_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #include "utf8/unchecked.h" @@ -32,3 +32,5 @@ TEST(UnCheckedIteratrTests, test_decrement) EXPECT_EQ (*it, 0x10346); } + +#endif diff --git a/graphics/asymptote/LspCpp/third_party/utfcpp/utf8cppConfig.cmake.in b/graphics/asymptote/LspCpp/third_party/utfcpp/utf8cppConfig.cmake.in new file mode 100644 index 0000000000..450fe8d186 --- /dev/null +++ b/graphics/asymptote/LspCpp/third_party/utfcpp/utf8cppConfig.cmake.in @@ -0,0 +1,6 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/utf8cppTargets.cmake") +check_required_components( "utf8cpp" ) + +add_library(utf8::cpp ALIAS utf8cpp) diff --git a/graphics/asymptote/Makefile.in b/graphics/asymptote/Makefile.in index 4d1ea7b99e..7e24803c83 100644 --- a/graphics/asymptote/Makefile.in +++ b/graphics/asymptote/Makefile.in @@ -13,7 +13,7 @@ GCPPLIB = @GCPPLIB@ GCLIBS = $(GCPPLIB) $(GCLIB) LFLAGS = @LDFLAGS@ -LLspCpp -LLspCpp/third_party/uri/src LIBS = $(LFLAGS) @PTHREAD_LIBS@ @GLEW@ @LIBS@ $(GCLIBS) @LSPLIBS@ -DOSLIBS = $(subst -lncurses, -ltermcap, $(LIBS)) -lwolfssl -lgdi32 -lwinmm -s -static +DOSLIBS = $(LIBS) -ltermcap -lwolfssl -lgdi32 -lwinmm -s -static CMAKE ?= cmake PERL ?= perl diff --git a/graphics/asymptote/ReleaseNotes b/graphics/asymptote/ReleaseNotes index d5a628df20..848de0c977 100644 --- a/graphics/asymptote/ReleaseNotes +++ b/graphics/asymptote/ReleaseNotes @@ -1,6 +1,16 @@ +Release Notes for Version 2.86 + +PDF transfer functions are automatically applied; +EPS output suppresses .setblendmode. +NaN and inf values can be read in cvs mode. +The OpenGL index buffer is properly initialized. +WebGL and V3D primitives are used only when unscaled. +Bugs in the inversion section of the geometry module were fixed. +Portability issues were addressed. + Release Notes for Version 2.85 -Intersections of 3D paths with Bezier triangles was implemented. +Intersections of 3D paths with Bezier triangles were implemented. A workaround for broken offscreen graphics drivers was implemented. The icon resource file is now pregenerated. Uninitialized variables and a division by zero were fixed. The 3D animation timer and keyboard controls diff --git a/graphics/asymptote/asy-keywords.el b/graphics/asymptote/asy-keywords.el index 6bae43d06b..7b0a279ed8 100644 --- a/graphics/asymptote/asy-keywords.el +++ b/graphics/asymptote/asy-keywords.el @@ -2,7 +2,7 @@ ;; This file is automatically generated by asy-list.pl. ;; Changes will be overwritten. ;; -(defvar asy-keywords-version "2.85") +(defvar asy-keywords-version "2.86") (defvar asy-keyword-name '( and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator )) diff --git a/graphics/asymptote/asy.list b/graphics/asymptote/asy.list index a4777ca057..3797737d5b 100644 --- a/graphics/asymptote/asy.list +++ b/graphics/asymptote/asy.list @@ -256,18 +256,18 @@ int search(int[] a, int key); int search(real[] a, real key); int search(string[] a, string key); int search(void()()[] a, void key()(), bool less(void()(), void()())); -int search(picture[] a, picture key, bool less(picture, picture)); int search(real[] a, real key, bool less(real, real)); int search(guide[] a, guide key, bool less(guide, guide)); int search(object[] a, object key, bool less(object, object)); int search(pair[] a, pair key, bool less(pair, pair)); int search(coord[] a, coord key, bool less(coord, coord)); +int search(Legend[] a, Legend key, bool less(Legend, Legend)); int search(Label[] a, Label key, bool less(Label, Label)); int search(frame[] a, frame key, bool less(frame, frame)); int search(coord[] a, coord key, bool less(coord, coord)); -int search(Legend[] a, Legend key, bool less(Legend, Legend)); int search(int[] a, int key, bool less(int, int)); int search(bool3[] a, bool3 key, bool less(bool3, bool3)); +int search(picture[] a, picture key, bool less(picture, picture)); int search(string[] a, string key, bool less(string, string)); int search(path[] a, path key, bool less(path, path)); int search(pen[] a, pen key, bool less(pen, pen)); @@ -531,7 +531,6 @@ pen[] copy(pen[] a, int depth=<default>); coord[] copy(coord[] a, int depth=<default>); object[] copy(object[] a, int depth=<default>); marker[] copy(marker[] a, int depth=<default>); -Legend[] copy(Legend[] a, int depth=<default>); pen[][] copy(pen[][] a, int depth=<default>); path[] copy(path[] a, int depth=<default>); string[] copy(string[] a, int depth=<default>); @@ -542,6 +541,7 @@ frame[] copy(frame[] a, int depth=<default>); pair[] copy(pair[] a, int depth=<default>); bool3[] copy(bool3[] a, int depth=<default>); coord[] copy(coord[] a, int depth=<default>); +Legend[] copy(Legend[] a, int depth=<default>); Label[] copy(Label[] a, int depth=<default>); picture[] copy(picture[] a, int depth=<default>); pair[][] copy(pair[][] a, int depth=<default>); @@ -577,18 +577,18 @@ pen palered; real[] map(real f(pair), pair[] a); int[] map(int f(real), real[] a); bool3[] map(bool3 f(bool3), bool3[] a); +picture[] map(picture f(picture), picture[] a); frame[] map(frame f(frame), frame[] a); coord[] map(coord f(coord), coord[] a); -Legend[] map(Legend f(Legend), Legend[] a); pen[][] map(pen[] f(pen[]), pen[][] a); triple[] map(triple f(triple), triple[] a); pen[] map(pen f(pen), pen[] a); coord[] map(coord f(coord), coord[] a); +Legend[] map(Legend f(Legend), Legend[] a); Label[] map(Label f(Label), Label[] a); pair[] map(pair f(pair), pair[] a); object[] map(object f(object), object[] a); string[] map(string f(string), string[] a); -picture[] map(picture f(picture), picture[] a); void()()[] map(void f()()(void()()), void()()[] a); pair[][] map(pair[] f(pair[]), pair[][] a); real[] map(real f(real), real[] a); @@ -615,7 +615,6 @@ pen[][] sequence(pen[] f(int), int n); coord[] sequence(coord f(int), int n); object[] sequence(object f(int), int n); marker[] sequence(marker f(int), int n); -Legend[] sequence(Legend f(int), int n); int[] sequence(int f(int), int n); string[][] sequence(string[] f(int), int n); pair[] sequence(pair f(int), int n); @@ -628,6 +627,7 @@ string[] sequence(string f(int), int n); pair[][] sequence(pair[] f(int), int n); bool3[] sequence(bool3 f(int), int n); coord[] sequence(coord f(int), int n); +Legend[] sequence(Legend f(int), int n); Label[] sequence(Label f(int), int n); picture[] sequence(picture f(int), int n); real[][] sequence(real[] f(int), int n); @@ -752,6 +752,7 @@ string[] array(int n, string value, int depth=<default>); pair[][] array(int n, pair[] value, int depth=<default>); bool3[] array(int n, bool3 value, int depth=<default>); coord[] array(int n, coord value, int depth=<default>); +Legend[] array(int n, Legend value, int depth=<default>); Label[] array(int n, Label value, int depth=<default>); picture[] array(int n, picture value, int depth=<default>); real[][] array(int n, real[] value, int depth=<default>); @@ -763,7 +764,6 @@ pen[][] array(int n, pen[] value, int depth=<default>); coord[] array(int n, coord value, int depth=<default>); object[] array(int n, object value, int depth=<default>); marker[] array(int n, marker value, int depth=<default>); -Legend[] array(int n, Legend value, int depth=<default>); int[] array(int n, int value, int depth=<default>); string[][] array(int n, string[] value, int depth=<default>); pair[] array(int n, pair value, int depth=<default>); @@ -890,9 +890,9 @@ void write(string s=<default>, explicit path[] x, void suffix(file)=<default>); void write(file file, void suffix(file)=<default>); void write(file file=<default>, string s=<default>, pen[] p); void write(void suffix(file)=<default>); +void write(pairOrTriple a); void write(file file, string s=<default>, explicit path[] x, void suffix(file)=<default>); void write(file file=<default>, align align, void suffix(file)=<default>); -void write(pairOrTriple a); void write(file file, string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>); void write(string s=<default>, bool3 b, void suffix(file)=<default>); void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>); @@ -951,18 +951,18 @@ arrowhead HookHead; arrowhead HookHead(real dir=<default>, real barb=<default>); marker[] concat(... marker[][]); real[] concat(... real[][]); -picture[] concat(... picture[][]); pair[] concat(... pair[][]); object[] concat(... object[][]); pen[] concat(... pen[][]); coord[] concat(... coord[][]); +Legend[] concat(... Legend[][]); Label[] concat(... Label[][]); path[] concat(... path[][]); coord[] concat(... coord[][]); -Legend[] concat(... Legend[][]); int[] concat(... int[][]); void()()[] concat(... void()()[][]); bool3[] concat(... bool3[][]); +picture[] concat(... picture[][]); string[] concat(... string[][]); triple[] concat(... triple[][]); frame[] concat(... frame[][]); @@ -976,14 +976,13 @@ bool alias(pair[][] a, pair[][] b); bool alias(guide[] a, guide[] b); bool alias(marginT a, marginT b); bool alias(coord[] a, coord[] b); -bool alias(autoscaleT a, autoscaleT b); +bool alias(scaleT a, scaleT b); bool alias(align a, align b); -bool alias(Legend[] a, Legend[] b); bool alias(processtime a, processtime b); bool alias(pair[] a, pair[] b); bool alias(scaling a, scaling b); bool alias(coord a, coord b); -bool alias(node a, node b); +bool alias(Legend a, Legend b); bool alias(Label a, Label b); bool alias(schur a, schur b); bool alias(int[] a, int[] b); @@ -997,16 +996,17 @@ bool alias(marker a, marker b); bool alias(real[][] a, real[][] b); bool alias(bool3 a, bool3 b); bool alias(bool3[] a, bool3[] b); -bool alias(scaleT a, scaleT b); -bool alias(ScaleT a, ScaleT b); +bool alias(autoscaleT a, autoscaleT b); +bool alias(picture a, picture b); bool alias(side a, side b); +bool alias(picture[] a, picture[] b); bool alias(cputime a, cputime b); bool alias(string[] a, string[] b); bool alias(frame[] a, frame[] b); bool alias(coords2 a, coords2 b); bool alias(scaling a, scaling b); bool alias(light a, light b); -bool alias(pairOrTriple a, pairOrTriple b); +bool alias(node a, node b); bool alias(object a, object b); bool alias(marker[] a, marker[] b); bool alias(bool[] a, bool[] b); @@ -1016,21 +1016,21 @@ bool alias(filltype a, filltype b); bool alias(simplex a, simplex b); bool alias(coord[] a, coord[] b); bool alias(projection a, projection b); +bool alias(Legend[] a, Legend[] b); bool alias(Label[] a, Label[] b); bool alias(arrowhead a, arrowhead b); bool alias(path[] a, path[] b); bool alias(triple[] a, triple[] b); bool alias(coord a, coord b); bool alias(bounds a, bounds b); -bool alias(Legend a, Legend b); +bool alias(ScaleT a, ScaleT b); bool alias(position a, position b); bool alias(realschur a, realschur b); bool alias(real[] a, real[] b); bool alias(pen[] a, pen[] b); bool alias(hsv a, hsv b); bool alias(coords2 a, coords2 b); -bool alias(picture a, picture b); -bool alias(picture[] a, picture[] b); +bool alias(pairOrTriple a, pairOrTriple b); real pi; int getint(string name=<default>, int default=<default>, string prompt=<default>, bool store=<default>); int bitreverse(int a, int bits); @@ -1062,7 +1062,6 @@ string[][] sort(string[][] a); coord[] sort(coord[] a, bool less(coord, coord), bool stable=<default>); object[] sort(object[] a, bool less(object, object), bool stable=<default>); marker[] sort(marker[] a, bool less(marker, marker), bool stable=<default>); -Legend[] sort(Legend[] a, bool less(Legend, Legend), bool stable=<default>); path[] sort(path[] a, bool less(path, path), bool stable=<default>); pen[][] sort(pen[][] a, bool less(pen[], pen[]), bool stable=<default>); pair[][] sort(pair[][] a, bool less(pair[], pair[]), bool stable=<default>); @@ -1072,6 +1071,7 @@ void()()[] sort(void()()[] a, bool less(void()(), void()()), bool stable=<defaul frame[] sort(frame[] a, bool less(frame, frame), bool stable=<default>); bool3[] sort(bool3[] a, bool less(bool3, bool3), bool stable=<default>); coord[] sort(coord[] a, bool less(coord, coord), bool stable=<default>); +Legend[] sort(Legend[] a, bool less(Legend, Legend), bool stable=<default>); Label[] sort(Label[] a, bool less(Label, Label), bool stable=<default>); picture[] sort(picture[] a, bool less(picture, picture), bool stable=<default>); int[] sort(int[] a, bool less(int, int), bool stable=<default>); @@ -1378,13 +1378,13 @@ triple operator *(triple v, real x); path3 operator *(real[][] t, path3 g); side operator *(real x, side s); Label operator *(real[][] t, Label L); -picture operator *(transform t, picture orig); +picture operator *(real[][] t, picture orig); object operator *(transform t, explicit object F); path[] operator *(transform t, explicit path[] p); Label operator *(transform t, Label L); pair[] operator *(transform t, pair[] z); bounds operator *(transform t, bounds b); -picture operator *(real[][] t, picture orig); +picture operator *(transform t, picture orig); bool operator init(); int operator init(); real operator init(); @@ -1399,7 +1399,7 @@ pen operator init(); frame operator init(); file operator init(); marginT operator init(); -autoscaleT operator init(); +scaleT operator init(); align operator init(); processtime operator init(); filltype operator init(); @@ -1412,25 +1412,25 @@ coords3 operator init(); marker operator init(); hsv operator init(); coords2 operator init(); -picture operator init(); +pairOrTriple operator init(); coords2 operator init(); scaling operator init(); light operator init(); -pairOrTriple operator init(); +node operator init(); object operator init(); scaling operator init(); coord operator init(); -node operator init(); +Legend operator init(); Label operator init(); schur operator init(); coord operator init(); bounds operator init(); -Legend operator init(); +ScaleT operator init(); position operator init(); realschur operator init(); bool3 operator init(); -scaleT operator init(); -ScaleT operator init(); +autoscaleT operator init(); +picture operator init(); side operator init(); cputime operator init(); real operator cast(int); @@ -1476,8 +1476,6 @@ guide operator cast(curlSpecifier spec); guide operator cast(tensionSpecifier t); align operator cast(side side); guide[] operator cast(path[] g); -pair operator cast(pairOrTriple a); -triple operator cast(pairOrTriple a); frame operator cast(object F); hsv operator cast(pen p); bool3[] operator cast(bool[] b); @@ -1498,6 +1496,8 @@ bool[] operator cast(bool3[] b); bool3 operator cast(bool b); position operator cast(int x); object operator cast(string s); +pair operator cast(pairOrTriple a); +triple operator cast(pairOrTriple a); pen operator cast(hsv hsv); position operator cast(real x); Label operator cast(string s); @@ -1605,14 +1605,14 @@ bool operator ==(file a, file b); bool operator ==(path a, path b); bool operator ==(path3 a, path3 b); bool operator ==(bool3 a, bool3 b); -bool operator ==(scaleT a, scaleT b); -bool operator ==(ScaleT a, ScaleT b); +bool operator ==(autoscaleT a, autoscaleT b); +bool operator ==(picture a, picture b); bool operator ==(side a, side b); bool operator ==(cputime a, cputime b); bool operator ==(coords2 a, coords2 b); bool operator ==(scaling a, scaling b); bool operator ==(light a, light b); -bool operator ==(pairOrTriple a, pairOrTriple b); +bool operator ==(node a, node b); bool operator ==(object a, object b); bool operator ==(filltype a, filltype b); bool operator ==(simplex a, simplex b); @@ -1620,20 +1620,20 @@ bool operator ==(projection a, projection b); bool operator ==(arrowhead a, arrowhead b); bool operator ==(coord a, coord b); bool operator ==(bounds a, bounds b); -bool operator ==(Legend a, Legend b); +bool operator ==(ScaleT a, ScaleT b); bool operator ==(position a, position b); bool operator ==(realschur a, realschur b); bool operator ==(hsv a, hsv b); bool operator ==(coords2 a, coords2 b); -bool operator ==(picture a, picture b); +bool operator ==(pairOrTriple a, pairOrTriple b); bool operator ==(bool3 a, bool b); bool operator ==(marginT a, marginT b); -bool operator ==(autoscaleT a, autoscaleT b); +bool operator ==(scaleT a, scaleT b); bool operator ==(align a, align b); bool operator ==(processtime a, processtime b); bool operator ==(scaling a, scaling b); bool operator ==(coord a, coord b); -bool operator ==(node a, node b); +bool operator ==(Legend a, Legend b); bool operator ==(Label a, Label b); bool operator ==(schur a, schur b); bool operator ==(bool a, bool3 b); @@ -1679,14 +1679,14 @@ bool operator !=(file a, file b); bool operator !=(path a, path b); bool operator !=(path3 a, path3 b); bool operator !=(bool3 a, bool3 b); -bool operator !=(scaleT a, scaleT b); -bool operator !=(ScaleT a, ScaleT b); +bool operator !=(autoscaleT a, autoscaleT b); +bool operator !=(picture a, picture b); bool operator !=(side a, side b); bool operator !=(cputime a, cputime b); bool operator !=(coords2 a, coords2 b); bool operator !=(scaling a, scaling b); bool operator !=(light a, light b); -bool operator !=(pairOrTriple a, pairOrTriple b); +bool operator !=(node a, node b); bool operator !=(object a, object b); bool operator !=(filltype a, filltype b); bool operator !=(simplex a, simplex b); @@ -1694,20 +1694,20 @@ bool operator !=(projection a, projection b); bool operator !=(arrowhead a, arrowhead b); bool operator !=(coord a, coord b); bool operator !=(bounds a, bounds b); -bool operator !=(Legend a, Legend b); +bool operator !=(ScaleT a, ScaleT b); bool operator !=(position a, position b); bool operator !=(realschur a, realschur b); bool operator !=(hsv a, hsv b); bool operator !=(coords2 a, coords2 b); -bool operator !=(picture a, picture b); +bool operator !=(pairOrTriple a, pairOrTriple b); bool operator !=(bool3 a, bool b); bool operator !=(marginT a, marginT b); -bool operator !=(autoscaleT a, autoscaleT b); +bool operator !=(scaleT a, scaleT b); bool operator !=(align a, align b); bool operator !=(processtime a, processtime b); bool operator !=(scaling a, scaling b); bool operator !=(coord a, coord b); -bool operator !=(node a, node b); +bool operator !=(Legend a, Legend b); bool operator !=(Label a, Label b); bool operator !=(schur a, schur b); bool operator !=(bool a, bool3 b); @@ -2884,12 +2884,10 @@ point attract(point M, path g, real fuzz=<default>); void Drawline(picture pic=<default>, Label L=<default>, pair P, bool dirP=<default>, pair Q, bool dirQ=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); bool simeq(point A, point B, real fuzz=<default>); bool simeq(point a, real b, real fuzz=<default>); -point inverse(real k, point A, point M); -circle inverse(real k, point A, line l); -circle inverse(real k, point A, circle c); -arc inverse(real k, point A, segment s); -inversion inversion(real k, point C); -inversion inversion(point C, real k); +point inverse(inversion i, point P); +circle inverse(inversion i, line l); +circle inverse(inversion i, circle c); +arc inverse(inversion i, segment s); inversion inversion(circle c1, circle c2, real sgn=<default>); inversion inversion(circle c1, circle c2, circle c3); inversion inversion(circle c); @@ -3994,8 +3992,8 @@ pen PaleVioletRed; pen Sienna; pen CornflowerBlue; pen LightSlateGray; -pen DarkOrchid; pen LightSteelBlue; +pen DarkOrchid; pen rgbint(int r, int g, int b); pen LightYellow; pen Coral; diff --git a/graphics/asymptote/asymptote.spec b/graphics/asymptote/asymptote.spec index 1fa31e09f3..9159fea176 100644 --- a/graphics/asymptote/asymptote.spec +++ b/graphics/asymptote/asymptote.spec @@ -3,7 +3,7 @@ %global __python %{__python3} Name: asymptote -Version: 2.85 +Version: 2.86 Release: 1%{?dist} Summary: Descriptive vector graphics language diff --git a/graphics/asymptote/base/geometry.asy b/graphics/asymptote/base/geometry.asy index 840cb960be..bbc575898c 100644 --- a/graphics/asymptote/base/geometry.asy +++ b/graphics/asymptote/base/geometry.asy @@ -6354,77 +6354,74 @@ void dot(picture pic = currentpicture, triangle t, pen p = currentpen) // *=======================================================* // *.......................INVERSIONS......................* -/*<asyxml><function type="point" signature="inverse(real k,point,point)"><code></asyxml>*/ -point inverse(real k, point A, point M) -{/*<asyxml></code><documentation>Return the inverse point of 'M' with respect to point A and inversion radius 'k'.</documentation></function></asyxml>*/ - return A + k/conj(M - A); +/*<asyxml><struct signature="inversion"><code></asyxml>*/ +struct inversion +{/*<asyxml></code><documentation>https://mathworld.wolfram.com/Inversion.html</documentation></asyxml>*/ + point C; + real k; + + /*<asyxml><function type="void" signature="init(point,real)"><code></asyxml>*/ + void operator init(point C, real k) + {/*<asyxml></code><documentation>Return the inversion with respect to 'C' having circle power 'k'.</documentation></function></asyxml>*/ + this.C = C; + this.k = k; + } + /*<asyxml><function type="void" signature="init(real,point)"><code></asyxml>*/ + void operator init(real k, point C) + {/*<asyxml></code><documentation>Return the inversion with respect to 'C' having circle power 'k'.</documentation></function></asyxml>*/ + this.C = C; + this.k = k; + } +}/*<asyxml></struct></asyxml>*/ + +/*<asyxml><function type="point" signature="inverse(inversion,point)"><code></asyxml>*/ +point inverse(inversion i, point P) +{/*<asyxml></code><documentation>Return the inverse point of 'P' with respect to 'i'.</documentation></function></asyxml>*/ + pair C = locate(i.C), P1 = locate(P); + pair P2 = C + i.k / conj(P1 - C); + return P2 / currentcoordsys; } /*<asyxml><function type="point" signature="radicalcenter(circle,circle)"><code></asyxml>*/ point radicalcenter(circle c1, circle c2) -{/*<asyxml></code><documentation><url href = "http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle"/></documentation></function></asyxml>*/ - point[] P = standardizecoordsys(c1.C, c2.C); +{/*<asyxml></code><documentation><url href="http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle"/></documentation></function></asyxml>*/ real k = c1.r^2 - c2.r^2; - pair C1 = locate(c1.C); - pair C2 = locate(c2.C); - pair oop = C2 - C1; - pair K = (abs(oop) == 0) ? + pair C1 = locate(c1.C), C2 = locate(c2.C); + pair D = C2 - C1; + pair K = C1 == C2 ? (infinity, infinity) : - midpoint(C1--C2) + 0.5 * k * oop/dot(oop, oop); - return point(P[0].coordsys, K/P[0].coordsys); + 0.5 * (C1 + C2 + k * D / abs2(D)); + return K / currentcoordsys; } /*<asyxml><function type="line" signature="radicalline(circle,circle)"><code></asyxml>*/ line radicalline(circle c1, circle c2) -{/*<asyxml></code><documentation><url href = "http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle"/></documentation></function></asyxml>*/ +{/*<asyxml></code><documentation><url href="http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle"/></documentation></function></asyxml>*/ if (c1.C == c2.C) abort("radicalline: the centers must be distinct"); return perpendicular(radicalcenter(c1, c2), line(c1.C, c2.C)); } /*<asyxml><function type="point" signature="radicalcenter(circle,circle,circle)"><code></asyxml>*/ point radicalcenter(circle c1, circle c2, circle c3) -{/*<asyxml></code><documentation><url href = "http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle"/></documentation></function></asyxml>*/ +{/*<asyxml></code><documentation><url href="http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle"/></documentation></function></asyxml>*/ return intersectionpoint(radicalline(c1, c2), radicalline(c1, c3)); } -/*<asyxml><struct signature="inversion"><code></asyxml>*/ -struct inversion -{/*<asyxml></code><documentation>http://mathworld.wolfram.com/Inversion.html</documentation></asyxml>*/ - point C; - real k; -}/*<asyxml></struct></asyxml>*/ - -/*<asyxml><function type="inversion" signature="inversion(real,point)"><code></asyxml>*/ -inversion inversion(real k, point C) -{/*<asyxml></code><documentation>Return the inversion with respect to 'C' having inversion radius 'k'.</documentation></function></asyxml>*/ - inversion oi; - oi.k = k; - oi.C = C; - return oi; -} -/*<asyxml><function type="inversion" signature="inversion(real,point)"><code></asyxml>*/ -inversion inversion(point C, real k) -{/*<asyxml></code><documentation>Return the inversion with respect to 'C' having inversion radius 'k'.</documentation></function></asyxml>*/ - return inversion(k, C); -} - /*<asyxml><function type="inversion" signature="inversion(circle,circle)"><code></asyxml>*/ inversion inversion(circle c1, circle c2, real sgn = 1) {/*<asyxml></code><documentation>Return the inversion which transforms 'c1' to - . 'c2' and positive inversion radius if 'sgn > 0'; - . 'c2' and negative inversion radius if 'sgn < 0'; - . 'c1' and 'c2' to 'c2' if 'sgn = 0'.</documentation></function></asyxml>*/ + • 'c2' and positive inversion radius if 'sgn > 0'; + • 'c2' and negative inversion radius if 'sgn < 0'; + • 'c1' and 'c2' to 'c2' if 'sgn = 0'.</documentation></function></asyxml>*/ if(sgn == 0) { point O = radicalcenter(c1, c2); - return inversion(O^c1, O); - } - else { - point C1 = c1.C, C2 = c2.C; - real r1 = c1.r, r2 = sgn(sgn) * c2.r; - return inversion( - r1 * r2 * (1 - (length(C2 - C1) / (r1 + r2))^2), - (r2 * C1 + r1 * C2) / (r1 + r2)); + return inversion(O, O^c1); } + pair C1 = locate(c1.C), C2 = locate(c2.C); + real r1 = c1.r, r2 = sgn(sgn) * c2.r; + pair O = (r2 * C1 + r1 * C2) / (r1 + r2); + real k = r1 * r2 * (1 - abs2(C2 - C1) / (r1 + r2)^2); + return inversion(O / currentcoordsys, k); } /*<asyxml><function type="inversion" signature="inversion(circle,circle,circle)"><code></asyxml>*/ @@ -6434,7 +6431,10 @@ inversion inversion(circle c1, circle c2, circle c3) return inversion(Rc, Rc^c1); } -circle operator cast(inversion i){return circle(i.C, sgn(i.k) * sqrt(abs(i.k)));} +circle operator cast(inversion i) +{ + return circle(i.C, sgn(i.k) * sqrt(abs(i.k))); +} /*<asyxml><function type="circle" signature="circle(inversion)"><code></asyxml>*/ circle circle(inversion i) {/*<asyxml></code><documentation>Return the inversion circle of 'i'.</documentation></function></asyxml>*/ @@ -6443,7 +6443,7 @@ circle circle(inversion i) inversion operator cast(circle c) { - return inversion(sgn(c.r) * c.r^2, c.C); + return inversion(c.C, sgn(c.r) * c.r^2); } /*<asyxml><function type="inversion" signature="inversion(circle)"><code></asyxml>*/ inversion inversion(circle c) @@ -6451,10 +6451,10 @@ inversion inversion(circle c) return c; } -/*<asyxml><operator type = "point" signature="*(inversion,point)"><code></asyxml>*/ +/*<asyxml><operator type="point" signature="*(inversion,point)"><code></asyxml>*/ point operator *(inversion i, point P) {/*<asyxml></code><documentation>Provide inversion * point.</documentation></operator></asyxml>*/ - return inverse(i.k, i.C, P); + return inverse(i, P); } void lineinversion() @@ -6463,48 +6463,47 @@ void lineinversion() The returned circle has an infinite radius, circle.l has been set."); } - -/*<asyxml><function type="circle" signature="inverse(real,point,line)"><code></asyxml>*/ -circle inverse(real k, point A, line l) -{/*<asyxml></code><documentation>Return the inverse circle of 'l' with - respect to point 'A' and inversion radius 'k'.</documentation></function></asyxml>*/ - if(A @ l) { +/*<asyxml><function type="circle" signature="inverse(inversion,line)"><code></asyxml>*/ +circle inverse(inversion i, line l) +{/*<asyxml></code><documentation>Return the inverse circle of 'l' with respect to 'i'.</documentation></function></asyxml>*/ + if(i.C @ l) { lineinversion(); - circle C = circle(A, infinity); - C.l = l; - return C; + circle c = circle(i.C, infinity); + c.l = l; + return c; } - point Ap = inverse(k, A, l.A), Bp = inverse(k, A, l.B); - return circle(A, Ap, Bp); + point A = inverse(i, l.A), B = inverse(i, l.B); + return circle(i.C, A, B); } -/*<asyxml><operator type = "circle" signature="*(inversion,line)"><code></asyxml>*/ +/*<asyxml><operator type="circle" signature="*(inversion,line)"><code></asyxml>*/ circle operator *(inversion i, line l) {/*<asyxml></code><documentation>Provide inversion * line for lines that don't pass through the inversion center.</documentation></operator></asyxml>*/ - return inverse(i.k, i.C, l); + return inverse(i, l); } -/*<asyxml><function type="circle" signature="inverse(real,point,circle)"><code></asyxml>*/ -circle inverse(real k, point A, circle c) -{/*<asyxml></code><documentation>Return the inverse circle of 'c' with - respect to point A and inversion radius 'k'.</documentation></function></asyxml>*/ - if(degenerate(c)) return inverse(k, A, c.l); - if(A @ c) { +/*<asyxml><function type="circle" signature="inverse(inversion,circle)"><code></asyxml>*/ +circle inverse(inversion i, circle c) +{/*<asyxml></code><documentation>Return the inverse circle of 'c' with respect to 'i'.</documentation></function></asyxml>*/ + if(degenerate(c)) return inverse(i, c.l); + if(i.C @ c) { lineinversion(); - point M = rotate(180, c.C) * A, Mp = rotate(90, c.C) * A; - circle oc = circle(A, infinity); - oc.l = line(inverse(k, A, M), inverse(k, A, Mp)); - return oc; + point M1 = rotate(90, c.C) * i.C, M2 = rotate(-90, c.C) * i.C; + circle c1 = circle(i.C, infinity); + c1.l = line(inverse(i, M1), inverse(i, M2)); + return c1; } - point[] P = standardizecoordsys(A, c.C); - real s = k/((P[1].x - P[0].x)^2 + (P[1].y - P[0].y)^2 - c.r^2); - return circle(P[0] + s * (P[1]-P[0]), abs(s) * c.r); + pair C1 = locate(i.C), C2 = locate(c.C); + pair D = C2 - C1; + real s = i.k / (abs2(D) - c.r^2); + pair C3 = C1 + s * D; + return circle((point)(C3 / currentcoordsys), abs(s) * c.r); } -/*<asyxml><operator type = "circle" signature="*(inversion,circle)"><code></asyxml>*/ +/*<asyxml><operator type="circle" signature="*(inversion,circle)"><code></asyxml>*/ circle operator *(inversion i, circle c) {/*<asyxml></code><documentation>Provide inversion * circle.</documentation></operator></asyxml>*/ - return inverse(i.k, i.C, c); + return inverse(i, c); } // *.......................INVERSIONS......................* // *=======================================================* @@ -7151,20 +7150,20 @@ arc arc(explicit arc a, point M, point N) return arc(a, relabscissa(a, M), relabscissa(a, N)); } -/*<asyxml><function type="arc" signature="inverse(real,point,segment)"><code></asyxml>*/ -arc inverse(real k, point A, segment s) +/*<asyxml><function type="arc" signature="inverse(inversion,segment)"><code></asyxml>*/ +arc inverse(inversion i, segment s) {/*<asyxml></code><documentation>Return the inverse arc circle of 's' - with respect to point A and inversion radius 'k'.</documentation></function></asyxml>*/ - point Ap = inverse(k, A, s.A), Bp = inverse(k, A, s.B), - M = inverse(k, A, midpoint(s)); + with respect to inversion 'i'.</documentation></function></asyxml>*/ + point Ap = inverse(i, s.A), Bp = inverse(i, s.B), + M = inverse(i, midpoint(s)); return arccircle(Ap, M, Bp); } -/*<asyxml><operator type = "arc" signature="*(inversion,segment)"><code></asyxml>*/ +/*<asyxml><operator type="arc" signature="*(inversion,segment)"><code></asyxml>*/ arc operator *(inversion i, segment s) {/*<asyxml></code><documentation>Provide inversion * segment.</documentation></operator></asyxml>*/ - return inverse(i.k, i.C, s); + return inverse(i, s); } /*<asyxml><operator type = "path" signature="*(inversion,triangle)"><code></asyxml>*/ diff --git a/graphics/asymptote/base/plain.asy b/graphics/asymptote/base/plain.asy index 084fedd758..5c781e1a9b 100644 --- a/graphics/asymptote/base/plain.asy +++ b/graphics/asymptote/base/plain.asy @@ -267,8 +267,8 @@ cputime cputime() real[] a=_cputime(); cputime cputime; real clock=a[4]; - cputime.parent.user=a[0]; - cputime.parent.system=a[1]; + cputime.parent.user=a[0]; // Includes system time + cputime.parent.system=0; cputime.parent.clock=clock; cputime.child.user=a[2]; cputime.child.system=a[3]; diff --git a/graphics/asymptote/base/shaders/fragment.glsl b/graphics/asymptote/base/shaders/fragment.glsl index 6f42f7d491..0d16585511 100644 --- a/graphics/asymptote/base/shaders/fragment.glsl +++ b/graphics/asymptote/base/shaders/fragment.glsl @@ -220,7 +220,7 @@ void main() #endif } #else - m=Materials[int(materialIndex)]; + m=Materials[materialIndex]; emissive=m.emissive; #ifdef COLOR diffuse=Color; diff --git a/graphics/asymptote/base/three_surface.asy b/graphics/asymptote/base/three_surface.asy index 68f13c5782..c54b0cc490 100644 --- a/graphics/asymptote/base/three_surface.asy +++ b/graphics/asymptote/base/three_surface.asy @@ -742,7 +742,21 @@ path[] regularize(path p, bool checkboundary=true) } typedef void drawfcn(frame f, transform3 t=identity4, material[] m, - light light=currentlight, render render=defaultrender); + light light=currentlight, render render=defaultrender); +typedef bool primitivefcn(transform3 t); + +bool unscaled(transform3 t, triple v, triple w) { + return abs(length(t*v)-length(t*w)) < sqrtEpsilon; +} + +struct primitive { + drawfcn draw; + primitivefcn valid; + void operator init(drawfcn draw, primitivefcn valid) { + this.draw=draw; + this.valid=valid; + } +} struct surface { patch[] s; @@ -750,7 +764,7 @@ struct surface { bool vcyclic; transform3 T=identity4; - drawfcn draw; + primitive primitive=null; bool PRCprimitive=true; // True unless no PRC primitive is available. bool empty() { @@ -1050,7 +1064,7 @@ surface operator * (transform3 t, surface s) S.index=copy(s.index); S.vcyclic=(bool) s.vcyclic; S.T=t*s.T; - S.draw=s.draw; + S.primitive=s.primitive; S.PRCprimitive=s.PRCprimitive; return S; @@ -1564,7 +1578,8 @@ void draw(transform t=identity(), frame f, surface s, int nu=1, int nv=1, bool is3D=is3D(); if(is3D) { bool prc=prc(); - if(s.draw != null && (primitive() || (prc && s.PRCprimitive))) { + if(s.primitive != null && (primitive() || (prc && s.PRCprimitive)) && + s.primitive.valid(shiftless(s.T))) { bool noprerender=settings.prerender == 0; for(int k=0; k < s.s.length; ++k) { patch p=s.s[k]; @@ -1572,7 +1587,7 @@ void draw(transform t=identity(), frame f, surface s, int nu=1, int nv=1, if(p.colors.length > 0) noprerender=false; } if(noprerender) - s.draw(f,s.T,surfacepen,light,render); + s.primitive.draw(f,s.T,surfacepen,light,render); } else { bool group=name != "" || render.defaultnames; if(group) @@ -2144,24 +2159,27 @@ restricted surface unithemisphere=surface(octant1,t1*octant1,t2*octant1, restricted surface unitsphere=surface(octant1,t1*octant1,t2*octant1,t3*octant1, i*octant1,i*t1*octant1,i*t2*octant1, i*t3*octant1); - -unitsphere.draw= +unitsphere.primitive=primitive( new void(frame f, transform3 t=identity4, material[] m, light light=currentlight, render render=defaultrender) { material m=material(m[0],light); drawSphere(f,t,half=false,m.p,m.opacity,m.shininess,m.metallic,m.fresnel0, render.sphere); - }; + },new bool(transform3 t) { + return unscaled(t,X,Y) && unscaled(t,Y,Z); + }); -unithemisphere.draw= +unithemisphere.primitive=primitive( new void(frame f, transform3 t=identity4, material[] m, light light=currentlight, render render=defaultrender) { material m=material(m[0],light); drawSphere(f,t,half=true,m.p,m.opacity,m.shininess,m.metallic,m.fresnel0, render.sphere); - }; + },new bool(transform3 t) { + return unscaled(t,X,Y) && unscaled(t,Y,Z); + }); restricted patch unitfrustum1(real ta, real tb) { @@ -2200,7 +2218,10 @@ drawfcn unitcylinderDraw(bool core) { }; } -unitcylinder.draw=unitcylinderDraw(false); +unitcylinder.primitive=primitive(unitcylinderDraw(false), + new bool(transform3 t) { + return unscaled(t,X,Y); + }); private patch unitplane=patch(new triple[] {O,X,X+Y,Y}); restricted surface unitcube=surface(reverse(unitplane), @@ -2212,13 +2233,16 @@ restricted surface unitcube=surface(reverse(unitplane), restricted surface unitplane=surface(unitplane); restricted surface unitdisk=surface(unitcircle3); -unitdisk.draw= +unitdisk.primitive=primitive( new void(frame f, transform3 t=identity4, material[] m, light light=currentlight, render render=defaultrender) { material m=material(m[0],light); drawDisk(f,t,m.p,m.opacity,m.shininess,m.metallic,m.fresnel0); - }; + }, + new bool(transform3 t) { + return unscaled(t,X,Y); + }); void dot(frame f, triple v, material p=currentpen, light light=nolight, string name="", diff --git a/graphics/asymptote/base/three_tube.asy b/graphics/asymptote/base/three_tube.asy index 5c22f4d29b..87cba0ab9c 100644 --- a/graphics/asymptote/base/three_tube.asy +++ b/graphics/asymptote/base/three_tube.asy @@ -136,7 +136,10 @@ surface tube(triple z0, triple c0, triple c1, triple z1, real w) f(t3); s.PRCprimitive=false; - s.draw=drawTube(g,w,min(s),max(s)); + s.primitive=primitive(drawTube(g,w,min(s),max(s)), + new bool(transform3 t) { + return unscaled(t,X,Y); + }); return s; } @@ -213,7 +216,10 @@ struct tube transform3 t=shift(v)*align(unit(u))*scale(r,r,abs(u)); // Draw opaque surfaces with core for better small-scale rendering. surface unittube=t*unitcylinder; - unittube.draw=unitcylinderDraw(core=true); + unittube.primitive=primitive(unitcylinderDraw(core=true), + new bool(transform3 t) { + return unscaled(t,X,Y); + }); s.push(unittube); } else s.append(render(subpath(p,i,i+1),r)); diff --git a/graphics/asymptote/base/v3d.asy b/graphics/asymptote/base/v3d.asy index 5bdd0627d5..d62ec0b110 100644 --- a/graphics/asymptote/base/v3d.asy +++ b/graphics/asymptote/base/v3d.asy @@ -321,7 +321,7 @@ struct v3dfile int material=xdrfile; surface s=shift(origin)*scale3(radius)*unitsphere; - s.draw=unitsphere.draw; + s.primitive=unitsphere.primitive; primitive(center,material,s); } @@ -336,7 +336,7 @@ struct v3dfile real azimuth=xdrfile; surface s=shift(origin)*Align(polar,azimuth)*scale3(radius)*unithemisphere; - s.draw=unithemisphere.draw; + s.primitive=unithemisphere.primitive; primitive(center,material,s); } @@ -351,7 +351,7 @@ struct v3dfile real azimuth=xdrfile; surface s=shift(origin)*Align(polar,azimuth)*scale3(radius)*unitdisk; - s.draw=unitdisk.draw; + s.primitive=unitdisk.primitive; primitive(center,material,s); } @@ -396,7 +396,7 @@ struct v3dfile path3(center,material,T*(O--Z)); surface s=T*unitcylinder; - s.draw=unitcylinder.draw; + s.primitive=unitcylinder.primitive; primitive(center,material,s); } @@ -414,7 +414,10 @@ struct v3dfile path3(center,material,g[0]..controls g[1] and g[2]..g[3]); surface s=tube(g[0],g[1],g[2],g[3],width); - s.draw=drawTube(g,width,info.b,info.B); + s.primitive=primitive(drawTube(g,width,info.b,info.B), + new bool(transform3 t) { + return unscaled(t,X,Y); + }); primitive(center,material,s); } diff --git a/graphics/asymptote/base/v3dheadertypes.asy b/graphics/asymptote/base/v3dheadertypes.asy index 5a5cd8c99d..940ff8aad6 100644 --- a/graphics/asymptote/base/v3dheadertypes.asy +++ b/graphics/asymptote/base/v3dheadertypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2023-02-09 04:54:07 +// Generated at 2023-06-07 02:00:19 struct v3dheadertypes { diff --git a/graphics/asymptote/base/v3dtypes.asy b/graphics/asymptote/base/v3dtypes.asy index 85def47680..82d3dc6262 100644 --- a/graphics/asymptote/base/v3dtypes.asy +++ b/graphics/asymptote/base/v3dtypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2023-02-09 04:54:07 +// Generated at 2023-06-07 02:00:19 struct v3dtypes { diff --git a/graphics/asymptote/build-scripts/HOWTO-MSWindows b/graphics/asymptote/build-scripts/HOWTO-MSWindows index 296cc23dd1..3539efa60a 100644 --- a/graphics/asymptote/build-scripts/HOWTO-MSWindows +++ b/graphics/asymptote/build-scripts/HOWTO-MSWindows @@ -20,7 +20,7 @@ make install readline-devel: ./configure --prefix=/usr --without-curses --disable-shared -make install +make install LOCAL_CFLAGS=-DNEED_EXTERN_PC fftw3-devel: ./configure --prefix=/usr --disable-shared diff --git a/graphics/asymptote/build-scripts/build-asymptote b/graphics/asymptote/build-scripts/build-asymptote index ad95a8e0d5..a7c4513675 100755 --- a/graphics/asymptote/build-scripts/build-asymptote +++ b/graphics/asymptote/build-scripts/build-asymptote @@ -3,7 +3,7 @@ HOME=~bowman SHARED=$HOME/shared/asy -GCVERSION=8.2.0 +GCVERSION=8.2.4 ATOMICVERSION=7.6.12 GC=gc-$GCVERSION @@ -34,7 +34,7 @@ wget https://github.com/ivmai/bdwgc/releases/download/v$GCVERSION/gc-$GCVERSION. wget https://github.com/ivmai/libatomic_ops/releases/download/v$ATOMICVERSION/libatomic_ops-$ATOMICVERSION.tar.gz cp /usr/local/src/$GC.tar.gz asymptote-$VERSION cp /usr/local/src/libatomic_ops-$ATOMICVERSION.tar.gz asymptote-$VERSION -chown -R root.root asymptote-$VERSION +chown -R root:root asymptote-$VERSION cd asymptote-$VERSION find . -name ".[^.]*" -exec rm -rf {} \; ./autogen.sh diff --git a/graphics/asymptote/common.h b/graphics/asymptote/common.h index 50f397c7e3..13f8be106e 100644 --- a/graphics/asymptote/common.h +++ b/graphics/asymptote/common.h @@ -18,15 +18,27 @@ #endif #ifdef HAVE_LSP +#if __cplusplus < 201703L #include <boost/optional.hpp> #include <boost/none.hpp> using boost::optional; +#define nullopt boost::none using boost::make_optional; #else +#include <optional> +using std::optional; +using std::nullopt; +using std::make_optional; +#endif + +#else +#if __cplusplus < 201703L #include "optional.hpp" #define boost nonstd using nonstd::optional; using nonstd::nullopt; +using nonstd::make_optional; +#endif #endif using std::make_pair; diff --git a/graphics/asymptote/config.guess b/graphics/asymptote/config.guess index 5fbea7aced..c7f17e8fb9 100755 --- a/graphics/asymptote/config.guess +++ b/graphics/asymptote/config.guess @@ -1,12 +1,14 @@ -#! /bin/sh +#!/usr/bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2018-03-08' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-05-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,11 +29,19 @@ timestamp='2018-03-08' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to <config-patches@gnu.org>. +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,7 +94,8 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' 1 2 15 +# Just in case it came from the environment. +GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -96,73 +107,90 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > "$dummy.c" ; - for c in cc gcc c89 c99 ; do - if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown - eval "$set_cc_for_build" + set_cc_for_build cat <<-EOF > "$dummy.c" #include <features.h> #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include <stdarg.h> + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -174,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -188,18 +216,18 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval "$set_cc_for_build" + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -215,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -226,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -237,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -289,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -326,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval "$set_cc_for_build" + set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -446,43 +490,43 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ @@ -508,78 +552,79 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include <sys/systemcfg.h> @@ -593,16 +638,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -610,57 +655,57 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then - eval "$set_cc_for_build" + if test "$HP_ARCH" = ""; then + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE @@ -698,9 +743,9 @@ EOF test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then - eval "$set_cc_for_build" + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -719,14 +764,14 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include <unistd.h> int @@ -754,36 +799,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -791,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -809,103 +855,129 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; - i*86:Minix:*:*) - echo "$UNAME_MACHINE"-pc-minix - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -916,183 +988,236 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) - eval "$set_cc_for_build" + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) - eval "$set_cc_for_build" + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" - test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1100,12 +1225,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL elif /bin/uname -X 2>/dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1115,11 +1240,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1127,31 +1252,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1176,305 +1301,303 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <hewes@openmarket.com>. # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv"$UNAME_RELEASE" + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval "$set_cc_for_build" - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; -esac - -echo "$0: unable to guess system type" >&2 - -case "$UNAME_MACHINE:$UNAME_SYSTEM" in - mips:Linux | mips64:Linux) - # If we got here on MIPS GNU/Linux, output extra information. - cat >&2 <<EOF - -NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize -the system type. Please install a C compiler and try again. -EOF + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac -cat >&2 <<EOF - -This script (version $timestamp), has failed to recognize the -operating system you are using. If your script is old, overwrite *all* -copies of config.guess and config.sub with the latest versions from: - - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess -and - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub - -If $0 has already been updated, send the following data and any -information you think might be pertinent to config-patches@gnu.org to -provide the necessary information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = "$UNAME_MACHINE" -UNAME_RELEASE = "$UNAME_RELEASE" -UNAME_SYSTEM = "$UNAME_SYSTEM" -UNAME_VERSION = "$UNAME_VERSION" -EOF +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi -exit 1 +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" <<EOF +#ifdef _SEQUENT_ +#include <sys/types.h> +#include <sys/utsname.h> +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include <signal.h> +#if defined(_SIZE_T_) || defined(SIGLOST) +#include <sys/utsname.h> +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif -# Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: -CTURE__) +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; @@ -1570,7 +1693,7 @@ CTURE__) } EOF -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1578,7 +1701,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <<EOF @@ -1595,9 +1718,17 @@ This script (version $timestamp), has failed to recognize the operating system you are using. If your script is old, overwrite *all* copies of config.guess and config.sub with the latest versions from: - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess + https://git.savannah.gnu.org/cgit/config.git/plain/config.guess and - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + https://git.savannah.gnu.org/cgit/config.git/plain/config.sub +EOF + +our_year=`echo $timestamp | sed 's,-.*,,'` +thisyear=`date +%Y` +# shellcheck disable=SC2003 +script_age=`expr "$thisyear" - "$our_year"` +if test "$script_age" -lt 3 ; then + cat >&2 <<EOF If $0 has already been updated, send the following data and any information you think might be pertinent to config-patches@gnu.org to @@ -1625,6 +1756,7 @@ UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF +fi exit 1 diff --git a/graphics/asymptote/configure b/graphics/asymptote/configure index beeac6ac8b..84292645ed 100755 --- a/graphics/asymptote/configure +++ b/graphics/asymptote/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Asymptote 2.85. +# Generated by GNU Autoconf 2.71 for Asymptote 2.86. # # Report bugs to <https://github.com/vectorgraphics/asymptote/issues>. # @@ -611,8 +611,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Asymptote' PACKAGE_TARNAME='asymptote' -PACKAGE_VERSION='2.85' -PACKAGE_STRING='Asymptote 2.85' +PACKAGE_VERSION='2.86' +PACKAGE_STRING='Asymptote 2.86' PACKAGE_BUGREPORT='https://github.com/vectorgraphics/asymptote/issues' PACKAGE_URL='' @@ -1325,7 +1325,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Asymptote 2.85 to adapt to many kinds of systems. +\`configure' configures Asymptote 2.86 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1391,7 +1391,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Asymptote 2.85:";; + short | recursive ) echo "Configuration of Asymptote 2.86:";; esac cat <<\_ACEOF @@ -1506,7 +1506,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Asymptote configure 2.85 +Asymptote configure 2.86 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1986,7 +1986,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Asymptote $as_me 2.85, which was +It was created by Asymptote $as_me 2.86, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -6694,7 +6694,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ASYGLVERSION=1.02 -GCVERSION=8.2.0 +GCVERSION=8.2.4 ATOMICVERSION=7.6.12 GCFILE=gc-$GCVERSION @@ -10280,7 +10280,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Asymptote $as_me 2.85, which was +This file was extended by Asymptote $as_me 2.86, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10344,7 +10344,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Asymptote config.status 2.85 +Asymptote config.status 2.86 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/graphics/asymptote/configure.ac b/graphics/asymptote/configure.ac index c1bb28f29c..b4b58947bc 100644 --- a/graphics/asymptote/configure.ac +++ b/graphics/asymptote/configure.ac @@ -3,7 +3,7 @@ # this file. AC_PREREQ(2) -AC_INIT([Asymptote],[2.85],[https://github.com/vectorgraphics/asymptote/issues]) +AC_INIT([Asymptote],[2.86],[https://github.com/vectorgraphics/asymptote/issues]) VERSION=$PACKAGE_VERSION AC_SUBST(VERSION) m4_include([ax_pthread.m4]) @@ -157,7 +157,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( ASYGLVERSION=1.02 -GCVERSION=8.2.0 +GCVERSION=8.2.4 ATOMICVERSION=7.6.12 GCFILE=gc-$GCVERSION diff --git a/graphics/asymptote/cudareflect/tinyexr/tinyexr.h b/graphics/asymptote/cudareflect/tinyexr/tinyexr.h index a5e868b99a..8bc7cd1d44 100644 --- a/graphics/asymptote/cudareflect/tinyexr/tinyexr.h +++ b/graphics/asymptote/cudareflect/tinyexr/tinyexr.h @@ -6777,7 +6777,6 @@ static int EncodeChunk(const EXRImage* exr_image, const EXRHeader* exr_header, if (exr_image->tiles) { const EXRImage* level_image = exr_image; size_t block_idx = 0; - tinyexr::tinyexr_uint64 block_data_size = 0; int num_levels = (exr_header->tile_level_mode != TINYEXR_TILE_RIPMAP_LEVELS) ? offset_data.num_x_levels : (offset_data.num_x_levels * offset_data.num_y_levels); for (int level_index = 0; level_index < num_levels; ++level_index) { @@ -6825,7 +6824,6 @@ static int EncodeChunk(const EXRImage* exr_image, const EXRHeader* exr_header, offset_data.offsets[level_index][j][i] = offset; swap8(reinterpret_cast<tinyexr_uint64*>(&offset_data.offsets[level_index][j][i])); offset += data_list[block_idx].size() + doffset; - block_data_size += data_list[block_idx].size(); ++block_idx; } level_image = level_image->next_level; diff --git a/graphics/asymptote/doc/CAD.pdf b/graphics/asymptote/doc/CAD.pdf Binary files differindex 404c5f0e5b..f513b84f03 100644 --- a/graphics/asymptote/doc/CAD.pdf +++ b/graphics/asymptote/doc/CAD.pdf diff --git a/graphics/asymptote/doc/FAQ/asy-faq.info b/graphics/asymptote/doc/FAQ/asy-faq.info index d2b3fcbec8..281cc1550d 100644 --- a/graphics/asymptote/doc/FAQ/asy-faq.info +++ b/graphics/asymptote/doc/FAQ/asy-faq.info @@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir) ASYMPTOTE FREQUENTLY ASKED QUESTIONS - 2023-02-09 + 2023-06-07 This is the list of Frequently Asked Questions about Asymptote (asy). diff --git a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf Binary files differindex 9926852eec..bf43e7c7dc 100644 --- a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf +++ b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf diff --git a/graphics/asymptote/doc/asy-latex.pdf b/graphics/asymptote/doc/asy-latex.pdf Binary files differindex 554016edc6..9db1c7caa1 100644 --- a/graphics/asymptote/doc/asy-latex.pdf +++ b/graphics/asymptote/doc/asy-latex.pdf diff --git a/graphics/asymptote/doc/asy.1 b/graphics/asymptote/doc/asy.1 index 4738bebd4e..69aa1f432f 100644 --- a/graphics/asymptote/doc/asy.1 +++ b/graphics/asymptote/doc/asy.1 @@ -368,7 +368,7 @@ Use webgl2 if available [false]. Show where listed variables are declared [false]. .TP .B \-wsl -Run asy under the Windows Subsystem for Linux. [false]. +Run asy under the Windows Subsystem for Linux [false]. .TP .B \-xasy Interactive mode for xasy [false]. diff --git a/graphics/asymptote/doc/asyRefCard.pdf b/graphics/asymptote/doc/asyRefCard.pdf Binary files differindex bdc97baa74..b2eb271f3e 100644 --- a/graphics/asymptote/doc/asyRefCard.pdf +++ b/graphics/asymptote/doc/asyRefCard.pdf diff --git a/graphics/asymptote/doc/asymptote.pdf b/graphics/asymptote/doc/asymptote.pdf Binary files differindex b38e93f9c7..c019a75ca2 100644 --- a/graphics/asymptote/doc/asymptote.pdf +++ b/graphics/asymptote/doc/asymptote.pdf diff --git a/graphics/asymptote/doc/png/asymptote.info b/graphics/asymptote/doc/png/asymptote.info index 78edd9ad02..27c24e19d8 100644 --- a/graphics/asymptote/doc/png/asymptote.info +++ b/graphics/asymptote/doc/png/asymptote.info @@ -1,7 +1,7 @@ This is asymptote.info, produced by makeinfo version 6.8 from asymptote.texi. -This file documents 'Asymptote', version 2.85. +This file documents 'Asymptote', version 2.86. <https://asymptote.sourceforge.io> @@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir) Asymptote ********* -This file documents 'Asymptote', version 2.85. +This file documents 'Asymptote', version 2.86. <https://asymptote.sourceforge.io> @@ -8396,7 +8396,7 @@ Options (negate boolean options by replacing - with -no): -warn str Enable warning; command-line only -webgl2 Use webgl2 if available [false] -where Show where listed variables are declared [false] --wsl Run asy under the Windows Subsystem for Linux. [false] +-wsl Run asy under the Windows Subsystem for Linux [false] -xasy Interactive mode for xasy [false] -zoomPinchCap limit WebGL maximum zoom pinch [100] -zoomPinchFactor n WebGL zoom pinch sensitivity [10] @@ -10685,22 +10685,22 @@ Node: smoothcontour3324592 Node: slopefield326311 Node: ode327792 Node: Options328049 -Ref: configuration file336368 -Ref: settings336368 -Ref: texengines337632 -Ref: convert337632 -Node: Interactive mode341077 -Ref: history343226 -Node: GUI344529 -Node: GUI installation345079 -Node: GUI usage346007 -Node: Command-Line Interface347070 -Node: Language server protocol348512 -Node: PostScript to Asymptote349937 -Node: Help350715 -Node: Debugger352389 -Node: Credits354145 -Node: Index355370 +Ref: configuration file336367 +Ref: settings336367 +Ref: texengines337631 +Ref: convert337631 +Node: Interactive mode341076 +Ref: history343225 +Node: GUI344528 +Node: GUI installation345078 +Node: GUI usage346006 +Node: Command-Line Interface347069 +Node: Language server protocol348511 +Node: PostScript to Asymptote349936 +Node: Help350714 +Node: Debugger352388 +Node: Credits354144 +Node: Index355369 End Tag Table diff --git a/graphics/asymptote/env.h b/graphics/asymptote/env.h index 0f97902620..ef5ba67318 100644 --- a/graphics/asymptote/env.h +++ b/graphics/asymptote/env.h @@ -140,7 +140,7 @@ public: bool add(symbol src, symbol dest, protoenv &source, varEntry *qualifier, coder &c) { - return te.add(src, dest, source.te, qualifier, c) | + return te.add(src, dest, source.te, qualifier, c) || ve.add(src, dest, source.ve, qualifier, c); } diff --git a/graphics/asymptote/fileio.cc b/graphics/asymptote/fileio.cc index 441a9590ec..b28269b2b1 100644 --- a/graphics/asymptote/fileio.cc +++ b/graphics/asymptote/fileio.cc @@ -75,6 +75,46 @@ void ifile::ignoreComment() } } +void ifile::Read(double& val) { + char c; + std::string str; + bool neg; + + while(isspace(c=stream->peek())) + stream->ignore(); + neg=stream->peek() == '-'; + // Try parsing the input as a number. + if(*stream >> val) + return; + + clear(); + + switch(stream->peek()) { + case 'I': case 'i': // inf + case 'N': case 'n': // NaN + for(Int i=0; i < 3 && stream->good(); i++) + str += stream->get(); + break; + default: + stream->setstate(std::ios_base::failbit); + return; + } + + if(strcasecmp(str.c_str(),"inf") == 0) + val=std::numeric_limits < double > ::infinity(); + else if(strcasecmp(str.c_str(),"nan") == 0) + val=std::numeric_limits < double > ::quiet_NaN(); + else { + for(auto it=str.rbegin(); it != str.rend(); ++it) + stream->putback(*it); + stream->setstate(std::ios_base::failbit); + return; + } + + if(neg) + val=-val; +} + bool ifile::eol() { int c; diff --git a/graphics/asymptote/fileio.h b/graphics/asymptote/fileio.h index 6fcd379ec3..93f79a44fd 100644 --- a/graphics/asymptote/fileio.h +++ b/graphics/asymptote/fileio.h @@ -416,7 +416,7 @@ public: void Read(bool &val) {string t; readwhite(t); val=(t == "true");} void Read(Int& val) {*stream >> val;} - void Read(double& val) {*stream >> val;} + void Read(double& val); void Read(pair& val) {*stream >> val;} void Read(triple& val) {*stream >> val;} void Read(char& val) {stream->get(val);} diff --git a/graphics/asymptote/fundec.cc b/graphics/asymptote/fundec.cc index 2a91623825..ed82463c2e 100644 --- a/graphics/asymptote/fundec.cc +++ b/graphics/asymptote/fundec.cc @@ -194,7 +194,7 @@ std::pair<std::string, optional<std::string>> formal::fnInfo() const { std::string typeName(static_cast<std::string>(*base)); return start != nullptr ? - std::make_pair(typeName, boost::make_optional(static_cast<std::string>(start->getName()))) : + std::make_pair(typeName, make_optional(static_cast<std::string>(start->getName()))) : std::make_pair(typeName, nullopt); } #endif diff --git a/graphics/asymptote/glrender.cc b/graphics/asymptote/glrender.cc index 0220398138..e0194e436c 100644 --- a/graphics/asymptote/glrender.cc +++ b/graphics/asymptote/glrender.cc @@ -397,9 +397,17 @@ bool Step; #ifdef HAVE_GL +stopWatch spinTimer; + +void idleFunc(void (*f)()) +{ + spinTimer.reset(); + glutIdleFunc(f); +} + void idle() { - glutIdleFunc(NULL); + idleFunc(NULL); Xspin=Yspin=Zspin=Animate=Step=false; } #endif @@ -435,7 +443,6 @@ double T[16]; #ifdef HAVE_GL #ifdef HAVE_LIBGLUT -timeval lasttime; int oldWidth,oldHeight; bool queueScreen=false; @@ -777,7 +784,7 @@ void deleteShaders() glDeleteProgram(camp::pixelShader); } -void resizeBlendShader(uint maxsize) +void resizeBlendShader(GLuint maxsize) { gl::maxSize=ceilpow2(maxsize); gl::deleteBlendShader(); @@ -1165,11 +1172,6 @@ void togglefitscreen() fitscreen(); } -void idleFunc(void (*f)()) -{ - glutIdleFunc(f); -} - void screen() { if(glthread && !interact::interactive) @@ -1579,13 +1581,7 @@ void mouse(int button, int state, int x, int y) double spinstep() { - timeval tv; - gettimeofday(&tv,NULL); - double step=getSetting<double>("spinstep")* - (tv.tv_sec-lasttime.tv_sec+ - ((double) tv.tv_usec-lasttime.tv_usec)/1000000.0); - lasttime=tv; - return step; + return getSetting<double>("spinstep")*spinTimer.seconds(true); } void xspin() @@ -1892,14 +1888,19 @@ void init_osmesa() #endif // HAVE_LIBOSMESA } -#endif /* HAVE_GL */ - bool NVIDIA() { - char *GLSL_VERSION=(char *) glGetString(GL_SHADING_LANGUAGE_VERSION); +#ifdef GL_SHADING_LANGUAGE_VERSION + const char *GLSL_VERSION=(const char *) + glGetString(GL_SHADING_LANGUAGE_VERSION); +#else + const char *GLSL_VERSION=""; +#endif return string(GLSL_VERSION).find("NVIDIA") != string::npos; } +#endif /* HAVE_GL */ + // angle=0 means orthographic. void glrender(const string& prefix, const picture *pic, const string& format, double width, double height, double angle, double zoom, @@ -1908,7 +1909,6 @@ void glrender(const string& prefix, const picture *pic, const string& format, double *background, size_t nlightsin, triple *lights, double *diffuse, double *specular, bool view, int oldpid) { - gettimeofday(&lasttime,NULL); Iconify=getSetting<bool>("iconify"); if(zoom == 0.0) zoom=1.0; @@ -2180,7 +2180,8 @@ void glrender(const string& prefix, const picture *pic, const string& format, if(glinitialize) { glinitialize=false; - char *GLSL_VERSION=(char *) glGetString(GL_SHADING_LANGUAGE_VERSION); + const char *GLSL_VERSION=(const char *) + glGetString(GL_SHADING_LANGUAGE_VERSION); GLSLversion=(int) (100*atof(GLSL_VERSION)+0.5); if(GLSLversion < 130) { @@ -2424,19 +2425,19 @@ void refreshBuffers() glBindBufferBase(GL_SHADER_STORAGE_BUFFER,2,camp::countBuffer); if(GPUcompress) { - glBindBuffer(GL_SHADER_STORAGE_BUFFER,camp::indexBuffer); - glBufferData(GL_SHADER_STORAGE_BUFFER,gl::pixels*sizeof(GLuint), - NULL,GL_DYNAMIC_DRAW); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER,1,camp::indexBuffer); - GLuint one=1; glBindBuffer(GL_ATOMIC_COUNTER_BUFFER,camp::elementsBuffer); glBufferData(GL_ATOMIC_COUNTER_BUFFER,sizeof(GLuint),&one, GL_DYNAMIC_DRAW); glBindBufferBase(GL_ATOMIC_COUNTER_BUFFER,0,camp::elementsBuffer); - } else - glClearBufferData(GL_SHADER_STORAGE_BUFFER,GL_R8UI,GL_RED_INTEGER, - GL_UNSIGNED_BYTE,&zero); // Clear the count buffer + + glBindBuffer(GL_SHADER_STORAGE_BUFFER,camp::indexBuffer); + glBufferData(GL_SHADER_STORAGE_BUFFER,gl::pixels*sizeof(GLuint), + NULL,GL_DYNAMIC_DRAW); + glBindBufferBase(GL_SHADER_STORAGE_BUFFER,1,camp::indexBuffer); + } + glClearBufferData(GL_SHADER_STORAGE_BUFFER,GL_R32UI,GL_RED_INTEGER, + GL_UNSIGNED_INT,&zero); // Clear count or index buffer glBindBuffer(GL_SHADER_STORAGE_BUFFER,camp::opaqueBuffer); glBufferData(GL_SHADER_STORAGE_BUFFER,gl::pixels*sizeof(glm::vec4),NULL, @@ -2464,8 +2465,8 @@ void refreshBuffers() if(gl::exporting && GPUindexing && !GPUcompress) { glBindBuffer(GL_SHADER_STORAGE_BUFFER,camp::countBuffer); - glClearBufferData(GL_SHADER_STORAGE_BUFFER,GL_R8UI,GL_RED_INTEGER, - GL_UNSIGNED_BYTE,&zero); + glClearBufferData(GL_SHADER_STORAGE_BUFFER,GL_R32UI,GL_RED_INTEGER, + GL_UNSIGNED_INT,&zero); glBindBuffer(GL_SHADER_STORAGE_BUFFER,camp::feedbackBuffer); } diff --git a/graphics/asymptote/lspserv.cc b/graphics/asymptote/lspserv.cc index 42f135b35f..0707731a64 100644 --- a/graphics/asymptote/lspserv.cc +++ b/graphics/asymptote/lspserv.cc @@ -113,7 +113,7 @@ std::string wslUnix2Dos(std::string const& unixPath) TextDocumentHover::Either fromString(std::string const& str) { - auto strobj=std::make_pair(boost::make_optional(str), optional<lsMarkedString>()); + auto strobj=std::make_pair(make_optional(str), optional<lsMarkedString>()); std::vector<decltype(strobj)> vec{strobj}; return std::make_pair(vec, nullopt); } @@ -577,7 +577,7 @@ std::string wslUnix2Dos(std::string const& unixPath) posRanges.splice(posRanges.begin(), ctx->searchLitFuncPositions(std::get<0>(st.value()), pos)); } } - rsp.result.first=boost::make_optional(std::vector<lsLocation>()); + rsp.result.first=make_optional(std::vector<lsLocation>()); std::transform( posRanges.begin(), posRanges.end(), std::back_inserter(rsp.result.first.value()), [](posRangeInFile const& posRange) diff --git a/graphics/asymptote/lspserv.h b/graphics/asymptote/lspserv.h index 74a21659a3..44f6b8978e 100644 --- a/graphics/asymptote/lspserv.h +++ b/graphics/asymptote/lspserv.h @@ -66,13 +66,13 @@ namespace AsymptoteLsp template<typename TLeft, typename TRight> inline optional<std::pair<optional<TLeft>, optional<TRight>>> opt_left(TLeft const& opt) { - return boost::make_optional(std::make_pair(optional<TLeft>(opt), optional<TRight>())); + return make_optional(std::make_pair(optional<TLeft>(opt), optional<TRight>())); } template<typename TLeft, typename TRight> inline optional<std::pair<optional<TLeft>, optional<TRight>>> opt_right(TRight const& opt) { - return boost::make_optional(std::make_pair(optional<TLeft>(), optional<TRight>(opt))); + return make_optional(std::make_pair(optional<TLeft>(), optional<TRight>(opt))); } TextDocumentHover::Either fromString(std::string const &str); diff --git a/graphics/asymptote/picture.cc b/graphics/asymptote/picture.cc index 2412863f60..dea28b541b 100644 --- a/graphics/asymptote/picture.cc +++ b/graphics/asymptote/picture.cc @@ -310,7 +310,6 @@ bbox3 picture::bounds3() b3=bbox3(); matrixstack ms; - size_t i=0; for(nodelist::const_iterator p=nodes.begin(); p != nodes.end(); ++p) { assert(*p); if((*p)->begingroup3()) @@ -319,7 +318,6 @@ bbox3 picture::bounds3() ms.pop(); else (*p)->bounds(ms.T(),b3); - i++; } lastnumber3=n; @@ -657,6 +655,7 @@ int picture::epstopdf(const string& epsname, const string& pdfname) cmd.push_back("-dEncodeColorImages="+compress); cmd.push_back("-dEncodeGrayImages="+compress); cmd.push_back("-dCompatibilityLevel=1.4"); + cmd.push_back("-dTransferFunctionInfo=/Apply"); if(!getSetting<bool>("autorotate")) cmd.push_back("-dAutoRotatePages=/None"); cmd.push_back("-g"+String(max(ceil(getSetting<double>("paperwidth")),1.0)) diff --git a/graphics/asymptote/profiler.h b/graphics/asymptote/profiler.h index 046d85e403..4c69d8d7f6 100644 --- a/graphics/asymptote/profiler.h +++ b/graphics/asymptote/profiler.h @@ -13,6 +13,7 @@ #include <iostream> #include "inst.h" +#include "seconds.h" namespace vm { @@ -292,27 +293,17 @@ class profiler : public gc { analyseNode(emptynode); } - // Timing data. - struct timeval timestamp; + utils::cpuTimer timestamp; void startLap() { - gettimeofday(×tamp, 0); - } - - long long timeAndResetLap() { - struct timeval now; - gettimeofday(&now, 0); - long long nsecs = 1000000000LL * (now.tv_sec - timestamp.tv_sec) + - 1000LL * (now.tv_usec - timestamp.tv_usec); - timestamp = now; - return nsecs; + timestamp.reset(); } // Called whenever the stack is about to change, in order to record the time // duration for the current node. void recordTime() { - topnode().nsecs += timeAndResetLap(); + topnode().nsecs += (long long) timestamp.nanoseconds(true); } public: diff --git a/graphics/asymptote/psfile.cc b/graphics/asymptote/psfile.cc index 924f3c1872..21573a4ce3 100644 --- a/graphics/asymptote/psfile.cc +++ b/graphics/asymptote/psfile.cc @@ -219,7 +219,7 @@ void psfile::setcolor(const pen& p, const string& begin="", bool psfile::transparentFormat(string outputformat) { - return + return (pdftex() && outputformat == "") || outputformat == "pdf" || outputformat == "html" || outputformat == "svg" || outputformat == "png" || outputformat == "v3d"; @@ -227,21 +227,18 @@ bool psfile::transparentFormat(string outputformat) void psfile::setopacity(const pen& p) { - if(p.blend() != lastpen.blend()) { - *out << "/" << p.blend() << " .setblendmode" << newl; - } + if(transparentFormat(settings::getSetting<string>("outformat"))) { + if(p.blend() != lastpen.blend()) + *out << "/" << p.blend() << " .setblendmode" << newl; - string outputformat=settings::getSetting<string>("outformat"); - if(p.opacity() != lastpen.opacity() && - ((pdftex() && outputformat == "") || transparentFormat(outputformat))) { - *out << p.opacity() << " .setfillconstantalpha" << newl - << p.opacity() << " .setstrokeconstantalpha" << newl; - } + if(p.opacity() != lastpen.opacity()) + *out << p.opacity() << " .setfillconstantalpha" << newl + << p.opacity() << " .setstrokeconstantalpha" << newl; - lastpen.settransparency(p); + lastpen.settransparency(p); + } } - void psfile::setpen(pen p) { p.convert(); diff --git a/graphics/asymptote/revision.cc b/graphics/asymptote/revision.cc index 06f4c5f8f8..2e7ac15112 100644 --- a/graphics/asymptote/revision.cc +++ b/graphics/asymptote/revision.cc @@ -1,2 +1,2 @@ -const char *REVISION="2.85"; +const char *REVISION="2.86"; const char *AsyGLVersion="1.02"; diff --git a/graphics/asymptote/runpicture.cc b/graphics/asymptote/runpicture.cc index 70be72fd98..f68e88f652 100644 --- a/graphics/asymptote/runpicture.cc +++ b/graphics/asymptote/runpicture.cc @@ -856,7 +856,6 @@ void gen_runpicture46(stack *Stack) const string Done="Done"; const string Error="Error"; - unsigned arg=0; xmap_t xmap=processData().xmap; transform Tinv=inverse(T); @@ -937,7 +936,6 @@ void gen_runpicture46(stack *Stack) } fflush(pipeout); - ++arg; } } else { drawElement *e=t.isIdentity() ? *p : (*p)->transformed(t); @@ -961,7 +959,7 @@ void gen_runpicture46(stack *Stack) // Three-dimensional picture and surface operations // Bezier curve -#line 633 "runpicture.in" +#line 631 "runpicture.in" // void _draw(picture *f, path3 g, triple center=Zero, penarray *p, real opacity, real shininess, real metallic, real fresnel0, Int interaction=0); void gen_runpicture47(stack *Stack) { @@ -974,7 +972,7 @@ void gen_runpicture47(stack *Stack) triple center=vm::pop<triple>(Stack,Zero); path3 g=vm::pop<path3>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 636 "runpicture.in" +#line 634 "runpicture.in" size_t n=g.size(); for(unsigned int i=0; i < n; ++i) f->append(new drawPath3(g.subpath((Int) i,Int(i+1)),center,*p,opacity, @@ -983,7 +981,7 @@ void gen_runpicture47(stack *Stack) } // Bezier patch -#line 645 "runpicture.in" +#line 643 "runpicture.in" // void draw(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real metallic, real fresnel0, penarray *colors, Int interaction, Int digits, bool primitive=false); void gen_runpicture48(stack *Stack) { @@ -1000,7 +998,7 @@ void gen_runpicture48(stack *Stack) triple center=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 649 "runpicture.in" +#line 647 "runpicture.in" f->append(new drawBezierPatch(*P,center,straight,*p,opacity,shininess, metallic,fresnel0,*colors, (Interaction) intcast(interaction), @@ -1008,7 +1006,7 @@ void gen_runpicture48(stack *Stack) } // Bezier triangle -#line 657 "runpicture.in" +#line 655 "runpicture.in" // void drawbeziertriangle(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real metallic, real fresnel0, penarray *colors, Int interaction, Int digits, bool primitive=false); void gen_runpicture49(stack *Stack) { @@ -1025,7 +1023,7 @@ void gen_runpicture49(stack *Stack) triple center=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 662 "runpicture.in" +#line 660 "runpicture.in" f->append(new drawBezierTriangle(*P,center,straight,*p,opacity,shininess, metallic,fresnel0,*colors, (Interaction) intcast(interaction), @@ -1033,7 +1031,7 @@ void gen_runpicture49(stack *Stack) } // General NURBS curve -#line 670 "runpicture.in" +#line 668 "runpicture.in" // void draw(picture *f, triplearray *P, realarray *knot, realarray *weights=emptyarray, pen p); void gen_runpicture50(stack *Stack) { @@ -1042,12 +1040,12 @@ void gen_runpicture50(stack *Stack) realarray * knot=vm::pop<realarray *>(Stack); triplearray * P=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 672 "runpicture.in" +#line 670 "runpicture.in" f->append(new drawNurbsPath3(*P,knot,weights,p)); } // General NURBS surface -#line 677 "runpicture.in" +#line 675 "runpicture.in" // void draw(picture *f, triplearray2 *P, realarray *uknot, realarray *vknot, realarray2 *weights=emptyarray, penarray *p, real opacity, real shininess,real metallic, real fresnel0, penarray *colors); void gen_runpicture51(stack *Stack) { @@ -1062,13 +1060,13 @@ void gen_runpicture51(stack *Stack) realarray * uknot=vm::pop<realarray *>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 680 "runpicture.in" +#line 678 "runpicture.in" f->append(new drawNurbs(*P,uknot,vknot,weights,*p,opacity,shininess, metallic,fresnel0,*colors)); } // Sphere primitive -#line 686 "runpicture.in" +#line 684 "runpicture.in" // void drawSphere(picture *f, realarray2 *t, bool half=false, penarray *p, real opacity, real shininess, real metallic, real fresnel0, Int type); void gen_runpicture52(stack *Stack) { @@ -1081,13 +1079,13 @@ void gen_runpicture52(stack *Stack) bool half=vm::pop<bool>(Stack,false); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 689 "runpicture.in" +#line 687 "runpicture.in" f->append(new drawSphere(*t,half,*p,opacity,shininess,metallic,fresnel0, intcast(type))); } // Cylinder primitive -#line 695 "runpicture.in" +#line 693 "runpicture.in" // void drawCylinder(picture *f, realarray2 *t, penarray *p, real opacity, real shininess, real metallic, real fresnel0, bool core=false); void gen_runpicture53(stack *Stack) { @@ -1099,12 +1097,12 @@ void gen_runpicture53(stack *Stack) penarray * p=vm::pop<penarray *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 698 "runpicture.in" +#line 696 "runpicture.in" f->append(new drawCylinder(*t,*p,opacity,shininess,metallic,fresnel0,core)); } // Disk primitive -#line 703 "runpicture.in" +#line 701 "runpicture.in" // void drawDisk(picture *f, realarray2 *t, penarray *p, real opacity, real shininess, real metallic, real fresnel0); void gen_runpicture54(stack *Stack) { @@ -1115,12 +1113,12 @@ void gen_runpicture54(stack *Stack) penarray * p=vm::pop<penarray *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 705 "runpicture.in" +#line 703 "runpicture.in" f->append(new drawDisk(*t,*p,opacity,shininess,metallic,fresnel0)); } // Tube primitive -#line 710 "runpicture.in" +#line 708 "runpicture.in" // void drawTube(picture *f, triplearray *g, real width, penarray *p, real opacity, real shininess, real metallic, real fresnel0, triple min, triple max, bool core=false); void gen_runpicture55(stack *Stack) { @@ -1135,13 +1133,13 @@ void gen_runpicture55(stack *Stack) real width=vm::pop<real>(Stack); triplearray * g=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 713 "runpicture.in" +#line 711 "runpicture.in" f->append(new drawTube(*g,width,*p,opacity,shininess,metallic,fresnel0, min,max,core)); } // Draw pixel -#line 719 "runpicture.in" +#line 717 "runpicture.in" // void drawpixel(picture *f, triple v, pen p, real width=1.0); void gen_runpicture56(stack *Stack) { @@ -1149,12 +1147,12 @@ void gen_runpicture56(stack *Stack) pen p=vm::pop<pen>(Stack); triple v=vm::pop<triple>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 720 "runpicture.in" +#line 718 "runpicture.in" f->append(new drawPixel(v,p,width)); } // Draw triangles -#line 725 "runpicture.in" +#line 723 "runpicture.in" // void draw(picture *f, triplearray *v, Intarray2 *vi, triple center=Zero, triplearray *n, Intarray2 *ni, penarray *p, real opacity, real shininess, real metallic, real fresnel0, penarray *c=emptyarray, Intarray2 *ci=emptyarray, Int interaction); void gen_runpicture57(stack *Stack) { @@ -1172,64 +1170,64 @@ void gen_runpicture57(stack *Stack) Intarray2 * vi=vm::pop<Intarray2 *>(Stack); triplearray * v=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 730 "runpicture.in" +#line 728 "runpicture.in" f->append(new drawTriangles(*v,*vi,center,*n,*ni,*p,opacity,shininess, metallic,fresnel0,*c,*ci, (Interaction) intcast(interaction))); } -#line 736 "runpicture.in" +#line 734 "runpicture.in" // triple min3(picture *f); void gen_runpicture58(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 737 "runpicture.in" +#line 735 "runpicture.in" {Stack->push<triple>(f->bounds3().Min()); return;} } -#line 741 "runpicture.in" +#line 739 "runpicture.in" // triple max3(picture *f); void gen_runpicture59(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 742 "runpicture.in" +#line 740 "runpicture.in" {Stack->push<triple>(f->bounds3().Max()); return;} } -#line 746 "runpicture.in" +#line 744 "runpicture.in" // triple size3(picture *f); void gen_runpicture60(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 747 "runpicture.in" +#line 745 "runpicture.in" bbox3 b=f->bounds3(); {Stack->push<triple>(b.Max()-b.Min()); return;} } -#line 752 "runpicture.in" +#line 750 "runpicture.in" // pair minratio(picture *f); void gen_runpicture61(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 753 "runpicture.in" +#line 751 "runpicture.in" {Stack->push<pair>(f->ratio(::min)); return;} } -#line 757 "runpicture.in" +#line 755 "runpicture.in" // pair maxratio(picture *f); void gen_runpicture62(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 758 "runpicture.in" +#line 756 "runpicture.in" {Stack->push<pair>(f->ratio(::max)); return;} } -#line 762 "runpicture.in" +#line 760 "runpicture.in" // bool is3D(picture *f); void gen_runpicture63(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 763 "runpicture.in" +#line 761 "runpicture.in" {Stack->push<bool>(f->have3D()); return;} } @@ -1333,39 +1331,39 @@ void gen_runpicture_venv(venv &ve) addFunc(ve, run::gen_runpicture45, primVoid(), SYM(xmap), formal(primString(), SYM(key), false, false), formal(primTransform(), SYM(t), true, false)); #line 515 "runpicture.in" addFunc(ve, run::gen_runpicture46, primVoid(), SYM(deconstruct), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primTransform(), SYM(t), true, false)); -#line 629 "runpicture.in" +#line 627 "runpicture.in" addFunc(ve, run::gen_runpicture47, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(g), false, false), formal(primTriple(), SYM(center), true, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primInt(), SYM(interaction), true, false)); -#line 644 "runpicture.in" +#line 642 "runpicture.in" addFunc(ve, run::gen_runpicture48, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primInt(), SYM(digits), false, false), formal(primBoolean(), SYM(primitive), true, false)); -#line 656 "runpicture.in" +#line 654 "runpicture.in" addFunc(ve, run::gen_runpicture49, primVoid(), SYM(drawbeziertriangle), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primInt(), SYM(digits), false, false), formal(primBoolean(), SYM(primitive), true, false)); -#line 669 "runpicture.in" +#line 667 "runpicture.in" addFunc(ve, run::gen_runpicture50, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(p), false, false), formal(realArray(), SYM(knot), false, false), formal(realArray(), SYM(weights), true, false), formal(primPen(), SYM(p), false, false)); -#line 676 "runpicture.in" +#line 674 "runpicture.in" addFunc(ve, run::gen_runpicture51, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(realArray(), SYM(uknot), false, false), formal(realArray(), SYM(vknot), false, false), formal(realArray2(), SYM(weights), true, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(colors), false, false)); -#line 685 "runpicture.in" +#line 683 "runpicture.in" addFunc(ve, run::gen_runpicture52, primVoid(), SYM(drawSphere), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(primBoolean(), SYM(half), true, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primInt(), SYM(type), false, false)); -#line 694 "runpicture.in" +#line 692 "runpicture.in" addFunc(ve, run::gen_runpicture53, primVoid(), SYM(drawCylinder), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primBoolean(), SYM(core), true, false)); -#line 702 "runpicture.in" +#line 700 "runpicture.in" addFunc(ve, run::gen_runpicture54, primVoid(), SYM(drawDisk), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false)); -#line 709 "runpicture.in" +#line 707 "runpicture.in" addFunc(ve, run::gen_runpicture55, primVoid(), SYM(drawTube), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(g), false, false), formal(primReal(), SYM(width), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(primTriple(), SYM(min), false, false), formal(primTriple(), SYM(max), false, false), formal(primBoolean(), SYM(core), true, false)); -#line 718 "runpicture.in" +#line 716 "runpicture.in" addFunc(ve, run::gen_runpicture56, primVoid(), SYM(drawpixel), formal(primPicture(), SYM(f), false, false), formal(primTriple(), SYM(v), false, false), formal(primPen(), SYM(p), false, false), formal(primReal(), SYM(width), true, false)); -#line 724 "runpicture.in" +#line 722 "runpicture.in" addFunc(ve, run::gen_runpicture57, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(v), false, false), formal(IntArray2(), SYM(vi), false, false), formal(primTriple(), SYM(center), true, false), formal(tripleArray(), SYM(n), false, false), formal(IntArray2(), SYM(ni), false, false), formal(penArray(), SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(metallic), false, false), formal(primReal(), SYM(fresnel0), false, false), formal(penArray(), SYM(c), true, false), formal(IntArray2(), SYM(ci), true, false), formal(primInt(), SYM(interaction), false, false)); -#line 736 "runpicture.in" +#line 734 "runpicture.in" addFunc(ve, run::gen_runpicture58, primTriple(), SYM(min3), formal(primPicture(), SYM(f), false, false)); -#line 741 "runpicture.in" +#line 739 "runpicture.in" addFunc(ve, run::gen_runpicture59, primTriple(), SYM(max3), formal(primPicture(), SYM(f), false, false)); -#line 746 "runpicture.in" +#line 744 "runpicture.in" addFunc(ve, run::gen_runpicture60, primTriple(), SYM(size3), formal(primPicture(), SYM(f), false, false)); -#line 752 "runpicture.in" +#line 750 "runpicture.in" addFunc(ve, run::gen_runpicture61, primPair(), SYM(minratio), formal(primPicture(), SYM(f), false, false)); -#line 757 "runpicture.in" +#line 755 "runpicture.in" addFunc(ve, run::gen_runpicture62, primPair(), SYM(maxratio), formal(primPicture(), SYM(f), false, false)); -#line 762 "runpicture.in" +#line 760 "runpicture.in" addFunc(ve, run::gen_runpicture63, primBoolean(), SYM(is3D), formal(primPicture(), SYM(f), false, false)); } diff --git a/graphics/asymptote/runpicture.in b/graphics/asymptote/runpicture.in index 696e303ace..98d7b008d6 100644 --- a/graphics/asymptote/runpicture.in +++ b/graphics/asymptote/runpicture.in @@ -525,7 +525,6 @@ void deconstruct(picture *f, picture *preamble=NULL, transform T=identity) const string Done="Done"; const string Error="Error"; - unsigned arg=0; xmap_t xmap=processData().xmap; transform Tinv=inverse(T); @@ -606,7 +605,6 @@ void deconstruct(picture *f, picture *preamble=NULL, transform T=identity) } fflush(pipeout); - ++arg; } } else { drawElement *e=t.isIdentity() ? *p : (*p)->transformed(t); diff --git a/graphics/asymptote/runtime.cc b/graphics/asymptote/runtime.cc index 2cead744b4..50f30f6ef7 100644 --- a/graphics/asymptote/runtime.cc +++ b/graphics/asymptote/runtime.cc @@ -1525,8 +1525,8 @@ void gen_runtime115(stack *Stack) ::times(&buf); array *t=new array(5); - (*t)[0]=cpuTime.seconds(); - (*t)[1]=((real) buf.tms_stime)*ticktime; + (*t)[0]=cpuTime.seconds(); // Includes system time + (*t)[1]=0.0; (*t)[2]=((real) buf.tms_cutime)*ticktime; (*t)[3]=((real) buf.tms_cstime)*ticktime; (*t)[4]=wallClock.seconds(); diff --git a/graphics/asymptote/runtime.in b/graphics/asymptote/runtime.in index 986259c10b..ea2291ec44 100644 --- a/graphics/asymptote/runtime.in +++ b/graphics/asymptote/runtime.in @@ -1044,8 +1044,8 @@ realarray *_cputime() ::times(&buf); array *t=new array(5); - (*t)[0]=cpuTime.seconds(); - (*t)[1]=((real) buf.tms_stime)*ticktime; + (*t)[0]=cpuTime.seconds(); // Includes system time + (*t)[1]=0.0; (*t)[2]=((real) buf.tms_cutime)*ticktime; (*t)[3]=((real) buf.tms_cstime)*ticktime; (*t)[4]=wallClock.seconds(); diff --git a/graphics/asymptote/seconds.h b/graphics/asymptote/seconds.h index 6b72f997b0..b42e692169 100644 --- a/graphics/asymptote/seconds.h +++ b/graphics/asymptote/seconds.h @@ -2,6 +2,7 @@ #define __seconds_h__ 1 #include <chrono> +#include <sys/resource.h> namespace utils { @@ -18,28 +19,25 @@ inline double cpuTime() { #include <unistd.h> #include <time.h> -#ifdef HAVE_PTHREAD -#include <pthread.h> -#endif - inline double cpuTime() { - timespec t; - clockid_t cid; - #ifdef CLOCK_THREAD_CPUTIME_ID - cid=CLOCK_THREAD_CPUTIME_ID; -#else - #ifdef HAVE_PTHREAD - pthread_getcpuclockid(pthread_self(),&cid); - #elif CLOCK_PROCESS_CPUTIME_ID - cid=CLOCK_PROCESS_CPUTIME_ID; - #else - cid=CLOCK_REALTIME; - #endif +#define GETTIME_ID CLOCK_THREAD_CPUTIME_ID +#elif defined(CLOCK_PROCESS_CPUTIME_ID) +#define GETTIME_ID CLOCK_PROCESS_CPUTIME_ID #endif - clock_gettime(cid,&t); +#ifdef GETTIME_ID + timespec t; + clock_gettime(GETTIME_ID,&t); return 1.0e9*t.tv_sec+t.tv_nsec; +#undef GETTIME_ID +#else + struct rusage ru; + if(getrusage(RUSAGE_SELF, &ru)) + return 0; + return 1.0e9*(ru.ru_utime.tv_sec+ru.ru_stime.tv_sec) + +1.0e3*(ru.ru_utime.tv_usec+ru.ru_stime.tv_usec); +#endif } #endif @@ -59,7 +57,8 @@ public: auto Stop=std::chrono::steady_clock::now(); double ns=std::chrono::duration_cast<std::chrono::nanoseconds> (Stop-Start).count(); - if(reset) Start=Stop; + if(reset) + Start=Stop; return ns; } @@ -82,17 +81,20 @@ public: reset(); } - double nanoseconds() { + double nanoseconds(bool reset=false) { auto Stop=std::chrono::steady_clock::now(); double stop=cpuTime(); - - return - std::min((double) std::chrono::duration_cast<std::chrono::nanoseconds> - (Stop-Start).count(),stop-start); + double ns=std::min((double) std::chrono::duration_cast<std::chrono::nanoseconds> + (Stop-Start).count(),stop-start); + if(reset) { + Start=Stop; + start=stop; + } + return ns; } - double seconds() { - return 1.0e-9*nanoseconds(); + double seconds(bool reset=false) { + return 1.0e-9*nanoseconds(reset); } }; diff --git a/graphics/asymptote/settings.cc b/graphics/asymptote/settings.cc index ecf67ce848..aab7dc042c 100644 --- a/graphics/asymptote/settings.cc +++ b/graphics/asymptote/settings.cc @@ -1407,10 +1407,13 @@ void initSettings() { "Input code over multiple lines at the prompt")); addOption(new boolSetting("xasy", 0, "Interactive mode for xasy")); +#ifdef HAVE_LSP addOption(new boolSetting("lsp", 0, "Interactive mode for the Language Server Protocol")); - addOption(new boolSetting("wsl", 0, "Run asy under the Windows Subsystem for Linux.")); addOption(new envSetting("lspport", "")); addOption(new envSetting("lsphost", "127.0.0.1")); +#endif + + addOption(new boolSetting("wsl", 0, "Run asy under the Windows Subsystem for Linux")); addOption(new boolSetting("wait", 0, "Wait for child processes to finish before exiting")); diff --git a/graphics/asymptote/symbolmaps.cc b/graphics/asymptote/symbolmaps.cc index 27c073e70b..aabc8fc2b9 100644 --- a/graphics/asymptote/symbolmaps.cc +++ b/graphics/asymptote/symbolmaps.cc @@ -70,7 +70,7 @@ namespace AsymptoteLsp if (posMatches and !isOperator) { posInFile endPos(pos.first, endCharacter + 1); - return boost::make_optional(std::make_tuple(syLit, pos, endPos)); + return make_optional(std::make_tuple(syLit, pos, endPos)); } } return nullopt; diff --git a/graphics/asymptote/symbolmaps.h b/graphics/asymptote/symbolmaps.h index d78e4b1563..c2388e1256 100644 --- a/graphics/asymptote/symbolmaps.h +++ b/graphics/asymptote/symbolmaps.h @@ -11,10 +11,6 @@ #include "LibLsp/lsp/lsPosition.h" #include "LibLsp/lsp/textDocument/documentColor.h" -#ifndef boost -#define nullopt boost::none -#endif - namespace AsymptoteLsp { struct SymbolLit diff --git a/graphics/asymptote/tests/Makefile b/graphics/asymptote/tests/Makefile index 659737bfd4..89499df494 100644 --- a/graphics/asymptote/tests/Makefile +++ b/graphics/asymptote/tests/Makefile @@ -1,6 +1,6 @@ .NOTPARALLEL: -TESTDIRS = string arith frames types imp array pic gs +TESTDIRS = string arith frames types imp array pic gs io EXTRADIRS = gsl output diff --git a/graphics/asymptote/tests/io/csv.asy b/graphics/asymptote/tests/io/csv.asy new file mode 100644 index 0000000000..d0ef00b21f --- /dev/null +++ b/graphics/asymptote/tests/io/csv.asy @@ -0,0 +1,18 @@ +import TestLib; + +StartTest("csv"); +{ + real[] a=input("io/input_with_nan.csv").csv(); + assert(a.length == 20); + for (int i=0; i<4; ++i) + assert(a[i] == i); + for (int i=4; i<8; ++i) + assert(isnan(a[i])); + for (int i=8; i<12; ++i) + assert(isnan(a[i])); + for (int i=12; i<16; ++i) + assert(a[i] == inf); + for (int i=16; i<20; ++i) + assert(a[i] == -inf); +} +EndTest(); diff --git a/graphics/asymptote/tests/io/input_with_nan.csv b/graphics/asymptote/tests/io/input_with_nan.csv new file mode 100644 index 0000000000..c431fe2a0a --- /dev/null +++ b/graphics/asymptote/tests/io/input_with_nan.csv @@ -0,0 +1,5 @@ + 0, 1, 2, 3 + NaN, NAN, nan, nAn +-NaN,-NAN,-nan,-nAn + InF, INF, inf, iNf +-InF,-INF,-inf,-iNf diff --git a/graphics/asymptote/v3dheadertypes.h b/graphics/asymptote/v3dheadertypes.h index 7332e479bf..c2504a0bee 100644 --- a/graphics/asymptote/v3dheadertypes.h +++ b/graphics/asymptote/v3dheadertypes.h @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2023-02-09 04:54:00 +// Generated at 2023-06-07 02:00:10 namespace camp { diff --git a/graphics/asymptote/v3dheadertypes.py b/graphics/asymptote/v3dheadertypes.py index 2fd900ac5b..0c95089bef 100644 --- a/graphics/asymptote/v3dheadertypes.py +++ b/graphics/asymptote/v3dheadertypes.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Enum class for v3dheadertypes """ AUTO-GENERATED from v3dheadertypes.csv """ -# Generated at 2023-02-09 04:54:07 +# Generated at 2023-06-07 02:00:19 class v3dheadertypes: v3dheadertypes_canvasWidth=1 diff --git a/graphics/asymptote/v3dtypes.h b/graphics/asymptote/v3dtypes.h index 60c00d7986..e4958bc46d 100644 --- a/graphics/asymptote/v3dtypes.h +++ b/graphics/asymptote/v3dtypes.h @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2023-02-09 04:54:00 +// Generated at 2023-06-07 02:00:10 namespace camp { diff --git a/graphics/asymptote/v3dtypes.py b/graphics/asymptote/v3dtypes.py index ea70bf5ea9..4c00ea4c40 100644 --- a/graphics/asymptote/v3dtypes.py +++ b/graphics/asymptote/v3dtypes.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Enum class for v3dtypes """ AUTO-GENERATED from v3dtypes.csv """ -# Generated at 2023-02-09 04:54:07 +# Generated at 2023-06-07 02:00:19 class v3dtypes: v3dtypes_material=1 diff --git a/graphics/pgf/contrib/tikz-nfold/README.md b/graphics/pgf/contrib/tikz-nfold/README.md index 6cfba546a4..c146668713 100644 --- a/graphics/pgf/contrib/tikz-nfold/README.md +++ b/graphics/pgf/contrib/tikz-nfold/README.md @@ -1,5 +1,5 @@ # tikz-nfold -## Version 0.1.2 +## Version 0.1.3 This library adds higher-order paths to [TikZ](https://ctan.org/pkg/pgf) and also fixes some graphical issues with TikZ' `double` paths, used e.g. in wide arrows. It is also compatible with [tikz-cd](https://ctan.org/pkg/tikz-cd), adding support for triple and higher arrows. See the [documentation](tikz-nfold-doc.pdf) for full details. diff --git a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf Binary files differindex 9a26adfd67..9df9c937ac 100644 --- a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf +++ b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.pdf diff --git a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex index 60b1d03202..46132fb7f5 100644 --- a/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex +++ b/graphics/pgf/contrib/tikz-nfold/tikz-nfold-doc.tex @@ -329,6 +329,8 @@ Here we see how the commands can be used to customise $n$-fold paths: \section{Version history} \begin{itemize} + \item \textbf{v0.1.3}: Bug fixes + \item \textbf{v0.1.2}: Bug fixes \item \textbf{v0.1.1}: Closing paths and structural changes \begin{itemize} \item Support for closed paths (\texttt{cycle} and \verb|\pgfpathclose|) diff --git a/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex b/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex index da48d7b62b..342191b0ad 100644 --- a/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex +++ b/graphics/pgf/contrib/tikz-nfold/tikzlibrarynfold.code.tex @@ -276,30 +276,41 @@ \newif\ifpgf@nfold@angletoosharp % This stores whether we need the intersections library for an arrow tip but it is not loaded \newif\ifpgf@nfold@intersectionsnotloaded +% This stores whether the currently processed connected sub-path is the final one on this path +\newif\ifpgf@nfold@lastconnsubpath \def\pgf@nfold@parser@handlesegment{% - \if\pgf@nfold@cur@visible 0 + \if\pgf@nfold@cur@visible0 % first, last and moveto are invisible \if\pgf@nfold@cur@type m - % We don't need to do anything for a moveto: If a visible segment follows, it will move to - % its starting location by itself. However, we might need to draw the arrow tip extension + % We don't need to do anything for a moveto; if a visible segment follows, it will move to + % its starting location by itself. However, we might need to draw the arrow tip extension % at the start (if present). + % Draw a tip extension only if all of the following conditions are met: + % 1. There is an Implies tip at the start of this path + % 2. We are currently on the last connected sub-path of this path + % 3. The next segment is visible + % 4. This moveto is the first segment on this path \if\pgf@nfold@start@arrowcode1 - \if\pgf@nfold@prev@type f - \if\pgf@nfold@next@visible1 - \edef\pgf@nfold@macrotoadd{% - \noexpand\pgf@nfold@extendtotip{s}{\pgf@nfold@cur@last}{\pgf@nfold@next@angle@i} - }% - \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg% - % hack: We make the next segment believe that this segment was a lineto - % so the path does not get interrupted - \let\pgf@nfold@cur@type l - \let\pgf@nfold@cur@visible 1 - \let\pgf@nfold@cur@angle@ii\pgf@nfold@next@angle@i - \let\pgf@nfold@cur@tang@ii\pgf@nfold@next@tang@i - \fi - \fi% + \ifpgf@nfold@lastconnsubpath + \if\pgf@nfold@prev@type f + \if\pgf@nfold@next@visible1 + \edef\pgf@nfold@macrotoadd{% + \noexpand\pgf@nfold@extendtotip{s}{\pgf@nfold@cur@last}{\pgf@nfold@next@angle@i} + }% + \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg% + % hack: We make the next segment believe that this segment was a lineto + % so the path does not get interrupted + \let\pgf@nfold@cur@type l + \let\pgf@nfold@cur@visible1 + \let\pgf@nfold@cur@angle@ii\pgf@nfold@next@angle@i + \let\pgf@nfold@cur@tang@ii\pgf@nfold@next@tang@i + \def\pgf@nfold@deltaphi@end{0} + \pgf@nfold@angletoosharpfalse + \fi + \fi% + \fi \fi \fi% \else% @@ -311,25 +322,20 @@ \def\pgf@nfold@shortenstartjoin{0} \def\pgf@nfold@shortenendjoin{0} \pgf@nfold@closejoinsedgecasefalse - \pgf@nfold@angletoosharpfalse % Step 1.1: Make room for the join at the start if needed - \if\pgf@nfold@prev@visible1 + \if\pgf@nfold@prev@visible0 + \pgf@nfold@continuesegmentfalse + \else \pgf@nfold@continuesegmenttrue - % TODO can we just use deltaphi@end from the previous round? - % Compute the angle difference at the start (between -180 and +180 degrees) - % using \pgfmathsubtract@ is more readable and no less efficient than computing this manually - \pgfmathsubtract@{\pgf@nfold@cur@angle@i}{\pgf@nfold@prev@angle@ii} - \pgf@nfold@clampangle - \edef\pgf@nfold@deltaphi@start{\pgfmathresult} + % deltaphi@start can be recycled from deltaphi@end; + % \ifpgf@nfold@angletoosharp is also still set + \let\pgf@nfold@deltaphi@start\pgf@nfold@deltaphi@end + % set \pgf@xb := abs(deltaphi@start) \pgf@xb=\pgf@nfold@deltaphi@start pt\relax \ifdim\pgf@xb<0pt\relax \pgf@xb=-\pgf@xb \fi - \ifdim\pgf@xb>178pt\relax - % we go full backwards, don't relocate the start and disable the join to avoid division by zero - % don't need an error message here, it has already been displayed in the previous segment - \pgf@nfold@angletoosharptrue - \else + \ifpgf@nfold@angletoosharp\else \ifdim\pgf@xb>0.5pt\relax % make room for the start join if the angle is nonzero; % shortenstartjoin := hwidth*tan(.5*abs(deltaphi@start)) @@ -352,8 +358,7 @@ \pgfmathveclen@{\pgfmathresult}{\pgf@sys@tonumber\pgf@yb} \pgfextract@process\pgf@nfold@cur@supporta{\pgfpointadd% {\pgf@nfold@cur@first}% - % TODO migrate to tangent - {\pgfqpointpolar{\pgf@nfold@cur@angle@i}{\pgfmathresult pt}}}% + {\pgfqpointscale{\pgfmathresult}{\pgf@nfold@cur@tang@i}}}% \else % special treatment for singular curves (supporta = first) to avoid rounding error glitches. % In this special case, a slight corner at the end of the join is unavoidable unless we @@ -363,15 +368,15 @@ \fi \fi \fi - \else - \pgf@nfold@continuesegmentfalse \fi % Step 1.2: Make room for the join at the end if needed \if\pgf@nfold@next@visible1 - % Compute the angle difference at the start (between -180 and +180 degrees) + % Compute the angle difference at the end (between -180 and +180 degrees) % using \pgfmathsubtract@ is more readable and no less efficient than computing this manually \pgfmathsubtract@{\pgf@nfold@next@angle@i}{\pgf@nfold@cur@angle@ii} \pgf@nfold@clampangle + % Edge case handling: If the next segment is a closepath and has length zero, deltaphi is set + % to zero to prevent glitches (a zero length segment has no well-defined angle anyway) \edef\pgf@nfold@deltaphi@end{\pgfmathresult} \pgf@xb=\pgf@nfold@deltaphi@end pt\relax \ifdim\pgf@xb<0pt\relax @@ -381,6 +386,7 @@ \pgfutil@packagewarning{tikz-nfold}{Angle too sharp, expect visual errors} \pgf@nfold@angletoosharptrue \else + \pgf@nfold@angletoosharpfalse \ifdim\pgf@xb>0.5pt\relax % make room for the start join if the angle is nonzero % shortenendjoin := hwidth*tan(.5*abs(deltaphi@end)) @@ -403,11 +409,10 @@ \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y} \ifdim\pgfmathresult pt>0.1pt\relax \pgfmathveclen@{\pgfmathresult}{\pgf@sys@tonumber\pgf@yb} - % can use qpoint and minus because \pgfmathresult is guaranteed to be positive \pgfextract@process\pgf@nfold@cur@supportb{\pgfpointadd% {\pgf@nfold@cur@last}% - % TODO migrate to tangent - {\pgfqpointpolar{\pgf@nfold@cur@angle@ii}{-\pgfmathresult pt}}}% + % can use qpointscale and a minus because \pgfmathresult is guaranteed to be positive + {\pgfqpointscale{-\pgfmathresult}{\pgf@nfold@cur@tang@ii}}}% \else \let\pgf@nfold@cur@supportb\pgf@nfold@cur@movedlast \fi @@ -416,7 +421,7 @@ \fi % Step 1.3: Detect an edge case % This edge case appears whenever the current segment is such a short line that we would - % have to reduce its length to less than zero to make space for the joins. In such cases, + % have to reduce its length to less than zero to make room for the joins. In such cases, % the line is not drawn at all, and slight modifications must be made to the joins to ensure % a correct output (i.e. one join is immediately followed by the next without a segment in between). % @@ -441,7 +446,7 @@ % If the previous segment is a moveto and the current segment is a "close joins" edge case, % nothing needs to be drawn here (the relevant draw call will be made at the join of the subsequent % segment). We must therefore make sure that we move to the correct end point of this segment. - % Counterintuitively, this is given by the offset of \pgf@nfold@cur@movedfirst since the start and end + % Counterintuitively, this is given by the offset of \pgf@nfold@cur@movedFIRST since the start and end % are reversed in the edge case. \edef\pgf@nfold@macrotoadd{% \noexpand\pgf@nfold@token@edgecase@movetostart{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@angle@i}% @@ -451,18 +456,27 @@ \else % If we draw the join when the start angle is close to 180 degrees, we get a division by zero \ifpgf@nfold@angletoosharp\else - \pgf@nfold@parser@handlejoin + \if\pgf@nfold@cur@type z\else + \pgf@nfold@parser@handlejoin + \fi \fi \fi - % Step 2.2: Store where the current (non-offset) end point was relocated + % Step 2.2: Store information that may be needed later + % Step 2.2.1: Store where the current (non-offset) end point was relocated % in order to make space for the end join. This may be used if the next % segment begins with a join \let\pgf@nfold@prev@segment@end\pgf@nfold@cur@movedlast + % Step 2.2.2: Store the tangent of the first proper segment of closed path. + % This is needed in case the \pgfpathclose-segment has length zero, + % since in that case its tangent cannot be computed. + \if\pgf@nfold@cur@type i + \let\pgf@nfold@connsubpath@tang@i\pgf@nfold@next@tang@i% + \let\pgf@nfold@connsubpath@angle@i\pgf@nfold@next@angle@i% + \fi % % Step 3: Draw the new segment. % % The value of \ifpgf@nfold@continuesegment decides whether we start with a moveto. - % curveto \if\pgf@nfold@cur@type l % In the edge case, one join is followed immediately by the next. The line segment % thus has a negative length and will be skipped. @@ -481,6 +495,11 @@ \def\pgf@nfold@macrotoadd{\pgf@nfold@token@closepath}% \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg% \fi + \if\pgf@nfold@cur@type z + % zero and non-zero closepath's differ in the join handling, but are identical in rendering + \def\pgf@nfold@macrotoadd{\pgf@nfold@token@closepath}% + \pgf@nfold@addmacro\pgf@parsed@cur@conn@seg% + \fi \if\pgf@nfold@cur@type c \ifpgf@nfold@continuesegment \pgf@subdividecurve{\pgf@nfold@cur@movedfirst}{\pgf@nfold@cur@supporta}{\pgf@nfold@cur@supportb}{\pgf@nfold@cur@movedlast}{\pgf@offset@max@recursion}{0}{\pgf@nfold@addcurvesegment@callback@continue} @@ -779,55 +798,59 @@ % % In order to correctly implement \pgfpathclose we already need to know about % the \pgfpathclose (and the penultimate point) at the beginning of this -% connected segment as these data affect the first/last join. -% We therefore parse one connected segment of the softpath and store it in a modified -% form in \pgf@cur@conn@segment. When reaching the end of the connected segment we call -% the proper parser to turn \pgf@cur@conn@segment into a parsed path. We do this for -% all connected segments and concatenate all the parsed paths. +% connected sub-path as these data affect the first/last join. +% We therefore parse one connected sub-path of the softpath and store it in a modified +% form in \pgf@cur@conn@subpath. When reaching the end of the connected sub-path we call +% the proper parser to turn \pgf@cur@conn@subpath into a parsed path. We do this for +% all connected sub-paths and concatenate all the parsed paths. % \def\pgf@nfold@parsesoftpath#1#2{% - \let\pgf@cur@conn@segment\pgfutil@empty% - \let\pgf@all@parsed@segments\pgfutil@empty% + \let\pgf@cur@conn@subpath\pgfutil@empty% + \let\pgf@all@parsed@subpaths\pgfutil@empty% \edef\pgf@nfold@parser@last@moveto{{\the\pgf@path@lastx}{\the\pgf@path@lasty}}% \let\pgf@nfold@last@closepath@from\pgfutil@empty% \pgf@nfold@parse@setupfirst% \expandafter\pgf@nfold@@parsesoftpath#1\pgf@stop{}{}% - \let#2\pgf@all@parsed@segments% + \let#2\pgf@all@parsed@subpaths% }% \def\pgf@nfold@@parsesoftpath#1#2#3{% \let\pgf@next\pgf@nfold@@parsesoftpath% \ifx#1\pgf@stop% \def\pgf@nfold@macrotoadd{\pgf@nfold@parselast}% - \pgf@nfold@addmacro\pgf@cur@conn@segment% - \pgf@nfold@process@conn@segment% + \pgf@nfold@addmacro\pgf@cur@conn@subpath% + \pgf@nfold@lastconnsubpathtrue% + \pgf@nfold@process@conn@subpath% \let\pgf@next\relax% \else% \ifx#1\pgfsyssoftpath@movetotoken% - \ifx\pgf@cur@conn@segment\pgfutil@empty% + \ifx\pgf@cur@conn@subpath\pgfutil@empty% % This case happens for the very first segment or for double movetos. % We need special treatment here, as otherwise the arrow tip extension % does not work correctly. The \pgf@nfold@parsemoveto will be called - % in \pgf@nfold@process@conn@segment. + % in \pgf@nfold@process@conn@subpath. \def\pgf@nfold@parser@last@moveto{{#2}{#3}}% - % Make sure \pgf@cur@conn@segment is no longer empty so double movetos are not + % Make sure \pgf@cur@conn@subpath is no longer empty so double movetos are not % treated the same as single movetos. This is also relevant to arrow tip extensions - \def\pgf@cur@conn@segment{\relax}% + \def\pgf@cur@conn@subpath{\relax}% \else% \def\pgf@nfold@macrotoadd{\pgf@nfold@parsemoveto{#2}{#3}}% - \pgf@nfold@addmacro\pgf@cur@conn@segment% - % A moveto marks the beginning/end of one connected segment - \pgf@nfold@process@conn@segment% + \pgf@nfold@addmacro\pgf@cur@conn@subpath% + \pgf@nfold@lastconnsubpathfalse% + % A moveto marks the beginning/end of one connected sub-path + \pgf@nfold@process@conn@subpath% \let\pgf@nfold@last@closepath@from\pgfutil@empty% - \let\pgf@cur@conn@segment\pgfutil@empty% + \let\pgf@cur@conn@subpath\pgfutil@empty% + % set up "first" again which may be needed for the arrow tip extension + \pgf@nfold@parse@setupfirst% \def\pgf@nfold@parser@last@moveto{{#2}{#3}}% \fi \else% \ifx#1\pgfsyssoftpath@linetotoken% \def\pgf@nfold@macrotoadd{\pgf@nfold@parselineto{#2}{#3}}% - \pgf@nfold@addmacro\pgf@cur@conn@segment% + \pgf@nfold@addmacro\pgf@cur@conn@subpath% \else% \ifx#1\pgfsyssoftpath@curvetosupportatoken% \def\pgf@nfold@parse@supporta{{#2}{#3}}% @@ -837,19 +860,19 @@ \else% \ifx#1\pgfsyssoftpath@curvetotoken% \edef\pgf@nfold@macrotoadd{\noexpand\pgf@nfold@parsecurveto\pgf@nfold@parse@supporta\pgf@nfold@parse@supportb{#2}{#3}}% - \pgf@nfold@addmacro\pgf@cur@conn@segment% + \pgf@nfold@addmacro\pgf@cur@conn@subpath% \else% \ifx#1\pgfsyssoftpath@closepathtoken% \let\pgf@nfold@last@closepath@from\pgf@nfold@parser@previous@pt% \def\pgf@nfold@macrotoadd{\pgf@nfold@parseclosepath{#2}{#3}}% - \pgf@nfold@addmacro\pgf@cur@conn@segment% + \pgf@nfold@addmacro\pgf@cur@conn@subpath% \else% \ifx#1\pgfsyssoftpath@rectcornertoken% \def\pgf@nfold@parse@rectcorner{{#2}{#3}}% \else% \ifx#1\pgfsyssoftpath@rectsizetoken% \edef\pgf@nfold@macrotoadd{\noexpand\pgf@nfold@parserect\pgf@nfold@parse@rectcorner{#2}{#3}}% - \pgf@nfold@addmacro\pgf@cur@conn@segment% + \pgf@nfold@addmacro\pgf@cur@conn@subpath% \else% \pgfutil@packageerror{tikz-nfold}{Unrecognised soft path token `#1'}{}% \fi% @@ -862,27 +885,30 @@ \fi% \fi% \def\pgf@nfold@parser@previous@pt{{#2}{#3}}% + % store the last two segments, as they might be needed for zero-length \pgfpathclose-segments + \let\pgf@nfold@sectolast@segment\pgf@nfold@last@segment% + \let\pgf@nfold@last@segment\pgf@nfold@macrotoadd% \pgf@next}% -\def\pgf@nfold@process@conn@segment{% +\def\pgf@nfold@process@conn@subpath{% \let\pgf@parsed@cur@conn@seg\pgfutil@empty% \ifx\pgf@nfold@last@closepath@from\pgfutil@empty% \expandafter\pgf@nfold@parsemoveto\pgf@nfold@parser@last@moveto% \else% - % This connected segment ends on a closepath. In order to get - % the join right, we prepend the current segment with an invisible line - % identical to the line of the \pgfpathclose. This way, + % This connected sub-path ends on a closepath. In order to get + % the join right, we prepend the current sub-path with an invisible line + % identical to the line of the \pgfpathclose. \expandafter\pgf@nfold@parsemoveto\pgf@nfold@last@closepath@from% \expandafter\pgf@nfold@parseinvisibleline\pgf@nfold@parser@last@moveto% \fi% - \pgf@cur@conn@segment% + \pgf@cur@conn@subpath% \let\pgf@nfold@macrotoadd\pgf@parsed@cur@conn@seg% - \pgf@nfold@addmacro\pgf@all@parsed@segments% + \pgf@nfold@addmacro\pgf@all@parsed@subpaths% } % % Values for \pgf@nfold@next@type: -% f=first, m=moveto, c=curveto, l=lineto, r=rect, o=closepath, t=last, i=invisibleline +% f=first, m=moveto, c=curveto, l=lineto, r=rect, o=closepath, z=zero length closepath, t=last, i=invisibleline % \def\pgf@nfold@parsemoveto#1#2{% @@ -939,15 +965,57 @@ \def\pgf@nfold@parseclosepath#1#2{% \pgf@process{\pgfpointdiff{\pgf@nfold@next@last}{\pgf@x#1\pgf@y#2}}% % closepath segments should always be processed even if they have zero length - \pgf@nfold@parse@line@common{#1}{#2}{o}% + \pgfpointtaxicabnorm\pgf@xa% + \ifdim\pgf@xa<0.1pt\relax% + \pgf@nfold@parse@closepath@zerolength{#1}{#2}% + \else% + \pgf@nfold@parse@line@common{#1}{#2}{o}% + \fi% }% +\def\pgf@nfold@parse@closepath@zerolength#1#2{% + \pgf@nfold@parser@moveup% + \let\pgf@nfold@next@type=z% + \let\pgf@nfold@next@visible=1% + % Set the start and end tangent to the tangent of the first segment + \let\pgf@nfold@next@tang@i\pgf@nfold@connsubpath@tang@i + \let\pgf@nfold@next@tang@ii\pgf@nfold@connsubpath@tang@i + \let\pgf@nfold@next@angle@i\pgf@nfold@connsubpath@angle@i + \let\pgf@nfold@next@angle@ii\pgf@nfold@connsubpath@angle@i + \let\pgf@nfold@next@first\pgf@nfold@cur@last + % If problems arise, we need to put a fake point here (like \pgf@nfold@next@first + \pgf@nfold@next@tang@i) + \def\pgf@nfold@next@last{\pgf@x#1\pgf@y#2}% + \pgf@nfold@parser@handlesegment% +} + \def\pgf@nfold@parseinvisibleline#1#2{% \pgf@process{\pgfpointdiff{\pgf@nfold@next@last}{\pgf@x#1\pgf@y#2}}% - % invisibleline segments should always be processed even if they have zero length. + \pgfpointtaxicabnorm\pgf@xa% + % In order to correctly render the start/end join in a closed path, + % the \pgfpathclose segment is copied to the start of the path as an invisible line. % Counterintuitively, an "invisibleline" segment has next@visible=1 because % we want its end join to be rendered. - \pgf@nfold@parse@line@common{#1}{#2}{i}% + % In case the \pgfpathclose segment has non-zero length, we can just use a copy of + % this segment for the invisible line. Otherwise, the invisble line segment must will receive + % the same angle/tangent as the last finite-sized segment, which is the second-to-last + % segment overall (cached in \pgf@nfold@sectolast@segment). + \ifdim\pgf@xa>.1pt\relax% + \pgf@nfold@parse@line@common{#1}{#2}{i}% + \else% + \begingroup% + % find the tangent of the second-to-last segment + \let\pgf@nfold@parser@handlesegment\relax% + \pgf@nfold@sectolast@segment% + \global\let\pgf@nfold@tmp\pgf@nfold@next@tang@ii% + \endgroup% + % Construct an invisible line with length 1pt and the correct tangent. + % This step might not be needed since the join computations only require the tangent, + % but the invisibleline segment would be inconsistent otherwise, so better play it safe. + \pgfextract@process\pgf@nfold@next@first{\pgfpointdiff{\pgf@nfold@tmp}{\pgfqpoint{#1}{#2}}}% + % write the tangent into (\pgf@x, \pgf@y) where the next macro expects it to be + \pgf@nfold@tmp% + \pgf@nfold@parse@line@common{#1}{#2}{i}% + \fi% }% \def\pgf@nfold@parselast{% @@ -1047,14 +1115,17 @@ \let\pgf@nfold@next@visible=0% \edef\pgf@nfold@next@last{\pgf@x\the\pgf@path@lastx\pgf@y\the\pgf@path@lasty}% % the following only need to be set if visible=1 - \let\pgf@nfold@next@tang@i=\pgfpointorigin% - \let\pgf@nfold@next@tang@ii=\pgfpointorigin% - \def\pgf@nfold@next@angle@i{0}% - \def\pgf@nfold@next@angle@ii{0}% - \let\pgf@nfold@next@first\pgfpointorigin% + % TODO these are disabled temporarily; an attempt to read them suggests that there + % is a bug, because their content has no meaning at this point. Consider reenabling + % if compile errors show up, but if they do, the root of the problem is likely to be elsewhere + %\let\pgf@nfold@next@tang@i=\pgfpointorigin% + %\let\pgf@nfold@next@tang@ii=\pgfpointorigin% + % \def\pgf@nfold@next@angle@i{0}% + % \def\pgf@nfold@next@angle@ii{0}% + % \let\pgf@nfold@next@first\pgfpointorigin% % the following only need to be set if type=c - \let\pgf@nfold@next@supporta\pgfpointorigin% - \let\pgf@nfold@next@supportb\pgfpointorigin% + % \let\pgf@nfold@next@supporta\pgfpointorigin% + % \let\pgf@nfold@next@supportb\pgfpointorigin% } \def\pgf@nfold@clampangle{ |