From 58c8d0c9e2693ceb5547443af373f333d35a078b Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Sat, 10 Aug 2024 09:35:37 +0000 Subject: [PATCH] Merge branch 'find-or-deep-nest' 9b58c7e321031374ecbfc11e69e1509e439fc570 --- .nojekyll | 0 404.html | 2 + ...524833c97fb5f99b141976bcb8a47d539be9c0.css | 1 + categories/index.html | 9 + categories/index.xml | 1 + categories/page/1/index.html | 2 + docs/changelog/index.html | 137 ++ docs/changelog/index.xml | 1 + docs/features/configure_types/index.html | 142 ++ docs/features/error_message/index.html | 113 ++ docs/features/extension/index.html | 69 + docs/features/index.html | 24 + docs/features/index.xml | 20 + docs/features/literal/index.html | 75 + docs/features/parsing_files/index.html | 136 ++ docs/features/serialize/index.html | 104 + docs/features/toml_spec/index.html | 61 + docs/features/value/index.html | 375 ++++ docs/index.html | 9 + docs/index.xml | 1 + docs/installation/index.html | 49 + docs/installation/index.xml | 1 + docs/reference/color/index.html | 92 + docs/reference/comments/index.html | 309 +++ docs/reference/conversion/index.html | 26 + docs/reference/datetime/index.html | 366 ++++ docs/reference/error_info/index.html | 75 + docs/reference/exception/index.html | 29 + docs/reference/find/index.html | 114 ++ docs/reference/format/index.html | 228 +++ docs/reference/from/index.html | 48 + docs/reference/get/index.html | 122 ++ docs/reference/index.html | 47 + docs/reference/index.xml | 61 + docs/reference/into/index.html | 50 + docs/reference/literal/index.html | 46 + docs/reference/ordered_map/index.html | 139 ++ docs/reference/parser/index.html | 179 ++ docs/reference/result/index.html | 272 +++ docs/reference/serializer/index.html | 44 + docs/reference/source_location/index.html | 112 ++ docs/reference/spec/index.html | 125 ++ docs/reference/toml/index.html | 15 + docs/reference/toml_fwd/index.html | 14 + docs/reference/types/index.html | 101 + docs/reference/value/index.html | 400 ++++ docs/reference/value_t/index.html | 38 + docs/reference/version/index.html | 30 + docs/reference/visit/index.html | 54 + ...1e46380fc2271ac8f3ba035ac66f01dee7956.json | 1 + ...f9e2cfd6aa651e1c426a7cf5a081f0dafb020fe.js | 1 + en/index.html | 2 + en/sitemap.xml | 1 + favicon.png | Bin 0 -> 109 bytes favicon.svg | 1 + fonts/roboto-mono-v13-latin-regular.woff | Bin 0 -> 15160 bytes fonts/roboto-mono-v13-latin-regular.woff2 | Bin 0 -> 12312 bytes fonts/roboto-v27-latin-700.woff | Bin 0 -> 20396 bytes fonts/roboto-v27-latin-700.woff2 | Bin 0 -> 15828 bytes fonts/roboto-v27-latin-regular.woff | Bin 0 -> 20332 bytes fonts/roboto-v27-latin-regular.woff2 | Bin 0 -> 15688 bytes fuse.min.js | 9 + index.html | 22 + index.xml | 80 + ...4ec3026592726e7d464122af519b655214a67.json | 1 + ...9679587642c6862468e4dc9d3d699602f007d0f.js | 1 + ja/404.html | 2 + ja/categories/index.html | 9 + ja/categories/index.xml | 1 + ja/categories/page/1/index.html | 2 + ja/docs/changelog/index.html | 154 ++ ja/docs/changelog/index.xml | 1 + ja/docs/features/configure_types/index.html | 170 ++ ja/docs/features/error_message/index.html | 140 ++ ja/docs/features/extension/index.html | 95 + ja/docs/features/index.html | 52 + ja/docs/features/index.xml | 53 + ja/docs/features/literal/index.html | 78 + ja/docs/features/parsing_files/index.html | 188 ++ ja/docs/features/serialize/index.html | 146 ++ ja/docs/features/toml_spec/index.html | 86 + ja/docs/features/value/index.html | 403 ++++ ja/docs/index.html | 9 + ja/docs/index.xml | 1 + ja/docs/installation/index.html | 74 + ja/docs/installation/index.xml | 1 + ja/docs/reference/color/index.html | 100 + ja/docs/reference/comments/index.html | 308 +++ ja/docs/reference/conversion/index.html | 26 + ja/docs/reference/datetime/index.html | 370 ++++ ja/docs/reference/error_info/index.html | 78 + ja/docs/reference/exception/index.html | 29 + ja/docs/reference/find/index.html | 129 ++ ja/docs/reference/format/index.html | 234 +++ ja/docs/reference/from/index.html | 48 + ja/docs/reference/get/index.html | 151 ++ ja/docs/reference/index.html | 75 + ja/docs/reference/index.xml | 103 + ja/docs/reference/into/index.html | 50 + ja/docs/reference/literal/index.html | 53 + ja/docs/reference/ordered_map/index.html | 145 ++ ja/docs/reference/parser/index.html | 198 ++ ja/docs/reference/result/index.html | 277 +++ ja/docs/reference/serializer/index.html | 55 + ja/docs/reference/source_location/index.html | 111 ++ ja/docs/reference/spec/index.html | 130 ++ ja/docs/reference/toml/index.html | 15 + ja/docs/reference/toml_fwd/index.html | 19 + ja/docs/reference/types/index.html | 99 + ja/docs/reference/value/index.html | 398 ++++ ja/docs/reference/value_t/index.html | 40 + ja/docs/reference/version/index.html | 30 + ja/docs/reference/visit/index.html | 60 + ja/index.html | 22 + ja/index.xml | 155 ++ ja/sitemap.xml | 1 + ja/tags/index.html | 9 + ja/tags/index.xml | 1 + ja/tags/page/1/index.html | 2 + katex/auto-render.min.js | 1 + katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 70972 bytes katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 38868 bytes katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 32944 bytes katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19316 bytes katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 11696 bytes katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10448 bytes katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18684 bytes katex/fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11460 bytes katex/fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10240 bytes katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35660 bytes katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 22632 bytes katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20360 bytes katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34352 bytes katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22088 bytes katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19784 bytes katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 60784 bytes katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 35464 bytes katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 30244 bytes katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 44496 bytes katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 25352 bytes katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 21944 bytes katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 47640 bytes katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 26228 bytes katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 22748 bytes katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 69520 bytes katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 38112 bytes katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 32464 bytes katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39308 bytes katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 22324 bytes katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 19720 bytes katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 40992 bytes katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 22844 bytes katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 20096 bytes katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33688 bytes katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 18516 bytes katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 15732 bytes katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 30960 bytes katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 17572 bytes katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15024 bytes katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29812 bytes katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16228 bytes katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13708 bytes katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 24620 bytes katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 13428 bytes katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 12064 bytes katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12916 bytes katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6696 bytes katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5592 bytes katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 12172 bytes katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6436 bytes katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5392 bytes katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 8120 bytes katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4568 bytes katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3728 bytes katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 11016 bytes katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 6184 bytes katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5028 bytes katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35924 bytes katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20260 bytes katex/fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17272 bytes katex/katex.min.css | 1 + katex/katex.min.js | 1 + manifest.json | 15 + mermaid.min.js | 1759 +++++++++++++++++ sitemap.xml | 1 + svg/calendar.svg | 1 + svg/edit.svg | 1 + svg/menu.svg | 1 + svg/toc.svg | 1 + svg/translate.svg | 1 + tags/index.html | 9 + tags/index.xml | 1 + tags/page/1/index.html | 2 + 193 files changed, 11568 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css create mode 100644 categories/index.html create mode 100644 categories/index.xml create mode 100644 categories/page/1/index.html create mode 100644 docs/changelog/index.html create mode 100644 docs/changelog/index.xml create mode 100644 docs/features/configure_types/index.html create mode 100644 docs/features/error_message/index.html create mode 100644 docs/features/extension/index.html create mode 100644 docs/features/index.html create mode 100644 docs/features/index.xml create mode 100644 docs/features/literal/index.html create mode 100644 docs/features/parsing_files/index.html create mode 100644 docs/features/serialize/index.html create mode 100644 docs/features/toml_spec/index.html create mode 100644 docs/features/value/index.html create mode 100644 docs/index.html create mode 100644 docs/index.xml create mode 100644 docs/installation/index.html create mode 100644 docs/installation/index.xml create mode 100644 docs/reference/color/index.html create mode 100644 docs/reference/comments/index.html create mode 100644 docs/reference/conversion/index.html create mode 100644 docs/reference/datetime/index.html create mode 100644 docs/reference/error_info/index.html create mode 100644 docs/reference/exception/index.html create mode 100644 docs/reference/find/index.html create mode 100644 docs/reference/format/index.html create mode 100644 docs/reference/from/index.html create mode 100644 docs/reference/get/index.html create mode 100644 docs/reference/index.html create mode 100644 docs/reference/index.xml create mode 100644 docs/reference/into/index.html create mode 100644 docs/reference/literal/index.html create mode 100644 docs/reference/ordered_map/index.html create mode 100644 docs/reference/parser/index.html create mode 100644 docs/reference/result/index.html create mode 100644 docs/reference/serializer/index.html create mode 100644 docs/reference/source_location/index.html create mode 100644 docs/reference/spec/index.html create mode 100644 docs/reference/toml/index.html create mode 100644 docs/reference/toml_fwd/index.html create mode 100644 docs/reference/types/index.html create mode 100644 docs/reference/value/index.html create mode 100644 docs/reference/value_t/index.html create mode 100644 docs/reference/version/index.html create mode 100644 docs/reference/visit/index.html create mode 100644 en.search-data.min.5c6a72164a48e5edca6b426b12e1e46380fc2271ac8f3ba035ac66f01dee7956.json create mode 100644 en.search.min.e7ab81fec216a84e7867aed68f9e2cfd6aa651e1c426a7cf5a081f0dafb020fe.js create mode 100644 en/index.html create mode 100644 en/sitemap.xml create mode 100644 favicon.png create mode 100644 favicon.svg create mode 100644 fonts/roboto-mono-v13-latin-regular.woff create mode 100644 fonts/roboto-mono-v13-latin-regular.woff2 create mode 100644 fonts/roboto-v27-latin-700.woff create mode 100644 fonts/roboto-v27-latin-700.woff2 create mode 100644 fonts/roboto-v27-latin-regular.woff create mode 100644 fonts/roboto-v27-latin-regular.woff2 create mode 100644 fuse.min.js create mode 100644 index.html create mode 100644 index.xml create mode 100644 ja.search-data.min.83426ddf6d79ea74181b57b08534ec3026592726e7d464122af519b655214a67.json create mode 100644 ja.search.min.d7f84b295e1efddfff1ca37f09679587642c6862468e4dc9d3d699602f007d0f.js create mode 100644 ja/404.html create mode 100644 ja/categories/index.html create mode 100644 ja/categories/index.xml create mode 100644 ja/categories/page/1/index.html create mode 100644 ja/docs/changelog/index.html create mode 100644 ja/docs/changelog/index.xml create mode 100644 ja/docs/features/configure_types/index.html create mode 100644 ja/docs/features/error_message/index.html create mode 100644 ja/docs/features/extension/index.html create mode 100644 ja/docs/features/index.html create mode 100644 ja/docs/features/index.xml create mode 100644 ja/docs/features/literal/index.html create mode 100644 ja/docs/features/parsing_files/index.html create mode 100644 ja/docs/features/serialize/index.html create mode 100644 ja/docs/features/toml_spec/index.html create mode 100644 ja/docs/features/value/index.html create mode 100644 ja/docs/index.html create mode 100644 ja/docs/index.xml create mode 100644 ja/docs/installation/index.html create mode 100644 ja/docs/installation/index.xml create mode 100644 ja/docs/reference/color/index.html create mode 100644 ja/docs/reference/comments/index.html create mode 100644 ja/docs/reference/conversion/index.html create mode 100644 ja/docs/reference/datetime/index.html create mode 100644 ja/docs/reference/error_info/index.html create mode 100644 ja/docs/reference/exception/index.html create mode 100644 ja/docs/reference/find/index.html create mode 100644 ja/docs/reference/format/index.html create mode 100644 ja/docs/reference/from/index.html create mode 100644 ja/docs/reference/get/index.html create mode 100644 ja/docs/reference/index.html create mode 100644 ja/docs/reference/index.xml create mode 100644 ja/docs/reference/into/index.html create mode 100644 ja/docs/reference/literal/index.html create mode 100644 ja/docs/reference/ordered_map/index.html create mode 100644 ja/docs/reference/parser/index.html create mode 100644 ja/docs/reference/result/index.html create mode 100644 ja/docs/reference/serializer/index.html create mode 100644 ja/docs/reference/source_location/index.html create mode 100644 ja/docs/reference/spec/index.html create mode 100644 ja/docs/reference/toml/index.html create mode 100644 ja/docs/reference/toml_fwd/index.html create mode 100644 ja/docs/reference/types/index.html create mode 100644 ja/docs/reference/value/index.html create mode 100644 ja/docs/reference/value_t/index.html create mode 100644 ja/docs/reference/version/index.html create mode 100644 ja/docs/reference/visit/index.html create mode 100644 ja/index.html create mode 100644 ja/index.xml create mode 100644 ja/sitemap.xml create mode 100644 ja/tags/index.html create mode 100644 ja/tags/index.xml create mode 100644 ja/tags/page/1/index.html create mode 100644 katex/auto-render.min.js create mode 100644 katex/fonts/KaTeX_AMS-Regular.ttf create mode 100644 katex/fonts/KaTeX_AMS-Regular.woff create mode 100644 katex/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 katex/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 katex/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 katex/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 katex/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 katex/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 katex/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 katex/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 katex/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 katex/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 katex/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Main-Bold.ttf create mode 100644 katex/fonts/KaTeX_Main-Bold.woff create mode 100644 katex/fonts/KaTeX_Main-Bold.woff2 create mode 100644 katex/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 katex/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 katex/fonts/KaTeX_Main-BoldItalic.woff2 create mode 100644 katex/fonts/KaTeX_Main-Italic.ttf create mode 100644 katex/fonts/KaTeX_Main-Italic.woff create mode 100644 katex/fonts/KaTeX_Main-Italic.woff2 create mode 100644 katex/fonts/KaTeX_Main-Regular.ttf create mode 100644 katex/fonts/KaTeX_Main-Regular.woff create mode 100644 katex/fonts/KaTeX_Main-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 katex/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 katex/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 katex/fonts/KaTeX_Math-Italic.ttf create mode 100644 katex/fonts/KaTeX_Math-Italic.woff create mode 100644 katex/fonts/KaTeX_Math-Italic.woff2 create mode 100644 katex/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 katex/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 katex/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 katex/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 katex/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 katex/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 katex/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 katex/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 katex/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Script-Regular.ttf create mode 100644 katex/fonts/KaTeX_Script-Regular.woff create mode 100644 katex/fonts/KaTeX_Script-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Size1-Regular.ttf create mode 100644 katex/fonts/KaTeX_Size1-Regular.woff create mode 100644 katex/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Size2-Regular.ttf create mode 100644 katex/fonts/KaTeX_Size2-Regular.woff create mode 100644 katex/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Size3-Regular.ttf create mode 100644 katex/fonts/KaTeX_Size3-Regular.woff create mode 100644 katex/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Size4-Regular.ttf create mode 100644 katex/fonts/KaTeX_Size4-Regular.woff create mode 100644 katex/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 katex/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 katex/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 katex/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 katex/katex.min.css create mode 100644 katex/katex.min.js create mode 100644 manifest.json create mode 100644 mermaid.min.js create mode 100644 sitemap.xml create mode 100644 svg/calendar.svg create mode 100644 svg/edit.svg create mode 100644 svg/menu.svg create mode 100644 svg/toc.svg create mode 100644 svg/translate.svg create mode 100644 tags/index.html create mode 100644 tags/index.xml create mode 100644 tags/page/1/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..8d203dd3 --- /dev/null +++ b/404.html @@ -0,0 +1,2 @@ +404 Page not found | toml11 +

404

Page Not Found

toml11

\ No newline at end of file diff --git a/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css b/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css new file mode 100644 index 00000000..bfe16dbd --- /dev/null +++ b/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-500:#adb5bd;--color-link:#0055bb;--color-visited-link:#8440f1;--body-background:white;--body-font-color:black;--icon-filter:none;--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}@media(prefers-color-scheme:dark){:root{--gray-100:rgba(255, 255, 255, 0.1);--gray-200:rgba(255, 255, 255, 0.2);--gray-500:rgba(255, 255, 255, 0.5);--color-link:#84b2ff;--color-visited-link:#b88dff;--body-background:#343a40;--body-font-color:#e9ecef;--icon-filter:brightness(0) invert(1);--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.flex{display:flex}.flex-auto{flex:auto}.flex-even{flex:1 1}.flex-wrap{flex-wrap:wrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.align-center{align-items:center}.mx-auto{margin:0 auto}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.hidden{display:none}input.toggle{height:0;width:0;overflow:hidden;opacity:0;position:absolute}.clearfix::after{content:"";display:table;clear:both}html{font-size:16px;scroll-behavior:smooth;touch-action:manipulation}body{min-width:20rem;color:var(--body-font-color);background:var(--body-background);letter-spacing:.33px;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}body *{box-sizing:inherit}h1,h2,h3,h4,h5{font-weight:400}a{text-decoration:none;color:var(--color-link)}img{vertical-align:baseline}:focus{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{margin:1em 0;position:relative}aside nav ul a{display:block}aside nav ul a:hover{opacity:.5}aside nav ul ul{padding-inline-start:1rem}ul.pagination{display:flex;justify-content:center;list-style-type:none;padding-inline-start:0}ul.pagination .page-item a{padding:1rem}.container{max-width:80rem;margin:0 auto}.book-icon{filter:var(--icon-filter)}.book-brand{margin-top:0;margin-bottom:1rem}.book-brand img{height:1.5em;width:1.5em;margin-inline-end:.5rem}.book-menu{flex:0 0 16rem;font-size:.875rem}.book-menu .book-menu-content{width:16rem;padding:1rem;background:var(--body-background);position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-menu a,.book-menu label{color:inherit;cursor:pointer;word-wrap:break-word}.book-menu a.active{color:var(--color-link)}.book-menu input.toggle+label+ul{display:none}.book-menu input.toggle:checked+label+ul{display:block}.book-menu input.toggle+label::after{content:"▸"}.book-menu input.toggle:checked+label::after{content:"▾"}body[dir=rtl] .book-menu input.toggle+label::after{content:"◂"}body[dir=rtl] .book-menu input.toggle:checked+label::after{content:"▾"}.book-section-flat{margin:2rem 0}.book-section-flat>a,.book-section-flat>span,.book-section-flat>label{font-weight:bolder}.book-section-flat>ul{padding-inline-start:0}.book-page{min-width:20rem;flex-grow:1;padding:1rem}.book-post{margin-bottom:3rem}.book-header{display:none;margin-bottom:1rem}.book-header label{line-height:0}.book-header img.book-icon{height:1.5em;width:1.5em}.book-search{position:relative;margin:1rem 0;border-bottom:1px solid transparent}.book-search input{width:100%;padding:.5rem;border:0;border-radius:.25rem;background:var(--gray-100);color:var(--body-font-color)}.book-search input:required+.book-search-spinner{display:block}.book-search .book-search-spinner{position:absolute;top:0;margin:.5rem;margin-inline-start:calc(100% - 1.5rem);width:1rem;height:1rem;border:1px solid transparent;border-top-color:var(--body-font-color);border-radius:50%;animation:spin 1s ease infinite}@keyframes spin{100%{transform:rotate(360deg)}}.book-search small{opacity:.5}.book-toc{flex:0 0 16rem;font-size:.75rem}.book-toc .book-toc-content{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-toc img{height:1em;width:1em}.book-toc nav>ul>li:first-child{margin-top:0}.book-footer{padding-top:1rem;font-size:.875rem}.book-footer img{height:1em;width:1em;margin-inline-end:.5rem}.book-comments{margin-top:1rem}.book-languages{margin-block-end:2rem}.book-languages .book-icon{height:1em;width:1em;margin-inline-end:.5em}.book-languages ul{padding-inline-start:1.5em}.book-menu-content,.book-toc-content,.book-page,.book-header aside,.markdown{transition:.2s ease-in-out;transition-property:transform,margin,opacity,visibility;will-change:transform,margin,opacity}@media screen and (max-width:56rem){#menu-control,#toc-control{display:inline}.book-menu{visibility:hidden;margin-inline-start:-16rem;font-size:16px;z-index:1}.book-toc{display:none}.book-header{display:block}#menu-control:focus~main label[for=menu-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#menu-control:checked~main .book-menu{visibility:initial}#menu-control:checked~main .book-menu .book-menu-content{transform:translateX(16rem);box-shadow:0 0 .5rem rgba(0,0,0,.1)}#menu-control:checked~main .book-page{opacity:.25}#menu-control:checked~main .book-menu-overlay{display:block;position:absolute;top:0;bottom:0;left:0;right:0}#toc-control:focus~main label[for=toc-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#toc-control:checked~main .book-header aside{display:block}body[dir=rtl] #menu-control:checked~main .book-menu .book-menu-content{transform:translateX(-16rem)}}@media screen and (min-width:80rem){.book-page,.book-menu .book-menu-content,.book-toc .book-toc-content{padding:2rem 1rem}}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-regular.woff2)format("woff2"),url(fonts/roboto-v27-latin-regular.woff)format("woff")}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-700.woff2)format("woff2"),url(fonts/roboto-v27-latin-700.woff)format("woff")}@font-face{font-family:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-mono-v13-latin-regular.woff2)format("woff2"),url(fonts/roboto-mono-v13-latin-regular.woff)format("woff")}body{font-family:roboto,sans-serif}code{font-family:roboto mono,monospace}@media print{.book-menu,.book-footer,.book-toc{display:none}.book-header,.book-header aside{display:block}main{display:block!important}}.markdown{line-height:1.6}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:400;line-height:1;margin-top:1.5em;margin-bottom:1rem}.markdown h1 a.anchor,.markdown h2 a.anchor,.markdown h3 a.anchor,.markdown h4 a.anchor,.markdown h5 a.anchor,.markdown h6 a.anchor{opacity:0;font-size:.75em;vertical-align:middle;text-decoration:none}.markdown h1:hover a.anchor,.markdown h1 a.anchor:focus,.markdown h2:hover a.anchor,.markdown h2 a.anchor:focus,.markdown h3:hover a.anchor,.markdown h3 a.anchor:focus,.markdown h4:hover a.anchor,.markdown h4 a.anchor:focus,.markdown h5:hover a.anchor,.markdown h5 a.anchor:focus,.markdown h6:hover a.anchor,.markdown h6 a.anchor:focus{opacity:initial}.markdown h4,.markdown h5,.markdown h6{font-weight:bolder}.markdown h5{font-size:.875em}.markdown h6{font-size:.75em}.markdown b,.markdown optgroup,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown a:visited{color:var(--color-visited-link)}.markdown img{max-width:100%;height:auto}.markdown code{direction:ltr;unicode-bidi:embed;padding:0 .25rem;background:var(--gray-200);border-radius:.25rem;font-size:.875em}.markdown pre{direction:ltr;unicode-bidi:embed;padding:1rem;background:var(--gray-100);border-radius:.25rem;overflow-x:auto}.markdown pre code{padding:0;background:0 0}.markdown p{word-wrap:break-word}.markdown blockquote{margin:1rem 0;padding:.5rem 1rem .5rem .75rem;border-inline-start:.25rem solid var(--gray-200);border-radius:.25rem}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin-top:1rem;margin-bottom:1rem}.markdown table tr th,.markdown table tr td{padding:.5rem 1rem;border:1px solid var(--gray-200)}.markdown table tr:nth-child(2n){background:var(--gray-100)}.markdown hr{height:1px;border:none;background:var(--gray-200)}.markdown ul,.markdown ol{padding-inline-start:2rem;word-wrap:break-word}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-inline-start:0;margin-bottom:1rem}.markdown .highlight{direction:ltr;unicode-bidi:embed}.markdown .highlight table tr td:nth-child(1) pre{margin:0;padding-inline-end:0}.markdown .highlight table tr td:nth-child(2) pre{margin:0;padding-inline-start:0}.markdown details{padding:1rem;border:1px solid var(--gray-200);border-radius:.25rem}.markdown details summary{line-height:1;padding:1rem;margin:-1rem;cursor:pointer}.markdown details[open] summary{margin-bottom:0}.markdown figure{margin:1rem 0}.markdown figure figcaption p{margin-top:0}.markdown-inner>:first-child{margin-top:0}.markdown-inner>:last-child{margin-bottom:0}.markdown .book-expand{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden}.markdown .book-expand .book-expand-head{background:var(--gray-100);padding:.5rem 1rem;cursor:pointer}.markdown .book-expand .book-expand-content{display:none;padding:1rem}.markdown .book-expand input[type=checkbox]:checked+.book-expand-content{display:block}.markdown .book-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden;display:flex;flex-wrap:wrap}.markdown .book-tabs label{display:inline-block;padding:.5rem 1rem;border-bottom:1px transparent;cursor:pointer}.markdown .book-tabs .book-tabs-content{order:999;width:100%;border-top:1px solid var(--gray-100);padding:1rem;display:none}.markdown .book-tabs input[type=radio]:checked+label{border-bottom:1px solid var(--color-link)}.markdown .book-tabs input[type=radio]:checked+label+.book-tabs-content{display:block}.markdown .book-tabs input[type=radio]:focus+label{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}.markdown .book-columns{margin-left:-1rem;margin-right:-1rem}.markdown .book-columns>div{margin:1rem 0;min-width:10rem;padding:0 1rem}.markdown a.book-btn{display:inline-block;font-size:.875rem;color:var(--color-link);line-height:2rem;padding:0 1rem;border:1px solid var(--color-link);border-radius:.25rem;cursor:pointer}.markdown a.book-btn:hover{text-decoration:none}.markdown .book-hint.info{border-color:#6bf;background-color:rgba(102,187,255,.1)}.markdown .book-hint.warning{border-color:#fd6;background-color:rgba(255,221,102,.1)}.markdown .book-hint.danger{border-color:#f66;background-color:rgba(255,102,102,.1)} \ No newline at end of file diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 00000000..46c99352 --- /dev/null +++ b/categories/index.html @@ -0,0 +1,9 @@ +Categories | toml11 + +
Categories +
\ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml new file mode 100644 index 00000000..bfe0b43f --- /dev/null +++ b/categories/index.xml @@ -0,0 +1 @@ +Categories on toml11https://toruniina.github.io/toml11/categories/Recent content in Categories on toml11Hugoen \ No newline at end of file diff --git a/categories/page/1/index.html b/categories/page/1/index.html new file mode 100644 index 00000000..91fd4519 --- /dev/null +++ b/categories/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/categories/ + \ No newline at end of file diff --git a/docs/changelog/index.html b/docs/changelog/index.html new file mode 100644 index 00000000..c0a7c50a --- /dev/null +++ b/docs/changelog/index.html @@ -0,0 +1,137 @@ +changelog | toml11 + +
changelog +

Change Log +#

v4.1.0 +#

Added +#

  • support std::get<std::u8string>
  • support toml::value(std::u8string)
  • support string_type = std::u8string
  • support operator<<(std::ostream&, toml::value)
  • add bool uppercase to toml::integer_format
  • support template into_toml() (by 萧迩珀)

Fixed +#

  • Fix not checking for \r\n when parsing line comments (by Andreas Keller)

Changed +#

  • speedup CI tests by multicore build

v4.0.3 +#

Fixed +#

  • remove default template argument from forward declaration in toml_fwd.hpp
  • enable to call toml::make_error_info with multiple toml::values
  • enable to copy/move toml::result having std::reference_wrapper
  • fix document generation error with the latest version of hugo
  • fix several tiny errors that causes warning
  • fix CMake compatibility warning

Changed +#

add -Werror / /WX to build script +set MSVC warning level to /W4 +add explanation of features to README

v4.0.2 +#

Fixed +#

  • check return value of fread in parse(FILE*)
  • version macro defined in toml11/version.hpp
  • update docs about compilation
  • update docs about file open mode

Changed +#

  • use version macros defined in toml11/version.hpp as the project version in CMakeLists.txt

v4.0.1 +#

Fixed +#

  • Resolved naming conflict of sematic_version::{major, minor} with macros defined in <sys/sysmacro.h>
  • Fixed the definition of operator<< in discard_comments (by Egor Pugin)
  • Fixed the issue where the first blank line was not output in format_location
  • Fixed the issue where error messages pointing to source_location referring to lines containing only newline characters were displayed in two lines
  • Corrected links in the README
  • Corrected the title of the README in example/unicode

Added +#

  • Configured CI to automatically update single_include/toml.hpp when changes are made to main

Changes from v3 to v4 +#

Breaking Changes +#

Changed template Parameters of toml::basic_value +#

In toml11 v3, toml::basic_value took separate template arguments for the comment container, table-type container, and array-type container.

template<typename Comment,
+         template<typename ...> class Table = std::unordered_map,
+         template<typename ...> class Array = std::vector>
+class basic_value;
+

However, this approach does not accommodate changes to types such as integer_type.

In toml11 v4, toml::basic_value now accepts a single TypeConfig, allowing for more types to be customized.

template<typename TypeConfig>
+class basic_value;
+

By default, the types stored in toml::value remain unchanged.

For more information on changing types, please refer to the +type_config documentation.

Removed std::initializer_list Support for toml::basic_value +#

In toml11 v3, there was an overload for toml::value that accepted std::initializer_list. This allowed for more intuitive initialization of toml::value with arrays and tables.

// toml11 v3
+toml::value v{1,2,3,4,5};
+toml::value v{ {"a", 42}, {"b", "foo"} };
+

However, this caused the following issues:

First, it was impossible to distinguish between a single-element array and a regular value, as it always became an array.

// toml11 v3
+toml::value v{1}; // Becomes [1,] instead of 1
+

With the widespread use of uniform initialization, this became very inconvenient.

Second, it was unclear whether the value represented a table with all string values or a nested array.

// toml11 v3
+toml::value v{ {"a", "foo"}, {"b", "bar"} };
+// Could be either:
+// {a = "foo", b = "bar"}
+// [["a", "foo"], ["b", "bar"]]
+

These issues were difficult to resolve due to language specifications.

To avoid confusion, toml11 v4 has removed std::initializer_list support.

When initializing toml::value with an array, you must explicitly specify toml::array, and when initializing with a table, you must explicitly specify toml::table.

// toml11 v4
+toml::value v(toml::array{1,2,3,4,5});
+toml::value v(toml::table{ {"a", 42}, {"b", "foo"} });
+
+toml::value v{toml::array{1}}; // [1,]
+toml::value v{1}               // 1
+
+toml::value v{toml::table{{"a", "foo"}, {"b", "bar"}}};
+toml::value v{toml::array{toml::array{"a", "foo"}, toml::array{"b", "bar"}}};
+

While this makes initializing toml::value with tables or arrays slightly less convenient, it ensures that the values will not become unpredictable by requiring explicit type information.

Renamed toml::basic_value::is_uninitialized() to is_empty() +#

In toml11 v3, the function to check whether a basic_value was uninitialized was called is_uninitialized.

However, in toml11 v4, the library supports null values as an extension, allowing for the intentional construction of empty values. +Therefore, the function has been renamed to is_empty to reflect this change.

Added Format Information and Removed toml::string +#

In toml11 v3, to retain information on whether a string was basic or literal, the library used a thin wrapper around std::string called toml::string.

// toml11 v3
+namespace toml
+{
+enum class string_t : std::uint8_t
+{
+    basic   = 0,
+    literal = 1,
+};
+
+struct string
+{
+    string_t    kind;
+    std::string str;
+};
+} // namespace toml
+

In toml11 v4, to accommodate more format information such as the numeric base or whether arrays should be multiline, every type now has an associated xxx_format type, which is stored alongside the value.

// toml11 v4
+enum class string_format : std::uint8_t
+{
+    basic             = 0,
+    literal           = 1,
+    multiline_basic   = 2,
+    multiline_literal = 3
+};
+
+struct string_format_info
+{
+    string_format fmt = string_format::basic;
+    bool start_with_newline    = false;
+};
+

This change allows for more detailed format information to be preserved, ensuring that format specifics for numeric types, arrays, and tables are maintained even after parsing.

Changed Arguments of toml::format +#

In toml11 v3, toml::format accepted values such as the precision and width of numeric types.

However, this approach did not allow for detailed formatting specifications, resulting in serialized files that did not match expectations.

In toml11 v4, each toml::value now carries its own format information, enabling more detailed formatting options to be preserved within the toml::value itself.

As a result, toml::format no longer accepts specific formatting values. Instead, it now only takes a toml::spec, which includes language feature flags used during formatting.

Changed Member Functions of toml::source_location +#

In toml11 v3, the member types of toml::source_location were designed to handle only single lines.

In toml11 v4, the member types of toml::source_location are designed to handle multiple lines.

Renamed toml::format_underline to toml::format_location +#

In toml11 v3, the function used to format location information from toml::source_location was called toml::format_underline.

To make the name clearer, it has been renamed to toml::format_location.

Changed Arguments of toml::format_error +#

In toml11 v3, there was no class to represent error information, resulting in complex arguments for toml::format_error.

template<typename C, template<typename ...> class T, template<typename ...> class A>
+std::string format_error(const std::string& err_msg,
+        const basic_value<C, T, A>& v, const std::string& comment,
+        std::vector<std::string> hints = {},
+        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
+
+template<typename C, template<typename ...> class T, template<typename ...> class A>
+inline std::string format_error(const std::string& err_msg,
+        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
+        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
+        std::vector<std::string> hints = {},
+        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
+
+template<typename C, template<typename ...> class T, template<typename ...> class A>
+inline std::string format_error(const std::string& err_msg,
+        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
+        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
+        const toml::basic_value<C, T, A>& v3, const std::string& comment3,
+        std::vector<std::string> hints = {},
+        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
+

In toml11 v4, we have introduced class error_info and make_error_info, simplifying the arguments for format_error.

std::string format_error(const error_info& err);
+std::string format_error(const std::string& errkind, const error_info& err);
+
+template<typename ... Ts>
+std::string format_error(std::string title,
+        source_location loc, std::string msg, Ts&& ... tail);
+
+template<typename TC, typename ... Ts>
+std::string format_error(std::string title,
+        const basic_value<TC>& v, std::string msg, Ts&& ... tail);
+

Changed Control of toml::color +#

In toml11 v3, to control whether to colorize the output, we used the manipulator toml::colorize in conjunction with toml::color::enable/disable.

The manipulator allowed us to decide whether to apply color to each stream, +but in v4, the frequency of using streams has decreased, +and issues such as the fact that std::ios_base::xalloc used internally is not thread-safe in C++11 have arisen. +Therefore, we have decided to use only toml::color::enable/disable and have removed toml::colorize.

Non-Breaking Changes +#

Added parse_str +#

In toml11 v3, there was no function to directly parse a string itself. +Therefore, when parsing a string, it was necessary to use std::istringstream.

To address this inconvenience, we have added toml::parse_str, allowing for direct parsing of strings.

Added try_parse +#

In toml11 v3, when a parser encountered an error, it threw toml::syntax_error.

However, there are cases where you do not want to throw exceptions due to environments where exceptions cannot be thrown, or for reasons of performance.

In toml11 v4, we have implemented toml::try_parse using toml::result, which communicates parsing failures without throwing exceptions.

This doesn’t mean exceptions are never thrown. Errors in the standard library being used, such as std::bad_alloc due to allocation failure from memory exhaustion, may still be thrown.

Support for Parsing Byte Sequences +#

To allow for parsing TOML content obtained through means other than files, we have added toml::parse and toml::try_parse functions that accept std::vector<unsigned char>.

Added toml::spec +#

In toml11 v3, all new features of the TOML language were incorporated, and features that were decided to be introduced in future versions of the TOML language were controlled by the macro TOML11_USE_UNRELEASED_TOML_FEATURES.

This was because, at the time of developing toml11 v3, the TOML language had not yet reached version 1.0.0, being at versions 0.4.0 to 0.5.0.

As not all users are familiar with the latest TOML language specification, displaying error messages based on an older language usage could confuse the entire community. Therefore, until reaching version 1.0.0, it was necessary to provide new language specifications as quickly as possible and encourage users to update.

However, the current TOML language specification is at version 1.0.0. Therefore, there was a need to be mindful of the choice to continue using version 1.0.0 even after TOML v1.1.0 was released.

To allow for more flexibility in selecting the TOML language specification, we introduced toml::spec, enabling the TOML language version to be changed at runtime.

Additionally, in toml::spec, flags are set for each language feature, allowing for the testing of specific language features only.

This mechanism is also used for TOML-specific language extensions in toml11 v4.

Added Format Information +#

In toml11 v3, format information was not saved except for strings, and during serialization, only width and precision were considered.

However, this resulted in hexadecimal integers being serialized as decimal integers and no reliable way to ensure inline tables.

In toml11 v4, format information (integer_format, etc.) has been added to all TOML types, and it is now considered during parsing and serialization.

This allows for more detailed format information to be set for values, such as hexadecimal integers or inline tables.

Changed to preserve_comments by Default +#

In toml11 v3, comments were not parsed by default and were also not serialized.

This was because comments were a later introduced feature and were being read through a special hack.

In toml11 v4, comments are parsed, preserved, and serialized by default.

Furthermore, the parser implementation has been significantly changed to ensure comments are parsed alongside other elements.

Changed to Preserve Comments by Default +#

In toml11 v3, comments were neither parsed nor serialized by default. This was because comment support was a late addition, implemented through a special hack.

In toml11 v4, comments are now parsed, preserved, and serialized by default. The parser implementation has also been significantly revised so that comments are parsed just like any other element.

Added single_include/toml.hpp +#

toml11 is a versatile library with different header files for various features to enhance development efficiency. However, this required a certain amount of effort to install.

Starting with toml11 v4, a single_include/toml.hpp file has been added, which combines all the header files in the correct order. This allows the library to be installed by simply copying a single file.

Option to Use Precompiled Library +#

Due to the extensive use of templates in toml11, compile times have been long.

In toml11 v4, the number of precompilable functions has been increased, allowing them to be compiled ahead of time into a library. This is expected to reduce compile times when using the library in large-scale development projects.

Reference Documentation +#

Previously, all features were documented in the README, with no detailed function definitions or reference materials available in Japanese.

In toml11 v4, reference documentation has been included, provided in both Japanese and English. However, since the library author is a native Japanese speaker, the Japanese content is considered primary. If there are discrepancies between the Japanese and English content, the Japanese version takes precedence.

\ No newline at end of file diff --git a/docs/changelog/index.xml b/docs/changelog/index.xml new file mode 100644 index 00000000..bbdf0b9c --- /dev/null +++ b/docs/changelog/index.xml @@ -0,0 +1 @@ +changelog on toml11https://toruniina.github.io/toml11/docs/changelog/Recent content in changelog on toml11Hugoen \ No newline at end of file diff --git a/docs/features/configure_types/index.html b/docs/features/configure_types/index.html new file mode 100644 index 00000000..890be1fb --- /dev/null +++ b/docs/features/configure_types/index.html @@ -0,0 +1,142 @@ +configuring types | toml11 + +
configuring types +

Customizing Types +#

The toml::value class uses std::int64_t for integer_type and std::unordered_map<key_type, value_type> for table_type.

However, in some cases, you may want to use boost::multiprecision::int128_t or std::map.

To accommodate this, toml::value is implemented with template parameters that allow you to change the stored types.

Just as std::string is actually an alias for std::basic_string<char, std::char_traits<char>, std::allocator<char>>, toml::value is an alias for toml::basic_value<toml::type_config>.

Here, we will explain the types contained in toml::type_config and how to define a different config type.

type_config +#

The type_config class contains the following member types and static member functions:

namespace toml
+{
+struct type_config
+{
+    using comment_type  = preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex);
+};
+}
+

toml::basic_value<TypeConfig> defines the stored boolean_type as TypeConfig::boolean_type, the stored integer_type as TypeConfig::integer_type, and so on.

Additionally, array_type is defined as TypeConfig::array_type<toml::basic_value<TypeConfig>> and table_type is defined as TypeConfig::table_type<key_type, toml::basic_value<TypeConfig>>.

By passing a class that defines these member types and functions to toml::basic_value, you can customize the types used by that toml::basic_value.

The parse_int and parse_float functions provide parsing methods when custom numeric types are used. These functions receive strings with prefixes like 0x and digit separators like _ removed, such as 123456 or DEADBEEF. The base parameter will be one of 10, 16, 8, or 2. Implement these functions to parse your custom integer_type and floating_type.

As a default implementation, toml::read_int and toml::read_float are provided.

static result<integer_type, error_info>
+parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+{
+    return toml::read_int<integer_type>(str, src, base);
+}
+
+static result<floating_type, error_info>
+parse_float(const std::string& str, const source_location src, const bool is_hex)
+{
+    return toml::read_float<floating_type>(str, src, is_hex);
+}
+

The read_int function uses istream and employs std::hex and std::oct for hexadecimal and octal parsing, respectively. For binary parsing, it is implemented using multiplication and addition. If your type supports these operations, you can use read_int as-is.

The read_float function also uses istream. Hexadecimal floating-point numbers are only supported for double and float types. If read_float is called with any other type and hexfloat is used, it will always return a parse error. Therefore, if you need to use a floating-point type other than double or float with hexfloat, you will need to implement support for that. If hexfloat is not used, no additional implementation is necessary.

Preserving Order of Values in Tables +#

In addition to the default toml::type_config, there is also toml::ordered_type_config. This changes the table_type to an ordered_map.

Using this, toml::ordered_value is defined, along with aliases for its array and table types as toml::ordered_array and toml::ordered_table, respectively.

You can use toml::ordered_value by calling toml::parse(...) as toml::parse<toml::ordered_type_config>(...).

#include <toml.hpp>
+
+int main()
+{
+    toml::ordered_value input = toml::parse<toml::ordered_type_config>("example.toml");
+    std::cout << toml::format(input) << std::endl;
+    return 0;
+}
+

Not Preserving Comments +#

The type_config defines a container for storing comments via comment_type.

If comments do not contain significant information and can be discarded during parsing, specify toml::discard_comments for comment_type.

struct wo_comment_config
+{
+    using comment_type  = toml::discard_comments; // XXX
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+    {
+        return toml::read_int<integer_type>(str, src, base);
+    }
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex)
+    {
+        return toml::read_float<floating_type>(str, src, is_hex);
+    }
+};
+

Using Containers Other Than std::vector for Arrays +#

To use a container other than vector (e.g., std::deque) for implementing TOML arrays, modify array_type as follows.

Similarly, to use a container other than unordered_map (e.g., std::map) for table types, modify table_type as shown below.

struct deque_map_config
+{
+    using comment_type  = toml::preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::deque<T>; // XXX
+    template<typename K, typename T>
+    using table_type = std::map<K, T>; // XXX
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+    {
+        return toml::read_int<integer_type>(str, src, base);
+    }
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex)
+    {
+        return toml::read_float<floating_type>(str, src, is_hex);
+    }
+};
+

Using boost::multiprecision for Numeric Types +#

By using boost::multiprecision::cpp_int and boost::multiprecision::cpp_bin_float_oct, you can utilize a wider integer type and a more precise floating-point type.

These types implement stream operators, so you can use the default implementations of read_int and read_float without modification.

struct large_num_config
+{
+    using comment_type  = toml::preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = boost::multiprecision::cpp_int;
+    using floating_type = boost::multiprecision::cpp_bin_float_oct;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static toml::result<integer_type, toml::error_info>
+    parse_int(const std::string& str, const toml::source_location src, const std::uint8_t base)
+    {
+        return toml::read_int<integer_type>(str, src, base);
+    }
+    static toml::result<floating_type, toml::error_info>
+    parse_float(const std::string& str, const toml::source_location src, const bool is_hex)
+    {
+        return toml::read_float<floating_type>(str, src, is_hex);
+    }
+};
+
\ No newline at end of file diff --git a/docs/features/error_message/index.html b/docs/features/error_message/index.html new file mode 100644 index 00000000..6483a9e2 --- /dev/null +++ b/docs/features/error_message/index.html @@ -0,0 +1,113 @@ +error message | toml11 + +
error message +

Outputting Error Messages +#

toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get<T>/find<T>, and as_integer(), among others.

For instance, if a syntax error in an integer is detected during parsing, an error message might look like this:

[error] bad integer: `_` must be surrounded by digits
+ --> internal string at line 64 in file main.cpp
+   |
+ 1 | a = 123__456
+   |        ^-- invalid underscore
+Hint: valid  : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755
+Hint: invalid: _42, 1__000, 0123
+

Or, if a type different from the one actually stored is requested:

[error] toml::value::as_string(): bad_cast to string
+ --> input.toml
+   |
+ 1 | a = 123_456
+   |     ^^^^^^^-- the actual type is integer
+

toml11 provides methods to create such error messages from toml::value.

By utilizing this feature, you can inform users not only about TOML syntax errors but also about application-specific errors. For example, if a negative number appears where only positive values are allowed, you can highlight the location within the TOML file to convey the error to the user.

Creating Error Messages from toml::value Location Information +#

toml::value retains information about the location where it was parsed.

This information is encapsulated in toml::source_location and can be retrieved using toml::value::location().

const toml::value& a = input.at("a");
+const toml::source_location src = a.location();
+

When a file is parsed with toml::parse, the TOML filename and line numbers are stored.

If parsed with toml::parse_str, the TOML filename is not available, but instead, the filename and line number of the C++ source code that called toml::parse_str are stored as the TOML filename. The first example on this page was output from toml::parse_str. Note the filename part.

For details, see the reference.

You can build error information by passing a toml::source_location or toml::value and the associated error message to toml::make_error_info. Passing this to toml::format_error formats the error message into a std::string.

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    const toml::error_info err = toml::make_error_info(
+            "positive integer is required", // Error title
+            a, "but got negative value"     // Message next to the value
+        );
+    std::cerr << toml::format_error(err) << std::endl;
+}
+

This will output:

[error] positive integer is required
+ --> input.toml
+   |
+ 1 | a = -123456
+   |     ^^^^^^^-- but got negative value
+

You can also add a supplementary message at the end. This part is not indented.

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    const toml::error_info err = toml::make_error_info(
+            "positive integer is required",      // Error title
+            a, "but got negative value",         // Message next to the value
+            "Hint: `a` means length of the data" // Supplementary message
+        );
+    std::cerr << toml::format_error(err) << std::endl;
+}
+

This will output:

[error] positive integer is required
+ --> input.toml
+   |
+ 1 | a = -123456
+   |     ^^^^^^^-- but got negative value
+Hint: `a` means length of the data
+

The ability to output lines from the file using toml::value is because the parsed file is retained in memory as a string.

The parsed string is shared by toml::value via a std::shared_ptr. Copying it does not duplicate the entire file string. The file information is freed from memory when all toml::value instances constructed from parsing the file are destructed.

Therefore, when using this in an application, it is recommended to extract and store the required values during loading rather than directly storing toml::value.

Adding Colors to Strings +#

You can add color to error messages using ANSI escape codes.

If TOML11_COLORIZE_ERROR_MESSAGE is defined at compile time, the error messages output by toml11 will be colored by default.

If not, you can enable color for subsequent error messages by calling toml::color::enable(). Conversely, if you do not want colored output, for example, because the output is not to a console, call toml::color::disable(). You can check whether coloring is enabled at any point by calling toml::color::should_color().

Additionally, while the error title, error message, and supplementary information are not colored by default, you can use manipulators from toml::color to add color to them.

std::ostringstream oss;
+oss << toml::color::red << "but got negative value";
+
+const toml::error_info err = toml::make_error_info(
+        "positive integer is required",      // Error title
+        a, oss.str(),                        // Message next to the value
+        "Hint: `a` means length of the data" // Supplementary message
+    );
+

For more details, see the reference.

Changing the Prefix of Error Messages from [error] +#

There may be different types of errors, and the default [error] prefix might not always be appropriate.

With toml::format_error, you can provide a std::string before toml::error_info to replace the [error] prefix.

For example:

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    const toml::error_info err = toml::make_error_info(
+            "positive integer is required", // Error title
+            a, "but got negative value"     // Message next to the value
+        );
+
+    std::ostringstream prefix;
+    prefix << toml::color::bold << toml::color::yellow << "[warn]";
+    std::cerr << toml::format_error(prefix.str(), err) << std::endl;
+    return 0;
+}
+else
+{
+    return a.as_integer();
+}
+

This will output a warning starting with [warn].

Additionally, you can create error messages without the [error] prefix by directly passing the components of error_info to toml::format_error.

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    std::cerr << toml::format_error(
+            "[warn] positive integer is required", // Error title
+            a, "but got negative value"            // Message next to the value
+        ) << std::endl;
+    return 0;
+}
+else
+{
+    return a.as_integer()
+}
+

Creating Error Messages Referencing Multiple toml::value +#

In application settings, the range of permissible values might change based on previously read values.

In such cases, you may want to output the values causing the error simultaneously.

toml::format_error and toml::make_error_info can take multiple pairs of toml::value and their corresponding error messages as std::string.

std::cerr << toml::format_error(
+        "[error] invalid range",
+        a, "minimum value is defined here",
+        b, "maximum value is defined here",
+        c, "and it exceeds the range"
+    ) << std::endl;
+

You can also add supplementary information at the end.

std::cerr << toml::format_error(
+        "[error] invalid range",
+        a, "minimum value is defined here",
+        b, "maximum value is defined here",
+        c, "and it exceeds the range",
+        "Hint: all the values must be in the range [a, b)"
+    ) << std::endl;
+

When passing toml::value or toml::source_location, an error message related to it must follow. If not, it will result in a very confusing compilation error.

\ No newline at end of file diff --git a/docs/features/extension/index.html b/docs/features/extension/index.html new file mode 100644 index 00000000..ee0229f9 --- /dev/null +++ b/docs/features/extension/index.html @@ -0,0 +1,69 @@ +extension | toml11 + +
extension +

TOML Language Extensions +#

The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0.

Among the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all.

In toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future.

Additionally, these features are disabled by default. To use them, you must explicitly set the corresponding feature flags to true. This design choice ensures that non-standard features are only used intentionally.

Some of these features may eventually be merged into the TOML language itself. If a feature is officially adopted, the corresponding experimental implementation in toml11 may be removed in a minor version update after the official feature is implemented.

null +#

This feature allows the use of null as a value in TOML files.

a = null
+b = [ 1, 2, 3, null, 5]
+

To enable this, set the ext_null_value flag in toml::spec to true.

When parsed, it will be treated as toml::value_t::empty, similar to a default-constructed value. However, the location information within the file will be set.

null is parsed only in the context of values. Therefore, if null is used as a key, it will be interpreted as the string "null", as it has been in the standard TOML.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec;
+    spec.ext_null_value = true;
+
+    const auto v = toml::parse_str("a = null", spec);
+
+    assert(v.at("a").is_empty());
+    assert(v.at("a").is(toml::value_t::empty));
+
+    return 0;
+}
+

Hexadecimal Format for Floating-Point Numbers +#

This feature allows the use of hexadecimal format for floating-point numbers in TOML files.

a = 0x1.91eb851eb851fp+1 # 3.14
+

To enable this, set the ext_hex_float flag in toml::spec to true.

The format follows the printf specification for %a/%A.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec;
+    spec.ext_hex_float = true;
+
+    const auto v = toml::parse_str("a = 0x1.91eb851eb851fp+1", spec);
+
+    assert(v.at("a").is_floating());
+    assert(v.at("a").as_floating() == 3.14);
+
+    return 0;
+}
+

Suffixes for Integers and Floating-Point Numbers +#

This feature allows the use of suffixes for numbers in TOML files. It can be applied to integers and floating-point numbers in decimal notation.

This is particularly useful for displaying units.

a = 86_400_sec
+b = 3.1416_rad
+c = 10_μm
+

However, these are purely suffixes and do not perform any unit conversion. If unit conversion is needed, users should implement it by referencing the suffix.

To enable this, set the ext_num_suffix flag in toml::spec to true.

The suffix must be separated from the number by an underscore (_).

For clarity, the suffix cannot start with a digit.

distance = 100_m  # valid
+distance = 10_0m  # invalid
+distance = 10_0_m # valid
+

The suffix is stored as std::string suffix in the format information.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec;
+    spec.ext_hex_float = true;
+
+    const auto v = toml::parse_str("a = 86_400_sec", spec);
+
+    assert(v.at("a").is_integer());
+    assert(v.at("a").as_integer() == 86400);
+    assert(v.at("a").as_integer_fmt().suffix == "sec");
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/index.html b/docs/features/index.html new file mode 100644 index 00000000..a4ef87ef --- /dev/null +++ b/docs/features/index.html @@ -0,0 +1,24 @@ +features | toml11 + +
features +

Features +#

This section explains the main features provided by toml11, with examples.

Parsing Files and Strings +#

Describes the functions for parsing files and strings, and how to handle the errors they produce.

Includes:

  • Parsing files
  • Parsing strings
  • Parsing byte arrays
  • Parsing files without throwing exceptions
  • Parsing strings without throwing exceptions
  • Parsing byte arrays without throwing exceptions

Extracting Values from toml::value +#

Explains how to examine, extract, and convert the data types held by toml::value.

Includes:

  • Checking the type of a value using member functions
  • Accessing values using member functions
  • Accessing comments
  • Handling inline tables and dotted keys
  • Handling date information
  • Using toml::get<T> for conversion
  • Using toml::get_or to specify a fallback value
  • Using toml::find<T> for searching and conversion
  • Using toml::find_or to specify a fallback value
  • Defining conversions with user-defined types
  • Applying functions with toml::visit
  • Constructing toml::value

Creating Error Messages +#

Explains how to generate error messages with location information from a TOML file using toml::value.

Includes:

  • Extracting location information from toml::value
  • Constructing error messages
  • Adding color to the output

Serializing TOML Files +#

Describes how to format the values of toml::value and the available formatting options.

Includes:

  • Specifying formats for each value of toml::value
  • Formatting toml::value into a string

Configuring Types of toml::value +#

Explains how to customize the types stored in toml::value (such as integer_type and table_type).

Includes:

  • Defining type_config
  • Using ordered_type_config
  • Disabling comment preservation
  • Using different containers like std::deque
  • Using different numeric types like boost::multiprecision

TOML Literals +#

Explains the _toml literal for embedding TOML files directly in C++ code.

Includes:

  • Using TOML literals

TOML Language Version +#

Describes the versions of the TOML language supported by toml11 and how to control language features added in TOML-v1.1.0.

Includes:

  • Using TOML language version 1.1.0
  • Using specific features of TOML language version 1.1.0

TOML Language Extensions +#

Explains the custom extensions to the TOML language provided by toml11.

Includes:

  • Supporting null
  • Supporting hexadecimal format for floating-point numbers
  • Allowing units for numbers
\ No newline at end of file diff --git a/docs/features/index.xml b/docs/features/index.xml new file mode 100644 index 00000000..6267f18a --- /dev/null +++ b/docs/features/index.xml @@ -0,0 +1,20 @@ +features on toml11https://toruniina.github.io/toml11/docs/features/Recent content in features on toml11Hugoenparsing fileshttps://toruniina.github.io/toml11/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/parsing_files/Parsing Files and Strings # In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse. +Upon success, these functions return a toml::value. Although the parsed file is always a table, the return type is not toml::table. This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map&lt;std::string, toml::value&gt;. To include metadata, a toml::value is returned instead of a toml::table. The toml::value corresponding to the root of the file will always hold a table_type.getting valueshttps://toruniina.github.io/toml11/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/value/Retrieving Values # This section explains how to access the values stored in toml::value. +Accessing Values Using Member Functions # is_something and as_something # toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value. +Additionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type. +For a complete list, refer to the toml::value reference.error messagehttps://toruniina.github.io/toml11/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/error_message/Outputting Error Messages # toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get&lt;T&gt;/find&lt;T&gt;, and as_integer(), among others. +For instance, if a syntax error in an integer is detected during parsing, an error message might look like this: +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 Or, if a type different from the one actually stored is requested:serializing valueshttps://toruniina.github.io/toml11/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/serialize/Outputting TOML Files # Using toml::format, you can convert a toml::value to a string. +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If the toml::value contains a table_type, it is interpreted as the root table of the file. +If a toml::value containing anything other than table_type is passed, only that value is formatted.configuring typeshttps://toruniina.github.io/toml11/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/configure_types/Customizing Types # The toml::value class uses std::int64_t for integer_type and std::unordered_map&lt;key_type, value_type&gt; for table_type. +However, in some cases, you may want to use boost::multiprecision::int128_t or std::map. +To accommodate this, toml::value is implemented with template parameters that allow you to change the stored types. +Just as std::string is actually an alias for std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt;, toml::value is an alias for toml::basic_value&lt;toml::type_config&gt;. +Here, we will explain the types contained in toml::type_config and how to define a different config type.toml literalhttps://toruniina.github.io/toml11/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/literal/_toml Literal # With the &quot;&quot;_toml literal, you can format TOML files inline. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } When including line breaks, raw string literals come in handy. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If a value is written on its own, that value is returned.toml spechttps://toruniina.github.io/toml11/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/toml_spec/TOML Language Version # You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec. +Specifying TOML Version # You can construct a toml::spec from toml::semantic_version. +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } However, to make this shorter, the toml::spec::v() function is provided. +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } If not specified explicitly, toml::spec::default_version() is used to construct with default values.extensionhttps://toruniina.github.io/toml11/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/extension/TOML Language Extensions # The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0. +Among the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all. +In toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future. \ No newline at end of file diff --git a/docs/features/literal/index.html b/docs/features/literal/index.html new file mode 100644 index 00000000..a15109dd --- /dev/null +++ b/docs/features/literal/index.html @@ -0,0 +1,75 @@ +toml literal | toml11 + +
toml literal +

_toml Literal +#

With the ""_toml literal, you can format TOML files inline.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto v = "a = 42"_toml;
+
+    assert(v.at("a").as_integer() == 42);
+
+    return 0;
+}
+

When including line breaks, raw string literals come in handy.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto v = R"(
+        a = 42
+        b = "foo"
+    )"_toml;
+
+    assert(v.at("a").as_integer() == 42);
+    assert(v.at("b").as_string()  == "foo");
+
+    return 0;
+}
+

If a value is written on its own, that value is returned.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto a = "42"_toml;
+    const auto b = "12:34:56"_toml;
+
+    assert(a.as_integer() == 42);
+    assert(b.as_local_time().hour   == 12);
+    assert(b.as_local_time().minute == 34);
+    assert(b.as_local_time().second == 56);
+
+    return 0;
+}
+

TOML allows keys consisting solely of numbers. Therefore, [1] is a valid table name.

When there’s ambiguity between table definitions and arrays, table definitions take precedence.

To interpret as an array, please use a trailing comma.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto t = "[1]"_toml;  // {1 = {}}
+    const auto a = "[1,]"_toml; // [1,]
+
+    assert(t.is_table());
+    assert(t.at("1").is_table());
+
+    assert(a.is_array());
+    assert(a.at(0).as_integer() == 1);
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/parsing_files/index.html b/docs/features/parsing_files/index.html new file mode 100644 index 00000000..5b9dadd0 --- /dev/null +++ b/docs/features/parsing_files/index.html @@ -0,0 +1,136 @@ +parsing files | toml11 + +
parsing files +

Parsing Files and Strings +#

In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse.

Upon success, these functions return a toml::value. +Although the parsed file is always a table, the return type is not toml::table. +This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map<std::string, toml::value>. +To include metadata, a toml::value is returned instead of a toml::table. +The toml::value corresponding to the root of the file will always hold a table_type.

Parsing Files +#

To parse files, use either +toml::parse +or +toml::try_parse.

toml::parse +#

Specifying the Filename with std::string +#

toml::parse +accepts a filename as a string, opens the file, and parses it.

The following sample code parses a file named input.toml, extracts the title variable as a string, and prints it.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const toml::value input = toml::parse("input.toml");
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

Specifying a File with std::filesystem::path +#

toml::parse can accept a std::filesystem::path.

This requires C++17 or later, as it relies on the <filesystem> support.

Specifying an Input Stream with std::istream +#

toml::parse can also accept an std::istream.

Open a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

Without the filename information, error messages will display "unknown file". To avoid this, you can pass the filename as a std::string in the second argument when using std::istream.

You can use streams other than std::ifstream, such as std::istringstream. Note that the entire content is readable at the time of the call.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::string filename("input.toml");
+    std::ifstream ifs(filename);
+    const toml::value input = toml::parse(ifs, filename);
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

Specifying a File with FILE* +#

toml::parse can also accept a FILE*.

Open a stream in binary mode by passing "rb" to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

As with std::istream, you need to provide the filename as a string in the second argument.

When passing a FILE*, if the file read fails, errno will be reported.

Error Handling +#

toml::parse throws a toml::syntax_error if it encounters a syntax error.

toml::syntax_error is derived from toml::exception, which in turn is derived from std::exception.

Therefore, you can use the what() member function to retrieve the error message from a toml::syntax_error.

Additionally, toml::syntax_error contains a std::vector<toml::error_info>, which can be accessed using the errors() member function.

toml::parse attempts to recover from minor errors and report multiple errors whenever possible. While it can often recover from simple errors like number format issues, errors within arrays or tables might not be recoverable and may lead to multiple similar error reports. If you find the error messages redundant, you can use only the front() of the std::vector<toml::error_info> to get a message about the most critical issue.

#include <toml.hpp>
+
+int main()
+{
+    try {
+        const toml::value input = toml::parse("input.toml");
+        std::cout << input.at("title").as_string() << std::endl;
+    } catch(const toml::syntax_error& err) {
+        // report all the errors
+        std::cerr << err.what() << std::endl;
+
+        // report the first error only
+        std::cerr << err.errors().front() << std::endl;
+    }
+}
+

toml::try_parse +#

While toml::parse throws an exception on failure, toml::try_parse does not throw exceptions when it fails.

Instead, its return type is toml::result<toml::value, std::vector<toml::error_info>>.

The result type holds either a success value or a failure value, similar to Rust’s Result or Haskell’s Either.

#include <toml.hpp>
+
+int main()
+{
+    const auto parse_result = toml::try_parse("input.toml");
+    if(parse_result.is_ok())
+    {
+        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
+    }
+    else
+    {
+        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
+    }
+    return 0;
+}
+

To check which value the result type holds, use the is_ok() and is_err() functions. The success or failure value can be retrieved using unwrap() and unwrap_err(), respectively. If unwrap fails, it throws a bad_result_access exception. Using the as_ok() and as_err() functions does not throw exceptions on failure, but results in undefined behavior.

Although try_parse does not throw syntax_error or file_io_error, it returns the same toml::error_info as the failure type in the result. However, it is not entirely exception-free.

If an internal standard library error occurs, such as std::bad_alloc when a vector fails to allocate memory, toml::try_parse does not catch this and will let it propagate. Thus, exceptions originating from the standard library may still be thrown.

Parsing Strings +#

toml::parse_str +#

toml::parse_str accepts the string to be parsed directly, instead of a filename.

For the part of the error message that corresponds to the TOML file’s name, if the std::source_location equivalent compiler extension is available, the name and line number of the C++ file that called parse_str will be used instead.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const toml::value input = toml::parse_str("title = \"parse_str\"");
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

toml::try_parse_str +#

toml::try_parse_str also takes the string to be parsed directly, similar to parse_str. Like try_parse, it uses toml::result to report errors.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const auto parse_result = toml::try_parse_str("title = \"parse_str\"");
+    if(parse_result.is_ok())
+    {
+        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
+    }
+    else
+    {
+        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
+    }
+    return 0;
+}
+

Parsing Byte Arrays +#

It is also possible to parse byte arrays instead of files.

Since the byte arrays must be encoded in UTF-8, unsigned char is used.

toml::parse(std::vector<unsigned char>) +#

The behavior is the same as toml::parse.

When parsing byte arrays, a filename is required.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::vector<unsigned char> bytes{/* ... */};
+    const toml::value input = toml::parse(bytes, "internal bytes");
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

toml::try_parse(std::vector<unsigned char>) +#

The behavior is the same as toml::try_parse.

When parsing byte arrays, a filename is required.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::vector<unsigned char> bytes{/* ... */};
+    const auto parse_result = toml::try_parse(bytes, "internal bytes");
+    if(parse_result.is_ok())
+    {
+        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
+    }
+    else
+    {
+        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
+    }
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/serialize/index.html b/docs/features/serialize/index.html new file mode 100644 index 00000000..9ff1c83e --- /dev/null +++ b/docs/features/serialize/index.html @@ -0,0 +1,104 @@ +serializing values | toml11 + +
serializing values +

Outputting TOML Files +#

Using toml::format, you can convert a toml::value to a string.

#include <toml.hpp>
+#include <cassert>
+
+int main()
+{
+    const toml::value v(toml::table{
+        {"a", 42},
+        {"b", "foo"},
+    });
+    const std::string s = toml::format(v);
+
+    const toml::value u = toml::parse_str(s);
+
+    assert(u.at("a").as_integer() == 42);
+    assert(u.at("b").as_string()  == "foo");
+
+    return 0;
+}
+

If the toml::value contains a table_type, it is interpreted as the root table of the file.

If a toml::value containing anything other than table_type is passed, only that value is formatted.

Certain format specifications may require a key to be provided for formatting. For example, toml::array_format::array_of_tables formats as [[array.of.tables]], which requires key access.

If a format specification that requires a key is provided without a key, a toml::serialization_error is thrown.

Additionally, if there are values that contradict the format specification, a toml::serialization_error is thrown. For instance, specifying integer_format::hex for a negative integer, or string_format::literal for a string containing newlines, will cause an error.

The method for specifying formats is explained later.

Outputting with Keys +#

You can pass a key to toml::format as a std::string.

In this case, the key is considered to be under the root table, and the passed value corresponds to that key.

For nested keys, you can pass a std::vector<std::string>.

#include <toml.hpp>
+#include <cassert>
+
+int main()
+{
+    const toml::value v(toml::table{
+        {"a", 42},
+        {"b", "foo"},
+    });
+    const std::string s = toml::format("bar", v);
+
+    const toml::value u = toml::parse_str(s);
+
+    assert(u.at("bar").at("a").as_integer() == 42);
+    assert(u.at("bar").at("b").as_string()  == "foo");
+
+    return 0;
+}
+

Specifying Formats +#

Each type in toml::value has a corresponding format information type.

For toml::value::integer_type, there is toml::integer_format_info. +For toml::value::table_type, there is toml::table_format_info.

These format information types are set when parsing and are retained even if the value is changed, as long as the type remains the same.

You can access and directly edit these formats using member functions like as_integer_fmt() or as_table_fmt().

Below are some examples explaining how to use these formats.

For more details on how to access formats, refer to the toml::value reference. For a complete list and detailed information on format information classes, see the format reference.

Specifying Integer Formats +#

For integers, you can specify the radix, width, and the position of _.

When using hex, oct, or bin, values are padded with zeros until the specified width is reached. For dec, the width specification adds spaces, which are not parsed.

For more details, see the integer format reference.

Single-Line and Multi-Line Arrays +#

For arrays, you can specify toml::array_format::oneline or toml::array_format::multiline.

# oneline
+a = [1, 2, 3, 4, 5]
+# multiline
+a = [
+  1,
+  2,
+  3,
+  4, 
+  5
+]
+

When using multiline, you can specify the indentation. Each element is indented by the amount specified in body_indent, and the closing bracket ] is indented by the amount specified in closing_indent.

The type of character used for indentation is specified by indent_type, and you can choose between toml::indent_char::space or toml::indent_char::tab.

Ensure that the same type of character is used for indentation throughout the document.

If different types of characters are specified for indentation within the same file, the result is undefined. Some form of indentation will be applied, but the type of character and the depth of the indentation may be inconsistent.

If all elements of an array have table_type, you can specify toml::array_format::array_of_tables.

If you do not specify array_of_tables and use multiline, the tables will be formatted as inline tables.

# multiline
+a = [
+  {foo = 42},
+  {bar = "hoge"},
+]
+
+# array_of_tables
+[[a]]
+foo = 42
+
+[[a]]
+bar = "hoge"
+

By default, toml::array_format::default_format is used. This automatically selects an appropriate format.

For example, with default_format, if all elements are table_type, it will choose array_of_tables. Short arrays are formatted as oneline, while long or nested arrays, or those with complex elements, are formatted as multiline.

For more details, see the array format reference.

Inline Tables +#

To format a table as an inline table, specify toml::table_format::oneline. +For standard tables, use toml::table_format::multiline.

oneline = {a = 42, b = "foo"}
+
+[multiline]
+a = 42
+b = "foo"
+

In TOML v1.1.0, line breaks within inline tables are allowed. In this case, use toml::table_format::multiline_oneline. This is only applied if the corresponding feature flag is set to true as per the TOML version specification described later.

multiline_oneline = {
+    a = 42,
+    b = "foo"
+}
+

For more details, see the table format reference.

Specifying the TOML Language Version for Output +#

Certain language features, such as line breaks within inline tables and \x escape sequences, are only available after TOML v1.1.0.

The toml::format function accepts a toml::spec as its argument.

This allows you to specify the version of TOML to use during serialization.

When you use toml::parse with a toml::spec to leverage new features, +the parsed values may contain format information that is only compatible with that specific version. +Ensure that you pass the same toml::spec to toml::format to maintain compatibility.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const auto spec = toml::spec::v(1, 1, 0);
+
+    const toml::value v = toml::parse("input.toml", spec);
+
+    std::cout << toml::format(v, spec) << std::endl;
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/toml_spec/index.html b/docs/features/toml_spec/index.html new file mode 100644 index 00000000..aac4e652 --- /dev/null +++ b/docs/features/toml_spec/index.html @@ -0,0 +1,61 @@ +toml spec | toml11 + +
toml spec +

TOML Language Version +#

You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec.

Specifying TOML Version +#

You can construct a toml::spec from toml::semantic_version.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec(toml::semantic_version(1, 1, 0));
+    return 0;
+}
+

However, to make this shorter, the toml::spec::v() function is provided.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec = toml::spec::v(1, 1, 0);
+    return 0;
+}
+

If not specified explicitly, toml::spec::default_version() is used to construct with default values.

The default value depends on the version of toml11 and follows the latest version of the TOML language released at that time.

As of v4.0.0, TOML v1.1.0 has not been released yet, so the default TOML version is v1.0.0.

Some features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.

If they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.

As such, any features related to future versions should be considered unstable.

Parsing with Version Specification +#

The overload of toml::parse takes a toml::spec following the file name.

This allows you to change the TOML version being used.

#include <toml.hpp>
+
+int main()
+{
+    toml::value input = toml::parse("input.toml", toml::spec::v(1, 1, 0));
+    return 0;
+}
+

Serializing with Version Specification +#

The overload of toml::format takes a toml::spec following the toml::value.

This allows you to change the TOML version being used.

#include <toml.hpp>
+
+int main()
+{
+    toml::value v = toml::parse("input.toml", toml::spec::v(1, 1, 0));
+    std::cout << toml::format(v, toml::spec::v(1, 1, 0)) << std::endl;
+    return 0;
+}
+

If a format is passed that is not permitted by the provided toml::spec, it will be ignored, and another format will be used as a fallback.

Specifying Newly Added Features in TOML +#

With version upgrades in TOML, multiple new features are introduced, and it’s possible to enable only some of them.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec = toml::spec::v(1, 0, 0);
+
+    // Allowing newlines in inline tables
+    spec.v1_1_0_allow_newlines_in_inline_tables = true;
+
+    toml::value input = toml::parse("input.toml", spec);
+    return 0;
+}
+

For a full list of all flags, refer to toml::spec.

\ No newline at end of file diff --git a/docs/features/value/index.html b/docs/features/value/index.html new file mode 100644 index 00000000..c26f02a6 --- /dev/null +++ b/docs/features/value/index.html @@ -0,0 +1,375 @@ +getting values | toml11 + +
getting values +

Retrieving Values +#

This section explains how to access the values stored in toml::value.

Accessing Values Using Member Functions +#

is_something and as_something +#

toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value.

Additionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type.

For a complete list, refer to the toml::value reference.

toml::value v = /* ... */;
+if(v.is_string())
+{
+    std::cout << v.as_string() << std::endl;
+}
+

If the stored value is of a different type than specified, a toml::type_error is thrown.

The what() method will contain a message like the following:

[error] toml::value::as_string(): bad_cast to string
+ --> input.toml
+   |
+ 1 | a = 123_456
+   |     ^^^^^^^-- the actual type is integer
+

toml::value_t +#

Type information can be identified using enum class toml::value_t.

The type() member function returns the type information of the currently stored value.

toml::value v = /* ... */;
+switch(v.type())
+{
+    case toml:value_t::empty          : { /*...*/ break; }
+    case toml:value_t::boolean        : { /*...*/ break; }
+    case toml:value_t::integer        : { /*...*/ break; }
+    case toml:value_t::floating       : { /*...*/ break; }
+    case toml:value_t::string         : { /*...*/ break; }
+    case toml:value_t::offset_datetime: { /*...*/ break; }
+    case toml:value_t::local_datetime : { /*...*/ break; }
+    case toml:value_t::local_date     : { /*...*/ break; }
+    case toml:value_t::local_time     : { /*...*/ break; }
+    case toml:value_t::array          : { /*...*/ break; }
+    case toml:value_t::table          : { /*...*/ break; }
+    default: {break;}
+}
+

The is(toml::value_t) member function returns true if the stored value is of the given value_t type, otherwise it returns false.

toml::value v = /* ... */;
+if(v.is(toml::value_t::integer))
+{
+    std::cout << v.as_integer() << std::endl;
+}
+

at, [], contains, size, push_back, emplace_back +#

toml::value provides some member functions similar to those of standard library containers.

These functions internally convert toml::value to the corresponding type and call the respective member functions.

at(std::size_t i), operator[](std::size_t i) +#

These are equivalent to as_array().at(i) and as_array()[i].

toml::value uses std::vector<toml::value> as array_type by default, so at throws std::out_of_range on error, while operator[] results in undefined behavior.

toml::value v(toml::array{1,2,3});
+std::cout << v.at(1);
+

If the stored type is not array_type, a type_error is thrown.

at(std::string key), operator[](std::string key) +#

These are equivalent to as_table().at(key) and as_table()[key].

toml::value uses std::unordered_map<std::string, toml::value> as table_type by default, so if the corresponding value does not exist, at throws std::out_of_range, while operator[] constructs a new toml::value and returns a reference to it. Therefore, there is no const version of operator[].

toml::value v(toml::table{});
+v["a"] = 42;
+

If the stored type is not table_type, a type_error is thrown.

size() +#

Returns the length.

For array_type or table_type, it returns the number of elements; for string_type, it returns the number of characters (in bytes).

If the stored type is none of these, a type_error is thrown.

push_back(), emplace_back() +#

These are equivalent to as_array().push_back() and as_array().emplace_back().

If the stored type is not array_type, a type_error is thrown.

Accessing Comments +#

In toml11, comments are parsed by default and saved line by line with the corresponding value.

A comment corresponds to the value that comes immediately after the consecutive lines of comments, or to the value on the same line as the comment.

If there is no value immediately before or after the comment, it is not associated with any value and is ignored.

# input.toml
+
+# This is a comment about a.
+a = 42
+b = 3.14 # This is a comment about b.
+
+# This comment is ignored because it has no corresponding value.
+
+# This is the 1st comment about c.
+# This is the 2nd comment about c.
+c = "foo" # This is the final comment about c.
+# This comment is NOT a comment about c.
+

Comments corresponding to a value can be accessed using the comments() member function of toml::value.

comments() returns a container that has the same member functions as std::vector<std::string>.

const auto v = toml::parse("input.toml");
+const auto& a = v.at("a");
+const auto& b = v.at("b");
+const auto& c = v.at("c");
+
+assert(a.comments().size() == 1);
+assert(a.comments().at(0) == "# This is a comment about a.");
+
+assert(b.comments().size() == 1);
+assert(b.comments().at(0) == "# This is a comment about b.");
+
+assert(c.comments().size() == 3);
+assert(c.comments().at(0) == "# This is the 1st comment about c.");
+assert(c.comments().at(1) == "# This is the 2nd comment about c.");
+assert(c.comments().at(2) == "# This is the final comment about c.");
+

Comments related to the root table of the entire file are written at the beginning of the file.

# This is a comment about the root table.
+# This is also a comment about the root table.
+
+# This comment is ignored.
+
+# This is a comment about a.
+a = 42
+

However, if a value immediately follows the initial comment, the comment is interpreted as pertaining to that value, and there are no comments for the root table.

# This is a comment about a.
+# This is also a comment about a.
+a = 42
+

Handling Inline Tables and Dotted Keys +#

An inline table is simply a table, and there is no difference in handling it compared to other tables in C++ code.

a = {b = 42, c = "foo"}
+

Dotted keys are also just tables, with no difference in handling compared to other tables in C++ code.

a.b = 42
+a.c = "foo"
+

These TOML files are identical to the following file.

[a]
+b = 42
+c = "foo"
+

Thus, they can all be processed with the exact same code.

const auto input = toml::parse("input.toml");
+
+assert(input.at("a").at("b").as_integer() == 42);
+assert(input.at("a").at("c").as_string()  == "foo");
+

However, it is possible to distinguish them based on format information.

const auto input = toml::parse("input.toml");
+switch(input.at("a").as_table_fmt().fmt)
+{
+    case toml::table_format::oneline: 
+    {
+        std::cout << "inline table" << std::endl;
+        break;
+    }
+    case toml::table_format::multiline:
+    {
+        std::cout << "normal table" << std::endl;
+        break;
+    }
+    case toml::table_format::dotted:
+    {
+        std::cout << "dotted keys" << std::endl;
+        break;
+    }
+}
+

This format information is also considered during serialization, which will be described later.

Handling Date and Time Information +#

local_date, +local_time, +local_datetime, and +offset_datetime +are parsed into dedicated structures with corresponding member variables in toml11.

When using these, you can directly extract the values or use toml::get and toml::find to convert them into types such as std::chrono::system_clock::time_point or std::tm.

Converting Using toml::get<T> +#

toml::get<T> is a function that converts and retrieves the value stored in toml::value. +Specify the desired target type as T.

const toml::value v = /*...*/;
+std::cout << toml::get<int>(v) << std::endl;
+

The toml::find<T> function, described later, also has the same functionality for type conversion.

If an unsupported type is specified for the stored value, a toml::type_error is thrown.

Simple Conversions +#

boolean_type +#

Conversion from boolean_type is possible only to bool.

integer_type +#

Any type for which std::is_integral<T> is true, except bool, can be converted from integer_type.

toml::value v(42);
+const auto u32 = toml::get<std::uint32_t>(v);
+const auto i16 = toml::get<short>(v);
+

floating_type +#

Any type for which std::is_floating_point<T> is true can be converted from floating_type.

toml::value v(3.14);
+const auto f64 = toml::get<double>(v);
+const auto f32 = toml::get<float >(v);
+

string_type +#

string_type can be converted to std::string. +From C++17 onwards, it can also be converted to std::string_view.

toml::value v("foo");
+const auto s = toml::get<std::string>(v);
+
+// C++17
+const auto sv = toml::get<std::string_view>(v);
+

datetime variants +#

local_date, +local_datetime, and +offset_datetime represent specific dates and times, +so they can be converted to std::chrono::system_clock::time_point.

However, since local_time does not include date information, it supports conversion to std::chrono::duration as the elapsed time from 00:00.00.

Additionally, local_date and local_datetime conversions take the executing machine’s timezone into account.

date = 2024-01-23
+time = 12:30:00
+l_dt = 2024-01-23T12:30:00
+o_dt = 2024-01-23T12:30:00+09:00
+
const auto input = toml::parse("input.toml");
+
+const auto date = toml::get<std::chrono::system_clock::time_point>(input.at("date"));
+const auto l_dt = toml::get<std::chrono::system_clock::time_point>(input.at("l_dt"));
+const auto o_dt = toml::get<std::chrono::system_clock::time_point>(input.at("o_dt"));
+
+const auto time = toml::get<std::chrono::minutes>(input.at("time")); // 12 * 60 + 30 min
+

Conditions for Obtaining References +#

toml::get<T> can return a reference if T is the exact type stored in toml::value.

Conversely, if a conversion is necessary (e.g., extracting an integer stored as std::int64_t into std::uint32_t), it is not possible to return a reference to the converted type.

When no conversion is needed, the returned reference can be used to modify the value.

toml::value v(42);
+
+toml::get<toml::value::integer_type>(v) = 6 * 9;
+
+assert(v.as_integer() == 54);
+

Converting Arrays to STL Containers +#

If all elements in an array have the same type and can be converted to T, it is possible to convert them to std::vector<T>.

a = [1, 2, 3, 4, 5]
+
const auto a = toml::get<std::vector<int>>(input.at("a"));
+

Other STL containers can also be used.

const auto a1 = toml::get<std::deque<int>>(input.at("a"));
+const auto a2 = toml::get<std::list <int>>(input.at("a"));
+const auto a3 = toml::get<std::array<int, 5>>(input.at("a"));
+

When converting to std::array, the number of elements must match. If they don’t match, a std::out_of_range exception is thrown.

Non-STL containers that have a default constructor and a push_back method can also be converted using toml::get.

const auto a = toml::get<boost::container::small_vector<int, 8>>(input.at("a"));
+

Converting Arrays to std::pair or std::tuple +#

If an array contains elements of different types, it can be converted to std::pair or std::tuple.

a = [true, 3.14]
+b = [42, 2.718, "foo"]
+
const auto a = toml::get<std::pair<bool, double>>(input.at("a"));
+const auto b = toml::get<std::tuple<int, double, std::string>>(input.at("b"));
+

As with std::array, the length of the array must match the number of elements in the std::pair or std::tuple. If they don’t match, a std::out_of_range exception is thrown.

Additionally, each element must be convertible to the corresponding element in the std::pair or std::tuple. If conversion is not possible, a toml::type_error exception is thrown.

Converting Nested Arrays +#

Nested arrays can be converted to nested containers.

a = [ [1, 2, 3], [4, 5, 6] ]
+
const auto a = toml::get<std::vector<std::vector<int>>>(input.at("a"));
+

If the types are different, std::pair or std::tuple can be useful.

a = [ [1, 2, 3], ["foo", "bar"] ]
+
const auto a = toml::get<
+    std::pair<std::vector<int>, std::vector<std::string>>
+    >(input.at("a"));
+

Converting Tables to std::map +#

If all values in a table have the same type, they can be converted to std::map or std::unordered_map.

t = {a = 1, b = 2}
+
const auto t = toml::get<std::map<std::string, int>>(input.at("t"));
+

Non-STL containers that have a default constructor and an emplace(key, mapped) method can also be converted using toml::get.

const auto t = toml::get<boost::container::flat_map<std::string, int>>(input.at("t"));
+

If the conversion of any element fails, a toml::type_error exception is thrown.

Using toml::get_or to Specify a Value on Failure +#

toml::get throws a toml::type_error exception if the conversion fails.

By using toml::get_or, you can specify a default value to return instead of an exception in case of a conversion failure.

Unlike toml::get<T>, get_or infers the target type from the arguments, so there is no need to specify <T>.

const auto a = toml::get_or(input.at("a"), 42);
+

The types that can be converted are the same as for toml::get.

If you specify toml::value::xxx_type, you can also retrieve a reference, but in that case, the argument must also be a reference.

toml::value::integer_type a_default = 42;
+auto a& = toml::get_or(input.at("a"), a_default);
+

Using toml::find<T> to Search and Convert Simultaneously +#

toml::find<T> is a function that searches for a value in a toml::value holding a table and simultaneously performs the same type conversion as toml::get.

const auto a = toml::find<int>(input, "a");
+// Equivalent to: const auto a = toml::get<int>(input.at("a"));
+

toml::find<T> can also be used with arrays.

const auto a  = input.at("a");
+const auto a2 = toml::find<int>(a, 2);
+// Equivalent to: const auto a2 = toml::get<int>(input.at("a").at(2));
+

If an error occurs during type conversion, toml::find<T> throws the same toml::type_error as toml::get. +If the key is not found or the index does not exist, it throws std::out_of_range.

If no type is specified, toml::find returns a toml::value without type conversion.

const auto a = toml::find(input, "a");
+// Equivalent to: const auto a = input.at("a");
+

toml::find<T> can access values recursively.

a = {b = {c = 42}}
+
const auto a_b_c = toml::find<int>(input, "a", "b", "c");
+// Equivalent to: const auto a = toml::get<int>(input.at("a").at("b").at("c"));
+

You can mix keys and indexes.

a = [ {b = 1}, {b = 2}, {b = 3} ]
+
const auto a_2_b = toml::find<int>(input, "a", 2, "b");
+// Equivalent to: const auto a = toml::get<int>(input.at("a").at(2).at("c"));
+

TOML supports a feature called quoted keys, which allows using normally disallowed characters in keys by enclosing them in "" or ''. Within quoted keys, . does not introduce tables.

"127.0.0.1" = "value"
+site."google.com" = true
+

You can read this TOML file as follows:

const auto input = toml::parse("input.toml");
+
+assert(input.at("127.0.0.1").as_string() == "value");
+assert(input.at("site").at("google.com").as_boolean());
+

To handle such cases seamlessly, toml11 does not automatically split keys containing .. Explicitly specifying the table hierarchy helps in structuring the input file correctly.

Reference: toml.io/Key

Using toml::find_or to Search and Specify a Value on Failure +#

toml::find_or works similarly to toml::find<T>, but allows specifying a default value to return if the search or conversion fails.

This is useful when you want to provide a fallback value instead of handling exceptions.

const auto a = toml::find_or(input, "a", 42);
+

Defining Conversions for User-Defined Types +#

With toml::get and toml::find, you can use user-defined types by employing one of the following methods.

Defining toml::from +#

In toml11, there is a toml::from type that supports conversions from user-defined types by specializing it as follows:

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+namespace toml
+{
+template<>
+struct from<extlib::foo>
+{
+    static extlib::foo from_toml(const toml::value& v)
+    {
+        return extlib::foo{
+            toml::find<int>(v, "a"),
+            toml::find<std::string>(v, "b")
+        };
+    }
+};
+} // toml
+

If you also want to support toml::value with a modified type configuration, do as follows:

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+namespace toml
+{
+template<>
+struct from<extlib::foo>
+{
+    template<typename TC>
+    static extlib::foo from_toml(const toml::basic_value<TC>& v)
+    {
+        return extlib::foo{
+            toml::find<int>(v, "a"),
+            toml::find<std::string>(v, "b")
+        };
+    }
+};
+} // toml
+

This definition can be automatically generated using TOML11_DEFINE_CONVERSION_NON_INTRUSIVE.

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b)
+

Alternatively, you can use a reflection library. Refer to the sample in example using boost-ext/reflect.

Defining a from_toml Member Function +#

You can also define a conversion by defining a from_toml member function.

When using this method, a default constructor is required.

struct bar
+{
+    int a;
+    std::string b;
+
+    void from_toml(const toml::value& v)
+    {
+        this->a = toml::find<int>(v, "a");
+        this->b = toml::find<std::string>(v, "b");
+        return ;
+    }
+};
+

If both are defined, toml::from takes precedence.

Constructor Accepting toml::value +#

If there is a constructor that accepts toml::value, conversion via toml::get can be performed.

struct baz
+{
+    explicit baz(const toml::value& v)
+        : a(toml::find<int>(v, "a")), b(toml::find<std::string>(v, "b"))
+    {}
+    int a;
+    std::string b;
+};
+

If both are defined, toml::from and from_toml take precedence.

Applying Functions with toml::visit +#

If you have a function object that can be applied to all types stored in toml::value, you can directly call that function without type conversion using toml::visit.

struct type_name_of
+{
+    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
+    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
+    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
+    std::string operator()(const toml::value::string_type         &) const {return "string";}
+    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
+    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
+    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
+    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
+    std::string operator()(const toml::value::array_type          &) const {return "array";}
+    std::string operator()(const toml::value::table_type          &) const {return "table";}
+};
+
+toml::value v(3.14);
+std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
+

Constructing toml::value +#

toml::value can be constructed not only internally by the parser but also in user code.

You can construct it by passing a type that is either the same as or convertible to the types stored in toml::value.

toml::value v1(true);
+toml::value v2(42);
+toml::value v3(3.14);
+

For arrays, you can use toml::array:

toml::value v(toml::array{1, 2, 3});
+

Alternatively, you can pass containers such as std::vector directly:

const std::vector<toml::value> a{1,2,3};
+toml::value v(a);
+

For tables, you can use toml::table:

toml::value v(toml::table{{"foo", 1}, {"bar", 2}, {"baz", 3}});
+

Or pass containers such as std::map directly:

const std::map<std::string, toml::value> t{
+        {"foo", 1}, {"bar", 2}, {"baz", 3}
+    }
+toml::value v(t);
+

You can pass format_info and comments to the constructor.

The type of comments is std::vector<std::string>. +Each element corresponds to a line.

toml::integer_format_info fmt;
+fmt.fmt = toml::integer_format::hex;
+fmt.spacer = 4;
+
+toml::value v1(0xDEADBEEF, fmt);
+toml::value v2(0xC0FFEE, fmt, {"hex value!"});
+

Converting to toml::value +#

When constructing toml::value from user-defined types, you can customize the behavior by defining toml::into or into_toml.

toml::into is particularly useful when converting types from other libraries.

Defining toml::into +#

By specializing toml::into, you can enable conversions to toml::value.

This is useful for types from external libraries that do not provide a conversion to toml::value.

Since toml::value passes type_config during conversion, you need to accept the template argument of basic_value.

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+template<>
+struct into<extlib::foo>
+{
+    template<typename TC>
+    static toml::basic_value<TC> into_toml(const extlib::foo& f)
+    {
+        return toml::basic_value<TC>(typename toml::basic_value<TC>::table_type{{"a", f.a}, {"b", f.b}});
+    }
+};
+

Defining into_toml Member Function +#

Similar to from_toml, you can define the conversion through a member function.

If toml::into is defined, it takes precedence.

struct bar
+{
+    int a;
+    std::string b;
+
+    template<typename TC>
+    toml::basic_value<TC> into_toml() const
+    {
+        return toml::basic_value<TC>(typename toml::basic_value<TC>::table_type{
+                {"a", this->a}, {"b", this->b}
+            });
+    }
+};
+
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..087c71cc --- /dev/null +++ b/docs/index.html @@ -0,0 +1,9 @@ +Docs | toml11 + +
Docs +
\ No newline at end of file diff --git a/docs/index.xml b/docs/index.xml new file mode 100644 index 00000000..545e8d15 --- /dev/null +++ b/docs/index.xml @@ -0,0 +1 @@ +Docs on toml11https://toruniina.github.io/toml11/docs/Recent content in Docs on toml11Hugoen \ No newline at end of file diff --git a/docs/installation/index.html b/docs/installation/index.html new file mode 100644 index 00000000..3dc41714 --- /dev/null +++ b/docs/installation/index.html @@ -0,0 +1,49 @@ +installation | toml11 + +
installation +

Installation +#

Using single_include +#

The ingle_include/toml.hpps is a single-file, header-only library that consolidates all the functionalities of toml11 into one file.

The simplest way to use it is to copy this file to a location included in your INCLUDE_PATH and then add #include <toml.hpp> to your source code.

The MIT license notice is included in both the comments and the toml::license_notice() function. +If you are redistributing the software without releasing the source code, you must either copy the toml11 license file and include it with your distribution, or ensure that the toml::license_notice() function can be called.

Cloning toml11 and using cmake +#

If you place toml11 within your repository, for example by using git submodule, and you are using cmake, you can make use of it by adding add_subdirectory(toml11) to your CMakeLists.txt.

add_subdirectory(toml11)
+add_executable(main main.cpp)
+target_link_libraries(main PUBLIC toml11::toml11)
+

toml11 will only run tests and install when it is the root project.

Installing using cmake +#

After cloning toml11, you can install it using cmake.

$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
+$ cmake --install ./build/ --prefix=/opt/toml11
+

If you want to run the test programs before installation, make sure to set -DTOML11_BUILD_TESTS=ON first.

Once the installation is complete, you can use it as follows:

find_package(toml11)
+add_executable(main main.cpp)
+target_link_libraries(main PRIVATE toml11::toml11)
+

Compiling with cmake to Create a Static Library +#

By defining -DTOML11_PRECOMPILE=ON when running cmake, you can precompile some of the functions in toml11, thereby reducing the overall compile time.

$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON
+

When linking the library, use target_link_libraries in CMake

target_link_libraries(your_target PUBLIC toml11::toml11)
+

or pass -DTOML11_COMPILE_SOURCES to the compiler to suppress header-only features.

However, since toml11 supports multiple C++ versions and may switch types based on the value of __cplusplus, +there is a possibility of link failures if the version used during build differs from the version used during usage. +If you encounter issues, set the required version using CMAKE_CXX_STANDARD during compilation. +If this is difficult, use it as a header-only library as usual.

The find_package(toml11) command defines TOML11_INCLUDE_DIR. +Even if you install it as a precompiled library, you can still use it as a header-only library by adding TOML11_INCLUDE_DIR to target_include_directories and avoiding the use of target_link_libraries.

find_package(toml11)
+add_executable(main main.cpp)
+# Include only, do not link
+target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR})
+

Compiling Examples +#

You can compile the examples/ directory by setting -DTOML11_BUILD_EXAMPLES=ON.

$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON
+$ cmake --build ./build/
+

The executable binaries for the examples will be generated in the examples/ directory.

Running Tests +#

To build the tests, set -DTOML11_BUILD_TESTS=ON.

$ git submodule update --init --recursive
+$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
+$ cmake --build ./build/
+$ ctest --test-dir ./build/
+

To run the toml-lang/toml-tests, set -DTOML11_BUILD_TOML_TESTS=ON. This will build toml11_decoder and toml11_encoder in the tests/ directory.

$ git submodule update --init --recursive
+$ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON
+$ cmake --build ./build/
+$ ctest --test-dir ./build/
+
\ No newline at end of file diff --git a/docs/installation/index.xml b/docs/installation/index.xml new file mode 100644 index 00000000..fc9c5aed --- /dev/null +++ b/docs/installation/index.xml @@ -0,0 +1 @@ +installation on toml11https://toruniina.github.io/toml11/docs/installation/Recent content in installation on toml11Hugoen \ No newline at end of file diff --git a/docs/reference/color/index.html b/docs/reference/color/index.html new file mode 100644 index 00000000..ce512ede --- /dev/null +++ b/docs/reference/color/index.html @@ -0,0 +1,92 @@ +color.hpp | toml11 + +
color.hpp +

color.hpp +#

In color.hpp, functions related to colorizing error messages are defined.

Colors are specified using ANSI escape code. +In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read.

Macros +#

TOML11_COLORIZE_ERROR_MESSAGE
+

If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default.

If not defined, colors are not applied by default. You need to specify them using toml::color::enable().

Functions +#

enable() +#

namespace toml {
+namespace color {
+void enable();
+} // color
+} // toml
+

Enables colorization using ANSI escape code.

Example +#

#include <toml.hpp>
+
+int main()
+{
+    toml::color::enable(); // All subsequent errors will be colored.
+    const auto input = toml::parse("input.toml");
+    return 0;
+}
+

disable() +#

namespace toml {
+namespace color {
+void disable();
+} // color
+} // toml
+

Disables colorization using ANSI escape code.

Example +#

#include <toml.hpp>
+
+int main()
+{
+    toml::color::disable(); // All subsequent errors will not be colored.
+    const auto input = toml::parse("input.toml");
+    return 0;
+}
+

should_color() +#

namespace toml {
+namespace color {
+bool should_color();
+} // color
+} // toml
+

Returns true if colorization is enabled, false otherwise.

Example +#

#include <toml.hpp>
+#include <iomanip>
+#include <iostream>
+
+int main()
+{
+    std::cout << "colorized? : " << std::boolalpha << toml::color::should_color() << std::endl;
+    return 0;
+}
+

Manipulators +#

namespace toml {
+namespace color {
+std::ostream& reset  (std::ostream&);
+std::ostream& bold   (std::ostream&);
+std::ostream& grey   (std::ostream&);
+std::ostream& gray   (std::ostream&);
+std::ostream& red    (std::ostream&);
+std::ostream& green  (std::ostream&);
+std::ostream& yellow (std::ostream&);
+std::ostream& blue   (std::ostream&);
+std::ostream& magenta(std::ostream&);
+std::ostream& cyan   (std::ostream&);
+std::ostream& white  (std::ostream&);
+} // color
+} // toml
+

Colorizes the foreground with ANSI escape code.

Example +#

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::cout << toml::color::red << "red!" << toml::color::reset << std::endl;
+    return 0;
+}
+

Related +#

\ No newline at end of file diff --git a/docs/reference/comments/index.html b/docs/reference/comments/index.html new file mode 100644 index 00000000..07cd3eb9 --- /dev/null +++ b/docs/reference/comments/index.html @@ -0,0 +1,309 @@ +comments.hpp | toml11 + +
comments.hpp +

comments.hpp +#

In comments.hpp, comment containers are provided.

toml::preserve_comments +#

preserve_comments is a container that preserves comments.

It has all the member functions of std::vector<std::string>.

Comments are preserved as std::string. +If the comment does not start with #, it will be prefixed with # during output. +However, this prefixing is not done when adding comments to the container.

Spaces are not automatically added, so if you want a space immediately after #, +either start the comment with a space or pass the comment with #.

namespace toml
+{
+class preserve_comments;
+
+bool operator==(const preserve_comments&, const preserve_comments&);
+bool operator!=(const preserve_comments&, const preserve_comments&);
+bool operator< (const preserve_comments&, const preserve_comments&);
+bool operator<=(const preserve_comments&, const preserve_comments&);
+bool operator> (const preserve_comments&, const preserve_comments&);
+bool operator>=(const preserve_comments&, const preserve_comments&);
+
+void swap(preserve_comments&,        preserve_comments&);
+void swap(preserve_comments&,        std::vector<std::string>&);
+void swap(std::vector<std::string>&, preserve_comments&);
+
+std::ostream& operator<<(std::ostream&, const preserve_comments&);
+} //toml
+

Member types +#

using container_type         = std::vector<std::string>;
+using size_type              = container_type::size_type;
+using difference_type        = container_type::difference_type;
+using value_type             = container_type::value_type;
+using reference              = container_type::reference;
+using const_reference        = container_type::const_reference;
+using pointer                = container_type::pointer;
+using const_pointer          = container_type::const_pointer;
+using iterator               = container_type::iterator;
+using const_iterator         = container_type::const_iterator;
+using reverse_iterator       = container_type::reverse_iterator;
+using const_reverse_iterator = container_type::const_reverse_iterator;
+

Member Functions +#

Default Constructor +#

preserve_comments() = default;
+

Constructs an empty preserve_comments.

Copy and Move Constructors +#

preserve_comments(preserve_comments const&) = default;
+preserve_comments(preserve_comments &&)     = default;
+

Constructs a preserve_comments by copying or moving.

Constructor (std::vector<std::string>) +#

explicit preserve_comments(const std::vector<std::string>& c);
+explicit preserve_comments(std::vector<std::string>&& c);
+

Constructs a preserve_comments holding the contents of std::vector<std::string>.

Constructor (discard_comments) +#

explicit preserve_comments(const discard_comments&);
+

Constructs an empty preserve_comments.

Constructor (Iterator) +#

template<typename InputIterator>
+preserve_comments(InputIterator first, InputIterator last);
+

Constructs a preserve_comments from the range represented by InputIterator pointing to std::string.

Constructor (std::initializer_list) +#

preserve_comments(std::initializer_list<std::string> x);
+

Constructs a preserve_comments from the range represented by std::initializer_list<std::string>.

Constructor (Size Specified) +#

explicit preserve_comments(size_type n);
+preserve_comments(size_type n, const std::string& x);
+

Constructs a preserve_comments with n comments.

If a std::string is passed, it replicates that comment n times.

Destructor +#

~preserve_comments() = default;
+

Destroys the preserve_comments.

operator=(preserve_comments) +#

preserve_comments& operator=(preserve_comments const&) = default;
+preserve_comments& operator=(preserve_comments &&)     = default;
+

Assigns a preserve_comments by copying or moving.

operator=(std::vector<std::string>) +#

preserve_comments& operator=(const std::vector<std::string>& c);
+preserve_comments& operator=(std::vector<std::string>&& c);
+

Assigns a std::vector<std::string> by copying or moving.

assign +#

template<typename InputIterator>
+void assign(InputIterator first, InputIterator last);
+void assign(std::initializer_list<std::string> ini);
+void assign(size_type n, const std::string& val);
+

The same as std::vector<std::string>::assign.

insert +#

iterator insert(const_iterator p, const std::string& x);
+iterator insert(const_iterator p, std::string&&      x);
+iterator insert(const_iterator p, size_type n, const std::string& x);
+template<typename InputIterator>
+iterator insert(const_iterator p, InputIterator first, InputIterator last);
+iterator insert(const_iterator p, std::initializer_list<std::string> ini);
+

The same as std::vector<std::string>::insert.

emplace +#

template<typename ... Ts>
+iterator emplace(const_iterator p, Ts&& ... args);
+

The same as std::vector<std::string>::emplace.

erase +#

iterator erase(const_iterator pos);
+iterator erase(const_iterator first, const_iterator last);
+

The same as std::vector<std::string>::erase.

swap +#

void swap(preserve_comments& other);
+

Swaps the comments.

push_back +#

void push_back(const std::string& v);
+void push_back(std::string&&      v);
+

The same as std::vector<std::string>::push_back.

pop_back +#

void pop_back();
+

The same as std::vector<std::string>::pop_back.

emplace_back +#

template<typename ... Ts>
+void emplace_back(Ts&& ... args);
+

The same as std::vector<std::string>::emplace_back.

clear +#

void clear();
+

The same as std::vector<std::string>::clear.

size +#

size_type size() const noexcept;
+

The same as std::vector<std::string>::size.

max_size +#

size_type max_size() const noexcept;
+

The same as std::vector<std::string>::max_size.

capacity +#

size_type capacity() const noexcept;
+

The same as std::vector<std::string>::capacity.

empty +#

bool empty() const noexcept;
+

The same as std::vector<std::string>::empty.

reserve +#

void reserve(size_type n);
+

The same as std::vector<std::string>::reserve.

resize +#

void resize(size_type n);
+void resize(size_type n, const std::string& c);
+

The same as std::vector<std::string>::resize.

shrink_to_fit +#

void shrink_to_fit();
+

The same as std::vector<std::string>::shrink_to_fit.

operator[] +#

reference       operator[](const size_type n)       noexcept;
+const_reference operator[](const size_type n) const noexcept;
+

The same as std::vector<std::string>::operator[].

at +#

reference       at(const size_type n)      ;
+const_reference at(const size_type n) const;
+

The same as std::vector<std::string>::at.

front +#

reference       front()       noexcept;
+const_reference front() const noexcept;
+

The same as std::vector<std::string>::front.

back +#

reference       back()        noexcept;
+const_reference back()  const noexcept;
+

The same as std::vector<std::string>::back.

data +#

pointer         data()        noexcept;
+const_pointer   data()  const noexcept;
+

The same as std::vector<std::string>::data.

begin/end +#

iterator       begin()        noexcept;
+iterator       end()          noexcept;
+const_iterator begin()  const noexcept;
+const_iterator end()    const noexcept;
+const_iterator cbegin() const noexcept;
+const_iterator cend()   const noexcept;
+

The same as std::vector<std::string>::begin/end.

rbegin/rend +#

reverse_iterator       rbegin()        noexcept;
+reverse_iterator       rend()          noexcept;
+const_reverse_iterator rbegin()  const noexcept;
+const_reverse_iterator rend()    const noexcept;
+const_reverse_iterator crbegin() const noexcept;
+const_reverse_iterator crend()   const noexcept;
+

The same as std::vector<std::string>::rbegin/rend

non-member functions +#

Comparison operator +#

bool operator==(const preserve_comments&, const preserve_comments&);
+bool operator!=(const preserve_comments&, const preserve_comments&);
+bool operator< (const preserve_comments&, const preserve_comments&);
+bool operator<=(const preserve_comments&, const preserve_comments&);
+bool operator> (const preserve_comments&, const preserve_comments&);
+bool operator>=(const preserve_comments&, const preserve_comments&);
+

It compares two preserve_comments in the same way as std::vector<std::string>.

swap +#

void swap(preserve_comments&,        preserve_comments&);
+void swap(preserve_comments&,        std::vector<std::string>&);
+void swap(std::vector<std::string>&, preserve_comments&);
+

Stream operator +#

std::ostream& operator<<(std::ostream&, const preserve_comments&);
+

Outputs as TOML comments.

If the first character is not #, it adds #.

toml::discard_comments +#

discard_comments serves as a container for discarding comments.

It encompasses all the member functions of std::vector<std::string>, but invoking functions that modify the content has no effect, leaving it perpetually empty.

namespace toml
+{
+class discard_comments;
+
+bool operator==(const discard_comments&, const discard_comments&);
+bool operator!=(const discard_comments&, const discard_comments&);
+bool operator< (const discard_comments&, const discard_comments&);
+bool operator<=(const discard_comments&, const discard_comments&);
+bool operator> (const discard_comments&, const discard_comments&);
+bool operator>=(const discard_comments&, const discard_comments&);
+
+void swap(discard_comments&, discard_comments&);
+
+std::ostream& operator<<(std::ostream&, const discard_comments&);
+} //toml
+

Member types +#

// container_type is not defined
+using size_type              = std::size_t;
+using difference_type        = std::ptrdiff_t;
+using value_type             = std::string;
+using reference              = std::string&;
+using const_reference        = std::string const&;
+using pointer                = std::string*;
+using const_pointer          = std::string const*;
+using iterator               = /* internal type: empty-iterator */
+using const_iterator         = /* internal type: empty-iterator */
+using reverse_iterator       = /* internal type: empty-iterator */
+using const_reverse_iterator = /* internal type: empty-iterator */
+

Default Constructor +#

discard_comments() = default;
+

Constructs an empty discard_comments.

Copy / Move Constructor +#

discard_comments(discard_comments const&) = default;
+discard_comments(discard_comments &&)     = default;
+

Constructs a discard_comments by copying or moving.

Constructor(std::vector<std::string>) +#

explicit discard_comments(const std::vector<std::string>& c);
+explicit discard_comments(std::vector<std::string>&& c);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(preserve_comments) +#

explicit discard_comments(const preserve_comments&);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(Iterator) +#

template<typename InputIterator>
+discard_comments(InputIterator first, InputIterator last);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(std::initializer_list) +#

discard_comments(std::initializer_list<std::string> x);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(サイズ指定) +#

explicit discard_comments(size_type n);
+discard_comments(size_type n, const std::string& x);
+

Constructs an empty discard_comments. Arguments are ignored.

Destructor +#

~discard_comments() = default;
+

Destroys discard_comments.

operator=(discard_comments) +#

discard_comments& operator=(discard_comments const&) = default;
+discard_comments& operator=(discard_comments &&)     = default;
+

Assigns discard_comments by copying or moving.

operator=(std::vector<std::string>) +#

discard_comments& operator=(const std::vector<std::string>& c);
+discard_comments& operator=(std::vector<std::string>&& c);
+

Does nothing.

assign +#

template<typename InputIterator>
+void assign(InputIterator first, InputIterator last);
+void assign(std::initializer_list<std::string> ini);
+void assign(size_type n, const std::string& val);
+

Does nothing.

insert +#

iterator insert(const_iterator p, const std::string& x);
+iterator insert(const_iterator p, std::string&&      x);
+iterator insert(const_iterator p, size_type n, const std::string& x);
+template<typename InputIterator>
+iterator insert(const_iterator p, InputIterator first, InputIterator last);
+iterator insert(const_iterator p, std::initializer_list<std::string> ini);
+

Does nothing.

emplace +#

template<typename ... Ts>
+iterator emplace(const_iterator p, Ts&& ... args);
+

Does nothing.

erase +#

iterator erase(const_iterator pos);
+iterator erase(const_iterator first, const_iterator last);
+

Does nothing.

swap +#

void swap(discard_comments& other);
+

Swaps two discard_comments. Effectively it does nothing.

push_back +#

void push_back(const std::string& v);
+void push_back(std::string&&      v);
+

Does nothing.

pop_back +#

void pop_back();
+

Does nothing.

emplace_back +#

template<typename ... Ts>
+void emplace_back(Ts&& ... args);
+

Does nothing.

clear +#

void clear();
+

Does nothing.

size +#

size_type size() const noexcept;
+

Returns 0.

max_size +#

size_type max_size() const noexcept;
+

Returns 0.

capacity +#

size_type capacity() const noexcept;
+

Returns 0.

empty +#

bool empty() const noexcept;
+

Returns true.

reserve +#

void reserve(size_type n);
+

Does nothing.

resize +#

void resize(size_type n);
+void resize(size_type n, const std::string& c);
+

Does nothing.

shrink_to_fit +#

void shrink_to_fit();
+

Does nothing.

operator[] +#

reference       operator[](const size_type n)       noexcept;
+const_reference operator[](const size_type n) const noexcept;
+

Causes undefined behavior.

at +#

reference       at(const size_type n)      ;
+const_reference at(const size_type n) const;
+

Throws std::out_of_range.

front +#

reference       front()       noexcept;
+const_reference front() const noexcept;
+

Causes undefined behavior.

back +#

reference       back()        noexcept;
+const_reference back()  const noexcept;
+

Causes undefined behavior.

data +#

pointer         data()        noexcept;
+const_pointer   data()  const noexcept;
+

Returns nullptr.

begin/end +#

iterator       begin()        noexcept;
+iterator       end()          noexcept;
+const_iterator begin()  const noexcept;
+const_iterator end()    const noexcept;
+const_iterator cbegin() const noexcept;
+const_iterator cend()   const noexcept;
+

Returns an internally defined empty-iterator.

The empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.

Accessing the target of the empty-iterator always calls std::terminate.

rbegin/rend +#

reverse_iterator       rbegin()        noexcept;
+reverse_iterator       rend()          noexcept;
+const_reverse_iterator rbegin()  const noexcept;
+const_reverse_iterator rend()    const noexcept;
+const_reverse_iterator crbegin() const noexcept;
+const_reverse_iterator crend()   const noexcept;
+

Returns an internally defined empty-iterator.

The empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.

Accessing the target of the empty-iterator always calls std::terminate.

non-member functions +#

Comparison operator +#

bool operator==(const discard_comments&, const discard_comments&);
+bool operator!=(const discard_comments&, const discard_comments&);
+bool operator< (const discard_comments&, const discard_comments&);
+bool operator<=(const discard_comments&, const discard_comments&);
+bool operator> (const discard_comments&, const discard_comments&);
+bool operator>=(const discard_comments&, const discard_comments&);
+

All the instances of discard_comments are the same value. operator== returns true, operator=! returns false.

swap +#

void swap(discard_comments&, discard_comments&);
+

Swaps discard_comments. Effectively it does nothing.

Stream operator +#

std::ostream& operator<<(std::ostream&, const discard_comments&);
+

Outputs nothing.

Related +#

\ No newline at end of file diff --git a/docs/reference/conversion/index.html b/docs/reference/conversion/index.html new file mode 100644 index 00000000..cc506b94 --- /dev/null +++ b/docs/reference/conversion/index.html @@ -0,0 +1,26 @@ +conversion.hpp | toml11 + +
conversion.hpp +

conversion.hpp +#

Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find.

TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...)
+

Example +#

namespace foo
+{
+struct Foo
+{
+    std::string s;
+    double      d;
+    int         i;
+};
+} // foo
+
+TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i)
+

Related +#

\ No newline at end of file diff --git a/docs/reference/datetime/index.html b/docs/reference/datetime/index.html new file mode 100644 index 00000000..4d8eca7d --- /dev/null +++ b/docs/reference/datetime/index.html @@ -0,0 +1,366 @@ +datetime.hpp | toml11 + +
datetime.hpp +

datetime.hpp +#

Defines a class that stores date and time information used in TOML’s datetime.

enum class month_t +#

Enum class to specify months.

Due to its relationship with std::tm, local_date treats January as 0. +To avoid confusion, month_t allows specification of months by their names.

namespace toml
+{
+enum class month_t : std::uint8_t
+{
+    Jan =  0,
+    Feb =  1,
+    Mar =  2,
+    Apr =  3,
+    May =  4,
+    Jun =  5,
+    Jul =  6,
+    Aug =  7,
+    Sep =  8,
+    Oct =  9,
+    Nov = 10,
+    Dec = 11
+};
+}
+

local_date +#

local_date holds a date.

year represents the year in AD. For month, January is represented as 0 to align with std::tm. day holds the day of the month.

namespace toml
+{
+struct local_date
+{
+    std::int16_t year;
+    std::uint8_t month;
+    std::uint8_t day;
+
+    local_date() = default;
+    ~local_date() = default;
+    local_date(local_date const&) = default;
+    local_date(local_date&&)      = default;
+    local_date& operator=(local_date const&) = default;
+    local_date& operator=(local_date&&)      = default;
+
+    local_date(int y, month_t m, int d);
+    explicit local_date(const std::tm& t);
+    explicit local_date(const std::chrono::system_clock::time_point& tp);
+    explicit local_date(const std::time_t t);
+
+    operator std::chrono::system_clock::time_point() const;
+    operator std::time_t() const;
+};
+
+bool operator==(const local_date&, const local_date&);
+bool operator!=(const local_date&, const local_date&);
+bool operator< (const local_date&, const local_date&);
+bool operator<=(const local_date&, const local_date&);
+bool operator> (const local_date&, const local_date&);
+bool operator>=(const local_date&, const local_date&);
+
+std::ostream& operator<<(std::ostream& os, const local_date& date);
+std::string to_string(const local_date& date);
+}
+

Member Variables +#

year +#

std::int16_t year;
+

Represents the year in AD. There’s no offset. 2024 is simply 2024.

month +#

std::uint8_t month;
+

Represents the month. To align with std::tm, January is 0, February is 1, and so on.

To avoid confusion, use month_t during construction.

day +#

std::uint8_t day;
+

Represents the day of the month. The first day is 1.

Member Functions +#

Constructor +#

local_date() = default;
+

Uses the default implementation.

Destructor +#

~local_date() = default;
+

Uses the default implementation.

Copy and Move Constructors +#

local_date(local_date const&) = default;
+local_date(local_date&&)      = default;
+

Uses the default implementations.

Copy and Move Assignment Operators +#

local_date& operator=(local_date const&) = default;
+local_date& operator=(local_date&&)      = default;
+

Uses the default implementations.

Constructor (int year, month_t month, int day) +#

local_date(int y, month_t m, int d);
+

Constructs a local_date from the specified values.

Does not perform boundary checks.

Constructor (std::tm) +#

local_date(const std::tm&);
+

Constructs a local_date from the specified std::tm value.

Constructor (std::chrono::system_clock::time_point) +#

local_date(const std::chrono::system_clock::time_point&);
+

Constructs a local_date from the specified std::chrono::system_clock::time_point value.

Time zone is determined by the environment.

Constructor (std::time_t) +#

local_date(const std::time_t);
+

Constructs a local_date from the specified std::time_t value.

Time zone is determined by the environment.

operator std::chrono::system_clock::time_point +#

operator std::chrono::system_clock::time_point() const;
+

Converts to std::chrono::system_clock::time_point.

Time zone is determined by the environment.

Time is set to 0 hours and 0 minutes.

operator std::time_t +#

operator std::time_t() const;
+

Converts to std::time_t.

Time zone is determined by the execution environment.

Time is set to 0 hours and 0 minutes.

Non-member Functions +#

Comparison Operators +#

bool operator==(const local_date&, const local_date&);
+bool operator!=(const local_date&, const local_date&);
+bool operator< (const local_date&, const local_date&);
+bool operator<=(const local_date&, const local_date&);
+bool operator> (const local_date&, const local_date&);
+bool operator>=(const local_date&, const local_date&);
+

Compares two dates.

Stream Operators +#

std::ostream& operator<<(std::ostream& os, const local_date& date);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const local_date& date);
+

Converts to a string in the default TOML format.

local_time +#

namespace toml
+{
+struct local_time
+{
+    std::uint8_t  hour;        // [0, 23]
+    std::uint8_t  minute;      // [0, 59]
+    std::uint8_t  second;      // [0, 60]
+    std::uint16_t millisecond; // [0, 999]
+    std::uint16_t microsecond; // [0, 999]
+    std::uint16_t nanosecond;  // [0, 999]
+
+    local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
+
+    explicit local_time(const std::tm& t);
+
+    template<typename Rep, typename Period>
+    explicit local_time(const std::chrono::duration<Rep, Period>& t);
+
+    operator std::chrono::nanoseconds() const;
+
+    local_time() = default;
+    ~local_time() = default;
+    local_time(local_time const&) = default;
+    local_time(local_time&&)      = default;
+    local_time& operator=(local_time const&) = default;
+    local_time& operator=(local_time&&)      = default;
+};
+
+bool operator==(const local_time& lhs, const local_time& rhs);
+bool operator!=(const local_time& lhs, const local_time& rhs);
+bool operator< (const local_time& lhs, const local_time& rhs);
+bool operator<=(const local_time& lhs, const local_time& rhs);
+bool operator> (const local_time& lhs, const local_time& rhs);
+bool operator>=(const local_time& lhs, const local_time& rhs);
+
+std::ostream& operator<<(std::ostream& os, const local_time& time);
+std::string to_string(const local_time& time);
+}
+

Member Values +#

hour +#

std::uint8_t  hour;
+

Represents the hour. Values range from 0 to 23.

minute +#

std::uint8_t  minute;      // [0, 59]
+

Represents the minute. Values range from 0 to 59.

second +#

std::uint8_t  second;      // [0, 60]
+

Represents the second. Values range from 0 to 60.

millisecond +#

std::uint16_t millisecond; // [0, 999]
+

Represents the millisecond. Values range from 0 to 999.

microsecond +#

std::uint16_t microsecond; // [0, 999]
+

Represents the microsecond. Values range from 0 to 999.

nanosecond +#

std::uint16_t nanosecond;  // [0, 999]
+

Represents the nanosecond. Values range from 0 to 999.

Member Functions +#

default constructor +#

local_time() = default;
+

Initializes all values to 0.

constructor (h, m, s, ms = 0, us = 0, ns = 0) +#

local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
+

Constructs using the specified time components.

No boundary checks are performed.

constructor(std::tm) +#

explicit local_time(const std::tm& t);
+

Constructs using tm_hour, tm_min, and tm_sec from std::tm.

Subseconds are initialized to 0.

constructor(std::chrono::duration) +#

template<typename Rep, typename Period>
+explicit local_time(const std::chrono::duration<Rep, Period>& t);
+

Constructs as the time of day from 0 hours of the day specified by duration.

operator std::chrono::nanoseconds +#

operator std::chrono::nanoseconds() const;
+

Converts to std::chrono::nanoseconds.

Non-member Functions +#

Comparison Operators +#

bool operator==(const local_time& lhs, const local_time& rhs);
+bool operator!=(const local_time& lhs, const local_time& rhs);
+bool operator< (const local_time& lhs, const local_time& rhs);
+bool operator<=(const local_time& lhs, const local_time& rhs);
+bool operator> (const local_time& lhs, const local_time& rhs);
+bool operator>=(const local_time& lhs, const local_time& rhs);
+

Compares based on time values.

Stream Operator +#

std::ostream& operator<<(std::ostream& os, const local_time& time);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const local_time& time);
+

Converts to a string in the default TOML format.

time_offset +#

namespace toml
+{
+struct time_offset
+{
+    std::int8_t hour{0};   // [-12, 12]
+    std::int8_t minute{0}; // [-59, 59]
+
+    time_offset(int h, int m);
+
+    operator std::chrono::minutes() const;
+
+    time_offset() = default;
+    ~time_offset() = default;
+    time_offset(time_offset const&) = default;
+    time_offset(time_offset&&)      = default;
+    time_offset& operator=(time_offset const&) = default;
+    time_offset& operator=(time_offset&&)      = default;
+};
+
+bool operator==(const time_offset&, const time_offset&);
+bool operator!=(const time_offset&, const time_offset&);
+bool operator< (const time_offset&, const time_offset&);
+bool operator<=(const time_offset&, const time_offset&);
+bool operator> (const time_offset&, const time_offset&);
+bool operator>=(const time_offset&, const time_offset&);
+
+std::ostream& operator<<(std::ostream& os, const time_offset& offset);
+std::string to_string(const time_offset& offset);
+}
+

Member Variables +#

hour +#

std::int8_t hour{0};   // [-12, 12]
+

Represents the hour offset, ranging from -12 to +12.

minute +#

std::int8_t minute{0}; // [-59, 59]
+

Represents the minute offset, ranging from -59 to +59.

Member Functions +#

Constructor +#

time_offset(int h, int m);
+

Constructs with given hours and minutes.

No boundary checking is performed.

operator std::chrono::minutes +#

operator std::chrono::minutes() const;
+

Converts to std::chrono::minutes.

Non-member Functions +#

Comparison Operators +#

bool operator==(const time_offset&, const time_offset&);
+bool operator!=(const time_offset&, const time_offset&);
+bool operator< (const time_offset&, const time_offset&);
+bool operator<=(const time_offset&, const time_offset&);
+bool operator> (const time_offset&, const time_offset&);
+bool operator>=(const time_offset&, const time_offset&);
+

Compares based on time length.

Stream Output Operator +#

std::ostream& operator<<(std::ostream& os, const time_offset&);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const time_offset&);
+

Converts to a string in the default TOML format.

local_datetime +#

namespace toml
+{
+struct local_datetime
+{
+    local_date date;
+    local_time time;
+
+    local_datetime(local_date d, local_time t);
+
+    explicit local_datetime(const std::tm& t);
+    explicit local_datetime(const std::chrono::system_clock::time_point& tp);
+    explicit local_datetime(const std::time_t t);
+
+    operator std::chrono::system_clock::time_point() const;
+    operator std::time_t() const;
+
+    local_datetime() = default;
+    ~local_datetime() = default;
+    local_datetime(local_datetime const&) = default;
+    local_datetime(local_datetime&&)      = default;
+    local_datetime& operator=(local_datetime const&) = default;
+    local_datetime& operator=(local_datetime&&)      = default;
+};
+
+bool operator==(const local_datetime&, const local_datetime&);
+bool operator!=(const local_datetime&, const local_datetime&);
+bool operator< (const local_datetime&, const local_datetime&);
+bool operator<=(const local_datetime&, const local_datetime&);
+bool operator> (const local_datetime&, const local_datetime&);
+bool operator>=(const local_datetime&, const local_datetime&);
+
+std::ostream& operator<<(std::ostream& os, const local_datetime& dt);
+std::string to_string(const local_datetime& dt);
+}
+

Member Variables +#

local_date date +#

local_date date;
+

Stores the date component data.

local_time time +#

local_time time;
+

Stores the time component data.

Member Functions +#

Default Constructor +#

Constructs both date and time with default values.

Constructor (local_date, local_time) +#

Constructs with the specified date and time.

Constructor (std::tm) +#

Constructs from std::tm.

The timezone is selected based on the execution environment.

Constructor (std::chrono::system_clock::time_point) +#

Constructs from std::chrono::system_clock::time_point.

The timezone is selected based on the execution environment.

Constructor (std::time_t) +#

Constructs from std::time_t.

The timezone is selected based on the execution environment.

operator std::chrono::system_clock::time_point +#

Converts to std::chrono::system_clock::time_point.

operator std::time_t +#

Converts to std::time_t.

Non-member Functions +#

Comparison Operators +#

bool operator==(const local_datetime&, const local_datetime&);
+bool operator!=(const local_datetime&, const local_datetime&);
+bool operator< (const local_datetime&, const local_datetime&);
+bool operator<=(const local_datetime&, const local_datetime&);
+bool operator> (const local_datetime&, const local_datetime&);
+bool operator>=(const local_datetime&, const local_datetime&);
+

Compares based on chronological order.

Stream Output Operator +#

std::ostream& operator<<(std::ostream& os, const local_datetime&);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const local_datetime&);
+

Converts to a string in the default TOML format.

offset_datetime +#

namespace toml
+{
+struct offset_datetime
+{
+    local_date  date;
+    local_time  time;
+    time_offset offset;
+
+    offset_datetime(local_date d, local_time t, time_offset o);
+    offset_datetime(const local_datetime& dt, time_offset o);
+    explicit offset_datetime(const local_datetime& ld);
+    explicit offset_datetime(const std::chrono::system_clock::time_point& tp);
+    explicit offset_datetime(const std::time_t& t);
+    explicit offset_datetime(const std::tm& t);
+
+    operator std::chrono::system_clock::time_point() const;
+    operator std::time_t() const;
+
+    offset_datetime() = default;
+    ~offset_datetime() = default;
+    offset_datetime(offset_datetime const&) = default;
+    offset_datetime(offset_datetime&&)      = default;
+    offset_datetime& operator=(offset_datetime const&) = default;
+    offset_datetime& operator=(offset_datetime&&)      = default;
+};
+
+bool operator==(const offset_datetime&, const offset_datetime&);
+bool operator!=(const offset_datetime&, const offset_datetime&);
+bool operator< (const offset_datetime&, const offset_datetime&);
+bool operator<=(const offset_datetime&, const offset_datetime&);
+bool operator> (const offset_datetime&, const offset_datetime&);
+bool operator>=(const offset_datetime&, const offset_datetime&);
+
+std::ostream& operator<<(std::ostream& os, const offset_datetime& dt);
+std::string to_string(const offset_datetime& dt);
+}
+

Member Variables +#

date +#

local_date date;
+

Stores the date component.

time +#

local_time time;
+

Stores the time component.

offset +#

time_offset offset;
+

Stores the offset component.

Member Functions +#

Default Constructor +#

Constructs date, time, and offset with default values.

Constructor (local_date, local_time, time_offset) +#

Constructs with the specified date, time, and offset.

Constructor (local_datetime, time_offset) +#

Constructs from local_datetime and offset.

Constructor (std::tm) +#

Constructs from std::tm.

The timezone is UTC (00:00).

Constructor (std::chrono::system_clock::time_point) +#

Constructs from std::chrono::system_clock::time_point.

The timezone is UTC (00:00).

Constructor (std::time_t) +#

Constructs from std::time_t.

The timezone is UTC (00:00).

operator std::chrono::system_clock::time_point +#

Converts to std::chrono::system_clock::time_point.

The timezone is UTC (00:00).

operator std::time_t +#

Converts to std::time_t.

The timezone is UTC (00:00).

Non-member Functions +#

Comparison Operators +#

bool operator==(const offset_datetime&, const offset_datetime&);
+bool operator!=(const offset_datetime&, const offset_datetime&);
+bool operator< (const offset_datetime&, const offset_datetime&);
+bool operator<=(const offset_datetime&, const offset_datetime&);
+bool operator> (const offset_datetime&, const offset_datetime&);
+bool operator>=(const offset_datetime&, const offset_datetime&);
+

Compares based on chronological order.

If dates are the same, compares based on timezone order.

Stream Output Operator +#

std::ostream& operator<<(std::ostream& os, const offset_datetime&);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const offset_datetime&);
+

Converts to a string in the default TOML format.

\ No newline at end of file diff --git a/docs/reference/error_info/index.html b/docs/reference/error_info/index.html new file mode 100644 index 00000000..432d69f0 --- /dev/null +++ b/docs/reference/error_info/index.html @@ -0,0 +1,75 @@ +error_info.hpp | toml11 + +
error_info.hpp +

error_info.hpp +#

In error_info.hpp, definitions for error_info and functions to format it are provided.

toml::error_info +#

namespace toml
+{
+struct error_info
+{
+    error_info(std::string t, source_location l, std::string m, std::string s = "");
+    error_info(std::string t, std::vector<std::pair<source_location, std::string>> l, std::string s = "");
+
+    std::string const& title() const noexcept;
+    std::string &      title()       noexcept;
+
+    std::vector<std::pair<source_location, std::string>> const& locations() const noexcept;
+    void add_locations(source_location loc, std::string msg) noexcept;
+
+    std::string const& suffix() const noexcept;
+    std::string &      suffix()       noexcept;
+};
+
+template<typename ... Ts>
+error_info make_error_info(
+    std::string title, source_location loc, std::string msg, Ts&& ... tail);
+
+std::string format_error(const std::string& errkind, const error_info& err);
+std::string format_error(const error_info& err);
+
+template<typename ... Ts>
+std::string format_error(std::string title,
+                         source_location loc, std::string msg, Ts&& ... tail);
+
+std::ostream& operator<<(std::ostream& os, const error_info& e);
+}
+

Member Functions +#

Constructor (title, loc, msg, suffix) +#

Constructs error_info with specified title, location information loc, message msg, and optional suffix.

suffix defaults to empty.

Constructor (title, [{loc, msg}, ...], suffix) +#

Constructs error_info with specified title, an array of location-message pairs [{loc, msg}, ...], and optional suffix.

suffix defaults to empty.

std::string title() +#

Returns the title of the error message.

std::vector<std::pair<source_location, std::string>> locations() +#

Returns the list of locations where errors occurred along with their respective messages.

Multiple locations can be specified.

std::string suffix() +#

Returns the suffix message to display at the end, providing hints or additional information.

Non-Member Functions +#

make_error_info +#

template<typename ... Ts>
+error_info make_error_info(
+    std::string title, source_location loc, std::string msg, Ts&& ... tail);
+

Creates a new error_info.

Must be followed by a msg related to source_location or basic_value.

Overloads are added in value.hpp when passing toml::basic_value instead of source_location.

Possible to pass suffix at the end.

format_error +#

Formats error_info as follows:

{title}
+ --> {locations().at(0).first.file_name()}
+   |
+ 1 | {locations().at(0).first.line()}
+   |         ^-- {locations().at(0).second}
+   |
+ 2 | {locations().at(1).first.line()}
+   |         ^-- {locations().at(1).second}
+{suffix}
+

If file names differ between two source_location, the file name is displayed again.

std::string format_error(const std::string& errkind, const error_info& err);
+std::string format_error(const error_info& err);
+

Formats error_info.

If errkind is not provided, a red-bold [error] prefix is added before title.

If errkind is provided (including an empty string), it replaces [error].

namespace toml
+{
+template<typename ... Ts>
+std::string format_error(std::string title,
+                         source_location loc, std::string msg, Ts&& ... tail);
+} // toml
+

Returns a formatted string using format_error for error_info created with make_error_info.

Overloads are added in value.hpp when passing toml::basic_value instead of source_location.

Stream Operator +#

std::ostream& operator<<(std::ostream& os, const error_info& e);
+

Calls format_error(e) and outputs it.

Related +#

\ No newline at end of file diff --git a/docs/reference/exception/index.html b/docs/reference/exception/index.html new file mode 100644 index 00000000..bb54c4ea --- /dev/null +++ b/docs/reference/exception/index.html @@ -0,0 +1,29 @@ +exception.hpp | toml11 + +
exception.hpp +

exception.hpp +#

toml::exception +#

Base class for exception types defined in toml11.

namespace toml
+{
+struct exception : public std::exception
+{
+  public:
+    virtual ~exception() noexcept override = default;
+    virtual const char* what() const noexcept override {return "";}
+};
+} // toml
+

Member Functions +#

Destructor +#

virtual ~exception() noexcept override = default;
+

Override when derived.

what +#

virtual const char* what() const noexcept override {return "";}
+

Returns the error message. Override when derived.

\ No newline at end of file diff --git a/docs/reference/find/index.html b/docs/reference/find/index.html new file mode 100644 index 00000000..34c084f8 --- /dev/null +++ b/docs/reference/find/index.html @@ -0,0 +1,114 @@ +find.hpp | toml11 + +
find.hpp +

find.hpp +#

This function searches for a value in a toml::value and performs type conversion if necessary.

toml::value can change the type it stores, and toml::find accommodates these types. +Technically, all functions use toml::basic_value<TC>. +However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. +In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.

toml::find +#

Overview +#

toml::find uses template arguments for the type you want to retrieve and function arguments for the key of the value you want to find.

template<typename T, typename TC, typename ... Keys>
+T find(const basic_value<TC>& v, Keys ... keys);
+

The supported types for T and the behavior of the conversion are the same as for toml::get.

If T is not specified, a toml::value will be returned.

Keys can be of type toml::value::key_type or std::size_t. +When multiple keys are provided, the function will search recursively through sub-tables or arrays. +If a toml::value::key_type is given, toml::value is interpreted as a toml::table; if a std::size_t is given, toml::value is interpreted as a toml::array.

TOML allows for bare keys as well as quoted keys (enclosed in " or '). Using a quoted key like "foo.bar" = "baz" means no sub-table is constructed, and the key is "foo.bar". To handle such patterns, toml11 does not split keys containing . and searches using the full string.

Consider the following TOML file:

[foo]
+[foo.bar]
+baz = "hoge"
+
+["foo.bar"]
+baz = "fuga"
+

The corresponding usage of toml::find is shown below:

const auto input = toml::parse("input.toml");
+const auto baz1 = toml::find<std::string>(input, "foo", "bar", "baz"); // hoge
+const auto baz2 = toml::find<std::string>(input, "foo.bar",    "baz"); // fuga
+

cf. toml.io/en/v1.0.0#keys

toml::find(value, key) +#

Searches for key in value as if value were a toml::table, then converts using toml::get.

template<typename T, typename TC>
+/* Equivalent to toml::get<T>(const value&) */ find(
+    const basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&) */ find(
+    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&&) */ find(
+    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
+

If T is not specified, the function returns a toml::value without conversion.

template<typename TC>
+basic_value<TC> const& find(
+    basic_value<TC> const& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename TC>
+basic_value<TC>& find(
+    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename TC>
+basic_value<TC> find(
+    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
+

Exceptions +#

If the toml::value does not contain a table, a toml::type_error is thrown.

If the contained table does not have the specified element, a std::out_of_range is thrown.

If the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.

toml::find(value, index) +#

Accesses the index-th element of value as if value were a toml::array, then converts using toml::get.

template<typename T, typename TC>
+/* Equivalent to toml::get<T>(const value&) */ find(
+    const basic_value<TC>& v, const std::size_t index);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&) */ find(
+    basic_value<TC>& v, const std::size_t index);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&&) */ find(
+    basic_value<TC>&& v, const std::size_t index);
+

If T is not specified, the function returns a toml::value without conversion.

template<typename TC>
+basic_value<TC> const& find(basic_value<TC> const& v, const std::size_t ky);
+
+template<typename TC>
+basic_value<TC>& find(basic_value<TC>& v, const std::size_t ky);
+
+template<typename TC>
+basic_value<TC> find(basic_value<TC>&& v, const std::size_t ky);
+

Exceptions +#

If the toml::value does not contain an array, a toml::type_error is thrown.

If the contained array does not have the specified number of elements, a std::out_of_range is thrown.

If the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.

toml::find(value, keys...) +#

template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
+/* Equivalent to toml::get<T>(const value&) */ find(
+    const basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
+
+template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
+/* Equivalent to toml::get<T>(value&) */ find(
+    basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
+
+template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
+/* Equivalent to toml::get<T>(value&&) */ find(
+    basic_value<TC>&& v, const K1& k1, const K2& k2, const Ks& ... ks);
+

This function calls toml::find recursively.

The failure conditions and the exceptions thrown are the same as those for toml::find.

toml::find_or(value, key, fallback) +#

template<typename T, typename TC, typename Key>
+T find_or(const basic_value<TC>& v, const Key& key, T&& opt);
+

The find_or function takes a default value to avoid throwing an exception when the search fails.

The default value must be of the same type as the return type T. Therefore, unlike toml::find<T>, find_or infers the type T.

You can specify T explicitly with find_or<T>, but this always returns a new value. To obtain a reference, do not specify T.

When T is basic_value +#

template<typename TC, typename K>
+basic_value<TC>& find_or(basic_value<TC>& v, const K& key, basic_value<TC>& opt) noexcept
+
+template<typename TC, typename K>
+basic_value<TC> const& find_or(const basic_value<TC>& v, const K& key, const basic_value<TC>& opt) noexcept
+

Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.

If the value is not found, the default value is returned.

When T is toml::value::{some_type} +#

template<typename T, typename TC, typename K>
+T& find_or(basic_value<TC>& v, const K& key, T& opt) noexcept
+
+template<typename T, typename TC, typename K>
+T const& find_or(const basic_value<TC>& v, const K& key, const T& opt) noexcept
+

Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.

If the value is not found or if a different type is stored, the default value is returned.

When T is const char* +#

template<typename T, typename TC, typename K>
+T find_or(const basic_value<TC>& v, const K& key, T opt)
+

Searches for the corresponding value and returns it as a std::string.

Since the fallback is constructed from const char* to std::string, a reference cannot be returned in case of failure.

When T is any other type +#

template<typename T, typename TC, typename K>
+T find_or(const basic_value<TC>& v, const K& key, T opt);
+

Searches for the corresponding value and converts it to T before returning it.

Because conversion is performed, a reference cannot be returned.

When multiple keys are provided +#

template<typename Value, typename K1, typename K2, typename K3, typename ... Ks>
+auto find_or(Value&& v, const K1& k1, const K2& k2, K3&& k3, Ks&& ... keys) noexcept
+ -> decltype(find_or(v, k2, std::forward<K3>(k3), std::forward<Ks>(keys)...))
+

Interprets the last element in the key sequence as the default value and applies find_or recursively.

If the inferred type of T is toml::value or toml::value::some_type, a reference can be returned.

If T is explicitly specified, conversion is always performed.

Related +#

\ No newline at end of file diff --git a/docs/reference/format/index.html b/docs/reference/format/index.html new file mode 100644 index 00000000..2764b2fa --- /dev/null +++ b/docs/reference/format/index.html @@ -0,0 +1,228 @@ +format.hpp | toml11 + +
format.hpp +

format.hpp +#

Defines structures and enumerations related to formatting information for toml::value.

indent_char +#

An enumeration representing the indentation character choice.

enum class indent_char : std::uint8_t
+{
+    space, // use space
+    tab,   // use tab
+    none   // no indent
+};
+std::ostream& operator<<(std::ostream& os, const indent_char& c);
+std::string to_string(const indent_char);
+

Choosing none means no indentation is used, regardless of the value in super tables.

If both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.

boolean_format_info +#

Formatting information for boolean.

struct boolean_format_info {};
+
+bool operator==(const boolean_format_info&, const boolean_format_info&) noexcept;
+bool operator!=(const boolean_format_info&, const boolean_format_info&) noexcept;
+

There is only one way to format boolean, so no configurable values are provided.

integer_format +#

enum class integer_format : std::uint8_t
+{
+    dec = 0,
+    bin = 1,
+    oct = 2,
+    hex = 3,
+};
+std::ostream& operator<<(std::ostream& os, const integer_format f);
+std::string to_string(const integer_format);
+

Specifies the radix of an integer.

integer_format_info +#

struct integer_format_info
+{
+    integer_format fmt    = integer_format::dec;
+    bool        uppercase = true; // use uppercase letters
+    std::size_t width     = 0;  // minimal width (may exceed)
+    std::size_t spacer    = 0;  // position of `_` (if 0, no spacer)
+    std::string suffix    = ""; // _suffix (library extension)
+};
+
+bool operator==(const integer_format_info&, const integer_format_info&) noexcept;
+bool operator!=(const integer_format_info&, const integer_format_info&) noexcept;
+

Member Variables +#

integer_format fmt +#

Specifies the radix.

bool uppercase +#

Uses uppercase letters when formatted as a hexadecimal integer.

std::size_t width +#

Specifies the minimum width. The formatted value may exceed this width.

For values smaller than this width, if integer_format::dec, no effect. Otherwise, leading zeros are added.

std::size_t spacer +#

Specifies the width at which underscores _ are inserted.

  • If 3, formatted as 1_234_567.
  • If 4, formatted as 0xdead_beef.
  • If 0, no underscores are inserted.

Irregular widths are not allowed.

std::string suffix +#

Stores the suffix when spec::ext_num_suffix of toml11 extension is true.

cf. spec.hpp

floating_format +#

enum class floating_format : std::uint8_t
+{
+    defaultfloat = 0,
+    fixed        = 1, // does not include exponential part
+    scientific   = 2, // always include exponential part
+    hex          = 3  // hexfloat extension
+};
+std::ostream& operator<<(std::ostream& os, const floating_format f);
+std::string to_string(const floating_format);
+

Specifies the formatting style for floating numbers. +Corresponds to std::defaultfloat, std::fixed, std::scientific, std::hexfloat.

hexfloat is available only if toml::spec::ext_hex_float is true.

cf. spec.hpp

floating_format_info +#

struct floating_format_info
+{
+    floating_format fmt = floating_format::defaultfloat;
+    std::size_t prec  = 0;        // precision (if 0, use the default)
+    std::string suffix = "";      // 1.0e+2_suffix (library extension)
+};
+
+bool operator==(const floating_format_info&, const floating_format_info&) noexcept;
+bool operator!=(const floating_format_info&, const floating_format_info&) noexcept;
+

Member Variables +#

floating_format fmt +#

Specifies the formatting style.

std::size_t prec +#

Specifies the precision after the decimal point.

std::string suffix +#

Stores the suffix when spec::ext_num_suffix of toml11 extension is true.

cf. spec.hpp

string_format +#

enum class string_format : std::uint8_t
+{
+    basic             = 0,
+    literal           = 1,
+    multiline_basic   = 2,
+    multiline_literal = 3
+};
+std::ostream& operator<<(std::ostream& os, const string_format f);
+std::string to_string(const string_format);
+

Specifies the formatting style for strings.

string_format_info +#

struct string_format_info
+{
+    string_format fmt = string_format::basic;
+    bool start_with_newline    = false;
+};
+
+bool operator==(const string_format_info&, const string_format_info&) noexcept;
+bool operator!=(const string_format_info&, const string_format_info&) noexcept;
+

Member Variables +#

string_format fmt +#

Specifies the formatting information for strings.

bool start_with_newline +#

For multiline_basic or multiline_literal, specifies whether to include a newline after the initial """ or '''.

datetime_delimiter_kind +#

enum class datetime_delimiter_kind : std::uint8_t
+{
+    upper_T = 0,
+    lower_t = 1,
+    space   = 2,
+};
+std::ostream& operator<<(std::ostream& os, const datetime_delimiter_kind d);
+std::string to_string(const datetime_delimiter_kind);
+

Specifies the delimiter used between date and time in datetime.

Possible options include T, t, and a space .

offset_datetime_format_info +#

struct offset_datetime_format_info
+{
+    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
+    bool has_seconds = true;
+    std::size_t subsecond_precision = 6; // [us]
+};
+
+bool operator==(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
+bool operator!=(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
+

Member Variables +#

datetime_delimiter_kind delimiter +#

Specifies the delimiter to use.

bool has_seconds +#

Specifies whether to omit seconds.

std::size_t subsecond_precision +#

Specifies how many digits to output for subseconds.

local_datetime_format_info +#

struct local_datetime_format_info
+{
+    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
+    bool has_seconds = true;
+    std::size_t subsecond_precision = 6; // [us]
+};
+
+bool operator==(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
+bool operator!=(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
+

Member Variables +#

datetime_delimiter_kind delimiter +#

Specifies the delimiter to use.

bool has_seconds +#

Specifies whether to omit seconds.

std::size_t subsecond_precision +#

Specifies how many digits to output for subseconds.

local_date_format_info +#

struct local_date_format_info
+{
+    // nothing, for now
+};
+
+bool operator==(const local_date_format_info&, const local_date_format_info&) noexcept;
+bool operator!=(const local_date_format_info&, const local_date_format_info&) noexcept;
+

No formatting parameters are specified for local_date.

local_time_format_info +#

struct local_time_format_info
+{
+    bool has_seconds = true;
+    std::size_t subsecond_precision = 6; // [us]
+};
+
+bool operator==(const local_time_format_info&, const local_time_format_info&) noexcept;
+bool operator!=(const local_time_format_info&, const local_time_format_info&) noexcept;
+

Member Variables +#

bool has_seconds +#

Specifies whether to omit seconds.

std::size_t subsecond_precision +#

Specifies how many digits to output for subseconds.

array_format +#

enum class array_format : std::uint8_t
+{
+    default_format  = 0,
+    oneline         = 1,
+    multiline       = 2,
+    array_of_tables = 3 // [[format.in.this.way]]
+};
+
+std::ostream& operator<<(std::ostream& os, const array_format f);
+std::string to_string(const array_format);
+
  • default_format
    • Automatically selects the appropriate format. Longer arrays may span multiple lines.
  • oneline
    • Formats all elements in a single line.
  • multiline
    • Outputs each element on its own line.
  • array_of_tables
    • Formats in the [[array.of.tables]] style. Cannot contain elements other than table.

array_format_info +#

struct array_format_info
+{
+    array_format fmt            = array_format::default_format;
+    indent_char  indent_type    = indent_char::space;
+    std::int32_t body_indent    = 4; // indent in case of multiline
+    std::int32_t closing_indent = 0; // indent of `]`
+};
+
+bool operator==(const array_format_info&, const array_format_info&) noexcept;
+bool operator!=(const array_format_info&, const array_format_info&) noexcept;
+

Member Variables +#

array_format fmt +#

Specifies the format style.

indent_char indent_type +#

Selects the type of character used for indentation.

std::int32_t body_indent +#

Specifies the number of characters to indent before each element in array_format::multiline.

std::int32_t closing_indent +#

Specifies the number of characters to indent before the closing bracket ] in array_format::multiline.

table_format +#

enum class table_format : std::uint8_t
+{
+    multiline         = 0, // [foo] \n bar = "baz"
+    oneline           = 1, // foo = {bar = "baz"}
+    dotted            = 2, // foo.bar = "baz"
+    multiline_oneline = 3, // foo = { \n bar = "baz" \n }
+    implicit          = 4  // [x] defined by [x.y.z]. skip in serializer.
+};
+
+std::ostream& operator<<(std::ostream& os, const table_format f);
+std::string to_string(const table_format);
+
  • multiline
    • Formats as a multiline normal table.
  • oneline
    • Formats as an inline table.
  • dotted
    • Formats in the form of a.b.c = "d".
  • multiline_oneline
    • Formats as a multiline inline table with line breaks. Available from TOML v1.1.0 onwards.
    • cf. spec.hpp
  • implicit
    • Skips implicit definitions like [x.y.z.w], leaving [x], [x.y], [x.y.z] as implicit.

According to TOML syntax, dotted table can have sub-tables:

[fruit]
+apple.color = "red"
+apple.taste.sweet = true
+
+# [fruit.apple]        # INVALID
+# [fruit.apple.taste]  # INVALID
+[fruit.apple.texture]  # you can add sub-tables
+smooth = true
+

toml11 currently does not support this format. +Sub-tables under a dotted table would all be dotted, and tables are forced into inline table format.

table_format_info +#

struct table_format_info
+{
+    table_format fmt = table_format::multiline;
+    indent_char  indent_type    = indent_char::space;
+    std::int32_t body_indent    = 0; // indent of values
+    std::int32_t name_indent    = 0; // indent of [table]
+    std::int32_t closing_indent = 0; // in case of {inline-table}
+};
+
+bool operator==(const table_format_info&, const table_format_info&) noexcept;
+bool operator!=(const table_format_info&, const table_format_info&) noexcept;
+

Member Variables +#

table_format fmt +#

Specifies the formatting method.

indent_char indent_type +#

Specifies the character used for indentation.

std::int32_t body_indent +#

Specifies the width of indentation before keys.

The indentation width of the super table is not added.

std::int32_t name_indent +#

Specifies the indentation of keys in [table] format.

The indentation width of the super table is not added.

std::int32_t closing_indent +#

Specifies the indentation width before the closing brace } in the case of multiline_oneline.

\ No newline at end of file diff --git a/docs/reference/from/index.html b/docs/reference/from/index.html new file mode 100644 index 00000000..79872624 --- /dev/null +++ b/docs/reference/from/index.html @@ -0,0 +1,48 @@ +from.hpp | toml11 + +
from.hpp +

from.hpp +#

Defines a struct used for conversion from toml::value in toml::get and toml::find.

You can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from<T>.

This file does not provide specific implementations. Please specialize this struct when using.

namespace toml
+{
+
+template<typename T>
+struct from;
+
+} // toml
+

Example +#

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+#include <toml11/from.hpp>
+
+namespace toml
+{
+template<>
+struct from<extlib::foo>
+{
+    template<typename TC>
+    static extlib::foo from_toml(const toml::basic_value<TC>& v)
+    {
+        return extlib::foo{toml::find<int>(v, "a"), toml::find<std::string>(v, "b")};
+    }
+};
+} // toml
+

Related +#

\ No newline at end of file diff --git a/docs/reference/get/index.html b/docs/reference/get/index.html new file mode 100644 index 00000000..eda99ecd --- /dev/null +++ b/docs/reference/get/index.html @@ -0,0 +1,122 @@ +get.hpp | toml11 + +
get.hpp +

get.hpp +#

These are functions for extracting values from toml::value and performing type conversions if necessary.

toml::value can change the type it stores, and toml::get accommodates these types. +Technically, all functions use toml::basic_value<TC>. +However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. +In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.

toml::get<T> +#

Overview +#

Generally, toml::get behaves as follows: +You specify T as in toml::get<int>(v).

template<typename T, typename TC>
+T get(const basic_value<TC>& v);
+

However, depending on the type of T, toml::get can exhibit different behaviors.

The types of T can be categorized into:

  1. Types that do not require conversion
  2. Types that require conversion

Detailed conditions and the specific types supported are discussed later.

Types that Do Not Require Conversion +#

No conversion is needed if the provided toml::value is already storing the desired type. For instance, since toml::value::integer_type is an alias for std::int64_t, toml::get<std::int64_t>(v) requires no conversion. In this case, toml::get retrieves the integer value from toml::value and returns a reference to it.

If the provided toml::value is a mutable reference (&), the returned value is also a mutable reference (&). If it is an immutable reference (const&), the returned value will also be an immutable reference (const&). Returning a mutable reference allows you to overwrite the value stored in toml::value through that reference.

Types that Require Conversion +#

Types other than the ones mentioned above require conversion. For example, since toml::value::integer_type is an alias for std::int64_t, toml::get<std::size_t>(toml::value&) requires conversion. In this case, toml::get retrieves the integer value from toml::value and casts it to return the appropriate type.

toml11 supports not only simple casts but also complex type conversions like converting from toml::array to std::tuple<int, double, std::string>, std::array<double, 4>, or from toml::table to std::map<std::string, int>. For specifics, refer to the subsequent sections.

When Conversion Fails +#

Sometimes, the expected type conversion cannot be performed. For example, applying toml::get<int>(v) to a toml::value that holds a table.

In such cases, an attempt to convert to the type most similar to the desired type (in this case, int using as_integer) fails, and a toml::type_error is thrown.

When parsing from a file, an error message similar to the following is output:

terminate called after throwing an instance of 'toml::type_error'
+  what():  toml::value::as_integer(): bad_cast to integer
+ --> input.toml
+   |
+ 6 | [fruit]
+   | ^^^^^^^-- the actual type is table
+

When T is identical to toml::value +#

template<typename T, typename TC>
+T& get(basic_value<TC>& v);
+
+template<typename T, typename TC>
+T const& get(const basic_value<TC>& v);
+
+template<typename T, typename TC>
+T get(basic_value<TC>&& v);
+

Condition:

  • std::is_same<T, basic_value<TC>> is satisfied.

Since this involves retrieving toml::value from toml::value, no conversion is performed, and the value is returned as is. This exists solely to generalize the implementation of other functions.

This does not fail.

When T is one of toml::value::{some_type} +#

template<typename T, typename TC>
+T& get(basic_value<TC>& v);
+
+template<typename T, typename TC>
+T const& get(const basic_value<TC>& v);
+
+template<typename T, typename TC>
+T get(basic_value<TC>&& v);
+

Condition:

  • T must be the same as one of the types that toml::value can store (e.g., toml::value::boolean_type).

If toml::value is storing a type that matches the specified type in toml::get<T>, such as toml::value::integer_type, no type conversion is needed, and a reference can be returned.

If a different type is stored, a toml::type_error is thrown.

When T is basic_value<OtherTC> with a different TypeConfig +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is not toml::basic_value<TC>.
  • T is toml::basic_value<OtherTC>.

When a basic_value that can store different types is specified, conversion is performed.

Since type conversion occurs, the returned value is a new value and not a reference.

This does not fail (except in cases like memory exhaustion).

When T is an integer type +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_integral<T> is satisfied
  • T is not bool
  • T is not toml::value::integer_type

The function assumes that toml::value holds an integer_type, retrieves its value, converts it to T, and returns it.

If a type other than toml::value::integer_type is stored, a toml::type_error is thrown.

When T is a floating-point type +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_floating_point<T> is satisfied
  • T is not toml::value::floating_type

The function assumes that toml::value holds a floating_type, retrieves its value, converts it to T, and returns it.

If a type other than toml::value::floating_type is stored, a toml::type_error is thrown.

When T is std::string_view +#

This is only available in C++17 and later.

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_same<std::string_view, T> is satisfied

The function assumes that toml::value holds a string_type, retrieves its value, constructs a std::string_view from it, and returns it.

If a type other than toml::value::string_type is stored, a toml::type_error is thrown.

When T is std::chrono::duration +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::chrono::duration<Rep, Period>

The function assumes that toml::value holds a local_time, retrieves its value, converts it to std::chrono::duration, and returns it.

If a type other than toml::value::local_time is stored, a toml::type_error is thrown.

When T is std::chrono::system_clock::time_point +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_same<T, std::chrono::system_clock::time_point> is satisfied

If the toml::value holds a local_date, local_datetime, or offset_datetime, this function retrieves the value and converts it to std::chrono::system_clock::time_point, returning the result.

If the value is of a type other than local_date, local_datetime, or offset_datetime, a toml::type_error is thrown.

When T is array-like +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • T has an iterator
  • T has a value_type
  • T supports push_back(x)
  • T is not toml::value::array_type
  • T is not std::string
  • T is not std::string_view
  • T is not map-like
  • T does not have from_toml() member function
  • toml::from<T> is not defined
  • A constructor from toml::basic_value<TC> is not defined

This includes types like std::vector<int> and std::deque<std::string>.

If the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.

If the value is of a type other than toml::value::array_type, a toml::type_error is thrown.

When T is std::array +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

条件:

  • T is std::array<U, N>

If the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.

If the value is of a type other than toml::value::array_type, a toml::type_error is thrown.

If the array held by toml::value does not contain enough elements, a std::out_of_range is thrown.

When T is std::forward_list +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::forward_list<U>

If the toml::value holds an array, this function retrieves the value and converts it to a std::forward_list, returning the result.

If the value is of a type other than toml::value::array_type, a toml::type_error is thrown.

When T is std::pair +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::pair<T1, T2>

If the toml::value holds an array, this function retrieves the value and converts it to std::pair<T1, T2>, returning the result.

The first and second elements are recursively converted.

If the value is of a type other than basic_value::array_type, a toml::type_error is thrown.

If the array held by toml::value does not contain exactly 2 elements, a std::out_of_range is thrown.

When T is std::tuple +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::tuple<T1, T2, ... TN>

If the toml::value holds an array, this function retrieves the value and converts it to std::tuple<T1, T2, ...TN>, returning the result.

Each element is recursively converted.

If the value is of a type other than basic_value::array_type, a toml::type_error is thrown.

If the array held by toml::value does not contain exactly std::tuple_size<T>::value elements, a std::out_of_range is thrown.

When T is map-like +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • T has an iterator
  • T has a key_type
  • T has a value_type
  • T has a mapped_type
  • T is not toml::value::table_type
  • T does not have a from_toml() member function
  • toml::from<T> is not defined
  • A constructor from toml::basic_value<TC> is not defined

This includes types like std::map<std::string, int> and std::unordered_map<std::string, float>.

If the toml::value holds a table, this function retrieves the value and converts it to T, returning the result.

Elements are recursively converted.

If the value is of a type other than basic_value::table_type, a toml::type_error is thrown.

When T is a user-defined type with a specialization of toml::from<T> +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • A specialization of toml::from<T> is defined

If a specialization of toml::from for T is defined, it is used for type conversion.

Ensure this does not conflict with individually supported types (std::array, std::pair, std::tuple etc).

When T is a user-defined type with a from_toml member function +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • toml::from<T> is not defined
  • T has from_toml() member function

If T has a from_toml(toml::basic_value<TC>) member function, it is used for type conversion.

If toml::from<T> is defined, it takes precedence.

When T is a user-defined type with a constructor that takes toml::basic_value<TC> +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • toml::from<T> is not defined
  • T does not have from_toml() member function
  • T has a constructor that takes toml::basic_value<TC>

If T has a constructor that takes toml::basic_value<TC>, it is used for type conversion.

If toml::from<T> or T::from_toml is defined, they take precedence.

toml::get_or<T> +#

get_or takes a default value for use when the conversion fails, avoiding exceptions.

The default value must be of the same type as the target type T. +Therefore, unlike toml::get<T>, T can be inferred in get_or.

When T is basic_value<TC> +#

template<typename TC>
+basic_value<TC> const& get_or(const basic_value<TC>& v, const basic_value<TC>& opt)
+
+template<typename TC>
+basic_value<TC> & get_or(basic_value<TC>& v, basic_value<TC>& opt)
+
+template<typename TC>
+basic_value<TC> get_or(basic_value<TC>&& v, basic_value<TC>&& opt)
+

Since the conversion target is the same toml::value, this never fails.

It exists solely to generalize the implementation of other functions.

When T is basic_value<TC>::{some_type} +#

template<typename T, typename TC>
+T const& get_or(const basic_value<TC>& v, const T& opt) noexcept
+
+template<typename T, typename TC>
+T & get_or(basic_value<TC>& v, T& opt) noexcept
+
+template<typename T, typename TC>     
+T get_or(basic_value<TC>&& v, T&& opt) noexcept
+

Performs the same conversion as toml::get<T>. If it fails, the second argument is returned.

When T is const char* +#

template<typename TC>
+typename basic_value<TC>::string_type
+get_or(const basic_value<TC>& v,
+       const typename basic_value<TC>::string_type::value_type* opt);
+

When const char* is passed, the conversion target is interpreted as std::string.

When T is something else +#

template<typename TC>
+typename std::remove_cv<typename std::remove_reference<T>::type>::type
+get_or(const basic_value<TC>& v, T&& opt);
+

Performs the same conversion as toml::get<T>. If it fails, the second argument is returned.

Related +#

\ No newline at end of file diff --git a/docs/reference/index.html b/docs/reference/index.html new file mode 100644 index 00000000..d515ba38 --- /dev/null +++ b/docs/reference/index.html @@ -0,0 +1,47 @@ +reference | toml11 + +
reference +

Reference +#

Here, we explain the effects of the classes and functions provided by toml11.

Directory Structure +#

toml.hpp and toml_fwd.hpp reside in ${TOML11_INCLUDE_DIR}. +Other files are located in ${TOML11_INCLUDE_DIR}/toml11.

If you want to #include each feature’s file individually, use #include <toml11/color.hpp>. +If you want to include all at once, use #include <toml.hpp>.

color.hpp +#

Defines functions related to colorizing error messages.

comments.hpp +#

Defines types preserve_comment and discard_comment for preserving comments.

conversion.hpp +#

Defines macros to automatically convert toml::value and user-defined classes.

datetime.hpp +#

Defines classes for datetime information.

error_info.hpp +#

Defines a class for error information.

exception.hpp +#

Defines the base class for exceptions used in toml11, toml::exception.

find.hpp +#

Defines the toml::find function to search for and convert values.

format.hpp +#

Defines classes for formatting information of values.

from.hpp +#

Forward declaration of the from<T> type for converting user-defined types.

get.hpp +#

Defines the toml::get<T> function to retrieve and convert values from toml::value.

into.hpp +#

Forward declaration of the into<T> type for converting user-defined types.

literal.hpp +#

Defines the operator"" _toml literal.

ordered_map.hpp +#

Defines toml::ordered_map.

parser.hpp +#

Defines functions to parse files or strings.

result.hpp +#

Defines the result<T, E> type for representing success or failure values used as return types in other functions.

serializer.hpp +#

Defines the toml::format function and toml::serializer used for serialization.

source_location.hpp +#

Defines the source_location type used for error information, pointing to a location within a file.

spec.hpp +#

Defines the toml::semantic_version and toml::spec types to control TOML language version information and feature flags.

toml.hpp +#

toml.hpp includes all other headers, making all toml11 features available.

toml_fwd.hpp +#

toml_fwd.hpp contains forward declarations of structs defined in toml11 and macro definitions.

types.hpp +#

Defines the toml::type_config type for controlling the types held by toml::value.

value.hpp +#

Defines the toml::value type.

value_t.hpp +#

Defines the toml::value_t enumeration.

version.hpp +#

Defines the version information for toml11.

visit.hpp +#

Defines the toml::visit function to apply functions to the values held by toml::value.

Notes +#

Functions not explicitly mentioned here (mostly those defined under namespace toml::detail or namespace toml::cxx) are available by inspecting the source code but are not guaranteed to maintain their interface across future versions (including patch version updates).

\ No newline at end of file diff --git a/docs/reference/index.xml b/docs/reference/index.xml new file mode 100644 index 00000000..d9683229 --- /dev/null +++ b/docs/reference/index.xml @@ -0,0 +1,61 @@ +reference on toml11https://toruniina.github.io/toml11/docs/reference/Recent content in reference on toml11Hugoencolor.hpphttps://toruniina.github.io/toml11/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/color/color.hpp # In color.hpp, functions related to colorizing error messages are defined. +Colors are specified using ANSI escape code. In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read. +Macros # TOML11_COLORIZE_ERROR_MESSAGE If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default. +If not defined, colors are not applied by default. You need to specify them using toml::color::enable().comments.hpphttps://toruniina.github.io/toml11/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/comments/comments.hpp # In comments.hpp, comment containers are provided. +toml::preserve_comments # preserve_comments is a container that preserves comments. +It has all the member functions of std::vector&lt;std::string&gt;. +Comments are preserved as std::string. If the comment does not start with #, it will be prefixed with # during output. However, this prefixing is not done when adding comments to the container. +Spaces are not automatically added, so if you want a space immediately after #, either start the comment with a space or pass the comment with #.conversion.hpphttps://toruniina.github.io/toml11/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/conversion/ conversion.hpp # Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find. +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) Example # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) Related # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/datetime/datetime.hpp # Defines a class that stores date and time information used in TOML&rsquo;s datetime. +enum class month_t # Enum class to specify months. +Due to its relationship with std::tm, local_date treats January as 0. To avoid confusion, month_t allows specification of months by their names. +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # local_date holds a date.error_info.hpphttps://toruniina.github.io/toml11/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/error_info/error_info.hpp # In error_info.hpp, definitions for error_info and functions to format it are provided. +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename .exception.hpphttps://toruniina.github.io/toml11/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/exception/exception.hpp # toml::exception # Base class for exception types defined in toml11. +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml Member Functions # Destructor # virtual ~exception() noexcept override = default; Override when derived. +what # virtual const char* what() const noexcept override {return &#34;&#34;;} Returns the error message.find.hpphttps://toruniina.github.io/toml11/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/find/find.hpp # This function searches for a value in a toml::value and performs type conversion if necessary. +toml::value can change the type it stores, and toml::find accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.format.hpphttps://toruniina.github.io/toml11/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/format/format.hpp # Defines structures and enumerations related to formatting information for toml::value. +indent_char # An enumeration representing the indentation character choice. +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); Choosing none means no indentation is used, regardless of the value in super tables. +If both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.from.hpphttps://toruniina.github.io/toml11/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/from/from.hpp # Defines a struct used for conversion from toml::value in toml::get and toml::find. +You can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct from; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.get.hpphttps://toruniina.github.io/toml11/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/get/get.hpp # These are functions for extracting values from toml::value and performing type conversions if necessary. +toml::value can change the type it stores, and toml::get accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::get&lt;T&gt; # Overview # Generally, toml::get behaves as follows: You specify T as in toml::get&lt;int&gt;(v).into.hpphttps://toruniina.github.io/toml11/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/into/into.hpp # Defines a struct used for conversion from user-defined types into toml::value constructors. +You can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct into; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.literal.hpphttps://toruniina.github.io/toml11/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/literal/literal.hpp # In literal.hpp, the _toml literal is defined. +The _toml literal parses string literals into toml::value. +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // Available in C++20 and later } // toml_literals } // literals } // toml Free Functions # operator&quot;&quot; _toml(const char*) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); Converts a string literal into a toml::value by parsing it.ordered_map.hpphttps://toruniina.github.io/toml11/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/ordered_map/ordered_map.hpp # Defines toml::ordered_map, which is used to maintain the order of values in a file. +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order. +As a linear container, searches require O(n) time relative to the number of elements.parser.hpphttps://toruniina.github.io/toml11/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/parser/parser.hpp # Defines functions for parsing files or strings and the exceptions they use. +While parse throws an exception on failure, try_parse returns error information. +parse # Parses the content of a given file and returns a toml::basic_value. +In case of failure, toml::syntax_error is thrown. +The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec. +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } Parses the content of the given filename.result.hpphttps://toruniina.github.io/toml11/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/result/result.hpp # result.hpp defines the result type, which can hold either a success value or a failure value. +This is used as the return type for toml::try_parse, which does not throw exceptions. +success # A type that holds a success value. +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } Member Types # using value_type = T; The type of the success value.serializer.hpphttps://toruniina.github.io/toml11/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/serializer/serializer.hpp # format # Serializes the data. +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } If there&rsquo;s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.source_location.hpphttps://toruniina.github.io/toml11/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/source_location/source_location.hpp # source_location.hpp defines a class representing a specific area within a TOML file. +This class is used to represent problematic areas in error messages. +toml::source_location # source_location is a class representing a specific area within a TOML file. +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/spec/spec.hpp # spec.hpp defines classes for specifying the version of TOML. +toml::semantic_version # semantic_version is a class that stores version information. +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml Member Functions # Constructor # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a semantic_version instance with the specified major, minor, and patch version numbers.toml_fwd.hpphttps://toruniina.github.io/toml11/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions. +When only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time. +Since this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value&lt;toml::type_config&gt;::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value. This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.toml.hpphttps://toruniina.github.io/toml11/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml/toml.hpp # toml.hpp includes all other headers. +This allows access to all features of toml11. +This header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${toml11_include_dir}/toml11/.types.hpphttps://toruniina.github.io/toml11/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/types/types.hpp # This document defines classes that specifies type information. +type_config # type_config is a type that encapsulates parameters given to toml::basic_value. +When using different types within toml::basic_value&lt;T&gt;, you need to define and pass this type separately. All elements listed are required. +If you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float. +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static Member Functions # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); If you use a type as integer_type that cannot utilize standard stream operators, implement this function.value_t.hpphttps://toruniina.github.io/toml11/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value_t/value_t.hpp # value_t # value_t is used to handle the type information of toml::value. +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml Non-member Functions # Stream Operator # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); Outputs the string representation of the value_t to the stream.value.hpphttps://toruniina.github.io/toml11/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value/value.hpp # value.hpp defines basic_value. +toml::basic_value # basic_value is a class that stores TOML values. +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // Defined in types.hpp // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml Member Types # The following member types are defined.version.hpphttps://toruniina.github.io/toml11/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/version/version.hpp # In version.hpp, macros related to the version information of toml11 are defined. +Macros # TOML11_VERSION_MAJOR # The major version of toml11. +TOML11_VERSION_MINOR # The minor version of toml11. +TOML11_VERSION_PATCH # The patch version of toml11. +Function # license_notice # namespace toml { const char* license_notice() noexcept; } Returns the license notice. +Provided for convenience when redistributing without source code.visit.hpphttps://toruniina.github.io/toml11/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/visit/visit.hpp # In visit.hpp, toml::visit is defined. +toml::visit # Functions # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v); } toml::visit calls the overload of Visitor corresponding to the type held by basic_value&lt;TC&gt;, and returns the result. \ No newline at end of file diff --git a/docs/reference/into/index.html b/docs/reference/into/index.html new file mode 100644 index 00000000..da629473 --- /dev/null +++ b/docs/reference/into/index.html @@ -0,0 +1,50 @@ +into.hpp | toml11 + +
into.hpp +

into.hpp +#

Defines a struct used for conversion from user-defined types into toml::value constructors.

You can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into<T>.

This file does not provide specific implementations. Please specialize this struct when using.

namespace toml
+{
+
+template<typename T>
+struct into;
+
+} // toml
+

Example +#

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+#include <toml11/into.hpp>
+
+namespace toml
+{
+template<>
+struct into<extlib::foo>
+{
+    template<typename TC>
+    static toml::basic_value<TC> into_toml(const extlib::foo& f)
+    {
+        using value_type = toml::basic_value<TC>;
+        using table_type = typename value_type::table_type;
+        return value_type(table_type{{"a", f.a}, {"b", f.b}});
+    }
+};
+} // toml
+

Related +#

\ No newline at end of file diff --git a/docs/reference/literal/index.html b/docs/reference/literal/index.html new file mode 100644 index 00000000..542766c1 --- /dev/null +++ b/docs/reference/literal/index.html @@ -0,0 +1,46 @@ +literal.hpp | toml11 + +
literal.hpp +

literal.hpp +#

In literal.hpp, the _toml literal is defined.

The _toml literal parses string literals into toml::value.

namespace toml
+{
+inline namespace literals
+{
+inline namespace toml_literals
+{
+toml::value operator"" _toml(const char* str, std::size_t len);
+toml::value operator"" _toml(const char8_t* str, std::size_t len); // Available in C++20 and later
+} // toml_literals
+} // literals
+} // toml
+

Free Functions +#

operator"" _toml(const char*) +#

toml::value operator"" _toml(const char* str, std::size_t len);
+

Converts a string literal into a toml::value by parsing it.

For typical TOML files, this performs equivalent parsing to toml::parse.

const auto v1 = "a = 'foo'"_toml; // v1: {a = 'foo'}
+

When dealing with multiline content, raw string literal is convenient.

const auto v1 = R"(
+    a = 42
+    b = "foo"
+)"_toml;
+

If the value is a standalone entity, it represents that value.

const auto v2 = "'foo'"_toml;     // v2: 'foo'
+

TOML allows keys consisting solely of numbers. When distinguishing between table definitions and arrays is ambiguous (e.g., [1]), table definitions take precedence.

To interpret as an array, use a trailing comma.

const auto v3 = "[1]"_toml;  // v3: {1 = {}}
+const auto v4 = "[1,]"_toml; // v4: [1,]
+

operator"" _toml(const char8_t*) +#

Defined when char8_t is available. Otherwise identical in functionality, differing only in argument type.

Example +#

#include <toml.hpp>
+int main()
+{
+    using namespace toml::literals::toml_literals;
+    const auto v = "a = \"foo\""_toml;
+    assert(v.at("a").as_string() == "foo");
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/reference/ordered_map/index.html b/docs/reference/ordered_map/index.html new file mode 100644 index 00000000..5da55ba2 --- /dev/null +++ b/docs/reference/ordered_map/index.html @@ -0,0 +1,139 @@ +ordered_map.hpp | toml11 + +
ordered_map.hpp +

ordered_map.hpp +#

Defines toml::ordered_map, which is used to maintain the order of values in a file.

class ordered_map +#

namespace toml
+{
+template<typename Key, typename Val, typename Cmp = std::equal_to<Key>,
+         typename Allocator = std::allocator<std::pair<Key, Val>>>
+class ordered_map;
+}
+

The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order.

As a linear container, searches require O(n) time relative to the number of elements. +Use this when search operations are infrequent and maintaining the order of values is important.

Non-Member Types +#

namespace toml
+{
+struct ordered_type_config;
+
+using ordered_value = basic_value<ordered_type_config>;
+using ordered_table = typename ordered_value::table_type;
+using ordered_array = typename ordered_value::array_type;
+}
+

Use these in place of toml::type_config and toml::value.

Since toml::parse defaults to using type_config, specify

const auto input = toml::parse<toml::ordered_type_config>("input.toml");
+

when parsing.

Member Types +#

using key_type       = Key;
+using mapped_type    = Val;
+using value_type     = std::pair<Key, Val>;
+using key_compare    = Cmp;
+using allocator_type = Allocator;
+
+using container_type  = std::vector<value_type, Allocator>;
+using reference       = typename container_type::reference;
+using pointer         = typename container_type::pointer;
+using const_reference = typename container_type::const_reference;
+using const_pointer   = typename container_type::const_pointer;
+using iterator        = typename container_type::iterator;
+using const_iterator  = typename container_type::const_iterator;
+using size_type       = typename container_type::size_type;
+using difference_type = typename container_type::difference_type;
+

Member Functions +#

Constructors +#

ordered_map() = default;
+

Constructs an empty ordered_map.

Constructors (Comparator, Allocator) +#

explicit ordered_map(const Cmp& cmp, const Allocator& alloc = Allocator());
+explicit ordered_map(const Allocator& alloc);
+

Constructs an ordered_map with a specified comparator for key comparison and an allocator for memory management.

Copy and Move Constructors +#

ordered_map(const ordered_map&) = default;
+ordered_map(ordered_map&&)      = default;
+
+ordered_map(const ordered_map& other, const Allocator& alloc);
+ordered_map(ordered_map&& other, const Allocator& alloc);
+

Constructs an ordered_map by copying or moving the contents from another ordered_map. +An allocator can also be specified for memory management.

Constructors (Iterator) +#

template<typename InputIterator>
+ordered_map(InputIterator first, InputIterator last, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
+template<typename InputIterator>
+ordered_map(InputIterator first, InputIterator last, const Allocator& alloc = Allocator());
+

Constructs an ordered_map with a range represented by iterators. +The order of the elements follows the order of the iterators.

Constructors (std::initializer_list) +#

ordered_map(std::initializer_list<value_type> v, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
+ordered_map(std::initializer_list<value_type> v, const Allocator& alloc);
+

Initializes the ordered_map using an initializer list.

Copy and Move Assignment Operators +#

ordered_map& operator=(const ordered_map&) = default;
+ordered_map& operator=(ordered_map&&)      = default;
+

Assigns the contents of another ordered_map to this one, using copy or move semantics.

Assignment Operator (std::initializer_list) +#

ordered_map& operator=(std::initializer_list<value_type> v);
+

Assigns the contents of an initializer list to the ordered_map.

Destructor +#

~ordered_map() = default;
+

Destroys the ordered_map.

begin(), end() +#

iterator       begin()        noexcept;
+iterator       end()          noexcept;
+const_iterator begin()  const noexcept;
+const_iterator end()    const noexcept;
+const_iterator cbegin() const noexcept;
+const_iterator cend()   const noexcept;
+

Returns iterators to the beginning and end of the container, allowing iteration over its contents in order.

empty() +#

bool empty() const noexcept;
+

Returns true if the ordered_map is empty, false otherwise.

size() +#

std::size_t size() const noexcept;
+

Returns the number of elements in the ordered_map.

max_size() +#

std::size_t max_size() const noexcept;
+

Returns the maximum number of elements the ordered_map can hold.

clear() +#

void clear();
+

Clears all elements from the ordered_map.

push_back(kv) +#

void push_back(const value_type&);
+void push_back(value_type&&);
+

Appends a key-value pair to the end of the ordered_map.

emplace_back(k, v) +#

void emplace_back(key_type, mapped_type);
+

Appends a key-value pair to the end of the ordered_map by constructing it in place.

pop_back() +#

void pop_back();
+

Removes the last element from the ordered_map.

insert(kv) +#

void insert(value_type);
+

Inserts a key-value pair at the end of the ordered_map.

emplace(k, v) +#

void emplace(key_type, mapped_type);
+

Inserts a key-value pair at the end of the ordered_map by constructing it in place.

count(k) +#

std::size_t count(const key_type&) const noexcept;
+

Returns the number of elements with the specified key. +Since duplicate keys are not allowed, this will return either 1 if the key exists or 0 if it does not.

contains(k) +#

bool contains(const key_type&) const noexcept;
+

Returns true if the ordered_map contains an element with the specified key, false otherwise.

find(k) +#

iterator       find(const key_type& key)       noexcept;
+const_iterator find(const key_type& key) const noexcept;
+

Finds an element with the specified key and returns an iterator to it. If the key is not found, returns end().

at(k) +#

mapped_type&       at(const key_type& k);
+mapped_type const& at(const key_type& k) const;
+

Finds an element with the specified key and returns a reference to its value. Throws std::out_of_range if the key is not found.

operator[](k) +#

mapped_type&       operator[](const key_type& k);
+mapped_type const& operator[](const key_type& k) const;
+

Finds an element with the specified key and returns a reference to its value. +If the key is not found, a new value is constructed and returned. +If the ordered_map is const, throws std::out_of_range instead.

key_comp() +#

key_compare key_comp() const;
+

Returns the comparator used for key comparison.

Notes +#

Key Modification +#

Since ordered_map uses std::pair<Key, Val> for value_type, it is possible to modify the key through an iterator. However, this practice is not recommended.

If you modify a key this way and it conflicts with an existing key, one of the conflicting keys will become unsearchable.

When using operator[], push_back, or insert, collisions with existing keys are detected.

Order Preservation Details +#

ordered_map maintains the order of keys, but this order preservation applies only to keys defined within the same table. Order across different tables is not maintained.

For example, the order in the following file will be preserved:

apple.type = "fruit"
+apple.skin = "thin"
+apple.color = "red"
+orange.type = "fruit"
+orange.skin = "thick"
+orange.color = "orange"
+

In contrast, the order in the following file will not be preserved:

apple.type = "fruit"
+orange.type = "fruit"
+
+apple.skin = "thin"
+orange.skin = "thick"
+
+apple.color = "red"
+orange.color = "orange"
+

ordered_map preserves the order of the apple and orange definitions at the root table level, and the order of type, skin, color within each apple and orange table.

\ No newline at end of file diff --git a/docs/reference/parser/index.html b/docs/reference/parser/index.html new file mode 100644 index 00000000..26b9cb83 --- /dev/null +++ b/docs/reference/parser/index.html @@ -0,0 +1,179 @@ +parser.hpp | toml11 + +
parser.hpp +

parser.hpp +#

Defines functions for parsing files or strings and the exceptions they use.

While parse throws an exception on failure, try_parse returns error information.

parse +#

Parses the content of a given file and returns a toml::basic_value.

In case of failure, toml::syntax_error is thrown.

The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.

parse(std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(std::string fname,
+      spec s = spec::default_version());
+}
+

Parses the content of the given filename.

If reading the file fails, toml::file_io_error is thrown.

If parsing fails, toml::syntax_error is thrown.

parse(const char (&)[N] filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config, std::size_t N>
+basic_value<TC>
+parse(const char (&fname)[N],
+      spec s = spec::default_version());
+}
+

Parses the content of the given filename from a string literal.

If reading the file fails, toml::file_io_error is thrown.

If parsing fails, toml::syntax_error is thrown.

parse(std::filesystem::path, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(const std::filesystem::path& fpath,
+      spec s = spec::default_version());
+}
+

This is defined only if <filesystem> is available.

Parses the content of the file at the given file path.

If reading the file fails, toml::file_io_error is thrown.

If parsing fails, toml::syntax_error is thrown.

parse(std::istream&, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(std::istream& is,
+      std::string fname = "unknown file",
+      spec s = spec::default_version());
+}
+

Parses the content of the given std::istream&.

Open a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

The filename information is taken as the third argument. If the filename is not provided, it defaults to "unknown file".

parse(FILE*, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+parse(FILE* fp,
+      std::string filename,
+      spec s = spec::default_version());
+}
+

Parses the content of the file pointed to by FILE*.

Open a stream in binary mode by passing "rb" to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

If reading the file fails, file_io_error containing errno is thrown.

If parsing fails, syntax_error is thrown.

parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(std::vector<unsigned char> content,
+      std::string filename,
+      spec s = spec::default_version());
+}
+

Parses the byte sequence as a TOML file.

If parsing fails, toml::syntax_error is thrown.

parse_str +#

parse_str(std::string, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse_str(std::string content,
+          spec s = spec::default_version(),
+          cxx::source_location loc = cxx::source_location::current());
+}
+

Parses a string as a TOML file.

In case of failure, toml::syntax_error is thrown.

The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.

You generally don’t need to manually set the third argument, cxx::source_location. +If std::source_location, std::experimental::source_location, or __builtin_FILE is available, +the location information where parse_str was called will be stored.

try_parse +#

Parses the contents of the given file and returns a toml::basic_value if successful, or a std::vector<toml::error_info> if it fails.

The type information of basic_value is specified by template, and the version of the TOML language is specified by toml::spec.

Unlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. +However, please note that exceptions thrown by the standard library will still propagate.

For instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.

try_parse(std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(std::string fname,
+          spec s = spec::default_version());
+}
+

Takes a file name and parses its content.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(const char (&)[N] filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config, std::size_t N>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(const char (&fname)[N],
+          spec s = spec::default_version());
+}
+

Takes a string literal as a file name and parses its content.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(std::filesystem::path, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(const std::filesystem::path& fpath,
+          spec s = spec::default_version());
+}
+

Takes a file path and parses its content.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(std::istream&, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(std::istream& is,
+          std::string fname = "unknown file",
+          spec s = spec::default_version());
+}
+

Takes a std::istream& and parses its content.

Open a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

The file name information is taken as the second argument. If a file name is not provided, it defaults to "unknown file".

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(FILE*, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(FILE* fp,
+          std::string filename,
+          spec s = spec::default_version());
+}
+

Takes a FILE* and parses its content.

Open a stream in binary mode by passing "rb" to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(std::vector<unsigned char> content,
+          std::string filename,
+          spec s = spec::default_version());
+}
+

Takes a byte array and parses its content as a TOML file.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse_str +#

try_parse_str(std::string, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse_str(std::string content,
+              spec s = spec::default_version(),
+              cxx::source_location loc = cxx::source_location::current());
+}
+

Parses a string as a TOML file, returning a toml::basic_value if successful, or a std::vector<toml::error_info> if it fails.

Unlike parse_str, it does not throw syntax_error, but instead returns error information as the failure type of the result.

If std::source_location, std::experimental::source_location, or __builtin_FILE is available, it will record the location information.

Typically, you do not need to manually set the third argument cxx::source_location. If any of std::source_location, std::experimental::source_location, or __builtin_FILE are available, the information of the location where parse_str was called will be saved as the location information.

Unlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. However, please note that exceptions thrown by the standard library will still propagate.

For instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.

syntax_error +#

namespace toml
+{
+struct syntax_error final : public ::toml::exception
+{
+  public:
+    syntax_error(std::string what_arg, std::vector<error_info> err);
+    ~syntax_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+    std::vector<error_info> const& errors() const noexcept
+};
+}
+

An exception thrown when a syntax error is detected in TOML.

It is thrown by parse but not by try_parse.

file_io_error +#

namespace toml
+{
+struct file_io_error final : public ::toml::exception
+{
+  public:
+    file_io_error(const std::string& msg, const std::string& fname);
+    file_io_error(int errnum, const std::string& msg, const std::string& fname);
+    ~file_io_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+
+    bool has_errno() const noexcept;
+    int  get_errno() const noexcept;
+};
+}
+

An exception thrown when reading the contents of a file fails.

When using FILE* to read a file, errno is set.

has_errno +#

If std::ifstream fails, errno is not set.

In this case, has_errno returns false.

get_errno +#

Particularly when passing a FILE*, retrieves the value of errno.

If has_errno is false, it returns 0.

Related +#

\ No newline at end of file diff --git a/docs/reference/result/index.html b/docs/reference/result/index.html new file mode 100644 index 00000000..d2c4cf74 --- /dev/null +++ b/docs/reference/result/index.html @@ -0,0 +1,272 @@ +result.hpp | toml11 + +
result.hpp +

result.hpp +#

result.hpp defines the result type, which can hold either a success value or a failure value.

This is used as the return type for toml::try_parse, which does not throw exceptions.

success +#

A type that holds a success value.

namespace toml
+{
+template<typename T>
+struct success
+{
+    using value_type = T;
+
+    explicit success(value_type v);
+
+    ~success() = default;
+    success(const success&) = default;
+    success(success&&)      = default;
+    success& operator=(const success&) = default;
+    success& operator=(success&&)      = default;
+
+    template<typename U>
+    explicit success(U&& v);
+    template<typename U>
+    explicit success(success<U> v);
+
+    value_type&       get()       noexcept;
+    value_type const& get() const noexcept;
+};
+
+template<typename T>
+success<typename std::decay<T>::type> ok(T&& v);
+template<std::size_t N>
+success<std::string> ok(const char (&literal)[N])
+}
+

Member Types +#

using value_type = T;
+

The type of the success value.

Member Functions +#

Constructor +#

explicit success(value_type v);
+

Constructs with a value_type argument.

template<typename U>
+explicit success(U&& v);
+

Constructs with another type that can be converted to value_type.

template<typename U>
+explicit success(success<U> v);
+

Constructs with another success type that can be converted to value_type.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

Non-Member Functions +#

ok(T) +#

template<typename T>
+success<typename std::decay<T>::type> ok(T&& v);
+template<std::size_t N>
+success<std::string> ok(const char (&literal)[N]);
+

Constructs and returns a success type from a success value.

Converts a string literal into std::string.

success<reference_wrapper<T>> +#

Specialization of success for when the success value is a reference.

namespace toml
+{
+template<typename T>
+struct success<std::reference_wrapper<T>>
+{
+    using value_type = T;
+
+    explicit success(std::reference_wrapper<value_type> v) noexcept;
+
+    value_type&       get()       noexcept;
+    value_type const& get() const noexcept;
+};
+}
+

Member Types +#

using value_type = T;
+

The type of the success value. It is T from std::reference_wrapper<T>, not the reference itself.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

failure +#

A type that holds a failure value.

namespace toml
+{
+template<typename T>
+struct failure
+{
+    using value_type = T;
+
+    explicit failure(value_type v);
+
+    ~failure() = default;
+    failure(const failure&) = default;
+    failure(failure&&)      = default;
+    failure& operator=(const failure&) = default;
+    failure& operator=(failure&&)      = default;
+
+    template<typename U>
+    explicit failure(U&& v);
+    template<typename U>
+    explicit failure(failure<U> v);
+
+    value_type&       get()       noexcept;
+    value_type const& get() const noexcept;
+};
+
+template<typename T>
+failure<typename std::decay<T>::type> err(T&& v);
+template<std::size_t N>
+failure<std::string> err(const char (&literal)[N]);
+}
+

Member Types +#

using value_type = T;
+

The type of the failure value.

Member Functions +#

Constructor +#

explicit failure(value_type v);
+

Constructs with a value_type argument.

template<typename U>
+explicit failure(U&& v);
+

Constructs with another type that can be converted to value_type.

template<typename U>
+explicit failure(failure<U> v);
+

Constructs with another failure type that can be converted to value_type.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

Non-Member Functions +#

err(T) +#

template<typename T>
+failure<typename std::decay<T>::type> err(T&& v);
+template<std::size_t N>
+failure<std::string> err(const char (&literal)[N]);
+

Constructs and returns a failure type from a failure value.

Converts a string literal into std::string.

failure<reference_wrapper<T>> +#

Specialization of failure for when the failure value is a reference.

namespace toml
+{
+template<typename T>
+struct failure<std::reference_wrapper<T>>
+{
+    using value_type = T;
+
+    explicit failure(std::reference_wrapper<value_type> v) noexcept;
+
+    value_type&       get()       noexcept {return value.get();}
+    value_type const& get() const noexcept {return value.get();}
+};
+}
+

Member Types +#

using value_type = T;
+

The type of the failure value. It is T from std::reference_wrapper<T>, not the reference itself.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

result +#

A type that holds either a success value or a failure value.

namespace toml
+{
+template<typename T, typename E>
+struct result
+{
+    using success_type = success<T>;
+    using failure_type = failure<E>;
+    using value_type = typename success_type::value_type;
+    using error_type = typename failure_type::value_type;
+
+    result(success_type s);
+    result(failure_type f);
+
+    template<typename U>
+    result(success<U> s);
+    template<typename U>
+    result(failure<U> f);
+
+    result& operator=(success_type s);
+    result& operator=(failure_type f);
+
+    template<typename U>
+    result& operator=(success<U> s);
+    template<typename U>
+    result& operator=(failure<U> f);
+
+    ~result() noexcept;
+
+    result(const result& other);
+    result(result&& other);
+    result& operator=(const result& other);
+    result& operator=(result&& other);
+
+    template<typename U, typename F>
+    result(result<U, F> other);
+    template<typename U, typename F>
+    result& operator=(result<U, F> other);
+
+    bool is_ok()  const noexcept;
+    bool is_err() const noexcept;
+
+    explicit operator bool() const noexcept;
+
+    value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
+    value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
+
+    value_type&       unwrap_or(value_type& opt)             noexcept;
+    value_type const& unwrap_or(value_type const& opt) const noexcept;
+
+    error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
+    error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
+
+    value_type&       as_ok()       noexcept;
+    value_type const& as_ok() const noexcept;
+
+    error_type&       as_err()       noexcept;
+    error_type const& as_err() const noexcept;
+};
+}
+

Member Types +#

success_type +#

success<T>.

failure_type +#

failure<E>.

value_type +#

The type T of the success value, alias for success_type::value_type.

If T is std::reference_wrapper<U>, then it is U.

error_type +#

The type E of the failure value, alias for failure_type::value_type.

If E is std::reference_wrapper<F>, then it is F.

Member Functions +#

Constructor +#

result() = delete;
+

Cannot construct result type by default. Needs to be given either a success or failure type.

result(success_type s);
+result(failure_type f);
+

Constructs with a success_type or failure_type.

template<typename U>
+result(success<U> s);
+template<typename U>
+result(failure<U> f);
+

Constructs with a success<U> or failure<U> that is convertible to value_type or error_type.

template<typename U, typename F>
+result(result<U, F> other);
+template<typename U, typename F>
+result& operator=(result<U, F> other);
+

Constructs from or assigns to another result with convertible success or failure types.

Copy and Move Constructors +#

result(const result& other);
+result(result&& other);
+

Can be copy or move constructed.

operator= +#

result& operator=(const result& other);
+result& operator=(result&& other);
+

Can be copy or move assigned.

template<typename U>
+result& operator=(success<U> s);
+template<typename U>
+result& operator=(failure<U> f);
+

Can be assigned from convertible success or failure types.

is_ok() +#

bool is_ok()  const noexcept;
+

Returns true if it holds a success value, false otherwise.

is_err() +#

bool is_err() const noexcept;
+

Returns true if it holds a failure value, false otherwise.

operator bool() +#

explicit operator bool() const noexcept;
+

Returns true if it holds a success value, false otherwise.

unwrap() +#

value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
+value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
+

Returns the stored success value.

Throws toml::bad_result_access if it holds a failure value.

If std::source_location or equivalent compiler extension is available, the file name and line number where unwrap() occurred are included in the what() string.

unwrap_or() +#

value_type&       unwrap_or(value_type& opt)             noexcept;
+value_type const& unwrap_or(value_type const& opt) const noexcept;
+

Returns the stored success value if present, otherwise returns the provided default value.

unwrap_err() +#

error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
+error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
+

Returns the stored failure value.

Throws toml::bad_result_access if it holds a success value.

If std::source_location or equivalent compiler extension is available, the file name and line number where unwrap_err() occurred are included in the what() string.

as_ok() +#

value_type&       as_ok()       noexcept;
+value_type const& as_ok() const noexcept;
+

Returns the success value without checking.

Behavior is undefined if it holds a failure value.

as_err() +#

error_type&       as_err()       noexcept;
+error_type const& as_err() const noexcept;
+

Returns the failure value without checking.

Behavior is undefined if it holds a success value.

bad_result_access +#

An exception thrown when unwrap or unwrap_err fails in a result.

namespace toml
+{
+struct bad_result_access : public ::toml::exception
+{
+  public:
+    explicit bad_result_access(const std::string& what_arg);
+    virtual ~bad_result_access() noexcept override = default;
+    virtual const char* what() const noexcept override;
+  protected:
+    std::string what_;
+};
+}
+
\ No newline at end of file diff --git a/docs/reference/serializer/index.html b/docs/reference/serializer/index.html new file mode 100644 index 00000000..6fc1d556 --- /dev/null +++ b/docs/reference/serializer/index.html @@ -0,0 +1,44 @@ +serializer.hpp | toml11 + +
serializer.hpp +

serializer.hpp +#

format +#

Serializes the data.

namespace toml
+{
+template<typename TC>
+std::string format(const basic_value<TC>& v,
+                   const spec s = spec::default_version());
+template<typename TC>
+std::string format(const typename basic_value<TC>::key_type& k,
+                   const basic_value<TC>& v,
+                   const spec s = spec::default_version());
+template<typename TC>
+std::string format(const std::vector<typename basic_value<TC>::key_type>& ks,
+                   const basic_value<TC>& v,
+                   const spec s = spec::default_version());
+}
+

If there’s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.

format(v, spec) +#

Formats a toml::value according to its format information and the provided spec.

If it’s a table_type, it’s formatted as if it were the root table. Otherwise, only the value is formatted.

format(k, v, spec) +#

Formats a toml::value along with the given key.

v is interpreted as being defined under that key.

format([k,...], v, spec) +#

v is interpreted as being defined under those keys. +If multiple keys are provided, it’s interpreted as a recursively defined table.

serialization_error +#

Reports errors that occurred during serialization.

namespace toml
+{
+struct serialization_error final : public ::toml::exception
+{
+  public:
+    explicit serialization_error(std::string what_arg, source_location loc);
+    ~serialization_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+    source_location const& location() const noexcept;
+};
+}
+
\ No newline at end of file diff --git a/docs/reference/source_location/index.html b/docs/reference/source_location/index.html new file mode 100644 index 00000000..04f86084 --- /dev/null +++ b/docs/reference/source_location/index.html @@ -0,0 +1,112 @@ +source_location.hpp | toml11 + +
source_location.hpp +

source_location.hpp +#

source_location.hpp defines a class representing a specific area within a TOML file.

This class is used to represent problematic areas in error messages.

toml::source_location +#

source_location is a class representing a specific area within a TOML file.

namespace toml
+{
+struct source_location
+{
+  public:
+
+    explicit source_location(/* implementation-defined */);
+    ~source_location() = default;
+    source_location(source_location const&) = default;
+    source_location(source_location &&)     = default;
+    source_location& operator=(source_location const&) = default;
+    source_location& operator=(source_location &&)     = default;
+
+    bool        is_ok()  const noexcept;
+    std::size_t length() const noexcept;
+
+    std::size_t first_line_number()   const noexcept;
+    std::size_t first_column_number() const noexcept;
+    std::size_t last_line_number()    const noexcept;
+    std::size_t last_column_number()  const noexcept;
+
+    std::string const& file_name()    const noexcept;
+
+    std::size_t num_lines()           const noexcept;
+
+    std::string const& first_line() const;
+    std::string const& last_line()  const;
+
+    std::vector<std::string> const& lines() const noexcept;
+};
+
+template<typename ... Ts>
+std::string format_location(const source_location& loc, const std::string& msg, const Ts& ... locs_and_msgs);
+} //toml
+

Member Functions +#

Constructor +#

explicit source_location(/* implementation-defined */);
+

toml::source_location can only be constructed via toml::parse or the _toml literal.

is_ok() +#

bool is_ok() const noexcept;
+

Returns true if the source_location holds a valid value, false otherwise.

The result of location() from toml::value constructed outside of toml::parse or _toml literals returns false for is_ok as it points to nothing.

length() +#

std::size_t length() const noexcept;
+

Returns the length of the area pointed to by the source_location.

Returns 0 if it does not hold a valid value.

first_line_number() +#

std::size_t first_line_number() const noexcept;
+

Returns the line number of the first line of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

first_column_number() +#

std::size_t first_column_number() const noexcept;
+

Returns the column number of the first column of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

last_line_number() +#

std::size_t last_line_number() const noexcept;
+

Returns the line number of the last line of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

last_column_number() +#

std::size_t last_column_number() const noexcept;
+

Returns the column number of the last column of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

file_name() +#

std::string const& file_name() const noexcept;
+

Returns the file name containing the area pointed to by the source_location.

Returns "unknown file" if it does not hold a valid value.

num_lines() +#

std::size_t num_lines() const noexcept;
+

Returns the number of lines in the area pointed to by the source_location.

Returns 0 if it does not hold a valid value.

first_line() +#

std::string const& first_line() const;
+

Returns the first line of the area pointed to by the source_location.

Throws std::out_of_range if it does not hold a valid value.

last_line() +#

std::string const& last_line() const;
+

Returns the last line of the area pointed to by the source_location.

Throws std::out_of_range if it does not hold a valid value.

lines() +#

std::vector<std::string> const& lines() const noexcept;
+

Returns all lines in the area pointed to by the source_location.

Returns a reference to an empty std::vector if it does not hold a valid value.

Non-Member Functions +#

format_location +#

template<typename ... Ts>
+std::string format_location(const source_location& loc, const std::string& msg,
+                            const Ts& ... locs_and_msgs);
+

Formats the specified source_location and its associated message as follows:

 -> {filename.toml}
+   |
+ 1 | a = 42
+   |     ^-- {message}
+

If colorization is enabled, ANSI escape sequences will be added for coloring.

When multiple locs_and_msgs are provided, they must be in the order of const source_location& followed by const std::string&, and the next pair in the same order, and so on.

Example: Multiple source_location and std::string +#

When multiple source_location and std::string pairs are provided, they are formatted as follows:

source_location& loc0;
+source_location& loc1;
+source_location& loc2;
+
+std::string msg0;
+std::string msg1;
+std::string msg2;
+
+format_location(loc0, msg0,
+                loc1, msg1,
+                loc2, msg2);
+
 -> {filename0.toml}
+   |
+ 1 | a = 42
+   |     ^-- {message0}
+   |
+ -> {filename1.toml}
+   |
+ 2 | b = 3.14
+   |     ^-- {message1}
+   |
+ -> {filename2.toml}
+   |
+ 3 | c = "foo"
+   |     ^-- {message2}
+

Related +#

\ No newline at end of file diff --git a/docs/reference/spec/index.html b/docs/reference/spec/index.html new file mode 100644 index 00000000..3f5626dc --- /dev/null +++ b/docs/reference/spec/index.html @@ -0,0 +1,125 @@ +spec.hpp | toml11 + +
spec.hpp +

spec.hpp +#

spec.hpp defines classes for specifying the version of TOML.

toml::semantic_version +#

semantic_version is a class that stores version information.

namespace toml
+{
+struct semantic_version
+{
+    constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+
+    std::uint32_t major;
+    std::uint32_t minor;
+    std::uint32_t patch;
+};
+
+constexpr semantic_version
+make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept;
+
+constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
+
+std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
+} //toml
+

Member Functions +#

Constructor +#

constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+

Constructs a semantic_version instance with the specified major, minor, and patch version numbers.

Non-Member Functions +#

Comparison Operators +#

constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
+

Compares two semantic_version instances according to semantic versioning rules.

Stream Operator +#

std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
+

Outputs the version in the format {major}.{minor}.{patch}.

to_string +#

std::string to_string(const semantic_version& ver);
+

Converts the version to a string in the format {major}.{minor}.{patch}.

toml::spec +#

spec is a class that stores TOML version information.

struct spec
+{
+    constexpr static spec default_version() noexcept;
+
+    constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+
+    constexpr explicit spec(const semantic_version& semver) noexcept;
+
+    semantic_version version; // toml version
+
+    // diff from v1.0.0 -> v1.1.0
+    bool v1_1_0_allow_control_characters_in_comments;
+    bool v1_1_0_allow_newlines_in_inline_tables;
+    bool v1_1_0_allow_trailing_comma_in_inline_tables;
+    bool v1_1_0_allow_non_english_in_bare_keys;
+    bool v1_1_0_add_escape_sequence_e;
+    bool v1_1_0_add_escape_sequence_x;
+    bool v1_1_0_make_seconds_optional;
+
+    // library extensions
+    bool ext_hex_float;  // allow hex float
+    bool ext_num_suffix; // allow number suffix
+    bool ext_null_value; // allow null value
+};
+

Member Functions +#

Constructor +#

constexpr explicit spec(const semantic_version& semver) noexcept;
+

Constructs a spec with the specified TOML version.

Supports TOML v1.0.0 and TOML v1.1.0.

default_version() +#

constexpr static spec default_version() noexcept;
+

Constructs a spec with the default version.

Used as the default value for toml::parse and toml::format.

In toml11 v4.0.0, the value is v1.0.0.

v(major, minor, patch) +#

constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+

Constructs a spec with the specified version.

Member Variables +#

Each flag is automatically set to true when the specified version includes the corresponding feature.

You can modify these flags to change the behavior of toml::parse and toml::format.

Some features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.

If they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.

As such, any features related to future versions should be considered unstable.

Example +#

auto spec = toml::spec::v(1, 0, 0);
+// Allow newlines in inline tables in addition to v1.0.0 features.
+// Other v1.1.0 features are not enabled.
+spec.v1_1_0_allow_newlines_in_inline_tables = true;
+
+auto input = toml::parse("input_file.toml", spec);
+

v1_1_0_allow_control_characters_in_comments +#

bool v1_1_0_allow_control_characters_in_comments;
+

Allows most control characters in comments.

Added in TOML v1.1.0.

v1_1_0_allow_newlines_in_inline_tables +#

bool v1_1_0_allow_newlines_in_inline_tables;
+

Allows newlines in inline tables.

Added in TOML v1.1.0.

v1_1_0_allow_trailing_comma_in_inline_tables +#

bool v1_1_0_allow_trailing_comma_in_inline_tables;
+

Allows trailing commas in inline tables.

Added in TOML v1.1.0.

v1_1_0_add_escape_sequence_e +#

bool v1_1_0_add_escape_sequence_e;
+

Allows \e to represent the ESC character.

Added in TOML v1.1.0.

v1_1_0_add_escape_sequence_x +#

bool v1_1_0_add_escape_sequence_x;
+

Allows \xHH to represent a single byte character.

Added in TOML v1.1.0.

v1_1_0_make_seconds_optional +#

bool v1_1_0_make_seconds_optional;
+

Makes the seconds component in time optional.

Unspecified seconds default to 0.

Added in TOML v1.1.0.

ext_hex_float +#

bool ext_hex_float;
+

This is a language extension specific to toml11.

It is initialized to false regardless of the specified version. +You must explicitly set it to true if you want to use it.

Allows hexadecimal representation of floating-point numbers.

The hexadecimal representation conforms to the printf format specifier %a/%A.

hexf = 0xC0FFEEp-10
+

toml::format will format using hexadecimal notation only if the passed toml::spec has ext_hex_float set to true. +If the format specifier indicates hex but the toml::spec passed to toml::format has ext_hex_float set to false, the hexadecimal specification is ignored, and the number is output in decimal notation with maximum precision.

ext_num_suffix +#

bool ext_num_suffix;
+

This is a language extension specific to toml11.

It is initialized to false regardless of the specified version. +You must explicitly set it to true if you want to use it.

Allows the addition of suffixes to decimal integers and floating-point numbers. This does not apply to hexadecimal, octal, or binary notations.

There must be an _ separator between the number and the suffix.

The suffix cannot start with a digit to avoid confusion with the numeric part.

distance = 10_m   # valid
+distance = 10_2m  # invalid
+distance = 10_2_m # valid
+

The suffix is stored in the format information as std::string suffix. +The _ separating the number from the suffix is not included in the suffix.

toml::value distance = toml::find(input, "distance");
+assert(distance.as_integer_fmt().suffix == std::string("m"));
+

toml::format will format the value with the suffix only if the passed toml::spec has ext_num_suffix set to true.

The suffix follows the grammar defined as:

non-digit-graph = ALPHA / non-ascii
+graph           = ALPHA / DIGIT / non-ascii
+suffix          = _ non-digit-graph *( graph / ( _ graph ) )
+

ext_null_value +#

bool ext_null_value;
+

This is a language extension specific to toml11.

Allows the use of null as a value.

A toml::value specified as null will have no value, and is_empty() will return true.

toml::format will format it as null only if the passed toml::spec has ext_null_value set to true. +Otherwise, toml::format will terminate with an error.

\ No newline at end of file diff --git a/docs/reference/toml/index.html b/docs/reference/toml/index.html new file mode 100644 index 00000000..7b9564bb --- /dev/null +++ b/docs/reference/toml/index.html @@ -0,0 +1,15 @@ +toml.hpp | toml11 + +
toml.hpp +

toml.hpp +#

toml.hpp includes all other headers.

This allows access to all features of toml11.

This header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, +while other header files are located under ${toml11_include_dir}/toml11/.

\ No newline at end of file diff --git a/docs/reference/toml_fwd/index.html b/docs/reference/toml_fwd/index.html new file mode 100644 index 00000000..d024e39b --- /dev/null +++ b/docs/reference/toml_fwd/index.html @@ -0,0 +1,14 @@ +toml_fwd.hpp | toml11 + +
toml_fwd.hpp +

toml_fwd.hpp +#

toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions.

When only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time.

Since this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value<toml::type_config>::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value.

This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.

\ No newline at end of file diff --git a/docs/reference/types/index.html b/docs/reference/types/index.html new file mode 100644 index 00000000..a8a433ce --- /dev/null +++ b/docs/reference/types/index.html @@ -0,0 +1,101 @@ +types.hpp | toml11 + +
types.hpp +

types.hpp +#

This document defines classes that specifies type information.

type_config +#

type_config is a type that encapsulates parameters given to toml::basic_value.

When using different types within toml::basic_value<T>, you need to define and pass this type separately. +All elements listed are required.

If you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float.

namespace toml
+{
+struct type_config
+{
+    using comment_type  = preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex);
+};
+
+using value = basic_value<type_config>;
+using table = typename value::table_type;
+using array = typename value::array_type;
+
+} // toml
+

static Member Functions +#

parse_int(str, src, base) +#

static result<integer_type, error_info>
+parse_int(const std::string& str, const source_location src, const std::uint8_t base);
+

If you use a type as integer_type that cannot utilize standard stream operators, implement this function. +Otherwise, use read_int described later.

The str parameter receives a string with prefixes, leading zeros, and underscores removed.

The src parameter receives a source_location pointing to where the string was defined.

The base parameter receives one of 10, 2, 8, or 16.

parse_float(str, src, is_hex) +#

static result<floating_type, error_info>
+parse_float(const std::string& str, const source_location src, const bool is_hex);
+

If you use a type as floating_type that cannot utilize standard stream operators, implement this function. +Otherwise, use read_float described later.

The str parameter receives a string with prefixes, leading zeros, and underscores removed.

The src parameter receives a source_location pointing to where the string was defined.

The is_hex parameter indicates whether the format is hexfloat. If you don’t use the hexfloat extension, you don’t need to implement this.

For details on the hexfloat extension, refer to spec.hpp.

Non-member Functions +#

read_int +#

template<typename T>
+result<T, error_info>
+read_int(const std::string& str, const source_location src, const std::uint8_t base);
+

This is the default function used. It parses using std::istringstream.

If operator>> and manipulators like std::hex, and std::numeric_limits<T> are defined (such as for boost::multiprecision), you can use this without modifications.

read_float +#

template<typename T>
+result<T, error_info>
+read_float(const std::string& str, const source_location src, const bool is_hex);
+

This is the default function used. It parses decimals using std::istringstream and hexfloats using sscanf().

It supports double and float.

For other types, if operator>> is defined and hex is not used, you can use this function.

ordered_type_config +#

ordered_type_config is a variation of toml::type_config where the table type is replaced with toml::ordered_map. +Additionally, it defines the toml::ordered_value alias.

Other than these changes, it is identical to type_config.

namespace toml
+{
+struct ordered_type_config
+{
+    using comment_type  = preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = ordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+    {
+        return read_int<integer_type>(str, src, base);
+    }
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex)
+    {
+        return read_float<floating_type>(str, src, is_hex);
+    }
+};
+
+using ordered_value = basic_value<ordered_type_config>;
+using ordered_table = typename ordered_value::table_type;
+using ordered_array = typename ordered_value::array_type;
+
+} // toml
+
\ No newline at end of file diff --git a/docs/reference/value/index.html b/docs/reference/value/index.html new file mode 100644 index 00000000..5e5663af --- /dev/null +++ b/docs/reference/value/index.html @@ -0,0 +1,400 @@ +value.hpp | toml11 + +
value.hpp +

value.hpp +#

value.hpp defines basic_value.

toml::basic_value +#

basic_value is a class that stores TOML values.

namespace toml
+{
+template <class TypeConfig>
+class basic_value;
+
+// Defined in types.hpp
+// using value = basic_value<type_config>;
+// using table = typename basic_value<type_config>::table_type;
+// using array = typename basic_value<type_config>::array_type;
+
+template<typename TC>
+bool operator==(const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator!=(const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator< (const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator<=(const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator> (const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator>=(const basic_value<TC>&, const basic_value<TC>&);
+} //toml
+

Member Types +#

The following member types are defined.

You can modify the member types using TypeConfig.

See also: types.hpp

NameDefinition
char_typetypename TypeConfig::char_type
key_typetypename TypeConfig::string_type
value_typebasic_value<TypeConfig>
boolean_typetypename TypeConfig::boolean_type
integer_typetypename TypeConfig::integer_type
floating_typetypename TypeConfig::floating_type
string_typetypename TypeConfig::string_type
local_time_typetoml::local_time
local_date_typetoml::local_date
local_datetime_typetoml::local_datetime
offset_datetime_typetoml::offset_datetime
array_typetypename TypeConfig::template array_type<value_type>
table_typetypename TypeConfig::template table_type<key_type, value_type>
comment_typetypename TypeConfig::comment_type

Member Functions +#

Default Constructor +#

basic_value() noexcept
+

Constructs an empty toml::value.

The constructed toml::value will be empty.

Copy and Move Constructors +#

basic_value(const basic_value& v)
+basic_value(basic_value&& v)
+

Copies or moves all information including values, format information, comments, and file regions.

Copy and Move Constructors with Comments +#

basic_value(basic_value v, std::vector<std::string> com)
+

Copies or moves the object while overwriting comments.

Conversion Constructors +#

template<typename TI>
+basic_value(basic_value<TI> other)
+template<typename TI>
+basic_value(basic_value<TI> other, std::vector<std::string> com)
+

Copies or moves from a basic_value with a different type_config.

Constructor (boolean) +#

basic_value(boolean_type x)
+basic_value(boolean_type x, boolean_format_info fmt)
+basic_value(boolean_type x, std::vector<std::string> com)
+basic_value(boolean_type x, boolean_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a bool, its format information, and comments.

Constructor (integer) +#

template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x)
+template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x, integer_format_info fmt)
+template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x, integer_format_info fmt, std::vector<std::string> com)
+

Constructs an object with an integer, its format information, and comments.

Constructor (floating) +#

template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x)
+template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x, floating_format_info fmt)
+template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x, floating_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a floating point number, its format information, and comments.

Constructor (string) +#

basic_value(string_type x)
+basic_value(string_type x, string_format_info fmt)
+basic_value(string_type x, std::vector<std::string> com)
+basic_value(string_type x, string_format_info fmt, std::vector<std::string> com)
+
+basic_value(const string_type::value_type* x)
+basic_value(const string_type::value_type* x, string_format_info fmt)
+basic_value(const string_type::value_type* x, std::vector<std::string> com)
+basic_value(const string_type::value_type* x, string_format_info fmt, std::vector<std::string> com)
+
+// C++17以降
+basic_value(string_view_type x)
+basic_value(string_view_type x, string_format_info fmt)
+basic_value(string_view_type x, std::vector<std::string> com)
+basic_value(string_view_type x, string_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a string, its format information, and comments.

string_view_type shares the same value_type and traits_type as string_type.

Constructor (local_date) +#

basic_value(local_date_type x)
+basic_value(local_date_type x, local_date_format_info fmt)
+basic_value(local_date_type x, std::vector<std::string> com)
+basic_value(local_date_type x, local_date_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a local_date_type, its format information, and comments.

Constructor (local_time) +#

basic_value(local_time_type x)
+basic_value(local_time_type x, local_time_format_info fmt)
+basic_value(local_time_type x, std::vector<std::string> com)
+basic_value(local_time_type x, local_time_format_info fmt, std::vector<std::string> com)
+
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x)
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt)
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x, std::vector<std::string> com)
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a local_time_type, its format information, and comments.

For std::chrono::duration, constructs as a time span from 00:00:00.

Constructor (local_datetime) +#

basic_value(local_datetime_type x)
+basic_value(local_datetime_type x, local_date_format_info fmt)
+basic_value(local_datetime_type x, std::vector<std::string> com)
+basic_value(local_datetime_type x, local_date_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a local_datetime_type, its format information, and comments.

Constructor (offset_datetime) +#

basic_value(offset_datetime_type x)
+basic_value(offset_datetime_type x, offset_date_format_info fmt)
+basic_value(offset_datetime_type x, std::vector<std::string> com)
+basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector<std::string> com)
+
+basic_value(std::chrono::system_clock::time_point x)
+basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt)
+basic_value(std::chrono::system_clock::time_point x, std::vector<std::string> com)
+basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector<std::string> com)
+

Constructs an object with an offset_datetime_type, its format information, and comments.

For std::chrono::system_clock::time_point, constructs for the pointed time.

Constructor (array) +#

basic_value(array_type x)
+basic_value(array_type x, integer_format_info fmt)
+basic_value(array_type x, std::vector<std::string> com)
+basic_value(array_type x, integer_format_info fmt, std::vector<std::string> com)
+
+template<typename T, /* T is array-like */>
+basic_value(T x)
+template<typename T, /* T is array-like */>
+basic_value(T x, array_format_info fmt)
+template<typename T, /* T is array-like */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* T is array-like */>
+basic_value(T x, array_format_info fmt, std::vector<std::string> com)
+

Constructs an object with an array, its format information, and comments.

array-like types must meet the following criteria:

  • Has T::iterator.
  • Has T::value_type.
  • Does not have T::key_type.
  • Does not have T::mapped_type.
  • Is not std::string.
  • Is not std::string_view (since C++17).

Constructor (table) +#

basic_value(table_type x)
+basic_value(table_type x, integer_format_info fmt)
+basic_value(table_type x, std::vector<std::string> com)
+basic_value(table_type x, integer_format_info fmt, std::vector<std::string> com)
+
+template<typename T, /* T is table-like */>
+basic_value(T x)
+template<typename T, /* T is table-like */>
+basic_value(T x, table_format_info fmt)
+template<typename T, /* T is table-like */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* T is table-like */>
+basic_value(T x, table_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a table, its format information, and comments.

table-like types must meet the following criteria:

  • Has T::iterator.
  • Has T::value_type.
  • Has T::key_type.
  • Has T::mapped_type.

Constructor (user-defined) +#

template<typename T /* toml::into<T> is defined */>
+basic_value(const T& ud);
+
+template<typename T /* toml::into<T> is defined */>
+basic_value(const T& ud, std::vector<std::string> com);
+
+template<typename T /* toml::into<T> is not defined, but T{}.into_toml() exists */>
+basic_value(const T& ud);
+
+template<typename T /* toml::into<T> is not defined, but T{}.into_toml() exists */>
+basic_value(const T& ud, std::vector<std::string> com);
+

If toml::into<T> is defined, constructs from the result of toml::into<T>(ud).

If toml::into<T> is not defined but T has a into_toml() member function, constructs from the result of ud.into_toml().


operator=(basic_value) +#

basic_value& operator=(const basic_value& v)
+basic_value& operator=(basic_value&& v)
+template<typename TI>
+basic_value& operator=(basic_value<TI> other)
+

Assigns the right-hand side basic_value to the current object.

operator=(T) +#

template<typename T>
+basic_value& operator=(T x)
+

Assigns a value corresponding to T.

The contents pointed to by source_location are discarded.

If the object already holds a value of the same type, the original format information is retained.


is<T>() +#

bool is<T>() const noexcept
+

Requirements +#

T must be an exact TOML type, meaning it corresponds to one of the toml::value::xxx_type.

Return Value +#

Returns true if the stored type matches T, otherwise returns false.


is(toml::value_t) +#

bool is(toml::value_t t) const noexcept
+

Return Value +#

Returns true if the tag of the stored type matches t, otherwise returns false.


is_xxx() +#

bool is_boolean()         const noexcept;
+bool is_integer()         const noexcept;
+bool is_floating()        const noexcept;
+bool is_string()          const noexcept;
+bool is_offset_datetime() const noexcept;
+bool is_local_datetime()  const noexcept;
+bool is_local_date()      const noexcept;
+bool is_local_time()      const noexcept;
+bool is_array()           const noexcept;
+bool is_table()           const noexcept;
+

Return Value +#

Returns true if the stored type matches the corresponding type, otherwise returns false.


is_empty() +#

bool is_empty()   const noexcept;
+

Return Value +#

Returns true if the object is default constructed and no value is assigned, otherwise returns false.

is_array_of_tables() +#

bool is_array_of_tables() const noexcept;
+

Return Value +#

Returns true if the stored type is an array that is not empty and all elements are tables, otherwise returns false.


type() +#

toml::value_t type() const noexcept
+

Return Value +#

Returns the tag corresponding to the stored type.


as_xxx() +#

boolean_type         const& as_boolean        () const;
+integer_type         const& as_integer        () const;
+floating_type        const& as_floating       () const;
+string_type          const& as_string         () const;
+offset_datetime_type const& as_offset_datetime() const;
+local_datetime_type  const& as_local_datetime () const;
+local_date_type      const& as_local_date     () const;
+local_time_type      const& as_local_time     () const;
+array_type           const& as_array          () const;
+table_type           const& as_table          () const;
+
+boolean_type        & as_boolean        ();
+integer_type        & as_integer        ();
+floating_type       & as_floating       ();
+string_type         & as_string         ();
+offset_datetime_type& as_offset_datetime();
+local_datetime_type & as_local_datetime ();
+local_date_type     & as_local_date     ();
+local_time_type     & as_local_time     ();
+array_type          & as_array          ();
+table_type          & as_table          ();
+

Return Value +#

Returns a reference to the value of the specified type.

Exception +#

Throws toml::type_error if the stored value’s type does not match the specified type.


as_xxx(std::nothrow) +#

Invoke with a std::nothrow object.

boolean_type         const& as_boolean        (const std::nothrow_t&) const noexcept;
+integer_type         const& as_integer        (const std::nothrow_t&) const noexcept;
+floating_type        const& as_floating       (const std::nothrow_t&) const noexcept;
+string_type          const& as_string         (const std::nothrow_t&) const noexcept;
+offset_datetime_type const& as_offset_datetime(const std::nothrow_t&) const noexcept;
+local_datetime_type  const& as_local_datetime (const std::nothrow_t&) const noexcept;
+local_date_type      const& as_local_date     (const std::nothrow_t&) const noexcept;
+local_time_type      const& as_local_time     (const std::nothrow_t&) const noexcept;
+array_type           const& as_array          (const std::nothrow_t&) const noexcept;
+table_type           const& as_table          (const std::nothrow_t&) const noexcept;
+
+boolean_type        & as_boolean        (const std::nothrow_t&) noexcept;
+integer_type        & as_integer        (const std::nothrow_t&) noexcept;
+floating_type       & as_floating       (const std::nothrow_t&) noexcept;
+string_type         & as_string         (const std::nothrow_t&) noexcept;
+offset_datetime_type& as_offset_datetime(const std::nothrow_t&) noexcept;
+local_datetime_type & as_local_datetime (const std::nothrow_t&) noexcept;
+local_date_type     & as_local_date     (const std::nothrow_t&) noexcept;
+local_time_type     & as_local_time     (const std::nothrow_t&) noexcept;
+array_type          & as_array          (const std::nothrow_t&) noexcept;
+table_type          & as_table          (const std::nothrow_t&) noexcept;
+

Return Value +#

Returns a reference to the value of the specified type.

Note +#

If the type of the stored value does not match the specified type, the behavior is undefined.


as_xxx_fmt() +#

Accesses format information.

boolean_format_info        & as_boolean_fmt        ();
+integer_format_info        & as_integer_fmt        ();
+floating_format_info       & as_floating_fmt       ();
+string_format_info         & as_string_fmt         ();
+offset_datetime_format_info& as_offset_datetime_fmt();
+local_datetime_format_info & as_local_datetime_fmt ();
+local_date_format_info     & as_local_date_fmt     ();
+local_time_format_info     & as_local_time_fmt     ();
+array_format_info          & as_array_fmt          ();
+table_format_info          & as_table_fmt          ();
+
+boolean_format_info         const& as_boolean_fmt        () const;
+integer_format_info         const& as_integer_fmt        () const;
+floating_format_info        const& as_floating_fmt       () const;
+string_format_info          const& as_string_fmt         () const;
+offset_datetime_format_info const& as_offset_datetime_fmt() const;
+local_datetime_format_info  const& as_local_datetime_fmt () const;
+local_date_format_info      const& as_local_date_fmt     () const;
+local_time_format_info      const& as_local_time_fmt     () const;
+array_format_info           const& as_array_fmt          () const;
+table_format_info           const& as_table_fmt          () const;
+

Return Value +#

Returns a reference to the structure holding the format information for the specified type.

Exception +#

Throws toml::type_error if the stored value’s type does not match the specified type.


as_xxx_fmt(std::nothrow) +#

Invoke with a std::nothrow object.

boolean_format_info        & as_boolean_fmt        (const std::nothrow_t&) noexcept;
+integer_format_info        & as_integer_fmt        (const std::nothrow_t&) noexcept;
+floating_format_info       & as_floating_fmt       (const std::nothrow_t&) noexcept;
+string_format_info         & as_string_fmt         (const std::nothrow_t&) noexcept;
+offset_datetime_format_info& as_offset_datetime_fmt(const std::nothrow_t&) noexcept;
+local_datetime_format_info & as_local_datetime_fmt (const std::nothrow_t&) noexcept;
+local_date_format_info     & as_local_date_fmt     (const std::nothrow_t&) noexcept;
+local_time_format_info     & as_local_time_fmt     (const std::nothrow_t&) noexcept;
+array_format_info          & as_array_fmt          (const std::nothrow_t&) noexcept;
+table_format_info          & as_table_fmt          (const std::nothrow_t&) noexcept;
+
+boolean_format_info         const& as_boolean_fmt        (const std::nothrow_t&) const noexcept;
+integer_format_info         const& as_integer_fmt        (const std::nothrow_t&) const noexcept;
+floating_format_info        const& as_floating_fmt       (const std::nothrow_t&) const noexcept;
+string_format_info          const& as_string_fmt         (const std::nothrow_t&) const noexcept;
+offset_datetime_format_info const& as_offset_datetime_fmt(const std::nothrow_t&) const noexcept;
+local_datetime_format_info  const& as_local_datetime_fmt (const std::nothrow_t&) const noexcept;
+local_date_format_info      const& as_local_date_fmt     (const std::nothrow_t&) const noexcept;
+local_time_format_info      const& as_local_time_fmt     (const std::nothrow_t&) const noexcept;
+array_format_info           const& as_array_fmt          (const std::nothrow_t&) const noexcept;
+table_format_info           const& as_table_fmt          (const std::nothrow_t&) const noexcept;
+

Return Value +#

Returns a reference to the structure holding the format information for the specified type.

Note +#

If the type of the stored value does not match the specified type, the behavior is undefined.


at(key) +#

value_type&       at(const key_type& key);
+value_type const& at(const key_type& key) const;
+

Return Value +#

Casts the current value to a table and returns the element specified by key.

Exception +#

Throws toml::type_error if the stored value is not a table.

Throws std::out_of_range if the table does not contain the specified element.


operator[](key) +#

value_type& operator[](const key_type& k);
+
Return Value +#

Casts the current value to a table and returns a reference to the element specified by key.

If the element specified by key does not exist, it is default-constructed.

Exception +#

Throws toml::type_error if the stored value is not a table.


count(key) +#

std::size_t count(const key_type& key) const;
+

Return Value +#

Casts the current value to a table and returns 1 if the element corresponding to key is present, otherwise returns 0.

Exception +#

Throws toml::type_error if the stored value is not a table.


contains(key) +#

bool contains(const key_type& key) const;
+

Return Value +#

Casts the current value to a table and returns true if the element corresponding to key is present, otherwise returns false.

Exception +#

Throws toml::type_error if the stored value is not a table.


at(idx) +#

value_type&       at(const std::size_t idx);
+value_type const& at(const std::size_t idx) const;
+

Return Value +#

Casts the current value to an array and returns the element specified by idx.

Exception +#

Throws toml::type_error if the stored value is not an array.

Throws std::out_of_range if the specified element does not exist in the array.


operator[](idx) +#

value_type&       operator[](const std::size_t idx)       noexcept;
+value_type const& operator[](const std::size_t idx) const noexcept;
+

Return Value +#

Casts the current value to an array and returns a reference to the element specified by idx.

Note +#

Performs no checks. Behavior is undefined if the stored value is not an array or if the specified element does not exist.


push_back(value) +#

void push_back(const value_type& x);
+void push_back(value_type&& x);
+

Casts the current value to an array and performs push_back on the array.

Return Value +#

None.

Exception +#

Throws toml::type_error if the stored value is not an array.


emplace_back(args...) +#

template<typename ... Ts>
+value_type& emplace_back(Ts&& ... args)
+

Casts the current value to an array and performs emplace_back on the array.

Return Value +#

A reference to the constructed value.

Exception +#

Throws toml::type_error if the stored value is not an array.


size() +#

std::size_t size() const;
+

Return Value +#

Casts the current value to an array, string, or table and returns the number of elements. For a string, it returns the number of characters.

Exception +#

Throws toml::type_error if the stored value is not an array, string, or table.


location() +#

source_location location() const;
+

Return Value +#

Returns a source_location object representing the position within the TOML document where the value is defined.

If the value was not constructed by parsing a TOML document, returns a source_location that points to nowhere.


comments() +#

comment_type const& comments() const noexcept;
+comment_type&       comments()       noexcept;
+

Return Value +#

Returns a reference to the comment container.

Non-Member Functions +#

operator== +#

template<typename TC>
+bool operator==(const basic_value<TC>&, const basic_value<TC>&);
+

Two basic_value<T> instances are considered equal if they satisfy the following conditions:

  • The contained type is the same.
  • The contained values are identical.
  • The comments are identical at the byte level.

operator!= +#

template<typename TC>
+bool operator!=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return !(lhs == rhs);
+}
+

operator< +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator<(const basic_value<TC>&, const basic_value<TC>&);
+

Comparison order:

  1. TOML type
  2. If TOML types are the same, their values
  3. If both the TOML types and values are the same, the comments

TOML types have the following order (from smallest to largest):

  1. toml::value_t::empty
  2. toml::value_t::boolean
  3. toml::value_t::integer
  4. toml::value_t::floating
  5. toml::value_t::string
  6. toml::value_t::offset_datetime
  7. toml::value_t::local_datetime
  8. toml::value_t::local_date
  9. toml::value_t::local_time
  10. toml::value_t::array
  11. toml::value_t::table

operator<= +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator<=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return (lhs < rhs) || (lhs == rhs);
+}
+

operator> +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator>(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return !(lhs <= rhs);
+}
+

operator>= +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator>=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return !(lhs < rhs);
+}
+

toml::type_error +#

Exception thrown in case of a type error.

Contains the location information of the value that caused the type error.

struct type_error final : public ::toml::exception
+{
+  public:
+    type_error(std::string what_arg, source_location loc);
+    ~type_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+
+    source_location const& location() const noexcept;
+};
+

toml::make_error_info +#

template<typename TC, typename ... Ts>
+error_info make_error_info(
+    std::string title, const basic_value<TC>& v, std::string msg, Ts&& ... tail);
+

Calls location() on a basic_value, passes the resulting source_location to +make_error_info +to create an error_info.

Refer to error_info for more details.

toml::format_error +#

template<typename TC, typename ... Ts>
+std::string format_error(std::string title,
+                         const basic_value<TC>& v, std::string msg, Ts&& ... tail);
+

Calls location() on a basic_value, passes the resulting source_location to +format_error +to create an error_info, then converts it to a string and returns it.

Refer to error_info for more details.

Related +#

\ No newline at end of file diff --git a/docs/reference/value_t/index.html b/docs/reference/value_t/index.html new file mode 100644 index 00000000..5f2d1632 --- /dev/null +++ b/docs/reference/value_t/index.html @@ -0,0 +1,38 @@ +value_t.hpp | toml11 + +
value_t.hpp +

value_t.hpp +#

value_t +#

value_t is used to handle the type information of toml::value.

namespace toml
+{
+enum class value_t : std::uint8_t
+{
+    empty           =  0,
+    boolean         =  1,
+    integer         =  2,
+    floating        =  3,
+    string          =  4,
+    offset_datetime =  5,
+    local_datetime  =  6,
+    local_date      =  7,
+    local_time      =  8,
+    array           =  9,
+    table           = 10
+};
+
+std::ostream& operator<<(std::ostream& os, value_t t);
+std::string to_string(value_t t);
+} // toml
+

Non-member Functions +#

Stream Operator +#

std::ostream& operator<<(std::ostream& os, value_t t);
+

Outputs the string representation of the value_t to the stream.

to_string +#

std::string to_string(value_t t);
+

Returns the string representation of the value_t.

\ No newline at end of file diff --git a/docs/reference/version/index.html b/docs/reference/version/index.html new file mode 100644 index 00000000..dd5ee5dc --- /dev/null +++ b/docs/reference/version/index.html @@ -0,0 +1,30 @@ +version.hpp | toml11 + +
version.hpp +

version.hpp +#

In version.hpp, macros related to the version information of toml11 are defined.

Macros +#

TOML11_VERSION_MAJOR +#

The major version of toml11.

TOML11_VERSION_MINOR +#

The minor version of toml11.

TOML11_VERSION_PATCH +#

The patch version of toml11.

Function +#

license_notice +#

namespace toml
+{
+const char* license_notice() noexcept;
+}
+

Returns the license notice.

Provided for convenience when redistributing without source code.

\ No newline at end of file diff --git a/docs/reference/visit/index.html b/docs/reference/visit/index.html new file mode 100644 index 00000000..1f9e33fe --- /dev/null +++ b/docs/reference/visit/index.html @@ -0,0 +1,54 @@ +visit.hpp | toml11 + +
visit.hpp +

visit.hpp +#

In visit.hpp, toml::visit is defined.

toml::visit +#

Functions +#

namespace toml
+{
+template<typename Visitor, typename TC>
+/* Return value when Visitor is called with a value of basic_value<TC> */
+visit(Visitor&& visitor, const basic_value<TC>& v);
+
+template<typename Visitor, typename TC>
+/* Return value when Visitor is called with a value of basic_value<TC> */
+visit(Visitor&& visitor, basic_value<TC>& v);
+
+template<typename Visitor, typename TC>
+/* Return value when Visitor is called with a value of basic_value<TC> */
+visit(Visitor&& visitor, basic_value<TC>&& v);
+}
+

toml::visit calls the overload of Visitor corresponding to the type held by basic_value<TC>, and returns the result.

Requirements +#

Visitor must be a function or function object callable with any type held by basic_value<TC>.

Additionally, the return value must be consistent across all overloads.

Example +#

#include <toml.hpp>
+#include <iostream>
+
+struct type_name_of
+{
+    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
+    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
+    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
+    std::string operator()(const toml::value::string_type         &) const {return "string";}
+    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
+    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
+    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
+    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
+    std::string operator()(const toml::value::array_type          &) const {return "array";}
+    std::string operator()(const toml::value::table_type          &) const {return "table";}
+};
+
+int main()
+{
+    toml::value v(3.14);
+    std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
+    return 0;
+}
+

Related +#

\ No newline at end of file diff --git a/en.search-data.min.5c6a72164a48e5edca6b426b12e1e46380fc2271ac8f3ba035ac66f01dee7956.json b/en.search-data.min.5c6a72164a48e5edca6b426b12e1e46380fc2271ac8f3ba035ac66f01dee7956.json new file mode 100644 index 00000000..5f9716ef --- /dev/null +++ b/en.search-data.min.5c6a72164a48e5edca6b426b12e1e46380fc2271ac8f3ba035ac66f01dee7956.json @@ -0,0 +1 @@ +[{"id":0,"href":"/toml11/docs/installation/","title":"installation","section":"Docs","content":" Installation # Using single_include # The ingle_include/toml.hpps is a single-file, header-only library that consolidates all the functionalities of toml11 into one file.\nThe simplest way to use it is to copy this file to a location included in your INCLUDE_PATH and then add #include \u0026lt;toml.hpp\u0026gt; to your source code.\nThe MIT license notice is included in both the comments and the toml::license_notice() function. If you are redistributing the software without releasing the source code, you must either copy the toml11 license file and include it with your distribution, or ensure that the toml::license_notice() function can be called.\nCloning toml11 and using cmake # If you place toml11 within your repository, for example by using git submodule, and you are using cmake, you can make use of it by adding add_subdirectory(toml11) to your CMakeLists.txt.\nadd_subdirectory(toml11) add_executable(main main.cpp) target_link_libraries(main PUBLIC toml11::toml11) toml11 will only run tests and install when it is the root project.\nInstalling using cmake # After cloning toml11, you can install it using cmake.\n$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --install ./build/ --prefix=/opt/toml11 If you want to run the test programs before installation, make sure to set -DTOML11_BUILD_TESTS=ON first.\nOnce the installation is complete, you can use it as follows:\nfind_package(toml11) add_executable(main main.cpp) target_link_libraries(main PRIVATE toml11::toml11) Compiling with cmake to Create a Static Library # By defining -DTOML11_PRECOMPILE=ON when running cmake, you can precompile some of the functions in toml11, thereby reducing the overall compile time.\n$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON When linking the library, use target_link_libraries in CMake\ntarget_link_libraries(your_target PUBLIC toml11::toml11) or pass -DTOML11_COMPILE_SOURCES to the compiler to suppress header-only features.\nHowever, since toml11 supports multiple C++ versions and may switch types based on the value of __cplusplus, there is a possibility of link failures if the version used during build differs from the version used during usage. If you encounter issues, set the required version using CMAKE_CXX_STANDARD during compilation. If this is difficult, use it as a header-only library as usual.\nThe find_package(toml11) command defines TOML11_INCLUDE_DIR. Even if you install it as a precompiled library, you can still use it as a header-only library by adding TOML11_INCLUDE_DIR to target_include_directories and avoiding the use of target_link_libraries.\nfind_package(toml11) add_executable(main main.cpp) # Include only, do not link target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR}) Compiling Examples # You can compile the examples/ directory by setting -DTOML11_BUILD_EXAMPLES=ON.\n$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON $ cmake --build ./build/ The executable binaries for the examples will be generated in the examples/ directory.\nRunning Tests # To build the tests, set -DTOML11_BUILD_TESTS=ON.\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --build ./build/ $ ctest --test-dir ./build/ To run the toml-lang/toml-tests, set -DTOML11_BUILD_TOML_TESTS=ON. This will build toml11_decoder and toml11_encoder in the tests/ directory.\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON $ cmake --build ./build/ $ ctest --test-dir ./build/ "},{"id":1,"href":"/toml11/docs/features/","title":"features","section":"Docs","content":" Features # This section explains the main features provided by toml11, with examples.\nParsing Files and Strings # Describes the functions for parsing files and strings, and how to handle the errors they produce.\nIncludes:\nParsing files Parsing strings Parsing byte arrays Parsing files without throwing exceptions Parsing strings without throwing exceptions Parsing byte arrays without throwing exceptions Extracting Values from toml::value # Explains how to examine, extract, and convert the data types held by toml::value.\nIncludes:\nChecking the type of a value using member functions Accessing values using member functions Accessing comments Handling inline tables and dotted keys Handling date information Using toml::get\u0026lt;T\u0026gt; for conversion Using toml::get_or to specify a fallback value Using toml::find\u0026lt;T\u0026gt; for searching and conversion Using toml::find_or to specify a fallback value Defining conversions with user-defined types Applying functions with toml::visit Constructing toml::value Creating Error Messages # Explains how to generate error messages with location information from a TOML file using toml::value.\nIncludes:\nExtracting location information from toml::value Constructing error messages Adding color to the output Serializing TOML Files # Describes how to format the values of toml::value and the available formatting options.\nIncludes:\nSpecifying formats for each value of toml::value Formatting toml::value into a string Configuring Types of toml::value # Explains how to customize the types stored in toml::value (such as integer_type and table_type).\nIncludes:\nDefining type_config Using ordered_type_config Disabling comment preservation Using different containers like std::deque Using different numeric types like boost::multiprecision TOML Literals # Explains the _toml literal for embedding TOML files directly in C++ code.\nIncludes:\nUsing TOML literals TOML Language Version # Describes the versions of the TOML language supported by toml11 and how to control language features added in TOML-v1.1.0.\nIncludes:\nUsing TOML language version 1.1.0 Using specific features of TOML language version 1.1.0 TOML Language Extensions # Explains the custom extensions to the TOML language provided by toml11.\nIncludes:\nSupporting null Supporting hexadecimal format for floating-point numbers Allowing units for numbers "},{"id":2,"href":"/toml11/docs/reference/","title":"reference","section":"Docs","content":" Reference # Here, we explain the effects of the classes and functions provided by toml11.\nDirectory Structure # toml.hpp and toml_fwd.hpp reside in ${TOML11_INCLUDE_DIR}. Other files are located in ${TOML11_INCLUDE_DIR}/toml11.\nIf you want to #include each feature\u0026rsquo;s file individually, use #include \u0026lt;toml11/color.hpp\u0026gt;. If you want to include all at once, use #include \u0026lt;toml.hpp\u0026gt;.\ncolor.hpp # Defines functions related to colorizing error messages.\ncomments.hpp # Defines types preserve_comment and discard_comment for preserving comments.\nconversion.hpp # Defines macros to automatically convert toml::value and user-defined classes.\ndatetime.hpp # Defines classes for datetime information.\nerror_info.hpp # Defines a class for error information.\nexception.hpp # Defines the base class for exceptions used in toml11, toml::exception.\nfind.hpp # Defines the toml::find function to search for and convert values.\nformat.hpp # Defines classes for formatting information of values.\nfrom.hpp # Forward declaration of the from\u0026lt;T\u0026gt; type for converting user-defined types.\nget.hpp # Defines the toml::get\u0026lt;T\u0026gt; function to retrieve and convert values from toml::value.\ninto.hpp # Forward declaration of the into\u0026lt;T\u0026gt; type for converting user-defined types.\nliteral.hpp # Defines the operator\u0026quot;\u0026quot; _toml literal.\nordered_map.hpp # Defines toml::ordered_map.\nparser.hpp # Defines functions to parse files or strings.\nresult.hpp # Defines the result\u0026lt;T, E\u0026gt; type for representing success or failure values used as return types in other functions.\nserializer.hpp # Defines the toml::format function and toml::serializer used for serialization.\nsource_location.hpp # Defines the source_location type used for error information, pointing to a location within a file.\nspec.hpp # Defines the toml::semantic_version and toml::spec types to control TOML language version information and feature flags.\ntoml.hpp # toml.hpp includes all other headers, making all toml11 features available.\ntoml_fwd.hpp # toml_fwd.hpp contains forward declarations of structs defined in toml11 and macro definitions.\ntypes.hpp # Defines the toml::type_config type for controlling the types held by toml::value.\nvalue.hpp # Defines the toml::value type.\nvalue_t.hpp # Defines the toml::value_t enumeration.\nversion.hpp # Defines the version information for toml11.\nvisit.hpp # Defines the toml::visit function to apply functions to the values held by toml::value.\nNotes # Functions not explicitly mentioned here (mostly those defined under namespace toml::detail or namespace toml::cxx) are available by inspecting the source code but are not guaranteed to maintain their interface across future versions (including patch version updates).\n"},{"id":3,"href":"/toml11/docs/changelog/","title":"changelog","section":"Docs","content":" Change Log # v4.1.0 # Added # support std::get\u0026lt;std::u8string\u0026gt; support toml::value(std::u8string) support string_type = std::u8string support operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, toml::value) add bool uppercase to toml::integer_format support template into_toml() (by 萧迩珀) Fixed # Fix not checking for \\r\\n when parsing line comments (by Andreas Keller) Changed # speedup CI tests by multicore build v4.0.3 # Fixed # remove default template argument from forward declaration in toml_fwd.hpp enable to call toml::make_error_info with multiple toml::values enable to copy/move toml::result having std::reference_wrapper fix document generation error with the latest version of hugo fix several tiny errors that causes warning fix CMake compatibility warning Changed # add -Werror / /WX to build script set MSVC warning level to /W4 add explanation of features to README\nv4.0.2 # Fixed # check return value of fread in parse(FILE*) version macro defined in toml11/version.hpp update docs about compilation update docs about file open mode Changed # use version macros defined in toml11/version.hpp as the project version in CMakeLists.txt v4.0.1 # Fixed # Resolved naming conflict of sematic_version::{major, minor} with macros defined in \u0026lt;sys/sysmacro.h\u0026gt; Fixed the definition of operator\u0026lt;\u0026lt; in discard_comments (by Egor Pugin) Fixed the issue where the first blank line was not output in format_location Fixed the issue where error messages pointing to source_location referring to lines containing only newline characters were displayed in two lines Corrected links in the README Corrected the title of the README in example/unicode Added # Configured CI to automatically update single_include/toml.hpp when changes are made to main Changes from v3 to v4 # Breaking Changes # Changed template Parameters of toml::basic_value # In toml11 v3, toml::basic_value took separate template arguments for the comment container, table-type container, and array-type container.\ntemplate\u0026lt;typename Comment, template\u0026lt;typename ...\u0026gt; class Table = std::unordered_map, template\u0026lt;typename ...\u0026gt; class Array = std::vector\u0026gt; class basic_value; However, this approach does not accommodate changes to types such as integer_type.\nIn toml11 v4, toml::basic_value now accepts a single TypeConfig, allowing for more types to be customized.\ntemplate\u0026lt;typename TypeConfig\u0026gt; class basic_value; By default, the types stored in toml::value remain unchanged.\nFor more information on changing types, please refer to the type_config documentation.\nRemoved std::initializer_list Support for toml::basic_value # In toml11 v3, there was an overload for toml::value that accepted std::initializer_list. This allowed for more intuitive initialization of toml::value with arrays and tables.\n// toml11 v3 toml::value v{1,2,3,4,5}; toml::value v{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }; However, this caused the following issues:\nFirst, it was impossible to distinguish between a single-element array and a regular value, as it always became an array.\n// toml11 v3 toml::value v{1}; // Becomes [1,] instead of 1 With the widespread use of uniform initialization, this became very inconvenient.\nSecond, it was unclear whether the value represented a table with all string values or a nested array.\n// toml11 v3 toml::value v{ {\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;} }; // Could be either: // {a = \u0026#34;foo\u0026#34;, b = \u0026#34;bar\u0026#34;} // [[\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;], [\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;]] These issues were difficult to resolve due to language specifications.\nTo avoid confusion, toml11 v4 has removed std::initializer_list support.\nWhen initializing toml::value with an array, you must explicitly specify toml::array, and when initializing with a table, you must explicitly specify toml::table.\n// toml11 v4 toml::value v(toml::array{1,2,3,4,5}); toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }); toml::value v{toml::array{1}}; // [1,] toml::value v{1} // 1 toml::value v{toml::table{{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; toml::value v{toml::array{toml::array{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, toml::array{\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; While this makes initializing toml::value with tables or arrays slightly less convenient, it ensures that the values will not become unpredictable by requiring explicit type information.\nRenamed toml::basic_value::is_uninitialized() to is_empty() # In toml11 v3, the function to check whether a basic_value was uninitialized was called is_uninitialized.\nHowever, in toml11 v4, the library supports null values as an extension, allowing for the intentional construction of empty values. Therefore, the function has been renamed to is_empty to reflect this change.\nAdded Format Information and Removed toml::string # In toml11 v3, to retain information on whether a string was basic or literal, the library used a thin wrapper around std::string called toml::string.\n// toml11 v3 namespace toml { enum class string_t : std::uint8_t { basic = 0, literal = 1, }; struct string { string_t kind; std::string str; }; } // namespace toml In toml11 v4, to accommodate more format information such as the numeric base or whether arrays should be multiline, every type now has an associated xxx_format type, which is stored alongside the value.\n// toml11 v4 enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; This change allows for more detailed format information to be preserved, ensuring that format specifics for numeric types, arrays, and tables are maintained even after parsing.\nChanged Arguments of toml::format # In toml11 v3, toml::format accepted values such as the precision and width of numeric types.\nHowever, this approach did not allow for detailed formatting specifications, resulting in serialized files that did not match expectations.\nIn toml11 v4, each toml::value now carries its own format information, enabling more detailed formatting options to be preserved within the toml::value itself.\nAs a result, toml::format no longer accepts specific formatting values. Instead, it now only takes a toml::spec, which includes language feature flags used during formatting.\nChanged Member Functions of toml::source_location # In toml11 v3, the member types of toml::source_location were designed to handle only single lines.\nIn toml11 v4, the member types of toml::source_location are designed to handle multiple lines.\nRenamed toml::format_underline to toml::format_location # In toml11 v3, the function used to format location information from toml::source_location was called toml::format_underline.\nTo make the name clearer, it has been renamed to toml::format_location.\nChanged Arguments of toml::format_error # In toml11 v3, there was no class to represent error information, resulting in complex arguments for toml::format_error.\ntemplate\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; std::string format_error(const std::string\u0026amp; err_msg, const basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v, const std::string\u0026amp; comment, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v3, const std::string\u0026amp; comment3, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); In toml11 v4, we have introduced class error_info and make_error_info, simplifying the arguments for format_error.\nstd::string format_error(const error_info\u0026amp; err); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Changed Control of toml::color # In toml11 v3, to control whether to colorize the output, we used the manipulator toml::colorize in conjunction with toml::color::enable/disable.\nThe manipulator allowed us to decide whether to apply color to each stream, but in v4, the frequency of using streams has decreased, and issues such as the fact that std::ios_base::xalloc used internally is not thread-safe in C++11 have arisen. Therefore, we have decided to use only toml::color::enable/disable and have removed toml::colorize.\nNon-Breaking Changes # Added parse_str # In toml11 v3, there was no function to directly parse a string itself. Therefore, when parsing a string, it was necessary to use std::istringstream.\nTo address this inconvenience, we have added toml::parse_str, allowing for direct parsing of strings.\nAdded try_parse # In toml11 v3, when a parser encountered an error, it threw toml::syntax_error.\nHowever, there are cases where you do not want to throw exceptions due to environments where exceptions cannot be thrown, or for reasons of performance.\nIn toml11 v4, we have implemented toml::try_parse using toml::result, which communicates parsing failures without throwing exceptions.\nThis doesn\u0026rsquo;t mean exceptions are never thrown. Errors in the standard library being used, such as std::bad_alloc due to allocation failure from memory exhaustion, may still be thrown.\nSupport for Parsing Byte Sequences # To allow for parsing TOML content obtained through means other than files, we have added toml::parse and toml::try_parse functions that accept std::vector\u0026lt;unsigned char\u0026gt;.\nAdded toml::spec # In toml11 v3, all new features of the TOML language were incorporated, and features that were decided to be introduced in future versions of the TOML language were controlled by the macro TOML11_USE_UNRELEASED_TOML_FEATURES.\nThis was because, at the time of developing toml11 v3, the TOML language had not yet reached version 1.0.0, being at versions 0.4.0 to 0.5.0.\nAs not all users are familiar with the latest TOML language specification, displaying error messages based on an older language usage could confuse the entire community. Therefore, until reaching version 1.0.0, it was necessary to provide new language specifications as quickly as possible and encourage users to update.\nHowever, the current TOML language specification is at version 1.0.0. Therefore, there was a need to be mindful of the choice to continue using version 1.0.0 even after TOML v1.1.0 was released.\nTo allow for more flexibility in selecting the TOML language specification, we introduced toml::spec, enabling the TOML language version to be changed at runtime.\nAdditionally, in toml::spec, flags are set for each language feature, allowing for the testing of specific language features only.\nThis mechanism is also used for TOML-specific language extensions in toml11 v4.\nAdded Format Information # In toml11 v3, format information was not saved except for strings, and during serialization, only width and precision were considered.\nHowever, this resulted in hexadecimal integers being serialized as decimal integers and no reliable way to ensure inline tables.\nIn toml11 v4, format information (integer_format, etc.) has been added to all TOML types, and it is now considered during parsing and serialization.\nThis allows for more detailed format information to be set for values, such as hexadecimal integers or inline tables.\nChanged to preserve_comments by Default # In toml11 v3, comments were not parsed by default and were also not serialized.\nThis was because comments were a later introduced feature and were being read through a special hack.\nIn toml11 v4, comments are parsed, preserved, and serialized by default.\nFurthermore, the parser implementation has been significantly changed to ensure comments are parsed alongside other elements.\nChanged to Preserve Comments by Default # In toml11 v3, comments were neither parsed nor serialized by default. This was because comment support was a late addition, implemented through a special hack.\nIn toml11 v4, comments are now parsed, preserved, and serialized by default. The parser implementation has also been significantly revised so that comments are parsed just like any other element.\nAdded single_include/toml.hpp # toml11 is a versatile library with different header files for various features to enhance development efficiency. However, this required a certain amount of effort to install.\nStarting with toml11 v4, a single_include/toml.hpp file has been added, which combines all the header files in the correct order. This allows the library to be installed by simply copying a single file.\nOption to Use Precompiled Library # Due to the extensive use of templates in toml11, compile times have been long.\nIn toml11 v4, the number of precompilable functions has been increased, allowing them to be compiled ahead of time into a library. This is expected to reduce compile times when using the library in large-scale development projects.\nReference Documentation # Previously, all features were documented in the README, with no detailed function definitions or reference materials available in Japanese.\nIn toml11 v4, reference documentation has been included, provided in both Japanese and English. However, since the library author is a native Japanese speaker, the Japanese content is considered primary. If there are discrepancies between the Japanese and English content, the Japanese version takes precedence.\n"},{"id":4,"href":"/toml11/docs/features/parsing_files/","title":"parsing files","section":"features","content":" Parsing Files and Strings # In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse.\nUpon success, these functions return a toml::value. Although the parsed file is always a table, the return type is not toml::table. This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map\u0026lt;std::string, toml::value\u0026gt;. To include metadata, a toml::value is returned instead of a toml::table. The toml::value corresponding to the root of the file will always hold a table_type.\nParsing Files # To parse files, use either toml::parse or toml::try_parse.\ntoml::parse # Specifying the Filename with std::string # toml::parse accepts a filename as a string, opens the file, and parses it.\nThe following sample code parses a file named input.toml, extracts the title variable as a string, and prints it.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } Specifying a File with std::filesystem::path # toml::parse can accept a std::filesystem::path.\nThis requires C++17 or later, as it relies on the \u0026lt;filesystem\u0026gt; support.\nSpecifying an Input Stream with std::istream # toml::parse can also accept an std::istream.\nOpen a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nWithout the filename information, error messages will display \u0026quot;unknown file\u0026quot;. To avoid this, you can pass the filename as a std::string in the second argument when using std::istream.\nYou can use streams other than std::ifstream, such as std::istringstream. Note that the entire content is readable at the time of the call.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::string filename(\u0026#34;input.toml\u0026#34;); std::ifstream ifs(filename); const toml::value input = toml::parse(ifs, filename); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } Specifying a File with FILE* # toml::parse can also accept a FILE*.\nOpen a stream in binary mode by passing \u0026quot;rb\u0026quot; to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nAs with std::istream, you need to provide the filename as a string in the second argument.\nWhen passing a FILE*, if the file read fails, errno will be reported.\nError Handling # toml::parse throws a toml::syntax_error if it encounters a syntax error.\ntoml::syntax_error is derived from toml::exception, which in turn is derived from std::exception.\nTherefore, you can use the what() member function to retrieve the error message from a toml::syntax_error.\nAdditionally, toml::syntax_error contains a std::vector\u0026lt;toml::error_info\u0026gt;, which can be accessed using the errors() member function.\ntoml::parse attempts to recover from minor errors and report multiple errors whenever possible. While it can often recover from simple errors like number format issues, errors within arrays or tables might not be recoverable and may lead to multiple similar error reports. If you find the error messages redundant, you can use only the front() of the std::vector\u0026lt;toml::error_info\u0026gt; to get a message about the most critical issue.\n#include \u0026lt;toml.hpp\u0026gt; int main() { try { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } catch(const toml::syntax_error\u0026amp; err) { // report all the errors std::cerr \u0026lt;\u0026lt; err.what() \u0026lt;\u0026lt; std::endl; // report the first error only std::cerr \u0026lt;\u0026lt; err.errors().front() \u0026lt;\u0026lt; std::endl; } } toml::try_parse # While toml::parse throws an exception on failure, toml::try_parse does not throw exceptions when it fails.\nInstead, its return type is toml::result\u0026lt;toml::value, std::vector\u0026lt;toml::error_info\u0026gt;\u0026gt;.\nThe result type holds either a success value or a failure value, similar to Rust\u0026rsquo;s Result or Haskell\u0026rsquo;s Either.\n#include \u0026lt;toml.hpp\u0026gt; int main() { const auto parse_result = toml::try_parse(\u0026#34;input.toml\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } To check which value the result type holds, use the is_ok() and is_err() functions. The success or failure value can be retrieved using unwrap() and unwrap_err(), respectively. If unwrap fails, it throws a bad_result_access exception. Using the as_ok() and as_err() functions does not throw exceptions on failure, but results in undefined behavior.\nAlthough try_parse does not throw syntax_error or file_io_error, it returns the same toml::error_info as the failure type in the result. However, it is not entirely exception-free.\nIf an internal standard library error occurs, such as std::bad_alloc when a vector fails to allocate memory, toml::try_parse does not catch this and will let it propagate. Thus, exceptions originating from the standard library may still be thrown.\nParsing Strings # toml::parse_str # toml::parse_str accepts the string to be parsed directly, instead of a filename.\nFor the part of the error message that corresponds to the TOML file\u0026rsquo;s name, if the std::source_location equivalent compiler extension is available, the name and line number of the C++ file that called parse_str will be used instead.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse_str # toml::try_parse_str also takes the string to be parsed directly, similar to parse_str. Like try_parse, it uses toml::result to report errors.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto parse_result = toml::try_parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } Parsing Byte Arrays # It is also possible to parse byte arrays instead of files.\nSince the byte arrays must be encoded in UTF-8, unsigned char is used.\ntoml::parse(std::vector\u0026lt;unsigned char\u0026gt;) # The behavior is the same as toml::parse.\nWhen parsing byte arrays, a filename is required.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const toml::value input = toml::parse(bytes, \u0026#34;internal bytes\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse(std::vector\u0026lt;unsigned char\u0026gt;) # The behavior is the same as toml::try_parse.\nWhen parsing byte arrays, a filename is required.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const auto parse_result = toml::try_parse(bytes, \u0026#34;internal bytes\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } "},{"id":5,"href":"/toml11/docs/features/value/","title":"getting values","section":"features","content":" Retrieving Values # This section explains how to access the values stored in toml::value.\nAccessing Values Using Member Functions # is_something and as_something # toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value.\nAdditionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type.\nFor a complete list, refer to the toml::value reference.\ntoml::value v = /* ... */; if(v.is_string()) { std::cout \u0026lt;\u0026lt; v.as_string() \u0026lt;\u0026lt; std::endl; } If the stored value is of a different type than specified, a toml::type_error is thrown.\nThe what() method will contain a message like the following:\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # Type information can be identified using enum class toml::value_t.\nThe type() member function returns the type information of the currently stored value.\ntoml::value v = /* ... */; switch(v.type()) { case toml:value_t::empty : { /*...*/ break; } case toml:value_t::boolean : { /*...*/ break; } case toml:value_t::integer : { /*...*/ break; } case toml:value_t::floating : { /*...*/ break; } case toml:value_t::string : { /*...*/ break; } case toml:value_t::offset_datetime: { /*...*/ break; } case toml:value_t::local_datetime : { /*...*/ break; } case toml:value_t::local_date : { /*...*/ break; } case toml:value_t::local_time : { /*...*/ break; } case toml:value_t::array : { /*...*/ break; } case toml:value_t::table : { /*...*/ break; } default: {break;} } The is(toml::value_t) member function returns true if the stored value is of the given value_t type, otherwise it returns false.\ntoml::value v = /* ... */; if(v.is(toml::value_t::integer)) { std::cout \u0026lt;\u0026lt; v.as_integer() \u0026lt;\u0026lt; std::endl; } at, [], contains, size, push_back, emplace_back # toml::value provides some member functions similar to those of standard library containers.\nThese functions internally convert toml::value to the corresponding type and call the respective member functions.\nat(std::size_t i), operator[](std::size_t i) # These are equivalent to as_array().at(i) and as_array()[i].\ntoml::value uses std::vector\u0026lt;toml::value\u0026gt; as array_type by default, so at throws std::out_of_range on error, while operator[] results in undefined behavior.\ntoml::value v(toml::array{1,2,3}); std::cout \u0026lt;\u0026lt; v.at(1); If the stored type is not array_type, a type_error is thrown.\nat(std::string key), operator[](std::string key) # These are equivalent to as_table().at(key) and as_table()[key].\ntoml::value uses std::unordered_map\u0026lt;std::string, toml::value\u0026gt; as table_type by default, so if the corresponding value does not exist, at throws std::out_of_range, while operator[] constructs a new toml::value and returns a reference to it. Therefore, there is no const version of operator[].\ntoml::value v(toml::table{}); v[\u0026#34;a\u0026#34;] = 42; If the stored type is not table_type, a type_error is thrown.\nsize() # Returns the length.\nFor array_type or table_type, it returns the number of elements; for string_type, it returns the number of characters (in bytes).\nIf the stored type is none of these, a type_error is thrown.\npush_back(), emplace_back() # These are equivalent to as_array().push_back() and as_array().emplace_back().\nIf the stored type is not array_type, a type_error is thrown.\nAccessing Comments # In toml11, comments are parsed by default and saved line by line with the corresponding value.\nA comment corresponds to the value that comes immediately after the consecutive lines of comments, or to the value on the same line as the comment.\nIf there is no value immediately before or after the comment, it is not associated with any value and is ignored.\n# input.toml # This is a comment about a. a = 42 b = 3.14 # This is a comment about b. # This comment is ignored because it has no corresponding value. # This is the 1st comment about c. # This is the 2nd comment about c. c = \u0026#34;foo\u0026#34; # This is the final comment about c. # This comment is NOT a comment about c. Comments corresponding to a value can be accessed using the comments() member function of toml::value.\ncomments() returns a container that has the same member functions as std::vector\u0026lt;std::string\u0026gt;.\nconst auto v = toml::parse(\u0026#34;input.toml\u0026#34;); const auto\u0026amp; a = v.at(\u0026#34;a\u0026#34;); const auto\u0026amp; b = v.at(\u0026#34;b\u0026#34;); const auto\u0026amp; c = v.at(\u0026#34;c\u0026#34;); assert(a.comments().size() == 1); assert(a.comments().at(0) == \u0026#34;# This is a comment about a.\u0026#34;); assert(b.comments().size() == 1); assert(b.comments().at(0) == \u0026#34;# This is a comment about b.\u0026#34;); assert(c.comments().size() == 3); assert(c.comments().at(0) == \u0026#34;# This is the 1st comment about c.\u0026#34;); assert(c.comments().at(1) == \u0026#34;# This is the 2nd comment about c.\u0026#34;); assert(c.comments().at(2) == \u0026#34;# This is the final comment about c.\u0026#34;); Comments related to the root table of the entire file are written at the beginning of the file.\n# This is a comment about the root table. # This is also a comment about the root table. # This comment is ignored. # This is a comment about a. a = 42 However, if a value immediately follows the initial comment, the comment is interpreted as pertaining to that value, and there are no comments for the root table.\n# This is a comment about a. # This is also a comment about a. a = 42 Handling Inline Tables and Dotted Keys # An inline table is simply a table, and there is no difference in handling it compared to other tables in C++ code.\na = {b = 42, c = \u0026#34;foo\u0026#34;} Dotted keys are also just tables, with no difference in handling compared to other tables in C++ code.\na.b = 42 a.c = \u0026#34;foo\u0026#34; These TOML files are identical to the following file.\n[a] b = 42 c = \u0026#34;foo\u0026#34; Thus, they can all be processed with the exact same code.\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).as_integer() == 42); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;c\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); However, it is possible to distinguish them based on format information.\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); switch(input.at(\u0026#34;a\u0026#34;).as_table_fmt().fmt) { case toml::table_format::oneline: { std::cout \u0026lt;\u0026lt; \u0026#34;inline table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::multiline: { std::cout \u0026lt;\u0026lt; \u0026#34;normal table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::dotted: { std::cout \u0026lt;\u0026lt; \u0026#34;dotted keys\u0026#34; \u0026lt;\u0026lt; std::endl; break; } } This format information is also considered during serialization, which will be described later.\nHandling Date and Time Information # local_date, local_time, local_datetime, and offset_datetime are parsed into dedicated structures with corresponding member variables in toml11.\nWhen using these, you can directly extract the values or use toml::get and toml::find to convert them into types such as std::chrono::system_clock::time_point or std::tm.\nConverting Using toml::get\u0026lt;T\u0026gt; # toml::get\u0026lt;T\u0026gt; is a function that converts and retrieves the value stored in toml::value. Specify the desired target type as T.\nconst toml::value v = /*...*/; std::cout \u0026lt;\u0026lt; toml::get\u0026lt;int\u0026gt;(v) \u0026lt;\u0026lt; std::endl; The toml::find\u0026lt;T\u0026gt; function, described later, also has the same functionality for type conversion.\nIf an unsupported type is specified for the stored value, a toml::type_error is thrown.\nSimple Conversions # boolean_type # Conversion from boolean_type is possible only to bool.\ninteger_type # Any type for which std::is_integral\u0026lt;T\u0026gt; is true, except bool, can be converted from integer_type.\ntoml::value v(42); const auto u32 = toml::get\u0026lt;std::uint32_t\u0026gt;(v); const auto i16 = toml::get\u0026lt;short\u0026gt;(v); floating_type # Any type for which std::is_floating_point\u0026lt;T\u0026gt; is true can be converted from floating_type.\ntoml::value v(3.14); const auto f64 = toml::get\u0026lt;double\u0026gt;(v); const auto f32 = toml::get\u0026lt;float \u0026gt;(v); string_type # string_type can be converted to std::string. From C++17 onwards, it can also be converted to std::string_view.\ntoml::value v(\u0026#34;foo\u0026#34;); const auto s = toml::get\u0026lt;std::string\u0026gt;(v); // C++17 const auto sv = toml::get\u0026lt;std::string_view\u0026gt;(v); datetime variants # local_date, local_datetime, and offset_datetime represent specific dates and times, so they can be converted to std::chrono::system_clock::time_point.\nHowever, since local_time does not include date information, it supports conversion to std::chrono::duration as the elapsed time from 00:00.00.\nAdditionally, local_date and local_datetime conversions take the executing machine\u0026rsquo;s timezone into account.\ndate = 2024-01-23 time = 12:30:00 l_dt = 2024-01-23T12:30:00 o_dt = 2024-01-23T12:30:00+09:00 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto date = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;date\u0026#34;)); const auto l_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;l_dt\u0026#34;)); const auto o_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;o_dt\u0026#34;)); const auto time = toml::get\u0026lt;std::chrono::minutes\u0026gt;(input.at(\u0026#34;time\u0026#34;)); // 12 * 60 + 30 min Conditions for Obtaining References # toml::get\u0026lt;T\u0026gt; can return a reference if T is the exact type stored in toml::value.\nConversely, if a conversion is necessary (e.g., extracting an integer stored as std::int64_t into std::uint32_t), it is not possible to return a reference to the converted type.\nWhen no conversion is needed, the returned reference can be used to modify the value.\ntoml::value v(42); toml::get\u0026lt;toml::value::integer_type\u0026gt;(v) = 6 * 9; assert(v.as_integer() == 54); Converting Arrays to STL Containers # If all elements in an array have the same type and can be converted to T, it is possible to convert them to std::vector\u0026lt;T\u0026gt;.\na = [1, 2, 3, 4, 5] const auto a = toml::get\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); Other STL containers can also be used.\nconst auto a1 = toml::get\u0026lt;std::deque\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a2 = toml::get\u0026lt;std::list \u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a3 = toml::get\u0026lt;std::array\u0026lt;int, 5\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); When converting to std::array, the number of elements must match. If they don\u0026rsquo;t match, a std::out_of_range exception is thrown.\nNon-STL containers that have a default constructor and a push_back method can also be converted using toml::get.\nconst auto a = toml::get\u0026lt;boost::container::small_vector\u0026lt;int, 8\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); Converting Arrays to std::pair or std::tuple # If an array contains elements of different types, it can be converted to std::pair or std::tuple.\na = [true, 3.14] b = [42, 2.718, \u0026#34;foo\u0026#34;] const auto a = toml::get\u0026lt;std::pair\u0026lt;bool, double\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto b = toml::get\u0026lt;std::tuple\u0026lt;int, double, std::string\u0026gt;\u0026gt;(input.at(\u0026#34;b\u0026#34;)); As with std::array, the length of the array must match the number of elements in the std::pair or std::tuple. If they don\u0026rsquo;t match, a std::out_of_range exception is thrown.\nAdditionally, each element must be convertible to the corresponding element in the std::pair or std::tuple. If conversion is not possible, a toml::type_error exception is thrown.\nConverting Nested Arrays # Nested arrays can be converted to nested containers.\na = [ [1, 2, 3], [4, 5, 6] ] const auto a = toml::get\u0026lt;std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); If the types are different, std::pair or std::tuple can be useful.\na = [ [1, 2, 3], [\u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;] ] const auto a = toml::get\u0026lt; std::pair\u0026lt;std::vector\u0026lt;int\u0026gt;, std::vector\u0026lt;std::string\u0026gt;\u0026gt; \u0026gt;(input.at(\u0026#34;a\u0026#34;)); Converting Tables to std::map # If all values in a table have the same type, they can be converted to std::map or std::unordered_map.\nt = {a = 1, b = 2} const auto t = toml::get\u0026lt;std::map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); Non-STL containers that have a default constructor and an emplace(key, mapped) method can also be converted using toml::get.\nconst auto t = toml::get\u0026lt;boost::container::flat_map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); If the conversion of any element fails, a toml::type_error exception is thrown.\nUsing toml::get_or to Specify a Value on Failure # toml::get throws a toml::type_error exception if the conversion fails.\nBy using toml::get_or, you can specify a default value to return instead of an exception in case of a conversion failure.\nUnlike toml::get\u0026lt;T\u0026gt;, get_or infers the target type from the arguments, so there is no need to specify \u0026lt;T\u0026gt;.\nconst auto a = toml::get_or(input.at(\u0026#34;a\u0026#34;), 42); The types that can be converted are the same as for toml::get.\nIf you specify toml::value::xxx_type, you can also retrieve a reference, but in that case, the argument must also be a reference.\ntoml::value::integer_type a_default = 42; auto a\u0026amp; = toml::get_or(input.at(\u0026#34;a\u0026#34;), a_default); Using toml::find\u0026lt;T\u0026gt; to Search and Convert Simultaneously # toml::find\u0026lt;T\u0026gt; is a function that searches for a value in a toml::value holding a table and simultaneously performs the same type conversion as toml::get.\nconst auto a = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;); // Equivalent to: const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;)); toml::find\u0026lt;T\u0026gt; can also be used with arrays.\nconst auto a = input.at(\u0026#34;a\u0026#34;); const auto a2 = toml::find\u0026lt;int\u0026gt;(a, 2); // Equivalent to: const auto a2 = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2)); If an error occurs during type conversion, toml::find\u0026lt;T\u0026gt; throws the same toml::type_error as toml::get. If the key is not found or the index does not exist, it throws std::out_of_range.\nIf no type is specified, toml::find returns a toml::value without type conversion.\nconst auto a = toml::find(input, \u0026#34;a\u0026#34;); // Equivalent to: const auto a = input.at(\u0026#34;a\u0026#34;); toml::find\u0026lt;T\u0026gt; can access values recursively.\na = {b = {c = 42}} const auto a_b_c = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, \u0026#34;b\u0026#34;, \u0026#34;c\u0026#34;); // Equivalent to: const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).at(\u0026#34;c\u0026#34;)); You can mix keys and indexes.\na = [ {b = 1}, {b = 2}, {b = 3} ] const auto a_2_b = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, 2, \u0026#34;b\u0026#34;); // Equivalent to: const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2).at(\u0026#34;c\u0026#34;)); TOML supports a feature called quoted keys, which allows using normally disallowed characters in keys by enclosing them in \u0026quot;\u0026quot; or ''. Within quoted keys, . does not introduce tables.\n\u0026#34;127.0.0.1\u0026#34; = \u0026#34;value\u0026#34; site.\u0026#34;google.com\u0026#34; = true You can read this TOML file as follows:\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;127.0.0.1\u0026#34;).as_string() == \u0026#34;value\u0026#34;); assert(input.at(\u0026#34;site\u0026#34;).at(\u0026#34;google.com\u0026#34;).as_boolean()); To handle such cases seamlessly, toml11 does not automatically split keys containing .. Explicitly specifying the table hierarchy helps in structuring the input file correctly.\nReference: toml.io/Key\nUsing toml::find_or to Search and Specify a Value on Failure # toml::find_or works similarly to toml::find\u0026lt;T\u0026gt;, but allows specifying a default value to return if the search or conversion fails.\nThis is useful when you want to provide a fallback value instead of handling exceptions.\nconst auto a = toml::find_or(input, \u0026#34;a\u0026#34;, 42); Defining Conversions for User-Defined Types # With toml::get and toml::find, you can use user-defined types by employing one of the following methods.\nDefining toml::from # In toml11, there is a toml::from type that supports conversions from user-defined types by specializing it as follows:\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { static extlib::foo from_toml(const toml::value\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml If you also want to support toml::value with a modified type configuration, do as follows:\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml This definition can be automatically generated using TOML11_DEFINE_CONVERSION_NON_INTRUSIVE.\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b) Alternatively, you can use a reflection library. Refer to the sample in example using boost-ext/reflect.\nDefining a from_toml Member Function # You can also define a conversion by defining a from_toml member function.\nWhen using this method, a default constructor is required.\nstruct bar { int a; std::string b; void from_toml(const toml::value\u0026amp; v) { this-\u0026gt;a = toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;); this-\u0026gt;b = toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;); return ; } }; If both are defined, toml::from takes precedence.\nConstructor Accepting toml::value # If there is a constructor that accepts toml::value, conversion via toml::get can be performed.\nstruct baz { explicit baz(const toml::value\u0026amp; v) : a(toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;)), b(toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)) {} int a; std::string b; }; If both are defined, toml::from and from_toml take precedence.\nApplying Functions with toml::visit # If you have a function object that can be applied to all types stored in toml::value, you can directly call that function without type conversion using toml::visit.\nstruct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating Constructing toml::value # toml::value can be constructed not only internally by the parser but also in user code.\nYou can construct it by passing a type that is either the same as or convertible to the types stored in toml::value.\ntoml::value v1(true); toml::value v2(42); toml::value v3(3.14); For arrays, you can use toml::array:\ntoml::value v(toml::array{1, 2, 3}); Alternatively, you can pass containers such as std::vector directly:\nconst std::vector\u0026lt;toml::value\u0026gt; a{1,2,3}; toml::value v(a); For tables, you can use toml::table:\ntoml::value v(toml::table{{\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3}}); Or pass containers such as std::map directly:\nconst std::map\u0026lt;std::string, toml::value\u0026gt; t{ {\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3} } toml::value v(t); You can pass format_info and comments to the constructor.\nThe type of comments is std::vector\u0026lt;std::string\u0026gt;. Each element corresponds to a line.\ntoml::integer_format_info fmt; fmt.fmt = toml::integer_format::hex; fmt.spacer = 4; toml::value v1(0xDEADBEEF, fmt); toml::value v2(0xC0FFEE, fmt, {\u0026#34;hex value!\u0026#34;}); Converting to toml::value # When constructing toml::value from user-defined types, you can customize the behavior by defining toml::into or into_toml.\ntoml::into is particularly useful when converting types from other libraries.\nDefining toml::into # By specializing toml::into, you can enable conversions to toml::value.\nThis is useful for types from external libraries that do not provide a conversion to toml::value.\nSince toml::value passes type_config during conversion, you need to accept the template argument of basic_value.\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { return toml::basic_value\u0026lt;TC\u0026gt;(typename toml::basic_value\u0026lt;TC\u0026gt;::table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; Defining into_toml Member Function # Similar to from_toml, you can define the conversion through a member function.\nIf toml::into is defined, it takes precedence.\nstruct bar { int a; std::string b; template\u0026lt;typename TC\u0026gt; toml::basic_value\u0026lt;TC\u0026gt; into_toml() const { return toml::basic_value\u0026lt;TC\u0026gt;(typename toml::basic_value\u0026lt;TC\u0026gt;::table_type{ {\u0026#34;a\u0026#34;, this-\u0026gt;a}, {\u0026#34;b\u0026#34;, this-\u0026gt;b} }); } }; "},{"id":6,"href":"/toml11/docs/features/error_message/","title":"error message","section":"features","content":" Outputting Error Messages # toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get\u0026lt;T\u0026gt;/find\u0026lt;T\u0026gt;, and as_integer(), among others.\nFor instance, if a syntax error in an integer is detected during parsing, an error message might look like this:\n[error] bad integer: `_` must be surrounded by digits --\u0026gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 Or, if a type different from the one actually stored is requested:\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11 provides methods to create such error messages from toml::value.\nBy utilizing this feature, you can inform users not only about TOML syntax errors but also about application-specific errors. For example, if a negative number appears where only positive values are allowed, you can highlight the location within the TOML file to convey the error to the user.\nCreating Error Messages from toml::value Location Information # toml::value retains information about the location where it was parsed.\nThis information is encapsulated in toml::source_location and can be retrieved using toml::value::location().\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); const toml::source_location src = a.location(); When a file is parsed with toml::parse, the TOML filename and line numbers are stored.\nIf parsed with toml::parse_str, the TOML filename is not available, but instead, the filename and line number of the C++ source code that called toml::parse_str are stored as the TOML filename. The first example on this page was output from toml::parse_str. Note the filename part.\nFor details, see the reference.\nYou can build error information by passing a toml::source_location or toml::value and the associated error message to toml::make_error_info. Passing this to toml::format_error formats the error message into a std::string.\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34; // Message next to the value ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } This will output:\n[error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value You can also add a supplementary message at the end. This part is not indented.\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34;, // Message next to the value \u0026#34;Hint: `a` means length of the data\u0026#34; // Supplementary message ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } This will output:\n[error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value Hint: `a` means length of the data The ability to output lines from the file using toml::value is because the parsed file is retained in memory as a string.\nThe parsed string is shared by toml::value via a std::shared_ptr. Copying it does not duplicate the entire file string. The file information is freed from memory when all toml::value instances constructed from parsing the file are destructed.\nTherefore, when using this in an application, it is recommended to extract and store the required values during loading rather than directly storing toml::value.\nAdding Colors to Strings # You can add color to error messages using ANSI escape codes.\nIf TOML11_COLORIZE_ERROR_MESSAGE is defined at compile time, the error messages output by toml11 will be colored by default.\nIf not, you can enable color for subsequent error messages by calling toml::color::enable(). Conversely, if you do not want colored output, for example, because the output is not to a console, call toml::color::disable(). You can check whether coloring is enabled at any point by calling toml::color::should_color().\nAdditionally, while the error title, error message, and supplementary information are not colored by default, you can use manipulators from toml::color to add color to them.\nstd::ostringstream oss; oss \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;but got negative value\u0026#34;; const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, oss.str(), // Message next to the value \u0026#34;Hint: `a` means length of the data\u0026#34; // Supplementary message ); For more details, see the reference.\nChanging the Prefix of Error Messages from [error] # There may be different types of errors, and the default [error] prefix might not always be appropriate.\nWith toml::format_error, you can provide a std::string before toml::error_info to replace the [error] prefix.\nFor example:\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34; // Message next to the value ); std::ostringstream prefix; prefix \u0026lt;\u0026lt; toml::color::bold \u0026lt;\u0026lt; toml::color::yellow \u0026lt;\u0026lt; \u0026#34;[warn]\u0026#34;; std::cerr \u0026lt;\u0026lt; toml::format_error(prefix.str(), err) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer(); } This will output a warning starting with [warn].\nAdditionally, you can create error messages without the [error] prefix by directly passing the components of error_info to toml::format_error.\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { std::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[warn] positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34; // Message next to the value ) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer() } Creating Error Messages Referencing Multiple toml::value # In application settings, the range of permissible values might change based on previously read values.\nIn such cases, you may want to output the values causing the error simultaneously.\ntoml::format_error and toml::make_error_info can take multiple pairs of toml::value and their corresponding error messages as std::string.\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34; ) \u0026lt;\u0026lt; std::endl; You can also add supplementary information at the end.\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34;, \u0026#34;Hint: all the values must be in the range [a, b)\u0026#34; ) \u0026lt;\u0026lt; std::endl; When passing toml::value or toml::source_location, an error message related to it must follow. If not, it will result in a very confusing compilation error.\n"},{"id":7,"href":"/toml11/docs/features/serialize/","title":"serializing values","section":"features","content":" Outputting TOML Files # Using toml::format, you can convert a toml::value to a string.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } If the toml::value contains a table_type, it is interpreted as the root table of the file.\nIf a toml::value containing anything other than table_type is passed, only that value is formatted.\nCertain format specifications may require a key to be provided for formatting. For example, toml::array_format::array_of_tables formats as [[array.of.tables]], which requires key access.\nIf a format specification that requires a key is provided without a key, a toml::serialization_error is thrown.\nAdditionally, if there are values that contradict the format specification, a toml::serialization_error is thrown. For instance, specifying integer_format::hex for a negative integer, or string_format::literal for a string containing newlines, will cause an error.\nThe method for specifying formats is explained later.\nOutputting with Keys # You can pass a key to toml::format as a std::string.\nIn this case, the key is considered to be under the root table, and the passed value corresponds to that key.\nFor nested keys, you can pass a std::vector\u0026lt;std::string\u0026gt;.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(\u0026#34;bar\u0026#34;, v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } Specifying Formats # Each type in toml::value has a corresponding format information type.\nFor toml::value::integer_type, there is toml::integer_format_info. For toml::value::table_type, there is toml::table_format_info.\nThese format information types are set when parsing and are retained even if the value is changed, as long as the type remains the same.\nYou can access and directly edit these formats using member functions like as_integer_fmt() or as_table_fmt().\nBelow are some examples explaining how to use these formats.\nFor more details on how to access formats, refer to the toml::value reference. For a complete list and detailed information on format information classes, see the format reference.\nSpecifying Integer Formats # For integers, you can specify the radix, width, and the position of _.\nWhen using hex, oct, or bin, values are padded with zeros until the specified width is reached. For dec, the width specification adds spaces, which are not parsed.\nFor more details, see the integer format reference.\nSingle-Line and Multi-Line Arrays # For arrays, you can specify toml::array_format::oneline or toml::array_format::multiline.\n# oneline a = [1, 2, 3, 4, 5] # multiline a = [ 1, 2, 3, 4, 5 ] When using multiline, you can specify the indentation. Each element is indented by the amount specified in body_indent, and the closing bracket ] is indented by the amount specified in closing_indent.\nThe type of character used for indentation is specified by indent_type, and you can choose between toml::indent_char::space or toml::indent_char::tab.\nEnsure that the same type of character is used for indentation throughout the document.\nIf different types of characters are specified for indentation within the same file, the result is undefined. Some form of indentation will be applied, but the type of character and the depth of the indentation may be inconsistent.\nIf all elements of an array have table_type, you can specify toml::array_format::array_of_tables.\nIf you do not specify array_of_tables and use multiline, the tables will be formatted as inline tables.\n# multiline a = [ {foo = 42}, {bar = \u0026#34;hoge\u0026#34;}, ] # array_of_tables [[a]] foo = 42 [[a]] bar = \u0026#34;hoge\u0026#34; By default, toml::array_format::default_format is used. This automatically selects an appropriate format.\nFor example, with default_format, if all elements are table_type, it will choose array_of_tables. Short arrays are formatted as oneline, while long or nested arrays, or those with complex elements, are formatted as multiline.\nFor more details, see the array format reference.\nInline Tables # To format a table as an inline table, specify toml::table_format::oneline. For standard tables, use toml::table_format::multiline.\noneline = {a = 42, b = \u0026#34;foo\u0026#34;} [multiline] a = 42 b = \u0026#34;foo\u0026#34; In TOML v1.1.0, line breaks within inline tables are allowed. In this case, use toml::table_format::multiline_oneline. This is only applied if the corresponding feature flag is set to true as per the TOML version specification described later.\nmultiline_oneline = { a = 42, b = \u0026#34;foo\u0026#34; } For more details, see the table format reference.\nSpecifying the TOML Language Version for Output # Certain language features, such as line breaks within inline tables and \\x escape sequences, are only available after TOML v1.1.0.\nThe toml::format function accepts a toml::spec as its argument.\nThis allows you to specify the version of TOML to use during serialization.\nWhen you use toml::parse with a toml::spec to leverage new features, the parsed values may contain format information that is only compatible with that specific version. Ensure that you pass the same toml::spec to toml::format to maintain compatibility.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto spec = toml::spec::v(1, 1, 0); const toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, spec); std::cout \u0026lt;\u0026lt; toml::format(v, spec) \u0026lt;\u0026lt; std::endl; return 0; } "},{"id":8,"href":"/toml11/docs/features/configure_types/","title":"configuring types","section":"features","content":" Customizing Types # The toml::value class uses std::int64_t for integer_type and std::unordered_map\u0026lt;key_type, value_type\u0026gt; for table_type.\nHowever, in some cases, you may want to use boost::multiprecision::int128_t or std::map.\nTo accommodate this, toml::value is implemented with template parameters that allow you to change the stored types.\nJust as std::string is actually an alias for std::basic_string\u0026lt;char, std::char_traits\u0026lt;char\u0026gt;, std::allocator\u0026lt;char\u0026gt;\u0026gt;, toml::value is an alias for toml::basic_value\u0026lt;toml::type_config\u0026gt;.\nHere, we will explain the types contained in toml::type_config and how to define a different config type.\ntype_config # The type_config class contains the following member types and static member functions:\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; } toml::basic_value\u0026lt;TypeConfig\u0026gt; defines the stored boolean_type as TypeConfig::boolean_type, the stored integer_type as TypeConfig::integer_type, and so on.\nAdditionally, array_type is defined as TypeConfig::array_type\u0026lt;toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt; and table_type is defined as TypeConfig::table_type\u0026lt;key_type, toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt;.\nBy passing a class that defines these member types and functions to toml::basic_value, you can customize the types used by that toml::basic_value.\nThe parse_int and parse_float functions provide parsing methods when custom numeric types are used. These functions receive strings with prefixes like 0x and digit separators like _ removed, such as 123456 or DEADBEEF. The base parameter will be one of 10, 16, 8, or 2. Implement these functions to parse your custom integer_type and floating_type.\nAs a default implementation, toml::read_int and toml::read_float are provided.\nstatic result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } The read_int function uses istream and employs std::hex and std::oct for hexadecimal and octal parsing, respectively. For binary parsing, it is implemented using multiplication and addition. If your type supports these operations, you can use read_int as-is.\nThe read_float function also uses istream. Hexadecimal floating-point numbers are only supported for double and float types. If read_float is called with any other type and hexfloat is used, it will always return a parse error. Therefore, if you need to use a floating-point type other than double or float with hexfloat, you will need to implement support for that. If hexfloat is not used, no additional implementation is necessary.\nPreserving Order of Values in Tables # In addition to the default toml::type_config, there is also toml::ordered_type_config. This changes the table_type to an ordered_map.\nUsing this, toml::ordered_value is defined, along with aliases for its array and table types as toml::ordered_array and toml::ordered_table, respectively.\nYou can use toml::ordered_value by calling toml::parse(...) as toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(...).\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::ordered_value input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;example.toml\u0026#34;); std::cout \u0026lt;\u0026lt; toml::format(input) \u0026lt;\u0026lt; std::endl; return 0; } Not Preserving Comments # The type_config defines a container for storing comments via comment_type.\nIf comments do not contain significant information and can be discarded during parsing, specify toml::discard_comments for comment_type.\nstruct wo_comment_config { using comment_type = toml::discard_comments; // XXX using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; Using Containers Other Than std::vector for Arrays # To use a container other than vector (e.g., std::deque) for implementing TOML arrays, modify array_type as follows.\nSimilarly, to use a container other than unordered_map (e.g., std::map) for table types, modify table_type as shown below.\nstruct deque_map_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::deque\u0026lt;T\u0026gt;; // XXX template\u0026lt;typename K, typename T\u0026gt; using table_type = std::map\u0026lt;K, T\u0026gt;; // XXX static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; Using boost::multiprecision for Numeric Types # By using boost::multiprecision::cpp_int and boost::multiprecision::cpp_bin_float_oct, you can utilize a wider integer type and a more precise floating-point type.\nThese types implement stream operators, so you can use the default implementations of read_int and read_float without modification.\nstruct large_num_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = boost::multiprecision::cpp_int; using floating_type = boost::multiprecision::cpp_bin_float_oct; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static toml::result\u0026lt;integer_type, toml::error_info\u0026gt; parse_int(const std::string\u0026amp; str, const toml::source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static toml::result\u0026lt;floating_type, toml::error_info\u0026gt; parse_float(const std::string\u0026amp; str, const toml::source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; "},{"id":9,"href":"/toml11/docs/features/literal/","title":"toml literal","section":"features","content":" _toml Literal # With the \u0026quot;\u0026quot;_toml literal, you can format TOML files inline.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = 42\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); return 0; } When including line breaks, raw string literals come in handy.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(v.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } If a value is written on its own, that value is returned.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto a = \u0026#34;42\u0026#34;_toml; const auto b = \u0026#34;12:34:56\u0026#34;_toml; assert(a.as_integer() == 42); assert(b.as_local_time().hour == 12); assert(b.as_local_time().minute == 34); assert(b.as_local_time().second == 56); return 0; } TOML allows keys consisting solely of numbers. Therefore, [1] is a valid table name.\nWhen there\u0026rsquo;s ambiguity between table definitions and arrays, table definitions take precedence.\nTo interpret as an array, please use a trailing comma.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto t = \u0026#34;[1]\u0026#34;_toml; // {1 = {}} const auto a = \u0026#34;[1,]\u0026#34;_toml; // [1,] assert(t.is_table()); assert(t.at(\u0026#34;1\u0026#34;).is_table()); assert(a.is_array()); assert(a.at(0).as_integer() == 1); return 0; } "},{"id":10,"href":"/toml11/docs/features/toml_spec/","title":"toml spec","section":"features","content":" TOML Language Version # You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec.\nSpecifying TOML Version # You can construct a toml::spec from toml::semantic_version.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } However, to make this shorter, the toml::spec::v() function is provided.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } If not specified explicitly, toml::spec::default_version() is used to construct with default values.\nThe default value depends on the version of toml11 and follows the latest version of the TOML language released at that time.\nAs of v4.0.0, TOML v1.1.0 has not been released yet, so the default TOML version is v1.0.0.\nSome features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.\nIf they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.\nAs such, any features related to future versions should be considered unstable.\nParsing with Version Specification # The overload of toml::parse takes a toml::spec following the file name.\nThis allows you to change the TOML version being used.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); return 0; } Serializing with Version Specification # The overload of toml::format takes a toml::spec following the toml::value.\nThis allows you to change the TOML version being used.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); std::cout \u0026lt;\u0026lt; toml::format(v, toml::spec::v(1, 1, 0)) \u0026lt;\u0026lt; std::endl; return 0; } If a format is passed that is not permitted by the provided toml::spec, it will be ignored, and another format will be used as a fallback.\nSpecifying Newly Added Features in TOML # With version upgrades in TOML, multiple new features are introduced, and it\u0026rsquo;s possible to enable only some of them.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 0, 0); // Allowing newlines in inline tables spec.v1_1_0_allow_newlines_in_inline_tables = true; toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, spec); return 0; } For a full list of all flags, refer to toml::spec.\n"},{"id":11,"href":"/toml11/docs/features/extension/","title":"extension","section":"features","content":" TOML Language Extensions # The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0.\nAmong the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all.\nIn toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future.\nAdditionally, these features are disabled by default. To use them, you must explicitly set the corresponding feature flags to true. This design choice ensures that non-standard features are only used intentionally.\nSome of these features may eventually be merged into the TOML language itself. If a feature is officially adopted, the corresponding experimental implementation in toml11 may be removed in a minor version update after the official feature is implemented.\nnull # This feature allows the use of null as a value in TOML files.\na = null b = [ 1, 2, 3, null, 5] To enable this, set the ext_null_value flag in toml::spec to true.\nWhen parsed, it will be treated as toml::value_t::empty, similar to a default-constructed value. However, the location information within the file will be set.\nnull is parsed only in the context of values. Therefore, if null is used as a key, it will be interpreted as the string \u0026quot;null\u0026quot;, as it has been in the standard TOML.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(\u0026#34;a = null\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_empty()); assert(v.at(\u0026#34;a\u0026#34;).is(toml::value_t::empty)); return 0; } Hexadecimal Format for Floating-Point Numbers # This feature allows the use of hexadecimal format for floating-point numbers in TOML files.\na = 0x1.91eb851eb851fp+1 # 3.14 To enable this, set the ext_hex_float flag in toml::spec to true.\nThe format follows the printf specification for %a/%A.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 0x1.91eb851eb851fp+1\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_floating()); assert(v.at(\u0026#34;a\u0026#34;).as_floating() == 3.14); return 0; } Suffixes for Integers and Floating-Point Numbers # This feature allows the use of suffixes for numbers in TOML files. It can be applied to integers and floating-point numbers in decimal notation.\nThis is particularly useful for displaying units.\na = 86_400_sec b = 3.1416_rad c = 10_μm However, these are purely suffixes and do not perform any unit conversion. If unit conversion is needed, users should implement it by referencing the suffix.\nTo enable this, set the ext_num_suffix flag in toml::spec to true.\nThe suffix must be separated from the number by an underscore (_).\nFor clarity, the suffix cannot start with a digit.\ndistance = 100_m # valid distance = 10_0m # invalid distance = 10_0_m # valid The suffix is stored as std::string suffix in the format information.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 86_400_sec\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_integer()); assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 86400); assert(v.at(\u0026#34;a\u0026#34;).as_integer_fmt().suffix == \u0026#34;sec\u0026#34;); return 0; } "},{"id":12,"href":"/toml11/docs/reference/color/","title":"color.hpp","section":"reference","content":" color.hpp # In color.hpp, functions related to colorizing error messages are defined.\nColors are specified using ANSI escape code. In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read.\nMacros # TOML11_COLORIZE_ERROR_MESSAGE If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default.\nIf not defined, colors are not applied by default. You need to specify them using toml::color::enable().\nFunctions # enable() # namespace toml { namespace color { void enable(); } // color } // toml Enables colorization using ANSI escape code.\nExample # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::enable(); // All subsequent errors will be colored. const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml Disables colorization using ANSI escape code.\nExample # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::disable(); // All subsequent errors will not be colored. const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } should_color() # namespace toml { namespace color { bool should_color(); } // color } // toml Returns true if colorization is enabled, false otherwise.\nExample # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iomanip\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; \u0026#34;colorized? : \u0026#34; \u0026lt;\u0026lt; std::boolalpha \u0026lt;\u0026lt; toml::color::should_color() \u0026lt;\u0026lt; std::endl; return 0; } Manipulators # namespace toml { namespace color { std::ostream\u0026amp; reset (std::ostream\u0026amp;); std::ostream\u0026amp; bold (std::ostream\u0026amp;); std::ostream\u0026amp; grey (std::ostream\u0026amp;); std::ostream\u0026amp; gray (std::ostream\u0026amp;); std::ostream\u0026amp; red (std::ostream\u0026amp;); std::ostream\u0026amp; green (std::ostream\u0026amp;); std::ostream\u0026amp; yellow (std::ostream\u0026amp;); std::ostream\u0026amp; blue (std::ostream\u0026amp;); std::ostream\u0026amp; magenta(std::ostream\u0026amp;); std::ostream\u0026amp; cyan (std::ostream\u0026amp;); std::ostream\u0026amp; white (std::ostream\u0026amp;); } // color } // toml Colorizes the foreground with ANSI escape code.\nExample # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;red!\u0026#34; \u0026lt;\u0026lt; toml::color::reset \u0026lt;\u0026lt; std::endl; return 0; } Related # error_info.hpp "},{"id":13,"href":"/toml11/docs/reference/comments/","title":"comments.hpp","section":"reference","content":" comments.hpp # In comments.hpp, comment containers are provided.\ntoml::preserve_comments # preserve_comments is a container that preserves comments.\nIt has all the member functions of std::vector\u0026lt;std::string\u0026gt;.\nComments are preserved as std::string. If the comment does not start with #, it will be prefixed with # during output. However, this prefixing is not done when adding comments to the container.\nSpaces are not automatically added, so if you want a space immediately after #, either start the comment with a space or pass the comment with #.\nnamespace toml { class preserve_comments; bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); } //toml Member types # using container_type = std::vector\u0026lt;std::string\u0026gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; Member Functions # Default Constructor # preserve_comments() = default; Constructs an empty preserve_comments.\nCopy and Move Constructors # preserve_comments(preserve_comments const\u0026amp;) = default; preserve_comments(preserve_comments \u0026amp;\u0026amp;) = default; Constructs a preserve_comments by copying or moving.\nConstructor (std::vector\u0026lt;std::string\u0026gt;) # explicit preserve_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit preserve_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Constructs a preserve_comments holding the contents of std::vector\u0026lt;std::string\u0026gt;.\nConstructor (discard_comments) # explicit preserve_comments(const discard_comments\u0026amp;); Constructs an empty preserve_comments.\nConstructor (Iterator) # template\u0026lt;typename InputIterator\u0026gt; preserve_comments(InputIterator first, InputIterator last); Constructs a preserve_comments from the range represented by InputIterator pointing to std::string.\nConstructor (std::initializer_list) # preserve_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); Constructs a preserve_comments from the range represented by std::initializer_list\u0026lt;std::string\u0026gt;.\nConstructor (Size Specified) # explicit preserve_comments(size_type n); preserve_comments(size_type n, const std::string\u0026amp; x); Constructs a preserve_comments with n comments.\nIf a std::string is passed, it replicates that comment n times.\nDestructor # ~preserve_comments() = default; Destroys the preserve_comments.\noperator=(preserve_comments) # preserve_comments\u0026amp; operator=(preserve_comments const\u0026amp;) = default; preserve_comments\u0026amp; operator=(preserve_comments \u0026amp;\u0026amp;) = default; Assigns a preserve_comments by copying or moving.\noperator=(std::vector\u0026lt;std::string\u0026gt;) # preserve_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); preserve_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Assigns a std::vector\u0026lt;std::string\u0026gt; by copying or moving.\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); The same as std::vector\u0026lt;std::string\u0026gt;::assign.\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); The same as std::vector\u0026lt;std::string\u0026gt;::insert.\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); The same as std::vector\u0026lt;std::string\u0026gt;::emplace.\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); The same as std::vector\u0026lt;std::string\u0026gt;::erase.\nswap # void swap(preserve_comments\u0026amp; other); Swaps the comments.\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); The same as std::vector\u0026lt;std::string\u0026gt;::push_back.\npop_back # void pop_back(); The same as std::vector\u0026lt;std::string\u0026gt;::pop_back.\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); The same as std::vector\u0026lt;std::string\u0026gt;::emplace_back.\nclear # void clear(); The same as std::vector\u0026lt;std::string\u0026gt;::clear.\nsize # size_type size() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::size.\nmax_size # size_type max_size() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::max_size.\ncapacity # size_type capacity() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::capacity.\nempty # bool empty() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::empty.\nreserve # void reserve(size_type n); The same as std::vector\u0026lt;std::string\u0026gt;::reserve.\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); The same as std::vector\u0026lt;std::string\u0026gt;::resize.\nshrink_to_fit # void shrink_to_fit(); The same as std::vector\u0026lt;std::string\u0026gt;::shrink_to_fit.\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::operator[].\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; The same as std::vector\u0026lt;std::string\u0026gt;::at.\nfront # reference front() noexcept; const_reference front() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::front.\nback # reference back() noexcept; const_reference back() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::back.\ndata # pointer data() noexcept; const_pointer data() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::data.\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::begin/end.\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::rbegin/rend\nnon-member functions # Comparison operator # bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); It compares two preserve_comments in the same way as std::vector\u0026lt;std::string\u0026gt;.\nswap # void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); Stream operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); Outputs as TOML comments.\nIf the first character is not #, it adds #.\ntoml::discard_comments # discard_comments serves as a container for discarding comments.\nIt encompasses all the member functions of std::vector\u0026lt;std::string\u0026gt;, but invoking functions that modify the content has no effect, leaving it perpetually empty.\nnamespace toml { class discard_comments; bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); } //toml Member types # // container_type is not defined using size_type = std::size_t; using difference_type = std::ptrdiff_t; using value_type = std::string; using reference = std::string\u0026amp;; using const_reference = std::string const\u0026amp;; using pointer = std::string*; using const_pointer = std::string const*; using iterator = /* internal type: empty-iterator */ using const_iterator = /* internal type: empty-iterator */ using reverse_iterator = /* internal type: empty-iterator */ using const_reverse_iterator = /* internal type: empty-iterator */ Default Constructor # discard_comments() = default; Constructs an empty discard_comments.\nCopy / Move Constructor # discard_comments(discard_comments const\u0026amp;) = default; discard_comments(discard_comments \u0026amp;\u0026amp;) = default; Constructs a discard_comments by copying or moving.\nConstructor(std::vector\u0026lt;std::string\u0026gt;) # explicit discard_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit discard_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(preserve_comments) # explicit discard_comments(const preserve_comments\u0026amp;); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(Iterator) # template\u0026lt;typename InputIterator\u0026gt; discard_comments(InputIterator first, InputIterator last); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(std::initializer_list) # discard_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(サイズ指定) # explicit discard_comments(size_type n); discard_comments(size_type n, const std::string\u0026amp; x); Constructs an empty discard_comments. Arguments are ignored.\nDestructor # ~discard_comments() = default; Destroys discard_comments.\noperator=(discard_comments) # discard_comments\u0026amp; operator=(discard_comments const\u0026amp;) = default; discard_comments\u0026amp; operator=(discard_comments \u0026amp;\u0026amp;) = default; Assigns discard_comments by copying or moving.\noperator=(std::vector\u0026lt;std::string\u0026gt;) # discard_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); discard_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Does nothing.\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); Does nothing.\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); Does nothing.\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); Does nothing.\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); Does nothing.\nswap # void swap(discard_comments\u0026amp; other); Swaps two discard_comments. Effectively it does nothing.\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); Does nothing.\npop_back # void pop_back(); Does nothing.\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); Does nothing.\nclear # void clear(); Does nothing.\nsize # size_type size() const noexcept; Returns 0.\nmax_size # size_type max_size() const noexcept; Returns 0.\ncapacity # size_type capacity() const noexcept; Returns 0.\nempty # bool empty() const noexcept; Returns true.\nreserve # void reserve(size_type n); Does nothing.\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); Does nothing.\nshrink_to_fit # void shrink_to_fit(); Does nothing.\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; Causes undefined behavior.\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; Throws std::out_of_range.\nfront # reference front() noexcept; const_reference front() const noexcept; Causes undefined behavior.\nback # reference back() noexcept; const_reference back() const noexcept; Causes undefined behavior.\ndata # pointer data() noexcept; const_pointer data() const noexcept; Returns nullptr.\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; Returns an internally defined empty-iterator.\nThe empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.\nAccessing the target of the empty-iterator always calls std::terminate.\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; Returns an internally defined empty-iterator.\nThe empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.\nAccessing the target of the empty-iterator always calls std::terminate.\nnon-member functions # Comparison operator # bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); All the instances of discard_comments are the same value. operator== returns true, operator=! returns false.\nswap # void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); Swaps discard_comments. Effectively it does nothing.\nStream operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); Outputs nothing.\nRelated # value.hpp "},{"id":14,"href":"/toml11/docs/reference/conversion/","title":"conversion.hpp","section":"reference","content":" conversion.hpp # Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find.\nTOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) Example # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) Related # from.hpp into.hpp "},{"id":15,"href":"/toml11/docs/reference/datetime/","title":"datetime.hpp","section":"reference","content":" datetime.hpp # Defines a class that stores date and time information used in TOML\u0026rsquo;s datetime.\nenum class month_t # Enum class to specify months.\nDue to its relationship with std::tm, local_date treats January as 0. To avoid confusion, month_t allows specification of months by their names.\nnamespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # local_date holds a date.\nyear represents the year in AD. For month, January is represented as 0 to align with std::tm. day holds the day of the month.\nnamespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm\u0026amp; t); explicit local_date(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); std::string to_string(const local_date\u0026amp; date); } Member Variables # year # std::int16_t year; Represents the year in AD. There\u0026rsquo;s no offset. 2024 is simply 2024.\nmonth # std::uint8_t month; Represents the month. To align with std::tm, January is 0, February is 1, and so on.\nTo avoid confusion, use month_t during construction.\nday # std::uint8_t day; Represents the day of the month. The first day is 1.\nMember Functions # Constructor # local_date() = default; Uses the default implementation.\nDestructor # ~local_date() = default; Uses the default implementation.\nCopy and Move Constructors # local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; Uses the default implementations.\nCopy and Move Assignment Operators # local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; Uses the default implementations.\nConstructor (int year, month_t month, int day) # local_date(int y, month_t m, int d); Constructs a local_date from the specified values.\nDoes not perform boundary checks.\nConstructor (std::tm) # local_date(const std::tm\u0026amp;); Constructs a local_date from the specified std::tm value.\nConstructor (std::chrono::system_clock::time_point) # local_date(const std::chrono::system_clock::time_point\u0026amp;); Constructs a local_date from the specified std::chrono::system_clock::time_point value.\nTime zone is determined by the environment.\nConstructor (std::time_t) # local_date(const std::time_t); Constructs a local_date from the specified std::time_t value.\nTime zone is determined by the environment.\noperator std::chrono::system_clock::time_point # operator std::chrono::system_clock::time_point() const; Converts to std::chrono::system_clock::time_point.\nTime zone is determined by the environment.\nTime is set to 0 hours and 0 minutes.\noperator std::time_t # operator std::time_t() const; Converts to std::time_t.\nTime zone is determined by the execution environment.\nTime is set to 0 hours and 0 minutes.\nNon-member Functions # Comparison Operators # bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); Compares two dates.\nStream Operators # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); Outputs in the default TOML format.\nto_string # std::string to_string(const local_date\u0026amp; date); Converts to a string in the default TOML format.\nlocal_time # namespace toml { struct local_time { std::uint8_t hour; // [0, 23] std::uint8_t minute; // [0, 59] std::uint8_t second; // [0, 60] std::uint16_t millisecond; // [0, 999] std::uint16_t microsecond; // [0, 999] std::uint16_t nanosecond; // [0, 999] local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); explicit local_time(const std::tm\u0026amp; t); template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); operator std::chrono::nanoseconds() const; local_time() = default; ~local_time() = default; local_time(local_time const\u0026amp;) = default; local_time(local_time\u0026amp;\u0026amp;) = default; local_time\u0026amp; operator=(local_time const\u0026amp;) = default; local_time\u0026amp; operator=(local_time\u0026amp;\u0026amp;) = default; }; bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); std::string to_string(const local_time\u0026amp; time); } Member Values # hour # std::uint8_t hour; Represents the hour. Values range from 0 to 23.\nminute # std::uint8_t minute; // [0, 59] Represents the minute. Values range from 0 to 59.\nsecond # std::uint8_t second; // [0, 60] Represents the second. Values range from 0 to 60.\nmillisecond # std::uint16_t millisecond; // [0, 999] Represents the millisecond. Values range from 0 to 999.\nmicrosecond # std::uint16_t microsecond; // [0, 999] Represents the microsecond. Values range from 0 to 999.\nnanosecond # std::uint16_t nanosecond; // [0, 999] Represents the nanosecond. Values range from 0 to 999.\nMember Functions # default constructor # local_time() = default; Initializes all values to 0.\nconstructor (h, m, s, ms = 0, us = 0, ns = 0) # local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); Constructs using the specified time components.\nNo boundary checks are performed.\nconstructor(std::tm) # explicit local_time(const std::tm\u0026amp; t); Constructs using tm_hour, tm_min, and tm_sec from std::tm.\nSubseconds are initialized to 0.\nconstructor(std::chrono::duration) # template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); Constructs as the time of day from 0 hours of the day specified by duration.\noperator std::chrono::nanoseconds # operator std::chrono::nanoseconds() const; Converts to std::chrono::nanoseconds.\nNon-member Functions # Comparison Operators # bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); Compares based on time values.\nStream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); Outputs in the default TOML format.\nto_string # std::string to_string(const local_time\u0026amp; time); Converts to a string in the default TOML format.\ntime_offset # namespace toml { struct time_offset { std::int8_t hour{0}; // [-12, 12] std::int8_t minute{0}; // [-59, 59] time_offset(int h, int m); operator std::chrono::minutes() const; time_offset() = default; ~time_offset() = default; time_offset(time_offset const\u0026amp;) = default; time_offset(time_offset\u0026amp;\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset const\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset\u0026amp;\u0026amp;) = default; }; bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp; offset); std::string to_string(const time_offset\u0026amp; offset); } Member Variables # hour # std::int8_t hour{0}; // [-12, 12] Represents the hour offset, ranging from -12 to +12.\nminute # std::int8_t minute{0}; // [-59, 59] Represents the minute offset, ranging from -59 to +59.\nMember Functions # Constructor # time_offset(int h, int m); Constructs with given hours and minutes.\nNo boundary checking is performed.\noperator std::chrono::minutes # operator std::chrono::minutes() const; Converts to std::chrono::minutes.\nNon-member Functions # Comparison Operators # bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); Compares based on time length.\nStream Output Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp;); Outputs in the default TOML format.\nto_string # std::string to_string(const time_offset\u0026amp;); Converts to a string in the default TOML format.\nlocal_datetime # namespace toml { struct local_datetime { local_date date; local_time time; local_datetime(local_date d, local_time t); explicit local_datetime(const std::tm\u0026amp; t); explicit local_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_datetime(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; local_datetime() = default; ~local_datetime() = default; local_datetime(local_datetime const\u0026amp;) = default; local_datetime(local_datetime\u0026amp;\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime const\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp; dt); std::string to_string(const local_datetime\u0026amp; dt); } Member Variables # local_date date # local_date date; Stores the date component data.\nlocal_time time # local_time time; Stores the time component data.\nMember Functions # Default Constructor # Constructs both date and time with default values.\nConstructor (local_date, local_time) # Constructs with the specified date and time.\nConstructor (std::tm) # Constructs from std::tm.\nThe timezone is selected based on the execution environment.\nConstructor (std::chrono::system_clock::time_point) # Constructs from std::chrono::system_clock::time_point.\nThe timezone is selected based on the execution environment.\nConstructor (std::time_t) # Constructs from std::time_t.\nThe timezone is selected based on the execution environment.\noperator std::chrono::system_clock::time_point # Converts to std::chrono::system_clock::time_point.\noperator std::time_t # Converts to std::time_t.\nNon-member Functions # Comparison Operators # bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); Compares based on chronological order.\nStream Output Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp;); Outputs in the default TOML format.\nto_string # std::string to_string(const local_datetime\u0026amp;); Converts to a string in the default TOML format.\noffset_datetime # namespace toml { struct offset_datetime { local_date date; local_time time; time_offset offset; offset_datetime(local_date d, local_time t, time_offset o); offset_datetime(const local_datetime\u0026amp; dt, time_offset o); explicit offset_datetime(const local_datetime\u0026amp; ld); explicit offset_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit offset_datetime(const std::time_t\u0026amp; t); explicit offset_datetime(const std::tm\u0026amp; t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; offset_datetime() = default; ~offset_datetime() = default; offset_datetime(offset_datetime const\u0026amp;) = default; offset_datetime(offset_datetime\u0026amp;\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime const\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp; dt); std::string to_string(const offset_datetime\u0026amp; dt); } Member Variables # date # local_date date; Stores the date component.\ntime # local_time time; Stores the time component.\noffset # time_offset offset; Stores the offset component.\nMember Functions # Default Constructor # Constructs date, time, and offset with default values.\nConstructor (local_date, local_time, time_offset) # Constructs with the specified date, time, and offset.\nConstructor (local_datetime, time_offset) # Constructs from local_datetime and offset.\nConstructor (std::tm) # Constructs from std::tm.\nThe timezone is UTC (00:00).\nConstructor (std::chrono::system_clock::time_point) # Constructs from std::chrono::system_clock::time_point.\nThe timezone is UTC (00:00).\nConstructor (std::time_t) # Constructs from std::time_t.\nThe timezone is UTC (00:00).\noperator std::chrono::system_clock::time_point # Converts to std::chrono::system_clock::time_point.\nThe timezone is UTC (00:00).\noperator std::time_t # Converts to std::time_t.\nThe timezone is UTC (00:00).\nNon-member Functions # Comparison Operators # bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); Compares based on chronological order.\nIf dates are the same, compares based on timezone order.\nStream Output Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp;); Outputs in the default TOML format.\nto_string # std::string to_string(const offset_datetime\u0026amp;); Converts to a string in the default TOML format.\n"},{"id":16,"href":"/toml11/docs/reference/error_info/","title":"error_info.hpp","section":"reference","content":" error_info.hpp # In error_info.hpp, definitions for error_info and functions to format it are provided.\ntoml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = \u0026#34;\u0026#34;); error_info(std::string t, std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; l, std::string s = \u0026#34;\u0026#34;); std::string const\u0026amp; title() const noexcept; std::string \u0026amp; title() noexcept; std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; const\u0026amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const\u0026amp; suffix() const noexcept; std::string \u0026amp; suffix() noexcept; }; template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); } Member Functions # Constructor (title, loc, msg, suffix) # Constructs error_info with specified title, location information loc, message msg, and optional suffix.\nsuffix defaults to empty.\nConstructor (title, [{loc, msg}, ...], suffix) # Constructs error_info with specified title, an array of location-message pairs [{loc, msg}, ...], and optional suffix.\nsuffix defaults to empty.\nstd::string title() # Returns the title of the error message.\nstd::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; locations() # Returns the list of locations where errors occurred along with their respective messages.\nMultiple locations can be specified.\nstd::string suffix() # Returns the suffix message to display at the end, providing hints or additional information.\nNon-Member Functions # make_error_info # template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Creates a new error_info.\nMust be followed by a msg related to source_location or basic_value.\nOverloads are added in value.hpp when passing toml::basic_value instead of source_location.\nPossible to pass suffix at the end.\nformat_error # Formats error_info as follows:\n{title} --\u0026gt; {locations().at(0).first.file_name()} | 1 | {locations().at(0).first.line()} | ^-- {locations().at(0).second} | 2 | {locations().at(1).first.line()} | ^-- {locations().at(1).second} {suffix} If file names differ between two source_location, the file name is displayed again.\nstd::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); Formats error_info.\nIf errkind is not provided, a red-bold [error] prefix is added before title.\nIf errkind is provided (including an empty string), it replaces [error].\nnamespace toml { template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); } // toml Returns a formatted string using format_error for error_info created with make_error_info.\nOverloads are added in value.hpp when passing toml::basic_value instead of source_location.\nStream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); Calls format_error(e) and outputs it.\nRelated # color.hpp parser.hpp source_location.hpp "},{"id":17,"href":"/toml11/docs/reference/exception/","title":"exception.hpp","section":"reference","content":" exception.hpp # toml::exception # Base class for exception types defined in toml11.\nnamespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} }; } // toml Member Functions # Destructor # virtual ~exception() noexcept override = default; Override when derived.\nwhat # virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} Returns the error message. Override when derived.\n"},{"id":18,"href":"/toml11/docs/reference/find/","title":"find.hpp","section":"reference","content":" find.hpp # This function searches for a value in a toml::value and performs type conversion if necessary.\ntoml::value can change the type it stores, and toml::find accommodates these types. Technically, all functions use toml::basic_value\u0026lt;TC\u0026gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::find # Overview # toml::find uses template arguments for the type you want to retrieve and function arguments for the key of the value you want to find.\ntemplate\u0026lt;typename T, typename TC, typename ... Keys\u0026gt; T find(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, Keys ... keys); The supported types for T and the behavior of the conversion are the same as for toml::get.\nIf T is not specified, a toml::value will be returned.\nKeys can be of type toml::value::key_type or std::size_t. When multiple keys are provided, the function will search recursively through sub-tables or arrays. If a toml::value::key_type is given, toml::value is interpreted as a toml::table; if a std::size_t is given, toml::value is interpreted as a toml::array.\nNote on Recursive Search # TOML allows for bare keys as well as quoted keys (enclosed in \u0026quot; or '). Using a quoted key like \u0026quot;foo.bar\u0026quot; = \u0026quot;baz\u0026quot; means no sub-table is constructed, and the key is \u0026quot;foo.bar\u0026quot;. To handle such patterns, toml11 does not split keys containing . and searches using the full string.\nConsider the following TOML file:\n[foo] [foo.bar] baz = \u0026#34;hoge\u0026#34; [\u0026#34;foo.bar\u0026#34;] baz = \u0026#34;fuga\u0026#34; The corresponding usage of toml::find is shown below:\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto baz1 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;, \u0026#34;baz\u0026#34;); // hoge const auto baz2 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo.bar\u0026#34;, \u0026#34;baz\u0026#34;); // fuga cf. toml.io/en/v1.0.0#keys\ntoml::find(value, key) # Searches for key in value as if value were a toml::table, then converts using toml::get.\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); If T is not specified, the function returns a toml::value without conversion.\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find( basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); Exceptions # If the toml::value does not contain a table, a toml::type_error is thrown.\nIf the contained table does not have the specified element, a std::out_of_range is thrown.\nIf the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.\ntoml::find(value, index) # Accesses the index-th element of value as if value were a toml::array, then converts using toml::get.\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t index); If T is not specified, the function returns a toml::value without conversion.\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find(basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t ky); Exceptions # If the toml::value does not contain an array, a toml::type_error is thrown.\nIf the contained array does not have the specified number of elements, a std::out_of_range is thrown.\nIf the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.\ntoml::find(value, keys...) # template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); This function calls toml::find recursively.\nThe failure conditions and the exceptions thrown are the same as those for toml::find.\ntoml::find_or(value, key, fallback) # template\u0026lt;typename T, typename TC, typename Key\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const Key\u0026amp; key, T\u0026amp;\u0026amp; opt); The find_or function takes a default value to avoid throwing an exception when the search fails.\nThe default value must be of the same type as the return type T. Therefore, unlike toml::find\u0026lt;T\u0026gt;, find_or infers the type T.\nYou can specify T explicitly with find_or\u0026lt;T\u0026gt;, but this always returns a new value. To obtain a reference, do not specify T.\nWhen T is basic_value # template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.\nIf the value is not found, the default value is returned.\nWhen T is toml::value::{some_type} # template\u0026lt;typename T, typename TC, typename K\u0026gt; T\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC, typename K\u0026gt; T const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const T\u0026amp; opt) noexcept Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.\nIf the value is not found or if a different type is stored, the default value is returned.\nWhen T is const char* # template\u0026lt;typename T, typename TC, typename K\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T opt) Searches for the corresponding value and returns it as a std::string.\nSince the fallback is constructed from const char* to std::string, a reference cannot be returned in case of failure.\nWhen T is any other type # template\u0026lt;typename T, typename TC, typename K\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T opt); Searches for the corresponding value and converts it to T before returning it.\nBecause conversion is performed, a reference cannot be returned.\nWhen multiple keys are provided # template\u0026lt;typename Value, typename K1, typename K2, typename K3, typename ... Ks\u0026gt; auto find_or(Value\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, K3\u0026amp;\u0026amp; k3, Ks\u0026amp;\u0026amp; ... keys) noexcept -\u0026gt; decltype(find_or(v, k2, std::forward\u0026lt;K3\u0026gt;(k3), std::forward\u0026lt;Ks\u0026gt;(keys)...)) Interprets the last element in the key sequence as the default value and applies find_or recursively.\nIf the inferred type of T is toml::value or toml::value::some_type, a reference can be returned.\nIf T is explicitly specified, conversion is always performed.\nRelated # get.hpp value.hpp "},{"id":19,"href":"/toml11/docs/reference/format/","title":"format.hpp","section":"reference","content":" format.hpp # Defines structures and enumerations related to formatting information for toml::value.\nindent_char # An enumeration representing the indentation character choice.\nenum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const indent_char\u0026amp; c); std::string to_string(const indent_char); Choosing none means no indentation is used, regardless of the value in super tables.\nIf both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.\nboolean_format_info # Formatting information for boolean.\nstruct boolean_format_info {}; bool operator==(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; bool operator!=(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; There is only one way to format boolean, so no configurable values are provided.\ninteger_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const integer_format f); std::string to_string(const integer_format); Specifies the radix of an integer.\ninteger_format_info # struct integer_format_info { integer_format fmt = integer_format::dec; bool uppercase = true; // use uppercase letters std::size_t width = 0; // minimal width (may exceed) std::size_t spacer = 0; // position of `_` (if 0, no spacer) std::string suffix = \u0026#34;\u0026#34;; // _suffix (library extension) }; bool operator==(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; bool operator!=(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; Member Variables # integer_format fmt # Specifies the radix.\nbool uppercase # Uses uppercase letters when formatted as a hexadecimal integer.\nstd::size_t width # Specifies the minimum width. The formatted value may exceed this width.\nFor values smaller than this width, if integer_format::dec, no effect. Otherwise, leading zeros are added.\nstd::size_t spacer # Specifies the width at which underscores _ are inserted.\nIf 3, formatted as 1_234_567. If 4, formatted as 0xdead_beef. If 0, no underscores are inserted. Irregular widths are not allowed.\nstd::string suffix # Stores the suffix when spec::ext_num_suffix of toml11 extension is true.\ncf. spec.hpp\nfloating_format # enum class floating_format : std::uint8_t { defaultfloat = 0, fixed = 1, // does not include exponential part scientific = 2, // always include exponential part hex = 3 // hexfloat extension }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const floating_format f); std::string to_string(const floating_format); Specifies the formatting style for floating numbers. Corresponds to std::defaultfloat, std::fixed, std::scientific, std::hexfloat.\nhexfloat is available only if toml::spec::ext_hex_float is true.\ncf. spec.hpp\nfloating_format_info # struct floating_format_info { floating_format fmt = floating_format::defaultfloat; std::size_t prec = 0; // precision (if 0, use the default) std::string suffix = \u0026#34;\u0026#34;; // 1.0e+2_suffix (library extension) }; bool operator==(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; bool operator!=(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; Member Variables # floating_format fmt # Specifies the formatting style.\nstd::size_t prec # Specifies the precision after the decimal point.\nstd::string suffix # Stores the suffix when spec::ext_num_suffix of toml11 extension is true.\ncf. spec.hpp\nstring_format # enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const string_format f); std::string to_string(const string_format); Specifies the formatting style for strings.\nstring_format_info # struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; bool operator==(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; bool operator!=(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; Member Variables # string_format fmt # Specifies the formatting information for strings.\nbool start_with_newline # For multiline_basic or multiline_literal, specifies whether to include a newline after the initial \u0026quot;\u0026quot;\u0026quot; or '''.\ndatetime_delimiter_kind # enum class datetime_delimiter_kind : std::uint8_t { upper_T = 0, lower_t = 1, space = 2, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const datetime_delimiter_kind d); std::string to_string(const datetime_delimiter_kind); Specifies the delimiter used between date and time in datetime.\nPossible options include T, t, and a space .\noffset_datetime_format_info # struct offset_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; bool operator!=(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; Member Variables # datetime_delimiter_kind delimiter # Specifies the delimiter to use.\nbool has_seconds # Specifies whether to omit seconds.\nstd::size_t subsecond_precision # Specifies how many digits to output for subseconds.\nlocal_datetime_format_info # struct local_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; bool operator!=(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; Member Variables # datetime_delimiter_kind delimiter # Specifies the delimiter to use.\nbool has_seconds # Specifies whether to omit seconds.\nstd::size_t subsecond_precision # Specifies how many digits to output for subseconds.\nlocal_date_format_info # struct local_date_format_info { // nothing, for now }; bool operator==(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; bool operator!=(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; No formatting parameters are specified for local_date.\nlocal_time_format_info # struct local_time_format_info { bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; bool operator!=(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; Member Variables # bool has_seconds # Specifies whether to omit seconds.\nstd::size_t subsecond_precision # Specifies how many digits to output for subseconds.\narray_format # enum class array_format : std::uint8_t { default_format = 0, oneline = 1, multiline = 2, array_of_tables = 3 // [[format.in.this.way]] }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const array_format f); std::string to_string(const array_format); default_format Automatically selects the appropriate format. Longer arrays may span multiple lines. oneline Formats all elements in a single line. multiline Outputs each element on its own line. array_of_tables Formats in the [[array.of.tables]] style. Cannot contain elements other than table. array_format_info # struct array_format_info { array_format fmt = array_format::default_format; indent_char indent_type = indent_char::space; std::int32_t body_indent = 4; // indent in case of multiline std::int32_t closing_indent = 0; // indent of `]` }; bool operator==(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; bool operator!=(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; Member Variables # array_format fmt # Specifies the format style.\nindent_char indent_type # Selects the type of character used for indentation.\nstd::int32_t body_indent # Specifies the number of characters to indent before each element in array_format::multiline.\nstd::int32_t closing_indent # Specifies the number of characters to indent before the closing bracket ] in array_format::multiline.\ntable_format # enum class table_format : std::uint8_t { multiline = 0, // [foo] \\n bar = \u0026#34;baz\u0026#34; oneline = 1, // foo = {bar = \u0026#34;baz\u0026#34;} dotted = 2, // foo.bar = \u0026#34;baz\u0026#34; multiline_oneline = 3, // foo = { \\n bar = \u0026#34;baz\u0026#34; \\n } implicit = 4 // [x] defined by [x.y.z]. skip in serializer. }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const table_format f); std::string to_string(const table_format); multiline Formats as a multiline normal table. oneline Formats as an inline table. dotted Formats in the form of a.b.c = \u0026quot;d\u0026quot;. multiline_oneline Formats as a multiline inline table with line breaks. Available from TOML v1.1.0 onwards. cf. spec.hpp implicit Skips implicit definitions like [x.y.z.w], leaving [x], [x.y], [x.y.z] as implicit. According to TOML syntax, dotted table can have sub-tables:\n[fruit] apple.color = \u0026#34;red\u0026#34; apple.taste.sweet = true # [fruit.apple] # INVALID # [fruit.apple.taste] # INVALID [fruit.apple.texture] # you can add sub-tables smooth = true toml11 currently does not support this format. Sub-tables under a dotted table would all be dotted, and tables are forced into inline table format.\ntable_format_info # struct table_format_info { table_format fmt = table_format::multiline; indent_char indent_type = indent_char::space; std::int32_t body_indent = 0; // indent of values std::int32_t name_indent = 0; // indent of [table] std::int32_t closing_indent = 0; // in case of {inline-table} }; bool operator==(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; bool operator!=(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; Member Variables # table_format fmt # Specifies the formatting method.\nindent_char indent_type # Specifies the character used for indentation.\nstd::int32_t body_indent # Specifies the width of indentation before keys.\nThe indentation width of the super table is not added.\nstd::int32_t name_indent # Specifies the indentation of keys in [table] format.\nThe indentation width of the super table is not added.\nstd::int32_t closing_indent # Specifies the indentation width before the closing brace } in the case of multiline_oneline.\n"},{"id":20,"href":"/toml11/docs/reference/from/","title":"from.hpp","section":"reference","content":" from.hpp # Defines a struct used for conversion from toml::value in toml::get and toml::find.\nYou can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from\u0026lt;T\u0026gt;.\nThis file does not provide specific implementations. Please specialize this struct when using.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct from; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/from.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)}; } }; } // toml Related # conversion.hpp into.hpp "},{"id":21,"href":"/toml11/docs/reference/get/","title":"get.hpp","section":"reference","content":" get.hpp # These are functions for extracting values from toml::value and performing type conversions if necessary.\ntoml::value can change the type it stores, and toml::get accommodates these types. Technically, all functions use toml::basic_value\u0026lt;TC\u0026gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::get\u0026lt;T\u0026gt; # Overview # Generally, toml::get behaves as follows: You specify T as in toml::get\u0026lt;int\u0026gt;(v).\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); However, depending on the type of T, toml::get can exhibit different behaviors.\nThe types of T can be categorized into:\nTypes that do not require conversion Types that require conversion Detailed conditions and the specific types supported are discussed later.\nTypes that Do Not Require Conversion # No conversion is needed if the provided toml::value is already storing the desired type. For instance, since toml::value::integer_type is an alias for std::int64_t, toml::get\u0026lt;std::int64_t\u0026gt;(v) requires no conversion. In this case, toml::get retrieves the integer value from toml::value and returns a reference to it.\nIf the provided toml::value is a mutable reference (\u0026amp;), the returned value is also a mutable reference (\u0026amp;). If it is an immutable reference (const\u0026amp;), the returned value will also be an immutable reference (const\u0026amp;). Returning a mutable reference allows you to overwrite the value stored in toml::value through that reference.\nTypes that Require Conversion # Types other than the ones mentioned above require conversion. For example, since toml::value::integer_type is an alias for std::int64_t, toml::get\u0026lt;std::size_t\u0026gt;(toml::value\u0026amp;) requires conversion. In this case, toml::get retrieves the integer value from toml::value and casts it to return the appropriate type.\ntoml11 supports not only simple casts but also complex type conversions like converting from toml::array to std::tuple\u0026lt;int, double, std::string\u0026gt;, std::array\u0026lt;double, 4\u0026gt;, or from toml::table to std::map\u0026lt;std::string, int\u0026gt;. For specifics, refer to the subsequent sections.\nWhen Conversion Fails # Sometimes, the expected type conversion cannot be performed. For example, applying toml::get\u0026lt;int\u0026gt;(v) to a toml::value that holds a table.\nIn such cases, an attempt to convert to the type most similar to the desired type (in this case, int using as_integer) fails, and a toml::type_error is thrown.\nWhen parsing from a file, an error message similar to the following is output:\nterminate called after throwing an instance of \u0026#39;toml::type_error\u0026#39; what(): toml::value::as_integer(): bad_cast to integer --\u0026gt; input.toml | 6 | [fruit] | ^^^^^^^-- the actual type is table When T is identical to toml::value # template\u0026lt;typename T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); Condition:\nstd::is_same\u0026lt;T, basic_value\u0026lt;TC\u0026gt;\u0026gt; is satisfied. Since this involves retrieving toml::value from toml::value, no conversion is performed, and the value is returned as is. This exists solely to generalize the implementation of other functions.\nThis does not fail.\nWhen T is one of toml::value::{some_type} # template\u0026lt;typename T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); Condition:\nT must be the same as one of the types that toml::value can store (e.g., toml::value::boolean_type). If toml::value is storing a type that matches the specified type in toml::get\u0026lt;T\u0026gt;, such as toml::value::integer_type, no type conversion is needed, and a reference can be returned.\nIf a different type is stored, a toml::type_error is thrown.\nWhen T is basic_value\u0026lt;OtherTC\u0026gt; with a different TypeConfig # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is not toml::basic_value\u0026lt;TC\u0026gt;. T is toml::basic_value\u0026lt;OtherTC\u0026gt;. When a basic_value that can store different types is specified, conversion is performed.\nSince type conversion occurs, the returned value is a new value and not a reference.\nThis does not fail (except in cases like memory exhaustion).\nWhen T is an integer type # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_integral\u0026lt;T\u0026gt; is satisfied T is not bool T is not toml::value::integer_type The function assumes that toml::value holds an integer_type, retrieves its value, converts it to T, and returns it.\nIf a type other than toml::value::integer_type is stored, a toml::type_error is thrown.\nWhen T is a floating-point type # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_floating_point\u0026lt;T\u0026gt; is satisfied T is not toml::value::floating_type The function assumes that toml::value holds a floating_type, retrieves its value, converts it to T, and returns it.\nIf a type other than toml::value::floating_type is stored, a toml::type_error is thrown.\nWhen T is std::string_view # This is only available in C++17 and later.\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_same\u0026lt;std::string_view, T\u0026gt; is satisfied The function assumes that toml::value holds a string_type, retrieves its value, constructs a std::string_view from it, and returns it.\nIf a type other than toml::value::string_type is stored, a toml::type_error is thrown.\nWhen T is std::chrono::duration # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::chrono::duration\u0026lt;Rep, Period\u0026gt; The function assumes that toml::value holds a local_time, retrieves its value, converts it to std::chrono::duration, and returns it.\nIf a type other than toml::value::local_time is stored, a toml::type_error is thrown.\nWhen T is std::chrono::system_clock::time_point # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_same\u0026lt;T, std::chrono::system_clock::time_point\u0026gt; is satisfied If the toml::value holds a local_date, local_datetime, or offset_datetime, this function retrieves the value and converts it to std::chrono::system_clock::time_point, returning the result.\nIf the value is of a type other than local_date, local_datetime, or offset_datetime, a toml::type_error is thrown.\nWhen T is array-like # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\nT has an iterator T has a value_type T supports push_back(x) T is not toml::value::array_type T is not std::string T is not std::string_view T is not map-like T does not have from_toml() member function toml::from\u0026lt;T\u0026gt; is not defined A constructor from toml::basic_value\u0026lt;TC\u0026gt; is not defined This includes types like std::vector\u0026lt;int\u0026gt; and std::deque\u0026lt;std::string\u0026gt;.\nIf the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.\nIf the value is of a type other than toml::value::array_type, a toml::type_error is thrown.\nWhen T is std::array # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nT is std::array\u0026lt;U, N\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.\nIf the value is of a type other than toml::value::array_type, a toml::type_error is thrown.\nIf the array held by toml::value does not contain enough elements, a std::out_of_range is thrown.\nWhen T is std::forward_list # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::forward_list\u0026lt;U\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to a std::forward_list, returning the result.\nIf the value is of a type other than toml::value::array_type, a toml::type_error is thrown.\nWhen T is std::pair # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::pair\u0026lt;T1, T2\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to std::pair\u0026lt;T1, T2\u0026gt;, returning the result.\nThe first and second elements are recursively converted.\nIf the value is of a type other than basic_value::array_type, a toml::type_error is thrown.\nIf the array held by toml::value does not contain exactly 2 elements, a std::out_of_range is thrown.\nWhen T is std::tuple # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::tuple\u0026lt;T1, T2, ... TN\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to std::tuple\u0026lt;T1, T2, ...TN\u0026gt;, returning the result.\nEach element is recursively converted.\nIf the value is of a type other than basic_value::array_type, a toml::type_error is thrown.\nIf the array held by toml::value does not contain exactly std::tuple_size\u0026lt;T\u0026gt;::value elements, a std::out_of_range is thrown.\nWhen T is map-like # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\nT has an iterator T has a key_type T has a value_type T has a mapped_type T is not toml::value::table_type T does not have a from_toml() member function toml::from\u0026lt;T\u0026gt; is not defined A constructor from toml::basic_value\u0026lt;TC\u0026gt; is not defined This includes types like std::map\u0026lt;std::string, int\u0026gt; and std::unordered_map\u0026lt;std::string, float\u0026gt;.\nIf the toml::value holds a table, this function retrieves the value and converts it to T, returning the result.\nElements are recursively converted.\nIf the value is of a type other than basic_value::table_type, a toml::type_error is thrown.\nWhen T is a user-defined type with a specialization of toml::from\u0026lt;T\u0026gt; # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nA specialization of toml::from\u0026lt;T\u0026gt; is defined If a specialization of toml::from for T is defined, it is used for type conversion.\nEnsure this does not conflict with individually supported types (std::array, std::pair, std::tuple etc).\nWhen T is a user-defined type with a from_toml member function # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\ntoml::from\u0026lt;T\u0026gt; is not defined T has from_toml() member function If T has a from_toml(toml::basic_value\u0026lt;TC\u0026gt;) member function, it is used for type conversion.\nIf toml::from\u0026lt;T\u0026gt; is defined, it takes precedence.\nWhen T is a user-defined type with a constructor that takes toml::basic_value\u0026lt;TC\u0026gt; # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\ntoml::from\u0026lt;T\u0026gt; is not defined T does not have from_toml() member function T has a constructor that takes toml::basic_value\u0026lt;TC\u0026gt; If T has a constructor that takes toml::basic_value\u0026lt;TC\u0026gt;, it is used for type conversion.\nIf toml::from\u0026lt;T\u0026gt; or T::from_toml is defined, they take precedence.\ntoml::get_or\u0026lt;T\u0026gt; # get_or takes a default value for use when the conversion fails, avoiding exceptions.\nThe default value must be of the same type as the target type T. Therefore, unlike toml::get\u0026lt;T\u0026gt;, T can be inferred in get_or.\nWhen T is basic_value\u0026lt;TC\u0026gt; # template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; opt) Since the conversion target is the same toml::value, this never fails.\nIt exists solely to generalize the implementation of other functions.\nWhen T is basic_value\u0026lt;TC\u0026gt;::{some_type} # template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, T\u0026amp;\u0026amp; opt) noexcept Performs the same conversion as toml::get\u0026lt;T\u0026gt;. If it fails, the second argument is returned.\nWhen T is const char* # template\u0026lt;typename TC\u0026gt; typename basic_value\u0026lt;TC\u0026gt;::string_type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::string_type::value_type* opt); When const char* is passed, the conversion target is interpreted as std::string.\nWhen T is something else # template\u0026lt;typename TC\u0026gt; typename std::remove_cv\u0026lt;typename std::remove_reference\u0026lt;T\u0026gt;::type\u0026gt;::type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp;\u0026amp; opt); Performs the same conversion as toml::get\u0026lt;T\u0026gt;. If it fails, the second argument is returned.\nRelated # find.hpp from.hpp value.hpp "},{"id":22,"href":"/toml11/docs/reference/into/","title":"into.hpp","section":"reference","content":" into.hpp # Defines a struct used for conversion from user-defined types into toml::value constructors.\nYou can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into\u0026lt;T\u0026gt;.\nThis file does not provide specific implementations. Please specialize this struct when using.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct into; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/into.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { using value_type = toml::basic_value\u0026lt;TC\u0026gt;; using table_type = typename value_type::table_type; return value_type(table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; } // toml Related # conversion.hpp from.hpp "},{"id":23,"href":"/toml11/docs/reference/literal/","title":"literal.hpp","section":"reference","content":" literal.hpp # In literal.hpp, the _toml literal is defined.\nThe _toml literal parses string literals into toml::value.\nnamespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); toml::value operator\u0026#34;\u0026#34; _toml(const char8_t* str, std::size_t len); // Available in C++20 and later } // toml_literals } // literals } // toml Free Functions # operator\u0026quot;\u0026quot; _toml(const char*) # toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); Converts a string literal into a toml::value by parsing it.\nFor typical TOML files, this performs equivalent parsing to toml::parse.\nconst auto v1 = \u0026#34;a = \u0026#39;foo\u0026#39;\u0026#34;_toml; // v1: {a = \u0026#39;foo\u0026#39;} When dealing with multiline content, raw string literal is convenient.\nconst auto v1 = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; If the value is a standalone entity, it represents that value.\nconst auto v2 = \u0026#34;\u0026#39;foo\u0026#39;\u0026#34;_toml; // v2: \u0026#39;foo\u0026#39; TOML allows keys consisting solely of numbers. When distinguishing between table definitions and arrays is ambiguous (e.g., [1]), table definitions take precedence.\nTo interpret as an array, use a trailing comma.\nconst auto v3 = \u0026#34;[1]\u0026#34;_toml; // v3: {1 = {}} const auto v4 = \u0026#34;[1,]\u0026#34;_toml; // v4: [1,] operator\u0026quot;\u0026quot; _toml(const char8_t*) # Defined when char8_t is available. Otherwise identical in functionality, differing only in argument type.\nExample # #include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = \\\u0026#34;foo\\\u0026#34;\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } "},{"id":24,"href":"/toml11/docs/reference/ordered_map/","title":"ordered_map.hpp","section":"reference","content":" ordered_map.hpp # Defines toml::ordered_map, which is used to maintain the order of values in a file.\nclass ordered_map # namespace toml { template\u0026lt;typename Key, typename Val, typename Cmp = std::equal_to\u0026lt;Key\u0026gt;, typename Allocator = std::allocator\u0026lt;std::pair\u0026lt;Key, Val\u0026gt;\u0026gt;\u0026gt; class ordered_map; } The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order.\nAs a linear container, searches require O(n) time relative to the number of elements. Use this when search operations are infrequent and maintaining the order of values is important.\nNon-Member Types # namespace toml { struct ordered_type_config; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } Use these in place of toml::type_config and toml::value.\nSince toml::parse defaults to using type_config, specify\nconst auto input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;input.toml\u0026#34;); when parsing.\nMember Types # using key_type = Key; using mapped_type = Val; using value_type = std::pair\u0026lt;Key, Val\u0026gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector\u0026lt;value_type, Allocator\u0026gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; Member Functions # Constructors # ordered_map() = default; Constructs an empty ordered_map.\nConstructors (Comparator, Allocator) # explicit ordered_map(const Cmp\u0026amp; cmp, const Allocator\u0026amp; alloc = Allocator()); explicit ordered_map(const Allocator\u0026amp; alloc); Constructs an ordered_map with a specified comparator for key comparison and an allocator for memory management.\nCopy and Move Constructors # ordered_map(const ordered_map\u0026amp;) = default; ordered_map(ordered_map\u0026amp;\u0026amp;) = default; ordered_map(const ordered_map\u0026amp; other, const Allocator\u0026amp; alloc); ordered_map(ordered_map\u0026amp;\u0026amp; other, const Allocator\u0026amp; alloc); Constructs an ordered_map by copying or moving the contents from another ordered_map. An allocator can also be specified for memory management.\nConstructors (Iterator) # template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Allocator\u0026amp; alloc = Allocator()); Constructs an ordered_map with a range represented by iterators. The order of the elements follows the order of the iterators.\nConstructors (std::initializer_list) # ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Allocator\u0026amp; alloc); Initializes the ordered_map using an initializer list.\nCopy and Move Assignment Operators # ordered_map\u0026amp; operator=(const ordered_map\u0026amp;) = default; ordered_map\u0026amp; operator=(ordered_map\u0026amp;\u0026amp;) = default; Assigns the contents of another ordered_map to this one, using copy or move semantics.\nAssignment Operator (std::initializer_list) # ordered_map\u0026amp; operator=(std::initializer_list\u0026lt;value_type\u0026gt; v); Assigns the contents of an initializer list to the ordered_map.\nDestructor # ~ordered_map() = default; Destroys the ordered_map.\nbegin(), end() # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; Returns iterators to the beginning and end of the container, allowing iteration over its contents in order.\nempty() # bool empty() const noexcept; Returns true if the ordered_map is empty, false otherwise.\nsize() # std::size_t size() const noexcept; Returns the number of elements in the ordered_map.\nmax_size() # std::size_t max_size() const noexcept; Returns the maximum number of elements the ordered_map can hold.\nclear() # void clear(); Clears all elements from the ordered_map.\npush_back(kv) # void push_back(const value_type\u0026amp;); void push_back(value_type\u0026amp;\u0026amp;); Appends a key-value pair to the end of the ordered_map.\nemplace_back(k, v) # void emplace_back(key_type, mapped_type); Appends a key-value pair to the end of the ordered_map by constructing it in place.\npop_back() # void pop_back(); Removes the last element from the ordered_map.\ninsert(kv) # void insert(value_type); Inserts a key-value pair at the end of the ordered_map.\nemplace(k, v) # void emplace(key_type, mapped_type); Inserts a key-value pair at the end of the ordered_map by constructing it in place.\ncount(k) # std::size_t count(const key_type\u0026amp;) const noexcept; Returns the number of elements with the specified key. Since duplicate keys are not allowed, this will return either 1 if the key exists or 0 if it does not.\ncontains(k) # bool contains(const key_type\u0026amp;) const noexcept; Returns true if the ordered_map contains an element with the specified key, false otherwise.\nfind(k) # iterator find(const key_type\u0026amp; key) noexcept; const_iterator find(const key_type\u0026amp; key) const noexcept; Finds an element with the specified key and returns an iterator to it. If the key is not found, returns end().\nat(k) # mapped_type\u0026amp; at(const key_type\u0026amp; k); mapped_type const\u0026amp; at(const key_type\u0026amp; k) const; Finds an element with the specified key and returns a reference to its value. Throws std::out_of_range if the key is not found.\noperator[](k) # mapped_type\u0026amp; operator[](const key_type\u0026amp; k); mapped_type const\u0026amp; operator[](const key_type\u0026amp; k) const; Finds an element with the specified key and returns a reference to its value. If the key is not found, a new value is constructed and returned. If the ordered_map is const, throws std::out_of_range instead.\nkey_comp() # key_compare key_comp() const; Returns the comparator used for key comparison.\nNotes # Key Modification # Since ordered_map uses std::pair\u0026lt;Key, Val\u0026gt; for value_type, it is possible to modify the key through an iterator. However, this practice is not recommended.\nIf you modify a key this way and it conflicts with an existing key, one of the conflicting keys will become unsearchable.\nWhen using operator[], push_back, or insert, collisions with existing keys are detected.\nOrder Preservation Details # ordered_map maintains the order of keys, but this order preservation applies only to keys defined within the same table. Order across different tables is not maintained.\nFor example, the order in the following file will be preserved:\napple.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.type = \u0026#34;fruit\u0026#34; orange.skin = \u0026#34;thick\u0026#34; orange.color = \u0026#34;orange\u0026#34; In contrast, the order in the following file will not be preserved:\napple.type = \u0026#34;fruit\u0026#34; orange.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; orange.skin = \u0026#34;thick\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.color = \u0026#34;orange\u0026#34; ordered_map preserves the order of the apple and orange definitions at the root table level, and the order of type, skin, color within each apple and orange table.\nRelated # parser.hpp types.hpp value.hpp "},{"id":25,"href":"/toml11/docs/reference/parser/","title":"parser.hpp","section":"reference","content":" parser.hpp # Defines functions for parsing files or strings and the exceptions they use.\nWhile parse throws an exception on failure, try_parse returns error information.\nparse # Parses the content of a given file and returns a toml::basic_value.\nIn case of failure, toml::syntax_error is thrown.\nThe type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.\nparse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::string fname, spec s = spec::default_version()); } Parses the content of the given filename.\nIf reading the file fails, toml::file_io_error is thrown.\nIf parsing fails, toml::syntax_error is thrown.\nparse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } Parses the content of the given filename from a string literal.\nIf reading the file fails, toml::file_io_error is thrown.\nIf parsing fails, toml::syntax_error is thrown.\nparse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } This is defined only if \u0026lt;filesystem\u0026gt; is available.\nParses the content of the file at the given file path.\nIf reading the file fails, toml::file_io_error is thrown.\nIf parsing fails, toml::syntax_error is thrown.\nparse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } Parses the content of the given std::istream\u0026amp;.\nOpen a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nThe filename information is taken as the third argument. If the filename is not provided, it defaults to \u0026quot;unknown file\u0026quot;.\nparse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; parse(FILE* fp, std::string filename, spec s = spec::default_version()); } Parses the content of the file pointed to by FILE*.\nOpen a stream in binary mode by passing \u0026quot;rb\u0026quot; to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nIf reading the file fails, file_io_error containing errno is thrown.\nIf parsing fails, syntax_error is thrown.\nparse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } Parses the byte sequence as a TOML file.\nIf parsing fails, toml::syntax_error is thrown.\nparse_str # parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } Parses a string as a TOML file.\nIn case of failure, toml::syntax_error is thrown.\nThe type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.\nYou generally don\u0026rsquo;t need to manually set the third argument, cxx::source_location. If std::source_location, std::experimental::source_location, or __builtin_FILE is available, the location information where parse_str was called will be stored.\ntry_parse # Parses the contents of the given file and returns a toml::basic_value if successful, or a std::vector\u0026lt;toml::error_info\u0026gt; if it fails.\nThe type information of basic_value is specified by template, and the version of the TOML language is specified by toml::spec.\nUnlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. However, please note that exceptions thrown by the standard library will still propagate.\nFor instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.\ntry_parse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::string fname, spec s = spec::default_version()); } Takes a file name and parses its content.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } Takes a string literal as a file name and parses its content.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } Takes a file path and parses its content.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } Takes a std::istream\u0026amp; and parses its content.\nOpen a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nThe file name information is taken as the second argument. If a file name is not provided, it defaults to \u0026quot;unknown file\u0026quot;.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(FILE* fp, std::string filename, spec s = spec::default_version()); } Takes a FILE* and parses its content.\nOpen a stream in binary mode by passing \u0026quot;rb\u0026quot; to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } Takes a byte array and parses its content as a TOML file.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse_str # try_parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } Parses a string as a TOML file, returning a toml::basic_value if successful, or a std::vector\u0026lt;toml::error_info\u0026gt; if it fails.\nUnlike parse_str, it does not throw syntax_error, but instead returns error information as the failure type of the result.\nIf std::source_location, std::experimental::source_location, or __builtin_FILE is available, it will record the location information.\nTypically, you do not need to manually set the third argument cxx::source_location. If any of std::source_location, std::experimental::source_location, or __builtin_FILE are available, the information of the location where parse_str was called will be saved as the location information.\nUnlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. However, please note that exceptions thrown by the standard library will still propagate.\nFor instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.\nsyntax_error # namespace toml { struct syntax_error final : public ::toml::exception { public: syntax_error(std::string what_arg, std::vector\u0026lt;error_info\u0026gt; err); ~syntax_error() noexcept override = default; const char* what() const noexcept override; std::vector\u0026lt;error_info\u0026gt; const\u0026amp; errors() const noexcept }; } An exception thrown when a syntax error is detected in TOML.\nIt is thrown by parse but not by try_parse.\nfile_io_error # namespace toml { struct file_io_error final : public ::toml::exception { public: file_io_error(const std::string\u0026amp; msg, const std::string\u0026amp; fname); file_io_error(int errnum, const std::string\u0026amp; msg, const std::string\u0026amp; fname); ~file_io_error() noexcept override = default; const char* what() const noexcept override; bool has_errno() const noexcept; int get_errno() const noexcept; }; } An exception thrown when reading the contents of a file fails.\nWhen using FILE* to read a file, errno is set.\nhas_errno # If std::ifstream fails, errno is not set.\nIn this case, has_errno returns false.\nget_errno # Particularly when passing a FILE*, retrieves the value of errno.\nIf has_errno is false, it returns 0.\nRelated # error_info.hpp result.hpp spec.hpp value.hpp "},{"id":26,"href":"/toml11/docs/reference/result/","title":"result.hpp","section":"reference","content":" result.hpp # result.hpp defines the result type, which can hold either a success value or a failure value.\nThis is used as the return type for toml::try_parse, which does not throw exceptions.\nsuccess # A type that holds a success value.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success\u0026amp;) = default; success(success\u0026amp;\u0026amp;) = default; success\u0026amp; operator=(const success\u0026amp;) = default; success\u0026amp; operator=(success\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]) } Member Types # using value_type = T; The type of the success value.\nMember Functions # Constructor # explicit success(value_type v); Constructs with a value_type argument.\ntemplate\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); Constructs with another type that can be converted to value_type.\ntemplate\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); Constructs with another success type that can be converted to value_type.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nNon-Member Functions # ok(T) # template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]); Constructs and returns a success type from a success value.\nConverts a string literal into std::string.\nsuccess\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # Specialization of success for when the success value is a reference.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit success(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; } Member Types # using value_type = T; The type of the success value. It is T from std::reference_wrapper\u0026lt;T\u0026gt;, not the reference itself.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nfailure # A type that holds a failure value.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure { using value_type = T; explicit failure(value_type v); ~failure() = default; failure(const failure\u0026amp;) = default; failure(failure\u0026amp;\u0026amp;) = default; failure\u0026amp; operator=(const failure\u0026amp;) = default; failure\u0026amp; operator=(failure\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); } Member Types # using value_type = T; The type of the failure value.\nMember Functions # Constructor # explicit failure(value_type v); Constructs with a value_type argument.\ntemplate\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); Constructs with another type that can be converted to value_type.\ntemplate\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); Constructs with another failure type that can be converted to value_type.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nNon-Member Functions # err(T) # template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); Constructs and returns a failure type from a failure value.\nConverts a string literal into std::string.\nfailure\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # Specialization of failure for when the failure value is a reference.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit failure(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept {return value.get();} value_type const\u0026amp; get() const noexcept {return value.get();} }; } Member Types # using value_type = T; The type of the failure value. It is T from std::reference_wrapper\u0026lt;T\u0026gt;, not the reference itself.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nresult # A type that holds either a success value or a failure value.\nnamespace toml { template\u0026lt;typename T, typename E\u0026gt; struct result { using success_type = success\u0026lt;T\u0026gt;; using failure_type = failure\u0026lt;E\u0026gt;; using value_type = typename success_type::value_type; using error_type = typename failure_type::value_type; result(success_type s); result(failure_type f); template\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); result\u0026amp; operator=(success_type s); result\u0026amp; operator=(failure_type f); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); ~result() noexcept; result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); template\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); bool is_ok() const noexcept; bool is_err() const noexcept; explicit operator bool() const noexcept; value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; }; } Member Types # success_type # success\u0026lt;T\u0026gt;.\nfailure_type # failure\u0026lt;E\u0026gt;.\nvalue_type # The type T of the success value, alias for success_type::value_type.\nIf T is std::reference_wrapper\u0026lt;U\u0026gt;, then it is U.\nerror_type # The type E of the failure value, alias for failure_type::value_type.\nIf E is std::reference_wrapper\u0026lt;F\u0026gt;, then it is F.\nMember Functions # Constructor # result() = delete; Cannot construct result type by default. Needs to be given either a success or failure type.\nresult(success_type s); result(failure_type f); Constructs with a success_type or failure_type.\ntemplate\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); Constructs with a success\u0026lt;U\u0026gt; or failure\u0026lt;U\u0026gt; that is convertible to value_type or error_type.\ntemplate\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); Constructs from or assigns to another result with convertible success or failure types.\nCopy and Move Constructors # result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); Can be copy or move constructed.\noperator= # result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); Can be copy or move assigned.\ntemplate\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); Can be assigned from convertible success or failure types.\nis_ok() # bool is_ok() const noexcept; Returns true if it holds a success value, false otherwise.\nis_err() # bool is_err() const noexcept; Returns true if it holds a failure value, false otherwise.\noperator bool() # explicit operator bool() const noexcept; Returns true if it holds a success value, false otherwise.\nunwrap() # value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; Returns the stored success value.\nThrows toml::bad_result_access if it holds a failure value.\nIf std::source_location or equivalent compiler extension is available, the file name and line number where unwrap() occurred are included in the what() string.\nunwrap_or() # value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; Returns the stored success value if present, otherwise returns the provided default value.\nunwrap_err() # error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; Returns the stored failure value.\nThrows toml::bad_result_access if it holds a success value.\nIf std::source_location or equivalent compiler extension is available, the file name and line number where unwrap_err() occurred are included in the what() string.\nas_ok() # value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; Returns the success value without checking.\nBehavior is undefined if it holds a failure value.\nas_err() # error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; Returns the failure value without checking.\nBehavior is undefined if it holds a success value.\nbad_result_access # An exception thrown when unwrap or unwrap_err fails in a result.\nnamespace toml { struct bad_result_access : public ::toml::exception { public: explicit bad_result_access(const std::string\u0026amp; what_arg); virtual ~bad_result_access() noexcept override = default; virtual const char* what() const noexcept override; protected: std::string what_; }; } "},{"id":27,"href":"/toml11/docs/reference/serializer/","title":"serializer.hpp","section":"reference","content":" serializer.hpp # format # Serializes the data.\nnamespace toml { template\u0026lt;typename TC\u0026gt; std::string format(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; k, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const std::vector\u0026lt;typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026gt;\u0026amp; ks, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); } If there\u0026rsquo;s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.\nformat(v, spec) # Formats a toml::value according to its format information and the provided spec.\nIf it\u0026rsquo;s a table_type, it\u0026rsquo;s formatted as if it were the root table. Otherwise, only the value is formatted.\nformat(k, v, spec) # Formats a toml::value along with the given key.\nv is interpreted as being defined under that key.\nformat([k,...], v, spec) # v is interpreted as being defined under those keys. If multiple keys are provided, it\u0026rsquo;s interpreted as a recursively defined table.\nserialization_error # Reports errors that occurred during serialization.\nnamespace toml { struct serialization_error final : public ::toml::exception { public: explicit serialization_error(std::string what_arg, source_location loc); ~serialization_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; } "},{"id":28,"href":"/toml11/docs/reference/source_location/","title":"source_location.hpp","section":"reference","content":" source_location.hpp # source_location.hpp defines a class representing a specific area within a TOML file.\nThis class is used to represent problematic areas in error messages.\ntoml::source_location # source_location is a class representing a specific area within a TOML file.\nnamespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const\u0026amp;) = default; source_location(source_location \u0026amp;\u0026amp;) = default; source_location\u0026amp; operator=(source_location const\u0026amp;) = default; source_location\u0026amp; operator=(source_location \u0026amp;\u0026amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const\u0026amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const\u0026amp; first_line() const; std::string const\u0026amp; last_line() const; std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; }; template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); } //toml Member Functions # Constructor # explicit source_location(/* implementation-defined */); toml::source_location can only be constructed via toml::parse or the _toml literal.\nis_ok() # bool is_ok() const noexcept; Returns true if the source_location holds a valid value, false otherwise.\nThe result of location() from toml::value constructed outside of toml::parse or _toml literals returns false for is_ok as it points to nothing.\nlength() # std::size_t length() const noexcept; Returns the length of the area pointed to by the source_location.\nReturns 0 if it does not hold a valid value.\nfirst_line_number() # std::size_t first_line_number() const noexcept; Returns the line number of the first line of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nfirst_column_number() # std::size_t first_column_number() const noexcept; Returns the column number of the first column of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nlast_line_number() # std::size_t last_line_number() const noexcept; Returns the line number of the last line of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nlast_column_number() # std::size_t last_column_number() const noexcept; Returns the column number of the last column of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nfile_name() # std::string const\u0026amp; file_name() const noexcept; Returns the file name containing the area pointed to by the source_location.\nReturns \u0026quot;unknown file\u0026quot; if it does not hold a valid value.\nnum_lines() # std::size_t num_lines() const noexcept; Returns the number of lines in the area pointed to by the source_location.\nReturns 0 if it does not hold a valid value.\nfirst_line() # std::string const\u0026amp; first_line() const; Returns the first line of the area pointed to by the source_location.\nThrows std::out_of_range if it does not hold a valid value.\nlast_line() # std::string const\u0026amp; last_line() const; Returns the last line of the area pointed to by the source_location.\nThrows std::out_of_range if it does not hold a valid value.\nlines() # std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; Returns all lines in the area pointed to by the source_location.\nReturns a reference to an empty std::vector if it does not hold a valid value.\nNon-Member Functions # format_location # template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); Formats the specified source_location and its associated message as follows:\n-\u0026gt; {filename.toml} | 1 | a = 42 | ^-- {message} If colorization is enabled, ANSI escape sequences will be added for coloring.\nWhen multiple locs_and_msgs are provided, they must be in the order of const source_location\u0026amp; followed by const std::string\u0026amp;, and the next pair in the same order, and so on.\nExample: Multiple source_location and std::string # When multiple source_location and std::string pairs are provided, they are formatted as follows:\nsource_location\u0026amp; loc0; source_location\u0026amp; loc1; source_location\u0026amp; loc2; std::string msg0; std::string msg1; std::string msg2; format_location(loc0, msg0, loc1, msg1, loc2, msg2); -\u0026gt; {filename0.toml} | 1 | a = 42 | ^-- {message0} | -\u0026gt; {filename1.toml} | 2 | b = 3.14 | ^-- {message1} | -\u0026gt; {filename2.toml} | 3 | c = \u0026#34;foo\u0026#34; | ^-- {message2} Related # error_info.hpp value.hpp "},{"id":29,"href":"/toml11/docs/reference/spec/","title":"spec.hpp","section":"reference","content":" spec.hpp # spec.hpp defines classes for specifying the version of TOML.\ntoml::semantic_version # semantic_version is a class that stores version information.\nnamespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); } //toml Member Functions # Constructor # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a semantic_version instance with the specified major, minor, and patch version numbers.\nNon-Member Functions # Comparison Operators # constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; Compares two semantic_version instances according to semantic versioning rules.\nStream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); Outputs the version in the format {major}.{minor}.{patch}.\nto_string # std::string to_string(const semantic_version\u0026amp; ver); Converts the version to a string in the format {major}.{minor}.{patch}.\ntoml::spec # spec is a class that stores TOML version information.\nstruct spec { constexpr static spec default_version() noexcept; constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; semantic_version version; // toml version // diff from v1.0.0 -\u0026gt; v1.1.0 bool v1_1_0_allow_control_characters_in_comments; bool v1_1_0_allow_newlines_in_inline_tables; bool v1_1_0_allow_trailing_comma_in_inline_tables; bool v1_1_0_allow_non_english_in_bare_keys; bool v1_1_0_add_escape_sequence_e; bool v1_1_0_add_escape_sequence_x; bool v1_1_0_make_seconds_optional; // library extensions bool ext_hex_float; // allow hex float bool ext_num_suffix; // allow number suffix bool ext_null_value; // allow null value }; Member Functions # Constructor # constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; Constructs a spec with the specified TOML version.\nSupports TOML v1.0.0 and TOML v1.1.0.\ndefault_version() # constexpr static spec default_version() noexcept; Constructs a spec with the default version.\nUsed as the default value for toml::parse and toml::format.\nIn toml11 v4.0.0, the value is v1.0.0.\nv(major, minor, patch) # constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a spec with the specified version.\nMember Variables # Each flag is automatically set to true when the specified version includes the corresponding feature.\nYou can modify these flags to change the behavior of toml::parse and toml::format.\nSome features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.\nIf they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.\nAs such, any features related to future versions should be considered unstable.\nExample # auto spec = toml::spec::v(1, 0, 0); // Allow newlines in inline tables in addition to v1.0.0 features. // Other v1.1.0 features are not enabled. spec.v1_1_0_allow_newlines_in_inline_tables = true; auto input = toml::parse(\u0026#34;input_file.toml\u0026#34;, spec); v1_1_0_allow_control_characters_in_comments # bool v1_1_0_allow_control_characters_in_comments; Allows most control characters in comments.\nAdded in TOML v1.1.0.\nv1_1_0_allow_newlines_in_inline_tables # bool v1_1_0_allow_newlines_in_inline_tables; Allows newlines in inline tables.\nAdded in TOML v1.1.0.\nv1_1_0_allow_trailing_comma_in_inline_tables # bool v1_1_0_allow_trailing_comma_in_inline_tables; Allows trailing commas in inline tables.\nAdded in TOML v1.1.0.\nv1_1_0_add_escape_sequence_e # bool v1_1_0_add_escape_sequence_e; Allows \\e to represent the ESC character.\nAdded in TOML v1.1.0.\nv1_1_0_add_escape_sequence_x # bool v1_1_0_add_escape_sequence_x; Allows \\xHH to represent a single byte character.\nAdded in TOML v1.1.0.\nv1_1_0_make_seconds_optional # bool v1_1_0_make_seconds_optional; Makes the seconds component in time optional.\nUnspecified seconds default to 0.\nAdded in TOML v1.1.0.\next_hex_float # bool ext_hex_float; This is a language extension specific to toml11.\nIt is initialized to false regardless of the specified version. You must explicitly set it to true if you want to use it.\nAllows hexadecimal representation of floating-point numbers.\nThe hexadecimal representation conforms to the printf format specifier %a/%A.\nhexf = 0xC0FFEEp-10 toml::format will format using hexadecimal notation only if the passed toml::spec has ext_hex_float set to true. If the format specifier indicates hex but the toml::spec passed to toml::format has ext_hex_float set to false, the hexadecimal specification is ignored, and the number is output in decimal notation with maximum precision.\next_num_suffix # bool ext_num_suffix; This is a language extension specific to toml11.\nIt is initialized to false regardless of the specified version. You must explicitly set it to true if you want to use it.\nAllows the addition of suffixes to decimal integers and floating-point numbers. This does not apply to hexadecimal, octal, or binary notations.\nThere must be an _ separator between the number and the suffix.\nThe suffix cannot start with a digit to avoid confusion with the numeric part.\ndistance = 10_m # valid distance = 10_2m # invalid distance = 10_2_m # valid The suffix is stored in the format information as std::string suffix. The _ separating the number from the suffix is not included in the suffix.\ntoml::value distance = toml::find(input, \u0026#34;distance\u0026#34;); assert(distance.as_integer_fmt().suffix == std::string(\u0026#34;m\u0026#34;)); toml::format will format the value with the suffix only if the passed toml::spec has ext_num_suffix set to true.\nThe suffix follows the grammar defined as:\nnon-digit-graph = ALPHA / non-ascii graph = ALPHA / DIGIT / non-ascii suffix = _ non-digit-graph *( graph / ( _ graph ) ) ext_null_value # bool ext_null_value; This is a language extension specific to toml11.\nAllows the use of null as a value.\nA toml::value specified as null will have no value, and is_empty() will return true.\ntoml::format will format it as null only if the passed toml::spec has ext_null_value set to true. Otherwise, toml::format will terminate with an error.\n"},{"id":30,"href":"/toml11/docs/reference/toml_fwd/","title":"toml_fwd.hpp","section":"reference","content":" toml_fwd.hpp # toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions.\nWhen only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time.\nSince this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value\u0026lt;toml::type_config\u0026gt;::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value. This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.\n"},{"id":31,"href":"/toml11/docs/reference/toml/","title":"toml.hpp","section":"reference","content":" toml.hpp # toml.hpp includes all other headers.\nThis allows access to all features of toml11.\nThis header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${toml11_include_dir}/toml11/.\n"},{"id":32,"href":"/toml11/docs/reference/types/","title":"types.hpp","section":"reference","content":" types.hpp # This document defines classes that specifies type information.\ntype_config # type_config is a type that encapsulates parameters given to toml::basic_value.\nWhen using different types within toml::basic_value\u0026lt;T\u0026gt;, you need to define and pass this type separately. All elements listed are required.\nIf you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float.\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; using value = basic_value\u0026lt;type_config\u0026gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static Member Functions # parse_int(str, src, base) # static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); If you use a type as integer_type that cannot utilize standard stream operators, implement this function. Otherwise, use read_int described later.\nThe str parameter receives a string with prefixes, leading zeros, and underscores removed.\nThe src parameter receives a source_location pointing to where the string was defined.\nThe base parameter receives one of 10, 2, 8, or 16.\nparse_float(str, src, is_hex) # static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); If you use a type as floating_type that cannot utilize standard stream operators, implement this function. Otherwise, use read_float described later.\nThe str parameter receives a string with prefixes, leading zeros, and underscores removed.\nThe src parameter receives a source_location pointing to where the string was defined.\nThe is_hex parameter indicates whether the format is hexfloat. If you don\u0026rsquo;t use the hexfloat extension, you don\u0026rsquo;t need to implement this.\nFor details on the hexfloat extension, refer to spec.hpp.\nNon-member Functions # read_int # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); This is the default function used. It parses using std::istringstream.\nIf operator\u0026gt;\u0026gt; and manipulators like std::hex, and std::numeric_limits\u0026lt;T\u0026gt; are defined (such as for boost::multiprecision), you can use this without modifications.\nread_float # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); This is the default function used. It parses decimals using std::istringstream and hexfloats using sscanf().\nIt supports double and float.\nFor other types, if operator\u0026gt;\u0026gt; is defined and hex is not used, you can use this function.\nordered_type_config # ordered_type_config is a variation of toml::type_config where the table type is replaced with toml::ordered_map. Additionally, it defines the toml::ordered_value alias.\nOther than these changes, it is identical to type_config.\nnamespace toml { struct ordered_type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = ordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } // toml "},{"id":33,"href":"/toml11/docs/reference/value_t/","title":"value_t.hpp","section":"reference","content":" value_t.hpp # value_t # value_t is used to handle the type information of toml::value.\nnamespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); std::string to_string(value_t t); } // toml Non-member Functions # Stream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); Outputs the string representation of the value_t to the stream.\nto_string # std::string to_string(value_t t); Returns the string representation of the value_t.\n"},{"id":34,"href":"/toml11/docs/reference/value/","title":"value.hpp","section":"reference","content":" value.hpp # value.hpp defines basic_value.\ntoml::basic_value # basic_value is a class that stores TOML values.\nnamespace toml { template \u0026lt;class TypeConfig\u0026gt; class basic_value; // Defined in types.hpp // using value = basic_value\u0026lt;type_config\u0026gt;; // using table = typename basic_value\u0026lt;type_config\u0026gt;::table_type; // using array = typename basic_value\u0026lt;type_config\u0026gt;::array_type; template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); } //toml Member Types # The following member types are defined.\nYou can modify the member types using TypeConfig.\nSee also: types.hpp\nName Definition char_type typename TypeConfig::char_type key_type typename TypeConfig::string_type value_type basic_value\u0026lt;TypeConfig\u0026gt; boolean_type typename TypeConfig::boolean_type integer_type typename TypeConfig::integer_type floating_type typename TypeConfig::floating_type string_type typename TypeConfig::string_type local_time_type toml::local_time local_date_type toml::local_date local_datetime_type toml::local_datetime offset_datetime_type toml::offset_datetime array_type typename TypeConfig::template array_type\u0026lt;value_type\u0026gt; table_type typename TypeConfig::template table_type\u0026lt;key_type, value_type\u0026gt; comment_type typename TypeConfig::comment_type Member Functions # Default Constructor # basic_value() noexcept Constructs an empty toml::value.\nThe constructed toml::value will be empty.\nCopy and Move Constructors # basic_value(const basic_value\u0026amp; v) basic_value(basic_value\u0026amp;\u0026amp; v) Copies or moves all information including values, format information, comments, and file regions.\nCopy and Move Constructors with Comments # basic_value(basic_value v, std::vector\u0026lt;std::string\u0026gt; com) Copies or moves the object while overwriting comments.\nConversion Constructors # template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other) template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other, std::vector\u0026lt;std::string\u0026gt; com) Copies or moves from a basic_value with a different type_config.\nConstructor (boolean) # basic_value(boolean_type x) basic_value(boolean_type x, boolean_format_info fmt) basic_value(boolean_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(boolean_type x, boolean_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a bool, its format information, and comments.\nConstructor (integer) # template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, integer_format_info fmt) template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with an integer, its format information, and comments.\nConstructor (floating) # template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, floating_format_info fmt) template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, floating_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a floating point number, its format information, and comments.\nConstructor (string) # basic_value(string_type x) basic_value(string_type x, string_format_info fmt) basic_value(string_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x) basic_value(const string_type::value_type* x, string_format_info fmt) basic_value(const string_type::value_type* x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) // C++17以降 basic_value(string_view_type x) basic_value(string_view_type x, string_format_info fmt) basic_value(string_view_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_view_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a string, its format information, and comments.\nstring_view_type shares the same value_type and traits_type as string_type.\nConstructor (local_date) # basic_value(local_date_type x) basic_value(local_date_type x, local_date_format_info fmt) basic_value(local_date_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_date_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a local_date_type, its format information, and comments.\nConstructor (local_time) # basic_value(local_time_type x) basic_value(local_time_type x, local_time_format_info fmt) basic_value(local_time_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_time_type x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a local_time_type, its format information, and comments.\nFor std::chrono::duration, constructs as a time span from 00:00:00.\nConstructor (local_datetime) # basic_value(local_datetime_type x) basic_value(local_datetime_type x, local_date_format_info fmt) basic_value(local_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_datetime_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a local_datetime_type, its format information, and comments.\nConstructor (offset_datetime) # basic_value(offset_datetime_type x) basic_value(offset_datetime_type x, offset_date_format_info fmt) basic_value(offset_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt) basic_value(std::chrono::system_clock::time_point x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with an offset_datetime_type, its format information, and comments.\nFor std::chrono::system_clock::time_point, constructs for the pointed time.\nConstructor (array) # basic_value(array_type x) basic_value(array_type x, integer_format_info fmt) basic_value(array_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(array_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with an array, its format information, and comments.\narray-like types must meet the following criteria:\nHas T::iterator. Has T::value_type. Does not have T::key_type. Does not have T::mapped_type. Is not std::string. Is not std::string_view (since C++17). Constructor (table) # basic_value(table_type x) basic_value(table_type x, integer_format_info fmt) basic_value(table_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(table_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a table, its format information, and comments.\ntable-like types must meet the following criteria:\nHas T::iterator. Has T::value_type. Has T::key_type. Has T::mapped_type. Constructor (user-defined) # template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is defined */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is defined */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is not defined, but T{}.into_toml() exists */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is not defined, but T{}.into_toml() exists */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); If toml::into\u0026lt;T\u0026gt; is defined, constructs from the result of toml::into\u0026lt;T\u0026gt;(ud).\nIf toml::into\u0026lt;T\u0026gt; is not defined but T has a into_toml() member function, constructs from the result of ud.into_toml().\noperator=(basic_value) # basic_value\u0026amp; operator=(const basic_value\u0026amp; v) basic_value\u0026amp; operator=(basic_value\u0026amp;\u0026amp; v) template\u0026lt;typename TI\u0026gt; basic_value\u0026amp; operator=(basic_value\u0026lt;TI\u0026gt; other) Assigns the right-hand side basic_value to the current object.\noperator=(T) # template\u0026lt;typename T\u0026gt; basic_value\u0026amp; operator=(T x) Assigns a value corresponding to T.\nThe contents pointed to by source_location are discarded.\nIf the object already holds a value of the same type, the original format information is retained.\nis\u0026lt;T\u0026gt;() # bool is\u0026lt;T\u0026gt;() const noexcept Requirements # T must be an exact TOML type, meaning it corresponds to one of the toml::value::xxx_type.\nReturn Value # Returns true if the stored type matches T, otherwise returns false.\nis(toml::value_t) # bool is(toml::value_t t) const noexcept Return Value # Returns true if the tag of the stored type matches t, otherwise returns false.\nis_xxx() # bool is_boolean() const noexcept; bool is_integer() const noexcept; bool is_floating() const noexcept; bool is_string() const noexcept; bool is_offset_datetime() const noexcept; bool is_local_datetime() const noexcept; bool is_local_date() const noexcept; bool is_local_time() const noexcept; bool is_array() const noexcept; bool is_table() const noexcept; Return Value # Returns true if the stored type matches the corresponding type, otherwise returns false.\nis_empty() # bool is_empty() const noexcept; Return Value # Returns true if the object is default constructed and no value is assigned, otherwise returns false.\nis_array_of_tables() # bool is_array_of_tables() const noexcept; Return Value # Returns true if the stored type is an array that is not empty and all elements are tables, otherwise returns false.\ntype() # toml::value_t type() const noexcept Return Value # Returns the tag corresponding to the stored type.\nas_xxx() # boolean_type const\u0026amp; as_boolean () const; integer_type const\u0026amp; as_integer () const; floating_type const\u0026amp; as_floating () const; string_type const\u0026amp; as_string () const; offset_datetime_type const\u0026amp; as_offset_datetime() const; local_datetime_type const\u0026amp; as_local_datetime () const; local_date_type const\u0026amp; as_local_date () const; local_time_type const\u0026amp; as_local_time () const; array_type const\u0026amp; as_array () const; table_type const\u0026amp; as_table () const; boolean_type \u0026amp; as_boolean (); integer_type \u0026amp; as_integer (); floating_type \u0026amp; as_floating (); string_type \u0026amp; as_string (); offset_datetime_type\u0026amp; as_offset_datetime(); local_datetime_type \u0026amp; as_local_datetime (); local_date_type \u0026amp; as_local_date (); local_time_type \u0026amp; as_local_time (); array_type \u0026amp; as_array (); table_type \u0026amp; as_table (); Return Value # Returns a reference to the value of the specified type.\nException # Throws toml::type_error if the stored value\u0026rsquo;s type does not match the specified type.\nas_xxx(std::nothrow) # Invoke with a std::nothrow object.\nboolean_type const\u0026amp; as_boolean (const std::nothrow_t\u0026amp;) const noexcept; integer_type const\u0026amp; as_integer (const std::nothrow_t\u0026amp;) const noexcept; floating_type const\u0026amp; as_floating (const std::nothrow_t\u0026amp;) const noexcept; string_type const\u0026amp; as_string (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_type const\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_type const\u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) const noexcept; local_date_type const\u0026amp; as_local_date (const std::nothrow_t\u0026amp;) const noexcept; local_time_type const\u0026amp; as_local_time (const std::nothrow_t\u0026amp;) const noexcept; array_type const\u0026amp; as_array (const std::nothrow_t\u0026amp;) const noexcept; table_type const\u0026amp; as_table (const std::nothrow_t\u0026amp;) const noexcept; boolean_type \u0026amp; as_boolean (const std::nothrow_t\u0026amp;) noexcept; integer_type \u0026amp; as_integer (const std::nothrow_t\u0026amp;) noexcept; floating_type \u0026amp; as_floating (const std::nothrow_t\u0026amp;) noexcept; string_type \u0026amp; as_string (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_type\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) noexcept; local_datetime_type \u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) noexcept; local_date_type \u0026amp; as_local_date (const std::nothrow_t\u0026amp;) noexcept; local_time_type \u0026amp; as_local_time (const std::nothrow_t\u0026amp;) noexcept; array_type \u0026amp; as_array (const std::nothrow_t\u0026amp;) noexcept; table_type \u0026amp; as_table (const std::nothrow_t\u0026amp;) noexcept; Return Value # Returns a reference to the value of the specified type.\nNote # If the type of the stored value does not match the specified type, the behavior is undefined.\nas_xxx_fmt() # Accesses format information.\nboolean_format_info \u0026amp; as_boolean_fmt (); integer_format_info \u0026amp; as_integer_fmt (); floating_format_info \u0026amp; as_floating_fmt (); string_format_info \u0026amp; as_string_fmt (); offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(); local_datetime_format_info \u0026amp; as_local_datetime_fmt (); local_date_format_info \u0026amp; as_local_date_fmt (); local_time_format_info \u0026amp; as_local_time_fmt (); array_format_info \u0026amp; as_array_fmt (); table_format_info \u0026amp; as_table_fmt (); boolean_format_info const\u0026amp; as_boolean_fmt () const; integer_format_info const\u0026amp; as_integer_fmt () const; floating_format_info const\u0026amp; as_floating_fmt () const; string_format_info const\u0026amp; as_string_fmt () const; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt() const; local_datetime_format_info const\u0026amp; as_local_datetime_fmt () const; local_date_format_info const\u0026amp; as_local_date_fmt () const; local_time_format_info const\u0026amp; as_local_time_fmt () const; array_format_info const\u0026amp; as_array_fmt () const; table_format_info const\u0026amp; as_table_fmt () const; Return Value # Returns a reference to the structure holding the format information for the specified type.\nException # Throws toml::type_error if the stored value\u0026rsquo;s type does not match the specified type.\nas_xxx_fmt(std::nothrow) # Invoke with a std::nothrow object.\nboolean_format_info \u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) noexcept; integer_format_info \u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) noexcept; floating_format_info \u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) noexcept; string_format_info \u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) noexcept; local_datetime_format_info \u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) noexcept; local_date_format_info \u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) noexcept; local_time_format_info \u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) noexcept; array_format_info \u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) noexcept; table_format_info \u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) noexcept; boolean_format_info const\u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) const noexcept; integer_format_info const\u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) const noexcept; floating_format_info const\u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) const noexcept; string_format_info const\u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_format_info const\u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_date_format_info const\u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_time_format_info const\u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) const noexcept; array_format_info const\u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) const noexcept; table_format_info const\u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) const noexcept; Return Value # Returns a reference to the structure holding the format information for the specified type.\nNote # If the type of the stored value does not match the specified type, the behavior is undefined.\nat(key) # value_type\u0026amp; at(const key_type\u0026amp; key); value_type const\u0026amp; at(const key_type\u0026amp; key) const; Return Value # Casts the current value to a table and returns the element specified by key.\nException # Throws toml::type_error if the stored value is not a table.\nThrows std::out_of_range if the table does not contain the specified element.\noperator[](key) # value_type\u0026amp; operator[](const key_type\u0026amp; k); Return Value # Casts the current value to a table and returns a reference to the element specified by key.\nIf the element specified by key does not exist, it is default-constructed.\nException # Throws toml::type_error if the stored value is not a table.\ncount(key) # std::size_t count(const key_type\u0026amp; key) const; Return Value # Casts the current value to a table and returns 1 if the element corresponding to key is present, otherwise returns 0.\nException # Throws toml::type_error if the stored value is not a table.\ncontains(key) # bool contains(const key_type\u0026amp; key) const; Return Value # Casts the current value to a table and returns true if the element corresponding to key is present, otherwise returns false.\nException # Throws toml::type_error if the stored value is not a table.\nat(idx) # value_type\u0026amp; at(const std::size_t idx); value_type const\u0026amp; at(const std::size_t idx) const; Return Value # Casts the current value to an array and returns the element specified by idx.\nException # Throws toml::type_error if the stored value is not an array.\nThrows std::out_of_range if the specified element does not exist in the array.\noperator[](idx) # value_type\u0026amp; operator[](const std::size_t idx) noexcept; value_type const\u0026amp; operator[](const std::size_t idx) const noexcept; Return Value # Casts the current value to an array and returns a reference to the element specified by idx.\nNote # Performs no checks. Behavior is undefined if the stored value is not an array or if the specified element does not exist.\npush_back(value) # void push_back(const value_type\u0026amp; x); void push_back(value_type\u0026amp;\u0026amp; x); Casts the current value to an array and performs push_back on the array.\nReturn Value # None.\nException # Throws toml::type_error if the stored value is not an array.\nemplace_back(args...) # template\u0026lt;typename ... Ts\u0026gt; value_type\u0026amp; emplace_back(Ts\u0026amp;\u0026amp; ... args) Casts the current value to an array and performs emplace_back on the array.\nReturn Value # A reference to the constructed value.\nException # Throws toml::type_error if the stored value is not an array.\nsize() # std::size_t size() const; Return Value # Casts the current value to an array, string, or table and returns the number of elements. For a string, it returns the number of characters.\nException # Throws toml::type_error if the stored value is not an array, string, or table.\nlocation() # source_location location() const; Return Value # Returns a source_location object representing the position within the TOML document where the value is defined.\nIf the value was not constructed by parsing a TOML document, returns a source_location that points to nowhere.\ncomments() # comment_type const\u0026amp; comments() const noexcept; comment_type\u0026amp; comments() noexcept; Return Value # Returns a reference to the comment container.\nNon-Member Functions # operator== # template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); Two basic_value\u0026lt;T\u0026gt; instances are considered equal if they satisfy the following conditions:\nThe contained type is the same. The contained values are identical. The comments are identical at the byte level. operator!= # template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs == rhs); } operator\u0026lt; # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); Comparison order:\nTOML type If TOML types are the same, their values If both the TOML types and values are the same, the comments TOML types have the following order (from smallest to largest):\ntoml::value_t::empty toml::value_t::boolean toml::value_t::integer toml::value_t::floating toml::value_t::string toml::value_t::offset_datetime toml::value_t::local_datetime toml::value_t::local_date toml::value_t::local_time toml::value_t::array toml::value_t::table operator\u0026lt;= # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return (lhs \u0026lt; rhs) || (lhs == rhs); } operator\u0026gt; # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt;= rhs); } operator\u0026gt;= # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt; rhs); } toml::type_error # Exception thrown in case of a type error.\nContains the location information of the value that caused the type error.\nstruct type_error final : public ::toml::exception { public: type_error(std::string what_arg, source_location loc); ~type_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; toml::make_error_info # template\u0026lt;typename TC, typename ... Ts\u0026gt; error_info make_error_info( std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Calls location() on a basic_value, passes the resulting source_location to make_error_info to create an error_info.\nRefer to error_info for more details.\ntoml::format_error # template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Calls location() on a basic_value, passes the resulting source_location to format_error to create an error_info, then converts it to a string and returns it.\nRefer to error_info for more details.\nRelated # comments.hpp source_location.hpp types.hpp visit.hpp "},{"id":35,"href":"/toml11/docs/reference/version/","title":"version.hpp","section":"reference","content":" version.hpp # In version.hpp, macros related to the version information of toml11 are defined.\nMacros # TOML11_VERSION_MAJOR # The major version of toml11.\nTOML11_VERSION_MINOR # The minor version of toml11.\nTOML11_VERSION_PATCH # The patch version of toml11.\nFunction # license_notice # namespace toml { const char* license_notice() noexcept; } Returns the license notice.\nProvided for convenience when redistributing without source code.\n"},{"id":36,"href":"/toml11/docs/reference/visit/","title":"visit.hpp","section":"reference","content":" visit.hpp # In visit.hpp, toml::visit is defined.\ntoml::visit # Functions # namespace toml { template\u0026lt;typename Visitor, typename TC\u0026gt; /* Return value when Visitor is called with a value of basic_value\u0026lt;TC\u0026gt; */ visit(Visitor\u0026amp;\u0026amp; visitor, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename Visitor, typename TC\u0026gt; /* Return value when Visitor is called with a value of basic_value\u0026lt;TC\u0026gt; */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename Visitor, typename TC\u0026gt; /* Return value when Visitor is called with a value of basic_value\u0026lt;TC\u0026gt; */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); } toml::visit calls the overload of Visitor corresponding to the type held by basic_value\u0026lt;TC\u0026gt;, and returns the result.\nRequirements # Visitor must be a function or function object callable with any type held by basic_value\u0026lt;TC\u0026gt;.\nAdditionally, the return value must be consistent across all overloads.\nExample # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; struct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; int main() { toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating return 0; } Related # value.hpp "}] \ No newline at end of file diff --git a/en.search.min.e7ab81fec216a84e7867aed68f9e2cfd6aa651e1c426a7cf5a081f0dafb020fe.js b/en.search.min.e7ab81fec216a84e7867aed68f9e2cfd6aa651e1c426a7cf5a081f0dafb020fe.js new file mode 100644 index 00000000..289e69c0 --- /dev/null +++ b/en.search.min.e7ab81fec216a84e7867aed68f9e2cfd6aa651e1c426a7cf5a081f0dafb020fe.js @@ -0,0 +1 @@ +"use strict";(function(){const o="/toml11/en.search-data.min.5c6a72164a48e5edca6b426b12e1e46380fc2271ac8f3ba035ac66f01dee7956.json",i=Object.assign({cache:!0},{includeScore:!0,useExtendedSearch:!0,fieldNormWeight:1.5,threshold:.2,ignoreLocation:!0,keys:[{name:"title",weight:.7},{name:"content",weight:.3}]}),e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",a);function a(t){if(t.target.value!==void 0)return;if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!r(n))return;e.focus(),t.preventDefault()}function r(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,fetch(o).then(e=>e.json()).then(e=>{window.bookSearchIndex=new Fuse(e,i)}).then(()=>e.required=!1).then(s)}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value).slice(0,10);n.forEach(function(e){const n=c("
  • "),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.item.href,s.textContent=e.item.title,o.textContent=e.item.section,t.appendChild(n)})}function c(e){const t=document.createElement("div");return t.innerHTML=e,t.firstChild}})() \ No newline at end of file diff --git a/en/index.html b/en/index.html new file mode 100644 index 00000000..5b05163f --- /dev/null +++ b/en/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/ + \ No newline at end of file diff --git a/en/sitemap.xml b/en/sitemap.xml new file mode 100644 index 00000000..37b024f2 --- /dev/null +++ b/en/sitemap.xml @@ -0,0 +1 @@ +https://toruniina.github.io/toml11/docs/installation/https://toruniina.github.io/toml11/docs/features/https://toruniina.github.io/toml11/docs/reference/https://toruniina.github.io/toml11/docs/changelog/https://toruniina.github.io/toml11/docs/features/parsing_files/https://toruniina.github.io/toml11/docs/features/value/https://toruniina.github.io/toml11/docs/features/error_message/https://toruniina.github.io/toml11/docs/features/serialize/https://toruniina.github.io/toml11/docs/features/configure_types/https://toruniina.github.io/toml11/docs/features/literal/https://toruniina.github.io/toml11/docs/features/toml_spec/https://toruniina.github.io/toml11/docs/features/extension/https://toruniina.github.io/toml11/categories/https://toruniina.github.io/toml11/docs/reference/color/https://toruniina.github.io/toml11/docs/reference/comments/https://toruniina.github.io/toml11/docs/reference/conversion/https://toruniina.github.io/toml11/docs/reference/datetime/https://toruniina.github.io/toml11/docs/https://toruniina.github.io/toml11/docs/reference/error_info/https://toruniina.github.io/toml11/docs/reference/exception/https://toruniina.github.io/toml11/docs/reference/find/https://toruniina.github.io/toml11/docs/reference/format/https://toruniina.github.io/toml11/docs/reference/from/https://toruniina.github.io/toml11/docs/reference/get/https://toruniina.github.io/toml11/docs/reference/into/https://toruniina.github.io/toml11/https://toruniina.github.io/toml11/docs/reference/literal/https://toruniina.github.io/toml11/docs/reference/ordered_map/https://toruniina.github.io/toml11/docs/reference/parser/https://toruniina.github.io/toml11/docs/reference/result/https://toruniina.github.io/toml11/docs/reference/serializer/https://toruniina.github.io/toml11/docs/reference/source_location/https://toruniina.github.io/toml11/docs/reference/spec/https://toruniina.github.io/toml11/tags/https://toruniina.github.io/toml11/docs/reference/toml_fwd/https://toruniina.github.io/toml11/docs/reference/toml/https://toruniina.github.io/toml11/docs/reference/types/https://toruniina.github.io/toml11/docs/reference/value_t/https://toruniina.github.io/toml11/docs/reference/value/https://toruniina.github.io/toml11/docs/reference/version/https://toruniina.github.io/toml11/docs/reference/visit/ \ No newline at end of file diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..59c7c2a213cc1de508282f86d457b16426bf9c62 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC6Hgb%kP61PR}Fa?7&w?6|IB7% zUbBR!+>`asl_*Ar3-i?!3>X>I|1>Z#GR(7(Q*Z$4VZODzZo-MJr)7X_22WQ%mvv4F FO#mg08}a}E literal 0 HcmV?d00001 diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 00000000..a3c696de --- /dev/null +++ b/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/roboto-mono-v13-latin-regular.woff b/fonts/roboto-mono-v13-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f319fbfa46a9c546ad2b4f68e2b6f9267cdfc5d8 GIT binary patch literal 15160 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 literal 0 HcmV?d00001 diff --git a/fonts/roboto-mono-v13-latin-regular.woff2 b/fonts/roboto-mono-v13-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ed384d22fd9f566df41a3a37de9f614adc7f630b GIT binary patch literal 12312 zcmV+zFz3&APew8T0RR9105BK;4gdfE09Tv<0581&0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/fonts/roboto-v27-latin-700.woff b/fonts/roboto-v27-latin-700.woff new file mode 100644 index 0000000000000000000000000000000000000000..a5d98fc6202f5cf5fd8b556ca834e8e9dbaafac1 GIT binary patch literal 20396 zcmYg#V{|566YY~^Vsm2K#>BR5+twtR*tTs=Y}>YzCz#mA&HLT^L!~ zJ@~D|{6-$s2|bCin+qWT0P`IWAn_k)e19~VIhfl50I;Or8kTQ#>fd5lnj1QQ`@(5_ zYvBF|C;+Otji=eSX#xQ75CQ-;y^q3rx)vt39^YYtzBS)5K#&+&NH{D^4Zk%K_um}* ze|TS+*Rl8}0RTzbZ=3KNq_E@=vlg~4-@cME-)o2k0Dd45k4hcd*c*TAq`&6}^8C%i zlmeRfCxD%`8H zz{Z5m0$W#AS5sH*Sms#c==xKhU}{C)N|?Y{@bnfD6&Y3u;IST^0v1Q6i5lEfp>E6D zw9;&Ae|DT^eb!>T(cA_#;$*Y2fM^?KPONts9u-q}8P0HZQKg;kGoy?QIMnI06?xiR zVag~G=lk?GxAfWvi{%wwXh8Hi@yrMVO#ZgNo-`)#$Wdx^A{IhAoI8ek4!*L5rjOkI z*~QRG-pas^i_9jnBq*+dS5g@Amx_m?ljL!DKXnM4sRSj&T%e;M|DAdv$^j)b6jP$Z3Y!&fQ{L%mXo@ zX|axA=d8R^mbJS>x^5qQQQHc;L(ju3v6g5DCfRUUU5aUdE6d!i4DycJ<#GF$`aXwI z#;MFtmO&XN=}8P673acLQuatXqso)T53G1}uK1rHMgnjVL`<~J<;QMy!slomi{33z zX(sj_S>lwCl`p>y$wYrWh}qT4*){9gH9b`QjIW1Hx==PlJ`<&i-^8-6{r5S0XZc-u|6S%?=v~Q$Iu%(n9@Vo>{H4n%7wS3vBMN5ey!ihr ze`~u$M2$vdjYfvC&pVw_lgD4%kww+hX|c`Ldj8+#M1*amN<`#F>WA+@WotCqp;ZoH z*Qr&ZQeC#>&i$`krdP&MM~=&RIq1K&&*b9μ@r2h2zTF5D3Lz~+tNz*d0Io>VN^ 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

    2Y_o* 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 literal 0 HcmV?d00001 diff --git a/fonts/roboto-v27-latin-700.woff2 b/fonts/roboto-v27-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01d05fa509b7f91526cabe90c9bafa130e4c118a GIT binary patch literal 15828 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 Z@IjO83?{s=KqX^`zGvsj4^tdfk^ttt3T6NR literal 0 HcmV?d00001 diff --git a/fonts/roboto-v27-latin-regular.woff2 b/fonts/roboto-v27-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ebe1795f85a661c205e4a4612eaf47d56273e68e GIT binary patch literal 15688 zcmV-OJ-5PlPew8T0RR9106jb3IGy<5CJv1bO#^| zf=L@Qe--T5OMvr0fe?L;AR`gN#+fiScs(+Z+X1Oc`2FDjuL*LD(ZK!&YW5{ETh5SO zqFdHnbVu42vf3poBJzzUv8Ht=Ct0EhPjrjWV&I>W-uZbli(g}30fVog2nM+5U4y55 z`66580HFfYncd+IRc*f3Q$k;FZNiF9=E*BN1KURaBquKqk=_6Qud1$|+2;z;6ZB>wN#p>2oJ~*yKb{P3IX*@oSJke+0N+Rus;ZU!bCudQ6PB0H!owr4P@Jf z18@loBfEH-wB32&??oWG^Qkt%@{opQoBugoFm9}$tM1`(-TOx}rto+!PQAL;3yyS| zGdl9kXr&Jj)ZG480b1=I_~4#06D}Pnf%?>=FKZ>uNVW_I@{tz~>_gi}Wc$GD5MYN37b5J4I$*BTrEZgoxG1Ys zA;6Z+{!m)KpiUwj!h;i~E=8hR-@KwUjWKAH;^YVQlAsQUayW}Hvibk7s;=*X5^a%Y zr2o^0Eo+7iAX3C5k7?6LJ(B(qph_@}N@;EM!*?M*-9Wk(rj)YAnOdDQ?H=ZstyOk7 zybH03Au=;t|MfRNYo6KGa}t6`kRXFw>i@O-vAycYMY*?$d4fpDk+S@e+yDPeZaC z42EqfkFYS7Rhpw=mY%*I^VEHR?9{%V>O;v@X;sV{qWN-zd^M6F$5jlbYbb^wTTx5*J6}mnisZtNwyos?GIYGnfDfpe#25& zv4Q8B?biD|`!%mV;5&s1D>gT;Ht0y^bF*O4k{gzjt+s62vFo`P$zE@~wC|Mz?;ZKz zqfg1_Ui;#!Z^`!#{3t@adp3LPIWQhLoUfTD{LGlyEFTc~QEcz`=R&2Pcu;-6jU#NZS)nJ+pC{zPID!v8`cyvL@t)(+N4$F*9DDCG?k@t32xHyv?f4ob-&N$m($5{-;^;dr25V1r z>&HBJ&b^BP4#jkN^CO)Y!`V{SK>jemT+ODw5B<%oQ0yJ{h)!+a;+0Ii!P48^F8lhv(t3Z< zrr>Qh^?ek+6R-GVSn0sVyEqm~I@nI>D^5+Z8*`*$`)=OWnlJfRF-^`I9350g0TUndebR7HW^6oR2J*b|16Bnv^FI%Zl7tW!q zp%7V$q)1sPQC7;7ml}nrQ*K(6oi=5mLj~zletHx`pRzHaoXjc8Y0AWc^YmB=jS&fF z2zXF97tYjgB^+jEpjf_?nIGj)CYW9T9X`zvLN9_2pEgh-9aP9%ZOFW3Fe_(_%T240 z);tDzVgrlKsWzJ}FQDwz=JC=2w0D^Z?|lM)O{C0z2KoFXT!hQv#wC;&mU5F6C^#@D zL17drA2kZ2L19jD4i77_5N5(daD1O?4+QoZacMi?NwLW>AmT}J!2}T7 zY9xZBrxn5(&mxhh2^Pd?FPM1@6O}8R29^nu0K!b*=Ny3rFFE$oT<~GAAr+261hrv; zQ5fn|15px2$b>=R(D#a)u+sxZlhxK0CjHb=uW(ciS~q%kff2#l|S@*1g8}nE<8gVR6B*-QEbAi$;wZuhnK)@SI+fAyJY^Q|K5jy8;I4 z{^Uo!EUF-Z`PQih#0h!x_?|GBq3hq>LN5T$0NfF9BEW6$>RY-=BI4!WtZv5$5*n~qjxIxnOl5-y=QsR&Dx3U+ek$dqQu_)`4$ z&+Qj&)k1?VfRM7Qts`#*c#7=b4ECCD&V%0zUikuro_Ok+4V#J-+p=xPuIFALDfu1Y zdzY-#XJ35v&39#fkkc+tnKWxc*z-~%fE)GHbH%7i^ME7U0O8J7VnZBjU5&dcU?vUs z!jC66CifT8 zg`zKs-Np%_T>{4;D=*$0F^(0wx$#Y6cQ)Hn5m3^w=Qhiv8W0j%FQ5o_*I7(s zvmlGc* z`v0qUMbu@=4d7qE-roa9UkB91K>h}}^efuT2Z1AaAYkT1A#x1PR!p=4z$BXwZY*8J z&@zq5(wSn7VrodhqT6!ItPT_))iT0D?MhAf>4z#0DzCYr35BB=e9L{HXc$ruzQt5- z{PBRA^AVp0?*cB`@jQ=Cqrnhlds>_;FI!_;FA-&@Z(gye^yG{)tHb0(G6EHk@@Py-TLUu0_4?V{8!LC9TI8M(E3C1(;v?)3v5~=?7RS=b z(wf4_6tW-KWdc+B7aZF&t z0b?V<(8Vn?fB|qvFShwaLO`YhDz=j{FQ4N*T$)9@WdP+UH~lF0OB+P@=1 z&E!m*tq(D`3u9|Nm#Li$xHk*NeLd(IQQ$h%a8Wh5Z;t0=5Vg5g5{LHq0}_@ap~42Z zb}rSgu#RX)f@8Hlb;tM~-*iPop_+j5U6;6-`@*JJ6HPKjY0=}Y!eH$gH6#q=P{Tvv zShb!WjePKWV@NZF3Nlmw#2FF3f>@0RZ~o^ULKo6 zStC+2GM3+hmX(RX;M5#A+K&l&%hQrAo_Biq4x}j1@g|?qKEwoKTy3|Y)j{Q!?Vz_n z&(>H$A`&O|g8Rf+uv=-djmx83tj~0%|EjUqg5OViz{T*=|KFQ7=W(U!*lojKO|5(B zK?*1IsoG;v3T>dnrdpcU)l_M!9apL~9UmK*!wonDw4ss|fJ`?9kPEmu49<(nCCWQGHyI5>UgGgra@Fl(biwBt4$(*5VYkgZ8x zWZ39_(i1(c)_YFeMy{kr0(}7V=_8L$Tpr8q%&;5v1+1gHn^1i+c$2iNy}nu;O^4f9 zJAux7!ZD@13aoIl12t^)(1nnY_YdfBpTa|qLXMl%N_lnz+=%!Y8-x-DSCm2)D=Kl3 zCA~)>A5em=;b_S>d}eI7_l~&}c{?z0vIw>rqT?kjS;Mumo3_vDcqofN_^z|udGXu5n zEsKJvv7rq(6j(BjY|E2TlUlnu4&5eUMO_}aO8U-GRSfV)2%~G7+=`VgWwz~#=Ldwf zc(5(YS_LIJ^sv|%+SHwu%`MU$$<%ZJ$dsZ6UO(}x5jO$6{#k0OM+2*!TvJjjDyKY^ z#dcew^G38Hl0}V0vG?;~}XD|%1;OiTae`1SoSQz%PT+XufT;IWnkUfA@@7n?of;6t?IBgnMAC> z1Pwe?|1Q`NsO|b)pIP;a=NSgX{sOZezeb9nK~3P&?z@@(d$PO4-2S7mJ!0_M~&r7dnjp*dYh+{b< zev68&p8Kd|bWwQAKU84H#u_#wMgha}RupAi-lq&t*EO7unx8B^n(3Gu_?cb_u5E~Q)T7?YDEw%T~MB1WZy8~GI|&#ZUWwRcHV%j zz=*_+H?YO1mstGZ&)ceKgDesJP`$x61tOU$sc3YH0+N#~hQG$`rabNc0;2`BC2c~$ z4a*f_k{70td#mL6iNI_6ahbbio&1N|0ZUK>u_{jx)s8wIkkN!g_9T{B6yxcB0)xZ7 zZBC2gM}5)PT4)i(6=s-n{p?m%WvJFu667eU&r`UdC9YT&FsIeh8VSS|ID8x=D!H~V zPZEh*LM5o2i1cXSP>cIRZqoA786#Ax*HRlS(`xRkPHy{&pt*RvEtd)9!r}_%a8k!@ z-$Y$rqrzozITp7qNt`D6%jZ%$ruq9+_2-esVafqVxymHU|=WnvR8m7DCy zA;)Y0EB`-dA2ARRx+df~Hy$4j6}Wntavj$Qkivhau&pL%+jBk6;<(X1g)aJ0#*QDq zSuYXPv#9)TZ&3U|_FMkvf2&#*e*hd^Tt(T4Des}MM;_<&S`avQy z50JEZc&HCRGI14{ryQ}SzUYQSzGTQ3p5WEe3)Xn9v(@7j2!t%J3__GLmus3xXdHM~ z&R%jitiYdUv_muX+S*YmvsoaFBI49Zoe&yTb-zV<^>o+YE&c7#T-7dtHVZ^oYviZ; z!#_L z`}>P@N_9P{us%ByRo7J5(_dJ8Zh&l2)YFq+(BDHTMcKQDSX;OSx?0)0hSs@;Iv*cX zD(vY)_4ZOMgd^sbBOQJKS-J+fT06J}TUmGnx%~JPVJx3Sj4;j$Aw?#QoJ$HwHl|wi z%w6tln7dHy;ZYas6lHH(V4C0A`#d7cbX{vx7 ze;JTWO?Ea_QgJgd4fe2g_Kz*$T(9Pi%LiNam?HbNv(tv@mcfC>L_+ zPx6jYg_`6bEj!TCtv9vm|tf{S>z6|^R z3ZVL8BKRLyk`w5|fA;2951(B3&$t+QGF7r*BzOM*%NDSC ziIG@ennS9f6y~;;)IgL>t-!;T#uaCVb7PFm+{Xp!&r1s{?$)=TSgpSvv^!ZIWk6m! zMD6T;f<2x6ypFjtg2|%hq~zC(wAOUciqg&0nL^aRUTl|m1poiN*dZ1!U3<>Dw)=&B z^&Z^luSJbppEKef)xR@A)YWXf`&oK+v-qi%<0HwHo!ql5bvomiWF(>+Gv^4)}X#7!AQCLu0$rU0P zLn0-`6_K}!$Xlh95Vhxd+Gbt&fE-3<=nlCi_V8vV`SA}EKFxjyk~88&oAe(1>ps^{ z-?oI~cDV-*=gB{U z@PzJftREloO|uwyvyxg}udbE)90AHqt3q&cQ%U7Q0`YK-or)VT(>T+Ap74 z97|>S%KDv3kea#YHGXpR1o7c5mB?S=JEJ|Uf~?rhOPTMFegMrN+igycqqg?}4LSq&zT4}v@ythLG-0)qMd#Kd;Ifz{Yo4m614fo&m#{qU7 z(lvl}ry@4n+X0eR+wov6)k*JqVQ}FLK+;GZi=To`>}IB|BGD1FQCv@h8nlvYr5ee* z$8#XMKBFNfF}uhCRP=RQY?{!mWNG2lh9NlSf!Xe@?iqlj%@DVUv*D?I7g0ocf;P)^ z@7J4qPd;wmn8_wn3Q}w80ZB>l+{LN4Q%~?N>CS;(fz(-r{iMjY(e^}Zj9FPh9-7Gf zxhwzKw10{#SY)rYR%ERS8*pkd_hg$?SPKf8U3H@>dZJ`a_tj`Y zwFWu#aeU1KoUzEAQx&5y$7{HT2$h zw>Hm~vsI-9XIm>_Ar6k%{s+a%X|C{_1!=0EEw~&Rbf>ZOhjG@Y0d$M^+C<&>>+Z26 zl61Ic>t-k551HrR(Ay8mHOmDmu90l3)rZp5zS^vkE@~r?nz@p{o!(h(8p7^uG`vpC zyO};))Z5Tp*^w3J*^m(xdMhL7Y}`fM+N%aQv3x0aw&;4(*{1HyhxJJzR>{~kfW%G% zB=$i^n3DB*+7`GCkk2^9kAxs-cjwyEj^PX4XNQJ6p6QqU6GU9RFTOw<5TBsk(|W!l zG%YiPh5tCiRr^DFM0Aeh_}(lp4{ZcHFUcFr8;eVl9N|UMW;|s~3w#uw-@Ny5b1(E% z_^B61c_+D{ZY~o-Vpvcor>40e} z{RFI-Mw3D*&~Tt3FT-#$nr2;pV$Dhmp1XW?cS!DGuI$4>Y3;nmy2d(Tk#kQwA<6CI zGXI&+yyCI0TjP{|z&IRt4NN2^1Q!QeFr0`D^X@5^A28r&Kh;aRW4@HTw|YugY*o7~ zxhDo@nZUSyypW%{9an|U8UQHpSwF6KJ0H!s`xN&bAJIDIWPU!4w6 z;5|Aqwq)_jTeTlksHw&~B${LUN9U#?a^t-)Tigat?2|-y#-EMK{0E0TaJx--=jeP{ zP>F-8alCuUU2Nh?eB&9e8c`0W@{$(9tHD9)VB7`z)d8a&=K2E-ufT{P;w$Q_!BBt6 zzlUbf45}BspGv%%Rouv zJrXy5GNWO^9aeCYehVZ;#Kn1)_)FTs=>P>jTf5SA=u4ssF@$WdOhU9F_qfiamXN+m z-FI~ZBNO~(tf+jfhUQ(Sw+;PEVp`Vfj=O_W9D{ey&8;UtNp`(`CWzq9=^#>5C@U|V zhBfSl{8K`ZY3uZrq)1|Rcu59J_$p)J?W;>BExdG{G~BojvLv(hhG74~>bQ7Gb!PqD zDy42>RQ|Ddr2X2V)NEi>{?O6mJx|Ij&TlM@_HC4x_C7H;e$MrMS7CM`K8u+SkWc&3 zsqvKMx#yCoDfndT19Bg}4(VJwSlo6$-cR!Xq0GWeY#tL~03e^z5pk)E`2*!YQ%sDu z2gT>zs@$M>&rS9s0*k-)x7BFoO{FLH^BT1{qnaPYv%1Zx(?0d!!OL7;Z=S!oeKUU zovT`AUH_HTrQ^nR8Ze3K7`S=^?wrmPJ6?`+POd)S+l8aD$AP>AiHASye%3uANCfge z#J}UB7#aswDBQiQvkM9*-W+m#Z-BZDUna_IiN2R*%E}S}{T~Z@e1Ek2@XS z6ufI9Nu;S<+yPVfkJhT!KCfIE-@TxsYX6zJgYmf3GFQE?*6O&NJwD2>3+kG@O|hjI zj&%K;we?H%H|rnl18dyZ+3IaA@ExLNRS;5}#^f=A%wD)b6*#279u;2_+Bm+pEKC!7 zPT#KQoqm9hHke@Qz?M_(M%iX+q=;4r7!PpT-$tbaXLCD zGcGc}IU5Z(Y|l0O5Z_UF?@mX4aY;U@tUSDRWi{?hO+$W3O?`Xn+ITim`LDc+{Yx7W7NBfog zmttwx?zeUgo~^G5_H*&}i!RMfNQ*A@^YOul{wo~nJb^uL#C5*&#Lz&yIJT#|3wN&L zII(|);c2~?XSK-iTv-@%x4yf$V7)rw-W)k|(bdK^FEu|iJgz5oh@f7QWp1yb*2Nk= zm|t4lTuIUk6may;IO#6UsEl_89tLWDak{&y40Lg~p^)d}%_GD`VUDS*8`sw+J~Y@S zhHHNWO@DE&aN=(6E6C2wHA+_j&H8RgO!Wi07^goGK9bvJ0l6D%TG{D^lntxCcH}qaxA$^$ ze>QD0wH#=1C!7=@gqo}T(X%;iquoyIsYN&E#70C#;q6DNsBW0LFc)hJJ!OT%)7sXm zvh6`~&2~Tk5JMv_c-`xJ9tTDp`M=M_nf! zoC#}9TGDS6W9amvi9V!(T1U(EaCTOlNNAUR^xuc;%>VY;fuo(QdHn6sDaro~L?0_QdEe6R`A91-C<$xKbS}8#^7WS1%QHRJos3!atF!0N zAVUHYT=0IxQ2XG31iX`f3>093!C-89L8MHMfAZuEOAvQVA~7Z;E8d$9b?w}ooL|2& zHr#oE5N~W(Goy#5kb-==B0ZDiK_W+h`mKQHr;xPCrZL<@`$kJ1?5rzS+6~c-Ob<&d z2Mha@3`=`UVhU54*w&6!Q0o#l!@&ZlfR;+?{?+LSe7SU%AJ%4tovY~hM`l2h`bNQD z0?Ut^l0##AE@d66II>?lRUm;+@G?v<&3<-9@FHoFe6`OaQf70mGwr{?YBKm4gY&%yjUUC{g=`Gj7Njj+!9q;R` zZsmWa#;w%JvuxGHFFeZQsbsYM4mYx7%*b`ux1#s*P-FY^;mvK==$MR%NJ@;;B$oPd z{Bq)mvx>8U{jgi){a4^H@iA&-_*#8kn$3H|lJ+#i_y)^%E1q|INf0FlZx`vK0as6~ z8^Dwa9xE!YSy40R`N7oe+mZC=5tUT(EH7=FR2z4&nxB6*EkWsedHIuC%b@9kLa$58 zS{?5-E|gu#vkXQRvh%T(S^89WU+XRJnaj&=+MRMUx$m(*wePQukfvc`1&s2wsCa=` ziT9G~%=oiYMve8AwXDqwy>-3Ws3Y_5Hn}RoRl=$+D|qEr-IV6_fLOPQZOgLWC!yn) z++y(~5hj$Lr}R)0Vs1UOOkH%%_`>Vt!iKprbQmJ>RlxBgH}TBhdI|@4uQ61H`P*mzyTdQJ_Ef~Cg^^G~D0?M=gD^b12d!#9xc<5!K&mV4?^AMR>5U}4V587EV*H)M zzi*OOQT=Du3qYTTvpP(ZgTfw zaQzvcQVzjva(%OM$a|LN`u@89X11@K@#+%EdG47>-aZ-0LmBB)8R^!pN+zZ%%BIFa zCT1$C#^!QrFEf;F)@C=v9TU}B9c&fg;XIxY<=pJN(maa(OL0o6I)z;7B@j=oq*lfYczs!_z2SYM&Z!{QV3cCoXezu?W?m^i z6RXQt;|KIaTeDOWQX`_G{WhtagH{Y3MzI<)I1^`k<9>AM$?1z8;}kG7J$W%yP7fd- z)BVcS7FEEAm=a0w+oEoL=CG(5tfA}BI~Qj&XaV>GKsv#gZ>}-pq!i7+LPM3>i#~uUPg-Ew#!~C11r{J2m}Hge?^{jw0xX z#F}kpXBvkqD6NB_v+``qFr}h#5Nc~f&6E|x$HuNxis0jx=#}9Af6gQax#)uE{`US< zWM~?)JM(Z`oYgw6K&5)C$d{+zNZ2~BlANB^Sw%|k$wr2>G6&@wTUeVJ*x6cJ4TMM( ziWYLQLcC8cY>6qPs??;8<|0bZ`9`(7n=fu5va8i>PjX7QIJ+3?+u3KGwsAVg@L}}$ z)GQQ4tCg9gq-d7u6h?KXVLH>IOsoQarD&#vHza50G$fN3)a|ql46U`*HEgtVY_usy zr}mT;U&X)j`Ii0F(99?_rMxsJ{Y+l4am1KzJTBCrnxV=N8MxYacLqY zPz3)2a*Z&chUfiYWn6lkPSWyFvrrDr zcOpB~%!Mi^`|Ws;Zt~s%~M2 z)I;?Zt7YLgF?3te1;A|;aABc|c*sUoCY6{nbYb?2#>~mbC{9PEV*L&%JQuzLd3T$>fVhDRvAH&Cc;bj z2tN`)Dg=)Z;R+E3cc2Xa!Hf$huv~nif^R?AL-_}R?3eY|h$%C&+pTcrbeP5wGR8_Z zjkGbr6_~G?!yG4H6Zi68=VfP;QWZl&^;AEX^NJ{yyu9G(6>pLj0AAl;Yt=oP*_xLp zjbm11`<&7>wGZgzTd&tU^ z9yN2bo-C!`-puQjaGhGS{9pMh*nw4ZjO8~@pgs{$%x*ZZ7l4`PTh~IHi#MOG8Q+#Y zUu=iZ3jiBCo?ZmvvGYH83gi_i|9=Oci!Zl+t2wV67(btHd1E)M`T|g2S2Guo%g;uB z$nfxPZAeof>&fsE_m>(9o5#g-Vey8=m=6Z(k~z&&ITlDp1koqyC3=@fu`pe||L!o9LEiw9d?5-ybxERz zvuXc#1>y&YvctM*sVHNM?Fm}AekVU$j~D-X;*mj?F#xTpbu5q+F_scNfY_BdoOtTh zSh;)L<37gJ!cX$22~&e%Yr`E)LVQAYrxsSTbi1H{EXs8yqMVLu9U$6~;Jh=eOElj3 z&YsfkTADP=$xTXqTxeFHr^2pZ-@Ry&313)Gok#TyF)LyCzy~NvH-n2BIJ5HOM&0)7 zhZjxuga)(gKGvsD=T(p2?I=I(9e8hUludt+!{QN-N{3tCN?x%q8hIS|AFJ5*aaB6r zHnTyqm}+(nt%tLN(8yl&Zs@k|fzs-{sz-<00loh|2z#_0V>d%A zqppZDnX(ZhCSke&Xg%$9At!<*mpH~WYfcMbUR#Duz$g(jiS2`7XWDdmIAXpo+#$=A z?^Osh4N_{negmAAG;Pd{B_;*N6TlC^EfQOICF`A}nss5}%N`xNO<-Wkp8)VzY4Ats zju#aAd6I{`#uFcHCV_p~y(;!&U7d$U>U@hGgTNT~ph>g|0@J1J*B*Hg<(rtqv&~^Z zJYpn6KS|gqn3e;blyE<)c(r9&C?oGHyQG`#;034;1VJ(_zKY@ZXS4+nkQ2oj13^IL zRYr}hIeo^(=bzy3frgZd<%5Tb2Xi0vE$gcGkbQr!Ws4#%cxg6j5KF;ORtlBb(OzUZ zO3YD~0dQwJIB`aDCnnIk!Nh;4feFbF1O@%l;vx>O!RoDpLz+@B@4iKl!*j|iy%;rA zqJnj^OU0|z7b*fCMwIs|_D9loB*V=zI}m$CvWXr)-tsYgL^0rpncV}JrWN{L!$R?e zc65aBL`B(xl;oNwjLmAK57LcNYWz{DjTIZaFR_K~&!RzKV2rsGBP;&g!LTxB-eT9s z$$k4Ak8Fsa2!vaB7Hw@J>xU7@Fw<FJs4^<^(tBTo;3H1;g~N0I?*q;9N7=0$R!%9CJoVZK zF*a9hseMUi@lux3E0|!mg=e1XA)7Glh|TAjx)D+k!mMgD#`7T5N!MeY(72pl(K8a2 zPuRN5c;~Y|Q>o7zq`g1}r5VJ$Xa^l>LK+oF`uM|ZmxZktVm1}jVa0@6 zJGUaT=BaR|xnW{sGu8BfKq>{YpduGF+PvAT14OM6JM{<$SU;R1o$`oF6`G@C^1qw4 zIvkp@O;#4bg9@E>u}y}E#m`9gP|X`c|3Wr!H2W)g@m)EKN%R}Qs58^140ZZEa2(pS zbh`i}-wdYGYGY?sn9ttHNY8LIVoAynI8&FZoiBT8M~=mWvXTU3PyDfJ+L~$W6v4Kn zdQx7{bm+{=P<@aKs2=Gd|C=Miq+E*1O2MhX@Zva~n88r87l+K5O@n9PAl}^PS?8#T zOL$ZJ-hNj*tPY7mAj$%E#*U3nwk7GURGc-k_)~iI5SyZ7l5cQVrXNg3e*j5?fXe9} zVIYJYY_WMGP>I2iY2p+_;xE91Rhr2u2-l5Hvniz#SWTbCf|vF=jwe1s1t%A(q6nSY zWiC|-IO#|yzTWvW>ZS9T<^B5CGGr)NzoeiRTa;}xWx4g!J<8ScB8FtZno4LA-eiOG zr?@q>*ecmNJRlD`XG1b1Hk_bUZn0t&XZ(h*W+}KF}uiH zzh?&#J5=qS)j>gtd1ZmtZhTYNjRs;n2EYSZCGSz7$jl+NbB0XMc~;Po?n#WYI5)(|K@{w4CQ#v3vkc)Wx4!# z{9&eZnX`#OOC-y??sI!u7Z;oJ_w0oL`MvL8sWdFi8!LskXNzxzcSgIZ)mgJfhM_-K zyzec_#aWsePeq9hGKqmnvBcl{v1o;+0ENV+XYJ73N=XT`+dC*xW^n(alyIqJs7$h! z*A_i!v2zrinaFIijFI-W3;2109{j$|bv)!_Kv@>$>7-J-Hsop9w>S<(Pfi()b0=A& z?% zAKpmYxZ|@R&@H2O6__%6m!xqcdGQ#_x|ChTbF~Sr__~% zRN{zu=24f}8MP$ZbUna%_eBJq#1?7gw(@ws`dogvdAGaR&GVe{`BF5e0s?b>e}l}G zP><^>)I5nZqM!kqv>r_To*R3$57YDFX~BPH|DdZ-&KHGruDNX6A8~ZGN$n!Bso4cp z^MbiFYZeWo5tHa7hR+faL6Ol+NZ%fQ#5Y&vR;kDxRGnQ-brcmq->~`G{C;Q!d%lqN zD`303{V?y!cGd5`hZ{P~xf|WPL%m2*U)Oh!t*jSvjj=nK|C)nV#Coe*)(9*|{iG8) zn7POh`KeW-lL!lKtJ(2;QEsX5?#X1`u9U70Dyu{&2f$XCp2Rg(!YbX8!aPM3$X;Ad z+i$>na41~vhk4U&o9%y@{gT|MOz>T4mqm4o_u#%5g+aN_+H@QK>9eIWWfIIk8&`TV zL8PdCF~+Heg0GNgTOD*UaC2+N*GcZgu{gTDe#EJb*3TIg9X0C0*PH+nR$U@ zu@TAS3j9V+A+t(pu45~0J#^8NG{!>?;5o_<0=&g^c4J?OpP}st2A4UsXYd~)^Ab>4 zYZ*q_tE&FtcMfp3<8m)&G^)Cdv{Etg0nk*gAQzRp!Y-(0SHCzDOOsd%kK$hErA>P6TVTSoq z1I@GyWk#ik32s&m_4U2iho%nVjw?5*J^biCm)6jaxi?IWQ_c*Z`g9rnY3EiK${{_p z|C%(^WPjrJxgPzS^rvOu)7;&E&m+7UhyQ;0`m6gy;!ej4J&te6*Yfm?vh&*3;U-VQCn8B=m@0 z%pJ#8Dm%qw3o=V+p3&XBLtSx|)O(oAXzu+4UzT4&vLd^CydL9vIaVc6&R%62rJzNr z8fyAU;L=?7t)40`#4#1jYB%n?7il?PDnZ7O#wG$izt^%}C9j$%=oM_4jo+VdE9=&W zj!*GDzQ;4k;V;R0o)oK71p&8u+MkIR%Ohcs6q!-*6D_)_O~&x?=!hdjd~e@m-A(dA zXpn-M3#V#3L1TVN$`J|4S8}x1ZG`pA#v0ItqBUt0@8ZIPKo2!U^Mm~qlqrce!JfU@ z9d@W)A?6P)wAQ8@@eBuylYK|@6VS?!a7A>@Dw$^O2PCn!yG|;@Z9jq9T_11JM_f)E zFwj49NIxcU9*>SBwrIJ^f-J5#PS_{}*Gi?xk&1k6)pqXBouPCNADfc1jAI)@n z845~QZkSkuAM`$o$GGA%M$(-rjWF2*sO1HkJyo1X>u$-ztnnTz+b8i6`PjS^524+9 z5O;p8!Y4b@SqmRfqqfWyYk5VE+~Pg(xcnH8%8ziY9v5+XXK`iP`@nk<5m~Ga4G({MwVC zdoZpFHr==Fb7kAf>*4cQkyonAYV3k|DUi_DsZ=>>za>~VPnu+y>`dnbs^|#wtOth8 zTACplz#o>5O*STKsK_!abm%%s+R|To{xthfJ@G1KM`ahOT!&0DX6~wKe^bKNzNTY} zp|m|s3QeK0p`+lYv7kD`bb>28A5}$5VqQt)wqqb9^S<+bK2pt@@lDQ@P43_M$%h}m zL-ud?YxlX!$l~tC?nNU))!L=W{KJj-lvg6okER=?Pm%3? ze}VTrLs9b_RJsMlYREqEJ3a}niF~2$P}JB`;!Szb;(NVG~JKz91UKs6TMs~dU=Sh$#!Z9Gh1n(hhwJLgw7#4Y@uVcr~jm##CfzF zZct>-A5-a?+7UK1WI-c(ajALZt^ZL(MYL3vi2z{ooIsibFn>1(xU!OP+kHh4-mA1m zA@*u6m{IUPib6}!En80r9F|iUiSBr|U~nE5pjpmh6bN73h^m+%jVdXNCSQ!SaZY3@ z-?K$3-U>c!K;lrFCOg#nnHku>pq1}ZaO-oh9#g&;QBJ+TqXjkq;ENxZq5}MAod5Rg zn7`{g%9}*M4j6y{)+cS*0NA26i)Dpq zDn+ER#Aa0zHMI!WZ~aq4>NM0}0>GdU(%q{14S|#-G*J0k7d9bg|++YSoTeVHGQPvF0@f zROVj=by{E^G07taSs=5>TE-#MEN&p)3j_e>jm|8Fs-jsy zG*ga7Cvr_hKBJejPUNVv>7_2i5HgJCI7>H=XjTsY2??(neHH6iQRppe$8-88o6Gq0 z8Zv|<1Dd?K(c!>~ru=Jh+!505VgDn(Sz7!QBC~n#WD@$eJ5}^aybEU%K`uZmoHq_FebS#&(s=C)uV`U zh$y-Jj$NpDxj?d)82f+(I~589*a!m$)ehhxz-(a%8^48NI7Ah~%Y_Imj3gy(VH9B< z7nFkw22*k3r6Yi*`&^$FsJRM3ENlhpU6hEg1 zix5gt3}VJgPNd+BW5H_MN^Ds%WzHU+go2GGWpD>;*HJ>8;D`2{{E(AI1Cu9X^dONl zFnRFP#onA1`W%yCd5z+t#kpGUe.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?$.getFn:n,o=t.fieldNormWeight,c=void 0===o?$.fieldNormWeight:o;r(this,e),this.norm=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(F).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,m(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();m(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?$.getFn:r,o=n.fieldNormWeight,c=void 0===o?$.fieldNormWeight:o,a=new R({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(A)),a.setSources(t),a.create(),a}function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?$.distance:s,h=t.ignoreLocation,l=void 0===h?$.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}var W=32;function T(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?$.location:i,c=r.distance,a=void 0===c?$.distance:c,s=r.threshold,u=void 0===s?$.threshold:s,h=r.findAllMatches,l=void 0===h?$.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?$.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?$.includeMatches:v,y=r.ignoreLocation,p=void 0===y?$.ignoreLocation:y;if(t.length>W)throw new Error("Pattern length exceeds max of ".concat(W,"."));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,w=b,S=d>1||g,L=S?Array(M):[];(m=e.indexOf(t,w))>-1;){var _=N(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(_,x),w=m+k,S)for(var O=0;O=P;D-=1){var K=D-1,q=n[e.charAt(K)];if(S&&(L[K]=+!!q),z[D]=(z[D+1]<<1|1)&q,E&&(z[D]|=(j[D+1]|j[D])<<1|1|j[D+1]),z[D]&C&&(A=N(t,{errors:E,currentLocation:K,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=A,(w=K)<=b)break;P=Math.max(1,2*b-w)}}if(N(t,{errors:E+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;j=z}var B={isMatch:w>=0,score:Math.max(.001,A)};if(S){var J=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}(L,d);J.length?g&&(B.indices=J):B.isMatch=!1}return B}function z(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?$.location:o,a=i.threshold,s=void 0===a?$.threshold:a,u=i.distance,h=void 0===u?$.distance:u,l=i.includeMatches,f=void 0===l?$.includeMatches:l,d=i.findAllMatches,v=void 0===d?$.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?$.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?$.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?$.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:z(e),startIndex:t})},x=this.pattern.length;if(x>W){for(var w=0,S=x%W,L=x-S;w1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?$.location:c,s=o.threshold,u=void 0===s?$.threshold:s,h=o.distance,l=void 0===h?$.distance:h,f=o.includeMatches,d=void 0===f?$.includeMatches:f,v=o.findAllMatches,g=void 0===v?$.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?$.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?$.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?$.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new D(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(K),X=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(K),Y=[B,X,U,V,H,G,J,Q],Z=Y.length,ee=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,te=new Set([Q.type,X.type]),ne=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?$.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?$.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?$.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?$.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?$.findAllMatches:f,v=n.location,g=void 0===v?$.location:v,y=n.threshold,p=void 0===y?$.threshold:y,m=n.distance,k=void 0===m?$.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(ee).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n;return ue(e)||(e=he(e)),function e(n){var i=Object.keys(n),o=function(e){return!!e[ae]}(n);if(!o&&i.length>1&&!ue(n))return e(he(n));if(function(e){return!g(e)&&b(e)&&!ue(e)}(n)){var c=o?n[ae]:i[0],a=o?n[se]:n[c];if(!m(a))throw new Error(function(e){return"Invalid value for key ".concat(e)}(c));var s={keyId:C(c),pattern:a};return r&&(s.searcher=ie(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];g(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u}(e)}function fe(e,t){var n=e.matches;t.matches=[],x(n)&&n.forEach((function(e){if(x(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function de(e,t){t.score=e.score}var ve=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},$),i),this.options.useExtendedSearch,this._keyStore=new j(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof R))throw new Error("Incorrect 'index' type");this._myIndex=t||P(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{}).limit,n=void 0===t?-1:t,r=this.options,i=r.includeMatches,o=r.includeScore,c=r.shouldSort,a=r.sortFn,s=r.ignoreFieldNorm,u=m(e)?m(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return function(e,t){var n=t.ignoreFieldNorm,r=void 0===n?$.ignoreFieldNorm:n;e.forEach((function(e){var t=1;e.matches.forEach((function(e){var n=e.key,i=e.norm,o=e.score,c=n?n.weight:null;t*=Math.pow(0===o&&c?Number.EPSILON:o,(c||1)*(r?1:i))})),e.score=t}))}(u,{ignoreFieldNorm:s}),c&&u.sort(a),k(n)&&n>-1&&(u=u.slice(0,n)),function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?$.includeMatches:r,o=n.includeScore,c=void 0===o?$.includeScore:o,a=[];return i&&a.push(fe),c&&a.push(de),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}(u,this._docs,{includeMatches:i,includeScore:o})}},{key:"_searchStringList",value:function(e){var t=ie(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(x(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=le(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?$.getFn:n,i=t.fieldNormWeight,o=void 0===i?$.fieldNormWeight:i,c=e.keys,a=e.records,s=new R({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ve.config=$,function(){re.push.apply(re,arguments)}(ne),ve},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..6f509567 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ +Introduction | toml11 + +

    Introduction +

    Introduction +#

    日本語版はこちら

    Installation +#

    This section describes how to build and install toml11.

    Features +#

    This section describes how to use toml11’s features with examples.

    Reference +#

    This section details toml11 functions and classes.

    ChangeLog +#

    This section describes changes from release to release.

    \ No newline at end of file diff --git a/index.xml b/index.xml new file mode 100644 index 00000000..75f9de15 --- /dev/null +++ b/index.xml @@ -0,0 +1,80 @@ +Introduction on toml11https://toruniina.github.io/toml11/Recent content in Introduction on toml11Hugoenparsing fileshttps://toruniina.github.io/toml11/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/parsing_files/Parsing Files and Strings # In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse. +Upon success, these functions return a toml::value. Although the parsed file is always a table, the return type is not toml::table. This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map&lt;std::string, toml::value&gt;. To include metadata, a toml::value is returned instead of a toml::table. The toml::value corresponding to the root of the file will always hold a table_type.getting valueshttps://toruniina.github.io/toml11/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/value/Retrieving Values # This section explains how to access the values stored in toml::value. +Accessing Values Using Member Functions # is_something and as_something # toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value. +Additionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type. +For a complete list, refer to the toml::value reference.error messagehttps://toruniina.github.io/toml11/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/error_message/Outputting Error Messages # toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get&lt;T&gt;/find&lt;T&gt;, and as_integer(), among others. +For instance, if a syntax error in an integer is detected during parsing, an error message might look like this: +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 Or, if a type different from the one actually stored is requested:serializing valueshttps://toruniina.github.io/toml11/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/serialize/Outputting TOML Files # Using toml::format, you can convert a toml::value to a string. +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If the toml::value contains a table_type, it is interpreted as the root table of the file. +If a toml::value containing anything other than table_type is passed, only that value is formatted.configuring typeshttps://toruniina.github.io/toml11/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/configure_types/Customizing Types # The toml::value class uses std::int64_t for integer_type and std::unordered_map&lt;key_type, value_type&gt; for table_type. +However, in some cases, you may want to use boost::multiprecision::int128_t or std::map. +To accommodate this, toml::value is implemented with template parameters that allow you to change the stored types. +Just as std::string is actually an alias for std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt;, toml::value is an alias for toml::basic_value&lt;toml::type_config&gt;. +Here, we will explain the types contained in toml::type_config and how to define a different config type.toml literalhttps://toruniina.github.io/toml11/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/literal/_toml Literal # With the &quot;&quot;_toml literal, you can format TOML files inline. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } When including line breaks, raw string literals come in handy. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If a value is written on its own, that value is returned.toml spechttps://toruniina.github.io/toml11/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/toml_spec/TOML Language Version # You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec. +Specifying TOML Version # You can construct a toml::spec from toml::semantic_version. +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } However, to make this shorter, the toml::spec::v() function is provided. +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } If not specified explicitly, toml::spec::default_version() is used to construct with default values.extensionhttps://toruniina.github.io/toml11/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/extension/TOML Language Extensions # The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0. +Among the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all. +In toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future.color.hpphttps://toruniina.github.io/toml11/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/color/color.hpp # In color.hpp, functions related to colorizing error messages are defined. +Colors are specified using ANSI escape code. In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read. +Macros # TOML11_COLORIZE_ERROR_MESSAGE If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default. +If not defined, colors are not applied by default. You need to specify them using toml::color::enable().comments.hpphttps://toruniina.github.io/toml11/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/comments/comments.hpp # In comments.hpp, comment containers are provided. +toml::preserve_comments # preserve_comments is a container that preserves comments. +It has all the member functions of std::vector&lt;std::string&gt;. +Comments are preserved as std::string. If the comment does not start with #, it will be prefixed with # during output. However, this prefixing is not done when adding comments to the container. +Spaces are not automatically added, so if you want a space immediately after #, either start the comment with a space or pass the comment with #.conversion.hpphttps://toruniina.github.io/toml11/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/conversion/ conversion.hpp # Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find. +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) Example # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) Related # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/datetime/datetime.hpp # Defines a class that stores date and time information used in TOML&rsquo;s datetime. +enum class month_t # Enum class to specify months. +Due to its relationship with std::tm, local_date treats January as 0. To avoid confusion, month_t allows specification of months by their names. +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # local_date holds a date.error_info.hpphttps://toruniina.github.io/toml11/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/error_info/error_info.hpp # In error_info.hpp, definitions for error_info and functions to format it are provided. +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename .exception.hpphttps://toruniina.github.io/toml11/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/exception/exception.hpp # toml::exception # Base class for exception types defined in toml11. +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml Member Functions # Destructor # virtual ~exception() noexcept override = default; Override when derived. +what # virtual const char* what() const noexcept override {return &#34;&#34;;} Returns the error message.find.hpphttps://toruniina.github.io/toml11/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/find/find.hpp # This function searches for a value in a toml::value and performs type conversion if necessary. +toml::value can change the type it stores, and toml::find accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.format.hpphttps://toruniina.github.io/toml11/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/format/format.hpp # Defines structures and enumerations related to formatting information for toml::value. +indent_char # An enumeration representing the indentation character choice. +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); Choosing none means no indentation is used, regardless of the value in super tables. +If both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.from.hpphttps://toruniina.github.io/toml11/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/from/from.hpp # Defines a struct used for conversion from toml::value in toml::get and toml::find. +You can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct from; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.get.hpphttps://toruniina.github.io/toml11/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/get/get.hpp # These are functions for extracting values from toml::value and performing type conversions if necessary. +toml::value can change the type it stores, and toml::get accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::get&lt;T&gt; # Overview # Generally, toml::get behaves as follows: You specify T as in toml::get&lt;int&gt;(v).into.hpphttps://toruniina.github.io/toml11/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/into/into.hpp # Defines a struct used for conversion from user-defined types into toml::value constructors. +You can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct into; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.literal.hpphttps://toruniina.github.io/toml11/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/literal/literal.hpp # In literal.hpp, the _toml literal is defined. +The _toml literal parses string literals into toml::value. +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // Available in C++20 and later } // toml_literals } // literals } // toml Free Functions # operator&quot;&quot; _toml(const char*) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); Converts a string literal into a toml::value by parsing it.ordered_map.hpphttps://toruniina.github.io/toml11/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/ordered_map/ordered_map.hpp # Defines toml::ordered_map, which is used to maintain the order of values in a file. +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order. +As a linear container, searches require O(n) time relative to the number of elements.parser.hpphttps://toruniina.github.io/toml11/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/parser/parser.hpp # Defines functions for parsing files or strings and the exceptions they use. +While parse throws an exception on failure, try_parse returns error information. +parse # Parses the content of a given file and returns a toml::basic_value. +In case of failure, toml::syntax_error is thrown. +The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec. +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } Parses the content of the given filename.result.hpphttps://toruniina.github.io/toml11/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/result/result.hpp # result.hpp defines the result type, which can hold either a success value or a failure value. +This is used as the return type for toml::try_parse, which does not throw exceptions. +success # A type that holds a success value. +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } Member Types # using value_type = T; The type of the success value.serializer.hpphttps://toruniina.github.io/toml11/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/serializer/serializer.hpp # format # Serializes the data. +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } If there&rsquo;s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.source_location.hpphttps://toruniina.github.io/toml11/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/source_location/source_location.hpp # source_location.hpp defines a class representing a specific area within a TOML file. +This class is used to represent problematic areas in error messages. +toml::source_location # source_location is a class representing a specific area within a TOML file. +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/spec/spec.hpp # spec.hpp defines classes for specifying the version of TOML. +toml::semantic_version # semantic_version is a class that stores version information. +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml Member Functions # Constructor # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a semantic_version instance with the specified major, minor, and patch version numbers.toml_fwd.hpphttps://toruniina.github.io/toml11/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions. +When only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time. +Since this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value&lt;toml::type_config&gt;::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value. This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.toml.hpphttps://toruniina.github.io/toml11/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml/toml.hpp # toml.hpp includes all other headers. +This allows access to all features of toml11. +This header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${toml11_include_dir}/toml11/.types.hpphttps://toruniina.github.io/toml11/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/types/types.hpp # This document defines classes that specifies type information. +type_config # type_config is a type that encapsulates parameters given to toml::basic_value. +When using different types within toml::basic_value&lt;T&gt;, you need to define and pass this type separately. All elements listed are required. +If you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float. +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static Member Functions # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); If you use a type as integer_type that cannot utilize standard stream operators, implement this function.value_t.hpphttps://toruniina.github.io/toml11/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value_t/value_t.hpp # value_t # value_t is used to handle the type information of toml::value. +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml Non-member Functions # Stream Operator # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); Outputs the string representation of the value_t to the stream.value.hpphttps://toruniina.github.io/toml11/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value/value.hpp # value.hpp defines basic_value. +toml::basic_value # basic_value is a class that stores TOML values. +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // Defined in types.hpp // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml Member Types # The following member types are defined.version.hpphttps://toruniina.github.io/toml11/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/version/version.hpp # In version.hpp, macros related to the version information of toml11 are defined. +Macros # TOML11_VERSION_MAJOR # The major version of toml11. +TOML11_VERSION_MINOR # The minor version of toml11. +TOML11_VERSION_PATCH # The patch version of toml11. +Function # license_notice # namespace toml { const char* license_notice() noexcept; } Returns the license notice. +Provided for convenience when redistributing without source code.visit.hpphttps://toruniina.github.io/toml11/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/visit/visit.hpp # In visit.hpp, toml::visit is defined. +toml::visit # Functions # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v); } toml::visit calls the overload of Visitor corresponding to the type held by basic_value&lt;TC&gt;, and returns the result. \ No newline at end of file diff --git a/ja.search-data.min.83426ddf6d79ea74181b57b08534ec3026592726e7d464122af519b655214a67.json b/ja.search-data.min.83426ddf6d79ea74181b57b08534ec3026592726e7d464122af519b655214a67.json new file mode 100644 index 00000000..9a74e12e --- /dev/null +++ b/ja.search-data.min.83426ddf6d79ea74181b57b08534ec3026592726e7d464122af519b655214a67.json @@ -0,0 +1 @@ +[{"id":0,"href":"/toml11/ja/docs/installation/","title":"installation","section":"Docs","content":" installation # single_includeを使用する # single_include/toml.hppは、toml11が持つ全ての機能を単一のファイルにまとめたシングルファイル・ヘッダオンリーライブラリです。\nこれをINCLUDE_PATHが通っている箇所にコピーして#include \u0026lt;toml.hpp\u0026gt;とするのが最も単純な使用方法です。\nMITライセンスの許諾表示はコメントとtoml:license_notice()関数の両方に含まれます。 ソースコードを公開せずに再頒布する場合は、toml11のライセンスファイルをコピーして同梱するか、この関数を呼び出せるようにしておいてください。\ntoml11をクローンし、cmakeを使って使用する # toml11をgit submoduleなどによって自身のレポジトリ下に配置した場合、cmakeを使用している場合はadd_subdirectory(toml11)のようにすることで使用可能になります。\nadd_subdirectory(toml11) add_executable(main main.cpp) target_link_libraries(main PUBLIC toml11::toml11) toml11は自身がルートプロジェクトのときのみ、テストとインストールを行います。\ncmakeを使用してインストールする # toml11をクローンしたのち、cmakeを使ってインストールすることができます。\n$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --install ./build/ --prefix=/opt/toml11 インストールの前にテストプログラムを実行する際は、最初に-DTOML11_BUILD_TESTS=ONを設定してください。\nインストールが完了すれば、以下のようにして使用できます。\nfind_package(toml11) add_executable(main main.cpp) target_link_libraries(main PRIVATE toml11::toml11) cmakeを使用してコンパイルし、静的ライブラリを作成する # cmakeの実行時に-DTOML11_PRECOMPILE=ONを定義することで、toml11の関数のうちコンパイルできるものを先にコンパイルして、全体のコンパイル時間を短縮することができます。\n$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON ライブラリをリンクする場合は、CMakeで\ntarget_link_libraries(your_target PUBLIC toml11::toml11) とするか、ヘッダ内の関数のinline化を避けるためにコンパイラに-DTOML11_COMPILE_SOURCESを渡してください。\nただし、toml11は複数のC++バージョンに対応するため、__cplusplusの値などによって型を切り替えることがあります。 そのため、ビルドした際のバージョンと使用時のバージョンが異なる場合、リンクに失敗する可能性があります。 問題が生じた場合はCMAKE_CXX_STANDARDによって必要なバージョンを設定してコンパイルしてください。 それが難しい場合は、通常通りヘッダオンリーライブラリとして使用してください。\nfind_package(toml11)によってTOML11_INCLUDE_DIRが定義されます。 コンパイル済みライブラリとしてインストールした場合でも、 TOML11_INCLUDE_DIR を include_directories に追加した上で target_link_libraries を 使用しないようにすれば、ヘッダオンリーライブラリとして使用可能です。\nfind_package(toml11) add_executable(main main.cpp) # インクルードのみ可能にし、リンクを行わない target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR}) examplesをコンパイルする # -DTOML11_BUILD_EXAMPLES=ONとすることで、examples/をコンパイルできます。\n$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON $ cmake --build ./build/ examplesの実行バイナリはexamples/に生成されます。\nテストを実行する # テストをビルドするためには、-DTOML11_BUILD_TESTS=ONとします。\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --build ./build/ $ ctest --test_dir ./build/ toml-lang/toml-testsを実行するには、-DTOML11_BUILD_TOML_TESTS=ONとします。 すると、tests/にtoml11_decoderとtoml11_encoderがビルドされます。\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON $ cmake --build ./build/ $ ctest --test_dir ./build/ "},{"id":1,"href":"/toml11/ja/docs/features/","title":"features","section":"Docs","content":" features # ここでは、toml11が提供する主な機能について、例を挙げながら説明します。\nファイル・文字列をパースする # ファイルや文字列をパースする関数と、それが出力するエラーの扱い方について説明します。\n以下の内容を含みます。\nファイルをパースする 文字列をパースする バイト列をパースする 例外を投げずにファイルをパースする 例外を投げずに文字列をパースする 例外を投げずにバイト列をパースする toml::valueから値を取り出す # toml::valueが持つデータの型を調べ、取り出す方法、型変換を行う方法について説明します。\n以下の内容を含みます。\nメンバ関数を使って値の型を調べる メンバ関数を使って値にアクセスする コメントにアクセスする インラインテーブル・ドットキーの取り扱い 日付情報の取り扱い toml::get\u0026lt;T\u0026gt;を使って変換する toml::get_orを使って失敗時の値を指定する toml::find\u0026lt;T\u0026gt;を使って検索と変換を行う toml::find_orを使って失敗時の値を指定する ユーザー定義型との変換を定義する toml::visitで関数を適用する toml::valueを構築する エラーメッセージを作る # toml::valueの値を使って、TOMLファイル中の位置情報つきのエラーメッセージを生成する方法について説明します。\n以下の内容を含みます。\ntoml::value の位置情報を取り出す エラーメッセージを構築する 出力に色を付ける TOMLファイルを出力する # toml::valueの値をフォーマットする方法と、可能なフォーマット指定について説明します。\n以下の内容を含みます。\ntoml::valueの値ごとにフォーマットを指定する toml::valueをフォーマットして文字列化する toml::valueの型を変更する # toml::valueが格納する型(integer_typeやtable_typeをカスタマイズする方法について説明します。\n以下の内容を含みます。\ntype_configの定義 ordered_type_configを使用する コメントを保存しないようにする std::dequeなどの異なるコンテナを使用する boost::multiprecisionなどの異なる数値型を使用する TOMLリテラル # C++内にTOMLファイルを埋め込むための_tomlリテラルについて説明します。\n以下の内容を含みます。\nTOMLリテラルを使用する TOML言語バージョン # toml11がサポートするTOML言語のバージョン、主にTOML-v1.1.0で追加された言語機能を制御する方法について説明します。\n以下の内容を含みます。\nTOML言語の1.1.0を使用する TOML言語の1.1.0の一部の機能のみ使用する TOML言語拡張 # toml11独自のTOML言語拡張について説明します。\n以下の内容を含みます。\nnull をサポートする 浮動小数点数の16進数フォーマットをサポートする 数値に単位を付けられるようにする "},{"id":2,"href":"/toml11/ja/docs/reference/","title":"reference","section":"Docs","content":" Reference # 以下では、toml11が公開するクラスと関数の効果を説明します。\nディレクトリ構造 # toml.hpp と toml_fwd.hpp は ${TOML11_INCLUDE_DIR} にあります。 他のファイルは、${TOML11_INCLUDE_DIR}/toml11 にあります。\nもし各機能のファイルを個別に #include したい場合は、 #include \u0026lt;toml11/color.hpp\u0026gt; としてください。 全てを一度に #include する場合は、 #include \u0026lt;toml.hpp\u0026gt; としてください。\ncolor.hpp # エラーメッセージの色付けに関する関数を定義します。\ncomments.hpp # コメントを持つpreserve_comment型とdiscard_comment型を定義します。\nconversion.hpp # toml::valueとユーザー定義クラスを自動的に変換するマクロを定義します。\ndatetime.hpp # 日時情報を持つクラスを定義します。\nerror_info.hpp # エラー情報を持つクラスを定義します。\nexception.hpp # toml11で使用される例外の基底クラス、toml::exceptionを定義します。\nfind.hpp # 値を探し変換するtoml::find関数を定義します。\nformat.hpp # 値のフォーマット情報を持つクラスを定義します。\nfrom.hpp # ユーザー定義型を変換するためのfrom\u0026lt;T\u0026gt;型の前方宣言です。\nget.hpp # toml::valueの値を取り出し変換するtoml::get\u0026lt;T\u0026gt;関数を定義します。\ninto.hpp # ユーザー定義型を変換するためのinto\u0026lt;T\u0026gt;型の前方宣言です。\nliteral.hpp # operator\u0026quot;\u0026quot; _tomlリテラルを定義します。\nordered_map.hpp # toml::ordered_mapを定義します。\nparser.hpp # ファイルまたは文字列をパースする関数を定義します。\nresult.hpp # 他の関数の返り値として使われる、成功値または失敗値を持つresult\u0026lt;T, E\u0026gt;型を定義します。\nserializer.hpp # シリアライズに用いるtoml::format関数とtoml::serializerを定義します。\nsource_location.hpp # エラー情報に用いられる、ファイル内のある領域を指すsource_location型を定義します。\nspec.hpp # TOML言語のバージョン情報と機能フラグを制御する、toml::semantic_version型とtoml::spec型を定義します。\ntoml.hpp # toml.hppは、他の全てのヘッダを include します。 toml11の全機能が使用可能になります。\ntoml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。\ntypes.hpp # toml::valueの持つ型を制御するためのtoml::type_config型を定義します。\nvalue.hpp # toml::value型を定義します。\nvalue_t.hpp # 列挙型toml::value_tを定義します。\nversion.hpp # toml11のバージョン情報を定義します。\nvisit.hpp # toml::valueの持つ値に関数を適用するtoml::visit関数を定義します。\n備考 # ここで明記されない関数(主にnamespace toml::detailやnamespace toml::cxx以下に定義されるもの)は、 ソースコードを見ることで利用可能ではあるものの、そのインターフェースは今後のいかなるバージョンアップでも(パッチバージョンアップを含む)維持される保証はありません。\n"},{"id":3,"href":"/toml11/ja/docs/changelog/","title":"changelog","section":"Docs","content":" Change Log # v4.1.0 # Added # std::get\u0026lt;std::u8string\u0026gt;をサポート toml::value(std::u8string)をサポート string_type = std::u8stringをサポート operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, toml::value)をサポート toml::integer_formatに、16進数表示で大文字を使うことを指定するbool uppercaseを追加 templateを使って実装された into_toml() をサポート (by 萧迩珀) Fixed # Windowsで\\r\\nが改行に使われた際、出力時に\\rが重複する問題を修正 (by Andreas Keller) Changed # CIで複数コアを使うことでビルドを高速化 v4.0.3 # Fixed # toml_fwd.hppを使用した際にデフォルト引数が重複する問題を修正 toml::valueを複数渡した際にtoml::make_error_infoが使えない問題を修正 std::reference_wrapperを持つtoml::resultをコピー・ムーブする際の問題を修正 hugoの最新版でドキュメントがビルドできない問題を修正 コンパイラによる軽微な警告を多数修正 CMakeの互換性に関する警告を抑制 Changed # CIビルドで-Werror, /WXを追加 CIビルドでMSVCのwarningレベルを/W3から/W4に変更 READMEでより多くの機能を紹介するよう更新 v4.0.2 # Fixed # parse(FILE*) 内の fread の結果をチェック toml11/version.hppのマクロを修正 コンパイルオプションに関するドキュメントの更新 ファイルオープンモードに関するドキュメントの更新 Changed # CMakeLists.txt内のバージョン番号をversion.hppから取得するように変更 v4.0.1 # Fixed # sematic_version::{major, minor} と \u0026lt;sys/sysmacro.h\u0026gt; 内で定義されるマクロの衝突を解消 discard_comments の operator\u0026lt;\u0026lt; の定義を修正 (by Egor Pugin) format_locationを使用した際に最初の空行が出ない問題を解決 改行文字のみを含む行を指すsource_locationでエラーメッセージを生成した際に、同じ行が二回表示される問題を解決 README.md内のリンクを修正 example/unicodeのREADMEのタイトルを修正 Added # mainに変更があったとき、single_include/toml.hppを自動生成するようCIを設定 v3からv4への変化 # 破壊的変更 # toml::basic_valueのtemplate引数を変更 # toml11 v3では、toml::basic_valueはコメントコンテナ、テーブル型コンテナ、配列型コンテナをそれぞれ取っていました。\ntemplate\u0026lt;typename Comment, template\u0026lt;typename ...\u0026gt; class Table = std::unordered_map, template\u0026lt;typename ...\u0026gt; class Array = std::vector\u0026gt; class basic_value; ですが、integer_typeなどを変更したいという場合にはこれでは対応できません。\ntoml11 v4では、toml::basic_valueは単一のTypeConfigを受け取り、より多くの型を変更可能にします。\ntemplate\u0026lt;typename TypeConfig\u0026gt; class basic_value; デフォルトではtoml::valueが格納する型は変わりません。\n型を変更する際は、 type_config を参照してください。\ntoml::basic_valueのstd::initializer_listサポートを削除 # toml11 v3では、 toml::value に std::initializer_list を取るオーバーロードが用意されていました。\nこれにより、 toml::value を配列やテーブルで初期化する際により直観的な書き方が可能でした。\n// toml11 v3 toml::value v{1,2,3,4,5}; toml::value v{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }; しかし、これは同時に以下のような問題を引き起こしました。\n一つ目は、1要素の配列と通常の値の区別がつかず、常に配列になってしまうことです。\n// toml11 v3 toml::value v{1}; // 1 ではなく [1,] になってしまう 統一初期化記法が普及した現在、これは非常に不便です。\n二つ目は、値が全て文字列のテーブルと、ネストされた配列の区別がつかないことです。\n// toml11 v3 toml::value v{ {\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;} }; // {a = \u0026#34;foo\u0026#34;, b = \u0026#34;bar\u0026#34;} // [[\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;], [\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;]] // のどちらでもあり得る これらの問題は言語仕様上解決が困難です。\ntoml11 v4では、混乱を避けるため、std::initializer_listサポートを削除しました。\ntoml::value を配列で初期化する際はexplicitに toml::array を、 テーブルで初期化する際はexplicitに toml::table を指定する必要があります。\n// toml11 v4 toml::value v(toml::array{1,2,3,4,5}); toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }); toml::value v{toml::array{1}}; // [1,] toml::value v{1} // 1 toml::value v{toml::table{{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; toml::value v{toml::array{toml::array{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, toml::array{\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; これにより toml::value をテーブルや配列で初期化する際に少し不便になりますが、 explicitに型情報を記述することにより予測不能な値になることは避けることができます。\ntoml::basic_value::is_uninitialized() を is_empty() に変更 # toml11 v3では、初期化されていない basic_value かどうかを判定する関数は is_uninitialized でした。\nしかし、toml11 v4では言語拡張で null をサポートするため、意図的に空にされた値が構築される可能性があります。 なので命名を変更し、 is_empty としました。\ntoml::string を廃止、フォーマット情報を陽に格納 # toml11 v3では、文字列が basic か literal かの情報を保持するため、 格納する文字列型に toml::string という std::string の薄いラッパーを使用していました。\n// toml11 v3 namespace toml { enum class string_t : std::uint8_t { basic = 0, literal = 1, }; struct string { string_t kind; std::string str; }; } // toml toml11 v4では、数値型の基数や配列を複数行にするかどうかなどのより多くのフォーマット情報を持たせるため、 全ての型に xxx_format 型を用意し、値とペアで格納することにしました。\n// toml11 v4 enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; これにより、より細かいフォーマット情報を保持することができるようになり、 特に数値型や配列、テーブル型のフォーマット情報がパース後も維持できるようになりました。\ntoml::formatの引数を変更 # toml11 v3では、 toml::format が数値型の精度や幅などの値を受け取っていました。\nしかし、これでは細かなフォーマット指定ができず、予想したようなファイルにシリアライズできませんでした。\ntoml11 v4では、各 toml::value にそれぞれのフォーマット情報を格納したため、 より細かいフォーマット情報を toml::value 自体が持ち運べるようになりました。\nこれにより、 toml::format 自体はフォーマット指定を受け取らず、 フォーマット時に使用できる言語機能フラグを持つ toml::spec のみを取るようになりました。\ntoml::source_locationのメンバ関数を変更 # toml11 v3では、 toml::source_location のメンバ型は一行分だけを意識したものでした。\ntoml11 v4では、 toml::source_location のメンバ型は複数行が前提になります。\ntoml::format_underlineをtoml::format_locationに変更 # toml11 v3では、 toml::source_location を使用して位置情報を文字列化するとき、 toml::format_underline を使用していました。\nしかしこれは名称としてわかりにくいため、 toml::format_location に変更しました。\nformat_errorの引数を変更 # toml11 v3ではエラー情報を表すクラスがなかったため、toml::format_errorの引数が複雑になっていました。\ntemplate\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; std::string format_error(const std::string\u0026amp; err_msg, const basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v, const std::string\u0026amp; comment, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v3, const std::string\u0026amp; comment3, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); toml11 v4では、class error_infoとmake_error_infoを導入し、format_errorの引数を簡略化しました。\nstd::string format_error(const error_info\u0026amp; err); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); toml::color の制御を変更 # toml11 v3では、出力に色を付けるかどうかに toml::colorize というマニピュレータを、 toml::color::enable/disable と並列で使用していました。\nマニピュレータはストリームごとに色を付けるかどうかを決定できるものでしたが、 v4でストリームを使用する頻度が下がったことと、内部で使用する std::ios_base::xalloc がC++11ではスレッドセーフではないことなどから、 toml::color::enable/disable のみを使用するようにし、 toml::colorize を削除しました。\n破壊的でない変更 # parse_strの追加 # toml11 v3では、文字列そのものを取るtoml::parse関数はありませんでした。 なので文字列をパースする際にはstd::istringstreamを使う必要がありました。\nこれは不便なので、toml::parse_strを追加し、文字列を直接パース出来るようにしました。\ntry_parseの追加 # toml11 v3では、パーサはエラーを発見した際にはtoml::syntax_errorを送出していました。\nしかし、例外を投げられない環境や、パフォーマンスの都合や記法の都合によって例外を投げたくない場合があります。\ntoml11 v4では toml::result を使用して、例外を投げずにパース失敗を伝える toml::try_parse を実装しました。\nこれも必ず例外を投げないというわけではなく、使用している標準ライブラリの内部でのエラー、 例えばメモリ不足によるアロケーション失敗での std::bad_alloc などは送出される可能性があります。\nバイト列のパースをサポート # ファイルなど以外の方法で得られたTOMLコンテンツをパース出来るようにするため、 std::vector\u0026lt;unsigned char\u0026gt; を受け取る toml::parse, toml::try_parse を追加しました。\ntoml::specの追加 # toml11 v3では、TOML言語側の新機能は全て取り込み、またTOML言語の新バージョンに導入されることが決定した機能も マクロ TOML11_USE_UNRELEASED_TOML_FEATURES によって制御していました。\nこれは、toml11 v3を開発していた時点では TOML言語は0.4.0から0.5.0で、1.0.0に到達していなかったためです。\n最新のTOML言語仕様に全てのユーザーが詳しいわけではないため、 古い言語使用に基づいたエラーメッセージを表示すると、コミュニティ全体を混乱させてしまいます。 よって、v1.0.0に達するまでは、できる限り素早く新しい言語仕様を提供し、かつユーザーにもアップデートを促す必要がありました。\nしかし、現在のTOML言語仕様はv1.0.0です。 そのため、TOML v1.1.0がリリースされた後でもv1.0.0を使用する、という選択肢に気を配る必要が生じました。\nよって、より柔軟にTOML言語仕様を選択できるよう、toml::specを導入して、TOML言語バージョンを実行時に変更できるようにしました。\nまた、toml::specでは言語機能ごとにフラグを設定し、特定の言語機能のみを試すこともできるようにしました。\nこれは、toml11 v4特有の言語拡張でも使用します。\nフォーマット情報の追加 # toml11 v3では、文字列を除いてフォーマット情報が保存されず、シリアライズ時に考慮できるのは幅と精度だけでした。\nしかし、これでは16進数整数がシリアライズ時に10進数になってしまったり、確実にinline tableにする方法がありませんでした。\ntoml11 v4では、全てのTOML型にフォーマット情報(integer_format etc)を追加し、 パース時とシリアライズ時に考慮するようにしました。\nこれによって、16進数整数や、インラインテーブル等のフォーマット情報をより細かく、値ごとに設定できるようになりました。\nデフォルトでコメントを維持するよう変更 # toml11 v3では、デフォルトではコメントがパースされず、シリアライズもされませんでした。\nこれは、コメントが後期に導入された機能で、特別なハックによって読み込まれていたためです。\ntoml11 v4では、デフォルトでコメントをパースし、保存し、シリアライズするようになりました。\nまた、パーサの実装も大幅に変更され、コメントが他の要素と同様にパースされるようになりました。\nsingle_include/toml.hpp の追加 # toml11は多機能なライブラリなので、開発効率のために機能ごとに異なるヘッダファイルを持っています。 ですが、これはインストールにある程度の手間が必要ということでもあります。\nそこで、toml11 v4から全てのヘッダファイルを適切な順序で結合した single_include/toml.hpp ファイルを追加し、 単一のファイルで完結するライブラリをコピーするだけで導入できるようにしました。\nコンパイル済みライブラリを選択可能に # toml11は template を多用しているため、コンパイル時間が長くなります。\ntoml11 v4では、できるだけコンパイル可能な関数を増やし、それらを先にライブラリとしてコンパイルできるようにしました。\nこれにより、大規模な開発で使用する際にコンパイル時間を短くできると期待できます。\nリファレンス・ドキュメントの追加 # これまでは、READMEにすべてのfeatureを記載しており、関数の詳細な定義を示すリファレンスや、また日本語での資料などがありませんでした。\ntoml11 v4では、リファレンスを追加したドキュメントを同梱し、また日本語・英語両方で同一の内容を記載します。\nただし、ライブラリ作者は日本語母語話者であるため、日本語の内容を第一とし、英語の内容がそれと異なっていた場合は日本語の内容が正しいものとします。\n"},{"id":4,"href":"/toml11/ja/docs/features/parsing_files/","title":"parsing files","section":"features","content":" ファイル・文字列をパースする # toml11では、toml::parse や toml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。\nこれらは成功時に toml::value を返します。 ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 toml::value はファイルに関するメタデータを持っており、 toml::table は std::unordered_map\u0026lt;std::stirng, toml::value\u0026gt; のエイリアスでしかありません。 メタデータを返すために、 toml::table ではなく toml::value を返しています。 ファイルのルートに対応する toml::value は常に table_type を持ちます。\nファイルをパースする # ファイルをパースする際は、 toml::parse または toml::try_parse を使います。\ntoml::parse # std::stringでファイル名を指定する # toml::parse は、文字列でファイル名を受け取り、そのファイルを開いてパースします。\n以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } std::filesystem::pathでファイルを指定する # toml::parse には、std::filesystem::pathを渡すことも可能です。\n当然ですが、\u0026lt;filesystem\u0026gt;がサポートされるC++17以降でなければ使用できません。\nstd::istreamで入力ストリームを指定する # toml::parse には、std::istreamを渡すことも可能です。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 std::ios::binaryを使ってバイナリモードで開いてください。\nその際、ファイル名の情報がなくなるため、エラーメッセージ中では \u0026quot;unknown file\u0026quot; となります。\nこれを避けるため、 std::istream を取る場合は第二引数に std::string でファイル名を取ることもできます。\nstd::ifstream 以外にも、 std::istringstream 等の別のistreamを受け取ることができます。 ただし、呼び出した時点で内容が全て読み込める必要があります。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::string filename(\u0026#34;input.toml\u0026#34;); std::ifstream ifs(filename); const toml::value input = toml::parse(ifs, filename); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } FILE*でファイルを指定する # toml::parse には、FILE*を渡すことも可能です。\n標準ライブラリによる改行文字の自動変換によるファイルサイズと文字数との不整合を避けるため、 fopen(\u0026quot;example.toml\u0026quot;, \u0026quot;rb\u0026quot;)のようにしてバイナリモードで開いてください。\nこの場合も、std::istreamのときと同様に、第二引数に文字列でファイル名を与える必要があります。\nFILE*を渡した場合、ファイルの読み込みに失敗した際にはerrnoが報告されます。\nエラー時の挙動 # toml::parse は、文法エラーを発見した場合 toml::syntax_error を送出します。\ntoml::syntax_error は、 toml::exception から派生しており、またそれはstd::exceptionから派生します。\nよって、 toml::syntax_error からは what() メンバ関数を使ってエラーメッセージを取り出すことができます。\nまた、 toml::syntax_error は std::vector\u0026lt;toml::error_info\u0026gt; を持っており、errors()メンバ関数を使ってそれにアクセスすることもできます。\ntoml::parse はごく簡単なエラーならスキップして復帰し、複数のエラーを報告しようと努めます。 数値のフォーマットエラー程度なら復帰できることが多いですが、 配列やテーブルの中のエラーは復帰できずに似たようなエラーを複数回報告することもあります。 冗長であると感じた場合は、 std::vector\u0026lt;toml::error_info\u0026gt; の front() だけを使用するようにすると、 確実に問題のある個所に関するメッセージを得られます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { // parse try { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } catch(const toml::syntax_error\u0026amp; err) { // 全てのエラーを報告 std::cerr \u0026lt;\u0026lt; err.what() \u0026lt;\u0026lt; std::endl; // 最初のエラーのみ報告 std::cerr \u0026lt;\u0026lt; err.errors().front() \u0026lt;\u0026lt; std::endl; } } toml::try_parse # toml::parse は失敗時に例外を送出しますが、 toml::try_parse は失敗時に例外を投げません。\nその代わり、返り値が toml::value ではなく toml::result\u0026lt;toml::value, std::vector\u0026lt;toml::error_info\u0026gt;\u0026gt; になります。\nresult 型は成功値または失敗値のどちらかを持つ型です。 Rustの Result やHaskellの Either に相当します。\n#include \u0026lt;toml.hpp\u0026gt; int main() { const auto parse_result = toml::try_parse(\u0026#34;input.toml\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } result 型がどちらの値を保持しているかは is_ok(), is_err() 関数を使って確認できます。 また、 unwrap(), unwrap_err() によって成功値、失敗値をそれぞれ取り出せます。 unwrap が失敗した場合は、 bad_result_access 例外が送出されます。 as_ok() と as_err() 関数を使用すると、失敗時には例外が送出されず、未定義動作となります。\ntry_parse は syntax_error や file_io_error を投げず、同じ toml::error_info を result の失敗型として返しますが、絶対に例外を投げないわけではありません。\n標準ライブラリ内部でエラーが発生した場合、例えばメモリ不足の際に vector の allocate が失敗した場合などには std::bad_alloc が送出されますが、 toml::try_parse はこれが送出された場合は catch せずに通します。 そのため、それらのような標準ライブラリの内部で発生する例外は送出される恐れがあります。\n文字列をパースする # toml::parse_str # toml::parse_str は、ファイル名ではなくパースする文字列そのものを受け取ります。\nまた、エラーメッセージのTOMLファイルの名前に相当する部分には、std::source_location 相当のコンパイラ拡張機能が使用できる場合、 parse_str を呼び出したC++ファイルの名前と行数が代わりに使用されます。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse_str # toml::try_parse_str は、 parse_str と同じくパースする文字列そのものを受け取り、 try_parse と同じくエラーの報告に toml::result を使用します。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto parse_result = toml::try_parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } バイト列をパースする # ファイルではなくバイト列をパースすることも可能です。\nUTF-8でエンコードされている必要があるため、unsigned charを使っています。\ntoml::parse(std::vector\u0026lt;unsigned char\u0026gt;) # 挙動は toml::parse と同一です。\nバイト列をパースする際は、 filename を要求します。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const toml::value input = toml::parse(bytes, \u0026#34;internal bytes\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse(std::vector\u0026lt;unsigned char\u0026gt;) # 挙動は toml::try_parse と同一です。\nバイト列をパースする際は、 filename を要求します。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const auto parse_result = toml::try_parse(bytes, \u0026#34;internal bytes\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } "},{"id":5,"href":"/toml11/ja/docs/features/value/","title":"getting values","section":"features","content":" 値を取り出す # ここでは、 toml::value が格納している値にアクセスする方法を説明します。\nメンバ関数を使って値にアクセスする # is_something と as_something # toml::value は is_boolean() や is_integer() などのメンバ関数を持っており、 これらを使うと持っている型を調べることができます。\nまた、 as_boolean(), as_integer() などのメンバ関数も持っており、 これらを使ってその型にアクセスすることができます。\n完全なリストは toml::value のリファレンス を参照してください。\ntoml::value v = /* ... */; if(v.is_integer()) { std::cout \u0026lt;\u0026lt; v.as_integer() \u0026lt;\u0026lt; std::endl; } 指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。\nその what() は以下のようなメッセージを含みます。\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # 型情報は enum class toml::value_t で識別できます。\ntype() メンバ関数は、現時点で格納している値の型情報を返します。\ntoml::value v = /* ... */; switch(v.type()) { case toml:value_t::empty : { /*...*/ break; } case toml:value_t::boolean : { /*...*/ break; } case toml:value_t::integer : { /*...*/ break; } case toml:value_t::floating : { /*...*/ break; } case toml:value_t::string : { /*...*/ break; } case toml:value_t::offset_datetime: { /*...*/ break; } case toml:value_t::local_datetime : { /*...*/ break; } case toml:value_t::local_date : { /*...*/ break; } case toml:value_t::local_time : { /*...*/ break; } case toml:value_t::array : { /*...*/ break; } case toml:value_t::table : { /*...*/ break; } default: {break;} } is(toml::value_t) メンバ関数は、渡された value_t と同じ型の値を格納している場合 true を、 それ以外の場合 false を返します。\ntoml::value v = /* ... */; if(v.is(toml::value_t::integer)) { std::cout \u0026lt;\u0026lt; v.as_integer() \u0026lt;\u0026lt; std::endl; } at, [], contains, size, push_back, emplace_back # 標準ライブラリコンテナが持つメンバ関数の一部は、 toml::value も提供しています。\nこれらは、内部で toml::value を対応する型に変換し、そのメンバ関数を呼び出します。\nat(std::size_t i), operator[](std::size_t i) # as_array().at(i), as_array()[i] と同等です。\ntoml::value はデフォルトで std::vector\u0026lt;toml::value\u0026gt; を array_type に使うので、 エラーが発生した際には at は std::out_of_range を送出し、operator[] は未定義動作となります。\ntoml::value v(toml::array{1,2,3}); std::cout \u0026lt;\u0026lt; v.at(1); 格納している型が array_type ではなかった場合、 type_error を送出します。\nat(std::string key), operator[](std::string key) # as_table().at(key), as_table()[key] と同等です。\ntoml::value はデフォルトで std::unordered_map\u0026lt;std::string, toml::value\u0026gt; を table_type に使うので、 対応する値が存在しない場合は at は std::out_of_range を送出し、 operator[] は新しく toml::value を構築してそれへの参照を返します。 そのため、operator[] に const 版はありません。\ntoml::value v(toml::table{}); v[\u0026#34;a\u0026#34;] = 42; 格納している型が table_type ではなかった場合、 type_error を送出します。\nsize() # 長さを返します。\narray_type または table_type の場合は要素数、 string_type の場合は文字数を返します。\n格納している型がどれでもなかった場合、 type_error を送出します。\npush_back(), emplace_back() # as_array().push_back(), as_array().emplace_back() と同一です。\n格納している型が array_type ではなかった場合、 type_error を送出します。\nコメントにアクセスする # toml11では、デフォルトでコメントがパースされ、対応する値に行ごとに保存されます。\n対応する値は、連続するコメント行の直後に来る値か、もしくはそのコメントと同じ行に描かれている値です。\n直前または直後に値がなければ、そのコメントはどこにも紐づけられず、無視されます。\n# input.toml # これはaに関するコメントです。 a = 42 b = 3.14 # これはbに関するコメントです。 # このコメントには対応する値がないため無視されます。 # これは1番目のcに関するコメントです。 # これは2番目のcに関するコメントです。 c = \u0026#34;foo\u0026#34; # これは最後のcに関するコメントです。 値に対応するコメントには、toml::value の comments() メンバ関数を使ってアクセスします。\ncomments() は std::vector\u0026lt;std::string\u0026gt; と同じメンバ関数を持つコンテナを返します。\nconst auto v = toml::parse(\u0026#34;input.toml\u0026#34;); const auto\u0026amp; a = v.at(\u0026#34;a\u0026#34;); const auto\u0026amp; b = v.at(\u0026#34;b\u0026#34;); const auto\u0026amp; c = v.at(\u0026#34;c\u0026#34;); assert(a.comments().size() == 1); assert(a.comments().at(0) == \u0026#34;# これはaに関するコメントです。\u0026#34;); assert(b.comments().size() == 1); assert(b.comments().at(0) == \u0026#34;# これはbに関するコメントです。\u0026#34;); assert(c.comments().size() == 3); assert(c.comments().at(0) == \u0026#34;# これは1番目のcに関するコメントです。\u0026#34;); assert(c.comments().at(1) == \u0026#34;# これは2番目のcに関するコメントです。\u0026#34;); assert(c.comments().at(2) == \u0026#34;# これは最後のcに関するコメントです。\u0026#34;); ファイル全体に対応するルートテーブルに関するコメントは、ファイルの先頭に書きます。\n# ルートテーブルに関するコメントです。 # これもルートテーブルに関するコメントです。 # これはaに関するコメントです。 a = 42 ただし、もしファイルの先頭のコメントの直後に値が来た場合、 そのコメントはその値に関するコメントと解釈され、ルートテーブルのコメントはなくなります。\n# これはaに関するコメントです。 # これもaに関するコメントです。 a = 42 インラインテーブル・ドットキーの取り扱い # インラインテーブルは単にテーブルで、C++コード上で他のテーブルと異なる点はありません。\na = {b = 42, c = \u0026#34;foo\u0026#34;} ドットキーも単にテーブルで、C++コード上で他のテーブルと異なる点はありません。\na.b = 42 a.c = \u0026#34;foo\u0026#34; これらは以下のファイルと全く同じ構造を持ちます。\n[a] b = 42 c = \u0026#34;foo\u0026#34; なので、どの記法でも以下の全く同一のコードで処理できます。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).as_integer() == 42); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;c\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); ただし、フォーマット情報によって区別することは可能です。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); switch(input.at(\u0026#34;a\u0026#34;).as_table_fmt().fmt) { case toml::table_format::oneline: { std::cout \u0026lt;\u0026lt; \u0026#34;inline table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::multiline: { std::cout \u0026lt;\u0026lt; \u0026#34;normal table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::dotted: { std::cout \u0026lt;\u0026lt; \u0026#34;dotted keys\u0026#34; \u0026lt;\u0026lt; std::endl; break; } } このフォーマット情報は後述するシリアライズの際も考慮されます。\n日付情報の取り扱い # local_date, local_time, local_datetime, そして offset_datetime は、 toml11では対応するメンバ変数を持つ専用の構造体にパースされます。\n使用する際は、直接値を取り出す他にも、後述する toml::get や toml::find を使用して、 std::chrono::system_clock::time_point や std::tm 等の型に変換することができます。\ntoml::get\u0026lt;T\u0026gt;を使って変換する # toml::get\u0026lt;T\u0026gt; は、 toml::value の持つ値を変換して取り出す関数です。 T に変換先に指定したい型を指定します。\nconst toml::value v = /*...*/; std::cout \u0026lt;\u0026lt; toml::get\u0026lt;int\u0026gt;(v) \u0026lt;\u0026lt; std::endl; 後述する toml::find\u0026lt;T\u0026gt; も、型変換の部分は同一の機能を持ちます。\n格納されている型のそれぞれについて、 変換ができない型が指定された場合、 toml::type_error が送出されます。\n単純な変換 # boolean_type # boolean_type から変換が可能なのは、 bool のみです。\ninteger_type # bool 以外で std::is_integral\u0026lt;T\u0026gt; が true になる型は、 integer_type から変換できます。\ntoml::value v(42); const auto u32 = toml::get\u0026lt;std::uint32_t\u0026gt;(v); const auto i16 = toml::get\u0026lt;short\u0026gt;(v); floating_type # std::is_floating_point\u0026lt;T\u0026gt; が true になる型は、floating_type から変換できます。\ntoml::value v(3.14); const auto f64 = toml::get\u0026lt;double\u0026gt;(v); const auto f32 = toml::get\u0026lt;float \u0026gt;(v); string_type # string_type からは std::string へ変換できます。 また、C++17以降では、std::string_view へも変換できます。\ntoml::value v(\u0026#34;foo\u0026#34;); const auto s = toml::get\u0026lt;std::string\u0026gt;(v); // C++17以降 const auto sv = toml::get\u0026lt;std::string_view\u0026gt;(v); datetime variants # local_date, local_datetime, offset_datetime は ある日付と時刻を指しているため、 std::chrono::system_clock::time_point への変換が可能です。\nただし、local_time は 日付の情報がないため、0時0分からの経過時刻として std::chrono::duration への 変換をサポートします。\nまた、 local_date と local_datetime は実行中のマシンのタイムゾーンを取得して変換を行います。\ndate = 2024-01-23 time = 12:30:00 l_dt = 2024-01-23T12:30:00 o_dt = 2024-01-23T12:30:00+09:00 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto date = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;date\u0026#34;)); const auto l_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;l_dt\u0026#34;)); const auto o_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;o_dt\u0026#34;)); const auto time = toml::get\u0026lt;std::chrono::minutes\u0026gt;(input.at(\u0026#34;time\u0026#34;)); // 12 * 60 + 30 min 参照を取得できる条件 # toml::get\u0026lt;T\u0026gt; は、 T が toml::value が格納する型そのものだった場合、参照を返すことができます。\n逆に、変換が必要な場合( std::int64_t で格納されている整数を std::uint32_t で取り出そうとした場合)は、 変換後の型への参照を返すことは不可能です。\n変換が必要ない型の場合、返された参照を経由して値を書き換えることも可能です。\ntoml::value v(42); toml::get\u0026lt;toml::value::integer_type\u0026gt;(v) = 6 * 9; assert(v.as_integer() == 54); 配列をSTLコンテナに # 配列の要素型が全て同じ場合、要素型が T に変換可能であれば、 std::vector\u0026lt;T\u0026gt; に変換可能です。\na = [1, 2, 3, 4, 5] const auto a = toml::get\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); 他のSTLコンテナにも変換可能です。\nconst auto a1 = toml::get\u0026lt;std::deque\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a2 = toml::get\u0026lt;std::list \u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a3 = toml::get\u0026lt;std::array\u0026lt;int, 5\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); std::array に変換する場合、要素数が一致している必要があります。 もし要素数が一致しなかった場合、 std::out_of_range が送出されます。\nSTL以外のコンテナであっても、デフォルトコンストラクタと push_back を持っている場合、 toml::get で変換が可能です。\nconst auto a = toml::get\u0026lt;boost::container::small_vector\u0026lt;int, 8\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); 配列を std::pair, std::tuple に # 配列の要素型が異なる場合、 std::pair や std::tuple に変換が可能です。\na = [true, 3.14] b = [42, 2.718, \u0026#34;foo\u0026#34;] const auto a = toml::get\u0026lt;std::pair\u0026lt;bool, double\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto b = toml::get\u0026lt;std::tuple\u0026lt;int, double, std::string\u0026gt;\u0026gt;(input.at(\u0026#34;b\u0026#34;)); std::array の場合と同様に、配列の長さは std::pair, std::tuple の要素数と一致している必要があります。 もし要素数が一致しなかった場合、 std::out_of_range が送出されます。\nまた、各要素は対応する要素に変換できる必要があります。 変換できない場合、 toml::type_error が送出されます。\nネストされた配列の変換 # ネストされた配列は、ネストされたコンテナに変換可能です。\na = [ [1, 2, 3], [4, 5, 6] ] const auto a = toml::get\u0026lt;std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); 型が異なる場合には、 std::pair/tuple が便利です。\na = [ [1, 2, 3], [\u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;] ] const auto a = toml::get\u0026lt; std::pair\u0026lt;std::vector\u0026lt;int\u0026gt;, std::vector\u0026lt;std::string\u0026gt;\u0026gt; \u0026gt;(input.at(\u0026#34;a\u0026#34;)); テーブルを std::map に変換 # テーブルに含まれる値の型が全て同じであれば、 std::map や std::unordered_map に変換が可能です。\nt = {a = 1, b = 2} const auto t = toml::get\u0026lt;std::map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); STL以外のコンテナであっても、デフォルトコンストラクタと emplace(key, mapped) を持っている場合、 toml::get で変換が可能です。\nconst auto t = toml::get\u0026lt;boost::container::flat_map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); 要素型の変換に失敗した場合は toml::type_error が送出されます。\ntoml::get_orを使って失敗時の値を指定する # toml::get は変換に失敗した際に toml::type_error 例外を送出します。\ntoml::get_or を使用することで、変換に失敗した際に例外ではなくデフォルト値を返せるようになります。\ntoml::get\u0026lt;T\u0026gt; とは異なり、 get_or は引数から変換先の型を推論するため、 \u0026lt;T\u0026gt; の指定は不要です。\nconst auto a = toml::get_or(input.at(\u0026#34;a\u0026#34;), 42); 変換可能な型は toml::get と同様です。\ntoml::value::xxx_typeを指定した場合は、参照を取り出すことも可能ですが、その場合は引数も参照である必要があります。\ntoml::value::integer_type a_default = 42; auto a\u0026amp; = toml::get_or(input.at(\u0026#34;a\u0026#34;), a_default); toml::find\u0026lt;T\u0026gt;を使って検索と変換を同時に行う # toml::find\u0026lt;T\u0026gt; は、テーブルを持つ toml::value から値を検索し、同時に toml::get と同じ型変換を行って取り出す関数です。\nconst auto a = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;); // const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;)); と同じ toml::find\u0026lt;T\u0026gt; は配列にも使用できます。\nconst auto a = input.at(\u0026#34;a\u0026#34;); const auto a2 = toml::find\u0026lt;int\u0026gt;(a, 2); // const auto a2 = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2)); と同じ 型変換の際にエラーが起きた場合、 toml::get と同じ toml::type_error を 送出します。 キーが見つからなかった場合またはインデックスが存在しない場合は、 std::out_of_range を送出します。\n型を指定しなかった場合、型変換を行わず toml::value を取り出します。\nconst auto a = toml::find(input, \u0026#34;a\u0026#34;); // const auto a = input.at(\u0026#34;a\u0026#34;); と同じ toml::find\u0026lt;T\u0026gt; は再帰的に値にアクセスることもできます。\na = {b = {c = 42}} const auto a_b_c = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, \u0026#34;b\u0026#34;, \u0026#34;c\u0026#34;); // const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).at(\u0026#34;c\u0026#34;)); と同じ このとき、キーとインデックスを混ぜることができます。\na = [ {b = 1}, {b = 2}, {b = 3} ] const auto a_2_b = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, 2, \u0026#34;b\u0026#34;); // const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2).at(\u0026#34;c\u0026#34;)); と同じ TOMLはquoted keyという機能を持っています。\nこれは、 \u0026quot;\u0026quot; や '' を使うことで通常許可されない文字をキーに使えるというもので、 この中では . はテーブルを導入しません。\n\u0026#34;127.0.0.1\u0026#34; = \u0026#34;value\u0026#34; site.\u0026#34;google.com\u0026#34; = true このTOMLファイルは以下のようにして読みます。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;127.0.0.1\u0026#34;).as_string() == \u0026#34;value\u0026#34;); assert(input.at(\u0026#34;site\u0026#34;).at(\u0026#34;google.com\u0026#34;).as_boolean()); このような場合にも違和感なく対応するため、toml11ではキーに . が含まれていても 自動で分割はしません。\nテーブルの階層構造を陽に指定することが、適切な入力ファイルの構造化に資すると考えているからです。\n参考: toml.io キー\ntoml::find_orを使って失敗時の値を指定する # toml::find_or は、 toml::get_or と同様に、失敗時のデフォルト値を渡します。\nconst auto a = toml::find_or(input, \u0026#34;a\u0026#34;, 42); 型変換の失敗だけでなく、キーが見つからなかった場合もデフォルト値を返します。\nユーザー定義型との変換を定義する # toml::get や toml::find では、以下のどれかの方法を使うことで ユーザー定義型を使用することができます。\ntoml::from の定義 # toml11には toml::from という型があり、以下のように特殊化することでユーザー定義型からの 変換をサポートできます。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { static extlib::foo from_toml(const toml::value\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml 後述する型設定を変更した toml::value もサポートする場合、以下のようにしてください。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml この定義は、 TOML11_DEFINE_CONVERSION_NON_INTRUSIVE によって自動的に定義できます。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b) あるいは、リフレクションライブラリを使用することもできます。 example の boost-ext/reflect を使用したサンプルも参照してください。\nfrom_toml メンバ関数の定義 # from_toml メンバ関数を定義することによっても変換を定義することができます。\nこれを使用する場合、デフォルトコンストラクタが必要です。\nstruct bar { int a; std::string b; void from_toml(const toml::value\u0026amp; v) { this-\u0026gt;a = toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;); this-\u0026gt;b = toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;); return ; } }; 両方が定義されていた場合、 toml::from が優先されます。\ntoml::value を受け取るコンストラクタ # toml::value を受け取るコンストラクタがあれば、 toml::get による変換ができます。\nstruct baz { explicit baz(const toml::value\u0026amp; v) : a(toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;)), b(toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)) {} int a; std::string b; }; 両方が定義されていた場合、toml::from と from_toml が優先されます。\ntoml::visitで関数を適用する # toml::value が格納する型すべてに適用できる関数オブジェクトがあれば、 toml::visit によって型変換を経ずに直接その関数を呼ぶことができます。\nstruct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating toml::value を構築する # toml::value はパーサの内部だけでなく、ユーザーコードで構築することも可能です。\ntoml::value が格納する型と同じか変換可能な型を渡しての構築が可能です。\ntoml::value v1(true); toml::value v2(42); toml::value v3(3.14); 配列の場合、 toml::array を使うか、\ntoml::value v(toml::array{1, 2, 3}); 配列の場合、 std::vector などのコンテナを直接渡すことが可能です。\nconst std::vector\u0026lt;toml::value\u0026gt; a{1,2,3}; toml::value v(a); このコンテナには、 toml::get で変換可能なコンテナが使用できます。\nテーブルの場合も同様に、 toml::table を使うか、\ntoml::value v(toml::table{{\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3}}); std::map などのコンテナを直接渡します。\nconst std::map\u0026lt;std::string, toml::value\u0026gt; t{ {\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3} } toml::value v(t); コンストラクタには、 format_info と コメントを渡すことができます。\nコメントの型は std::vector\u0026lt;std::string\u0026gt; です。 各要素が一行分に相当します。\ntoml::integer_format_info fmt; fmt.fmt = toml::integer_format::hex; fmt.spacer = 4; toml::value v1(0xDEADBEEF, fmt); toml::value v2(0xC0FFEE, fmt, {\u0026#34;hex value!\u0026#34;}); toml::value に変換する # ユーザー定義型から toml::value を構築する際に、 toml::into や into_toml を 定義することで、その挙動をカスタマイズできます。\n特に、別のライブラリの型などを変換する際に toml::into が便利です。\ntoml::intoを定義する # toml::into を特殊化することで toml::value への変換が可能になります。\ntoml::value への変換が用意されていない外部ライブラリの型などに対して有効です。\ntoml::value が変換時に type_config を渡すため、basic_value の template 引数を受け取る必要があります。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { return toml::basic_value\u0026lt;TC\u0026gt;(typename toml::basic_value\u0026lt;TC\u0026gt;::table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; into_toml メンバ関数を定義する # from_toml と同様、メンバ関数によっても変換を定義することができます。\ntoml::into が定義されていた場合、そちらが優先されます。\nstruct bar { int a; std::string b; toml::value into_toml() const { return toml::value(toml::table{{\u0026#34;a\u0026#34;, this-\u0026gt;a}, {\u0026#34;b\u0026#34;, this-\u0026gt;b}}); } }; "},{"id":6,"href":"/toml11/ja/docs/features/error_message/","title":"error message","section":"features","content":" エラーメッセージを出力する # toml11は toml::parse や toml::get\u0026lt;T\u0026gt;/find\u0026lt;T\u0026gt;, as_integer() などから ファイル内の位置情報を含んだエラーメッセージを出力します。\n例えば、パース時に整数の文法エラーを発見した場合、\n[error] bad integer: `_` must be surrounded by digits --\u0026gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 あるいは実際に格納されている型と異なる型を要求した場合\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。\nこの機能を利用することで、TOMLの文法エラーだけでなく、 例えば正の値でなければならないところに負数が現れた場合などの アプリケーション固有のエラーメッセージを、TOMLファイル内の位置を指摘しながら ユーザーに伝えられるということです。\ntoml::value の位置情報からエラーメッセージを作成する # toml::value はそれがパースされた位置の情報を持っています。\nその情報は toml::source_location にまとめられ、toml::value::location() で取得できます。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); const toml::source_location src = a.location(); ファイルを toml::parse でパースした場合、そのTOMLファイル名と行数が保存されています。\ntoml::parse_str でパースした場合TOMLファイル名はありませんが、代わりに toml::parse_str を呼び出したC++ソースコードのファイル名と行数がTOMLファイル名として保存されています。 このページの最初の例は toml::parse_str から出力された例でした。 ファイル名の部分に注目してください。\n詳細は reference を参照してください。\ntoml::source_location または toml::value とそれに付随するエラーメッセージを toml::make_error_info に渡すことで、エラー情報を構築できます。 これをtoml::format_error に渡すと、エラーメッセージが std::string にフォーマットされます。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34; // 値の横に書くメッセージ ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } これは以下のようになります。\n[error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value 最後に補足をつけ足すこともできます。これはインデントされません。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34;, // 値の横に書くメッセージ \u0026#34;Hint: `a` means length of the data\u0026#34; // 補足 ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } [error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value Hint: `a` means length of the data toml::value からファイル内の行を出力できるのは、 パースしたファイルが文字列としてメモリの中に残されているからです。\nパースした文字列はその全体が std::shared_ptr で toml::value に共有されています。 コピーしてもファイル文字列全体がコピーされることはありません。 また、そのファイルをパースして構築された toml::value が全てデストラクトされた時点で、 ファイル情報もメモリ上から解放されます。\nですので、アプリケーションで使用する際には、 toml::value を直接保存するのではなく 読み込み中に必要な値を全て取り出して、変換した値を保存した方がよいでしょう。\n文字列に色を付ける # エラーメッセージにはANSIエスケープコードを使って色を付けることができます。\nTOML11_COLORIZE_ERROR_MESSAGE をコンパイル時に定義していれば、 toml11の出力するエラーメッセージはデフォルトで色が付くようになります。\nそうでない場合は、 toml::color::enable() を呼び出すことにより、それ以降で出力される エラーメッセージには色が付くようになります。 逆に出力先がコンソールではないなどの理由で色をつけたくない場合は、 toml::color::disable() を呼び出してください。 その時点で色が付くようになっているかどうかは、 toml::color::should_color() の返り値で判定できます。\n詳細は reference を参照してください。\nまた、エラーのタイトルやエラーメッセージ、補足にはデフォルトで色が付きませんが、 toml::color にあるマニピュレータを使って色を付けることも可能です。\nstd::ostringstream oss; oss \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;but got negative value\u0026#34;; const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, oss.str(), // Message next to the value \u0026#34;Hint: `a` means length of the data\u0026#34; // Supplementary message ); こちらも、詳細は reference を参照してください。\nエラーメッセージのprefixを[error]から変更する # エラーには種類があり、デフォルトの [error] ではよくない場合もあるでしょう。\ntoml::format_error では、 toml::error_info の前に std::string を取って、それを [error] の代わりに出力することができます。\n例えば、\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34; // 値の横に書くメッセージ ); std::ostringstream prefix; prefix \u0026lt;\u0026lt; toml::color::bold \u0026lt;\u0026lt; toml::color::yellow \u0026lt;\u0026lt; \u0026#34;[warn]\u0026#34;; std::cerr \u0026lt;\u0026lt; toml::format_error(prefix.str(), err) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer() } このようにすると、 [warn] から始まる警告を出力することができます。\n他にも、toml::format_error に直接 error_info の構成要素を渡すことで、 [error] なしのエラーメッセージを作成できます。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { std::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[warn] positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34; // 値の横に書くメッセージ ) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer() } 複数の toml::value を指すエラーメッセージを作成する # アプリケーションの設定では、先に読み込んだ値によって後に読み込んだ値が取れる範囲が変わることがあるでしょう。\nそのような場合には、エラーの原因となる別の値を同時に出力したいはずです。\ntoml::format_error と toml::make_error_info は、 toml::value とそれに対応するエラーメッセージ std::string のペアを任意個取ることができます。\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34; ) \u0026lt;\u0026lt; std::endl; こちらも末尾に補足を追加することができます。\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34;, \u0026#34;Hint: all the value must be in the range, [a, b)\u0026#34; ) \u0026lt;\u0026lt; std::endl; toml::value または toml::source_location を渡した場合、必ずそれに関する エラーメッセージが続く必要があります。 そうしない場合、非常にわかりにくいコンパイルエラーになります。\n"},{"id":7,"href":"/toml11/ja/docs/features/serialize/","title":"serializing values","section":"features","content":" TOMLファイルを出力する # toml::format を使うと、 toml::value を文字列にすることができます。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。\nもし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。\n一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 例えば、 toml::array_format::array_of_tables は [[array.of.tables]] の形でフォーマットするので、 キーへのアクセスを要求します。\nキーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。\n他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 string_format::literal が指定された文字列が改行を含んでいる場合などです。\nフォーマットの指定方法は後述します。\nキーを渡して出力する # toml::format には std::string としてキーを渡すことが可能です。\nその場合、ルートテーブルの下にそのキーがあり、渡した値はそのキーに対応すると解釈されます。\nキーが複数段になる場合、 std::vector\u0026lt;std::string\u0026gt; を渡すことができます。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(\u0026#34;bar\u0026#34;, v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } フォーマットを指定する # toml::value のそれぞれの型には、対応するフォーマット情報型があります。\ntoml::value::integer_type には toml::integer_format_info が、 toml::value::table_type には toml::table_format_info があります。\nこれらは、パースした際に設定され、型が変わらない限り値を変更しても引き継がれます。\nまた、 as_integer_fmt() や as_table_fmt() といったメンバ関数によってアクセスすることができ、 直接編集することが可能です。\n以下ではいくつかの例を挙げて使い方を説明します。\nフォーマットへのアクセス方法は toml::valueのリファレンスを、 フォーマット情報クラスの完全なリストと詳細は formatのリファレンスを 参照してください。\n整数のフォーマットを指定する # 整数は、基数と幅、そして _ の位置を指定することができます。\nhex, oct, bin のとき、指定された幅に達するまでゼロで埋められます。 dec の場合は幅指定はスペースを追加しますが、これはパースされません。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value v(0x00C0\u0026#39;FFEE); v.as_integer_fmt().fmt = toml::integer_format::hex; v.as_integer_fmt().width = 8; v.as_integer_fmt().spacer = 4; const std::stirng s = toml::format(v); assert(s == \u0026#34;0x00C0_FFEE\u0026#34;); return 0; } 詳細は、reference を参照してください。\n配列を単一行・複数行にする # 配列には、 toml::array_format::oneline や toml::array_format::multiline を指定できます。\n# oneline a = [1, 2, 3, 4, 5] # multiline a = [ 1, 2, 3, 4, 5 ] multiline のときは、インデントを指定できます。 各要素は body_indent の分だけインデントされ、閉じ括弧 ] は closing_indent の分だけインデントされます。\n文字種は indent_type で指定され、 toml::indent_char::space または toml::indent_char::tab が選択できます。\nインデントに使用する文字種は統一してください。\n一つのファイル内でインデントに異なる文字種が指定された場合、結果は未規定になります。 何らかのインデントがされますが、全ての箇所で文字種やインデントの深さは不定となります。\nまた、 array の要素が全て table_type を持つ場合、 toml::array_format::array_of_tables が指定できます。\narray_of_tables を指定せずに multiline にした場合、テーブルはインラインテーブルになります。\n# multiline a = [ {foo = 42}, {bar = \u0026#34;hoge\u0026#34;}, ] # array_of_tables [[a]] foo = 42 [[a]] bar = \u0026#34;hoge\u0026#34; デフォルトでは、 toml::array_format::default_format が指定されます。 これは適したフォーマットを自動的に選択します。\n例えば、 default_format で全要素が table_type だった場合、 array_of_tables が選択されます。 また、十分短い配列は oneline に、長い配列またはネストされた配列などの複雑な配列は multiline になります。\n詳細は、reference を参照してください。\nテーブルをインラインテーブルにする # テーブルをインラインテーブルにする際は toml::table_format::oneline を指定します。 通常のテーブルにする際は、 toml::table_format::multiline を指定します。\noneline = {a = 42, b = \u0026#34;foo\u0026#34;} [multiline] a = 42 b = \u0026#34;foo\u0026#34; TOML v1.1.0ではインラインテーブル内での改行が許可されますが、その場合は toml::table_format::multiline_oneline とします。 これは、後述するTOMLバージョン指定で対応する機能フラグがtrueになっていない限り無視されます。\nmultiline_oneline = { a = 42, b = \u0026#34;foo\u0026#34; } 詳細は、reference を参照してください。\nTOML言語バージョンを指定して出力する # TOML v1.1.0で許可されたインラインテーブル内の改行や\\xエスケープシーケンスのように、 TOMLバージョンによって使用できない言語機能があります。\ntoml::format は最後の引数に toml::spec を取ることができます。\nこれにより、シリアライズ時に使用するTOMLのバージョンを指定することができます。\n特に、 toml::parse で toml::spec を使用して新機能を使用した場合は、 パースした値がそのバージョンでしか使えないフォーマット情報を持つ場合があるので、 toml::format にも同じ toml::spec を渡すことを忘れないようにしてください。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto spec = toml::spec::v(1, 1, 0) const toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, spec); std::cout \u0026lt;\u0026lt; toml::format(v, spec); return 0; } "},{"id":8,"href":"/toml11/ja/docs/features/configure_types/","title":"configuring types","section":"features","content":" 型をカスタマイズする # toml::value は integer_type として std::int64_t を、 table_type として std::unordered_map\u0026lt;key_type, value_type\u0026gt; を使用します。\nしかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。\nそのため、 toml::value は template 引数を取って格納する型を変えられるように実装されています。\nstd::string が実際には std::basic_string\u0026lt;char, std::char_traits\u0026lt;char\u0026gt;, std::allocator\u0026lt;char\u0026gt;\u0026gt; の エイリアスであるように、 toml::value は実際には toml::basic_value\u0026lt;toml::type_config\u0026gt; のエイリアスです。\nここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。\ntype_config # type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; } toml::basic_value\u0026lt;TypeConfig\u0026gt; は、格納する boolean_type を TypeConfig::boolean_type、 格納する integer_type を TypeConfig::integer_type 、のようにして定義しています。\nまた、 array_type は TypeConfig::array_type\u0026lt;toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt; 、 table_type は TypeConfig::table_type\u0026lt;key_type, toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt; と 定義されます。\nこれらのメンバ型とメンバ関数を定義したクラスを toml::basic_value に 渡すことで、その toml::basic_value が持つ型を変更できます。\nparse_int と parse_float は、数値型を独自実装のものに変更した際にパース方法を提供するための関数です。 これらの関数には 0x などのprefixと桁区切りの _ が取り除かれた文字列、 例えば 123456 や DEADBEEF が渡されます。 base には 10, 16, 8, 2 のいずれかが渡されます。 これらを使って integer_type と floating_type をパース出来るような関数を渡してください。\nデフォルト実装として、toml::read_int と toml::read_float が提供されています。\nstatic result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } read_int は istream を使用し、16進と8進の場合は std::hex と std::oct を使用します。2進の場合は掛け算と足し算で実装されています。 これらをサポートしている型であれば、 read_int をそのまま使用できます。\nread_float は istream を使用します。 16進浮動小数点数は double と float の場合しかサポートされておらず、 それ以外の型のときに呼ばれると常にパースエラーを返す実装になっているので、 もし浮動小数点数型をこれら以外の型にし、かつ hexfloat を使用する場合は、 それを実装してください。 hexfloat を使用しないのであれば、実装する必要はありません。\nテーブル内の値の順序を維持する # デフォルトの toml::type_config の他に、 toml::ordered_type_config が提供されています。 これは、 table_type を ordered_map に変更したものです。\nこれを使用したものを toml::ordered_value 、その配列型とテーブル型のエイリアスを toml::ordered_array と toml::ordered_table と定義しています。\ntoml::parse(...) を toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(...) として呼び出すことで、 toml::ordered_value を使用することができます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::ordered_value input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;example.toml\u0026#34;); std::cout \u0026lt;\u0026lt; toml::format(input) \u0026lt;\u0026lt; std::endl; return 0; } コメントを保存しない # type_config は comment_type でコメントを保存するコンテナを定義しています。\nコメントに特に情報がなく、パースせずに捨ててしまっていい場合は、 comment_type に toml::discard_comments を指定してください。\nstruct wo_comment_config { using comment_type = toml::discard_comments; // XXX using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; 配列にstd::vector以外のコンテナを使用する # TOML配列の実装にvector以外のコンテナ(例:std::deque)を使用するには、 array_type を以下のように変更してください。\nまた、テーブル型のコンテナに unordered_map 以外のコンテナ(例:std::map)を使用するには、 table_type を以下のように変更してください。\nstruct deque_map_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::deque\u0026lt;T\u0026gt;; // XXX template\u0026lt;typename K, typename T\u0026gt; using table_type = std::map\u0026lt;K, T\u0026gt;; // XXX static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; 数値型に boost::multiprecision を使用する # boost::multiprecision::cpp_int と boost::multiprecision::cpp_bin_float_oct を使用することで、より幅の広い整数型とより精度の良い浮動小数点数型を使用することができます。\nこれらの型はストリーム演算子を実装しているため、デフォルト実装の read_int と read_float をそのまま使用できます。\nstruct large_num_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = boost::multiprecision::cpp_int; using floating_type = boost::multiprecision::cpp_bin_float_oct; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static toml::result\u0026lt;integer_type, toml::error_info\u0026gt; parse_int(const std::string\u0026amp; str, const toml::source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static toml::result\u0026lt;floating_type, toml::error_info\u0026gt; parse_float(const std::string\u0026amp; str, const toml::source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; "},{"id":9,"href":"/toml11/ja/docs/features/literal/","title":"toml literal","section":"features","content":" _tomlリテラル # \u0026quot;\u0026quot;_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = 42\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); return 0; } 改行を含む場合、生文字列リテラルが便利です。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(v.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } 値が単体で書かれていた場合、その値が返されます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto a = \u0026#34;42\u0026#34;_toml; const auto b = \u0026#34;12:34:56\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(v.at(\u0026#34;b\u0026#34;).as_local_time().hour == 12); assert(v.at(\u0026#34;b\u0026#34;).as_local_time().minute == 34); assert(v.at(\u0026#34;b\u0026#34;).as_local_time().second == 56); return 0; } TOMLは数値のみからなるキーを許可しています。 よって、[1]はテーブル名として合法です。\n[1]のようにテーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。\n配列として解釈させるには、trailing commaを使用してください。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto t = \u0026#34;[1]\u0026#34;_toml; // {1 = {}} const auto a = \u0026#34;[1,]\u0026#34;_toml; // [1,] assert(t.is_table()); assert(t.at(\u0026#34;1\u0026#34;).is_table()); assert(a.is_array()); assert(a.at(0).as_integer() == 1); return 0; } "},{"id":10,"href":"/toml11/ja/docs/features/toml_spec/","title":"toml spec","section":"features","content":" TOML言語バージョン # toml::spec によって、 toml::parse や toml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。\nTOMLのバージョンを指定する # toml::spec は toml::semantic_version から構築できます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } ですがこれは長いので、toml::spec::v()関数が用意されています。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } 特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。\nデフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。\nv4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。\nTOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。\n実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。\nそのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。\nバージョン指定でパースする # toml::parse のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。\nこれによって、使用するTOMLバージョンを変更できます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); return 0; } バージョン指定でシリアライズする # toml::format のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。\nこれによって、使用するTOMLバージョンを変更できます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); std::cout \u0026lt;\u0026lt; toml::format(v, toml::spec::v(1, 1, 0)) \u0026lt;\u0026lt; std::endl; return 0; } もしフォーマット変数などによって指定されているフォーマットが渡された toml::spec では許可されていないものだった場合、指定は無視されて他のフォーマットにフォールバックされます。\nTOMLに追加された新機能を個別に指定する # TOMLのバージョンアップで追加された機能は複数あり、そのうちの一部だけを有効にすることが可能です。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 0, 0); // インラインテーブル内での改行を許可 spec.v1_1_0_allow_newlines_in_inline_tables = true; toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, spec); return 0; } 全てのフラグのリストは、 toml::spec を参照してください。\n"},{"id":11,"href":"/toml11/ja/docs/features/extension/","title":"extension","section":"features","content":" TOML言語拡張 # TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 v1.1.0に向けて議論が続いています。\nそこで議論された機能の中には、有用なケースが少ないと考えられたものや、 提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。\ntoml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また サポートされる予定もないことに注意してください。\nまた、これらの機能はデフォルトで使用されない設定になっており、 使用するためには機能フラグをそれぞれ true にしなければなりません。 非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。\nいくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は 本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。\nnull # TOMLファイル内で値としてnullを使えるようになります。\na = null b = [ 1, 2, 3, null, 5] これを使用するには、 toml::spec の ext_null_value を true にします。\nパースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 ただし、ファイル内の位置情報は設定されます。\nnull は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り \u0026quot;null\u0026quot; という文字列のキーとして解釈されます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(\u0026#34;a = null\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_empty()); assert(v.at(\u0026#34;a\u0026#34;).is(toml::value_t::empty)); return 0; } 浮動小数点数の16進数フォーマット # TOMLファイル内で浮動小数点数に16進数フォーマットを使用できるようになります。\na = 0x1.91eb851eb851fp+1 # 3.14 これを使用するには、 toml::spec の ext_hex_float を true にします。\nフォーマットは printf で %a/%A を指定した場合に準拠します。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 0x1.91eb851eb851fp+1\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_floating()); assert(v.at(\u0026#34;a\u0026#34;).as_floating() == 3.14); return 0; } 整数・浮動小数点数のsuffix # TOMLファイル内で数値の後ろにsuffixをつけられるようになります。 10進数表記の整数と浮動小数点数で使用できます。\n単位を表示するときなどに便利です。\na = 86_400_sec b = 3.1416_rad c = 10_μm ですが、これらはあくまで単なる suffix であり、単位換算は行われません。 単位換算が必要な場合は、ユーザーが suffix を参照して実装してください。\nこれを使用するには、 toml::spec の ext_num_suffix を true にします。\n数値と接尾辞の間は_で区切られている必要があります。\n数値部分との区別のため、suffixは数値で始まることはできません。\ndistance = 100_m # valid distance = 10_0m # invalid distance = 10_0_m # valid 接尾辞はstd::string suffixとしてフォーマット情報に保持されます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 86_400_sec\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_integer()); assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 86400); assert(v.at(\u0026#34;a\u0026#34;).as_integer_fmt().suffix == \u0026#34;sec\u0026#34;); return 0; } "},{"id":12,"href":"/toml11/ja/docs/reference/color/","title":"color.hpp","section":"reference","content":" color.hpp # color.hppでは、エラーメッセージの色付けに関する関数が定義されます。\n色はANSIエスケープシーケンスによって指定されます。 ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。\nマクロ # TOML11_COLORIZE_ERROR_MESSAGE コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 デフォルトでエラーメッセージに色が付きます。\n定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を 使用して指定する必要があります。\n関数 # enable() # namespace toml { namespace color { void enable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行うよう設定します。\n例 # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行わないよう設定します。\n例 # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } should_color() # namespace toml { namespace color { bool should_color(); } // color } // toml 色付けを行う設定になっている場合trueが、そうでない場合falseが返されます。\n例 # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iomanip\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; \u0026#34;colorized? : \u0026#34; \u0026lt;\u0026lt; std::boolalpha \u0026lt;\u0026lt; toml::color::should_color() \u0026lt;\u0026lt; std::endl; return 0; } マニピュレータ # namespace toml { namespace color { std::ostream\u0026amp; reset (std::ostream\u0026amp;); std::ostream\u0026amp; bold (std::ostream\u0026amp;); std::ostream\u0026amp; grey (std::ostream\u0026amp;); std::ostream\u0026amp; gray (std::ostream\u0026amp;); std::ostream\u0026amp; red (std::ostream\u0026amp;); std::ostream\u0026amp; green (std::ostream\u0026amp;); std::ostream\u0026amp; yellow (std::ostream\u0026amp;); std::ostream\u0026amp; blue (std::ostream\u0026amp;); std::ostream\u0026amp; magenta(std::ostream\u0026amp;); std::ostream\u0026amp; cyan (std::ostream\u0026amp;); std::ostream\u0026amp; white (std::ostream\u0026amp;); } // color } // toml ANSIエスケープシーケンスによって、fgを色付けします。\n例 # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;red!\u0026#34; \u0026lt;\u0026lt; std::endl; return 0; } 関連項目 # error_info.hpp "},{"id":13,"href":"/toml11/ja/docs/reference/comments/","title":"comments.hpp","section":"reference","content":" comments.hpp # color.hppでは、コメントを保持するクラスが提供されます。\ntoml::preserve_comments # preserve_commentsは、コメントを保持するコンテナです。\nstd::vector\u0026lt;std::string\u0026gt;が持つメンバ関数を全て持っています。\nコメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。\nnamespace toml { class preserve_comments; bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); } //toml メンバ型 # using container_type = std::vector\u0026lt;std::string\u0026gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; メンバ関数 # デフォルトコンストラクタ # preserve_comments() = default; 空のpreserve_commentsを構築します。\nコピー・ムーブコンストラクタ # preserve_comments(preserve_comments const\u0026amp;) = default; preserve_comments(preserve_comments \u0026amp;\u0026amp;) = default; preserve_commentsをコピー・ムーブ構築します。\nコンストラクタ(std::vector\u0026lt;std::string\u0026gt;) # explicit preserve_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit preserve_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); std::vector\u0026lt;std::string\u0026gt;の内容を持つpreserve_commentsを構築します。\nコンストラクタ(discard_comments) # explicit preserve_comments(const discard_comments\u0026amp;); 空のpreserve_commentsを構築します。\nコンストラクタ(Iterator) # template\u0026lt;typename InputIterator\u0026gt; preserve_comments(InputIterator first, InputIterator last); std::stringを指すInputIteratorが表す範囲からpreserve_commentsを構築します。\nコンストラクタ(std::initializer_list) # preserve_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); std::initializer_list\u0026lt;std::string\u0026gt;が表す範囲からpreserve_commentsを構築します。\nコンストラクタ(サイズ指定) # explicit preserve_comments(size_type n); preserve_comments(size_type n, const std::string\u0026amp; x); n個のコメントを持つpreserve_commentsを構築します。\nstd::stringを渡した場合、そのコメントをn個に複製します。\nデストラクタ # ~preserve_comments() = default; preserve_commentsを破棄します。\noperator=(preserve_comments) # preserve_comments\u0026amp; operator=(preserve_comments const\u0026amp;) = default; preserve_comments\u0026amp; operator=(preserve_comments \u0026amp;\u0026amp;) = default; preserve_commentsをコピー・ムーブ代入します。\noperator=(std::vector\u0026lt;std::string\u0026gt;) # preserve_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); preserve_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); std::vector\u0026lt;std::string\u0026gt;をコピー・ムーブ代入します。\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); std::vector\u0026lt;std::string\u0026gt;::assignと同等の効果を持ちます。\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); std::vector\u0026lt;std::string\u0026gt;::insertと同等の効果を持ちます。\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); std::vector\u0026lt;std::string\u0026gt;::insertと同等の効果を持ちます。\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); std::vector\u0026lt;std::string\u0026gt;::insertと同等の効果を持ちます。\nswap # void swap(preserve_comments\u0026amp; other); 他のpreserve_commentsと内容を交換します。\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); std::vector\u0026lt;std::string\u0026gt;::push_backと同等の効果を持ちます。\npop_back # void pop_back(); std::vector\u0026lt;std::string\u0026gt;::pop_backと同等の効果を持ちます。\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); std::vector\u0026lt;std::string\u0026gt;::emplace_backと同等の効果を持ちます。\nclear # void clear(); std::vector\u0026lt;std::string\u0026gt;::clearと同等の効果を持ちます。\nsize # size_type size() const noexcept; std::vector\u0026lt;std::string\u0026gt;::sizeと同等の効果を持ちます。\nmax_size # size_type max_size() const noexcept; std::vector\u0026lt;std::string\u0026gt;::max_sizeと同等の効果を持ちます。\ncapacity # size_type capacity() const noexcept; std::vector\u0026lt;std::string\u0026gt;::capacityと同等の効果を持ちます。\nempty # bool empty() const noexcept; std::vector\u0026lt;std::string\u0026gt;::emptyと同等の効果を持ちます。\nreserve # void reserve(size_type n); std::vector\u0026lt;std::string\u0026gt;::reserveと同等の効果を持ちます。\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); std::vector\u0026lt;std::string\u0026gt;::resizeと同等の効果を持ちます。\nshrink_to_fit # void shrink_to_fit(); std::vector\u0026lt;std::string\u0026gt;::shrink_to_fitと同等の効果を持ちます。\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; std::vector\u0026lt;std::string\u0026gt;::operator[]と同等の効果を持ちます。\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; std::vector\u0026lt;std::string\u0026gt;::atと同等の効果を持ちます。\nfront # reference front() noexcept; const_reference front() const noexcept; std::vector\u0026lt;std::string\u0026gt;::frontと同等の効果を持ちます。\nback # reference back() noexcept; const_reference back() const noexcept; std::vector\u0026lt;std::string\u0026gt;::backと同等の効果を持ちます。\ndata # pointer data() noexcept; const_pointer data() const noexcept; std::vector\u0026lt;std::string\u0026gt;::dataと同等の効果を持ちます。\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; std::vector\u0026lt;std::string\u0026gt;::begin/endと同等の効果を持ちます。\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; std::vector\u0026lt;std::string\u0026gt;::rbegin/rendと同等の効果を持ちます。\n非メンバ関数 # 比較演算子 # bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); std::vector\u0026lt;std::string\u0026gt;と同様に比較を行います。\nswap # void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); ストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); コメントとして出力します。\n先頭が#でない場合、#が補われます。\ntoml::discard_comments # discard_commentsは、コメントを破棄するコンテナです。\nstd::vector\u0026lt;std::string\u0026gt;が持つメンバ関数を全て持っていますが、内容を変更する関数を呼び出しても何も効果はなく、常に空になります。\nnamespace toml { class discard_comments; bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); } //toml メンバ型 # // container_type is not defined using size_type = std::size_t; using difference_type = std::ptrdiff_t; using value_type = std::string; using reference = std::string\u0026amp;; using const_reference = std::string const\u0026amp;; using pointer = std::string*; using const_pointer = std::string const*; using iterator = /* internal type: empty-iterator */ using const_iterator = /* internal type: empty-iterator */ using reverse_iterator = /* internal type: empty-iterator */ using const_reverse_iterator = /* internal type: empty-iterator */ デフォルトコンストラクタ # discard_comments() = default; 空のdiscard_commentsを構築します。\nコピー・ムーブコンストラクタ # discard_comments(discard_comments const\u0026amp;) = default; discard_comments(discard_comments \u0026amp;\u0026amp;) = default; discard_commentsをコピー・ムーブ構築します。\nコンストラクタ(std::vector\u0026lt;std::string\u0026gt;) # explicit discard_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit discard_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(preserve_comments) # explicit discard_comments(const preserve_comments\u0026amp;); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(Iterator) # template\u0026lt;typename InputIterator\u0026gt; discard_comments(InputIterator first, InputIterator last); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(std::initializer_list) # discard_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(サイズ指定) # explicit discard_comments(size_type n); discard_comments(size_type n, const std::string\u0026amp; x); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nデストラクタ # ~discard_comments() = default; discard_commentsを破棄します。\noperator=(discard_comments) # discard_comments\u0026amp; operator=(discard_comments const\u0026amp;) = default; discard_comments\u0026amp; operator=(discard_comments \u0026amp;\u0026amp;) = default; discard_commentsをコピー・ムーブ代入します。\noperator=(std::vector\u0026lt;std::string\u0026gt;) # discard_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); discard_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); 何もしません。引数の内容は無視されます。\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); 何もしません。引数の内容は無視されます。\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); 何もしません。引数の内容は無視されます。\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); 何もしません。引数の内容は無視されます。\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); 何もしません。引数の内容は無視されます。\nswap # void swap(discard_comments\u0026amp; other); 他のdiscard_commentsと内容を交換します。\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); 何もしません。引数の内容は無視されます。\npop_back # void pop_back(); 何もしません。引数の内容は無視されます。\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); 何もしません。引数の内容は無視されます。\nclear # void clear(); 何もしません。引数の内容は無視されます。\nsize # size_type size() const noexcept; 常に0を返します。\nmax_size # size_type max_size() const noexcept; 常に0を返します。\ncapacity # size_type capacity() const noexcept; 常に0を返します。\nempty # bool empty() const noexcept; 常にtrueを返します。\nreserve # void reserve(size_type n); 何もしません。引数の内容は無視されます。\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); 何もしません。引数の内容は無視されます。\nshrink_to_fit # void shrink_to_fit(); 何もしません。引数の内容は無視されます。\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; 未定義動作です。\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; std::out_of_rangeを送出します。\nfront # reference front() noexcept; const_reference front() const noexcept; 未定義動作です。\nback # reference back() noexcept; const_reference back() const noexcept; 未定義動作です。\ndata # pointer data() noexcept; const_pointer data() const noexcept; 常にnullptrを返します。\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; 内部で定義されたempty-iteratorを返します。\nempty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。\nempty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; 内部で定義されたempty-iteratorを返します。\nempty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。\nempty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。\n非メンバ関数 # 比較演算子 # bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); discard_commentsは全て同じ値です。==には常にtrueを、!=には常にfalseを返します。\nswap # void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); 二つのdiscard_commentsを交換します。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); 何も出力しません。\n関連項目 # value.hpp "},{"id":14,"href":"/toml11/ja/docs/reference/conversion/","title":"conversion.hpp","section":"reference","content":" conversion.hpp # toml::getやtoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。\nTOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) 例 # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) 関連項目 # from.hpp into.hpp "},{"id":15,"href":"/toml11/ja/docs/reference/datetime/","title":"datetime.hpp","section":"reference","content":" datetime.hpp # TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。\nenum class month_t # 月を指定するenum classです。\nstd::tmとの関係で、local_dateは1月を0としています。 混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。\nnamespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # 日付を保持する構造体です。\nyearは西暦を、monthはstd::tmとの対応のため1月を0として、dayは日付を保持します。\nnamespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm\u0026amp; t); explicit local_date(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); std::string to_string(const local_date\u0026amp; date); } メンバ変数 # year # std::int16_t year; 西暦です。オフセットはありません。2024年は2024です。\nmonth # std::uint8_t month; 月を表します。std::tmとの対応のため、1月は0, 2月は1と続きます。\n混乱を避けるため、構築の際はmonth_tを使用します。\nday # std::uint8_t day; 日付を表します。1日は1です。\nメンバ関数 # コンストラクタ # local_date() = default; デフォルト実装を使用します。\nデストラクタ # ~local_date() = default; デフォルト実装を使用します。\nコピー・ムーブコンストラクタ # local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; デフォルト実装を使用します。\nコピー・ムーブ代入演算子 # local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; デフォルト実装を使用します。\nコンストラクタ(int year, month_t month, int day) # local_date(int y, month_t m, int d); 指定した値からlocal_dateを構築します。\n境界チェックなどは行いません。\nコンストラクタ(std::tm) # local_date(const std::tm\u0026amp;); 指定した値からlocal_dateを構築します。\nコンストラクタ(std::chrono::system_clock::time_point) # local_date(const std::chrono::system_clock::time_point\u0026amp;); 指定した値からlocal_dateを構築します。\nタイムゾーンは実行環境でのものが選択されます。\nコンストラクタ(std::time_t) # local_date(const std::time_t); 指定した値からlocal_dateを構築します。\nタイムゾーンは実行環境でのものが選択されます。\noperator std::chrono::system_clock::time_point # operator std::chrono::system_clock::time_point() const; std::chrono::system_clock::time_pointに変換します。\nタイムゾーンは実行環境でのものが選択されます。\n時刻は0時00分とします。\noperator std::time_t # operator std::time_t() const; std::time_tに変換します。\nタイムゾーンは実行環境でのものが選択されます。\n時刻は0時00分とします。\n非メンバ関数 # 比較演算子 # bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); 日付の順序によって比較します。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const local_date\u0026amp; date); TOMLのデフォルトのフォーマットで文字列化します。\nlocal_time # namespace toml { struct local_time { std::uint8_t hour; // [0, 23] std::uint8_t minute; // [0, 59] std::uint8_t second; // [0, 60] std::uint16_t millisecond; // [0, 999] std::uint16_t microsecond; // [0, 999] std::uint16_t nanosecond; // [0, 999] local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); explicit local_time(const std::tm\u0026amp; t); template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); operator std::chrono::nanoseconds() const; local_time() = default; ~local_time() = default; local_time(local_time const\u0026amp;) = default; local_time(local_time\u0026amp;\u0026amp;) = default; local_time\u0026amp; operator=(local_time const\u0026amp;) = default; local_time\u0026amp; operator=(local_time\u0026amp;\u0026amp;) = default; }; bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); std::string to_string(const local_time\u0026amp; time); } メンバ変数 # hour # std::uint8_t hour; 時間を表します。0から23の値を取ります。\nminute # std::uint8_t minute; // [0, 59] 分を表します。0から59の値を取ります。\nsecond # std::uint8_t second; // [0, 60] 秒を表します。0から60の値を取ります。\nmillisecond # std::uint16_t millisecond; // [0, 999] ミリ秒を表します。0から999の値を取ります。\nmicrosecond # std::uint16_t microsecond; // [0, 999] マイクロ秒を表します。0から999の値を取ります。\nnanosecond # std::uint16_t nanosecond; // [0, 999] ナノ秒を表します。0から999の値を取ります。\nメンバ関数 # デフォルトコンストラクタ # local_time() = default; 全ての値を0で初期化します。\nコンストラクタ(h, m, s, ms = 0, us = 0, ns = 0) # local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); 指定された時刻を使って構築します。\n境界チェックは行われません。\nコンストラクタ(std::tm) # explicit local_time(const std::tm\u0026amp; t); std::tmのtm_hour, tm_min, tm_secを使って構築します。\nサブセコンドは全て0で初期化されます。\nコンストラクタ(std::chrono::duration) # template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); durationをその日の0時からの時間として構築します。\noperator std::chrono::nanoseconds # operator std::chrono::nanoseconds() const; std::chrono::nanosecondsへ変換します。\n非メンバ関数 # 比較演算子 # bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); 時刻の値によって比較を行います。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const local_time\u0026amp; time); TOMLのデフォルトのフォーマットで文字列化します。\ntime_offset # namespace toml { struct time_offset { std::int8_t hour{0}; // [-12, 12] std::int8_t minute{0}; // [-59, 59] time_offset(int h, int m); operator std::chrono::minutes() const; time_offset() = default; ~time_offset() = default; time_offset(time_offset const\u0026amp;) = default; time_offset(time_offset\u0026amp;\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset const\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset\u0026amp;\u0026amp;) = default; }; bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp; offset); std::string to_string(const time_offset\u0026amp; offset); } メンバ変数 # hour # std::int8_t hour{0}; // [-12, 12] 時間のオフセットです。-12から+12の範囲の値を取ります。\nminute # std::int8_t minute{0}; // [-59, 59] 分のオフセットです。-59から+59の範囲の値を取ります。\nメンバ関数 # コンストラクタ # time_offset(int h, int m); 時間と分を取って構築します。\n境界チェックは行いません。\noperator std::chrono::minutes # operator std::chrono::minutes() const; std::chrono::minutesへの変換を行います。\n非メンバ関数 # 比較演算子 # bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); 時刻の長さで比較します。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp;); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const time_offset\u0026amp;); TOMLのデフォルトのフォーマットで文字列化します。\nlocal_datetime # namespace toml { struct local_datetime { local_date date; local_time time; local_datetime(local_date d, local_time t); explicit local_datetime(const std::tm\u0026amp; t); explicit local_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_datetime(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; local_datetime() = default; ~local_datetime() = default; local_datetime(local_datetime const\u0026amp;) = default; local_datetime(local_datetime\u0026amp;\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime const\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp; dt); std::string to_string(const local_datetime\u0026amp; dt); } メンバ変数 # local_date date # local_date date; 日付部分のデータを保持します。\nlocal_time time # local_time time; 時刻部分のデータを保持します。\nメンバ関数 # デフォルトコンストラクタ # date, timeの双方をデフォルト構築します。\nコンストラクタ(local_date, local_time) # 指定されたdateとtimeで構築します。\nコンストラクタ(std::tm) # std::tmから構築します。\nタイムゾーンは実行環境でのものが選択されます。\nコンストラクタ(std::chrono::system_clock::time_point) # std::chrono::system_clock::time_pointから構築します。\nタイムゾーンは実行環境でのものが選択されます。\nコンストラクタ(std::time_t) # std::time_tから構築します。\nタイムゾーンは実行環境でのものが選択されます。\noperator std::chrono::system_clock::time_point # std::chrono::system_clock::time_pointへ変換します。\noperator std::time_t # std::time_tへ変換します。\n非メンバ関数 # 比較演算子 # bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); 日付順で比較します。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp;); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const local_datetime\u0026amp;); TOMLのデフォルトのフォーマットで文字列化します。\noffset_datetime # namespace toml { struct offset_datetime { local_date date; local_time time; time_offset offset; offset_datetime(local_date d, local_time t, time_offset o); offset_datetime(const local_datetime\u0026amp; dt, time_offset o); explicit offset_datetime(const local_datetime\u0026amp; ld); explicit offset_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit offset_datetime(const std::time_t\u0026amp; t); explicit offset_datetime(const std::tm\u0026amp; t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; offset_datetime() = default; ~offset_datetime() = default; offset_datetime(offset_datetime const\u0026amp;) = default; offset_datetime(offset_datetime\u0026amp;\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime const\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp; dt); std::string to_string(const offset_datetime\u0026amp; dt); } メンバ変数 # date # local_date date; 日付部分のデータを保持します。\ntime # local_time time; 時刻部分のデータを保持します。\noffset # time_offset offset; オフセット部分のデータを保持します。\nメンバ関数 # デフォルトコンストラクタ # date, time, offsetを全てデフォルト構築します。\nコンストラクタ(local_date, local_time, time_offset) # 指定されたdate, time, offsetで構築します。\nコンストラクタ(local_datetime, time_offset) # local_datetimeとoffsetから構築します。\nコンストラクタ(std::tm) # std::tmから構築します。\nタイムゾーンはUTC(00:00)になります。\nコンストラクタ(std::chrono::system_clock::time_point) # std::chrono::system_clock::time_pointから構築します。\nタイムゾーンはUTC(00:00)になります。\nコンストラクタ(std::time_t) # std::time_tから構築します。\nタイムゾーンはUTC(00:00)になります。\noperator std::chrono::system_clock::time_point # std::chrono::system_clock::time_pointへ変換します。\nタイムゾーンはUTC(00:00)になります。\noperator std::time_t # std::time_tへ変換します。\nタイムゾーンはUTC(00:00)になります。\n非メンバ関数 # 比較演算子 # bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); 日付順で比較します。\n同じ日付の場合、タイムゾーン順で比較されます。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp;); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const offset_datetime\u0026amp;); TOMLのデフォルトのフォーマットで文字列化します。\n"},{"id":16,"href":"/toml11/ja/docs/reference/error_info/","title":"error_info.hpp","section":"reference","content":" error_info.hpp # error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。\ntoml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = \u0026#34;\u0026#34;); error_info(std::string t, std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; l, std::string s = \u0026#34;\u0026#34;); std::string const\u0026amp; title() const noexcept; std::string \u0026amp; title() noexcept; std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; const\u0026amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const\u0026amp; suffix() const noexcept; std::string \u0026amp; suffix() noexcept; }; template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); } メンバ関数 # コンストラクタ(title, loc, msg, suffix) # 指定されたタイトル、位置情報、メッセージ、suffixからerror_infoを構築します。\nsuffixはデフォルトで空です。\nコンストラクタ(title, [{loc, msg}, ...], suffix) # 指定されたタイトル、位置情報とメッセージの配列、そしてsuffixからerror_infoを構築します。\nsuffixはデフォルトで空です。\nメンバ関数 # std::string title() # エラーメッセージのタイトルです。\nstd::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; locations() # エラーの発生した位置とそれに関するメッセージです。\n複数指定可能です。\nstd::string suffix() # 最後に表示するメッセージです。ヒントや補足を表示します。\n非メンバ関数 # make_error_info # template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); 新しくerror_infoを構築します。\nsource_locationまたはbasic_valueの後には、それに関するmsgが続かなければなりません。\nvalue.hpp では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。\n末尾にはsuffixを渡すことが可能です。\nformat_error # error_info を以下のようにフォーマットします。\n{title} --\u0026gt; {locations().at(0).first.file_name()} | 1 | {locations().at(0).first.line()} | ^-- {locations().at(0).second} | 2 | {locations().at(1).first.line()} | ^-- {locations().at(1).second} {suffix} 二つの source_location のファイル名が異なる場合は、ファイル名が再度表示されます。\nstd::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); error_infoをフォーマットします。\nerrkindが与えられなかった場合、赤色太字の[error]がtitleの前につけ足されます。\nerrkindが与えられた場合(空文字列の場合も含みます)、それが[error]の代わりに表示されます。\nnamespace toml { template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); } // toml make_error_info を使って作成した error_info を format_error でフォーマットした文字列を返します。\nvalue.hpp では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); format_error(e)を呼び出し、それを出力します。\n関連項目 # color.hpp parser.hpp source_location.hpp "},{"id":17,"href":"/toml11/ja/docs/reference/exception/","title":"exception.hpp","section":"reference","content":" exception.hpp # toml::exception # toml11で定義される例外型の基底クラスです。\nnamespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} }; } // toml メンバ関数 # デストラクタ # virtual ~exception() noexcept override = default; 派生する際に上書きします。\nwhat # virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} エラーメッセージを返します。派生する際に上書きします。\n"},{"id":18,"href":"/toml11/ja/docs/reference/find/","title":"find.hpp","section":"reference","content":" find.hpp # toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。\ntoml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 厳密には全て toml::basic_value\u0026lt;TC\u0026gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::find # 概要 # toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。\ntemplate\u0026lt;typename T, typename TC, typename ... Keys\u0026gt; T find(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, Keys ... keys); サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。\nT が指定されなかった場合、 toml::value が返されます。\nキーは、 toml::value::key_type または std::size_t です。 複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。\n再帰的な検索に関しての注意 # TOMLには通常の bare key の他に、 \u0026quot; や ' で囲まれた quoted key というものがあります。 quoted key を使うと、 \u0026quot;foo.bar\u0026quot; = \u0026quot;baz\u0026quot; というようなキーを書くことができ、この場合はサブテーブルは構築されず、キーは foo.barとなります。 このようなパターンに対応するため、toml11ではキーの中に.が含まれていても分割は行わず、そのままの文字列で検索を行います。\n以下のTOMLファイルを考えます。\n[foo] [foo.bar] baz = \u0026#34;hoge\u0026#34; [\u0026#34;foo.bar\u0026#34;] baz = \u0026#34;fuga\u0026#34; これに対応するtoml::findの書き方は以下の通りです。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto baz1 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;, \u0026#34;baz\u0026#34;); // hoge const auto baz2 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo.bar\u0026#34;, \u0026#34;baz\u0026#34;); // fuga 参考:toml.io/ja/v1.0.0#キー\ntoml::find(value, key) # value を toml::table として key を検索したあと、 toml::get で変換を行います。\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) と同等 */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); Tが指定されない場合は、変換を行わずtoml::valueを返します。\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find( basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); 例外 # toml::value が table を保持していなかった場合、 toml::type_error が送出されます。\n格納している table が指定された要素を持っていなかった場合、 std::out_of_range が送出されます。\n指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 toml::type_error が送出されます。\ntoml::find(value, index) # value を toml::array として index 番目にアクセスし、 toml::get で変換を行います。\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) と同等 */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t index); Tが指定されない場合は、変換を行わずtoml::valueを返します。\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find(basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t ky); 例外 # toml::value が array を保持していなかった場合、 toml::type_error が送出されます。\n格納している array が指定された数の要素を持っていなかった場合、std::out_of_rangeが送出されます。\n指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 toml::type_error が送出されます。\ntoml::find(value, keys...) # template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) と同等 */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); 再帰的にtoml::findが呼び出されます。\n失敗する条件とその際に送出される例外は toml::find と同じです。\ntoml::find_or(value, key, fallback) # template\u0026lt;typename T, typename TC, typename Key\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const Key\u0026amp; key, T\u0026amp;\u0026amp; opt); find_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。\nこのデフォルト値は受け取る型Tと同じ型でなければなりません。 よって、 toml::find\u0026lt;T\u0026gt; とは違って、 find_or では T を指定せずとも推論されます。\nfind_or\u0026lt;T\u0026gt;のように T を指定することもできますが、その場合は常に新規な値が返されます。 参照を取得したい場合は、 T を指定しないでください。\nTがbasic_valueである場合 # template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept 対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。\n値が見つからなかった場合、デフォルト値を返します。\nTがtoml::value::{some_type}である場合 # template\u0026lt;typename T, typename TC, typename K\u0026gt; T\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC, typename K\u0026gt; T const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const T\u0026amp; opt) noexcept 対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。\n値が見つからなかった場合、あるいは異なる型が格納されていた場合、デフォルト値を返します。\nTがconst char*である場合 # template\u0026lt;typename TC, typename K\u0026gt; std::string find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; k, const char* opt) 対応する値を検索し、 std::string として返します。\n失敗時に const char* から std::string を構築するため、参照を返すことはできません。\nTがその他の型である場合 # template\u0026lt;typename T, typename TC, typename K\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T opt) 対応する値を検索し、 T に変換して返します。\n変換を行うため、参照を返すことはできません。\n複数のキーが与えられた場合 # template\u0026lt;typename Value, typename K1, typename K2, typename K3, typename ... Ks\u0026gt; auto find_or(Value\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, K3\u0026amp;\u0026amp; k3, Ks\u0026amp;\u0026amp; ... keys) noexcept -\u0026gt; decltype(find_or(v, k2, std::forward\u0026lt;K3\u0026gt;(k3), std::forward\u0026lt;Ks\u0026gt;(keys)...)) キーの列の最後の要素がデフォルト値であると解釈して、再帰的にfind_orを適用します。\nT の推論結果が toml::value または toml::value::some_type になる場合、参照を返すことができます。\nT を明示的に指定した場合、常に変換を行います。\n関連項目 # get.hpp value.hpp "},{"id":19,"href":"/toml11/ja/docs/reference/format/","title":"format.hpp","section":"reference","content":" format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。\nindent_char # インデント情報を表す列挙体です。\nenum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const indent_char\u0026amp; c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。\nシリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。\nboolean_format_info # booleanのフォーマット情報です。\nstruct boolean_format_info {}; bool operator==(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; bool operator!=(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。\ninteger_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。\ninteger_format_info # struct integer_format_info { integer_format fmt = integer_format::dec; bool uppercase = true; // use uppercase letters std::size_t width = 0; // minimal width (may exceed) std::size_t spacer = 0; // position of `_` (if 0, no spacer) std::string suffix = \u0026#34;\u0026#34;; // _suffix (library extension) }; bool operator==(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; bool operator!=(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; メンバ変数 # integer_format fmt # 基数を指定します。\nbool uppercase # 16進数表記で大文字を使用します。\nstd::size_t width # 最小の幅を指定します。値によってはこの幅を超えることがあります。\nフォーマットした値がこの幅よりも小さい場合、integer_format::decの場合は効果はありませんが、それ以外の場合は先頭にリーディング0が追加されます。\nstd::size_t spacer # アンダースコア_を追加する幅を指定します。\n3の場合1_234_567のように、4の場合0xdead_beefのようにフォーマットされます。\n0の場合、アンダースコアは挿入されません。\n不規則な幅を指定することはできません。\nstd::string suffix # toml11拡張のspec::ext_num_suffixをtrueにしている場合、そのsuffixがここに保存されます。\n参考:spec.hpp\nfloating_format # enum class floating_format : std::uint8_t { defaultfloat = 0, fixed = 1, // does not include exponential part scientific = 2, // always include exponential part hex = 3 // hexfloat extension }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const floating_format f); std::string to_string(const floating_format); floatingのフォーマット形式を指定します。 それぞれ、std::defaultfloat, std::fixed, std::scientific, std::hexfloatに対応します。\nhexfloatは、toml::spec::ext_hex_floatがtrueの場合のみ使用可能です。\n参考:spec.hpp\nfloating_format_info # struct floating_format_info { floating_format fmt = floating_format::defaultfloat; std::size_t prec = 0; // precision (if 0, use the default) std::string suffix = \u0026#34;\u0026#34;; // 1.0e+2_suffix (library extension) }; bool operator==(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; bool operator!=(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; メンバ変数 # floating_format fmt # フォーマット形式を指定します。\nstd::size_t prec # 小数点以下の精度を指定します。\nstd::string suffix # toml11拡張のspec::ext_num_suffixをtrueにしている場合、そのsuffixがここに保存されます。\n参考:spec.hpp\nstring_format # enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const string_format f); std::string to_string(const string_format); 文字列のフォーマット形式を指定します。\nstring_format_info # struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; bool operator==(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; bool operator!=(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; メンバ変数 # string_format fmt # 文字列のフォーマット情報を指定します。\nbool start_with_newline # multiline_basicまたはmultiline_literalの場合、最初の\u0026quot;\u0026quot;\u0026quot;や'''の後に改行を入れるかどうかを指定します。\ndatetime_delimiter_kind # enum class datetime_delimiter_kind : std::uint8_t { upper_T = 0, lower_t = 1, space = 2, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const datetime_delimiter_kind d); std::string to_string(const datetime_delimiter_kind); datetimeで日付と時刻の間のデリミタにどの文字を使うかを指定します。\nT, t, が使用可能です。\noffset_datetime_format_info # struct offset_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; bool operator!=(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; メンバ変数 # datetime_delimiter_kind delimiter # 使用するデリミタを指定します。\nbool has_seconds # 秒数を省略するかどうかを指定します。\nstd::size_t subsecond_precision # 秒以下の精度を何桁出力するかを指定します。\nlocal_datetime_format_info # struct local_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; bool operator!=(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; メンバ変数 # datetime_delimiter_kind delimiter # 使用するデリミタを指定します。\nbool has_seconds # 秒数を省略するかどうかを指定します。\nstd::size_t subsecond_precision # 秒以下の精度を何桁出力するかを指定します。\nlocal_date_format_info # struct local_date_format_info { // nothing, for now }; bool operator==(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; bool operator!=(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; local_datetimeにはフォーマット指定するパラメータはありません。\nlocal_time_format_info # struct local_time_format_info { bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; bool operator!=(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; メンバ変数 # bool has_seconds # 秒数を省略するかどうかを指定します。\nstd::size_t subsecond_precision # 秒以下の精度を何桁出力するかを指定します。\narray_format # enum class array_format : std::uint8_t { default_format = 0, oneline = 1, multiline = 2, array_of_tables = 3 // [[format.in.this.way]] }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const array_format f); std::string to_string(const array_format); default_format 適したフォーマットを自動的に選択します。ある程度長い配列は複数行になります。 oneline 全ての要素を一行でフォーマットします。 multiline 一行ごとに一つの要素を出力します。 array_of_tables [[array.of.tables]]の形式でフォーマットします。table以外の要素を含むことはできません。 array_format_info # struct array_format_info { array_format fmt = array_format::default_format; indent_char indent_type = indent_char::space; std::int32_t body_indent = 4; // indent in case of multiline std::int32_t closing_indent = 0; // indent of `]` }; bool operator==(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; bool operator!=(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; メンバ変数 # array_format fmt # フォーマット形式を指定します。\nindent_char indent_type # インデントに使用する文字の種類を選択します。\nstd::int32_t body_indent # array_format::multilineの場合、要素の前に出力するインデントの文字数を指定します。\nstd::int32_t closing_indent # array_format::multilineの場合、閉じ括弧]の前に出力するインデントの文字数を指定します。\ntable_format # enum class table_format : std::uint8_t { multiline = 0, // [foo] \\n bar = \u0026#34;baz\u0026#34; oneline = 1, // foo = {bar = \u0026#34;baz\u0026#34;} dotted = 2, // foo.bar = \u0026#34;baz\u0026#34; multiline_oneline = 3, // foo = { \\n bar = \u0026#34;baz\u0026#34; \\n } implicit = 4 // [x] defined by [x.y.z]. skip in serializer. }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const table_format f); std::string to_string(const table_format); multiline 複数行の通常のテーブルとしてフォーマットします。 oneline インラインテーブルとしてフォーマットします。 dotted a.b.c = \u0026quot;d\u0026quot;の形式でフォーマットします。 multiline_oneline 改行を含むインラインテーブルとしてフォーマットします。TOML v1.1.0以降で使用可能です。 参考:spec.hpp implicit [x.y.z.w]だけが定義されている際の[x], [x.y], [x.y.z]のように、暗黙定義としてスキップします。 TOMLの文法上、dottedはサブテーブルを持つことができます。\n[fruit] apple.color = \u0026#34;red\u0026#34; apple.taste.sweet = true # [fruit.apple] # INVALID # [fruit.apple.taste] # INVALID [fruit.apple.texture] # you can add sub-tables smooth = true toml11は現時点ではこのフォーマットに対応していません。 dottedテーブルの下にあるテーブルは全てdottedになり、テーブルは強制的にインラインテーブルになります。\ntable_format_info # struct table_format_info { table_format fmt = table_format::multiline; indent_char indent_type = indent_char::space; std::int32_t body_indent = 0; // indent of values std::int32_t name_indent = 0; // indent of [table] std::int32_t closing_indent = 0; // in case of {inline-table} }; bool operator==(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; bool operator!=(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; メンバ変数 # table_format fmt # フォーマット方法を指定します。\nindent_char indent_type # インデントに使用する文字を指定します。\nstd::int32_t body_indent # キーの前に出力するインデントの幅を指定します。\nスーパーテーブルのインデント幅は加算されません。\nstd::int32_t name_indent # [table]形式のキーのインデントを指定します。\nスーパーテーブルのインデント幅は加算されません。\nstd::int32_t closing_indent # multiline_onelineの場合に、閉じ括弧}の前のインデント幅を指定します。\n"},{"id":20,"href":"/toml11/ja/docs/reference/from/","title":"from.hpp","section":"reference","content":" from.hpp # toml::getやtoml::findで使用する、toml::valueからの変換を定義する構造体です。\nメンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom\u0026lt;T\u0026gt;を使用してください。\nこのファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct from; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/from.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)}; } }; } // toml 関連項目 # conversion.hpp into.hpp "},{"id":21,"href":"/toml11/ja/docs/reference/get/","title":"get.hpp","section":"reference","content":" get.hpp # toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。\ntoml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 厳密には全て toml::basic_value\u0026lt;TC\u0026gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::get\u0026lt;T\u0026gt; # 概要 # 基本的に、toml::getは以下のような関数として振る舞います。 Tはtoml::get\u0026lt;int\u0026gt;(v)のようにして与えます。\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。\nTの型の種類は、\n変換が必要ない型 変換する必要がある型 に分けられます。\n細かい条件と、特別にサポートしている具体的な型については後述します。\n変換が必要ない型 # 変換が必要ないのは、渡された toml::value が格納している型です。 例えば、 toml::value::integer_type は std::int64_t のエイリアスなので、 toml::get\u0026lt;std::int64_t\u0026gt;(v) は変換を必要としません。 この場合、 toml:get は integer の値を toml::value から取り出し、その参照を返します。\n渡されたtoml::valueが可変参照(\u0026amp;)である場合、返す値も可変参照(\u0026amp;)です。 不変参照(const\u0026amp;)の場合、返す値も不変参照(const\u0026amp;)となります。 可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。\n変換が必要な型 # 上記の型以外については変換が必要です。 例えば、toml::value::integer_typeはstd::int64_tのエイリアスなので、toml::get\u0026lt;std::size_t\u0026gt;(toml::value\u0026amp;)は変換が必要です。 この場合、toml:getはintegerの値をtoml::valueから取り出し、それをキャストして返します。\ntoml11は簡単なキャストだけでなく、 toml::arrayからやstd::tuple\u0026lt;int, double, std::string\u0026gt;やstd::array\u0026lt;double, 4\u0026gt;、 toml::tableからstd::map\u0026lt;std::string, int\u0026gt;などの複雑な型変換をサポートします。 具体的には、続くセクションを参照してください。\n失敗した場合 # 期待した型変換を行えない場合があります。例えば、tableを持っているtoml::valueにtoml::get\u0026lt;int\u0026gt;(v)を適用した場合などです。\nこのような場合は、取り出そうとした型に最も似ている型への変換(今回はintなので、as_integer)が失敗したとして、toml::type_errorが送出されます。\nファイルからパースした場合、以下のようなエラーメッセージが出力されます。\nterminate called after throwing an instance of \u0026#39;toml::type_error\u0026#39; what(): toml::value::as_integer(): bad_cast to integer --\u0026gt; input.toml | 6 | [fruit] | ^^^^^^^-- the actual type is table Tがtoml::valueと同一のとき # template\u0026lt; T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); 条件:\nstd::is_same\u0026lt;T, basic_value\u0026lt;TC\u0026gt;\u0026gt; を満たす toml::valueからtoml::valueなので、変換は行われず、そのままの値が返されます。 他の関数の実装を一般化するためだけに存在しています。\n失敗しません。\nTがtoml::value::{some_type}のいずれかのとき # template\u0026lt;typename T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); 条件:\nTがtoml::valueが格納できる型(toml::value::boolean_typeなど)のどれかと同一であること toml::value が格納している型と同じ型、例えば toml::value::integer_type が toml::get\u0026lt;T\u0026gt; の T として指定されたとき、型変換の必要がないため参照を返すことが可能です。\n異なる型が格納されていた場合、toml::type_error が送出されます。\nTが異なるTypeConfigを持つbasic_value\u0026lt;OtherTC\u0026gt;のとき # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTがtoml::basic_value\u0026lt;TC\u0026gt;ではない Tがtoml::basic_value\u0026lt;OtherTC\u0026gt;である 異なる型を格納し得るbasic_valueが指定された場合、変換が行われます。\n型変換が発生するので、返す値は新規な値であり、参照ではありません。\n失敗しません(メモリ枯渇などの場合を除く)。\nTが整数型の場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_integral\u0026lt;T\u0026gt; を満たす std::is_same\u0026lt;T, bool\u0026gt; ではない toml::value::integer_type ではない toml::value を integer_type を保持しているとしてその値を取得し、それを T に変換して返します。\ntoml::value::integer_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTが浮動小数点数型の場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_floating_point\u0026lt;T\u0026gt; を満たす toml::value::floating_type ではない toml::valueをfloating_typeを保持しているとしてその値を取得し、それをTに変換して返します。\ntoml::value::floating_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::string_viewの場合 # C++17以降でのみ使用可能です。\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_same\u0026lt;std::string_view, T\u0026gt; を満たす toml::valueをstring_typeを保持しているとしてその値を取得し、それからstd::string_viewを構築して返します。\ntoml::value::string_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::chrono::durationの場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTがstd::chrono::duration\u0026lt;Rep, Period\u0026gt;である toml::valueをlocal_timeを保持しているとしてその値を取得し、それをstd::chrono::durationに変換して返します。\ntoml::value::local_time 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::chrono::system_clock::time_pointの場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_same\u0026lt;T, std::chrono::system_clock::time_point\u0026gt;を満たす toml::value を local_date, local_datetime, offset_datetimeのどれかを保持しているとしてその値を取得し、それをstd::chrono::system_clock::time_pointに変換して返します。\nlocal_date, local_datetime, offset_datetime 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがarray-likeである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはT::iteratorを持つ TはT::value_typeを持つ TはT::push_back(x)を持つ Tはtoml::value::array_typeではない Tはstd::stringではない Tはstd::string_viewではない Tはmap-likeではない Tはfrom_toml()メンバ関数を持たない toml::from\u0026lt;T\u0026gt;が定義されていない toml::basic_value\u0026lt;TC\u0026gt;からのコンストラクタが定義されていない std::vector\u0026lt;int\u0026gt;やstd::deque\u0026lt;std::string\u0026gt;などが該当します。\ntoml::valueをarrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::arrayである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::array\u0026lt;U, N\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\ntoml::value が持つ array が十分な数の要素を持っていなかった場合、std::out_of_rangeが送出されます。\nTがstd::forward_listである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::forward_list\u0026lt;U\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それをstd::forward_listに変換して返します。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nforward_listはpush_backを持たないので、別に実装されています。\nTがstd::pairである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::pair\u0026lt;T1, T2\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それをstd::pair\u0026lt;T1, T2\u0026gt;に変換して返します。\nfirst と second はそれぞれ再帰的に変換されます。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\ntoml::value が持つ array の要素数がちょうど2個でなかった場合、std::out_of_rangeが送出されます。\nTがstd::tupleである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::tuple\u0026lt;T1, T2, ... TN\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それをstd::tuple\u0026lt;T1, T2, ...TN\u0026gt;に変換して返します。\n各要素はそれぞれ再帰的に変換されます。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\ntoml::value が持つ array の要素数がちょうど std::tuple_size\u0026lt;T\u0026gt;::value 個でなかった場合、std::out_of_rangeが送出されます。\nTがmap-likeである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはT::iteratorを持つ TはT::key_typeを持つ TはT::value_typeを持つ TはT::mapped_typeを持つ Tはtoml::value::table_typeではない Tはfrom_toml()メンバ関数を持たない toml::from\u0026lt;T\u0026gt;が定義されていない toml::basic_value\u0026lt;TC\u0026gt;からのコンストラクタが定義されていない std::map\u0026lt;std::string, int\u0026gt;やstd::unordered_map\u0026lt;std::string, float\u0026gt;などが該当します。\ntoml::valueをtableを保持しているとしてその値を取得し、それを T に変換して返します。\n各要素はそれぞれ再帰的に変換されます。\nbasic_value::table_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがtoml::from\u0026lt;T\u0026gt;の特殊化を持つユーザー定義型である場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\ntoml::from\u0026lt;T\u0026gt;が定義されている toml::from の T に対する特殊化が定義されていた場合、それを使用した型変換が行われます。\n個別にサポートされる型( std::array, std::pair, std::tuple )と衝突しないようにしてください。\nTがT::from_tomlメンバ関数を持つユーザー定義型である場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\ntoml::from\u0026lt;T\u0026gt;が定義されていない Tはfrom_toml()メンバ関数を持つ T に from_toml(toml::basic_value\u0026lt;TC\u0026gt;) メンバ関数が定義されていた場合、それを使用した型変換が行われます。\ntoml::from\u0026lt;T\u0026gt; が定義されていると、そちらが優先されます。\nTがtoml::basic_value\u0026lt;TC\u0026gt;を取るコンストラクタを持つユーザー定義型である場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\ntoml::from\u0026lt;T\u0026gt;が定義されていない Tはfrom_toml()メンバ関数を持たない Tはtoml::basic_value\u0026lt;TC\u0026gt;を取るコンストラクタを持つ T に toml::basic_value\u0026lt;TC\u0026gt; を取るコンストラクタが定義されていた場合、それを使用した型変換が行われます。\ntoml::from\u0026lt;T\u0026gt; または T::from_toml が定義されていると、そちらが優先されます。\ntoml::get_or\u0026lt;T\u0026gt; # get_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。\nこのデフォルト値は受け取る型Tと同じ型でなければなりません。 よって、 toml::get\u0026lt;T\u0026gt; とは違って、 get_or では T を指定せずとも推論されます。\nTがbasic_value\u0026lt;TC\u0026gt;である場合 # template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; opt) 変換先は同一のtoml::valueなので、失敗しません。\n他の関数の実装を一般化するためだけに存在しています。\nTがbasic_value\u0026lt;TC\u0026gt;::{some_type}である場合 # template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, T\u0026amp;\u0026amp; opt) noexcept toml::get\u0026lt;T\u0026gt;と同様の変換を行います。失敗した場合は第二引数が返されます。\nTがconst char*である場合 # template\u0026lt;typename TC\u0026gt; typename basic_value\u0026lt;TC\u0026gt;::string_type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::string_type::value_type* opt); const char* が渡された場合、変換先は std::string として解釈されます。\nTがその他の場合 # template\u0026lt;typename TC\u0026gt; typename std::remove_cv\u0026lt;typename std::remove_reference\u0026lt;T\u0026gt;::type\u0026gt;::type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp;\u0026amp; opt); toml::get\u0026lt;T\u0026gt;と同様の変換を行います。失敗した場合は第二引数が返されます。\n関連項目 # find.hpp from.hpp value.hpp "},{"id":22,"href":"/toml11/ja/docs/reference/into/","title":"into.hpp","section":"reference","content":" into.hpp # toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。\nメンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto\u0026lt;T\u0026gt;を使用してください。\nこのファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct into; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/into.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { using value_type = toml::basic_value\u0026lt;TC\u0026gt;; using table_type = typename value_type::table_type; return value_type(table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; } // toml 関連項目 # conversion.hpp from.hpp "},{"id":23,"href":"/toml11/ja/docs/reference/literal/","title":"literal.hpp","section":"reference","content":" literal.hpp # literal.hppでは、_tomlリテラルが定義されます。\n_tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。\nnamespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); toml::value operator\u0026#34;\u0026#34; _toml(const char8_t* str, std::size_t len); // C++20以降 } // toml_literals } // literals } // toml 自由関数 # operator\u0026quot;\u0026quot; _toml(char) # toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); 文字列リテラルをパースしてtoml::valueに変換します。\n通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。\nconst auto v1 = \u0026#34;a = \u0026#39;foo\u0026#39;\u0026#34;_toml; // v1: {a = \u0026#39;foo\u0026#39;} 改行を含む場合、生文字列リテラルが便利です。\nconst auto v1 = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; 値が単体で書かれていた場合、その値になります。\nconst auto v2 = \u0026#34;\u0026#39;foo\u0026#39;\u0026#34;_toml; // v2: \u0026#39;foo\u0026#39; TOMLは数値のみからなるキーを許可しています。 [1]のように、テーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。\n配列として解釈させるには、trailing commaを使用してください。\nconst auto v3 = \u0026#34;[1]\u0026#34;_toml; // v3: {1 = {}} const auto v4 = \u0026#34;[1,]\u0026#34;_toml; // v4: [1,] operator\u0026quot;\u0026quot; _toml(char8_t) # char8_tが利用可能な場合に定義されます。引数の型のほかに違いはありません。\n例 # #include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = \\\u0026#34;foo\\\u0026#34;\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } "},{"id":24,"href":"/toml11/ja/docs/reference/ordered_map/","title":"ordered_map.hpp","section":"reference","content":" ordered_map.hpp # ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。\nclass ordered_map # namespace toml { template\u0026lt;typename Key, typename Val, typename Cmp = std::equal_to\u0026lt;Key\u0026gt;, typename Allocator = std::allocator\u0026lt;std::pair\u0026lt;Key, Val\u0026gt;\u0026gt;\u0026gt; class ordered_map; } ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。\n線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。\n非メンバ型 # namespace toml { struct ordered_type_config; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } toml::type_config と toml::value の代わりに使用します。\ntoml::parse はデフォルトで type_config を使用するので、パースする際に\nconst auto input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;input.toml\u0026#34;); としてください。\nメンバ型 # using key_type = Key; using mapped_type = Val; using value_type = std::pair\u0026lt;Key, Val\u0026gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector\u0026lt;value_type, Allocator\u0026gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; メンバ関数 # コンストラクタ # ordered_map() = default; 空の ordered_map を構築します。\nコンストラクタ(コンパレータ、アロケータ) # explicit ordered_map(const Cmp\u0026amp; cmp, const Allocator\u0026amp; alloc = Allocator()); explicit ordered_map(const Allocator\u0026amp; alloc); キーの比較に使用するコンパレータや、コンテナのメモリ確保に使用するアロケータを指定して構築します。\nコピー・ムーブコンストラクタ # ordered_map(const ordered_map\u0026amp;) = default; ordered_map(ordered_map\u0026amp;\u0026amp;) = default; ordered_map(const ordered_map\u0026amp; other, const Allocator\u0026amp; alloc); ordered_map(ordered_map\u0026amp;\u0026amp; other, const Allocator\u0026amp; alloc); 別の ordered_map の内容をコピー・ムーブして構築します。\nコンテナのメモリ確保に使用するアロケータを指定することも可能です。\nコンストラクタ(Iterator) # template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Allocator\u0026amp; alloc = Allocator()); イテレータ範囲を受け取って構築します。\n順序は、イテレータの順序に従います。\nコンストラクタ(std::initializer_list) # ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Allocator\u0026amp; alloc); ordered_map{...}の形式で初期化します。\nコピー・ムーブ代入演算子 # ordered_map\u0026amp; operator=(const ordered_map\u0026amp;) = default; ordered_map\u0026amp; operator=(ordered_map\u0026amp;\u0026amp;) = default; 別の ordered_map の内容をコピー・ムーブ代入します。\n代入演算子(std::initializer_list) # ordered_map\u0026amp; operator=(std::initializer_list\u0026lt;value_type\u0026gt; v); std::initializer_list の内容を代入します。\nデストラクタ # ~ordered_map() = default; ordered_map を破棄します。\nbegin(), end() # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; コンテナの内容を順序通りにイテレートします。\nempty() # bool empty() const noexcept; ordered_map が空の場合 true を、そうでない場合 false を返します。\nsize() # std::size_t size() const noexcept; ordered_map の要素数を返します。\nmax_size() # std::size_t max_size() const noexcept; ordered_map が持つことのできる最大の要素数を返します。\nclear() # void clear(); 内容を消去します。\npush_back(kv) # void push_back(const value_type\u0026amp;); void push_back(value_type\u0026amp;\u0026amp;); キーと値のペアを末尾に追加します。\nemplace_back(k, v) # void emplace_back(key_type, mapped_type); キーと値のペアを末尾に追加します。\npop_back() # void pop_back(); 末尾の値を削除します。\ninsert(kv) # void insert(value_type); キーと値のペアを末尾に追加します。\nemplace(k, v) # void emplace(key_type, mapped_type); キーと値のペアを末尾に追加します。\ncount(k) # std::size_t count(const key_type\u0026amp;) const noexcept; キーに対応する値の数を返します。\n同じキーに複数の値を代入することはできないので、値が存在する場合は 1, そうでない場合は 0 を返します。\ncontains(k) # bool contains(const key_type\u0026amp;) const noexcept; キーに対応する値が存在するなら true を、そうでないなら false を返します。\nfind(k) # iterator find(const key_type\u0026amp; key) noexcept; const_iterator find(const key_type\u0026amp; key) const noexcept; キーに対応する値を検索し、それを指すイテレータを返します。\n存在しなかった場合、end()を返します。\nat(k) # mapped_type\u0026amp; at(const key_type\u0026amp; k); mapped_type const\u0026amp; at(const key_type\u0026amp; k) const; キーに対応する値を検索して返します。\n存在しなかった場合、std::out_of_rangeを送出します。\noperator[](k) # mapped_type\u0026amp; operator[](const key_type\u0026amp; k); mapped_type const\u0026amp; operator[](const key_type\u0026amp; k) const; キーに対応する値を検索して返します。\n存在しなかった場合、新規な値を構築して返します。\nordered_map が const の場合は新規な値を構築できないので、 std::out_of_range を送出します。\nkey_comp() # key_compare key_comp() const; 比較に使用するコンパレータを返します。\n使用上の注意 # キーの書き換え # ordered_map は value_type に std::pair\u0026lt;Key, Val\u0026gt; を使用しているので、イテレータを介してキーを書き換えることが可能になってしまっています。\nこの方法でキーを書き換えることは推奨されません。\nキーを書き換えて既存のキーと衝突した場合、衝突したうちの片方が検索できなくなります。\noperator[] や push_back, insert による書き込みの場合は、既存のキーとの衝突が検出されます。\n保たれる順序の詳細 # ordered_map はキーの順序を保ちますが、ここで保たれる順序は同じテーブルで定義されたキーの順序のみです。 よって、テーブルをまたいだ順序は保たれないことに注意してください。\n例えば、以下のファイルの順序は保たれます。\napple.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.type = \u0026#34;fruit\u0026#34; orange.skin = \u0026#34;thick\u0026#34; orange.color = \u0026#34;orange\u0026#34; 対して以下のファイルの順序は保たれません。\napple.type = \u0026#34;fruit\u0026#34; orange.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; orange.skin = \u0026#34;thick\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.color = \u0026#34;orange\u0026#34; ordered_map が保つ順序は、rootテーブルに定義された apple と orange の順序と、 apple 内で定義された type, skin, color の順序、 また orange 内で定義された type, skin, color の順序のみです。\n関連項目 # parser.hpp types.hpp value.hpp "},{"id":25,"href":"/toml11/ja/docs/reference/parser/","title":"parser.hpp","section":"reference","content":" parser.hpp # ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。\nparseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。\nparse # 与えられたファイルの内容をパースし、toml::basic_valueを返します。\n失敗した場合はtoml::syntax_errorが送出されます。\nbasic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。\nparse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。\nファイルの読み込みに失敗した場合、file_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルを受け取って、そのファイルの内容をパースします。\nファイルの読み込みに失敗した場合、file_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } \u0026lt;filesystem\u0026gt;が利用可能な場合のみ定義されます。\nファイルパスを受け取って、そのファイルの内容をパースします。\nファイルの読み込みに失敗した場合、file_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } std::istream\u0026amp;を受け取ってその内容をパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 std::ios::binaryを使ってバイナリモードで開いてください。\nファイル名の情報は第三引数で受け取ります。ファイル名が渡されなかった場合、\u0026quot;unknown file\u0026quot;になります。\nparse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; parse(FILE* fp, std::string filename, spec s = spec::default_version()); } FILE*が指すファイルを読み込んでパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 fopenには\u0026quot;rb\u0026quot;などを渡してバイナリモードで開いてください。\nファイルの読み込みに失敗した場合、errnoが含まれたfile_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } バイト列をTOMLファイルとしてパースします。\nパースに失敗した場合、syntax_errorが送出されます。\nparse_str # parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } 文字列をTOMLファイルとしてパースします。\n失敗した場合はtoml::syntax_errorが送出されます。\nbasic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。\n第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 parse_strが呼ばれた地点の情報が位置情報として保存されます。\ntry_parse # 与えられたファイルの内容をパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector\u0026lt;toml::error_info\u0026gt;を返します。\nbasic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。\ntry_parseはparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 標準ライブラリから送出される例外はそのまま送出されることに注意してください。\n例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。\ntry_parse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルをファイル名として受け取って、その内容をパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } ファイルパスを受け取って、その内容をパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } std::istream\u0026amp;を受け取ってその内容をパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 std::ios::binaryを使ってバイナリモードで開いてください。\nファイル名の情報は第二引数で受け取ります。ファイル名が渡されなかった場合、\u0026quot;unknown file\u0026quot;になります。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(FILE* fp, std::string filename, spec s = spec::default_version()); } FILE*を受け取って、そのファイルの内容をパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 fopenには\u0026quot;rb\u0026quot;などを渡してバイナリモードで開いてください。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } バイト列を受け取って、その内容をTOMLファイルとしてパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse_str # try_parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } 文字列をTOMLファイルとしてパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector\u0026lt;toml::error_info\u0026gt;を返します。\nparse_strと異なり、syntax_errorを送出せず、エラー情報をresultの失敗型として返します。\nstd::source_location, std::experimental::source_location, __builtin_FILEのどれかが利用可能な場合、それを位置情報に記録します。\n第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 parse_strが呼ばれた地点の情報が位置情報として保存されます。\ntry_parseはparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 標準ライブラリから送出される例外はそのまま送出されることに注意してください。\n例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。\nsyntax_error # namespace toml { struct syntax_error final : public ::toml::exception { public: syntax_error(std::string what_arg, std::vector\u0026lt;error_info\u0026gt; err); ~syntax_error() noexcept override = default; const char* what() const noexcept override; std::vector\u0026lt;error_info\u0026gt; const\u0026amp; errors() const noexcept }; } TOML言語の文法エラーが発見された場合に送出される例外です。\nparseからは送出されますが、try_parseからは送出されません。\nfile_io_error # namespace toml { struct file_io_error final : public ::toml::exception { public: file_io_error(const std::string\u0026amp; msg, const std::string\u0026amp; fname); file_io_error(int errnum, const std::string\u0026amp; msg, const std::string\u0026amp; fname); ~file_io_error() noexcept override = default; const char* what() const noexcept override; bool has_errno() const noexcept; int get_errno() const noexcept; }; } ファイルの内容を読むのに失敗した場合に送出される例外です。\nFILE*を使ってファイルを読み込んだ場合はerrnoが設定されます。\nhas_errno # std::ifstreamが失敗した場合はerrnoは設定されません。\nこのとき、has_errnoはfalseになります。\nget_errno # 特にFILE*を渡していた場合に、errnoの値を取得します。\nhas_errnoがfalseの場合は0となります。\n関連項目 # error_info.hpp result.hpp spec.hpp value.hpp "},{"id":26,"href":"/toml11/ja/docs/reference/result/","title":"result.hpp","section":"reference","content":" result.hpp # result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。\nこれは、例外を投げないtoml::try_parseの返り値として使用されます。\nsuccess # 成功値を持つ型です。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success\u0026amp;) = default; success(success\u0026amp;\u0026amp;) = default; success\u0026amp; operator=(const success\u0026amp;) = default; success\u0026amp; operator=(success\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]) } メンバ型 # using value_type = T; 成功値の型です。\nメンバ関数 # コンストラクタ # explicit success(value_type v); value_typeを受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); value_typeに変換可能な他の型を受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); value_typeに変換可能な他の型を持つsuccess型を受け取って構築します。\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; 値にアクセスします。\n非メンバ関数 # ok(T) # template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]) 成功値からsuccess型を構築して返します。\n文字列リテラルを与えた場合は、std::stringにして返します。\nsuccess\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # successの特殊化。成功値が参照であるときに使用されます。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit success(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; } メンバ型 # using value_type = T; 成功値の型です。参照ではなく、std::reference_wrapper\u0026lt;T\u0026gt;のTです。\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; 値にアクセスします。\nfailure # 失敗値を持つ型です。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure { using value_type = T; explicit failure(value_type v); ~failure() = default; failure(const failure\u0026amp;) = default; failure(failure\u0026amp;\u0026amp;) = default; failure\u0026amp; operator=(const failure\u0026amp;) = default; failure\u0026amp; operator=(failure\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); } メンバ型 # using value_type = T; 失敗値の型です。\nメンバ関数 # コンストラクタ # explicit failure(value_type v); value_typeを受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); value_typeに変換可能な他の型を受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); value_typeに変換可能な他の型を持つfailure型を受け取って構築します。\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; 値にアクセスします。\n非メンバ関数 # err(T) # template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); 失敗値からfailure型を構築して返します。\n文字列リテラルを与えた場合は、std::stringにして返します。\nfailure\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # failureの特殊化。失敗値が参照であるときに使用されます。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit failure(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept {return value.get();} value_type const\u0026amp; get() const noexcept {return value.get();} }; } メンバ型 # using value_type = T; 失敗値の型です。参照ではなく、std::reference_wrapper\u0026lt;T\u0026gt;のTです。\nget() # value_type\u0026amp; get() noexcept value_type const\u0026amp; get() const noexcept 値にアクセスします。\nresult # 成功値か失敗値かのどちらかを持つ型です。\nnamespace toml { template\u0026lt;typename T, typename E\u0026gt; struct result { using success_type = success\u0026lt;T\u0026gt;; using failure_type = failure\u0026lt;E\u0026gt;; using value_type = typename success_type::value_type; using error_type = typename failure_type::value_type; result(success_type s); result(failure_type f); template\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); result\u0026amp; operator=(success_type s); result\u0026amp; operator=(failure_type f); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); ~result() noexcept; result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); template\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); bool is_ok() const noexcept; bool is_err() const noexcept; explicit operator bool() const noexcept; value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; }; } メンバ型 # success_type # success\u0026lt;T\u0026gt;です。\nfailure_type # failure\u0026lt;E\u0026gt;です。\nvalue_type # 成功型Tです。success_type::value_typeのエイリアスです。\n成功型Tとしてstd::reference_wrapper\u0026lt;U\u0026gt;が渡された場合、その引数型のUになります。\nerror_type # 失敗型Eです。failure_type::value_typeのエイリアスです。\n失敗型Eとしてstd::reference_wrapper\u0026lt;F\u0026gt;が渡された場合、その引数型のFになります。\nメンバ関数 # コンストラクタ # result() = delete; result型はデフォルトでは構築できません。 成功型か失敗型を与える必要があります。\nresult(success_type s); result(failure_type f); 成功型、失敗型を受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); value_typeとerror_typeに変換可能な成功型、失敗型を受け取って構築します。\ntemplate\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); 変換可能な成功型、失敗型を持つresultから構築します。\nコピー・ムーブコンストラクタ # result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); コピー・ムーブ構築可能です。\noperator= # result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); コピー・ムーブ代入可能です。\ntemplate\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); 変換可能な型を持つ成功型、失敗型は代入可能です。\nis_ok() # bool is_ok() const noexcept; 成功値を持っている場合trueを、そうでない場合falseを返します。\nis_err() # bool is_err() const noexcept; 失敗値を持っている場合trueを、そうでない場合falseを返します。\noperator bool() # explicit operator bool() const noexcept; 成功値を持っている場合trueを、そうでない場合falseを返します。\nunwrap() # value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; 成功値を取り出します。\n成功値を持っていない場合、toml::bad_result_accessが送出されます。\nstd::source_locationまたはstd::experimental::source_locationが利用可能か、 あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に unwrap()が発生したソースコードのファイル名と行数が表示されます。\n利用可能でない場合、位置情報は表示されません。\nunwrap_or() # value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; 成功値を持っていた場合それを、持っていなかった場合は引数で与えられた値を返します。\nunwrap_err() # error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; 失敗値を取り出します。\n失敗値を持っていない場合、toml::bad_result_accessが送出されます。\nstd::source_locationまたはstd::experimental::source_locationが利用可能か、 あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に unwrap()が発生したソースコードのファイル名と行数が表示されます。\n利用可能でない場合、位置情報は表示されません。\nas_ok() # value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; チェックなしで成功値を返します。\n成功値を持っていなかった場合、その動作は未定義となります。\nas_err() # error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; チェックなしで失敗値を返します。\n失敗値を持っていなかった場合、その動作は未定義となります。\nbad_result_access # resultのunwrapまたはunwrap_errで失敗した際に送出される例外です。\nnamespace toml { struct bad_result_access : public ::toml::exception { public: explicit bad_result_access(const std::string\u0026amp; what_arg); virtual ~bad_result_access() noexcept override = default; virtual const char* what() const noexcept override; protected: std::string what_; }; } "},{"id":27,"href":"/toml11/ja/docs/reference/serializer/","title":"serializer.hpp","section":"reference","content":" serializer.hpp # format # シリアライズを行います。\nnamespace toml { template\u0026lt;typename TC\u0026gt; std::string format(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; k, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const std::vector\u0026lt;typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026gt;\u0026amp; ks, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); } フォーマット情報とspecが矛盾する場合、例えばv1.0.0でtable_format::multiline_onelineが指定されているときなどは、specが優先されます。\nformat(v, spec) # toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。\ntable_typeだった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。\nformat(k, v, spec) # toml::valueを、与えられたキーと同時にフォーマットします。\nvはそのキー以下に定義されていると解釈されます。\nformat([k,...], v, spec) # vはそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。\nserialization_error # シリアライズ中に発生したエラーを報告します。\nnamespace toml { struct serialization_error final : public ::toml::exception { public: explicit serialization_error(std::string what_arg, source_location loc); ~serialization_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; } "},{"id":28,"href":"/toml11/ja/docs/reference/source_location/","title":"source_location.hpp","section":"reference","content":" source_location.hpp # source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。\nこのクラスは、エラーメッセージで問題の箇所を指摘するために使われます。\ntoml::source_location # source_locationは、TOMLファイル内のある領域を指すクラスです。\nnamespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const\u0026amp;) = default; source_location(source_location \u0026amp;\u0026amp;) = default; source_location\u0026amp; operator=(source_location const\u0026amp;) = default; source_location\u0026amp; operator=(source_location \u0026amp;\u0026amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const\u0026amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const\u0026amp; first_line() const; std::string const\u0026amp; last_line() const; std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; }; template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); } //toml メンバ関数 # コンストラクタ # explicit source_location(/* implementation-defined */); toml::source_locationをtoml::parseまたは_tomlリテラル以外で構築することはできません。\nis_ok() # bool is_ok() const noexcept; source_locationが有効な値を保持している場合、trueを、そうでない場合falseを返します。\ntoml::parseや_tomlリテラル以外から構築したtoml::valueのlocation()の結果は、指す対象がないため、is_okはfalseを返します。\nlength() # std::size_t length() const noexcept; source_locationが指す領域の長さを返します。\n有効な値を保持していない場合、0を返します。\nfirst_line_number() # std::size_t first_line_number() const noexcept; source_locationが指す領域の最初の行の行番号を返します。\n有効な値を保持していない場合、1を返します。\nfirst_column_number() # std::size_t first_column_number() const noexcept; source_locationが指す領域の最初の列の列番号を返します。\n有効な値を保持していない場合、1を返します。\nlast_line_number() # std::size_t last_line_number() const noexcept; source_locationが指す領域の最後の行の行番号を返します。\n有効な値を保持していない場合、1を返します。\nlast_column_number() # std::size_t last_column_number() const noexcept; source_locationが指す領域の最後の列の列番号を返します。\n有効な値を保持していない場合、1を返します。\nfile_name() # std::string const\u0026amp; file_name() const noexcept; source_locationが指す領域を含むファイルのファイル名を返します。\n有効な値を保持していない場合、\u0026quot;unknown file\u0026quot;を返します。\nnum_lines() # std::size_t num_lines() const noexcept; source_locationが指す領域の行数を返します。\n有効な値を保持していない場合、0を返します。\nfirst_line() # std::string const\u0026amp; first_line() const; source_locationが指す領域の最初の行を返します。\n有効な値を保持していない場合、std::out_of_range例外が送出されます。\nlast_line() # std::string const\u0026amp; last_line() const; source_locationが指す領域の最後の行を返します。\n有効な値を保持していない場合、std::out_of_range例外が送出されます。\nlines() # std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; source_locationが指す領域の全ての行を返します。\n有効な値を保持していない場合、空のstd::vectorへの参照を返します。\n非メンバ関数 # format_location # template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); source_locationが指す箇所と、それについてのメッセージを以下のようにフォーマットします。\n-\u0026gt; {filename.toml} | 1 | a = 42 | ^-- {message} この時、色付けがONになっている場合、ANSIエスケープシーケンスによって色情報が追加されます。\nlocs_and_msgsが複数個ある場合、それらはconst source_location\u0026amp;とconst std::string\u0026amp;の順である必要があります。\n例:複数のsource_locationとstd::string # 複数のsource_locationとstd::stringを渡した場合、以下のようにフォーマットされます。\nsource_location\u0026amp; loc0; source_location\u0026amp; loc1; source_location\u0026amp; loc2; std::string msg0; std::string msg1; std::string msg2; format_location(loc0, msg0, loc1, msg1, loc2, msg2); -\u0026gt; {filename0.toml} | 1 | a = 42 | ^-- {message0} | -\u0026gt; {filename1.toml} | 2 | b = 3.14 | ^-- {message1} | -\u0026gt; {filename2.toml} | 3 | c = \u0026#34;foo\u0026#34; | ^-- {message2} 関連項目 # error_info.hpp value.hpp "},{"id":29,"href":"/toml11/ja/docs/reference/spec/","title":"spec.hpp","section":"reference","content":" spec.hpp # spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。\ntoml::semantic_version # semantic_versionは、バージョン情報を格納するクラスです。\nnamespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); } //toml メンバ関数 # コンストラクタ # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; major, minor, patchバージョンを指定して構築します。\n非メンバ関数 # 比較演算子 # constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; semantic versioningに従って比較します。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); {major}.{minor}.{patch}の形式で出力します。\nto_string # std::string to_string(const semantic_version\u0026amp; ver); {major}.{minor}.{patch}の形式で文字列化します。\ntoml::spec # specは、TOMLのバージョン情報を格納するクラスです。\nstruct spec { constexpr static spec default_version() noexcept; constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; semantic_version version; // toml version // diff from v1.0.0 -\u0026gt; v1.1.0 bool v1_1_0_allow_control_characters_in_comments; bool v1_1_0_allow_newlines_in_inline_tables; bool v1_1_0_allow_trailing_comma_in_inline_tables; bool v1_1_0_allow_non_english_in_bare_keys; bool v1_1_0_add_escape_sequence_e; bool v1_1_0_add_escape_sequence_x; bool v1_1_0_make_seconds_optional; // library extensions bool ext_hex_float; // allow hex float bool ext_num_suffix; // allow number suffix bool ext_null_value; // allow null value }; メンバ関数 # コンストラクタ # constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; 指定されたTOMLバージョンでspecを構築します。\nTOML v1.0.0と、TOML v1.1.0に対応しています。\ndefault_version() # constexpr static spec default_version() noexcept; デフォルトのバージョンでspecを構築します。\ntoml::parse、toml::formatでのデフォルト値として使われます。\ntoml11 v4.0.0での値は、v1.0.0です。\nv(major, minor, patch) # constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; 指定されたバージョンでspecを構築します。\nメンバ変数 # 各フラグは機能追加がされたバージョンを指定されたとき、自動的にtrueになります。\n変更して渡すことで、toml::parse、toml::formatの挙動を変更できます。\nTOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。\n実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。\nそのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。\n例 # auto spec = toml::spec::v(1, 0, 0); // v1.0.0の機能に追加して、inline table内の改行を許可する。 // それ以外のv1.1.0の機能は有効化されない。 spec.v1_1_0_allow_newlines_in_inline_tables = true; auto input = toml::parse(\u0026#34;input_file.toml\u0026#34;, spec); v1_1_0_allow_control_characters_in_comments # bool v1_1_0_allow_control_characters_in_comments; ほとんどの制御文字をコメントに含むことを許可します。\ntoml v1.1.0で追加。\nv1_1_0_allow_newlines_in_inline_tables # bool v1_1_0_allow_newlines_in_inline_tables; inline table内で改行することを許可します。\ntoml v1.1.0で追加。\nv1_1_0_allow_trailing_comma_in_inline_tables # bool v1_1_0_allow_trailing_comma_in_inline_tables; inline table内での末尾コンマを許可します。\ntoml v1.1.0で追加。\nv1_1_0_add_escape_sequence_e # bool v1_1_0_add_escape_sequence_e; \\eでESC文字を指定できるようになります。\ntoml v1.1.0で追加。\nv1_1_0_add_escape_sequence_x # bool v1_1_0_add_escape_sequence_x; \\xHHで1バイトの文字を指定できるようになります。\ntoml v1.1.0で追加。\nv1_1_0_make_seconds_optional # bool v1_1_0_make_seconds_optional; 時刻での秒数指定を省略可能にします。\n指定されなかった秒数は0で初期化されます。\ntoml v1.1.0で追加。\next_hex_float # bool ext_hex_float; toml11限定の言語拡張です。\nどのバージョンを指定しても、falseで初期化されます。 使用する際は個別にtrueにしてください。\n浮動小数点数の16進数表記を許可します。\n16進数表記はprintfで%a/%Aを指定した場合に準拠します。\nhexf = 0xC0FFEEp-10 toml::format は、渡された toml::spec で ext_hex_format が true の場合のみ 16進表記でフォーマットします。 フォーマット情報で hex が指定されているにも関わらず toml::format に渡された toml::spec の ext_hex_float が false だった場合、16進数指定は無視され、 10進表記で最大の精度で出力されます。\next_num_suffix # bool ext_num_suffix; toml11限定の言語拡張です。\nどのバージョンを指定しても、falseで初期化されます。 使用する際は個別にtrueにしてください。\n10進数の整数と浮動小数点数に接尾辞を追加します。型を問わず、16進や8進、2進表記には適用されません。\n数値と接尾辞の間は_で区切られている必要があります。\n数値部分との区別のため、接尾辞は数値で始まることはできません。\ndistance = 10_m # valid distance = 10_2m # invalid distance = 10_2_m # valid 接尾辞は std::string suffix としてフォーマット情報に保持されます。 数値部分とを分ける _ は suffix に含まれません。\ntoml::value distance = toml::find(input, \u0026#34;distance\u0026#34;); assert(distance.as_integer_fmt().suffix == std::string(\u0026#34;m\u0026#34;)); toml::format は、渡された toml::spec の ext_num_suffix が true の場合のみ これをフォーマットします。\nsuffixは以下のような文法を持ちます。\nnon-digit-graph = ALPHA / non-ascii graph = ALPHA / DIGIT / non-ascii suffix = _ non-digit-graph *( graph / ( _ graph ) ) ext_null_value # bool ext_null_value; toml11限定の言語拡張です。\n値として null を許可します。\nnull を指定された toml::value は値を持たず、 is_empty() が true になります。\ntoml::format は、渡された toml::spec で ext_null_value が true の場合のみ null としてフォーマットします。 そうでない場合、 toml::format がエラーで終了します。\n"},{"id":30,"href":"/toml11/ja/docs/reference/toml_fwd/","title":"toml_fwd.hpp","section":"reference","content":" toml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。\ntoml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。\nこのファイルには前方宣言しか含まれていないため、 toml::basic_value\u0026lt;toml::type_config\u0026gt;::table_type として定義される toml::table と、同様に定義される toml::array は使用できません。 それらには basic_value の実装が必要だからです。 このヘッダファイルと toml.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。\n"},{"id":31,"href":"/toml11/ja/docs/reference/toml/","title":"toml.hpp","section":"reference","content":" toml.hpp # toml.hppは、他の全てのヘッダを include します。\nこれによって、toml11の全機能が使用可能になります。\nこのヘッダファイルと toml_fwd.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。\n"},{"id":32,"href":"/toml11/ja/docs/reference/types/","title":"types.hpp","section":"reference","content":" types.hpp # 型情報を与えるクラスが定義されます。\ntype_config # type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。\ntoml::basic_value\u0026lt;T\u0026gt;内で異なる型を使用する場合、これを別に定義して渡します。 記載のある要素は全て必須の要素です。\n通常のストリーム演算子を使用できない数値型を使用する場合、read_int、read_floatに相当するものを定義し、置き換えてください。\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; using value = basic_value\u0026lt;type_config\u0026gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static メンバ関数 # parse_int(str, src, base) # static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); 通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。\nstrには、prefix、(0xなどの場合)leading zero、underscoreが取り除かれた文字列が渡されます。\nsrcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。\nbaseには、10, 2, 8, 16のいずれかが渡されます。\nparse_float(str, src, is_hex) # static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); 通常のストリーム演算子などを使用できない型をfloating_typeとして使用する場合、この関数を実装してください。\nstrには、prefix、leading zero、underscoreが取り除かれた文字列が渡されます。\nsrcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。\nis_hexには、フォーマットがhexfloatであるかどうかが渡されます。hexfloat拡張を使用しない場合は使われないので、実装する必要はありません。\nhexfloat拡張に関しては、spec.hppを参照してください。\n非メンバ関数 # read_int # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); デフォルトで使用される関数です。std::istringstreamを使用してパースします。\noperator\u0026gt;\u0026gt;とstd::hex等のマニピュレータ、std::numeric_limits\u0026lt;T\u0026gt;が定義されている場合(boost::multiprecisionなど)、特に変更なしにこれを使用できます。\nread_float # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); デフォルトで使用される関数です。decimalの場合はstd::istringstreamを、hexfloatの場合はsscanf()を使用してパースします。\ndouble、floatに対応しています。\nそれ以外の型の場合、operator\u0026gt;\u0026gt;が定義されていて、かつhexを使用しないなら、これを使用できます。\nordered_type_config # ordered_type_configは、toml::type_configのテーブル型をtoml::ordered_mapに変更したものです。 また、toml::ordered_valueエイリアスを定義します。\nそのほかにtype_configとの違いはありません。\nnamespace toml { struct ordered_type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = ordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } // toml "},{"id":33,"href":"/toml11/ja/docs/reference/value_t/","title":"value_t.hpp","section":"reference","content":" value_t.hpp # 型情報を表す列挙型です。\nvalue_t # value_tは、toml::valueが持つ型情報を扱う際に使用します。\nnamespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); std::string to_string(value_t t); } // toml 非メンバ関数 # ストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); value_tの値を文字列化してストリームへ出力します。\nto_string # std::string to_string(value_t t); value_tの値を文字列化して返します。\n"},{"id":34,"href":"/toml11/ja/docs/reference/value/","title":"value.hpp","section":"reference","content":" value.hpp # value.hppでは、basic_valueが定義されます。\ntoml::basic_value # basic_valueは、TOMLの値を格納するクラスです。\nnamespace toml { template \u0026lt;class TypeConfig\u0026gt; class basic_value; // 以下はtypes.hppで定義される // using value = basic_value\u0026lt;type_config\u0026gt;; // using table = typename basic_value\u0026lt;type_config\u0026gt;::table_type; // using array = typename basic_value\u0026lt;type_config\u0026gt;::array_type; template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); } //toml メンバ型 # 以下のメンバ型が定義されます。\nTypeConfigを使って、メンバ型を変更することができます。\n参考: types.hpp\n名前 定義 char_type typename TypeConfig::char_type key_type typename TypeConfig::string_type value_type basic_value\u0026lt;TypeConfig\u0026gt; boolean_type typename TypeConfig::boolean_type integer_type typename TypeConfig::integer_type floating_type typename TypeConfig::floating_type string_type typename TypeConfig::string_type local_time_type toml::local_time local_date_type toml::local_date local_datetime_type toml::local_datetime offset_datetime_type toml::offset_datetime array_type typename TypeConfig::template array_type\u0026lt;value_type\u0026gt; table_type typename TypeConfig::template table_type\u0026lt;key_type, value_type\u0026gt; comment_type typename TypeConfig::comment_type メンバ関数 # デフォルトコンストラクタ # basic_value() noexcept 空のtoml::valueを構築します。\n構築されたtoml::valueは空になります。\nコピー・ムーブコンストラクタ # basic_value(const basic_value\u0026amp; v) basic_value(basic_value\u0026amp;\u0026amp; v) 値、フォーマット情報、コメント、ファイル領域の全ての情報をコピー・ムーブします。\nコピー・ムーブコンストラクタ(コメント指定) # basic_value(basic_value v, std::vector\u0026lt;std::string\u0026gt; com) コメントを上書きしながらコピー・ムーブします。\n変換コンストラクタ # template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other) template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other, std::vector\u0026lt;std::string\u0026gt; com) 異なるtype_configを持つbasic_valueからコピー・ムーブします。\nコンストラクタ (boolean) # basic_value(boolean_type x) basic_value(boolean_type x, boolean_format_info fmt) basic_value(boolean_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(boolean_type x, boolean_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) boolと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ (integer) # basic_value(integer_type x) basic_value(integer_type x, integer_format_info fmt) basic_value(integer_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(integer_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) integerと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(floating) # template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x, floating_format_info fmt) template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x, floating_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) floatingと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(string) # basic_value(string_type x) basic_value(string_type x, string_format_info fmt) basic_value(string_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x) basic_value(const string_type::value_type* x, string_format_info fmt) basic_value(const string_type::value_type* x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) // C++17以降 basic_value(string_view_type x) basic_value(string_view_type x, string_format_info fmt) basic_value(string_view_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_view_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) stringと、そのフォーマット情報、コメントを受け取って構築します。\nstring_view_typeは、string_typeと同じvalue_typeとtraits_typeを持ちます。\nコンストラクタ(local_date) # basic_value(local_date_type x) basic_value(local_date_type x, local_date_format_info fmt) basic_value(local_date_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_date_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) local_date_typeと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(local_time) # basic_value(local_time_type x) basic_value(local_time_type x, local_time_format_info fmt) basic_value(local_time_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_time_type x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) local_time_typeと、そのフォーマット情報、コメントを受け取って構築します。\nstd::chrono::durationは、00:00:00からの時間幅として構築します。\nコンストラクタ(local_datetime) # basic_value(local_datetime_type x) basic_value(local_datetime_type x, local_date_format_info fmt) basic_value(local_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_datetime_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) local_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(offset_datetime) # basic_value(offset_datetime_type x) basic_value(offset_datetime_type x, offset_date_format_info fmt) basic_value(offset_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt) basic_value(std::chrono::system_clock::time_point x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) offset_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。\nstd::chrono::system_clock::time_pointの場合、それが指す時点として構築します。\nコンストラクタ(array) # basic_value(array_type x) basic_value(array_type x, integer_format_info fmt) basic_value(array_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(array_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) arrayと、そのフォーマット情報、コメントを受け取って構築します。\narray-likeは、以下の条件を満たす型です。\nT::iterator を持つ。 T::value_type を持つ。 T::key_type を持たない。 T::mapped_type を持たない。 std::string ではない。 std::string_view ではない。(C++17以降) コンストラクタ(table) # basic_value(table_type x) basic_value(table_type x, integer_format_info fmt) basic_value(table_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(table_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) tableと、そのフォーマット情報、コメントを受け取って構築します。\ntable-likeは、以下の条件を満たす型です。\nT::iterator を持つ。 T::value_type を持つ。 T::key_type を持つ。 T::mapped_type を持つ。 コンストラクタ(user-defined) # template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt;が定義されていること */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt;が定義されていること */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); template\u0026lt;typename T /* into\u0026lt;T\u0026gt;は定義されておらず、T{}.into_toml()が存在すること */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* into\u0026lt;T\u0026gt;は定義されておらず、T{}.into_toml()が存在すること */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); toml::into\u0026lt;T\u0026gt; が定義されていた場合、 toml::into\u0026lt;T\u0026gt;(ud) の結果から構築します。\ntoml::into\u0026lt;T\u0026gt; が定義されておらず、 T に into_toml() メンバ関数が定義されていた場合、 ud.into_toml()の結果から構築します。\noperator=(basic_value) # basic_value\u0026amp; operator=(const basic_value\u0026amp; v) basic_value\u0026amp; operator=(basic_value\u0026amp;\u0026amp; v) template\u0026lt;typename TI\u0026gt; basic_value\u0026amp; operator=(basic_value\u0026lt;TI\u0026gt; other) 右辺のbasic_valueを代入します。\noperator=(T) # template\u0026lt;typename T\u0026gt; basic_value\u0026amp; operator=(T x) Tに対応する値を代入します。\nsource_locationの指す内容は破棄されます。\nもし同じ型の値を持っていたなら、元のフォーマット情報が保持されます。\nis\u0026lt;T\u0026gt;() # bool is\u0026lt;T\u0026gt;() const noexcept 条件 # Tは厳密にTOML型であること。つまり、値に対応するtoml::value::xxx_typeのいずれかであること。\n戻り値 # 格納している型がTと一致した場合trueを、そうでない場合はfalseを返します。\nis(toml::value_t) # bool is(toml::value_t t) const noexcept 戻り値 # 格納している型のタグがtと一致した場合trueを、そうでない場合はfalseを返します。\nis_xxx() # bool is_boolean() const noexcept; bool is_integer() const noexcept; bool is_floating() const noexcept; bool is_string() const noexcept; bool is_offset_datetime() const noexcept; bool is_local_datetime() const noexcept; bool is_local_date() const noexcept; bool is_local_time() const noexcept; bool is_array() const noexcept; bool is_table() const noexcept; 戻り値 # 格納している型がその型である場合trueを、そうでない場合はfalseを返します。\nis_empty() # bool is_empty() const noexcept; 戻り値 # デフォルト構築され値が代入されていない場合trueを、そうでない場合はfalseを返します。\nis_array_of_tables() # bool is_array_of_tables() const noexcept; 戻り値 # 格納している型が配列であり、空ではなく、全要素がテーブルの場合はtrueを、そうでない場合はfalseを返します。\ntype() # toml::value_t type() const noexcept 戻り値 # 格納している型に対応するタグを返します。\nas_xxx() # boolean_type const\u0026amp; as_boolean () const; integer_type const\u0026amp; as_integer () const; floating_type const\u0026amp; as_floating () const; string_type const\u0026amp; as_string () const; offset_datetime_type const\u0026amp; as_offset_datetime() const; local_datetime_type const\u0026amp; as_local_datetime () const; local_date_type const\u0026amp; as_local_date () const; local_time_type const\u0026amp; as_local_time () const; array_type const\u0026amp; as_array () const; table_type const\u0026amp; as_table () const; boolean_type \u0026amp; as_boolean (); integer_type \u0026amp; as_integer (); floating_type \u0026amp; as_floating (); string_type \u0026amp; as_string (); offset_datetime_type\u0026amp; as_offset_datetime(); local_datetime_type \u0026amp; as_local_datetime (); local_date_type \u0026amp; as_local_date (); local_time_type \u0026amp; as_local_time (); array_type \u0026amp; as_array (); table_type \u0026amp; as_table (); 戻り値 # 指定された型への参照を返します。\n例外 # 格納されている値の型が指定と異なる場合、toml::type_errorを送出します。\nas_xxx(std::nothrow) # std::nothrowオブジェクトを渡して呼び出します。\nboolean_type const\u0026amp; as_boolean (const std::nothrow_t\u0026amp;) const noexcept; integer_type const\u0026amp; as_integer (const std::nothrow_t\u0026amp;) const noexcept; floating_type const\u0026amp; as_floating (const std::nothrow_t\u0026amp;) const noexcept; string_type const\u0026amp; as_string (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_type const\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_type const\u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) const noexcept; local_date_type const\u0026amp; as_local_date (const std::nothrow_t\u0026amp;) const noexcept; local_time_type const\u0026amp; as_local_time (const std::nothrow_t\u0026amp;) const noexcept; array_type const\u0026amp; as_array (const std::nothrow_t\u0026amp;) const noexcept; table_type const\u0026amp; as_table (const std::nothrow_t\u0026amp;) const noexcept; boolean_type \u0026amp; as_boolean (const std::nothrow_t\u0026amp;) noexcept; integer_type \u0026amp; as_integer (const std::nothrow_t\u0026amp;) noexcept; floating_type \u0026amp; as_floating (const std::nothrow_t\u0026amp;) noexcept; string_type \u0026amp; as_string (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_type\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) noexcept; local_datetime_type \u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) noexcept; local_date_type \u0026amp; as_local_date (const std::nothrow_t\u0026amp;) noexcept; local_time_type \u0026amp; as_local_time (const std::nothrow_t\u0026amp;) noexcept; array_type \u0026amp; as_array (const std::nothrow_t\u0026amp;) noexcept; table_type \u0026amp; as_table (const std::nothrow_t\u0026amp;) noexcept; 戻り値 # 指定された型への参照を返します。\n備考 # 格納されている値の型が指定と異なる場合、未定義動作となります。\nas_xxx_fmt() # フォーマット情報にアクセスします。\nboolean_format_info \u0026amp; as_boolean_fmt (); integer_format_info \u0026amp; as_integer_fmt (); floating_format_info \u0026amp; as_floating_fmt (); string_format_info \u0026amp; as_string_fmt (); offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(); local_datetime_format_info \u0026amp; as_local_datetime_fmt (); local_date_format_info \u0026amp; as_local_date_fmt (); local_time_format_info \u0026amp; as_local_time_fmt (); array_format_info \u0026amp; as_array_fmt (); table_format_info \u0026amp; as_table_fmt (); boolean_format_info const\u0026amp; as_boolean_fmt () const; integer_format_info const\u0026amp; as_integer_fmt () const; floating_format_info const\u0026amp; as_floating_fmt () const; string_format_info const\u0026amp; as_string_fmt () const; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt() const; local_datetime_format_info const\u0026amp; as_local_datetime_fmt () const; local_date_format_info const\u0026amp; as_local_date_fmt () const; local_time_format_info const\u0026amp; as_local_time_fmt () const; array_format_info const\u0026amp; as_array_fmt () const; table_format_info const\u0026amp; as_table_fmt () const; 戻り値 # 指定された型のフォーマット情報を持つ構造体への参照を返します。\n例外 # 格納されている値の型が指定と異なる場合、toml::type_errorを送出します。\nas_xxx_fmt(std::nothrow) # std::nothrowオブジェクトを渡して呼び出します。\nboolean_format_info \u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) noexcept; integer_format_info \u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) noexcept; floating_format_info \u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) noexcept; string_format_info \u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) noexcept; local_datetime_format_info \u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) noexcept; local_date_format_info \u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) noexcept; local_time_format_info \u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) noexcept; array_format_info \u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) noexcept; table_format_info \u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) noexcept; boolean_format_info const\u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) const noexcept; integer_format_info const\u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) const noexcept; floating_format_info const\u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) const noexcept; string_format_info const\u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_format_info const\u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_date_format_info const\u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_time_format_info const\u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) const noexcept; array_format_info const\u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) const noexcept; table_format_info const\u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) const noexcept; 戻り値 # 指定された型のフォーマット情報を持つ構造体への参照を返します。\n備考 # 格納されている値の型が指定と異なる場合、未定義動作となります。\nat(key) # value_type\u0026amp; at(const key_type\u0026amp; key); value_type const\u0026amp; at(const key_type\u0026amp; key) const; 戻り値 # 今のvalueをtableにキャストしたあと、keyによって指定される要素を返します。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\nもし格納しているtableが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。\noperator[](key) # value_type\u0026amp; operator[](const key_type\u0026amp; k); 戻り値 # 今のvalueをtableにキャストしたあと、keyによって指定される要素への参照です。\nもしkeyによって指定される要素が存在しない場合、デフォルト構築されます。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\ncount(key) # std::size_t count(const key_type\u0026amp; key) const; 戻り値 # 今のvalueをtableにキャストしたあと、keyに対応する要素が含まれていれば1、そうでなければ0を返します。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\ncontains(key) # bool contains(const key_type\u0026amp; key) const; 戻り値 # 今のvalueをtableにキャストしたあと、keyに対応する要素が含まれていればtrue、そうでなければfalseを返します。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\nat(idx) # value_type\u0026amp; at(const std::size_t idx); value_type const\u0026amp; at(const std::size_t idx) const; 戻り値 # 今のvalueをarrayにキャストしたあと、idxによって指定される要素を返します。\n例外 # もし格納している値がarrayではなかった場合、toml::type_errorを送出します。\nもし格納しているarrayが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。\noperator[](idx) # value_type\u0026amp; operator[](const std::size_t idx) noexcept; value_type const\u0026amp; operator[](const std::size_t idx) const noexcept; 戻り値 # 今のvalueをarrayにキャストしたあと、idxによって指定される要素への参照を返します。\n備考 # 一切のチェックを行いません。\nもし格納している値がarrayではなかった場合、あるいはidxによって指定される要素が存在しない場合、未定義動作となります。\npush_back(value) # void push_back(const value_type\u0026amp; x); void push_back(value_type\u0026amp;\u0026amp; x); valueをarrayにキャストしたのち、そのarrayに対してpush_backを実行します。\n戻り値 # なし。\n例外 # 格納している値がarrayではなかった場合、toml::type_errorを送出します。\nemplace_back(args...) # template\u0026lt;typename ... Ts\u0026gt; value_type\u0026amp; emplace_back(Ts\u0026amp;\u0026amp; ... args) valueをarrayにキャストしたのち、そのarrayに対してemplace_backを実行します。\n戻り値 # 構築した値への参照。\n例外 # 格納している値がarrayではなかった場合、toml::type_errorを送出します。\nsize() # std::size_t size() const; 戻り値 # 今のvalueをarray、string、tableのどれかにキャストしたあと、その要素数を返します。 stringの場合、文字数を返します。\n例外 # 格納している値がarray, string, tableのどれでもなかった場合、toml::type_errorを送出します。\nlocation() # source_location location() const; 戻り値 # そのvalueが定義されたTOML文書内の位置を表すsource_locationオブジェクトを返します。\nもしTOML文書のパースによって構築されたものでない場合、どこも指示さないsource_locationを返します。\ncomments() # comment_type const\u0026amp; comments() const noexcept; comment_type\u0026amp; comments() noexcept; 戻り値 # コメント用コンテナへの参照を返します。\n非メンバ関数 # operator== # template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); 以下を満たすとき、2つのbasic_value\u0026lt;T\u0026gt;は同値となります。\nTOML型が同一 含む値が同一 コメントがバイト単位で同一 operator!= # template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs == rhs); } operator\u0026lt; # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); 以下の順番で比較されます。\nTOML型 TOML型が同一の場合、その値 TOML型とその値が同一の場合、コメント TOML型は、以下の順に小さい値を持ちます。\ntoml::value_t::empty toml::value_t::boolean toml::value_t::integer toml::value_t::floating toml::value_t::string toml::value_t::offset_datetime toml::value_t::local_datetime toml::value_t::local_date toml::value_t::local_time toml::value_t::array toml::value_t::table operator\u0026lt;= # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return (lhs \u0026lt; rhs) || (lhs == rhs); } operator\u0026gt; # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt;= rhs); } operator\u0026gt;= # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt; rhs); } toml::type_error # 型エラーの際に送出される例外です。\n型エラーが生じた値の位置情報が格納されています。\nstruct type_error final : public ::toml::exception { public: type_error(std::string what_arg, source_location loc); ~type_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; toml::make_error_info # template\u0026lt;typename TC, typename ... Ts\u0026gt; error_info make_error_info( std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); basic_value の location() を呼び出して、その source_location を make_error_info に渡して error_info を作成します。\n詳しくは error_info を参照してください。\ntoml::format_error # template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); basic_value の location() を呼び出して、その source_location を format_error に渡して error_info を作成し、それを文字列化して返します。\n詳しくは error_info を参照してください。\n関連項目 # comments.hpp source_location.hpp types.hpp visit.hpp "},{"id":35,"href":"/toml11/ja/docs/reference/version/","title":"version.hpp","section":"reference","content":" version.hpp # version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。\nマクロ # TOML11_VERSION_MAJOR # toml11のメジャーバージョンです。\nTOML11_VERSION_MINOR # toml11のマイナーバージョンです。\nTOML11_VERSION_PATCH # toml11のパッチバージョンです。\n関数 # license_notice # namespace toml { const char* license_notice() noexcept; } ライセンス条項を返します。\nソースコードを公開せずに頒布する際の利便性のために用意されています。\n"},{"id":36,"href":"/toml11/ja/docs/reference/visit/","title":"visit.hpp","section":"reference","content":" visit.hpp # visit.hppでは、toml::visitが定義されます。\ntoml::visit # 関数 # namespace toml { template\u0026lt;typename Visitor, typename TC\u0026gt; /* Visitor を basic_value\u0026lt;TC\u0026gt;の値で呼び出した際の返り値 */ visit(Visitor\u0026amp;\u0026amp; visitor, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename Visitor, typename TC\u0026gt; /* Visitor を basic_value\u0026lt;TC\u0026gt;の値で呼び出した際の返り値 */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp; v) template\u0026lt;typename Visitor, typename TC\u0026gt; /* Visitor を basic_value\u0026lt;TC\u0026gt;の値で呼び出した際の返り値 */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v) } basic_value\u0026lt;TC\u0026gt;が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。\n条件 # Visitorは、basic_value\u0026lt;TC\u0026gt;が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。\nまた、それぞれのオーバーロードで返り値は同じであることが要求されます。\n例 # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; struct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; int main() { toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating return 0; } 関連項目 # value.hpp "}] \ No newline at end of file diff --git a/ja.search.min.d7f84b295e1efddfff1ca37f09679587642c6862468e4dc9d3d699602f007d0f.js b/ja.search.min.d7f84b295e1efddfff1ca37f09679587642c6862468e4dc9d3d699602f007d0f.js new file mode 100644 index 00000000..731637f6 --- /dev/null +++ b/ja.search.min.d7f84b295e1efddfff1ca37f09679587642c6862468e4dc9d3d699602f007d0f.js @@ -0,0 +1 @@ +"use strict";(function(){const o="/toml11/ja.search-data.min.83426ddf6d79ea74181b57b08534ec3026592726e7d464122af519b655214a67.json",i=Object.assign({encode:!1,tokenize:function(e){return e.replace(/[\x00-\x7F]/g,"").split("")}},{includeScore:!0,useExtendedSearch:!0,fieldNormWeight:1.5,threshold:.2,ignoreLocation:!0,keys:[{name:"title",weight:.7},{name:"content",weight:.3}]}),e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",a);function a(t){if(t.target.value!==void 0)return;if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!r(n))return;e.focus(),t.preventDefault()}function r(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,fetch(o).then(e=>e.json()).then(e=>{window.bookSearchIndex=new Fuse(e,i)}).then(()=>e.required=!1).then(s)}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value).slice(0,10);n.forEach(function(e){const n=c("
  • "),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.item.href,s.textContent=e.item.title,o.textContent=e.item.section,t.appendChild(n)})}function c(e){const t=document.createElement("div");return t.innerHTML=e,t.firstChild}})() \ No newline at end of file diff --git a/ja/404.html b/ja/404.html new file mode 100644 index 00000000..d4628808 --- /dev/null +++ b/ja/404.html @@ -0,0 +1,2 @@ +404 Page not found | toml11 +

    404

    Page Not Found

    toml11

    \ No newline at end of file diff --git a/ja/categories/index.html b/ja/categories/index.html new file mode 100644 index 00000000..2b077669 --- /dev/null +++ b/ja/categories/index.html @@ -0,0 +1,9 @@ +Categories | toml11 + +
    Categories +
    \ No newline at end of file diff --git a/ja/categories/index.xml b/ja/categories/index.xml new file mode 100644 index 00000000..f4d5cec9 --- /dev/null +++ b/ja/categories/index.xml @@ -0,0 +1 @@ +Categories on toml11https://toruniina.github.io/toml11/ja/categories/Recent content in Categories on toml11Hugoja \ No newline at end of file diff --git a/ja/categories/page/1/index.html b/ja/categories/page/1/index.html new file mode 100644 index 00000000..3fc6bb58 --- /dev/null +++ b/ja/categories/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/ja/categories/ + \ No newline at end of file diff --git a/ja/docs/changelog/index.html b/ja/docs/changelog/index.html new file mode 100644 index 00000000..3f3fbbee --- /dev/null +++ b/ja/docs/changelog/index.html @@ -0,0 +1,154 @@ +changelog | toml11 + +
    changelog +

    Change Log +#

    v4.1.0 +#

    Added +#

    • std::get<std::u8string>をサポート
    • toml::value(std::u8string)をサポート
    • string_type = std::u8stringをサポート
    • operator<<(std::ostream&, toml::value)をサポート
    • toml::integer_formatに、16進数表示で大文字を使うことを指定するbool uppercaseを追加
    • templateを使って実装された into_toml() をサポート (by 萧迩珀)

    Fixed +#

    • Windowsで\r\nが改行に使われた際、出力時に\rが重複する問題を修正 (by Andreas Keller)

    Changed +#

    • CIで複数コアを使うことでビルドを高速化

    v4.0.3 +#

    Fixed +#

    • toml_fwd.hppを使用した際にデフォルト引数が重複する問題を修正
    • toml::valueを複数渡した際にtoml::make_error_infoが使えない問題を修正
    • std::reference_wrapperを持つtoml::resultをコピー・ムーブする際の問題を修正
    • hugoの最新版でドキュメントがビルドできない問題を修正
    • コンパイラによる軽微な警告を多数修正
    • CMakeの互換性に関する警告を抑制

    Changed +#

    • CIビルドで-Werror, /WXを追加
    • CIビルドでMSVCのwarningレベルを/W3から/W4に変更
    • READMEでより多くの機能を紹介するよう更新

    v4.0.2 +#

    Fixed +#

    • parse(FILE*) 内の fread の結果をチェック
    • toml11/version.hppのマクロを修正
    • コンパイルオプションに関するドキュメントの更新
    • ファイルオープンモードに関するドキュメントの更新

    Changed +#

    • CMakeLists.txt内のバージョン番号をversion.hppから取得するように変更

    v4.0.1 +#

    Fixed +#

    • sematic_version::{major, minor}<sys/sysmacro.h> 内で定義されるマクロの衝突を解消
    • discard_commentsoperator<< の定義を修正 (by Egor Pugin)
    • format_locationを使用した際に最初の空行が出ない問題を解決
    • 改行文字のみを含む行を指すsource_locationでエラーメッセージを生成した際に、同じ行が二回表示される問題を解決
    • README.md内のリンクを修正
    • example/unicodeのREADMEのタイトルを修正

    Added +#

    • mainに変更があったとき、single_include/toml.hppを自動生成するようCIを設定

    v3からv4への変化 +#

    破壊的変更 +#

    toml::basic_valuetemplate引数を変更 +#

    toml11 v3では、toml::basic_valueはコメントコンテナ、テーブル型コンテナ、配列型コンテナをそれぞれ取っていました。

    template<typename Comment,
    +         template<typename ...> class Table = std::unordered_map,
    +         template<typename ...> class Array = std::vector>
    +class basic_value;
    +

    ですが、integer_typeなどを変更したいという場合にはこれでは対応できません。

    toml11 v4では、toml::basic_valueは単一のTypeConfigを受け取り、より多くの型を変更可能にします。

    template<typename TypeConfig>
    +class basic_value;
    +

    デフォルトではtoml::valueが格納する型は変わりません。

    型を変更する際は、 +type_config +を参照してください。

    toml::basic_valuestd::initializer_listサポートを削除 +#

    toml11 v3では、 toml::valuestd::initializer_list を取るオーバーロードが用意されていました。

    これにより、 toml::value を配列やテーブルで初期化する際により直観的な書き方が可能でした。

    // toml11 v3
    +toml::value v{1,2,3,4,5};
    +toml::value v{ {"a", 42}, {"b", "foo"} };
    +

    しかし、これは同時に以下のような問題を引き起こしました。

    一つ目は、1要素の配列と通常の値の区別がつかず、常に配列になってしまうことです。

    // toml11 v3
    +toml::value v{1}; // 1 ではなく [1,] になってしまう
    +

    統一初期化記法が普及した現在、これは非常に不便です。

    二つ目は、値が全て文字列のテーブルと、ネストされた配列の区別がつかないことです。

    // toml11 v3
    +toml::value v{ {"a", "foo"}, {"b", "bar"} };
    +// {a = "foo", b = "bar"}
    +// [["a", "foo"], ["b", "bar"]]
    +// のどちらでもあり得る
    +

    これらの問題は言語仕様上解決が困難です。

    toml11 v4では、混乱を避けるため、std::initializer_listサポートを削除しました。

    toml::value を配列で初期化する際はexplicitに toml::array を、 +テーブルで初期化する際はexplicitに toml::table を指定する必要があります。

    // toml11 v4
    +toml::value v(toml::array{1,2,3,4,5});
    +toml::value v(toml::table{ {"a", 42}, {"b", "foo"} });
    +
    +toml::value v{toml::array{1}}; // [1,]
    +toml::value v{1}               // 1
    +
    +toml::value v{toml::table{{"a", "foo"}, {"b", "bar"}}};
    +toml::value v{toml::array{toml::array{"a", "foo"}, toml::array{"b", "bar"}}};
    +

    これにより toml::value をテーブルや配列で初期化する際に少し不便になりますが、 +explicitに型情報を記述することにより予測不能な値になることは避けることができます。

    toml::basic_value::is_uninitialized()is_empty() に変更 +#

    toml11 v3では、初期化されていない basic_value かどうかを判定する関数は +is_uninitialized でした。

    しかし、toml11 v4では言語拡張で null をサポートするため、意図的に空にされた値が構築される可能性があります。 +なので命名を変更し、 is_empty としました。

    toml::string を廃止、フォーマット情報を陽に格納 +#

    toml11 v3では、文字列が basicliteral かの情報を保持するため、 +格納する文字列型に toml::string という std::string の薄いラッパーを使用していました。

    // toml11 v3
    +namespace toml
    +{
    +enum class string_t : std::uint8_t
    +{
    +    basic   = 0,
    +    literal = 1,
    +};
    +
    +struct string
    +{
    +    string_t    kind;
    +    std::string str;
    +};
    +} // toml
    +

    toml11 v4では、数値型の基数や配列を複数行にするかどうかなどのより多くのフォーマット情報を持たせるため、 +全ての型に xxx_format 型を用意し、値とペアで格納することにしました。

    // toml11 v4
    +enum class string_format : std::uint8_t
    +{
    +    basic             = 0,
    +    literal           = 1,
    +    multiline_basic   = 2,
    +    multiline_literal = 3
    +};
    +
    +struct string_format_info
    +{
    +    string_format fmt = string_format::basic;
    +    bool start_with_newline    = false;
    +};
    +

    これにより、より細かいフォーマット情報を保持することができるようになり、 +特に数値型や配列、テーブル型のフォーマット情報がパース後も維持できるようになりました。

    toml::formatの引数を変更 +#

    toml11 v3では、 toml::format が数値型の精度や幅などの値を受け取っていました。

    しかし、これでは細かなフォーマット指定ができず、予想したようなファイルにシリアライズできませんでした。

    toml11 v4では、各 toml::value にそれぞれのフォーマット情報を格納したため、 +より細かいフォーマット情報を toml::value 自体が持ち運べるようになりました。

    これにより、 toml::format 自体はフォーマット指定を受け取らず、 +フォーマット時に使用できる言語機能フラグを持つ toml::spec のみを取るようになりました。

    toml::source_locationのメンバ関数を変更 +#

    toml11 v3では、 toml::source_location のメンバ型は一行分だけを意識したものでした。

    toml11 v4では、 toml::source_location のメンバ型は複数行が前提になります。

    toml::format_underlinetoml::format_locationに変更 +#

    toml11 v3では、 toml::source_location を使用して位置情報を文字列化するとき、 +toml::format_underline を使用していました。

    しかしこれは名称としてわかりにくいため、 toml::format_location に変更しました。

    format_errorの引数を変更 +#

    toml11 v3ではエラー情報を表すクラスがなかったため、toml::format_errorの引数が複雑になっていました。

    template<typename C, template<typename ...> class T, template<typename ...> class A>
    +std::string format_error(const std::string& err_msg,
    +        const basic_value<C, T, A>& v, const std::string& comment,
    +        std::vector<std::string> hints = {},
    +        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
    +
    +template<typename C, template<typename ...> class T, template<typename ...> class A>
    +inline std::string format_error(const std::string& err_msg,
    +        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
    +        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
    +        std::vector<std::string> hints = {},
    +        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
    +
    +template<typename C, template<typename ...> class T, template<typename ...> class A>
    +inline std::string format_error(const std::string& err_msg,
    +        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
    +        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
    +        const toml::basic_value<C, T, A>& v3, const std::string& comment3,
    +        std::vector<std::string> hints = {},
    +        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
    +

    toml11 v4では、class error_infomake_error_infoを導入し、format_errorの引数を簡略化しました。

    std::string format_error(const error_info& err);
    +std::string format_error(const std::string& errkind, const error_info& err);
    +
    +template<typename ... Ts>
    +std::string format_error(std::string title,
    +        source_location loc, std::string msg, Ts&& ... tail);
    +
    +template<typename TC, typename ... Ts>
    +std::string format_error(std::string title,
    +        const basic_value<TC>& v, std::string msg, Ts&& ... tail);
    +

    toml::color の制御を変更 +#

    toml11 v3では、出力に色を付けるかどうかに toml::colorize というマニピュレータを、 +toml::color::enable/disable と並列で使用していました。

    マニピュレータはストリームごとに色を付けるかどうかを決定できるものでしたが、 +v4でストリームを使用する頻度が下がったことと、内部で使用する +std::ios_base::xalloc がC++11ではスレッドセーフではないことなどから、 +toml::color::enable/disable のみを使用するようにし、 toml::colorize を削除しました。

    破壊的でない変更 +#

    parse_strの追加 +#

    toml11 v3では、文字列そのものを取るtoml::parse関数はありませんでした。 +なので文字列をパースする際にはstd::istringstreamを使う必要がありました。

    これは不便なので、toml::parse_strを追加し、文字列を直接パース出来るようにしました。

    try_parseの追加 +#

    toml11 v3では、パーサはエラーを発見した際にはtoml::syntax_errorを送出していました。

    しかし、例外を投げられない環境や、パフォーマンスの都合や記法の都合によって例外を投げたくない場合があります。

    toml11 v4では toml::result を使用して、例外を投げずにパース失敗を伝える toml::try_parse を実装しました。

    これも必ず例外を投げないというわけではなく、使用している標準ライブラリの内部でのエラー、 +例えばメモリ不足によるアロケーション失敗での std::bad_alloc などは送出される可能性があります。

    バイト列のパースをサポート +#

    ファイルなど以外の方法で得られたTOMLコンテンツをパース出来るようにするため、 +std::vector<unsigned char> を受け取る toml::parse, toml::try_parse を追加しました。

    toml::specの追加 +#

    toml11 v3では、TOML言語側の新機能は全て取り込み、またTOML言語の新バージョンに導入されることが決定した機能も +マクロ TOML11_USE_UNRELEASED_TOML_FEATURES によって制御していました。

    これは、toml11 v3を開発していた時点では TOML言語は0.4.0から0.5.0で、1.0.0に到達していなかったためです。

    最新のTOML言語仕様に全てのユーザーが詳しいわけではないため、 +古い言語使用に基づいたエラーメッセージを表示すると、コミュニティ全体を混乱させてしまいます。 +よって、v1.0.0に達するまでは、できる限り素早く新しい言語仕様を提供し、かつユーザーにもアップデートを促す必要がありました。

    しかし、現在のTOML言語仕様はv1.0.0です。 +そのため、TOML v1.1.0がリリースされた後でもv1.0.0を使用する、という選択肢に気を配る必要が生じました。

    よって、より柔軟にTOML言語仕様を選択できるよう、toml::specを導入して、TOML言語バージョンを実行時に変更できるようにしました。

    また、toml::specでは言語機能ごとにフラグを設定し、特定の言語機能のみを試すこともできるようにしました。

    これは、toml11 v4特有の言語拡張でも使用します。

    フォーマット情報の追加 +#

    toml11 v3では、文字列を除いてフォーマット情報が保存されず、シリアライズ時に考慮できるのは幅と精度だけでした。

    しかし、これでは16進数整数がシリアライズ時に10進数になってしまったり、確実にinline tableにする方法がありませんでした。

    toml11 v4では、全てのTOML型にフォーマット情報(integer_format etc)を追加し、 +パース時とシリアライズ時に考慮するようにしました。

    これによって、16進数整数や、インラインテーブル等のフォーマット情報をより細かく、値ごとに設定できるようになりました。

    デフォルトでコメントを維持するよう変更 +#

    toml11 v3では、デフォルトではコメントがパースされず、シリアライズもされませんでした。

    これは、コメントが後期に導入された機能で、特別なハックによって読み込まれていたためです。

    toml11 v4では、デフォルトでコメントをパースし、保存し、シリアライズするようになりました。

    また、パーサの実装も大幅に変更され、コメントが他の要素と同様にパースされるようになりました。

    single_include/toml.hpp の追加 +#

    toml11は多機能なライブラリなので、開発効率のために機能ごとに異なるヘッダファイルを持っています。 +ですが、これはインストールにある程度の手間が必要ということでもあります。

    そこで、toml11 v4から全てのヘッダファイルを適切な順序で結合した single_include/toml.hpp ファイルを追加し、 +単一のファイルで完結するライブラリをコピーするだけで導入できるようにしました。

    コンパイル済みライブラリを選択可能に +#

    toml11は template を多用しているため、コンパイル時間が長くなります。

    toml11 v4では、できるだけコンパイル可能な関数を増やし、それらを先にライブラリとしてコンパイルできるようにしました。

    これにより、大規模な開発で使用する際にコンパイル時間を短くできると期待できます。

    リファレンス・ドキュメントの追加 +#

    これまでは、READMEにすべてのfeatureを記載しており、関数の詳細な定義を示すリファレンスや、また日本語での資料などがありませんでした。

    toml11 v4では、リファレンスを追加したドキュメントを同梱し、また日本語・英語両方で同一の内容を記載します。

    ただし、ライブラリ作者は日本語母語話者であるため、日本語の内容を第一とし、英語の内容がそれと異なっていた場合は日本語の内容が正しいものとします。

    \ No newline at end of file diff --git a/ja/docs/changelog/index.xml b/ja/docs/changelog/index.xml new file mode 100644 index 00000000..85b432d3 --- /dev/null +++ b/ja/docs/changelog/index.xml @@ -0,0 +1 @@ +changelog on toml11https://toruniina.github.io/toml11/ja/docs/changelog/Recent content in changelog on toml11Hugoja \ No newline at end of file diff --git a/ja/docs/features/configure_types/index.html b/ja/docs/features/configure_types/index.html new file mode 100644 index 00000000..373f2323 --- /dev/null +++ b/ja/docs/features/configure_types/index.html @@ -0,0 +1,170 @@ +configuring types | toml11 + +
    configuring types +

    型をカスタマイズする +#

    toml::valueinteger_type として std::int64_t を、 +table_type として std::unordered_map<key_type, value_type> を使用します。

    しかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。

    そのため、 toml::valuetemplate 引数を取って格納する型を変えられるように実装されています。

    std::string が実際には std::basic_string<char, std::char_traits<char>, std::allocator<char>> の +エイリアスであるように、 toml::value は実際には toml::basic_value<toml::type_config> のエイリアスです。

    ここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。

    type_config +#

    type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。

    namespace toml
    +{
    +struct type_config
    +{
    +    using comment_type  = preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex);
    +};
    +}
    +

    toml::basic_value<TypeConfig> は、格納する boolean_typeTypeConfig::boolean_type、 +格納する integer_typeTypeConfig::integer_type 、のようにして定義しています。

    また、 array_typeTypeConfig::array_type<toml::basic_value<TypeConfig>> 、 +table_typeTypeConfig::table_type<key_type, toml::basic_value<TypeConfig>> と +定義されます。

    これらのメンバ型とメンバ関数を定義したクラスを toml::basic_value に +渡すことで、その toml::basic_value が持つ型を変更できます。

    parse_intparse_float は、数値型を独自実装のものに変更した際にパース方法を提供するための関数です。 +これらの関数には 0x などのprefixと桁区切りの _ が取り除かれた文字列、 +例えば 123456DEADBEEF が渡されます。 +base には 10, 16, 8, 2 のいずれかが渡されます。 +これらを使って integer_typefloating_type をパース出来るような関数を渡してください。

    デフォルト実装として、toml::read_inttoml::read_float が提供されています。

    static result<integer_type, error_info>
    +parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +{
    +    return toml::read_int<integer_type>(str, src, base);
    +}
    +
    +static result<floating_type, error_info>
    +parse_float(const std::string& str, const source_location src, const bool is_hex)
    +{
    +    return toml::read_float<floating_type>(str, src, is_hex);
    +}
    +

    read_intistream を使用し、16進と8進の場合は std::hex と +std::oct を使用します。2進の場合は掛け算と足し算で実装されています。 +これらをサポートしている型であれば、 read_int をそのまま使用できます。

    read_floatistream を使用します。 +16進浮動小数点数は doublefloat の場合しかサポートされておらず、 +それ以外の型のときに呼ばれると常にパースエラーを返す実装になっているので、 +もし浮動小数点数型をこれら以外の型にし、かつ hexfloat を使用する場合は、 +それを実装してください。 hexfloat を使用しないのであれば、実装する必要はありません。

    テーブル内の値の順序を維持する +#

    デフォルトの toml::type_config の他に、 toml::ordered_type_config が提供されています。 +これは、 table_typeordered_map に変更したものです。

    これを使用したものを toml::ordered_value 、その配列型とテーブル型のエイリアスを +toml::ordered_arraytoml::ordered_table と定義しています。

    toml::parse(...)toml::parse<toml::ordered_type_config>(...) として呼び出すことで、 +toml::ordered_value を使用することができます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::ordered_value input = toml::parse<toml::ordered_type_config>("example.toml");
    +    std::cout << toml::format(input) << std::endl;
    +    return 0;
    +}
    +

    コメントを保存しない +#

    type_configcomment_type でコメントを保存するコンテナを定義しています。

    コメントに特に情報がなく、パースせずに捨ててしまっていい場合は、 comment_type に +toml::discard_comments を指定してください。

    struct wo_comment_config
    +{
    +    using comment_type  = toml::discard_comments; // XXX
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +    {
    +        return toml::read_int<integer_type>(str, src, base);
    +    }
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex)
    +    {
    +        return toml::read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +

    配列にstd::vector以外のコンテナを使用する +#

    TOML配列の実装にvector以外のコンテナ(例:std::deque)を使用するには、 +array_type を以下のように変更してください。

    また、テーブル型のコンテナに unordered_map 以外のコンテナ(例:std::map)を使用するには、 +table_type を以下のように変更してください。

    struct deque_map_config
    +{
    +    using comment_type  = toml::preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::deque<T>; // XXX
    +    template<typename K, typename T>
    +    using table_type = std::map<K, T>; // XXX
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +    {
    +        return toml::read_int<integer_type>(str, src, base);
    +    }
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex)
    +    {
    +        return toml::read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +

    数値型に boost::multiprecision を使用する +#

    boost::multiprecision::cpp_intboost::multiprecision::cpp_bin_float_oct +を使用することで、より幅の広い整数型とより精度の良い浮動小数点数型を使用することができます。

    これらの型はストリーム演算子を実装しているため、デフォルト実装の read_int と +read_float をそのまま使用できます。

    struct large_num_config
    +{
    +    using comment_type  = toml::preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = boost::multiprecision::cpp_int;
    +    using floating_type = boost::multiprecision::cpp_bin_float_oct;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static toml::result<integer_type, toml::error_info>
    +    parse_int(const std::string& str, const toml::source_location src, const std::uint8_t base)
    +    {
    +        return toml::read_int<integer_type>(str, src, base);
    +    }
    +    static toml::result<floating_type, toml::error_info>
    +    parse_float(const std::string& str, const toml::source_location src, const bool is_hex)
    +    {
    +        return toml::read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +
    \ No newline at end of file diff --git a/ja/docs/features/error_message/index.html b/ja/docs/features/error_message/index.html new file mode 100644 index 00000000..edbea8d8 --- /dev/null +++ b/ja/docs/features/error_message/index.html @@ -0,0 +1,140 @@ +error message | toml11 + +
    error message +

    エラーメッセージを出力する +#

    toml11は toml::parsetoml::get<T>/find<T>, as_integer() などから +ファイル内の位置情報を含んだエラーメッセージを出力します。

    例えば、パース時に整数の文法エラーを発見した場合、

    [error] bad integer: `_` must be surrounded by digits
    + --> internal string at line 64 in file main.cpp
    +   |
    + 1 | a = 123__456
    +   |        ^-- invalid underscore
    +Hint: valid  : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755
    +Hint: invalid: _42, 1__000, 0123
    +

    あるいは実際に格納されている型と異なる型を要求した場合

    [error] toml::value::as_string(): bad_cast to string
    + --> input.toml
    +   |
    + 1 | a = 123_456
    +   |     ^^^^^^^-- the actual type is integer
    +

    toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。

    この機能を利用することで、TOMLの文法エラーだけでなく、 +例えば正の値でなければならないところに負数が現れた場合などの +アプリケーション固有のエラーメッセージを、TOMLファイル内の位置を指摘しながら +ユーザーに伝えられるということです。

    toml::value の位置情報からエラーメッセージを作成する +#

    toml::value はそれがパースされた位置の情報を持っています。

    その情報は toml::source_location にまとめられ、toml::value::location() で取得できます。

    const toml::value& a = input.at("a");
    +const toml::source_location src = a.location();
    +

    ファイルを toml::parse でパースした場合、そのTOMLファイル名と行数が保存されています。

    toml::parse_str でパースした場合TOMLファイル名はありませんが、代わりに +toml::parse_str を呼び出したC++ソースコードのファイル名と行数がTOMLファイル名として保存されています。 +このページの最初の例は toml::parse_str から出力された例でした。 +ファイル名の部分に注目してください。

    詳細は reference を参照してください。

    toml::source_location または toml::value とそれに付随するエラーメッセージを +toml::make_error_info に渡すことで、エラー情報を構築できます。 +これをtoml::format_error に渡すと、エラーメッセージが std::string にフォーマットされます。

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    const toml::error_info err = toml::make_error_info(
    +            "positive integer is required", // エラーのタイトル
    +            a, "but got negative value"     // 値の横に書くメッセージ
    +        );
    +    std::cerr << toml::format_error(err) << std::endl;
    +}
    +

    これは以下のようになります。

    [error] positive integer is required
    + --> input.toml
    +   |
    + 1 | a = -123456
    +   |     ^^^^^^^-- but got negative value
    +

    最後に補足をつけ足すこともできます。これはインデントされません。

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    const toml::error_info err = toml::make_error_info(
    +            "positive integer is required",      // エラーのタイトル
    +            a, "but got negative value",         // 値の横に書くメッセージ
    +            "Hint: `a` means length of the data" // 補足
    +        );
    +    std::cerr << toml::format_error(err) << std::endl;
    +}
    +
    [error] positive integer is required
    + --> input.toml
    +   |
    + 1 | a = -123456
    +   |     ^^^^^^^-- but got negative value
    +Hint: `a` means length of the data
    +

    toml::value からファイル内の行を出力できるのは、 +パースしたファイルが文字列としてメモリの中に残されているからです。

    パースした文字列はその全体が std::shared_ptrtoml::value に共有されています。 +コピーしてもファイル文字列全体がコピーされることはありません。 +また、そのファイルをパースして構築された toml::value が全てデストラクトされた時点で、 +ファイル情報もメモリ上から解放されます。

    ですので、アプリケーションで使用する際には、 toml::value を直接保存するのではなく +読み込み中に必要な値を全て取り出して、変換した値を保存した方がよいでしょう。

    文字列に色を付ける +#

    エラーメッセージにはANSIエスケープコードを使って色を付けることができます。

    TOML11_COLORIZE_ERROR_MESSAGE をコンパイル時に定義していれば、 +toml11の出力するエラーメッセージはデフォルトで色が付くようになります。

    そうでない場合は、 toml::color::enable() を呼び出すことにより、それ以降で出力される +エラーメッセージには色が付くようになります。 +逆に出力先がコンソールではないなどの理由で色をつけたくない場合は、 +toml::color::disable() を呼び出してください。 +その時点で色が付くようになっているかどうかは、 +toml::color::should_color() の返り値で判定できます。

    詳細は reference を参照してください。

    また、エラーのタイトルやエラーメッセージ、補足にはデフォルトで色が付きませんが、 +toml::color にあるマニピュレータを使って色を付けることも可能です。

    std::ostringstream oss;
    +oss << toml::color::red << "but got negative value";
    +
    +const toml::error_info err = toml::make_error_info(
    +        "positive integer is required",      // Error title
    +        a, oss.str(),                        // Message next to the value
    +        "Hint: `a` means length of the data" // Supplementary message
    +    );
    +

    こちらも、詳細は reference を参照してください。

    エラーメッセージのprefixを[error]から変更する +#

    エラーには種類があり、デフォルトの [error] ではよくない場合もあるでしょう。

    toml::format_error では、 toml::error_info の前に std::string を取って、それを +[error] の代わりに出力することができます。

    例えば、

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    const toml::error_info err = toml::make_error_info(
    +            "positive integer is required",      // エラーのタイトル
    +            a, "but got negative value"          // 値の横に書くメッセージ
    +        );
    +
    +    std::ostringstream prefix;
    +    prefix << toml::color::bold << toml::color::yellow << "[warn]";
    +    std::cerr << toml::format_error(prefix.str(), err) << std::endl;
    +    return 0;
    +}
    +else
    +{
    +    return a.as_integer()
    +}
    +

    このようにすると、 [warn] から始まる警告を出力することができます。

    他にも、toml::format_error に直接 error_info の構成要素を渡すことで、 +[error] なしのエラーメッセージを作成できます。

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    std::cerr << toml::format_error(
    +            "[warn] positive integer is required",      // エラーのタイトル
    +            a, "but got negative value"          // 値の横に書くメッセージ
    +        ) << std::endl;
    +    return 0;
    +}
    +else
    +{
    +    return a.as_integer()
    +}
    +

    複数の toml::value を指すエラーメッセージを作成する +#

    アプリケーションの設定では、先に読み込んだ値によって後に読み込んだ値が取れる範囲が変わることがあるでしょう。

    そのような場合には、エラーの原因となる別の値を同時に出力したいはずです。

    toml::format_errortoml::make_error_info は、 toml::value とそれに対応するエラーメッセージ std::string のペアを任意個取ることができます。

    std::cerr << toml::format_error(
    +        "[error] invalid range",
    +        a, "minimum value is defined here",
    +        b, "maximum value is defined here",
    +        c, "and it exceeds the range"
    +    ) << std::endl;
    +

    こちらも末尾に補足を追加することができます。

    std::cerr << toml::format_error(
    +        "[error] invalid range",
    +        a, "minimum value is defined here",
    +        b, "maximum value is defined here",
    +        c, "and it exceeds the range",
    +        "Hint: all the value must be in the range, [a, b)"
    +    ) << std::endl;
    +

    toml::value または toml::source_location を渡した場合、必ずそれに関する +エラーメッセージが続く必要があります。 +そうしない場合、非常にわかりにくいコンパイルエラーになります。

    \ No newline at end of file diff --git a/ja/docs/features/extension/index.html b/ja/docs/features/extension/index.html new file mode 100644 index 00000000..59445a24 --- /dev/null +++ b/ja/docs/features/extension/index.html @@ -0,0 +1,95 @@ +extension | toml11 + +
    extension +

    TOML言語拡張 +#

    TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 +v1.1.0に向けて議論が続いています。

    そこで議論された機能の中には、有用なケースが少ないと考えられたものや、 +提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。

    toml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 +これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また +サポートされる予定もないことに注意してください。

    また、これらの機能はデフォルトで使用されない設定になっており、 +使用するためには機能フラグをそれぞれ true にしなければなりません。 +非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。

    いくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 +もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は +本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。

    null +#

    TOMLファイル内で値としてnullを使えるようになります。

    a = null
    +b = [ 1, 2, 3, null, 5]
    +

    これを使用するには、 toml::specext_null_valuetrue にします。

    パースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 +ただし、ファイル内の位置情報は設定されます。

    null は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り +"null" という文字列のキーとして解釈されます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec;
    +    spec.ext_null_value = true;
    +
    +    const auto v = toml::parse_str("a = null", spec);
    +
    +    assert(v.at("a").is_empty());
    +    assert(v.at("a").is(toml::value_t::empty));
    +
    +    return 0;
    +}
    +

    浮動小数点数の16進数フォーマット +#

    TOMLファイル内で浮動小数点数に16進数フォーマットを使用できるようになります。

    a = 0x1.91eb851eb851fp+1 # 3.14
    +

    これを使用するには、 toml::specext_hex_floattrue にします。

    フォーマットは printf%a/%A を指定した場合に準拠します。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec;
    +    spec.ext_hex_float = true;
    +
    +    const auto v = toml::parse_str("a = 0x1.91eb851eb851fp+1", spec);
    +
    +    assert(v.at("a").is_floating());
    +    assert(v.at("a").as_floating() == 3.14);
    +
    +    return 0;
    +}
    +

    整数・浮動小数点数のsuffix +#

    TOMLファイル内で数値の後ろにsuffixをつけられるようになります。 +10進数表記の整数と浮動小数点数で使用できます。

    単位を表示するときなどに便利です。

    a = 86_400_sec
    +b = 3.1416_rad
    +c = 10_μm
    +

    ですが、これらはあくまで単なる suffix であり、単位換算は行われません。 +単位換算が必要な場合は、ユーザーが suffix を参照して実装してください。

    これを使用するには、 toml::specext_num_suffixtrue にします。

    数値と接尾辞の間は_で区切られている必要があります。

    数値部分との区別のため、suffixは数値で始まることはできません。

    distance = 100_m  # valid
    +distance = 10_0m  # invalid
    +distance = 10_0_m # valid
    +

    接尾辞はstd::string suffixとしてフォーマット情報に保持されます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec;
    +    spec.ext_hex_float = true;
    +
    +    const auto v = toml::parse_str("a = 86_400_sec", spec);
    +
    +    assert(v.at("a").is_integer());
    +    assert(v.at("a").as_integer() == 86400);
    +    assert(v.at("a").as_integer_fmt().suffix == "sec");
    +
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/index.html b/ja/docs/features/index.html new file mode 100644 index 00000000..9bef95cf --- /dev/null +++ b/ja/docs/features/index.html @@ -0,0 +1,52 @@ +features | toml11 + +
    features +

    features +#

    ここでは、toml11が提供する主な機能について、例を挙げながら説明します。

    ファイル・文字列をパースする +#

    ファイルや文字列をパースする関数と、それが出力するエラーの扱い方について説明します。

    以下の内容を含みます。

    • ファイルをパースする
    • 文字列をパースする
    • バイト列をパースする
    • 例外を投げずにファイルをパースする
    • 例外を投げずに文字列をパースする
    • 例外を投げずにバイト列をパースする

    toml::valueから値を取り出す +#

    toml::valueが持つデータの型を調べ、取り出す方法、型変換を行う方法について説明します。

    以下の内容を含みます。

    • メンバ関数を使って値の型を調べる
    • メンバ関数を使って値にアクセスする
    • コメントにアクセスする
    • インラインテーブル・ドットキーの取り扱い
    • 日付情報の取り扱い
    • toml::get<T>を使って変換する
    • toml::get_orを使って失敗時の値を指定する
    • toml::find<T>を使って検索と変換を行う
    • toml::find_orを使って失敗時の値を指定する
    • ユーザー定義型との変換を定義する
    • toml::visitで関数を適用する
    • toml::valueを構築する

    エラーメッセージを作る +#

    toml::valueの値を使って、TOMLファイル中の位置情報つきのエラーメッセージを生成する方法について説明します。

    以下の内容を含みます。

    • toml::value の位置情報を取り出す
    • エラーメッセージを構築する
    • 出力に色を付ける

    TOMLファイルを出力する +#

    toml::valueの値をフォーマットする方法と、可能なフォーマット指定について説明します。

    以下の内容を含みます。

    • toml::valueの値ごとにフォーマットを指定する
    • toml::valueをフォーマットして文字列化する

    toml::valueの型を変更する +#

    toml::valueが格納する型(integer_typetable_typeをカスタマイズする方法について説明します。

    以下の内容を含みます。

    • type_configの定義
    • ordered_type_configを使用する
    • コメントを保存しないようにする
    • std::dequeなどの異なるコンテナを使用する
    • boost::multiprecisionなどの異なる数値型を使用する

    TOMLリテラル +#

    C++内にTOMLファイルを埋め込むための_tomlリテラルについて説明します。

    以下の内容を含みます。

    • TOMLリテラルを使用する

    TOML言語バージョン +#

    toml11がサポートするTOML言語のバージョン、主にTOML-v1.1.0で追加された言語機能を制御する方法について説明します。

    以下の内容を含みます。

    • TOML言語の1.1.0を使用する
    • TOML言語の1.1.0の一部の機能のみ使用する

    TOML言語拡張 +#

    toml11独自のTOML言語拡張について説明します。

    以下の内容を含みます。

    • null をサポートする
    • 浮動小数点数の16進数フォーマットをサポートする
    • 数値に単位を付けられるようにする
    \ No newline at end of file diff --git a/ja/docs/features/index.xml b/ja/docs/features/index.xml new file mode 100644 index 00000000..6ec953d4 --- /dev/null +++ b/ja/docs/features/index.xml @@ -0,0 +1,53 @@ +features on toml11https://toruniina.github.io/toml11/ja/docs/features/Recent content in features on toml11Hugojaparsing fileshttps://toruniina.github.io/toml11/ja/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/parsing_files/ファイル・文字列をパースする # toml11では、toml::parse や toml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。 +これらは成功時に toml::value を返します。 ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 toml::value はファイルに関するメタデータを持っており、 toml::table は std::unordered_map&lt;std::stirng, toml::value&gt; のエイリアスでしかありません。 メタデータを返すために、 toml::table ではなく toml::value を返しています。 ファイルのルートに対応する toml::value は常に table_type を持ちます。 +ファイルをパースする # ファイルをパースする際は、 toml::parse または toml::try_parse を使います。 +toml::parse # std::stringでファイル名を指定する # toml::parse は、文字列でファイル名を受け取り、そのファイルを開いてパースします。 +以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。 +#include &lt;toml.hpp&gt; #include &lt;iostream&gt; int main() { const toml::value input = toml::parse(&#34;input.toml&#34;); std::cout &lt;&lt; input.at(&#34;title&#34;).as_string() &lt;&lt; std::endl; return 0; } std::filesystem::pathでファイルを指定する # toml::parse には、std::filesystem::pathを渡すことも可能です。 +当然ですが、&lt;filesystem&gt;がサポートされるC++17以降でなければ使用できません。 +std::istreamで入力ストリームを指定する # toml::parse には、std::istreamを渡すことも可能です。getting valueshttps://toruniina.github.io/toml11/ja/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/value/値を取り出す # ここでは、 toml::value が格納している値にアクセスする方法を説明します。 +メンバ関数を使って値にアクセスする # is_something と as_something # toml::value は is_boolean() や is_integer() などのメンバ関数を持っており、 これらを使うと持っている型を調べることができます。 +また、 as_boolean(), as_integer() などのメンバ関数も持っており、 これらを使ってその型にアクセスすることができます。 +完全なリストは toml::value のリファレンス を参照してください。 +toml::value v = /* ... */; if(v.is_integer()) { std::cout &lt;&lt; v.as_integer() &lt;&lt; std::endl; } 指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。 +その what() は以下のようなメッセージを含みます。 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # 型情報は enum class toml::value_t で識別できます。error messagehttps://toruniina.github.io/toml11/ja/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/error_message/エラーメッセージを出力する # toml11は toml::parse や toml::get&lt;T&gt;/find&lt;T&gt;, as_integer() などから ファイル内の位置情報を含んだエラーメッセージを出力します。 +例えば、パース時に整数の文法エラーを発見した場合、 +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 あるいは実際に格納されている型と異なる型を要求した場合 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。serializing valueshttps://toruniina.github.io/toml11/ja/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/serialize/TOMLファイルを出力する # toml::format を使うと、 toml::value を文字列にすることができます。 +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。 +もし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。 +一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 例えば、 toml::array_format::array_of_tables は [[array.of.tables]] の形でフォーマットするので、 キーへのアクセスを要求します。 +キーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。 +他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 string_format::literal が指定された文字列が改行を含んでいる場合などです。 +フォーマットの指定方法は後述します。 +キーを渡して出力する # toml::format には std::string としてキーを渡すことが可能です。configuring typeshttps://toruniina.github.io/toml11/ja/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/configure_types/型をカスタマイズする # toml::value は integer_type として std::int64_t を、 table_type として std::unordered_map&lt;key_type, value_type&gt; を使用します。 +しかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。 +そのため、 toml::value は template 引数を取って格納する型を変えられるように実装されています。 +std::string が実際には std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt; の エイリアスであるように、 toml::value は実際には toml::basic_value&lt;toml::type_config&gt; のエイリアスです。 +ここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。 +type_config # type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; } toml::basic_value&lt;TypeConfig&gt; は、格納する boolean_type を TypeConfig::boolean_type、 格納する integer_type を TypeConfig::integer_type 、のようにして定義しています。toml literalhttps://toruniina.github.io/toml11/ja/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/literal/_tomlリテラル # &quot;&quot;_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } 改行を含む場合、生文字列リテラルが便利です。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } 値が単体で書かれていた場合、その値が返されます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto a = &#34;42&#34;_toml; const auto b = &#34;12:34:56&#34;_toml; assert(v.toml spechttps://toruniina.github.io/toml11/ja/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/toml_spec/TOML言語バージョン # toml::spec によって、 toml::parse や toml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。 +TOMLのバージョンを指定する # toml::spec は toml::semantic_version から構築できます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } ですがこれは長いので、toml::spec::v()関数が用意されています。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } 特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。 +デフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。 +v4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。 +TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。 +実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。 +そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。 +バージョン指定でパースする # toml::parse のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。 +これによって、使用するTOMLバージョンを変更できます。 +#include &lt;toml.hpp&gt; int main() { toml::value input = toml::parse(&#34;input.toml&#34;, toml::spec::v(1, 1, 0)); return 0; } バージョン指定でシリアライズする # toml::format のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。extensionhttps://toruniina.github.io/toml11/ja/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/extension/TOML言語拡張 # TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 v1.1.0に向けて議論が続いています。 +そこで議論された機能の中には、有用なケースが少ないと考えられたものや、 提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。 +toml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また サポートされる予定もないことに注意してください。 +また、これらの機能はデフォルトで使用されない設定になっており、 使用するためには機能フラグをそれぞれ true にしなければなりません。 非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。 +いくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は 本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。 +null # TOMLファイル内で値としてnullを使えるようになります。 +a = null b = [ 1, 2, 3, null, 5] これを使用するには、 toml::spec の ext_null_value を true にします。 +パースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 ただし、ファイル内の位置情報は設定されます。 +null は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り &quot;null&quot; という文字列のキーとして解釈されます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(&#34;a = null&#34;, spec); assert(v.at(&#34;a&#34;).is_empty()); assert(v. \ No newline at end of file diff --git a/ja/docs/features/literal/index.html b/ja/docs/features/literal/index.html new file mode 100644 index 00000000..c2921580 --- /dev/null +++ b/ja/docs/features/literal/index.html @@ -0,0 +1,78 @@ +toml literal | toml11 + +
    toml literal +

    _tomlリテラル +#

    ""_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto v = "a = 42"_toml;
    +
    +    assert(v.at("a").as_integer() == 42);
    +
    +    return 0;
    +}
    +

    改行を含む場合、生文字列リテラルが便利です。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto v = R"(
    +        a = 42
    +        b = "foo"
    +    )"_toml;
    +
    +    assert(v.at("a").as_integer() == 42);
    +    assert(v.at("b").as_string()  == "foo");
    +
    +    return 0;
    +}
    +

    値が単体で書かれていた場合、その値が返されます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto a = "42"_toml;
    +    const auto b = "12:34:56"_toml;
    +
    +    assert(v.at("a").as_integer() == 42);
    +    assert(v.at("b").as_local_time().hour   == 12);
    +    assert(v.at("b").as_local_time().minute == 34);
    +    assert(v.at("b").as_local_time().second == 56);
    +
    +    return 0;
    +}
    +

    TOMLは数値のみからなるキーを許可しています。 +よって、[1]はテーブル名として合法です。

    [1]のようにテーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。

    配列として解釈させるには、trailing commaを使用してください。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto t = "[1]"_toml;  // {1 = {}}
    +    const auto a = "[1,]"_toml; // [1,]
    +
    +    assert(t.is_table());
    +    assert(t.at("1").is_table());
    +
    +    assert(a.is_array());
    +    assert(a.at(0).as_integer() == 1);
    +
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/parsing_files/index.html b/ja/docs/features/parsing_files/index.html new file mode 100644 index 00000000..df9b28a9 --- /dev/null +++ b/ja/docs/features/parsing_files/index.html @@ -0,0 +1,188 @@ +parsing files | toml11 + +
    parsing files +

    ファイル・文字列をパースする +#

    toml11では、toml::parsetoml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。

    これらは成功時に toml::value を返します。 +ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 +toml::value はファイルに関するメタデータを持っており、 +toml::tablestd::unordered_map<std::stirng, toml::value> のエイリアスでしかありません。 +メタデータを返すために、 toml::table ではなく toml::value を返しています。 +ファイルのルートに対応する toml::value は常に table_type を持ちます。

    ファイルをパースする +#

    ファイルをパースする際は、 +toml::parse +または +toml::try_parse +を使います。

    toml::parse +#

    std::stringでファイル名を指定する +#

    toml::parse +は、文字列でファイル名を受け取り、そのファイルを開いてパースします。

    以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const toml::value input = toml::parse("input.toml");
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    std::filesystem::pathでファイルを指定する +#

    toml::parse +には、std::filesystem::pathを渡すことも可能です。

    当然ですが、<filesystem>がサポートされるC++17以降でなければ使用できません。

    std::istreamで入力ストリームを指定する +#

    toml::parse +には、std::istreamを渡すことも可能です。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +std::ios::binaryを使ってバイナリモードで開いてください。

    その際、ファイル名の情報がなくなるため、エラーメッセージ中では "unknown file" となります。

    これを避けるため、 std::istream を取る場合は第二引数に std::string でファイル名を取ることもできます。

    std::ifstream 以外にも、 std::istringstream 等の別のistreamを受け取ることができます。 +ただし、呼び出した時点で内容が全て読み込める必要があります。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::string filename("input.toml");
    +    std::ifstream ifs(filename);
    +    const toml::value input = toml::parse(ifs, filename);
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    FILE*でファイルを指定する +#

    toml::parse +には、FILE*を渡すことも可能です。

    標準ライブラリによる改行文字の自動変換によるファイルサイズと文字数との不整合を避けるため、 +fopen("example.toml", "rb")のようにしてバイナリモードで開いてください。

    この場合も、std::istreamのときと同様に、第二引数に文字列でファイル名を与える必要があります。

    FILE*を渡した場合、ファイルの読み込みに失敗した際にはerrnoが報告されます。

    エラー時の挙動 +#

    toml::parse +は、文法エラーを発見した場合 +toml::syntax_error +を送出します。

    toml::syntax_error +は、 +toml::exception +から派生しており、またそれはstd::exceptionから派生します。

    よって、 +toml::syntax_error +からは what() メンバ関数を使ってエラーメッセージを取り出すことができます。

    また、 +toml::syntax_error +は +std::vector<toml::error_info> +を持っており、errors()メンバ関数を使ってそれにアクセスすることもできます。

    toml::parse はごく簡単なエラーならスキップして復帰し、複数のエラーを報告しようと努めます。 +数値のフォーマットエラー程度なら復帰できることが多いですが、 +配列やテーブルの中のエラーは復帰できずに似たようなエラーを複数回報告することもあります。 +冗長であると感じた場合は、 std::vector<toml::error_info>front() だけを使用するようにすると、 +確実に問題のある個所に関するメッセージを得られます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    // parse
    +    try {
    +        const toml::value input = toml::parse("input.toml");
    +        std::cout << input.at("title").as_string() << std::endl;
    +    } catch(const toml::syntax_error& err) {
    +        // 全てのエラーを報告
    +        std::cerr << err.what() << std::endl;
    +
    +        // 最初のエラーのみ報告
    +        std::cerr << err.errors().front() << std::endl;
    +    }
    +}
    +

    toml::try_parse +#

    toml::parse は失敗時に例外を送出しますが、 toml::try_parse は失敗時に例外を投げません。

    その代わり、返り値が toml::value ではなく toml::result<toml::value, std::vector<toml::error_info>> になります。

    result 型は成功値または失敗値のどちらかを持つ型です。 +Rustの Result やHaskellの Either に相当します。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    const auto parse_result = toml::try_parse("input.toml");
    +    if(parse_result.is_ok())
    +    {
    +        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
    +    }
    +    else
    +    {
    +        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
    +    }
    +    return 0;
    +}
    +

    result 型がどちらの値を保持しているかは +is_ok(), is_err() 関数を使って確認できます。 +また、 unwrap(), unwrap_err() によって成功値、失敗値をそれぞれ取り出せます。 +unwrap が失敗した場合は、 bad_result_access 例外が送出されます。 +as_ok()as_err() 関数を使用すると、失敗時には例外が送出されず、未定義動作となります。

    try_parsesyntax_errorfile_io_error を投げず、同じ toml::error_info を +result の失敗型として返しますが、絶対に例外を投げないわけではありません。

    標準ライブラリ内部でエラーが発生した場合、例えばメモリ不足の際に vector の +allocate が失敗した場合などには std::bad_alloc が送出されますが、 +toml::try_parse はこれが送出された場合は catch せずに通します。 +そのため、それらのような標準ライブラリの内部で発生する例外は送出される恐れがあります。

    文字列をパースする +#

    toml::parse_str +#

    toml::parse_str +は、ファイル名ではなくパースする文字列そのものを受け取ります。

    また、エラーメッセージのTOMLファイルの名前に相当する部分には、std::source_location +相当のコンパイラ拡張機能が使用できる場合、 parse_str を呼び出したC++ファイルの名前と行数が代わりに使用されます。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const toml::value input = toml::parse_str("title = \"parse_str\"");
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    toml::try_parse_str +#

    toml::try_parse_str +は、 parse_str と同じくパースする文字列そのものを受け取り、 +try_parse と同じくエラーの報告に +toml::result +を使用します。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const auto parse_result = toml::try_parse_str("title = \"parse_str\"");
    +    if(parse_result.is_ok())
    +    {
    +        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
    +    }
    +    else
    +    {
    +        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
    +    }
    +    return 0;
    +}
    +

    バイト列をパースする +#

    ファイルではなくバイト列をパースすることも可能です。

    UTF-8でエンコードされている必要があるため、unsigned charを使っています。

    toml::parse(std::vector<unsigned char>) +#

    挙動は toml::parse と同一です。

    バイト列をパースする際は、 filename を要求します。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::vector<unsigned char> bytes{/* ... */};
    +    const toml::value input = toml::parse(bytes, "internal bytes");
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    toml::try_parse(std::vector<unsigned char>) +#

    挙動は toml::try_parse と同一です。

    バイト列をパースする際は、 filename を要求します。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::vector<unsigned char> bytes{/* ... */};
    +    const auto parse_result = toml::try_parse(bytes, "internal bytes");
    +    if(parse_result.is_ok())
    +    {
    +        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
    +    }
    +    else
    +    {
    +        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
    +    }
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/serialize/index.html b/ja/docs/features/serialize/index.html new file mode 100644 index 00000000..ce19c1da --- /dev/null +++ b/ja/docs/features/serialize/index.html @@ -0,0 +1,146 @@ +serializing values | toml11 + +
    serializing values +

    TOMLファイルを出力する +#

    toml::format を使うと、 toml::value を文字列にすることができます。

    #include <toml.hpp>
    +#include <cassert>
    +
    +int main()
    +{
    +    const toml::value v(toml::table{
    +        {"a", 42},
    +        {"b", "foo"},
    +    });
    +    const std::string s = toml::format(v);
    +
    +    const toml::value u = toml::parse_str(s);
    +
    +    assert(u.at("a").as_integer() == 42);
    +    assert(u.at("b").as_string()  == "foo");
    +
    +    return 0;
    +}
    +

    table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。

    もし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。

    一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 +例えば、 toml::array_format::array_of_tables[[array.of.tables]] の形でフォーマットするので、 +キーへのアクセスを要求します。

    キーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。

    他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 +例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 +string_format::literal が指定された文字列が改行を含んでいる場合などです。

    フォーマットの指定方法は後述します。

    キーを渡して出力する +#

    toml::format には std::string としてキーを渡すことが可能です。

    その場合、ルートテーブルの下にそのキーがあり、渡した値はそのキーに対応すると解釈されます。

    キーが複数段になる場合、 std::vector<std::string> を渡すことができます。

    #include <toml.hpp>
    +#include <cassert>
    +
    +int main()
    +{
    +    const toml::value v(toml::table{
    +        {"a", 42},
    +        {"b", "foo"},
    +    });
    +    const std::string s = toml::format("bar", v);
    +
    +    const toml::value u = toml::parse_str(s);
    +
    +    assert(u.at("bar").at("a").as_integer() == 42);
    +    assert(u.at("bar").at("b").as_string()  == "foo");
    +
    +    return 0;
    +}
    +

    フォーマットを指定する +#

    toml::value のそれぞれの型には、対応するフォーマット情報型があります。

    toml::value::integer_type には toml::integer_format_info が、 +toml::value::table_type には toml::table_format_info があります。

    これらは、パースした際に設定され、型が変わらない限り値を変更しても引き継がれます。

    また、 as_integer_fmt()as_table_fmt() といったメンバ関数によってアクセスすることができ、 +直接編集することが可能です。

    以下ではいくつかの例を挙げて使い方を説明します。

    フォーマットへのアクセス方法は +toml::valueのリファレンスを、 +フォーマット情報クラスの完全なリストと詳細は +formatのリファレンスを +参照してください。

    整数のフォーマットを指定する +#

    整数は、基数と幅、そして _ の位置を指定することができます。

    hex, oct, bin のとき、指定された幅に達するまでゼロで埋められます。 +dec の場合は幅指定はスペースを追加しますが、これはパースされません。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::value v(0x00C0'FFEE);
    +    v.as_integer_fmt().fmt    = toml::integer_format::hex;
    +    v.as_integer_fmt().width  = 8;
    +    v.as_integer_fmt().spacer = 4;
    +
    +    const std::stirng s = toml::format(v);
    +    assert(s == "0x00C0_FFEE");
    +
    +    return 0;
    +}
    +

    詳細は、reference を参照してください。

    配列を単一行・複数行にする +#

    配列には、 toml::array_format::onelinetoml::array_format::multiline を指定できます。

    # oneline
    +a = [1, 2, 3, 4, 5]
    +# multiline
    +a = [
    +  1,
    +  2,
    +  3,
    +  4, 
    +  5
    +]
    +

    multiline のときは、インデントを指定できます。 +各要素は body_indent の分だけインデントされ、閉じ括弧 ]closing_indent の分だけインデントされます。

    文字種は indent_type で指定され、 toml::indent_char::space または toml::indent_char::tab が選択できます。

    インデントに使用する文字種は統一してください。

    一つのファイル内でインデントに異なる文字種が指定された場合、結果は未規定になります。 +何らかのインデントがされますが、全ての箇所で文字種やインデントの深さは不定となります。

    また、 array の要素が全て table_type を持つ場合、 +toml::array_format::array_of_tables が指定できます。

    array_of_tables を指定せずに multiline にした場合、テーブルはインラインテーブルになります。

    # multiline
    +a = [
    +  {foo = 42},
    +  {bar = "hoge"},
    +]
    +
    +# array_of_tables
    +[[a]]
    +foo = 42
    +
    +[[a]]
    +bar = "hoge"
    +

    デフォルトでは、 toml::array_format::default_format が指定されます。 +これは適したフォーマットを自動的に選択します。

    例えば、 default_format で全要素が table_type だった場合、 array_of_tables が選択されます。 +また、十分短い配列は oneline に、長い配列またはネストされた配列などの複雑な配列は multiline になります。

    詳細は、reference を参照してください。

    テーブルをインラインテーブルにする +#

    テーブルをインラインテーブルにする際は toml::table_format::oneline を指定します。 +通常のテーブルにする際は、 toml::table_format::multiline を指定します。

    oneline = {a = 42, b = "foo"}
    +
    +[multiline]
    +a = 42
    +b = "foo"
    +

    TOML v1.1.0ではインラインテーブル内での改行が許可されますが、その場合は +toml::table_format::multiline_oneline とします。 +これは、後述するTOMLバージョン指定で対応する機能フラグがtrueになっていない限り無視されます。

    multiline_oneline = {
    +    a = 42,
    +    b = "foo"
    +}
    +

    詳細は、reference を参照してください。

    TOML言語バージョンを指定して出力する +#

    TOML v1.1.0で許可されたインラインテーブル内の改行や\xエスケープシーケンスのように、 +TOMLバージョンによって使用できない言語機能があります。

    toml::format は最後の引数に toml::spec を取ることができます。

    これにより、シリアライズ時に使用するTOMLのバージョンを指定することができます。

    特に、 toml::parsetoml::spec を使用して新機能を使用した場合は、 +パースした値がそのバージョンでしか使えないフォーマット情報を持つ場合があるので、 +toml::format にも同じ toml::spec を渡すことを忘れないようにしてください。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const auto spec = toml::spec::v(1, 1, 0)
    +
    +    const toml::value v = toml::parse("input.toml", spec);
    +
    +    std::cout << toml::format(v, spec);
    +
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/toml_spec/index.html b/ja/docs/features/toml_spec/index.html new file mode 100644 index 00000000..dcbd4f62 --- /dev/null +++ b/ja/docs/features/toml_spec/index.html @@ -0,0 +1,86 @@ +toml spec | toml11 + +
    toml spec +

    TOML言語バージョン +#

    toml::spec +によって、 toml::parsetoml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。

    TOMLのバージョンを指定する +#

    toml::spec +は +toml::semantic_version +から構築できます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec(toml::semantic_version(1, 1, 0));
    +    return 0;
    +}
    +

    ですがこれは長いので、toml::spec::v()関数が用意されています。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec = toml::spec::v(1, 1, 0);
    +    return 0;
    +}
    +

    特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。

    デフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。

    v4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。

    TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。

    実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。

    そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。

    バージョン指定でパースする +#

    toml::parse +のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。

    これによって、使用するTOMLバージョンを変更できます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::value input = toml::parse("input.toml", toml::spec::v(1, 1, 0));
    +    return 0;
    +}
    +

    バージョン指定でシリアライズする +#

    toml::format +のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。

    これによって、使用するTOMLバージョンを変更できます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::value v = toml::parse("input.toml", toml::spec::v(1, 1, 0));
    +    std::cout << toml::format(v, toml::spec::v(1, 1, 0)) << std::endl;
    +    return 0;
    +}
    +

    もしフォーマット変数などによって指定されているフォーマットが渡された toml::spec +では許可されていないものだった場合、指定は無視されて他のフォーマットにフォールバックされます。

    TOMLに追加された新機能を個別に指定する +#

    TOMLのバージョンアップで追加された機能は複数あり、そのうちの一部だけを有効にすることが可能です。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec = toml::spec::v(1, 0, 0);
    +
    +    // インラインテーブル内での改行を許可
    +    spec.v1_1_0_allow_newlines_in_inline_tables = true;
    +
    +    toml::value input = toml::parse("input.toml", spec);
    +    return 0;
    +}
    +

    全てのフラグのリストは、 +toml::spec +を参照してください。

    \ No newline at end of file diff --git a/ja/docs/features/value/index.html b/ja/docs/features/value/index.html new file mode 100644 index 00000000..9f5e863b --- /dev/null +++ b/ja/docs/features/value/index.html @@ -0,0 +1,403 @@ +getting values | toml11 + +
    getting values +

    値を取り出す +#

    ここでは、 toml::value が格納している値にアクセスする方法を説明します。

    メンバ関数を使って値にアクセスする +#

    is_somethingas_something +#

    toml::valueis_boolean()is_integer() などのメンバ関数を持っており、 +これらを使うと持っている型を調べることができます。

    また、 as_boolean(), as_integer() などのメンバ関数も持っており、 +これらを使ってその型にアクセスすることができます。

    完全なリストは toml::value のリファレンス を参照してください。

    toml::value v = /* ... */;
    +if(v.is_integer())
    +{
    +    std::cout << v.as_integer() << std::endl;
    +}
    +

    指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。

    その what() は以下のようなメッセージを含みます。

    [error] toml::value::as_string(): bad_cast to string
    + --> input.toml
    +   |
    + 1 | a = 123_456
    +   |     ^^^^^^^-- the actual type is integer
    +

    toml::value_t +#

    型情報は enum class toml::value_t で識別できます。

    type() メンバ関数は、現時点で格納している値の型情報を返します。

    toml::value v = /* ... */;
    +switch(v.type())
    +{
    +    case toml:value_t::empty          : { /*...*/ break; }
    +    case toml:value_t::boolean        : { /*...*/ break; }
    +    case toml:value_t::integer        : { /*...*/ break; }
    +    case toml:value_t::floating       : { /*...*/ break; }
    +    case toml:value_t::string         : { /*...*/ break; }
    +    case toml:value_t::offset_datetime: { /*...*/ break; }
    +    case toml:value_t::local_datetime : { /*...*/ break; }
    +    case toml:value_t::local_date     : { /*...*/ break; }
    +    case toml:value_t::local_time     : { /*...*/ break; }
    +    case toml:value_t::array          : { /*...*/ break; }
    +    case toml:value_t::table          : { /*...*/ break; }
    +    default: {break;}
    +}
    +

    is(toml::value_t) メンバ関数は、渡された value_t と同じ型の値を格納している場合 true を、 +それ以外の場合 false を返します。

    toml::value v = /* ... */;
    +if(v.is(toml::value_t::integer))
    +{
    +    std::cout << v.as_integer() << std::endl;
    +}
    +

    at, [], contains, size, push_back, emplace_back +#

    標準ライブラリコンテナが持つメンバ関数の一部は、 toml::value も提供しています。

    これらは、内部で toml::value を対応する型に変換し、そのメンバ関数を呼び出します。

    at(std::size_t i), operator[](std::size_t i) +#

    as_array().at(i), as_array()[i] と同等です。

    toml::value はデフォルトで std::vector<toml::value>array_type に使うので、 +エラーが発生した際には atstd::out_of_range を送出し、operator[] は未定義動作となります。

    toml::value v(toml::array{1,2,3});
    +std::cout << v.at(1);
    +

    格納している型が array_type ではなかった場合、 type_error を送出します。

    at(std::string key), operator[](std::string key) +#

    as_table().at(key), as_table()[key] と同等です。

    toml::value はデフォルトで std::unordered_map<std::string, toml::value>table_type に使うので、 +対応する値が存在しない場合は atstd::out_of_range を送出し、 operator[] は新しく toml::value を構築してそれへの参照を返します。 +そのため、operator[]const 版はありません。

    toml::value v(toml::table{});
    +v["a"] = 42;
    +

    格納している型が table_type ではなかった場合、 type_error を送出します。

    size() +#

    長さを返します。

    array_type または table_type の場合は要素数、 string_type の場合は文字数を返します。

    格納している型がどれでもなかった場合、 type_error を送出します。

    push_back(), emplace_back() +#

    as_array().push_back(), as_array().emplace_back() と同一です。

    格納している型が array_type ではなかった場合、 type_error を送出します。

    コメントにアクセスする +#

    toml11では、デフォルトでコメントがパースされ、対応する値に行ごとに保存されます。

    対応する値は、連続するコメント行の直後に来る値か、もしくはそのコメントと同じ行に描かれている値です。

    直前または直後に値がなければ、そのコメントはどこにも紐づけられず、無視されます。

    # input.toml
    +
    +# これはaに関するコメントです。
    +a = 42
    +b = 3.14 # これはbに関するコメントです。
    +
    +# このコメントには対応する値がないため無視されます。
    +
    +# これは1番目のcに関するコメントです。
    +# これは2番目のcに関するコメントです。
    +c = "foo" # これは最後のcに関するコメントです。
    +

    値に対応するコメントには、toml::valuecomments() メンバ関数を使ってアクセスします。

    comments()std::vector<std::string> と同じメンバ関数を持つコンテナを返します。

    const auto v = toml::parse("input.toml");
    +const auto& a = v.at("a");
    +const auto& b = v.at("b");
    +const auto& c = v.at("c");
    +
    +assert(a.comments().size() == 1);
    +assert(a.comments().at(0) == "# これはaに関するコメントです。");
    +
    +assert(b.comments().size() == 1);
    +assert(b.comments().at(0) == "# これはbに関するコメントです。");
    +
    +assert(c.comments().size() == 3);
    +assert(c.comments().at(0) == "# これは1番目のcに関するコメントです。");
    +assert(c.comments().at(1) == "# これは2番目のcに関するコメントです。");
    +assert(c.comments().at(2) == "# これは最後のcに関するコメントです。");
    +

    ファイル全体に対応するルートテーブルに関するコメントは、ファイルの先頭に書きます。

    # ルートテーブルに関するコメントです。
    +# これもルートテーブルに関するコメントです。
    +
    +# これはaに関するコメントです。
    +a = 42
    +

    ただし、もしファイルの先頭のコメントの直後に値が来た場合、 +そのコメントはその値に関するコメントと解釈され、ルートテーブルのコメントはなくなります。

    # これはaに関するコメントです。
    +# これもaに関するコメントです。
    +a = 42
    +

    インラインテーブル・ドットキーの取り扱い +#

    インラインテーブルは単にテーブルで、C++コード上で他のテーブルと異なる点はありません。

    a = {b = 42, c = "foo"}
    +

    ドットキーも単にテーブルで、C++コード上で他のテーブルと異なる点はありません。

    a.b = 42
    +a.c = "foo"
    +

    これらは以下のファイルと全く同じ構造を持ちます。

    [a]
    +b = 42
    +c = "foo"
    +

    なので、どの記法でも以下の全く同一のコードで処理できます。

    const auto input = toml::parse("input.toml");
    +
    +assert(input.at("a").at("b").as_integer() == 42);
    +assert(input.at("a").at("c").as_string()  == "foo");
    +

    ただし、フォーマット情報によって区別することは可能です。

    const auto input = toml::parse("input.toml");
    +switch(input.at("a").as_table_fmt().fmt)
    +{
    +    case toml::table_format::oneline: 
    +    {
    +        std::cout << "inline table" << std::endl;
    +        break;
    +    }
    +    case toml::table_format::multiline:
    +    {
    +        std::cout << "normal table" << std::endl;
    +        break;
    +    }
    +    case toml::table_format::dotted:
    +    {
    +        std::cout << "dotted keys" << std::endl;
    +        break;
    +    }
    +}
    +

    このフォーマット情報は後述するシリアライズの際も考慮されます。

    日付情報の取り扱い +#

    local_date, +local_time, +local_datetime, そして +offset_datetime は、 +toml11では対応するメンバ変数を持つ専用の構造体にパースされます。

    使用する際は、直接値を取り出す他にも、後述する toml::gettoml::find を使用して、 +std::chrono::system_clock::time_pointstd::tm 等の型に変換することができます。

    toml::get<T>を使って変換する +#

    toml::get<T> は、 toml::value の持つ値を変換して取り出す関数です。 +T に変換先に指定したい型を指定します。

    const toml::value v = /*...*/;
    +std::cout << toml::get<int>(v) << std::endl;
    +

    後述する toml::find<T> も、型変換の部分は同一の機能を持ちます。

    格納されている型のそれぞれについて、 +変換ができない型が指定された場合、 toml::type_error が送出されます。

    単純な変換 +#

    boolean_type +#

    boolean_type から変換が可能なのは、 bool のみです。

    integer_type +#

    bool 以外で std::is_integral<T>true になる型は、 integer_type から変換できます。

    toml::value v(42);
    +const auto u32 = toml::get<std::uint32_t>(v);
    +const auto i16 = toml::get<short>(v);
    +

    floating_type +#

    std::is_floating_point<T>true になる型は、floating_type から変換できます。

    toml::value v(3.14);
    +const auto f64 = toml::get<double>(v);
    +const auto f32 = toml::get<float >(v);
    +

    string_type +#

    string_type からは std::string へ変換できます。 +また、C++17以降では、std::string_view へも変換できます。

    toml::value v("foo");
    +const auto s = toml::get<std::string>(v);
    +
    +// C++17以降
    +const auto sv = toml::get<std::string_view>(v);
    +

    datetime variants +#

    local_date, +local_datetime, +offset_datetime は +ある日付と時刻を指しているため、 +std::chrono::system_clock::time_point への変換が可能です。

    ただし、local_time は +日付の情報がないため、0時0分からの経過時刻として std::chrono::duration への +変換をサポートします。

    また、 local_datelocal_datetime は実行中のマシンのタイムゾーンを取得して変換を行います。

    date = 2024-01-23
    +time = 12:30:00
    +l_dt = 2024-01-23T12:30:00
    +o_dt = 2024-01-23T12:30:00+09:00
    +
    const auto input = toml::parse("input.toml");
    +
    +const auto date = toml::get<std::chrono::system_clock::time_point>(input.at("date"));
    +const auto l_dt = toml::get<std::chrono::system_clock::time_point>(input.at("l_dt"));
    +const auto o_dt = toml::get<std::chrono::system_clock::time_point>(input.at("o_dt"));
    +
    +const auto time = toml::get<std::chrono::minutes>(input.at("time")); // 12 * 60 + 30 min
    +

    参照を取得できる条件 +#

    toml::get<T> は、 Ttoml::value が格納する型そのものだった場合、参照を返すことができます。

    逆に、変換が必要な場合( std::int64_t で格納されている整数を std::uint32_t で取り出そうとした場合)は、 +変換後の型への参照を返すことは不可能です。

    変換が必要ない型の場合、返された参照を経由して値を書き換えることも可能です。

    toml::value v(42);
    +
    +toml::get<toml::value::integer_type>(v) = 6 * 9;
    +
    +assert(v.as_integer() == 54);
    +

    配列をSTLコンテナに +#

    配列の要素型が全て同じ場合、要素型が T に変換可能であれば、 std::vector<T> に変換可能です。

    a = [1, 2, 3, 4, 5]
    +
    const auto a = toml::get<std::vector<int>>(input.at("a"));
    +

    他のSTLコンテナにも変換可能です。

    const auto a1 = toml::get<std::deque<int>>(input.at("a"));
    +const auto a2 = toml::get<std::list <int>>(input.at("a"));
    +const auto a3 = toml::get<std::array<int, 5>>(input.at("a"));
    +

    std::array に変換する場合、要素数が一致している必要があります。 +もし要素数が一致しなかった場合、 std::out_of_range が送出されます。

    STL以外のコンテナであっても、デフォルトコンストラクタと push_back を持っている場合、 +toml::get で変換が可能です。

    const auto a = toml::get<boost::container::small_vector<int, 8>>(input.at("a"));
    +

    配列を std::pair, std::tuple に +#

    配列の要素型が異なる場合、 std::pairstd::tuple に変換が可能です。

    a = [true, 3.14]
    +b = [42, 2.718, "foo"]
    +
    const auto a = toml::get<std::pair<bool, double>>(input.at("a"));
    +const auto b = toml::get<std::tuple<int, double, std::string>>(input.at("b"));
    +

    std::array の場合と同様に、配列の長さは std::pair, std::tuple の要素数と一致している必要があります。 +もし要素数が一致しなかった場合、 std::out_of_range が送出されます。

    また、各要素は対応する要素に変換できる必要があります。 +変換できない場合、 toml::type_error が送出されます。

    ネストされた配列の変換 +#

    ネストされた配列は、ネストされたコンテナに変換可能です。

    a = [ [1, 2, 3], [4, 5, 6] ]
    +
    const auto a = toml::get<std::vector<std::vector<int>>>(input.at("a"));
    +

    型が異なる場合には、 std::pair/tuple が便利です。

    a = [ [1, 2, 3], ["foo", "bar"] ]
    +
    const auto a = toml::get<
    +    std::pair<std::vector<int>, std::vector<std::string>>
    +    >(input.at("a"));
    +

    テーブルを std::map に変換 +#

    テーブルに含まれる値の型が全て同じであれば、 std::mapstd::unordered_map に変換が可能です。

    t = {a = 1, b = 2}
    +
    const auto t = toml::get<std::map<std::string, int>>(input.at("t"));
    +

    STL以外のコンテナであっても、デフォルトコンストラクタと emplace(key, mapped) を持っている場合、 +toml::get で変換が可能です。

    const auto t = toml::get<boost::container::flat_map<std::string, int>>(input.at("t"));
    +

    要素型の変換に失敗した場合は toml::type_error が送出されます。

    toml::get_orを使って失敗時の値を指定する +#

    toml::get は変換に失敗した際に toml::type_error 例外を送出します。

    toml::get_or を使用することで、変換に失敗した際に例外ではなくデフォルト値を返せるようになります。

    toml::get<T> とは異なり、 get_or は引数から変換先の型を推論するため、 <T> の指定は不要です。

    const auto a = toml::get_or(input.at("a"), 42);
    +

    変換可能な型は toml::get と同様です。

    toml::value::xxx_typeを指定した場合は、参照を取り出すことも可能ですが、その場合は引数も参照である必要があります。

    toml::value::integer_type a_default = 42;
    +auto a& = toml::get_or(input.at("a"), a_default);
    +

    toml::find<T>を使って検索と変換を同時に行う +#

    toml::find<T> は、テーブルを持つ toml::value から値を検索し、同時に +toml::get と同じ型変換を行って取り出す関数です。

    const auto a = toml::find<int>(input, "a");
    +// const auto a = toml::get<int>(input.at("a")); と同じ
    +

    toml::find<T> は配列にも使用できます。

    const auto a  = input.at("a");
    +const auto a2 = toml::find<int>(a, 2);
    +// const auto a2 = toml::get<int>(input.at("a").at(2)); と同じ
    +

    型変換の際にエラーが起きた場合、 toml::get と同じ toml::type_error を +送出します。 +キーが見つからなかった場合またはインデックスが存在しない場合は、 +std::out_of_range を送出します。

    型を指定しなかった場合、型変換を行わず toml::value を取り出します。

    const auto a = toml::find(input, "a");
    +// const auto a = input.at("a"); と同じ
    +

    toml::find<T> は再帰的に値にアクセスることもできます。

    a = {b = {c = 42}}
    +
    const auto a_b_c = toml::find<int>(input, "a", "b", "c");
    +// const auto a = toml::get<int>(input.at("a").at("b").at("c")); と同じ
    +

    このとき、キーとインデックスを混ぜることができます。

    a = [ {b = 1}, {b = 2}, {b = 3} ]
    +
    const auto a_2_b = toml::find<int>(input, "a", 2, "b");
    +// const auto a = toml::get<int>(input.at("a").at(2).at("c")); と同じ
    +

    TOMLはquoted keyという機能を持っています。

    これは、 ""'' を使うことで通常許可されない文字をキーに使えるというもので、 +この中では . はテーブルを導入しません

    "127.0.0.1" = "value"
    +site."google.com" = true
    +

    このTOMLファイルは以下のようにして読みます。

    const auto input = toml::parse("input.toml");
    +
    +assert(input.at("127.0.0.1").as_string() == "value");
    +assert(input.at("site").at("google.com").as_boolean());
    +

    このような場合にも違和感なく対応するため、toml11ではキーに . が含まれていても +自動で分割はしません。

    テーブルの階層構造を陽に指定することが、適切な入力ファイルの構造化に資すると考えているからです。

    参考: toml.io キー

    toml::find_orを使って失敗時の値を指定する +#

    toml::find_or は、 toml::get_or と同様に、失敗時のデフォルト値を渡します。

    const auto a = toml::find_or(input, "a", 42);
    +

    型変換の失敗だけでなく、キーが見つからなかった場合もデフォルト値を返します。

    ユーザー定義型との変換を定義する +#

    toml::gettoml::find では、以下のどれかの方法を使うことで +ユーザー定義型を使用することができます。

    toml::from の定義 +#

    toml11には toml::from という型があり、以下のように特殊化することでユーザー定義型からの +変換をサポートできます。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +namespace toml
    +{
    +template<>
    +struct from<extlib::foo>
    +{
    +    static extlib::foo from_toml(const toml::value& v)
    +    {
    +        return extlib::foo{
    +            toml::find<int>(v, "a"),
    +            toml::find<std::string>(v, "b")
    +        };
    +    }
    +};
    +} // toml
    +

    後述する型設定を変更した toml::value もサポートする場合、以下のようにしてください。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +namespace toml
    +{
    +template<>
    +struct from<extlib::foo>
    +{
    +    template<typename TC>
    +    static extlib::foo from_toml(const toml::basic_value<TC>& v)
    +    {
    +        return extlib::foo{
    +            toml::find<int>(v, "a"),
    +            toml::find<std::string>(v, "b")
    +        };
    +    }
    +};
    +} // toml
    +

    この定義は、 TOML11_DEFINE_CONVERSION_NON_INTRUSIVE によって自動的に定義できます。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b)
    +

    あるいは、リフレクションライブラリを使用することもできます。 +exampleboost-ext/reflect を使用したサンプルも参照してください。

    from_toml メンバ関数の定義 +#

    from_toml メンバ関数を定義することによっても変換を定義することができます。

    これを使用する場合、デフォルトコンストラクタが必要です。

    struct bar
    +{
    +    int a;
    +    std::string b;
    +
    +    void from_toml(const toml::value& v)
    +    {
    +        this->a = toml::find<int>(v, "a");
    +        this->b = toml::find<std::string>(v, "b");
    +        return ;
    +    }
    +};
    +

    両方が定義されていた場合、 toml::from が優先されます。

    toml::value を受け取るコンストラクタ +#

    toml::value を受け取るコンストラクタがあれば、 toml::get による変換ができます。

    struct baz
    +{
    +    explicit baz(const toml::value& v)
    +        : a(toml::find<int>(v, "a")), b(toml::find<std::string>(v, "b"))
    +    {}
    +    int a;
    +    std::string b;
    +};
    +

    両方が定義されていた場合、toml::fromfrom_toml が優先されます。

    toml::visitで関数を適用する +#

    toml::value が格納する型すべてに適用できる関数オブジェクトがあれば、 +toml::visit によって型変換を経ずに直接その関数を呼ぶことができます。

    struct type_name_of
    +{
    +    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
    +    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
    +    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
    +    std::string operator()(const toml::value::string_type         &) const {return "string";}
    +    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
    +    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
    +    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
    +    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
    +    std::string operator()(const toml::value::array_type          &) const {return "array";}
    +    std::string operator()(const toml::value::table_type          &) const {return "table";}
    +};
    +
    +toml::value v(3.14);
    +std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
    +

    toml::value を構築する +#

    toml::value はパーサの内部だけでなく、ユーザーコードで構築することも可能です。

    toml::value が格納する型と同じか変換可能な型を渡しての構築が可能です。

    toml::value v1(true);
    +toml::value v2(42);
    +toml::value v3(3.14);
    +

    配列の場合、 toml::array を使うか、

    toml::value v(toml::array{1, 2, 3});
    +

    配列の場合、 std::vector などのコンテナを直接渡すことが可能です。

    const std::vector<toml::value> a{1,2,3};
    +toml::value v(a);
    +

    このコンテナには、 toml::get で変換可能なコンテナが使用できます。

    テーブルの場合も同様に、 toml::table を使うか、

    toml::value v(toml::table{{"foo", 1}, {"bar", 2}, {"baz", 3}});
    +

    std::map などのコンテナを直接渡します。

    const std::map<std::string, toml::value> t{
    +        {"foo", 1}, {"bar", 2}, {"baz", 3}
    +    }
    +toml::value v(t);
    +

    コンストラクタには、 format_info と コメントを渡すことができます。

    コメントの型は std::vector<std::string> です。 +各要素が一行分に相当します。

    toml::integer_format_info fmt;
    +fmt.fmt = toml::integer_format::hex;
    +fmt.spacer = 4;
    +
    +toml::value v1(0xDEADBEEF, fmt);
    +toml::value v2(0xC0FFEE, fmt, {"hex value!"});
    +

    toml::value に変換する +#

    ユーザー定義型から toml::value を構築する際に、 toml::intointo_toml を +定義することで、その挙動をカスタマイズできます。

    特に、別のライブラリの型などを変換する際に toml::into が便利です。

    toml::intoを定義する +#

    toml::into を特殊化することで toml::value への変換が可能になります。

    toml::value への変換が用意されていない外部ライブラリの型などに対して有効です。

    toml::value が変換時に type_config を渡すため、basic_valuetemplate 引数を受け取る必要があります。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +template<>
    +struct into<extlib::foo>
    +{
    +    template<typename TC>
    +    static toml::basic_value<TC> into_toml(const extlib::foo& f)
    +    {
    +        return toml::basic_value<TC>(typename toml::basic_value<TC>::table_type{{"a", f.a}, {"b", f.b}});
    +    }
    +};
    +

    into_toml メンバ関数を定義する +#

    from_toml と同様、メンバ関数によっても変換を定義することができます。

    toml::into が定義されていた場合、そちらが優先されます。

    struct bar
    +{
    +    int a;
    +    std::string b;
    +
    +    toml::value into_toml() const
    +    {
    +        return toml::value(toml::table{{"a", this->a}, {"b", this->b}});
    +    }
    +};
    +
    \ No newline at end of file diff --git a/ja/docs/index.html b/ja/docs/index.html new file mode 100644 index 00000000..39528cb5 --- /dev/null +++ b/ja/docs/index.html @@ -0,0 +1,9 @@ +Docs | toml11 + +
    Docs +
    \ No newline at end of file diff --git a/ja/docs/index.xml b/ja/docs/index.xml new file mode 100644 index 00000000..104f957d --- /dev/null +++ b/ja/docs/index.xml @@ -0,0 +1 @@ +Docs on toml11https://toruniina.github.io/toml11/ja/docs/Recent content in Docs on toml11Hugoja \ No newline at end of file diff --git a/ja/docs/installation/index.html b/ja/docs/installation/index.html new file mode 100644 index 00000000..fb180812 --- /dev/null +++ b/ja/docs/installation/index.html @@ -0,0 +1,74 @@ +installation | toml11 + +
    installation +

    installation +#

    single_includeを使用する +#

    single_include/toml.hppは、toml11が持つ全ての機能を単一のファイルにまとめたシングルファイル・ヘッダオンリーライブラリです。

    これをINCLUDE_PATHが通っている箇所にコピーして#include <toml.hpp>とするのが最も単純な使用方法です。

    MITライセンスの許諾表示はコメントとtoml:license_notice()関数の両方に含まれます。 +ソースコードを公開せずに再頒布する場合は、toml11のライセンスファイルをコピーして同梱するか、この関数を呼び出せるようにしておいてください。

    toml11をクローンし、cmakeを使って使用する +#

    toml11git submoduleなどによって自身のレポジトリ下に配置した場合、cmakeを使用している場合はadd_subdirectory(toml11)のようにすることで使用可能になります。

    add_subdirectory(toml11)
    +add_executable(main main.cpp)
    +target_link_libraries(main PUBLIC toml11::toml11)
    +

    toml11は自身がルートプロジェクトのときのみ、テストとインストールを行います。

    cmakeを使用してインストールする +#

    toml11をクローンしたのち、cmakeを使ってインストールすることができます。

    $ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
    +$ cmake --install ./build/ --prefix=/opt/toml11
    +

    インストールの前にテストプログラムを実行する際は、最初に-DTOML11_BUILD_TESTS=ONを設定してください。

    インストールが完了すれば、以下のようにして使用できます。

    find_package(toml11)
    +add_executable(main main.cpp)
    +target_link_libraries(main PRIVATE toml11::toml11)
    +

    cmakeを使用してコンパイルし、静的ライブラリを作成する +#

    cmakeの実行時に-DTOML11_PRECOMPILE=ONを定義することで、toml11の関数のうちコンパイルできるものを先にコンパイルして、全体のコンパイル時間を短縮することができます。

    $ cmake -B ./build/ -DTOML11_PRECOMPILE=ON
    +

    ライブラリをリンクする場合は、CMakeで

    target_link_libraries(your_target PUBLIC toml11::toml11)
    +

    とするか、ヘッダ内の関数のinline化を避けるためにコンパイラに-DTOML11_COMPILE_SOURCESを渡してください。

    ただし、toml11は複数のC++バージョンに対応するため、__cplusplusの値などによって型を切り替えることがあります。 +そのため、ビルドした際のバージョンと使用時のバージョンが異なる場合、リンクに失敗する可能性があります。 +問題が生じた場合はCMAKE_CXX_STANDARDによって必要なバージョンを設定してコンパイルしてください。 +それが難しい場合は、通常通りヘッダオンリーライブラリとして使用してください。

    find_package(toml11)によってTOML11_INCLUDE_DIRが定義されます。 +コンパイル済みライブラリとしてインストールした場合でも、 TOML11_INCLUDE_DIR を +include_directories に追加した上で target_link_libraries を +使用しないようにすれば、ヘッダオンリーライブラリとして使用可能です。

    find_package(toml11)
    +add_executable(main main.cpp)
    +# インクルードのみ可能にし、リンクを行わない
    +target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR})
    +

    examplesをコンパイルする +#

    -DTOML11_BUILD_EXAMPLES=ONとすることで、examples/をコンパイルできます。

    $ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON
    +$ cmake --build ./build/
    +

    examplesの実行バイナリはexamples/に生成されます。

    テストを実行する +#

    テストをビルドするためには、-DTOML11_BUILD_TESTS=ONとします。

    $ git submodule update --init --recursive
    +$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
    +$ cmake --build ./build/
    +$ ctest --test_dir ./build/
    +

    toml-lang/toml-testsを実行するには、-DTOML11_BUILD_TOML_TESTS=ONとします。 +すると、tests/toml11_decodertoml11_encoderがビルドされます。

    $ git submodule update --init --recursive
    +$ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON
    +$ cmake --build ./build/
    +$ ctest --test_dir ./build/
    +
    \ No newline at end of file diff --git a/ja/docs/installation/index.xml b/ja/docs/installation/index.xml new file mode 100644 index 00000000..f4c03cd4 --- /dev/null +++ b/ja/docs/installation/index.xml @@ -0,0 +1 @@ +installation on toml11https://toruniina.github.io/toml11/ja/docs/installation/Recent content in installation on toml11Hugoja \ No newline at end of file diff --git a/ja/docs/reference/color/index.html b/ja/docs/reference/color/index.html new file mode 100644 index 00000000..dc5ec9e9 --- /dev/null +++ b/ja/docs/reference/color/index.html @@ -0,0 +1,100 @@ +color.hpp | toml11 + +
    color.hpp +

    color.hpp +#

    color.hppでは、エラーメッセージの色付けに関する関数が定義されます。

    色はANSIエスケープシーケンスによって指定されます。 +ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。

    マクロ +#

    TOML11_COLORIZE_ERROR_MESSAGE
    +

    コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 +デフォルトでエラーメッセージに色が付きます。

    定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を +使用して指定する必要があります。

    関数 +#

    enable() +#

    namespace toml {
    +namespace color {
    +void enable();
    +} // color
    +} // toml
    +

    ANSIエスケープシーケンスによる色付けを行うよう設定します。

    例 +#

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::color::enable(); // この後の全てのエラーがカラーになります。
    +    const auto input = toml::parse("input.toml");
    +    return 0;
    +}
    +

    disable() +#

    namespace toml {
    +namespace color {
    +void disable();
    +} // color
    +} // toml
    +

    ANSIエスケープシーケンスによる色付けを行わないよう設定します。

    例 +#

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::color::enable(); // この後の全てのエラーがカラーになります。
    +    const auto input = toml::parse("input.toml");
    +    return 0;
    +}
    +

    should_color() +#

    namespace toml {
    +namespace color {
    +bool should_color();
    +} // color
    +} // toml
    +

    色付けを行う設定になっている場合trueが、そうでない場合falseが返されます。

    例 +#

    #include <toml.hpp>
    +#include <iomanip>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::cout << "colorized? : " << std::boolalpha << toml::color::should_color() << std::endl;
    +    return 0;
    +}
    +

    マニピュレータ +#

    namespace toml {
    +namespace color {
    +std::ostream& reset  (std::ostream&);
    +std::ostream& bold   (std::ostream&);
    +std::ostream& grey   (std::ostream&);
    +std::ostream& gray   (std::ostream&);
    +std::ostream& red    (std::ostream&);
    +std::ostream& green  (std::ostream&);
    +std::ostream& yellow (std::ostream&);
    +std::ostream& blue   (std::ostream&);
    +std::ostream& magenta(std::ostream&);
    +std::ostream& cyan   (std::ostream&);
    +std::ostream& white  (std::ostream&);
    +} // color
    +} // toml
    +

    ANSIエスケープシーケンスによって、fgを色付けします。

    例 +#

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::cout << toml::color::red << "red!" << std::endl;
    +    return 0;
    +}
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/comments/index.html b/ja/docs/reference/comments/index.html new file mode 100644 index 00000000..454f33f2 --- /dev/null +++ b/ja/docs/reference/comments/index.html @@ -0,0 +1,308 @@ +comments.hpp | toml11 + +
    comments.hpp +

    comments.hpp +#

    color.hppでは、コメントを保持するクラスが提供されます。

    toml::preserve_comments +#

    preserve_commentsは、コメントを保持するコンテナです。

    std::vector<std::string>が持つメンバ関数を全て持っています。

    コメントはstd::stringとして保持されます。 +先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 +スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。

    namespace toml
    +{
    +class preserve_comments;
    +
    +bool operator==(const preserve_comments&, const preserve_comments&);
    +bool operator!=(const preserve_comments&, const preserve_comments&);
    +bool operator< (const preserve_comments&, const preserve_comments&);
    +bool operator<=(const preserve_comments&, const preserve_comments&);
    +bool operator> (const preserve_comments&, const preserve_comments&);
    +bool operator>=(const preserve_comments&, const preserve_comments&);
    +
    +void swap(preserve_comments&,        preserve_comments&);
    +void swap(preserve_comments&,        std::vector<std::string>&);
    +void swap(std::vector<std::string>&, preserve_comments&);
    +
    +std::ostream& operator<<(std::ostream&, const preserve_comments&);
    +} //toml
    +

    メンバ型 +#

    using container_type         = std::vector<std::string>;
    +using size_type              = container_type::size_type;
    +using difference_type        = container_type::difference_type;
    +using value_type             = container_type::value_type;
    +using reference              = container_type::reference;
    +using const_reference        = container_type::const_reference;
    +using pointer                = container_type::pointer;
    +using const_pointer          = container_type::const_pointer;
    +using iterator               = container_type::iterator;
    +using const_iterator         = container_type::const_iterator;
    +using reverse_iterator       = container_type::reverse_iterator;
    +using const_reverse_iterator = container_type::const_reverse_iterator;
    +

    メンバ関数 +#

    デフォルトコンストラクタ +#

    preserve_comments() = default;
    +

    空のpreserve_commentsを構築します。

    コピー・ムーブコンストラクタ +#

    preserve_comments(preserve_comments const&) = default;
    +preserve_comments(preserve_comments &&)     = default;
    +

    preserve_commentsをコピー・ムーブ構築します。

    コンストラクタ(std::vector<std::string>) +#

    explicit preserve_comments(const std::vector<std::string>& c);
    +explicit preserve_comments(std::vector<std::string>&& c);
    +

    std::vector<std::string>の内容を持つpreserve_commentsを構築します。

    コンストラクタ(discard_comments) +#

    explicit preserve_comments(const discard_comments&);
    +

    空のpreserve_commentsを構築します。

    コンストラクタ(Iterator) +#

    template<typename InputIterator>
    +preserve_comments(InputIterator first, InputIterator last);
    +

    std::stringを指すInputIteratorが表す範囲からpreserve_commentsを構築します。

    コンストラクタ(std::initializer_list) +#

    preserve_comments(std::initializer_list<std::string> x);
    +

    std::initializer_list<std::string>が表す範囲からpreserve_commentsを構築します。

    コンストラクタ(サイズ指定) +#

    explicit preserve_comments(size_type n);
    +preserve_comments(size_type n, const std::string& x);
    +

    n個のコメントを持つpreserve_commentsを構築します。

    std::stringを渡した場合、そのコメントをn個に複製します。

    デストラクタ +#

    ~preserve_comments() = default;
    +

    preserve_commentsを破棄します。

    operator=(preserve_comments) +#

    preserve_comments& operator=(preserve_comments const&) = default;
    +preserve_comments& operator=(preserve_comments &&)     = default;
    +

    preserve_commentsをコピー・ムーブ代入します。

    operator=(std::vector<std::string>) +#

    preserve_comments& operator=(const std::vector<std::string>& c);
    +preserve_comments& operator=(std::vector<std::string>&& c);
    +

    std::vector<std::string>をコピー・ムーブ代入します。

    assign +#

    template<typename InputIterator>
    +void assign(InputIterator first, InputIterator last);
    +void assign(std::initializer_list<std::string> ini);
    +void assign(size_type n, const std::string& val);
    +

    std::vector<std::string>::assignと同等の効果を持ちます。

    insert +#

    iterator insert(const_iterator p, const std::string& x);
    +iterator insert(const_iterator p, std::string&&      x);
    +iterator insert(const_iterator p, size_type n, const std::string& x);
    +template<typename InputIterator>
    +iterator insert(const_iterator p, InputIterator first, InputIterator last);
    +iterator insert(const_iterator p, std::initializer_list<std::string> ini);
    +

    std::vector<std::string>::insertと同等の効果を持ちます。

    emplace +#

    template<typename ... Ts>
    +iterator emplace(const_iterator p, Ts&& ... args);
    +

    std::vector<std::string>::insertと同等の効果を持ちます。

    erase +#

    iterator erase(const_iterator pos);
    +iterator erase(const_iterator first, const_iterator last);
    +

    std::vector<std::string>::insertと同等の効果を持ちます。

    swap +#

    void swap(preserve_comments& other);
    +

    他のpreserve_commentsと内容を交換します。

    push_back +#

    void push_back(const std::string& v);
    +void push_back(std::string&&      v);
    +

    std::vector<std::string>::push_backと同等の効果を持ちます。

    pop_back +#

    void pop_back();
    +

    std::vector<std::string>::pop_backと同等の効果を持ちます。

    emplace_back +#

    template<typename ... Ts>
    +void emplace_back(Ts&& ... args);
    +

    std::vector<std::string>::emplace_backと同等の効果を持ちます。

    clear +#

    void clear();
    +

    std::vector<std::string>::clearと同等の効果を持ちます。

    size +#

    size_type size() const noexcept;
    +

    std::vector<std::string>::sizeと同等の効果を持ちます。

    max_size +#

    size_type max_size() const noexcept;
    +

    std::vector<std::string>::max_sizeと同等の効果を持ちます。

    capacity +#

    size_type capacity() const noexcept;
    +

    std::vector<std::string>::capacityと同等の効果を持ちます。

    empty +#

    bool empty() const noexcept;
    +

    std::vector<std::string>::emptyと同等の効果を持ちます。

    reserve +#

    void reserve(size_type n);
    +

    std::vector<std::string>::reserveと同等の効果を持ちます。

    resize +#

    void resize(size_type n);
    +void resize(size_type n, const std::string& c);
    +

    std::vector<std::string>::resizeと同等の効果を持ちます。

    shrink_to_fit +#

    void shrink_to_fit();
    +

    std::vector<std::string>::shrink_to_fitと同等の効果を持ちます。

    operator[] +#

    reference       operator[](const size_type n)       noexcept;
    +const_reference operator[](const size_type n) const noexcept;
    +

    std::vector<std::string>::operator[]と同等の効果を持ちます。

    at +#

    reference       at(const size_type n)      ;
    +const_reference at(const size_type n) const;
    +

    std::vector<std::string>::atと同等の効果を持ちます。

    front +#

    reference       front()       noexcept;
    +const_reference front() const noexcept;
    +

    std::vector<std::string>::frontと同等の効果を持ちます。

    back +#

    reference       back()        noexcept;
    +const_reference back()  const noexcept;
    +

    std::vector<std::string>::backと同等の効果を持ちます。

    data +#

    pointer         data()        noexcept;
    +const_pointer   data()  const noexcept;
    +

    std::vector<std::string>::dataと同等の効果を持ちます。

    begin/end +#

    iterator       begin()        noexcept;
    +iterator       end()          noexcept;
    +const_iterator begin()  const noexcept;
    +const_iterator end()    const noexcept;
    +const_iterator cbegin() const noexcept;
    +const_iterator cend()   const noexcept;
    +

    std::vector<std::string>::begin/endと同等の効果を持ちます。

    rbegin/rend +#

    reverse_iterator       rbegin()        noexcept;
    +reverse_iterator       rend()          noexcept;
    +const_reverse_iterator rbegin()  const noexcept;
    +const_reverse_iterator rend()    const noexcept;
    +const_reverse_iterator crbegin() const noexcept;
    +const_reverse_iterator crend()   const noexcept;
    +

    std::vector<std::string>::rbegin/rendと同等の効果を持ちます。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const preserve_comments&, const preserve_comments&);
    +bool operator!=(const preserve_comments&, const preserve_comments&);
    +bool operator< (const preserve_comments&, const preserve_comments&);
    +bool operator<=(const preserve_comments&, const preserve_comments&);
    +bool operator> (const preserve_comments&, const preserve_comments&);
    +bool operator>=(const preserve_comments&, const preserve_comments&);
    +

    std::vector<std::string>と同様に比較を行います。

    swap +#

    void swap(preserve_comments&,        preserve_comments&);
    +void swap(preserve_comments&,        std::vector<std::string>&);
    +void swap(std::vector<std::string>&, preserve_comments&);
    +

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream&, const preserve_comments&);
    +

    コメントとして出力します。

    先頭が#でない場合、#が補われます。

    toml::discard_comments +#

    discard_commentsは、コメントを破棄するコンテナです。

    std::vector<std::string>が持つメンバ関数を全て持っていますが、内容を変更する関数を呼び出しても何も効果はなく、常に空になります。

    namespace toml
    +{
    +class discard_comments;
    +
    +bool operator==(const discard_comments&, const discard_comments&);
    +bool operator!=(const discard_comments&, const discard_comments&);
    +bool operator< (const discard_comments&, const discard_comments&);
    +bool operator<=(const discard_comments&, const discard_comments&);
    +bool operator> (const discard_comments&, const discard_comments&);
    +bool operator>=(const discard_comments&, const discard_comments&);
    +
    +void swap(discard_comments&, discard_comments&);
    +
    +std::ostream& operator<<(std::ostream&, const discard_comments&);
    +} //toml
    +

    メンバ型 +#

    // container_type is not defined
    +using size_type              = std::size_t;
    +using difference_type        = std::ptrdiff_t;
    +using value_type             = std::string;
    +using reference              = std::string&;
    +using const_reference        = std::string const&;
    +using pointer                = std::string*;
    +using const_pointer          = std::string const*;
    +using iterator               = /* internal type: empty-iterator */
    +using const_iterator         = /* internal type: empty-iterator */
    +using reverse_iterator       = /* internal type: empty-iterator */
    +using const_reverse_iterator = /* internal type: empty-iterator */
    +

    デフォルトコンストラクタ +#

    discard_comments() = default;
    +

    空のdiscard_commentsを構築します。

    コピー・ムーブコンストラクタ +#

    discard_comments(discard_comments const&) = default;
    +discard_comments(discard_comments &&)     = default;
    +

    discard_commentsをコピー・ムーブ構築します。

    コンストラクタ(std::vector<std::string>) +#

    explicit discard_comments(const std::vector<std::string>& c);
    +explicit discard_comments(std::vector<std::string>&& c);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(preserve_comments) +#

    explicit discard_comments(const preserve_comments&);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(Iterator) +#

    template<typename InputIterator>
    +discard_comments(InputIterator first, InputIterator last);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(std::initializer_list) +#

    discard_comments(std::initializer_list<std::string> x);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(サイズ指定) +#

    explicit discard_comments(size_type n);
    +discard_comments(size_type n, const std::string& x);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    デストラクタ +#

    ~discard_comments() = default;
    +

    discard_commentsを破棄します。

    operator=(discard_comments) +#

    discard_comments& operator=(discard_comments const&) = default;
    +discard_comments& operator=(discard_comments &&)     = default;
    +

    discard_commentsをコピー・ムーブ代入します。

    operator=(std::vector<std::string>) +#

    discard_comments& operator=(const std::vector<std::string>& c);
    +discard_comments& operator=(std::vector<std::string>&& c);
    +

    何もしません。引数の内容は無視されます。

    assign +#

    template<typename InputIterator>
    +void assign(InputIterator first, InputIterator last);
    +void assign(std::initializer_list<std::string> ini);
    +void assign(size_type n, const std::string& val);
    +

    何もしません。引数の内容は無視されます。

    insert +#

    iterator insert(const_iterator p, const std::string& x);
    +iterator insert(const_iterator p, std::string&&      x);
    +iterator insert(const_iterator p, size_type n, const std::string& x);
    +template<typename InputIterator>
    +iterator insert(const_iterator p, InputIterator first, InputIterator last);
    +iterator insert(const_iterator p, std::initializer_list<std::string> ini);
    +

    何もしません。引数の内容は無視されます。

    emplace +#

    template<typename ... Ts>
    +iterator emplace(const_iterator p, Ts&& ... args);
    +

    何もしません。引数の内容は無視されます。

    erase +#

    iterator erase(const_iterator pos);
    +iterator erase(const_iterator first, const_iterator last);
    +

    何もしません。引数の内容は無視されます。

    swap +#

    void swap(discard_comments& other);
    +

    他のdiscard_commentsと内容を交換します。

    push_back +#

    void push_back(const std::string& v);
    +void push_back(std::string&&      v);
    +

    何もしません。引数の内容は無視されます。

    pop_back +#

    void pop_back();
    +

    何もしません。引数の内容は無視されます。

    emplace_back +#

    template<typename ... Ts>
    +void emplace_back(Ts&& ... args);
    +

    何もしません。引数の内容は無視されます。

    clear +#

    void clear();
    +

    何もしません。引数の内容は無視されます。

    size +#

    size_type size() const noexcept;
    +

    常に0を返します。

    max_size +#

    size_type max_size() const noexcept;
    +

    常に0を返します。

    capacity +#

    size_type capacity() const noexcept;
    +

    常に0を返します。

    empty +#

    bool empty() const noexcept;
    +

    常にtrueを返します。

    reserve +#

    void reserve(size_type n);
    +

    何もしません。引数の内容は無視されます。

    resize +#

    void resize(size_type n);
    +void resize(size_type n, const std::string& c);
    +

    何もしません。引数の内容は無視されます。

    shrink_to_fit +#

    void shrink_to_fit();
    +

    何もしません。引数の内容は無視されます。

    operator[] +#

    reference       operator[](const size_type n)       noexcept;
    +const_reference operator[](const size_type n) const noexcept;
    +

    未定義動作です。

    at +#

    reference       at(const size_type n)      ;
    +const_reference at(const size_type n) const;
    +

    std::out_of_rangeを送出します。

    front +#

    reference       front()       noexcept;
    +const_reference front() const noexcept;
    +

    未定義動作です。

    back +#

    reference       back()        noexcept;
    +const_reference back()  const noexcept;
    +

    未定義動作です。

    data +#

    pointer         data()        noexcept;
    +const_pointer   data()  const noexcept;
    +

    常にnullptrを返します。

    begin/end +#

    iterator       begin()        noexcept;
    +iterator       end()          noexcept;
    +const_iterator begin()  const noexcept;
    +const_iterator end()    const noexcept;
    +const_iterator cbegin() const noexcept;
    +const_iterator cend()   const noexcept;
    +

    内部で定義されたempty-iteratorを返します。

    empty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。

    empty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。

    rbegin/rend +#

    reverse_iterator       rbegin()        noexcept;
    +reverse_iterator       rend()          noexcept;
    +const_reverse_iterator rbegin()  const noexcept;
    +const_reverse_iterator rend()    const noexcept;
    +const_reverse_iterator crbegin() const noexcept;
    +const_reverse_iterator crend()   const noexcept;
    +

    内部で定義されたempty-iteratorを返します。

    empty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。

    empty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const discard_comments&, const discard_comments&);
    +bool operator!=(const discard_comments&, const discard_comments&);
    +bool operator< (const discard_comments&, const discard_comments&);
    +bool operator<=(const discard_comments&, const discard_comments&);
    +bool operator> (const discard_comments&, const discard_comments&);
    +bool operator>=(const discard_comments&, const discard_comments&);
    +

    discard_commentsは全て同じ値です。==には常にtrueを、!=には常にfalseを返します。

    swap +#

    void swap(discard_comments&, discard_comments&);
    +

    二つのdiscard_commentsを交換します。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream&, const discard_comments&);
    +

    何も出力しません。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/conversion/index.html b/ja/docs/reference/conversion/index.html new file mode 100644 index 00000000..058c46b7 --- /dev/null +++ b/ja/docs/reference/conversion/index.html @@ -0,0 +1,26 @@ +conversion.hpp | toml11 + +
    conversion.hpp +

    conversion.hpp +#

    toml::gettoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。

    TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...)
    +

    例 +#

    namespace foo
    +{
    +struct Foo
    +{
    +    std::string s;
    +    double      d;
    +    int         i;
    +};
    +} // foo
    +
    +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i)
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/datetime/index.html b/ja/docs/reference/datetime/index.html new file mode 100644 index 00000000..8c0272fc --- /dev/null +++ b/ja/docs/reference/datetime/index.html @@ -0,0 +1,370 @@ +datetime.hpp | toml11 + +
    datetime.hpp +

    datetime.hpp +#

    TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。

    enum class month_t +#

    月を指定するenum classです。

    std::tmとの関係で、local_dateは1月を0としています。 +混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。

    namespace toml
    +{
    +enum class month_t : std::uint8_t
    +{
    +    Jan =  0,
    +    Feb =  1,
    +    Mar =  2,
    +    Apr =  3,
    +    May =  4,
    +    Jun =  5,
    +    Jul =  6,
    +    Aug =  7,
    +    Sep =  8,
    +    Oct =  9,
    +    Nov = 10,
    +    Dec = 11
    +};
    +}
    +

    local_date +#

    日付を保持する構造体です。

    yearは西暦を、monthstd::tmとの対応のため1月を0として、dayは日付を保持します。

    namespace toml
    +{
    +struct local_date
    +{
    +    std::int16_t year;
    +    std::uint8_t month;
    +    std::uint8_t day;
    +
    +    local_date() = default;
    +    ~local_date() = default;
    +    local_date(local_date const&) = default;
    +    local_date(local_date&&)      = default;
    +    local_date& operator=(local_date const&) = default;
    +    local_date& operator=(local_date&&)      = default;
    +
    +    local_date(int y, month_t m, int d);
    +    explicit local_date(const std::tm& t);
    +    explicit local_date(const std::chrono::system_clock::time_point& tp);
    +    explicit local_date(const std::time_t t);
    +
    +    operator std::chrono::system_clock::time_point() const;
    +    operator std::time_t() const;
    +};
    +
    +bool operator==(const local_date&, const local_date&);
    +bool operator!=(const local_date&, const local_date&);
    +bool operator< (const local_date&, const local_date&);
    +bool operator<=(const local_date&, const local_date&);
    +bool operator> (const local_date&, const local_date&);
    +bool operator>=(const local_date&, const local_date&);
    +
    +std::ostream& operator<<(std::ostream& os, const local_date& date);
    +std::string to_string(const local_date& date);
    +}
    +

    メンバ変数 +#

    year +#

    std::int16_t year;
    +

    西暦です。オフセットはありません。2024年は2024です。

    month +#

    std::uint8_t month;
    +

    月を表します。std::tmとの対応のため、1月は0, 2月は1と続きます。

    混乱を避けるため、構築の際はmonth_tを使用します。

    day +#

    std::uint8_t day;
    +

    日付を表します。1日は1です。

    メンバ関数 +#

    コンストラクタ +#

    local_date() = default;
    +

    デフォルト実装を使用します。

    デストラクタ +#

    ~local_date() = default;
    +

    デフォルト実装を使用します。

    コピー・ムーブコンストラクタ +#

    local_date(local_date const&) = default;
    +local_date(local_date&&)      = default;
    +

    デフォルト実装を使用します。

    コピー・ムーブ代入演算子 +#

    local_date& operator=(local_date const&) = default;
    +local_date& operator=(local_date&&)      = default;
    +

    デフォルト実装を使用します。

    コンストラクタ(int year, month_t month, int day) +#

    local_date(int y, month_t m, int d);
    +

    指定した値からlocal_dateを構築します。

    境界チェックなどは行いません。

    コンストラクタ(std::tm) +#

    local_date(const std::tm&);
    +

    指定した値からlocal_dateを構築します。

    コンストラクタ(std::chrono::system_clock::time_point) +#

    local_date(const std::chrono::system_clock::time_point&);
    +

    指定した値からlocal_dateを構築します。

    タイムゾーンは実行環境でのものが選択されます。

    コンストラクタ(std::time_t) +#

    local_date(const std::time_t);
    +

    指定した値からlocal_dateを構築します。

    タイムゾーンは実行環境でのものが選択されます。

    operator std::chrono::system_clock::time_point +#

    operator std::chrono::system_clock::time_point() const;
    +

    std::chrono::system_clock::time_pointに変換します。

    タイムゾーンは実行環境でのものが選択されます。

    時刻は0時00分とします。

    operator std::time_t +#

    operator std::time_t() const;
    +

    std::time_tに変換します。

    タイムゾーンは実行環境でのものが選択されます。

    時刻は0時00分とします。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const local_date&, const local_date&);
    +bool operator!=(const local_date&, const local_date&);
    +bool operator< (const local_date&, const local_date&);
    +bool operator<=(const local_date&, const local_date&);
    +bool operator> (const local_date&, const local_date&);
    +bool operator>=(const local_date&, const local_date&);
    +

    日付の順序によって比較します。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const local_date& date);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const local_date& date);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    local_time +#

    namespace toml
    +{
    +struct local_time
    +{
    +    std::uint8_t  hour;        // [0, 23]
    +    std::uint8_t  minute;      // [0, 59]
    +    std::uint8_t  second;      // [0, 60]
    +    std::uint16_t millisecond; // [0, 999]
    +    std::uint16_t microsecond; // [0, 999]
    +    std::uint16_t nanosecond;  // [0, 999]
    +
    +    local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
    +
    +    explicit local_time(const std::tm& t);
    +
    +    template<typename Rep, typename Period>
    +    explicit local_time(const std::chrono::duration<Rep, Period>& t);
    +
    +    operator std::chrono::nanoseconds() const;
    +
    +    local_time() = default;
    +    ~local_time() = default;
    +    local_time(local_time const&) = default;
    +    local_time(local_time&&)      = default;
    +    local_time& operator=(local_time const&) = default;
    +    local_time& operator=(local_time&&)      = default;
    +};
    +
    +bool operator==(const local_time& lhs, const local_time& rhs);
    +bool operator!=(const local_time& lhs, const local_time& rhs);
    +bool operator< (const local_time& lhs, const local_time& rhs);
    +bool operator<=(const local_time& lhs, const local_time& rhs);
    +bool operator> (const local_time& lhs, const local_time& rhs);
    +bool operator>=(const local_time& lhs, const local_time& rhs);
    +
    +std::ostream& operator<<(std::ostream& os, const local_time& time);
    +std::string to_string(const local_time& time);
    +}
    +

    メンバ変数 +#

    hour +#

    std::uint8_t  hour;
    +

    時間を表します。0から23の値を取ります。

    minute +#

    std::uint8_t  minute;      // [0, 59]
    +

    分を表します。0から59の値を取ります。

    second +#

    std::uint8_t  second;      // [0, 60]
    +

    秒を表します。0から60の値を取ります。

    millisecond +#

    std::uint16_t millisecond; // [0, 999]
    +

    ミリ秒を表します。0から999の値を取ります。

    microsecond +#

    std::uint16_t microsecond; // [0, 999]
    +

    マイクロ秒を表します。0から999の値を取ります。

    nanosecond +#

    std::uint16_t nanosecond;  // [0, 999]
    +

    ナノ秒を表します。0から999の値を取ります。

    メンバ関数 +#

    デフォルトコンストラクタ +#

    local_time() = default;
    +

    全ての値を0で初期化します。

    コンストラクタ(h, m, s, ms = 0, us = 0, ns = 0) +#

    local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
    +

    指定された時刻を使って構築します。

    境界チェックは行われません。

    コンストラクタ(std::tm) +#

    explicit local_time(const std::tm& t);
    +

    std::tmtm_hour, tm_min, tm_secを使って構築します。

    サブセコンドは全て0で初期化されます。

    コンストラクタ(std::chrono::duration) +#

    template<typename Rep, typename Period>
    +explicit local_time(const std::chrono::duration<Rep, Period>& t);
    +

    durationをその日の0時からの時間として構築します。

    operator std::chrono::nanoseconds +#

    operator std::chrono::nanoseconds() const;
    +

    std::chrono::nanosecondsへ変換します。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const local_time& lhs, const local_time& rhs);
    +bool operator!=(const local_time& lhs, const local_time& rhs);
    +bool operator< (const local_time& lhs, const local_time& rhs);
    +bool operator<=(const local_time& lhs, const local_time& rhs);
    +bool operator> (const local_time& lhs, const local_time& rhs);
    +bool operator>=(const local_time& lhs, const local_time& rhs);
    +

    時刻の値によって比較を行います。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, const local_time& time);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const local_time& time);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    time_offset +#

    namespace toml
    +{
    +struct time_offset
    +{
    +    std::int8_t hour{0};   // [-12, 12]
    +    std::int8_t minute{0}; // [-59, 59]
    +
    +    time_offset(int h, int m);
    +
    +    operator std::chrono::minutes() const;
    +
    +    time_offset() = default;
    +    ~time_offset() = default;
    +    time_offset(time_offset const&) = default;
    +    time_offset(time_offset&&)      = default;
    +    time_offset& operator=(time_offset const&) = default;
    +    time_offset& operator=(time_offset&&)      = default;
    +};
    +
    +bool operator==(const time_offset&, const time_offset&);
    +bool operator!=(const time_offset&, const time_offset&);
    +bool operator< (const time_offset&, const time_offset&);
    +bool operator<=(const time_offset&, const time_offset&);
    +bool operator> (const time_offset&, const time_offset&);
    +bool operator>=(const time_offset&, const time_offset&);
    +
    +std::ostream& operator<<(std::ostream& os, const time_offset& offset);
    +std::string to_string(const time_offset& offset);
    +}
    +

    メンバ変数 +#

    hour +#

    std::int8_t hour{0};   // [-12, 12]
    +

    時間のオフセットです。-12から+12の範囲の値を取ります。

    minute +#

    std::int8_t minute{0}; // [-59, 59]
    +

    分のオフセットです。-59から+59の範囲の値を取ります。

    メンバ関数 +#

    コンストラクタ +#

    time_offset(int h, int m);
    +

    時間と分を取って構築します。

    境界チェックは行いません。

    operator std::chrono::minutes +#

    operator std::chrono::minutes() const;
    +

    std::chrono::minutesへの変換を行います。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const time_offset&, const time_offset&);
    +bool operator!=(const time_offset&, const time_offset&);
    +bool operator< (const time_offset&, const time_offset&);
    +bool operator<=(const time_offset&, const time_offset&);
    +bool operator> (const time_offset&, const time_offset&);
    +bool operator>=(const time_offset&, const time_offset&);
    +

    時刻の長さで比較します。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const time_offset&);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const time_offset&);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    local_datetime +#

    namespace toml
    +{
    +struct local_datetime
    +{
    +    local_date date;
    +    local_time time;
    +
    +    local_datetime(local_date d, local_time t);
    +
    +    explicit local_datetime(const std::tm& t);
    +    explicit local_datetime(const std::chrono::system_clock::time_point& tp);
    +    explicit local_datetime(const std::time_t t);
    +
    +    operator std::chrono::system_clock::time_point() const;
    +    operator std::time_t() const;
    +
    +    local_datetime() = default;
    +    ~local_datetime() = default;
    +    local_datetime(local_datetime const&) = default;
    +    local_datetime(local_datetime&&)      = default;
    +    local_datetime& operator=(local_datetime const&) = default;
    +    local_datetime& operator=(local_datetime&&)      = default;
    +};
    +
    +bool operator==(const local_datetime&, const local_datetime&);
    +bool operator!=(const local_datetime&, const local_datetime&);
    +bool operator< (const local_datetime&, const local_datetime&);
    +bool operator<=(const local_datetime&, const local_datetime&);
    +bool operator> (const local_datetime&, const local_datetime&);
    +bool operator>=(const local_datetime&, const local_datetime&);
    +
    +std::ostream& operator<<(std::ostream& os, const local_datetime& dt);
    +std::string to_string(const local_datetime& dt);
    +}
    +

    メンバ変数 +#

    local_date date +#

    local_date date;
    +

    日付部分のデータを保持します。

    local_time time +#

    local_time time;
    +

    時刻部分のデータを保持します。

    メンバ関数 +#

    デフォルトコンストラクタ +#

    date, timeの双方をデフォルト構築します。

    コンストラクタ(local_date, local_time) +#

    指定されたdatetimeで構築します。

    コンストラクタ(std::tm) +#

    std::tmから構築します。

    タイムゾーンは実行環境でのものが選択されます。

    コンストラクタ(std::chrono::system_clock::time_point) +#

    std::chrono::system_clock::time_pointから構築します。

    タイムゾーンは実行環境でのものが選択されます。

    コンストラクタ(std::time_t) +#

    std::time_tから構築します。

    タイムゾーンは実行環境でのものが選択されます。

    operator std::chrono::system_clock::time_point +#

    std::chrono::system_clock::time_pointへ変換します。

    operator std::time_t +#

    std::time_tへ変換します。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const local_datetime&, const local_datetime&);
    +bool operator!=(const local_datetime&, const local_datetime&);
    +bool operator< (const local_datetime&, const local_datetime&);
    +bool operator<=(const local_datetime&, const local_datetime&);
    +bool operator> (const local_datetime&, const local_datetime&);
    +bool operator>=(const local_datetime&, const local_datetime&);
    +

    日付順で比較します。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const local_datetime&);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const local_datetime&);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    offset_datetime +#

    namespace toml
    +{
    +struct offset_datetime
    +{
    +    local_date  date;
    +    local_time  time;
    +    time_offset offset;
    +
    +    offset_datetime(local_date d, local_time t, time_offset o);
    +    offset_datetime(const local_datetime& dt, time_offset o);
    +    explicit offset_datetime(const local_datetime& ld);
    +    explicit offset_datetime(const std::chrono::system_clock::time_point& tp);
    +    explicit offset_datetime(const std::time_t& t);
    +    explicit offset_datetime(const std::tm& t);
    +
    +    operator std::chrono::system_clock::time_point() const;
    +    operator std::time_t() const;
    +
    +    offset_datetime() = default;
    +    ~offset_datetime() = default;
    +    offset_datetime(offset_datetime const&) = default;
    +    offset_datetime(offset_datetime&&)      = default;
    +    offset_datetime& operator=(offset_datetime const&) = default;
    +    offset_datetime& operator=(offset_datetime&&)      = default;
    +};
    +
    +bool operator==(const offset_datetime&, const offset_datetime&);
    +bool operator!=(const offset_datetime&, const offset_datetime&);
    +bool operator< (const offset_datetime&, const offset_datetime&);
    +bool operator<=(const offset_datetime&, const offset_datetime&);
    +bool operator> (const offset_datetime&, const offset_datetime&);
    +bool operator>=(const offset_datetime&, const offset_datetime&);
    +
    +std::ostream& operator<<(std::ostream& os, const offset_datetime& dt);
    +std::string to_string(const offset_datetime& dt);
    +}
    +

    メンバ変数 +#

    date +#

    local_date date;
    +

    日付部分のデータを保持します。

    time +#

    local_time time;
    +

    時刻部分のデータを保持します。

    offset +#

    time_offset offset;
    +

    オフセット部分のデータを保持します。

    メンバ関数 +#

    デフォルトコンストラクタ +#

    date, time, offsetを全てデフォルト構築します。

    コンストラクタ(local_date, local_time, time_offset) +#

    指定されたdate, time, offsetで構築します。

    コンストラクタ(local_datetime, time_offset) +#

    local_datetimeoffsetから構築します。

    コンストラクタ(std::tm) +#

    std::tmから構築します。

    タイムゾーンはUTC(00:00)になります。

    コンストラクタ(std::chrono::system_clock::time_point) +#

    std::chrono::system_clock::time_pointから構築します。

    タイムゾーンはUTC(00:00)になります。

    コンストラクタ(std::time_t) +#

    std::time_tから構築します。

    タイムゾーンはUTC(00:00)になります。

    operator std::chrono::system_clock::time_point +#

    std::chrono::system_clock::time_pointへ変換します。

    タイムゾーンはUTC(00:00)になります。

    operator std::time_t +#

    std::time_tへ変換します。

    タイムゾーンはUTC(00:00)になります。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const offset_datetime&, const offset_datetime&);
    +bool operator!=(const offset_datetime&, const offset_datetime&);
    +bool operator< (const offset_datetime&, const offset_datetime&);
    +bool operator<=(const offset_datetime&, const offset_datetime&);
    +bool operator> (const offset_datetime&, const offset_datetime&);
    +bool operator>=(const offset_datetime&, const offset_datetime&);
    +

    日付順で比較します。

    同じ日付の場合、タイムゾーン順で比較されます。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const offset_datetime&);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const offset_datetime&);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    \ No newline at end of file diff --git a/ja/docs/reference/error_info/index.html b/ja/docs/reference/error_info/index.html new file mode 100644 index 00000000..da29fb39 --- /dev/null +++ b/ja/docs/reference/error_info/index.html @@ -0,0 +1,78 @@ +error_info.hpp | toml11 + +
    error_info.hpp +

    error_info.hpp +#

    error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。

    toml::error_info +#

    namespace toml
    +{
    +struct error_info
    +{
    +    error_info(std::string t, source_location l, std::string m, std::string s = "");
    +    error_info(std::string t, std::vector<std::pair<source_location, std::string>> l, std::string s = "");
    +
    +    std::string const& title() const noexcept;
    +    std::string &      title()       noexcept;
    +
    +    std::vector<std::pair<source_location, std::string>> const& locations() const noexcept;
    +    void add_locations(source_location loc, std::string msg) noexcept;
    +
    +    std::string const& suffix() const noexcept;
    +    std::string &      suffix()       noexcept;
    +};
    +
    +template<typename ... Ts>
    +error_info make_error_info(
    +    std::string title, source_location loc, std::string msg, Ts&& ... tail);
    +
    +std::string format_error(const std::string& errkind, const error_info& err);
    +std::string format_error(const error_info& err);
    +
    +template<typename ... Ts>
    +std::string format_error(std::string title,
    +                         source_location loc, std::string msg, Ts&& ... tail);
    +
    +std::ostream& operator<<(std::ostream& os, const error_info& e);
    +}
    +

    メンバ関数 +#

    コンストラクタ(title, loc, msg, suffix) +#

    指定されたタイトル、位置情報、メッセージ、suffixからerror_infoを構築します。

    suffixはデフォルトで空です。

    コンストラクタ(title, [{loc, msg}, ...], suffix) +#

    指定されたタイトル、位置情報とメッセージの配列、そしてsuffixからerror_infoを構築します。

    suffixはデフォルトで空です。

    メンバ関数 +#

    std::string title() +#

    エラーメッセージのタイトルです。

    std::vector<std::pair<source_location, std::string>> locations() +#

    エラーの発生した位置とそれに関するメッセージです。

    複数指定可能です。

    std::string suffix() +#

    最後に表示するメッセージです。ヒントや補足を表示します。

    非メンバ関数 +#

    make_error_info +#

    template<typename ... Ts>
    +error_info make_error_info(
    +    std::string title, source_location loc, std::string msg, Ts&& ... tail);
    +

    新しくerror_infoを構築します。

    source_locationまたはbasic_valueの後には、それに関するmsgが続かなければなりません。

    value.hpp +では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。

    末尾にはsuffixを渡すことが可能です。

    format_error +#

    error_info を以下のようにフォーマットします。

    {title}
    + --> {locations().at(0).first.file_name()}
    +   |
    + 1 | {locations().at(0).first.line()}
    +   |         ^-- {locations().at(0).second}
    +   |
    + 2 | {locations().at(1).first.line()}
    +   |         ^-- {locations().at(1).second}
    +{suffix}
    +

    二つの source_location のファイル名が異なる場合は、ファイル名が再度表示されます。

    std::string format_error(const std::string& errkind, const error_info& err);
    +std::string format_error(const error_info& err);
    +

    error_infoをフォーマットします。

    errkindが与えられなかった場合、赤色太字の[error]titleの前につけ足されます。

    errkindが与えられた場合(空文字列の場合も含みます)、それが[error]の代わりに表示されます。

    namespace toml
    +{
    +template<typename ... Ts>
    +std::string format_error(std::string title,
    +                         source_location loc, std::string msg, Ts&& ... tail);
    +} // toml
    +

    make_error_info を使って作成した error_infoformat_error でフォーマットした文字列を返します。

    value.hpp +では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, const error_info& e);
    +

    format_error(e)を呼び出し、それを出力します。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/exception/index.html b/ja/docs/reference/exception/index.html new file mode 100644 index 00000000..4c740c09 --- /dev/null +++ b/ja/docs/reference/exception/index.html @@ -0,0 +1,29 @@ +exception.hpp | toml11 + +
    exception.hpp +

    exception.hpp +#

    toml::exception +#

    toml11で定義される例外型の基底クラスです。

    namespace toml
    +{
    +struct exception : public std::exception
    +{
    +  public:
    +    virtual ~exception() noexcept override = default;
    +    virtual const char* what() const noexcept override {return "";}
    +};
    +} // toml
    +

    メンバ関数 +#

    デストラクタ +#

    virtual ~exception() noexcept override = default;
    +

    派生する際に上書きします。

    what +#

    virtual const char* what() const noexcept override {return "";}
    +

    エラーメッセージを返します。派生する際に上書きします。

    \ No newline at end of file diff --git a/ja/docs/reference/find/index.html b/ja/docs/reference/find/index.html new file mode 100644 index 00000000..1d98b785 --- /dev/null +++ b/ja/docs/reference/find/index.html @@ -0,0 +1,129 @@ +find.hpp | toml11 + +
    find.hpp +

    find.hpp +#

    toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。

    toml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 +厳密には全て toml::basic_value<TC> が使われています。ただしこれでは冗長なので、 +関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 +説明文では、テンプレートパラメータTCを変更して型が変更されていれば +toml::value::integer_type などの型は追従して変更されると解釈してください。

    toml::find +#

    概要 +#

    toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。

    template<typename T, typename TC, typename ... Keys>
    +T find(const basic_value<TC>& v, Keys ... keys);
    +

    サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。

    T が指定されなかった場合、 toml::value が返されます。

    キーは、 toml::value::key_type または std::size_t です。 +複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 +toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。

    再帰的な検索に関しての注意 +#

    TOMLには通常の bare key の他に、 "' で囲まれた quoted key というものがあります。 +quoted key を使うと、 "foo.bar" = "baz" というようなキーを書くことができ、この場合はサブテーブルは構築されず、キーは foo.barとなります。 +このようなパターンに対応するため、toml11ではキーの中に.が含まれていても分割は行わず、そのままの文字列で検索を行います。

    以下のTOMLファイルを考えます。

    [foo]
    +[foo.bar]
    +baz = "hoge"
    +
    +["foo.bar"]
    +baz = "fuga"
    +

    これに対応するtoml::findの書き方は以下の通りです。

    const auto input = toml::parse("input.toml");
    +const auto baz1 = toml::find<std::string>(input, "foo", "bar", "baz"); // hoge
    +const auto baz2 = toml::find<std::string>(input, "foo.bar",    "baz"); // fuga
    +

    参考:toml.io/ja/v1.0.0#キー

    toml::find(value, key) +#

    valuetoml::table として key を検索したあと、 toml::get で変換を行います。

    template<typename T, typename TC>
    +/* toml::get<T>(const value&) と同等 */ find(
    +    const basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&) と同等 */ find(
    +    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&&) と同等 */ find(
    +    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
    +

    Tが指定されない場合は、変換を行わずtoml::valueを返します。

    template<typename TC>
    +basic_value<TC> const& find(
    +    basic_value<TC> const& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename TC>
    +basic_value<TC>& find(
    +    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename TC>
    +basic_value<TC> find(
    +    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
    +

    例外 +#

    toml::valuetable を保持していなかった場合、 toml::type_error が送出されます。

    格納している table が指定された要素を持っていなかった場合、 std::out_of_range が送出されます。

    指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 +toml::type_error が送出されます。

    toml::find(value, index) +#

    valuetoml::array として index 番目にアクセスし、 toml::get で変換を行います。

    template<typename T, typename TC>
    +/* toml::get<T>(const value&) と同等 */ find(
    +    const basic_value<TC>& v, const std::size_t index);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&) と同等 */ find(
    +    basic_value<TC>& v, const std::size_t index);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&&) と同等 */ find(
    +    basic_value<TC>&& v, const std::size_t index);
    +

    Tが指定されない場合は、変換を行わずtoml::valueを返します。

    template<typename TC>
    +basic_value<TC> const& find(basic_value<TC> const& v, const std::size_t ky);
    +
    +template<typename TC>
    +basic_value<TC>& find(basic_value<TC>& v, const std::size_t ky);
    +
    +template<typename TC>
    +basic_value<TC> find(basic_value<TC>&& v, const std::size_t ky);
    +

    例外 +#

    toml::valuearray を保持していなかった場合、 toml::type_error が送出されます。

    格納している array が指定された数の要素を持っていなかった場合、std::out_of_rangeが送出されます。

    指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 +toml::type_error が送出されます。

    toml::find(value, keys...) +#

    template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
    +/* toml::get<T>(const value&) と同等 */ find(
    +    const basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
    +
    +template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
    +/* toml::get<T>(value&) と同等 */ find(
    +    basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
    +
    +template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
    +/* toml::get<T>(value&&) と同等 */ find(
    +    basic_value<TC>&& v, const K1& k1, const K2& k2, const Ks& ... ks);
    +

    再帰的にtoml::findが呼び出されます。

    失敗する条件とその際に送出される例外は toml::find と同じです。

    toml::find_or(value, key, fallback) +#

    template<typename T, typename TC, typename Key>
    +T find_or(const basic_value<TC>& v, const Key& key, T&& opt);
    +

    find_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。

    このデフォルト値は受け取る型Tと同じ型でなければなりません。 +よって、 toml::find<T> とは違って、 find_or では T を指定せずとも推論されます。

    find_or<T>のように T を指定することもできますが、その場合は常に新規な値が返されます。 +参照を取得したい場合は、 T を指定しないでください。

    Tbasic_valueである場合 +#

    template<typename TC, typename K>
    +basic_value<TC>& find_or(basic_value<TC>& v, const K& key, basic_value<TC>& opt) noexcept
    +
    +template<typename TC, typename K>
    +basic_value<TC> const& find_or(const basic_value<TC>& v, const K& key, const basic_value<TC>& opt) noexcept
    +

    対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。

    値が見つからなかった場合、デフォルト値を返します。

    Ttoml::value::{some_type}である場合 +#

    template<typename T, typename TC, typename K>
    +T& find_or(basic_value<TC>& v, const K& key, T& opt) noexcept
    +
    +template<typename T, typename TC, typename K>
    +T const& find_or(const basic_value<TC>& v, const K& key, const T& opt) noexcept
    +

    対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。

    値が見つからなかった場合、あるいは異なる型が格納されていた場合、デフォルト値を返します。

    Tconst char*である場合 +#

    template<typename TC, typename K>
    +std::string find_or(const basic_value<TC>& v, const K& k, const char* opt)
    +

    対応する値を検索し、 std::string として返します。

    失敗時に const char* から std::string を構築するため、参照を返すことはできません。

    Tがその他の型である場合 +#

    template<typename T, typename TC, typename K>
    +T find_or(const basic_value<TC>& v, const K& key, T opt)
    +

    対応する値を検索し、 T に変換して返します。

    変換を行うため、参照を返すことはできません。

    複数のキーが与えられた場合 +#

    template<typename Value, typename K1, typename K2, typename K3, typename ... Ks>
    +auto find_or(Value&& v, const K1& k1, const K2& k2, K3&& k3, Ks&& ... keys) noexcept
    + -> decltype(find_or(v, k2, std::forward<K3>(k3), std::forward<Ks>(keys)...))
    +

    キーの列の最後の要素がデフォルト値であると解釈して、再帰的にfind_orを適用します。

    T の推論結果が toml::value または toml::value::some_type になる場合、参照を返すことができます。

    T を明示的に指定した場合、常に変換を行います。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/format/index.html b/ja/docs/reference/format/index.html new file mode 100644 index 00000000..2c86d3b6 --- /dev/null +++ b/ja/docs/reference/format/index.html @@ -0,0 +1,234 @@ +format.hpp | toml11 + +
    format.hpp +

    format.hpp +#

    toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。

    indent_char +#

    インデント情報を表す列挙体です。

    enum class indent_char : std::uint8_t
    +{
    +    space, // use space
    +    tab,   // use tab
    +    none   // no indent
    +};
    +std::ostream& operator<<(std::ostream& os, const indent_char& c);
    +std::string to_string(const indent_char);
    +

    noneを選んだ場合、super tableでの値によらず、インデントは使用されません。

    シリアライズ対象の値のなかにspacetabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。

    boolean_format_info +#

    booleanのフォーマット情報です。

    struct boolean_format_info {};
    +
    +bool operator==(const boolean_format_info&, const boolean_format_info&) noexcept;
    +bool operator!=(const boolean_format_info&, const boolean_format_info&) noexcept;
    +

    booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。

    integer_format +#

    enum class integer_format : std::uint8_t
    +{
    +    dec = 0,
    +    bin = 1,
    +    oct = 2,
    +    hex = 3,
    +};
    +std::ostream& operator<<(std::ostream& os, const integer_format f);
    +std::string to_string(const integer_format);
    +

    integerの基数を指定します。

    integer_format_info +#

    struct integer_format_info
    +{
    +    integer_format fmt    = integer_format::dec;
    +    bool        uppercase = true; // use uppercase letters
    +    std::size_t width     = 0;       // minimal width (may exceed)
    +    std::size_t spacer    = 0;       // position of `_` (if 0, no spacer)
    +    std::string suffix    = "";      // _suffix (library extension)
    +};
    +
    +bool operator==(const integer_format_info&, const integer_format_info&) noexcept;
    +bool operator!=(const integer_format_info&, const integer_format_info&) noexcept;
    +

    メンバ変数 +#

    integer_format fmt +#

    基数を指定します。

    bool uppercase +#

    16進数表記で大文字を使用します。

    std::size_t width +#

    最小の幅を指定します。値によってはこの幅を超えることがあります。

    フォーマットした値がこの幅よりも小さい場合、integer_format::decの場合は効果はありませんが、それ以外の場合は先頭にリーディング0が追加されます。

    std::size_t spacer +#

    アンダースコア_を追加する幅を指定します。

    3の場合1_234_567のように、4の場合0xdead_beefのようにフォーマットされます。

    0の場合、アンダースコアは挿入されません。

    不規則な幅を指定することはできません。

    std::string suffix +#

    toml11拡張のspec::ext_num_suffixtrueにしている場合、そのsuffixがここに保存されます。

    参考:spec.hpp

    floating_format +#

    enum class floating_format : std::uint8_t
    +{
    +    defaultfloat = 0,
    +    fixed        = 1, // does not include exponential part
    +    scientific   = 2, // always include exponential part
    +    hex          = 3  // hexfloat extension
    +};
    +std::ostream& operator<<(std::ostream& os, const floating_format f);
    +std::string to_string(const floating_format);
    +

    floatingのフォーマット形式を指定します。 +それぞれ、std::defaultfloat, std::fixed, std::scientific, std::hexfloatに対応します。

    hexfloatは、toml::spec::ext_hex_floattrueの場合のみ使用可能です。

    参考:spec.hpp

    floating_format_info +#

    struct floating_format_info
    +{
    +    floating_format fmt = floating_format::defaultfloat;
    +    std::size_t prec  = 0;        // precision (if 0, use the default)
    +    std::string suffix = "";      // 1.0e+2_suffix (library extension)
    +};
    +
    +bool operator==(const floating_format_info&, const floating_format_info&) noexcept;
    +bool operator!=(const floating_format_info&, const floating_format_info&) noexcept;
    +

    メンバ変数 +#

    floating_format fmt +#

    フォーマット形式を指定します。

    std::size_t prec +#

    小数点以下の精度を指定します。

    std::string suffix +#

    toml11拡張のspec::ext_num_suffixtrueにしている場合、そのsuffixがここに保存されます。

    参考:spec.hpp

    string_format +#

    enum class string_format : std::uint8_t
    +{
    +    basic             = 0,
    +    literal           = 1,
    +    multiline_basic   = 2,
    +    multiline_literal = 3
    +};
    +std::ostream& operator<<(std::ostream& os, const string_format f);
    +std::string to_string(const string_format);
    +

    文字列のフォーマット形式を指定します。

    string_format_info +#

    struct string_format_info
    +{
    +    string_format fmt = string_format::basic;
    +    bool start_with_newline    = false;
    +};
    +
    +bool operator==(const string_format_info&, const string_format_info&) noexcept;
    +bool operator!=(const string_format_info&, const string_format_info&) noexcept;
    +

    メンバ変数 +#

    string_format fmt +#

    文字列のフォーマット情報を指定します。

    bool start_with_newline +#

    multiline_basicまたはmultiline_literalの場合、最初の"""'''の後に改行を入れるかどうかを指定します。

    datetime_delimiter_kind +#

    enum class datetime_delimiter_kind : std::uint8_t
    +{
    +    upper_T = 0,
    +    lower_t = 1,
    +    space   = 2,
    +};
    +std::ostream& operator<<(std::ostream& os, const datetime_delimiter_kind d);
    +std::string to_string(const datetime_delimiter_kind);
    +

    datetimeで日付と時刻の間のデリミタにどの文字を使うかを指定します。

    T, t, が使用可能です。

    offset_datetime_format_info +#

    struct offset_datetime_format_info
    +{
    +    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
    +    bool has_seconds = true;
    +    std::size_t subsecond_precision = 6; // [us]
    +};
    +
    +bool operator==(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
    +bool operator!=(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
    +

    メンバ変数 +#

    datetime_delimiter_kind delimiter +#

    使用するデリミタを指定します。

    bool has_seconds +#

    秒数を省略するかどうかを指定します。

    std::size_t subsecond_precision +#

    秒以下の精度を何桁出力するかを指定します。

    local_datetime_format_info +#

    struct local_datetime_format_info
    +{
    +    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
    +    bool has_seconds = true;
    +    std::size_t subsecond_precision = 6; // [us]
    +};
    +
    +bool operator==(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
    +bool operator!=(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
    +

    メンバ変数 +#

    datetime_delimiter_kind delimiter +#

    使用するデリミタを指定します。

    bool has_seconds +#

    秒数を省略するかどうかを指定します。

    std::size_t subsecond_precision +#

    秒以下の精度を何桁出力するかを指定します。

    local_date_format_info +#

    struct local_date_format_info
    +{
    +    // nothing, for now
    +};
    +
    +bool operator==(const local_date_format_info&, const local_date_format_info&) noexcept;
    +bool operator!=(const local_date_format_info&, const local_date_format_info&) noexcept;
    +

    local_datetimeにはフォーマット指定するパラメータはありません。

    local_time_format_info +#

    struct local_time_format_info
    +{
    +    bool has_seconds = true;
    +    std::size_t subsecond_precision = 6; // [us]
    +};
    +
    +bool operator==(const local_time_format_info&, const local_time_format_info&) noexcept;
    +bool operator!=(const local_time_format_info&, const local_time_format_info&) noexcept;
    +

    メンバ変数 +#

    bool has_seconds +#

    秒数を省略するかどうかを指定します。

    std::size_t subsecond_precision +#

    秒以下の精度を何桁出力するかを指定します。

    array_format +#

    enum class array_format : std::uint8_t
    +{
    +    default_format  = 0,
    +    oneline         = 1,
    +    multiline       = 2,
    +    array_of_tables = 3 // [[format.in.this.way]]
    +};
    +
    +std::ostream& operator<<(std::ostream& os, const array_format f);
    +std::string to_string(const array_format);
    +
    • default_format
      • 適したフォーマットを自動的に選択します。ある程度長い配列は複数行になります。
    • oneline
      • 全ての要素を一行でフォーマットします。
    • multiline
      • 一行ごとに一つの要素を出力します。
    • array_of_tables
      • [[array.of.tables]]の形式でフォーマットします。table以外の要素を含むことはできません。

    array_format_info +#

    struct array_format_info
    +{
    +    array_format fmt            = array_format::default_format;
    +    indent_char  indent_type    = indent_char::space;
    +    std::int32_t body_indent    = 4; // indent in case of multiline
    +    std::int32_t closing_indent = 0; // indent of `]`
    +};
    +
    +bool operator==(const array_format_info&, const array_format_info&) noexcept;
    +bool operator!=(const array_format_info&, const array_format_info&) noexcept;
    +

    メンバ変数 +#

    array_format fmt +#

    フォーマット形式を指定します。

    indent_char indent_type +#

    インデントに使用する文字の種類を選択します。

    std::int32_t body_indent +#

    array_format::multilineの場合、要素の前に出力するインデントの文字数を指定します。

    std::int32_t closing_indent +#

    array_format::multilineの場合、閉じ括弧]の前に出力するインデントの文字数を指定します。

    table_format +#

    enum class table_format : std::uint8_t
    +{
    +    multiline         = 0, // [foo] \n bar = "baz"
    +    oneline           = 1, // foo = {bar = "baz"}
    +    dotted            = 2, // foo.bar = "baz"
    +    multiline_oneline = 3, // foo = { \n bar = "baz" \n }
    +    implicit          = 4  // [x] defined by [x.y.z]. skip in serializer.
    +};
    +
    +std::ostream& operator<<(std::ostream& os, const table_format f);
    +std::string to_string(const table_format);
    +
    • multiline
      • 複数行の通常のテーブルとしてフォーマットします。
    • oneline
      • インラインテーブルとしてフォーマットします。
    • dotted
      • a.b.c = "d"の形式でフォーマットします。
    • multiline_oneline
      • 改行を含むインラインテーブルとしてフォーマットします。TOML v1.1.0以降で使用可能です。
      • 参考:spec.hpp
    • implicit
      • [x.y.z.w]だけが定義されている際の[x], [x.y], [x.y.z]のように、暗黙定義としてスキップします。

    TOMLの文法上、dottedはサブテーブルを持つことができます。

    [fruit]
    +apple.color = "red"
    +apple.taste.sweet = true
    +
    +# [fruit.apple]        # INVALID
    +# [fruit.apple.taste]  # INVALID
    +[fruit.apple.texture]  # you can add sub-tables
    +smooth = true
    +

    toml11は現時点ではこのフォーマットに対応していません。 +dottedテーブルの下にあるテーブルは全てdottedになり、テーブルは強制的にインラインテーブルになります。

    table_format_info +#

    struct table_format_info
    +{
    +    table_format fmt = table_format::multiline;
    +    indent_char  indent_type    = indent_char::space;
    +    std::int32_t body_indent    = 0; // indent of values
    +    std::int32_t name_indent    = 0; // indent of [table]
    +    std::int32_t closing_indent = 0; // in case of {inline-table}
    +};
    +
    +bool operator==(const table_format_info&, const table_format_info&) noexcept;
    +bool operator!=(const table_format_info&, const table_format_info&) noexcept;
    +

    メンバ変数 +#

    table_format fmt +#

    フォーマット方法を指定します。

    indent_char indent_type +#

    インデントに使用する文字を指定します。

    std::int32_t body_indent +#

    キーの前に出力するインデントの幅を指定します。

    スーパーテーブルのインデント幅は加算されません。

    std::int32_t name_indent +#

    [table]形式のキーのインデントを指定します。

    スーパーテーブルのインデント幅は加算されません。

    std::int32_t closing_indent +#

    multiline_onelineの場合に、閉じ括弧}の前のインデント幅を指定します。

    \ No newline at end of file diff --git a/ja/docs/reference/from/index.html b/ja/docs/reference/from/index.html new file mode 100644 index 00000000..a7684fb1 --- /dev/null +++ b/ja/docs/reference/from/index.html @@ -0,0 +1,48 @@ +from.hpp | toml11 + +
    from.hpp +

    from.hpp +#

    toml::gettoml::findで使用する、toml::valueからの変換を定義する構造体です。

    メンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom<T>を使用してください。

    このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。

    namespace toml
    +{
    +
    +template<typename T>
    +struct from;
    +
    +} // toml
    +

    例 +#

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +#include <toml11/from.hpp>
    +
    +namespace toml
    +{
    +template<>
    +struct from<extlib::foo>
    +{
    +    template<typename TC>
    +    static extlib::foo from_toml(const toml::basic_value<TC>& v)
    +    {
    +        return extlib::foo{toml::find<int>(v, "a"), toml::find<std::string>(v, "b")};
    +    }
    +};
    +} // toml
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/get/index.html b/ja/docs/reference/get/index.html new file mode 100644 index 00000000..c8b65df4 --- /dev/null +++ b/ja/docs/reference/get/index.html @@ -0,0 +1,151 @@ +get.hpp | toml11 + +
    get.hpp +

    get.hpp +#

    toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。

    toml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 +厳密には全て toml::basic_value<TC> が使われています。ただしこれでは冗長なので、 +関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 +説明文では、テンプレートパラメータTCを変更して型が変更されていれば +toml::value::integer_type などの型は追従して変更されると解釈してください。

    toml::get<T> +#

    概要 +#

    基本的に、toml::getは以下のような関数として振る舞います。 +Ttoml::get<int>(v)のようにして与えます。

    template<typename T, typename TC>
    +T get(const basic_value<TC>& v);
    +

    ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。

    Tの型の種類は、

    1. 変換が必要ない型
    2. 変換する必要がある型

    に分けられます。

    細かい条件と、特別にサポートしている具体的な型については後述します。

    変換が必要ない型 +#

    変換が必要ないのは、渡された toml::value が格納している型です。 +例えば、 toml::value::integer_typestd::int64_t のエイリアスなので、 +toml::get<std::int64_t>(v) は変換を必要としません。 +この場合、 toml:getinteger の値を toml::value から取り出し、その参照を返します。

    渡されたtoml::valueが可変参照(&)である場合、返す値も可変参照(&)です。 +不変参照(const&)の場合、返す値も不変参照(const&)となります。 +可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。

    変換が必要な型 +#

    上記の型以外については変換が必要です。 +例えば、toml::value::integer_typestd::int64_tのエイリアスなので、toml::get<std::size_t>(toml::value&)は変換が必要です。 +この場合、toml:getintegerの値をtoml::valueから取り出し、それをキャストして返します。

    toml11は簡単なキャストだけでなく、 +toml::arrayからやstd::tuple<int, double, std::string>std::array<double, 4>、 +toml::tableからstd::map<std::string, int>などの複雑な型変換をサポートします。 +具体的には、続くセクションを参照してください。

    失敗した場合 +#

    期待した型変換を行えない場合があります。例えば、tableを持っているtoml::valuetoml::get<int>(v)を適用した場合などです。

    このような場合は、取り出そうとした型に最も似ている型への変換(今回はintなので、as_integer)が失敗したとして、toml::type_errorが送出されます。

    ファイルからパースした場合、以下のようなエラーメッセージが出力されます。

    terminate called after throwing an instance of 'toml::type_error'
    +  what():  toml::value::as_integer(): bad_cast to integer
    + --> input.toml
    +   |
    + 6 | [fruit]
    +   | ^^^^^^^-- the actual type is table
    +

    Ttoml::valueと同一のとき +#

    template< T, typename TC>
    +T& get(basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T const& get(const basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T get(basic_value<TC>&& v);
    +

    条件:

    • std::is_same<T, basic_value<TC>> を満たす

    toml::valueからtoml::valueなので、変換は行われず、そのままの値が返されます。 +他の関数の実装を一般化するためだけに存在しています。

    失敗しません。

    Ttoml::value::{some_type}のいずれかのとき +#

    template<typename T, typename TC>
    +T& get(basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T const& get(const basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T get(basic_value<TC>&& v);
    +

    条件:

    • Ttoml::valueが格納できる型(toml::value::boolean_typeなど)のどれかと同一であること

    toml::value が格納している型と同じ型、例えば toml::value::integer_type が +toml::get<T>T として指定されたとき、型変換の必要がないため参照を返すことが可能です。

    異なる型が格納されていた場合、toml::type_error が送出されます。

    Tが異なるTypeConfigを持つbasic_value<OtherTC>のとき +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Ttoml::basic_value<TC>ではない
    • Ttoml::basic_value<OtherTC>である

    異なる型を格納し得るbasic_valueが指定された場合、変換が行われます。

    型変換が発生するので、返す値は新規な値であり、参照ではありません。

    失敗しません(メモリ枯渇などの場合を除く)。

    Tが整数型の場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_integral<T> を満たす
    • std::is_same<T, bool> ではない
    • toml::value::integer_type ではない

    toml::valueinteger_type を保持しているとしてその値を取得し、それを T に変換して返します。

    toml::value::integer_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tが浮動小数点数型の場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_floating_point<T> を満たす
    • toml::value::floating_type ではない

    toml::valuefloating_typeを保持しているとしてその値を取得し、それをTに変換して返します。

    toml::value::floating_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::string_viewの場合 +#

    C++17以降でのみ使用可能です。

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_same<std::string_view, T> を満たす

    toml::valuestring_typeを保持しているとしてその値を取得し、それからstd::string_viewを構築して返します。

    toml::value::string_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::chrono::durationの場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::chrono::duration<Rep, Period>である

    toml::valuelocal_timeを保持しているとしてその値を取得し、それをstd::chrono::durationに変換して返します。

    toml::value::local_time 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::chrono::system_clock::time_pointの場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_same<T, std::chrono::system_clock::time_point>を満たす

    toml::valuelocal_date, local_datetime, offset_datetimeのどれかを保持しているとしてその値を取得し、それをstd::chrono::system_clock::time_pointに変換して返します。

    local_date, local_datetime, offset_datetime 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tarray-likeである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • TT::iteratorを持つ
    • TT::value_typeを持つ
    • TT::push_back(x)を持つ
    • Ttoml::value::array_typeではない
    • Tstd::stringではない
    • Tstd::string_viewではない
    • Tmap-likeではない
    • Tfrom_toml()メンバ関数を持たない
    • toml::from<T>が定義されていない
    • toml::basic_value<TC>からのコンストラクタが定義されていない

    std::vector<int>std::deque<std::string>などが該当します。

    toml::valuearrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::arrayである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::array<U, N>である

    toml::valuearrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    toml::value が持つ array が十分な数の要素を持っていなかった場合、std::out_of_rangeが送出されます。

    Tstd::forward_listである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::forward_list<U>である

    toml::valuearrayを保持しているとしてその値を取得し、それをstd::forward_listに変換して返します。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    forward_listpush_backを持たないので、別に実装されています。

    Tstd::pairである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::pair<T1, T2>である

    toml::valuearrayを保持しているとしてその値を取得し、それをstd::pair<T1, T2>に変換して返します。

    firstsecond はそれぞれ再帰的に変換されます。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    toml::value が持つ array の要素数がちょうど2個でなかった場合、std::out_of_rangeが送出されます。

    Tstd::tupleである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::tuple<T1, T2, ... TN>である

    toml::valuearrayを保持しているとしてその値を取得し、それをstd::tuple<T1, T2, ...TN>に変換して返します。

    各要素はそれぞれ再帰的に変換されます。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    toml::value が持つ array の要素数がちょうど std::tuple_size<T>::value 個でなかった場合、std::out_of_rangeが送出されます。

    Tmap-likeである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • TT::iteratorを持つ
    • TT::key_typeを持つ
    • TT::value_typeを持つ
    • TT::mapped_typeを持つ
    • Ttoml::value::table_typeではない
    • Tfrom_toml()メンバ関数を持たない
    • toml::from<T>が定義されていない
    • toml::basic_value<TC>からのコンストラクタが定義されていない

    std::map<std::string, int>std::unordered_map<std::string, float>などが該当します。

    toml::valuetableを保持しているとしてその値を取得し、それを T に変換して返します。

    各要素はそれぞれ再帰的に変換されます。

    basic_value::table_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Ttoml::from<T>の特殊化を持つユーザー定義型である場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • toml::from<T>が定義されている

    toml::fromT に対する特殊化が定義されていた場合、それを使用した型変換が行われます。

    個別にサポートされる型( std::array, std::pair, std::tuple )と衝突しないようにしてください。

    TT::from_tomlメンバ関数を持つユーザー定義型である場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • toml::from<T>が定義されていない
    • Tfrom_toml()メンバ関数を持つ

    Tfrom_toml(toml::basic_value<TC>) メンバ関数が定義されていた場合、それを使用した型変換が行われます。

    toml::from<T> が定義されていると、そちらが優先されます。

    Ttoml::basic_value<TC>を取るコンストラクタを持つユーザー定義型である場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • toml::from<T>が定義されていない
    • Tfrom_toml()メンバ関数を持たない
    • Ttoml::basic_value<TC>を取るコンストラクタを持つ

    Ttoml::basic_value<TC> を取るコンストラクタが定義されていた場合、それを使用した型変換が行われます。

    toml::from<T> または T::from_toml が定義されていると、そちらが優先されます。

    toml::get_or<T> +#

    get_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。

    このデフォルト値は受け取る型Tと同じ型でなければなりません。 +よって、 toml::get<T> とは違って、 get_or では T を指定せずとも推論されます。

    Tbasic_value<TC>である場合 +#

    template<typename TC>
    +basic_value<TC> const& get_or(const basic_value<TC>& v, const basic_value<TC>& opt)
    +
    +template<typename TC>
    +basic_value<TC> & get_or(basic_value<TC>& v, basic_value<TC>& opt)
    +
    +template<typename TC>
    +basic_value<TC> get_or(basic_value<TC>&& v, basic_value<TC>&& opt)
    +

    変換先は同一のtoml::valueなので、失敗しません。

    他の関数の実装を一般化するためだけに存在しています。

    Tbasic_value<TC>::{some_type}である場合 +#

    template<typename T, typename TC>
    +T const& get_or(const basic_value<TC>& v, const T& opt) noexcept
    +
    +template<typename T, typename TC>
    +T & get_or(basic_value<TC>& v, T& opt) noexcept
    +
    +template<typename T, typename TC>     
    +T get_or(basic_value<TC>&& v, T&& opt) noexcept
    +

    toml::get<T>と同様の変換を行います。失敗した場合は第二引数が返されます。

    Tconst char*である場合 +#

    template<typename TC>
    +typename basic_value<TC>::string_type
    +get_or(const basic_value<TC>& v,
    +       const typename basic_value<TC>::string_type::value_type* opt);
    +

    const char* が渡された場合、変換先は std::string として解釈されます。

    Tがその他の場合 +#

    template<typename TC>
    +typename std::remove_cv<typename std::remove_reference<T>::type>::type
    +get_or(const basic_value<TC>& v, T&& opt);
    +

    toml::get<T>と同様の変換を行います。失敗した場合は第二引数が返されます。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/index.html b/ja/docs/reference/index.html new file mode 100644 index 00000000..ecd2251d --- /dev/null +++ b/ja/docs/reference/index.html @@ -0,0 +1,75 @@ +reference | toml11 + +
    reference +

    Reference +#

    以下では、toml11が公開するクラスと関数の効果を説明します。

    ディレクトリ構造 +#

    toml.hpptoml_fwd.hpp${TOML11_INCLUDE_DIR} にあります。 +他のファイルは、${TOML11_INCLUDE_DIR}/toml11 にあります。

    もし各機能のファイルを個別に #include したい場合は、 #include <toml11/color.hpp> としてください。 +全てを一度に #include する場合は、 #include <toml.hpp> としてください。

    color.hpp +#

    エラーメッセージの色付けに関する関数を定義します。

    comments.hpp +#

    コメントを持つpreserve_comment型とdiscard_comment型を定義します。

    conversion.hpp +#

    toml::valueとユーザー定義クラスを自動的に変換するマクロを定義します。

    datetime.hpp +#

    日時情報を持つクラスを定義します。

    error_info.hpp +#

    エラー情報を持つクラスを定義します。

    exception.hpp +#

    toml11で使用される例外の基底クラス、toml::exceptionを定義します。

    find.hpp +#

    値を探し変換するtoml::find関数を定義します。

    format.hpp +#

    値のフォーマット情報を持つクラスを定義します。

    from.hpp +#

    ユーザー定義型を変換するためのfrom<T>型の前方宣言です。

    get.hpp +#

    toml::valueの値を取り出し変換するtoml::get<T>関数を定義します。

    into.hpp +#

    ユーザー定義型を変換するためのinto<T>型の前方宣言です。

    literal.hpp +#

    operator"" _tomlリテラルを定義します。

    ordered_map.hpp +#

    toml::ordered_mapを定義します。

    parser.hpp +#

    ファイルまたは文字列をパースする関数を定義します。

    result.hpp +#

    他の関数の返り値として使われる、成功値または失敗値を持つresult<T, E>型を定義します。

    serializer.hpp +#

    シリアライズに用いるtoml::format関数とtoml::serializerを定義します。

    source_location.hpp +#

    エラー情報に用いられる、ファイル内のある領域を指すsource_location型を定義します。

    spec.hpp +#

    TOML言語のバージョン情報と機能フラグを制御する、toml::semantic_version型とtoml::spec型を定義します。

    toml.hpp +#

    toml.hppは、他の全てのヘッダを include します。 +toml11の全機能が使用可能になります。

    toml_fwd.hpp +#

    toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。

    types.hpp +#

    toml::valueの持つ型を制御するためのtoml::type_config型を定義します。

    value.hpp +#

    toml::value型を定義します。

    value_t.hpp +#

    列挙型toml::value_tを定義します。

    version.hpp +#

    toml11のバージョン情報を定義します。

    visit.hpp +#

    toml::valueの持つ値に関数を適用するtoml::visit関数を定義します。

    備考 +#

    ここで明記されない関数(主にnamespace toml::detailnamespace toml::cxx以下に定義されるもの)は、 +ソースコードを見ることで利用可能ではあるものの、そのインターフェースは今後のいかなるバージョンアップでも(パッチバージョンアップを含む)維持される保証はありません。

    \ No newline at end of file diff --git a/ja/docs/reference/index.xml b/ja/docs/reference/index.xml new file mode 100644 index 00000000..0677d0b3 --- /dev/null +++ b/ja/docs/reference/index.xml @@ -0,0 +1,103 @@ +reference on toml11https://toruniina.github.io/toml11/ja/docs/reference/Recent content in reference on toml11Hugojacolor.hpphttps://toruniina.github.io/toml11/ja/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/color/color.hpp # color.hppでは、エラーメッセージの色付けに関する関数が定義されます。 +色はANSIエスケープシーケンスによって指定されます。 ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。 +マクロ # TOML11_COLORIZE_ERROR_MESSAGE コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 デフォルトでエラーメッセージに色が付きます。 +定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を 使用して指定する必要があります。 +関数 # enable() # namespace toml { namespace color { void enable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行うよう設定します。 +例 # #include &lt;toml.hpp&gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(&#34;input.toml&#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行わないよう設定します。 +例 # #include &lt;toml.comments.hpphttps://toruniina.github.io/toml11/ja/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/comments/comments.hpp # color.hppでは、コメントを保持するクラスが提供されます。 +toml::preserve_comments # preserve_commentsは、コメントを保持するコンテナです。 +std::vector&lt;std::string&gt;が持つメンバ関数を全て持っています。 +コメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。 +namespace toml { class preserve_comments; bool operator==(const preserve_comments&amp;, const preserve_comments&amp;); bool operator!=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt;=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt;=(const preserve_comments&amp;, const preserve_comments&amp;); void swap(preserve_comments&amp;, preserve_comments&amp;); void swap(preserve_comments&amp;, std::vector&lt;std::string&gt;&amp;); void swap(std::vector&lt;std::string&gt;&amp;, preserve_comments&amp;); std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const preserve_comments&amp;); } //toml メンバ型 # using container_type = std::vector&lt;std::string&gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; メンバ関数 # デフォルトコンストラクタ # preserve_comments() = default; 空のpreserve_commentsを構築します。conversion.hpphttps://toruniina.github.io/toml11/ja/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/conversion/ conversion.hpp # toml::getやtoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。 +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) 例 # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) 関連項目 # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/ja/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/datetime/datetime.hpp # TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。 +enum class month_t # 月を指定するenum classです。 +std::tmとの関係で、local_dateは1月を0としています。 混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。 +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # 日付を保持する構造体です。 +yearは西暦を、monthはstd::tmとの対応のため1月を0として、dayは日付を保持します。 +namespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const&amp;) = default; local_date(local_date&amp;&amp;) = default; local_date&amp; operator=(local_date const&amp;) = default; local_date&amp; operator=(local_date&amp;&amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm&amp; t); explicit local_date(const std::chrono::system_clock::time_point&amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date&amp;, const local_date&amp;); bool operator!error_info.hpphttps://toruniina.github.io/toml11/ja/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/error_info/error_info.hpp # error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。 +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename ... Ts&gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts&amp;&amp; .exception.hpphttps://toruniina.github.io/toml11/ja/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/exception/exception.hpp # toml::exception # toml11で定義される例外型の基底クラスです。 +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml メンバ関数 # デストラクタ # virtual ~exception() noexcept override = default; 派生する際に上書きします。 +what # virtual const char* what() const noexcept override {return &#34;&#34;;} エラーメッセージを返します。派生する際に上書きします。find.hpphttps://toruniina.github.io/toml11/ja/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/find/find.hpp # toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::find # 概要 # toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。 +template&lt;typename T, typename TC, typename ... Keys&gt; T find(const basic_value&lt;TC&gt;&amp; v, Keys ... keys); サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。 +T が指定されなかった場合、 toml::value が返されます。 +キーは、 toml::value::key_type または std::size_t です。 複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。 +再帰的な検索に関しての注意 # TOMLには通常の bare key の他に、 &quot; や ' で囲まれた quoted key というものがあります。 quoted key を使うと、 &quot;foo.format.hpphttps://toruniina.github.io/toml11/ja/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/format/format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。 +indent_char # インデント情報を表す列挙体です。 +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。 +シリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。 +boolean_format_info # booleanのフォーマット情報です。 +struct boolean_format_info {}; bool operator==(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; bool operator!=(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。 +integer_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。from.hpphttps://toruniina.github.io/toml11/ja/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/from/ from.hpp # toml::getやtoml::findで使用する、toml::valueからの変換を定義する構造体です。 +メンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct from; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.hpp&gt; namespace toml { template&lt;&gt; struct from&lt;extlib::foo&gt; { template&lt;typename TC&gt; static extlib::foo from_toml(const toml::basic_value&lt;TC&gt;&amp; v) { return extlib::foo{toml::find&lt;int&gt;(v, &#34;a&#34;), toml::find&lt;std::string&gt;(v, &#34;b&#34;)}; } }; } // toml 関連項目 # conversion.hpp into.hppget.hpphttps://toruniina.github.io/toml11/ja/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/get/get.hpp # toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::get&lt;T&gt; # 概要 # 基本的に、toml::getは以下のような関数として振る舞います。 Tはtoml::get&lt;int&gt;(v)のようにして与えます。 +template&lt;typename T, typename TC&gt; T get(const basic_value&lt;TC&gt;&amp; v); ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。 +Tの型の種類は、 +変換が必要ない型 変換する必要がある型 に分けられます。 +細かい条件と、特別にサポートしている具体的な型については後述します。 +変換が必要ない型 # 変換が必要ないのは、渡された toml::value が格納している型です。 例えば、 toml::value::integer_type は std::int64_t のエイリアスなので、 toml::get&lt;std::int64_t&gt;(v) は変換を必要としません。 この場合、 toml:get は integer の値を toml::value から取り出し、その参照を返します。 +渡されたtoml::valueが可変参照(&amp;)である場合、返す値も可変参照(&amp;)です。 不変参照(const&amp;)の場合、返す値も不変参照(const&amp;)となります。 可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。 +変換が必要な型 # 上記の型以外については変換が必要です。 例えば、toml::value::integer_typeはstd::int64_tのエイリアスなので、toml::get&lt;std::size_t&gt;(toml::value&amp;)は変換が必要です。 この場合、toml:getはintegerの値をtoml::valueから取り出し、それをキャストして返します。 +toml11は簡単なキャストだけでなく、 toml::arrayからやstd::tuple&lt;int, double, std::string&gt;やstd::array&lt;double, 4&gt;、 toml::tableからstd::map&lt;std::string, int&gt;などの複雑な型変換をサポートします。 具体的には、続くセクションを参照してください。into.hpphttps://toruniina.github.io/toml11/ja/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/into/into.hpp # toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。 +メンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct into; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.hpp&gt; namespace toml { template&lt;&gt; struct into&lt;extlib::foo&gt; { template&lt;typename TC&gt; static toml::basic_value&lt;TC&gt; into_toml(const extlib::foo&amp; f) { using value_type = toml::basic_value&lt;TC&gt;; using table_type = typename value_type::table_type; return value_type(table_type{{&#34;a&#34;, f.a}, {&#34;b&#34;, f.b}}); } }; } // toml 関連項目 # conversion.literal.hpphttps://toruniina.github.io/toml11/ja/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/literal/literal.hpp # literal.hppでは、_tomlリテラルが定義されます。 +_tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。 +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // C++20以降 } // toml_literals } // literals } // toml 自由関数 # operator&quot;&quot; _toml(char) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); 文字列リテラルをパースしてtoml::valueに変換します。 +通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。 +const auto v1 = &#34;a = &#39;foo&#39;&#34;_toml; // v1: {a = &#39;foo&#39;} 改行を含む場合、生文字列リテラルが便利です。 +const auto v1 = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; 値が単体で書かれていた場合、その値になります。ordered_map.hpphttps://toruniina.github.io/toml11/ja/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/ordered_map/ordered_map.hpp # ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。 +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。 +線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。 +非メンバ型 # namespace toml { struct ordered_type_config; using ordered_value = basic_value&lt;ordered_type_config&gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } toml::type_config と toml::value の代わりに使用します。 +toml::parse はデフォルトで type_config を使用するので、パースする際に +const auto input = toml::parse&lt;toml::ordered_type_config&gt;(&#34;input.toml&#34;); としてください。 +メンバ型 # using key_type = Key; using mapped_type = Val; using value_type = std::pair&lt;Key, Val&gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector&lt;value_type, Allocator&gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; メンバ関数 # コンストラクタ # ordered_map() = default; 空の ordered_map を構築します。parser.hpphttps://toruniina.github.io/toml11/ja/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/parser/parser.hpp # ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。 +parseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。 +parse # 与えられたファイルの内容をパースし、toml::basic_valueを返します。 +失敗した場合はtoml::syntax_errorが送出されます。 +basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。 +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(const char (&amp;)[N] filename, toml::spec) # namespace toml { template&lt;typename TC = type_config, std::size_t N&gt; basic_value&lt;TC&gt; parse(const char (&amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルを受け取って、そのファイルの内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(std::filesystem::path, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(const std::filesystem::path&amp; fpath, spec s = spec::default_version()); } &lt;filesystem&gt;が利用可能な場合のみ定義されます。result.hpphttps://toruniina.github.io/toml11/ja/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/result/result.hpp # result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。 +これは、例外を投げないtoml::try_parseの返り値として使用されます。 +success # 成功値を持つ型です。 +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } メンバ型 # using value_type = T; 成功値の型です。serializer.hpphttps://toruniina.github.io/toml11/ja/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/serializer/serializer.hpp # format # シリアライズを行います。 +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } フォーマット情報とspecが矛盾する場合、例えばv1.0.0でtable_format::multiline_onelineが指定されているときなどは、specが優先されます。 +format(v, spec) # toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。 +table_typeだった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。 +format(k, v, spec) # toml::valueを、与えられたキーと同時にフォーマットします。 +vはそのキー以下に定義されていると解釈されます。 +format([k,...], v, spec) # vはそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。source_location.hpphttps://toruniina.github.io/toml11/ja/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/source_location/source_location.hpp # source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。 +このクラスは、エラーメッセージで問題の箇所を指摘するために使われます。 +toml::source_location # source_locationは、TOMLファイル内のある領域を指すクラスです。 +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/ja/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/spec/spec.hpp # spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。 +toml::semantic_version # semantic_versionは、バージョン情報を格納するクラスです。 +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml メンバ関数 # コンストラクタ # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; major, minor, patchバージョンを指定して構築します。toml_fwd.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。 +toml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。 +このファイルには前方宣言しか含まれていないため、 toml::basic_value&lt;toml::type_config&gt;::table_type として定義される toml::table と、同様に定義される toml::array は使用できません。 それらには basic_value の実装が必要だからです。 このヘッダファイルと toml.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。toml.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml/toml.hpp # toml.hppは、他の全てのヘッダを include します。 +これによって、toml11の全機能が使用可能になります。 +このヘッダファイルと toml_fwd.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。types.hpphttps://toruniina.github.io/toml11/ja/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/types/types.hpp # 型情報を与えるクラスが定義されます。 +type_config # type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。 +toml::basic_value&lt;T&gt;内で異なる型を使用する場合、これを別に定義して渡します。 記載のある要素は全て必須の要素です。 +通常のストリーム演算子を使用できない数値型を使用する場合、read_int、read_floatに相当するものを定義し、置き換えてください。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static メンバ関数 # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); 通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。value_t.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value_t/value_t.hpp # 型情報を表す列挙型です。 +value_t # value_tは、toml::valueが持つ型情報を扱う際に使用します。 +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml 非メンバ関数 # ストリーム演算子 # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); value_tの値を文字列化してストリームへ出力します。value.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value/value.hpp # value.hppでは、basic_valueが定義されます。 +toml::basic_value # basic_valueは、TOMLの値を格納するクラスです。 +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // 以下はtypes.hppで定義される // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml メンバ型 # 以下のメンバ型が定義されます。version.hpphttps://toruniina.github.io/toml11/ja/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/version/version.hpp # version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。 +マクロ # TOML11_VERSION_MAJOR # toml11のメジャーバージョンです。 +TOML11_VERSION_MINOR # toml11のマイナーバージョンです。 +TOML11_VERSION_PATCH # toml11のパッチバージョンです。 +関数 # license_notice # namespace toml { const char* license_notice() noexcept; } ライセンス条項を返します。 +ソースコードを公開せずに頒布する際の利便性のために用意されています。visit.hpphttps://toruniina.github.io/toml11/ja/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/visit/visit.hpp # visit.hppでは、toml::visitが定義されます。 +toml::visit # 関数 # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v) template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v) } basic_value&lt;TC&gt;が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。 +条件 # Visitorは、basic_value&lt;TC&gt;が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。 +また、それぞれのオーバーロードで返り値は同じであることが要求されます。 +例 # #include &lt;toml.hpp&gt; #include &lt;iostream&gt; struct type_name_of { std::string operator()(const toml::value::boolean_type &amp;) const {return &#34;boolean&#34;;} std::string operator()(const toml::value::integer_type &amp;) const {return &#34;integer&#34;;} std::string operator()(const toml::value::floating_type &amp;) const {return &#34;floating&#34;;} std::string operator()(const toml::value::string_type &amp;) const {return &#34;string&#34;;} std::string operator()(const toml::value::local_time_type &amp;) const {return &#34;local_time&#34;;} std::string operator()(const toml::value::local_date_type &amp;) const {return &#34;local_date&#34;;} std::string operator()(const toml::value::local_datetime_type &amp;) const {return &#34;local_datetime&#34;;} std::string operator()(const toml::value::offset_datetime_type&amp;) const {return &#34;offset_datetime&#34;;} std::string operator()(const toml::value::array_type &amp;) const {return &#34;array&#34;;} std::string operator()(const toml::value::table_type &amp;) const {return &#34;table&#34;;} }; int main() { toml::value v(3. \ No newline at end of file diff --git a/ja/docs/reference/into/index.html b/ja/docs/reference/into/index.html new file mode 100644 index 00000000..7a543453 --- /dev/null +++ b/ja/docs/reference/into/index.html @@ -0,0 +1,50 @@ +into.hpp | toml11 + +
    into.hpp +

    into.hpp +#

    toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。

    メンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto<T>を使用してください。

    このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。

    namespace toml
    +{
    +
    +template<typename T>
    +struct into;
    +
    +} // toml
    +

    例 +#

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +#include <toml11/into.hpp>
    +
    +namespace toml
    +{
    +template<>
    +struct into<extlib::foo>
    +{
    +    template<typename TC>
    +    static toml::basic_value<TC> into_toml(const extlib::foo& f)
    +    {
    +        using value_type = toml::basic_value<TC>;
    +        using table_type = typename value_type::table_type;
    +        return value_type(table_type{{"a", f.a}, {"b", f.b}});
    +    }
    +};
    +} // toml
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/literal/index.html b/ja/docs/reference/literal/index.html new file mode 100644 index 00000000..bb02160e --- /dev/null +++ b/ja/docs/reference/literal/index.html @@ -0,0 +1,53 @@ +literal.hpp | toml11 + +
    literal.hpp +

    literal.hpp +#

    literal.hppでは、_tomlリテラルが定義されます。

    _tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。

    namespace toml
    +{
    +inline namespace literals
    +{
    +inline namespace toml_literals
    +{
    +toml::value operator"" _toml(const char* str, std::size_t len);
    +toml::value operator"" _toml(const char8_t* str, std::size_t len); // C++20以降
    +} // toml_literals
    +} // literals
    +} // toml
    +

    自由関数 +#

    operator"" _toml(char) +#

    toml::value operator"" _toml(const char* str, std::size_t len);
    +

    文字列リテラルをパースしてtoml::valueに変換します。

    通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。

    const auto v1 = "a = 'foo'"_toml; // v1: {a = 'foo'}
    +

    改行を含む場合、生文字列リテラルが便利です。

    const auto v1 = R"(
    +    a = 42
    +    b = "foo"
    +)"_toml;
    +

    値が単体で書かれていた場合、その値になります。

    const auto v2 = "'foo'"_toml;     // v2: 'foo'
    +

    TOMLは数値のみからなるキーを許可しています。 +[1]のように、テーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。

    配列として解釈させるには、trailing commaを使用してください。

    const auto v3 = "[1]"_toml;  // v3: {1 = {}}
    +const auto v4 = "[1,]"_toml; // v4: [1,]
    +

    operator"" _toml(char8_t) +#

    char8_tが利用可能な場合に定義されます。引数の型のほかに違いはありません。

    例 +#

    #include <toml.hpp>
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +    const auto v = "a = \"foo\""_toml;
    +    assert(v.at("a").as_string() == "foo");
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/reference/ordered_map/index.html b/ja/docs/reference/ordered_map/index.html new file mode 100644 index 00000000..2d47c02c --- /dev/null +++ b/ja/docs/reference/ordered_map/index.html @@ -0,0 +1,145 @@ +ordered_map.hpp | toml11 + +
    ordered_map.hpp +

    ordered_map.hpp +#

    ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。

    class ordered_map +#

    namespace toml
    +{
    +template<typename Key, typename Val, typename Cmp = std::equal_to<Key>,
    +         typename Allocator = std::allocator<std::pair<Key, Val>>>
    +class ordered_map;
    +}
    +

    ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。

    線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 +検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。

    非メンバ型 +#

    namespace toml
    +{
    +struct ordered_type_config;
    +
    +using ordered_value = basic_value<ordered_type_config>;
    +using ordered_table = typename ordered_value::table_type;
    +using ordered_array = typename ordered_value::array_type;
    +}
    +

    toml::type_configtoml::value の代わりに使用します。

    toml::parse はデフォルトで type_config を使用するので、パースする際に

    const auto input = toml::parse<toml::ordered_type_config>("input.toml");
    +

    としてください。

    メンバ型 +#

    using key_type       = Key;
    +using mapped_type    = Val;
    +using value_type     = std::pair<Key, Val>;
    +using key_compare    = Cmp;
    +using allocator_type = Allocator;
    +
    +using container_type  = std::vector<value_type, Allocator>;
    +using reference       = typename container_type::reference;
    +using pointer         = typename container_type::pointer;
    +using const_reference = typename container_type::const_reference;
    +using const_pointer   = typename container_type::const_pointer;
    +using iterator        = typename container_type::iterator;
    +using const_iterator  = typename container_type::const_iterator;
    +using size_type       = typename container_type::size_type;
    +using difference_type = typename container_type::difference_type;
    +

    メンバ関数 +#

    コンストラクタ +#

    ordered_map() = default;
    +

    空の ordered_map を構築します。

    コンストラクタ(コンパレータ、アロケータ) +#

    explicit ordered_map(const Cmp& cmp, const Allocator& alloc = Allocator());
    +explicit ordered_map(const Allocator& alloc);
    +

    キーの比較に使用するコンパレータや、コンテナのメモリ確保に使用するアロケータを指定して構築します。

    コピー・ムーブコンストラクタ +#

    ordered_map(const ordered_map&) = default;
    +ordered_map(ordered_map&&)      = default;
    +
    +ordered_map(const ordered_map& other, const Allocator& alloc);
    +ordered_map(ordered_map&& other, const Allocator& alloc);
    +

    別の ordered_map の内容をコピー・ムーブして構築します。

    コンテナのメモリ確保に使用するアロケータを指定することも可能です。

    コンストラクタ(Iterator) +#

    template<typename InputIterator>
    +ordered_map(InputIterator first, InputIterator last, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
    +template<typename InputIterator>
    +ordered_map(InputIterator first, InputIterator last, const Allocator& alloc = Allocator());
    +

    イテレータ範囲を受け取って構築します。

    順序は、イテレータの順序に従います。

    コンストラクタ(std::initializer_list) +#

    ordered_map(std::initializer_list<value_type> v, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
    +ordered_map(std::initializer_list<value_type> v, const Allocator& alloc);
    +

    ordered_map{...}の形式で初期化します。

    コピー・ムーブ代入演算子 +#

    ordered_map& operator=(const ordered_map&) = default;
    +ordered_map& operator=(ordered_map&&)      = default;
    +

    別の ordered_map の内容をコピー・ムーブ代入します。

    代入演算子(std::initializer_list) +#

    ordered_map& operator=(std::initializer_list<value_type> v);
    +

    std::initializer_list の内容を代入します。

    デストラクタ +#

    ~ordered_map() = default;
    +

    ordered_map を破棄します。

    begin(), end() +#

    iterator       begin()        noexcept;
    +iterator       end()          noexcept;
    +const_iterator begin()  const noexcept;
    +const_iterator end()    const noexcept;
    +const_iterator cbegin() const noexcept;
    +const_iterator cend()   const noexcept;
    +

    コンテナの内容を順序通りにイテレートします。

    empty() +#

    bool empty() const noexcept;
    +

    ordered_map が空の場合 true を、そうでない場合 false を返します。

    size() +#

    std::size_t size() const noexcept;
    +

    ordered_map の要素数を返します。

    max_size() +#

    std::size_t max_size() const noexcept;
    +

    ordered_map が持つことのできる最大の要素数を返します。

    clear() +#

    void clear();
    +

    内容を消去します。

    push_back(kv) +#

    void push_back(const value_type&);
    +void push_back(value_type&&);
    +

    キーと値のペアを末尾に追加します。

    emplace_back(k, v) +#

    void emplace_back(key_type, mapped_type);
    +

    キーと値のペアを末尾に追加します。

    pop_back() +#

    void pop_back();
    +

    末尾の値を削除します。

    insert(kv) +#

    void insert(value_type);
    +

    キーと値のペアを末尾に追加します。

    emplace(k, v) +#

    void emplace(key_type, mapped_type);
    +

    キーと値のペアを末尾に追加します。

    count(k) +#

    std::size_t count(const key_type&) const noexcept;
    +

    キーに対応する値の数を返します。

    同じキーに複数の値を代入することはできないので、値が存在する場合は 1, そうでない場合は 0 を返します。

    contains(k) +#

    bool contains(const key_type&) const noexcept;
    +

    キーに対応する値が存在するなら true を、そうでないなら false を返します。

    find(k) +#

    iterator       find(const key_type& key)       noexcept;
    +const_iterator find(const key_type& key) const noexcept;
    +

    キーに対応する値を検索し、それを指すイテレータを返します。

    存在しなかった場合、end()を返します。

    at(k) +#

    mapped_type&       at(const key_type& k);
    +mapped_type const& at(const key_type& k) const;
    +

    キーに対応する値を検索して返します。

    存在しなかった場合、std::out_of_rangeを送出します。

    operator[](k) +#

    mapped_type&       operator[](const key_type& k);
    +mapped_type const& operator[](const key_type& k) const;
    +

    キーに対応する値を検索して返します。

    存在しなかった場合、新規な値を構築して返します。

    ordered_mapconst の場合は新規な値を構築できないので、 std::out_of_range を送出します。

    key_comp() +#

    key_compare key_comp() const;
    +

    比較に使用するコンパレータを返します。

    使用上の注意 +#

    キーの書き換え +#

    ordered_mapvalue_typestd::pair<Key, Val> を使用しているので、イテレータを介してキーを書き換えることが可能になってしまっています。

    この方法でキーを書き換えることは推奨されません。

    キーを書き換えて既存のキーと衝突した場合、衝突したうちの片方が検索できなくなります。

    operator[]push_back, insert による書き込みの場合は、既存のキーとの衝突が検出されます。

    保たれる順序の詳細 +#

    ordered_map はキーの順序を保ちますが、ここで保たれる順序は同じテーブルで定義されたキーの順序のみです。 +よって、テーブルをまたいだ順序は保たれないことに注意してください。

    例えば、以下のファイルの順序は保たれます。

    apple.type = "fruit"
    +apple.skin = "thin"
    +apple.color = "red"
    +orange.type = "fruit"
    +orange.skin = "thick"
    +orange.color = "orange"
    +

    対して以下のファイルの順序は保たれません。

    apple.type = "fruit"
    +orange.type = "fruit"
    +
    +apple.skin = "thin"
    +orange.skin = "thick"
    +
    +apple.color = "red"
    +orange.color = "orange"
    +

    ordered_map が保つ順序は、rootテーブルに定義された appleorange の順序と、 +apple 内で定義された type, skin, color の順序、 +また orange 内で定義された type, skin, color の順序のみです。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/parser/index.html b/ja/docs/reference/parser/index.html new file mode 100644 index 00000000..b428a28c --- /dev/null +++ b/ja/docs/reference/parser/index.html @@ -0,0 +1,198 @@ +parser.hpp | toml11 + +
    parser.hpp +

    parser.hpp +#

    ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。

    parseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。

    parse +#

    与えられたファイルの内容をパースし、toml::basic_valueを返します。

    失敗した場合はtoml::syntax_errorが送出されます。

    basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。

    parse(std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(std::string fname,
    +      spec s = spec::default_version());
    +}
    +

    ファイル名を受け取って、その内容をパースします。

    ファイルの読み込みに失敗した場合、file_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(const char (&)[N] filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config, std::size_t N>
    +basic_value<TC>
    +parse(const char (&fname)[N],
    +      spec s = spec::default_version());
    +}
    +

    文字列リテラルを受け取って、そのファイルの内容をパースします。

    ファイルの読み込みに失敗した場合、file_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(std::filesystem::path, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(const std::filesystem::path& fpath,
    +      spec s = spec::default_version());
    +}
    +

    <filesystem>が利用可能な場合のみ定義されます。

    ファイルパスを受け取って、そのファイルの内容をパースします。

    ファイルの読み込みに失敗した場合、file_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(std::istream&, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(std::istream& is,
    +      std::string fname = "unknown file",
    +      spec s = spec::default_version());
    +}
    +

    std::istream&を受け取ってその内容をパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +std::ios::binaryを使ってバイナリモードで開いてください。

    ファイル名の情報は第三引数で受け取ります。ファイル名が渡されなかった場合、"unknown file"になります。

    parse(FILE*, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +parse(FILE* fp,
    +      std::string filename,
    +      spec s = spec::default_version());
    +}
    +

    FILE*が指すファイルを読み込んでパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +fopenには"rb"などを渡してバイナリモードで開いてください。

    ファイルの読み込みに失敗した場合、errnoが含まれたfile_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(std::vector<unsigned char> content,
    +      std::string filename,
    +      spec s = spec::default_version());
    +}
    +

    バイト列をTOMLファイルとしてパースします。

    パースに失敗した場合、syntax_errorが送出されます。

    parse_str +#

    parse_str(std::string, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse_str(std::string content,
    +          spec s = spec::default_version(),
    +          cxx::source_location loc = cxx::source_location::current());
    +}
    +

    文字列をTOMLファイルとしてパースします。

    失敗した場合はtoml::syntax_errorが送出されます。

    basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。

    第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 +std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 +parse_strが呼ばれた地点の情報が位置情報として保存されます。

    try_parse +#

    与えられたファイルの内容をパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector<toml::error_info>を返します。

    basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。

    try_parseparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 +標準ライブラリから送出される例外はそのまま送出されることに注意してください。

    例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。

    try_parse(std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(std::string fname,
    +          spec s = spec::default_version());
    +}
    +

    ファイル名を受け取って、その内容をパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(const char (&)[N] filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config, std::size_t N>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(const char (&fname)[N],
    +          spec s = spec::default_version());
    +}
    +

    文字列リテラルをファイル名として受け取って、その内容をパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(std::filesystem::path, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(const std::filesystem::path& fpath,
    +          spec s = spec::default_version());
    +}
    +

    ファイルパスを受け取って、その内容をパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(std::istream&, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(std::istream& is,
    +          std::string fname = "unknown file",
    +          spec s = spec::default_version());
    +}
    +

    std::istream&を受け取ってその内容をパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +std::ios::binaryを使ってバイナリモードで開いてください。

    ファイル名の情報は第二引数で受け取ります。ファイル名が渡されなかった場合、"unknown file"になります。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(FILE*, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(FILE* fp,
    +          std::string filename,
    +          spec s = spec::default_version());
    +}
    +

    FILE*を受け取って、そのファイルの内容をパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +fopenには"rb"などを渡してバイナリモードで開いてください。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(std::vector<unsigned char> content,
    +          std::string filename,
    +          spec s = spec::default_version());
    +}
    +

    バイト列を受け取って、その内容をTOMLファイルとしてパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse_str +#

    try_parse_str(std::string, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse_str(std::string content,
    +              spec s = spec::default_version(),
    +              cxx::source_location loc = cxx::source_location::current());
    +}
    +

    文字列をTOMLファイルとしてパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector<toml::error_info>を返します。

    parse_strと異なり、syntax_errorを送出せず、エラー情報をresultの失敗型として返します。

    std::source_location, std::experimental::source_location, __builtin_FILEのどれかが利用可能な場合、それを位置情報に記録します。

    第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 +std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 +parse_strが呼ばれた地点の情報が位置情報として保存されます。

    try_parseparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 +標準ライブラリから送出される例外はそのまま送出されることに注意してください。

    例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。

    syntax_error +#

    namespace toml
    +{
    +struct syntax_error final : public ::toml::exception
    +{
    +  public:
    +    syntax_error(std::string what_arg, std::vector<error_info> err);
    +    ~syntax_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +    std::vector<error_info> const& errors() const noexcept
    +};
    +}
    +

    TOML言語の文法エラーが発見された場合に送出される例外です。

    parseからは送出されますが、try_parseからは送出されません。

    file_io_error +#

    namespace toml
    +{
    +struct file_io_error final : public ::toml::exception
    +{
    +  public:
    +    file_io_error(const std::string& msg, const std::string& fname);
    +    file_io_error(int errnum, const std::string& msg, const std::string& fname);
    +    ~file_io_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +
    +    bool has_errno() const noexcept;
    +    int  get_errno() const noexcept;
    +};
    +}
    +

    ファイルの内容を読むのに失敗した場合に送出される例外です。

    FILE*を使ってファイルを読み込んだ場合はerrnoが設定されます。

    has_errno +#

    std::ifstreamが失敗した場合はerrnoは設定されません。

    このとき、has_errnofalseになります。

    get_errno +#

    特にFILE*を渡していた場合に、errnoの値を取得します。

    has_errnofalseの場合は0となります。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/result/index.html b/ja/docs/reference/result/index.html new file mode 100644 index 00000000..31ef14aa --- /dev/null +++ b/ja/docs/reference/result/index.html @@ -0,0 +1,277 @@ +result.hpp | toml11 + +
    result.hpp +

    result.hpp +#

    result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。

    これは、例外を投げないtoml::try_parseの返り値として使用されます。

    success +#

    成功値を持つ型です。

    namespace toml
    +{
    +template<typename T>
    +struct success
    +{
    +    using value_type = T;
    +
    +    explicit success(value_type v);
    +
    +    ~success() = default;
    +    success(const success&) = default;
    +    success(success&&)      = default;
    +    success& operator=(const success&) = default;
    +    success& operator=(success&&)      = default;
    +
    +    template<typename U>
    +    explicit success(U&& v);
    +    template<typename U>
    +    explicit success(success<U> v);
    +
    +    value_type&       get()       noexcept;
    +    value_type const& get() const noexcept;
    +};
    +
    +template<typename T>
    +success<typename std::decay<T>::type> ok(T&& v);
    +template<std::size_t N>
    +success<std::string> ok(const char (&literal)[N])
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    成功値の型です。

    メンバ関数 +#

    コンストラクタ +#

    explicit success(value_type v);
    +

    value_typeを受け取って構築します。

    template<typename U>
    +explicit success(U&& v);
    +

    value_typeに変換可能な他の型を受け取って構築します。

    template<typename U>
    +explicit success(success<U> v);
    +

    value_typeに変換可能な他の型を持つsuccess型を受け取って構築します。

    get() +#

    value_type&       get()       noexcept;
    +value_type const& get() const noexcept;
    +

    値にアクセスします。

    非メンバ関数 +#

    ok(T) +#

    template<typename T>
    +success<typename std::decay<T>::type> ok(T&& v);
    +template<std::size_t N>
    +success<std::string> ok(const char (&literal)[N])
    +

    成功値からsuccess型を構築して返します。

    文字列リテラルを与えた場合は、std::stringにして返します。

    success<reference_wrapper<T>> +#

    successの特殊化。成功値が参照であるときに使用されます。

    namespace toml
    +{
    +template<typename T>
    +struct success<std::reference_wrapper<T>>
    +{
    +    using value_type = T;
    +
    +    explicit success(std::reference_wrapper<value_type> v) noexcept;
    +
    +    value_type&       get()       noexcept;
    +    value_type const& get() const noexcept;
    +};
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    成功値の型です。参照ではなく、std::reference_wrapper<T>Tです。

    get() +#

    value_type&       get()       noexcept;
    +value_type const& get() const noexcept;
    +

    値にアクセスします。

    failure +#

    失敗値を持つ型です。

    namespace toml
    +{
    +template<typename T>
    +struct failure
    +{
    +    using value_type = T;
    +
    +    explicit failure(value_type v);
    +
    +    ~failure() = default;
    +    failure(const failure&) = default;
    +    failure(failure&&)      = default;
    +    failure& operator=(const failure&) = default;
    +    failure& operator=(failure&&)      = default;
    +
    +    template<typename U>
    +    explicit failure(U&& v);
    +    template<typename U>
    +    explicit failure(failure<U> v);
    +
    +    value_type&       get()       noexcept;
    +    value_type const& get() const noexcept;
    +};
    +
    +template<typename T>
    +failure<typename std::decay<T>::type> err(T&& v);
    +template<std::size_t N>
    +failure<std::string> err(const char (&literal)[N]);
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    失敗値の型です。

    メンバ関数 +#

    コンストラクタ +#

    explicit failure(value_type v);
    +

    value_typeを受け取って構築します。

    template<typename U>
    +explicit failure(U&& v);
    +

    value_typeに変換可能な他の型を受け取って構築します。

    template<typename U>
    +explicit failure(failure<U> v);
    +

    value_typeに変換可能な他の型を持つfailure型を受け取って構築します。

    get() +#

    value_type&       get()       noexcept;
    +value_type const& get() const noexcept;
    +

    値にアクセスします。

    非メンバ関数 +#

    err(T) +#

    template<typename T>
    +failure<typename std::decay<T>::type> err(T&& v);
    +template<std::size_t N>
    +failure<std::string> err(const char (&literal)[N]);
    +

    失敗値からfailure型を構築して返します。

    文字列リテラルを与えた場合は、std::stringにして返します。

    failure<reference_wrapper<T>> +#

    failureの特殊化。失敗値が参照であるときに使用されます。

    namespace toml
    +{
    +template<typename T>
    +struct failure<std::reference_wrapper<T>>
    +{
    +    using value_type = T;
    +
    +    explicit failure(std::reference_wrapper<value_type> v) noexcept;
    +
    +    value_type&       get()       noexcept {return value.get();}
    +    value_type const& get() const noexcept {return value.get();}
    +};
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    失敗値の型です。参照ではなく、std::reference_wrapper<T>Tです。

    get() +#

    value_type&       get()       noexcept
    +value_type const& get() const noexcept
    +

    値にアクセスします。

    result +#

    成功値か失敗値かのどちらかを持つ型です。

    namespace toml
    +{
    +template<typename T, typename E>
    +struct result
    +{
    +    using success_type = success<T>;
    +    using failure_type = failure<E>;
    +    using value_type = typename success_type::value_type;
    +    using error_type = typename failure_type::value_type;
    +
    +    result(success_type s);
    +    result(failure_type f);
    +
    +    template<typename U>
    +    result(success<U> s);
    +    template<typename U>
    +    result(failure<U> f);
    +
    +    result& operator=(success_type s);
    +    result& operator=(failure_type f);
    +
    +    template<typename U>
    +    result& operator=(success<U> s);
    +    template<typename U>
    +    result& operator=(failure<U> f);
    +
    +    ~result() noexcept;
    +
    +    result(const result& other);
    +    result(result&& other);
    +    result& operator=(const result& other);
    +    result& operator=(result&& other);
    +
    +    template<typename U, typename F>
    +    result(result<U, F> other);
    +    template<typename U, typename F>
    +    result& operator=(result<U, F> other);
    +
    +    bool is_ok()  const noexcept;
    +    bool is_err() const noexcept;
    +
    +    explicit operator bool() const noexcept;
    +
    +    value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
    +    value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
    +
    +    value_type&       unwrap_or(value_type& opt)             noexcept;
    +    value_type const& unwrap_or(value_type const& opt) const noexcept;
    +
    +    error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
    +    error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
    +
    +    value_type&       as_ok()       noexcept;
    +    value_type const& as_ok() const noexcept;
    +
    +    error_type&       as_err()       noexcept;
    +    error_type const& as_err() const noexcept;
    +};
    +}
    +

    メンバ型 +#

    success_type +#

    success<T>です。

    failure_type +#

    failure<E>です。

    value_type +#

    成功型Tです。success_type::value_typeのエイリアスです。

    成功型Tとしてstd::reference_wrapper<U>が渡された場合、その引数型のUになります。

    error_type +#

    失敗型Eです。failure_type::value_typeのエイリアスです。

    失敗型Eとしてstd::reference_wrapper<F>が渡された場合、その引数型のFになります。

    メンバ関数 +#

    コンストラクタ +#

    result() = delete;
    +

    result型はデフォルトでは構築できません。 +成功型か失敗型を与える必要があります。

    result(success_type s);
    +result(failure_type f);
    +

    成功型、失敗型を受け取って構築します。

    template<typename U>
    +result(success<U> s);
    +template<typename U>
    +result(failure<U> f);
    +

    value_typeerror_typeに変換可能な成功型、失敗型を受け取って構築します。

    template<typename U, typename F>
    +result(result<U, F> other);
    +template<typename U, typename F>
    +result& operator=(result<U, F> other);
    +

    変換可能な成功型、失敗型を持つresultから構築します。

    コピー・ムーブコンストラクタ +#

    result(const result& other);
    +result(result&& other);
    +

    コピー・ムーブ構築可能です。

    operator= +#

    result& operator=(const result& other);
    +result& operator=(result&& other);
    +

    コピー・ムーブ代入可能です。

    template<typename U>
    +result& operator=(success<U> s);
    +template<typename U>
    +result& operator=(failure<U> f);
    +

    変換可能な型を持つ成功型、失敗型は代入可能です。

    is_ok() +#

    bool is_ok()  const noexcept;
    +

    成功値を持っている場合trueを、そうでない場合falseを返します。

    is_err() +#

    bool is_err() const noexcept;
    +

    失敗値を持っている場合trueを、そうでない場合falseを返します。

    operator bool() +#

    explicit operator bool() const noexcept;
    +

    成功値を持っている場合trueを、そうでない場合falseを返します。

    unwrap() +#

    value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
    +value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
    +

    成功値を取り出します。

    成功値を持っていない場合、toml::bad_result_accessが送出されます。

    std::source_locationまたはstd::experimental::source_locationが利用可能か、 +あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に +unwrap()が発生したソースコードのファイル名と行数が表示されます。

    利用可能でない場合、位置情報は表示されません。

    unwrap_or() +#

    value_type&       unwrap_or(value_type& opt)             noexcept;
    +value_type const& unwrap_or(value_type const& opt) const noexcept;
    +

    成功値を持っていた場合それを、持っていなかった場合は引数で与えられた値を返します。

    unwrap_err() +#

    error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
    +error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
    +

    失敗値を取り出します。

    失敗値を持っていない場合、toml::bad_result_accessが送出されます。

    std::source_locationまたはstd::experimental::source_locationが利用可能か、 +あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に +unwrap()が発生したソースコードのファイル名と行数が表示されます。

    利用可能でない場合、位置情報は表示されません。

    as_ok() +#

    value_type&       as_ok()       noexcept;
    +value_type const& as_ok() const noexcept;
    +

    チェックなしで成功値を返します。

    成功値を持っていなかった場合、その動作は未定義となります。

    as_err() +#

    error_type&       as_err()       noexcept;
    +error_type const& as_err() const noexcept;
    +

    チェックなしで失敗値を返します。

    失敗値を持っていなかった場合、その動作は未定義となります。

    bad_result_access +#

    resultunwrapまたはunwrap_errで失敗した際に送出される例外です。

    namespace toml
    +{
    +struct bad_result_access : public ::toml::exception
    +{
    +  public:
    +    explicit bad_result_access(const std::string& what_arg);
    +    virtual ~bad_result_access() noexcept override = default;
    +    virtual const char* what() const noexcept override;
    +  protected:
    +    std::string what_;
    +};
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/reference/serializer/index.html b/ja/docs/reference/serializer/index.html new file mode 100644 index 00000000..3b5a46e1 --- /dev/null +++ b/ja/docs/reference/serializer/index.html @@ -0,0 +1,55 @@ +serializer.hpp | toml11 + +
    serializer.hpp +

    serializer.hpp +#

    format +#

    シリアライズを行います。

    namespace toml
    +{
    +template<typename TC>
    +std::string format(const basic_value<TC>& v,
    +                   const spec s = spec::default_version());
    +template<typename TC>
    +std::string format(const typename basic_value<TC>::key_type& k,
    +                   const basic_value<TC>& v,
    +                   const spec s = spec::default_version());
    +template<typename TC>
    +std::string format(const std::vector<typename basic_value<TC>::key_type>& ks,
    +                   const basic_value<TC>& v,
    +                   const spec s = spec::default_version());
    +}
    +

    フォーマット情報とspecが矛盾する場合、例えばv1.0.0table_format::multiline_onelineが指定されているときなどは、specが優先されます。

    format(v, spec) +#

    toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。

    table_typeだった場合、それがルートであるとしてフォーマットします。 +それ以外の値だった場合、値のみをフォーマットします。

    format(k, v, spec) +#

    toml::valueを、与えられたキーと同時にフォーマットします。

    vはそのキー以下に定義されていると解釈されます。

    format([k,...], v, spec) +#

    vはそのキー以下に定義されていると解釈されます。 +キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。

    serialization_error +#

    シリアライズ中に発生したエラーを報告します。

    namespace toml
    +{
    +struct serialization_error final : public ::toml::exception
    +{
    +  public:
    +    explicit serialization_error(std::string what_arg, source_location loc);
    +    ~serialization_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +    source_location const& location() const noexcept;
    +};
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/reference/source_location/index.html b/ja/docs/reference/source_location/index.html new file mode 100644 index 00000000..2a27a94a --- /dev/null +++ b/ja/docs/reference/source_location/index.html @@ -0,0 +1,111 @@ +source_location.hpp | toml11 + +
    source_location.hpp +

    source_location.hpp +#

    source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。

    このクラスは、エラーメッセージで問題の箇所を指摘するために使われます。

    toml::source_location +#

    source_locationは、TOMLファイル内のある領域を指すクラスです。

    namespace toml
    +{
    +struct source_location
    +{
    +  public:
    +
    +    explicit source_location(/* implementation-defined */);
    +    ~source_location() = default;
    +    source_location(source_location const&) = default;
    +    source_location(source_location &&)     = default;
    +    source_location& operator=(source_location const&) = default;
    +    source_location& operator=(source_location &&)     = default;
    +
    +    bool        is_ok()  const noexcept;
    +    std::size_t length() const noexcept;
    +
    +    std::size_t first_line_number()   const noexcept;
    +    std::size_t first_column_number() const noexcept;
    +    std::size_t last_line_number()    const noexcept;
    +    std::size_t last_column_number()  const noexcept;
    +
    +    std::string const& file_name()    const noexcept;
    +
    +    std::size_t num_lines()           const noexcept;
    +
    +    std::string const& first_line() const;
    +    std::string const& last_line()  const;
    +
    +    std::vector<std::string> const& lines() const noexcept;
    +};
    +
    +template<typename ... Ts>
    +std::string format_location(const source_location& loc, const std::string& msg, const Ts& ... locs_and_msgs);
    +} //toml
    +

    メンバ関数 +#

    コンストラクタ +#

    explicit source_location(/* implementation-defined */);
    +

    toml::source_locationtoml::parseまたは_tomlリテラル以外で構築することはできません。

    is_ok() +#

    bool is_ok() const noexcept;
    +

    source_locationが有効な値を保持している場合、trueを、そうでない場合falseを返します。

    toml::parse_tomlリテラル以外から構築したtoml::valuelocation()の結果は、指す対象がないため、is_okfalseを返します。

    length() +#

    std::size_t length() const noexcept;
    +

    source_locationが指す領域の長さを返します。

    有効な値を保持していない場合、0を返します。

    first_line_number() +#

    std::size_t first_line_number() const noexcept;
    +

    source_locationが指す領域の最初の行の行番号を返します。

    有効な値を保持していない場合、1を返します。

    first_column_number() +#

    std::size_t first_column_number() const noexcept;
    +

    source_locationが指す領域の最初の列の列番号を返します。

    有効な値を保持していない場合、1を返します。

    last_line_number() +#

    std::size_t last_line_number() const noexcept;
    +

    source_locationが指す領域の最後の行の行番号を返します。

    有効な値を保持していない場合、1を返します。

    last_column_number() +#

    std::size_t last_column_number() const noexcept;
    +

    source_locationが指す領域の最後の列の列番号を返します。

    有効な値を保持していない場合、1を返します。

    file_name() +#

    std::string const& file_name() const noexcept;
    +

    source_locationが指す領域を含むファイルのファイル名を返します。

    有効な値を保持していない場合、"unknown file"を返します。

    num_lines() +#

    std::size_t num_lines() const noexcept;
    +

    source_locationが指す領域の行数を返します。

    有効な値を保持していない場合、0を返します。

    first_line() +#

    std::string const& first_line() const;
    +

    source_locationが指す領域の最初の行を返します。

    有効な値を保持していない場合、std::out_of_range例外が送出されます。

    last_line() +#

    std::string const& last_line() const;
    +

    source_locationが指す領域の最後の行を返します。

    有効な値を保持していない場合、std::out_of_range例外が送出されます。

    lines() +#

    std::vector<std::string> const& lines() const noexcept;
    +

    source_locationが指す領域の全ての行を返します。

    有効な値を保持していない場合、空のstd::vectorへの参照を返します。

    非メンバ関数 +#

    format_location +#

    template<typename ... Ts>
    +std::string format_location(const source_location& loc, const std::string& msg, const Ts& ... locs_and_msgs);
    +

    source_locationが指す箇所と、それについてのメッセージを以下のようにフォーマットします。

     -> {filename.toml}
    +   |
    + 1 | a = 42
    +   |     ^-- {message}
    +

    この時、色付けがONになっている場合、ANSIエスケープシーケンスによって色情報が追加されます。

    locs_and_msgsが複数個ある場合、それらはconst source_location&const std::string&の順である必要があります。

    例:複数のsource_locationstd::string +#

    複数のsource_locationstd::stringを渡した場合、以下のようにフォーマットされます。

    source_location& loc0;
    +source_location& loc1;
    +source_location& loc2;
    +
    +std::string msg0;
    +std::string msg1;
    +std::string msg2;
    +
    +format_location(loc0, msg0,
    +                loc1, msg1,
    +                loc2, msg2);
    +
     -> {filename0.toml}
    +   |
    + 1 | a = 42
    +   |     ^-- {message0}
    +   |
    + -> {filename1.toml}
    +   |
    + 2 | b = 3.14
    +   |     ^-- {message1}
    +   |
    + -> {filename2.toml}
    +   |
    + 3 | c = "foo"
    +   |     ^-- {message2}
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/spec/index.html b/ja/docs/reference/spec/index.html new file mode 100644 index 00000000..eec15ef0 --- /dev/null +++ b/ja/docs/reference/spec/index.html @@ -0,0 +1,130 @@ +spec.hpp | toml11 + +
    spec.hpp +

    spec.hpp +#

    spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。

    toml::semantic_version +#

    semantic_versionは、バージョン情報を格納するクラスです。

    namespace toml
    +{
    +struct semantic_version
    +{
    +    constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +
    +    std::uint32_t major;
    +    std::uint32_t minor;
    +    std::uint32_t patch;
    +};
    +
    +constexpr semantic_version
    +make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept;
    +
    +constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
    +
    +std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
    +} //toml
    +

    メンバ関数 +#

    コンストラクタ +#

    constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +

    major, minor, patchバージョンを指定して構築します。

    非メンバ関数 +#

    比較演算子 +#

    constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
    +

    semantic versioningに従って比較します。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
    +

    {major}.{minor}.{patch}の形式で出力します。

    to_string +#

    std::string to_string(const semantic_version& ver);
    +

    {major}.{minor}.{patch}の形式で文字列化します。

    toml::spec +#

    specは、TOMLのバージョン情報を格納するクラスです。

    struct spec
    +{
    +    constexpr static spec default_version() noexcept;
    +
    +    constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +
    +    constexpr explicit spec(const semantic_version& semver) noexcept;
    +
    +    semantic_version version; // toml version
    +
    +    // diff from v1.0.0 -> v1.1.0
    +    bool v1_1_0_allow_control_characters_in_comments;
    +    bool v1_1_0_allow_newlines_in_inline_tables;
    +    bool v1_1_0_allow_trailing_comma_in_inline_tables;
    +    bool v1_1_0_allow_non_english_in_bare_keys;
    +    bool v1_1_0_add_escape_sequence_e;
    +    bool v1_1_0_add_escape_sequence_x;
    +    bool v1_1_0_make_seconds_optional;
    +
    +    // library extensions
    +    bool ext_hex_float;  // allow hex float
    +    bool ext_num_suffix; // allow number suffix
    +    bool ext_null_value; // allow null value
    +};
    +

    メンバ関数 +#

    コンストラクタ +#

    constexpr explicit spec(const semantic_version& semver) noexcept;
    +

    指定されたTOMLバージョンでspecを構築します。

    TOML v1.0.0と、TOML v1.1.0に対応しています。

    default_version() +#

    constexpr static spec default_version() noexcept;
    +

    デフォルトのバージョンでspecを構築します。

    toml::parsetoml::formatでのデフォルト値として使われます。

    toml11 v4.0.0での値は、v1.0.0です。

    v(major, minor, patch) +#

    constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +

    指定されたバージョンでspecを構築します。

    メンバ変数 +#

    各フラグは機能追加がされたバージョンを指定されたとき、自動的にtrueになります。

    変更して渡すことで、toml::parsetoml::formatの挙動を変更できます。

    TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。

    実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。

    そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。

    例 +#

    auto spec = toml::spec::v(1, 0, 0);
    +// v1.0.0の機能に追加して、inline table内の改行を許可する。
    +// それ以外のv1.1.0の機能は有効化されない。
    +spec.v1_1_0_allow_newlines_in_inline_tables = true;
    +
    +auto input = toml::parse("input_file.toml", spec);
    +

    v1_1_0_allow_control_characters_in_comments +#

    bool v1_1_0_allow_control_characters_in_comments;
    +

    ほとんどの制御文字をコメントに含むことを許可します。

    toml v1.1.0で追加。

    v1_1_0_allow_newlines_in_inline_tables +#

    bool v1_1_0_allow_newlines_in_inline_tables;
    +

    inline table内で改行することを許可します。

    toml v1.1.0で追加。

    v1_1_0_allow_trailing_comma_in_inline_tables +#

    bool v1_1_0_allow_trailing_comma_in_inline_tables;
    +

    inline table内での末尾コンマを許可します。

    toml v1.1.0で追加。

    v1_1_0_add_escape_sequence_e +#

    bool v1_1_0_add_escape_sequence_e;
    +

    \eでESC文字を指定できるようになります。

    toml v1.1.0で追加。

    v1_1_0_add_escape_sequence_x +#

    bool v1_1_0_add_escape_sequence_x;
    +

    \xHHで1バイトの文字を指定できるようになります。

    toml v1.1.0で追加。

    v1_1_0_make_seconds_optional +#

    bool v1_1_0_make_seconds_optional;
    +

    時刻での秒数指定を省略可能にします。

    指定されなかった秒数は0で初期化されます。

    toml v1.1.0で追加。

    ext_hex_float +#

    bool ext_hex_float;
    +

    toml11限定の言語拡張です。

    どのバージョンを指定しても、falseで初期化されます。 +使用する際は個別にtrueにしてください。

    浮動小数点数の16進数表記を許可します。

    16進数表記はprintf%a/%Aを指定した場合に準拠します。

    hexf = 0xC0FFEEp-10
    +

    toml::format は、渡された toml::specext_hex_formattrue の場合のみ +16進表記でフォーマットします。 +フォーマット情報で hex が指定されているにも関わらず toml::format に渡された +toml::specext_hex_floatfalse だった場合、16進数指定は無視され、 +10進表記で最大の精度で出力されます。

    ext_num_suffix +#

    bool ext_num_suffix;
    +

    toml11限定の言語拡張です。

    どのバージョンを指定しても、falseで初期化されます。 +使用する際は個別にtrueにしてください。

    10進数の整数と浮動小数点数に接尾辞を追加します。型を問わず、16進や8進、2進表記には適用されません。

    数値と接尾辞の間は_で区切られている必要があります。

    数値部分との区別のため、接尾辞は数値で始まることはできません。

    distance = 10_m   # valid
    +distance = 10_2m  # invalid
    +distance = 10_2_m # valid
    +

    接尾辞は std::string suffix としてフォーマット情報に保持されます。 +数値部分とを分ける _suffix に含まれません。

    toml::value distance = toml::find(input, "distance");
    +assert(distance.as_integer_fmt().suffix == std::string("m"));
    +

    toml::format は、渡された toml::specext_num_suffixtrue の場合のみ +これをフォーマットします。

    suffixは以下のような文法を持ちます。

    non-digit-graph = ALPHA / non-ascii
    +graph           = ALPHA / DIGIT / non-ascii
    +suffix          = _ non-digit-graph *( graph / ( _ graph ) )
    +

    ext_null_value +#

    bool ext_null_value;
    +

    toml11限定の言語拡張です。

    値として null を許可します。

    null を指定された toml::value は値を持たず、 is_empty()true になります。

    toml::format は、渡された toml::specext_null_valuetrue の場合のみ +null としてフォーマットします。 +そうでない場合、 toml::format がエラーで終了します。

    \ No newline at end of file diff --git a/ja/docs/reference/toml/index.html b/ja/docs/reference/toml/index.html new file mode 100644 index 00000000..e31ddbf4 --- /dev/null +++ b/ja/docs/reference/toml/index.html @@ -0,0 +1,15 @@ +toml.hpp | toml11 + +
    toml.hpp +

    toml.hpp +#

    toml.hppは、他の全てのヘッダを include します。

    これによって、toml11の全機能が使用可能になります。

    このヘッダファイルと toml_fwd.hpp${TOML11_INCLUDE_DIR}/ 以下に、 +他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。

    \ No newline at end of file diff --git a/ja/docs/reference/toml_fwd/index.html b/ja/docs/reference/toml_fwd/index.html new file mode 100644 index 00000000..db9395e1 --- /dev/null +++ b/ja/docs/reference/toml_fwd/index.html @@ -0,0 +1,19 @@ +toml_fwd.hpp | toml11 + +
    toml_fwd.hpp +

    toml_fwd.hpp +#

    toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。

    toml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 +toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。

    このファイルには前方宣言しか含まれていないため、 +toml::basic_value<toml::type_config>::table_type として定義される +toml::table と、同様に定義される toml::array は使用できません。 +それらには basic_value の実装が必要だからです。

    このヘッダファイルと toml.hpp${TOML11_INCLUDE_DIR}/ 以下に、 +他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。

    \ No newline at end of file diff --git a/ja/docs/reference/types/index.html b/ja/docs/reference/types/index.html new file mode 100644 index 00000000..6879b195 --- /dev/null +++ b/ja/docs/reference/types/index.html @@ -0,0 +1,99 @@ +types.hpp | toml11 + +
    types.hpp +

    types.hpp +#

    型情報を与えるクラスが定義されます。

    type_config +#

    type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。

    toml::basic_value<T>内で異なる型を使用する場合、これを別に定義して渡します。 +記載のある要素は全て必須の要素です。

    通常のストリーム演算子を使用できない数値型を使用する場合、read_intread_floatに相当するものを定義し、置き換えてください。

    namespace toml
    +{
    +struct type_config
    +{
    +    using comment_type  = preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex);
    +};
    +
    +using value = basic_value<type_config>;
    +using table = typename value::table_type;
    +using array = typename value::array_type;
    +
    +} // toml
    +

    static メンバ関数 +#

    parse_int(str, src, base) +#

    static result<integer_type, error_info>
    +parse_int(const std::string& str, const source_location src, const std::uint8_t base);
    +

    通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。

    strには、prefix、(0xなどの場合)leading zero、underscoreが取り除かれた文字列が渡されます。

    srcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。

    baseには、10, 2, 8, 16のいずれかが渡されます。

    parse_float(str, src, is_hex) +#

    static result<floating_type, error_info>
    +parse_float(const std::string& str, const source_location src, const bool is_hex);
    +

    通常のストリーム演算子などを使用できない型をfloating_typeとして使用する場合、この関数を実装してください。

    strには、prefix、leading zero、underscoreが取り除かれた文字列が渡されます。

    srcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。

    is_hexには、フォーマットがhexfloatであるかどうかが渡されます。hexfloat拡張を使用しない場合は使われないので、実装する必要はありません。

    hexfloat拡張に関しては、spec.hppを参照してください。

    非メンバ関数 +#

    read_int +#

    template<typename T>
    +result<T, error_info>
    +read_int(const std::string& str, const source_location src, const std::uint8_t base);
    +

    デフォルトで使用される関数です。std::istringstreamを使用してパースします。

    operator>>std::hex等のマニピュレータ、std::numeric_limits<T>が定義されている場合(boost::multiprecisionなど)、特に変更なしにこれを使用できます。

    read_float +#

    template<typename T>
    +result<T, error_info>
    +read_float(const std::string& str, const source_location src, const bool is_hex);
    +

    デフォルトで使用される関数です。decimalの場合はstd::istringstreamを、hexfloatの場合はsscanf()を使用してパースします。

    doublefloatに対応しています。

    それ以外の型の場合、operator>>が定義されていて、かつhexを使用しないなら、これを使用できます。

    ordered_type_config +#

    ordered_type_configは、toml::type_configのテーブル型をtoml::ordered_mapに変更したものです。 +また、toml::ordered_valueエイリアスを定義します。

    そのほかにtype_configとの違いはありません。

    namespace toml
    +{
    +struct ordered_type_config
    +{
    +    using comment_type  = preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = ordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +    {
    +        return read_int<integer_type>(str, src, base);
    +    }
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex)
    +    {
    +        return read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +
    +using ordered_value = basic_value<ordered_type_config>;
    +using ordered_table = typename ordered_value::table_type;
    +using ordered_array = typename ordered_value::array_type;
    +
    +} // toml
    +
    \ No newline at end of file diff --git a/ja/docs/reference/value/index.html b/ja/docs/reference/value/index.html new file mode 100644 index 00000000..cf32e8e6 --- /dev/null +++ b/ja/docs/reference/value/index.html @@ -0,0 +1,398 @@ +value.hpp | toml11 + +
    value.hpp +

    value.hpp +#

    value.hppでは、basic_valueが定義されます。

    toml::basic_value +#

    basic_valueは、TOMLの値を格納するクラスです。

    namespace toml
    +{
    +template <class TypeConfig>
    +class basic_value;
    +
    +// 以下はtypes.hppで定義される
    +// using value = basic_value<type_config>;
    +// using table = typename basic_value<type_config>::table_type;
    +// using array = typename basic_value<type_config>::array_type;
    +
    +template<typename TC>
    +bool operator==(const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator!=(const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator< (const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator<=(const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator> (const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator>=(const basic_value<TC>&, const basic_value<TC>&);
    +} //toml
    +

    メンバ型 +#

    以下のメンバ型が定義されます。

    TypeConfigを使って、メンバ型を変更することができます。

    参考: types.hpp

    名前定義
    char_typetypename TypeConfig::char_type
    key_typetypename TypeConfig::string_type
    value_typebasic_value<TypeConfig>
    boolean_typetypename TypeConfig::boolean_type
    integer_typetypename TypeConfig::integer_type
    floating_typetypename TypeConfig::floating_type
    string_typetypename TypeConfig::string_type
    local_time_typetoml::local_time
    local_date_typetoml::local_date
    local_datetime_typetoml::local_datetime
    offset_datetime_typetoml::offset_datetime
    array_typetypename TypeConfig::template array_type<value_type>
    table_typetypename TypeConfig::template table_type<key_type, value_type>
    comment_typetypename TypeConfig::comment_type

    メンバ関数 +#

    デフォルトコンストラクタ +#

    basic_value() noexcept
    +

    空のtoml::valueを構築します。

    構築されたtoml::valueは空になります。

    コピー・ムーブコンストラクタ +#

    basic_value(const basic_value& v)
    +basic_value(basic_value&& v)
    +

    値、フォーマット情報、コメント、ファイル領域の全ての情報をコピー・ムーブします。

    コピー・ムーブコンストラクタ(コメント指定) +#

    basic_value(basic_value v, std::vector<std::string> com)
    +

    コメントを上書きしながらコピー・ムーブします。

    変換コンストラクタ +#

    template<typename TI>
    +basic_value(basic_value<TI> other)
    +template<typename TI>
    +basic_value(basic_value<TI> other, std::vector<std::string> com)
    +

    異なるtype_configを持つbasic_valueからコピー・ムーブします。

    コンストラクタ (boolean) +#

    basic_value(boolean_type x)
    +basic_value(boolean_type x, boolean_format_info fmt)
    +basic_value(boolean_type x, std::vector<std::string> com)
    +basic_value(boolean_type x, boolean_format_info fmt, std::vector<std::string> com)
    +

    boolと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ (integer) +#

    basic_value(integer_type x)
    +basic_value(integer_type x, integer_format_info fmt)
    +basic_value(integer_type x, std::vector<std::string> com)
    +basic_value(integer_type x, integer_format_info fmt, std::vector<std::string> com)
    +

    integerと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(floating) +#

    template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x)
    +template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x, floating_format_info fmt)
    +template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x, std::vector<std::string> com)
    +template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x, floating_format_info fmt, std::vector<std::string> com)
    +

    floatingと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(string) +#

    basic_value(string_type x)
    +basic_value(string_type x, string_format_info fmt)
    +basic_value(string_type x, std::vector<std::string> com)
    +basic_value(string_type x, string_format_info fmt, std::vector<std::string> com)
    +
    +basic_value(const string_type::value_type* x)
    +basic_value(const string_type::value_type* x, string_format_info fmt)
    +basic_value(const string_type::value_type* x, std::vector<std::string> com)
    +basic_value(const string_type::value_type* x, string_format_info fmt, std::vector<std::string> com)
    +
    +// C++17以降
    +basic_value(string_view_type x)
    +basic_value(string_view_type x, string_format_info fmt)
    +basic_value(string_view_type x, std::vector<std::string> com)
    +basic_value(string_view_type x, string_format_info fmt, std::vector<std::string> com)
    +

    stringと、そのフォーマット情報、コメントを受け取って構築します。

    string_view_typeは、string_typeと同じvalue_typetraits_typeを持ちます。

    コンストラクタ(local_date) +#

    basic_value(local_date_type x)
    +basic_value(local_date_type x, local_date_format_info fmt)
    +basic_value(local_date_type x, std::vector<std::string> com)
    +basic_value(local_date_type x, local_date_format_info fmt, std::vector<std::string> com)
    +

    local_date_typeと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(local_time) +#

    basic_value(local_time_type x)
    +basic_value(local_time_type x, local_time_format_info fmt)
    +basic_value(local_time_type x, std::vector<std::string> com)
    +basic_value(local_time_type x, local_time_format_info fmt, std::vector<std::string> com)
    +
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x)
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt)
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x, std::vector<std::string> com)
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt, std::vector<std::string> com)
    +

    local_time_typeと、そのフォーマット情報、コメントを受け取って構築します。

    std::chrono::durationは、00:00:00からの時間幅として構築します。

    コンストラクタ(local_datetime) +#

    basic_value(local_datetime_type x)
    +basic_value(local_datetime_type x, local_date_format_info fmt)
    +basic_value(local_datetime_type x, std::vector<std::string> com)
    +basic_value(local_datetime_type x, local_date_format_info fmt, std::vector<std::string> com)
    +

    local_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(offset_datetime) +#

    basic_value(offset_datetime_type x)
    +basic_value(offset_datetime_type x, offset_date_format_info fmt)
    +basic_value(offset_datetime_type x, std::vector<std::string> com)
    +basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector<std::string> com)
    +
    +basic_value(std::chrono::system_clock::time_point x)
    +basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt)
    +basic_value(std::chrono::system_clock::time_point x, std::vector<std::string> com)
    +basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector<std::string> com)
    +

    offset_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。

    std::chrono::system_clock::time_pointの場合、それが指す時点として構築します。

    コンストラクタ(array) +#

    basic_value(array_type x)
    +basic_value(array_type x, integer_format_info fmt)
    +basic_value(array_type x, std::vector<std::string> com)
    +basic_value(array_type x, integer_format_info fmt, std::vector<std::string> com)
    +
    +template<typename T, /* T is array-like */>
    +basic_value(T x)
    +template<typename T, /* T is array-like */>
    +basic_value(T x, array_format_info fmt)
    +template<typename T, /* T is array-like */>
    +basic_value(T x, std::vector<std::string> com)
    +template<typename T, /* T is array-like */>
    +basic_value(T x, array_format_info fmt, std::vector<std::string> com)
    +

    arrayと、そのフォーマット情報、コメントを受け取って構築します。

    array-likeは、以下の条件を満たす型です。

    • T::iterator を持つ。
    • T::value_type を持つ。
    • T::key_type を持たない
    • T::mapped_type を持たない
    • std::string ではない
    • std::string_view ではない。(C++17以降)

    コンストラクタ(table) +#

    basic_value(table_type x)
    +basic_value(table_type x, integer_format_info fmt)
    +basic_value(table_type x, std::vector<std::string> com)
    +basic_value(table_type x, integer_format_info fmt, std::vector<std::string> com)
    +
    +template<typename T, /* T is table-like */>
    +basic_value(T x)
    +template<typename T, /* T is table-like */>
    +basic_value(T x, table_format_info fmt)
    +template<typename T, /* T is table-like */>
    +basic_value(T x, std::vector<std::string> com)
    +template<typename T, /* T is table-like */>
    +basic_value(T x, table_format_info fmt, std::vector<std::string> com)
    +

    tableと、そのフォーマット情報、コメントを受け取って構築します。

    table-likeは、以下の条件を満たす型です。

    • T::iterator を持つ。
    • T::value_type を持つ。
    • T::key_type を持つ。
    • T::mapped_type を持つ。

    コンストラクタ(user-defined) +#

    template<typename T /* toml::into<T>が定義されていること */>
    +basic_value(const T& ud);
    +
    +template<typename T /* toml::into<T>が定義されていること */>
    +basic_value(const T& ud, std::vector<std::string> com);
    +
    +template<typename T /* into<T>は定義されておらず、T{}.into_toml()が存在すること */>
    +basic_value(const T& ud);
    +
    +template<typename T /* into<T>は定義されておらず、T{}.into_toml()が存在すること */>
    +basic_value(const T& ud, std::vector<std::string> com);
    +

    toml::into<T> が定義されていた場合、 toml::into<T>(ud) の結果から構築します。

    toml::into<T> が定義されておらず、 Tinto_toml() メンバ関数が定義されていた場合、 +ud.into_toml()の結果から構築します。


    operator=(basic_value) +#

    basic_value& operator=(const basic_value& v)
    +basic_value& operator=(basic_value&& v)
    +template<typename TI>
    +basic_value& operator=(basic_value<TI> other)
    +

    右辺のbasic_valueを代入します。

    operator=(T) +#

    template<typename T>
    +basic_value& operator=(T x)
    +

    Tに対応する値を代入します。

    source_locationの指す内容は破棄されます。

    もし同じ型の値を持っていたなら、元のフォーマット情報が保持されます。


    is<T>() +#

    bool is<T>() const noexcept
    +

    条件 +#

    Tは厳密にTOML型であること。つまり、値に対応するtoml::value::xxx_typeのいずれかであること。

    戻り値 +#

    格納している型がTと一致した場合trueを、そうでない場合はfalseを返します。


    is(toml::value_t) +#

    bool is(toml::value_t t) const noexcept
    +

    戻り値 +#

    格納している型のタグがtと一致した場合trueを、そうでない場合はfalseを返します。


    is_xxx() +#

    bool is_boolean()         const noexcept;
    +bool is_integer()         const noexcept;
    +bool is_floating()        const noexcept;
    +bool is_string()          const noexcept;
    +bool is_offset_datetime() const noexcept;
    +bool is_local_datetime()  const noexcept;
    +bool is_local_date()      const noexcept;
    +bool is_local_time()      const noexcept;
    +bool is_array()           const noexcept;
    +bool is_table()           const noexcept;
    +

    戻り値 +#

    格納している型がその型である場合trueを、そうでない場合はfalseを返します。


    is_empty() +#

    bool is_empty()   const noexcept;
    +

    戻り値 +#

    デフォルト構築され値が代入されていない場合trueを、そうでない場合はfalseを返します。

    is_array_of_tables() +#

    bool is_array_of_tables() const noexcept;
    +

    戻り値 +#

    格納している型が配列であり、空ではなく、全要素がテーブルの場合はtrueを、そうでない場合はfalseを返します。


    type() +#

    toml::value_t type() const noexcept
    +

    戻り値 +#

    格納している型に対応するタグを返します。


    as_xxx() +#

    boolean_type         const& as_boolean        () const;
    +integer_type         const& as_integer        () const;
    +floating_type        const& as_floating       () const;
    +string_type          const& as_string         () const;
    +offset_datetime_type const& as_offset_datetime() const;
    +local_datetime_type  const& as_local_datetime () const;
    +local_date_type      const& as_local_date     () const;
    +local_time_type      const& as_local_time     () const;
    +array_type           const& as_array          () const;
    +table_type           const& as_table          () const;
    +
    +boolean_type        & as_boolean        ();
    +integer_type        & as_integer        ();
    +floating_type       & as_floating       ();
    +string_type         & as_string         ();
    +offset_datetime_type& as_offset_datetime();
    +local_datetime_type & as_local_datetime ();
    +local_date_type     & as_local_date     ();
    +local_time_type     & as_local_time     ();
    +array_type          & as_array          ();
    +table_type          & as_table          ();
    +

    戻り値 +#

    指定された型への参照を返します。

    例外 +#

    格納されている値の型が指定と異なる場合、toml::type_errorを送出します。


    as_xxx(std::nothrow) +#

    std::nothrowオブジェクトを渡して呼び出します。

    boolean_type         const& as_boolean        (const std::nothrow_t&) const noexcept;
    +integer_type         const& as_integer        (const std::nothrow_t&) const noexcept;
    +floating_type        const& as_floating       (const std::nothrow_t&) const noexcept;
    +string_type          const& as_string         (const std::nothrow_t&) const noexcept;
    +offset_datetime_type const& as_offset_datetime(const std::nothrow_t&) const noexcept;
    +local_datetime_type  const& as_local_datetime (const std::nothrow_t&) const noexcept;
    +local_date_type      const& as_local_date     (const std::nothrow_t&) const noexcept;
    +local_time_type      const& as_local_time     (const std::nothrow_t&) const noexcept;
    +array_type           const& as_array          (const std::nothrow_t&) const noexcept;
    +table_type           const& as_table          (const std::nothrow_t&) const noexcept;
    +
    +boolean_type        & as_boolean        (const std::nothrow_t&) noexcept;
    +integer_type        & as_integer        (const std::nothrow_t&) noexcept;
    +floating_type       & as_floating       (const std::nothrow_t&) noexcept;
    +string_type         & as_string         (const std::nothrow_t&) noexcept;
    +offset_datetime_type& as_offset_datetime(const std::nothrow_t&) noexcept;
    +local_datetime_type & as_local_datetime (const std::nothrow_t&) noexcept;
    +local_date_type     & as_local_date     (const std::nothrow_t&) noexcept;
    +local_time_type     & as_local_time     (const std::nothrow_t&) noexcept;
    +array_type          & as_array          (const std::nothrow_t&) noexcept;
    +table_type          & as_table          (const std::nothrow_t&) noexcept;
    +

    戻り値 +#

    指定された型への参照を返します。

    備考 +#

    格納されている値の型が指定と異なる場合、未定義動作となります。


    as_xxx_fmt() +#

    フォーマット情報にアクセスします。

    boolean_format_info        & as_boolean_fmt        ();
    +integer_format_info        & as_integer_fmt        ();
    +floating_format_info       & as_floating_fmt       ();
    +string_format_info         & as_string_fmt         ();
    +offset_datetime_format_info& as_offset_datetime_fmt();
    +local_datetime_format_info & as_local_datetime_fmt ();
    +local_date_format_info     & as_local_date_fmt     ();
    +local_time_format_info     & as_local_time_fmt     ();
    +array_format_info          & as_array_fmt          ();
    +table_format_info          & as_table_fmt          ();
    +
    +boolean_format_info         const& as_boolean_fmt        () const;
    +integer_format_info         const& as_integer_fmt        () const;
    +floating_format_info        const& as_floating_fmt       () const;
    +string_format_info          const& as_string_fmt         () const;
    +offset_datetime_format_info const& as_offset_datetime_fmt() const;
    +local_datetime_format_info  const& as_local_datetime_fmt () const;
    +local_date_format_info      const& as_local_date_fmt     () const;
    +local_time_format_info      const& as_local_time_fmt     () const;
    +array_format_info           const& as_array_fmt          () const;
    +table_format_info           const& as_table_fmt          () const;
    +

    戻り値 +#

    指定された型のフォーマット情報を持つ構造体への参照を返します。

    例外 +#

    格納されている値の型が指定と異なる場合、toml::type_errorを送出します。


    as_xxx_fmt(std::nothrow) +#

    std::nothrowオブジェクトを渡して呼び出します。

    boolean_format_info        & as_boolean_fmt        (const std::nothrow_t&) noexcept;
    +integer_format_info        & as_integer_fmt        (const std::nothrow_t&) noexcept;
    +floating_format_info       & as_floating_fmt       (const std::nothrow_t&) noexcept;
    +string_format_info         & as_string_fmt         (const std::nothrow_t&) noexcept;
    +offset_datetime_format_info& as_offset_datetime_fmt(const std::nothrow_t&) noexcept;
    +local_datetime_format_info & as_local_datetime_fmt (const std::nothrow_t&) noexcept;
    +local_date_format_info     & as_local_date_fmt     (const std::nothrow_t&) noexcept;
    +local_time_format_info     & as_local_time_fmt     (const std::nothrow_t&) noexcept;
    +array_format_info          & as_array_fmt          (const std::nothrow_t&) noexcept;
    +table_format_info          & as_table_fmt          (const std::nothrow_t&) noexcept;
    +
    +boolean_format_info         const& as_boolean_fmt        (const std::nothrow_t&) const noexcept;
    +integer_format_info         const& as_integer_fmt        (const std::nothrow_t&) const noexcept;
    +floating_format_info        const& as_floating_fmt       (const std::nothrow_t&) const noexcept;
    +string_format_info          const& as_string_fmt         (const std::nothrow_t&) const noexcept;
    +offset_datetime_format_info const& as_offset_datetime_fmt(const std::nothrow_t&) const noexcept;
    +local_datetime_format_info  const& as_local_datetime_fmt (const std::nothrow_t&) const noexcept;
    +local_date_format_info      const& as_local_date_fmt     (const std::nothrow_t&) const noexcept;
    +local_time_format_info      const& as_local_time_fmt     (const std::nothrow_t&) const noexcept;
    +array_format_info           const& as_array_fmt          (const std::nothrow_t&) const noexcept;
    +table_format_info           const& as_table_fmt          (const std::nothrow_t&) const noexcept;
    +

    戻り値 +#

    指定された型のフォーマット情報を持つ構造体への参照を返します。

    備考 +#

    格納されている値の型が指定と異なる場合、未定義動作となります。


    at(key) +#

    value_type&       at(const key_type& key);
    +value_type const& at(const key_type& key) const;
    +

    戻り値 +#

    今のvaluetableにキャストしたあと、keyによって指定される要素を返します。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。

    もし格納しているtableが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。


    operator[](key) +#

    value_type& operator[](const key_type& k);
    +
    戻り値 +#

    今のvaluetableにキャストしたあと、keyによって指定される要素への参照です。

    もしkeyによって指定される要素が存在しない場合、デフォルト構築されます。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。


    count(key) +#

    std::size_t count(const key_type& key) const;
    +

    戻り値 +#

    今のvaluetableにキャストしたあと、keyに対応する要素が含まれていれば1、そうでなければ0を返します。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。


    contains(key) +#

    bool contains(const key_type& key) const;
    +

    戻り値 +#

    今のvaluetableにキャストしたあと、keyに対応する要素が含まれていればtrue、そうでなければfalseを返します。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。


    at(idx) +#

    value_type&       at(const std::size_t idx);
    +value_type const& at(const std::size_t idx) const;
    +

    戻り値 +#

    今のvaluearrayにキャストしたあと、idxによって指定される要素を返します。

    例外 +#

    もし格納している値がarrayではなかった場合、toml::type_errorを送出します。

    もし格納しているarrayが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。


    operator[](idx) +#

    value_type&       operator[](const std::size_t idx)       noexcept;
    +value_type const& operator[](const std::size_t idx) const noexcept;
    +

    戻り値 +#

    今のvaluearrayにキャストしたあと、idxによって指定される要素への参照を返します。

    備考 +#

    一切のチェックを行いません。

    もし格納している値がarrayではなかった場合、あるいはidxによって指定される要素が存在しない場合、未定義動作となります。


    push_back(value) +#

    void push_back(const value_type& x);
    +void push_back(value_type&& x);
    +

    valuearrayにキャストしたのち、そのarrayに対してpush_backを実行します。

    戻り値 +#

    なし。

    例外 +#

    格納している値がarrayではなかった場合、toml::type_errorを送出します。


    emplace_back(args...) +#

    template<typename ... Ts>
    +value_type& emplace_back(Ts&& ... args)
    +

    valuearrayにキャストしたのち、そのarrayに対してemplace_backを実行します。

    戻り値 +#

    構築した値への参照。

    例外 +#

    格納している値がarrayではなかった場合、toml::type_errorを送出します。


    size() +#

    std::size_t size() const;
    +

    戻り値 +#

    今のvaluearraystringtableのどれかにキャストしたあと、その要素数を返します。 +stringの場合、文字数を返します。

    例外 +#

    格納している値がarray, string, tableのどれでもなかった場合、toml::type_errorを送出します。


    location() +#

    source_location location() const;
    +

    戻り値 +#

    そのvalueが定義されたTOML文書内の位置を表すsource_locationオブジェクトを返します。

    もしTOML文書のパースによって構築されたものでない場合、どこも指示さないsource_locationを返します。


    comments() +#

    comment_type const& comments() const noexcept;
    +comment_type&       comments()       noexcept;
    +

    戻り値 +#

    コメント用コンテナへの参照を返します。

    非メンバ関数 +#

    operator== +#

    template<typename TC>
    +bool operator==(const basic_value<TC>&, const basic_value<TC>&);
    +

    以下を満たすとき、2つのbasic_value<T>は同値となります。

    • TOML型が同一
    • 含む値が同一
    • コメントがバイト単位で同一

    operator!= +#

    template<typename TC>
    +bool operator!=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return !(lhs == rhs);
    +}
    +

    operator< +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator<(const basic_value<TC>&, const basic_value<TC>&);
    +

    以下の順番で比較されます。

    1. TOML型
    2. TOML型が同一の場合、その値
    3. TOML型とその値が同一の場合、コメント

    TOML型は、以下の順に小さい値を持ちます。

    1. toml::value_t::empty
    2. toml::value_t::boolean
    3. toml::value_t::integer
    4. toml::value_t::floating
    5. toml::value_t::string
    6. toml::value_t::offset_datetime
    7. toml::value_t::local_datetime
    8. toml::value_t::local_date
    9. toml::value_t::local_time
    10. toml::value_t::array
    11. toml::value_t::table

    operator<= +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator<=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return (lhs < rhs) || (lhs == rhs);
    +}
    +

    operator> +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator>(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return !(lhs <= rhs);
    +}
    +

    operator>= +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator>=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return !(lhs < rhs);
    +}
    +

    toml::type_error +#

    型エラーの際に送出される例外です。

    型エラーが生じた値の位置情報が格納されています。

    struct type_error final : public ::toml::exception
    +{
    +  public:
    +    type_error(std::string what_arg, source_location loc);
    +    ~type_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +
    +    source_location const& location() const noexcept;
    +};
    +

    toml::make_error_info +#

    template<typename TC, typename ... Ts>
    +error_info make_error_info(
    +    std::string title, const basic_value<TC>& v, std::string msg, Ts&& ... tail);
    +

    basic_valuelocation() を呼び出して、その source_location を +make_error_info +に渡して error_info を作成します。

    詳しくは error_info を参照してください。

    toml::format_error +#

    template<typename TC, typename ... Ts>
    +std::string format_error(std::string title,
    +                         const basic_value<TC>& v, std::string msg, Ts&& ... tail);
    +

    basic_valuelocation() を呼び出して、その source_location を +format_error +に渡して error_info を作成し、それを文字列化して返します。

    詳しくは error_info を参照してください。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/value_t/index.html b/ja/docs/reference/value_t/index.html new file mode 100644 index 00000000..fd5644c8 --- /dev/null +++ b/ja/docs/reference/value_t/index.html @@ -0,0 +1,40 @@ +value_t.hpp | toml11 + +
    value_t.hpp +

    value_t.hpp +#

    型情報を表す列挙型です。

    value_t +#

    value_tは、toml::valueが持つ型情報を扱う際に使用します。

    namespace toml
    +{
    +enum class value_t : std::uint8_t
    +{
    +    empty           =  0,
    +    boolean         =  1,
    +    integer         =  2,
    +    floating        =  3,
    +    string          =  4,
    +    offset_datetime =  5,
    +    local_datetime  =  6,
    +    local_date      =  7,
    +    local_time      =  8,
    +    array           =  9,
    +    table           = 10
    +};
    +
    +std::ostream& operator<<(std::ostream& os, value_t t);
    +std::string to_string(value_t t);
    +} // toml
    +

    非メンバ関数 +#

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, value_t t);
    +

    value_tの値を文字列化してストリームへ出力します。

    to_string +#

    std::string to_string(value_t t);
    +

    value_tの値を文字列化して返します。

    \ No newline at end of file diff --git a/ja/docs/reference/version/index.html b/ja/docs/reference/version/index.html new file mode 100644 index 00000000..b17d17bd --- /dev/null +++ b/ja/docs/reference/version/index.html @@ -0,0 +1,30 @@ +version.hpp | toml11 + +
    version.hpp +

    version.hpp +#

    version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。

    マクロ +#

    TOML11_VERSION_MAJOR +#

    toml11のメジャーバージョンです。

    TOML11_VERSION_MINOR +#

    toml11のマイナーバージョンです。

    TOML11_VERSION_PATCH +#

    toml11のパッチバージョンです。

    関数 +#

    license_notice +#

    namespace toml
    +{
    +const char* license_notice() noexcept;
    +}
    +

    ライセンス条項を返します。

    ソースコードを公開せずに頒布する際の利便性のために用意されています。

    \ No newline at end of file diff --git a/ja/docs/reference/visit/index.html b/ja/docs/reference/visit/index.html new file mode 100644 index 00000000..d38e3e45 --- /dev/null +++ b/ja/docs/reference/visit/index.html @@ -0,0 +1,60 @@ +visit.hpp | toml11 + +
    visit.hpp +

    visit.hpp +#

    visit.hppでは、toml::visitが定義されます。

    toml::visit +#

    関数 +#

    namespace toml
    +{
    +template<typename Visitor, typename TC>
    +/* Visitor を basic_value<TC>の値で呼び出した際の返り値 */
    +visit(Visitor&& visitor, const basic_value<TC>& v);
    +
    +template<typename Visitor, typename TC>
    +/* Visitor を basic_value<TC>の値で呼び出した際の返り値 */
    +visit(Visitor&& visitor, basic_value<TC>& v)
    +
    +template<typename Visitor, typename TC>
    +/* Visitor を basic_value<TC>の値で呼び出した際の返り値 */
    +visit(Visitor&& visitor, basic_value<TC>&& v)
    +}
    +

    basic_value<TC>が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。

    条件 +#

    Visitorは、basic_value<TC>が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。

    また、それぞれのオーバーロードで返り値は同じであることが要求されます。

    例 +#

    #include <toml.hpp>
    +#include <iostream>
    +
    +struct type_name_of
    +{
    +    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
    +    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
    +    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
    +    std::string operator()(const toml::value::string_type         &) const {return "string";}
    +    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
    +    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
    +    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
    +    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
    +    std::string operator()(const toml::value::array_type          &) const {return "array";}
    +    std::string operator()(const toml::value::table_type          &) const {return "table";}
    +};
    +
    +int main()
    +{
    +    toml::value v(3.14);
    +    std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
    +    return 0;
    +}
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/index.html b/ja/index.html new file mode 100644 index 00000000..2f396bfa --- /dev/null +++ b/ja/index.html @@ -0,0 +1,22 @@ +Introduction | toml11 + +
    Introduction +

    Introduction +#

    English version is here

    Installation +#

    toml11のインストール方法について説明します。

    Features +#

    toml11の機能と使い方を例に沿って説明します。

    Reference +#

    toml11が持つ関数・クラスの詳細を説明します。

    ChangeLog +#

    v3系から、そしてリリースごとの変化を説明します。

    \ No newline at end of file diff --git a/ja/index.xml b/ja/index.xml new file mode 100644 index 00000000..d472266b --- /dev/null +++ b/ja/index.xml @@ -0,0 +1,155 @@ +Introduction on toml11https://toruniina.github.io/toml11/ja/Recent content in Introduction on toml11Hugojaparsing fileshttps://toruniina.github.io/toml11/ja/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/parsing_files/ファイル・文字列をパースする # toml11では、toml::parse や toml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。 +これらは成功時に toml::value を返します。 ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 toml::value はファイルに関するメタデータを持っており、 toml::table は std::unordered_map&lt;std::stirng, toml::value&gt; のエイリアスでしかありません。 メタデータを返すために、 toml::table ではなく toml::value を返しています。 ファイルのルートに対応する toml::value は常に table_type を持ちます。 +ファイルをパースする # ファイルをパースする際は、 toml::parse または toml::try_parse を使います。 +toml::parse # std::stringでファイル名を指定する # toml::parse は、文字列でファイル名を受け取り、そのファイルを開いてパースします。 +以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。 +#include &lt;toml.hpp&gt; #include &lt;iostream&gt; int main() { const toml::value input = toml::parse(&#34;input.toml&#34;); std::cout &lt;&lt; input.at(&#34;title&#34;).as_string() &lt;&lt; std::endl; return 0; } std::filesystem::pathでファイルを指定する # toml::parse には、std::filesystem::pathを渡すことも可能です。 +当然ですが、&lt;filesystem&gt;がサポートされるC++17以降でなければ使用できません。 +std::istreamで入力ストリームを指定する # toml::parse には、std::istreamを渡すことも可能です。getting valueshttps://toruniina.github.io/toml11/ja/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/value/値を取り出す # ここでは、 toml::value が格納している値にアクセスする方法を説明します。 +メンバ関数を使って値にアクセスする # is_something と as_something # toml::value は is_boolean() や is_integer() などのメンバ関数を持っており、 これらを使うと持っている型を調べることができます。 +また、 as_boolean(), as_integer() などのメンバ関数も持っており、 これらを使ってその型にアクセスすることができます。 +完全なリストは toml::value のリファレンス を参照してください。 +toml::value v = /* ... */; if(v.is_integer()) { std::cout &lt;&lt; v.as_integer() &lt;&lt; std::endl; } 指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。 +その what() は以下のようなメッセージを含みます。 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # 型情報は enum class toml::value_t で識別できます。error messagehttps://toruniina.github.io/toml11/ja/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/error_message/エラーメッセージを出力する # toml11は toml::parse や toml::get&lt;T&gt;/find&lt;T&gt;, as_integer() などから ファイル内の位置情報を含んだエラーメッセージを出力します。 +例えば、パース時に整数の文法エラーを発見した場合、 +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 あるいは実際に格納されている型と異なる型を要求した場合 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。serializing valueshttps://toruniina.github.io/toml11/ja/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/serialize/TOMLファイルを出力する # toml::format を使うと、 toml::value を文字列にすることができます。 +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。 +もし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。 +一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 例えば、 toml::array_format::array_of_tables は [[array.of.tables]] の形でフォーマットするので、 キーへのアクセスを要求します。 +キーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。 +他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 string_format::literal が指定された文字列が改行を含んでいる場合などです。 +フォーマットの指定方法は後述します。 +キーを渡して出力する # toml::format には std::string としてキーを渡すことが可能です。configuring typeshttps://toruniina.github.io/toml11/ja/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/configure_types/型をカスタマイズする # toml::value は integer_type として std::int64_t を、 table_type として std::unordered_map&lt;key_type, value_type&gt; を使用します。 +しかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。 +そのため、 toml::value は template 引数を取って格納する型を変えられるように実装されています。 +std::string が実際には std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt; の エイリアスであるように、 toml::value は実際には toml::basic_value&lt;toml::type_config&gt; のエイリアスです。 +ここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。 +type_config # type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; } toml::basic_value&lt;TypeConfig&gt; は、格納する boolean_type を TypeConfig::boolean_type、 格納する integer_type を TypeConfig::integer_type 、のようにして定義しています。toml literalhttps://toruniina.github.io/toml11/ja/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/literal/_tomlリテラル # &quot;&quot;_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } 改行を含む場合、生文字列リテラルが便利です。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } 値が単体で書かれていた場合、その値が返されます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto a = &#34;42&#34;_toml; const auto b = &#34;12:34:56&#34;_toml; assert(v.toml spechttps://toruniina.github.io/toml11/ja/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/toml_spec/TOML言語バージョン # toml::spec によって、 toml::parse や toml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。 +TOMLのバージョンを指定する # toml::spec は toml::semantic_version から構築できます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } ですがこれは長いので、toml::spec::v()関数が用意されています。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } 特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。 +デフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。 +v4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。 +TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。 +実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。 +そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。 +バージョン指定でパースする # toml::parse のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。 +これによって、使用するTOMLバージョンを変更できます。 +#include &lt;toml.hpp&gt; int main() { toml::value input = toml::parse(&#34;input.toml&#34;, toml::spec::v(1, 1, 0)); return 0; } バージョン指定でシリアライズする # toml::format のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。extensionhttps://toruniina.github.io/toml11/ja/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/extension/TOML言語拡張 # TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 v1.1.0に向けて議論が続いています。 +そこで議論された機能の中には、有用なケースが少ないと考えられたものや、 提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。 +toml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また サポートされる予定もないことに注意してください。 +また、これらの機能はデフォルトで使用されない設定になっており、 使用するためには機能フラグをそれぞれ true にしなければなりません。 非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。 +いくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は 本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。 +null # TOMLファイル内で値としてnullを使えるようになります。 +a = null b = [ 1, 2, 3, null, 5] これを使用するには、 toml::spec の ext_null_value を true にします。 +パースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 ただし、ファイル内の位置情報は設定されます。 +null は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り &quot;null&quot; という文字列のキーとして解釈されます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(&#34;a = null&#34;, spec); assert(v.at(&#34;a&#34;).is_empty()); assert(v.color.hpphttps://toruniina.github.io/toml11/ja/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/color/color.hpp # color.hppでは、エラーメッセージの色付けに関する関数が定義されます。 +色はANSIエスケープシーケンスによって指定されます。 ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。 +マクロ # TOML11_COLORIZE_ERROR_MESSAGE コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 デフォルトでエラーメッセージに色が付きます。 +定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を 使用して指定する必要があります。 +関数 # enable() # namespace toml { namespace color { void enable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行うよう設定します。 +例 # #include &lt;toml.hpp&gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(&#34;input.toml&#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行わないよう設定します。 +例 # #include &lt;toml.comments.hpphttps://toruniina.github.io/toml11/ja/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/comments/comments.hpp # color.hppでは、コメントを保持するクラスが提供されます。 +toml::preserve_comments # preserve_commentsは、コメントを保持するコンテナです。 +std::vector&lt;std::string&gt;が持つメンバ関数を全て持っています。 +コメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。 +namespace toml { class preserve_comments; bool operator==(const preserve_comments&amp;, const preserve_comments&amp;); bool operator!=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt;=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt;=(const preserve_comments&amp;, const preserve_comments&amp;); void swap(preserve_comments&amp;, preserve_comments&amp;); void swap(preserve_comments&amp;, std::vector&lt;std::string&gt;&amp;); void swap(std::vector&lt;std::string&gt;&amp;, preserve_comments&amp;); std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const preserve_comments&amp;); } //toml メンバ型 # using container_type = std::vector&lt;std::string&gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; メンバ関数 # デフォルトコンストラクタ # preserve_comments() = default; 空のpreserve_commentsを構築します。conversion.hpphttps://toruniina.github.io/toml11/ja/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/conversion/ conversion.hpp # toml::getやtoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。 +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) 例 # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) 関連項目 # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/ja/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/datetime/datetime.hpp # TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。 +enum class month_t # 月を指定するenum classです。 +std::tmとの関係で、local_dateは1月を0としています。 混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。 +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # 日付を保持する構造体です。 +yearは西暦を、monthはstd::tmとの対応のため1月を0として、dayは日付を保持します。 +namespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const&amp;) = default; local_date(local_date&amp;&amp;) = default; local_date&amp; operator=(local_date const&amp;) = default; local_date&amp; operator=(local_date&amp;&amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm&amp; t); explicit local_date(const std::chrono::system_clock::time_point&amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date&amp;, const local_date&amp;); bool operator!error_info.hpphttps://toruniina.github.io/toml11/ja/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/error_info/error_info.hpp # error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。 +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename ... Ts&gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts&amp;&amp; .exception.hpphttps://toruniina.github.io/toml11/ja/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/exception/exception.hpp # toml::exception # toml11で定義される例外型の基底クラスです。 +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml メンバ関数 # デストラクタ # virtual ~exception() noexcept override = default; 派生する際に上書きします。 +what # virtual const char* what() const noexcept override {return &#34;&#34;;} エラーメッセージを返します。派生する際に上書きします。find.hpphttps://toruniina.github.io/toml11/ja/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/find/find.hpp # toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::find # 概要 # toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。 +template&lt;typename T, typename TC, typename ... Keys&gt; T find(const basic_value&lt;TC&gt;&amp; v, Keys ... keys); サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。 +T が指定されなかった場合、 toml::value が返されます。 +キーは、 toml::value::key_type または std::size_t です。 複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。 +再帰的な検索に関しての注意 # TOMLには通常の bare key の他に、 &quot; や ' で囲まれた quoted key というものがあります。 quoted key を使うと、 &quot;foo.format.hpphttps://toruniina.github.io/toml11/ja/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/format/format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。 +indent_char # インデント情報を表す列挙体です。 +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。 +シリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。 +boolean_format_info # booleanのフォーマット情報です。 +struct boolean_format_info {}; bool operator==(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; bool operator!=(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。 +integer_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。from.hpphttps://toruniina.github.io/toml11/ja/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/from/ from.hpp # toml::getやtoml::findで使用する、toml::valueからの変換を定義する構造体です。 +メンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct from; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.hpp&gt; namespace toml { template&lt;&gt; struct from&lt;extlib::foo&gt; { template&lt;typename TC&gt; static extlib::foo from_toml(const toml::basic_value&lt;TC&gt;&amp; v) { return extlib::foo{toml::find&lt;int&gt;(v, &#34;a&#34;), toml::find&lt;std::string&gt;(v, &#34;b&#34;)}; } }; } // toml 関連項目 # conversion.hpp into.hppget.hpphttps://toruniina.github.io/toml11/ja/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/get/get.hpp # toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::get&lt;T&gt; # 概要 # 基本的に、toml::getは以下のような関数として振る舞います。 Tはtoml::get&lt;int&gt;(v)のようにして与えます。 +template&lt;typename T, typename TC&gt; T get(const basic_value&lt;TC&gt;&amp; v); ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。 +Tの型の種類は、 +変換が必要ない型 変換する必要がある型 に分けられます。 +細かい条件と、特別にサポートしている具体的な型については後述します。 +変換が必要ない型 # 変換が必要ないのは、渡された toml::value が格納している型です。 例えば、 toml::value::integer_type は std::int64_t のエイリアスなので、 toml::get&lt;std::int64_t&gt;(v) は変換を必要としません。 この場合、 toml:get は integer の値を toml::value から取り出し、その参照を返します。 +渡されたtoml::valueが可変参照(&amp;)である場合、返す値も可変参照(&amp;)です。 不変参照(const&amp;)の場合、返す値も不変参照(const&amp;)となります。 可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。 +変換が必要な型 # 上記の型以外については変換が必要です。 例えば、toml::value::integer_typeはstd::int64_tのエイリアスなので、toml::get&lt;std::size_t&gt;(toml::value&amp;)は変換が必要です。 この場合、toml:getはintegerの値をtoml::valueから取り出し、それをキャストして返します。 +toml11は簡単なキャストだけでなく、 toml::arrayからやstd::tuple&lt;int, double, std::string&gt;やstd::array&lt;double, 4&gt;、 toml::tableからstd::map&lt;std::string, int&gt;などの複雑な型変換をサポートします。 具体的には、続くセクションを参照してください。into.hpphttps://toruniina.github.io/toml11/ja/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/into/into.hpp # toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。 +メンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct into; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.hpp&gt; namespace toml { template&lt;&gt; struct into&lt;extlib::foo&gt; { template&lt;typename TC&gt; static toml::basic_value&lt;TC&gt; into_toml(const extlib::foo&amp; f) { using value_type = toml::basic_value&lt;TC&gt;; using table_type = typename value_type::table_type; return value_type(table_type{{&#34;a&#34;, f.a}, {&#34;b&#34;, f.b}}); } }; } // toml 関連項目 # conversion.literal.hpphttps://toruniina.github.io/toml11/ja/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/literal/literal.hpp # literal.hppでは、_tomlリテラルが定義されます。 +_tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。 +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // C++20以降 } // toml_literals } // literals } // toml 自由関数 # operator&quot;&quot; _toml(char) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); 文字列リテラルをパースしてtoml::valueに変換します。 +通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。 +const auto v1 = &#34;a = &#39;foo&#39;&#34;_toml; // v1: {a = &#39;foo&#39;} 改行を含む場合、生文字列リテラルが便利です。 +const auto v1 = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; 値が単体で書かれていた場合、その値になります。ordered_map.hpphttps://toruniina.github.io/toml11/ja/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/ordered_map/ordered_map.hpp # ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。 +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。 +線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。 +非メンバ型 # namespace toml { struct ordered_type_config; using ordered_value = basic_value&lt;ordered_type_config&gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } toml::type_config と toml::value の代わりに使用します。 +toml::parse はデフォルトで type_config を使用するので、パースする際に +const auto input = toml::parse&lt;toml::ordered_type_config&gt;(&#34;input.toml&#34;); としてください。 +メンバ型 # using key_type = Key; using mapped_type = Val; using value_type = std::pair&lt;Key, Val&gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector&lt;value_type, Allocator&gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; メンバ関数 # コンストラクタ # ordered_map() = default; 空の ordered_map を構築します。parser.hpphttps://toruniina.github.io/toml11/ja/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/parser/parser.hpp # ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。 +parseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。 +parse # 与えられたファイルの内容をパースし、toml::basic_valueを返します。 +失敗した場合はtoml::syntax_errorが送出されます。 +basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。 +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(const char (&amp;)[N] filename, toml::spec) # namespace toml { template&lt;typename TC = type_config, std::size_t N&gt; basic_value&lt;TC&gt; parse(const char (&amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルを受け取って、そのファイルの内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(std::filesystem::path, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(const std::filesystem::path&amp; fpath, spec s = spec::default_version()); } &lt;filesystem&gt;が利用可能な場合のみ定義されます。result.hpphttps://toruniina.github.io/toml11/ja/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/result/result.hpp # result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。 +これは、例外を投げないtoml::try_parseの返り値として使用されます。 +success # 成功値を持つ型です。 +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } メンバ型 # using value_type = T; 成功値の型です。serializer.hpphttps://toruniina.github.io/toml11/ja/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/serializer/serializer.hpp # format # シリアライズを行います。 +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } フォーマット情報とspecが矛盾する場合、例えばv1.0.0でtable_format::multiline_onelineが指定されているときなどは、specが優先されます。 +format(v, spec) # toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。 +table_typeだった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。 +format(k, v, spec) # toml::valueを、与えられたキーと同時にフォーマットします。 +vはそのキー以下に定義されていると解釈されます。 +format([k,...], v, spec) # vはそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。source_location.hpphttps://toruniina.github.io/toml11/ja/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/source_location/source_location.hpp # source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。 +このクラスは、エラーメッセージで問題の箇所を指摘するために使われます。 +toml::source_location # source_locationは、TOMLファイル内のある領域を指すクラスです。 +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/ja/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/spec/spec.hpp # spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。 +toml::semantic_version # semantic_versionは、バージョン情報を格納するクラスです。 +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml メンバ関数 # コンストラクタ # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; major, minor, patchバージョンを指定して構築します。toml_fwd.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。 +toml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。 +このファイルには前方宣言しか含まれていないため、 toml::basic_value&lt;toml::type_config&gt;::table_type として定義される toml::table と、同様に定義される toml::array は使用できません。 それらには basic_value の実装が必要だからです。 このヘッダファイルと toml.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。toml.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml/toml.hpp # toml.hppは、他の全てのヘッダを include します。 +これによって、toml11の全機能が使用可能になります。 +このヘッダファイルと toml_fwd.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。types.hpphttps://toruniina.github.io/toml11/ja/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/types/types.hpp # 型情報を与えるクラスが定義されます。 +type_config # type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。 +toml::basic_value&lt;T&gt;内で異なる型を使用する場合、これを別に定義して渡します。 記載のある要素は全て必須の要素です。 +通常のストリーム演算子を使用できない数値型を使用する場合、read_int、read_floatに相当するものを定義し、置き換えてください。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static メンバ関数 # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); 通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。value_t.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value_t/value_t.hpp # 型情報を表す列挙型です。 +value_t # value_tは、toml::valueが持つ型情報を扱う際に使用します。 +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml 非メンバ関数 # ストリーム演算子 # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); value_tの値を文字列化してストリームへ出力します。value.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value/value.hpp # value.hppでは、basic_valueが定義されます。 +toml::basic_value # basic_valueは、TOMLの値を格納するクラスです。 +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // 以下はtypes.hppで定義される // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml メンバ型 # 以下のメンバ型が定義されます。version.hpphttps://toruniina.github.io/toml11/ja/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/version/version.hpp # version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。 +マクロ # TOML11_VERSION_MAJOR # toml11のメジャーバージョンです。 +TOML11_VERSION_MINOR # toml11のマイナーバージョンです。 +TOML11_VERSION_PATCH # toml11のパッチバージョンです。 +関数 # license_notice # namespace toml { const char* license_notice() noexcept; } ライセンス条項を返します。 +ソースコードを公開せずに頒布する際の利便性のために用意されています。visit.hpphttps://toruniina.github.io/toml11/ja/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/visit/visit.hpp # visit.hppでは、toml::visitが定義されます。 +toml::visit # 関数 # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v) template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v) } basic_value&lt;TC&gt;が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。 +条件 # Visitorは、basic_value&lt;TC&gt;が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。 +また、それぞれのオーバーロードで返り値は同じであることが要求されます。 +例 # #include &lt;toml.hpp&gt; #include &lt;iostream&gt; struct type_name_of { std::string operator()(const toml::value::boolean_type &amp;) const {return &#34;boolean&#34;;} std::string operator()(const toml::value::integer_type &amp;) const {return &#34;integer&#34;;} std::string operator()(const toml::value::floating_type &amp;) const {return &#34;floating&#34;;} std::string operator()(const toml::value::string_type &amp;) const {return &#34;string&#34;;} std::string operator()(const toml::value::local_time_type &amp;) const {return &#34;local_time&#34;;} std::string operator()(const toml::value::local_date_type &amp;) const {return &#34;local_date&#34;;} std::string operator()(const toml::value::local_datetime_type &amp;) const {return &#34;local_datetime&#34;;} std::string operator()(const toml::value::offset_datetime_type&amp;) const {return &#34;offset_datetime&#34;;} std::string operator()(const toml::value::array_type &amp;) const {return &#34;array&#34;;} std::string operator()(const toml::value::table_type &amp;) const {return &#34;table&#34;;} }; int main() { toml::value v(3. \ No newline at end of file diff --git a/ja/sitemap.xml b/ja/sitemap.xml new file mode 100644 index 00000000..9bd50943 --- /dev/null +++ b/ja/sitemap.xml @@ -0,0 +1 @@ +https://toruniina.github.io/toml11/ja/docs/installation/https://toruniina.github.io/toml11/ja/docs/features/https://toruniina.github.io/toml11/ja/docs/reference/https://toruniina.github.io/toml11/ja/docs/changelog/https://toruniina.github.io/toml11/ja/docs/features/parsing_files/https://toruniina.github.io/toml11/ja/docs/features/value/https://toruniina.github.io/toml11/ja/docs/features/error_message/https://toruniina.github.io/toml11/ja/docs/features/serialize/https://toruniina.github.io/toml11/ja/docs/features/configure_types/https://toruniina.github.io/toml11/ja/docs/features/literal/https://toruniina.github.io/toml11/ja/docs/features/toml_spec/https://toruniina.github.io/toml11/ja/docs/features/extension/https://toruniina.github.io/toml11/ja/categories/https://toruniina.github.io/toml11/ja/docs/reference/color/https://toruniina.github.io/toml11/ja/docs/reference/comments/https://toruniina.github.io/toml11/ja/docs/reference/conversion/https://toruniina.github.io/toml11/ja/docs/reference/datetime/https://toruniina.github.io/toml11/ja/docs/https://toruniina.github.io/toml11/ja/docs/reference/error_info/https://toruniina.github.io/toml11/ja/docs/reference/exception/https://toruniina.github.io/toml11/ja/docs/reference/find/https://toruniina.github.io/toml11/ja/docs/reference/format/https://toruniina.github.io/toml11/ja/docs/reference/from/https://toruniina.github.io/toml11/ja/docs/reference/get/https://toruniina.github.io/toml11/ja/docs/reference/into/https://toruniina.github.io/toml11/ja/https://toruniina.github.io/toml11/ja/docs/reference/literal/https://toruniina.github.io/toml11/ja/docs/reference/ordered_map/https://toruniina.github.io/toml11/ja/docs/reference/parser/https://toruniina.github.io/toml11/ja/docs/reference/result/https://toruniina.github.io/toml11/ja/docs/reference/serializer/https://toruniina.github.io/toml11/ja/docs/reference/source_location/https://toruniina.github.io/toml11/ja/docs/reference/spec/https://toruniina.github.io/toml11/ja/tags/https://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/https://toruniina.github.io/toml11/ja/docs/reference/toml/https://toruniina.github.io/toml11/ja/docs/reference/types/https://toruniina.github.io/toml11/ja/docs/reference/value_t/https://toruniina.github.io/toml11/ja/docs/reference/value/https://toruniina.github.io/toml11/ja/docs/reference/version/https://toruniina.github.io/toml11/ja/docs/reference/visit/ \ No newline at end of file diff --git a/ja/tags/index.html b/ja/tags/index.html new file mode 100644 index 00000000..4c524438 --- /dev/null +++ b/ja/tags/index.html @@ -0,0 +1,9 @@ +Tags | toml11 + +
    Tags +
    \ No newline at end of file diff --git a/ja/tags/index.xml b/ja/tags/index.xml new file mode 100644 index 00000000..81788e34 --- /dev/null +++ b/ja/tags/index.xml @@ -0,0 +1 @@ +Tags on toml11https://toruniina.github.io/toml11/ja/tags/Recent content in Tags on toml11Hugoja \ No newline at end of file diff --git a/ja/tags/page/1/index.html b/ja/tags/page/1/index.html new file mode 100644 index 00000000..57435f4d --- /dev/null +++ b/ja/tags/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/ja/tags/ + \ No newline at end of file diff --git a/katex/auto-render.min.js b/katex/auto-render.min.js new file mode 100644 index 00000000..3a6d6639 --- /dev/null +++ b/katex/auto-render.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.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Ũ*l~D(rG%&E!i0V_q0aB!pIUN?R4NGLPxe7jVOL>h zmc{SwM^)Npus{{1lj8{MpqI}aNE?7NUGu}(urQSY=lbS{RgLnwTGe_qpIxyK(&ZIH zN7ZXvkA~>o!}^OPmCprO6P7CHYLySMJLT&d=twVC z&PBv>xlTFPPP;C#GUz%Og=i>geuT{+iIyDkZ<)rHD+i>gvg-P1Ph{&u>5%eL+3?cA_# z{cdk$O@X((w6wOUytJ&;+d8^y!@8~B{xus$x2_qDc{{hRDK?&7xU7;2*Lb_uk8Jfe ztr=N6y5+pCk%7^nRZa8z`$pI8**vndecRUE?b~*)8}*hKmwM~GQ=b^&msDIno?tLRWN4>bPdBd8~t-J80 zJzLj~?)2_nKkDu8?Dj6$KDt#d+$|S~c~bq|a6QcR zUIgn|gU~aS-m4V9wQ%O5vogHAs#evgY8NlN74P~{as#ex#c>qQm|i4vqVr;v@!#IL z3?V2}cdo%VyYTc8e47+%YjCy}cie)Sb>Vyf=R*LmG$E09KOCDzQP(}H&G=-esvQ(; zMZM{`6W2#^hjP?_YFo$ed;0f_PP@aIPdL5ABHVQ+r<wp=01i+8RzIj5!`=7scBXI3B{t(o{cS7C%TL;a zbLuZUQHE+mW&6<=yK!8A{!L}4-?@9n9jH}KZ{afVm|oLsHuJe&)M_tY8+boljsNu2 zQ~Vg=Pi(^SK_z#iFB(y^-T2*(^Ah~-0u?mww&U6^Jd4KF=Bc(VLCxDi!N>UylsWuo z@)8V%v;4p!Kr5Vp)gT|MVhGW3BIrs{_|3;KD2q`!8t~=Fk6HLu0B5!Om%TEvjlBZC3u%rhexhlN?0joIP%?PM;N#@x)q(pd(Q zLS(UQmcw#c9`iCE^RocUXF(QXVHRNpEXoR5j1{qBR>DeI86pM3=>wUys#%=Xuv*pI z$gwqx)w9{Gfz4r!tcf+V7S_tzSUc-rb6F>wr@EVUv2JAA>R}65FIxxvwz*m|~sZDgC+W@J3xiXeL1*$%c7L9=$V zJ!~)A$M&=H*!k=Nc7PpZ7qUa_B6gTv%r0S=Wz?_DOaGVZT1bKFzLTSF>x_ zXV|suI(9v~f!zo{gPYkc>{fOgyPbWOeU5#e-NEi;cd`FsUtnKkUt)K&d)U3~%j`b( z6?Q-SD*GBsu%ql4JFfZ$`#L+p9$*i$huAmR!|V}6JbaXWi#^7^&A!7PXWwPtV^6T} zvmdZ0*;DL?>}mER_G9)F_6++!>{<34`zd>#y}({%KVvVkpRU zx;U#=NEz0v+l;^cn%J*qe?$e^& zr$r&IrB?Y|xo?Yd-xj5QElT}bl;^Z4&uLZ4w<_gjW|x<>DfMrY>jBY<-@m-HQa`$7 z`~R)!>{i@{fhbHb`m<2ztHdXkEnki!ncnvaQj%Q)*-h}K(7t`gns0M6M$w#^Idddr z642w{`}x5@0IQ1x)eYb8>+OD9AAW8+UOyk-UaseuDli15qBaRvMPvPHvL`>Gtmo(3 zil?{y{qpL^k2R3?1noiWLF|Ja^--1js8)SctHk`o{6q!`zZ9%01#AB2+=w?YJ_Oqu zf^7{S^N2GLXAJf<5^p5lNIbt-a+9+B!ilipjMO!PH-eYJ%iv}5$mEf!H%Awh@tg2N z-J1A*BF;pdiTS8qMjRuK5yyyw>Sf@ddKow~_0H5g)8Uy8&)~8O#46By_)AC>;s;L~rQYxVD0A^jnL`?dJ1kbky^{l|m9BgII+Jv5($=F+IA=gaka zKK;J^{qj@Vx%eLI<@oaF9usL!@~x?jpWYacB+?-Ohg~#n?1HpWF+P#Jr69u)uOVK` z;b%F>upDF<;x)u;h}RIWcy06|hzBPo%TWJ$ItlCClx z$4zptQREU^PLC5OPMqpgJDc0ycXPSk`{ld6?Y&+v+k5Z*dN=*yfu!tc?e%`WnEL5Q z;LU(C=0E>8^B<5PnIMGxIVK4ul4x%h3ZcmGxOH~6kp*&aZuibrD<{T>hYI=buB0agsYBfq{>b1& ztvXpM6{JY|sa{O_QWWx~Vs)}snW)ukUZOUU3cN%rs7wTxEY^KlDHRc`dF2-_m&ULp zg{(}-VyPOwk*P`%Ugj+6*1v?N%agX?$8TcNly;wHop?~Q8NBH6SgKbVg1zxs)XZCA zFBayx2O;mg%B8a~TGRdE%&}wt$*ARm%%rj4ncds6iP6Dfn{rK)k};u4Ght;R4>gTJ z^V7}GCYPF06AZbbnK{qa;xGhhn4>b+eEZ(mb8zPwcjX<|zfIh+*E*|Qt(LCj zcqO0N+1b{|jS!tms>_oxki_Zd6Df0P_;|r`COMa>$fH=^x7qBA)N(RW>?ADo8 zD<;Ns{oP$@-_XfgSZhSo76nj9kyk({hOnsBCu$WH!6@97iBu{nMXA_&6-IgR)Rp7_5qdC=|kT`18`V)3d|ZJlZ&LGR}GM+yk_1E}y9P#H54N(F9{wOi(R8 zv3Yn%Us4<%O%6R3ln(E5o444sx@;fset5u?VqJn#4}Oy|!*VPiUt_H~VwGplA&lbPa@WrpY)@#^6|6J}(p6S_j7)Jo_nyqM6FsmVei zjEmb&>O>f>ymZ5$ETnOm$SSGB_bPH@SWuUgzxm9@zFW?D==8tw4(ktpTXL?a97m^= zvUre@{EOA)oKk*5GNdq@PqA2Ux$m9?nwi^zKiln$JYFacu4bkLF1O)tGpYqo9(8Nm zm)>w+44D*MN}xjOxKuX;N*?P%aAM8xHotE>mIYmqv}i1Q{_jPcnZtiqj883n$%t%z z=3Te;?R(RPx#Cb4GAhMk!bvQQ+2di%_K{=cR&t7*0k6?B0Yc6n-AOfZI~dws0LE=V z;r<&Ci3lSZ3*)nzXu=Sh5vC;&pyZ?j1jC;@i4h(eaMUt&DukRRQd%={JH{Czn)}K*ZAM$?ksXwxEQ+kULg0Lx%ZJ9j~_aCVE?9&{A<;vVd;|3WiwvFj!8lG z!9G`Ics>esi(w+gSMTHbl;0W7Ui~57{x>mU=?}9nOGe`kcNG zht=6i`SdfIZaKpT(w4+O5Ud3`YHK)QSXAMn(w*1d1n3T~b1{*%)Y=HAC8IAD=MS5eXjjJGo*0+v{TZu$aSGT z`Vg}ITz@WQXs>&{(EX+P9{I#G(ltPu_T_+6Xu*Ox+dd7+5Es(N=Et_{hGFUsB`m57 zei+sTJIGOTJ2^w%+X&)7$vo(A%tfI;aB6OtG2X$#5CNhK(C3LT4M{l@Y9ps)4uO!w z3}H;0Bbw%E9UPR@0tG_nFXwrQd1J{>x70Ltpl#1IRU-H&?zrR3i8Hs{R37wG4yNxLPHk;vKEmtCOuDhXkS^AzG^uST0r;sf*P@DzvXwFDVtgLR3vACu+6uY6@Pk z@2A%a`^&j{ygchm=`6Q}X$n{^xv3QrCTcfszP1v7=vM+&a`dzciR>f3-VpGXP7N{o zVj0sIWOKqnZc2RT&Z>zKJvkafk1Q(OoDA} z3=@+uFxkqug7YO^a>{ zZA8h1-lQ0ZN#(n6j6XKH$d)CdEO$w6Ha{RuQ%?_b{;!-5WprJa;i*M50aMa2WVV;b z5dRf`=^%Q$LO=Ntb_ZiD{Dts(&`zk%$O-b$8qvy^& zsoC@jgu!e>QpS4jdhD?vKczMU1)wE*i$^qx8=GI;_NraoEgYlyh-sC~4a?T`?sxuh64F3o{XD%Yq~NNB6`w9)g4F zW=V+%n^Q=C6xeP|B$%l)1Fhb^VVNrQq&Ch-??Qe<>G-; zYZGw}yu(!emZ?j|xd>q;gf$Zq3PTP+<|q(ilNK@;+c}r9yNZcR6iPEspS|pUAY`H5WZnsjl|f&2bh%nBL}f|JWDs1Lb*e9*on)%j7ZuxfmCiO6MvFw+ z9$W(NT=+ixY*h%+(qy!&Eo*IH;VLD@)91Kw%owM+1IOYPVvO~5*od)7JZ?Yq8Yk3AMMwUJ%H&qG(d%a+FZf4WFb^ZriB(W2>fFOJ8$;l>*?k6O&pC6iJ! zfXm@qPg(Ze$GSLe(UQuc4lT74DB>keOy2bL&4)cVmFT9_5t3=TG}n8t25deb?~36q zm+(~Fgn&6FCYvXI4IC@Q0q=dJU<-#4y3mPDk_}`RdG5^(z=giK(5XcYDJTG$jrwL? zlrx zmTHt$Oi&oI`Tgei%(%crYDYP3N%fdINB#?JqdC^4WCgQV8d*y%5| z^Y?M`BJwK@|IEo-Z`wXpP6=)hfa!BUU`s1VeKC_!0Gy+MXw6u<`8XDX=AEnYdu1GC!0@pcIDC^FqV$eJG5$Dt3OQQc~IOg&zR+A6w-{q(>Tg&Lp|7re@G*TQGc!p$gU4{<8HeS2G09%`%|1vT}7>3~sqYPSCR~Jo*Hlf1eX$3{A)B`A0D97(M^Hj6zg*`~cq*B4!iWOT1 zQ1nL%*@O{cBq};o*%1LHgh>k}sp{myMqKIiq*AzUga=Bce<>OUiwX`TRiCV;?S$|# zpy;H#)8<|GAPns-{tD7`Um$f|zE?74Xybx18RPUzpQekrJNi=xHDI%flB^KY6Tlbj=DA^7I^v~*|nZ6EtL zAJ2anY-2?2zxlA2{8l(4%a9t`N$w^$zGZ#|QtZ%bk|2^f67`9cE>e=c@H|q2^Or6) z(ihJH&;#u?swCpKEa@4}F_9jDsJ>BqsuZn3Rx1}n-6y=eveUh_n?m)PR3<#s7KOC2 zWuO*I#mIB8r5YrYsRg-GCfg|;g$%Y0B#v#n=0Myu(`%0Y%C8=s_9;znnf^|ndCf@8 zqtvUVa!!Ar+aJ_C#=Kg#`Bi5H9o1OOHuP@Z@*#An1b~sHo1fentlKvP05aQk@RhUc``5NLqfeyyu8c0Ckwx1ajUHkQd5Ln?~WgyrHwm@M<DxJ%z%Y)W}x~$odhVH#<$C-$;7rz+oYqCq7 z+t6l-k*J4Nvy4lT*=Apg$G)qjcXc5KCw})Fik*L3rC%QjN+bppnsr_0U6i3iFoTHA# zZ2;)EBbq>ID3*vt~2K!Z+aUwFz4PtCT#H%N?_iAW7Rs!J52%|4dKDWx#WU}1oDC1d9@ z#$!L5u^SC7iD{r=;>pk+u4W#Mw@=@9&)p~Q+Ouox%r)y)ud3I^$I7KbzB`*vu02Qv(_br-rD>@6O)(X>YI;+)77YQ=yx9E&2#>>k>cv0nJzW)R1M@B7f z6>d%3wRgaay;aU1D=zeSixnsK1$kGicVl1KNed;FK)b#CjLeD)2Go#^KDa)J{}TkU==BDynY0&dB{ zJ6|NMRevi@XCggR?jB4s4o2^hqs?ERMmqNPF=rKFr2E3ZU>x5QqU#trM_vchjl>$@ z?B3(YwoP$ebAUvQXGM=hNXg~|Fcy-WrtvwVlqjO>tu^Yd-W?1ADY>+ zYDKMD86Pirc_S>S2HUf=LW@gFoe^48WL;7Rg+FSkGkb68?TcqGEjRT;CksL$QsIBF zzM#ankSp7JaOb4}to$Q1tDdKb@i*RC=_*NE!?Y4iHs8ZAv7|h-XLf&F)0oH( zJ6>05-&FY;PxK(8fD|ArbPL`09=@F!rikfG-hB@cbJMt|eQ@4)UuFpA!^hdd&*KK;ZO< zkD}8b=Q)4~5AkF~T5Su9pBVy}q6BGA?Ag;1yhx6m%)ylC#0qZ(eTQD!h<#%0kNt(ua0J=uuDo)@Mm zyL)`j%!#E=Q97n3B-?4NaCGRKQ<^RN!b;26@mDlTwYNwX)4HAG$S@Bgnd|P7 zxzH!2b2z7{tt>DtTR=IyAh7VCyrC%*o9JH~|MLaGP}7UQda_syGn*ZVvn zm-yw1{VTs58?VHqrY+IIF+ck0*v5fwgPT$xxHkTy@0wW~9V!SVB-9N4E{xV1vXfj- z?roTR_iWv=ydvmA%mPie?ljDC0EpPz>!i!#Rj0Gs2nZ$g)S}fWNcQ#DZCLM52Ib;_ zr>pQxcKZH_pfh@u)W%lric#fRj09b^8Vw)=FK9moGdMX}o2=Cr#G%l7Fo=}kdLbXO zpXX4+5I670axk^Pk3Z3~sUIYlls)}&GssF)vS;5Yc&69Z?FWq{rxTR~Z@w8hyfhY^ zeo8mp^po8JZqcY|>LQ)S?L8SL42Mw-sf_t{^UpT^_IBVLp$zqS(X<6)LMDVAa&Yrs z{R!>tqjSksnl3?Nyxjb+=2ydJt_s=XLEXvq^kglQFv2hVkbW(iCf-IK4z<2lHQYg< z2PmBSNrQ;3x(Rvg(YsC@ zKBOjuTcn7GVM4EI3g0*7e(4%WGuNI!#qZPf<2OSo zyEhq!7inu7i1uB#U_S2N2h%}D0teKYjnBjck1L4) z9>=1{g68L%|BOfI$WmCdhuSB`kj0kHJ4J)JmNX%fYBi+cQxmDC|pJJ9Vn{DwPj_pJ7nmt<$vJN$rl&Bq%;J7 z!yAM`MnM|BaV_7@49|&k_Ai{d$=uRfb|?RX-o7r|HGbhaF6?Aw&k!K1uSGo_*9<20 z#_II4?-WL$u@K^4XdpwhTH?Dp!BoD@-wRIP?93I%@19r$L`k9mG+ z+jfe)?y7lD^BwAUqAG#jkXn`l)3Q}z1E%0X7e#Z^4vOc1()gf5mE`rK(|V98dB-T@ z_i%CG0F!VozRX04zb|zcY2dAR@XYB4X`0)XsA%x_9fI=}qe! zwJNEQWy$5slf{_GjHIG(M|ka2&6ny^Sgo}ut~Ql^yLyT;R7fduG^}5RXe|s*DnFuz zH(ofnX+1kuGS)u!-m#l2hh4@KrjCMAhX4KFu?=_Jd|2OkYkB1kn>*6%L5a=p{cfTL z2mpEmcM^x z*5uk>Q;GPf8K(|1X}ieT`9IbXmNx&sw-^0{X=3|(E`9PY^ONcky)%F+;002>HFF{J#%GI(E ziyCT!Nwc7#tqsI9gA0I9eY#-8hXaRc-O?V8oAc9n_)!+UdXE*%yIIkk-!s_h5MhUplq z79#?whA@oemWV#ok=pV@%OJ#Fy^<_M(seKPVWnP+3IesZuq1pn{1QTj2g!7!@tN&9R*hU#G344j~voh|tK z*nyST>PDiZQJ;HhSy}SyN2i{H+6oJ*u>Or^C+PNC>*&stF%A}IY*?7&%}UpHb)q< zm9%Hf5yS8d1;MWW-B)rKT}gqtv2Z0By4X@2z2YUWcpb&MQw!H21SP@wD_!pjS81%i z`UNy%P|cYCi3_pT7ruIa<(Hm)&C6f%^ivN%aL?U$-f`XjeY>}8x_158*l5nVbat!Q z(U+n#zHQBKYpF01+N#i{@?-Q0ZIme#Ra&*SUpJcBsH021Y9hmT7X^;i{@nSlKuZ-V zgvrs$6mL=;=kta3tT6f@cv)t6nST1s%X$qiy8h)i|KPEc8NvO{6EFR9ebn8%?z+=) zj_yZZ63gderw;XWPdmunbvHHt%Y2Wi*`9C>!C5ROJo~Aa2cz4454DwpI+uOvm~F=V zehxCNWqc>gJbENS0nJfStpYRM(B+B35>|<&r52;Gyy0hD58o@mIeT>VRJJ=g*8A)y zPTlyr-mzr1`_y$)djgRC!@qbWo%IU#i$CZhTGQ#=+$p=@Wz#qAdh+}Ol$HU60k4pZ z0hE~->dE%UMPEgU`pNO?`gmg05M0lUs9hqqUOQ|K+X!>l8&S7^|FV(}0Mx*P*8>-> zrx&s_5SUWFI=cAERLbfE5M1iX0ED=RIMIW>(NY6$>Vk95}`gx zl~W|rwQ3NBwJ+(GAH#A{w`x7Z7NGf3J>J;H!P|1>@j{Uh2vPCRIDu~^w?ndF_W@E3Ncb`qp2?{a-PBB7JIMhA z5DDZsk;K%cIZvY52_l^%lv*uHib03jhOg@EEI2!hokt>PM%g`AzQPrp8xvRa(?V0t zII`f6(NNI8?UuROo!d8W7%B&oxnQ7Fu+(Egp3(q1D5_T{+ZAU-IjU5RdWTf2E>-oV zuTHly*nS*ERi_@rH#!HW5N@?d<{Kk3j1`n;$F=sL2wOOv&1(_J7Md}7{4!>xt6b=+ z*HA!m2q7!Tis52^?}lYU1Pi-ow0rdrPGJZKRsTsL*#b?eYOF@4exkUHvXF_==H=futJdQg3U1_Y(sfH)J=>?>>BLcfT7x#Mj?h&3o^Jjr0ki zT5oZF(vg2zaLIf4v}FZ-qh>D(l9$G0`*GyQmCq}^$oj3LebVlSa?-} zsPrmG>BEt9uFJA9hI;IdySr+--d)?f52*p&qszAx-n6#$l!(l!Y{#}kbU7_F-)SrA|gl!6#-Tvnrv~T=#Xu_9w`DXvR#X+ z%q*$NbY!58TCA&V!UAxhUc)!JT@Kr{K~K5D;E-MKGQUSp%q=ZBI@S8E?ML3M^>@Y7 z>9w15Q@48Qz?8+49^;_72P*@P&a6xf8c@*t;ZJNkX7RBRKffYg@X=(ZbPD4+Cop3Z ztNNBr-Hq|M>GAWU3y8<DI*r=B}u{?sFGV)WaO_NvyLLN7#m@vBRtr}39tafnP*mpF2`}8 zxih>z;+W*pOVW(K$k7Xa1ly#Utel!F;dr7vC_?d*t79BoQ5Myw^H78LY| z4cyW(#L^*$!=AkaSg|pfxoBtax^1^DO%aOmyL1cZMiD}Y6!u&;5lR(;%^h9KER5|X z-5t%rTp}@k`JMuiB}Q}Da;G*a0oytm_K))7kDI{=U2=)2qEyy#%9nJ)E zY6%p5!DYJbl=nLhy7f22aoDfmU9LNKuH)$*%5cjugkSKJ6F-GV;7{6sxKpF->AVNa zwpYrid0<d$v^W;g*#K%TIJ&fE#dpwXU5CEYjB+u+YyNl2HJ zdWI_m#i}jIvS>Uajw`jRnmo@{R2U3aroE%K9-utN{@Iv_Cp-!?l7v7w;4ue5SMQIc z2EpE`FQ2#1YqSac!VSe4Ky;`j5&_`N#p~aEcqY@F8A#yv-ii+WljuFn%mo(7RylIw z8}KqA<*<-4J1?aGNqp2M%svrKHPMQ+;@|K*z9ZwD*(T+>{jdLO6@oNGQzl1%xEJJs zkf~!`zyi;HC1^Tv1n@f^HyL5nXf|R^VeTP^#OdmNhu1C{TNt*8u_pcd-vPl+d?Xoc zag|N~F-*ZHwdF#}(RL|iM99<#F&2x&1k=cmwAUC$%3joZMSVxg$-bp_`wzzc(|$8X z%s|cSH?^-l5~ehA>+WddhE*QnPGn+Pw5huzKY39TAsu%X#s?Y$g*aQ{a_31KWoh6Y zfnZSQ7>J3ThMRUa31e{RHixts4iE4=Beqf8`1-`qVB+!BVHY8UoF)q~$Cj8+YLn>g z=uxd#Xp;wp`N-h>5W~4LkP#(rP5KJzYSQ=>ZUo&pvuM0sh_G*6LJqBob^8GG_Bge0 zV;bwUbF=GiMi03Rm}MA?`V9&|jgbG*zsN8whJZNd_38<|S4cG`q*%eB?;5%N`&Lx`p^D^t_rkSzsW?}}nBs>880HRiC>2grLt0Mc9kiDd z#X6(|AQT%>FrTDoPBv(JtURm58P+Ldl>02_&v6VJ7@xNdtq7k5$#0aC=qwETrS zML+vl`;WQ}v+J-g9e53!gC=S2EH*`%%hK^eR~oPx*cf*it%qfAR&YQR}0qZ+NEu=>qcu#H9!w#VXLs*_)D%%pn4sWt-@P$xl*AyWQE z`JaupRJbQKV_eTWQ(ipQ{>Mc}5afpYbiQx{&kc7PqG(8zH9CiLe8WPn_YLO&9g!o7 zknWLs=~@}DjEbck7su)-)1o3SrIAcVwbwyuYTdUz8m(cJ zd(H6lh8@%EZH~$(To<7VM&DR5F*cDM?~gU6q^vn1>mx$ePHmx(b+9XogskBq-*Ju3 zqZ5m>Iv|76LJo@&yp;7BbaEv}E!{l0dA%h>_2CN6_V&&O6{u2PCqM@$H?GP&JUP}e z(6yr#1ws=#y8GSBX1mwreDMZ$G&b%S@HG%(dnb^SU-9JR)Pga~>_5~w>L3k?DdQ$O zDC&5JsN>#hE305<-Xrh>wWQsebPS;dTOU(FqreLks^2LD^XI}Nb?%(+x+%H*UN<~4EQ_FWEIimeGd-AW?_;jR z`SEi{#xL5ta9T%zy>!m$VuWJL+SO|i#A#`JkOJY>(!mhHR_&-3vQSFqetlWP4s1L zrO+*1ubZ!&T3S1K8mgvNN)=TwKA%xZma4gk=q9siG`4g}&-%C1}F_K;TW6G_;)i*8VQeT*e2prS0fTh+6s7=HBG$uwi$k3D86eC=0FV zGyps6J1l5OP?8RaiRzIzN63Ze9N6P<@xQ>4^Ol!3s-A!1eeew2uC142p7I-qYKtv# z#`*lLpnivFow`*XNQIJ_i}*hg`u2kOKf0{ZYH`i}HVZns+Zpw*S^Oq98PgeQx?bAqA?sEA}%x+36OA`<@CmM66-&7OU%7u zQz4NLG>jd*HO;sGO`ZdFDJ52O$A*JfZQ1dzYr6+79SMM8^zcn;jqywGa}f%x8yq#9PPpEo ztQZoS7g5CPELj{$O_IGmh5><*OS=bO^0zj6*R}cl*tsc-Pyqn&mY1!Kt%_ao77}{P z6?}|ev8g{s^n|SGkDVAtFNMdnn9w_{^bYz4JsR-`w2F!NScG>>M`H*wV_gQ&Bn1TM z!}fH+X7RWgYd6X_m2V`rO~gIhPmF6nsN9qJSPs^Vqu*qPWhedukElBtU1J$Q&4q>V zZo52Fo{_gf$I%T&d(4c-^@g@H$|xTi(RHQ<=0Ug&s+Fbm1aKDz;#)S7%$}|87yHMxo zw5TSLsq=%-h#X3)vjEkB)FdD-eYbhvx_oW&-;>%g0J)(a3z2}$!0cI&L5J&PZ}eqv7P8lmb4ofT zT+OpoiVX?*E1C`0RFj(398D>ktW+V}brl~I2c=$2hqRb1TvNUVEEj}kx0oFbLbD=z zzUpNJ5m0fMZap&VT3$Iss}^m6oaV!Gn&wJl97fqKF#IxTZoI~c_+ zrq#J3+yime)Pf#0Et7-UKSd0RXl$zA1a3MUwe*`qcwlpqvC;EMc;^sf$;|_J$n0+s zl5aXO0Y8VwRIDpe@hsH%sKUE-9g*e40ahJI`cbu0)h@N^$RZ$J>(g#}eK!^G(WZqR zrfy)HBXejxN*Sl)L#AnBLpR$Owh#nuZ5L3wrqlB}*O-Tj(oHEEe}3L}Wqld_NmJ^d z>^J`WpRSE**#6%C;#yqTJ=bj8J;*MVtF^Z@`R7GeC>v4tkkdQr7iPOa5 zLEl6x_aZ3HjKu5AiWFKUvYfXFKeSBU5|C2K#TAeuZd-=gv9O7vBa3MFd<~G6h3zK1 z%R$bce=qP<%}L-Xd$2tByirWc#(v1GuY;yGLj!^GZv@JqMYS%`7n|aqnnj)76-5Rq zE})Hyll3-6ApR*Fk6Y1p106@lRp*;2PuqL;VDu<@)ZUYmS7Sv(T1H}{KL~U)qZP{@ z;X^+ae+JJr0p&~bq+@G!G9|QLAya$Ok}@ID(|txzJbIFGL&K-p3)x8ExA8be25z0T zg$12f7VTx|xX~W9=9UTBKCEPw_PQ9eMA6`~PSC)DC|%pdBg&8&U89-u1J$vklt*Cp z%_e*a{|&z%V%i#QyO40}Og|G6wnlhHjmI*AQHiODZ`H|&s(aB26t1-ZlYrTUXhwbt zwx6FVCMGwMh(o1pri9<;l;7B#a!u}}o1eD3TTE_Z16}P7a+>d9&g?|eF;}m22N#7Y!(ctR zh%=q@MNc|}(s2K{3o~nUZgDo_WrE1onG0xo8l1O-*W>9t-egQm&VJ^^zu->`9CnEu z6jy8J<5ymC!JZu*Sk#u#P%16AO85-0>NY`^m1iXnTPW$nHLUvTu!4+>>%N;)rS8hH z($8QoXN3bXu6|cRN8p%|5iGxe_zCRn-n+}{XaNdM*v;NN9m3R{xhd=7CUL4Uh@#%{ zn`05z;*N~XK3Og5L%(?(scFeB;}M?r4+y7{YC zUy~UE7WUK6x(j5QNOch*kc_Y|2zEkGj14XUDnyRW!+i272#%;C`q4yG--j z-{us0(vH`Iwz&4}EE6!HwJY6`1z~D9PcEXmYJCff*R|ML_ z2n=I-7L0TvVDN;7w3!pH7k1)Y6?KkTe#9(OVGSxP(AMU6I_31Zm`5|R`(;k|fHE-= zI(6rsMTkN?6v<}EwohA>eP%1kW+S0E!T<=mUF6L@p)Xu(pv%x@#Ii{FwdL0u>lWy+ z${VpbfKCdhZ$$aB0t8p9;&%1c4T3bbJ!4IS~<$o>zD|Q@=VklNsD2FQw;ap9j z@=wY?QRVU|FSRParu-WFkESWbQ}*vKD5S1SjSyG!I6u0pYGT2u(cP>JPN_zj|eYK)e(k6rj8y_1P$OC@y>peu&ow%OK zS3Y0F`p+g8^#uaue?)gy4$gK(Xnm5453c?ST{c&A;aWiH(h_t{CUqG(MYh%#xoWie zQ~|*{>vg1`*U9+Rvs_YA^W>kRkKtKuMDkR^vTwu`)v{CxYN$0&DQVF2>713N(5SD= za5dm@n?BWE7&kFCQ_(Q8E_mPq6F^@v8Vb8@`mGTpxR54B4AL`gljf0lG7)A|<9aH+ zY&jpEoEYI~1P$}fg(gMOeSG=SrWBu?0uwTE;Rj&RgLk4|>S~TpqEz zIx%68u@DL_-hHegwPlfr_2SHDTB*Wv_#(=b$2L;FC^XLiH!rNukG@h+x#Hxh(D{Z1w zdq;|2qJGt%-PaQF+#WX_AdBO4%T`K6Puj7aVicY!idmQ)=v&a1x*$zy_==fEq=zHY zfJjU%f&wh$GH@FjqI^Y@(PHXmmNp-9iXEZl2SP+c!lL{TJ%n713mF-pc}r5Y2!8L@ zKwEI)Z{ZmzYlhY=Jd>2iK>6&#UsG90H1WG(C3#T&-d{OFo6=&}b~xHp{-KLHkZCv^ zb%@)3Q?3$y6TT8jHx--G<&h-6{{bgZ{*ri9`Ae>gh9!Qx1mEC&=>1wy$Yz0>ABy`^ zQgORm^KFG)4reHa8i2c;iQ(=)fTR1k^VMfDXWV)E8O-IHm(~c+pl^#2V2O}?L0=px zU*6wp&?XSBk36bTKrPZJ>QpT{r{3FCpF1TUgJ%-`I~$WWj)znG`__$%&Hk~*gUbeY zHK}urJNpyq)%}C#txlJh%^tEtYkFCF&7r}zal0?loo&vW!-;J7U~^Yr-$38UirSe- z2b2*|9In&(=B~v$I#hv8AK+g5wnE_uu*FgiwbJ2W{8-*pIo@Xh`GwvMRP8npW79uj9z8a4L!AzSCc zu_1-zkI^)GMANmfK+-cQf{LWF`ZDs7!IBiFRp(GJmrUex1G$^BLz(Ol`mOkz zY{;VflUZ>xSH5W|n;ps?%gPV=jCk!CVXaX-BM}Mu&j{C^(K`RM>QmyChoI*x2X9r6 z$y6WHP><@?_%?B^v~r(B(4LKdXR#6rQ!s8#bY=hrQ2`@x_vyOS_%8p-xmndX*>$y{4L z+uXIlq>M7KR}OTvH}+5DbLf)GH#TqWWhL4((Gcof5Dfar zvBr0Pxz~(jhZ; zY^EsS;b2w(&3Vvu``c2HA|LnQJ=EaFdQLVmRUp73?d<}56-&>;Kcc5Ku3}{^rW$uc zl~I~T{Hm`>pQ|zMn(*L2rL~kCxWRSjZi3tPFKtM5FItgpZyM>yi&_aFr?Y=Nw{qda z6}izF1{Ng*eb{we+x_C&iw$>RVK7w8k7aPq)0g#iXZr`TYe%z`E6(Ei!Z&=Cc7dpe zC9)pE%I#AFXcN@C#=_B4qR727RqA4!94w>;)lVsWm0%@?V&ykioMsuUsOl(6tq2UY z<=R_UPDDCWD48q~%5`UW5I2@)C{CcIB`47s3oJ_CdynmwpByOseH! z&T?vhxTE{#mpj&-uUnFhkg?T8FEO|o13I4Vn~4O|9d6P^J-z!0wM3Qe#CW2sIfist zur+`wy zsKI3eF#z9Q)OD1>(!k(=a%<`;Q+pL>9rfk&(r>CD>hAbrF|!ml1(zIuo|HpMJ7*{ByAazRc%6rl6pFtZ#! zn{lU-S>MaP)z?C;GjyD_7MUh2u4Mijap5||F%Hb#{Fh`y6m#Nmt`QMkxC@?vb2LMX zXc^HGok_Dj-y9Fw9Ec<#j8xvpK!pJQQeM3*q;?%m6TlwPV{BiMg$I?-~G+*~GX+o;NiTmM?utVcoNZ`~VrD|yVrGhuagZ) zH6kNDn>JKymNY>1jo!3Bo!+082q{_MYnrV!2*15wBGlWKZ45i6LpAI@Bp=k-j4oPoyP@yW}Ziz60lXR)^Lo&mV3 zl+WT_T2xDmab{RbIoMffNyaUW2Njn0*`w0fIP# zk2CCDwI010jpxe(+#7_rpH$*r?~8kri@rx)$}F@B2rwu=VKHj+58YP&1)%X?oKb2l zR#7*=WAJM&C6MhABSm{_wke?D>TWT@V{zh}H96TI9#KO}>9)?rpar8liC8DZp#95gsF7{i9aygoDSB5({|XvNCi zTR#K5PWz;`MQA^jH4*q;hNfynt2p?rt%bJy|C0JUr*WI{a)%A=peQx~40U!`qbAq9F!7oJZpDz&Dy`{^N2vq0= zbu%IPPr3^cVXoEwwCWNEtFn!2(;@j!ZHOxj`3y1!Nf>KqNb(WkyvZ3ScB&mdxE6AM)J5{%xf_J{OrA- z_`sdaLDtm|g)+BY-r1)5%!yvnYCbJiP*w@dmQUrZYE(&BL_d&SUBIe_1t*{irO;g* zs@}x~jJydXj;&0tr;vaVjkMcRzeaOGr+2^Cu<{KZg(dCi#bKq?np zML{ci`#ZOMtw(bHJ2?uuf=f7;{&!)cL)qK@7ClI%HtUP6sDJD{gXoVx33y3=j1!^u z5wvPGr&7rSQ;n_Y!8Zm7`tlY)nCY%-jTY>GwF{sNRo9}06dd>d4Qm^cy#{gh9oz6t z``d)_?CW`7$=(}B*P^v6Z1SBVqE;Z;6g?VZhgn4R|F6MgIHPS+tK~bltceRf<7&oO zf)c;&6TceljNXHnPP#?rttj8k{nFDGOPS&JlY3 z>pW_5m|4w5QFJ>3j{b1{8(^ppVXY32wTiW}W&MH%fyYQ~HMXQMQ9<;06%kzJPpg&N zGh^V-!G~Rp#0sx$HX<47A=@Cv@f*j}dw0Hr3SlT(oL#aK3rJqkJ-E-L`fIc63JAte zL%_LycsM`P-GSb{8Wr*gzMUDd8K-=F{B>)(+t*WZhkLw--v;8Ito+ePqRSdU;= z5W3?vr)qCf@5Y;u*BT3>MH#$p8#)L1+eZOxcf%qU8t7~psGKWdfPZ~qKjhDo zNqyZ>6EJH^rh453b7p#TEo(2aQ7YW6zE2OfXmz^AwG~3w=7ag9gE-j%}0P-nYYNztx=l$ND_Xju{Bhm~jwUyRHjb=jS zywC@pvvoXo6*qMkZXvpD&AsDIXu(a$nwzzB47YR3;&WGF-7;avo64WN37L;_=a)oO z24%u`wb;Ked`TZ-C3%v?82RP=IU(aFA>(60#-uhZ*=#9Q10gwuq!n36&X=`Rl8%U< zE``QpM0p+Ad{vdw$R^v6q5CZ29EtaA{R<7*7_pmfe(CGWf55OZ%JJNeL5HDBN~M9tm*DcPVT|u0Xi`EyaTg`^J&LPPi#+afkPKyqyu;M@3E{cJ6&v;+zAwK zUm5_@SUP@F5P;h{BRKf-)U^49^5ur~Qa|$)!3J|&M+XOe>8k*a`@}~ug{D0#BCf*| z-ABg~9tmWZ-y9+qvQ0|z_zQTmP6+@Z-AcB_*eod^&gNgi@Ga_F*780_uWe!N~keo zJeVeq&c(62cl#j9uRWtkG)S01s_pD49 zRst`3WzaNif|D!vHie}15+2*5I3wn7=ZW@x?$()P#e)^~RZC_k|M^o8H3RWE#NsFb zIVqn2CpIvs*5V7fHg*OVu7IkUTq1t@`a|}GcCYPBpC^=z4v)_? zH6nrqbwOe{X&NoX;f8lu&bxMPVNIB5*=lHi0W~u%;#$^?T~sQ8TBoIyg@CI z_eSS|w_5q4Lkk({=P$KFYg-(r;j)z-i;Jx(^csQC*PgBbal~=1Z%ysnFI0H?z=09x zJ@4QI{hY*fg3-RcslYj}i(wpu^O*;42I?SmzO=H zP?rr+Sc8)~PBm-ipbY-0jmS0jNNqtbCzr4NK!}*uK5)Z$YV~CeuG{!GThP#^!h?=; z-^13LE5wG+kmW)p1bCl<&?i)Tw-v?O6M-Qgp+lygZ1!v z%fuL5oIPv-lKlpo+olTry=_z5O#DyG%jxj|b^|)Y$nbbGh=!6McU&jc421gg+W>q> z=v+`U`0*YOsx3n3RM!TSF|5x@B2ES8$<&cLU6r;YjB+OE4Ep0eZbfB zO7XqnN~x*ipmZ@2!&G;=LRVZSRQ%6k7s%OgSLnLyIe|mO!$#=5WyOoygpSy8m4ayh}nCvaqhk7 zk4cWrxo?`1e@M~uGOoNp@EyJeD+Je}N6ara$hh+C>cxGnX%ETh_nBy>Rmz|L8jX6w zl#I;P)laQ#e5fFc$W>yL>@F4cgR@(sgalX29Es(-^Lt+rlwV38x%$0RUgL&?*T|2x zJx$55+rH2MFcx*P0_$8P4&CR*HjXW7>l}sQAPOv*zEW&fJa_fFFfrnH>{rKQb02;0 z)dx35<5QIn!EO=1nubrp;N>Fvdt|XxAHQhzu^NTq zK5KnIE$6!6$5iTjUu-@uCrU~ar+BcUkCy6){Uv{RID5QiBQ9fCVN5W@kdEyzLYN_F zOfSTgJ5duld!w;jZUW4RYhb*nu~C*q;l@fq(RcMg*r*jVUIfH9coDp{P$;y94TOT0 z*}NnsCKH_q$6UvRSj;rNU^AFbAOff}8kHq2&-2S|!VvacqgKi|xkeNZdO_b`StCB( zZ$1m%*~8h3?>UyEjM3b&HxT#I-f5_KO>8EsbY6;s8TGIFxzZ+xb2x5du*#o|iuIQ1@-K`22eHu_w8kK!j~}H5 zLPt?!`3Lg9@<&m+{C)YKhEJA2py@vtpZZ`V9)?bPAj;1@3e$6sp8lxXW3)OgZSjn_ zmeo3?mhFXxL@XL`PS+BNgLr626Qnd6~RetKeOXhw~|D*h8 ziec5wkr za&j_S*~=n6qKs$usZ}4_;^^Zp^2*E5$2{bgmj=Wac!N0nmb`wSETBP+BWh?3lI>?R zfciU!Ye#ZSsk`@6wTB!I1j=uy-F)tX>QVXgJjs2G@RWK&Sj!2Fk}>%deEL)V;`1Im z?EoDT55BkV!7n6&1}DC7;skWS_;QSJmcwTLpiuqKj7t#Xf(_552O|$1y z4-788523Ub(2&yZUZLF*$$LkrqE%exfma(l{N$fP!J50N*50@z%?`_qpFAp$IICr` z6cyvzkUZ2N_bC#%`x8X2MM807%iVY1E%bT6Wl0|^*D)i##FD`sqdDRfgc|mVxrPG` z=%DM~|K`^`8E`2otZ#aaT3oY?^0yu5`0;FUwQ%5dCJr9?d9~qA#ov%0*97>gd6Xbx-FGG?Ze84jizYpG7xB0A1jSouOw^ z4fQO^oTT2j&bdhUTpbgX91-KSJ7;yrDxfAGLe~uO|d?~7b zQb21IPl`o|Cg-}sruqxEDkw^kbb7L$od1>z=Ud#c2n-pnAAm;A@a;`a0Pv^luDi4y zxzOsBe@~fX%HT4(w_(Z+l=JAN3m1;~tM*rk=Ut~X%ZpytoRZp!Ue@};+R@5-J>!2# z&$(~&VZst7NIYi($C73vqa)mQu@~C5y}OKa5RdQMa^4cc;2| zbn#{rQ29gU52|g4vuG`PW8YL)E)?xpXtCjThEjuTz}~dDA>KKrqgBHu0)HbS+P8F2 zmXT$9#to!tNO*Z&=y~*r+UXFG(Jty@mAD}1M?VLfKm|I`I3cEEG+Jn8x+z6J@%N@- zHOzApp~+b29+`Q%fi!Ym1_zu(fNpRC_YagX4Uv$4`>lTG3uzL zTjajQSItBam!0-X!fnDB#aCR6ej6xvdLH@)JgHl}{0}et-Gd#7n~eX*ZwwEEW&G+# za~CIcBWBb|U}y!&>9x3$KzSDONk}~x&u`ot3DxbPLN1ccuiWLK=dowA!H1bI;c;P~{Ny%doW}}p&> zEH$XTjmtNas>P`ht!{^a!dv+6;WOO{U99VI*KDLD7R%_m(k4hk)s#t+-Y3C z9|c^u{OkS88y&7+c=X70hH@vpd|&z3j)MaGmZ$%<_WO7y7mGwZXa-JFR>(>xW3gDK zB^+4H+?MGhM~*n0HZMO%X2LzNyjk2voSJS?Cl5HTbI$VS^8LVR$_!aeNg=2BsV8dq z4o!zE1RJtR%ZeJ#Hb?yNqh5c`<0t9eCRc~<5O;1}dF1FJlRJlx969W82@duoWc{N^ z-Fid)risCUIwr5*;8BG(mMOq90TUz34sV3;*((Rowv70+!0kq0fy(`u<7uBh` zLmpf$LPEE=D3xiBCnLckm_rK!5pYD?ZR#x+!5Efb?Q_cC4p8pcI#&^=pTb*ViP~$D z@oTLXE{_k${&q5vsG4BRS4AvYBKwIc#4$#0>5h2ZMuy$^(#gd{t^SC}@YuFS=+SLx z{5fuR954pH(x+pv^$-r;c;k;-v1yX2qP3Zx?WEu z^@(#D1B@cI(GQs~+Y{d)9nTfLt6QTO>9%EnyO0E1`*kpsw%Pju(TN^Rja<$$ZSg$|`H=u)BMdlD<+dv4N&-l}IJ-EBND?uEkMctvq!yiQz6 z7FPGJa2QW=p|9>peSMEew7YX*tFRj@;f?=sPFcEpxvb9b4wd)Z-o0PZ; z>nua5)O!7j*_UUNvSFFx6u5u0MXAK^6A1I=yO(oN`+h4r!PY=csm}hz1BD*`Py?t~+JAdSTPM}U9q>UQSBDF=GfDm z@mDklNR4oWgmYK-)gMEVVnem6;oZNeYI^?Cv~Dv5(aXMcWMd;@u1-)AHDgMNn05Yy zpynXPh@+fq+iv-vPiQ(<#qTZu>>y@n#5AahPy!`^5Ipx;J;VUQ?=1g#Gq9zW#}G;_ zx@ff1Lriz+-S;9IqHy1xa4?9`?e}p#rt>%7Y8hOX+jz&YbpLF6=NkyMDJy?HVo*R0 zJMZiQs^<3P8{lDlm7Gtj6@a0Rd~-nU^{sHj6vroDb6Y4;Y@nJ`#pMJtM*Q|nL>sA5 z#U8eFWA2+kF#&FaA#~7f1Ih*(zc)#oxeo@QSGZVDyT~GpKpQnVo_hwuV4(lXmjCco zWT21h_BVidj9~hC1`anFeDc~c6WCWRL-|~fxdfwUFtbdGzY%ijQ_lJ85v|iIA!ZHZ zLaY8bP?L=;E9=u&cC(}-3SRYbUG9YIcja8S1#jDF+GXA2}d2K z3v@>+c{9>3qXvYCP>GueIVh?FdY7$R3_c;HWTtMTuVYE)`^F;`bsn;Hsp8;)PM~f` zKxbME9XgDW^ddA(_)O1f5f!6tk9kJLi>N0q`Gm7m31;y#^3XO_C|0^1)-yvtx+6|7 zjGf9ZL%I{hr;*Um#|+D-SmDUT@a!IoUU3@5%sPdHrq$^XQaW@;Z8XoZSKeL4t>OgstJje`;`=CRTiXbMex%W}CqmqN&v*hfTu{3kKZyzO&((Nqb-6ne0(KlXLd2 zGW}h|g99~Q33p*|pi(Whmo-J=r?G^x>`XLa<=WMDQs-I)_l8Ge8=drPZV|8ckYmwI zBo{`|W9|+645E%VCb@1G`fv5B1S0p`_^biZuHeRco{6GYY}{BJ3G7{vMtub1Y#42D zoh1M4XNhDUKia#cFV02|`Mjdb#w^ccU?*1HB$-7ld}x8w(sxPmll43k#jp7MCoIG{ zGF+V-h-wi>Bwgvi!O-q? z&wkCe=Ml06_2$#vhX*Lp!(%suII~FT=H)q$6X?CWy^%X^L=cW#9e?G^LVx!&eFp~- z7>?_>@V&=D^k2P>fulUf^1bjh{Ijq``$ccUnI6O=m?%D*lD{@5MJ#?*IoY!U!{_tcU#oKrw_V1!_zyP2UF zi%gY<+FNyOJ75eqwS|I{Yht5?7}xF5QkPR~FD{jt*wIsR%MsUc#WTXX+H+*i?QLeE z_2*47hJo%o0Lao|>YRe(4Ye01vn?#Nxj(DZsURF!k#*dI7eLlXbhpQIxjKXz6f0?c z_g~(7H1xj-qV1eWw~JEccG(0Y8(GKhEdLg$^}mJ@JS(>)VGj!@&1Ia>8w6B0P~!c0 z`CkiC9ZGH5B?6_r3mdJ9{TB+K6jtE#^Z7!Rs`I}Ivkh+gsoQq!b>z|-1b!3{a?fmJn z3k>&+rKIgf6)IOPlvi()B$R$M0sZfR5I*cQe)<*L_c}zErn~g-3c`TH9n74)+i&|+ zqceBM|00HuF-Kw;aikT$yN46#yQ@3F9f}(yhR)p9zZyea;gvq6byTweF6in^GT~X# zY-_~>843*-YTLc)_6zxOQ_f@}8}1U}df}lg5%H%Hc*rO})mRv6FghTyFh2SQgFskdDHs5^Q zpeD199EDJ<;Ld%6lR@-cq5DR!FV$$nt>_{+j@Hvp)@w5))>x;7HmjE{9LcM!bOWN^ z2WqvfQnb~j*sl;>WQ)l8he7o!@2psp6)VU?aesH;K>i@w`Hm&9bU7tDbC!m}F#{bv zUrzEK`yd(XhzfoCV@cH3wpr(<`^alB!cgqpJT~@?M-0|p1mr-fW48I;dnq?q;I592 zp%@zOH5p|L?c7L=W9PPc#^Jt+aJbEZPWRg7KmAoG)^X#F=+I^-wrLL>*KoyS$tu>_ z9--szO{-QejN{6fEIf@KT&=3QBz&S5RD#?+ppxp<#$I3X(vW2MwW_LwXe?H#N=1s@ zXsupV8jZZ-kWR=ye8Qj|O{P%a&K1_=Tbavr_m#P&1$5~1pLMLSJ>3{}%>ZpkOipnE z3%869TWJUX;j^Ut%}g;qqi4FWH7vO24aA%p(78~2_x6a2F@a+ z=_Ekk`fw!GWe}IBJzf$FI28?DKzZZM!$UUu&=TGF)h~ud5IK4j?Oy$N=%8A|x(1#> z*Jv5xwV5hcQpF(F2Q5w}`mZ&dVEfqC3yjdn;Ol02h*74uwC}q*pIv@st9gxO@TOHg zD-9IvzsIE^zz`g3-)965tPZK?y;eQ1MdmH9#LMe)ag2k4x$b?DCC9LgRQABF=Wm*5 zqr}!jZs*I_Hs$h78}G;ybkML+s5^ULVfU1&8xUfN75f5|dKa&fYsdPD4fqE5jF!@R zwPV`PCL6~Qfl0*3)B>PvCo=T?h#PdxUc}LA{|(+Fnox&P{ZdUgm~LDw?t(CqufNuI znMl(@(;8!Bmqv&u-|EhHX`F|7^)1{(r~F#}0*D6ZR&I0V-%bv^;Li+=V}qaeb2cMh zvzr3#=#fL`Z{NCl<+3HE!LE*Mv*&6lNLli|(zT_(dNlp2MMG*TlJjHj{)%*~jK$Yp z<}N;?T#k+Ne7{(2#m&Fn@K7}f@4tPcGCM1vcX}JA&VNHoq9u3Zmf6i)X13m#Yx&^l znnmcjOP;)lMaZka>B2AH_WEx$+jAdXw*VZnqML;b6A3w)>$1ef#i4$CZ1HGAS8rXntt(11L$L7JuD$t(dXYNsPbsk0*wVv0I>{z=z}t6`a9l^2ose^5uzAA z?61(j>`$nq04$07JWn+?>6nWz2=$)4F_IF^%5%<~FL+(qeM63uoWAnGaLrVF<4`G7+8(thJf2fkr7<>uq z@2DiSYH!u?Q!eEp_|rO9|N)FI`MmoHczg1@D%*I&M={H4RLV-Ylq-nlZQp*qH*U=eEQRHov| z#@;=%$+k5yPUW;r3VB6qSEm{ywz~4eIV8c}a-~*We8IX&ZtzuHMLh(jD{9iPsOq zcfWV~o!bHZoAKM`LEe@HOAp|Oazx-oFZ4K&v8xuN40w%zzzYh-y?<^z?TK$cl|L*thTO|}c>3)y~ zRQ}+7zx_>}W~#NifX>M1Is?J!R05aUfp;C8E4V66T2ZbPWI}2syOQQDUSX{>>2LWr z4~2#x2g2UQ2hcd@x_(1?Sr$>sZoCc?m*DGeWP~`s{nL-pk6&^Xg3oaFxvq!oLPFOKg~V-xydvte)%to9t|V9*$D+V+#d-3l4YB!GEB4?|G4u#S1ax@Pz%4@$Znq3#QN;UiJk|9W=7{M+{tEZ%|}yJl7$?k=$#x zAPN+pTr9MAt;^8g*%7}`{xzFrAq~~FU%@9p=r6b3ztm#?a#K~SG;e`U+^sm#eZn(O z`?*2unO)J^k&5UmT9@)rL%v@EZK{FPbG&Lt5$65?C?h6e6n@|`omZG>I8|YKJy!Xg z+h{Tq{R>ksx-nU~Rea@W(x;?p8r1lRDXm}T*Gm8Q`4Qxb1Bo}0`SX7{3Bo6JV5mhd zKZ;MNU4`pjIO9RN2hb~S28;-%q;koumo~1o{r4FT&_KNIj5hMZX_sJK2&(5C0{uE% zaHh0N<(ZJ}pRgGq)6a`8lz9gJs5J-%_byS>Ysb5bfqCAWT7`+9ythAGWvciAmAXBt ze$ahrAXryI9G!L@?g!#9-4Q7O5a`qj)@1;g*teo;bPU4v3x_&Z zc?N2nzX-N_@+J5$WCaZT9QqevPDtbqK;j7${bKH_m3tB`J^4lbVQz+XXZh{~TAOdr zc;R&U57kTQOx@{vT$0)%ZMVQ>cA}@<#n?|k_5$e;(El&^A`~X{H1=f?tveVcF-#;mj<6(g>FO6qTlmC12U6sC-V9 z>JD8ub^j_oI<+8tX(65_UXI-0- z<2No?d7M^w0zwEPJh3pW8lqsr(TB!^5Iv1H5d3dc z*yvQUYDuZ7&;&V(L-1Qn{-XSFkOf4nnlZ|JMgcwkvayxN37KnsVevs*P`)0%3jZZ$ zLT?k&Ke)THrjb9xnug>&RJc8=?bU*)bZD?XTW}pqV^HN6XacdaS-+nz;ztE)*>BZs zE1Kmz5esRT2X7*p$xo=1y|g#DB-1?roG?sK zDbr>56xB7Gh--FJv6}{6(mrKGOcV+gfO6f*=@A1(db0VpGRsc1oS4I2t zEv@R@aJt{KGO^4|(F+=33yGh(pt0Y|g%p0tC4-ADqjDkTw@eH;b~u!pY+@`v*&A(a zKo~FrbSp-&BufMvCz=_LP4))75CTAU7j;-`?+&0A*SCgxV~85zU}{n&*pqu>n!SXRz@K;gU$0am z7!dvN82+i2Qn^1@$^FKo-5rH&Q&1zd#2?~cj8tMdh3WvSRZ=dp$|s-achJg!BmPwg z6!5TNS!mT~{=^ag6Bv$8<~~DBox|AN6D}+dsBDb>C(!}JLS}M7OD_LA4XK~u@^AkO z4E$4vTMVUE?ZxNp0cPnIdRF=~6n}m0rAf|{{G;mc1Av~v#4#8;dKf}BmA^peieH$v zR;RPv7ul<=kvcE#>uzmHIvSa$ekeWbI4k`0tetf%kc#_Jneh!s637L*V-VnT{{@z$ zfJ|U+vboPDq?)eqf}Zm{ScW*pQg@iuZG(uS9IOy6|9ko05H}GDp(Ym~Efi(s6aOGo zRb&umI0QfQ$Qg2cJ~Ur41c#3zYTESRVT$U#x}eGz+!E4jK4_i$CMG2V@fUDPl?PgL z;287+!y(}1AN=`@E-74R85WU_T+rcwOaxDfsyMSNS}&icbu0O-datu4O5AshWAT&Z zRz_#I&iAa!VpZK@7on=?rZe#gWXe3C6$g~-N*ex7J=)i`y8}L7hZg7%zrW+H}J0IF~G5wk)>M#+!gnwu??jSrgVJ~puo`s zb9?{FJfStLGHzuBl~u{w3ZjakA0AR>TS2M9#&j_D*JJglGwMz7kAEpbxZ`kZd~E-W zLx?l;)u_v8fP`j_p~g{X?oBTmEc9jOfC3~&)x85-mX5TE8se2Y}3$2!zr(Q zabU^a_2qwtuZVHATVxTuS$Of6?^>}q@8Wsh);JrCt43B`x39G_^-uVw^@;3jgQ^5q zm95Xh6g{cv3zbzxH###vIsDQn0t7-}>~bUT^(@@dV7WU=U7@_e9T!;ir5FBm#(``1 ztjMn!U!M+TvVl$hsJUds%@v%s>6OJ`HsiJR5NtZTm$y!jPiJMRVh;w3`o)S?X2WE! zEVe-xrO@xV!#ese2a|BXh;wI2cOqL1F$$q#Q)BlMhdUO;F7NN)R{8p6`IYzp<$p;sk>2*+l<%ilX>s10BpQU;Mua zy7DF;QQl;?njKuVDDT3HXz{o@DXm|9ulkC0&Z6`c74_l_USwN#eqYwm8EekpFjap^ z^obuGJ+)7icBnql9aMb+Q@>9%>|B+LcaFDG$h0C%c%V5`tBwTPvtpm&1VWj}cz*@_ z1lqNH$$=u^Of;k$R<^n5*QlzhWg}juN6If5`a&F*?Q0+erE^nGcaYNLj5@jWoF#EG)s?b! zd!Z`bINc=bd%-q`;+PJybdN`=Y6W$5+NQll)aj)oX%o)A5261@RqFS$V-XIjmj%03 zFWWXY-^-5vXxg2-<^M``s_xf!c^nLjI}`oMX4U<|ZME*#-^tv$pZ=e%NDYftN!K%EXZW5qa>lH1!wP9_s z&|=Z(P+tJ>i``chIz@}K-9&{>Q3L+%Y&TBLHP>sRJgVdHC=O@^ZI8?_-5ok5>sVdV zu^LgWnsQ9}QWbtxq?R_J=1KV-W~5Y?r|s->kiFYMmkf?l&xY>emW`J4`OfWcR~avc z^9@|LP*=ysEu2^f&zl~7`#U)Kfy_o$P1I#0^(taZqo^3;0XS>+|eFB+7y&QUq7s=@IgIkHdBrA& zac6kcBi!joixaIjFUj}lT~TbY9BPb}%8v7FSCeg1-sb3I>N)>`?m>@eqvAQmx;N{I zRjbN=(Rdx#H0b9~Ve0w4FwEyUl%uxpa5%IRbW^7s;tiY$K+<`|Nt${Y*t$!gA<3By zB%4PMxs)F~I62teWmB^;6L15J3j8AFryT3fy9=|sb_f|~XFbl3pS)vC^;%rwQlB9U2W2iuB;_!F<3VPJ@jmQO;;VVuPLS z(4Njnc7d0RfJH1G$n|CdG0PrU*xWyU8F-!*h!nd6UZQ0e0jyI>MUnn=IGhZ1^{1fY zapL&B^aqu9W=zSQtsVc(J2RxU9nKWwUqu-4wTvpu>;F|d3^OnMiVS3<26;9D`~ZguSk9M|dXp#*WGv&+*x`F)pV?5Wo#sorin-uah# z=x49a3%~N>tn_)|w_N=B$`@8h>9Y$S!}n+})ov2{+;r`x3{)9?<1k!(8-<#j%jm4k zbF0jzi={hNS=3bySv5s!-F_7pYAGh_$&WRoDjp%*Gg1y&RNUtrW)S_&Z@>#-^LdY% z#NnvxP-p+v0W>nkiQI28&;qT!vj(Nc%dU(hd*AaeoAST=0EY;Tpt}Vx@>wvWMq|KY z?ovK3sgWy}r;_LF7Y7#}?9k&TS~T-Ffbilz1EYBSy*A@SpI!<015oVWqKijFdc%qK zIC|)voH#VL;tl6TA_apo!ug^SESk9$Y=dzEak?Nds*DtC8f)B=aVY*wh*Zq+%q$S9 zn-*Ntuq-WnE0n>FNko=Sq58K5?C|#n?Oyz1-x|Q;)n%*z)L!E^B1ipPg-$&Vf6dzi z@H$xi@$(6H2>R+5d;1x)-L^IaB)Qr0h&er5)FZ}U`6_{rKxSv3;}UfK-YZ|CivqB3 zKR6xKBh1XT?urb>PkXCC4X15tPt4vOYZJ0%4#b2H|Ds+up`3kQ{i?ppMyG%a54B0G zTdQxKIEcjiAbQW{wG-|uZ_!bw^}!DUu{ap-dk;a)xg}I!_VT^w5eF^xUp(>7t}aAg zde(2Am|A)uwRsC+gxed}uiW}3Sr9Fw#X%v&7wg|VQR%gpXx9mBuDon}Tw+t{QY!SQ z8dE(r9ctKsXccwvv}Ip(=S7mn9hatH95%|HWyGvIZj2K`zWz1T-YO~fUX}^YxiZiz zmzPqFP+ESqz>T|CT?579+4o!YCQ^RyeNQJ>{E>sEwFklKx{@1op;5hI&mnR z7wc<4{Q^yz$vix}Io-UFQO4~BW0$|=tUD}h!EXUB7t!cNSLLRgnr5;-#*Yb%7is&n z%jInLoK>>@waR&bLP&nbPhohEL)}X>)uB2Xu4Tnk{8v>e()-{MpKzJuE~p&SScF2w zt?DvIkHClR@>eo>bj)$eR}~w7{3F}`&97o1M-P%9H7H6qJI?y%X1aQfFk%h@=@hPBO^M?=>(^o~Qwd*O5Y9U^=Yit@q*Bs>aelw>_!J^803c-U zm?-Woj&C>NKmVw9`F$836C>t@!t>b>^LP1WMoMbF{(=dU{mDyAf>r;xaAd?$wv&_vcQT#%#GZjB#MyqL#_+yRwM@*WJd3Lcwtkc8wl9 zXgU9*Wy#y#YTF)I8OH&AVIUJk+#A>y zT@l%^uzT>V+T)Bzbqi3(-7PkUeSz|B0PD#5U^eHCs&@Aw<*8jN+TFQ}RJ*G+jNy|H z#qc?ACS#}06;+Y?Jh!=8hpmU*PvKnyeUm+7wVNxKbK*Q;6|GB-a$;R|RU~NZEZ`9V z7S6RSyC7DZI7-wnn;D8pnD@LYmF7Vmeex**^pQx%&wgw<<)%o3%N>`P0_U{-c@prO z4rgBSP*NH)%Ygo3#9>C>OxQB6uw`+pp95Q=2JX7CjSAlV(}9i%0!L@n`DFiu?Y7Ea zfvdQbNFaBOwn=7`dh|u?su$fsW&`~5wbY#>fn@9Z)PnPx(*IuYBL19CkOR01*aBqP?_*$1CZ87{10^r zj}&WMSRYD|Tp#Wq9*ho(|IYLOclPCwEGJ5daso@FA-{~g_CEo`K&p-a00031009R8 zrvL^3000000st@oKmd0D005Q?mjD0&000007629i7629i?*euMUj#V?dm8#Wt{=)E3Lvx~ z^dX)h;UZoliz6)~u_M+bB_wzx%Ox@;eI>~zCnk#~+9xU}YbUKJ11Mc6=qYX~$SMjd zcq-*9UMt!x1S~ErSS*4p;4MBan=SJ$Q7)z~@Gn6x#V~y_1TkbW$ucG~j56{wMKi=S zV>Goi$~6NuCpC^WzBU9lRyJ%lsW#C!8#hfifj7rE4mgH5(m7{2-#T|X+B+dTY&*3) z06a!KnLPA8NIjK46h4(dFF&9_6hNFoAVHQw1wvOsv_lp{fJ6mEj70rKbw&q9mPZgr zen+B5#Yjg<5J`4Pw@K+rKT35lsaHH#!B|pQa0>FLT3mYjp^9gmwaU7IrFjH~;|v000310GKy_Xi_@%2mk^A000000C?JclQobOK^TQ!_u%gC z?hf5Uw1l{OhGpbMM6~2Zx)C`}x_K2LmTrXmx!>G-dp%oyt5sk9ZaXs=!~yVUP6O0o z-($WlVJ78PGLQN!dmFQo8Q4nZm?9RLZcL%RM6u*0<}+^*?G4PECt0oAg;k8Nmrjs; z$K;@^=W531L-YP(X7UE>Xz#GAuw(k_taJKmSfKY4`NDpV`J2r`%u<~7yO>K~_S2NJ zpNt)`4;k-9fgI%=PmToXCS8RmXM??Q@_nSznJXOi`D730cwwHPOt$AzJ!%}o#aKqH z5Asxye)16%$R*9uzPiIa!#&!UsHfy6@w~_7pn{ubN%q?mncJQH=55Q!Qq>YK88{N; zLE85^xIk^+$%o;ItDh6y0-grr< z{{&t8yu^OKGndFd*}N^@seX1U+U%UxaVd_YqW35Joqsn`U3kjI z0C?JCU}Rume*MpoA&OJ>+tvSjIkkWyD1eb20HHJnVtCqPU}E~hIDvtcfq|)uX%7Pf zLl1;ze86DH$i#pI8W@Q;>(sVw8!xqO+qP}nw$0hOsck!| z+spI%3n8pOHo35fU~DL?p_E+MtR(~gwCF1wqP%d5+M;)TT%b~r4;YPA~c z3uiWpMIOpbIjInhrSUX_X470+K&xpTZJ`~shYr#i(q!lc-GT*n#6VocM?$248`+Q# zg;5+OQ5qFc1vO9?&Cn7Z&;|W40%I`)^ROIiunAkS6NhjF7ol+zPhGC?qcXaTE#u3? zvb~%qH^|L$m)t9lyX~HM9%t&us=n&2MyknbyE?2+-iUG|&W&WxeLkNM0Z*a-JYj!% zvj6Z*4|(R(3R+8>X*=zv{dAbF|MJ-W@Hmkbc~R(xr#vd5dce~-;AxG{=!u~igXx%s zrC5pe*oy5T&oNvExkIXG|)7&s#W6U+PD8iz5>m7Ql-lXg4jM}MF>Lfam_K)w@m7B+J?!NZ%TK%=e zYth$&ubE!czNW75PT`Hh3qf{Z>KkT&kqwApY$hPVgsuRT1qlEaRyKAHPA+a9UOs*S zK_OugQ894|NhxU=S#*_hl(DIj`x0n6joePT9-lFVCGsqI7J1GTRgvdSQ4@K=6m^joP0&$7yziWUB1A@QOghxVmJ@+-y!yLZuZ6A~0_rWzCh!t@v z^Zs-`{;5J$vVW?~R4*ohyn(|Z2CTH!9ZVmpxd$zQjs9a_3DY&r)i7I|i?PXUtW$Y| z_TI@fA@q#ypoSU|I>-y6jFQqpL9|5CI7uP7j)to5^9qlWQL_Yr&$<39w;c;5zb_mR zH1(MQ2l^qXc_3=!sso&LbXS5&wH}JTOklvMT8e#os2v-cO(mRdQ{HG|_k8EKZ@*9n zb?~4vTH5&0071A}npD1?_old6%Ev~NFRXR&Fh5NE!naOi0H18B=XR=}?zTSA=9%HU z?txAN!}r`Afu&i1cE1hE;?p6zGw7ReF4&1fzXy6V17p>U+zq(K0XLkWh z;|bYOZzmaGjD(EM{5z7rqXz`&ySr2FBIPsv;p{1y!&5%r#4LVvi2k`Lly&+P-@^KZ z;X4p7g|!I0QYQzBLD*MD+L2#k`P%gG&S3Ed3riMnP0uPdfAv_`W)1^D6oikVkBbBi z9CIu)vt?#3OVFTqR*=o}_a_!R68cL9^CywT5IGEy#}Ea~mqZamlrTgYLsT$75>*UQ z!w_{0(ZKvmG%-XAL$onO2lFk_#SlFV(Z>+3dWPHjPTi#2m zCk)k7O7)CVI=8&nlr9)bmz2^KrF3n1Zziv(|d5e>nG=w zyi@EmD{)O@0C?JC@ZQ02A}C@bBV%9W2F9Hn3>*x}1sfUIoHj8qGH8Jqo4HvTIUp<{ zW-yE0X%{mCP?{6S=5X4@-~eGWGq`M2VeANu*x=9+v5`5&WuqF1w~M2Jfsw_bBRM1j zq$CmuHuJJF@@VZ~{NK8PrFSC}P#E%%KeeF&Ibj_kC@ToM>}JAkKkBkuU)poW;Q?_)`o3!7~hV zAXtGw{-W-eCmyh}f&l;%$VSg3I}46-V9iO6R4#HNbCtWMXWMa?3!}Z{q50SUKVY#3 z9`=@vrO&cc{3Ztu{*)sd|Hz3kRJm(<_H)?Eg?*akq50R}|JxdMEjJFszp;+13Yqa=O^w-{bxu)zw;&yS1X~GexRF zQ*?JgbH`pP_=_ATjp(YQH#lBV92`AT=@PRz!om#}&DRX@9dt-IDWb za_gE9((Qwrs;R{6UQ2qYO{&jQCSQl9wZ&c1ZYoHeE2rvp8&{@uR#}r?6$y1y`-laz;24ZhBAXs71iy4{;?te; zH;HWvM|;;r#DaQYWTM{|d?5G)r*hMloO@t#93X`j_cauva{jC&&fZ`7YNup9*Vi69 z{08F)EW3sAxk$W~U!VT4f8pgq|ADA)7^$4G@0q>H zG!WeLxye_(U%s*z^Aa?MvW&zv&XD@peLu9%xQJbk z9i|XS+{q{f*JW75{?AG{!Ah2R-F3K*uIO8Tqxk_@>rkHn0C?JL!P7wn002PIdmpoH zJllTRTB^SWXto+5ZxFvbhX8-RZmIAOqksem5+hE6Bq`El$dV&Zfg&Z!RH#y;PJ<>b z+H~mBqtA^2?z!XHAP+nmGHk@C0}eXmup^E-=C~71I_0!8&N}D33og3kvMa8-=DHhh zy5+Vp<0ed+GHu4JIrA1QTC!}#sx|92Y}&HThaJ22?7QQxd+vMSp+_Ej;;Cnzd%-tB z@PMrV0002&?R?+1ZQIPYUDs?I7%^(hxCxV{Oq(%l&b$SSmMmMbYR$S0o3?D*v1`x1 z1BZ?rJ8|mFxeJ%BT)T1W&bdm_kpT2zi@$1jOfS{1Dh^UyjgrtT+62 zrB<=4AC0o(tX5q#UbF@sdJN*A?-tW^c{^^l&-ZgQ9d`R?X~u*Zo0t?Dw3xAAMfS2n zjSf8~%-FDt#h}Fj9eNBHF=57n6&rT3Cd^pHrqIk9rE$33oUYFwPn%~7Rn!Bz$Ln;t zUZ&^6<-9olzc}xX8)+Gh1}zRaqPu(EZ>G)mGO=mLo2SF+a9m8}RU9-LbeOPV7e|c- zEjsjAMCZ_Bz=#DKcF`-;XwafVj|D3>>|#);F<``m8QF^p6K1T~u!~8d#()tM7OdE? zi`k&X0Y?m&Fk`t{U!G5k=e^{`W5k3R3s!8{#i~%FL5l-A^cXN=!i){O*c57X=rLf# zgc%FgS!)d1*`b8nKV50{{rm)$Kp6rxd@FYty+(7lJsgjl_44xm>$fq=+neXmQ{$}HRy1lha``ki(N`o7BRcdLFk-@tMT{dlF^}lbW59?>EF(J1 sSbl6uIrJDXV!?_HyQmdvbm%c)#Dsaa_lgbs7ut1b;s5~v0ssF14_VS-dH?_b literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_AMS-Regular.woff2 b/katex/fonts/KaTeX_AMS-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b982d6eaf85fcd6eaa94a0302bdf1db9c08e8231 GIT binary patch literal 32944 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 H0YLpfq!Ad2 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/katex/fonts/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..710c26179c5f1c9998065035a82a578cf45d60e9 GIT binary patch literal 10448 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 G0002%wf^z| literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/katex/fonts/KaTeX_Caligraphic-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..97814db7e2c7bb3039692551a4fbbb7f33baa46a GIT binary patch literal 18684 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 OTGv@~T#9_E>wg3J&>da? literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.woff b/katex/fonts/KaTeX_Caligraphic-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..aec8a33389cb27a7e2e603ece720eb000fb9a0a9 GIT binary patch literal 11460 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�y2~;QCrOg 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/katex/fonts/KaTeX_Caligraphic-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ee5193d7c888fe2e82fb54342f2bb5d4c34b83a5 GIT binary patch literal 10240 zcmV+bDF4@YPew8T0RR9104M+e4gdfE07)1C04Jva0RR9100000000000000000000 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 n`rw@-F{Wjei(Pbp9SPw*Bq!Pn-VdZvp@y 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%0APg>lfK9+NEbfec22@_xp#;D&6-v*%$^l@Z zQK3!5B-6~Y&K5_U1g5H~RxTnyK=$m-v&nAZ8LFh3`9onUxs@BamMgiGb2+`8ahKgi zZI2TFRHDIj`x0n6joePT9-lFVCGsqI7J1GT zRgvdSQ4@K=6m^joP0&$7yziWUB1A@QOghxVmJ@+-y z!yLZuZ6A~0_rWzCh!t@v^Zs-`{;5J$vVW?~R4*ohyn(|Z2CTH!9ZVmpxd$zQjs9a_ z3DY&r)i7I|i?PXUtW$Y|_TI@fA@q#ypoSU|I>-y6jFQqpL9|5CI7uP7j)to5^9qlW zQL_Yr&$<39w;c;5zb_mRH1(MQ2l^qXc_3=!sso&LbXS5&wH}JTOklvMT8e#os2v-c zO(mRdQ{HG|_k8EKZ@*9nb?~4vTH5&0071A}npD1?_old6%Ev~NFRXR&Fh5NE!naOi z0H18B=XR=}?zTSA=9%HU?txAN!}r`Afu&i1cE1hE;?p6zGw7ReF4&1fz zXy6V17p>U+zq(K0XLkWh;|bYOZzmaGjD(EM{5z7rqXz`&ySr2FBIPsv;p{1y!&5%r z#4LVvi2k`Lly&+P-@^KZ;X4p7g|!I0QYQzBLD*MD+L2#k`P%gG&S3Ed3riMnP0uPd zfAv_`W)1^D6oikVkBbBi9CIu)vt?#3OVFTqR*=o}_a_!R68cL9^CywT5IGEy#}Ea~ zmqZamlrTgYLsT$75>*UQ!w_{0(ZKvmG%-XAL$onO2lFk_#SlFV(Z>+3dWPHjPTi#2mCk)k7O7)CVI=8&nlr9)bmz2^KrF3n1Zziv(|d5e>nG=wyi@EmD{)O@0C?JC@ZQ02A}C@bBV%9W2F9Hn3>*x}1sfUI zoHj`?GH8Jqo4Gj{IUp=iHZY6bX%{mC10w?`kj>$=i@^cHW@d2NsKVG07_q^jBVr?S zipxed5N{Vp0|O(ALq~E*1V~9F5Nzhbe8UH-qia_*y2c!Cu4CK^sS5Kz!WC$nYxUYBRjfd?k_|I!BK3B@#n+z z()D$2goCz?Oj1zTP3k5W7aKWT-;&+TBxCZ{m=MbKqN}Q^Xm+a=-P5+MFWN?Y7cDFE z`=Z@M5IdJml*>hw+sqZJuoWY>gCSpT{*GV=nridn zA5jQ+9MQ|7xTiiOx+Ln8oqLxtqs?dJ_pZ1~>=M^~2l1_pSFdA>&s}7md)ImEodD=Os+flwrt z$jZqpC{wONr7G2G)T&djL8B(kTC{4@u2Z*OefkX;G-TL_QDeqUm^7tm+KgFq<}FyX zWZ8;UYc_1!v1`x11BZ?rJ8|mFxeJ%BT)T1W&bGyu`A#s-E^+6YP;LunHzZ3?9=ptL2Jc5`!q(ymb24FCxyEMWiu M000310ssF14|n8Ps{jB1 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/katex/fonts/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..dc3bd4c040abd23afb59d2fe385f80e23b0cff41 GIT binary patch literal 20360 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 {um(f~Q9HvR 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Bold.ttf b/katex/fonts/KaTeX_Main-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dc0185a12290672e819e1d62ac9a955311c60341 GIT binary patch literal 60784 zcmdqKcYIuDoi}=(=kz(#XU_CqC5<#H(^N+zS(ao;?sgnmcHCQHCywnjAc@m~P(xq| zWFbI8Ti_Gmr7Y|MOIcW!%l6#>7g*jc@a_V4cOj6lcyzzdb4IotLb><;@qRuxa_pH? zM(6p}@2@>05J3=}!bL$84sPAqKQ#Nl4xbi;uV28?gGbIBI$Iz9lfTCMzZC>&;mEBQ zQuO1lPYc3#XK;S>_}LR@p7DR{KLp`#Qi5Ro-ibr!&*HdS5PozL|7s^r-*H@u{xFEw zKNN&Nz5e8}Lq`J_Zh2S`{_JTStDnRHo2WjI&)?$JblxV zLkru2UloKe-!2HWe&*2aXX(8CC3t@=u20=~=*+SIbJxIs;(0C#g7UeuH=VyQ7x{rp z5dO6#2x{@{xnpM^dDSm*|93u#>t88QVF>?zg_>BcDrg^5BqGp(QpHp86f2(W(3_49 z4N>#bzYmcQ2&j@Xtk;`h(g2U`A0Q zB`<#l)6X6NzrR*()Y(rxTV)Sa|BYu0<@``x4=))u!(q50DF>B^?hWR?^=ppP@%f>x z!^zx%am{e3if+VuhIBuX^ub?q9BXNwasAh`=nO)QQ zgwF9+koZNtl%|H$;gz-=JS3|5E=l#UH~X)Xyn&M^q(FdPyaz8Iex)RK7ev+X@a#Bv z$a?K_cz5jI9}Iq7BB~+FhA3XV7^ESb#$EWkbCg`~b{VmUZx9_`r|&sx1a7}ia`+s0 ziI4Lc#6cEkA(NWli`T}z_lPc!T_Xxzdu@X>6Pw@TaEQTz+m+RIN(?8pZd*GB&1kKD zg|z99h0Veq;gGPcwRwPu(yqA;qAad#%7{c>3Q|fGkqT5^5F}ALC&(fZWpY*^R3!99 zg-`)!Z-koM3wI)vrJYek=?K)51>Sn6SIGBM(N&L=eja{9lkj zK@eCu0(J(*gf{u_Qf+pAu&305^aH{0Qi@Oi`gD=_SayvYfUiz%8*%NfXT@QGiPER-)iWY6;_`vMO?p)`d z&t7$o9&)B+NEpo&Ute+%}D0J+2D3t2jvae`s z-!U*zzvhw74Fgx50~rTapA~0d&9@5sg&Ty!tpl+A`UQfWmdk`$1Z1mW<(T|4l(TeoZ;AI{}--9C^% zQX&xLM#apkPO7Sq(aI16x(0a$#The-+{$nR!%lF~Zq)0IA^3|R^BAy0Didu;bR%0U zRypZ8e;Res&pw^$Ljj*d4|`5sV^Pccd}kd4C+dgs(YJ<4+d>}j%+*QrV;ye zRTNXyd2N$=m53+ZV`lb9a_{wqZFDg;`>9map%)AqaqsQh)9&cXd1~E6)wb@8I+{ClLUi{`IiIS{i^lew41M%m zfAjWiLvra+(895xfI#vv`q!TL*}>E{L{WMyY6&q{ks&W46f+{e)EY{ zmD~j#j0>Tb>9%}34xfXAKNSpQsbZFV;099`&I-kJTd%UPTa0U`JukV=@h$w;J@~C@A<>Fb01CEV zft=9J|RugqT(+FnL7>YFoY%5)*LOn(jqEeK;&zMe^2?%qRXfSE& zs&tc?>Po%%3Ho_&B+%jNwZhPgXNg^PZc3*H533V37)Sz3`0G5g15Z+CiBmhoBVsU^7yYUQU z84@Fq&6cou;Dt+#TH17w!FQhp3=o)9KZ|Gf2)-8L0fDUGPA6F^np6pt@U)g2f+VoV zD;5@t2}!R79qE|vN(Ga{uBXK``!wdH0x*J< zue4DY$QLxf(@V(vzT(xr4j-6xk$%(fx9ja=?O56CbvneSfJFONe?~p@HG(Ph32`Ri z0u==awkYza4UnboQdf%MdSbcE%Y3aelo>2A+A1o;9|4X#s+P~RISbl{O*uRArjL}p zzVgm-`9gTI829T$QwDSOh#SHq($|paUzQrLnZ5PN(UY6b?yD>0`r)`abLY^TOQ}*h zazb<32h(@9{jeWHK!sLy9!m`c7E%wTio=1*S36G@jZC_=BaK<`|^cy zmljKOP5Crm!ZTD<6kAet8#I?sm3oVn-gKr!em=8ne8lEGJ0zI{z5RjU{FbTikxY3Y zKM<59%@_%e3^zO)p|a1b!Wh~YYQ4pfzn1GRL7P&Lkpz96kQ8#l#@2K?fVGkZ8-axr zBw0F#Xiio@AXz-5a)GsJ9f3{Z)>JN)#jQz?C(wY{0zkzew@@%9xanG>K1qj$I$CG~ zRN?=kM^S^+=Xv0bUdP$?_dobSQIRBv5|$ur%gf8(e00-|5as>NZ+ru2fa2ue{w;e) z%unuvi*`ji*G!i%=Jt;^wPidr0X6cB@>RGd{^EmChY!( zE*awcS9XDFax^9xF1P(Uk0_3e5D+qY^MNBb>yD9JG?*%Z<(D;~U)UhL;bS(Uz&tHJ zZG(}>f=on^5EjBPNi2u~Q59w;6ovb+0D#5f(|H`GnY0PD~7uR3>JALHxa?948 z&(C)Crd3!!!fDK6dWJ|C5t(w~EhnU7UlkF&TOTF6*YD-_5Z5`ki(%kNY~ zQS?W{*_Vx`V(HxW$veh}A9;|t<q`>{u#wv%0)vVwu?%e05Xcm?!Wu?5_CthJkr-zjTf`%; zS5!}vWRgkUHmGF~5#LYgJM^*+kVV}_ch;r9{Soh8$fYvvl|&}Bx~w7<6bgy*#~t%` zCN|cTK}e8gabF|kk;9u3`dU5Zv{Mv87T8zrw=U@m1M`bZj_s{>#hTPZui^t;DTnG zC&tJgEqz!cQEkrIT*#Am0+^IH(^6lZ$nN5?`W%G5Lp51C7@D-u0#TRktC2=k^s&Z zsDMNAeUOKMxYV7`brnlUW<^U4zsltp%dBB-7T&7WI;voK8ZP;D7#$I74MOOdn<>J~ z@Eg8SjHY`tK3iBOvKa{%r%K1={f*5f?X^YMYg=3A_7zfzE^ljQ0k>kj zBp)$CE?4djpBi!4qoWUK=SFiR^!D*>-`ri8nN0Q+Nw9ysDiY@rZ)uA+oT4t9Gl(^D z>`49y$P*3$(h6J5GOjQMS2C`}K#^x$dA75o(BRy!;>yA7P>7?-uJY9olWd%+bP(nr zUyU~L1glNqIsOD?VW8F54XI24D}(aupG8_>P-hVY_lis9-cYs(VGCJ->g7jLEMRV# z9PYGhK)+0r@B=`WSy=ak{duRJ%vE|FHk*^ks#x&Yk>w5AbL$@VALj=}+s4Y|g&sq9 z0`noarHO^UNLEx}H4d)+ff%QY$XEwk{xHO(6JLUUr~14MEz1B2*?f)(e50PrF_*)& zL6!rOgnU}u(Z-UWqbHO8F4igTEZD|g1kbo3n8Ju)eFlHMHk2+D5*$yGZrq(3@2@NI0V5Fa)kUI zTx+kwsFZyCq0&|yC0~BySN8<{GC4s`AbPqqfQRh7CYx3I?;D zYjlXPs71X(2PhDWv)wKsLLye2&3_Fk6gf$ddl4*^kmb7_UcX4E?s&BQSyA;O%6>@F zb+P@a_8;x`INWwhe4}%3kutC6sZ0k`bR7N%D#y%T9SISL*LCxOo!avbW%k^)QxI?dWcS=`P2CFkj4EF;8Xs zMMxSiG(ef394}JG^_yNfl$;(;Mv;|)E0=tJ30XDS+YC{M!Gl1RDAWkoWd08zt!BN_(-n(&-A+T1gxzGf1Kubuzz9-ibQ{`Zawqr-!95U*6q}h5Py<$&sF?pM34RSGGRz z>L-*gjmj#OWc!RS_SntNNZ5UHc5;C@?l?L$d+luo$pB|5cJtV7Ew*!XJ9W=%;>G*K z1j!8s2fv8_LGdog(>VQl#Ux#h z+m1Q)YV|o;RODb>lb@?r4ezVp>UH$>+U$YVK!Ei2?K)l^qQ`*5flyCF0I4ordX&&6 zj*v)VxY5AtACbH7`Xw@}qELhh`49RbA&r>4!B*x1GKVA~M-9(%NY<$&2`pY2-BrM?=~OZi^`vdEc0L>qu1lIh8rTnux!Xu+>P{<;nz`BD~ zEYibX6~Fhd`tA!(6i5oWS>l`=2solf>G!17=TDO-x^wDv`*!Tq4@UQ#I(7JnzCzD7 zQ59)v0gp16NO=e~(tdY$Ii9`VLr9Yj-PAuK)BhsW|92Mxr2P|u0%Ql_wdo%UO%~TP zFh_|5$i`y&8?h?x^q?1_$TcJ&FO4(?`@0J1WY9#w%+r%xf&-{?VUbuBixOGU&-!7e z0Xa(^J;R;zi>wp|m;Y(s-@Sk9v?BzJN)fC4{ z?^BQXgCWQ(_$m&9uYN>_rB;`uz#H%dGVIC{jW7gA4+%mv917qnzlWjsAmiV9hILp5 zesM0Xp_K3cQ2LLCecl;gxY_u(@1G_E+T!fiz46(uLD7DYF^43csSMt`*B2UfafT3b z>FY#s^^Lx1GPds^c){fEZ|Hl4s<5}UN3g+R*kHF1Ns2N(Ylpb8YzGTq0J-TQ1GPwf z8N~qy>H?Ca>_d>^RA9F%gFRijY=#S9DBy89?a)9;sFEtPTLgX|5|>3p0S;jatRjFl zAgw`JR)d{Nn~+w(Yg~apkV~>{qL((C)QowGsktKuGD(lENlWC?y{AvpGc*D%3QaoI^g{^QMQIsM%CTthu-#!N2Ok>qA?~x&lJFBXd2^Y z4OWG{WT_dJso*J2Fq6J~`0lr#I2WYV=IslcMW?j0715>jx~GWxWN)$W-q}n%o|%21 zYf>SvbHzSrAB=UIqOlFB6WN${m4_F0yu}|px$9^#N(wHWUZsnoe`H_KH=jN6yi~Yh%>ss*HM>XFehpr;Fm6q*>O_62BZok*by-2|H zxLqAD0vOpZ^q2d3ON{Y_j;P0D&{~)uCIDOtf>%ocBL}O5LBuWEus29Qt~nRn1yOjN z|1FREAPRQh<8SfXPm}Cv``Quf-}bjpGjYIz#O4ow$o{_cb?!#A_H!&t8HPB#h1;0H zRvE|`t3i0gmV%rW+@THda7}WVh3P!4$KX%PbEFX2wTESo^lD%GbAHFUa}NI#Z)g8r z{`L69O!hRy=q~)mUSX)!4`|6f6>NthoCP8v6x|t=Iu=1Sc^@DiOn9K^dA-NXb>cG1 zIA0MNNX-?QSqs#vbpZ4aC5)JV#wU?iyQ1&24>+8V2-|id#SaaR-Zx+lO%I*RC#c+V zPJQX87Q>(Y;<#%m;g|>)wREYJ?(lsVo_2$BA!6#{-Ylb}g@h5rB-6u?Yn z2H^!#AU*lcjfVF@J>`v{jC%cr8<0?pRtD}b_uITLePhIt%aYF%f1u}zWVHV$eeJ6) z5**!U(+V4>KSH>aP@;N#xz966Vb=aWP$D7}TRE0KM@)jm0}?5`%)1PR!N5V5nK-9e zc9w`8`+P+_c$5t6N$*Qu`U1q(eEezC`OrX3+0&gcP%??Pzb|#970yPV?mG%3#(%dI z!|$#MJ6qdw#38x}bs(|?(M88e%iOZcvSZO{sGJdQmmRQ~sB5xY6Kd58SWx1ACXPpp zGOhD?I0rafW2QFxq1Wa^oKJosd@z7Il8to%rs2@L8@0C2arK6GbZ61lfriZxR z@t`f2wcWY(C~-f2pFg~P!};RYts7rmPko?hvlTy(s=pdy&1L(qKgj z`3M8cJic-)TJ<8^m3mP&ol4;Pn5SnDv`!nmW@O=hMqNf{SoaQOhLZX?c)|0t6#%C& zrF|<*_UXU>_*~-QoGm$cQ{vcx)BW0(#f9C$vJ5%JR~}*hqCK zmkF9^uhNAEX&5{bMW-2yBsy|eC>95-*T4k~J6H__Yvfb$qJki+ZpE6cmm?4i;s7p$ z)C2<^ii!n@3gWLJ(PyYMANK@pzKvN_GU3WynR3Arlics03s}OF7&v1D0An?jv(xphsD zXm%E_X;f3d9=o6^cI}99Mf!9LMcTM8W~5eE1XT^F!2X-&W;ft-rdpHD@uB|iu56my zU#Akj9HDY~Tqlk!w6lIXU>f+0b7T#^F%ZY11qf}4@*oeD7Bn`!()ZY#8QS>5GwFM0 zvcxE5M^PHt;F4rb@ecUItVgpK;cBfYnNRlHR9SJCoin4SZ^-N{jL&Q_cPhFi(#Qao zYCdH!AM+!vm2Ei&COy@J37J?GSUIOor%#1s&@$MaZfPT*%RMM1-xICnrkXxs2Z}>>|5VE{v8sLL)n( z$AyZiDX0=yE4AY^DjZDm81eAO(riXB1o-&7b2p+%6>MGr>XU@;5v~FEQHLnSadV8f_U5L;u@!qg0 zog15#NxvKlGv6EeNEm(&bi8J;oa{4bhIkK5JN;e#r%lo)58{gO@)^Woh>$%?TNu^4 zVd#EF--TMhrp2c-FbLtxe%mr{9eyRg|Bgl5sqf zcF5$?H<&}AMIt-Wnd2-w%XDQk_k$CyQ8!`zAZxiA`&zCBaBo7OhD}%+;rL# z$iqB4;N?lc!qYIx9mBI0b#R!?*vcIY;5N0KAkiN^_u1`5g!Ik+Sdtfu?gEwK%YXtxzY^92xm_kv!0KXAnGJ@mNOaqWSFcKeWd;9CBy?LU8hnhD?Z^Q6We_S@f##x4wgizAKD>hsd8 z@T}W}`PRn8@zE&nY;rnu4FwWBEU=VeLrku*=VjmD7ES6!qDa9c=Y@}!+Y-=!j8Vaw>O&s$CY>FZO1?e z7S*-?a_((gsSQz%gTN>pXn*?-kBFrrB}2EqZH^2u`jGa)cfPY;?7SpT5KgHyFxduf zw-F7Dg^}vL5)CZ>)@XoP>50qHK)I0T@j#-&xeoHJj|L_w+~O5NfZu4LzDyT5L1u-5 zSHc014b2XSoylDA-U}|UoO0dli|qOQ`dtG1ik%&xE)mJ z6*jeIyTbsAphAvF^M(}{S<=lAs-62SC)z{T0BWy*Fc?M?*&g&Pq&+_TwLY7Q9L|+x z@-?y!@+*g6Pbwze?|buOa71TbdV}G6)jRxv!baJD?X}nD3pVfhqYmwc(|4Z1GXCzJ zpJq?)_RJ>kzyE%|q9;G~x15tLSi=Xfh8n9jpuR34wG7vbY$8xEGB=$(8!~Jns}8~_ zLgH&ebv9prDUxjAlFye;aW~-S3K|@xNQ&1jcn3CMn88e^IGzzIXd+^!&@{K%iH+DK z8~I%CQPgUw%kFS*Tgrso#bgo%ksr5zETJjkPHDrI$jcmrdX_CHO%F_$Ao z&=ndxN;H<8LOMJIj5~%DWcU#v2k_-0`n~e#P*jDkRvwT0!V(gSy(l5!ges^oiZW7# zK{$El=r2BX^5ieXA58r6kqOJgTAgFwt2)QJGprWoD=-fUbLsU41I&_Eg%GYzMFpC;ZvzzZpYfkbcYXa{yliY@Twww=E@VY2NFb7x!`J8m5X3{g!2Bl zD^G}ICc`hD@KaBnq#vI6WoQD4ULxE@HS#(1z&ZuxqcBnfa7D~p<8iDO;k({J-;R>N z_~hicNHTQvW#lDvkQvcIwmxC?3$(fVGhpZ6(w}F-ztQGIrNW|w)aoy2nS2Q~swv^G zTCO0vohC|@wV4JH|2D#Ur@~|jjS4{`H0tHvTqY3<_&qLN6)I#%2NJ@V4Yg>; zrwAJ8eJikd22jVc-5s{W-Lv)u27vPZ026tZi-CBP|4e1O{Gw6cw{UW>wDlhEKt1b| zT^J|G(R^2$79rLCY|42;?29m{Ge5Ah_ zj5@OiZ*vkofOPvE$-by5`N$bHnP9w#gBRC=|4~Gjx3y65l}RRzLb^;l;ZB+>F{+r% z$6nnS({W)@C<#;aU%3YAez}7Nu5P(yqIOhB#v>uW*X7U@AxaVI`%AtdB%VAV3rNB- z1#{G__ZaqychIP?(kyrZjcU~t`4~}V_Z+)JzUTCw88eVfQhCrp-X7dCHmE7lf;ZSZ zfriWvY3+aNzVoDd;+C;kh>$*@IZw0wzD7y?iJGyi<*w-bHb`)B^%vwjkj0X4D>`?G zETDB0y|&2AoL;4#Vm}0+>a(0*M)tt_(qLctti_AjRqa!jLbfkHuxpZ;GlEp6~D7J8`hN z;nt7jTLp*gCa>AKYiXxTowBoL7HXS`xw^;iJ~6iOXd2yiVJ~{ggaUYe2t4l*CfM{x zmM9YRk0@wXRYfG@Wi)hJ{O$y{=zaiIcwo!bp!1S0iNe@OUvGCYlM0${JKD{9#2%&t zg!OrPSp5eU9DqNYsnr;AS&K{AI$0zH23vC)|GIFnJ7J3v-eU=F}l|KomQYt278 z98}#$mh|ZEadvoea86Zo!JvaWo$>zJvPwTBNl2djh3rWtl|Vqv-!|9`WM{82NdCY9 z#`mWOscibETYX(+cdX8P1z?59kI5I2vltX^{a9D0cZ@Zd79h#!QW8)QQ()Q@SXNo) zO=BR0B=N8wMj-kdE`)?!xe$U+gh3PtGs$SkrWsJ&Q8edY); za0D8%5THW-!s{>_cb$I7MfXhZ?a}5+qc-WWH#avbMlHhz5GIX%(SE}%{>4M8;filP zwc_^O(kc^M*XU7?LiH_3z~sDcLw@yLVSl9RfCiwNOTLJXfnMQ(k7pfJQP-NidRd>L zs+@$C?Uc!p!$w|PLxRv6LlKa%??94htIxU|MEhN?U*_H99L02ZnK^S7j?|N8@x@v_ zn0c#O1FP>0rCe46MhX+?h51|5wqAP1sc+n{0S#R@ZlNJ%G!*C>?Q)9URhgVSeGP+S zt>)O6Z4?C!F%`}v3;AReJ*e_Xz1jX8FpMN5RvYj~UltYt#SaSSg~wa&xQi+XZK*PZ zR3VhY>TRpS+ z4^k883+L))McP-Ym==%%Nl69qwpzf&sM|8r$}Fp|n8~tw(&Yoi!m(^f)rvih)0+nD z<%Z9hiv@fUq$yC@lf$f>t|B(3J;Udx%WA-<>^Y>37q%2;+J8M$Aka{9KP!d&p6!)7 z@tR#5ZB$IAg8j&+rw11g^!S2dS8sngYg3COqs3ZC$tu2XGw%0z(dR)_DmrC{>ae@C ziF_?+xBC+a!-?wcUG7Z{4<~z_GHMy*K|)6Bb+usB-M+drm25wO_67L7g5L}pOum8O z=uNP8!@{oCcBCI6-vZiyR-BfJQ&moX_o7_`UO+M);RixW4pphpsG;6a?&B4wOe%_+ z19EUaug7i^hUu_t&3Tz@P70iW0Shw8gub%+K2K1tsqW>Y9naRq{20-?cG*L-^FXT` zb;sEoA<9GyMl16+cEEY#O*p_T9^BbG-k}e9=)kb?ikCAme*eqWRHE6h-*|=x6;9%W zons!I>2ra8La?D3q1hTkf9)KsHy1Y-LrfG3OsN}&fF)&FwjUky4kMM|Wi-@XjI<-| z&#*$|y76I^8T1#fEL)rJ3=v26?p2za{lpmuTR=E$r-#>ibnb;|ei?hlH@s1@E68ZC z{^9B{@$x4u3omQgx`?EtSme<0x2NDtHc)Qq@iiC94 zZ@Cn{*KV)^E2b^|M%iBWqwW0#>w~9aHkK(8fExoNew7zo0L#i0p6cY-!Y8n1(-Kw?rpS7I+z+$zW=q@CEF}mda+TZDt%%i3_7_|tQ9Ag## z?qUc6hs4HUZ%kC?1iM{Wad6?hQpa;I8oDORva(`RDX;faVRRUkm~yEnpG7Su5sjFB zH)K~+g)utjT$4k#o%^8{1Ev(YV~JY*CS%`lLaSiwXi~oiLe@?<@aBC<8z@X4J#lmd(n%`>e3ol z6e4Wjy10O<{l*!TB*#Zl4I3KdMd?B=nOG}EyPa_IXuS_GHn6HHx7CoS-`PmKxasI% zrmhboT|9ZyiKJm`TtB<8&Q`259>2kwkWXp5>CO=V0%Pvi7?i8c%cGAncXp|7>vJ^vM!q<5v^siPxh*=~9S^t+XYAIP z)3A{*67K^&`R0*mp)hv$^5jN??9P~;v4ssyPbTAOZfK3*8RM%+?1Lvc#M1{_`(&aE zr5F( zXwJT7QcOHQ%%g=citB7ghY!5e$U-&?Rd7>6wGF$D-rCx5dS*ml@7KuP(d=xWrgTph zvt@9lTh86})mAH`yqg(~XP<@GEksM|f2!5w&|!>tA$DofLs)GB@#<`A1B+EP)>ooI z3U!@8nc3V117Y0by>NM{WHF!YOZBppnI}-l7)ZY7dCbX-KJVoOq`J!06^9zw6M!Lb z&OGwg?(y>BR_oj$SJFM#kDz*Z&2ztO`=IO^DKtm>x}~0QusL?>_$@YSAJo%bmp;YT z^O5ZzGO`1Qmp1N4R~NzbuRuP9we&DQokcUfnnN207J^Lm3To~u#0*KM&daOqqn}OK zr9E-C4#+H69lKVCJ%`5Y00>L^Au}Ijbr{o69&P4TQL|0i$R3;HWehtrgDHMcCb>tG zZjvv?J#KUX`tQ>A?P1T%bwSJJ=6d|m7|Zz}dL(Z{#5~7*7bexvmn}+m%phah0QDs7n?LYd=;T z9E9!18ZOt8YK$oiy)x8=r6IgTiykztfF5^tCC>coQK#GOsBehP*-4=5r4`IX>NW;h zt?H3j?K@VHkIBa(^pi{ZXu!tK5%hJVug*DMZo&mA3YyKcP1)$lG(AX_i|)Ok4=P5< zOfBLEjtT9x`5%qB98~n4^`f=V-Pa8&nXCUz?xHUR8auoAbOJ$Tnb8holR(arc$SsH zS(Xm6%3ks^BsVHNY6!Ea0d=NzHwY@O+OzJqwTu|9WyK_a(JUZ>;>DyIwyi+JQy|y@ z@&GWM2^mfvUany_=$*}nA4cZT8Piq2y-Afy!4ZCGNM4YTR4&jn&d)Yq`$nBeQAzLV zPG$0HzGjHKy>EC$B^bmOIPeC@Bisb}onZBjIx@a}Z18J=PuQ)9)@}t52aDNA91yfy zGZ{d)ITgl7(XUuQ`YaxcI1OQfPB6avU|R63oToew3|w8U;fLo68a!56pHkp(t)E(_ zyRN$qh?=N2XU>(YqniVb=Yx(vWq%Rhn|;LS?e(RWb~;eZQ?V_^rzGjaA5%ScNhzhM zy+xIX`wZ-j_K8pMG(s|I6jiyqYTSQOb8^%cS-nJOFqzRSbhiq<5o8GFk+5WSs1=~s z&X5SOOUUENhKfF`cZXR)a03Yr{)dSt`*T%xz5>(3lJn&Cj_q@rGV7Jb{1u-jmnGd- z@sCN~SeR_GPiNM#U9^`Ec&Vs(UaT#X?&;ZnEn8)&r?;E^J25YAKW;Ui9U+0(5SNJH>M)ny zhH$>+4Qf;;jT%KK%R)M47wNo}@l0cMLJ;(mC_-S_bcKb)Eb79BTKh0#8qr{wGVB_l zjI+P~qUDyeGFb4T=@Jym*x;hD6AXml1=Ptfly^0Cpe0tC5EdM*Oz+)_lz#>07W=C~OVtMnLuowUOLvcgg zGvzcB*;E+iS0beF*ViEh72&$Ifl*$&V!7V+r7NucO6e-vLPq#SD_mDyhRO0;_l9~S z$EIlzL&N-b(z*g~0s$Q$LTJ23^2J(gqYBb=id+6{cEJ9*&q?TbZvUb*9LVQXIhiD$ zFMnAy=)EsBdTQ=*J3FG#_oI3x`R!C}zX#1uRKh7G=(ei;98Z93z3PZ;wL2?Vd=L#le(Htl4fuCW0AELBX z5@u(nCQCgzI9+rh?UDAdkc=RC&sPV|!5*w7ugxHH)xiLAz|0SK@==9;IxZHfHP&Hn z{lHga>DEuJTCI=MTBAR#_F~L>}#!UY|s}Lfy89 zTJp1X!li=?zCxu7^&5g7>Vdyy|8MsaD*kQxT%U<^?bB zpn{;!Aci&BRrI(SOb&XKC$Pa2vh_Co`4IUQ`Icmcf4RW>Z`L?+4YNc`n6Fg&AbWMd zDd2WQR+!-B1N;DmYu*1xzzI>>1Fy=;50bcb=k|>=qr;WKcr+C7BAds;O$L2}F)`q0 z6{gM)M@@`F_%Z!{B}Pq*Yg|?~#sLT={$dYZV-xKFr*@dJOUY#{eoaAym6;m2Kz~TPqWurKQoohdN!LTR?ogKkx?}sW0nWT^kC$;T zGl2q(5(o1%FG}YGx!SLyc5|(eW^ z-6QHEomG>;E3dJk2Ne#|AZGDCAsEPYU?Ngv3dZrUOIXVJ^41I~FA8#i8wm1lYaA#P zR{K+#^0?+qo#~%0_vey*^c6GZzU-)<(k+>CIg{(9eOONmxal+4u*feUI)%gt&=as@(L{(s@KayJXTuiXIqy6}yMg_P@9PJxFe* z4pnadQuh1hvuCk)8*`k(6EsBLMn8jn7E?m36-IdkePaiBU<@LgbjjRPT-S=qb8422 z3$ijO{=h^8(Lz*zPk7I-7i$|G{!f~WwPyatj%=V-{$`^IlX&zkbHLa=cut}TktzpwI0E&HF*?alSeognHt{CTM5ve z!s=$|$mGT}tJc_@ERTo26IT0?FEw_(rKd9Ll4$ZRhPO6e0qhpVU~7vD3BwBMcNspQ zI?6iL#Q#KZ#&+Ra;auw`BrfIz36nMwCT-BwZL{lVO&?WV#Afdd-N5V}@>&3B8HV4n zh|xy|fA(SHK71tb&yF2}u;bbt*X-JfkKMj)GtY(1OtpqFNz`8sqz5CW$Cph9))jIZ zbuWDURkKB9<;oBh?@M689%gbN7W@bCN@psmhB5_f$MJdi3)1bl{e)esRtj$^wCKyM z2_!9=(p{!4Vf5+Kxw0qda5S5Po^oztIbDmUy_7adFJ`W`zjpw5@@ecIFb7BgAbIP4 zj3xaD^Cr~UoC?4OFihEg9zAq{P}$yo#*Tqc@*~}mDV{>lc4wC9N4MUJ{`ylyz3)C2 z!@qa+pXuLIFL14o#>@!D$_HJROq;cdH@l3UJSxLGFXdsEJxzi=De z8nn8#`Z?&?k1?@1iM<%H13&-|zF}fC&UQGV3(*MdET{!LyKYvHS5mOG%)jUUO>KwmmUIe8HZCw4`l&YdCe!b!K!cHZkd;uk_e==lAWn z=3xHWpAvWbd&}2n+Y!u31n$VrgY$9Z2CMYbh_F6y^?`clu)AA?Xi^`{khrh_b&IyH zI=BFQB`qvlmp24V%1Rpc=;;*x__!q>cLSPa8C8YYn9{M<#>;Qe=hCYD#yi=?ghwmv zQ}_;oVFft?^pelc4A)t)-tFXBb>!NGZDcd+C2#QPg_m3z2;dOHVhn2=4_Y#Kr7Qv= zMFNwRrI{V&I@_6wMo5$?6f%X!Fr2$_<3`1OYN=v89EE8wBPDrKKDVzL52nMRlt=CN zYO#D0(E%Es@}Wpqc^Bpxv4x+_Wa`;!Hs?J9!^F2=_x5G8LBw^luibYHTc3nesc_IQ zRfF{{d*Y_y^dbfp1M$)RzFD>XkL`bkSTYGleIH}XUlOKK*F7Nok5&)}PZ%Y-wufL- zIbdHYOEA>dDLRb^x@KrPb~bT{XiYy0r;WW!=^>PE9g^xe;KLIncRQ)ludf` zo8`qVn?kb9V`5mWcJAc7RJpF4csL_g7CvaAjW`m_7Tl~2DOI5U8?>)SL+$Powo)xh zPHf9c-xQ+c@Da3Gl+PSPVZpI=^G0mRpB&IwnSup2-`Zz90#+6 znIvzu+mW-5+C%nGJ%nj?K(%~4Cn9-#?Z5>l{}qXOoOup1(Z#z?9~ z{n*2k?WHQr2iD9as~mK)qKF(&IUvH&KtAgQmLe%$IT#8y8jP{9i)+ZKsHz;Ra0YV> z1(eScdyTpXjxvT8t7zKD4EATUJ*l*Q6!nC|gL!*4TS}$RROkM*;@lH)+7$8H-4Di! zlP#B2$&)X+#zsSgHX2InZdPB=rLi&oe#4#1lRKsreIm1cYs!4&HSIrkwr*TW>SXr> zY+h*fIdT)~AtUG&v!&owuxAeM6k}~OD373fj1Lb;DCeTP(CU$bHDm2z43CAG`TBL& z@t&E>*YS3#%0N#S`s;iSLl_|=tX(Q-SsZSFtjapF_e}mRv&FSSF+m~TEyh%Z=?ZEU z%AXC*02~t8uE&(5Q&!yy8mJ8a*4oeEgg-Y&7WsV>H zCGp!_>yI+DwR81Z=`5y)7KDAmyDbyHK|ucu_UdANM7pNv%$jI6RXc>ebFCgKRODG} z5zAoVrOn2R7O?ns`fw*k>%a{Mev(^9Hm{dqU|hGd-M{ z=B@k;WWiW49a*y=pcdd3f}+dA2(U*yZNcn3QWHc$va+GM{NTPV@AW|YJJ4-kA*yRXLjD62qk)vI z{fsRYaDqD=$`RYBf!M zDbd|wn>V?5%!f`|cZlS;l~(RJGu(gIn5vHbiecWkk-Uj4BsT2LjUEV9$E%Ty!!pUR zwyQr~ZICC)7cdQX;uGPJ3(@OZV^|iJ02_d@{UX4I4dZDt~o*&0^MnNTt)Ic%jMJq)9Di`y<{BUu+_7i{732G=5l=gZZ!>*hMAjiL@@7jmBYa0Ug z*oF=4z8{gFldsXwV`o(4BT$H&V^GNy;D`hd@lc2>v04&UijJSM2*=14$hsg`s2_wBsDujStQcmXcx~7vXGxeQL3A zt|w~xMuw^1x3tL?p)ZN`x@Tr+IMkI_J@};KOhtaUAglte}drY z0N%Tp@3h;nyG4KmSd@V*BzCu8kci6&b~Ho)jRCUc@Fuxp_zsSlp7A{u(U_&v6J=e- zewuTV^Y}(t_ZHaB$P3gV{1llQ$NC*(gThkK%{ukHyd#KdFLTRZTo@=OM13IOqmF@m zx>qGBUxqcAkqQmb!QUk}vbMANWr==aZiI~fzetW?9S3O_GEN^C{x@aB=*NCbM(hEy zN`6GY3dtx6aULOmyd#0p|G{3ITK-rj)kFDiT$pl#^s(kokezKL&tMUfbC-|uBcHMr zGGkjDBd#7z?3+>5Brg% zprbYcI=Ze6buD$lrmXl6pXt1^eaHk$L%=&2nPe?IU3&=O%i6vn=#jBY%h{wVU1IYx z6kUjd_yG1!GO@p$_OW;bJ30;ETM1Na#swn<5Hr@ViH*SWEE9=sMk@{R0lj^seOOe; zE!en8ibN1+kaI{#d_J&4FWq+i&ELD(&Np=u>07W%5x#~&x^zaBo-4e;z4Xi0y;2f7&PCD5r0{6H7y6@DO@#Aw81 zBH&$DNoz1#u}T_=dv88qS69eCin5c01Bxz-|43F0@BP1zy`joWOLSqW+y@?s^Z>SG z$9G5AwM*~9TLhh7`*Zr|Uq!VHJ3iv~e;revEdCe;y$bnA7$3yuW2z~$8VCkar?G%g z3Qij+DhRq@8y(OlZHh%+#AeT!Vvoy#lUmp5Ma0}F-N<%-yYBZUlh-%NbhFw1%u{-k zh=v%mk&hTrydX`T{MBCpK%c7D2zJ98L77xq5dZSC=`{YV3f~cJ`l!z43#o(`Ht{=_ z3}dH*_oA=l#blVZOJDBtyK2)Dv4+hSuG;3Lx7mceayjO5i@Yo7(MB$@h0hL9@Plni zkt#AtsW%!!TrF4#n(in|hDDe|yuY;X-wVy@FM$(nc(R&Xr zeUOSClpZ)FB#L^?PE~s7K2_KBTjDLZn^LXNyNC7r@^wHD{tyw2^3g0?2bX`a)7saL z6&?L*7OP^?&wi|S8oqhO8t%=a0ETN?^4_VXTO$Y}1`kHl8?Kd%va!uCxAF*MA94oT zZwopfB2qZtlKtCoiuO)!Id?>*vGAP<+s;w9rs_eWZmLgdk3Gsr{pe%bRDF|5g4j}k zXW%*%??$)XG$arKX^&rk1g=>obR}8eM9`>RslW3{8K%grsWZn{!EL%k2K&sZF3gojljFx^XTUYRWoSB! znRNyGJyqPuVUQCiSf7U9sZU+p-&M|k`qTMx*ZzxBy3@}ZI8K~k*SISNYR2fj$?E%^ z$F`o`$iC@85T0kL_ur0EYkWHJc{Ux$?~?BPUGI|a?A$eqoxYz1@<|HWRw{y6g?0B5 zmZufS9=v0LHTEq?#xo3Ec&&scr{Nl|WAdb!s-L}ob|7c^;+dTxI|9M=U+O_VKR>8D zH}u@PGo(oF7 zSt2i3KF^O}^+6`9Y>!sR<7L`hb&_-sWle89v&#f{P{N*gFKds91h9pt@oUe#EkD3% zw#(E>$nG@fy9_&VRI)FA7-moS|Ic@h!Q-s=}(;6niMzR=uz<41M zSS=9Qe_7_^LII2u%I9BjmW@whesE%>)LqC0@ns~)+;3wEG2go2q=HE?ZW+Kw%X~nl z*^bI!tHsqUrsLL3QHg@h+<{k{5_X-0!@HQsAdGfJdJ@PWV2cQUI^O4^e)I~VlOoX* zjb}3PXir=r9zUVF%O+zIK$mSU*jc22Rf;dzz@7znWnyMpp?)`si!rU0PG);lPr9YW z#5i&Lv-PasO~fJ3>7JQfI?LbFWwXGlz7O^e8{J}eJyW!OFqkDEQY}z=GS>`!=eo9(&r>&r8lMu#R9X)76F;nWncRPpp2v$c7Wzy ztICWtk8&*(?O*!{>!u=xkvQ2q2@HIG)%uJ~D;L$AF3l&06v@*ew+9u$zF;hui7Vc| z7asR2@eIkqln~g<&^+Zo3M!p@*qU9C4v{Fiy-byN&=~3OO zN-w^+gxXCoHH$VPeyYismF%4HXWOHr?3-19GwsQdCc7&+lH`py4l_NPxqK?YnVh(M zjv*NIAxK~1-@}r{$bYmI!Xv{ft)PNveIHAx7%G}9^Yg3U$&zPbo+ZVM*5Jag9(lp{ zwvZpZV3X|^yubQ;UAnK@cl+vhFqc^&O%`bdaoYOteCgu(0H2j3q3pT10`ZXKKZ;dR z{URFgr7=moUvl+Gv@(>o*}d(HiYJ8fv7LNa%^1usU;3YvtbUjNjgSUPz&ElCl-T~s zYcK)p<)6$%4c&3v)29pXbJ<-E#a;B<-Q~O=`#xj9*YSZ51cT(9pMKot(;YdFfy|@o z$wR=M*aQ_5-+r%yeQgfDZRR<8FTBG6{Jto|U;$<|e601Zfi)B|Xv|%z=EVU?Dpc%*R=uOR4_MBv0RSp}z2oRe-Nr92ciGOVa_D>}k z3XEfqB2jWF(;Lzoz1VW3B$>-z_vo!9udEuxm*{87dd-t5jw;j@8S>?RzYz(c(kTC2 z!B-eD+wvTCRQrsuL3ji)_^FMm3nbS9e;k_+d*l*!7HR%*w2p-L+3Dvd$`yHyBJ%c9su-^Q^CBm487Tvg8ssZRu@g zG@EZSU}ENyZIbJaY?pJkm$ZV>0V9zfnzd1CJ38Z16w$u#VJA)ZUnhN`eto~~XaaV@ z<_}`0AA5A(D`(u^p|Y#H5+5oa-eV3PsKt|U7k26rmlo~u3L3lvS%Y}~@9N$=KCbG_ z8^7n4>3uXs8kIXUl161T>KaK_ua@N^7uk}rvBr{Y3(F<43Z9Pz7ggNp^Kvay$nUNKWXZfHyG*a5W6ky~Z(4b*@lEe-v+>vYS~ z&H+PUMa_VNrT)1A!hpw%z&ug0*ewCk+3a`Nv)rbfinfT~W>hSlg%*oMZd~95qCO`( zH{T94)Mj}sMyJ>9D=bHp;KIW1_zch`tVJ)a>S^_(m*TKn65{H($0Rmj)B0&Cl_GMN zLdiW|FP1uO634tYqJUSXt?Tskv&jxhbMF;%3hZ9H!x`Tk3d^Qehp2bfMTc`FBraDx z-sTNJ5KxO0>!P8pqoXn$wX=W+zIB1Hc_Lt#ZNO?G5BEi1j?HbT=pL+oq!&rwTg`qo zyKks#OOCU?P_bf*$3QQIv|_z(ap@gJg#opT%@>xHkKJhg(5?bd<;sPa_#^fLvT==} zz2^P^RDdPzjA>)B-Z< z;h;@;!jEy5(JyL)773L=I(Qs@fGc2tgkIFA?bHZ?z$r(#9+x@KLu>+z@Ls{M(q=O3 z+Onbm-ZY4vfR+Tw*(GmH_W^H&zGD)k}e++?#VVt$+A z${#LJvRGn|g~{gP+z;ziy_m(k65RMA26SFyerb00rX!DfBV~CuySpGzQ2ntAm_o6X zbz~vx((EZO$PL$4G_3CN+Y8`pD~*2=<`lUd!k}KO+oo(uTqi1cfN5KTXWUDS0N~(@d6kk~S!a@JU*uI-FC$ZHj)N zy<k~H1%$tb(UCq$jm)L9_^7DOOl3IWPl z9H`87=IOE5a8MRuPBw+g@|?ML58meTTw~O?#?ARPsG*Y_odwE&7L-)_Ew0>ft}aKe zgf3fhXDK3{?I|fRyS+AF!y4$hbW(GJC9ft|oAo;uelNEmk3kVIo@>Ue&xpzua{ojc zT*68kF*FVuYGI!NrqSOKk0-S=wR5jmXY#^3P06}w#AX}0C<`Vkx7Va|Hy1h(0hVoX z`Sfh-huk&*uTVhsVo=Y}hLqsTfq8)Fn~7J5Z0H_YXc^QGl^C2%*?Qhoxtt692?p!Lp`;GmM`@~gwvft z#mhTL*13?{=hAh+d%7Drf&cqruOOwMZ5e4NQx7DU^_$ILTu%Jrvz+Lu7u&!UUPA5x z-N{l~d!!XU5drRHv_C4r8X?vIPOL4BX$e5A6bHH+<`OHK<&|5I5>hAsa{hWm&4evF zqfW*?y82+P3H#&qcaN{dio|BycAP_@;4k-XpEV>4r<~H0+vE#ndMnfnuC%{u@9cVy4{8iACaR? zma?O@zOtBa{*%`+TJwU_sDS?|c$=iLt{KI>KA|=O?SUr9a^eDp32GkCT1=7!wGLeo zuZ27*9h;$n^&F%@6E=u;{7z- zUc!6YK>(htWY6Ic6Uh*e8n9d}!kkO%IM489%$t3oLU^`y4oJJ)jN})J$7! z0-6t;zJr<|OtdaX+qdYfL-o=*Oy~EPHds7uA@(u1a*8t=I*Uc&A>cSMh~*gA(rXWbAFhFW|Uc0o8Qo-4Ym z3$s<9tGrpt4M<8cdHQq+Kj$(NX=c0%$2_1?c;cish2~qDaW#u3V%oW^JmBXoFQ%89SZ&5so&0tt{E8b0_H%zF%OTW_4uri)wFz9ry zkFMe`MxZU;%()R-Ni#WlJLGAy1tc1cMWTJ0Dk>lQyi<>8qRwONaZ`H~Z?u5d;f*Wr zggQ}%D|IR><>9i8p>80agI(ctt~=IXHkL?ognPcmy&*ZITZm9D8iiWcPhA#85raXa zjhe?%oJ1=gk@R2ew+MoiMWb}*N`nE}o;Xs=J4~tJ6jFU-*(xL71_|flnmgb?Mi^b$ zfbB0mX)O;)D?dORyRdSs4CYx#%R}W8p=#D9pzhmMm4}0w+a2YB;%YssTFnno7w>B$OefMKVgygP>!i0ejlu^eVEc z0Kt6&JfbOeSL$wCX+3g#VORGi=sGT7d&wpGsnjV$dC;Wjyo%LeTzzBH3WSs!oqM0C z7Ynf80@FF;l`uo!%m^q2q<#X!{IbZFjzG?&wSxHuMRlz>k0EBr1* zJ29{yy3MA-d<5s`7n&$>2C@(su~{Ex=Hj*z6T*6siOggDOqb4LRR*6ez`9juHI=j> z^Pgz=hEKfIQd);xO?9P~RQ7#{EQ9veZNQccswAnwEF^yr3uW1EH0*rRX8Zm&yDY;6 zNrtsV)lmR~!A&ir-fBtrR**}Q8QSAKgpV-*o@RPz<>^774FUX*n%M1|qJ1J5705X{ zzy?gE1!gR5FqF{|^-t_|AS++~O;a_6MuS!HA_ZWu+>knzIt9%z`p#C-1T_OvP1l#& zQg^5B#zkzXW3G(5^l%^1Ikw;6hXaFxg!$pAnsx^ksm_*aBclDBR%QwZ;K>eEeNF*7 zRqL%b-dpR@TOCEj9ow)$w$JNyWNg}+gh-udlS46y_X+w1{l&SNuO_{CLCZZ(T=G#b z#@TVa2s&M?FsYYhC0bKv(R%654IXT}A}Kn=iGahIJR9!Ry30~l6NTN$;IkUgLyNsF zeiDJv#Aun@ka|4@c_$q3@*a~Ed;cxP0m-UE@^HP*Dg}yf>9;Eq?>lb*MsJnn8er@~ za2T3R0AecK&^C8E&KY;RYj0&5dVVS zg6J->_6I9cuY?dmP#n>F8fvf+k|^Y374-mLMPX;^Cx=(3@l{)+sk$}vgh`f7ub*hy z$oUu$27J+nCOgs&Xp5(e!VT2Y;46+0X7N+6Mm|n90^I<>V>_Nj<`z+B_Uz1o(aM@% z*y1+hT$Z0p=w156bBlLvw$t~X-Ju({Hp_Bu*lf-%$1wDp#d*vsCU(3Z)0o$Ze22Ae z4%z?Ph81wq1$ z@CWg7@Vs33mKmN5=Xq^>X5!2o?F~{J!5;Jwu{q-dvf<`}J8@<=8!#0X#n?z`AxukF zBza1`q8MO2mG8WR{qXkNf{~R2;yo6pC}(fly<=^*C(B}-Kd2ZmMpm&^e`2dfAAE>< zsAb{z;_c$|kT3@ULr=UspC}pxOhS8oF_-0OWOJ0sI2#ZH4G%fo(9QpV~`v9h*~Qj5jr3s&ZNjh5amdS*Ymucqgr^R}6xf9MZJ zrn*{E5A;_0N?MDu@OA{B2Jy@m&sTpyE z0;56ep+ZBqvycD#zat#zjbCE{?o3ru4De$wydb+^x-@{i6nL@ncp#%={=+Vv76UAZ z+-obga7uK5@>_&;!Z^IP66;sBVQ-ntdX)!m;)OsKbvNk_cwZCkgQB^ii1g0X@8A-c z@N6<=$i)>}6oLjC;_gT>kNhEwlWr5r|9T9FPnxrk(@XCzFYpxPBswBN@CM{oaa-Ib zKrHGDvmz@7tD8#-upuglR-`OYclvcDO^OL>Y9>Zvn?&=W+@ivI6E46`!B`|V;I!zF zU|Duo-LQZB!n%rjlVru8lP>G+lnbMvV%;Oxedi6~@#tOmPjE48FQ;JNu)(YF9U7zm&vJ0ed=SemkUZ8GLg1(MOqh zQDEdtMk?4EXQ)@%IVZnzH}WB2p~#) z`C3-k6xa``Xy!t_-@N)jmf_8}aQ4=l2G_QZd{6e_8Jz9C#JA_ZT=U~pb6wqKLrNuS2ju+o|}EiKc~qfdrMY9t)jW?j$${1rJ- zV~mo@24LbtS7w#z3w<9N-fV-8dU*TQ#se3Cnr9B{{gy$3`%Rp^nSpy2`vVS$vVCZH z){*749p1DRHZbgL4E-U2zNZhMYv-py*YX0u^IUiZ-W}Q4a|e0kNsi-rYT*vbVZMlh z>-t$g@bb#(NIFeQ%7b@cHsWwFM$;<;?KemPo+(hPLr~kN+n5g9N791bd{^d29!baK zi^dWoO9$)YAo|jnPRHW2haOhk-iIGaw<(-~y#tw1QiyeS00s zzG=v^LAU$ae|8yN*a}HxSBO8&0&7i8rgCF0m(40YqO~TI?;l>v+`IIDo#Y=hJ0Rq; zx7f?Df9g&S1_>@b_UK#W7ob^dp1&5N+F}Ae&NtalVLTO3Ny=SJU9tI|O~d!F=lraB#nkx+ z?c$0RQ@6iz&*shdZ02)8=K1Iujn3Zv>~}qL`NOD(*DkDPh|gixHE)Pjtv=w=>7CnqWWD9lVe{bjU`g1SDz5G@)pW0@F?xL_`elG!BZ-dl zeTuGk*d|Glh$yf2`fP@^s%z&!PFG&nsF_`C8_zN64n+*>SG14V#dLMV(MZ%rxdl(VR)pr@0~8MyyV2B}%+Ew0)I1PN*K?1V5sXhBTIdBi>%r zeqyd4U>L-EWX3w%Qp`1g9k=H?@7eGl5;QQ_BQhnQCb|`{V-x>h%>r~qt;T>xT;vw7c*M^ zBV`Fq3eciRzF_*KA3L330yi-q%SWmQcy6%18#?EIj|m#CdbE=+S)A}6TQm-nI3k=sjd0UhG6#uk*qEf+-8WgjlT`ye{*@X6$-q&|}14J0Zp3G5x{^v0gy}rJusY z?L{sNYyoXbm8Z%~5b$9UAf2iBHE|m}fORL`Mh+{d1&qmbKuy}h$ZSyb@31+69y=`Z zSk^G?LE^GPdP@B{K2cxl5DgC4HN*-eB1Y(^IRAfRqJn%x@btLgxn1k?NYbPC{bBKa zhL-qG zjA(G6G;@I210J|C%eknh-}T|7A4SaWa1YY0o9?(|CANzbjSl~J^Q*4L-s3wea)&o! zFih(lRr%lbyOnQzOIO($s4R->zV!_yt>MrxKo-huZeNCGJ&Vls>6r+_ktc7|#w!@qYflKZhM)fEYJ{V*KdDkyRWL@w^Nu>qbY02ok*=kjS1a0;RXVY8fOI z;t_a>v;&d`FZzOeYkDy3X_(_*`alRm#{f0lTeBVvfrta7JQXjZiy*Ad2Nd1O3>_0+fy_l8ZF=BnBTmbgF4{~15Q;kj&c4-5sVXp;RIkq9vB=T$ zN)d)#p)ijz+i1@bs{!I#hf=$>Ma?fL9faGLMV7tWBGJO`mXS)uQXg^ppj#rZym_gW z{aI)dR)cE{b{Pb4jm6m&5OLqUd;@3Y8FXk;0kM5z?O8UtE?(O#HDD7dFhfMu0YQ3O zdEFXBf;FvF%H@1hz?u!cfu(-PiY2MRlHWYhw?SW47;LMAO;J&(c0Cp_OmD?zXnWV?=QM0@?GEd$ zeU(A8*<*6<=+4cq+csEId}h7cFOmWp)~I!k@I)e;LKsjXi&=kp8UfWjjA z0ef!h&8oaWeK)pJDYIFZ)-lDYPH}<5?8@ep`Wi6dfec78SamV>f+b9F+c-u{rhyy< z`LZT{5CdZ1IvOjgjW>(l%;?S_P~$}sOr%D0$;^cn6|ss7XG+XQCl>Pf7^SPO%FoTq zzv?RA{2;G$)6F^)e2{cjIa+%75Y@Dqd{D=299 zy+{%%S2CPFjfO2}C&5(r8J^l}&PH^iZJCRH9+i^Pn2NpDbG=GRWIU4Ohd%0*#pp-IX^OkogG zx#7u*5Tsd(>4gAZRH(_LB!h643O6EXSRp0w;lGqsNqJ7IA@$|dGm_C|5f8!of<6|z zr#^hyZZ*iPtXM3kVZnYScd++brvfPnx&!qn1R{~b228W}07;uQH-xX}G z=vWhg(|{wNNjc5WsMy{|13`2V2qYzqEj$ja3?k1H{7Cd9qk-8qiw!lk?@}OYE6%ji zFsLaF$G&nc^Ms>~fiFM>cH#+x$JMvjYt=bByLT9$IDu=aUu`bfa7{>Et}m2bJG+W2 z3UW6zwSi4@HKEQqKG3T{^q7KHx1B{fZS%cum=Q*o}=$MT+kXi&{6 zCr{Y--XFjg-J3Ta@<06;G=ay@0PHyF1F^%$^@-A0zV7hwS|?vIkUmgS2((y!8Z@p- zJIx7W+~(d`8PQ`bV-)-Ym~vx|%x^CLWm!Ze9UN)bM0&%#qea{R6no%#cKx=Z0sb6Hr(qYxH=;Q|FHHcW&Sl zk_8f*CP8P`VfdD_=io$(E}0-X`jO$lZCH z$Fp*!l`<%=TN=H#1kOE4-fhW=#B^{789y zLt8%Ej0@|t7t3+TF=Qd*4+g`}`w_<4vG8H!@jC(uvH*IlYUs4=9hUl9${~(S(2}CDQO?QJd}~pD zE^0aOCY8el%NTW8!6Z!_sot z4wILPFp1X3q0lmK?mNWBS?V>I!QOuKyKrpC+xVinxX66#=N)3{#uvTKOf}#6VI9j8 zQAu~ln#%c`Sx|rNsx~Xj(WhPw@|9esB_Yg=rc($c4Iugc`!%4rm`n8fASEY?bKuVo zwfI%bqc=XjxeomV$~g9znay7bpf{Zr){bjFHq$$yOFi)MtMmYI^)f7n!L?f8pA9T` zwboab7lm@(AIqBNnA?_>2w&~{8sgBC0`oo!943u0{O6%phAJf;#>VN(%XWgD7L#C;-wuz}LsvKff^PU&)n(_tu zwq7#YchkS<@w`1#)!p0A@Am%3ze1l}xk5j+tS2Ji(56$>rG;qZ`}G7h5^dx9afk*! zYF@fc7%gbwdo-(l-JYfc!FXP{>o;$B`V}^H`LEH6$-Ba6(b?M(tqcZATBreU{Knp` z-*d%(%7A;zs=gB|;gd%CfD9ECf{&R_l@)y;6(J`Yk7k0}gS+0sc?1i~_ zVU;8yOq9p-+sKFc89aR)4I#7{c# z%%gaw6VEi0-PHvisb$;dEGkkT?8s(sFq6Y?(s+}P^_Q6Mywl^K|FGYC=bhR!uo9)* z4zLj#NYViUY9V|zOSKsjVVd7T>hUc^b2V%e@kMJjxMerUo!fp9X&*mQh*Q>_I zL~x?*c*m1GM;kKF^Kp$R4@@td?QuyYSlnq)jPSui`%T>BIA7&0Fj$fJq8f@2|NH~| z$=F?%k>*^w8#?e@zlX- zC;XU$>XqdRBtLqxH za+UCD;Vm`w3hhHK;tp_k_%REp#HG!UkX$)@fG_eP< z%P6zJ5lENSTjlSL>EOX+VI`4=kk`*NR$gAL^RoX^oJiPgQ1r=cbl%7zqa+ZYP!cU~{h`C7MS&UV_=~T2NI}533F+bLYWqp=h zquDnKBQ$9d(0o5@3S(<1B*z(6SPh4Q+IX8TE*)d3e`0JLJ02mlKu$fjCic?iVI-O} znBDMP`|Q8ftYstE;leckHr2COOY2vxs4unr{e|x{_QDFk#J(L1TvA;P4_L34B`(gZ zd|vdY{`$fTKhW#_1))%ZAGRAr-!J@!@RoE6Bafo*!6!=!yvS^<%~(r&37(Z0PakyU zj9~la3Y_I<@nw1&_RZy|Us`s`Ar(F?f16WL9-muF)f}gpa+94wP3aYLhPci+T}o^0 zjU|M)>|_ZQhEEgZk|Hp7r7$T!ChdMV=7{es$J4u2Uhlqg<#Oz>ufPAf37-pGEPy%|1_w6 zr*VeGxx}eK1jnA|h~fVPa4f(j{bi5;odX;Sg)%^D5d02WKFFZl%0>JOoAPPQSf?++ zTJ>elg%#&tHTSFUvG3s_gD&t|@bYQckMH6(dY;Q~(Tbq;p0+?=R9tI%SC|BmQ^8YE zl=JByw^V)ps(j=|Vos~wKKpv4t2^@P3rbY`w8L(32kU^-0{SQ&hK8Hqn8i? zdIx5csyl4#dZ*PSn*-hDtE`c0axAh5ZdafBl#^B;y_l`O1bdeo-tDlkW^)a+=5gb4 zX^qtMN)q{47VF^%4Y$JcU<3H>4`rjn3MJnCO!WRSvI87MHh%iVNj7l;#y|u#u~ycv zLyZ3XtgMsawY0JI?l5+Ux1`=qy}^*!o;abH4^HR?UokwH?a8c<$w0GInH5>W@`A+K zu*CSbf?W5h4kIx;_P{dkhD*rU`*($OK}sqm!#ZnT#?nNgXCWqiiMgNX!O3Z&V;Xb(VQ?x$-NrAl90$z9wz-yg% zE?%omvgjEr z3l;Dp|BjHuHMWtwv|o(M=XgkCOUR1b7L?**jh@L{kekZtete8Qb5r9QnB6R^n{N5p zE64J)*1BZbwKhwtF8%pKw@+SQ?e&(u^3cO`?q1d z#{y4Xa${ZhExkAOUUK8HOM7p^DC=0b91_zHc|=|X`L`>@P!jNYn`A}MI^hDj=>Vb@ zZOqTXLFofFiWwgNFwMhStk;PjyWChKdG#*2q*Qk4y;6IeJkJ0b<~KD*6q z?;44&Z(6xg*>r?9I3v8iftBfZVA&W#FE*BEqC+@)_xS*!CdbgYr4Rm5llb_hQ4AL= ztcrO4AfMKv^o9t$s#deJrM@SSHCC(7QCn9w)vXsTt=Lj%sI09%Uo(PIpIBkGDPgQoSX{c34v zurZpIRo)otC{z8b*PFh+wa>0ETfe5hxFTw^RYcn(`*t<0w{a0-c$*1Hj)~tx%A0cu@>1?Os;E_c$fKznbecTTvPYflG6d#wX!F4vdgMA z?77Z|z#s2*dm2=j94uppWtW@dHo&1OaS zDe(o-+ca>?1uhc;&RrMWGSKAlG!5Lm56<{VoB$!zDBk;{EaQxVIgIJQdXq^}ZvKj% z*=jz1A&MWN8Ak;@Zb!Q)au*Q{miH`Z%)SyqkOtrG?1Gu&1wgw+;Fj>aE|i%P@O`z5v{G0Qil-fpzPb?x?BoO>s1fTL+4$gUOt6XT^GaMVO| zxUa7ET1PFJ11Jgv`$KAUQx_)WQp^s_o^@e>iCu%^?P5qo+9Jj-yiBoxD&T~KUBe_h za@vaQ(hphrHD+d&jk_7!y+?dWw43DAJ1o8eS*qmJm8mNzN(2iyhV+iltfx zM;sYt(BB#|J=%fDM9Zzk7!-A zP!TOw+2z2x10FpgTPJ*KRczoR>J9Ljrkjfe#d*4xqE%A9&GHI6`0s9%^m>~)OW!Ez z46yoPce2J6NWP}K3+5K1(%C7?PQAKn1-2}5nB=Zb*(huGQ!gzRyK|5m6%iXnyl$*U zksM|TXY7W%?M@XH=@A%HmoMmnNuoZ;mfY%5&rLskiO1d5Gg8#$W4;>feFH_n82((A zETfe8zm7NJ7q^PoZH}3K{cGv<-{`E)EaR{E+@WXfcy11!Yo~Q%+ENAv@?Q}rz?jj! zfapfDjQ9!aq7M$5twC1Kw3me(IhSx*%3#){c{IO&s4UrS;7kFy#sJsv09Os*D&fAP zypcg@j3f9EZE_~;1sc3($vANl843Eu*Z+aoSk2q|T*F~C+`&~s2Opes$KAPse=ca1 zR-AL&Uikp5pIfF4-r^ULge44L4&BK{TB)27Rhc1+ph6K^OF}F84XAIlKwZ!*h?e?M z>q}xIXU12G4(Rr|ey93uahA-%wq$OfTfAkOww6a+;^OM-qQAtui~d~qLl zK3X1w$h|~9ICxQ;H(xYRudc_Q+lD76Hk6Z;v%F`|xn1wq!HYPn#nektn#-tUS$wT{ z=ef83ed2AQb^Z6#7-l)?z|J!XYH3*R2czsgB6L&tEp`C2QWWSiN+Vv23_6^rk>_R9 zL!6vuO;0Txe9xJ$1xd3^GiWCzS%AlH9xO5c2$!3`0z28B&b5HRzjI5olg_pfff8yP z;*cl?xh69kd9irXl#zfAb}v4`bG75r>m)V9*AzkW$Pmyff`iv$gB+3#B1TW?q5KQ{ zNJcGJR~BIDyL>sha|IEs>B~sN8jo}7?joP)`{~!5Nkx) zL)kqu=dvjuA{urb)nlC`(rp*y9nGufX;>obKY2171Pihn=tqwz)#%S-!C+z3C8lC&4c{2hD_;`5&P^b%K%^!Hgq?!Dz|P zxO2R7MOeQCEh=`gdomjFk{r3zn}bVNaOTiNEMhx+g#oBDR&@^R64#E1JL~1t z>+Si_e!_E6bR^(pqB(asmjHX~X+MvA2R2w)wY{P_h?V2TgK#y`{5;tHQput>7pWV*idajMWc4oW1FKJAE5;YyaJ7-7t&$avMvC>F&q=TdAngK% z%bUUk^o!U8>PZEgfuZHqNbF6U228N%1pTG!MbB1`HeTSBPz})0-vqCxJBb)O?OF5) z{NXOk5gvkVkp4t?t+WXjp>(zRWBiH$yRr5;PxuDAL+lpkrGJKxVTXLRVo|m#A6K4G zey-E$w(9QH7wSK6Pz;|n4jW%FZ8p7VcAF2HkDK4L)L0(3PFVld)@S<)Qj=b1|Bd4+ z$NxAZ&Z92L)#>`OJK+A1`(Lv@>sjgf4{y8o6W%}guJs%I7x-WD|1G;HdsX&S_BA=H za=sVn34AAaF!%d;U(T=1zotMbxVqr$YC`=U4ANhSM)a(iHhIHp0C_e`AX$GRYg^u zRr{;%ta_p957pJxS62U^MyzS8xx3~^wN#2W5u z_;! zi(Qtk-mc5KPIar@$GZR0ljwP+_i&%w*Vp%S-=F%g@BiA$td;v$9$WeSm46)Y58N{F zwSix*3a$F+pl@(=aCY#EgTG!KT)k)Y=hs-)46eC#&EMAUSo`|AE$cqD?!SjRhi)AD zpYSHZZjLlFj#R{=w!yZz7gq);N&2oZ_iJtIWKH}QQ5=hx%>8X>}-5VFM$f0BHZ^6(s$mvLmr1iyT{uo34f zJGJm8en)M%8ehWy@9>?$cNgBXN}9y}NA&!5;ab8O;BKVnNX2N|f>6cr2VC%Lr;oMZ ziGuX&)3hOc1~fw7jT~M3ZfnkSU|yTHK>|b&4+v@pNC^&iiKp^)ufl4QIHo;qHy} z5zpng)Q6z*CE|mM|yW|;*&qKR933usxozf3D9ocyww1dXq5Q0=D z{43?cmFSD-@O5U6)Fy&ON(sGaZxF{GI@0yUXKHY(G}iHL!nYmY%jsNi#kW)#GpxmN zHNH6Vaw&dK<50sZweJCJ6<7tqBc<5~0b^-q59?t3w|N-4gnE=#kK)q31*Y9Qu9ek6|;M*iROHspzXk-z@rl z@p$op$ZsNVN8TxGFH61#Oe`#*J*tpMw*ubUyKruH?%>?cxovY>=Qho4 zm|Hcsa;{=7I;Wr0z4C`we)_Y)pY{E$`)6%GbN}?ApMK&ep`ZAE;{DM}Kblnk?9}#L zL5KXm|A+K~+TcM`_^8ZC5}Br9JW;wJy}@WQTddgc)9G?&!T99Q&Iuq$ra%pb!i7*w zm6Vp1M=N5LRn;}M6e!u))V!jlwXMCQvrFji>Fw)ZIk0MQ^_sQohSqP`xM_IvmXXn| z=WW}5{*JNCo8I&IQ7&o=7f^+r!tSZ>OuqaR0Run~ekcgn?cFB`MXdubTM@Pd+VQ6G>bhIKVMb%z4 zDHkOGkkUOgl2pQ7NnN-L;EyKRSVdBfh5?s4aa`HirP3Yk<@7)9_l_r}vLLQ^tH;!1 zc=qusr3lShKQcBHNNgA#36J7#$Ho!d3Q(icZ>~rx(WJh+`~<{Ojv5_K!(CyZINX&; ziaU2D**Kn`RLUxn`lw1kn!CrJmW7?D0x&zqMybkJ4+qi^J)t)X-Mw99!9`>nqsx(R z(w@S~0YW!gJf`*@3n!=}IHrUEVKb=)0AvQrq*N46^k}azzsJv$h4>YIyx6p*Ke7kASN>pHA9AGDH-DB#pF*OMX&u~T35gpt#a$KJ187)j&C&Nc7lFsPh`jNqn+QmQ+ z*WLWOD|%e8cMp#ox7*QwiLRu*oQM>p+jZPR|5@>0l6lb+Qqj=JaiUxxtLqrLmtI>I z4C7~+azMLJKLPF2-BGlpAMp2&p%a&N)q8Z{acme928z3rLfZ+1zj11CM==eHy_-go z_HdWln>2$cO?dHGmpX>mKk0BFJFw8zb!_aoOIMyeTpkDkO<8E0ySyUli5_Qk^a9Ux z^hJ+Lbo57$%XG|+9#`m?6Fsh@V<37Qsd_4sxzXbWI_5=>8|hdYRbxrEy&_r03m>XT zmh-|)MKV7sB(3HD3m6LkV?Lg(0!BIp0V5qlfRT=2z(~hJz(~g;z(~hpz(~gkV5DOS zV5DO-s@fDKV6R4>KMyKmP-)p`zZE$Xq}caLZ=inD@8*9GqroIm%p zg&U98Fb`T(hxP;Dv;JfZgq>)tNY+PVzLtt)!v|Fb5sssJ99<%Ki`1CfPlFez95{BY zKim&yF#@&@wulkkz?dfs?{5T`@nV4BAFq-$c9%~ci-lFSybo^-_hIy*H&57nSTct9cXMvpvS4JC>}&SX}uY*9X9J zS(ZClk2biK-rso=tllP5eH1T+nr$ z@H3%|3Mb9TL#&lNI$qLuJwti|!HBDdu4jY}tt<&W#|zo@>mglUKXP1}=s8|YXU`a} zz~*Tk*N;QQLKO(nqbIG{Myu>;ws37yz8SMc&v9j&JxV$TTz zc9QU*{H2Ar#8d3s3vVwp(mDV0GGv@im)GN{m6>3IKx?6uW%%bF zO_vqyoPKk0Rizx+T}G;)H|@jQqMys8f!n%Z??_chd8_4;;LB zW@`7IS+!)mRIRD1YO1KIs;*LdCJ#;R-mh*PpPJl1J{eU9_K(L*XI8GRqsooy;GV>O zwR1c%F}d&J!NjJ?ksWIiQ~SFPOi%P3*gxBMU}pEES`({Mo7K~IE9mwar<*5d4ow}{ zuU5sXVs&S}EDc%ote~kSEf-yMQEXpgcFzTgBQd2cH#*MXfP**eSmBbUm_|*aviPG#I-|s7mcRr#onz1NMHghdpjWKYRKWO`DMiasD zWoZ0iu7{$`2>8s%YGcJ}-j1A~PQis(hAiy#iSPx)rDek_F#uhCo{*2(P8EVeNC+e1 zpa?z-5m0L>d|=Bl@+;7SN{o+cyt@`-q#ki$apae6LaSGRrdwfiZ^ty>iP6`Ch>bqP z<*r0utpatd#<*UKb`Jq-8_*cevAH z+bK9J+J#Rt2XitPbF(bwVP4^ca8h_mI3+wGJSkiyJSRMkm{9k&b{RX$E@xM;E7?`-YIY5~mR-j_!mejGuw(2-b`!gq-NJ5V zx3Syxhxboa!Et~eYii@#vAZdK>`WiKl>WrNeF14`M<(uwNS5GbIfjnxdaUsHjOFYtzTN^szpDY)BvZ>rlT_w{L3y;n_*;au0{5 zrn;)nFtBSTv3K_Hj4`omYO0~Srm@L<(c~1whS{0Kp+klZ>Dx+Tdh*~NV`66Jz(v!O zyJq#gboii&AGy4v-JCdZ(SEJ8^T2HS2Zs+%?B_48ZqneYZb}2t)R?}m!CBpzzTcTS z=V+>_?&{X+b@gb+ZjRQP>h9|FdAEfFGO=@-pwpnj$>D?6%ykaqVl4u5@q{4Np3_rr z1b#0>^ApqN$s<#TW+(U0P9>%dllu6Z#XKCoYZXlftin;GpDbsBS~SS z2lnrtIZPlE>D1I|D6FZkGEaW!@YIFqSjeN=y#@{4H4RsjfZyv2{wY7 zPUyeMS3f+I?Vk3W#$N5%q;*$KlSaNZP3cxP)tSbpX2wBc(}xeGt2WrQ zOZyH_&rThjzBqk3jk+d{Kx#VEPwGrRsk6?C7eg$Zm>NI4h>gzlue$5>69;BbcSN^F zZZ+NM`@Ly6d;7Gv^=a_dR%!QZtF*V)R%v*ttI7wc=Hr;FWT^cm?U0VJ6G}+d7 zr?2<+DTfY1xaYrWXwcq*ec|Ns>BBqI7qxC`XwX1vXwX24_iCWTd$mW$`!qs}_i0Uu z_h}<5-j}Y|m#L?L9PiUcQfIC9yw1+_v5ON-Z&i(U?Caz2@9pd3@5ix^=0FBZt^NN4 DvjTj6 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Bold.woff b/katex/fonts/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..acf48e66893be130a57bb66b9506becef9b72f81 GIT binary patch literal 35464 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%0DBe5}C#ke#N-e*jJ!67~X2qoJ9|WECVv5YL zo|OF3Xxps&ht5W)UgH5X)SVqL4&f0-Ft#QkjA3F;GniX52f8rZ+R;y9oZb4Cm|=Gd zr#U{~HBR$68E0zWlLxD-_aqe)8+znQQ>Qr-OKJ!Gq)0C>lGXfLT#%sl>Qb4i(GAnn z3q03{0SvcHX_8#swM;iCMljwEvLAY>dEYTHW8FoNZFxQn)}p`giV4=$D}=q=@=lXf zREnh4fa^S6N0Sw_0Mlgm6%qA1Rv?efhMhnNYmSqkLSpES49Ny;u M000310ssF14K-j-`Pew8T0RR910Cpq*4gdfE0Pbi20Cma$0RR9100000000000000000000 z00006U;v0p2s#Ou7ZC^wgN|f^!VLj70we>7XbXfk00bZfjX(#ECk%lK8{)(_#GC1e zyH#}^1PY~&LSW+nfN&f%;vy#dfnifo25LDQXSlikwXw1k4_ z2!z+bR4Y{JvxsI#xM6AOzmPrrca2X`7RjN1AK<~)(*9vX1!5AcBo_V(%`mE8ky)~9>9(W_Y?TYkf^)s+-vKy&Nvw%u+~wY9P~hR+%w74`KSBVYTo%nt^2_P%5Q4B0_;fE2=ax#I%iu=Cty>&LnC<@9sLPO|T5?4%%A zIF*nsD{$}vf@c3svpsb{wn9I#WT3F^Fn*9UWjwam4!ZR(aOYS8B#0#re&-djxzlPk zw_}&>ORsMl8vsPp*_s*umjK4vO_^clRI6hypPZp5sDA;dC~Py*=I;l0?}uxjcdd{> zF>g8tv|FG9%u*3D#pILF6*^A6Y#ILfa_{b&@l29h`aeCX0reo}!7Sj5HJc6deN%HL z>DNqE9FSHvuYimgRETDF9P4@t`?W5SpMQ2+mRi5&^^kVbZgEHM}ge6Gq z^MUR5j>J>dCrX>qUN^&FIEM|-V;lPrp+X=fQh`7+)u*A~cDLzfD28Zh2lU_XSJqqk z?jrbA>jZKlWQ6J+cTUB92;q+b~Rlk zUTTG$|2fkphwX?!m~(TJ6MAa$H%BSa0n?bMFi10^He)15UJ9uFHd1=VCAs7yJw?^OdU~pV^|9rS>^K+l>%H^2jXXvUEm z03;tM=PWo}>cqiWfaiR)QmE`AS)VG2ZICGl6{hn0*3<^(2Rl`FLit?|%>}oBstQ5K zYBsV$_Qe&1Mqz7|>}wg-pdc})wlN-v_Wb6zwa3_O`1+X^3Q~Ep{d!y0Cg63~4DHe^ z8`+2vuk&w7J1+fZy+L>Vyav8NVUV$8l0f^uw69p-`#lKYYk35K8=mzUl^`I5Xd~l` z0N?w7pT9C=j-JaJCqeRkagrL9ms3I#fZJyRpx1s2fH}YgspwN3VaZOq?!w^XD#5g$vS0&EMpZTj5Eo4_6B>0o{>cgn^G0( zEZ1ky22=Lf?<1G}<_}JhFUps7rrxjf^;2lHu$IUtHkOTJHYmXV@Mr^dfIztAu zYt^Vsfjka&i7bL_7A@n)0Nwp6=_}J$`meCB*mrl|-Ev2Ehku86^ZLyS$#XE&42X9C zP^dyOq(&G7-Ei|rC0wVN>+IIw|53(;RJv)qei)~@j3`y=(6I1`$f)R;*tmEsL8H|H zdV|qqwpbIBl2cOCZ0Yt4M`l)bPHtX)L19sG$tL)Cxl(N!Wk6NUrHb2k;M35TVFv2z z<2Ww@*8%cm>3{mAmo#qJI65{w;vy46(4SXB^D>~Lb7|#rpasL-7)cnw%?aovIDd#m z4B`R+bY}6HPk|Q~U)P-i>-r336%agx&VZ-?ART+k_kwbL^u~gk zqJiFq4V`2*a|_QUL7Lkm!1O~XL7S$6fL9Y)Ey%5XKu^7<0Z!NRoc=Rcjaip|5DodU zy?I*|I7CVos>aYnQnao7ea0}(2Ag(7C4OVFNF#m_88>#55^Vf4YgjV9uoyGwN4#5%z*lQFk z9#{Y_XiFh69ihn6AFN}kgzb74xZpiH*4Yzt)3<=&5%fN_j;KVTq;u<9J42t*$O=1Q^;s)DU9LV$xexaEX`QJ>LZ2ziG z494HI(_+#jt!N4=5*Qc>4V}k2=gK>ep%`O1~?8PJ67or6v2ViXGq(gUA7~WVWq#QC~THUsW`o875jY zTYD&&JFKF1nn(xt>f`+1pfOGe6PFuV=l0_@k^RN3ihU4RB=m=m+n+qAW^DlSD;rzus47M2}r)LD(N8XX~gb|ADjK2@YI8)+G zGqx(#cSc+NWKoWZ0AX=8V3{h}u)Y6T}VXZ;+bOz>%63l#ymcg4vo>B{1{nzjKWr)v!NpyY&DBm}_G|6^@qfh- zfFJ`v%#T0RT_-NDi;0PAjW{MSHg(a4%?*&7Zap(X)reFS7o=P#eM5Gu`<(({rOGaf zgU;=}@o2aUJ4KB?AC7LRsZ?^HPqG2)yDlYg4gd^}rWzngGeLmb3=q=`)2Pv~1CR_8 z1gOIRF%ziP$O0hQCJ4|R1H@dQdLs{jb5jX$F;@E8dXeSi|W^Gu}TC{AJPd|&AfY9aulT48*L z!3k9LhJxJLxM`CCY?}ryp1umOyyZ)e^ySw+6oST$sbvzJ0mCmKLp&!qd!vyYR4zfm zkDh)EN8(ImF!Atm%8nZ;xc-a50=Gxh@cp3~2PZP~`dr8|j8Ke@J175k4~7ltb`C#@ z6C0jhK%>bk5dXhb@Yf-OPb5AuE*#g?RP9ER;)!sZ4hT)P91rbN=|*TpJW&EL#~{=E~*iuGcwVUVp^rF7r5$)RP+IF z^O>=I*E993oRrJE;OL*ClHRq7X>J@Tiq^wlAB6Cfky# zgq9XqoMQ?_SFjTEVM!G3-Xw@rJRVOZuG@vCX;%2o>eW(s5dI`zuGy&W4&&)$GKv;q z7=Vn={$jnjy^{`FoQbT=L^lj}FcM3u{>osCT+b|8R!NZcRH{)$#mZ1GibAEH%ZY-f zhyQ|K`vdLwO$!p>@3?oeI)dv)q-M+IJBsc6=o(;29V8`5WM7{CPg{^g=icirA*gSa&yC|h61~~Dn%TTE5~TI zS9@}J*(AOIUXXnN&_kqGU%kT>h6w{iz=ETF1zk=aTpyFzuf4`RKE%FL!g$;(hFm=X ze`x}fxNb$`FnLGSNdE@dd~>D&w1oRrX$rp4ZgmCeW$luJX)sug2?nRT`mU4JahEaI zTwhPS)V0LL|Hm<*DxffRa}MH%Pw6fp=aAxMM*zDz|0Z^`r?3yHnF=(&p(_wUjQ*eu z5mAQFpSn#G2;}VNk(xLp-14#a9A&nE!(~wx-^GNBT0A=o1BAH(sVK_&et4(dgLne3 z1BF&{cs6kB8D@nR4Xy#fkgLV@#tGj}_NaEm$DY@EG#O-5aatutDi!?MhdhYXb5x~t z{@qO^F|#RXjk#fvV$C=Q;-Zu=lA$ma+2(FayLeDa+<7O2jnA+u(iUn?gnTMo>xU&* z<=_h#da-!Yr$M-=@D)#bHyxy|C9kFcSsM?K;+?cxHwqL%Emq>HY>?_%l|{s`>?=}f zdwD^d5K-mZ-xqYNTyTeGv1>gzx_~IXC&?5#V|>A5gPO|In8I7fALXZKhjC~f$|_);n}F8Q{rw|H-cx~ha4V)d6R)=_*DLT^Ow{rV^ zO(Fs(Xnu5ia(vU=TEX6)=13%^Rv|y;A_Cs#9|AZ43g|3>kF*afADkgQ-O4gNGyo5{ zDAtSfOp`qw!RX##g*Nh=D<%)qdmER!ILZJ^E+sayDDmf(Iq73d7Ge0Pjt^}T)gcKs zH540M-rN^t#hkEZ3;u?}x2SPC4^iYFr`$L*Ya=}$a!d|ihiI`kcCgk6Q9^;^4@QG7 zC4q=P+)~ppu)Iz{|58?g1Hg7EPyjvc83D>5AaUPtjBBQ@chx0KQ%{}GCbIh2mBa#` zgnERuzgQdlfKN54*0d?FZy7hOI;J}q6&9gz(#L+e_|&|XF9zlmp{Vkh05%TBhW7+u z%UF*?o=m0^2*Ba?UaUyjaV=LZ2%pudr*QN4b{7f7F4DFtO!!LiO~7;|A(YjK`G}RN ze~Qe2IQ9dsG&=+0&#rnKwd0=!2z+V~^mD>pw^11=%?pIVtS0qk{q9|PI=edV2#@bqtGFmUyim(5eCVUVp?9QWajp{*>`ZVF?Mq=16oRuBB0PptGA%9M!Yx z%XxWmIV{4z`M%mgsj-b~q_nA|$|exVFQcpgzegyvK22@_t@L(sqS|?1fmiE*_MRFU zoc1&@o;7kaq^rPcgt_$S$=(`a^9pSTEzU%ps>JT@;C6Es8~`o|f^kzb8)Tj52!HOb zzMHNKpgiLsumqHw@4wx^q3^bUOQS;Ost$dIaxtj>I*6+1+%twd&4aM#w_DbDf%_n@ zd@G%TkZlw8mruW@vCqf^QtDscl)N4P~K|Fv

    z=K)*Z&6v0169zN?Sr}ago_#znLueBs@!0XK-yI5oK+X#M)Jku$M?xq4UX281(!}pC zg?FGwZLbrMdd9DntH`iW^VLLg&@Av-n_GCe}Vg+t`NH&#O@@%L!Yu&t&uxR z*>HC!PkbB+1muG#@lfUXTb1M`RzMlv^$uyj3bY2GPhP3@AY;z_7CUR8R_-kL0wfD~ z5S$aqNzD{USmEPDSvc`3&0jXN8yzH=)KjQOYEjKnAL827P!BX`;$;W8{dVe?lyOIc z>+#Tq*`S~{coh@BkHB;#!yfjys2DNQ(?PcmAXkP-WxcJp7}LHY^Y~|?(yEqowTfaf zl5kbC(QN41M>BjKyI0%5rd?nGX-O+^K^#&f?0XX!xFSV;6wvjFL%P=+0X^Y2jAbqV zVAf*yAdVI@Q-wMTVn!<1jRJD~?GEzIqS<@oQo}V!H0bXXkj9P@fD>hV@(s8C8DJp3 zzf(m;LVhg9a&!^Ju=eNuM)_PO#PXFoiJjJbA^-Lkpl_@1yS)`=hs6 z{!#7Z9bsU9#VZ|NRdvE=lePEDb9qbcsf z#@(R?w(o`9lT(Q-wzp{>4v~Hry~I1dt&23E0&NSse+P29^9s_@YY->!1GZ|d=Hckd zT0wpMEu<-7C;K)0YY8Z_%m>$yLRNrk2~m|I>SVl_jibS4dk4Gs9eA&9n}AWnM{l_h zwTFQqWO}9hiu&1b#+uc~jdbkIJVe0s1~$#p5-;6JW%bn#)t_2L+`{5%gDO^?0bq$bQE#^)At z{E2zinsHj_cTpfLSoR7x>bZxB_5Jp9URxQ-gNNEJKEqBrCcRZ${2rv_`?B?c*6Nv@$c=T`2!VD{?$0(oNu>CMu)pQ{*i0a zh0lb5GJ+2i2Jij_m=9v@%e9_me^|)@LC)L9N^)hF>8gZ=e7xLl)WaoBIhf{C+2vKkHOv&vQ_R>Bl25Kwk!HB;fySUOtr z68Eq}eQw^KE_bU4FEZZ#U#k1q(ASJ*yr|f2MsG~inD2)Bo%Vu#W zgioyXuVBMvr!Q{cUt|R@8H+oLu;{epwI7F+UHb%n zEAd*9wp5zur_TsX`ILQuJvg4aJ)57$Ze_q5kmif`Ekh)pLsD7@GFOURNP(f8X&gg=%R~B_d)Z9@;D3=YEbe2elEEeo-xaj6itQ=l*S|_-O-f`@`}vzXq<~eL6ca0 zg8VdY{s2ZwUJJuL75p%a!wY}lQ*47T^F#*TIs)dTA6Nz*in{&ym&p)imFJFQuj$Xk zj&!lrgs(hYh{F>A7^04Jy+>t{ud*G=8$zCIU>HYjmZQ>FWggJpIMzaM$ff;^AkdUnDX>HNx9o&j3EIHKsx&h9S#i(h;e(*70u9Z38V zPHq_mLV0{N9`UhhURuY_7PH_nIxgQBrtc%=Dq2E})KYlf@7QNKpaRSDyjJTWj?LhV zGda%e#2s!@Zc`6cVh?+0VST7d{+{A(F8G8Inz+Kdc$UnfPbzQq__MbPJ%$S0!DBoR(_ma*Zxp8@ldN)aY-f2HEZy{o z8QJl7W@ABWF{U65qHh8-AZ?aK_m`$(-IyJ7~QI09>y z#cgqxBY|v%@JHx`=Z0XLLGTz(lxODtP^bWbpII!{Z7u*8JAHhYOIh79&%N!-<%mAk zQ%Np;ads!UC|R{VSm9U4VcE}^FbH4q)dZK_!hH%7gK}MXS34Hi3;lngyC=IT>Hz-D z#ef#M*z0&?B7eWy3CK5q>MT8f2F;k;G8o+UCNK*(s8KPET8UPT!5&TM*R5Uof zr^W-GPFezs%}Z`{IsZG3*>9B4v1saLrwU!VeX}o~Oz{o3CIlL4Jk;Im<67f0Y!1Ne zU(J9PIz?PcVk;I`4fuw>02Pn844V#8WNNUW6OCD`5;C)Vo;i9aSAnphazCZ-&mc`@ zw(9^FkqZD~#kf6#>a#T*(%ym)5t7lnIDgYxEB5-7S+LUPDtW{uc5DHU-pT|eGz%UU zJ&xmDw4!jer%&oUxweLZ>o54)fF(BgM7OxrpT{;G>-DEs*cm9Veywo9jVGP1x<@ew z2&LgKSptoTXStYHhNNnXBOY~vH`*T5k3_)kg3%xaa4Y3)xPL~+II8F|=~WOqk?f?Y zL)^S+n{4Bu>>lV+?QJAhn!vnRq?d(5siPpd&S;LRqb7r?C7ZnkPB&8G_;r(}TJz^* z2~IX;y4LoDb!q@Fa6Cw)m4k@y*9ViWcb;+&H zZ!C!GPLGhsOjM>&Hwq}cJR0uwYa&^sOxGGaeJ<`5#9RnBA4ggN>_jD00bLBShgh@( zF8#ztp=lc&wO{LI3jp8QsDb$p=f0BZx^yh@o?7u4pw#nS#bNti1NUH(x`M;yr}^|y zRZ|z?beJ%_cZeK4Olz|eAgNIO6nqEGf!8}qFZ(H8!4)`$u;m(v!`|}Q1Y4ynvdHt@ z6?7L?%QH*|MaCgoRIdU1G?(pyKK?US!O^g6V`44DOfqV7pj)uU6+@b;Y}18KgIlaN z=#@|`PvWgaDw6q61cKCE6S2SfgyjWLSd5^9!LH`1xp?M;O%OsCXB7B+m2mKa)*s*MFH z)brGkg!o4pA8%Y}rmdRTaVhV+_II-X!gelR(s!0gnC*BGEtO!SvA4^`35ehRU&aQY z9f_`h$=5rOTJx)Q&>!&Hp_m=ll{PW>IVPRCmfU1a{yJqT&fegy6{2yzz6a4Vu$5U{ zs9I~yhS3b1Plt_SKI~ZgZ_F?hKy|E!i(j<335Wp5`0j!S>Ok49=NUgML!al9VahX{ z34amKyp8Pf-wa%P3b_z9WZUK~E?2EXje2cMsLx0)a>3U%10#)sxiC-E3ws-ZWc2Ft z?7J)7zVcTXYi5@qIs47dI{oadeL^U-@gvZ&o2C<9zBYpVI~XF{b8jZ@mhiB8+mc9W zSLIfSk+o`Bd-!)7Qt{cHT)t*(Yn+>L3#yU@Y4+a}@4VB@34YfvneBoI`ai|J?edrr z=w4N>oU5B?iTvMi0N-K&YH2NQs-4|$?VM!W^k`7y)hupp&F={FkF&Fv&-z2%R?vF& z^){W7nE^Fn6NgZu{#A`{ZlJI3?C(rBSR#IjTV9V2Hzb_fciyKvn{J7FF~NFU!P)nG z%OkHdOXA9w;3N$1Y`=Ke>6MLry}xF>{kTtW*T=zErAn1I^ z3Qfxotu*c4qd|=r3|X$JO&YbeR!#8vVdH_>ktLHtP3zTUv!9vc1C!TqB#HrjhWitu zxt5BwN}_>_c~3dL&F2Y^4s3nmd`RzCSB2J<1K0Z>u-Z`NENh{rm$Vp9*ZNOlOKK__PvnYprk&a_Gp!@f^VdZ-X* zF0`1wdgFY7!>2v2o|0OuT?VVyiSR8tPp;o6fbHx0s#AkQ_VqQ{AT1Hqrrk_{o)d>E z>TE4H37skhl@DZfoU}(1rl}^C#rQ21Iq?(YDbHf#8ZKLKITSgIzn%fVA(SYb@wbhv z#mu~GV@5W(b$!A@@#U+N!jKg8eE~QroYw`RS$B^g@#Q^6uZjT&TaQGjo)1Z0I%*-w zOXj8yISKMmMw|2Y2GPK{-=-LeQf}`%WR%2pFAU4sNG2Z#-@r0#yXL7eQCz!n1x}li zh23V)Uz!+{p^_<43Ln zO8+hX)ba|B=@yec1!lQFdhGbWREw_)?f(#K%n)u1P?MbWRz#VI1i^D10U<@SHL9B4 zm7VQ&-wLnPfRw@AWh!#(Im)|RKv0ZdyU;M2IWd$s8JUU)6awM(((=&Ft3x(u4RVKxy_-tMz*>1cFjVzN>yH3^?U=-DQ0AgK|UWQ}y3qQb|*uh0D^> zAcg}7@u@{kX;YS30EpNL92j~&7Eh7;R^on+gn$h?H9&W`g&8+wcHU^00cVEvMWZ;5 zF7dfj(6CdbTJK&Z)ij^>yW7|otC`>i!BZAKLW&ow+`H^R{BZn=a5h~baY;EdKswsf zJ#v+KN&E0I_B6O!D6x0>=(XhX=7g?!ECO)aa@S1IZMhMKO=yH?|Aql&qI6M)!UM6_zGy!4|d0yl=VhT&00MRf=nl6+;AbPZbrO(yecm{*hK* zk+{`Hy+G1KSQExwOS8wHA|uc7d?K#j|XIRP*Kl9qrvGr{&w|WqqM6iApf&8>e={e zC~}%1Bv~L%;+6j)gUnGgrxx!oHe;I2nPD~MqE}w;Ioxw45p1!RI`?~rR zihgp%wdBZL_~G1|>KT}e!m9ru1HGx+JH;W!x9<;RL!}iw;w2y{16kl$Bbj3Y}n4ZG-kVCZ~Fv$z2ksiCIVkxLSo4qDm%}YX0MmlEQ4|%>~?+(`>-xfV)U2T zKP?_H*747bjw6N$wOR7-!7jS)9{F>QNa)c&LIHS1JooyQE3ZGtIl`;md~#6Rul)4q z&XZ+a?b%0}R|?MWj)l=zy6sy5opV)teJNLzKr=0YJzn)b*NV4msg0C$Ji0Pi`M~>( zrf)2PtEEob4gE#DBEyL#tFEl87>WY-m8bkbZDRu);cs83=)>Dy)B8E0BZD$vHDkrb z{LXKg5Ct@;HEvSN+)xjVp#0Tj0bU7zJ#NK8^=9(& zoAS(+d2SE)H?>wxLe3>so6y?Rp(&$9BR(RBPytdW>R%^=>x&am84cD25%b2cfeq9} zD%C`Vs)h%mt=BZAcF-I?cAYA8X|2=+_MXVnCd=_vv3en`hPZiYC?0Br;!6K2bnGuo zy*7B3(Tvt1IV>SwS8#h$_G*<|(8j$iCy7C5R${$k4>h)wRhpxhMeA966}igAZ~u^L zP}#&uv`fO+QgMz9ejpC&9Nc`auphuRuXPi2_S4z2DT?UQTi`Zl$Cg}#ze~`7x?6uE zB7pq*m-#wl^TJV1lhbO(#tus*^5Ur^{RLeAg%KMU^Y6A2m4!C2IetDsoW0hzwsm zbB#ZGNJAxcl&0mz%{g4bAF-W{CFs1V!_x?@vzuqU#!Z|?w?wy^q` z=*{4HIk*@JLbr8-^FI73PT*ZLitGBYWZO*bd)T(Ln3sum%m3hZ@zNK;)nPFI=P}BE zK&iQtT&GGst44BKB^0S_VHt!l!kgKUR>c-Zup^oPwim-&`m4h0x5WRwykad^ywu^T zQQ|&9QBv$a^1;uD@ctjSzB(re1;IW6UvXE7^(hf2)G!-3{%if$NNUl;bQ+7UPI&>9 zl=@dFI(&LVT`U?(>-=OE7O8n0c3u@w6$f$?xkeV$-J|An(7ZLknmB*o9&*;Y^D5nyR@P) zmmG$LLM&=3rKH>@HA%&lBH{50A`3LHF&F|aAz({0E}yNmu;L8n^40MI+>FM4Itcx| zDhazp$(H6ySWgG%yaZ!eJ*Moqii) z!ovu|Pao`+#>q0P69a5D4F@+*B{uzU!p?NapS#ogir(V8rEL8#*Y>~~>u(M;r0vT# z##M(egG|@TtX?!SynIW{PcUKgeflO%FgJq`geQc^g0FKhdzaoU#28Ge6M=tyI+wEX zZq(krAdXxnWikrmm)>Ibn!-W_xi8%q_y-RIs>VT9+ot7*9^gr#?%^j{u-&bhe zAKSFE)who`vpX?RJPy~s0o@&jH%OXxX`-=ijadC9-=o;>J|7SLN^F4Eo*A| z^EqdmDAtk~$F_Zom+Ah_OM7l;&Pa2##=aDyjeV-8X`D1l2rmmY_oq}gX*5Fu*5_W{ z551J_t@u-SeYL*r(NW$DM5a%=gN;r;CjPMtid9&{1D^*3R>{K^r=_xkW;WD6fzq(X zLLqke_Tk$SyAn@>g({sF`}*}jyJZ5qqb?H&adH14pxpP-Q)QzG)Fuv@Ds@7(TCT`S40>7pAzA2V5n@K2}@)1 zA{|rXBX9Rpz~2cjQAP(}YL<9TNCJSX28Hm*m1o^6)=16kiVnb{A6q0#s^tuX zyu&qeE+tp$90oEgm|7IWLsA?h7UM{(Cvgai0FHyJ1p<__>%_VsGqNHGFyOhr_m=p( z3d1!4yH*#cdgC&Lnv2I*@4XYBAHlZJtt%bH*&T5ao8*!=8m!)}ljd+o5V?6xRB{%( zQChZ=vb)XXOj-PCIH#nZ9ne+7t;#`TSoy7}@+x;hMThAzy2BfA}FFEH^^r~=g zjMZR(X6L1Rlh~F`_H&a z35$EaCc?Ug`&*Dk>(lt{u6~F>73x%Mj!Ne)r5RbacztKEfIWZVYpKk@g8}9vKe6OO z`TV-*<^5~K*|)KojfeJ3Y|qF`P3>Plw{sF1CN%mCDio@6BE;srdr1FQ+SN+;uFcd& zPdA~MQWb9eV!PEDezt|Wr_;j;nsQ>=4=Ndnvw#`^GxLwDi(1QR4x&fKnK;`@UQZ?? z(Ck5HnbGb(sBlo;jd={5y>NC?96em-JKs@pm4t8!ZLoY076%(Rzl_fKw9r5*yC@z9r%`{hkPE3u&Xe^$ONwZ z_vCMnlw(*aems+?3$4=~vnBW~-Aws4IsTw}DY_h>9&gqRvMD09=JJ!j@ zG0CJ(%LOhP=_^Q+2?3P+;^Kg`u5%}ZY|Iy93#_N{B@(>ZS%h+*GLt7E49D{4fw)ze zE6|12lxkjhPEY!9 zFkg)0Gdb<~Vh~Fi4C?6GS!r!b=S{Ks)u9>j&JJ&@TMBLgpYd$Rkjez2?D8Qj|72NE zuhEQpRL=aM=ttrGzQ5!_;p$X|2ciNyF+b+hkPCrFLOd z*|sfeHvC!sGwTlNRtAV1fuZHEmub{AtXbWR(bT(kqPvmmNR!w7>Ej$jNIamq`1g8@ z@#X>Q?=*V121mxypIx9}9!Vvh)R?}1Ek20UP3I<6FFwyjs@)r=*BLPiIzajz9bSNl zSZ#~5Hh&5?B}5F;{=RO2X+QS=V|X=kq0ix+QL1ZgZg3j!d@yiBJ+G^Pv7AQEtOe~S#QKLZSY8Kj;0bE#ZHb28VZqaZC40c*JPiY&>%~4052um~zRXb%8Ei13q zD%~AZW;EiFMnc*D<(u|16M_*61V7-=)tMh=_Bnx%op|O<4i_<)`5+zpsFMBt(-Gm2_0F z0RgUFabfXkM|4Y^a|q^K9ai_!Q`@QyO>gzoenIV-!HH31gWFIVmQ!@E_|7};s#-Kf zcXP1FX!TpNc7%x@eFPD){FV?mQ|xw8Dr9Zd^7wr#K(T27|Pb zY30N9+A!;Op#iMX88PXdGvJDh80Eh37Ab<^q~NpJ58GR9~3eXQM}mp4X6TgvAVtgdeN ziZj>iF>Bfp$|9Mp8s{?s@I#LPjdQ%EMFKIXG^Q=_a6@=)WW6 zGQzh!u}Lb{dqkH77xcVuT9yKpblg{RhIoP*>GDqTVQkHHb~9LyD}?DQuZWL;$B7{9 zY4pvm=v+}v#8-B=y0Y~#N!gFYK|vgiiiYjTs!WX~xBrzjozLS3eqNPlv2}Q_*9F@h z$zFDmw+AWKLzC3P;Y!O$P_#gAcKEfBs=%~H9`FQ z4?hht-Kfs|VgUV!!bpxtUF906rss*-ZCMGwep zP8`S9kyjSDf4}>coc3jV*!=SPt0c^*(PR2pvhYasa@A24UN^Kic0%-37Q&ufTnr4a#xP{As(xO%nPU^UfPNtr z!>XF;_C68*|6@kH{#k5dTTDi1u&7$>*)L}QgBzhl)00@A-Kf@w@p#yZ09qKQsxo54 z80kqZahR^z1;SX?+oyL%nwD&|V8~p4ElR=|k0MP`<`PYV5kuzdYOf+(3iJE}gVw25 z74@!p@kd_ebLJ=!gfm%~eM!~#yI^QbgsIkK4cTM_MA`hHf;3L>@o`2ygH{zlDk@`Z zSBJ!0$w$u9eM`2p0#|?Rg+-Ko(tn}f8Pk=EMH}kKwsyy~&hLWl$3*>+h1vGmg(G^+ zW?%6cjU56%s8uI-l(((?WKlPB8G8En(hvUZ*(J2fdQfiqr2UVqz677(D`n2&Eq+5M zgUkMVT~pcAT0&xo|1eP=4cR)POgvxG%V*P-wzm?WZ1l#WOOuU(1#6Y2F$HGwWG#_F z$e4yrT1hO(&c?{|E9zyL*0{q&f&wQujsNhMy9f47P&vka@ZYnGIXcRFCfWOVihugb z<)I4#9}-!r6X%K7FxlzBs-TK+H@T*qr7hbuZ|JEzJ(dSGdt`G;p zvnODnZtRAFp~%|_#xfw-jae_Q?M33LQ{dsi-b7%7`I2_<E>n_Gw~y1R>!HE6|LG})oO*hIWA^(B;SM~bI!(j5~d7mQ#a$l%CA9CAi(^V zynEFFcY81a1WdEC?D={ilqF-Ta9RQp&$*DtD*3Zoy=pm-cfogN=@>6sj5t@~qP4^X zxB^^6i9CmQz&imW_U4qK2qqLlxWXSmhnqH}Ga8G3I$!AMC1NGBXZ@nJHe+@MhRl^# zqa@73UkF06zFrt|wcu@V#c^?FS%S?`(e2mZ2h+-c@a5AI6idvg;2z+Wg)Wc7M|HLQ zCl9%N$v_2ssQT-cFG5?C7*T!VtG=oG36ksHV=9t`nnJEf<|$0`MGP$=1c-6~Le8F5 z?dDKHl#l}kG-f6$mn3TR?==`;ehk5vE=gy&G!*PPv~1_w{+ho(pcqU7NGvWo@H4c4 zxT~COv=S)8Hzu;Gx(SChQYIAy0VxSLN7N>YB33VXg= zvjZ4lNT|SKX~NUy?|MAL<#e=)SxV^QF`_-16-FaHOyU-tUM;fDQ6a5cYitHENeVO7X#pBQT8I4+BAF4M8 z&vEj&PEKPZmjl#rxW0P_2C^&mx|m{r?2#oq za>kY)Lu=a}U}lCPXg<=$kpG!$ara|Gg(Z*3zIf=(44x)+iasWZc@&CginoL?4x&1_ z-+X7)9D;>Oyb7nJGb^ zhiBoY0^iuBW42I290qE>J&RR*9NPN#_P>~4wu^Gnn)&E&K-}RyhACC&RiZg&GgMLH zQDb^tVHVqBbuT$|*BaEVK!64{+i#Ay3agCx4Fyf*1z}&-NreodU{T1&5udW#BU0V7 zlE0Rb^XRBS#nQEHiwRi~?0}81!~+j@|4!D-CzLwRHfWSA$1jCt)vgNGglh9<8a_2K zIn~NHB#pDUMjeS+6qeLnZ4M9hFCp{po)EmK*J`TOtdUYcCGmARNH z{h}83rDt!ulAgBHfy*9otnb&o?~}0D@cOS&pxTkFxlB~+Ljn;YSn@BRrP8US4>Nyy zm{!4rxl$+dfI8I_t~TLhRp~#Vp3Io4x^z>A85FVncr4t5pUdq8Va0CUf0mqq0`C;Z zz6VTxa0=e>^-a8&@Mlht%0kZfI@tMLsqUB1MjLnWL8eVY-tIrhlD41+i(Fe{C^0ny zC`lq2lNl*{377)i2sZ9{sC%RIsKdTAGg{ry@WK0g<%G5ko%K;g@hcB4F~zjE>tg}^ zH3G_N?89Ad2xDA0VRO$EShwr**gqsyphad}oby$aoa&ONqCDSL=5kt@ZYkPO&VV^8 zC)pAduCvjp?VLm|lcBn-ycosPrFmO#-;|}Tcd^7*WrCmi?k+rS{7s&YTiTBVS8c(+ z#NE(gEl>a&{)-nHKA@8&r&X;CEk_(TB)&)b>T zNBB)kJ+``YL!$JNdRCNAl8;3(Im{AiqbzYLq)>wA5&vRSEEo5FR)vueN|Np|s{PMX z6BoUtbvGp>WwA`=#f}E2ioSCk7*E5Q|0l9^pnL`A!6mQ}M;iIF1%g30K(*0-$WV04 zydlUS zk(oZa(LbsER?X=~;Bg~>EMW#F@5^mc@9LuMT_b4Ttn9VsK?S-!X#)$!ct=F@u<)-U zZu&&GVV%dwD)FRTHhF=ff9niwJ-0r?WEW)^8eg&}+EhG8#PXqsMP4b_0U^)6I?3l@ z0hEtX(AC?I7>>_E(x*wEu&kdXeY_Ba!Ql(Y0@w}WaMfNM@The_#4;E5NfmM6w_iRxJhy9FzTXcan*qksi=itVtR@45BQ-jMQpL9|FZ<$~@H9N;M^j z#j}jsjUcXwSn)13%X4jCf)WB!b5pd*ZB4>5Z>Vm+az(M{0jWOQ9?jeryqCncaWu~r zmVTUuI5j?q(d}hrbZl^Ziip$nD=g1792=jsH+Uahs($OpVJmU93j^e&xa8*Kq__d{ zLhVuk^-iAP?n{W;@jfdo6x@EB3@?v)ZoUe>1j)CzgXEsKOJLZFeBTxgj}gGi;pwGx zbVj@zS{%1foXl28Q@zc^}s&SOQbb7cFgz>{2abxY1 z1TZ{&5QG1HQ_FE=wYoJF#FESLbY3u78=le>pzS4sKEOpgCvQ{?;4mD(s$^8Ma4wg0 zH;0bkHHt3xf~u8X?>4;awX({+K+%QQAau@dsmq094bv;<;TDhPaqJfXACTB<(G|R} zFHdW%HY|l-{WAwIXyr)%ea`Z`g6sRaROjDrw|AUS;RsXrh{)s#z~BUYNy|?XdiUM# zC6;pq)Q&e98HVqfICzjsyAWU=^rryZc-~LQvQed9ax#0(>RKscd2k!Kr3|;RhXlX{ zt>q_3#gJ#v4?LDMfxi}V0fdKR?w)7_>ghiAB@B|;T39S|Ax-pi<7N_rK{Aii&mm1N zDoFDrrt&JdX&m^=-HwEN?rL}B%Gb@l+U4mg2&SkdVvus5nG!VxhE(axFYrB78vs)n zJ&(n}mS&0{4bG!53<5A~?JSbw#6xej2+i(k)ULF%zs(#6Rcu!>`^0&l2#Da28@p&^wEQ)-g#!mcd`BQw6J>WT9xQ z4M$Ltm%UnYXmMXGRU0iM?hKmygwv$QJ<4LSGi20)HKjBQ-#r!#wiGgy^O2dgA;V7c zl?yzW%^BhFSG&{SJ!nC-%oxF7yh|?v`sdt2tdkPo`Kp@Ndb&wLz6%JVn>4LIz}Q8F_UR<^H!4M z|8)~cs+q>nv;eImYf7?OL7*a#HIWySZU8E!cAGSG?Kxi8^}jSB{vXn{ZvQH{yy!%? zV%eI5&PKP2Rmj>MUUE(uliTcNQJDW=XzqGwEbXqM;)H1!`1V^o1f37As?Eh+sJe!}luB|#` zB3Qo<Er~F)1c1Qs2>F5e*Os3ouWm3opyw zfhU${G-Klc?;{9y5u5Oi#l0nZ7@6=@EhrNAkhS_@9Q860U#*HF!Yd!Nf2~ODE00kk zo9`1T^IDJqLY`CcO9<#q2la=4Y+QCyUi4ONzc2 z;Hh34=MU?egh?phv>n({o6BvqZ?~Z;yOy2N-jU6_MyFlN=CyaQGc*}ewr#r|wMQEx zUTp_p$y&;C2GsTCPI{Qf8P6sa=bvw=Q*XxI_@fqb!|7%XDyBm!j#~ za_;ikA6~s<8;}jtlF5fDktGByD&RKrq)X(*Y_T=oQi=>ZcZVEjLzgxQ(!7}DnpjTi zik37MJIn~j;$-RHe!y`62*kx%7-@F zo}OHyw(KCFEV#@h(K}P34xsn%qIdEQZIGb8XrjO6!U0oUl6HFCSZ@_vc$UVXQI=K) z`*5bCDZH4Y{;p!_t{S;^_u*H zv%s?@Tl$qMSTjj~L__S7r}OP%2*Tsk-dQp;XWgwWPm4ZHM1E;VeWOijpPZxvO~~r* z4o|xK3qstVj{4vyjTKyUj;x$a|I_Io=;tzTjC6S01)K{2B_LsV51ZEp>(0G;nw5kJ z(l4jQgyWLsBw|NzwwLe&<8{~$aq#s2t2Aqsh`fmKskWaLzM-{t?KAGkDsc zepKyd69{-Ut52!{r%h8Eov`rs?{9v#>Cge7ipzsF^E7K7D;XD&Fyxe|g~c;Rg7EOS z8@5=0L^Y3#=G6kVcQ;tqGnp#8WbNz^H9+0P8Edu`uy*dE3|n(}1X|n1q`@_ob#LA9 zVdE$RP%Z!1P*?%{#aZ^=3(t?VEEHFO5)XbeoKVATuv&mE8@`?937jg{vf~(5 zaBQfS|K|XO0Q%fmE32+%VH?|M1YVAHn6j&L0lCC*Vry%GJM(Lpb`_Jk-n!v#Z4FQh zAKd|Xu@q9Z)`sIJ8MS`SZDJN9s`z!(l)m1$1xofZ*~xa3S2DE4SOp#QR~Zp2-t2_i z+(7Ov{Bxb5c=6D8QqBRmP9l}5K8pJzRQJ}yxAN(l&bW_Mvi>f}S_kD$zlB9`*aY%N z5}-slDPEY(!`J*X${)Y1p{CR3_jKXyF`uRad-~fF6m{yh2>5c zG|Q$>>`&KE=)6xFG~wwZr;+S`RXDtpl?xOd{m`URXYg2@Y>Kv2J$e}!WCDYiud6&UfV}$)Un&yw|K*WlSq5iTGR*L6tfaTBtXDJjK5yFc?D<_} z8)wOc&Me(4sLs}=#p;WV`I=wbzgtnR_sn??_UJQ#uK(F~jvcY(5%}y();KV=c*6mX zGG+JucY=h~TEdk>l!`kDeEzwL5AU#0lvH@f4wh5)wrHrq$!UAKtt3q2Lz<6EPEIai zQzeR50xuQMhMZWOcj}&@n7xTIIL7w}Tsjl-k7GN%mW_?xX@-6KO%rR1am6HmMBv>V zv?gPbxxYE>q?aOb=N4Qh_&vit0>a}!(7P#U9XWCrJPj!rsqCt%qrAFT zRT}vA0}g3~T+ZQPghl~e8(Bi|xnudl>2Gm*!E=W$_Y%4D9M3$-H(z|aGBD4BGslIy z-Os&|ltk8$nYX-eF-c@?C12R}`u2-&BzI%MxXfighv&}mgQ26ilBw4AJT$Gjnss59BBj1n*q}*Ul0%iKL9m%@wc6de)heaM94;`iLPilSwB)pmglG ztOH;ffSQl1FN3e+mcgNqS2y$BdI}kaLYM%D8{!=n+Eq5o4*K|v$Qg{b?4*k4N3x?+ z(#2Pl$ql6}ORmnv)E4CE$x0%1zoYX=Vp)NZnd~cEEKT8C&h{zWS=#DN|er0;l-JQea#QRH6G0eB!+Y||$#ZvNf z{vi7|*gQ4%Dlp}9Q?ilvgc+I~_M-ps?jClOUAu$FElmmX3TCORn2y>^9KQabHH~b3 zNdZ9!#C_vH+`-cy?`b)PLk^OlaT=@ujA=vLHP(M6zXFuY6lfEf_APuugeds4N0S_q zb|Mk~)m?lGkGW@Nx=afrWs_Fnjhn*62`$2%M2Z+&UULt0(P^w9#<@xsomvkP=qws} z6N>~y)Hu(DRruQeWp%&_v2@UF2p|Dr73)~WfzVB48jDVtyodl9fR;q>7!rkoIJl6( z9sF3N1bX8^P*~I+sCPG`E8ceS?I4H&bud#Y`goAb>E)ceKqyMp)VXPvnS)y^2^Y?_ ztAKary=Bi$J)HCNp=@5-Tr!d2gd1mb`fhST3}dG9PHPCdT7BvlljBJMd*~j9kgLtj zNIv_6(1$0u*G=h*WTAgsS1?ynB^Gs#>>o|Haj|0u1&uca)x^M=F48CLg3{GSONbXNNw~PJ6 ziTQR!^KK}f7ntvxe=|_Q)%_EgorLJqmv{EIcjxW1P20)9L<~e-#Y##eNHs zQCdk=F&)icKr)@&R~UK6m7n8IRyR|5L20#4hg*MLURbh!a*{067IcN}hO46CLq8Gq zua0S=iTr}Fd7Yc0gl77d=FT`orf`*>Tku6Xy+?mcepsU4%7U2@{E8#SA}Gy^-bFz# zBdRA{IwTl6xU$L7Cb$$7d?^D3#+3($XjG7f*C_R>L1|B25Bs`@=XC&JQhGdWiVSNj z*U@Zb03yI=@qt6FyynbFCjmq!m!jw`a#>4>BGg6#jVk<)y>C|p)ld)f`Ih8|h&*f)4oGRhIRRGdR_DTDu4E4c` z%Y8@qj$&8z5eUx+p>c>OXcOEi;a1@mLnRRx-NXffERcjGDtUp&bXnH@?9u(XgRTsr zF}+2HLAYhCr*fxg6DN=&^bQ}QT8O4HX>MtV`C?g%i0`NdOFE{=y`y9e__5n;^4s@n zig}C>8aba^m1RhdT`p2A%x8Ffo@L-x<-^5d0Z4P#)ZBYp4faF27E}f@MI{%YCLt2d zKa=K81E_N&{4wGHX!LsM-Id)NSAI0g{jIwRn+1*mje53`Ra?r{UJMfFGt)Iuy7(em z_c35@Memne);H0`B4CD@4tq*7v*q*wU$e)6MjeM_ zCcz^5(IQ+Ki>t+u8undwU={&pyDJ)%s%ZBpDzz19Imw+d*wW$Aokvtu5}RvAAXgC! z3bbI@Y~nci+H{WDG@QuhTFiiD_#%tf2AC}tGmw2u@L$eoAgb{i0p@x7>HNdU3~vtYtxiGqYBTEf0;?swTd zu34Ftm3ShNUcn%b(+_ZY?9}sGnN&yj@9Gy0{}MhW&=QQ#iieT)5QUox8su>Y;e=QF z-@Ck%$_?F>MEZHJU2ui$?L}s8IDB}7@rP%n!*?HD?{kZzCD01;#3*?=q1EFtlOT~0 zs3TR$UmR?fN@4QqOsg@znOY`{Qr&WfL5^w zVxvq~SVRYgJ*+1SU*e#hslnBqX)%-4)m(GK0;YUKH%Q1;pR(}y{deDepK8((xSdyZ zefu?@szb$imdvVY1amU;9wny22ks+Bj*LwlJUlUc_^q+YgNKYz*gv7Fdu8#OV88kS zvSz3LEe(=JM}7ouqlrWgU-j(S=qS>a0w@QqE$q| zQMAuvIOIoy*D>78Ofi{ETmw_a!RZ2!m+Ird132P4L?}H|Wx)Pv)5YD%Ooyt^!Z-l$ zivWM>$Dd zt5A3fnHT(#JK4Q0;x(|(3kqs=`xD?}r7x-{v;?@Qj>ce6KTP^fKeA`}t+*G5J$mYH zxi*+_BnE@Vc+#@@sYiuQU$KW%leOyg6IlCrh$^9x<#}6lx^({$>v6k=df9tb-&CEP zOanX~jqFk>6X6SR9+1ODyuizGUzozzGigI%+t=c_cy`|Jc307a-42AW-9wn=&jIDL z03so%$q7_mz#F`vmEl9MPkH6sNggR&i2erUVGr~PaC^6!&%twX+t-GXd>eo(9n>k;a}Ddb z2EV2E*6f}c=lURZmDn3ed7C~BuTKfC%4oKLYOB1yp z31-1aVzlu>MgqL!TahvKeLC%v1`n+vdu^p{DAb%mfHL$Qm%CxjkFNJM26t64L#?kK zefE(hI>8pxBNb9?aY;UlLqE_AUkY&YxK95|J!uJ3i#~Bl6r1qW2XP6xCI)Qvv00Lj zKU?wX`t3j0rC^mVS7o%nt;k#C`S;zsRmow=YfSOJjmWXj((&lUm*JMG_5C%a(J0$1 zy}zbveYoZ2ag=>rdVy5EZotL5EYIST`C0PItaDpd+&I=LZ&GY$%Rn$<>3cJ4r@|b2 z*LA!b0fI;VsNKA-?SR3tYXG^pB;w@O^ym_XJK3$1NMx^TAw;D}DRGb&FuVZ*&t}$AoSq1FjU|Gp(QG^jv_-6l(az?xySh;j zMOBhA$#(>54EheZET%E^;<4=QnPG$EbCcjV%PN(?#3Wd$tWqNBYY1f#JQ@W@j6%8J zT?}l2snKXutbuj%;zXq2B}}n!wAz+F=1q+_F%}mpTf|eN**dKgp+vFM78!VGrFXLs zi$!32dl?0*4bgyOP;W2&g`r9C3*};9A{J!TpUmR#Dpj4^z!u*=E=Vr^HsZn+KP~l~^1~V%1HV5Jo|61hI2L5N2vV`Hh_{S| zK&q4;m4frx+EO}JO2IX}3Yzmqi%mdq+f%;!f{ARJv=#yrI_s%m({3hi?F6Iu2JRc& zo)%FJC}6pG>^MRJ-@8JEs0as@l%i1=N(E>ng-d+RA#0hT2b>L5c-rWfTH`nX zSiq1)G8f^^{d}?%FB#s}+6VscUs2X)rb8RMWG~?pJx~sPPJ-|HXZ)fU`pok*=TJJ( zknAhgCs6|UgLebgAMP^RG<0r0l3vW7Jxst0!#g1(0%;II2Y@*OQae;f+IG2)En|6j zCq{@+et41StN@wqS)0!>TgU3~&LJie@=z(UafTQT=>h+Fp=Q*DDMy-Fi7aeX%6VsM z|9$=WCm+54+RMZ3<+NGmvL9qS>Y@U$-aEW=Za}pUPnWpY?sIwgC7R)v;}Vz2Ry3)J7W)Mcig#&;@!V z`i0uP-lVR*%ktV^|9c%-Fc;z}Z*jGRd8yv!!91@Ha2zXh*({rWua3n|)=I=oxOY?H1*Oi!bxQ+qg_ zXNy?c1g2s;2z}Z{h*hfRKHHtLj-^Dl2 z$N&J~&~HwpbY3DuwmtFyfQn5oF`)|Q0N@=8eLW%e%t10W)*na%7r|Ic3gbnoKfEX^ zeGJH{6NN8#g0YO?G>;Yl0P8@~Xv2r>RC~6dl%Wp*kw3zl8VMOMIppoIs?n4oQU^L( za@aSmm>^ry0DnJdrFrBbwVtDj4^6BO%MJ14M}5mM&85N3w=pP9=RqWpG)2#IzFo zEC?Z67$R9DPZVk*aU!`R=SgZs^K7-~NAuXXMHZud#yh>Q!tUY0NqFeN`=Dt+Kw#2G zB1|AAQwn~BhgeKZ+mFLY<1F9Z!euRvF9lB)*Ytw8!(I7Np+YyYHatiH`GOrIA7C=l z{vZVr`o&O(8$(90;0GQVv6u3rZzv=6#7(!+dAAWPKUIY|v>rzgI0ff*K1AiKlxoyd zEj9kT$ElfkseOL8Gq08t%vNb|^d2uB6c`&!Ach_yoS_0f&ZCulo}?4o9%e#ARGTN zcmkC`D)hKgoqa6;cjz1eO*kvcxlAc#xDjO*pNSYnD=we!8o`;s2P7E!qd^KcT+tQt zO+5h5DSPTks7k8J?hy)enFXoZ6tm$*kxs{ISne!QI&8G`I;84BL+Y6_yE7s6hRkC> z)&}a@{-^DuB8yx2EL;e9Do%gC+s>wMzVZ6)GWLRf8?Z*5{0uU7nY`<-n3D>Vs7n>@ zJcXU+xp;nNLg2d~Eom_V#JoZqr7Nq`#qLlKf-c8 zFO;hyv>E@_-#nuxSB+S}z$TewKZ5iV;}Mi%L9)WvF22+A-R)6#9smGL=0Lq|^7tW5 z$cOm$^Yxe0VKlg$1dCA=*ag>hy~J4jXu~}4pT9|F4)zR?W02=X)|vdgrULRLeFP~@ zVhi?9H%su4hxcaFH%@cga7yEitR$wEsUmSkJn|mT3B7RKq69F(Nfv$oU%#47`c|+A z829=Z!|vhpzu7m>$PJ@Y;zoG!)hN{?8vuI!*kL}nI3YgZX8SXTidiTP@II#=6OC53 z!BG`#p6yhkTkB53-2RQ6u%0Zy5g=tw!^ylc$daAUjgbhcT_@JZ@i1RLbhS;%<{}{- z)K$7L*WAjy5;rmP=Dgo-)~kg!A^V?{yqUsZ)E{s^a`&nF#!bN{{PQ%xmTT)?y!j z3s600Jt^W?Uabff68kXMuS|nrRe>YumxRl@l$Y}@1urg#j)O%wZH)|6qN3tKIG9gD zc-uXj4U}i6mPCh~kcr{MUR`EM6!^m&STk#>?i_a*W2b~Wx_?(0K!Wf;pn$Tq*yZxH zpdDF(ujXmL`Rrq6w(1Z^cW9l)?&K=rv`)t(-lk#L-NBOBB_?ff$24`sF^v{DzL581 ze*ds+Ew`_aL#r8y5pb%EQ}$F2IgS;mqjR+2b9OOwgHxe1+y?{~@c|J&Dp%U4e$8d* z#T!CgJlD6Z&J*bWx#zf!pYdPXWu&^X5-J5L{-9z4o04^pG;uC~Td}(6B=V|xzU9`( zk4(r~(5bdT0)6DY4R@Ln_Zj#g6PG+SEeSd{JAei*CY?{@qJVy3KQhamM1vE1${X=k ztG?|~Bd=?U#bUXNA`u^!ZOi!%KOyI%cfb7n-S0p8{*Bk}ZkLN;?>I}|+os@|uauai zVK_wBs=1!hT-8Dfk`1N12`0hASXIvNG9la67?HjooIK&w8hCkSaKRWL0^mSZPBk=v3OWC+EXjRoTw* z5zXIrr)v%8PdAFwvdFX4E=M8oaPEjXQsdHqCv$-yvwCKULD6J*_)Y<+vTHl3Wj&Gs z@kCfLJN_s}=@la#5rPd7sY^;}aRdPSgT_~Pfv7^4U}p>N@X3HCN2E58q}SxI2D8@4 zMm% z^RZKcRb`QRHSU_buC+T?$(D-s7!aW7Ho{}d=3^@4i4L*mQ3khaL6PR|a#~qpy;M29 zwz?c#Bl3PX@#eB!FHrF|%04%)46)qafO?x|C+VxM->Vaf=V=kx7mV1J{X!_#r4hAK zAqaJM0`#_?kJAux3}Ny@ntLajy=9T>mn{@F$77Ci-A+vm04o6dNA#w)A`F&h=Pm#y z%6T=(l926(DFuDZ%sZ7Xo>w796mrb=v3HQ@I2zpPkLa}&>;Zy}8AnYE+~>nCAHE;; zL~{QKgPh;s7T8Tm2!`s8U_j;sT*K$6nQlT{j;8k7@$AujR_+8tkzKIqzF4iFG|m;O zi1e@=sHL8=JyAyDtc=&B1}(HuT8s#=OCe~mJY%Z1i5XUzZuq3jc;U46<2u+hMT7T^bNEV1oGm)7W6kS%pTz8T?^YGcC4 zlk()3WW)s(I|^G$q3+V$cjKxA#HfvTzkfyQAKll4@Epr2Tk089r5coeRkzZDR0GzA zinlzcDC( zxcJ4c)o679mO<&i32h5qSyi^P0=0PodETF4?uh_vraYA%Fp*l;t(`nZLl7YmsDN}> zy@FBUM;vr_*K#W2$VuKZQaW(o;I=jEi%}`+q_O}L7cS$3iCaEM;U0xT z1Fqsm%KF;NoYwpeE}!d~s=%RJEUu-&e23oXoKi0>^%`BBso>-#0hJF-ZxxL z-FhmhS30XRQ@ZyVz59i+zB4h!iR^m1?zYEHOEUQo3cSHXCv~zp^T|zo6_6n>{kJjm ztsismw{^h5ka|3m(ek@)?ZBs;w6i!h5_(w!TeerZ{MkhCSAG}l0J0GGlz_}lseobL=cdoO9rTBjl zmV-@F)KaP_b1&6ao`TK_;MjDN>O-rl)vEpf=hB})|Ma5|o*oYS^&;wYno|@8PFEs_ zAXUBSEw{2=CnD-buRvxVDE>=DZPHiuU7xP|*5u}MhtzUTdlwii4hz){H2}jf14p4OC3^F* z0Oi#lPIxX|VlQ6x%9WKL!2|Jg-n|~CUgF_Ids3pYHdS+mG;P!5#1yHHL6*Bb?82}i zW(-F2ewjQOPTHeEH8Q2fBPk8TL|`YG`c680QlLmzH#5SgXq?24Zv9XSkdOH%x9QMUHW4+0xS#?OwXDz&HP3xx<>t3Z>V8=0=msD zJFXqpmBV!+C{o|i!(gL#gv%E{6t8A!u<#@El;<=L7P_+I!R_wcOR}NSY(+uUFUfIG zU&A!{(DqgodyVbAVd96xwJ7K3G&OeZ7c7zt+8lOY4i>5-d1SIU#_@{y z>8`Mviwd3#Q?Q!zF*IxWvc`VZ(dVANbi%cR|AzfOmrowb5v*9G8Se4RAi_9?B|8P~%z_ zqYX0^_(qLS@~<`HKo`dLfb*oFOlPO#eh#WC7L3NNzrk4tx51p8?3KD zSoRQM=CJ8Aka4 zuNW~;wIJ};-Tb&d3O|G!kBV_i9tJKqg?ugQk~4|+P!pDD57_sjPPof|2`$o9Q2cN| zEISiVkdn~K&(azMWrU0tGfSuH-(?j0YCwOX&9YMKMukFwmSDebt$aX~-o(4*MU)zn z1n|B1=L^-}fP8s;)Opg86QG$W+8iJm^BB zlN-hdCAwPU z429Z!A+N}I9>#)vk2I_{jP&XO^yvT0msr@*ZaM$6UU8+ySV7E451{1vZY3H`6KL1n znpWDHA0=(6#!Utbc&Po*K9+jR!d;J{oK_s?tkf&cJ-Z>iJo5IQYFiY`#p_lXX4c*)vZ;8!!OU;(~9wzkJcwdg0eu3lTg|u{EfA#ZX z$V2m{&D-X~X3xwQX8dHnVIshIi=XdydEDlE*wCyR|5WncDD?afH;OCSSc1u-drT{& zc}t@9a!U_f!(>~Vdgv&EW@18xWiUPLH^LGT!AUS>g{DR)H z2Nlsj%=&e6ihdAJOWg=9Du@m$a;3b{U}D&>ow_Wi(Tdn~S99dkGL*Pn=2n|>@4ja^ z$^IbQqCNMhlfX>p4d8iA4UZ-L`s}~|vrFyTLRXx-$?w&iwj~gLiN(5uG&H?b+rJco z`y)!L+!;M&aCa?Rx?QX4K5&I2|8fnhU>c&7F9o>F|09!(B01IrOQt z5Pg&eS~WbfQbtud8C^gft~ESL+@#=&jqP@-`&rP3>z~vrB9g0E$thQ~^SLfaUVucB zBw=XmPexx2dO!R26AP&ht}|hI$HfiL-A3S*;VK!q!*H)E60(N#_mJ6ekgO16*RXCq zhBj9@*Ko{AETF9D{Hwoy-JH^VegPL>R&CINCfX`+>=nT8+ueVPJvI(59zHcQGxasrgNFNkq&M2t>888Y(Pk~M-eV>%fsO8UzdJpYuwW}iDyd~4 zLm9~e?gT)APz1q^9qVMLI^KzTo9~cVB9+M%N|hQx#TQD;$jZqpC@LwdsH&-JXliNe z=!*2(3>p|38TXrssTl+S_K*gJKw)qMvSZK~Y+t|=+L(kyrch~g29w3+aCv-zP$ZT} zWpag5rPgS5dV|qqwpeX;htuWuczu4o!DupDtTwyD>2iC#KEGtsqEQ9{a7H}29P#TJ z*@CJ<SA|JSgoTnLj?E#G3W!9ovq7jF}q&g&1N2EKB!|2J~aWx@#o8{aoNi zm?i|AHx>pYF?PmlH=0~ACXAdz;S`)jiwl6WN(-3W6@f*vM?FR6#GXf@IgdT&+;MF$ zxtc~8rsjcb662_2Kec>@y7|h2hzrq!+ z>Behr;YJOBPf}u%8Qb4T2gR! zcf>Y;SAJ6!-GmM!5xz$jU{^bz+sL^EiV1@ws+9#dqLoaxW+>lmR#<4@8n|rF znFYZOxkteXe$Q!~1z_Er00jJx_l{8z5ZP^W;p;@*J2(IU0TP#x1wivM4lv9rz@hY< vqne={E|pijkGz9)10cS>=5*wY>*j{nj?oa1>VFzs?4QA}pM_S}2;~L*DAboWg6?9(HSG@BM{*J!bpktNxdWqIEnCvog- zWU)ygfrOBa1Ok|w=L9ai2MJ49FL}U&u)P4eEbj-rskazi|N-#OJi8rd>Vcp6!r z?mAUn^B?gl zzh!MakKg}E5Z-_O@*U?cI2RxMx*)vx4Bl&B#v58w`~*Jlt9V_!e9wcA-uBGgpX2z? z6aW8B>fmWrL3>$|h(JdNTUN`e zw5&q&gBO}j>b&xgP4aVC`&L}z^Ykl1LZ}G`UKR-v$m-fl!?zvp#sq>Z5D|AJIBS9^ z(vuRQ)JOLux?!9p+>e9g{;dNcx@W!XO(jc(WGz*z1!N^WNSa|Mq$*TZltR8z9v`zi z?RKX*M_X+%UmhPH>$F>Ji9+tqRVaNArFu9)l`$e$Vnh-}LVq+-8%jnpcYvIXQxmg|$1eDZZB+p3S9(S1nCbT-8v28EFB=(o{M)grA(!_%PI}YAa)kup` zM=hvosMY^fQB?4`cWLlkRmfPuUD5fqlqkM!|31aGl{04t2JgLx{r2=T1Kuem<wq)09r?I7iyQvP^`#E}uJd@V4dCD<>Dao%TRAoeJ50 zub~QKWX#tWLx>&YLnPd4f&(r`6oJv1No89Q#@X+cN}eeiC>{hKRs3I7oDe^y(gteWNJIfFRC z#ewj}f@Va$e%pyFVqw~l$&p4QH*&Y21j{JCP(3B(e$kT zMSQ`fLq5gw=(6$(xMO)WSs~+OglaS`8;#lNgO)~8J7qInT0QO*h<@KpcJp89&WY8f zyTc-J?jD|fsH_w6@XmDP&O>ouC^&LonrX}rT>qx{46NBZg^!S>ZhV@E(xOfc`HmH; z8IRsZ6;oQhi%sf4UO9bo|K6ot-MR5reIR5D?XeB7 z6+707Dn1>;lo;K77*;nLRV<>LF~1^v2%%p{M)Iv_OsW%eey=At`0%64&ApNAp;_HD z;vOe^baDd1I$GAP$*3yj-- zlTtJl%{B@N$?}<#BOZSyssv0*J-KXi^ZzA|Y>S!+HR`~{!y*4UIY>SUf8hv~ZZQN; zPFA54^Z}6_Wnv4LM+ENZ9O6iQ3$xwPF`6r6in*?Qak@GMXJ(vBhkKrDq_TEo3Z5&V z?mVfpPyG0Gm3CkkbAr|N;WglZAlzBcQTTp2#CXjZ*J;D;cUnzXHkfH*#wijeiwQ5) zl824dPd^#d{Q*%8IOT%p!A59G`9~j-a#udPF#cImIOc&-)ns3=I%s|3JEsr5^OT0q z%3fE=%lPc15b1_&4qVtR0hN$Dll%_I7#GM0@P(@QAw}FXad|6~V9ckQ8_IP1^m~0i z+wh)!s+{j=^c$vRUimrS#$Vk2$@Ad2shY>W@sa26e(t!BUHtb+lfE6Fd7E&gYh~e1 z_6-%NB+xY?3L$`an7v zkQ8Sym}gSoZVgi|@SS!fO~;vb^({YCguetanYk~dDI+Q#uQE&>PFPp>IvrK{A2~Tq zo*}WRsHmlbwnrQ&Q&FLE&aon-rD_@Pv@Dyiv#1bciyl|V+e>9188&04sQJP<6~<$r zLX!Cz)rtiDiuklFJ6es{*FP+tpeKZ)Fw(7qW0c7!0WoAjhLAET zJ%;}g;RNKF2>VJ!Csb-EN_k--iyW3%UmaX;LCjk7y@V6wU_`}R+I zR5|F`Rq`i|bg^5VIvR0iA7JXFwU*+lnrC-#Lih>tEC~q#A=6C;RKPkA2_G#S!<{fC z7Rdfep6OSxuTn6bDg)Q|irUjp%X(1Ko_bpJ5|0dDpv!wSfL+PMuKfW1iQ(zILc@JJ z54-S5d5N==?@Aap)TxlpCp8jfh`vS!KeUuF9>1wM6Z3@ zVo&BLLZuXo;C4bJB;$5u4qBOHF)PJg7*vV@Bd%@CWWbUY3S7fT;fusOQkc5!o{GM* zoT#oG_>JL0X{X;ANXv32>a&cALUd%v`g~G*{NWRmYs7Q(;PhP|-+$uG#ert7@#)8k z2`5ofs6L$i#s7uz_dBDSkhGym-!^PrpOe2?IbXXPr?(v z{^5{>Cxz9*Wt)!_i_)du04HovUCI%Ij}qO9w(IuO6ReBO>|RHAZw&PP55ARG{7S=BrNjfhre!9)Dw z=GQm>Pf8^tWXsTSYRf4R!6csj5O{eRyu2p-ao2NYC-T#!vNnvHS`() zwoDZuH2`a!Xd8lV5JA#~4aA64KFI=~u*^Ui!&75hXHgM$_^P0YvUsbLVS#U)`=2+@Bb(>Y7^dL%s-)+r^%M7g<`jOl#5KD?{6~qRsHRs%!ACcotD&a-r%(-4GOkvHAj}L(onNng+bxgYRMHgU4R? zL=C4Xny__+{%ID=YkS7&eQH8UR zc?Q=}JK+d^`oOo0z>Ps&a1n3KQN~P$m|5(GUn^zkX#b)lo39Q}-X&|kQv-uybi*JM zPUg9jd8gXZrFtcr$wU-NwNN-eS%}&JD_AO1m720t9I@jW)AV$YO@s5%z$R+q1n~#X8=w~gjxJsuVQ-laRx~=BOaJ8IH`h6ZlSRpGq_aaOWS?tY+Hd6*XC_d^zFh3tg&t6`vXisG2Vzf0`Umr&Stv zw8*oY|9;X>NJx2mFqRB`L?cwx#ei(e0W#sqSR@o@{Ck*d-v@+4!t<_89TgN=0h>ff z1A)3x7~ZQuZmK3j>omlmn(KW}>3#3}{hh)+GZJ#E%PazIj1=>!M9@M~?hrX>^r*{} zp{GV$(PLj_VEUN0@f;&l8Kz<`(Q$<5NSI#T-~@Y*s5|%3;emLr6x00STqS3DtZ-yF z5gN&8x@AlH5voYkKfk)X$ChMOrBo5`ds|7QKEI+4j_kW#4L-e|4hB{hh9}dpTeceecl= z?>06TBH9z>WNAnGav)qt>sso>=@iq2cL1aO7Hrv~aIx!45TpbEU1o?vS;)sInZYWS zfW0PAg;3=xoE2B@!nENKnL0J#SM0I=u06CVDkb0OHi&%!&qiCU# z4mCx*DH7k$98rgIgI;R3e##@kWvWgkTF^yU2kG)98I4 zH#T3&4;Cd)pzwu%vRDi!3Rgj|yCBOYVNzHV*1G1>!gwidDfs*z!4L@pml3)F04AIS zM&)SzHScnhV9ZX}tBF{J#mBu&CZwfYVewTP2`Kj$mnd%V1Yc@RObU5t7kmOsO(wLA{w%%j~<)ObUnnf>($gW^^4~s$PfkxT2e*J zZ2tO*i30}wnA4b`fntMP3#|;=>EriJPI!`@g~K^Lk_wH5SMTt|=45lAn5#uTJ82NQ zDF~%KLe1<#&fY zNmbM8?ZryoQ0k$brN&fAeVUlX$~%w7Gn2a-Hkn98(hbuak2a%$>TuBbd@?!|MM+9j zYI%D(kx;6+bTybhzMPw}BP9Cav~gwq;@g5sqp>5Rkq6?LR5*G0tTSMQ?>Sm$G-t8! z8S+blUq}i2T?$5c7LDb}U|LzZ3pFFR+;z(%yxtYG0z`;K0x2s6Jm@EW1w`VIAG+Ce z{f{ELRN$`^<-5spEgU9>m@LoSb0dx>@p7`Bu|!fxRi-!pZd+K5yJdL^_ik%+Er zGIXu)2oPHFh>+d4EyCX1>L~IR{OEeuLfNa7h==Ugzh||d%W&BXU4!x{uuA3a_y5vl zWrq=&ZwFM5VmDK9TUQggo1Wy)s#6Ez#e>V!0o~&tYz(WkfaiHixJP`LyhAXMt3)mc zjtxPfK+eG^i1Y}MnYbWlY+IYhWsJRi^ufURDN=E## z9T#+x$<7TH8>MAOlzs4pEbz-A0TA$wg~{sBK*U3jlRzpEjw5C3kLXr5H?q07tw;;H zeDeCYQK|V~fiKSsAM6^d#L(KfojwoRi1H0xGvHBWB2ySORnQUeZ3qSs3Mx7qa2j0Z z!3=ohlMro-3I6wfBI-IfPF(K>&Y(~ltQ2a4mHa^7M3IzREkta@QRmhVg)+H-hABhFh#$4>ujE+Q6` z?4h-M@sXJdlCRWI{@w4@h_ZV1!gwb4rf#`8Q~411h28?O2Ax?F_6rYotremvKIrUh z#zy{|^np+cfdC~MJqO(5tf?}JhDb0U>x{-hR2!Izgy8#arZYVT@U=>? zqOjt1hx~QSFscKvGV-5iGIBeH$f*!sTM0yDRg@$nI1)#w`(J-SGP7oeY5_GxYBkBw zsHl}A=L%;s-u%E?{dnEh(hA8$+hgOhMYBjQvs#X5NP(cHfS#m7+LFgl_J3;k=2uvb z%tY!75fqNx`Sj$jr(ML<1$F1?&j0}|3I~N}x&|x?89}7g*M};QCF`TO1^}Q+ih6F# z`g_+jol26p4h`@z4S4;f{%uP`A}kTwIQFltEYD3(w(-%ep}|8ng&7tEwO)#m*TY6H(N|Yjg*&&VetI-Mfx6!YZotwLdjq zkUVQ+8813KM9nw`fSOosuK54vuTdq(f(H4va^z4dv$ComPMMv$@=LiKIlgYTcFZXx zN^H0X&^HV?Ng~%g;l^sv3wqMXyx;Fh#tw{R&<%kaJ6l0V>7$RL#t=MNh)!>QaLzBj z?QI~v=(`96`bkuae}Mk7ut&Jo^~@v2T3eYA0kC=?wbTP!ut5xkUF8->CX#f+i!EpDVdSe8I-f6 z&Fdl}Dg|9A%%d{-eGu|n6&8deFCziKqgNIhA^z&Y6z`f0zz0~x5-%(jcjJ(M+aV6C zP-AHf*K4?5d9~A0`y$DLp`Nrssry2Sya|i@ktbz@BIQa!q|935RcB6Nh@VMceMoY} z?{~kdU4F!q{<*irhW^X7OQ4o3a(|;PE$&{b9|^r@(h4&YfG&FM)dHtIe)nkm*`JRf zJjY*++FZs6+5Csie?Wu4)1~7^*^8R5W#%J0@Zg*>Mfw@xF5$CXzXd}`nn;Fjz}@w2 z<}9!R`bJprh+MaH6$wg3)fH$u;t}mCf^=1vROGpFxpffMyJiwiGfoJG;WI$S={GnZ z0wKU!Z1gX*b#};r39#?Fbnfi&Bdw*%SaYBq-Qj`b>!3{wSx5%y84VfKVy>pFn%tvDf zp+y*ko~@M)_uhewo&-|n?Z7H%LZT>4PJ?=9Z3VX@m=LVq(o_6VsWI_RO zx}kqZMkMT7k{&M|@baSYp{^gepUfdBzWo5zw|LopH7^uosTE|Y!9=CcL>6Iq*9PL!qYRYw?qv;0+E(OD&t|B5vpB9g z-g2I}@SVNAa=BC+Xjk^+46vpIGQxiGh}bpijLNsP>O4*1I*6W&V2aqep_459?sUR# z$)`}@`k61&XIHMhu-`GNV(8AXA332KfttF%_8NOngMr3COnZ8FGaEj4q%!N1yq<|k zR})9lcW&58R9$6RQVJP#Vya4aU}}%!pF5ll{>Zh7y&9yq`6?$6aM}a86tR!bz4cgY z-~N0;LyzeeR{*nRHE5%f`@2-m_pRbT!e2bjc+;+iG+@XFFCE$qm(%yY$lMF4R2b)w zfaN`#u(wbfpVx#nRJD^H=#Ni>>fCan|K^1u4a$PNHa_st2d-Q=cjnZIV~;i~Z_hU? z>jghkn^z$oBsUnoWFEQzw22l+Bs3ZK#!#ez!NYM5K-~r0-`s>U!6_ab;5@W06jTuo z>DCLjBcovR-sHwGFQqmbsnj!XPNg_#l0@BfE?3GMLATD@XzW^oKjUC@AbwZ*LeK)Y z0Gt|R;h8s+g`1Dru7`V-E2I4)>_ZO|{N<3!$68W*wOQArZSj!$Ii3P6pwi~%mTd*@ zat|=BqHISGfU8r&iLNKC!Pm7)u+V*uMggPTjD`2rRqPvw{M!y~Rj{Xo$+tJh9|N4^ z6>N@8`_*Ze6|5VEv8u-jy!25Zq@L+w%F}MW1Qc*PlX8NL-q?ew%Mq7qV`ICPMn)Mr zU~~>&sa7tAKxeEP>(k671H~WrXqdX2(#0z(OMxM_IZUJWCuXEo0kIx z5Zge`m~=AKXtQEs-;D#uGf>o%LihnzYXZ&O1wWcDCxb}I5~@WUIOKH0OCO(^?UBow zc;r|r!CnAU7H9lfE52vp@X68S^snYq(NPnS8XdPpZdO(D-|>K3^uqP{@9MuyJ-w4G zSF;1j((qKzm;Ns3^bDd&d*c`twEJp4AeE(Q;I6)XP8+%k-G{Q9RMQ|etR)JMh zfZ!Ir80%02A5(+ZF7dD3SQ27-;0J4GgsEtyS-G>Ip-Jo(HvH8#n%MycVt`n~4!YR4 z!063Z_~G=mM3h^A`FYrex$>bALz5f>{acirlJrgV5p#Rnw-3E|bc-n5J_M`JqQ6uG zH>Fp!Eg0!iNcvI8{x#vzt~J2I*({`b_Y^A{^=Xu1$!8IrOri*^$WjSNr0A*%b>O{P z+m8ERb)08XQb7FYjvd*%x@)d8)*MBT41S{V~XsDP_aOjTfp4+kVkHZx=Pt{agU+SE)j3!DAX zk1Fd2`FTN&e7<)!Xg9Z+q@5Z?D4sIAJ7X_mPFJF&#!nlB9aAL+R8$80HYb zBMA|7ly4;nP^S9Ecf z(hBa{O3gfSCMEslS*kUn9#O#`QL_$Z(tCYSW7P=nkbjtYMU)FS|M~Gn+r=LR=fLX` zU)tPBo@9x2z`sz0c~6Ed7?WQ41TsHp=o;LNdv4%FG{y=aLr&%#{oha*7#7f_&r%3s zBn)_=1DKqZ3%9!awhq8U_7C*?`>N$w#LxuvIlKLR9Cf=LlRdfIJ}S{G750(_ZStAN z-W#s|&JPCb#@Y5RZ~V#QC%*h#)Vp(}k%?=n&o@(!CC*L6VlnHPhiBH_{a-!AGd};w z*!Vp^F*HQw7v(@_@{UvE<>GKLU)Hmaw9cT}L|{3R4zzwo*e5*D^|1_Jh-fIRVFIC- zamw}kC{W7-Qett4cTGq3R^p=r+%n!`jepx3ZW@Dvu($)G2{XdB4N1Kl=5bq{ zj#)tfC$74#AM9(bD%VC%0gzMw^XGg=4kr{udUX~f zN*d5IHwWq>7COK$npRY@k2e0T@C>oSE=zt0jCnZZaHW)wNTezK6W3Po+ijL>wp zlDRYd6`6^36fEx0Z)v7v`0Go$-KbJeJ%9YEL}Z&VC*FP*h}4XRZ-XD$wHWmtn2OsL z+64-VsPC+{6F%=?!5)_BSJk2LfLO~8ingwZb}oI&rc+bZuqLXz=UVgI<^I8+sj((w z8nMfM^7Z9?a_C@rXz=-wP-ss{)e56cM;ATC-Nm13g*MNQC7qZb78M$S2>l>5;&$O7 z;Ulg_BvAu8h7Pg5Ml{jCrJ$kj8p?mNh_VlBF5)ag8cd@Q-IIc<@}@Cf4Py21?(3iA z-*ytB^2r$pbHPWl zY*-In^c)|vx@AFu4UEZ>3#*{p0*}&vHSDt75^_h5UiMFq2g+Nowv(6>4bx6Fs5VXdkpJ zv@@A$)fX~~Qk>JDmBy)e)GJY79j9FL(QBS=*E1A^llwQ;(RmBad^+6?SitI)Vrsze zjrc;$bFQNw0&IU~HaYbTJ2DFP7gC8)5X5-KmbRvuwIo`-Q-5hMjOb~iFH%o=h7 z$RniJT?mBOU&sR`v@jeyvM@JT%V*-TU_dxS&af7SlG|7brR!y4c-9>ac|EW=Nb?m0 zmn?LGVPq{N+n9|I6Ykf^L-2rW%9YNX#7<;+7(UT*seQ0c-${oi{H0@K4eyCjjm%O# z(neM*7*sX!k+EGmwM{SGz2rX@XudrY_HIn-B$1K5n5>Wzl8HR0$U1WHXLoMs==6k5 z3dD1$T^cwynyhIJ;+4K8X__MElxJo}JX#`R$_%Ct-c@S8uc+2lie?{F0IpfJXcRVC zk^RBYo`fHK_*rK6J^USX){v>%NB&! z@ku=h1Af8Qb#hs*aa(V?IcLQFJaGwb;S3ja{#G1m%B3Zu>xICsVj~jDgu*&X9!dN3_B9$eYECGd6&P47W3y6q`+8p5G@VQHXBb_NMNBkqxh~J7z5Fi zs527H*=UrL4fQX8X@FwHKWEqxGZ$iTA~BNK{O0WY^92MoYEbk_C?{|f`Deg4e*v3! zNVwGX?204gg+oI!py#CGZcUV)WIRA>K$2YQ^Zuxt4#Ms94|2?duGF=a#hG?%pbGdH zGBxx~9=g$$I!FJb0F_CvYrj}DfRU4mrc@kg?Qo}?eUx17OlKHBNgO#!<7JAN`Wmj0x&&+c}zGsC*B zlCW8$SC!3E7>mDhQ)F;uvvN>`RZ3b!bFomUda@hAgUg)G4emDwpEWoj$?gOHo>OsZY*z3PqL`0RjySpN-xgMz5YC)dqA_RtCpzM<|BlJgukd z_Q^v23{RixCB8s>WOi1Wj{{n3rSP8JUPm+~6c%O;@uy$b{4^S)x)ij(>;5KV5&@d- z78fWDkdO_kUAlPb(#r849~^{$-joYuDHV25`JFp2E0*L7^x6V|Ha$Vj5I4WJ`8ytP z4-*pPkN$U2-aNoxFkiU<8~rix?tQ|&-QdXHC5}t$kROg8fGXC1LJG zlE6D`1;BV|;F3NzqjuAA@Ne7k5XOGH_H%D}>Y=MwDv#EWT&`6vxkWMFjGhL^zY323DL8(f_0_D- zL~*5t1xI|E1t~qZkkk+)vc!VQ(qxDU@wo!n-Ae}Dd>G;2)?uDmNGQUIV;Jq;y{kLX zuGdN#C+PPI=autpcqPZIm8!y)!R8?~)&>(?KI7$0`aFnPQ>ZG3PkEf>x?`8mZSIo6 zO=cebDATcFGB+tt4}~sQE=BXbn$mc~Dzn=aIi2srhJ&}o%; zPzCW>2a+qk2-41mJr#zQzvtcYI61-V_-L`-Dl09$=Y`)9WnD^9#urR0+1i_ui-Ev* z;6vTC59TOYBAOJTf%G$YZuE)iYIzVYF+NDP<~Nx`f%1Xc?60dJ z%;JF!uD;p!IGBWO$?EbH>K!^;NL61hlf&pXOBC`%b0FOTtdaw4oM_U;t(X| z@Lt)Afj;1xzh)Nd_;rQ+EoMB^LbE%9$#o$HlteM4iXM0Y9q$lOdJLhJxQ^r{S~zha zEu;(OsEhzOf)u%JL$LUkAq+*MsmXm}hAb|6$>Wb<)ax0aD0>D5i!YYSWk>^%+IM7Z zF!2xM8%QIohU|gnz4*${zsPPmg&s|O_Vw@LzTVNluK?p9-~jH6ahT%1Sc-@Z(enEe z`u7zrl->JsLpua|+p4TB*4V%}VQjk}%!K29p6T7`cY1e2UZ5*4^lu0Ex*6R};a5bIy^2Q_r)*Gx=&9mcj6G$R>`bU%~ohk-Z|M)`t7D(Mb$@xuA*ze*pz{;!z( z#Y{0Y0q-4Qxg{pYXt=}ucm)rM3E+8-KJwScYCF#}@9w*#l2`?nh%?u6Zvx%_JBh*Mug-FV7uR7~B zD3@JJH`3&M&JC2IasD$B9!=rIqPQ?%UY%!e~ z8Q8b3<{oRG?xc!Jl3U@hh9;3nvgNfxA?@g@9g2SKS3ozOuSaAAF!to*&e63@=7**e z{Ol5qB|i zsmfo~htDr~WW^IUmwtHfWv{Hp-gnuzJDVLYL^I`lDm4)G+16tNMQPgOMMA;cIX7e3 z{%q#<$Mi&`R&1uiwWR6~HIvH=Jso^2&qOFwd7Y{`GRbJ4+=|#i;%lGY+(VC2ahNa3DXQbxh%nEv*hw?<*iVHXV2$Y zxY^-P&m@K=k$R?=p@5#670~t2=_P<$*g5TQ4s0wjA#%{Gw)FnJ&3%!=doE1vlkK(n zD`{%}eKwX)cT(Z<)I{cq{c|3#gW02<$Hbtb!mw_^w&$x`1?q0(^#=aO7g%O9+hT#!rOzMMm$9&P2+Vf7mTfVui9>ejJiWn99cfS-a+@$I!c6E@o3<+t7uhuHvBwb7 zX2s}-mC>O1f;Kl49K^bw@_&W9d5N=RmlS{Jcx2T;M--_32&(~xWa)fZ*mh)!79Yj&Fnhv zIy(jSqvyEa@ElgA8-bXpgte&m&wYc_zLzt2OI`ow*qEtVtCWk?!cPW^>`6 zI5#7%;&7MbrW0I6;sGm`_4o8(t&XniN4R;%z{s_VrTa7aJ7=lCQ&Q7`aB6Cbgx`AX zqYbYe%{r1lU7PVy^GOW(&U&PYjAaa z=prhH2YNchTS%F|W4&|AqvJWWhfZ z2=8dbDAcB?;RgSX9KFdh%WruzYo01kOqtP%M<@JVJKjP-E@_fJajaSOS3lN?MP_rF z^onjppdq`j|4;G*ptKjWsJpv6XD~k0O!2lfG+iSJ#`b7Ji=lLtVJGerK|PLFB?*-w zBJA2ZI$SPVes?n*29o%YR-YaU$3z^r7JUB%SUz@iy!%!3HSqwM|BB=+iH=vfFohj}Bu$2y*%>)+WF#_8HuU8S^D4y41;_{x-P<6am1h?5dLr?J_J}UE8 z+-Mg1?yPTVT}#T$Di1OEIZRL(kV5FyCW#U3yf%`HWG&f~o(Nz7O0qzLaAC4snkglM zwyz-tj&$PLcEmqih^0jjY8Ik65EAc@=;iciDwb-b|I}wr<-H;{B+-oWWHwlcm3(`4 zPyU8Jywjs*g0aGAIv%mv1~ksJPTmvk>*Flwa8>x}Zm6%1XHZ8$v+yJov)7Bzfl<^E z3SUE)J~9|rkqJhF?A2{}{D!+{_Ej_bu<8xY1c`5bCiij|?>K$(z`m6wwliP36k`Lq zSIJfG1D-I%%jQ(%QBFq6OhSOML451poHX=8hIDFR`oR~dh=qOX`e8_PJd zupN6jokRv%RV{VT1NU9Ncyhg386PayCR%xxHx9B&Da2z-*&#diw=9Xn zGoJ9Svd{7r8&f-&lR*Z?h=pyl?`ABxnQq_BkQqrOPBoOyRf%ApU5o3E&Kq~1fD{s@2 zs2DP?pz49TtfFA^h#L4Yz}TUG5A1M*_c!Fi_eJgZ>)z7q5c&Hc>4V|i~`=wW#GpJ%J zrWKvhgML%xv35@h!`V&t7T7!9XExIl3sTM28BcaY#?7*Tv_R#44c1=`hdy^~5U@%4%H#^&E zwc9~hA!eL=>JSmCblni5~N{ zQ=?w1Dtb#9mj245z0T2nA?GscN;Kueh?;@+)W7SIhm8pX{Ify@@bNivSF;kYe6$o) zb1Vmjp{Sna7y>nBh1u>DdI0Ej1$Mmy^8o=v3JB>4mQ}^yt88R=%Y3+oqf{=|T6oCB zt*tmuqr!4?l)%wIFGyxpI&QRGOZ@xTn4@o815*XVn5=5r$js29Pa7^qGozt=G~`6Y zTuD}|PN;8K&-Co&^r}YDz+Eb3Y^OAqj5eYnpSK`A|Drz>-!hU!I07I3cX-k{;jXTc z0a<2|sbf_dwv%%KWd~HWFC%Kj&J9;#2zuEqSOcE50Fq}(KE8?>)Yo5zBwu-?R2s?g zBp=rcRGllx#k&ndJ@wi~4kizv5f1@C6~2x;Jmrh&+Nl`E7vpqY$`7VT@7Y(f2eRQ< zDw3QIX@(jqbeuVJ^vAM=;pT8LmX;>HGkRFIOcJE#Sb1<{sTxdW>xp18Wz+%&_E=L< z!YR(jl8>v#NWRoe$7{@g90P5BlD-voW~Mud0TFZspk(Fly@|d#Y;i4J7?aDsCb+lce9|(#<+%;>5LoraN@B(iJs8(-7yy0oUA}g3eb)ddJQaR z0){F%8T(Ktq(!5)r>A&^>>b)oJz{Ojr2eeO9F4`y#1duLCXytpG>MJs`Z^ja+sXKB zL61ZSw6~7Gf86KIL~2|cjj-R@Ymj0_!`2;#>%;L`OG~3zm{fpb66liu1LDzRshGQ3 z(pSp1x1ie?MCwt$Mt&V_$D`e$NmReE`zr!$=p4%&ZNk=z22<4{ZTLSsiUpc?Vj!C3kyLWLlP4R0hBoKCqu-1X(0>40}? zP!bDq@<3{QtXk~m(yJGP=Ch^Ur<#^|Ba5&+kQ%Ky`QxkkT}t9JmM0ap`smrg)7>uo zde=NTgV}ea+Z85UEXkI`Jd1)3MixN8nakXnGkiu)F^`0YMQY85g{X=37OEv?W*771zGOQGcYh%8Lt$p94NXWJ1^yMlol!| zV9+-54o=lcO;Q@mSOF6g;Sog~^^ymY?bgBhbL~BGPt^2`yd$@J9a1~ygnLrkTxBBb ztUe;oS@7Y+z86KY9JJMeNWFk ze>mig2hDT>i4fh4heH$C0NU0N6iN2kDc^cst&9!L50#>zPt;&*H8Y$G$HuFEt-mmE ztmBCuz{=L}yb&9TW`?H&xxkYbL&(mlrjeZGsU+%a@6}MYoE$E9l2OZ!dgVaQTRQ&M zK-lVFJ9U;+qQ2&uht)PGN8_QPWORgmi_C81sMkU5b>R=NO&}<}hq!aT%yW-|*nqk~ zDfqG)O+}e*%PR9$3)a$x#(H$To`S=QW4|TWnm4wehdzFmtm>Qd*Ez8}{+e@cw(GY( z51PaFrQu(V&>mw3-u7d(WSy*UD|5Zp!uR(7a#4Y6;OFTawsYrvL)(MPO_pMDjT+n2 z2K;6z8XO|yD+gfVU3KBlt`o-ZV$+d99#@OvI|uB)KSNZr`=@d{P}kF)^Z9 z*31Y7+#sZBZDB|IeK#pfV^QH2-pQY;!ot^$_vZFh5s@aM>gE;waHrVu*@Z?bl8tEc zQf8PHF)-V~Y~Td+CIwEO7M8k;8c~HRa2Rj~zIz4D&9Hsw=wZ8pvW;#SM*+eS%)0TI zgyJ;MsP1?dx;jE5gE=0q;^7%|!j3##)bXMpp@L>`k=)E6NMSi5ZxS%VBGYN1!R?zF#Bui2(kEQb`$*3mKb5TdDH8zHi<%+&k-BeWUM%v0{G=Io4f@yzZ$onUl4~-9cFeM{8@tPh) z-pdAIOix>gtbUnM%hSJ`0q5>LN)G1)KY2?lFIA`E<@ zjECJ&H}DwPXWqkh#_W|7Q9Tq+q9wkEy*jTx7eNg6vr*7w{+erSKXbjCBf_N%r%xU^ zw14mJ#o3whR;`jtM;sr@=CUjkAG%?(hJ28Q#DT7e(}_7suoXL*$E zseX`+3mc;s@pX!^%0xL{_-_-%c(GlM7wM_OL@rV66yo^_{vQHRau%PlkNyUl4Qj$J z>~;yi)oW9*G0TN2*clEM5x6;gmmrpB6$J5BW^>u-N23T zOe=OeL5CvGb}&E6w1PZd*_qRFS<$=FS_vvI!!{xTgGt^%)YJn`T&sIL^dmK*q*GqK zI8ZeMSqvT_qX;4>a@O`~7N*G|V%UrEllX>%vQX|8u>C%IJQ>WzKGq;I`}Psx6mA*A zV-;tt&Tg-S>7XsMR&c+CgxwH=N*8Z2jm5X2TtI8vG>m-b&YBOo+bB5!FvH=xl5RSgWbD4xfl!H%w|vc=%Ju zUb!8{|B1_BPmb-E;f=_HM0n2+JpZ;gzv;=xAH~Wud{t2BfRwJz6Bj;3JiViC!JkdM?{5<`S8gR z_c&8;*972S#tsf@F(A%ArqzPu#y%inGL}ba6WWgrD1e2``9eN<6c0EGAX42!Y6dun2!+S}^a#Q|U>H?9gg z%h~n`oeC-_eRjLN;(UW0LIaHo*0miPFB85mS4jK0@Tly|N#bc@Z((*-!Z3KAHo>WBc4Q z80R`y7p3$##Io;wrn>xctvBZ-hsxY1b9eJp!Rz(v{?RDuVACQ@cs-0S4GCX3PAL*v z^6~|whm6^ICg~*$Ti;{1xqFvKXN#F&JZo7V)QV(H4CD;0ZYh3CDkc2YfZwouQnBF) z#S3%TYP!uj@($PHA*+ZjzMh4PVom?D=rq%N@lBFsu@E7n{{H3M2OH;ItWCy z08BlB3j8r)y?Zo3G;$l!wN8V5pWA9be+L5%^%gIHZ~ZJcKm}U&&?$%pXebcD-ua6= zXQswmqr=roslfKnN2C7)_VtJLghO<{N{Z2!nK=B{;}6=fQCowb1Uq}4imM$MRbgM@ z$W_XE^lG^`a9?& zbPRM|23_CNwE?-I;*yxb=#;n`Ap};64L-8Hk}3Z-F5V6b4Pv9GP$>6X{#b8QthWT; z=!Lq3yGvMaK{x&CW4QdW-X$c!6u#Z^ZTn`X@RdM*#ta7A-Ti0y=r9z5$#$g-#byL& z9*2Vi4(ofiEfNm5BFx?0FmR631V20An~VB!aD0reYvG}~Q77IPt_18_#e?rUg&BjD zK0@@WB>6|xyt!~VVB>qsSXg(IC~uFY^2zB`1hb;_;rD*iM#?5r9}HS_%+{2Nwpl+I zRPXr_FZO&S*F+D1xJ0iIqq>@j9h@`sddr|*T%O!Rl+Rke)ZxVyEe)vu;(2_j7R6=> zk%N1?B@4KT_u)X!XIYozFv{&kKZ`4Yop2CSr+j<>!DBC6L|1MH-!K&o1L9%R=PhCV z&-B>5_xo+EAs_!wb<+qhWAg6Pu-g<~0FdxMgC%1RV<$Uu-0JJiO5cz7xq0maTV3PFSZNdiK0t9zOAb_wVzH z@D{x*a=*db>(FS|yCR>44?p$9eOD1oojQ7WrP>_GPfU+DeW)&zGVC%uDcd5Di{{On zJN9JR?SqDu;qg=$<+W|7jEU*6IEc=gmW$t9lLI3Uyw1=T-|nCn%e%tueo|Zf98DJ! zqd7LmP8OEqi?wtW>4*Lvkas9V`|3->ja{jye^9n&r(e2K%(O=aKlLTdVfBC*CVBi$ zqf}L=!lim69Lo4*v%a-Wq4M?mh!UWO=a=)=Y!;m_wtu9Kp72c6OWvH`X<>7A+1o6i z-r65h`xk8D#KHspnaAx&@~%_scWS7d0(WaY{Dp6)OqMabdHZ{T1cNgc+EjFR2Sdfo zlG##>c$W@7zia;fp;&1!_obKOS*XML>;DXo@cY6DdO8o2!LAV^2EJJYJ1+KMz>L7a z3Hw4T1BE>UO~#tGRoO!b+3yixb!7+@%b)dnF>jbO;DK9Q!$lB4ux_CPx%yjQp$Vhd zdCe760TAO1znRy)5S#ZH-#Qcfe(4n7=GA|W-W6_f18i!1y^C#)4(wZ9o}X@GC6Ag#hrnlWO z297SCTRTeq_aBQzd}jytTsfaoJcTzEo5LOi)jb!tX*8=j+qA<$;;mJ((NGjm7tY2V z`?ib}@h(>rC2bZ~ar(qsFm&Mqj!G6M7yNc2x(eeunLg0>Zs*42oE<40+g}LDgZaeH z{iF4NiYDdoc`xy4WuU~rz1}8o;#t~V_2S2o>$Nk(SQ+69Mw81KOgV=n^?aL$n?C8*FbCrp_ ztm$60Aq6kZtKPw>;e0e35$iGW0s`p&uemFMZsR!5GrPD50t62bJiuc?@a6&}c#EWX z0K7y>7B9(w4htX&Nwg{IAazCY6+1rYIC1KvwVh`r@sa1$PO^|9+3|Dk#%W%XCa-B~ z`H1buzAHac>{|6_ha02cR!VckXoZZUn zcHo0%I9`tRJxvw_Va8L2GgCxM(1z^hh?QvNNK;-q>#7dw7|(f8A>7Ccy0%)Or^jH1 z_j*HGTBTfJHqwUCF-WkjMtoAJIM-QV6yg3ItIO;hJABfJ6WGf}lU@)?gcDGJq%-VU z(TO`K96%n-Y7m4l_A*YV?9y3!6CL8>s!}V-c^6E-d;aHhV zJ3GgZ@C!m1X8;_m@-!B5+Vbrz5{4h9jZPK7w_~w0ju;2WQZX@uNz7fexjP6U$T@{Y z`j4mK(4;{RhhD-RMu+hA;+)bf-6rUUMY|P;3d9oz_@m%5zrcTsTnm|Ybl?msLHSWg z*_|%oR2||$T07W5Sdf)=pxqU;2IR80FxzG-$Ak{boD_WR*TCt>!o1EREacVM%suUR zfH|@r{vDw5z%)e&>ahRAC4N!38TNoKhA-vPIYCn4sJbU;uGP#rE6C4+AsBOU7kQB4 zs_sFRE%Caly(MXvMwrgiXGS`V**o1O3Hg5!EgMf2nuJ@?LY1rr8~4i! zaZL|S8bX@@@~qZ|$G@I|<;h<}8!j}FI=tF?Ep<3Fe!2X8;dbF$&<9p9zjgq|3bhR5 z^Q1NuuO^sYdgE)q8=@O2&jA}6gmqZ5X-7eb;+!98hD&0QCgcPWU?B^BaRYB zNtS7k4jzn)Xc7`Qb5)G+c{pRv%`)xaJPXoRJZfBZj}ml)S^fy0)&XWX-H^uXk{w7R z=T*+XF?U0m@CScJa3rm+6}6J8D!GI^%p}j={QYGo(fC*&%+b@=H}iY>f@)2cnR~bf zZlL21YOm$CTeMf@NwxwQZRq%=*GShHw;fA(p2hcZu;2^h>lC?6Vx}|2aH}HJ)o|4l z1*V>kOmbY}lGNQIh7UvtKFHXddf_H`n=}?c;tF5nX5sRkmp@9&JN~XdwJq8|@yL&U zEW8Mrfs+K+!%P;U#0*{RXALQrzRe%mdEm!rU($%3heqt1(3dyh1i$&&4UJU=sa!s4UZa3C+QDlgw^xcp*?_#ie5bo%^E zD3%37c1otfYTzs4?81}zfzGDEF8_ny2yS-QVOD!fc>kw2Y%%gO-~Q@bYEufQEA#6! ziyMar$IHxF@bQKdM;2(5^=9#L_`oq`z-MA|40sGDo`v&h9Y1(%odG;Xirgf&(dKF` z^>7@Cc5!IlLx^ZA)V%nR2I>qK6`48ssE6<>OulgpdPix=q#fU(u~b!aCqLNQYOc>C zpOEPzjh(4k_>MYF!jWpK+1;6eGvn~YkZ|B|pD289dJ3OER9!uiZx3vo zU;|7z3{5JW#DC|}M`0Tdn<6F-3y-6pkHe*``PuCg?Ui}y)Y51#_`T3JA8GESYNM$^ zHBUu}j%%cqJvoD>swccBsN!66Fs&+Ow1pCwGp>II)2drknh^kA&2C5-U(qKc8icn} zbk<+|z=S;@i(t}WF$13=CZ5OhbmmMO+@ZkF>7qrv>uyXn^!7Y!m1sywx2FpNV)QAw z4!HWQ67+eya$4Xr;PP9S-_oU)LPcy%Q627M{C(-W8IT=jjHB2MFu^&^JLYOA&_JF{ zLzxBIHC?LyX;KPcIUl!i2RyHz;@6<*x2Kgp8#Ne=Lukt84WF{XYkj~G+D zVR>%?C8%$6&21SP62wOz77rdT7^8ZcY7Rt04Cwm+9 z`di4&3DnD9O!bN{x@c~v2?VVQIrf}vwLY4Cn895O6N>m+4O78u4?R*AaQG(%cf+isn_QM!Ni7{%+> zLxMbmI zh6|PdjYidM8Ek-=5Nt{?JVT=bW}pElhir^0pua^z>IzrgA1UX1@=fOJrmXt3qK9@` zxYg3Ojx3i!g6x)Cq=R|zh>W)E#L*oidcCpHy_0PI`{dp!qa{rvoT;|x=n-e7)`7aB zyr>BLfcbu7z13vREc=x@2j{%V2K&x*pVw-{P_-8*DIIb~T7GfICVW$^(Tgorm^{;$ zRT9qV8!b-KtLW2;dySRG>VA7kYNHRFtIh;8GwFCgJ9+#=NRL|^8l~Jq8*Ixl|JNUH zTc@)&v=rpnEo6`MGTPxJ+Tj>@uZ8-QD@jiSvHd|EO#RbD5|LT`gIk;{t)z}_JSD+m+-gnRUy0A>Sz)JQ^R|oS*o18~@yP`U z_7zQlgS}l{zMOni%c2{R;LEPgfQEuYFGq?!tz=7J%A9D8%-kcv{c$-X;)4vCL!}<6 zywIL2=q&aWOlVB4`DLvIL$FZhaGkP}>Y)Djw%g;ygyyn zSh&e&b4wl*#<6T1;={;TQ4aN?_MR?ls4Axr7Ap6JADqmZwr^X9%~B9K)$jz4X<#v% zYN#+|Vs20Hs+553g z4SgN9{8`Xw5^KF9T>cY0v2dcB5#5wnFxe9emy=zwAkEv^d%7?DFVc*U1}(aW;N9iY z_7XXO-P$@T4i^VNoLtVPr;@s)>fW0Lx4_8CgDu7t**!01c;= z8SO*OsgBXjTrMh=i%pWr*ItdyD5Di-Sdk(J|Id=5l1B1u7Z~2sR%y23GoZ%6_7r6C zDj(xdApdMyq1%xqR_IvN&Z`BW%^9qsIJ2d}vdFa#4W zc&w*&-7YjNEk0cmhhyK$3aQK0m7N7D6!T(oFRJeBXjG_ZROQDqAt0@d&93&#;XYrj-{oJq2XE& zxRV;iU5fglQPj%4b5%^do$4xvLrrL>6yVyxsrqNG;El@K%3h2Sq zzfohz&O!UTmHmo;QMg&WsB6;A>%OGlsDD)dy1`;tZ#ZB$XWVLqp3c7^|A)?F1rvpX zMV6v}C_W-F>2=pjB@el4-6!1NFEy3=O5Z3uQT89@&sOAAyj%H?Rd-iAsvoJjSGLG6 zdk%ZP=iTppxAvym_v&u;b@-mH|762pqo?tuCU29sxv+V2^H-WLwt8A$U-wem9qq&I zU+;Kx{U17~JD=?QO;=vmMAs*~&UFjjlig=~96iT-&iV)aPY0#~@AQuK{;2PP{`USK z_y5;G$-v~mX9gXECk8(;`1oK96d`)y+Ftlf%`RKV1(quQhUj$e)I&>&5ISuGyjH%8 z_A_a%geULglox)gdh>mRA7OV0``8Pj!fwX(jCh3I&!-_PUS^Nsl7!9dCy09(aa;LG zwhiGt;@r4qaeWxqcpPp;cm&s-xbDR@hwB!?r+1OY&A2~@@Ck8}4T?V2Ew%%mW!=IB zTrc7NR`$4f8|&uhSR-_^>u}#KJkPpygo}8Xs(nt(iig|rY>|b;0`?X0AbSOA{i?MV@X`g;eGF+1Ql7fQ>>E2y}TSMJR@XayZ`znVKt0aDRK{xld@B$8cF<}uQV;|E({w9M(Qv!{`+Za2a z&i?K9iMWy7ebdkkOXrtFX{nWM15ds$G4_cYP;CBPtVkJ?)ckM{Ze^@M%bic)jySyl zBSkC1A*^Bb*xGWlcI=yPp_BeZrDeO7+BECfY278D7k^3lM+@uc`U@p17B;uj^mlqVIQUs|HRBC#^0)ddUe$Tia%Ls~BiKM>9duZa&P zrS+uvl$0gqN(JXHA+fiY-dg(Q(wj?fEWN(;>eBN|&npT6{|i*H8G~Rik6~CkQ}C~F!)a~r&_FOw)Bk5EPJ*iCpRzOSx^X9gT<1o#9dleUQt<9 zT_bzEwROJwhDK=ATGzF;vySzhtgE}nAL#At9~j&)G`w-sb(=><$HphNY`q>T9vo8m zz~4@^B?JBO+rf5)DO~=2cyekP#-U%vqPuUt<@S%*@vonh?OIu%|M3b_?F z5{!mI9z~R;K1tD)MNlApU?iyM-G0U3_M`YAg@-+gPIjYQ(sWEe>6hq3X0hs4iQSYS1qJTK4na0fj)n=Ynj+7 z@=D^HwN!WwiV#4J!&2X(J3lJSIZ*x8m}v*cndEtS1tJ^ z3-OHGe+oV?`hqT}+ZC#Ic@(Q06NElxI@0S=(qvRXk`zl|i0TEv?GGtdx*Nlt6?Y!R zhGf!Jl1QMy6pF2+1;Wx|SW?nJG>?)l4^ISRy6N6fsbY<~k9m{~d3ZE9Jg!ALU5L+8 z<1^(Lvjw&UV>TPwFXC5hHN>P~U4P6%|5@>$!X0P{v1}w5BhCe}{EKK_%C_3&#%l@K zsXeDx!29$xgqjSX`~zV$;)J%#yl%s`=2ju|N|kYgqa3*}e}g;lcTRrpSiQmq09JxYxV9P%hdGE=NIe?}RL zQN|*qEuoAQx==<6OHf7%-6$i4r6?nXWhf(sHvMhC|UBDxQH0fa} zKxCr!j388G;y16Xcxn_6dQvTzcmUkCW><1YTHPeZ{znY3l1HgqZXWJXYO7;fTOwYpkAUqehLWKMK6&D`7Bp zq}8J|$=;j}kJ9`>s9?e=ptqn&n4?VcN(0n+LCOt_iv#Wf2#X-ZI>aJ+Gz^)u?a03s zQpSM}f`2NCk`kziE_&UP)Uk-P)?Illd9^eY9nu7rq=c!zcaH{73z8@~PYdN@e#lQU z&;)6U{E(x&AH5H)xw0#v-}4$x*b9O1v|AAak!gq_ArNr_4u{ZpSHBZMksz4e{gGCu z8#(l&UI^4&klq@ZpdchHbr1lcy&en&(Y~rANHKz!%hW>Pe~dIF<*wufj%XtqNXT7Z z9;bo31EgtJqZJc6xFq$v2PiXYtqzrBRDn1}*+kGQbzp3y62~Kv*cFl+%5b*J)%qcrJ3`)=m)p?+yOyKTnpdK` zm!nne#H%ZCdSs=wCh=rNqJCLfSF;EnB4$}cx4bH2G>cd9BL9F&E@Hq0b&0v$=oMac z60MBA5E_u-%bc31?+3Huz*>y)=Wrj9r7~v2wPB;Wi5Do!b2&V_YR>C3Rdcq+f zNH_$92qyqw8{rVJop1=)K{y2LB%FQ#HxLd1y9kGXFyRmoAsjz|Nx~suif{;+CL98y zveLFp=G}CobRv3>3UvY6tMU_~yKyrkEA7kJH`0xYeUl0i_N)pK>ONWNSVo!RefQi@Gbswg5> zox9_(4m#QU;xOD9VLhwi7?R?xyquaYJoR(KXbOp&nSQ^rr zkz1pO=4bZLNp;>jZ{zCx@4m>w-WwywyvV(?>QAac{KcD4sfbo5 z?Pb|~bY@|%G!~tY9y$`8mZ(zFb&-A1r0RIh=83&C^V+lV{ks>AMh-J+S>W4Lo){!=DqVXvsB{R&HWp%{p1SWVg9rqo3h7Y*g3=Yz}N8tlVEx_ zg(IpGRFHM}TgN;qpU zXI{13ZE6lzr{q~qD>srMn4+W+d-AwDvr_4gvJ`4#Vtqn^8w{!zSjNPS}SvA)y6p5%g z_F%{%%mujTG^1n-_&Wf&7Ju`gE%nI*h?_@V)aPcGTelV^??(;(oOcp^Cz;=&AX0xz zcc8Yyxvx9(GWj&m~Z*4BXt&{(qd@Ojn^ao|VS z=tG4EU{SXL+T~$XeG^z`GaCU3$IzS;IF-88LyHy$*2Tk~c<9#;ME32A=qL6@7b1p@k$scX z5g|AujLhiAXZGxi7`GgNwBA1_j_jQgN9JefwZ8uT-gwv-5BsS-unz|E_@$r|+xmKwd`G*I z#>QEXr0jg4n0&Dl0JT=2TAGrP(E@19NTL*=!fWyU9!K#I!D~l%OIe%*e(r|>A9J|^ zzE5|aybbBL&NxmB<>PS_w6IT)P6EnkD5jm;>otfw@jsV`5}^xnuH7&L$g8|0CXNy@ z6P3xcvUlpx)RhAjUkXe**K=pz&bf;~JYE`W9bI30<6bB z)s;vfh@i@|lVx;HS?!T!$W{$^c}xkiZ#1Xc6Gu!hfy>*ZAWW4y-=B5!^Yz-alkS)M zt<$_b?=U#-*7ptf4JMG;02o?=pxOat!!cw-wnT5W3PfP&3qYClth}Axz5A**62Jclj>+Q(2;Idq? z(tHTVyZNZmp2EllMd0_XxyB@-WL!5RRT@^5ECOdq-_+1*>5se1o7k?t60J&Q*o7@z zH3b>Aw6t_Qu~d2;4s}p71%XO(tUVcHx>b*@;EV#waHG%T^_LWK|1}`V0J+JT;ZGCw zs0a=w6I4>UK>+R&Z>qvD+xYFiX+f{=Y)#uz7S&*eDd|m!X6@_*o^zW02+mkAG|D=`x$E} zbe z>rsF2&c)XBTDVaX;vkghAdGQ4&@mB4qi4IYs21oZq{#Z16Rc2H%St3~=ia)07a2|pmZlXMrO)Hw9N^ev4EZ@8+;$u;*Sqz;nmWu83 zsBl%Mt+?MkibJ80vN$4N(ojx1KQ7G6pM+w7Pc8b_}z{!JeYe(bAm$>x>zLjRM(|53xv1XMz(xoV*lvZhBz-2`xsTZfCD4{OUr15b6V770SW}Y`F zrGXF&`GU#!x4FL$lF$5^0V#P2U-VRs`9sz_33fosgQ@GvDZZ*<`dh|D&2p-ST)_of z12*6!)0%*%=ZLzZe9K8mWA|0A?)R0aV}q<=4-*Ke0Sk^St@z5e6w78PL}ugL0@Pi#>?Y(_BJI==m zQ>_AK1VDQH~c&Dk+QAU+Bx^?cg9Ogq3s< zr=H&aXmVNO7C`OplsmJ3f+b}rc-y%jauU9#hB@b#vdw)DtoGjC19Rc3l748<_C9)U zyW_HNMr8c$ox3BW_lWa@JzZ56jZVlwRPBW#gKbe{^2ox8P1r|1NTud+OT{we<8p7Y zp%9~E&>WR0wiet=Di|D0L9+zFW+>sfPQS2ae9wC>t%8f^%=@~@F~Qui8+91(gXDR@%lGivwE6C;7{JJ;O{%l#lnCT{wk zxXvr%oq;PL2Cyc#4GYU2D0r;9u~RRXigh*P?}lHtZ<+i3=yb8Y6jj4cAkbFCw)604-w{(F)#Q>tag*71ZMPM#Q+&&n=bbUL0Ix@W|eE zQ!>oGwHrn(jSQUlLK=4W0YAO~DUWu!LO_FB&7nn|>G{CDX6*unNKJvjyK9WlLHW$2 zf-%6mB7gRc3Q2|1A-rmd9O}Q{Zdu|@ym&?7R;q0x4wL#HAj{u8IH}o7w|`CPik%Ma z=88(2KT+%a2=oUSNfEF~Ki=IAkciL%Y>~tql_G|MJBxS`$Ch)%{n;+hiz`r}@NV=F zG$gG0H3QhJX@BBPGk%Ei9 z9vg@9t+6TtxFDks`hQJ5YZ(&_9EO2Q%B+hIYNq4Q_72n!b@Tr6B4sUp^sf2OS}K7+ zt$ z?ngykl|@6nec9o6{fP>bohr1HewkOdPX$8vyzz4S;U-|m&QJq3_!O{-KpYo`j$IJb zvW^5_swp`bl=Oasu($vrZf_`|Nu{uCQ3CKFcFBa;@SA@X;tHk9b5IdIL`~jH-}UEa z;@65?eC-egI(oK^1TWUK_{Etp->fV4(8WXD2)Y=$l<;!$FH~bTW;9nM$*r-497a4z z0LE=#6{Rw+o@%hz58|FB-({M#&ZizimGigPI{+$^O%K;E{e!octb`d~tl@KMV;8nS z`=k}kNrV&Za=avUMu1Ep>2r{E-xmn3Ec7GlC(ld zDT13B`E!5I3IuI)wqXFbsF?MxeqOaCsZ-SrIS?@3aJ3u^&8;bYDwl!LSrhg+V(n|4 zigefhId^9f$3j4?zsq{iKk~{^o34RTv)m#l!hM)bjVFzN1c@xRe^m(*Y>pXGDjsI) z1d1Me+o8zn4;=$PheQ{(Z$LPr!Qd79)ByIOu3^d>qs?$w@QUm{+&!XzTc}CVmeCct z`tB&dPnYnN(;-yJhTe-F;2x&lz$;Yuuh6T*?8jX&-gl zqv@cdmlMOTGGeGqWGP?Rs42I;pxM166hUFuBF(G9CRgR=%4{IE7+RcuoLX|J^}1nd zVQNVZ`+PC${wg6UbT~e|HXF2crdsoQCL)l4y?{j3G-J>1VorWL3IRaX4l10tDtS>Y zY^qa?E*UH}G2faHKd?2IHn7`&R-^M`xh8s>6`^NT* zWIFj>e^=1kh%WMnM41A?!k0Mc$g(>0ALhC*ETei^u~Z(N8f zt4g4PGJdloYvx$ELUlx9FhvBlpMPV8y!-G_fAT@y8?E+%@!UnpHsB-ruoqjY8zua;q!n-G4Sv4B8 zMzid1Ncm{XiGrz~j|O5(JoJ>gs^vb_4+ob9mDF^*_CrdRpA$3aUN~@UiTl)wU8r)2 ziqiuPquLNYJ9==}De{BwGl%TD}@rk-&Vn zZxcnIwJe~zjvCR~vr&D*?2vh4LYm6}KA)E<$nKs1EOnj0DEr>T3h)#l{GY0KO9+e$ z{84TZ7jq)@>XJ5@l5MJyI$c8cI8TzeT->^>U`(Ka@#*`9L6!qGGK9|qzf0tPczjWk zBw_r0+AQY5LQoe42Hg2pa4Zo?gxL6OZcjX3!a}F8k`{bf#ol`KeEYsK+7pkSCZPD{ z{#p0sNrhQHzWZR{gIZx@Ceh{Lur4$JtQr`E#x5QgtVfxQBryTGzjc~iPV!#x_mWk$ zM-Y>vZ_PMl;Q~J?z#hcg=wq2tfHqV>0}C!?W8A%qSll%k-uovY*U>v2YSIo)3D#{g z+{NcBfwrrdK&(2Smg^XMyp|~kU9#Cy;ReZF&oX5-n0{N zdL9}btu21}PolQB%bq{89K)I3Z~wddAOz8!W0KLmyFN|#GNcK>1}dd4M1*f%L_+K@ zl)O&_82L3Dk3xio7LRgZ{}N+194z@ZD%IPonHNj*DqNz}6H?4yLx=_AbD&;FAGDG{ zU|b>S(Rw~+BBqufjo&m~6cxj@ifTb~ia{m9GuLiFKTTmIF^-bSx-OpN2}K>;ciN1{ z7#BL9{l*Z*9J**zTFE0`*>t%Y5Ex%OE%79hd8xW7CwC+Z*8H<~Vn$QMZYo}t_hH8j z5TWYWAGlGg<&_VIF6eh{LsHvU@&?Ql^e&ATJHwYqKWv zOG787@$L8x2Cd?0k?I30e^G(%)X5M*3!yza38OC|lMMzT0lLJne%JeFS$(UL)xSwN z^#xlnms)FMj_2zAhEqXZaU5)bXMu8}VO_)@m){M(UvHxwQO`cbpw)m6T4uVuf2m)tZ4lw-BwuT;r<6TD^HPM7`VIwx-*VlKA;N@P7Es>NXCFDlr&H?X_P3?j_S$}@V=ww#wr};RWqtOUfh-Ghw_hVdJ#|pTbuAzO4jbo=@ zi&pP-CejB%K_^cZ!R(I9GIn(C?TCN##d@^S?nkBx($w7oZ?uU!^tSI;o|g3uMv-0g(;bK*lEz3Nv;jbB4^~*_ zo=v#;lv}Y_QZ@-`iG5phEz4>e8l6-HQ{}}-(EIY5kx~!x(th4WKMT7zg!Dc9?wgWe#s|K^_5DaUYD40jgCajLO(dV@uVuR&Be&u5)O zZASs@0T^m$*b?Z#G_I|iu8!{^c#gl?4JZq@!pqW=E1LM6$xtJf z;)GaeNbg^^nsHN(rQuoX?}j>z$$CC25k?j-%xyY*Pm~E_0W@QE)x=SuW~lW70*TFc zcw&zWVib6G;)$Nss=3`AZaRsnL~p69KasuBf+F&XVdEN4(JoBQ9($vyer4yOwb)tU z-1fn8BoVdJK0#QZTsQ>QF!vQ3qL6?dDXJLi!JkD;iB?9w-Kak=C?)r%E&LnR(W1pI;4#k_Y(lO zMDFo5kf$A46LOXDIytN{>@D2Rld3T^?<#@z{MbdOsa%sDgIFUxid`=w{G!F)zR(yRT z_?=4%{9P;MFNQlu7252y5XOR52;~T8rQ_bm-=AJ5*m{vh{V(>%q-h>D9e8G$3e)Tu zC;qM-ZmhSjUDk|DreA*K@_Eykh_#nx52kLipY|Q_r?XkCT^bO@{St(|Fp+=>Ia=l( z0z?oZ3O5N7bp{{rMspITrMv)@*FiXFtUgUS`rXgS6=0_~JG&FY%&>#H%lRl<;;|rPb(7#mp=UhLOj`o(BPqiU}<{gPP)bkW;^P zNx@G`G32VKnf_RtL-6f?a}pzT}mT=>Wn0_cL+=z&dD> z)m4`{IcDFFfKxx(UEkemuRCrfV?QG&q-c<2z>kOioiC_Sd0s-jXmT`YBw>YJdHW3= zg1k(>m~qM+LiY>cS7@uj~bA6FN>)^~5e15JDFAPuB;mx7a^qrKAA} zM7sb{IO7w9K^Tsmh=ItBId{Ucn{Eo*1PGx2YY-YTqj}_ag<6a(gyycL}Omv8(&LB%(9MB4HG+Mj#~0*nrqRZ-A!_u*5JSqGdGW-%G+=)}`T zNw=iTk%MkZ%gGl->@#Scrn8Dpa@nsx-7BtF1ua5PYCMw*zc&~WhR2?4`*HpfS#=Qm zMqTbu8cEx=x*V>OD(c0;*w$zH39rCXo|1_$y>Aym|D9Q7WKDu?*_!X`$HtXP1Yyua zOj{k-0Fo#X)x(Mi*yBADGo0Fug~Y?cWWm0O5IaO+!_TvQkt{sd*A6ZMwXyy(at+yM z6wwNFxITZgI?dSjxSIDiY<8o&wH3%4*apTGIu}17ql%?2oB0b074H=A9ub5tC5yv)wPfdNNajv|Z9w)sA zHlpgi4kzAVY}HEyEMWct@ORH)$TV$#;?_!bWH_l%bf<5l$IRQvu#Z-k z$Ch*5X6gU1z8ffX>J#5yi$C_~Z_BzTy#&RBbdExsBr0`C7efaAZrBeiKu(USQ*;Wq z7l>BqUU&-6yeU7|35dE2LS(C3-6VaS88R6XmD@IpzZTIGeydgXVF)KiR0|f-bc>?= zx-;cWxWX+`E30F=O9{%#<2%8jzu@EfV8<**wwW@z<~`ycEm|VAxGwq1Q9hVFKZ#|6 z(}Iigkohne1Nx?yW0(c}UclAjxsp&aZ6BgLbi10abGIEzXAe*t+PN zo5kZ-pRmlC#ZU)Or8#6dy-$tP2B?14<@UNq4bFH^Eno$h5pZ|pS)i*@ur;Uf?rp(9p%i^~=x>DoG z^ldh+>4+wDnbfC^AAImSF{+nHL8aqRsC|@6@wELN{JB(#c;V(zKju_rn4Pv&Au*8S5*+SH@&woJ!whv-+ zcvGax_UJ-pEb2PMY{U$j)Y|9KJxESA*}0eW&K zd=8&-4@BE@t7|!ygL|LOrk4m&D2^qpdCb@t`|hZ%)5;C}l^hs!Czrj?t=3lVKJlbD zwON@ml<8*DF`NjwyGO1Aw7T?M0cJVpju3s1T^=+z1|m$A=l4;+`9BFn9j6w^PW~hG z&)W457x^tgg$UkU)Zo?)-(OS^EzI~wT@}$)7S8| z!QwV~$7}LLWU@FX5#sPSdWSe9kJj2$MS#lf=E-=-^6;p*fO)l^OtO9WDQnOhEJLP& zk?^2KBNDCRD7&Zh*UY#;@S5N~QM2@)vk{5q2Nb}KzDOs1;-JrqSw2~C0gRwx;qN5K zgyfq0ahpS5GIB)Y!^!m}$^U>gu4cR{GoC!iFjj%qgGQmJI@JeJ`zlJK?ONF_K%0bWjZ)J^<&=X}pPYJqZ`x4E zWn3yw42RlU!M{+;-#d9;esCo>6zRi7^;Kqcl>g?-P(w<%w<3ZB9u#h_zf1IfF`2JW zep#_S#=J?SX_}{t($aZJ?6sIsG`MQ zP0;Sp4scdl1BwM9ALdI!#Nv<(bvhEHo036ms~g|jJtJ@Dt|iH?L!}hs7VUHGU^<)e zDN^reR%|KjTwKlKFO`30285vrZ|apGsWKvNaTC8E(;lzd2*hl7OqBM&6zN?XHMvk+ z*^?yjZy%FQuy*QLK+4vxzds!lsAqDFS4Wnc@=d2vAnj~Rigsdb3u?HUcU z6gng*Xz$lZ9JzMilgT~v;lP_u!Sv>=-s=RgRK$y-EDBpLbci;_`DIdsCnvV&b8E5y z@h2bRzpdF*v(ud?g|V>&zevfhC`A2Ct7Qtyl+Zt(z9$bW!qLT-QzJ!3=YKT8KoQK1 z5xC&S%ka>|rSvZf?Cvi>u@5o9Cfw7w6aLB*;T#5EZC^uRsEkph^QyG*|#2GM|77isH#j z@DCccn!dUNBG+(rqZnJ~DC$KEMDN|s%$SWj*gi0rdvNn zC?=JN54!!U%`8}a{mHe4%Kpmy_uT)yIq-05Hc;_?TJRL2=Upw5H#+lOJM1S$OG?y5 ziX49~rf096f2M)W*npwp?ePBFYW(Bbh|$-x4+{KKdp*mQir6ZZs@A?2J=WP7C^IKp zojvjB9)1lF`WtU~dFn;%8SbtmE`!AHu zwp0&DVRUqcq*!;O8`#%5K}X7{uQkTba+}nlk%`~PMYwj@eCVcuERqwRc2%;*) zp|VnK3kZj$E0XYv*(|K`Vry3d??aIGKpm4aW_erWft$F0>YfLh?GrAhJ&(r2mp zBsqWIc^pCL&6$fJ%NK&Dob$EKN*WlImz>?}_H?%)S5010W}h~V9I{l({}X7&wVoH7 z%#ls8A&$p=;H*%EB>(zl!b`Gb;Z4k&(ew6(pI5G0@lb6Z4s)fG(08-W*>^tCoph9t z+ro%i>aWsIq^OKN@j*~MC@hu2@FDbgoudOqIh^^7(9`tG`f9SonCyvG(4!3OIq!S8mBeh|t^OAy?E*=Q4!qRo8{v4a&bEU8 zrzB$T&uq}Cfa9LpuQPjKr<2th)A$N^8zf9vMTg2NPR)B0wjlfITCM7iLJ?xf8wh-$ zyRbNH;czeEREcvvqXo3ex|{o+{>;!0zt>A+Lo;m2e;fZerU%D0i=@3ViZP7tE59&1&wtEbkkuG>hP+U~~hZ zQv8-yXbVM(`U?p^ckid`n0)EoQXHNMq`!@7kH9U-*+L!4n;E#oYXJq)5+Bm!LsI45 zi}*&!esm{hQMrCM4U%=bvDbE-J9$}N4%#MBT==%6yEm>M#U++GN#7g`rGn?PcNOv9 zcm;d-RKvzd<*+1d;UN8HE0_!4Q0 zS8QTdrA+z0s@8p=o;~uqhUZ|9wyP`P?GQRvOtceh8_fH?RALOM;<#Y6{j~nX9xjD% zVV!YD2O6=$#_4(;B?O)JIyj@*ML{?M{1iVIi&n*>LyCeL0TnQ`wb)N5bvvKrzcnPC zUx7cN4_RYhh_G&5&;`4D`!|P2Gd-^(*u__(ahTKvjQrSTLZJ&Fa`u&l#VE>@x(za;c{JVeYdC%86t^%7r7Ozjwws&#$ou-1TX=_-&n9y2|ZQ16Sf&b~X zCWa%p8YD@AbMm_KwbKmEW5d?<3$W}>GueQ~Nif6zl8%8T+zlObAJ$STunaWUgR z*&J>Qv-W}ZTulb(iCiyN*WB1xB^68(9#?uN`g6sWu!Uu^1C-_8UBb~6=w3{Fnc@0$ zIgutLfk9Gq=q{n8QE;)3i)-bLm3*xos&#r1ls>2G67Wb(7MXYo*&9Ovp&z5a{Nvm- zlCpa*^$1_%E7&?}ialgAYek+kz?!R|sFmrFo&bYK@>uO+u!lV>Vh<-~KD4y9@MKv1 zUcg0JN*6(phdP*oz7vB_Vl|DX-o!$wG9zerLF*B8M;tTN5QI;x^i$OLjb-Sk>zbj2 z{X3$@c=V$|EjugVw@**VTZ3!Q*(fRTL%jR=)1_sg`zcZKIkCa-Rok&As`r)V-Z#~I z^*5F72I4lz1Li;xo-eBIcu)nN)vUN;nxO2(E$3>ECO_-oOBAKWwIfp4h|W^$6LvS|~tzM{FnBy7TjL0AAp^7#A2liW+^x708$H!dK4 z!9PK0Qe~VLpz&-}q=`tNQh$dS_xUc<>{gH%+q$83yYWi5aIkB9DtFA8L`g99_aMUrLj(cxB?I(nLuG$Hz7;Bd&ys2kUO)Fe z*It4RxQGvo@ejBJ4%@|uK$m<|X#aFd+3QtU4)xUrd_Vl{p`YS8OsKE(indu5m2=@| zM67*+3#tlGI2cfXOdI;;%j&|4n2iF!MON59l?oB_A_g^1TXFTihl3Z#73) zjH2Fp1^Sb$ca@hmCh+gBGz99CmQa2|`>0~;OmV*ou%MrW72Hck>DejSQ9_&xp}Mw9 z*WjvP)ekn$>x)rJ>Y7>tAhO5yP9hRRpfW65twpn?bYqu>9sb7f2QlmwvsY*ai8DCi zK4vRfEN}<=2Ug!dkD}=)KW(6el!ysL*4V!h0cjGli}NxVh6Zb!Ec_cGSy;RgTxNp2 zw!p6Io!si*p`Izz&mR>ZR=3^Ul7Hz{kv0w2eSAe`iFHN?0VJ;s(Q{M@57_nLOUb35jlo~rS@QES<>)!-D%@YI<#*Efr`H*Ol{jKDR$(TZr1c8itg#OYPJ@&Fa88_pU)qXcmR@uyzfh^{ta>|`BQ#b5(i!1*DYswnrRC)_&$&;mxlxT z{#Vd+A1}xKJVO*5tpUMnCF!cDZmFOze|Mj1W_f93jEsO_BJ5@Zrlh6yIxKlH6R^5= z_)4ncwLi*}W4+epA;MK&B3s_pX4M~R_j*A(E}J6ng1ph64btBrKHt_49r_T=6Ps9< zWn!ITU54j3_a4))z`cwsho+11a0bbZOC)sxitxCA1rd- zwj|Y`cF~dD9PaC*S~zv@VjAL<4SD06*_L=Y!8bRfWnD`%XnfaW86l@^WsHP6pV&=( z&>@nJlYQdDi9wnS<;*YuDSS9#4(I^Kjf~VvXW2Tf$+4~LSJ$niZyOJrO+$v`Tvrg_ zPSyURE#*j`HaY6H)B1gCrZ=~sS{%CDpdEc$2vFWW3_`k;=YFqHhbi|8MOUCSl?~v zRw5W?s`l0XHuix&YQPuD!gDl1a2U^*i}MmR4R-JAB&Q}?$5`ROs8^lef4wWmT6L}+ zO0>tQtp!P}_7d2w69VAd@{4tK;gM z$*F*r<+73G^+C$~UHkwL2;lj_n=*-h#zaY_NAuz8pqd^oLf_*`%5NiDF)HjWd+?xYh#eJdfC>i)P|l?%I4oiIrd@gk2t z*@QjcLWrVAGYVCrMSrNh%%yT|oH>q|r3vGUD@oe$`x4b$b1-HgcA5~0^lbfJqg@x- zM)xB##11GqU@iNX7zt@9<~|7s@2tYnTB!jbAfuspdil|YbUOb`3MIcPbJgeFWaDhAh0^Hz5?B^|cNXir?C+KUi28)sz2?W#%9!r)zH?-0;$UAQAzduHH<(+IXcri%IQ zU*&*ysunn#-sTofW4WhytQYgT^q+(0@%xH^^CIHcuSj8K&UT`6snRVc}DmUzj$KhFU$ zF_*+D9H-~1?>W}1$R0_Mov4&d#A)E5%fVf~{+GkMT`&K3%p_SVt_>VHd!o7k-M6s= z^E(QF1`f2O?Opmkd1CfX1jS0fB$fPeo6rCR7Yfm!aYM*o5s~gWmF5{v+zmb7|EF8S zu{Kw~(kTbo#UGS-&zqG8f3u@sgz$8kaP2WJpSn0Q;n;|FsBSe# z8?(7@fx*8$lYEkt5MkLVL?0=19xh5~>fXbYqHtOU*N4H8Mnh~#v=lvRNc~4{btnwT z_+2f~FqSyt-pQjjPG&O+*fzlz$b@}$2!jg4J<5B|_9tXyRUH|O>i?@4HBTOWnSGum zmZqD=8IGnKiL1khQ~nVEy%g;)**88p-lP7meX}w2?{2p5(;mo5MxByE)vpfDy-*Lv z+F#W!$XA6xqne;nZ>J!+z#O8Q5^LbF&1bbDTfUB<-#VUiw#R}Ro==#bAbSjRnSf3; z=jw({CQWRzP^!+0OqiC+xdWU_y!K#HhOSd^n0!;`QekSg-eE|#oSqKnFZxoGY~nho zRKcH!Jou3dR{6->^qm363P&A#dQ9zXRh!XF?P=}!QU;m(RMG?s^$X=hLpSAQV{*Kp zBrA)h{LaCfiq#+38(@8x7z1$dP)G~ipJDJN#!3iA&2%&Wh0VFj%YMxL2%~TBV>YJk zKO^0gGM)j~+*x|izx_~dl4$6C<`&v?u;KmX#4d;u&EEa+8fl~j)wr83l*58BUQ3?c zWALK^?^~aS*(XWzG%srz{QjE-XPb?%upd4AX?-W_uy*8Oo>q+N$m31GqN8?se`rve zqRF0J+|baA9V~Huct-}tOdc8Rq_8~ShxeAKQ=OTP1qm;M(!zt$dtuSS3wkYoW00`* zyQ9>L*Tv*8EF4|m%b@Rj=*qyAfrVO1*`E@Y$CmU2Lly$u8g~r)03~B*!x5P)t6-!3 zji*K15@TyI(wzDkp_ySm_9eJw_-ZB?+bQZ~+GTk>9V7^BR%8Ba44hy7m||N%kmhlB zCuJxedSvicx@lZ--i+JJ{8$rzHF@?hZSzv@Wsz6EYNS-w*nUKBB$5T^gTn9D&l?vpmG;%+z%>VAc>0cPX{j@<_#?8lh5~K?pz)bDNQT-Q_LN(8%jJ+dqi$1k&>|XhvhU<+v+}O6AsvD)aq?uJ?Joz*T^>ldb}@ zOX(Ir`j#8!o>M17=KjFRzL7=lH)m-z(W@)H0asTdphab)fpV8ot>?ZRRk(IrW zg};HD{!eP~8qH%BTOdi2$yIG*$J?f~QGM6aN8CH?UjQTo1dO2boi4l9jUM!7kxjXY zlW&KKbr*?EO%7h;Tt zYbX;$-dbf}vr+4};H6|5WmCTmB~kRcYC17K@=TUKuRiSOwWA1Cww*iE_US;gC<0X! zIXtKYAmlECz&D=XZiHH_j=1|FK5;J3}GG4iOP5%ir_t2Rk|jDdKP? z27|Nzp&37&JIJzQl7o1|NqT-aUPpX*3x9DZp~C89HDxNt|3wxRxI5qc)hqI$oLQJU z@L0{Fo$k4`(8;eXQ~Wrw)mVhRSmC;@=5%rSdnIC4j9%|=Q~^5wfDy&;Lbgq`Jc0Sh zV@ZQGUmE9z(hv(Un$1%n0f&5SXZynV5ruQ%Boui>R${`*H8^^NcmP? ztIyVGyhL2Jja7ToU}(u`;*kuRiDbds&(ZA8NfE|CG@>k}#pn_FiSJNiC z&}x|J0sBRG>azN1_#@?bl|L)s$t}reBFV<)%%+u@`SO?HaONjctKU*0|W2f3R+AZvy z2dm4@ZJubeoVad6YUGij{I@~Fo9eTN2xWZZ(XUQme_oqWCx>T5Qc2ECDfa1xGfb_h zDKftHlwUv7t!HCz@#@O>UW?(`HCR!P#XM`#7Xl*|n)GO0wz9Zc8$Qk-Y=%x(gyVVQI(BB&!?jYfgJ)5J4(vTckEr zc(RXo6;cc*xD!;I8`Kp`{M~)fb$~yjhOCoib)g#jSn{(o4b-aneSnV_!Q{lfWo7!Z zVMB^EXS9%o@MeqG_hB2;)YBgjAJ>lM2eQxf`-X=F42p;K_z-x-sBDPf~Vkf4dka!4gf!Ty6^Ut5}+ z9NXGM$eA@x{0U~sIO`o_CoJ1*QyWLYv4uwYsqW=jkrGoK^#m*?0we5pB$1znUaPvM z|MpI=DyJPx#XC^IZP9vbgv4oLBxnki2C$B8Er1>OM{Mj&simMUGkRRnft1#>wPqpd4{_NobkOYqbxAdwiS z)a(x%pe=-dms`F}ayXGRtUNnYt%A7=i}G|d$g;s>D5P2Kf2LCx|8^+VT_%yA4#y-} zzn}MWWXr&AVS`+rX?|`W#m<|~EN`+ew0LRCVGHdO;ut?X(tk4K7wSadagS>hmZ&Dm zZpA8o3=i;!q&idqW23S~BEkT%GNPrHa?a6Z6CDydzqW!Q4PCK( zV9XWpxElZN;Z;8|-I#GCJ`bgzn1Hkn{<1&c%07@4xBZsy6n-u^;CX(CaM%QsJqcUJ zxY~hs3|xeA6>9R)tokoexg5Qc6$r$~9K-yrBq52B&gQ=&GhaOMre{W4HA7?5G2z^h zi`>t=p+_J3fDj!WP)nMH?WP+Ybv)r}AW|g3GKb|7rx1Ib+IU^qz{;@5&06dt=9H=Y zxMUziVF3nls9%e3J^SEl^Q=jcEoVvrAr$DMzNnB34!-OWb5Ab*o-*&C0gc@Nkt=x$Ft~?xXE+ zoaW!04hg-L4k1T2Il&C14$#O{Jl>31+{!b^M?x_gWAn%XkrN~b31L(CJ>(VgG4k(v z(FRbqK80NK;!|6t!+VKFIn|VLBPo|Rh-K)8rP30_(8-M$$OssgG&Z6FDP`yVSa{e( zn-Kz+LP3S`-{UlqZKnwekw<}i^ds+k&pY4owzoXv?a_bm(uH&P9X_ys=jvj2e6&{1 zq#QdW$Sd$l+~2u#=jJKz6^{oh*KY=y^iz+wHY<|1?axY5f16Ju2>bQfd)Q-tTeqTt z`8(q&Zq;=TW-HQv;KocB4y1K1tM1|K9?N0O%>ChrrgYrLO%cD z1N#klFae84V)}EX)#%_+3aS=e0BQ=Lamw|mEhut>{SH+rVHxU)dd1S;^)A4$y~AdR zT)X*sO_T9TC?Vyu&jNgd%E1)cJ2m^bllrE?haf1uI*o17-29slhO#&wMVP-Gf!N3 zu(neAR#<=S4;otbh1rcK=1U3Vt#5sss$%_f&sP2{{wR5Yd}Gg?7()U3K#IUvULXRb z6xWHt2{En{O$%B85CA+MRBQB`g{Yv`R)x)yS_(pLs{8ewShC(4dGL?evA~kg`o};>!xOxszh!|hHYN9lD>{OIqkA-DxC@t_Sfu zq7%w>dX;Ee5al-fYCI`S>NAk4?AW_!Wod3^YNFMwS5^P~NQf-Jf)(`758&&w%@99A zR>L^(HwT(3@H3kNe9tD3pxl>}%1<3&2ekXHv0ZClo|)G{mfb>l&#sAmAz`K8daVP3 zO^hB}jT*6-x$os&U1ry#DV&1u-dU`565;H78un{{u-uwUMNB(NM|O{QW16NvZarlQNS2gG__MkJ}#5mmW+( zzf@#n`-EQM_Avl$k;{jE>l@SLejXHFe#bw(-+%X6Ku z3K}*V)u2V-U79-%o4yC?Sq=HEmA0%hMWz#U6opj2y_$7f7eYGg8+bumj;*jF{cbGO zvQuTXj~#ZcW%jlUt!+IZ9~Pkf>(5L~@5{gRWjwZH`7=+{iu04B-})0=;=mAN$Rh4^ zy(O0t^|9%MQ;cwPY}lqy{La{aU!^CaKMDY zHi)JTGkdx|e5>-xrXS9_^O>VdcRdFgoFWK_-Rle;RSR{;86*J-m*4nA#E-)TE0JhA zY8$tm;qL2H2s;nt_|f&XojYba?N*~!E+*Z0R1;(pCi^1s>4Ss**(Xm#{OF>#}f~QAgnbAcvXAz@D5*=&h= zOURZkqZj+-vz@82cB^Z1k@VXS3%RXEZy3vWoUj~bVYbXP#q3^Y3JjIG8_frqJBXB~ z#-}>#isZSbhvYPiKeAJXMwccksZx@TrRi0Q@VuY0TlGuw44Gdj73Rk%=elk?rOJHv zXZ5)Q8no)gnOq{5kL;81@v!y(hn-VUfd7e?@O`90(!GQZNMIcX+8!Srug_8+mV-Q~ zBBdY@A;VM#5C4Kfo->AQX%cts5(Y;@gu|_|rXdAo;svC5M%F17Q`wxPHL3{DO*)(- zJw^Sxtv|;Kz7;n}lz2HS6K;JZ{3GZZ|eA--EC@JEWtTAUq`6sZ#uRM5AI2mu&_KZpO~eQTcdWzwsp|9$GO`nu0n zK)C&Qlky!L?+e4!uRW;t0XsI4cOzP(2mqAol<5Lg=jm1JT71u5S#5vdL^YXUOgKmv~h2Kv05b@cWFigF1^KU=3t6u&? zcb!1O1Y7y<(%BonFl-Wy3^dQz-Z2j!fM@*jC_DA+sMiMCe&e>?)M=+nk(^|};I-d` z+k5x<&&MHzK8Qa@Qlvz*SBsf2#i>!4=?s!fw)CJ^F8SFa;>9a)+JF8gKF)bq=BO0- z9bn+iS8l$CGNkYq++2Ei|EW*^@~_~}0)oa~JByM7Py;!Bz0hC#3HbE=o4*3YkBEJq zz5{=ZB*_eUh#22@aJHQ@fll=?xm8#>d{8~R3 z!&Wr`{=?o=7v53GIwODbEsuUMX>fP_Bz$^zPgtuf$0lQC0V}P}p*`tzJDmxMn?GBj zp8{lzXKbOjP`J7+LIQ3%=HRzx_N>mW?cDvTA3b-hI^|ilFFp9?FF$x%LVfzpBQH(r z`Kzr=$1ctuT02=c;zDO2(W0DkgMKqNsTLEr9_j0C{Je*q-5!lC3Yb!X-0fsD*m~W; z=B)6upaIaf2Gt9E+VZfOOu94p8;(R8iC?N!9&%jDt@a3H;mL&sqmyP#hNAb)u9|Vi zj8xIq8C(}S%ViBrnnras#`0)vHE{S4#h_;blWml_+SncSJgmghA;gTJq{&~N>M#w4{+V`EI8QCydXG&Af77cAk1KWNeS zzK=4&oph*8g&uXHh~5#drxH}dHuCi4WEWAt`TIA2pP4n}T1fXB?t^gu(@(`X*A1XR zDbsWbe{76!jRHkm)Gdz4O#WR=FlA1hIp|Upze&U1{7{Th7NXzE1UIPWeYOR1jeRSX zP_yX|Ql?hWe<3v{gRMO`nx4x_1L^f7!h! z-665?znTMi1nS_OUAFy!m*08E=v~EF(DyYEU3d1=uED(qiLdGieM0p&Qu3L2P=M{O zbdcZh$t;YnZ>Mjs%-bR&U-T*2tw!ks!`uV|>@1aUoL*l?`n6w8pL{X5J~~p6oF}Z1 zhG$g{;@5Bf8Z%LYUGl5S-DM-U!NZ~qDx>wSxp`~e~KJ3YC1%Db=KMVQ)pB1(0u{r$&F;1Q4rzDol|2OFyneP&`U2&j6a*O zeRS_!Jsg66x4cv{83LD9ZhV&nu-^xjgnfCs)0;1c1OjDdScG>jU1MX1OCPyiN5Rw% zLdka%LKi(;ULu?1y`BVl>$4Bte>6`$dFZRvp%HzTW?eJeyLI`=XaBX;ywi1VA#Evx z)t)6Zuh_Y~U@lUj^>>D1*XvWcv5Dyo=>V6AC*3#mjEv(ypsq|zz<@cUn z-D#=&Vsf^6zl~_@8{4}ft#BW3+GOGR=d!In1MPem3I#x*g3fkATF9>dp>Kl&6e3~Z z(dmhh^iH)%#}EXLzZi*~HxQX&MI>s@{9C(|7Hq*^qA#hQA%tG= zIQp6g)oDv{bVa!Zw{C&*NHKs*pA;s z9Ev<7&Ya^M)M|gVu7*ktyl<Bd%ooZjnLJA44juuR&?psnp2?KTO9Q=DPmw?R8 zw3?-z<(+O^lcWem?N%r>XKw|B4~p^^8HWo4P>nO_H3q=K@TGhL!uK2r;22#(4G*24 zZz@o7M5A{>e}f@{&}QI+JCg?D-ESd1otgFl zpMsQj7r?8V@?k%7uK~y^q*QC(U3f_GZ{d&cI5NP~RP)gJIS)_4HQ)81!XF`ozCx}N zN~Grla)q|3(doGvx9t79ia&f+{q*O-*xlyMsCoS#Mda$|sy|PB76|m`sImVWonnjN z009610EPgb00aO400002044x70CxZY0Fw)s000000000M02Tli02Tm$0OSFw0(}Gg z1T_S61g!;31)T-n1`Gy025<)02UZAU2|@}Y3fc>(3_uLn4U!G%4p9z}4^j{+5ZMuw z5;+pa6RZ@26;T#E7QPo!7(W=$8LJvz8p|7a98?`h9t01E@?00000*s_@a00000*s_@a|K(sbWNqIfh1XP30<~EYr|~a z^s`zHCw+;w+a$fQS2_yiLSH?=w+G)4JE#%Jh4?DMELa8ulX^2)0_$Ki%z+iLd>BHH z<=8Kg$9;mjd409>mguw8F8qNP*ei9+SE-%7RHHCa&9U2s>uMLpa#z7n9rl7rIg;2G z4fj$y>*=aUB8Y7OOYUGQ~rA?rf}V&B9cEGNH}Pu3LlJYLww zkvG+|)Sdf}hCNw-xP1UUyTxWki**Tmf~{sYyFwXae~?R{7L+3|#V-ZLdPA|;U)XO* zte;oqpVF|{kLWWN-#g?<LK^p+I=Lg#Wc-muNVtmZBhk=!WfvF2fGcfc(XvPN& zhKx)MNT7j%;k^LEo3}82K$>d`gCc{%`~S=e|1B7zn7%RmQea@{k7EYvKFqWNs6>H* z5ddXY6AAzTc-pLtGhk&w6o&tqi?!|Nc5T+%Evntv=!@8>W81d+xQp$iePuK^Cw9{1 zm>&RX#~*_M0Q(CGY^#^q2LM0u0}3v}h|l;V}Ez>gjPlB}pWcmBe~OP8-)y>|V^&0Dwc z+`V`I!NW(7pWrE;>GTGp$!uAlx`w8fwvMizzJZ~Uv5BdfxrL>bHG_?<9fQ4tqm#3X ztDC!rrnub+QFU{G*KXjpgz(1J+9j*Ml929k*&W(-4o0*YKsQZj-Q1;nXowRMe6 z^$i5fOvxx<$j!@-D`dz70D(4zWB>pFc-pL0<(lh83>}A-;WD@&-?`atwg zY?5wJz8rIdZwF>`SZ+SdqNI;H-tH0OO3W*1PnkHhBwo8!1rZ+UE!YF7tTV#)z z-Q9vP<;^cO6M4ZDb&(fM(GY2yVo2mWrWh9at|>-DerU*N>obpA z<>D)k-E#4@$L|@%6Yjsj_&zYc2j2vYA{}59c?lRrYG4$385l)2fl=fPFpB&D7)8zk zqex@uVcBY)LD=b(LV*xUIUw0czxjqempx3<6+_geLn@)OyIP*HBQ4NM9$(!mk9C%> zw2HcQCW@~nWrEjAW)3~RZs=Bt_Xg~&Xnzn)7=j%!_{&YV6sX|qFD8M!fx{sN zthCl0OdqPb2Q7h({$pPW(>2Z2Fk738vB_+#Q+b2--pMo}^o;JHh8ht%$P1#3lF~sz zv_#Q3Ng=t8hN|!L3XhUevjl<9x&AA+9SbGDFB}jw^_c+&`XQ)!AZp~Q1DthqSAt2k z9*Vw9V8EzaihX*h9UGcWC7f+j-e_X?eCM}szfcEt@SrkU+W64`LAY6(RKA|~rnp(k z$3~Mctab1(KTQ0>w@zaKpKPh;cB-H5wm#72nc=(cfldR%_uL$TrCES>zYWUbvk%j7 ztHZ$VRtsvhy07mJ+_mv&;0^y5t=Rp)x=-L|cL7V|3E5F^CmCRjgpAGnJCeVn2L$N5 zyHoBW?xVUQ$F9sEPix|{<$fXb@~+F!uo~bI}k60wFtaYCkKi_*jGl{kzZo@ z+Vt?wVDSbEOBQcU&nh*4^;p+t4g)|GgpZ+*iv$fEb1XBnWo9l*(4co#kj?Y=Cl)&r z`b!4$Cy~VvISi4<5CzPaL=i)jFhm(cR4_jhRSZ$X5OoaE!2C-zF+>YPv@t{n^DWWE z5Iqdh#}KaNJ*S6x!0_IshFTv|BfXwve99PG-b<<{4AoOg^^8(Fx4hSsE*MIel+qQY zbZvQWDcvxXZndC0E$H3~A8)RbkEd_bdvLw$C+C#BQ|vPi2~XC|G$Uw%|Uzs1JDjf zc-lY+A-RLJ=uG*89d>g^l`!u z4Ax-$H-T(aOtLfQAO|bXa>0U&oT$0VW%k#$;UPDS_L1AH-%;6@z=|1g^N@|+@3J%a zQx5k2mJ8OgloMm@4d7L~UMoIlm)73QzDg zs5C|upa+u&Cd+LSb469uk4K92AFP%?PYnhG)zvOM(?bRKnJ+Ku;DUILlrAy_+4lz4 zg}h^Oll4uT$4zllcg>A1V-PbnKCy`+(MDxo0HfuNGh0diD<#HZmHg&nmZ8Wa9+*+wW{^fea zv`7i1G@^_wbtoi9OrI&BFF0#d!S$C)5>@dqEs>#IurYq^0%?(naT@ZGS(jLm_pEZ2 zeq1U4L2eTmEvoZCX=+2U3;rhJJ;X1HogS<8%_UlB9vmNB|4pG%V#OLPAnXT1HM@K~YIr zMO97RGRv*7(kiR1vDP~4ZLrZMTWqu44m<6#+a7!Ev)=&+9dg(aM>QOC+zBV0a@rYZ zopas=7hQJ6RoC5c(=E5%ao0WfJ@C*Yk3I3!Gta&7(krjM@zy)37z=_900bZfju!`m9SngA8}F1A?AQx# z2c+NIultH3*f^j-z#p1XNKf`wKg9pvkCQQk8EiVO-XR52WCd1WLC8v!=9)>ZS+#59 zkg3yX9YbP~XhQ3D*wGTQn{z;;eqJ=U8pXw8v2H5PYZo?}f9KSfR8K`Edf4#fnd3Xo zZJtoL6hI>{lR zUI85cd7bv1b011F1yBPvD+GqHL+oTw1LRM*KvZwJMali|x*g!>*6+Q&MZehI_Es#} z=)DDzizLTjj1mR|Q9%Vn5fLTI2EpLc^RzFlxcjG9sdxSF%)8d}^uoKgVE_I9-s$^$ zADkK4Qk=>zAv-Q$R_a_-0lm~m{D(y9RwGz~7D#cLw_Q?!l_UAV`-gI~2=(9=#DiI| zLCls8QV3%8+k4&jexF^3D(0LGk|ypIb%cE5bpLv%RrhcA?jAj<70Zb{CMjp%I0(bg za;L^eSs))n@@xOfR_M-y;ROymgWPs6!|xqW>1x@$=Pqu$9+Q8EU@|=v6~pvebaee2 z{8!7ib15rQ>gu`B&nSN3lOk^{4@Tk~&_CKzDoTgdJmm*yH$a9B=_m+NP`a~S)G2Cp z)o6nOKvBEB`G+upSo^Cb$b!R0Li(GqY4$F*-A zm`x6s{Qv&cYVZ4YMzWIu_RNx(z3d%q<1BDd0an`qN$r2iE9IzB{ zq~LcZW9i#Dwui{eoD8w$pd6GlnG?^Vv& zOeo``s++d!hjE(8(yMo$zWw?S7|5W(Ll`>DF=FJXsOXs3xcG#`q~w&;wDgS3tn8cs z5Tw-=kVj1kca%?2F;`erT82B9d&TH6iyZ_R3c7B>8B|S6@N7nIz*~*Ic4>5syCEy!N$Zlc z9#6ll2g#Psdys;Cn~osLp@UE?4?6_yi*H`j`SX}0Wq-Dsz5Nosc~_s_(0h!Y?yD1> znHineq(+x4`y^I*fd?Wj@q&{S|Y0a2JvmDaX7HRcg7qytA z=$47f%+q0Yp3%*rS-9l!hM*9CJ!BMRm@9$yY?xUqmG;3Bhyk5V@tiJ19%*$eQz=Iz z;t--5h~RjH47TZ_$7rSwqj%=hB~J@wY0^97Jz%mUM+-_U^pt~low1O}E^o8OT~ z6i``6|8>#SN)=kKtolaDVZbh`z_a(U>2{jVMD5bqPi4T^`X)YmcMCb+s)ia4(vTnd zLCG&{unOcO*_06vEptcNh2W71U|_{K{KL7V?u*vP#%@)Phqnzt+)^M&Hv!2=DXoe zr;cG7hAwxE(0GASNnlJ;FfM7BkPJ*p7GlZ49m&I8DQG{1dicpz)9_O@1HWhJd#sTS zHPL-^4;AqMB}t$xDX2&qs*-`4WT7rOXhg%F4D?vaS;~JD;w=qK5|O5etWA(#R}cOEw0Uz;UKXFQeNkt1Hms z;e#9thJ5E$DUANc_}=5bZ`*A-xtBUt(V&IO&0t^OhB}(`$A^vG|4fRC+w%M_ z+HJFnN$70zvh577IpQlK=yNX?#8Hx zBPPSpY{RyvYNHX}f}}Z?haJW@R}mXzP*;bCvDaYUAf%r>STxaRrWXl$SQHlLi!9@kEj*L`$5IFmj8UFZZ~`yQ-C zE#3_Aa(uNj%z;+VJUXx+WRQJPm@o}eW1C~*facGmIz;0y#3BH(1-QgK=3v{-yFB8P zn*0zC27z=G@ph6;@mYa=BLzH_XZOQyRDr(WK-Vv{!JxDvZudz2>!2 zK_xDT$PnkdIW95g2L-pFsw7aWMWDJAZ;&C6)Wi*1wFuOf;+=*ZQWrPq)gn+|iVqrc zNkiOVREt1kDL!e)D}BKYrnLz4D8*qzPHBc4%xe*7AvJBuHv(z?G#~mFJE~SF4r@WF z+YkUU5bgk*>M(4p!`f~@0QP~%8xGYGI95mCR2_k{D+-tDC_Gn3;iWn{-zz^KR=z(e z$$S3$|4m;gsVg@tB~lP*EqTV8HCUHa2D}6<1+@E&adt20wBx^dG=1D@jljNS_P!O; z47JLkQ37^$ez6HQQ*h`?=KvZNuc-+TN97Ai5hp}u$gg?6CIrd(1kuj6VK}k@!!?R> zJ%R9rB8jzYL1Cp0_rwd)bPVRhQVu7;uN3&1=>mR90@2>q+@Iqb%Im7ai99r2!)X*p zD=NLKren^yI4$2MN|cfgk&YKJ3oH2f+?=I3tLwzV0BRBC7X)hZ8e3``5?YvCE-EpM zaWeQwUlt$9f(7{7utm=bxK%b1)}?+wor;(cv=z6@8X2m%^M zmqX(~RUE4F9m(P<0`xkNM})30yv20cM&I`-e^;#G%y4&|l7;SM4N169r{%qgFYlw= zECvS5iiEBUx#Dif3OhNyylk7PD?+%n(~3=wvn=q87Hv|Zl?Ms?+|q#xsBUk5-3aqgg^Pjvp|UK;xkdjAgth=sP9r-dzp{Q;Q#2y$4<%5KEsb~M`uq? zAPp_qkz{}fNQ?qE2u0Rb5&hUk1>uGx1HJlYD^jMqSmDHHWt6u|;ZixaT4 zmak3f%9cS>O|GtDZ55eb)-o3YpXbJi0_#$M%=~RJalR76X`S z`E|@I?Xz}wIAqZt7>s0tk$Iv_gp5jMoINV&5iK$*VMSZUT99PHIm0_Q9Pf5)tx-Fj z!*SL;17nBww}sgz&g?nWCV+zEk#bR2*atkS`XxWLZL?N5M%$z_A0)0MEt?v{7={FE zRU(`@tIeNh!QM|O-(VI(Q`J&0~_Xb zep_~WcZr62*(RQ>Qwkk}wOyj?QRgNa89}o!D5`k$JjF$1B}#}^rP!UCbzyG5=v1;M zVXTy$$t_Y0c+w*eWV$XwV~CYGJF3iMBu~iyiB&EKQ!?4$5nG~o^*ethW?K)fKqpXi z^^!6ntP+Pn=lXQ=5h9#<9!umI>gE&7w6Ny)qDq|HzK$lIAOm}CNW8h8d0tm$Pb%VQH_lK`Dhf5oE>1BJ@A2mjuiMNI>;-)yxxjZTA9~+^F;LhQE>p}r)+uH z<_8nC$JcY}XMaYpja={$owGq$YM*fk2tfug_o)IT9N=s^Uk4G#VjN1k!-(wZkj*}C`-VL-^E5@b zuTCqsVgt>Ii>Z%C}Gbqkn#SK`S*DlJx{L;*4%-{xN6P;Smw zia6X1QOm3t#V`PEIg1KUs2Ct8xft>g6Z2&r_Hl);)v7M-3|?@fJ#J?kf!TKrT*Ep{wh7`)$e_V3TbsflpQ9$iCF=EbrS)MR@v&`e zY;y9|HUNQ$2X5O=MZ=761F{GnHT(^ty`oF|?>-tJ}u z>oIH`xi$%mOCIC4$&p(TDfM`XqJ5{-q!H^ubUrR|D==nkP*iz!{PZQp2uV19c~L7@ zfS!meiWzQu19 z>q3_J+klC*T*AksL?=UY`f3>N|FL{q5PMsW`~@CFZxmWpm5gOAjuJK|NOjf?M{{ z2TmL=OF>=@3d`=iIC-n6{%!B!3w#+!St;+feglKjRsw$!nVpZ;8SRh~F||Wr){BJ+ zKBpx_Z|iWsh5lu{@WFz}Dy4Ba<1O<82xYV>KU6?!hi_)PG6`j<(G;Oof^Tq}H?Bt^ znia&y!JDL__C!2K$Z#^Z5>O+i*M1to&4Piev6-EVj5kF@wP~VTLwJ2rK^vN(Xz?+q z{{HgVNH%0JMtZaUsG`_7gs>&iR1rOJl86N~6x;nyi*5|bdeKG_6VXr@POTAc^}4OuXTHKrANdr+xz@A~8J!(27eC zm#vqYbb|s9`D{;K{{e;G>1l98v8ac-G(O%%oC~DgX(~Klc^BD@qe>ic)}zVv^!!M0 z&dGS)ibXE|!*j~7ms4gD!!_azjLG12p6iRkT$ke;J^dq4+oOiY5{ z0iwX3i}?PQEVFMsKg-J^wYF6e6hPO9ZF}o2TqfdWV*lQ5lWct*s{>@8AaN%s4O-$FQ)_$YDE4CEOoxKpmT>&rd0g!+ zJ_dP|*<3TfH9pWC8LuO6*Za>W=GqZiZ*c}tI-`i_NDjS++H`DoOB_cE?=(zkO9Xj_ z*+qoD?Bf{XHIfUACGtc|T39^-v*k^L;l{27@>b>49ioj|h7t(Gqg<$2ZfDwUls)FN zrHP&`>vi|uv}mBe{Ze)7iCRtW0a*l%vC-_BV+CEDdqFHG&@AkFq&|t)w&Tokl9Qk+GcL?O4gSVTBG^Nn%@$E{ka+P6`JRx!wMFlv)_|Z zC+P~p4)fFGoDh?vImD?1KjJ2voPu?;M$!>xuweNn&k;m|HIF#GUq_9!r)dt;!Sqy4 zQ?M_$81&^Q;C}ur5-J#m_?e7B9m*9-GJA0Dz;_B2ZF@rFd{^z4JV^HJP=jg6;2*N9 ztj{;HcSCF(Vos`#)`nuMIirJ{d?gr-Be$3J8Jo=`a3%i|DHhgbtaat5CpJ)xmBC&1GR0zLYub$%{;QHBlI|Tx$kz_F5d5lqpF1U@=b$0 zF3?0GuGR5M6h++vpJfP=401`W)Hxe-{W|lb>w?%ZeBU{PqG)^BjQL5UCAXcTt2WLE zBz_x+a2D1lOh74oK*>Jm5o2#3&rVhMzC5$?5IUoEf%11aru5J~BHtp7}xW1_@%7daI| zq)dmTo-4Cl@}l>cb;5kNx;oKJSz9Fpi_FzRyf9Q_pZI(sYwam!5+!( z14DLkuPqX!7s;PlJmD~33dvl()zQ%!8SUX74amYNg*efySyK^Mlvb+0&a@|2mk0+z z8z+7tXp+lTtld&)Y!^W*hFH3j{g$Y)?h-$mTauGCF@lx_rX1ybJ;37!fawZm_0AJO zM9X%A!G!8RT9mn+xOG(ADmqNh8D98ppR7$UWx047T&y+)|D{b@^`If^i)k?JRxUFr zm}!*-n)MSpM`_-u5~zY%gclI9-n8f3&C!>EE+zk%pCnFO5KH4K59vFSZt1|hybVKj zBFdB7r(ba)lICOY5`Uk)^eW>NUu;e3SzkWkmO2JY#GtXhSjc{umq?8Y8=d{JIN}jj zrk}yo){tu_5{Q@0r?xp`=okB;9*(wSf8A^bO}t{3Ho?MA;cUWi?{-~Xds==1iiDuk zfW%taoa{#M!6C21h&6HC0HF-3%1_>2-Z`?Ig~Yys=Ym#d_tPk>z?8o+fU?kOzO7W7 zmi0LS-K&gY*P2&9mkR1_xr zt9s${?F{{+W<5&3bvs8%)|-lKePxDqpU)ck@hS0gF$%cp#U;#9oY(VhYKOx~^^C}{ zUSx~^)&QIC?fXZv<9mp z_Rq$pU}DW_iP0Yla)#@Jk6mf!zMZA%J6`0WCQt60euqyvWnB%vse|N!q)0*fFSy}M zYBT$)d2l!94Y$9~{Uwxeh7^ebGAO9Um>H9s-=fGh0W-Du6~pNQnPp6-ad*m@xwS<5 z(I*=xnxj#E)kXpO+%weL%(S@%&^M*y8MR9$po_FIso9-!z5Zzbz@d9PDB^b4?TI@v z`Ah-Q9?hIq!sk<^VZ!s`)kiycQrl?ly3%A8>@eK9X$&2Lku!^Zf@}fSeEPhaYK7rb8+Yv)u zzG*^E*nyFxXDHs_XN-A-wiz-`fdIS*Uuj#^(w5(BBaGpfER6Q^3*#>N)A-C6dHk?z ziM4}m2`!sl9)a`>giduHdL|6TFY<9@9xSqy&qZm&8H#lK2?1j_`GeX?QyTB@G17e0 z%v|)Ux=BVS@J+)gHiXNNN(Rj`O!c&k116OUfFFKUHYB5yZyyoIRmlvmmrF4vsYp7V zs4g%R6;xNQe4VRj(h%^ox&nDk^*5`xHT|Uv3MDgMGx|4BRvHpxB0SU>O$a6ifu)N> zxX|((vzDe9cpY8^f$`CF`c@w8ui9$2)dgsVOmxBNoyj>9Fst`hNDVMx9*k&tpl zONHSDJ4%>T6*NdqbEJ()kgNz#D!DBtPWzi_Z`_jTh9#1QF#^_ftLcjM+mhpcP{9-g zuU6#n$+>5iUi5TmI6j6rSLk<<=Ez}JuZp-WQNfz{;q@4WpZJ|WRkk^`H+*e9pe7Hi zRrl8MKouzIsRTgg`dx&e&VPzZvD>ULa3lHqWLNg>{LeCYd(^3@tv0xR;LCXMvLhAk z2OYEW15auCtCGeAu)2jw`_~ysJhE)J=})Y_VtrO!1VL|d2!8BPb35$_KbHNuZC?G8 zo0~qpgl^?9-fXN|eN+F4dc1u+Ju)Evbwcfqzd~7?0<7P;O4G~7FU8}hRC85;OkIcD z=^~_AKnKkOEj?eocEIl7&|kG)=!nNgqc2z>NSffni zF|?bsn{^@ef8OUPb5vTP9^Ha)($cyMjO&d4DzW>E((cJK44NK3?KbPY-!o3Jm84|} zN7ub(jbnsGLyIz&t){F|y~K?>rF1Dd#?8eVl{QZNG3oe&FW@tDLfyzg?RqXx#bfCL zx@G&3UZn;;eO%7q_N6Y@)a)!PTx=Nhb9~`Yj&z~n34dv@=9NL+XIj0Jylzj}t61qO z6v@6?ei>n}Oj(z60D?O+>MNBl-3v>K ztygBzI*~7c1n=9EvdacUJRwXrz5X_b@g1EteP&a=GW&}H!`mTMap3hYdN z{p{`nEJeJyncPNMUXogLXUt!xarZS1=U_>v4U*fq^!v7Q0L8kp=V`Juy-4BT3K6Kc z$HOrZbFY)srHOWa`RsugaI-y<>7Eydumux*&ch20!Y66m^P4fz#)FTSUlbn_u>^Jj z*jrE2dQ!G?-+O_66(cbFFz@y{SbkS!bW|d}SFSM{$8NBeM4bV(<8&lsB>K;+{ znrKuKtwvvd5Duph0m;zAILfgUZ+L@++9Fp7GU zZ(TPUMz_UfxlN>#F3#wdzAIL8_r686i5o?UX33w+Q##P_!;k$<$iwpF&A|{bMU{sX zhI1W6{`Or)GfK~XW?W}*mP=>w@_b({%y^-itCU`Nl!34qGBEsB@q$F3sW4DUj`8-j z+3&__{PW_!#ezxP(I4|NsdwoGo44dAVNs~pcLH?}2mla(Xl%Uhu8)mL$QZnMS(V7n zD=AEw`zA@fF+y4T&r)3aqb9+|D80XcqEg=h&TppwQrcn}y4c*^7E|~7cyA?7x?HNJ zCHxPs4UMGzrq!uqg4n!}WXLeowIzmD`+lzS2X6FDr-?!QH3}>&8Fx7rR4esTcv^c#ZSlFR_z^%d5t~(s3Kc7 zZrHi~27xjk-DaEuQpKLnzx>LbP9We~U$-h)6u298G$%j><{entwh#q4n|{V-IjrKu zDFH^QU=Q6R&jg@^1ag)`Ta9X#1*1*c20*!hJ0MAL7Y-b$KGJh4kLD4(5wMz-5>T1gF6i4fz$#K0XH=Hw5wWvTjB&x8KH3TDJ zzZXmbji8=l0fRJ%BOzl<#<-$#_nHO{N-Udc5=GXeq`x4lFa@loyJO9~W!h|?EY&)& zhE#JzJg9(z>ZT=pZn+*)Fgwj@Nlqb8BYOK%XB%ThU%Tm~V&ur_A$;`0QA%f>|z#UJe3aHe230dlZ3*fN|5SGn4S_;VB*s5q2( z_z>vwQ97$Rul#Ckz!FiLs*BCU$x$|I!Jj&8Bpua>h#Q6Y*BT!C3X1SUq=SC9zS)E%;i`JXBo6h_c~?XeoCH^QSdV zl%8;xn@DsHAfAXKZdg=hDUFtf4Hy5Paq(zo7G@vz*Do!M!AF|iUZ=xasg0vr-U8eV z`n~bsn-@ct%A0}IO=(Axl=sM&1A{|Tly2cX!zf481{mUX5+*)rZV&oX%&VW8S`;6P zAf&8GlwCy+Q9F=(y$~dlYSen2~9<%9)&IA~k7*w*y8)Dn0+u&`Pn`(BUF=2@X!3dkh=!vzI6ZDoEaWJn!(teX_Exy@c7jav6l z#>ijs{Z22bg!7>S*SD5m{e9{32hwLRTL= zT_B7Bh4TRPIXWf=UbRhpG=R(>7U5)zh+1N%(CttGIGclqZ4h8FwegS;pj4CqE7cgM z*7>a3%-+TemM@-b><2)w8;~5+RaI1#tC^9xamr$VFG3x+m2BJrxPcw@DCi^!g%wTg z`r}>i_pxt zX^_sOxFfrG9YvWIS;o8kezRSkfSg1u##|u&H^u`ZT@r`ji){%|A^ONhSQy zcxRM*xsp;TT~hr+US7diwyk?=YLTHi!M{#^mKJqV?1}qjof+;C#wH`;`yLlxp)C6e zVIH7U$*CWc>b%GhO7>+NMa*NTG}Ws;Pd68+|9yjW*~HV0#t{IZ0{gn~;K>H;s^4AW zmb@IqvdXu~*_!bNOjxX|G7LM@jOkB&$fCaWq{f4#9CBjsJswNJ9~K!CRL`g%HtwtJ zg*PZpxN|9{a(*6Xxs__KQ+~ZImd`>*Ae)ixSbZ(Gg2bhkFhjKMyXU86=R3JSJ=nMC zNxO{-=G~{5fA#tCQ9$@>^m3ZrPRWfMSS%KpSL_ZKRLZToRfJJ zUZ;WI$_S%?H|3s1(+q~LAFmY9~;9My>yz2KGp@``_|epaim-yCbk7XC}jjbN4@1nBRR{VYX1+3y4ARd9ASZ)URjzn zH{K23)=qT|gX1B$*9j(Lo*{;81Td4Ufrs9PJI15+;#9f$ZPUdRe|oGRXMUrW2_hZD z;Cd`&gCn|@1p=2jmo-(9Xb%`g5g@Rt)U+~ael7XTdLk0YtMatHyO?f!l1>@9$k{${ zi#szPCA@ySWr3;$kVzc?M~EUr>0NxY7qWnZ&2HU^T?*BVkz&X)WEi8bvfv@ZR`_y^ zXaG_XY-o}J1UU)5D3sm}YIWo++iM)=(x_w}fQw3l~TcD6hcRZ4VZEFWA-lnDiXy1e`ag zdCG9Y+W#HgNx(yy0Qv!PiAwwXnMK(#gA<}LqsRC$6^wRPRlrjY1)sn@f#-ZoZ!s?) z>KU?3+SVr~C9C(av7vA|e009F6%Y#%MxuKUg~nk(%LeBnZd@m!j%D9AMdYG&=%?)tmNj*h4HJ7Er)itRJt+ zLG~#2xB=0LRK49Gm(-Dm!dB*rh6m$~8U9L6io8 z`X4n+2#$>&XsLwTSRb*auR8wvtK7qpyy}Q!Fp6rciYv)bQO^iRMTMrQR(S;s!zrl; zafWJKw?zgC=t7|&+Q(LOG{2e~#8h{XO|V-S(xA`@W9Gi9 z9fn=w97a(jT!?BjY@ejP00EsB*xXLQztaM%w=wu=DyZmJ_I;IDS{*KmTcX;&GP|~Z zUQUK0v*H{^B_EOC6fiS$g=E6GFNC;#M@>4cP%Lt-Z12&SxBv!;d5)G#4wL*A%_AY)8HMnahj z-i?vhlRzd708;wX`hj9|{VJQ6KS~^NWSGkuT}8@TdGjuCni5G58sT zwDclkhmBi8`dsG$Js&MXJfE6g$^5s{*}h$szT_sMy{09uNaK%cFhHfA%{I1d%E(^H z5WOK3grlCnz-Va~Ocz0}$!-49*X$3G8%L;;TN3ro-)Ibmx?g@q2_5@=(<`UM2zP?P zVYV`H!PXtF6+(J1jYM4B*w9RHrz%D$oVCw1F#!~p9$%p zYEr!pNQDUzUY1c?t?2K79W!8SF(KN2`s(NO4}tum?wmf;J^0}3x@aekaORPoFZOlG z@y?M@bwYF)#h1vWnkC}evE@y?dy)gv5t$UuS+&w%Qnc|cqQ60sxx^%9#l`;EKP8QE z=U(!Ik%}UxrmzF}uZDXWO`4!+r$Ct;_vXbb1AzHx{9ko72a)959YsricxDmcOMK&6 zxZ?LbivzWTS62{ED|mi>X5dP_4C=Jn(SCSTFa#$ zWV^*);;1Z(O`EpDgUG#7*FLE+B92xqyqvDM{|4Rgs2+>IppSE?BtI6}?+Un|RNNr6 zFQUJ)0)}aJR(J36uX0mdx~p9x{RcY9EeZL%MI*^8Zq};Cbz4hgeIlU%Uy1TgWqy%R zzrlzLJ0F6pQBwM3eA3l4@8VJ)s!%xe7T%tZ@VGtM%D|C-1Y#E%qeopoZ#S)2}U(;hHHlFC~Klc_05+AXS4s*EY9 z<=%VsEb z(wCEqJuL7DHDTr%F(3OjuHyXD(mWF}xc_My)hiR}={q4lC!qvV02zyre{p7~n7))T ze;9dAnx~m;8hB)4x?2G`Ek@mg=%Yj+(7JoQa{s6v^JwbS2#0~Wwilq#x3E4r^+AH* zvMM4BXgoRaD-R{^H*u2KA#IZdf`hWO&>-uR-dezj{y_J%u|N7kt^kGgsYb()zy zt-E6kBBL%3n2o)EMG{@s$DXu`d=A5Yf-8~QKEdk|yHWJIkU`J<7MJ6?Epf>2hwtpG z$E#~NY5%?R%3O8nH?Pgm?vs1-odXq-#Xu#@?C2D zt9r>T3DWh+>e-6##Oghwh-w(dgM@9x&6W2#?^PAHAC;8zB9_$eOwyT+X=Sx(pU$%~ z0ztboJ$=g`O;nNO|7oMQ&KQ*y^U~c~SM#aG zsP=+Za$BsL-wPqRsov5nR1pBG)K}ksb?@^D=x$F&HA(LiZ}tu23Y!+9>Smv{Iu=HX zw@0bSS{C!hrAahwo|Z6sB27h2lHYzkI{M)VkJJ1{kGC6F*bsKjg~>^~t$2GGXrk_- z+acKQv2kG%{h`i~hFCgbe6hkyS7I6@nSviOQK2j~nZlcp7>vVZ6j2$?e} z9|>fyzG*qdC^yrqf~H~B&ro8*93RLeV+`sxz@}4CY4NiL++St4R6&CL1=^Idz7jF< zgIHR+ElBZT_cHQty)N&>LKHADnKHzpjbK(w3RWx(iW9=m+(}S=yee@M*?4ar0SkxR%_@7b%n5LXFkm6~PF>sqAH?>fV%#~( zf`{}WwOsZx3zA(0<7b4@DjkDYM%OzYK2v6n8&VAcAf7ev=xs-g6yfA3!v**9xLj_p z*V)Cx@6$~(d5^q@0+Mzo7us##FZYfiVS*w2)pYkG4lU8MPmu)5SIE17joxLRWwVVY z00)4~y5a%$<`r>6ADG`CE%)^oU=H%|WNl|)UC^a~-U&dUnpWALZWKKM0UE&KLY($4 z6_c~V({3$)thJHnR``n)H}v0x%rvM$>-X(m5OUSnZ9i+<bARm{#n~x<1iGZi7{$*2?#yseD4LX`^ zGCkZS|L<_Cxgf4U8h)P!$i^bL{C7=`(Y5yb!${#j)LDn-tv1-zRa0$YmNV(EoqXtg z2%~d5rXOnO-a`{Qj#FxvnrToSgwY|OvYoQ7ml}x6rXL51e|r{op5i{ob~nIM2H-@3W!j-CpN=@QwGrxMH2Vu2pny!ivx(*B;8n5izl zuKr9K{VrI+&G-7s)#I?cp!@AVtm$s)_0$VV&jt!UEMv6hYRFz!c2iNfrU=9Mv98%F z;dqoEO>h-ub~MZF4XEt2Ca{KUfm6>Yp_TPhNkiIh#bQJ#NbzvqGdVMTzw+}?MJ!Ec4oZ~y+_oxvQiB~xh-(@473 z4!yF-^h%~~zW3WGFKLH9?tP8qZ(QC%{h!1gAKQ{5v!$Oe07aPbvXg{B=&^4>yVNeD zv%TmHl@b2<*nnHA^PjCN$0)PNS)u|^m=7~y5IW_3$j#!?T#ZD3^wG@w* zpO1>>X?$;}QHf>}=1;Jx6kpu-c;}zXpUxdK0vd3S5ITE&h^ZcHL>mqpRRud{N5)K3!Lrdmn1CGl3L2mwu zQd8;@mTI7Zsc1RfXD)J*Lz_n=g@lhAs?1_(FuHMu3gBRl*)2swqim{Sx3E^kLPM_w zY5OV?vj3kaM4%2NL4ef(I!zNG6!A(8P7F=~()ELMzMK)uXr46_Fr}RfmjTwx94s8Y zptf~h#|F)9J>g+eE}O&fJoY23N2pr*jj!43XiVtEE3Z?!$tL{?Sr3^^j&Nw^LzsRU zK`2@R3G@9r3M4N2Xx-<>_^bqAd?MLY;S>@t@ur9`iCv8xV-j55BZj^< zqu#*=tr(@IpGC0|rIOskp=yufzGXZXQ5AMK3D|V!CofV!dtl^oFbRxTnVEwO_KXH@ zt$XRzyYo_xuLyoR7A=_S{`Et-w$ zx&K}uHKhl@(bDHYL4Hx%+w}Q)L>tgGRl;n}dCSh1Uj2MWaXs@0?WO0z?5q`vLy4N! zs5${cvi$Xw<`*1KT7=`Ks5PZtiMVhhKIirvcd47%jN_Le;E-e$Zc6WpU7f;yDHOCk z3Mf`8`Y0d>sDjj7^rf{D#k+|A%e&n)00yX#V&(Ur0<>Sa@4wnE7S^3%vwHd!j7q(D z@$wSH5WrGYV;w@tMT{$)bYD-+QAILYv!~^SncX0zWD@KlyG#~|o`a^B@mgXbK-y1| zWyx_XQ-hM~Kg+YT93yOQgSULb@{xK~Wx6x9nKLy8Dzj(Sa-ez%KzFYXwKpbiZN|Wu zu=Z0j=4dSLbh$Zn){_u(loS!+?TZ+vqlktQ4>FF2Ry@CBi+)i!+`Z^**T$frxBxG- z6u(m(q~0)60o8>bYDRy_h?B%cAM)t&VSPj=G&TC+zyL|q71&@bZkD?rPL+1h+mgt` zSYRmmwH-m~mM8t9B$b-uvHo+qYC147VL;~G_n)$n@3(2|KbPx>wmZ$MN3iw^-V14@ zCJYUP=Y082_&btSOC3!E&L#{JlI-fUjr*r}2xTKcb%q*YY$~tKi$JUBZpv)FM#-yE zU+(FUzDPEhVtwN=#re>LJf_Dh65O7D>w0}40ii&h0j$p{s17vpg#hs_Q2Cp6 zF#egA0><5zphToX7)P(P2u)|{Klv7|rApBPA5x?vD797mye z)^Ie55ZQNxYp*mD1b+kIhuM-GX(oR#cICi~^M^ZYM#L!s;fHe-*&ruWP}}oweya%_>1bSS=OJFRS0vZt{vRo=+rc41#a0?09Mnn}uyoP{sB>`Ba8nw{hRSa|VrK|)Uhw>1nQb2S$M6ws(Yp=0eBdWHCS#P_T0>%-hfC=D9 zEPr2DW%MMj*GB)WKfVgeb%+T;nPrC##OIXE2yqFYLHNotp*BKS^c6*X@94hqQy}2& z7!n;%bSIf!s^nc10W+_y=*sQn-}ZYF_OhmxU2YzUq!&(;Se4V zbAJMr%35Zqo2!Wc2Ppy~-Cu_bqU=%1QI?90qhiTZxB5pWRg>#nSIhjz?JDiDY+$zIp9+;^O2iQX?7PI($+!AP929>0Mp z)i{Hqlmi^DIFhYUR#GAIBFK=X*^6WkNW|Gm>8o_?F-&9IJaIhWZD>b5GU?m^BZcb> z8Up%zC}4^{+@a=2sQFw^J)-N$PZZ}9>L#pR9$|t$ox4d0D-7#XgLY$*Gjyo*oP9%+Pe*|{QKY+zgxV1d+i`E4cha9rz#A|CCdQ1^ zOm`J|4$3rC*u|#{;|7@3yc}xm=th`q!vex)$XWnIAElJS0JkL1w{1BP(?q8 zBA{ER>smvI@W~*29tJ%i%=L)R3)#KRR1d_f6<0Yxpi@kX2?oiHeZYubU;4)DcugF- z$?CEiVhnuT@XrbeZhM7pu?u1g4MlmnFF4^z=z{Oc8N>1n-WvGYYH1C`>B0typkxiT zFy%F$07wSb&7_t()s?%n>W)8npJw*!Nh!f=AW<_|!5wDZAmV95p=Q=I}H zC5v1^#MGU0- zol}D<&od(J0I(88EPRH6v?S>Z4?opn+nR z6XMm*`Y}+%QrcH&t#5Q>!c8neB@EGT%lCk>k`!=1S;5DC$8&64ovQQTHC@S8&nf`E zLgd98YS7mS`bFeH_}n&%9!gTvLzYr$pIZBRM7(tidxygJfYFo7u|HT$y1vE*!C(CK z*R=bF*mr^P{=+*^dxti+MmUtEX?DoM@Qew0fM6F9s`Z-W?)b86u4K5S*LeaZz49TBFsD^^P;D-6Z)-jU08)iTRI!&3UPi_1=6 zfN>-#kOKG%{`BqL0#3)n-iN#KU$e})1<&NlQjxcBZz6lW~-;gDMc*Xesfk*0%u1x4lkx4llKn2EKQX<#Ju^u7eX z;wKs5Zj7^R%A#+@LOBt^EhV!iZENP(!t?HTaiXw5lYu=dIyp*$P-_&h2wkl!fk*6J zX!}!z5DCr4R81Cr`&@(X=}ziGDG7X)kNgrN1x>nj+^dsF5eT-3JcKPg&+xHP%r>t49K`r z!bV9tx?9mTRIjMMmcRUJG$y1CSM!xb7AglDp4`)-#MO=7X%cm3Z_S!ZC3AE=>2IR)Tco%9P z&>YiF5%aD)v@Gm!%M9qi7cLpkPsI1Gql;x-1N9&vDF5V9A~qvn9)-3cz2Z zeQ$XYtcrd(nN!MR7?mn6b?&E-<;yIcv_`F@aQ}D%tjLinI6qBCT64u=5jwkq2Yhgu z_IOXFW&7YqABKVo_rSnF&ow{%z>tt%(v57a%k^3J#KF5px%vKFNf55$)myzY1t3;y z8|+bhch#V+ki}5nf7_67$~iLE|I3^IT$iojJ@<&(|F$PtJ7-G2kGhn?{U_@lMC@k4#t2`ASX%Vt2Z)d-Tiw!XwW`;N4MovYbRQ1W#!CguPX8JXB= z0G8j-AF;TkYakHW_RzUGt>LlT%5_8}CaC(DDg)7`G^^^gN)HI&7Tl}Q;3%#Qf`VHF z0i*^30E`88!0zLSW*8t&s8s9DBp9J77do@{3kf|3@$2EFka^0@;4TI?&yWokH=yU^I+GA??_aU_siAbK!ds?8zww5I8IcmKjcHFwV>SUcm(AmvrSL@wS10`rL?rkrh ziES)%TT@)5o~2Yg=Hp1!=1sYl$oruR+GniLFe-p`ok^BxJs<`2Ct^b9;s$q2DC2mo zM+LOc8|oT4AWTZK>fQO>?Mh8XOyCVjn>r}w=(;?On-~fQm7vmS9x&?@GckN+SMtpa z+@bglGmsxbh1Ru~zU86f#cp}~mY<5y<%uryvEV}VoYf39Q9D>nL&QmO4E7asIp--h z^<@t!&A_@g=0YVzqf^Y~%BX=zh9D5QA-^`qSBzn-^z$WQUDA?;&RC=IeR(trKznto zwwhk^fJ`uZ9;Cx;go-`l!?$i#zM%%9rnV2>pNtySLTM!9wL76c z4_Ab}JvLoA6YRZoP!2_!47T*|H(TvHFcXkCS6mM=S9P9 z8gR9CaB#L-N%WHGN?wwztg=SEGTQS^30uJszYgkL4Yio@w49L*D`JZ0!WOV+Mp{5$ z*32Z{5gf}O1yRFGp-tkh+ta5XHCtJu7BTFhhSVn!g7BX+fZjsrod00QvHpOru>ODo zT3=X-S7>f)z9Uf2L)N;AcdsY?t}NzDI7WP}!1a=72jPxBH4vN`8pW7x@W%IZ>vQd7 zg$tY5{Be$m8-nQ9%T@J}ge&uQoLyhF0`2J9yOyd6J+DBtmh1j3y%nTP^V0WBBx?_O zD5+VN5Ts1HnEbazteR8&G)kD32Geoxe^RGTUzdW{oh#R>Wy|o@za~$ki=~X<<)Mgr zwa8rC)RFMMfT`I~7ZKeu;Ex|csz&DG4}q2t8bM1sYFP`F<+gn@;DRkTEKn<+N7;Z< zwEDS%!MerN41KV7P`f{Tukuc-R>`KLo9irCnfb1^NJpRjT&E}V70)L~4BS;aakBj$ zxmMw|rbYo;` z3chjdI#Am#ikCm+B#}&{DMgtVC9g~M%q&`Mi?CW2VZ|2%%z(@MzBfQnDt!s4H3PRMf`XOIYdJY0Iu%cDwD~7beVZ;!b`3#T zX2$nu4m5I?f;0?MNjbx!l)uICp%a+qMC}wK=j~Bs8ot^#DFyuRzg|wWX+E2XZ(O|* zjD=Q(>j&<#S@~(W8}Lu5y;{YoS(+fVzHB<3`r?X@MW**ahzS{?kS|5{-li` zrR$-#-c@A1Z%w^J;*yOwb3B$=e8f8!X~7UHkqX zRL213)+nuHY4NeHmaM}UM38PqM?^fJ0#eb(Vu4|`wJ$__N<2vC(@wBl(t}I2QP-n%+Ovc@I!L(e#%bRu5;>SUTX;tXaC<1G4;j3xT(QHB~=qFO^|IuVz zik!||JA9%U12+;Jy84Z#2?tJx1e2HA(h!qai7o`SmPr8Zy0t>!Nb%IHxB|BrIBenP6T zsS}P;4hnA3xWJ&qok`nN5+&YF{MU#iif^N;EFvhU5rFz#%Bp zV+n>5hxuC>I8~Fv*U?~hY29{zOU=z6(!n2|9B)(aJvlz6N7baJ@|d0r-l=3qeasaN zS(>hC)D9=1;Wp;H0UZA!lB(U;^!0T%sVZs%aJw?yVcxp;J5N6XAlEPG3B~UKhkwBu zESx4Ld4qR;Wi-$UK$%yR?W|RD+OE+2Z5nQ$Xq1Wo%@xjym*q>>K26-`tx=5U`-;b# zhmr!1O^SO28_!e=Y}LQ@|I;aJ^Is@KGk*end2Q^lPW#&k=bqlj;1STtW17QSo;gPV zFb}^9$KV<~s0T>}?{;8h1uJDT&#K4bY2Zsbhs_M}jeNz4)aGgmA5^se`m^N-xe{Wg z+A^a_Xpxa|K>g4hvvfVR2T!Tn=nAZxZ-(>>Q~gp- z>as@iCB3wa{$3Y6tvYbr<}o=O(^`{|w^_P@plQriozB;$l+T@Ye3sPVQ{xZyH3}s} zpn?5I%cSO5N_VZzcw_Wz+Zfqq!$s|FQe#3;wEA^!7$fb;G+szIOj^o-YDCNA7HrW! z$dcvc=w!E2JJ%T0?i2J7@(&b3D#4pHqZzYpt7_^auGfHK-{Y~8(X{z2_!kilEq`J_yyY5M)qDs6zG^X*O?RY}l5^F#JrszP5%<3;o zbP0XMXPIkrjAfItbhm;LGP6$^Wur~Kim#(W==x#@??YKgh+PK?0l4BJU+ zwU^7gdu2N9LqA@9d*de`GezFJApZG1tPT9wzn~KzGaDiIRkv0h9%+ApqkE3Tb^s6C zg?F{9lk%1wRrWWTu4X@9CEHP;PJ7U4wF>1wCWX+;KO_M&I_R~Ze`B>W0 zGr4*YXn6}-?tg9x#|jUe9c8|^%Zq|)38q2DC=rDg+P3$pv_qV+&VNKHrRMwlN<9yD#W~>U@ zJHk#vNo70KwW0TOSGBc4PwM-PE(S(K9OD%@$l}yj(H075m`d7`LA0P;teO*fA@km4 zCV&@rGjf58D(5UZi$QN@sJjKs$l^|*Xi%t?(3tgBi$ERZRrOR=#}Ioqcbs~X*fYBV zfgQ|ebVp5Axtnt!o7C~nJ{alYAK%$6_E&HGWyoZ)Ib0rJ0CTuJzCb7vOQbTnLWya# zI=#VYGFz;;&F*lz+#avb9|(qsa3mT75|Yv~vU2hYib~2Vs%q*Qnp)aAx_bHshDOFF zU{s9RVx{kGv)y{f9QOrJd4o^=l+hXZ+_%2-l^;qR=&-V}xw4fNxYd}T~65&^tg8?C8m`lV#Kv^GX0owJ@SkH zGnMY z`-Hpq3jg}o+UrP6k|e+Mc1f1bA2>2HzUz}~QU-{1^E9E0V{QjUyJ_nf0v|>Pe_vef%`5zM&|`3=?nP3WZd`AoA3Rp z^~4%}|9eUL@YknWi;Iq~he4zgbe-+o?i@z&Z9)A2y<-eN2H9k6u z`(++_FYdp=rEJdY)bhcwDj7bT`WxlfdnexGtos`6I875!D zMWooOB+GnVWt{u@-gGC951I5R4zou$k3{+2wNAv1F)5RZ72JYlNKqEmwCDgEcVjVK z)3tJGBHV7Z7kINJmui!(Rue~}8e55F_pZo18e5jFv}|bH_(UutH!|_;F#mGGwg2)j zWi8BpMNj&f%=xPm=|r}Xc2mQcM(H!`DW2k=ld{sRRPB^huE_Xi>oQ|3AnncPm{cw2 zX7jVUDrH$#JPvL>A#NRu(o@lM)h6&^SlpuI)dhnTEr*2TO5g{w)47bU#~N*}vZ} zMjcA3nx>{tJ#xSd2LiSsb1}dh{_&eX#98|S>>D4i)$q@UENkCh##NuA@t^*f7BJ;^ z6?PBvFn*`2$nXDgW<_ZTQ?xKN;itpZT-FV$s&}|M_~sAa|9+-_0jKQSD=E^CUjGgG z0ROf$BOQ`1OK+AgbuP$ElhU{+Ur`(ml~g6|qNGY(SNTO~oNVawMISRH%QmcwlFgWX zLb7ePZsIp~;K*SnJ@MF;`_|VEUp{hqb!C2TVtiz%TujD&wlu?L{9R3nYB5ccdb8b< zq)Ga{UiXBRR!}S<#8oU%bDSi%-BKsYB~O}Tv1r_FkGI6fq-+}R4Z%v z6ssKdE+Eh9KE^jbyYUKFG{eVbmS(OsHrkvG^o{J&13|6S$MgfOcruX)w$3K>i`#vQ zw(;gcP0l8w(Xik2Spmb`9_Gy7-@k3VP@Kt_6LmGj2KEeal|^el#~&=)O0Ckzzipc^ z9oojz8}H><4+xDR=sd&SI(&T zO{VGQ;?u#6e_d*=yj)K%Ws03A>S~Z>pE=3Y!D4>8Q=H=g*h((F?fT!zCD^&Aq!-yj zC$^OE%Zi#|nsS(#+BuEumeMtOvy!4}s-j(!G>4g%X40Zs`U&Wp1$%Ev7bVz~RY_Il zbyz(ZMZ@6h66Y>#;_7DxVKt{WFCj~+BC8i)=ThAZB*g_raDmqMe*r_{20urS#9)%= zH%~M*M>F9@HlILpEX}$7yKFswZEdYnc;@M6-~RNA&%F4SH$8gozRPD%pE$O%yf8P_ zs+Qxil3$Arz?zpKd_t~T?KY&yGo*1cqdMe_Y(=T&nV5Eai%%Pi@KgXPEOQoHBX|OG^9G-niLWqi@9#h<&Rd<#kx{SP7k)D8h1jacv+US z`;`&ye*Ob1Z^-BT?x3l2|FxZ#IW}F$hvMn52D?ydjRr#@878GQOq6(|JXA~8a_zd!Tz|Y+vh9nz)+9G%JGDK;@vjiHeMTzg`zo?>*?}vuDr`mn`VGnwRC?in?5pD*s~NF zdhgiKV8zZ>$|W}$36ABXITub=;U%~*=?~ab?9IZnRXW8KJT6-aGiiy#A+vQ_cWEz^ zJhvv3?Rag+HQ4n~;psw7krlt=Ij$`p>cCQ8L>3+@Wx_+@3Eq2MgSGoMd~3WDrAK;{ z!>!&Al#!J((=tRN?inK(Agqy)0MDqvbHt+M|1sPQk3YY>(}87lpIAB&=9z*L{kP!{ zo!YndkDoj-%oJ6LKJbZO{$irE|G{xpHE@g2b&WlbdzPeJCynomZ;ekG?kq|7b14~@ zN?1C4-*{>B-VhB)U9Ar9)E;j(Hy@t046Ryit}VnAn5+xI~V81 zMhm&Hig}3$fYEg0aY#5R%y+CQM_mZ}?YG%!3#$I0auWlgh!uKo;XPG3_|S=w*NN?*SZk0)-njZ13+5{ajKUw)m@27{0fAu_PY@83 zP7Aa})DYPa}Nz)AM%?<<-KVTbSyDhmI$W8ebv_qG8` zs*WuGKbk?2!qw~F;^X{7k}Hi!&#!(aLy`!^mDVZ5@vUMBg;{m6gx>dy(gB%E^2M8v zjp5AOk0oj8lUq(mIaRntk^lw9VjWV5?s;C-VyEd%|?Jue8MAj<~0 z=0Q95k@sa9J13SC$!v5@cG7+QQxl7S*q`@@2J+d7MlPX7vlGEwvj7PEp-*=n`uE4S zMKrDOw)X7vCr%9w7_a_jbyy3G4F2B72lM?ptHc}s<*k!(%>Gp@@bB}VkebpX9cvVm zUlVrDo24WUVwL$dtha9!=7I|VCsoT%J9=aTN1=`+=yucWv$eu0GM14XV)K zNJ&Va_~PX0V^NtCfJGQWDguSTx5pR^5Xc}hp=qIW%^C*Hbev}v8O z+<=O%O9#qj;Q&1}7^6SwY#}j1LFfR65q89fgdFK)3Vi7EuO$n1db*ge)pwoH?1_9D=MStYnN+Lbe9$8HKi{ln^{LC0HItUhg$3`1+DW}SY zujFt|lNEc@ zD76fkzWX)qa=Is%x1O$o4pQ00%}2S*$(~&Pz$Yj1;GJ>l_0BUS&Ct$oes2Y)hET(~ z^?G%&Ua41WRSRqgn`jaFBqYd-Ds&BSp({Ebeh{9RtTFy1FiWCDF%HS27vlh5;IFvr zdJ&5!d38kAB^K40ldUUf5_~zG*#X%IrwrX^t7c%boGNf<$F|**OMb)hZyWG0zUQRw zZ|$(zd|AyWm^xewr3#5c)Ys68TA2G;N6s(>4lVv(BerZOI+=+~*ypotv*s_gE4iSy zZE|$9KjFrU11ql9IK2KgleI^*=yBXiR?7Xl6E7ZUrpEl_RUuWw*B98ILaO#izt-_5 z5QvWuhGmFXAy#Cvs+-dcmP6qp?uA4tih3Hd<*q`G!a|Nn5K3JZkjnr;-Ql;7?0@Z% z$=)?Pg*#nNQZ+@r%OhBFD0Wu2_Px-;4zTK(NqzH%VK^z`wckNXD}!g4HR82*Sa;=0Vt zA{H>LU|%T|^qaarn*I1ss@#kRf--kyBN$RY&mI~G`bJ*-~TyD+@~}4ecVEpwG&u0dN@rM04RiSu}|99 zAB~p#8iOfI%M3)YXkpT_xC^ttX|GlNkloz@jhx$3rOCaQz)IV;E1>D@abZaFS1LsiW`R?4~Ibb6@;w8%zb zvDs0$w^T~ic*M#MgACw~Js3USC=c(y_hTWxXW_gXN>=sqAh!qWr*>8HeY?QRa_LQ2 z#YrH{mb6#;$5%Lm4aYiCU{u4h0XcxUm&95@om5pI2iRs!+d?Ce0@l6Jj28WMhLZ|b zH;04z2K^0E^3K<$b^bmE6CDM;7Eg?4=v`EkxCX+hcWu?PtyX`uKG0~?Nf+5fdmLf7 zSPS@L&wBQZr&!UR+Xr0$!`TIR`h>T7SnW;zr`=+|GY*Hs1If|h#cIeX4!FVPT1@j# zkIiqNDGzWfJpAa=vYk;&#Yi|2jx};w-6_vUomer~mo3G^hywEcAw;{r`uHPF)u;s2 z-Glwf%#QWGvD)y3Omw;P(Q`8fGpd!oNZ9?gT#0K-v!w@;g}!8F@8V1aEA~TJ(YHV^ zcd+m)2$|*HdX})-I+)*U;D05q3KJ=>gQ}NhEG-;`PJWg&xUxACr*DpsB;lvwqI+X$ z-M_!9(vlZ?SEXA@3?fTRwD%;vE7EGe_P8XT5~A7rD!TrLn=hxHz-m+Is7eCZA*gHA z-FDk8hYYAL)5sA5o(qsxniMD1eOP_uq^-SCAIb*?sl&gPC9h^9|Y zApmBE^2F3M)8s0b3kJ(nDmp(a>xk%pw*3Edg?K03emO3Gn%qsDmP^kT6xwa>3RwW~hgC|8457FA#Kn63_+F3`Q! zEJph_{;buQS$CMBg=?cqY9(dzpXf}T-5F6>(d^ri(zji9?eT$FqLMu`rQ40!RATPD z#Tv^azOb)ugkda{+(du2KDeO{wDvZ&U_4}p3ytvjY8v7yJqZ1xm6(=R8G9wh5RG*$ zW>u$z7n80?usf25neOuL&@Uu)P6Lj(3Mm-@;hGo>_XzI(wMUckRBnt0Nv;W+zI)b9 zS0)8|{jo_rMW^u^msAvXqWj29IVb=r_`{`L^RvydfqEw8Skg3`HV_!Ky=0A!wd`Ta zR=bUbqh-fxd+Y9ziKI*3$B3m`OmO4)VAFtpG89XOlt3`;cP59cIhZaWyz00fDn@JZ zs2!VKUg2Twt%ac{_wHIv=tXvLcB}?F>K3!L{6ax~F&2#GRjwMQ?4KXIPqRT9tNloY z1jcHEnZe_8OD5AlaqPjLxi~wDxTV-&A6e;-&Fwy&%_INv*|1n$V3rB?X~~un(!(C7 zLaAeqzJ}x5npE}@D0e)J%yPODlMuH9n8MWdPNR%7QqDdH>`~ZB_!1z)ZDy0=P>AW} zc%zz3zjvX9_P4RjP&SqwexS!eu~sIU9ZbivgB!nfgOB3UZlGlE+54r3UnwC{BFQB2 zakqYjo461Xm^&Q><&g$~PG0~#3b9GTs|zNCNTEg_61?Ksi4?l&+38D&rS@|HeuQ?{ zU=hd=^uEkb4&;Wl=$uh9xZ)3vrXv9Kx~{nCEnn_m^8<5k=I9=)tb`RcFgjK9ffr;f z3CVw4dQLXjBVhItQmK=N-|IdnW|}B0c?~p}yl1y2}@MP;I0EC`~t zSd@*x#y2+p6pX6O%B=kAQvv#qV%rKn{sz0(HNAxGU(hcpu<5w>ui;;HokGdK6^bjtrNL~>jd7DtE@ zBJRNo&Xv=-eipBX7qVuW2d6XT_;5~DQ%a>*9Kk*v3o60+E4i>{vRzY&#A2VhZB&nE z;;s*+4zd-__cii!gDjl&k0$)}YS5VohHKlwLS$0qjYC`OC_Z@oyK;q=sFSJ5inxzj;O`?&i7BQeDP+i$Ua$g$WnFnBUJ7 z!|@eUNtGSj6AX>DE`4ynB;0B zHZa$Ws<7SD(~GM=xi(yinrhUDl!{}qtSRT_-D;l|if2m$@p$C(e$$AZIMUW5r{Czv z@xgCAd+1usQtZ0I6;oxb8Pwi7aj0nh$dk43QHLE{I+t{t&z5%7QU0UIBkMb_e!Ac$ zEoQ3kdY(>FW&s^@~DZkAf?9T%@6P?NEV1d-|Hi%4h%# z7qE`8RiG+L1g$G3v|XeLvXr-ev^VIc<05a6RHUPaws&TxC!771TqYI)UB0X=SB^fIX&jcPBb&2gw;oyt-OA7LQY2JB3YBU&M@vH7{- zw&f$}xtP-!JA@ROT+(6YxvACB%12a#7mRH>^SS^a9Er1U$mhO%a%V1fmB zG&*?n%o&s{$SG763|K&pr-(e)_{J}9e2#0nY$V}44B3%Q5M(T_E-X*abKOWmkzn^R z^Q^#&rGxK>*_DBWB>pG-Q_>WW=>_SfR{~v3M4l%PAdZZzc2Pm;k3^MczEwQEm$&eX zyaf?0w+{>47#5{8MHX=)f-6Y|s`9S5c^Moh?KyS)@PXxBo!QpJKs}o*8I;pRk{9^0 zrwGJ+byWhhUaF5y3O9=k?0A!`Ul?;gSu2-oHPy3&r80De@^Yv>!f_o7rK3KKRtA3( zX8mJD``qW8`=eY7oS(JriQQWG{vGkYpSkxOaw#g(w|>1GSNTg!Ylk(?J~FGVgsX7| zvUZN|-Diz~xk>f@*6CB$QcE;Q@8H>%G3u3kLkE|KU z)iKRfkT=3SYN~!|h1{Z{d>6CIefyi{uj1A}{4!iOS3~zMHc&pur1xL{mOKbsxh(y} zD|=8B)U%S+F8aJi?vpblRU`#fbBY3+NYNjVi$~IsO}y)1SitUJ!L;<M<21otFGbdfCYkKmrWLDg0!m8X)5;Ph>Lp=FX9Uv@ zrj&nicJaP5W5s@p4UMlHd|Oi10x=G1?Aas9Qd--8f7Ilm^X1Haj|EG{Qbp#WXcc^- zzfi$K22mx){@d#MT65*%eTI8#Z2Y++s2oxgN1lsm%)Vz|UoDn+@$rUx++qGHEflLW zU3u;$gtT~c$A!hglp~b;lr#j!@?sZ7g0M&8PAC8^oQTgn1t1JYe7<)$AktOhun_zh zVp%9B1b_21PvFf5tBsY}lBT7EoMSeGaEtl7vv5z=g>Xk;Mrdm3hnz~Ogz6R{>ip}9 z_UZqqAGvQ~ZhdaI`3vVx2`N_8o20mJp)fgCx;&bN`LU~4 zru&?`iR-IBuNtB8=g;q}_;wvOgyg>ZpCO?r8{^;PpFs5V5pTv8V3SdDCBuPZ0@SO> z@aTpG{sNVvI?{hCvP!CfS-~?>%D}e@5GC1b4zq2)4U;kVIv2nyGw3846mg{+r$=pI zEEj8aMY{LGxf4hGlJUO&YOSy8gG+9D*c=7{76W#oE;74?GhP0U%zUA3j;7$xcRfo+T!|LKp@6aRPd<2Hr&&3l zeh(8Aj}Rf z%EE$5>p*Fq^PRlgnUD&u%ZRcyNnGN_dBQ0pqj&Di$>Rt1E$y0}ZVr|T=@cBZEM28u58$#S7EIuneiYf7Ie3dGug zY+>3!OI()}T~~|6w5Gl7X+MG{&5ps-3s3QP!c&};{-NVXPF*>}RBa7aFO+K`m)?*7 zEEHM4W-uLPjjE0y1%yE_t|9u(!s59ou<#<}*E&HICweC&#R=qRYInGUifgLUxy?HT zh{G7{4Ww`hphUU2<(WV(cG*C2s$lceOgeUC|GvFT+dJ*a!TwSqnLv{FEIUh4lUJGJ zY2j-*7wGH_H|2S$Zsg>tK9(Qq-V~W&4D^tBU1Kjk`0m$sI^?tFifKzdb8zTDNV6Ts z9dxlwcIv$9<2C=hIG^(2*oGZ z5cFyO-%$f$^7CYS<XD1?@h*1o&WUCc;Yk5PQwy=7R>fcM}Z%9MONw~b93mRQPg3uUhfJ*X(p zK0EIL#2X`YQ_fc6iu{sH_1}IqFU-GeMvo`YB(1JzU^||Dwpfx?-7qZaY$E;gv?Y!ef9TMnUc4F`Y4TtSLpf*jv5s9!gC;Owj3mz zPo;<7gY?WxS6``8Y|u3n2{-_cIPa-w%mb!}DsqtR zHf7Xw>0H(oUl@l(v;_D7Q%+ZYW$ydA*QO}s>Kv}3Lgub?Au81~1y$QT& zrfwf4?4}q+h})wqGQDew$pdo-ee$j(PB(Nl$OgzV9RDnihP#L0*wdocW;XIK` zLEzf8Q@|~o!*&O6z>{0-)Qllqjwt;T-l=}Cp7qKL`9;GTFh8ZdP^sx7pzSLOUU zxxA3}4Mc#{70t=+3Ga>gFy*LJ8Xg~$XBU{}pu)^CV=AE^MGI6;#Sh%TFSna1z*E?w z4}9pw`$yon{4y23q5h45u=Rth>DTz7gXV=#?qM!aY6!Ls_R1I3Q}T=No|sTrd^EbI z!B+vFz|#rk5)sDZkd+1LU7qq4sFatf(lvre-53IDBWY_O2sOVb7$Nn$eH;a8y>U^h z^U3utC1D>5BVTsY00>3^-fKaca}(7k8Yt#UZHXgp697O<(zPv?tgBe?V%^WncW^HL z^7-WHSP1+i^vj){@tr$S_*~RZqQWryg`O$DdAbq3rok;}3QX94<%$|vJLNY` zF273bKWrEHGxP4Y}YcT}Vb>~5eW9q8TEZRFsIJo6x6_Qs&V zs&&&Kp;u|*c3@ATQ@0((+zBjy?8v_59dm$f1J!ae9uA^Z_kMP%hvmr!kmb3_<-_>L zBhj#6Z@ig<^TxFH$~8B&pzB7u(LkhIugmMAuyc#H>;d`3Bb|`)u1$Y^{yaF1=En{L zjk7O+fD0$hq9(tjn0*2-hkq`NPSI%Rp24tiuYIG^C#x6M+ur>y((%aLu& zQj(w%$~q6zgaKQVYnJ(|e=M`eOD_VMd0rZoA@I^rB$9m;eM9!iY{J{{{#QTB5X13( z>UC-3pBWb48?goDU6Ow2bNiA=J@y=R7W6nN06ZaqI|Hk(uiKW1j0|NbJnMMVpukOo zkdjDu(sVXm2s9F4_>D_Y!eWg!W1wpO(#124e)mUX!;{S_(c4X`ffoxGsnyFO`Vx$G zJRV(82vm0$hTJ=J0z~O<4|AO^drBeIn;Rz@C}GdXZnp zVkvTPPjqigHyl3}%iuXgY6@%+^!}g!l_~zz==QPSwezwX@sT=o7tOJP#>SuSeqXJs z>+d~2$I2UqoL7J(;OH=QxHOofAIILWDF0PNPh-+sJS!Cgw;_llK=qqa_rx1*9t0rh z9;DR02MEF-XCWi!dKU;#Rx*Kw=+*(;meT*+Z2tg?{SyO>aFcK_G|#jMg2Rq)mc5WC zaXo)e_yA??87J#Md4H;UeE+GDku!^Xo;!QsZ=24#7J3?kFBHI9Jk5fey~dba?9)#_d5O@t!w^Wq0g!a^6}Z*j?= z{j7bw6pAJ<&L__u&*kof`q`gr+XBTXvs6|Nhqvw0JJoCmOq_j3!;gZB?S)FUzqvo4 zu{XZappwc>)X$&7%pz0rp541)UaHxpp+s0iybTFm5E9ywj!PGq-0@vlY@@&zY5)-2 zMO@>Of+8h_DzV@xWaQvf6!WPl=Ia)YL6o~?=%~$(z|vfAi7Clu=# zbnX0PSdTDsb?;T1Dbbj04U}9%F-&d^pHTjGelU-X(A+vPnz5A5l;#}Sce>^b2Nd?< zR6bcP6(_!QB0G#M9e274XmJ0bOni7}On>_7<4slTudA#S&)BA(`*#le?|nNXu_0UE z{``SMweadilN~t!xrx?=k&sa?HBv=lz1yga`90|AIq5Ad(y_|Gd=sE$dP0FM2^wVq zt|4i!DUOCj?56IbKpgep>pqK{CUzxJaX!KlZ%YCpu)CiNPqgJ+>|W}gOS=L*>;aML z-k0N!4k>x}0q%ZgXXLIYK?PJ(( z3P0rJwQYrGZH3Vw+e&~BnZnHst{|OZVc;h3!Zsj#f}@^2(fx9aTxOf1u{+q3pZ-LE zn~N*KfoBzM%IA-{{-BA3l7B3#I*WS)!Et?Yp-|jnVzBK|i=0TTr+B)rPn&YE&k?(q z^k~GN%FIpVb0r@lBac(Q30%VcaQ}hvV&UX~tW>r;Kh9I}ShQ+mhe_Y0#@g-Z+@fzb z#MwLFaf|&Kt`y0*Gb5YXyT1h|8VEH<%Y;W)AZKspUzE;DKi{#^h$i+Rqu-OVP3{nB z0_^y^x=9$q%cpSwSgl+)%k(DfYdqfHP2p=o_$fg+7 zsrv!Ol|;VSgG0LZNqK28tT&b{-ax80lFEmY56lIvqYZ!32kXs!)3O{ifP0zp@YJbP z?1gqf)j}s{ij~VFCN~`=f>4b+GgQSPt3Nikz^y|~J3b$iL#`9vws&apl+Nb^S=8hE z{~A%1g3NL<`|LgQ=^?$5T?mEzrTC8f6TU@@TYe>mMU($VLmgufV1r4YLi|wUAIDz4 z^;h88H*=4u+98)CUqis+AspW-VPR2;K{OGPzTFXU>_iB0@6s`n#xw)q4Rfg<;^?NjRo{Rwja>|_vE2(ZX?DJc?`N8akv{A~d-WWT z4HSZt6AAa>g9+?>c^@%G-Du0>#&vo0lj9H1$;Ifz>_qdZ!rtNs;sTxru_uU9pm}TK z1-;WMJN*vrEdFh*(j~0Y5-K1F^YntNm`?T1;6btbjy5C0L3tT=4cXPudaGQ&jMYcMvm1^@$qB&fY?<0t zk1560Ljmt)P87Jn`69J7-dzC^A(zJM$oKxZ-cy5_txF1FQVVTwTl-{pE`D6 zWqD?*IX*TrJk(c>$NYx$CiW)kmm*3f$+e3K-dqPrb}SmE{RgO#?k)xX=&k|@Kg<$b zL3BZ;wS=D+#H@D_0Ud4;_b6_zHj(NCAHnXIC0{E7yui5pfR zv7X<7x|pEBlCWRTpc@j^sN7gzhJA&Jjg!IOpSe^hRb(Gh$cT$&GZ;{K=v&`n?9{XG zJWHIQvnd&Zw`2`~)m|q()9_T5@+9ZBy?Qb3xSlv2G&{G+4K3$6#s#^|2 zTkweRSmbOo|e>B!#h43b^i=5KTSZ=Yh!&r(Q%>fGspD!2@Q$(0h_)LCfP`fbJWV{B7? z%j1szLvNRnIwsD9_z^Sgz#XFZ$uIr1V(Yda4$&tn&j=o%6OSxdv6Mai0rg}5hk~M6 z*+={B!L!Q20MUlvss9?3#r+_x65LW9SQkjhuR}r}goNB9eW2rGF$v{8^YP(b&EOm%GoEim~=m=A&X z$%j%Yq1+tj-x+Lq#e#G7;4^Pd=|0_b8mL1PX~sn)B2A(hs&UouYsra8ZVZ>8>HguV zH-wO4R3jtKQ7#b8mAU%us{)Ybz@3i)F1l3sy6_3W6Hruqir zZPZ;R;YBgaQCaR4=>T^lau>B9qN*H97nab|1Iyt3c<8)6fyy-gORD}a|FZ3TaeFD3 zM=oCra_x{JZ|nu~3jNW3DAK4I9tFj*d%&%F{{6}KSrgT{A)N7bG3|aG{1tb6d8%?;!!sSw(kNanu#cd z>dGW`Al9l>1g19zZJPs_?bsxtngI!F1J`1jrb zeWgZb3hw-0vDZmeLJn?n{X4k(eVcd30(;N}PkjsvNDCqJ&AZ2Ow+UD#N-_2(lfS^UePYmw)8Oy}vhhBtKp4Z6Huzh%hh!i^FH69WjA#l@Z%pDUHQ28EYmHD4O`7j7% zZiIhxL3I!cBVJGl2qE5)E?@sH&$BO}qVSOPmX3uuSS=t|LpF?d5mk`B!UiPm8tD?Y zr=Ze^%GkR*G|6_0oso4MMg%XZP$qBuoky;9s7=uBxtZozy_!u&g3=V5qHR8CWI}~b zWSxX7>nQ+9yI8O?B^T*8!BapVXl~;zuVj{vi571jsez-D6YRI0*b-oy&xu6foJ}=^ zDNUeH;V4=rB4mX|g&X5m=t!$CQ%#sbIXN4w=ksnh6p7oRNHm-F>28w!Y|!2KX25W> z=*kvdjRI4`WcZKgc07`bg!PyeoF6R4x9>cdHb%mx6RLzGYnL=1 ztcmo{_3yIZgY1-1&HVT)DFkOd{9c9Xz=|jeP&OtR)~Cy1is=>=vLd~H%Q&2Jr*W8J zF464fv$2R{Ve4y|muZG0A7M+o zonl2B9+=%dR-GOjp4i17(CjQqRb@3Z<{B}FT*?>KsR zp_)6kGZkc?0rnz?9C`Iihk0PUyuMs_^+7c_WA1o}r2M|?|HS@)eO{WBj(=`Q;s{G2 zffgi?iVh%Lo7;pjD_vGEMA?R{cNkV2rhux6Z#s^qDl>!qXg>uL3%BOk&Mx~2De3KP zxJj-&L(!cZ_K`#~7Ti%v1XxoKSMu$KWkk8`Z=Fo$6Xw)5HE?lfDPgULc`+4=m)P4P zvgRI{Ib}qaL);e~bE2qrT#TsPKE6GjSbcNSk5jU>NT?blsUYoZLn=DbN$LOX*b^u? z%tKMpPRonIhq0d)L?F6Z2pQ2dF9L^*zH96jAxX{X4hM&5V!MDw$L?1TpKd4n^fmh#Ab$&6@mLdQ56e4GTQrDhs*W zs?b;{(&rDe-Am5<*j9yBmD?3MdToah$ri)B$$CN>>M1sopgv!8(vrtXNQ19_MvLUp z^vcs~C48$^AAZ`82CV9DYdzWB_?4b|X9GFSn24&ssS53W5YqcqSkXav^(Ha}h+GwL z&{QA8(RWp}8-bKli@FfoD@oI>u@MX&7*7sP7)Xb;#e8|nw^b+w4ue4ij1y@~fyD%G zPZJ929&_{C!AT_$GY?OCk~x2`nOvxk8~#(BLJpm#xD!(yd&o%Pgh6& ztW!D=25-7ui04v()yGd%3!Qt3%&X)vOZnaJbhBD~e;WI6B5^$V^}oG7!M+4e^r-Z2 z9UFjHYE6xwsxT zw_&4z9zZDc(if)g85?nUt&pz8!n%?|B~Cn8UkR)m_7A^{V-Pa?s^*$c_f62KY!zDp zIC`Np*|#Cfv(gdipI@n?s+UZ$ACo=^%tNT-iiZGnUCb5Mwd;sPyEoAgB_)z01R#dQ zIlzr5%qH0Ix+hTuFj8$Y<<(IEj2nuRU+28<>lD#?uJ?SjzHuh4t}KFG92}^WL@&Bo zHfzF)#XS$%L<~$zw!kO1;198e&`8*=Nrcxfs=0*>z-18CyXiw=w7k$+9DN{|AU30# z3nd3_761m3d1Ewek4(sCI)x_-X#)K}I)j{8|4`uBe>2jYF>+mq!l?UQ|zXcPUP zWHZ)eM!x>wF7mj$;Cl-2JqM*1Us+SIb$yOuZ2FuVc!NSE>gg4t)>z1L z-syy!0LqpV;6AvtcV*}Hc59$f%BN5u4fk=7A0+o7PzqT&Fjbo{MOZokOgvcVL0f@c zpiVugA{YrwHI%A;1JVfeQmzU z%wy5Q16K>WKjh=bdY%J%wF)0`l)o1{zn7%d&Yl3OXwb(K#1BwEl*8M{i-m!>d#Pm9 zF;JVTZoUyy?Q<6A+mro$Ma1~dl5eR}GBvl`R}(=#zPJv##T4M5-Y(qRXUyAi&c| zNv@@9bT;P*(Z{`TEjOkJF*;_bTZBq(h3w6Z;n-?I8_w=NeytO99A~Gqqv2MD8Z@7@ zNz9WxnoqeqIRX>LL~6{FFethwp04M#!z70UnCYinW>zsCiPu56eqIZX@3V{rS0A%8 zJ{CMWZp6w16-;#&O}^v#pmLGPaTKeffRz}klhKMBju+jHuV}Jfxa8-PA%E)E`yZL$ zqsYD?2U3m%ixD16k2&lm%jYi)r|PgJo<6hhK%XCw-rKP+K%tLgU*u-<`e7uM(YF$k zCXn40t@fg3nn$oU&}vN+jm7SA0<`*$CkU;+7Yya#11w^)X|8YA_RDfI)HjwY7c==n zHW*Jw!KS;en;gn!bXB{i=utzl!+xBO{&R@Gb#&y2X8QucMpIu4Ah_|M z?D_^LL-AU^G!O~K3n-UESJ^;lte6B%z)}YSfqdM^a5+*+#*n3ifeDRm3u{vYX2Tec z0b*P{n!d#_VC7CAHk`uB4N3RBQrQw2qW3G{6z^GLiV#sxN)e)$#X&*99S4XtLO8J2 z32~``b{Ybp5Ah+<2I92G6J4 zBft4O@7y$l__nLqReuEd;z{XHXMZx{lWpztK_RKgg1{Quo7T`m8+1fGgaC+pAVUZZ z5ncyc{iO8R!w+7%*huB-&B0o{MqB41-B#T2&2Bs{HbTcqijcDvP6L~3J;QjbSrkz1 zW>-SlU24O1lYhDK;ij^e%7@TxJ3FEJtI2?>*i-M#FmrG@Xgy#$!5rw8;A9r8mT)(T zv2?LI3`JKqJJo@AzJlgvC`&PDw7GoGA8rpnj;ejI&oR@IMuO!hlPG*8D?I?N#loAF(w z6}}(^r8;#ThUkg{OEFU-3PcTMqOVpYiZs%7H^P>YFGiZib1Iwo5q3`3{%Fs>okyNM z8+4Zrp=))ulFLt}GYM=SvUqtR0)m3QWBSa>>7S1(r&rR6hkmWU8LOAI=i1ohaq8(X8DPWK^pjHgYbH#Y(z@MiOAIt>B*U&IoddXenJnhln{j zX4^d#ddiv1v_ejFldUo;&?;})c`<2Bc#Kt+TPfwpQIr@Wv49u}7?FA zv(sZE{iRGI97O)6&DtUk@j$L;!aN=7HUsX?q!5}L={X@cXpi%7+;;yV`T?r*wB(X(K z98(6qbE~PjA&{PpSIk`zCtVE38?&Vp0DvCIo62azD3ugga9EV6p~jP&21RvhYd$vP zWG#K5nyyEJeb`JLVCKQVOFv|$vt7HP1TK=p1uv%FQkM^wo;K?xQcNLA^tpHJ#zeB!vM-n&kDGp@R869{PolM_Q7-z8d?pkxTB?~C zFDBx7f1tl=X8dM;=hhOoUV~dBcJ`xEM$Sm+klno8*z6%u%rLZdVIl;tmNYw%% zh@$P!H}bi@X0^ zmJChw`F`v@6#NLEJ_C0Bkn}>w&cfi&_IInPX{NUHIaOft(4<3zRb;C0{e!ENLf=xV zI07*gjUI3GJMEr!=QF%%JR}|Lt0(I9c;gmOAR^XYz$zM_B7p_FN$$e)0KJ4EO(V%1 zw6d$T?beN;>yV~I8u@bnFbh=-ZEUC*S|M1q%H*((Z7v}#gn(a-l%lnI+$S@8U}9#` z7mURNv4|JVk}FW`UG@Ax!yUS3D3jPV7)JuXt^+r1d{qyGvrPBb2ZKl+0Re>$<>PW9 zVA*{OQ6m0Hn^uD+9NNF6p2z5d>x2XKzNax0Lg`jl9Don4n5BoqSC)Ugri6w zffekHzsu0Ij?>7d1{>{Kt!M(_S9?qU`cukgA#XFaJlgFrc?OM;ay(MBfg9vpyjZX>rC5U)x`<7N-O*A+lLsaj7n;xC zVOB4XgoB5<-LismTn&9wOJ}ux&yM+BCtH=X1JBfHuKlz+)e{d-E{C+Z-y#1n160Z2 zAI?di==c_fxuJydRw~a!IGFrN$v_g;01HnY+^ z)d53jG1}gFkkMODMDTg_?q{xb@=Q8@bl>Xs&UCvuMs4D}=2Yl?b&j3$fzQL%1#iK+ z4n#xWPT@cZ*^$H50S3!RJz_~ zmYMF0%Pr3P>!p;BE1{5~n*E7JV|PZkD}9ymVmcVFXoeNC^>kQ9qk}=qXy$xc2$|im znIFj8Q&R)wY@PV>jH3j0m|t_u&{!ikWOBn_SP12(ET=>xBEfz?%7JA6u=#tzKwyjq zwiS^mrycG?fiX8Ibfw8HSlz?Y*E@j>SzY8A25ZQh(9U5>ZcdO11&KiHxCV9$&Yg&u zO*;y2rmX`$hHfIcJpVR%)48C!$i%$<$sIJ!zhS;N?=8-M?fZf-Cx3WYI@H(buT|aG zFyyT^=@{&|EU^9-1VIb#i2yAn{(5~&p6`#=s)Vl|NI$c)Z^~d|u_3BaC7v57)nm4z zl*_Mc%*%xjzRyl)`Nqlp_tlH4nd_rP4uXH+@oHmR3W2p8z0H=lfG&O)I(Jf9=`3Nt z0P@mUS?ZjKzN(bt!v+Af3sUg*2?Tz4I>us z21?XCq9o*)VkDX}0u1yces9fkL5Pu-cqMrvC?Zwrel8N%Jtfi0bDG}&?BgRv>;Z;J zmIHW4juIS6=MBS6B>^|A1Yu@7sOb^^z}4A`VTWrKw>WK~dzGcDp=>*wbxb>uj)r`J zXp|anpj_WxdE29=&yJu&7!_|#6e3*BW+(vx<`KClUp_MZ&`cd^3dc8y27ItIk?aE6 z1u4Ev)btn7iJh$W)f z6BGzVO@PS(|5xyZBV)+4D~b4!0XEw$_(EI{Aywb!!!w+Ot^FnbThe{fBhoJrE6wEt z*l$E&oHA592wuw^53i#Oj&9LAL2cySB)s3wk{r##+vU2j9Q#5v%|PY6VPHp@&)5Cc zfZ^SC>s2sOv|)kvcHernJ6{7`q#k+r!TayMd}jUV;c9JUVrRYFhd0xK3ZvIs(tHU~ zB0q;&!VJPG3YjA!%qxHws1<4{NHa0BI0r&Tlo_dKtzH*;D$1tlK-?8xv|X<0B)`Z) zzv`4rv51QP2@6GcYOYh`c~@KRU+~MrNLS*`hG(Lxg+vFe3^T03d@dAFl7kj%BN9A( zc0M_l&c=tgnURqI-Wjku9(Ix1WIP?~Xhta*E5t_F-f)y1KHwiKv`}?DcYiriLZ#^C zoufLsKmoMpnS3PF7eI=^uvIPXz^INEZN=cm^wA)C*$n%5)-hzO(nRqSd*GP1VWtZR zkU(wq^FjV$ELvRJ^*J9^z4sDfe&`Ss9y$%qm0AQw@f$wC`@0Z#tkY3cy5T)m$k~PL zxDzjzkWKaS2k2LUnTv}V$BdCnV@iLvUu|TgnZN8;3kge!rib`ia$qpqpGpm-DjHA5 z@--L{aKSm0;e8o}U3qEQleY-U>^67WLOP@v6~BmAD?t#ExQ0r}Tia(-58Z4!962;4|K2sSs(~DYgF2eKqer`AVM;!k^I%)DRR|}EwM1T$J z0n`;4?AT~LT1eUC<4#|nW+!3dYErF(G#efU1`-d8_rHnPUvPFBbB1?-#rl`Wi0+D$ zRYTJu@i66bKOfQeNe z-#=V(8_-LcS?E5=OkXLdSiDL68+8S7a~6jlwp?8)pBdIfgREhdMR`#+IlHb^S$l0uL3}T zU8RbA@y3(gdJQ<_+)sVzh3DS();GWL(MKM*a{lbvi39ukD-YJ9l~kw`h7~9ZqD@0N zqF0cJIc`VF!q*gCYN{d>+~Ys$HLBu!VRcs;YwxRozKN0ok zem7>yh1|R6=D5<2_GFMI+y-x8#mg)ZoP2nGt^{L3b>MheplxwwDED1dz8b+W_(bjN z_#9i!qJzbL>|sPlk>}rS>b1t!K4%cdd<<_5eCDmFva~1bXYgV{uVWo{m|zFLqCfrS z`yWsZyl_xa!&H~dub~(bBCTzFo3R&OfWExz`mbUS+qb|R?v*Y|&vtw#mm5gfv6Zm_ z&X+t9ruT8dZ4!?Gje}q5zE8+|*(&W(zIg=lK;03dNE4gg#4E`VuSqgWU7%4Xx&stW z+Y0S7r{|{Y)p{S9F?v@iNsF-eSXBB&=xnS6e9}#)KzizR6ud%g>h%c{qZZ0sv0DJb zKtF;^!ntvgva7cN_;h-|V^?y1Xa4!Kd-fUW{VfC;+ff*=MG>zn@+7t$A9`xKvwudb z)Bt26D4~*fu`iG9!dr$9?Ovz=Q=l$o6*0ev{=L3RRJy0H1MH_n4-A48V{{&MYx+S>q`3RG6S4N>q+omR zc1P4h^=^j501AXJLO##~SGs^lzx@fRUM76?p)2>UuWj#4wNUw2&C=#{&|guPx2P7fabjsm!LvVQh;jFK}Y}!2o{b|kq5X&&x(l6=^{*^{3EQ4XNI7lLXIF`;w1M_ ze@uzl{`5A$3gC5pc!=xa(CG7TjA7Tvo}vbTkqreL?ZJimWZF$D3Gj+B)5^Peccsh{ zkyHScRLOFFs1Wk`?g?iG(phl06{@p(s2ZldVTIbe*gjM!P@_Y}ht{f>&M8jR*?yuw zfZD;b8?Psp(e5r$$YjAH;jKlA|429xbO@Qf(&>A6nUi>+P%!_EnIFagc|pdV1HLTBxl@LJD0aRmD{HnhDVE zRqw~s?oBP%^mcCz2p(Wjm{-_D^=!a}$ZLGbN&5muAf)Xc*L6-=N~^eSb#72rtdb9i zS{)lYUq=y(RoMTBTy>IYTV}Q9h89c3^`pO>&jiEECCAs8nJ+6F&Vt_>?^g<07CrPt zSo^cN+;kRQC|O{q1t=&-)2*iJ?+-X~7^G2SDeMN!v7u{+n3f1S+|eq-jiFLLBEKV% zRpUp}*mM!Bq&NO?R1U3bPe0DB##;|2F#Ge@f0PgL9Ny^IK@@wq<45K}S`rkyA7$yD zk=<-~0=?-XczVmpjYcRpK1UJ{TZH$nv?t5OngSNRYcnC-alo0L^ovF&o*H2G>ou4_ z&twV^M)tC6Dv_BNUDUU}?BacWZ#Y^^*9+!hKvlGq8R##=Y&i>!qf^xBB!>TC-wSHn z`&cVcNyHA8LMngs-O7CHF@MM{mnT!M$`4hMO?X?i+5Q zvv($gm&{PRRjtK7mhcU{xUH7(|J1=6JGAmss%fX{`#bZfl_VY+HB4YMW~FVN1yCI* zVn^jB?fer&9`$!7nh)VXV1KcjR3I_AOMo!@<4C} zA3%_xxQV1lkN`!Ik|oivO8zi!e$b{jXfiGFt;z(t~>)+eWh^!Vn@yKj~|Gk5OX zxpS{<gU!u(nmxC0uhwJK^tCRJ`4L&FMSPo_tbAgbOoP z!%8Xc_hWslGrYw9!b1!(q`FyZj7KbDk87wqe*EG;#S8*KciMuT}Z3vFH58FH1H z3*P&F_-b`FHXg3RxF@T~INoSA7A>E=_uKvOv55m)V4xsFFdM5jI_@+mj(FNPT;nayTj!wmIhmVob(Q|u4=3lGt; z&E7T|<2l(!_nIo16;>UsU?s7mmE$yE){PF%Vepf0iL1*HiM(;3lUzYk%0$T1>f<$^akkPW+Y_2@d- zIM25}O?vvoSgS|jCE}=y{GdB!bsy?1RWLnRq$Z^p@^n+h(fS4`+9%sC! zV$2nP0Q_Y|J!#~plz?oD)NeC`N8THhRNI(N8ctWY_W+T&_0 zE$8NK;SiX*$}s8l2p!8|@EzUk{O46WnAN;WcMaysJpHC^0ztmPIqH)fE#1p#@~hnl zMwp5*ex_BTapm%7L}07 zBrM2#OW`)>0}%DQivm^9hX$$s?>W(jla>D>l}qo&=8L!A4IT7hlm(^+u^Yo->Qx+u z6S6lmD4C8a_?Ynd{q5~IdyFF*k7HG5YHllmvYg3h4Hqm(?}GA+L7K*}Z*DOe%Fw3p z4k-6y#{QwC!2jZI=DpeJK`--k(CNW7Y|i)dH$WM`fFZ8*!xST8c9C$5Eh6OPnEv6=3;w;azH8z%NcDpd z7?z}!MIb$)GJ|sgO%Tr(&b2pYq1^f*!PG(5b6H!@}h#rC?z+R z;l0qjtY8iOwSIWEN5P>}iOHLtpj~fKc3-i}0fzt;yh4c4bRwhMswGV=Pz2-#0Uw#J zIsod%QDg9X@GNgnP9L;7g+nd_oMstvZrA>izp1%}>`YWM==k2co( zj1Vv8h%6`r3P@DdPGqwPps)*pN1?+&<{Bn5OXO zC+O2YRt}s7N(u?5!C-YY@qoe^5>Wyi&Mgj^>g8%ytnepS-z={H1^b=}rg)0HMtLv^ zGH@}&S3k!89Q>IqT_bZhCe!Mb)lWmW;SkTRg6k*Cgn8SUVK&XI&nDVxO6^QW8wzTZ zmvj&V3JTQG?q6pnz<=oToVkq_c_bUvttc3G;FLJEH64=&!y&d^97d-EWNu~h^0l2q zC#H5Qg>5Y!@BXo)4UPvTX>JY*drm)WtY8WU#e`NXNZFRLTNuWCao@SKCqLHJGJMQs z8asNe=W)qu;|_^86m5V6D3-;I&fe;{d>9tQr$(SJas(0{}sC{RQoz>Qg* zSTR401PKg?X>Hwls_629e3IRXZENdb;7V|2Fe_3$Y{#a8sixk`pZX+Zv__ZPAmdD& zqufvDDrq3d_Eey3)agJuVgJ6v26a~H&Uu?0l&m;PFYM0rh5Kx#5=jnJL1BeAVXnkc zh_^pl;@~hMQ7A#2Pj=+6drxXY|L_kof9WrMpw=WlhAA0pdu(b*KZA|221srmMBAS@ z+|uZj(DvA8Ba>igLZbf=eTwn2Z5zst(Sh}CDAylw20^Hb2?!i`MJLEFN9qNqDR$#9 zUd6T@*SnC8J+huq9LJ$FVUhzVC7cnCkSXO6dfm()Uf>)j4=`rnn1$Rh{Q2_;8gX_N z_8=PhB`A);q!P5vV2+DF_z;!}l82nRAcD&ZL|xqY(1X~wUUitOF!RApCJwqAXabgD zkmtFtIDkoq$z&z-5)rKI1AAnLmCNzJjkmUKsHa8l;%-{1p@CfGNT}G2x zuEuNpfzJ@W8^SfD2rrrjH!t>>S9if^`fq`PqfIRCFl1gxk{1+)y=0MsKY?u|(qJPG z61Ra)oxT;F3I+w`3}GoKh|@23t|06~kjpKzw1pdnElC-NXVP`YIls(%f;61s_utRm zwXWfydtbwABNAPy zLuk0x(|p$!ZwHPxE`^E8*I@$}2akv!Gy7@m>Ya@G82T`EvfyDe|L8}R`eB@HCL0pi z*T}DEjiqJ#3om3~If=`UeenE+ofXaH^;J+RKwp8C1soTUSN{#o%=rgDz;_?}Jwqwj z9}rl5g<4mV3fPCeiS)Tg(K=4v)b?72r}yqPii~4fLbfMa3f-qb{ z2p_b7MT4%(EU?h%%DA6(y1mOq6f4bsa z9_0z>p+j~C5OfULUK!tows1}EoUz%gRnWWYt#{kY<1ubKY~#DR$#*DNE-kSF~ZHb=tD z+qa>6nYM4;AZJN=;-XqwTj;H+!UhS4_FAdOIi=g`WT()=rd)T~J7>WLHH=Yiiqku@q6)`}l@- zX$qqU6g1pbA8RO~ZXA8qI~jiLD~62-%xbm{;7|LQscT?-1uud@~C{Z(e61h_gG`n+69`cWss+K$RXV z{JkVAV)i&m5cJgH_*gJQm@w{z1Wb}21|MO@1kkG|jmblj%y0}ut@tPW9)1?5=Hqv z$%DtkJ{hNhT6U?(v=mORDc2W}>)m42U(+8f6VeK}%o$!=aYLRUmeyGD=a<&{0f==D zpH42J!=O)b)gMq{R!DMpDU~>`=_pKA6vDot)LZJSR6}J2KHJ{m29I21wRVn{K{`d= z*k9-ONXJFJTUk?o1G*Mfo5mlGc!E_zA@>GQvZz|t8feuqK!-PZ4g>iuy>$%eb^ytw z4Nc)2P{Zp5ZeUrBTQ?x*3dI^Mj)Dzwd4xHQ#)5T>=}2^2EbCFIfrc8C2^?-`wf)ti z(2!S96@b2~O02g-mD{VfLqY*G>Sd>)MD4W|8slPH@@8+jC5L41KxqjSgIsnU$b#j-3UE z*q=>%v3W0ds}Y`9p{apR44RsCahQ}I*8owFd z+Z1p59rek``=ZI{|7pG>wm}c@h<~l^P}~3C_CR}g`)4~&b@p{BU4PtN z-d(=kwf)F;ZTr9V9_VY>G2CzJ|J{Mg#1n%L3^|8(4c#|%ZRr0coyqa!!^xLYsnlbs ze;TeE)^^tH{K3fGBR|}AZZtOf+SsMBPmO(jw{`dE?%&_z-Sh08ukCqx&p!%$0cWZ2 zK7H>AXU{(~oBS%_>BXy03UtvO`vfLf!u<)bNvB2i-!I4#D$q@)=6->DoSlQ{MUz|E zBCZcgS@!FQdx1a69>Z0{v+T==doSXW{1iJt@Q5qMHJ`i2aG%B%#dQ|fUAP{_HG}J% zfRD2j(pbVXrS*jLW7aKwk##}N@KNb?)+t?K?b7>LyKKVqk6AmvpS4JKwg=2{yR?Y- z-vB(~@$E+d+ad1X!o8L4LK?q^cmEsLU&^>}Z^iW$DZ|E*_Xv+?f5x+5%Ck6gm}MFM z7wmRir*mPHFZ+M-Ol403eiYBI;5iA@9tJ)}k;f?B5xfcU8GZ%NPhv(HV~3?ug#Q9C zPvHL7tegKxylV&S&k46E|D>Kb?*!aYc@g!L$$#$|M=$F4x82i9+m<{1y0ME^s zBJ#sCC2{J|llt@hI5(Luzj$xxdeTKl?pk@a61xvwxR;KKoqu z>Fgh5uVkOhKAOEhdvEq!HlFpY#@>GF?N7b^k+(nm*2{0b^wziEdhxBled~p{zWLVQ zymI!H)30P+UUEI6V*sW575%tLG_pudwAQ8;Lp1P=#hVG4QLc7E1f_)uum;RE{ zvOswSY-Ls{!Rk;=ZCyQ1jWnr|XmhNkHQojVvCgjU?X0J_kL~CmNDK}oQ^Pw)c8!kh z-m`an-~NdM2M--4#bR>lev98Rp%0lRsH5z}^d{(gPtL4AA3-p4>Rs>tjr)K7zV+BG zL$hZV*!lSj$1lPw89IroXzbu*a!OG~pJR@Fqnc^r$fVX5&>E(uPbtd>CpD=y{RIoi z=FCj!WFQ#S*p$WwLqk`Ap~2}yMB}QaOrMHqlB&!q+84()L*0?94ct1IoJsD#Z88`N z29_rkZG3z(sP#_;6s?m&ol{fFiVl>X)fy0$ds4I*y^j&(7sn?R6k<88(4nGf#3=O6 zN}+ZNwND48p}!ZM0VnFpJ$Vu}%{G2t1HJ(X>fI{X= zsmZmW^pKu~?IxdVHTVi2uT^d1M}^d9LW!$3tDKw+213E9a4@3T)fGufYP0E~h~`jH z0Y%XY2X|4u5C|ovG&?=*$CDjT5zUEYTmmHuFffB+YmUKbWqDfB96(w`bE%^TCRYrz zLsK=HJrlYsq7|v5`zA*x^vFOE@g5QHR#%vF@ZjW%(~0&=Cp2dhby9TQ#7ZIkvEz@% zeP{`}c6@S$dM=QaSVr?ww&7q1pXI{={XKnxzE5wbP?KSle|Q>=xT&db(ts;4UK;|6 z2Q}7r6)OkP8$2poVN&wIq~;7Il%!@ur?evD>4Y+k?4NPDI2`{a63f#oZc~$XM^m60 zXevhCJWUbJtFCam`+#S<`_&bh?j`Dqf$pX1ijnSR>WYc(0d>Vp_i}Z`LiY-FrGV~@ zsuI=sv4|EHfr}BXNdzuMv`Up}_NI4G#wwJt5@{ z8R=e!GSa;sWu$up%1C!rReHn_h^Rn~Yg!p3G*Nq|ao1GpZ&6i?G-(lxq-J#DVf3~w zhf*lr86qWwZdH|SqP%gy@#Kvo8iZoY z;!!;FJuL|JP+zEXrImY8qc+qZ1>W+LX>{y#XGGhkM*Tezt^HP@=!7!>??96O0Euf~z4>^WX7=38X%|i*}o;T^lUK*U9 z4QcXVdKP3z8cYWeo}R+kz5bgtiUh(ON~JpkA>@!ky>Jt`AiXUzK|zRE8bAPmdm}m& zNc(jqL5gX7Tq_EJznE!=%B|;x9??xWP>{Q^E{B6q4^XpRL~9lda79UlhAA^@tsa3g zsz45-?7(DH>A~DcCC)`6v2~Q2YVkCJS8KDc-cUDouIW&&Wl+Y5)|)HAV7_UlX?niC ziutDOQ$tFWu$BU0?wN|NM0qg=;EuIuwB~wr|5~(w&VRZIWHHKy>(X{-l}7~lio*o zBl^-4>I?)ow0CeSSH>hEBahS+)jvp>ry}O+u~y|_RN1Q!PR#Zghn}d`hOxNwCh;Sn zx!7jZwgG0Bs&(KtN?1z*uSyEjS{_ehDs@L~6lmS8US(_ufjtOt3hY&{auG9*fQZ>g zFiE`HPcRgiAQ%c9AQ%c9B$xpN4iO9m4igLoCJBZDQv@@Jz!8F>z-p+H8}y4TQriXOB+M4uL+9SEHf{Rz?i zc$ibQ?Q76y=|MoB6Cr}WU4#hqysGuAfzH!|0KFhW1iBzX1bR``de=ZN(Srb86d?j# z5+MS;L%jz1RGxWCG-;NMCfAJLm7j7VjDZ>dv;AOH`1?Vbb@qEAGpg$Cs*Xzp_Mv%dfsv$3)Yxv-Jh+2gseX+yl7 zw_?4k!#h|R|3)tC+K_&cNFOU_1Ki)Rr}%5Mibj~TV(I<4u*3?br*dJLC8YnE3maIq z^iR34k(J59F)Y3{ZHTu^voiVjq%<9@&G=X@?Anli5v4zPVd3sebEnTNDGf7?N^30E z6={vN#FU}T;@s(ZWnyM7Ge472m67?GsP%f_mNo+JR7TIF=aqq(^law*-J|IPnaLBo z({uA9OX=I^W>OdCmr@rloz5t&(U{V$tiO-w05?P&%3NBUyD+cBqOoY(^;zc1r*2t5 zrJ?8Y<;&6Y>7_Gg(|1LYYhUAksL;6&&!HY^y&C$*s`c{R(ivrcW-)W=&djVrl~MMj z&u2DNBWkrCI5W4Xzni#lYUy(NQbs`pDxaBO#8-FB&t@(uOJ_35#K@SkcOf&c1CQwd zs*1laL$j zMtBY|BPeGY2NmW3nL-Wb@l5wiC|3q)wX&!vZMR7G#_uDWQrIeo%@Bu>>LpQc%1c4o zlztR7xK%AT@4ng;aRV1AKK|xhw05Zp3AjIdQ)p` z%vnX=m(d1PE(IsLsAmwK?!@0&#N=B>VS7;O^N6KZzOgl^w^-4}XOPz7rtc(^T!OBi6(w83zXgPw@oy2hrIELQxJBee zBkT6H)@??~Q>ei^`G$66#4q~*M#EOWM-WMh*0MN;YJ%vj0OhkmPHV^f;Ka6a5&SlL zSTS_heX!0@f?eV=7JyWjq>2iwW+7IC`Lzx@!VTz$Vb%l+5JBmiF*aI|YaHWa8#Ko{ zurt(!8bjI$iESUI`~jB0I7p&)!|>uW0`0z0)N?ob$zJGB?L%LhKz}%hHaU!OKLv}X zw?VWBNiSre55cOy1MIu(G4?_B9?YtrVt>mtw!&pdk-vw10~{A;f5%>8-(lZkFJpiH zv)IhT4jfLD7jipX)j6?eb(LLXpJ&gqr`a>y1(y(R_~X1|el8Xph>3e^yhFbacIEB^ zxqHGmoIZa(Z9H%$vy?WCrO%(7O-qw=()gTlV(#?$wE5ry2=9e?dHl?rJia(bpS8Bc XQglzIQbW0WGIxjiEcVqP&vyPh#XzB! literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Italic.woff b/katex/fonts/KaTeX_Main-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..1184295def56183abcff437cd382b3b295a8bac0 GIT binary patch literal 26228 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 X(ymb24FE{wN(KM`00962|Nj6Ffm3-< literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Italic.woff2 b/katex/fonts/KaTeX_Main-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..aa05e142c4293315104e02adac9ed65dff454deb GIT binary patch literal 22748 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Regular.ttf b/katex/fonts/KaTeX_Main-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8acb365453b7590425ad0fe65c41a5488d3d64e9 GIT binary patch literal 69520 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Regular.woff b/katex/fonts/KaTeX_Main-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..9f8228fc38b5d404b5573cad5b33f28dbfb47cf7 GIT binary patch literal 38112 zcmY&eV~{4WvK`yDjUC(m#F!7%}1h{Qq+Q-{h4Un1O&ok^ZsD|6m~2r-g28Yv}NgGXVkunF9g> zGjc=jfi-q>Ap!!56a1&4`v-0i6~q8D2Xk8>pa@nVAn<4)AlURZw9PwnL+5|7DQo{U zQ2zsxxs9jUza&I~fc*aPXAtV&0zej~hX2+N3izjC|1Z$nU9~O#kw8EpcmI5%e;|WK zheWZkb@BM8YyX$aKOI=WN&x4xjlJ

    $StPWZn#W37p_HT3wmZvfu^Vu?Ux-~#Oo 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 I0ssF14_>G65dZ)H literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Main-Regular.woff2 b/katex/fonts/KaTeX_Main-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3f71eb7e9c0568f6144e45c59b3000ed3dda7d4 GIT binary patch literal 32464 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
  • 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_SansSerif-Italic.ttf b/katex/fonts/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3dd767131a57981bb2e065f4a34010ff3f3ad45f GIT binary patch literal 30960 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 Z)y>TXO1na7HvshXLi7Lu00IC101r~0ithjb literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/katex/fonts/KaTeX_SansSerif-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ce19ae03d50fade531801d77634f35ed06f90681 GIT binary patch literal 15024 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 G0000sx++@$ literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_SansSerif-Regular.ttf b/katex/fonts/KaTeX_SansSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f117cd619e99bf1d030446c40c725a1e79c57b71 GIT binary patch literal 29812 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�Tf&FIRG3nmxA^*I=U?gQ%JDE@ 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 X9Hqzl2L}4G*Z%BvfN;&>#diKLsZO8M literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_SansSerif-Regular.woff b/katex/fonts/KaTeX_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..6ed98780a7a46c0c459d2f455fff7ee01954d3f4 GIT binary patch literal 16228 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 q>OevHWC2A1t2IAAOLP6L5Pb;?Xo1> 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Script-Regular.woff b/katex/fonts/KaTeX_Script-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..4a48e65f0de679fce0ca17c32f8b52bd3de33fca GIT binary patch literal 13428 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Script-Regular.woff2 b/katex/fonts/KaTeX_Script-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b0aed195ca3be06a66c66919dfd66564882bdd81 GIT binary patch literal 12064 zcmV+*FW=C2Pew8T0RR91052c_4gdfE0ANG_04~M=0RR9100000000000000000000 z00006U;u(z2rdbi7ZC^wfslCrDgibEBm;p63q}A0AO($c2Z06*feITnRt4M`x?$r0 z#)Hpxq9`4l$-w{D11dw-?oS7RsD?4^_ z;D)ZUZ+5D}%<{c+eKToFX?clCyaY!%08}jGy%P?dV*maAb$;G~H}gQUp0o~Oxeh~x z_79y)W~JqQYy6yfm-W5r-UA7KLI#b`%1+dA#J*Wp8re#tiGoyU_p&RzdEBy z*YcZ|iYZ{bm#XTl;tC2bYg!rBHmuGzRbmC#7oHN8PKmIA9PLh5GDo-0w?D&{pVwL0 zzW?PVAB_(DK`^h_?XToUU7Yuz0}sb)5Su63ST`>D%8yoI0@93#ru9C<0_vDFdfZs*4`1bq6#_oxF#6$sB=>w*1$ zVD8_ibol7FnKL_v8Pan{qVd1tD&AumDXj^w30I{V05MoY1ii=1kN^|#>=9}BIAor& z9k*wnoEELpEAY{Y)8t-(hfCk#=#dF~;)GdR86#rof-k7ytOzrtpD_f+LY8~eIUAxo z*rkFu-HK?tNC=PIRL0#<09uf0oPZ)v97VB|#44>l@nJ|IS~MnEd|6DD6~Mk2MtplH zq`GDi$)4D+dCQApOd3vII8pJ;JMoAdKX(^bhAGm;F;)a+J{o|)1Cl0lw}7B?BFSqe z?0s7l)7zE-Md#Hx{zu&l7JFyVSfq+x$fB7hZ=BDs~uo4PB}EG?Tu6e+7v!9 zLCb^@qR-KrlVjA6f=X<}EQ`h>&8U+=-6QB|)bS2lEuT59MEi%@&_E`+j31Fbh9>S5 zASU-%#DaoYPh$*uLX1*F3!n|lF#MzLox*4DOBs;fY9dYj!+$6KFqB ztHEoR;4H+eGM8$A=r-2rdg&ZM-+(tLHOer^-ju)Cf?e z1LO^kS(JQSQn8da_;#N6<)`i^*(`eMCkcx~Z|lKcg-BtJPf@x+%GrsBx=60@n-GSH zP+**BERl|C@K6uc%x6V`9*hR*;)W6`>`2s=B&{{zXh@Bx(T(_9qQtv^#UCe3={HepH%r>5Wd7 zz;o26`|y_w9*lAMm4Zi0-li%rYfFbT4=GDF@Z{A}MuJ)ly9E_AzQOWy`&yBeg4*IZ zA^H-CCSV=&ft741?ek9U_2kz9Q8A!5I<=e>Tc(>$ZW^5#)Er=5)Rt;fH|bk)Yvk=B z0}fi^HtxAoaPPw1eL=Ssl;~3U#L6U8FN$P(Z)Z4oA= z)kaI0neoJF2`To3xZ=rXvxx$rv^#{r(A}CY60pd~_(hN_4+!T0_rtKhj#xN zJAy|n4jd7182glft1>ofHPMAZ6NwW+sadAj6-Pj^6H`iN0>TqMktsRlf!cW(f$%^{ zhq}^iedN^82{1rrlQkZ&F*mx)4J6#B6ajx^euO@b2c^5^r!vJWCNXNe)Ig~>>(B!} zm0%y`a`SbxABBeNh&5isuFz>HNz(Ym9d*7Sc*B@@Z$f+2L&6nhuvO-{D02|Nm9!QN zI^|tNbu7#v{JsL`bU9F^3}7&F^7Vt7HVH0WixL7mW6f|ARIGeO*}+|RkMW6{1HPf?mI2S*d6yQS+-kqXNJINH-W3QoYXU73V6dxD!k;@YCx zξ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 KZqM2T0002O@mFpD literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Size1-Regular.ttf b/katex/fonts/KaTeX_Size1-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..37faa0f9fe41ddb1c9a15725f8ad4856599193a1 GIT binary patch literal 12916 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Size1-Regular.woff b/katex/fonts/KaTeX_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..0832f7a468852ced3080993f4a826e8ef608befe GIT binary patch literal 6696 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Size2-Regular.ttf b/katex/fonts/KaTeX_Size2-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cf326236c0e940c533606031140a116d7ab707ec GIT binary patch literal 12172 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 ND0_ALP~7f1{s)AlT$TU; literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Size2-Regular.woff b/katex/fonts/KaTeX_Size2-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..14f6485abb4e1483c0adf14e93c7d838efdcebfc GIT binary patch literal 6436 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Size2-Regular.woff2 b/katex/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5ff7060676d81f040dafd77ac0ac9e68eef20767 GIT binary patch literal 5392 zcmV+r74PbIPew8T0RR9102L4b4gdfE057Nj02H_Y0RR9100000000000000000000 z00006U;u+!2n-3A7ZC^wttg}o0X7081A#0HSO5ed1&wD1f`8^0+P?3gcj9H3>K z0rCHr1A2&Bg6+En-;@m&65x6X^o+EQqL`H%8{<#iR8zfIj()rtoxrgj&tazE_!EDC zkZ5u*$hIMW+YAM&na*= zHKCp?h6;>oy&nLwY5@O_wtiNW;Aw7n;5&oZ7tI$yz%GP%8 z#SEC5eVGnotcxHqKdl^+5KwR~)p98Dh$w9A13|5<0$^C~U!iq)Z;I@_nc7K`@GYJB zt@fG=Y);mlfK*KgOyzK`Bp_Dh|3BBKz4vAEAzMn3Q*i8oJSre#-n>k5^4=RtN}0^U z%m+$EW)Wuo0+26|0?yy%0}J&MMI%?q zvbu0w1kU~HVlF)*wn2w$FUHUV_STvSUOQPj1 ztIU2mmd3KN{LStOCHoVpk`d+st_n-T-aX z!^0dJ2oT~`1BDji^%5IC^$su18PCUWK1Xlfm3mS6Dta=L6W+`v-nXQRSMC-#SgU|a zh*LO`;q{1CDvP@lNO>lOP%Wexk_xH$oMy>E?DY-M&Jw=h4Gc6Etab~*@l}MA058FL zpCEAq3-ji+s9YLUnUc>EK8Wu!%*m%72UUdslj~NUl_=QoI_6iddy}FiK_T;Pyo76) zC7kxrIUwSV9+7o`cSNmZ0@2Yy)0Ok=9trN$AcFMlLB{z%)};awWafl*ejcsXCq^%7 zf#Y!9+Z!Yk+CMF2boayz5LUCs#hPegEDtM#<`GaX(?oQ%sC6SLGa}>QVk<<{+<=_5 z=>_U#O(rjTXFgr`4GL5mJ2}J?kqk`%}6@=O<8`MA6WyPAH zWL9Yxq#Cd|HJ-kUmCZ-#V%0W<{ctp7%j@{`?a_7qR&)o|qN3;CJ1TI;kR+h81PIko zj5^lP7&-I^g&y%;?o*Qp5{!gXLlUH^oY7?6 zmW^cHNAjIdPtNI~)srbnr^86`-B+1=r1NnnCxDpz+Eq=M{zCZl zj1Fw8y1n6gLo&3dsmeZJyoVZ6(4N_ANX0HgIIp;aG*s%Qm(*$sq;q#XE{mtOJg!c0 z=6r%k=u6jQ}Y;M*j}G`Td1JQStI`xwf+Fc@}=NS@u!b&-dms$}=8GYK}>q}y_a zm=mZXQ_y^~Ho|~gl4n?k({8JZ7r=%_N!6oKvpLX>C(cPP^k~48`h{FDgKv9V8KvhT z5KE9WVe**6M6W8d4VF>YhsW4z&%A?{FCjRqySx%pJ^lck@>R`FY&l0rPZquJ%;5Hg z{+21ktF7%#zYk2x4ChbYL^7J%n&|a6GW8ipdo_(rg4$?ToHf8}e52U|(ya(2>o4;w z-gN~mTN2f|oKA+p?u8}Oo+7iwv6MTgV$rM)y|GtJJ0NQT8)7cKXIsv@{6e496nXZr zO+fN5^tPo{Ra%V&>B;ix^;i_06RC#e({U;6C>m7wvr9@Z7Y|57P_iye$EH@3Voglt zl@5BOOUbFCY|uj>KQIxHHHC$Ms#Cy5K&L6}2^e%TI1(^v3TFZqogA(NY?{KIfJ3K< zCjpnH@Fw8V$>K}Erz!l2c5og)bxR8&@BXw8iijPMygMUc7vx-n0F*=n)I>vSD|Q3D zz6nO631*@RR-y@ZeG8mK3*1BtyhLj#AOG)9^z)~6^s_&2e5x2*<)jZQegepHux?NR zGA@DsHS_@Z4*^LF!jJ+$w4epkA`d4G5S@ZKHlj1&1Vv+sSeA`2Da9&rWl4~;h0%^) z;TfAlRU6dd;Ylvu4-1Y|-9e;WtyD&8)f&AkIgN!)aa)52;sF`%k48v>LdXJC;%9*^ zkYv#hY{HIV#}AnjnqV{e2i`zc#;lgsBob(U9nHjt-?$qNin2ZIq3 zY39x_SK*S{(*@i?5EmmzW`vMUn382|0)9=LQx%V*x|jCif=Ahz_Z;j%Arb5WxW2z`y^3)v$A=eJW#@%p>yXoegkH41xeD-Hk zmCI)=osTU)DWdrO^*A?t^G00OSIR|5FM#TK=3G=DO=cy&yT9~-56UODAssGLOK~}$ z!)E(a1$xPw`Ukz?sf9PcGP-~HPXesi&gUy$L0A3cqMTpm-M!>{Zak(hdNDCZj`RcT z{1xM5t4^;i`Na6P$|fb_yeGK4K1NY>BRfQ^xMV%%%g}!wGfx{Th<&}Mh`+r zrxiY*xR3|x{XmTJL_N~ih45;~CWM~P^P&k*r-024D)It%Fi3PXpn$!`t1I3TkoR}o z(cKL;!)ceTI@gZF-d^?7Ps~jmr;^#h`hl2YuDa%s$7F@8^nKy4;n9gp_@+bp8Vx+4 zNn*Bbn2O&C5vrfE@PRssS04wCA-$#TxIN%}AX;^g{~;L%Wb@-Wh_TJF5IP6P;#G_u z*!T_rYeCInkWs497{Dd1+)6P~N9sWCcpa$IR0#D@_~5@xKe6l%o$q-3t&4Fi9P&x> zZ(2UR^6r5=cFAZP0@eQjhiRFZ-K0fZ9d$zHT^bJnbFO(lkk=Tb_aFr1xQ_5hCP0Yv zE~MEUs21`HW2oeW0|uPWeaYT$0aL4`<0B4$ao3o}TXWh_nHH22tpY-b0rm-!&+%Q< z(HybySz!wLveFwed4r{37@n{tp8pX4W5!$N_!NrMr}{*W zbxQClZig0(FxL)ouTBk4TRp^Wt{qVrid(jHZ0=2ozO>1EaNlT|(x+6|#pHU>)vM2L?j13nAOXuVVsSH6nV;|aw{?t7!HdRqs&Z9|x4-$dGF4lc zck43G=j0zQ=(5Qbwyqaz{F%}Q{_?FnZDD2Vuiw0_Q2LY-uluwswW4yhjC?N-BxD|6 z_UE3i(a!k%xD`$bKEZ8%bwy>W>$Ka;vyJ4tg2y$bcMoJTyXpV`%`h*&m(ASCUOvP8 z-~V(spL9**$dwL#wMn=ih%T=PfBT_OtybF$XS)2c^W)2s_G()q6>+nlDYoi9zjl`5ScQsOv&zZs2Xk^V=PEpAO4uxvn=p@w1_%Mg@XmqkvNJ{ z+8OtU{=ovxvQge^F^S6-~V@9nbvI$ef?)k^5d}Cu@4(G^MVaE#;Sz5 z?#h2eCQt7yA>#G$pzh$fGOJ~S`LdQ%KN1>+2K$E*tAaPT*=7>c3`4eUSp{;Q=QptCdJzJx~DL;)C4gJUnC`#MinPy*Vwmm-mPI7*_?EVZ)VJb__gk= z{tiJb<&KsonM^GSe0e_}n z=Pz?NlL#TWDOawukrX{ftQQ8n)QoMY1VW)dy{NFy= z*6QtT9s2n~Qy&VpF?p`Zug82e2~VEptXtt&rJMZq!iNxzn0!L1rHcCF1sfXd*g)?WAXU?9x zfMI;hTPMFx?74G}qQmvmpkY50t=Ts&YGlU6HB+|Ec`qb+lx9yARh#N8Xz+UzAk_q|2 z#g1%;%WQY7SF`!wX<<^aKbo7v?DTYf!2VPe`D&S*=vG=aY^7bNBb103`LwCu_bZ;& zs#&|KbolWQlb#)!uDj47Q7xQ14eeb^i-g|juP8Xpm zk0+I`S7>@^)+wfxK8{lLsiwEuGUl^+;pniAj$y)`PL1j4yC#uf=;-vz3NMF8{7@+K zcXk*Ak?Gx|CQauZ0kuWUbgiHqh?y|nHhzM*4exX6^#v`MIDOUpRnsxCrGUAKBmT|& z=mY#XrLHfJ0by!!`u^~k1+)V|+VhF@4m$&*I?BM$3Dx6So+Y5pxYKe~)6mlpNxk(gkLWC(Y-*4l!s-tJh_P-n|LHcFX$XSwFv zNn5}(0s%mPS#veAHdU|tVj1&40DOOHlLYSaneN$c(aT&V05K>)L@Ammp^^6r8eU9e zg%gG_4o^U1^Rfm{%G8H5+lW>s4qoy-eutRWrKVdj5g1wv^MChK72IdKwr?=|0@X6N z7ip>JNE(kcwwE>VUNbw5I@pD(@q134EcC}HJHXHV2d|CZMB)Kx!~jW@)?Wdq19S~) zOavgvHXsZz5@j=?%E}r9GE^B9A~YKetmtpB&|$v8L4i$E@>Pa{c(C74B9#0vrCNld zahPaiCH;1jyIF(4NY@z@N_xa#kWVifETU<*!6B51nv!1|3Ob0%FqBB<_D!i?6U})4 zEC#Q&+4PgGMSjL*YQnBHb0+miK~=@qsNxV+SV+it>D7T2=*VAhFJP0Q-zo@VOU)0NPb)Lc(lb=nV zgJ0^`LD!JI9U!lc&A7Dw1`YZzwYgI(xEU`iANSqBv|>jVB@a?;8fbDU*76xn#h@_c zU36{?JkW+bXF-^Q8LS+RG2e+QVwEps5;4YJ0ddi($BQE#4}HBIT+i{Mfe^1 z@%h#6biYrD(SGO$jL`&K(pteD-&B$n7WRNoYR{?MI_+1~;+kvf%}TJSyi zbH*H)6!sQ~%-n#Yc=e-@*O;{`slt^wfX- z>y29&tGE;6Z!p0y$9^Wt;H{O}o>pYeL_=M(x7l0M?A4kc9BFD2W%KVf@eJea^=zMb z(efCpWXh9X!5iwh&#Ki_*D$HNwWYm;x3#x7mzVjhitu_$ODf96i^_Vra&zw0daJdb zw{5PJ*DKDSytw0*|8{2gONzW^8$TdA`_Ie{imm*>wl%UM$*x!DU&@`%{bYgV9{2!G zaJB(ji=ovItv(rAt314=t+~0Pyn>aII>8mIRohVA+Sbna6S*_CVmGw%Hqx4V6Ehtk#Nh*j--gD+8dLo@L^M zQdyk1t;E7{xrU=I&V_8--q=<|1WVN`o=QbHHm*I2#1p}t-Y2=N!tOmV;h{A$_Z?lk z(IK(}in8gBzOt>{%fpVF?y9oNlFuf|fvwRY2M=>^XW2sstcu$sgk0j=b;Q?^`!M%W zXIb=Itw7Wyd+i-JmUZSnZs_|LuOyD_@|DO!VB2zbp%8&yM4+0oQPR@3RTP{lB{zVV z`QRk|tObXu9Jh&n-tk$RqP7VJb15H%zF0iyuMPs&hAJ)>=iTKdj}O6UM^%s zi{(*CW~K1bL3>P6Hnz80k z9jMdyAK;~>cSj8EY5Do)3+ z@7vSOo4305e&gVlVEe$L@C>bnU(C;N}n!#Be}TEp=`iw^gmRS^KR4i`I(D zu~wTSXulj2ElgVO4`0Qf%dzDS$@5#U?hwCxSPU=Zmixo6$)C%|zXFFio6PQ(ve<{$ zBbxqF+J~s47AvaGT3u7q-d@_0?@$#!bSG^C|6B13u3EjaMX?s`+50-r3dNUFvW;3C4y*0bPh~r0?-HthEA&~QZ>d`ayq9=1_Xo3A zUHT=ssE_m)xR&~ehAtBAGJA+Ua1~k2=zW*EI2xw?=%rtpUGH;ZHnX#9G1x3~`)%V8IqMnheDYbkaYdUIKsBz&c%*omkn>Fe*kE1aGp?>o3k*0{yH z|KkNdVg4m${-yaB?ZsZVEOwKPN8s-y4B zx7kzdpV(#Y=HC?(e!4g*9uWT~Ii*UeQR~71Wh#?Lm1^tX&HqRG~?*;WToctAg9rp&=$J)_eKLzXnbc)}x zZ{of{JeEfmvX)0kH6bZ;K=U$I7RW@?f5PR2g;u=jB?%U}J+q9bevQ$Jjg z)P)Y{cuaamW$gYV(jo^_O?@<`dtE{MBN$Ou)-jpg16YaEpoH_K%5Grw>@d5X-NF7! z{8YRpNgLK`&YItTxUjGQK9z04{Gny@0`s<-cRrj4!>BsxNl*6zIVQ9 zzUb{w-*&ta^7spSA>wKm$N7^?qRaGph37=fyFl|YVug!Ntk-&3ZD=8X;&Lz?h`xf$ zo0owz;x%7I#hVp?IaYrPYiVhx%1+;*FE~Xm& z{jq?tBkos?4#GO(aW#`?N{$$tKq`z>qk-ldi1X$CmRFi$g9T>pNW_UH(QO)O(=S?` zED{aZ29|)r=Ot=yXWYSir9Z;(n5#1j%+*(+T z8cr0Y19?k?)dbW(?eTE*#Bg{nkttE?jMH`g4G5DDzLnMmjWRvM36>+y1S|B6L~xCs zkqKU>XDkHQ>KTQgU(Z+xuG2F%g4gRAJHZ=tHDvI^L8I10ZVeiBCNdo~Ds^TQ)qM#Y z*Tcq2$W~z^!2oO|xB)g2)LKC}4I2s8z(#_bU?V|YS3Auu5Y!PGPeP3# zKMBfb64218-a@(&tTTexN%bh=UR2wvTS-fHXw=63BnL_qwZMNEyy}t!3Om^m zG+OmgMQ6}x`yy5pVG8W+NC_*iQbTGlZC-?O*W6sM){ABlLt95%#Ex#`yvzsv9q2OU z*dX|4vKaPAU3xC0scPpOWNrRzS`Fo87&2snOEnU--**heo)oI2`kxfl(%N{KdY}#6 z6#Af1>%s0rHdk&X?0a69Z}uXR7|{$Vk{m%B5|N}Icp{Fyd*zxWOhRMUdXgP}4H|mj z7l5e+@>Wp-L#SEGXaI=41qFrHeuX8Fn8e~L(+E8ArlBtPnJ!es7K(ui?Uw37475&! zW~)gyY}nwc+N1T7GRjt`88UL95K*>27E(L$ZX}BfLhyeA^!suc`~u!$CAsvaJekM zIq|l~J}eCxE!c}UUWL93J(v4RjaKmN){S<6K8jitaaDWpT3d|M9-Ye3=tEfd>K7U7 z267V+PRKs}A~z}hKupR2@kB8-NIZlL5f35ziHDE_#IqB~&BQ~<*NBIZ81WDiC!Pq9 zgTzC~A>twA7UCh~F!A&NIYK;y93>t?62wDDl6b;EhKYxe6!8!;LOg_|bz{p?n2*uG z=mPn;iERfqYSt6TJ1`j2jjc=ECum@DpENPz9yc*!J*69+ORN(#Fj*%}j98~kj972g zjcrS;(=;$yXH1M(XHAS)PwP+GWwCg83fCF7v>|QmKezbG2{MMm_|FD$P~rEXGv|-r zQyHd&aj>Y(L)!}Y99|)IlTyGW)}7hN?-{_M@}5{m8tKkd)988Ios7#n?n&Wf1s0s0 z;~D0veU>kL%aFf=S44NlGSY3nkCr{kc`^MxWL^V!=5c)cU;_nQFe|&IfJ;ncsRB-4 z)9xZa5UYEwhQ=3rApV}shAo*6qnp$?_S(i5q)uI`#hg&bEhH?|OShuSxqoKSbBk|XI; z=lhcT)3KvNW4EQ72h+z-k0+;lCMRZlCZ~_5)uvE`xM+E?B9rYNooW^X%EPp;O7((G$sYA!zQp;hIb@EIbKsl6hzHi*?7@vDr~|Fg=r= zK9e3%$szS7{I|?9h*M_*g1EF@t5NCq~lK>g;G*9on@= z-8Yq<$TRQBGwAA~%Z;JNP+nMJt(rWO92-v#kEd1BlBC+Rb3jebZgGsx&Q5Kqub)Xx zk4??agl5LZ$>jQdJ$tS`!y;^wO|kQAnvJpJY?RG1`Y@5g#|ssob{g>8%z`G?2wY{| zEX`(2-U*C`z&QrW1Ynx!pzJd75OaK?;&LBjPpKsA!lD*)K_XeS;$Rt zMP`<3)}i|>vO{*MW?W~?IGw?B1eC=Lsq7|Leag(x>hY%9aUkQPkT$boSr1}WD)TWp*Hsb?nAv3?{b^=tdKyNxiZU*h%?>GEnBHq zg;i&8kC`<&j3;UREG9`)<4(L*h;x>0fh^i@v#@6iJ_Xjp`V=f4!*~{W2sg=EjB-6J z?|}zjW(_{tnAgGuY>U+{KZy9BVZ0ff%*9Gr7u(Kuup=yi?}u-&H#z?Aiv5sVxWcX6 z#_im}o!rHXtfwc&8X9&sn6SB_$v!(aK9WvNo*E`fQ*%Q{0d6k9odp;+VS6+`-ySvR Vqdh&{Lz|JXS1w}1b0*bc`ow@a+v0SU~=~kb0e>#L(VfKuRGCU{{Z6Qin=eb0rQ2dO1an93cbK+K;3A!v zJG`qhT9Nh#QGCNEe1R5`w>;Y^rT4%(Vh!Ejz%z8evK6`1RTXM=aJWen5+*KMKj%k7 z>xVKM8E!|Uz1uOse3Q+quw>g~g;5E(qHiLuJMsJJ9nh;6!mTmlbDIixjfC+jz8)%L zUdxIqh=t9A)zp5cGvfDE`l&5_>>-ynL1@s5hI+mq!^ZziGXsk@`}nIgW3tr3Tq@f0 ziF0E%Fw_NaEZvDZad8RUN!Vn*-VgeOpOIR~+p+UKSX&{a6s$P~^X0N@>hDcXycxxZBK`#$!U2v9B6mzXz-6i;TbgWobogUOMW^C^8<0 zpAzDEh2|mUG`PfQ|A6E!o*WZctUs=fEsW?Tu7tF~${~!$yL6MBXZaurC5xKLXs>U82ewak<`1 zGv1Zw#gjJ~FJ5vQ@iw4$--a3-(o>US8-1?O+d!rF&cK?AO0_+A_SS+&@@iziE_H?u z#8E9DP?Gqb3TBpOwg36Wc=EnvXDY1_xz~KfqBolBX?M58=A+;V-j-?90T>(c%p%`% z_Qdlt_@*=%R>AG7fHM+zR?CV`GfEQ7#y&>Qrgh5MkEGaZu+d(1%2hll@@ir?3142U z2C}xpD?06DmKR=(Kv`IeXpR>z=?^@OxoJ!?1G74Rt~fG~jUfF}>3DmJc;VIU0UyEb z)O=43*7-EhEv?bJD(LoVm&k=x94x6UfpuD);|fGu#Nq`wdk8;yiH-Qt(?fbA`GnJz zH5k!qBcwm3WK>9C+)G5(Sk2PY-*QC9{$=rAilpmJdvx+p-S$%4ug z2e?gAN`WB~(-NKY&4X~wqZ51=3^Gl=l z_NBFB=_lR44a+JQ`G_k->R3} zjN73nAQ`aNs&{WRt7rH*xZ(2?eGrMvO3jSt&OtS)czn0tG>X+!`sH8b=4cCy$710 zQ01jGj&`lOpyhRcTNTIPE_-f~?`ar;Gg>m8T}*VqrG_tH%dOtOXJkiE-+b?dbIDe& zH+<=+fv|%?*^jf`lBRw`>SQ>5oG$6Jk)sj#L+5C%^`4#N>x>V5Fr&c(3g|43S{#5}wkB-8~Y{Ioq79DlAD%f}$c87Sbu zze&+1s^@vNH<^P?(*H3ByJQsQOG^5(C+SvyYVA%LRmGoOkZF1N&KvKu7A1O?+n2q6 zd+1GwB&dxcHv|Ae7hI5ck;n`;8YI#gppX*lF=Y^b-BKP)39vDN8pxkqfc<~n3`hhT zfDwQQVgzMSfXQ8g0!@)cF%5=-`M}a(9k2~J7F-7&1b+r^{Of6Cp9@K1K6heNI|QKM zzkUMD*XRB9sDDSI?QcV>a;ge4r2#1Zs{ht=GKd@iC{w!V=->+AX>dX^{M~?HA96yt zhXB*J2RwbtLg^La60bRdl>dJ zvKt$uZ35@^-~shuAOlhgEEz~G8{iiOWo>PYm;z)Kq)IK~7WkgxlQ8p>|G7CgsX z^y69)g6;z5k;i#?zMarskBNo&70+@?WiO%-%hkvIInCNfxt~q`glqerqMR;C+6^ zu$DPZ7)D_%;A(%9S}J-G9paZJej+K)o_7${O}+ES9A?p@_11#hTlXE`F>F{29W?qz z%W5?{&OK0H+GI0hxc45n`C|fZaze$+E*@3LF2dvUr+&wg!l*oR@om$j`>mBEHE5x3 zp{%YIKFnf9$5Bex0k3Nzr_)x($$Tnlk@EO=v)GW%ADn5=M50FX=wP`b{DvxW>|9EfcW4 z7o^>6*rABr7)Xpo_A&kT=u|l?cv3Xs64BhU`$AJsG4sY@S}*qM=q@oFOS!>E3_m-* z_4&~pDw6uLnfr5A)Aa0|iO9?i^)J(0m(iFa*sTMfVdVhsy`S90eNoFbaw~OjI`gRW zH&F~u$HD1hoF~iq41<%Zk8yxNMh{#L=^BYJPyL#Oq6RS?H?q8A_hCenp4 zZ}TcpJ3xL^f&HSl495@4uf?$;GDbA&cw6E6(d?w8feLM%}mbNT)(>H<@dyn zzLL8$5}L~aD8lH@kk-ggC^e-~gfAvKlE#ZKiM#bXle@#0r%3av#8;9moH7;GPons| zCga`gFSxg7Ddx|2&Y$h5iq4q9)ZV4!C`8KXF!?;Yl3lYAE9U#`SKSmV4cb9%jM2xG za>A2t`6=wM&+%~jd=9aoCL7)yQ9AvB&>5W8^HBo+U>@RnK`F|!VH$-DDW{URQ~wZ> zxT_K>M@S&WTW_CRd=VkMZ;yJt7q|Vk**%fdMZiUsRE__+B>*Ds{>gfve>#R#Iy3x6 zuXwT4H!fPWx9ye-r(VsjWskM_{tdo|PCty|)dVO_<%ZPFZ*5T2bv7xZ z&un9%z9h4~pxH~)xb1E~)%=H}N%O=)Gaa@>{wqf-pd@hy&6sc6nWZ2x?u;@JS3ZYs z4g~K3FNCmqd}Y<;Hhl$h_FtFYi0fWIJGRb+pt|hcC2;=}HF)b-|Ozb+(EWE>km!2*~f&n%nz|4O+6JDDc zjX+bck>=(QYLx5gTywNOly%cnaGA&hkp{vm;f z%FNcZY{de;Y^Jn98EdiL2UYY@Nd)+^6+0ZNgqpfY^7u$A*5H}SPi%R z=gD|+Rp%`7*ZE{P)yo~=+v+W-4n8A?fB{#1$UxW$iPtn}YPoK97q!|SS!N#b-?MJ` zDS{(mYQEZ)^c4<7^Ak0WZN?A=qvjcmhA9`6wYB&!4sv$qHKqhMW|g&@9)7|p`SC3o zOtjxoSd0jZ*#Ek{T_0Yxqy`PlQh4)JxP09Bqw!`;=W`A@BN&I+u$+WB%lTE`5Zs`M z+^Dza`OHMQd*R{Z`&Pb{z4bJ)uJZ2RbK~welz8}FE;4Pt6V@ytD*b4S zZ&T(^gOQ3#<&OmkZ%pBKawdL%=$RdkT?6W>I98^V=EWh?<~BK-?|u*|(AEI`+WGj= ztLI~<ZyIDaVGw=-sH(6eRlh1u#bc9 zCI2fs10RbY>M9((l8CGS4lHTDDZ%>Z)#<{*15X sAw9i&wUFaFjbhw$$c9Q7s^n*2yU$9R-!b&lnV>)UhZO{XNF;#qKlScO&;S4c literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Size3-Regular.woff2 b/katex/fonts/KaTeX_Size3-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e45ca49db8c66ca43ce41bd15a219db59b0c9350 GIT binary patch literal 3728 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 uGdp`1tIq6oAi__4ZKx3d literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Typewriter-Regular.ttf b/katex/fonts/KaTeX_Typewriter-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2fd85294ab68105c5ae44fd65332fce36c49f8cd GIT binary patch literal 35924 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%0AnSGBJ}5nw;K}{-J%^|HlSG_ z9?WAk3d`iH&`h#P8_KpBz~O9%?YZd=HQE;c;6=Tq1CS+R>)7ngQQw(`$zon*BSVlf zhI^A~zL1X`ik)7B#X5eRX_He}JW&6r+uXHY%+IP1-6!cunCqisZsa|?l#!9`mp(!`u@U*|zll03a$CYr+4SihO<-(rqKWX5BElAL_pWH&D_vertKva) zz0@p_tBVm^&`>mpA1#-Ij)0#sc3=>_$SVS7VHgBRci@Br)8H>HD;BFaMI+>Jc(6L8 zAvWt+S|FqxIYRjx2)qsqn2`Z+ArH6vjGtCQBw;17Smrn3SaxO(#w6V%A=ksatpKj0O0^GEkhDT=z=BOb zWAAyN?8HJWnm>A1MAIZWdEV{Onc+No`+Eq{86slHvFA|j)>a-nn$M96ychjtdno@y zg!_;d{)E*jTw99e&eMkuuI^pfH921EA1`6K7o_FYi5&n`ge$;`9z(Uw&72vg2z?iW zx{GxJXgTED+q6Jwn8bpq@)QOsd{l&nuqBeHYnX2~!tv2urdw-y|v?G{C4prH$C%^dW%fT zllN~&cz4$>v69=3fQF&F$>Kxp44V%*hKCvDXzL0O^v2+~AWFNPa){DUA=kJPgfIrE zjUn5CFX)Dv`mWQjP_CKNeRWV9xz1sM-#}bIEDbCJ?g*YE1ITeQL$OSE;Z4x5jeZ0& za`%}aSBod>erIgK7mq-7xotu?|ow z0DVKNN98DEukKWB7PDOm1NXTacKk+8aSnc{40#qwU}Z7*WoXG3M8ZYi*6qrj z+Ctv(W;f+OT;Hy%G|db16R@J*Qi$2rqa05m*sfax1+1axC!$&%ER{ekfcvhy0uZc3 z8>eJUIef+XY;RE%O4d_?v23Ac{x%iykdmW{#-;nJUpI_yaUx=8ipLBF(vWDc0c&#s;;F<~Ta-kCFbe3MGhHM$0boe5ChOH= zABv-BCR0h?8$x)-yDB$D6jme2R&2_vUWtX?MyiyK9L~f8UWC;ux?X{&$W3lv_(^5o zlH=TYC2c@4mmKgXC=MJjBdwl0k8mj#8ZnIYxijiuL{TFH`dw!;81^@iSJ4O983I<} zGZb0it26^9*DVPVvKNFTQSK*A@f)A)Hu zN)x{8p>%>Amz0=-tU9bo1bq$DdWJ)r)`TUOj4U14HCOJB^<}ZVft^x8)KA&AqjW&J zDss?CQ-x?IyxUGB90gn!6g3iKu0Dh_R%!AK4FL z=-xyn;noP8_rZq`aLO{^DS7Wp0LH5L5rEVfsN`OgE20pcsY#y(fP#?}aLKXc!w@tq zGNBuB5yZDF0?GG#$^iW@OeH!VALNwlzhT1dxw!4>_EkJ zcvm&(4g~lWm+Yh~Ge`>R3s!v|<> z+K4q6CojnV{4YMu{sGXw7k=i*PQMFs!U^zTuviBr4<&YcZ5(^7fVQ0%z*8=s9?g^^ zSlG1^_P-G8dB$QMZ&VyiWF!7SB8x>LTz+57hiZM{?N@8;DMVYVLaCik6PLk!3+!QF zzpY6GMAA2_LVqG&k&$i_wks}(KS0YWl?Nq`&3yiQrFfYA{8OlZ!V+tR*>tfOb2xQq z?LH;wMIIk>j+?q@J(!sIyrOvBA(-6Ach&tq%I4Nw*}UWhBXd|zIZ*XQ{rZxNG(|fy z0-2N$;5i0%QtlXjle^f5oL68c1x8@6Q#2$_{Z*BhdoLZ&%H&k z137^d>%jMi1*~?Jg`GbLuK~k_>k%`%!c`T zUH{II#@Qb;ka6hJBR}je_6ha@aTjnr+O}Z3!PWsSi%7u}#d{(}e>YPNISRI4 zfOAx}8?=AeVQ90{)6<$;lign9m4VkNUYFQ%M8e^)E~OlnA`c8oie;pLH+!JzeG*^t z2w26Kiwb)MRUjRfPz7##1W!Y1;|S%2;kaxVnqv{4#<$(h!^B#8#I@C` z*ab3Wdhxt}qIC9_5(`Aya~{v!Tr?02#Z}22cw4{?38ji>a^axqaG1epz#}2s64lAF z3mK08BUyl=@IRLi9z$-^(|}Y_*xzpY{z2%_-LYb|7W z8jSxpB%`?boRabX*Jf_kW_lIZ!-D$ZIAg=4qYzG$X2uE0F4*ZQx1g$88a%}3h(uaTc<_ednKa*4Udg3$^XnM_&X{P zqe!2Wul%9cp(7>3;T6YZ?;{dCa^B8=H^kR}5w4``YG@CD)4%`@VJSZjpPprZtzfoW zNlD9yQ<5i7kI>*jk|y~kZFfFdQ+FlLZ!PsEuV)*DvphHkyE&eD5rb}e?!~TCOt4u9!`487|PMNOAQV@apHO^xdRwzd}zl{754Y{rYFq3}w$}R>{#hlN0 zu{tT(O+BAWJhT`JXT!|7P{h&>o+W2 z@|C~*A6lp6=0!=^r>mf@Nf8nj7IESj)>v)-XceIrh z-L5a?QXY+aG9Cl)4HFBwKdZ?9M0R5dJ^vO~|CvG0^StL^3FJW_M^~30luBd?;s-$o z(30&t1pPJOdM%guEogV-Pkc*b2o-%|c+c3fAB8ALyZ6CgiJ~9Yq~wm@rQD8&s29|L zVqz`oQQ!1{c>m&z98%A&)gy-J4&x8acu(e^eD}_zk9R*QzW`uxjaVMHHL?t>kpxPg z{W>6iKsYVj2f8}Daq7^p3c8}DRCvLCFA>KagINz7l1wcPeq-d=QAILO)3LpvSoQ{p zg#TT-A@vWV%a@U3+snw~F$KWE{zDJMN*}i{N0F@eEKkWvr9}8o#PK`bNEALjfkRQ8 z=66128SW{ZLCxbg@0`G)D5jEAVsHZWwEl62ES|+C1||cVpRd@`%hov!Nib6}ygt2e z22$blcHRyw9lAH&ulu}4-!$E0-`&|3lrBnM6py7((GEm0dmK8r3IgULID`&H(~)v5B>uwj0g4=plyqR2>faB z7*f+VPSe!Kkqw6>tl&D&7Q#9LZUOkmLYV_tfnq0WD8_+I2(}sXyRcOGms2@0?id*L zIo|LFJE_Y?3-*RLID8|6j<}dhA&D!5=#=UW&6XBJ(#B52*^okurP-(i-9Kb{0f`JC z@f~10T*DvEhy)4p==K;VMu(w;!|u2Q%pk1bJ~eJL0|$6JkSz*vh;RXtQkh#HqhzG^ z;-i(9o{Yx#oRjrx91)se!B1=BqwIXo9*-*eV9Ps<_K3^fz@Pas9EpI>*S+gQxX_5^ zLqUflJ_0Al&#k{)@jh}W60YAhn*wN^1$)(etl^@#WPf^Pu(nh#q*|+nI5+I}rwZkz zf$Cz`556p_zG6uU6;KM6P0ce#Lb{auSQvSQ<=syEaZD*h3mjUM%{N~{g1 znrL867RH|Mmo?7^js>Eo%Sme@z|krPGlg$`D-a1ebqb=wnP_;I$@hhStR|cVr=-8+ zht~9${6-pMP$0(4v-ZCqza1=O{5#9vr+yfqv)_f+&~>`|D&Zw4jiP@dsBBpHNgO@o zd^5ko3*@Ls4k>R>u>VcmCw^P{fb>ndUp}uCm3x)ThbhwQuXEuq^Rg zjDK)E<_tJjoUeEODVF#>>-rn_^W0mW$30u#qrTgG|LT7-a4_)Bz_Y=}LvrX{=Aij< z^ZVA@!jDIWB2Pt!qaTPZ#{N8hSHhDxns`Ox<4Gx*P2QDSPJJhRPbQVQl%35bbN@N_ zkNJxQZ{fCLtN4x5K~zD zR>xMu1|@+X4|LCIKZuRm)BEUIdJpYqvC%X1EkCvjHXpViHVYfIqx0R^sC@ui6q^fM z2-`R|YD;@+M}3Hi?yFa@r|Z;?-c4^|=q*1~z(U2OHg!vCU&kch3n1G#0u} z-={WiY-4!;_pztz^gY_=utl&@JL(@@qjMiNdI$Q%+l*rW4QwOW2&NaX(HzkJX>4!D z*83Lq?=Eb6u>BskN3k8iMt!EX^gO+XzDIo}7^JXevC(%c*a&_!)*`kHwhlI$gFnHB ziZf2vM2np6#E)K$3nyrFSHB~|)*u|&@$Xge$hq0i5@m{)#NWo9*V}t=sS!BtcKmyp zAbig!eCNBpO9#&{ofXY>EG;_$l$v#J`Y!PI`;{P(V2y^1F@*FEu!_bU4#b78M^17qb40SH{u(pjf!_z zb$vbG5e^0CJTF$Kf4WVqjo*;9rjyT6xKFFR5( zzqx3C!ucGJcM5n44{r}`=R+>Snf&}yPKUH~JR8qv*ZZ>r9e3@rC@yu*ZY~aVJT(j; zlj*n?_R_d;ke^@gxasUL&fGW~=y>rO9|uVW5IBQwcRULlnM)g)jt4*+==f@@w;jJM zpIuxpblm6iFBs_fYpaKjuO6{4#SDk^*(-FT3cM z8^1ct!c0iTgU2ru<^ovrmoUBb+5T)EkM)k@_I-K;xKDT2F_IPZe`N!cc->Sz#{^zR z7$Of4FLZ?2r{Hel*buA<_+!gUw;k_z^YfXdjuS}fz=t>HGaLB)(>@~%Z&CG;7t2)?XpDsNbRyr`)KX5Lij3b5^#q?F$r&l4N_p)G()1D)aR>0wr9sQc!do_~lV%VnlU}A058sBO5^M&GCUwqc#|x9_TcG zR8t_~88mNUN(8Hz8O*E@@dA{4E?rv5uYg$`2U`bQ1VuNo_bXmU`AlZ|65cg&?RI9+en&^fJJBlB*&upvA3FYFF(YN-9~MheY<-@1pbl<|@8OI2 zWl$ex^LkPO-LtCA?8SwRv-ys+uz412NL<*A<9K5ow0q+-o9Gf4bAEYqJf6oFmN72u z_*d}0TYLl^A!aFq0RZ+25DKjQhMwS!n|Qd$JAvPjG{ohueG3>dNifLZ>q@B$gZwl= zGsQ1=bP#wZvz%X{kI`&RbCA&hx)2p^J3g41hHRuBcQ4{)*FdfoakdAywxzEwPi5o>Gi?OgDeCBoZG&P*}QhSy?vRt z?mc>4n_acec(r%ux|hz^Iuq4Pz#&4GOCZaeK8$G@>wV{JMsLe7CPE#8?xRct@!3MRVgH38PkAu6Y z4IP}JHgs^7+R(wdT4!<_%;)K(GmFc2^P@Q&UEuhH%Wa(8Q|nA^xBdw_;jQoGN7VX0 zend_0uXU!kn?67%yy=7dh?-vHN7VG8T4!dv>BDrwn?AyisOh8ph?+jH_F)65ZC&MQ zzS_~xb)^5NwQJjLqX@$@cI+e$IZ*|K05L#Bo06>8PEZb%Qm2lqD5i;Hw@rmmnXISY zq4s*&UB}5CQdKE8RJ;KaSLKdSQK~!vJV8O6)Cb@NxC!6vPN-vAQV_ec=il)^|7rf+ z9nayP@wM&4SI!h6XpDcij)n@ojVE)|{C4+9a`9_KEI6%zy8{Tv7C~cJT@R>taUcKR zDCq~>x42KvMR1(t_r~dN39ZZBjlFm^zlWX1N*nuqpI}1Sxm^oQETEtfef91jLTjJC zPY-T=)$=Ld7WutIH6Om3y1yz|b&H^5F$+_kEzHHCSkHw0pkof=Ay(=AgFg;lQrF?} z936rn(NRJY!774&NyAu#LAZwF7=N)f+=J2C&orFCJghq!PIlxE(mC>t&L6_YzrSmE zq=WuwNFV=Xd-}ou3oHVOV2c0bUurl;hGO4qI8N4L4>a6E%=k$SV`Jg?6%8jl@&{vX z{9~OzL}n5XH9XQme^k*w-*k68S+fIn%9>zV)105mni-Sjg)eIkD_c@HmY8JAj%B2} zkux(2d5*2v++jJ3S4CrIg;&JJwaShw+MW!Aw=Qa}I`;}qCnz+%nqXPOWDBetZA#-k zDgUzYeA#rEX_&@Lw;WpN$;V2~PMvAD+eU*2_D6i%fDC6Ro=Ov4@CKCQk#14p$y8eg zHd`0I@U}#iDb?6T-VlFN%1EUuw)7*6a`Sr7=AK~4s7p&YKFYS7s_#; z6rcPHhDV!->$`(VR+7}a@G$7du;0oXk1VXOh+6CMWD3h{~l0$V_E8Yfl z{dbmDwtQM!s~S54o2b)(%{cV8(WS!4Hm)N(oJEcPe|2({;|*PN{7AiZa-Ib5Hf*Bg zVxfio&`w+Ut|I5K))=`6sT*Of9cOvvV<~uq4Z8jj8fEBw9lYA1M<@@7FzQH^pE|&g z__hEmKl6a2WK+0h_;3;FYUpXI4j)NZJVHU$QFnc3U~%>7lMd5L96F1G{ zj$6p2z{0u>^!_4%Bs$~zA>aV!Uk{?kU>NVZQN-dufftr0`$8V66aNP;aVtEq}k142-#?6ue?`hmHZ($$VS;W_xhuUw$!QVmb z{CClm$YBl2dE6XJQ1b%j054+>%nB5K56-iSaN{L7SQ(CS36*mNkBzGsA9^1<-F$$N z>TBdftRKUqVse|@B)^gew1@ma9%9B`5=(x5B0rN~$dBYV+DGotewv~K^cgxxhv+aJ zA)k|buHffC9pQffCBsVC8QPix z05bn-01p8G5G1j3NNEoC&MpAJuYcbR#Q2ZKm5FX72Pe~ieWm}^0r>qRDkS*Dz6v8rUSNF!$%*@QMZj6ED zKNH!uH!E$?^{V_H+0OMH?RxM(`{8AQEM^xzlW2&CM3(dxC=a+*s!qNr!Om4_`QnOi z-dywFXV|#4qxx8c96;O^hf0xn7}C@p3NU~GDzJtm@=pgQdc_`G8!9$o&Xhkn4T3&2 zq}jf559&t=dXVm!uP6`hfAMHhx^evw(47fYj(J!zN^)*Z%gmZFEuUyl&kd`5Ht(67 z7d_C;@9-C(H+5cAUjJkrJmYEy zD|~DIO74a0%lMvR=+qm*BveqW{bDRa!P9j^t=H?%X&z)p_=OK1vepHqjR@!-qZ;Mx zxU|3|I?MtK+s7*Ytgjp;!3x<=EN0Os@8qE6bv^Aczwx)2YFkB7m5GaIjUWRA8or*03xm8kH=37396>H z7YotsnNRgUKYl@;&|1KN^cuv@-D3E0463(8cb(+86EZXX&s4 zQ>yVq%s`1E8j7bgVnUL1>kMBV^Mq8+r7v0PBRB~o#74Zo3mAZQ0+wHH)!?=z+nI>d zGoriXLSc%+I*D2Q9md4(D;|0KGqz8*dQe`Etk#DpRL#(f;)m}K&=o=`9GkQ7@N=11 zq9o?1is0mf8B>Wn* z9~g!LhdW2}!vsgV(21F^WyR)uE1(A(tx7Bw!W=aY?p4w(k!G7s?>k1gQ6tHH)x&fd zwCgEM;W`_d#c&cDD6BMvA6-_P%NLMxnPz}u+m=<{KVeR2F3@ zVapA97XiDvAv#vEokxhN)3OSn$qo5Tckuy0*6))YjeO^$eBofTh|;`HXIdJfb)VoQ5BF=BU%V_d zz;N#sH2D6_5gI&M#3nzV2rBeT*Yo(}j#>5!p`oQ)kHOylF+a(}{rZ$U;*9=$!82{5 zXMge59S2F>{VIQZy725ar|JTui?h=QLwG%H2#b&-vxZ!t?VK^kW)N~k$up9&B_u3+ zz%i(yNk!_Os@!0WiwU!K78}3g>iIA{aW`{+;Nxpnr7_=8cdODb`q^_S;_;I79IkRB!EDDT{1pLS=I{?Cra5TSEj|d!>L>g9(IEu8u zj^EOVMvPMIjVh)WyWOdt2>G?-G9!Id&f~{th$-gp6&KJ?B-c`&*)iW~U5t6Az^KdP zS#=Bmeq>{o>(PIg!AcE#VR% zzE0M^ulP(No`Ch`B9uTBo@hqYu}XD3inH1dr>R>?t)>!C(Rb4)5t-T;r=W({#bOcuFeoUONO!s)l@m%zn&#AsD{w}1L;}eM{f;}4s zpv0J-)J#s{C@Fx?2x@W?lP-v5{b9WvhY9*4A^}=2TRAh0gCSu}Gwrq4p|kGOS9f20 z%X|GsUHgo1zS!)&jUC;tl?bf2_qK2{_U1Tu_1wjm$x5T-hWuPCz^HI=FQ*yw ziDFB&SmW;fv^zTB5@Wl#>LV1e=iNvp8|MmAJh{e4WWh%h92U#hfcGEH_5E%b^) zk?R&EMrWEGBB(};)!7^Aop2au=V>SD$pjFV};y0FDv#7cbI_6_VnZ8?Yv`j$;GyM>9@T6vNa^B{M$)H zd5P*$15_R;zyldXI39@EH6@HSkp^C$Y?&|PkueO<5Hv2{@CPKzv+YJ9cK?O5_XaVx z$AM{|B<4i#)BM%`gz74;b^USO3L2dfG|!JC*yeyLwL5A)GhvCMs#7 z;eum^{^)h$^J%Q^mWyAbyZ6a4c#*}qnp>NzW8KllM;&O&7{PC3b2mBU>|pft{A5hW z@8}b)p5OmwP=YIQ$DTOgCjG50%xlQaDFz4x6ce#G7@!gx#MBW5>G%h7PK7C3svMcU zN+?#wWMM&h%tq#0c{ewUasPgpoy6_wu677-wh+g4y4hL0Z*1G(2SYgh+KEam1yPc{lt0R!l>>T`naaromS08>^v7>nK>QiPcTC1$)h zq5*OqQrinn@j?Ns#!6xYbD&LM)y_TxeCcw@4Eim`9I_eQ+NgW*4j64YU$i!&c5*&g zR)zm4U7ClP1E#chjCrIfHxnF-?-++g@8y+e=eDA&1SY1V>F2IB?tC`nQt0C1TnH-L z^L0z9weNDHc-rVqv~Nk*CnNB@v(ur>JYzcZkR0pBtZg@|sy0X0go;C10Xruh_Qd@t ziJs=UQG^j$%3up*FiQ|>dmaEqkC<+4o`NLR)&Uyalr0&72`XJo&Du{QXf9t@=bEnF z#DZ1{8c086>Ki1C+D#Fo0Lt_dS2;e+mJ%ul+q}RD9fcj?@x0b3z)73*c0Qt+nag#Y*OoJD^}fIefJ zA5B>W&BM#N#bh0T1NQJRAahp1$WZ}E9-xMQZ5sFj*gC|;I*ZYPuxqlJ3Bj2HOufM&D-L9Uu%FJYM`fd#Hl_(Ufn`ZtR;t5Pd4L8t`QQjYG6 z<3wn8sR|`IAe_7U(eks$1m^a=AJ#JWEM&vuPNScL6rX4Yzgp7+#W=J<23pe``Ev7C zl8&z0#m7|=s68@DKFk}w%a7ab(rHR6F00o`&qNKN!2I&q$VIsWSNSYf9e3p7Z#2 zTY`X=J{3C9S}CW5dXPbuw?4RaK6F10D1fCOQVloFKtWLgWE83k>rN9$@%A)FFIfZ3 zW$6-lL*vHorB%BrREL@f^FmNU2qgKj6ftuc4b3-1AdFZJSrI*Ma>peUCX=!V+vp(D zbxj8cjTt?6UyN^`E=~t;Y9EY)%fgLTCqoPKs7&eLM1&`sB6x-@iHi1eVRy)i`qujO z*-Ahe&^3dc<7B4ycb2hg+NgM)>li#5M;Qhl;?!E;U_jok<=NlW)X}cN-k9U}QyF$( ze$2t5z|f5}_q-C;C>So8W`TEvl6L5B#BK~9je;ym{$v=G_NoGm7Vkt4%8IUPRooQ` zaDh*|pBR(xcd|3@i;MDyvF@bTk_l#XmCAM~>HsZQ?l&>~pv5eM&kaTk+u}0Y6fJw7 z;8#g06pJBg8O!dS`__U1Hc~TT-@CiXN}hzT3wkbQ?F@hfUxBQ+&n)2$~8Ui*cr{ST>KZ?TlGqfdixF76~Co~qB1q##Ao%a zUe5dsUpH4g6wqM2?M1+qdEd1rPOxKVuxh0FH2q*^&1yc*wt&~>1elo}o_0rt`aVTC zM}K!GyFWJ&AfUm!aeP~W$NA|3i!LSbScMxK<9zyFwoTW*b@M~t&1znHIcTg13k zt$KPo6>PSRP?`a{bZ90hg6`W?(_HW(xrj4j+Mf_8BwpLs_tK-#R;bM5K9OdOVQ;C_ zcr1D`9VgT%gUX?4r8dWX^Vp29t@`rU?Cfl=oJ9Z~;pDo{NAn;0e9AoSo>w4&*Mxat zCAIdNdJX895Y4k~a7vyh8RcG%>hsv7LyAYDL1R7WSrU}cDD6?WT@#y|D4FT0DU~9( zOQf_cFSb$a9|C+F<<<9Z|504@;!`sFJ{m7&G_){HE@4K`v%OHps%8DRtVbdT=+X8h zUY}zF1sZm2n%Hit^G;rU@(|H3=nO|-k;bdR;sOO)@dl( z&&d2q!AyJmb<9Cple<)&|iTGItbS_-TUiqD| z1^m;TcGw9lA}%SDsGMzVE;b0c0|d~BpgqB(QA$&zbp%sXdDMLaY@9SJroP=)@8$Tn&5)$NwDDY$;oiUBHGQEmF0U6m>d44J zc&f7#Ly2}!pB4dqN_zT4*1Fbexir)-&eE!v{xY*B((2H-EBVxCf@wJk9@0ff!_4Au zJU@9ON8GD|{aaCR&@jAVP)Kw-Sy32~AVWu%>);Tpz)$Q0-bsmdvr?*GZN+!OG`^%t zBS)Or84kGqNx8;_!H;|>O@vg$WF`HdV?BwRg+C3K)5kM$#wzHu=sFT6Fhc_?D>f1j zA8a%PbIsd)`H*UMe-H<Nn)BP~x`8rd7$T90^o4im8ORa$PJ^!4Qc$YM8am zfe{<+LT5NcKhYvF}ourC+9tj2c8!$77ii z;}d{hD8l?gcMEa>X>d=tXr-VmV8HF;(h}<^p==hVmBu8^=8t@VmaqXW^2WFSH-*6~ zJW$as)NCel{OQt+ICS9eWBVeo=BSzCxZEPdkd=lT^4x!K5t5FLlZ#p$`;k>=-NEgog{| z(*zzLJUiz5+y=xhtCCICs~Kc2h9{R4=&b^0ku|Bx(Y3jd;`ZX0WJvu4QeWwFxK?o4 z5-!ukx(^zw(_S^irP9GpzeK&RU5&}cuo2)n>K3*o(<|e2jQAv@nom2lkUfC;A4MJ) z$68y{<*@DXYHnwg+S>f^MX8Lbbu+Ojs+1gz9^NT@K6@_V!`^!0nGE_MW}G1vuz^0C zJ~z4wcwKDzE5JkS0_F~)>;nMGux$yWA#-*_L7XI?VNjS7WQ^H z@00>Fh-2}x=2`6zeVO^m59*^2=ea*$1eox8*7QXYmMPo3_Z)FETbr9Wo$2&3ZZkRX zN_w?f_f7eRcSW!pjy;vA&X~#GeCI}oY7dEb9J^7m1*q9R-C0t61p;hD03lwU=q0_fH@Ge+vk|5i?XBo)dW zZBvMmcx8M>cBFNaTKzrDm~JszIGJEZ-GxN#&zHH%mmuI_HM$xb_hnMsMp_CHo#qt% z1wquzS7I4Qe#eh~_$83jz#(gw&*w}X!^Hj*kC|Q{6}X%(h(l=+{dD4Vf)OYD0b%ct z)oj1Z%(;4%uascs)G<{p^v=f+{^-s1YmFJW7j&{S#?Bw-3fb@ax{Eog*;FZGP*afk z{uJTb#j}kA-GZnP$XposX=7hLelTD7r7wBK)t(ou5(`=P^t1KG-7Hw#x7J3|#yVWq z7?*kIdGgTokg_YI`Me6*ujK<%lrlaOv%A#M=`wS!F^B^;d1HbJKFg3GOaTssqVIRZ z6O8qw-rNM(NKuXT34VCc+;YgMUWr)3s!Z-4?{IvfRQ0eW+XOyNbyk$0YNaG$vH^j_dMgn zKMhDp&b58l6T0aPx}4r+yxCOcW@Lv_w+E9=e@W5PZ$rGO4tZpIB}SFQZC@|u%kum= zYZvGjLpQdNsp5OC?Sh?=;e7gV=T(Wn--8P+LjELrEWC`7AV;`F#j(_<5Ng6jOJ~+uO2n>=%VQX-C zJ{*N&c^tqy^Hz33QG0u5WAH-(vNMC|ZD-^YT%9}Y=d{wHAD8~Nv8Gu{Q(*M zr1L3=Kr!QV@POp|#Bm@mJjIL3o=hq-0O+nK9Mn2IHOK6-35)dYr-`+VQ98q9pD=dN zMFHM8sw)-KEWUT~MZUUqUm><1%TyHe)hvJS#(^v%@#DFTn-&Hrj1LG(O&zUU?MNzS zQ~N|UAOqS~3kBFu_z#R3k>EXnxYNi>LGJ#u6ofNc6(@N{GEZ5cDi$nasTf*2WKWq; z^K{6+y~5ec>)v|j=c#wCay|hb<(ia-^}JH8P!tdg`8C6}xXFVxnB&f1DN`;ejU)(( z&_~W;=Ux8}!74mbz7>IeN3DD?PJBkQEF8XT@?cS7$|=rG$y`7kA)x4I@X z@lpr>q5oXgXLwCJX83&4PhCJ?Nmky?@vniWTUN-iZsuJ5U4wfgmTf}8-=(wa$sQHNpr}*6ece{N+{WXmI6Q_OeW;^C%tn5E z^Or~po|R63?-E_U#bC+Oz^d8y!dX*Q2W;*>b7T#Ct>+jY&ntefmEZ( z6p_m=UtJe5hQr&|%DS>O&Gw9s%!15i>aQGQ%I8hbv?aHF-*+(u74W%$ zGXOQpN@o4Q9<8i}8IselmA5n_caR1X&@M2&jiT$+vu#2f+7~eB9N0OS-?|A z)X2dqqM6{YN0+KLec>mHSjA*?cnDpmSym2z@o%`fYHDl9_}dh8;((8O*)*A{&#RTR zi?6=dXIy@nb|jZdr7hZ3OTn)6SnB%fXRqYW60$dfVbU!rjoPYc-hKomQqOYDoXq#j zpoMf;BL@*F$!T-CL%eRq;>>FHww@m`XN>Q4XMTaf4o`)4w6Q3%ND^8o~E^9XVN$%t62@M8)T)(QFVH=KNo?7ElVo9@x4eU3S<l~c08#ZN;(~}#)%v2AX>shU zAKN2u;x!2fpLcRi6zZyj6UJU&diqxgsx&CbqNA|^)B_MEiHL8Hh$;FqAy78uYtTT1 zG)pax#F7>>7?9+QCvF?tTf>8fI8#U-&Lp|5T=08?l2w@bkSI3w$=~H^LQt6>67KGy zWP{CQl*@E{LUav32j4JLhM1H3f`AY)6lkO@1?yJ5&$bAe-S9XB?-yW+#Zuq_+#A9; z#sdxPrVYaafWZxNKWDT=7Z1*5@U@New0sphjfxR)g%#PLr%wi{mO(0k4UT#-qF@z- z*&%d4pZ^H1S7nL0yWh5g!7IcC~*Q^5IR% zawgu~Hp~PUpv-JFX%or&k09Yu4E0DvC)LNlVfvO(xDCvrJKUF9=Pqt?P}qkGqIVbq zRiZ=0p~IlOp0#(otvj+2{%-Wz-|*L;YjxRwuQZ_oQOjP;^EEU7)#vp08TIkx!{+I& z9XYN*-MO5YeyY^#!B;%X2(L8dz?R?@)sz{DCcY`amckPx3*iVoq?R2=AkBkYR)-$V zb}g!T)kLg)27P=ltQ-IBx*yb7RFvk9yEuNa*y(IItjj^rn$8h!NXT$L5-lVZ?!|r8 zsXC!6(MC~nh39VLbh*N*E(Wej)=u%^Il^CAW6&hG7?j#;4AUzmiHlyqU`v>ZXDXsh}n5#I3`_o zLQL9i!9wM)OXFL}77iY;HmyX)BN#`M-~qOhwBg|f&oExGC-|irQ`(ejHTk1vV+4=+ z?4POW@7xT7z`RC=6?}7YEu)N%F3Q68X7PjSetLSi^RZ56<{Wy-FzNj1A0QA=Hg`}T z8fdVViA&dxg-6$Z^JgA7q-0IS)30C#E#yg@nv03lvE=3?vQHX%%I5j?@D7VTUBCCT zc5(}@RsmrL*1ixb3IVzeTv8ZBFVPaL>A#2Nyao^X9W)`wT{_Mn9e;3Krs#w;GMbQLaQ zft}Y({6CPafHbxq|P`Nl+6}hPVs~{$v`m#kWx8WVp#paxi zc$ldx7if}|Zh$hFLhw6@Aq1O9}TFo!1w(@!wKkbgsr+ zxnb~+ACrBA2Q^ZI-o@?68+5F#e79>K=1_vP7T=DH>WJ~b)GTpB90jW9Twm6!dEiki zN|-Y4eDIKRAwX)IprmBPmWrs3vTwhJGoCvdA%Ici#v!Y7LlL9-HnQdNKWAt2lO9fY zUHn3l7Z_Z@7|R<&o9yq&m;4csiM^t$UXBGg+z-RS?aZX1n|;0l zYos2$6-%gDTT2b)Vd?Wull#&$E|N0r9VY=wOY3xv`ORBgydI?I&*Iw3{cXRLn)(F{ z8lClW+jOZW^TX^#S3lYyB2GoXxw0io_H$+KACb;Wx&T~q*tF%Bi4h0ut+gF ze;>|hD=?xg)n|0)7-y&Y^nwu~l*w_-cuD|A&7Hw6FaE(z0| zeTbZ-7pHK8#F+)&Mx7v`USr|z2z}v7i^fgiQ!%X?YbQuwOh1Zye|8r1L1+Hs2qW)_AgP zn5C^ff7RFyF{Qh0ESGM>NT5IChzfeKpIX~BZmFgH1pYNXVV*!9u6azy-gat6R2U5o7xfXnkj*gy;op5Z} z_3%-kM%i%<%2!TE6vRo-zF?7?{z)uAGratnZ(JL}!TtSu>W?qQ*WGY!l|L5gsjddU zBapwPTlwSNv~IHA;l>ZXOSlM|?!lXTWH4=0J4{JLZ0vdHZ2n?ptbIdOrk|C;UYM&~ zTl5L1PjTmbdB)R~hJe`^z^SiMnz#iJ>+@@H`N zli`ii6#rm3P2W~}%5hYM5bU_2ns1S%MJuVWF&@)Rgl+x;FLV)#5hcE9X}N|Z=`Y)DaoHYjg_!wXhBbdnOwyik1}Nt5^w=rOl)wZ4#k_ux+F0A$yVy0J ztc6jsH61prczC<9AI8l9XY+sh?Nt_-jHG3YiGxt!gb8TPUemptgp^0M96K zcAA4~i{6*UZri;Y zW>W>=hczTKy004#Sm_%%(EGQiJzcgCs((4K+(C8m^dfN7mO|}p&6VGJ63l`gN1duu zhii?1^>eVYo^_lKI**C?>V~|Gv?YYDpy8V$!**sZfm*_^5rUIjErUB4cws44RW8hr zCy>5|-dR=dtu;Kob~4L-gPxf~5(x1}V}w+7L16nSg6zyehfOwKO%(o#lR zyuvcR@KUrqrV2n8p$ZrJ z{n&RKKVd(^RGQd{z6n8r-ZD6)>j|27BIJM@<|R{!r(e9vLHa(UK&%ZyK4}p+M5RiZ z6&6CcTnyW}dpno1aIh$igP*4uoB``ZP;o2Ua`p_X3J)U$-B#_~*cBv685WTiQEb8G zE|CGrmz5C~Cpp`DhfmOXE?d1e!=5$U2-hg}k1C_AOo`{s1Rl8bj|Q0UTh9-jQHVGvP@OW7r?+N- z9)bHAAc5pio+&!6o*m!9rDpU`T$Y2A5A#b7|1zVDi7PD%B8>v>a8zZyoE5fzkF(SM z1>Z9$H0*XGdpu`~lqB#ugfUAX(Avea|Mn!_bm1*k`sCBsXPlBSSg&Uf)57(B#96ry ze!&2}oATEF6B`e0bAuAh>bhVVUKZS-m{tI@oQjLHY4Z*QAvp6%fg~-i}M1X zGbp8hl}#821l)gDfJj2Cn^|VuVX*TWfiVAKxloyGZWm9cR9*bHCVkfeR*YSw)(E2q zkv?i9un4Ok+GDMc@os!43r$vGhr~i&f-$%v1f`GU)~;v()+FmCd#gr*EzO1#ZktEu z^s<#hcQsv&YO_j{XhPX~-$00A$iD&WBBV?E{rnJ-qYR7(4+rxfSGrKo&pk-w2Z~%V=P6DLi|Jj-4ynVD-0GJc*H!vN!^@HD7bp zM)Ds##xpE3iPhfXamfe^Q&%0=ACB=SU2RJhU5;d|E@xjh2v-eqE1{k)_2eC-$#83H z`kQ!s4{Dp;c1_AfOJ@%@0c*;*RhdcMiHj>G%x3*&hvNy7uhLJRy?idn1E#7Ty)jj) z0Y|EVmg`1aBPu?FDp))z3LZ$Dp%w6WLSbAdY2xSXSTE-~3_kkVaG(yz8*3mac`vxh((n;-`8C(L&Q@^zIb(FjmP zf~=q`qHph<<0&Dwj}M_WiR@SA(Q&|i|K6C#hM%rR(ti6!=|UNDexK(VHJl&D&#O@h zrlX)O2(7wov7Uxf?yxt#n5Zc>!5LAbW?G7`72f1#^0qGZg~FJA3WC~d^iKHO z5A?_6gge!Tn8&%thd$QwV&l%3CCUReKgGE{^8xg5VE%~^FMed?Ph{joMK=z~*2LT! z7xw90424l;dp4u3UG}kUB6=E6k3vC;CsyaWV~GizxBOLKPRh3Xfn#$Re+5pR2@_Kq z-BjtV@Se9aU=Ww2)6 ziUD1U6ROH{^ar;K!lH>*!Pg3q-5gKpEf?3v$&OajjDcMkmjSsQpiNg>jKA)=3$*)~ zu77pK*dVG--h(GS`-$#(sVkDQ)Y!<6$gnEG+|I6@tDk3A#9fX@$0GXcz0UxsuE6v$ zaDPC08iR=(jgfKHqg>cOB%CCXepWH}*-Q&k$D9`6<)`fWs#nsSOnrhGL4CrJWvjWf zj8$KTlh*gK7rRf%bekd=1`;P}#E(wBpIUITb=?IL^^sU8Bxr+oG?-WeM^XYW5I_m^-=IFN?(lqBZBFancDCIi z%~Hl>4jOO=#vT+ibU0|B>8X3Pq0?~6#@wzkNK4Pm|B!J`!$;Y!{)d}3mD;I2^O;pt zXhi5O(f*loSbXLvQWBYDrUwQtkclLjAwJ0=4j8%|D9?L7f+@(8`^6&7*(e2Hh7>HL zAsT_NoSi#lTO&n<#O}B>`YEeW%SaWlC;F#NIWQ`YJ6x+lr_1YkYGAx4wLQZ z6y#+u(G)Nt4$V(Q0UKivSbxiBi5T!@jjQ7%@3c`PBY*?KrsMrzhHo;=Rw5Y@Si1@S>M)xmglOQWfZkc%tkfKXAqk^}9$`wMno1Y7UnLJ6kD_LsC@>8qY9PLkPTJoBA;e@8qgZb z?61;xo8Xo}w&&OBP#IlO0`3`q}Vb){_252lvDa-T%ng;Cz z+(Lsb4qss&-d4#q$jes@Yun(*R3w6@*`jd-(*Z-WrIN7Qz8H#vk7YSgaQz%D&8qSm zsYy(K&U3GxJ^X%8XwZkKR4mrzEWh#Bb48|>UpV#LfcwIuj_E_Or?{EVLH>~8Dl&#%X2Mb-@x$mtpt8-|xKo1# zSY;ta_Y*omfh0u&zL38b1JHL|L)L31K;KvUz zDxQ4#GAEBtjp?#nBerz614|zJO~^TnZhk2J*pqosE7wc3vo;S=$k4oy;M6{@z|rVX z#b8gA0apC$qt!g};1XvrgnK-FTSv2d6XWUyo0FOh13{ZCDJUGm)&r=&0*X3cn$pTp z>JG5|VjF4}cKCHGQc*@mZ%jj(_0E=#q_w;w^~}V!N{Xg&%0v%n1?D6w$IQ^bRoO^I z(3r2MF9^nV+yBmY$~S-vYK4Ekn5(u`QyVbMcA^#`cud-@bXREO&=)&jiTkqSB zSF;G*kb0b|i_j>D!YC!+uQap1?1_@8c#vdHzb#UV_@NuNzp&=U0ZneQ^c4gZsh(ZIoKX-$2g2ao}+f4{Do4rOis7) zw^#QlG81|iqjwH)I2sHb1^wxl0}4>mDlZGlTG_w$@)Cx?aeHi`^EZJhHn-)-+uEGv zM(G%n9Qb#o5UrSen$S&nC-0fLD5R9Y*^lZtiGFk``+t_bZjnD(eR5M&Q25qbz*`wY zuEG8=dTIRx2s3~e;+q&ovCBJr2h2(TL|12j^T@;DIxKcu_G2Gj=B8A;l&%+SP?qBx*Wwm za8IF~vFhl)$0NN&A{`JXO8)Dx6a6dbbN@SG0hPfp+L4f9?e&(rRiDrdf-&rkWK>|# z0z&}4AI=Q3?n`3=889fl4@U9?E0sa|bfKU5isBDM3?Uvj0wH}pRtp>M@-#jO%so9n`A>EO?H@@n8qMG@`!y^Sn1Q6z){6xLq+r``%pw|UxKHhNj6xxbYeQ&Z%wneMttROX>hMY zevOG25Vt?f!e#f)mjw}+GlRbkQiDX7 zuEhwN@0G%dBEC5JtW~E$0-jqLic}qTV)#jy<05$bTqX7O#uiCNc;Yv{qFh2ZMs7$a zH`rEs@iNaln?xGEUle5M=26s-`56TxCT)g2+H` z-QhuR&JPp~;9el*WVLaW-FiQBz@=| z2)L_MIG64<^^uVIVe5+Bq@7-@JW0&VFniYKL^u!tId+E%2Hw7J1z{gXC2m2SR6ta& z97>Vem$y{qY2u?Wl?Fz*g^+X z`)w*6T&vE@4@KeBG&$*!uRHg#34y;H1f8@2lb zr@G6?l!FK-BTeL>QF{1M5+k%3)a5Qz(KM*j?K1=tOFgtUUIs^b~M^V3^eV^64^WW$0_7Uv06(JtTVSe zJc^vRh|5%6Y`WZ6%>t%%wx>1J4C8=(PL2_ZE6r!jf=49UCX|{R#MjsaU9=H=80|I_CMA*&6hJRYOhLwN`9KNL8k{P|tp;VDF?cBHJqsmv6|G^}> z)%zwt8h(@CTxY>skiTz*|NWQG12qrbQuE}K0fKOjy7!*|+-~0*00031004ymegFjk z000000stTYFaUP|0040dmjD0&000007629i7629iS^%a2kpfKu=L4z(}9^9p(k5(`HQj0@Ea91LU(>J4=b{tk-{{ts0U zR1o?RuM$uao)Y{MixdPDpcO6^ffe)?niq>0FBq~JFd3>EL>k;1VjK<}RUCpGz#Rh} zAsu2KMjq@RX&@dTiXlEC9U`A1_9Jj44Sr9rk~6adiomxjB$ySqCi;umolfNkhB90q_9un8D}h@Ehea2~lzJ)_i7&M8Nv zn5U5wMz~>=R<`J;oeKKtpgr!+s6S{xeHe{OhQQ_;SQD=rjK%;{9>gQp_?X5i2H}3QD7< zmuGrNu}>2BHHW`;t+UArw;Zs_2-l?Op@ceysicN%nrWnk2C6yZlzZC$v?mEkvYjNK zO>iuN0C?JCU}Rum+V)?XA&QCj|Cj%7m=u8`sGt=9oWusi0C?JCU}EBBoWQ`!z`)eS zw1revTJ1qMa{0*?`S0C?I|OG84%aS;CgGaaB^cKck%>kiqr?NzR4+smg5%()r@Iu;RsiF(ne^Cen>}N3h*2+@hWfd7Vq)_ANRKP zjt&l_v)L?w-Ui1v{gIpeJX`13=cC@%qC@2^vFu0oEqkB6$WCTP)UMi53u<1%5)hww z#4S#7h&`NJ+5^8kaRRMCHuA!-=t)r`_Z(wL-Y+`C=ZeeL z?c?j`9}pN691DIj`x0n6joePT9-lFVCGsqI7J1GT zRgvdSQ4@K=6m^joP0&$7yziWUB1A@QOghxVmJ@+-y z!yLZuZ6A~0_rWzCh!t@v^Zs-`{;5J$vVW?~R4*ohyn(|Z2CTH!9ZVmpxd$zQjs9a_ z3DY&r)i7I|i?PXUtW$Y|_TI@fA@q#ypoSU|I>-y6jFQqpL9|5CI7uP7j)to5^9qlW zQL_Yr&$<39w;c;5zb_mRH1(MQ2l^qXc_3=!sso&LbXS5&wH}JTOklvMT8e#os2v-c zO(mRdQ{HG|_k8EKZ@*9nb?~4vTH5&0071A}npD1?_old6%Ev~NFRXR&Fh5NE!naOi z0H18B=XR=}?zTSA=9%HU?txAN!}r`Afu&i1cE1hE;?p6zGw7ReF4&1fz zXy6V17p>U+zq(K0XLkWh;|bYOZzmaGjD(EM{5z7rqXz`&ySr2FBIPsv;p{1y!&5%r z#4LVvi2k`Lly&+P-@^KZ;X4p7g|!I0QYQzBLD*MD+L2#k`P%gG&S3Ed3riMnP0uPd zfAv_`W)1^D6oikVkBbBi9CIu)vt?#3OVFTqR*=o}_a_!R68cL9^CywT5IGEy#}Ea~ zmqZamlrTgYLsT$75>*UQ!w_{0(ZKvmG%-XAL$onO2lFk_#SlFV(Z>+3dWPHjPTi#2mCk)k7O7)CVI=8&nlr9)bmz2^KrF3n1Zziv(|d5e>nG=wyi@EmD{)O@0C?JC@ZQ02A}C@bBV%9W2F9Hn3>*x}1sfUI zoHj`?GH8Jqo4Gj{IUp=iHZY6bX%{mC10w?`kj>$=i@^cHW@d2NsKVG07_q^jBVr?S zipxed5N{Vp0|O(ALq~E*1V~9F5NzhT{l+3`$l+3uEf$_gGlPCiNQ{MltOeu^z{{Q+f1L6Y!v6~8{0C?I=%pD9u zQ5c8u=Y8M%vEZDYE3IA13WFeb=u(`8vgEc3)VZl{yN!;bG>dAII<;-Ybxm5q*{|~I00XOeuW9bjs$^Mdqy}#v#O|0aW zF%EK9_2lQc$eC^XkxTU-eyveaPwGq%Jb`yxK3QDzJ3r*_WE?a0pf_HMQY5kp+*X5C5eBPj!PGGc_2|8< zxz~Ng-*DyKs-VOqru#+c_|w#MbXwQ7S=x|2+Gisf&Kf_u$-ePPD7#~J&2dz_kkK`J zt~NZUm#fjGUGj%ZnJAiN&hHe{)kCOl#Uw=TQZBsou8TQW6f&mia7>eui=BA96U6lY zz1ya3#O$q??8ds>-semj$I_sGMK<)JEQGSxYWcKsW$?zk{3Um5G8ljT2j^I!#1<7C z7RV4lI6{hs)D99kCuk~a%SX5X!>hIcVTx2Rqmasog&8U~h`x1hqxBhY7X#*BLy}laZ5>~qT2QOt1$(bP&#vgc01w9C=^+g!8SL9Mt-JsvkT??M88)-Jy z?jgofCpxh>a2_8x#GnuF-G$7d!=6qr9TA(`t@O?S? z=YxP#+``hz+Q!z--oeqy z*~Qh(-NTO{csM`+0KhQ%{n>7qY}?i>-CLn+6VxV|oAh3UC^6zBNRlE=hAcVq6ev=n zOob{n>NIH5qD_Y`J^Bn7GGfexDKq9QSh8ZxMg|$#vE|K0Ca(NsmPJ+`Jb7{BBO3?V z<&aY@x#f{pKK2|r$*+Kd3Mu?=S)LIX2m$~A#(7SxF1Fns*4F#OtEQT2kfdJk&Hs+- zKbx)I-^n0zlsPUhA|ayk6$2ktwvmX_sPH6(BPm}95>fT09pOqAkC+sXj#LDZ!GrH^ cwwtZ5v-y0QIm?{C0ql!OFaQAn0ssF157FeRS^xk5 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/katex/fonts/KaTeX_Typewriter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e40ab151617cb25fce5b4e739aab4f44ff3a652d GIT binary patch literal 17272 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.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left} diff --git a/katex/katex.min.js b/katex/katex.min.js new file mode 100644 index 00000000..906ce128 --- /dev/null +++ b/katex/katex.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),i=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;a=i.start;var s=i.end;a===o.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=o.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+o.slice(a-15,a):o.slice(0,a))+h+(s+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(t){var e=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(t);return null!=e?e[1]:"_relative"}},u=function(){function t(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.output=c.deflt(t.output,"htmlAndMathml"),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.minRuleThickness=Math.max(0,c.deflt(t.minRuleThickness,0)),this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.trust=c.deflt(t.trust,!1),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3))}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},e.isTrusted=function(t){t.url&&!t.protocol&&(t.protocol=c.protocolFromUrl(t.url));var e="function"==typeof this.trust?this.trust(t):this.trust;return Boolean(e)},t}(),p=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return d[f[this.id]]},e.sub=function(){return d[g[this.id]]},e.fracNum=function(){return d[x[this.id]]},e.fracDen=function(){return d[v[this.id]]},e.cramp=function(){return d[b[this.id]]},e.text=function(){return d[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),d=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function M(t){for(var e=0;e=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"span")},e.toMarkup=function(){return q.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"a")},e.toMarkup=function(){return q.call(this,"a")},t}(),R=function(){function t(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createElement("img");for(var e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t},e.toMarkup=function(){var t=""+this.alt+"=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=T(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+=""):n},t}(),L=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r":""},t}(),P=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="",">"),$("math",Z,et,":",":"),$("math",Z,et,"\u2248","\\approx",!0),$("math",Z,et,"\u2245","\\cong",!0),$("math",Z,et,"\u2265","\\ge"),$("math",Z,et,"\u2265","\\geq",!0),$("math",Z,et,"\u2190","\\gets"),$("math",Z,et,">","\\gt"),$("math",Z,et,"\u2208","\\in",!0),$("math",Z,et,"\ue020","\\@not"),$("math",Z,et,"\u2282","\\subset",!0),$("math",Z,et,"\u2283","\\supset",!0),$("math",Z,et,"\u2286","\\subseteq",!0),$("math",Z,et,"\u2287","\\supseteq",!0),$("math",K,et,"\u2288","\\nsubseteq",!0),$("math",K,et,"\u2289","\\nsupseteq",!0),$("math",Z,et,"\u22a8","\\models"),$("math",Z,et,"\u2190","\\leftarrow",!0),$("math",Z,et,"\u2264","\\le"),$("math",Z,et,"\u2264","\\leq",!0),$("math",Z,et,"<","\\lt"),$("math",Z,et,"\u2192","\\rightarrow",!0),$("math",Z,et,"\u2192","\\to"),$("math",K,et,"\u2271","\\ngeq",!0),$("math",K,et,"\u2270","\\nleq",!0),$("math",Z,"spacing","\xa0","\\ "),$("math",Z,"spacing","\xa0","~"),$("math",Z,"spacing","\xa0","\\space"),$("math",Z,"spacing","\xa0","\\nobreakspace"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0","~"),$("text",Z,"spacing","\xa0","\\space"),$("text",Z,"spacing","\xa0","\\nobreakspace"),$("math",Z,"spacing",null,"\\nobreak"),$("math",Z,"spacing",null,"\\allowbreak"),$("math",Z,"punct",",",","),$("math",Z,"punct",";",";"),$("math",K,J,"\u22bc","\\barwedge",!0),$("math",K,J,"\u22bb","\\veebar",!0),$("math",Z,J,"\u2299","\\odot",!0),$("math",Z,J,"\u2295","\\oplus",!0),$("math",Z,J,"\u2297","\\otimes",!0),$("math",Z,"textord","\u2202","\\partial",!0),$("math",Z,J,"\u2298","\\oslash",!0),$("math",K,J,"\u229a","\\circledcirc",!0),$("math",K,J,"\u22a1","\\boxdot",!0),$("math",Z,J,"\u25b3","\\bigtriangleup"),$("math",Z,J,"\u25bd","\\bigtriangledown"),$("math",Z,J,"\u2020","\\dagger"),$("math",Z,J,"\u22c4","\\diamond"),$("math",Z,J,"\u22c6","\\star"),$("math",Z,J,"\u25c3","\\triangleleft"),$("math",Z,J,"\u25b9","\\triangleright"),$("math",Z,"open","{","\\{"),$("text",Z,"textord","{","\\{"),$("text",Z,"textord","{","\\textbraceleft"),$("math",Z,"close","}","\\}"),$("text",Z,"textord","}","\\}"),$("text",Z,"textord","}","\\textbraceright"),$("math",Z,"open","{","\\lbrace"),$("math",Z,"close","}","\\rbrace"),$("math",Z,"open","[","\\lbrack"),$("text",Z,"textord","[","\\lbrack"),$("math",Z,"close","]","\\rbrack"),$("text",Z,"textord","]","\\rbrack"),$("math",Z,"open","(","\\lparen"),$("math",Z,"close",")","\\rparen"),$("text",Z,"textord","<","\\textless"),$("text",Z,"textord",">","\\textgreater"),$("math",Z,"open","\u230a","\\lfloor",!0),$("math",Z,"close","\u230b","\\rfloor",!0),$("math",Z,"open","\u2308","\\lceil",!0),$("math",Z,"close","\u2309","\\rceil",!0),$("math",Z,"textord","\\","\\backslash"),$("math",Z,"textord","\u2223","|"),$("math",Z,"textord","\u2223","\\vert"),$("text",Z,"textord","|","\\textbar"),$("math",Z,"textord","\u2225","\\|"),$("math",Z,"textord","\u2225","\\Vert"),$("text",Z,"textord","\u2225","\\textbardbl"),$("text",Z,"textord","~","\\textasciitilde"),$("text",Z,"textord","\\","\\textbackslash"),$("text",Z,"textord","^","\\textasciicircum"),$("math",Z,et,"\u2191","\\uparrow",!0),$("math",Z,et,"\u21d1","\\Uparrow",!0),$("math",Z,et,"\u2193","\\downarrow",!0),$("math",Z,et,"\u21d3","\\Downarrow",!0),$("math",Z,et,"\u2195","\\updownarrow",!0),$("math",Z,et,"\u21d5","\\Updownarrow",!0),$("math",Z,tt,"\u2210","\\coprod"),$("math",Z,tt,"\u22c1","\\bigvee"),$("math",Z,tt,"\u22c0","\\bigwedge"),$("math",Z,tt,"\u2a04","\\biguplus"),$("math",Z,tt,"\u22c2","\\bigcap"),$("math",Z,tt,"\u22c3","\\bigcup"),$("math",Z,tt,"\u222b","\\int"),$("math",Z,tt,"\u222b","\\intop"),$("math",Z,tt,"\u222c","\\iint"),$("math",Z,tt,"\u222d","\\iiint"),$("math",Z,tt,"\u220f","\\prod"),$("math",Z,tt,"\u2211","\\sum"),$("math",Z,tt,"\u2a02","\\bigotimes"),$("math",Z,tt,"\u2a01","\\bigoplus"),$("math",Z,tt,"\u2a00","\\bigodot"),$("math",Z,tt,"\u222e","\\oint"),$("math",Z,tt,"\u222f","\\oiint"),$("math",Z,tt,"\u2230","\\oiiint"),$("math",Z,tt,"\u2a06","\\bigsqcup"),$("math",Z,tt,"\u222b","\\smallint"),$("text",Z,"inner","\u2026","\\textellipsis"),$("math",Z,"inner","\u2026","\\mathellipsis"),$("text",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u22ef","\\@cdots",!0),$("math",Z,"inner","\u22f1","\\ddots",!0),$("math",Z,"textord","\u22ee","\\varvdots"),$("math",Z,"accent-token","\u02ca","\\acute"),$("math",Z,"accent-token","\u02cb","\\grave"),$("math",Z,"accent-token","\xa8","\\ddot"),$("math",Z,"accent-token","~","\\tilde"),$("math",Z,"accent-token","\u02c9","\\bar"),$("math",Z,"accent-token","\u02d8","\\breve"),$("math",Z,"accent-token","\u02c7","\\check"),$("math",Z,"accent-token","^","\\hat"),$("math",Z,"accent-token","\u20d7","\\vec"),$("math",Z,"accent-token","\u02d9","\\dot"),$("math",Z,"accent-token","\u02da","\\mathring"),$("math",Z,Q,"\u0131","\\imath",!0),$("math",Z,Q,"\u0237","\\jmath",!0),$("text",Z,"textord","\u0131","\\i",!0),$("text",Z,"textord","\u0237","\\j",!0),$("text",Z,"textord","\xdf","\\ss",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\u0153","\\oe",!0),$("text",Z,"textord","\xf8","\\o",!0),$("text",Z,"textord","\xc6","\\AE",!0),$("text",Z,"textord","\u0152","\\OE",!0),$("text",Z,"textord","\xd8","\\O",!0),$("text",Z,"accent-token","\u02ca","\\'"),$("text",Z,"accent-token","\u02cb","\\`"),$("text",Z,"accent-token","\u02c6","\\^"),$("text",Z,"accent-token","\u02dc","\\~"),$("text",Z,"accent-token","\u02c9","\\="),$("text",Z,"accent-token","\u02d8","\\u"),$("text",Z,"accent-token","\u02d9","\\."),$("text",Z,"accent-token","\u02da","\\r"),$("text",Z,"accent-token","\u02c7","\\v"),$("text",Z,"accent-token","\xa8",'\\"'),$("text",Z,"accent-token","\u02dd","\\H"),$("text",Z,"accent-token","\u25ef","\\textcircled");var rt={"--":!0,"---":!0,"``":!0,"''":!0};$("text",Z,"textord","\u2013","--"),$("text",Z,"textord","\u2013","\\textendash"),$("text",Z,"textord","\u2014","---"),$("text",Z,"textord","\u2014","\\textemdash"),$("text",Z,"textord","\u2018","`"),$("text",Z,"textord","\u2018","\\textquoteleft"),$("text",Z,"textord","\u2019","'"),$("text",Z,"textord","\u2019","\\textquoteright"),$("text",Z,"textord","\u201c","``"),$("text",Z,"textord","\u201c","\\textquotedblleft"),$("text",Z,"textord","\u201d","''"),$("text",Z,"textord","\u201d","\\textquotedblright"),$("math",Z,"textord","\xb0","\\degree",!0),$("text",Z,"textord","\xb0","\\degree"),$("text",Z,"textord","\xb0","\\textdegree",!0),$("math",Z,Q,"\xa3","\\pounds"),$("math",Z,Q,"\xa3","\\mathsterling",!0),$("text",Z,Q,"\xa3","\\pounds"),$("text",Z,Q,"\xa3","\\textsterling",!0),$("math",K,"textord","\u2720","\\maltese"),$("text",K,"textord","\u2720","\\maltese"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0"," "),$("text",Z,"spacing","\xa0","~");for(var at=0;at<'0123456789/@."'.length;at++){var nt='0123456789/@."'.charAt(at);$("math",Z,"textord",nt,nt)}for(var it=0;it<'0123456789!@*()-=+[]<>|";:?/.,'.length;it++){var ot='0123456789!@*()-=+[]<>|";:?/.,'.charAt(it);$("text",Z,"textord",ot,ot)}for(var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ht=0;ht=5?0:t>=3?1:2]){var r=Y[e]={cssEmPerMu:V.quad[e]/18};for(var a in V)V.hasOwnProperty(a)&&(r[a]=V[a][e])}return Y[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();kt.BASESIZE=6;var St=kt,Mt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},zt={ex:!0,em:!0,mu:!0},At=function(t){return"string"!=typeof t&&(t=t.unit),t in Mt||t in zt||"ex"===t},Tt=function(t,e){var r;if(t.unit in Mt)r=Mt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new o("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Bt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Ct=function(t,e,r){return j[r][t]&&j[r][t].replace&&(t=j[r][t].replace),{value:t,metrics:G(t,e,r)}},qt=function(t,e,r,a,n){var i,o=Ct(t,e,r),s=o.metrics;if(t=o.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),i=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),i=new E(t,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var l=a.getColor();l&&(i.style.color=l)}return i},Nt=function(t,e){if(T(t.classes)!==T(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},It=function(t){for(var e=0,r=0,a=0,n=0;ne&&(e=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Rt=function(t,e,r,a){var n=new N(t,e,r,a);return It(n),n},Ot=function(t,e,r,a){return new N(t,e,r,a)},Et=function(t){var e=new A(t);return It(e),e},Lt=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Ht={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Pt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Dt={fontMap:Ht,makeSymbol:qt,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ct(t,"Main-Bold",e).metrics?qt(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===j[e][t].font?qt(t,"Main-Regular",e,r,a):qt(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Rt,makeSvgSpan:Ot,makeLineSpan:function(t,e,r){var a=Rt([t],[],e);return a.height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return It(n),n},makeFragment:Et,wrapFragment:function(t,e){return t instanceof A?Rt([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,i=1;i0&&(i.push(pe(o,e)),o=[]),i.push(n[s]));o.length>0&&i.push(pe(o,e)),r&&((a=pe(se(r,e,!0))).classes=["tag"],i.push(a));var l=re(["katex-html"],i);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function fe(t){return new A(t)}var ge=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),xe=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),ve={MathNode:ge,TextNode:xe,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?""+this.character+"":''},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:fe},be=function(t,e,r){return!j[e][t]||!j[e][t].replace||55349===t.charCodeAt(0)||rt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=j[e][t].replace),new ve.TextNode(t)},ye=function(t){return 1===t.length?t[0]:new ve.MathNode("mrow",t)},we=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(j[a][n]&&j[a][n].replace&&(n=j[a][n].replace),G(n,Dt.fontMap[r].fontName,a)?Dt.fontMap[r].variant:null)},ke=function(t,e,r){if(1===t.length){var a=Me(t[0],e);return r&&a instanceof ge&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Se=function(t,e,r){return ye(ke(t,e,r))},Me=function(t,e){if(!t)return new ve.MathNode("mrow");if(Jt[t.type])return Jt[t.type](t,e);throw new o("Got group of unknown type: '"+t.type+"'")};function ze(t,e,r,a){var n,i=ke(t,r);n=1===i.length&&i[0]instanceof ge&&c.contains(["mrow","mtable"],i[0].type)?i[0]:new ve.MathNode("mrow",i);var o=new ve.MathNode("annotation",[new ve.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var s=new ve.MathNode("semantics",[n,o]),h=new ve.MathNode("math",[s]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var l=a?"katex":"katex-mathml";return Dt.makeSpan([l],[h])}var Ae=function(t){return new St({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Te=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Dt.makeSpan(r,[t])}return t},Be=function(t,e,r){var a,n=Ae(r);if("mathml"===r.output)return ze(t,e,n,!0);if("html"===r.output){var i=de(t,n);a=Dt.makeSpan(["katex"],[i])}else{var o=ze(t,e,n,!1),s=de(t,n);a=Dt.makeSpan(["katex"],[o,s])}return Te(a,r)},Ce={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},qe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ne=function(t){return"ordgroup"===t.type?t.body.length:1},Ie=function(t,e,r,a){var n,i=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Dt.makeSpan(["stretchy",e],[],a),"fbox"===e){var o=a.color&&a.getColor();o&&(n.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new P({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new P({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new L(s,{width:"100%",height:i+"em"});n=Dt.makeSvgSpan([],[h],a)}return n.height=i,n.style.height=i+"em",n},Re=function(t){var e=new ve.MathNode("mo",[new ve.TextNode(Ce[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},Oe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s=Ne(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var l=new H(i),m=new L([l],{width:"100%",height:o+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Dt.makeSvgSpan([],[m],e),minWidth:0,height:o}}var u,p,d=[],f=qe[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],p=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(a.style.minWidth=n+"em"),a},Ee=function(t,e){var r,a,n,i=Vt(t,"supsub");i?(r=(a=Ft(i.base,"accent")).base,i.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span but got "+String(t)+".")}(ue(i,e)),i.base=a):r=(a=Ft(t,"accent")).base;var o=ue(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=D(ue(h,e.havingCrampedStyle())).skew}var l,m=Math.min(o.height,e.fontMetrics().xHeight);if(a.isStretchy)l=Oe(a,e),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,p;"\\vec"===a.label?(u=Dt.staticSvg("vec",e),p=Dt.svgData.vec[1]):((u=D(u=Dt.makeOrd({mode:a.mode,text:a.label},e,"textord"))).italic=0,p=u.width),l=Dt.makeSpan(["accent-body"],[u]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),m=o.height);var f=s;d||(f-=p/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Dt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Le=function(t,e){var r=t.isStretchy?Re(t.label):new ve.MathNode("mo",[be(t.label,t.mode)]),a=new ve.MathNode("mover",[Me(t.base,e),r]);return a.setAttribute("accent","true"),a},He=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));Qt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!He.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=ue(t.base,e),a=Oe(t,e),n="\\utilde"===t.label?.12:0,i=Dt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:function(t,e){var r=Re(t.label),a=new ve.MathNode("munder",[Me(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Pe=function(t){var e=new ve.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};Qt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),i=Dt.wrapFragment(ue(t.body,n,e),e);i.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Dt.wrapFragment(ue(t.below,n,e),e)).classes.push("x-arrow-pad"));var o,s=Oe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=i.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h}]},e);return o.children[0].children[0].children[1].classes.push("svg-align"),Dt.makeSpan(["mrel","x-arrow"],[o],e)},mathmlBuilder:function(t,e){var r,a=Re(t.label);if(t.body){var n=Pe(Me(t.body,e));if(t.below){var i=Pe(Me(t.below,e));r=new ve.MathNode("munderover",[a,i,n])}else r=new ve.MathNode("mover",[a,n])}else if(t.below){var o=Pe(Me(t.below,e));r=new ve.MathNode("munder",[a,o])}else r=Pe(),r=new ve.MathNode("mover",[a,r]);return r}}),Qt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ft(e[0],"ordgroup").body,n="",i=0;i","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Je=[0,1.2,1.8,2.4,3],Qe=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],tr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],er=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],rr=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ar=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);ne)return r[n]}return r[r.length-1]},nr=function(t,e,r,a,n,i){var o;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),o=c.contains(Ke,t)?Qe:c.contains($e,t)?er:tr;var s=ar(t,e,o,a);return"small"===s.type?function(t,e,r,a,n,i){var o=Dt.makeSymbol(t,"Main-Regular",n,a),s=Ue(o,e,a,i);return r&&Ge(s,a,e),s}(t,s.style,r,a,n,i):"large"===s.type?Ye(t,s.size,r,a,n,i):_e(t,e,r,a,n,i)},ir=function(t,e){var r,a,n=e.havingBaseSizing(),i=ar("\\surd",t*n.sizeMultiplier,er,n),o=n.sizeMultiplier,s=Math.max(0,e.minRuleThickness-e.fontMetrics().sqrtRuleThickness),h=0,l=0,m=0;return"small"===i.type?(t<1?o=1:t<1.4&&(o=.7),l=(1+s)/o,(r=je("sqrtMain",h=(1+s+.08)/o,m=1e3+1e3*s+80,s,e)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Je[i.size],l=(Je[i.size]+s)/o,h=(Je[i.size]+s+.08)/o,(r=je("sqrtSize"+i.size,h,m,s,e)).style.minWidth="1.02em",a=1/o):(h=t+s+.08,l=t+s,m=Math.floor(1e3*t+s)+80,(r=je("sqrtTall",h,m,s,e)).style.minWidth="0.742em",a=1.056),r.height=l,r.style.height=h+"em",{span:r,advanceWidth:a,ruleWidth:(e.fontMetrics().sqrtRuleThickness+s)*o}},or=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains($e,t)||c.contains(Ke,t))return Ye(t,e,!1,r,a,n);if(c.contains(Ze,t))return _e(t,Je[e],!1,r,a,n);throw new o("Illegal delimiter: '"+t+"'")},sr=nr,hr=function(t,e,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-o,r+o),l=Math.max(h/500*901,2*h-s);return nr(t,l,!0,a,n,i)},lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},mr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function cr(t,e){var r=Yt(t);if(r&&c.contains(mr,r.text))return r;throw new o("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ur(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Qt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lr[t.funcName].size,mclass:lr[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Dt.makeSpan([t.mclass]):or(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(be(t.delim,t.mode));var r=new ve.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Qt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:cr(e[0],t).text,color:r}}}),Qt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Ft(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(t,e){ur(t);for(var r,a,n=se(t.body,e,!0,["mopen","mclose"]),i=0,o=0,s=!1,h=0;h-1?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===t.label){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(t.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};Qt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=Ft(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),Qt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=e[0];return{type:"enclose",mode:a.mode,label:n,body:i}},htmlBuilder:pr,mathmlBuilder:dr});var fr={};function gr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h0&&(b+=.25),l.push({pos:b,isDashed:t[e]})}for(y(i[0]),r=0;r0&&(M<(B+=v)&&(M=B),B=0),t.addJot&&(M+=f),z.height=S,z.depth=M,b+=S,z.pos=b,b+=M+B,h[r]=z,y(i[r+1])}var C,q,N=b/2+e.fontMetrics().axisHeight,I=t.cols||[],R=[];for(a=0,q=0;a=s)){var P=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.pregap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C));var D=[];for(r=0;r0){for(var G=Dt.makeLineSpan("hline",e,m),Y=Dt.makeLineSpan("hdashline",e,m),W=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),_=X.pos-N;X.isDashed?W.push({type:"elem",elem:Y,shift:_}):W.push({type:"elem",elem:G,shift:_})}h=Dt.makeVList({positionType:"individualShift",children:W},e)}return Dt.makeSpan(["mord"],[h],e)},wr={c:"center ",l:"left ",r:"right "},kr=function(t,e){var r=new ve.MathNode("mtable",t.body.map(function(t){return new ve.MathNode("mtr",t.map(function(t){return new ve.MathNode("mtd",[Me(t,e)])}))})),a=.5===t.arraystretch?.1:.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",i="";if(t.cols){var o=t.cols,s="",h=!1,l=0,m=o.length;"separator"===o[0].type&&(n+="top ",l=1),"separator"===o[o.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x0&&c&&(d=1),a[u]={type:"align",align:p,pregap:d,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return vr(t.parser,r,br(t.envName))},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=vr(t.parser,{hskipBeforeAndAfter:!1},br(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1],rightColor:void 0}:r},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:.5},"script");return e.colSeparationType="small",e},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(t,e){var r=(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new o("Unknown column alignment: "+e,t)});if(r.length>1)throw new o("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=vr(t.parser,a,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return a},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},br(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["aligned"],props:{numArgs:0},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return vr(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["alignedat"],props:{numArgs:1},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),Qt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new o(t.funcName+" valid only within array environment")}});var Mr=fr;Qt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new o("Invalid environment name",n);for(var i="",s=0;s=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Rr=function(t,e){var r,a=Ir(t.size,e.style),n=a.fracNum(),i=a.fracDen();r=e.havingStyle(n);var o=ue(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,p=c):(u=e.fontMetrics().num3,p=3*c),d=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-o.depth-(y+.5*m)0&&(e="."===(e=t)?null:e),e};Qt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],i=Vt(e[0],"atom");i&&(i=Ut(e[0],"open"));var o=i?Lr(i.text):null,s=Vt(e[1],"atom");s&&(s=Ut(e[1],"close"));var h,l=s?Lr(s.text):null,m=Ft(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",p=Vt(e[3],"ordgroup");if(p){if(p.body.length>0){var d=Ft(p.body[0],"textord");u=Er[Number(d.text)]}}else p=Ft(e[3],"textord"),u=Er[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:o,rightDelim:l,size:u}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ft(e[0],"size").value,token:a}}}),Qt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ft(e[1],"infix").size),i=e[2],o=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:i,continued:!1,hasBarLine:o,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Rr,mathmlBuilder:Or});var Hr=function(t,e){var r,a,n=e.style,i=Vt(t,"supsub");i?(r=i.sup?ue(i.sup,e.havingStyle(n.sup()),e):ue(i.sub,e.havingStyle(n.sub()),e),a=Ft(i.base,"horizBrace")):a=Ft(t,"horizBrace");var o,s=ue(a.base,e.havingBaseStyle(w.DISPLAY)),h=Oe(a,e);if(a.isOver?(o=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(o=Dt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e);o=a.isOver?Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Dt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e)};Qt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Hr,mathmlBuilder:function(t,e){var r=Re(t.label);return new ve.MathNode(t.isOver?"mover":"munder",[Me(t.base,e),r])}}),Qt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ft(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:ee(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(t,e){var r=se(t.body,e,!1);return Dt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=Se(t.body,e);return r instanceof ge||(r=new ge("mrow",[r])),r.setAttribute("href",t.href),r}}),Qt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i0&&(a=Tt(t.totalheight,e)-r,a=Number(a.toFixed(2)));var n=0;t.width.number>0&&(n=Tt(t.width,e));var i={height:r+a+"em"};n>0&&(i.width=n+"em"),a>0&&(i.verticalAlign=-a+"em");var o=new R(t.src,t.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:function(t,e){var r=new ve.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var a=Tt(t.height,e),n=0;if(t.totalheight.number>0&&(n=(n=Tt(t.totalheight,e)-a).toFixed(2),r.setAttribute("valign","-"+n+"em")),r.setAttribute("height",a+n+"em"),t.width.number>0){var i=Tt(t.width,e);r.setAttribute("width",i+"em")}return r.setAttribute("src",t.src),r}}),Qt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ft(e[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Dt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=Tt(t.dimension,e);return new ve.SpaceNode(r)}}),Qt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;"clap"===t.alignment?(r=Dt.makeSpan([],[ue(t.body,e)]),r=Dt.makeSpan(["inner"],[r],e)):r=Dt.makeSpan(["inner"],[ue(t.body,e)]);var a=Dt.makeSpan(["fix"],[]),n=Dt.makeSpan([t.alignment],[r,a],e),i=Dt.makeSpan(["strut"]);return i.style.height=n.height+n.depth+"em",i.style.verticalAlign=-n.depth+"em",n.children.unshift(i),n=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},e),Dt.makeSpan(["mord"],[n],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);if("rlap"!==t.alignment){var a="llap"===t.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),Qt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),Qt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new o("Mismatched "+t.funcName)}});var Dr=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};Qt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(t,e){return{type:"mathchoice",mode:t.parser.mode,display:ee(e[0]),text:ee(e[1]),script:ee(e[2]),scriptscript:ee(e[3])}},htmlBuilder:function(t,e){var r=Dr(t,e),a=se(r,e,!1);return Dt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Dr(t,e);return Se(r,e)}});var Fr=function(t,e,r,a,n,i,o){var s,h,l;if(t=Dt.makeSpan([],[t]),e){var m=ue(e,a.havingStyle(n.sup()),a);h={elem:m,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var c=ue(r,a.havingStyle(n.sub()),a);s={elem:c,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-c.height)}}if(h&&s){var u=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var p=t.height-o;l=Dt.makeVList({positionType:"top",positionData:p,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t}]},a)}else{if(!h)return t;var d=t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:d,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}return Dt.makeSpan(["mop","op-limits"],[l],a)},Vr=["\\smallint"],Ur=function(t,e){var r,a,n,i=!1,o=Vt(t,"supsub");o?(r=o.sup,a=o.sub,n=Ft(o.base,"op"),i=!0):n=Ft(t,"op");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Vr,n.name)&&(l=!0),n.symbol){var m=l?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(u=n.name.substr(1),n.name="oiint"===u?"\\iint":"\\iiint"),s=Dt.makeSymbol(n.name,m,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),u.length>0){var p=s.italic,d=Dt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:d,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=p}}else if(n.body){var f=se(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Dt.makeSpan(["mop"],Dt.tryCombineChars(f),e)}else{for(var g=[],x=1;x0){for(var h=n.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),l=se(h,e.withFont("mathrm"),!0),m=0;m=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}});var jr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Qt({type:"sizing",names:jr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:jr.indexOf(a)+1,body:i}},htmlBuilder:function(t,e){var r=e.havingSize(t.size);return _r(t.body,r,e)},mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ke(t.body,r),n=new ve.MathNode("mstyle",a);return n.setAttribute("mathsize",r.sizeMultiplier+"em"),n}}),Qt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,i=!1,o=r[0]&&Ft(r[0],"ordgroup");if(o)for(var s="",h=0;hr.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=h.height-r.height-i-l;r.style.paddingLeft=m+"em";var p=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var d=e.havingStyle(w.SCRIPTSCRIPT),f=ue(t.index,d,e),g=.6*(p.height-p.depth),x=Dt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Dt.makeSpan(["root"],[x]);return Dt.makeSpan(["mord","sqrt"],[v,p],e)}return Dt.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new ve.MathNode("mroot",[Me(r,e),Me(a,e)]):new ve.MathNode("msqrt",[Me(r,e)])}});var $r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};Qt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r).withFont("");return _r(t.body,a,e)},mathmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r),n=ke(t.body,a),i=new ve.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});te({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===w.DISPLAY.size||r.limits)?Xr:null:"accent"===r.type?c.isCharacterBox(r.base)?Ee:null:"horizBrace"===r.type&&!t.sub===r.isOver?Hr:null:null}(t,e);if(r)return r(t,e);var a,n,i,o=t.base,s=t.sup,h=t.sub,l=ue(o,e),m=e.fontMetrics(),u=0,p=0,d=o&&c.isCharacterBox(o);if(s){var f=e.havingStyle(e.style.sup());a=ue(s,f,e),d||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=ue(h,g,e),d||(p=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}i=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)0&&(u+=M,p-=M)}var z=[{type:"elem",elem:n,shift:p,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Dt.makeVList({positionType:"individualShift",children:z},e)}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight);var A=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Dt.makeVList({positionType:"shift",positionData:p,children:A},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),x=Dt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var T=me(l,"right")||"mord";return Dt.makeSpan([T],[l,Dt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Vt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),!t.base||"op"!==t.base.type&&"operatorname"!==t.base.type||(t.base.parentIsSupSub=!0);var i,o=[Me(t.base,e)];if(t.sub&&o.push(Me(t.sub,e)),t.sup&&o.push(Me(t.sup,e)),a)i=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;i=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(e.style===w.DISPLAY||s.limits)?"munderover":"msubsup"}else{var h=t.base;i=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":h&&"operatorname"===h.type&&h.alwaysHandleSupSub&&(h.limits||e.style===w.DISPLAY)?"munder":"msub"}else{var l=t.base;i=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||e.style===w.DISPLAY)?"mover":"msup"}return new ve.MathNode(i,o)}}),te({type:"atom",htmlBuilder:function(t,e){return Dt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[be(t.text,t.mode)]);if("bin"===t.family){var a=we(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Zr={mi:"italic",mn:"normal",mtext:"normal"};te({type:"mathord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new ve.MathNode("mi",[be(t.text,t.mode,e)]),a=we(t,e)||"italic";return a!==Zr[r.type]&&r.setAttribute("mathvariant",a),r}}),te({type:"textord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=be(t.text,t.mode,e),n=we(t,e)||"normal";return r="text"===t.mode?new ve.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new ve.MathNode("mn",[a]):"\\prime"===t.text?new ve.MathNode("mo",[a]):new ve.MathNode("mi",[a]),n!==Zr[r.type]&&r.setAttribute("mathvariant",n),r}});var Kr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Jr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};te({type:"spacing",htmlBuilder:function(t,e){if(Jr.hasOwnProperty(t.text)){var r=Jr[t.text].className||"";if("text"===t.mode){var a=Dt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Dt.makeSpan(["mspace",r],[Dt.mathsym(t.text,t.mode,e)],e)}if(Kr.hasOwnProperty(t.text))return Dt.makeSpan(["mspace",Kr[t.text]],[],e);throw new o('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Jr.hasOwnProperty(t.text)){if(Kr.hasOwnProperty(t.text))return new ve.MathNode("mspace");throw new o('Unknown type of space "'+t.text+'"')}return new ve.MathNode("mtext",[new ve.TextNode("\xa0")])}});var Qr=function(){var t=new ve.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};te({type:"tag",mathmlBuilder:function(t,e){var r=new ve.MathNode("mtable",[new ve.MathNode("mtr",[Qr(),new ve.MathNode("mtd",[Se(t.body,e)]),Qr(),new ve.MathNode("mtd",[Se(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var ta={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ea={"\\textbf":"textbf","\\textmd":"textmd"},ra={"\\textit":"textit","\\textup":"textup"},aa=function(t,e){var r=t.font;return r?ta[r]?e.withTextFontFamily(ta[r]):ea[r]?e.withTextFontWeight(ea[r]):e.withTextFontShape(ra[r]):e};Qt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:ee(n),font:a}},htmlBuilder:function(t,e){var r=aa(t,e),a=se(t.body,r,!0);return Dt.makeSpan(["mord","text"],Dt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=aa(t,e);return Se(t.body,r)}}),Qt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Dt.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","underline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("munder",[Me(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),Qt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=na(t),a=[],n=e.havingStyle(e.style.text()),i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),ca={},ua=ca;function pa(t,e){ca[t]=e}pa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),pa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),pa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),pa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),pa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var da={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};pa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new o("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=da[r.text])||a>=e)throw new o("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=da[t.future().text])&&n":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};pa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in xa?e=xa[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in j.math&&c.contains(["bin","rel"],j.math[r].group)&&(e="\\dotsb"),e});var va={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};pa("\\dotso",function(t){return t.future().text in va?"\\ldots\\,":"\\ldots"}),pa("\\dotsc",function(t){var e=t.future().text;return e in va&&","!==e?"\\ldots\\,":"\\ldots"}),pa("\\cdots",function(t){return t.future().text in va?"\\@cdots\\,":"\\@cdots"}),pa("\\dotsb","\\cdots"),pa("\\dotsm","\\cdots"),pa("\\dotsi","\\!\\cdots"),pa("\\dotsx","\\ldots\\,"),pa("\\DOTSI","\\relax"),pa("\\DOTSB","\\relax"),pa("\\DOTSX","\\relax"),pa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),pa("\\,","\\tmspace+{3mu}{.1667em}"),pa("\\thinspace","\\,"),pa("\\>","\\mskip{4mu}"),pa("\\:","\\tmspace+{4mu}{.2222em}"),pa("\\medspace","\\:"),pa("\\;","\\tmspace+{5mu}{.2777em}"),pa("\\thickspace","\\;"),pa("\\!","\\tmspace-{3mu}{.1667em}"),pa("\\negthinspace","\\!"),pa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),pa("\\negthickspace","\\tmspace-{5mu}{.277em}"),pa("\\enspace","\\kern.5em "),pa("\\enskip","\\hskip.5em\\relax"),pa("\\quad","\\hskip1em\\relax"),pa("\\qquad","\\hskip2em\\relax"),pa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),pa("\\tag@paren","\\tag@literal{({#1})}"),pa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),pa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),pa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),pa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),pa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),pa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),pa("\\\\","\\newline"),pa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ba=F["Main-Regular"]["T".charCodeAt(0)][1]-.7*F["Main-Regular"]["A".charCodeAt(0)][1]+"em";pa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),pa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),pa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),pa("\\@hspace","\\hskip #1\\relax"),pa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),pa("\\ordinarycolon",":"),pa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),pa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),pa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),pa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),pa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),pa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),pa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),pa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),pa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),pa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),pa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),pa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),pa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),pa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),pa("\u2237","\\dblcolon"),pa("\u2239","\\eqcolon"),pa("\u2254","\\coloneqq"),pa("\u2255","\\eqqcolon"),pa("\u2a74","\\Coloneqq"),pa("\\ratio","\\vcentcolon"),pa("\\coloncolon","\\dblcolon"),pa("\\colonequals","\\coloneqq"),pa("\\coloncolonequals","\\Coloneqq"),pa("\\equalscolon","\\eqqcolon"),pa("\\equalscoloncolon","\\Eqqcolon"),pa("\\colonminus","\\coloneq"),pa("\\coloncolonminus","\\Coloneq"),pa("\\minuscolon","\\eqcolon"),pa("\\minuscoloncolon","\\Eqcolon"),pa("\\coloncolonapprox","\\Colonapprox"),pa("\\coloncolonsim","\\Colonsim"),pa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),pa("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),pa("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),pa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),pa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),pa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),pa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),pa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),pa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),pa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),pa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),pa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),pa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),pa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),pa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),pa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),pa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),pa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),pa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),pa("\u27e6","\\llbracket"),pa("\u27e7","\\rrbracket"),pa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),pa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),pa("\u2983","\\lBrace"),pa("\u2984","\\rBrace"),pa("\\darr","\\downarrow"),pa("\\dArr","\\Downarrow"),pa("\\Darr","\\Downarrow"),pa("\\lang","\\langle"),pa("\\rang","\\rangle"),pa("\\uarr","\\uparrow"),pa("\\uArr","\\Uparrow"),pa("\\Uarr","\\Uparrow"),pa("\\N","\\mathbb{N}"),pa("\\R","\\mathbb{R}"),pa("\\Z","\\mathbb{Z}"),pa("\\alef","\\aleph"),pa("\\alefsym","\\aleph"),pa("\\Alpha","\\mathrm{A}"),pa("\\Beta","\\mathrm{B}"),pa("\\bull","\\bullet"),pa("\\Chi","\\mathrm{X}"),pa("\\clubs","\\clubsuit"),pa("\\cnums","\\mathbb{C}"),pa("\\Complex","\\mathbb{C}"),pa("\\Dagger","\\ddagger"),pa("\\diamonds","\\diamondsuit"),pa("\\empty","\\emptyset"),pa("\\Epsilon","\\mathrm{E}"),pa("\\Eta","\\mathrm{H}"),pa("\\exist","\\exists"),pa("\\harr","\\leftrightarrow"),pa("\\hArr","\\Leftrightarrow"),pa("\\Harr","\\Leftrightarrow"),pa("\\hearts","\\heartsuit"),pa("\\image","\\Im"),pa("\\infin","\\infty"),pa("\\Iota","\\mathrm{I}"),pa("\\isin","\\in"),pa("\\Kappa","\\mathrm{K}"),pa("\\larr","\\leftarrow"),pa("\\lArr","\\Leftarrow"),pa("\\Larr","\\Leftarrow"),pa("\\lrarr","\\leftrightarrow"),pa("\\lrArr","\\Leftrightarrow"),pa("\\Lrarr","\\Leftrightarrow"),pa("\\Mu","\\mathrm{M}"),pa("\\natnums","\\mathbb{N}"),pa("\\Nu","\\mathrm{N}"),pa("\\Omicron","\\mathrm{O}"),pa("\\plusmn","\\pm"),pa("\\rarr","\\rightarrow"),pa("\\rArr","\\Rightarrow"),pa("\\Rarr","\\Rightarrow"),pa("\\real","\\Re"),pa("\\reals","\\mathbb{R}"),pa("\\Reals","\\mathbb{R}"),pa("\\Rho","\\mathrm{P}"),pa("\\sdot","\\cdot"),pa("\\sect","\\S"),pa("\\spades","\\spadesuit"),pa("\\sub","\\subset"),pa("\\sube","\\subseteq"),pa("\\supe","\\supseteq"),pa("\\Tau","\\mathrm{T}"),pa("\\thetasym","\\vartheta"),pa("\\weierp","\\wp"),pa("\\Zeta","\\mathrm{Z}"),pa("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),pa("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),pa("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),pa("\\blue","\\textcolor{##6495ed}{#1}"),pa("\\orange","\\textcolor{##ffa500}{#1}"),pa("\\pink","\\textcolor{##ff00af}{#1}"),pa("\\red","\\textcolor{##df0030}{#1}"),pa("\\green","\\textcolor{##28ae7b}{#1}"),pa("\\gray","\\textcolor{gray}{#1}"),pa("\\purple","\\textcolor{##9d38bd}{#1}"),pa("\\blueA","\\textcolor{##ccfaff}{#1}"),pa("\\blueB","\\textcolor{##80f6ff}{#1}"),pa("\\blueC","\\textcolor{##63d9ea}{#1}"),pa("\\blueD","\\textcolor{##11accd}{#1}"),pa("\\blueE","\\textcolor{##0c7f99}{#1}"),pa("\\tealA","\\textcolor{##94fff5}{#1}"),pa("\\tealB","\\textcolor{##26edd5}{#1}"),pa("\\tealC","\\textcolor{##01d1c1}{#1}"),pa("\\tealD","\\textcolor{##01a995}{#1}"),pa("\\tealE","\\textcolor{##208170}{#1}"),pa("\\greenA","\\textcolor{##b6ffb0}{#1}"),pa("\\greenB","\\textcolor{##8af281}{#1}"),pa("\\greenC","\\textcolor{##74cf70}{#1}"),pa("\\greenD","\\textcolor{##1fab54}{#1}"),pa("\\greenE","\\textcolor{##0d923f}{#1}"),pa("\\goldA","\\textcolor{##ffd0a9}{#1}"),pa("\\goldB","\\textcolor{##ffbb71}{#1}"),pa("\\goldC","\\textcolor{##ff9c39}{#1}"),pa("\\goldD","\\textcolor{##e07d10}{#1}"),pa("\\goldE","\\textcolor{##a75a05}{#1}"),pa("\\redA","\\textcolor{##fca9a9}{#1}"),pa("\\redB","\\textcolor{##ff8482}{#1}"),pa("\\redC","\\textcolor{##f9685d}{#1}"),pa("\\redD","\\textcolor{##e84d39}{#1}"),pa("\\redE","\\textcolor{##bc2612}{#1}"),pa("\\maroonA","\\textcolor{##ffbde0}{#1}"),pa("\\maroonB","\\textcolor{##ff92c6}{#1}"),pa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),pa("\\maroonD","\\textcolor{##ca337c}{#1}"),pa("\\maroonE","\\textcolor{##9e034e}{#1}"),pa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),pa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),pa("\\purpleC","\\textcolor{##aa87ff}{#1}"),pa("\\purpleD","\\textcolor{##7854ab}{#1}"),pa("\\purpleE","\\textcolor{##543b78}{#1}"),pa("\\mintA","\\textcolor{##f5f9e8}{#1}"),pa("\\mintB","\\textcolor{##edf2df}{#1}"),pa("\\mintC","\\textcolor{##e0e5cc}{#1}"),pa("\\grayA","\\textcolor{##f6f7f7}{#1}"),pa("\\grayB","\\textcolor{##f0f1f2}{#1}"),pa("\\grayC","\\textcolor{##e3e5e6}{#1}"),pa("\\grayD","\\textcolor{##d6d8da}{#1}"),pa("\\grayE","\\textcolor{##babec2}{#1}"),pa("\\grayF","\\textcolor{##888d93}{#1}"),pa("\\grayG","\\textcolor{##626569}{#1}"),pa("\\grayH","\\textcolor{##3b3e40}{#1}"),pa("\\grayI","\\textcolor{##21242c}{#1}"),pa("\\kaBlue","\\textcolor{##314453}{#1}"),pa("\\kaGreen","\\textcolor{##71B307}{#1}");var ya={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},wa=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ma(ua,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new la(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;rthis.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),i=(a=a.slice()).length-1;i>=0;--i){var s=a[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--i]).text)a.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var h;(h=a).splice.apply(h,[i,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var i=new la(r,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||ia.hasOwnProperty(t)||j.math.hasOwnProperty(t)||j.text.hasOwnProperty(t)||ya.hasOwnProperty(t)},t}(),ka={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},Sa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Ma=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new wa(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new o("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()},e.consume=function(){this.nextToken=null},e.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var t=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&ia[n.text]&&ia[n.text].infix)break;var i=this.parseAtom(r);if(!i)break;a.push(i)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a0&&!l||0===s&&!l&&"math"===this.mode,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a,m);if(!c){if(l){i.push(null);continue}throw new o("Expected group after '"+t+"'",this.fetch())}(l?i:n).push(c)}return{args:n,optArgs:i}},e.parseGroupOfType=function(t,e,r,a,n){switch(e){case"color":return n&&this.consumeSpaces(),this.parseColorGroup(r);case"size":return n&&this.consumeSpaces(),this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r,n);case"math":case"text":return this.parseGroup(t,r,a,void 0,e,n);case"hbox":var i=this.parseGroup(t,r,a,void 0,"text",n);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(n&&this.consumeSpaces(),r&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",r,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(t,r,a,void 0,void 0,n);default:throw new o("Unknown group type as "+t,this.fetch())}},e.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",i=this.fetch();if(i.text!==a){if(e)return null;if(r&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(a);for(var h,l="",m=this.fetch(),c=0,u=m;(h=this.fetch()).text!==n||r&&c>0;){switch(h.text){case"EOF":throw new o("Unexpected end of input in "+t,m.range(u,l));case a:c++;break;case n:c--}l+=(u=h).text,this.consume()}return this.expect(n),this.mode=s,m.range(u,l)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a,n=this.fetch(),i=n,s="";"EOF"!==(a=this.fetch()).text&&t.test(s+a.text);)s+=(i=a).text,this.consume();if(""===s)throw new o("Invalid "+e+": '"+n.text+"'",n);return this.mode=r,n.range(i,s)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new o("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.fetch().text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new o("Invalid size: '"+e.text+"'",e);var n={number:+(a[1]+a[2]),unit:a[3]};if(!At(n))throw new o("Invalid unit: '"+n.unit+"'",e);return{type:"size",mode:this.mode,value:n,isBlank:r}},e.parseUrlGroup=function(t,e){this.gullet.lexer.setCatcode("%",13);var r=this.parseStringGroup("url",t,!0);if(this.gullet.lexer.setCatcode("%",14),!r)return null;var a=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}},e.parseGroup=function(e,r,n,i,s,h){var l=this.mode;s&&this.switchMode(s),h&&this.consumeSpaces();var m,c=this.fetch(),u=c.text;if(r?"["===u:"{"===u||"\\begingroup"===u){this.consume();var p=t.endOfGroup[u];this.gullet.beginGroup();var d=this.parseExpression(!1,p),f=this.fetch();this.expect(p),this.gullet.endGroup(),m={type:"ordgroup",mode:this.mode,loc:a.range(c,f),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)m=null;else if(null==(m=this.parseFunction(i,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ya.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,c);m=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(l),m},e.formLigatures=function(t){for(var e=t.length-1,r=0;r=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=j[this.mode][e].group,m=a.range(t);if(W.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};i=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(M(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),i={type:"textord",mode:"text",loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u=Ot?V:""+Array(Ot+1-jt.length).join(It)+V},mt={s:wt,z:function(V){var Ot=-V.utcOffset(),It=Math.abs(Ot),jt=Math.floor(It/60),xt=It%60;return(Ot<=0?"+":"-")+wt(jt,2,"0")+":"+wt(xt,2,"0")},m:function V(Ot,It){if(Ot.date()1)return V(Ct[0])}else{var kt=Ot.name;rt[kt]=Ot,xt=kt}return!jt&&xt&&(ct=xt),xt||!jt&&ct},Q=function(V,Ot){if(it(V))return V.clone();var It=typeof Ot=="object"?Ot:{};return It.date=V,It.args=arguments,new K(It)},dt=mt;dt.l=gt,dt.i=it,dt.w=function(V,Ot){return Q(V,{locale:Ot.$L,utc:Ot.$u,x:Ot.$x,$offset:Ot.$offset})};var K=function(){function V(It){this.$L=gt(It.locale,null,!0),this.parse(It)}var Ot=V.prototype;return Ot.parse=function(It){this.$d=function(jt){var xt=jt.date,Ft=jt.utc;if(xt===null)return new Date(NaN);if(dt.u(xt))return new Date;if(xt instanceof Date)return new Date(xt);if(typeof xt=="string"&&!/Z$/i.test(xt)){var Ct=xt.match(nt);if(Ct){var kt=Ct[2]-1||0,Gt=(Ct[7]||"0").substring(0,3);return Ft?new Date(Date.UTC(Ct[1],kt,Ct[3]||1,Ct[4]||0,Ct[5]||0,Ct[6]||0,Gt)):new Date(Ct[1],kt,Ct[3]||1,Ct[4]||0,Ct[5]||0,Ct[6]||0,Gt)}}return new Date(xt)}(It),this.$x=It.x||{},this.init()},Ot.init=function(){var It=this.$d;this.$y=It.getFullYear(),this.$M=It.getMonth(),this.$D=It.getDate(),this.$W=It.getDay(),this.$H=It.getHours(),this.$m=It.getMinutes(),this.$s=It.getSeconds(),this.$ms=It.getMilliseconds()},Ot.$utils=function(){return dt},Ot.isValid=function(){return this.$d.toString()!==Y},Ot.isSame=function(It,jt){var xt=Q(It);return this.startOf(jt)<=xt&&xt<=this.endOf(jt)},Ot.isAfter=function(It,jt){return Q(It){},debug:(...i)=>{},info:(...i)=>{},warn:(...i)=>{},error:(...i)=>{},fatal:(...i)=>{}},d0t=function(i="fatal"){let a=yx.fatal;typeof i=="string"?(i=i.toLowerCase(),i in yx&&(a=yx[i])):typeof i=="number"&&(a=i),Kt.trace=()=>{},Kt.debug=()=>{},Kt.info=()=>{},Kt.warn=()=>{},Kt.error=()=>{},Kt.fatal=()=>{},a<=yx.fatal&&(Kt.fatal=console.error?console.error.bind(console,Gw("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Gw("FATAL"))),a<=yx.error&&(Kt.error=console.error?console.error.bind(console,Gw("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Gw("ERROR"))),a<=yx.warn&&(Kt.warn=console.warn?console.warn.bind(console,Gw("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Gw("WARN"))),a<=yx.info&&(Kt.info=console.info?console.info.bind(console,Gw("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Gw("INFO"))),a<=yx.debug&&(Kt.debug=console.debug?console.debug.bind(console,Gw("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gw("DEBUG"))),a<=yx.trace&&(Kt.trace=console.debug?console.debug.bind(console,Gw("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gw("TRACE")))},Gw=i=>`%c${tg().format("ss.SSS")} : ${i} : `;var g0t={};Object.defineProperty(g0t,"__esModule",{value:!0});var h8=g0t.sanitizeUrl=void 0,p9e=/^([^\w]*)(javascript|data|vbscript)/im,b9e=/&#(\w+)(^\w|;)?/g,w9e=/&(newline|tab);/gi,m9e=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,v9e=/^.+(:|:)/gim,y9e=[".","/"];function x9e(i){return y9e.indexOf(i[0])>-1}function k9e(i){return i.replace(b9e,function(a,f){return String.fromCharCode(f)})}function E9e(i){var a=k9e(i||"").replace(w9e,"").replace(m9e,"").trim();if(!a)return"about:blank";if(x9e(a))return a;var f=a.match(v9e);if(!f)return a;var g=f[0];return p9e.test(g)?"about:blank":a}h8=g0t.sanitizeUrl=E9e;function nW(i,a){return i==null||a==null?NaN:ia?1:i>=a?0:NaN}function T9e(i,a){return i==null||a==null?NaN:ai?1:a>=i?0:NaN}function p0t(i){let a,f,g;i.length!==2?(a=nW,f=(E,S)=>nW(i(E),S),g=(E,S)=>i(E)-S):(a=i===nW||i===T9e?i:C9e,f=i,g=i);function w(E,S,_=0,M=E.length){if(_>>1;f(E[F],S)<0?_=F+1:M=F}while(_>>1;f(E[F],S)<=0?_=F+1:M=F}while(__&&g(E[F-1],S)>-g(E[F],S)?F-1:F}return{left:w,center:b,right:v}}function C9e(){return 0}function S9e(i){return i===null?NaN:+i}const _9e=p0t(nW).right;p0t(S9e).center;const A9e=_9e;class xOt extends Map{constructor(a,f=M9e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:f}}),a!=null)for(const[g,w]of a)this.set(g,w)}get(a){return super.get(kOt(this,a))}has(a){return super.has(kOt(this,a))}set(a,f){return super.set(L9e(this,a),f)}delete(a){return super.delete(D9e(this,a))}}function kOt({_intern:i,_key:a},f){const g=a(f);return i.has(g)?i.get(g):f}function L9e({_intern:i,_key:a},f){const g=a(f);return i.has(g)?i.get(g):(i.set(g,f),f)}function D9e({_intern:i,_key:a},f){const g=a(f);return i.has(g)&&(f=i.get(g),i.delete(g)),f}function M9e(i){return i!==null&&typeof i=="object"?i.valueOf():i}const I9e=Math.sqrt(50),O9e=Math.sqrt(10),N9e=Math.sqrt(2);function rW(i,a,f){const g=(a-i)/Math.max(0,f),w=Math.floor(Math.log10(g)),v=g/Math.pow(10,w),b=v>=I9e?10:v>=O9e?5:v>=N9e?2:1;let E,S,_;return w<0?(_=Math.pow(10,-w)/b,E=Math.round(i*_),S=Math.round(a*_),E/_a&&--S,_=-_):(_=Math.pow(10,w)*b,E=Math.round(i/_),S=Math.round(a/_),E*_a&&--S),S0))return[];if(i===a)return[i];const g=a=w))return[];const E=v-w+1,S=new Array(E);if(g)if(b<0)for(let _=0;_=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f=w)&&(f=w)}return f}function B9e(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f>g||f===void 0&&g>=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function R9e(i,a,f){i=+i,a=+a,f=(w=arguments.length)<2?(a=i,i=0,1):w<3?1:+f;for(var g=-1,w=Math.max(0,Math.ceil((a-i)/f))|0,v=new Array(w);++g+i(a)}function H9e(i,a){return a=Math.max(0,i.bandwidth()-a*2)/2,i.round()&&(a=Math.round(a)),f=>+i(f)+a}function V9e(){return!this.__axis}function TOt(i,a){var f=[],g=null,w=null,v=6,b=6,E=3,S=typeof window<"u"&&window.devicePixelRatio>1?0:.5,_=i===iW||i===sW?-1:1,M=i===sW||i===m0t?"x":"y",F=i===iW||i===v0t?$9e:z9e;function R(B){var z=g??(a.ticks?a.ticks.apply(a,f):a.domain()),Y=w??(a.tickFormat?a.tickFormat.apply(a,f):j9e),nt=Math.max(v,0)+E,ot=a.range(),ft=+ot[0]+S,wt=+ot[ot.length-1]+S,mt=(a.bandwidth?H9e:q9e)(a.copy(),S),ct=B.selection?B.selection():B,rt=ct.selectAll(".domain").data([null]),it=ct.selectAll(".tick").data(z,a).order(),gt=it.exit(),Q=it.enter().append("g").attr("class","tick"),dt=it.select("line"),K=it.select("text");rt=rt.merge(rt.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),it=it.merge(Q),dt=dt.merge(Q.append("line").attr("stroke","currentColor").attr(M+"2",_*v)),K=K.merge(Q.append("text").attr("fill","currentColor").attr(M,_*nt).attr("dy",i===iW?"0em":i===v0t?"0.71em":"0.32em")),B!==ct&&(rt=rt.transition(B),it=it.transition(B),dt=dt.transition(B),K=K.transition(B),gt=gt.transition(B).attr("opacity",EOt).attr("transform",function(yt){return isFinite(yt=mt(yt))?F(yt+S):this.getAttribute("transform")}),Q.attr("opacity",EOt).attr("transform",function(yt){var V=this.parentNode.__axis;return F((V&&isFinite(V=V(yt))?V:mt(yt))+S)})),gt.remove(),rt.attr("d",i===sW||i===m0t?b?"M"+_*b+","+ft+"H"+S+"V"+wt+"H"+_*b:"M"+S+","+ft+"V"+wt:b?"M"+ft+","+_*b+"V"+S+"H"+wt+"V"+_*b:"M"+ft+","+S+"H"+wt),it.attr("opacity",1).attr("transform",function(yt){return F(mt(yt)+S)}),dt.attr(M+"2",_*v),K.attr(M,_*nt).text(Y),ct.filter(V9e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",i===m0t?"start":i===sW?"end":"middle"),ct.each(function(){this.__axis=mt})}return R.scale=function(B){return arguments.length?(a=B,R):a},R.ticks=function(){return f=Array.from(arguments),R},R.tickArguments=function(B){return arguments.length?(f=B==null?[]:Array.from(B),R):f.slice()},R.tickValues=function(B){return arguments.length?(g=B==null?null:Array.from(B),R):g&&g.slice()},R.tickFormat=function(B){return arguments.length?(w=B,R):w},R.tickSize=function(B){return arguments.length?(v=b=+B,R):v},R.tickSizeInner=function(B){return arguments.length?(v=+B,R):v},R.tickSizeOuter=function(B){return arguments.length?(b=+B,R):b},R.tickPadding=function(B){return arguments.length?(E=+B,R):E},R.offset=function(B){return arguments.length?(S=+B,R):S},R}function U9e(i){return TOt(iW,i)}function G9e(i){return TOt(v0t,i)}var K9e={value:()=>{}};function COt(){for(var i=0,a=arguments.length,f={},g;i=0&&(g=f.slice(w+1),f=f.slice(0,w)),f&&!a.hasOwnProperty(f))throw new Error("unknown type: "+f);return{type:f,name:g}})}aW.prototype=COt.prototype={constructor:aW,on:function(i,a){var f=this._,g=W9e(i+"",f),w,v=-1,b=g.length;if(arguments.length<2){for(;++v0)for(var f=new Array(w),g=0,w,v;g=0&&(a=i.slice(0,f))!=="xmlns"&&(i=i.slice(f+1)),_Ot.hasOwnProperty(a)?{space:_Ot[a],local:i}:i}function X9e(i){return function(){var a=this.ownerDocument,f=this.namespaceURI;return f===y0t&&a.documentElement.namespaceURI===y0t?a.createElement(i):a.createElementNS(f,i)}}function Q9e(i){return function(){return this.ownerDocument.createElementNS(i.space,i.local)}}function AOt(i){var a=oW(i);return(a.local?Q9e:X9e)(a)}function J9e(){}function x0t(i){return i==null?J9e:function(){return this.querySelector(i)}}function Z9e(i){typeof i!="function"&&(i=x0t(i));for(var a=this._groups,f=a.length,g=new Array(f),w=0;w=wt&&(wt=ft+1);!(ct=nt[wt])&&++wt=0;)(b=g[w])&&(v&&b.compareDocumentPosition(v)^4&&v.parentNode.insertBefore(b,v),v=b);return this}function ECe(i){i||(i=TCe);function a(F,R){return F&&R?i(F.__data__,R.__data__):!F-!R}for(var f=this._groups,g=f.length,w=new Array(g),v=0;va?1:i>=a?0:NaN}function CCe(){var i=arguments[0];return arguments[0]=this,i.apply(null,arguments),this}function SCe(){return Array.from(this)}function _Ce(){for(var i=this._groups,a=0,f=i.length;a1?this.each((a==null?RCe:typeof a=="function"?$Ce:jCe)(i,a,f??"")):RL(this.node(),i)}function RL(i,a){return i.style.getPropertyValue(a)||NOt(i).getComputedStyle(i,null).getPropertyValue(a)}function qCe(i){return function(){delete this[i]}}function HCe(i,a){return function(){this[i]=a}}function VCe(i,a){return function(){var f=a.apply(this,arguments);f==null?delete this[i]:this[i]=f}}function UCe(i,a){return arguments.length>1?this.each((a==null?qCe:typeof a=="function"?VCe:HCe)(i,a)):this.node()[i]}function POt(i){return i.trim().split(/^|\s+/)}function k0t(i){return i.classList||new FOt(i)}function FOt(i){this._node=i,this._names=POt(i.getAttribute("class")||"")}FOt.prototype={add:function(i){var a=this._names.indexOf(i);a<0&&(this._names.push(i),this._node.setAttribute("class",this._names.join(" ")))},remove:function(i){var a=this._names.indexOf(i);a>=0&&(this._names.splice(a,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(i){return this._names.indexOf(i)>=0}};function BOt(i,a){for(var f=k0t(i),g=-1,w=a.length;++g=0&&(f=a.slice(g+1),a=a.slice(0,g)),{type:a,name:f}})}function vSe(i){return function(){var a=this.__on;if(a){for(var f=0,g=-1,w=a.length,v;f>8&15|a>>4&240,a>>4&15|a&240,(a&15)<<4|a&15,1):f===8?hW(a>>24&255,a>>16&255,a>>8&255,(a&255)/255):f===4?hW(a>>12&15|a>>8&240,a>>8&15|a>>4&240,a>>4&15|a&240,((a&15)<<4|a&15)/255):null):(a=ASe.exec(i))?new eg(a[1],a[2],a[3],1):(a=LSe.exec(i))?new eg(a[1]*255/100,a[2]*255/100,a[3]*255/100,1):(a=DSe.exec(i))?hW(a[1],a[2],a[3],a[4]):(a=MSe.exec(i))?hW(a[1]*255/100,a[2]*255/100,a[3]*255/100,a[4]):(a=ISe.exec(i))?WOt(a[1],a[2]/100,a[3]/100,1):(a=OSe.exec(i))?WOt(a[1],a[2]/100,a[3]/100,a[4]):zOt.hasOwnProperty(i)?VOt(zOt[i]):i==="transparent"?new eg(NaN,NaN,NaN,0):null}function VOt(i){return new eg(i>>16&255,i>>8&255,i&255,1)}function hW(i,a,f,g){return g<=0&&(i=a=f=NaN),new eg(i,a,f,g)}function UOt(i){return i instanceof n9||(i=r9(i)),i?(i=i.rgb(),new eg(i.r,i.g,i.b,i.opacity)):new eg}function T0t(i,a,f,g){return arguments.length===1?UOt(i):new eg(i,a,f,g??1)}function eg(i,a,f,g){this.r=+i,this.g=+a,this.b=+f,this.opacity=+g}ZP(eg,T0t,uW(n9,{brighter(i){return i=i==null?lW:Math.pow(lW,i),new eg(this.r*i,this.g*i,this.b*i,this.opacity)},darker(i){return i=i==null?tF:Math.pow(tF,i),new eg(this.r*i,this.g*i,this.b*i,this.opacity)},rgb(){return this},clamp(){return new eg(i9(this.r),i9(this.g),i9(this.b),fW(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:GOt,formatHex:GOt,formatHex8:FSe,formatRgb:KOt,toString:KOt}));function GOt(){return`#${s9(this.r)}${s9(this.g)}${s9(this.b)}`}function FSe(){return`#${s9(this.r)}${s9(this.g)}${s9(this.b)}${s9((isNaN(this.opacity)?1:this.opacity)*255)}`}function KOt(){const i=fW(this.opacity);return`${i===1?"rgb(":"rgba("}${i9(this.r)}, ${i9(this.g)}, ${i9(this.b)}${i===1?")":`, ${i})`}`}function fW(i){return isNaN(i)?1:Math.max(0,Math.min(1,i))}function i9(i){return Math.max(0,Math.min(255,Math.round(i)||0))}function s9(i){return i=i9(i),(i<16?"0":"")+i.toString(16)}function WOt(i,a,f,g){return g<=0?i=a=f=NaN:f<=0||f>=1?i=a=NaN:a<=0&&(i=NaN),new jv(i,a,f,g)}function YOt(i){if(i instanceof jv)return new jv(i.h,i.s,i.l,i.opacity);if(i instanceof n9||(i=r9(i)),!i)return new jv;if(i instanceof jv)return i;i=i.rgb();var a=i.r/255,f=i.g/255,g=i.b/255,w=Math.min(a,f,g),v=Math.max(a,f,g),b=NaN,E=v-w,S=(v+w)/2;return E?(a===v?b=(f-g)/E+(f0&&S<1?0:b,new jv(b,E,S,i.opacity)}function BSe(i,a,f,g){return arguments.length===1?YOt(i):new jv(i,a,f,g??1)}function jv(i,a,f,g){this.h=+i,this.s=+a,this.l=+f,this.opacity=+g}ZP(jv,BSe,uW(n9,{brighter(i){return i=i==null?lW:Math.pow(lW,i),new jv(this.h,this.s,this.l*i,this.opacity)},darker(i){return i=i==null?tF:Math.pow(tF,i),new jv(this.h,this.s,this.l*i,this.opacity)},rgb(){var i=this.h%360+(this.h<0)*360,a=isNaN(i)||isNaN(this.s)?0:this.s,f=this.l,g=f+(f<.5?f:1-f)*a,w=2*f-g;return new eg(C0t(i>=240?i-240:i+120,w,g),C0t(i,w,g),C0t(i<120?i+240:i-120,w,g),this.opacity)},clamp(){return new jv(XOt(this.h),dW(this.s),dW(this.l),fW(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const i=fW(this.opacity);return`${i===1?"hsl(":"hsla("}${XOt(this.h)}, ${dW(this.s)*100}%, ${dW(this.l)*100}%${i===1?")":`, ${i})`}`}}));function XOt(i){return i=(i||0)%360,i<0?i+360:i}function dW(i){return Math.max(0,Math.min(1,i||0))}function C0t(i,a,f){return(i<60?a+(f-a)*i/60:i<180?f:i<240?a+(f-a)*(240-i)/60:a)*255}const RSe=Math.PI/180,jSe=180/Math.PI,gW=18,QOt=.96422,JOt=1,ZOt=.82521,tNt=4/29,$L=6/29,eNt=3*$L*$L,$Se=$L*$L*$L;function nNt(i){if(i instanceof J3)return new J3(i.l,i.a,i.b,i.opacity);if(i instanceof xx)return rNt(i);i instanceof eg||(i=UOt(i));var a=L0t(i.r),f=L0t(i.g),g=L0t(i.b),w=S0t((.2225045*a+.7168786*f+.0606169*g)/JOt),v,b;return a===f&&f===g?v=b=w:(v=S0t((.4360747*a+.3850649*f+.1430804*g)/QOt),b=S0t((.0139322*a+.0971045*f+.7141733*g)/ZOt)),new J3(116*w-16,500*(v-w),200*(w-b),i.opacity)}function zSe(i,a,f,g){return arguments.length===1?nNt(i):new J3(i,a,f,g??1)}function J3(i,a,f,g){this.l=+i,this.a=+a,this.b=+f,this.opacity=+g}ZP(J3,zSe,uW(n9,{brighter(i){return new J3(this.l+gW*(i??1),this.a,this.b,this.opacity)},darker(i){return new J3(this.l-gW*(i??1),this.a,this.b,this.opacity)},rgb(){var i=(this.l+16)/116,a=isNaN(this.a)?i:i+this.a/500,f=isNaN(this.b)?i:i-this.b/200;return a=QOt*_0t(a),i=JOt*_0t(i),f=ZOt*_0t(f),new eg(A0t(3.1338561*a-1.6168667*i-.4906146*f),A0t(-.9787684*a+1.9161415*i+.033454*f),A0t(.0719453*a-.2289914*i+1.4052427*f),this.opacity)}}));function S0t(i){return i>$Se?Math.pow(i,1/3):i/eNt+tNt}function _0t(i){return i>$L?i*i*i:eNt*(i-tNt)}function A0t(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function L0t(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function qSe(i){if(i instanceof xx)return new xx(i.h,i.c,i.l,i.opacity);if(i instanceof J3||(i=nNt(i)),i.a===0&&i.b===0)return new xx(NaN,0()=>i;function iNt(i,a){return function(f){return i+f*a}}function HSe(i,a,f){return i=Math.pow(i,f),a=Math.pow(a,f)-i,f=1/f,function(g){return Math.pow(i+g*a,f)}}function VSe(i,a){var f=a-i;return f?iNt(i,f>180||f<-180?f-360*Math.round(f/360):f):pW(isNaN(i)?a:i)}function USe(i){return(i=+i)==1?nF:function(a,f){return f-a?HSe(a,f,i):pW(isNaN(a)?f:a)}}function nF(i,a){var f=a-i;return f?iNt(i,f):pW(isNaN(i)?a:i)}const bW=function i(a){var f=USe(a);function g(w,v){var b=f((w=T0t(w)).r,(v=T0t(v)).r),E=f(w.g,v.g),S=f(w.b,v.b),_=nF(w.opacity,v.opacity);return function(M){return w.r=b(M),w.g=E(M),w.b=S(M),w.opacity=_(M),w+""}}return g.gamma=i,g}(1);function GSe(i,a){a||(a=[]);var f=i?Math.min(a.length,i.length):0,g=a.slice(),w;return function(v){for(w=0;wf&&(v=a.slice(f,v),E[b]?E[b]+=v:E[++b]=v),(g=g[0])===(w=w[0])?E[b]?E[b]+=w:E[++b]=w:(E[++b]=null,S.push({i:b,x:$v(g,w)})),f=I0t.lastIndex;return f180?M+=360:M-_>180&&(_+=360),R.push({i:F.push(w(F)+"rotate(",null,g)-2,x:$v(_,M)})):M&&F.push(w(F)+"rotate("+M+g)}function E(_,M,F,R){_!==M?R.push({i:F.push(w(F)+"skewX(",null,g)-2,x:$v(_,M)}):M&&F.push(w(F)+"skewX("+M+g)}function S(_,M,F,R,B,z){if(_!==F||M!==R){var Y=B.push(w(B)+"scale(",null,",",null,")");z.push({i:Y-4,x:$v(_,F)},{i:Y-2,x:$v(M,R)})}else(F!==1||R!==1)&&B.push(w(B)+"scale("+F+","+R+")")}return function(_,M){var F=[],R=[];return _=i(_),M=i(M),v(_.translateX,_.translateY,M.translateX,M.translateY,F,R),b(_.rotate,M.rotate,F,R),E(_.skewX,M.skewX,F,R),S(_.scaleX,_.scaleY,M.scaleX,M.scaleY,F,R),_=M=null,function(B){for(var z=-1,Y=R.length,nt;++z=0&&i._call.call(void 0,a),i=i._next;--zL}function fNt(){a9=(vW=aF.now())+yW,zL=rF=0;try{o_e()}finally{zL=0,u_e(),a9=0}}function c_e(){var i=aF.now(),a=i-vW;a>uNt&&(yW-=a,vW=i)}function u_e(){for(var i,a=mW,f,g=1/0;a;)a._call?(g>a._time&&(g=a._time),i=a,a=a._next):(f=a._next,a._next=null,a=i?i._next=f:mW=f);sF=i,F0t(g)}function F0t(i){if(!zL){rF&&(rF=clearTimeout(rF));var a=i-a9;a>24?(i<1/0&&(rF=setTimeout(fNt,i-aF.now()-yW)),iF&&(iF=clearInterval(iF))):(iF||(vW=aF.now(),iF=setInterval(c_e,uNt)),zL=1,lNt(fNt))}}function dNt(i,a,f){var g=new xW;return a=a==null?0:+a,g.restart(w=>{g.stop(),i(w+a)},a,f),g}var l_e=COt("start","end","cancel","interrupt"),h_e=[],gNt=0,pNt=1,B0t=2,kW=3,bNt=4,R0t=5,EW=6;function TW(i,a,f,g,w,v){var b=i.__transition;if(!b)i.__transition={};else if(f in b)return;f_e(i,f,{name:a,index:g,group:w,on:l_e,tween:h_e,time:v.time,delay:v.delay,duration:v.duration,ease:v.ease,timer:null,state:gNt})}function j0t(i,a){var f=zv(i,a);if(f.state>gNt)throw new Error("too late; already scheduled");return f}function Z3(i,a){var f=zv(i,a);if(f.state>kW)throw new Error("too late; already running");return f}function zv(i,a){var f=i.__transition;if(!f||!(f=f[a]))throw new Error("transition not found");return f}function f_e(i,a,f){var g=i.__transition,w;g[a]=f,f.timer=hNt(v,0,f.time);function v(_){f.state=pNt,f.timer.restart(b,f.delay,f.time),f.delay<=_&&b(_-f.delay)}function b(_){var M,F,R,B;if(f.state!==pNt)return S();for(M in g)if(B=g[M],B.name===f.name){if(B.state===kW)return dNt(b);B.state===bNt?(B.state=EW,B.timer.stop(),B.on.call("interrupt",i,i.__data__,B.index,B.group),delete g[M]):+MB0t&&g.state=0&&(a=a.slice(0,f)),!a||a==="start"})}function H_e(i,a,f){var g,w,v=q_e(a)?j0t:Z3;return function(){var b=v(this,i),E=b.on;E!==g&&(w=(g=E).copy()).on(a,f),b.on=w}}function V_e(i,a){var f=this._id;return arguments.length<2?zv(this.node(),f).on.on(i):this.each(H_e(f,i,a))}function U_e(i){return function(){var a=this.parentNode;for(var f in this.__transition)if(+f!==i)return;a&&a.removeChild(this)}}function G_e(){return this.on("end.remove",U_e(this._id))}function K_e(i){var a=this._name,f=this._id;typeof i!="function"&&(i=x0t(i));for(var g=this._groups,w=g.length,v=new Array(w),b=0;b=0))throw new Error(`invalid digits: ${i}`);if(a>15)return yNt;const f=10**a;return function(g){this._+=g[0];for(let w=1,v=g.length;wo9)if(!(Math.abs(F*S-_*M)>o9)||!v)this._append`L${this._x1=a},${this._y1=f}`;else{let B=g-b,z=w-E,Y=S*S+_*_,nt=B*B+z*z,ot=Math.sqrt(Y),ft=Math.sqrt(R),wt=v*Math.tan((z0t-Math.acos((Y+R-nt)/(2*ot*ft)))/2),mt=wt/ft,ct=wt/ot;Math.abs(mt-1)>o9&&this._append`L${a+mt*M},${f+mt*F}`,this._append`A${v},${v},0,0,${+(F*B>M*z)},${this._x1=a+ct*S},${this._y1=f+ct*_}`}}arc(a,f,g,w,v,b){if(a=+a,f=+f,g=+g,b=!!b,g<0)throw new Error(`negative radius: ${g}`);let E=g*Math.cos(w),S=g*Math.sin(w),_=a+E,M=f+S,F=1^b,R=b?w-v:v-w;this._x1===null?this._append`M${_},${M}`:(Math.abs(this._x1-_)>o9||Math.abs(this._y1-M)>o9)&&this._append`L${_},${M}`,g&&(R<0&&(R=R%q0t+q0t),R>mAe?this._append`A${g},${g},0,1,${F},${a-E},${f-S}A${g},${g},0,1,${F},${this._x1=_},${this._y1=M}`:R>o9&&this._append`A${g},${g},0,${+(R>=z0t)},${F},${this._x1=a+g*Math.cos(v)},${this._y1=f+g*Math.sin(v)}`)}rect(a,f,g,w){this._append`M${this._x0=this._x1=+a},${this._y0=this._y1=+f}h${g=+g}v${+w}h${-g}Z`}toString(){return this._}};function xAe(i){if(!i.ok)throw new Error(i.status+" "+i.statusText);return i.text()}function kAe(i,a){return fetch(i,a).then(xAe)}function EAe(i){return(a,f)=>kAe(a,f).then(g=>new DOMParser().parseFromString(g,i))}var TAe=EAe("image/svg+xml");function CAe(i){return Math.abs(i=Math.round(i))>=1e21?i.toLocaleString("en").replace(/,/g,""):i.toString(10)}function CW(i,a){if((f=(i=a?i.toExponential(a-1):i.toExponential()).indexOf("e"))<0)return null;var f,g=i.slice(0,f);return[g.length>1?g[0]+g.slice(2):g,+i.slice(f+1)]}function qL(i){return i=CW(Math.abs(i)),i?i[1]:NaN}function SAe(i,a){return function(f,g){for(var w=f.length,v=[],b=0,E=i[0],S=0;w>0&&E>0&&(S+E+1>g&&(E=Math.max(1,g-S)),v.push(f.substring(w-=E,w+E)),!((S+=E+1)>g));)E=i[b=(b+1)%i.length];return v.reverse().join(a)}}function _Ae(i){return function(a){return a.replace(/[0-9]/g,function(f){return i[+f]})}}var AAe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function SW(i){if(!(a=AAe.exec(i)))throw new Error("invalid format: "+i);var a;return new H0t({fill:a[1],align:a[2],sign:a[3],symbol:a[4],zero:a[5],width:a[6],comma:a[7],precision:a[8]&&a[8].slice(1),trim:a[9],type:a[10]})}SW.prototype=H0t.prototype;function H0t(i){this.fill=i.fill===void 0?" ":i.fill+"",this.align=i.align===void 0?">":i.align+"",this.sign=i.sign===void 0?"-":i.sign+"",this.symbol=i.symbol===void 0?"":i.symbol+"",this.zero=!!i.zero,this.width=i.width===void 0?void 0:+i.width,this.comma=!!i.comma,this.precision=i.precision===void 0?void 0:+i.precision,this.trim=!!i.trim,this.type=i.type===void 0?"":i.type+""}H0t.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function LAe(i){t:for(var a=i.length,f=1,g=-1,w;f0&&(g=0);break}return g>0?i.slice(0,g)+i.slice(w+1):i}var xNt;function DAe(i,a){var f=CW(i,a);if(!f)return i+"";var g=f[0],w=f[1],v=w-(xNt=Math.max(-8,Math.min(8,Math.floor(w/3)))*3)+1,b=g.length;return v===b?g:v>b?g+new Array(v-b+1).join("0"):v>0?g.slice(0,v)+"."+g.slice(v):"0."+new Array(1-v).join("0")+CW(i,Math.max(0,a+v-1))[0]}function kNt(i,a){var f=CW(i,a);if(!f)return i+"";var g=f[0],w=f[1];return w<0?"0."+new Array(-w).join("0")+g:g.length>w+1?g.slice(0,w+1)+"."+g.slice(w+1):g+new Array(w-g.length+2).join("0")}const ENt={"%":(i,a)=>(i*100).toFixed(a),b:i=>Math.round(i).toString(2),c:i=>i+"",d:CAe,e:(i,a)=>i.toExponential(a),f:(i,a)=>i.toFixed(a),g:(i,a)=>i.toPrecision(a),o:i=>Math.round(i).toString(8),p:(i,a)=>kNt(i*100,a),r:kNt,s:DAe,X:i=>Math.round(i).toString(16).toUpperCase(),x:i=>Math.round(i).toString(16)};function TNt(i){return i}var CNt=Array.prototype.map,SNt=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function MAe(i){var a=i.grouping===void 0||i.thousands===void 0?TNt:SAe(CNt.call(i.grouping,Number),i.thousands+""),f=i.currency===void 0?"":i.currency[0]+"",g=i.currency===void 0?"":i.currency[1]+"",w=i.decimal===void 0?".":i.decimal+"",v=i.numerals===void 0?TNt:_Ae(CNt.call(i.numerals,String)),b=i.percent===void 0?"%":i.percent+"",E=i.minus===void 0?"−":i.minus+"",S=i.nan===void 0?"NaN":i.nan+"";function _(F){F=SW(F);var R=F.fill,B=F.align,z=F.sign,Y=F.symbol,nt=F.zero,ot=F.width,ft=F.comma,wt=F.precision,mt=F.trim,ct=F.type;ct==="n"?(ft=!0,ct="g"):ENt[ct]||(wt===void 0&&(wt=12),mt=!0,ct="g"),(nt||R==="0"&&B==="=")&&(nt=!0,R="0",B="=");var rt=Y==="$"?f:Y==="#"&&/[boxX]/.test(ct)?"0"+ct.toLowerCase():"",it=Y==="$"?g:/[%p]/.test(ct)?b:"",gt=ENt[ct],Q=/[defgprs%]/.test(ct);wt=wt===void 0?6:/[gprs]/.test(ct)?Math.max(1,Math.min(21,wt)):Math.max(0,Math.min(20,wt));function dt(K){var yt=rt,V=it,Ot,It,jt;if(ct==="c")V=gt(K)+V,K="";else{K=+K;var xt=K<0||1/K<0;if(K=isNaN(K)?S:gt(Math.abs(K),wt),mt&&(K=LAe(K)),xt&&+K==0&&z!=="+"&&(xt=!1),yt=(xt?z==="("?z:E:z==="-"||z==="("?"":z)+yt,V=(ct==="s"?SNt[8+xNt/3]:"")+V+(xt&&z==="("?")":""),Q){for(Ot=-1,It=K.length;++Otjt||jt>57){V=(jt===46?w+K.slice(Ot+1):K.slice(Ot))+V,K=K.slice(0,Ot);break}}}ft&&!nt&&(K=a(K,1/0));var Ft=yt.length+K.length+V.length,Ct=Ft>1)+yt+K+V+Ct.slice(Ft);break;default:K=Ct+yt+K+V;break}return v(K)}return dt.toString=function(){return F+""},dt}function M(F,R){var B=_((F=SW(F),F.type="f",F)),z=Math.max(-8,Math.min(8,Math.floor(qL(R)/3)))*3,Y=Math.pow(10,-z),nt=SNt[8+z/3];return function(ot){return B(Y*ot)+nt}}return{format:_,formatPrefix:M}}var _W,_Nt,ANt;IAe({thousands:",",grouping:[3],currency:["$",""]});function IAe(i){return _W=MAe(i),_Nt=_W.format,ANt=_W.formatPrefix,_W}function OAe(i){return Math.max(0,-qL(Math.abs(i)))}function NAe(i,a){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(qL(a)/3)))*3-qL(Math.abs(i)))}function PAe(i,a){return i=Math.abs(i),a=Math.abs(a)-i,Math.max(0,qL(a)-qL(i))+1}function AW(i,a){switch(arguments.length){case 0:break;case 1:this.range(i);break;default:this.range(a).domain(i);break}return this}const LNt=Symbol("implicit");function oF(){var i=new xOt,a=[],f=[],g=LNt;function w(v){let b=i.get(v);if(b===void 0){if(g!==LNt)return g;i.set(v,b=a.push(v)-1)}return f[b%f.length]}return w.domain=function(v){if(!arguments.length)return a.slice();a=[],i=new xOt;for(const b of v)i.has(b)||i.set(b,a.push(b)-1);return w},w.range=function(v){return arguments.length?(f=Array.from(v),w):f.slice()},w.unknown=function(v){return arguments.length?(g=v,w):g},w.copy=function(){return oF(a,f).unknown(g)},AW.apply(w,arguments),w}function V0t(){var i=oF().unknown(void 0),a=i.domain,f=i.range,g=0,w=1,v,b,E=!1,S=0,_=0,M=.5;delete i.unknown;function F(){var R=a().length,B=wa&&(f=i,i=a,a=f),function(g){return Math.max(i,Math.min(a,g))}}function jAe(i,a,f){var g=i[0],w=i[1],v=a[0],b=a[1];return w2?$Ae:jAe,S=_=null,F}function F(R){return R==null||isNaN(R=+R)?v:(S||(S=E(i.map(g),a,f)))(g(b(R)))}return F.invert=function(R){return b(w((_||(_=E(a,i.map(g),$v)))(R)))},F.domain=function(R){return arguments.length?(i=Array.from(R,BAe),M()):i.slice()},F.range=function(R){return arguments.length?(a=Array.from(R),M()):a.slice()},F.rangeRound=function(R){return a=Array.from(R),f=ZSe,M()},F.clamp=function(R){return arguments.length?(b=R?!0:HL,M()):b!==HL},F.interpolate=function(R){return arguments.length?(f=R,M()):f},F.unknown=function(R){return arguments.length?(v=R,F):v},function(R,B){return g=R,w=B,M()}}function INt(){return zAe()(HL,HL)}function qAe(i,a,f,g){var w=w0t(i,a,f),v;switch(g=SW(g??",f"),g.type){case"s":{var b=Math.max(Math.abs(i),Math.abs(a));return g.precision==null&&!isNaN(v=NAe(w,b))&&(g.precision=v),ANt(g,b)}case"":case"e":case"g":case"p":case"r":{g.precision==null&&!isNaN(v=PAe(w,Math.max(Math.abs(i),Math.abs(a))))&&(g.precision=v-(g.type==="e"));break}case"f":case"%":{g.precision==null&&!isNaN(v=OAe(w))&&(g.precision=v-(g.type==="%")*2);break}}return _Nt(g)}function HAe(i){var a=i.domain;return i.ticks=function(f){var g=a();return P9e(g[0],g[g.length-1],f??10)},i.tickFormat=function(f,g){var w=a();return qAe(w[0],w[w.length-1],f??10,g)},i.nice=function(f){f==null&&(f=10);var g=a(),w=0,v=g.length-1,b=g[w],E=g[v],S,_,M=10;for(E0;){if(_=b0t(b,E,f),_===S)return g[w]=b,g[v]=E,a(g);if(_>0)b=Math.floor(b/_)*_,E=Math.ceil(E/_)*_;else if(_<0)b=Math.ceil(b*_)/_,E=Math.floor(E*_)/_;else break;S=_}return i},i}function VL(){var i=INt();return i.copy=function(){return MNt(i,VL())},AW.apply(i,arguments),HAe(i)}function VAe(i,a){i=i.slice();var f=0,g=i.length-1,w=i[f],v=i[g],b;return v(i(v=new Date(+v)),v),w.ceil=v=>(i(v=new Date(v-1)),a(v,1),i(v),v),w.round=v=>{const b=w(v),E=w.ceil(v);return v-b(a(v=new Date(+v),b==null?1:Math.floor(b)),v),w.range=(v,b,E)=>{const S=[];if(v=w.ceil(v),E=E==null?1:Math.floor(E),!(v0))return S;let _;do S.push(_=new Date(+v)),a(v,E),i(v);while(_R1(b=>{if(b>=b)for(;i(b),!v(b);)b.setTime(b-1)},(b,E)=>{if(b>=b)if(E<0)for(;++E<=0;)for(;a(b,-1),!v(b););else for(;--E>=0;)for(;a(b,1),!v(b););}),f&&(w.count=(v,b)=>(G0t.setTime(+v),K0t.setTime(+b),i(G0t),i(K0t),Math.floor(f(G0t,K0t))),w.every=v=>(v=Math.floor(v),!isFinite(v)||!(v>0)?null:v>1?w.filter(g?b=>g(b)%v===0:b=>w.count(0,b)%v===0):w)),w}const UL=R1(()=>{},(i,a)=>{i.setTime(+i+a)},(i,a)=>a-i);UL.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?R1(a=>{a.setTime(Math.floor(a/i)*i)},(a,f)=>{a.setTime(+a+f*i)},(a,f)=>(f-a)/i):UL),UL.range;const Tx=1e3,Kw=Tx*60,Cx=Kw*60,Sx=Cx*24,W0t=Sx*7,ONt=Sx*30,Y0t=Sx*365,f8=R1(i=>{i.setTime(i-i.getMilliseconds())},(i,a)=>{i.setTime(+i+a*Tx)},(i,a)=>(a-i)/Tx,i=>i.getUTCSeconds());f8.range;const cF=R1(i=>{i.setTime(i-i.getMilliseconds()-i.getSeconds()*Tx)},(i,a)=>{i.setTime(+i+a*Kw)},(i,a)=>(a-i)/Kw,i=>i.getMinutes());cF.range,R1(i=>{i.setUTCSeconds(0,0)},(i,a)=>{i.setTime(+i+a*Kw)},(i,a)=>(a-i)/Kw,i=>i.getUTCMinutes()).range;const uF=R1(i=>{i.setTime(i-i.getMilliseconds()-i.getSeconds()*Tx-i.getMinutes()*Kw)},(i,a)=>{i.setTime(+i+a*Cx)},(i,a)=>(a-i)/Cx,i=>i.getHours());uF.range,R1(i=>{i.setUTCMinutes(0,0,0)},(i,a)=>{i.setTime(+i+a*Cx)},(i,a)=>(a-i)/Cx,i=>i.getUTCHours()).range;const c9=R1(i=>i.setHours(0,0,0,0),(i,a)=>i.setDate(i.getDate()+a),(i,a)=>(a-i-(a.getTimezoneOffset()-i.getTimezoneOffset())*Kw)/Sx,i=>i.getDate()-1);c9.range;const X0t=R1(i=>{i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCDate(i.getUTCDate()+a)},(i,a)=>(a-i)/Sx,i=>i.getUTCDate()-1);X0t.range,R1(i=>{i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCDate(i.getUTCDate()+a)},(i,a)=>(a-i)/Sx,i=>Math.floor(i/Sx)).range;function u9(i){return R1(a=>{a.setDate(a.getDate()-(a.getDay()+7-i)%7),a.setHours(0,0,0,0)},(a,f)=>{a.setDate(a.getDate()+f*7)},(a,f)=>(f-a-(f.getTimezoneOffset()-a.getTimezoneOffset())*Kw)/W0t)}const lF=u9(0),hF=u9(1),NNt=u9(2),PNt=u9(3),l9=u9(4),FNt=u9(5),BNt=u9(6);lF.range,hF.range,NNt.range,PNt.range,l9.range,FNt.range,BNt.range;function h9(i){return R1(a=>{a.setUTCDate(a.getUTCDate()-(a.getUTCDay()+7-i)%7),a.setUTCHours(0,0,0,0)},(a,f)=>{a.setUTCDate(a.getUTCDate()+f*7)},(a,f)=>(f-a)/W0t)}const RNt=h9(0),LW=h9(1),UAe=h9(2),GAe=h9(3),GL=h9(4),KAe=h9(5),WAe=h9(6);RNt.range,LW.range,UAe.range,GAe.range,GL.range,KAe.range,WAe.range;const fF=R1(i=>{i.setDate(1),i.setHours(0,0,0,0)},(i,a)=>{i.setMonth(i.getMonth()+a)},(i,a)=>a.getMonth()-i.getMonth()+(a.getFullYear()-i.getFullYear())*12,i=>i.getMonth());fF.range,R1(i=>{i.setUTCDate(1),i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCMonth(i.getUTCMonth()+a)},(i,a)=>a.getUTCMonth()-i.getUTCMonth()+(a.getUTCFullYear()-i.getUTCFullYear())*12,i=>i.getUTCMonth()).range;const _x=R1(i=>{i.setMonth(0,1),i.setHours(0,0,0,0)},(i,a)=>{i.setFullYear(i.getFullYear()+a)},(i,a)=>a.getFullYear()-i.getFullYear(),i=>i.getFullYear());_x.every=i=>!isFinite(i=Math.floor(i))||!(i>0)?null:R1(a=>{a.setFullYear(Math.floor(a.getFullYear()/i)*i),a.setMonth(0,1),a.setHours(0,0,0,0)},(a,f)=>{a.setFullYear(a.getFullYear()+f*i)}),_x.range;const f9=R1(i=>{i.setUTCMonth(0,1),i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCFullYear(i.getUTCFullYear()+a)},(i,a)=>a.getUTCFullYear()-i.getUTCFullYear(),i=>i.getUTCFullYear());f9.every=i=>!isFinite(i=Math.floor(i))||!(i>0)?null:R1(a=>{a.setUTCFullYear(Math.floor(a.getUTCFullYear()/i)*i),a.setUTCMonth(0,1),a.setUTCHours(0,0,0,0)},(a,f)=>{a.setUTCFullYear(a.getUTCFullYear()+f*i)}),f9.range;function YAe(i,a,f,g,w,v){const b=[[f8,1,Tx],[f8,5,5*Tx],[f8,15,15*Tx],[f8,30,30*Tx],[v,1,Kw],[v,5,5*Kw],[v,15,15*Kw],[v,30,30*Kw],[w,1,Cx],[w,3,3*Cx],[w,6,6*Cx],[w,12,12*Cx],[g,1,Sx],[g,2,2*Sx],[f,1,W0t],[a,1,ONt],[a,3,3*ONt],[i,1,Y0t]];function E(_,M,F){const R=M<_;R&&([_,M]=[M,_]);const B=F&&typeof F.range=="function"?F:S(_,M,F),z=B?B.range(_,+M+1):[];return R?z.reverse():z}function S(_,M,F){const R=Math.abs(M-_)/F,B=p0t(([,,nt])=>nt).right(b,R);if(B===b.length)return i.every(w0t(_/Y0t,M/Y0t,F));if(B===0)return UL.every(Math.max(w0t(_,M,F),1));const[z,Y]=b[R/b[B-1][2]53)return null;"w"in _e||(_e.w=1),"Z"in _e?(Mn=J0t(dF(_e.y,0,1)),ce=Mn.getUTCDay(),Mn=ce>4||ce===0?LW.ceil(Mn):LW(Mn),Mn=X0t.offset(Mn,(_e.V-1)*7),_e.y=Mn.getUTCFullYear(),_e.m=Mn.getUTCMonth(),_e.d=Mn.getUTCDate()+(_e.w+6)%7):(Mn=Q0t(dF(_e.y,0,1)),ce=Mn.getDay(),Mn=ce>4||ce===0?hF.ceil(Mn):hF(Mn),Mn=c9.offset(Mn,(_e.V-1)*7),_e.y=Mn.getFullYear(),_e.m=Mn.getMonth(),_e.d=Mn.getDate()+(_e.w+6)%7)}else("W"in _e||"U"in _e)&&("w"in _e||(_e.w="u"in _e?_e.u%7:"W"in _e?1:0),ce="Z"in _e?J0t(dF(_e.y,0,1)).getUTCDay():Q0t(dF(_e.y,0,1)).getDay(),_e.m=0,_e.d="W"in _e?(_e.w+6)%7+_e.W*7-(ce+5)%7:_e.w+_e.U*7-(ce+6)%7);return"Z"in _e?(_e.H+=_e.Z/100|0,_e.M+=_e.Z%100,J0t(_e)):Q0t(_e)}}function gt(be,Ne,Xt,_e){for(var xe=0,Mn=Ne.length,ce=Xt.length,Br,we;xe=ce)return-1;if(Br=Ne.charCodeAt(xe++),Br===37){if(Br=Ne.charAt(xe++),we=ct[Br in jNt?Ne.charAt(xe++):Br],!we||(_e=we(be,Xt,_e))<0)return-1}else if(Br!=Xt.charCodeAt(_e++))return-1}return _e}function Q(be,Ne,Xt){var _e=_.exec(Ne.slice(Xt));return _e?(be.p=M.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function dt(be,Ne,Xt){var _e=B.exec(Ne.slice(Xt));return _e?(be.w=z.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function K(be,Ne,Xt){var _e=F.exec(Ne.slice(Xt));return _e?(be.w=R.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function yt(be,Ne,Xt){var _e=ot.exec(Ne.slice(Xt));return _e?(be.m=ft.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function V(be,Ne,Xt){var _e=Y.exec(Ne.slice(Xt));return _e?(be.m=nt.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function Ot(be,Ne,Xt){return gt(be,a,Ne,Xt)}function It(be,Ne,Xt){return gt(be,f,Ne,Xt)}function jt(be,Ne,Xt){return gt(be,g,Ne,Xt)}function xt(be){return b[be.getDay()]}function Ft(be){return v[be.getDay()]}function Ct(be){return S[be.getMonth()]}function kt(be){return E[be.getMonth()]}function Gt(be){return w[+(be.getHours()>=12)]}function Fe(be){return 1+~~(be.getMonth()/3)}function Mt(be){return b[be.getUTCDay()]}function pn(be){return v[be.getUTCDay()]}function Ae(be){return S[be.getUTCMonth()]}function ye(be){return E[be.getUTCMonth()]}function tn(be){return w[+(be.getUTCHours()>=12)]}function sn(be){return 1+~~(be.getUTCMonth()/3)}return{format:function(be){var Ne=rt(be+="",wt);return Ne.toString=function(){return be},Ne},parse:function(be){var Ne=it(be+="",!1);return Ne.toString=function(){return be},Ne},utcFormat:function(be){var Ne=rt(be+="",mt);return Ne.toString=function(){return be},Ne},utcParse:function(be){var Ne=it(be+="",!0);return Ne.toString=function(){return be},Ne}}}var jNt={"-":"",_:" ",0:"0"},Ad=/^\s*\d+/,ZAe=/^%/,tLe=/[\\^$*+?|[\]().{}]/g;function Jc(i,a,f){var g=i<0?"-":"",w=(g?-i:i)+"",v=w.length;return g+(v[a.toLowerCase(),f]))}function nLe(i,a,f){var g=Ad.exec(a.slice(f,f+1));return g?(i.w=+g[0],f+g[0].length):-1}function rLe(i,a,f){var g=Ad.exec(a.slice(f,f+1));return g?(i.u=+g[0],f+g[0].length):-1}function iLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.U=+g[0],f+g[0].length):-1}function sLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.V=+g[0],f+g[0].length):-1}function aLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.W=+g[0],f+g[0].length):-1}function $Nt(i,a,f){var g=Ad.exec(a.slice(f,f+4));return g?(i.y=+g[0],f+g[0].length):-1}function zNt(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.y=+g[0]+(+g[0]>68?1900:2e3),f+g[0].length):-1}function oLe(i,a,f){var g=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(a.slice(f,f+6));return g?(i.Z=g[1]?0:-(g[2]+(g[3]||"00")),f+g[0].length):-1}function cLe(i,a,f){var g=Ad.exec(a.slice(f,f+1));return g?(i.q=g[0]*3-3,f+g[0].length):-1}function uLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.m=g[0]-1,f+g[0].length):-1}function qNt(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.d=+g[0],f+g[0].length):-1}function lLe(i,a,f){var g=Ad.exec(a.slice(f,f+3));return g?(i.m=0,i.d=+g[0],f+g[0].length):-1}function HNt(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.H=+g[0],f+g[0].length):-1}function hLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.M=+g[0],f+g[0].length):-1}function fLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.S=+g[0],f+g[0].length):-1}function dLe(i,a,f){var g=Ad.exec(a.slice(f,f+3));return g?(i.L=+g[0],f+g[0].length):-1}function gLe(i,a,f){var g=Ad.exec(a.slice(f,f+6));return g?(i.L=Math.floor(g[0]/1e3),f+g[0].length):-1}function pLe(i,a,f){var g=ZAe.exec(a.slice(f,f+1));return g?f+g[0].length:-1}function bLe(i,a,f){var g=Ad.exec(a.slice(f));return g?(i.Q=+g[0],f+g[0].length):-1}function wLe(i,a,f){var g=Ad.exec(a.slice(f));return g?(i.s=+g[0],f+g[0].length):-1}function VNt(i,a){return Jc(i.getDate(),a,2)}function mLe(i,a){return Jc(i.getHours(),a,2)}function vLe(i,a){return Jc(i.getHours()%12||12,a,2)}function yLe(i,a){return Jc(1+c9.count(_x(i),i),a,3)}function UNt(i,a){return Jc(i.getMilliseconds(),a,3)}function xLe(i,a){return UNt(i,a)+"000"}function kLe(i,a){return Jc(i.getMonth()+1,a,2)}function ELe(i,a){return Jc(i.getMinutes(),a,2)}function TLe(i,a){return Jc(i.getSeconds(),a,2)}function CLe(i){var a=i.getDay();return a===0?7:a}function SLe(i,a){return Jc(lF.count(_x(i)-1,i),a,2)}function GNt(i){var a=i.getDay();return a>=4||a===0?l9(i):l9.ceil(i)}function _Le(i,a){return i=GNt(i),Jc(l9.count(_x(i),i)+(_x(i).getDay()===4),a,2)}function ALe(i){return i.getDay()}function LLe(i,a){return Jc(hF.count(_x(i)-1,i),a,2)}function DLe(i,a){return Jc(i.getFullYear()%100,a,2)}function MLe(i,a){return i=GNt(i),Jc(i.getFullYear()%100,a,2)}function ILe(i,a){return Jc(i.getFullYear()%1e4,a,4)}function OLe(i,a){var f=i.getDay();return i=f>=4||f===0?l9(i):l9.ceil(i),Jc(i.getFullYear()%1e4,a,4)}function NLe(i){var a=i.getTimezoneOffset();return(a>0?"-":(a*=-1,"+"))+Jc(a/60|0,"0",2)+Jc(a%60,"0",2)}function KNt(i,a){return Jc(i.getUTCDate(),a,2)}function PLe(i,a){return Jc(i.getUTCHours(),a,2)}function FLe(i,a){return Jc(i.getUTCHours()%12||12,a,2)}function BLe(i,a){return Jc(1+X0t.count(f9(i),i),a,3)}function WNt(i,a){return Jc(i.getUTCMilliseconds(),a,3)}function RLe(i,a){return WNt(i,a)+"000"}function jLe(i,a){return Jc(i.getUTCMonth()+1,a,2)}function $Le(i,a){return Jc(i.getUTCMinutes(),a,2)}function zLe(i,a){return Jc(i.getUTCSeconds(),a,2)}function qLe(i){var a=i.getUTCDay();return a===0?7:a}function HLe(i,a){return Jc(RNt.count(f9(i)-1,i),a,2)}function YNt(i){var a=i.getUTCDay();return a>=4||a===0?GL(i):GL.ceil(i)}function VLe(i,a){return i=YNt(i),Jc(GL.count(f9(i),i)+(f9(i).getUTCDay()===4),a,2)}function ULe(i){return i.getUTCDay()}function GLe(i,a){return Jc(LW.count(f9(i)-1,i),a,2)}function KLe(i,a){return Jc(i.getUTCFullYear()%100,a,2)}function WLe(i,a){return i=YNt(i),Jc(i.getUTCFullYear()%100,a,2)}function YLe(i,a){return Jc(i.getUTCFullYear()%1e4,a,4)}function XLe(i,a){var f=i.getUTCDay();return i=f>=4||f===0?GL(i):GL.ceil(i),Jc(i.getUTCFullYear()%1e4,a,4)}function QLe(){return"+0000"}function XNt(){return"%"}function QNt(i){return+i}function JNt(i){return Math.floor(+i/1e3)}var KL,DW;JLe({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function JLe(i){return KL=JAe(i),DW=KL.format,KL.parse,KL.utcFormat,KL.utcParse,KL}function ZLe(i){return new Date(i)}function tDe(i){return i instanceof Date?+i:+new Date(+i)}function ZNt(i,a,f,g,w,v,b,E,S,_){var M=INt(),F=M.invert,R=M.domain,B=_(".%L"),z=_(":%S"),Y=_("%I:%M"),nt=_("%I %p"),ot=_("%a %d"),ft=_("%b %d"),wt=_("%B"),mt=_("%Y");function ct(rt){return(S(rt)1?0:i<-1?bF:Math.acos(i)}function nPt(i){return i>=1?MW:i<=-1?-MW:Math.asin(i)}function rPt(i){let a=3;return i.digits=function(f){if(!arguments.length)return a;if(f==null)a=null;else{const g=Math.floor(f);if(!(g>=0))throw new RangeError(`invalid digits: ${f}`);a=g}return i},()=>new yAe(a)}function sDe(i){return i.innerRadius}function aDe(i){return i.outerRadius}function oDe(i){return i.startAngle}function cDe(i){return i.endAngle}function uDe(i){return i&&i.padAngle}function lDe(i,a,f,g,w,v,b,E){var S=f-i,_=g-a,M=b-w,F=E-v,R=F*S-M*_;if(!(R*ROt*Ot+It*It&&(gt=dt,Q=K),{cx:gt,cy:Q,x01:-M,y01:-F,x11:gt*(w/ct-1),y11:Q*(w/ct-1)}}function YL(){var i=sDe,a=aDe,f=kf(0),g=null,w=oDe,v=cDe,b=uDe,E=null,S=rPt(_);function _(){var M,F,R=+i.apply(this,arguments),B=+a.apply(this,arguments),z=w.apply(this,arguments)-MW,Y=v.apply(this,arguments)-MW,nt=ePt(Y-z),ot=Y>z;if(E||(E=M=S()),Brg))E.moveTo(0,0);else if(nt>IW-rg)E.moveTo(B*d9(z),B*t4(z)),E.arc(0,0,B,z,Y,!ot),R>rg&&(E.moveTo(R*d9(Y),R*t4(Y)),E.arc(0,0,R,Y,z,ot));else{var ft=z,wt=Y,mt=z,ct=Y,rt=nt,it=nt,gt=b.apply(this,arguments)/2,Q=gt>rg&&(g?+g.apply(this,arguments):WL(R*R+B*B)),dt=Z0t(ePt(B-R)/2,+f.apply(this,arguments)),K=dt,yt=dt,V,Ot;if(Q>rg){var It=nPt(Q/R*t4(gt)),jt=nPt(Q/B*t4(gt));(rt-=It*2)>rg?(It*=ot?1:-1,mt+=It,ct-=It):(rt=0,mt=ct=(z+Y)/2),(it-=jt*2)>rg?(jt*=ot?1:-1,ft+=jt,wt-=jt):(it=0,ft=wt=(z+Y)/2)}var xt=B*d9(ft),Ft=B*t4(ft),Ct=R*d9(ct),kt=R*t4(ct);if(dt>rg){var Gt=B*d9(wt),Fe=B*t4(wt),Mt=R*d9(mt),pn=R*t4(mt),Ae;if(ntrg?yt>rg?(V=OW(Mt,pn,xt,Ft,B,yt,ot),Ot=OW(Gt,Fe,Ct,kt,B,yt,ot),E.moveTo(V.cx+V.x01,V.cy+V.y01),ytrg)||!(rt>rg)?E.lineTo(Ct,kt):K>rg?(V=OW(Ct,kt,Gt,Fe,R,-K,ot),Ot=OW(xt,Ft,Mt,pn,R,-K,ot),E.lineTo(V.cx+V.x01,V.cy+V.y01),Ki?1:a>=i?0:NaN}function gDe(i){return i}function pDe(){var i=gDe,a=dDe,f=null,g=kf(0),w=kf(IW),v=kf(0);function b(E){var S,_=(E=iPt(E)).length,M,F,R=0,B=new Array(_),z=new Array(_),Y=+g.apply(this,arguments),nt=Math.min(IW,Math.max(-IW,w.apply(this,arguments)-Y)),ot,ft=Math.min(Math.abs(nt)/_,v.apply(this,arguments)),wt=ft*(nt<0?-1:1),mt;for(S=0;S<_;++S)(mt=z[B[S]=S]=+i(E[S],S,E))>0&&(R+=mt);for(a!=null?B.sort(function(ct,rt){return a(z[ct],z[rt])}):f!=null&&B.sort(function(ct,rt){return f(E[ct],E[rt])}),S=0,F=R?(nt-_*wt)/R:0;S<_;++S,Y=ot)M=B[S],mt=z[M],ot=Y+(mt>0?mt*F:0)+wt,z[M]={data:E[M],index:S,value:mt,startAngle:Y,endAngle:ot,padAngle:ft};return z}return b.value=function(E){return arguments.length?(i=typeof E=="function"?E:kf(+E),b):i},b.sortValues=function(E){return arguments.length?(a=E,f=null,b):a},b.sort=function(E){return arguments.length?(f=E,a=null,b):f},b.startAngle=function(E){return arguments.length?(g=typeof E=="function"?E:kf(+E),b):g},b.endAngle=function(E){return arguments.length?(w=typeof E=="function"?E:kf(+E),b):w},b.padAngle=function(E){return arguments.length?(v=typeof E=="function"?E:kf(+E),b):v},b}class aPt{constructor(a,f){this._context=a,this._x=f}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(a,f){switch(a=+a,f=+f,this._point){case 0:{this._point=1,this._line?this._context.lineTo(a,f):this._context.moveTo(a,f);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+a)/2,this._y0,this._x0,f,a,f):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+f)/2,a,this._y0,a,f);break}}this._x0=a,this._y0=f}}function bDe(i){return new aPt(i,!0)}function wDe(i){return new aPt(i,!1)}function d8(){}function NW(i,a,f){i._context.bezierCurveTo((2*i._x0+i._x1)/3,(2*i._y0+i._y1)/3,(i._x0+2*i._x1)/3,(i._y0+2*i._y1)/3,(i._x0+4*i._x1+a)/6,(i._y0+4*i._y1+f)/6)}function PW(i){this._context=i}PW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:NW(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:NW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function wF(i){return new PW(i)}function oPt(i){this._context=i}oPt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x2=i,this._y2=a;break;case 1:this._point=2,this._x3=i,this._y3=a;break;case 2:this._point=3,this._x4=i,this._y4=a,this._context.moveTo((this._x0+4*this._x1+i)/6,(this._y0+4*this._y1+a)/6);break;default:NW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function mDe(i){return new oPt(i)}function cPt(i){this._context=i}cPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var f=(this._x0+4*this._x1+i)/6,g=(this._y0+4*this._y1+a)/6;this._line?this._context.lineTo(f,g):this._context.moveTo(f,g);break;case 3:this._point=4;default:NW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function vDe(i){return new cPt(i)}function uPt(i,a){this._basis=new PW(i),this._beta=a}uPt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var i=this._x,a=this._y,f=i.length-1;if(f>0)for(var g=i[0],w=a[0],v=i[f]-g,b=a[f]-w,E=-1,S;++E<=f;)S=E/f,this._basis.point(this._beta*i[E]+(1-this._beta)*(g+S*v),this._beta*a[E]+(1-this._beta)*(w+S*b));this._x=this._y=null,this._basis.lineEnd()},point:function(i,a){this._x.push(+i),this._y.push(+a)}};const yDe=function i(a){function f(g){return a===1?new PW(g):new uPt(g,a)}return f.beta=function(g){return i(+g)},f}(.85);function FW(i,a,f){i._context.bezierCurveTo(i._x1+i._k*(i._x2-i._x0),i._y1+i._k*(i._y2-i._y0),i._x2+i._k*(i._x1-a),i._y2+i._k*(i._y1-f),i._x2,i._y2)}function tgt(i,a){this._context=i,this._k=(1-a)/6}tgt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:FW(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2,this._x1=i,this._y1=a;break;case 2:this._point=3;default:FW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const xDe=function i(a){function f(g){return new tgt(g,a)}return f.tension=function(g){return i(+g)},f}(0);function egt(i,a){this._context=i,this._k=(1-a)/6}egt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:FW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const kDe=function i(a){function f(g){return new egt(g,a)}return f.tension=function(g){return i(+g)},f}(0);function ngt(i,a){this._context=i,this._k=(1-a)/6}ngt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:FW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const EDe=function i(a){function f(g){return new ngt(g,a)}return f.tension=function(g){return i(+g)},f}(0);function rgt(i,a,f){var g=i._x1,w=i._y1,v=i._x2,b=i._y2;if(i._l01_a>rg){var E=2*i._l01_2a+3*i._l01_a*i._l12_a+i._l12_2a,S=3*i._l01_a*(i._l01_a+i._l12_a);g=(g*E-i._x0*i._l12_2a+i._x2*i._l01_2a)/S,w=(w*E-i._y0*i._l12_2a+i._y2*i._l01_2a)/S}if(i._l23_a>rg){var _=2*i._l23_2a+3*i._l23_a*i._l12_a+i._l12_2a,M=3*i._l23_a*(i._l23_a+i._l12_a);v=(v*_+i._x1*i._l23_2a-a*i._l12_2a)/M,b=(b*_+i._y1*i._l23_2a-f*i._l12_2a)/M}i._context.bezierCurveTo(g,w,v,b,i._x2,i._y2)}function lPt(i,a){this._context=i,this._alpha=a}lPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3;default:rgt(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const TDe=function i(a){function f(g){return a?new lPt(g,a):new tgt(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function hPt(i,a){this._context=i,this._alpha=a}hPt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:rgt(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const CDe=function i(a){function f(g){return a?new hPt(g,a):new egt(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function fPt(i,a){this._context=i,this._alpha=a}fPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:rgt(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const SDe=function i(a){function f(g){return a?new fPt(g,a):new ngt(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function dPt(i){this._context=i}dPt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(i,a){i=+i,a=+a,this._point?this._context.lineTo(i,a):(this._point=1,this._context.moveTo(i,a))}};function _De(i){return new dPt(i)}function gPt(i){return i<0?-1:1}function pPt(i,a,f){var g=i._x1-i._x0,w=a-i._x1,v=(i._y1-i._y0)/(g||w<0&&-0),b=(f-i._y1)/(w||g<0&&-0),E=(v*w+b*g)/(g+w);return(gPt(v)+gPt(b))*Math.min(Math.abs(v),Math.abs(b),.5*Math.abs(E))||0}function bPt(i,a){var f=i._x1-i._x0;return f?(3*(i._y1-i._y0)/f-a)/2:a}function igt(i,a,f){var g=i._x0,w=i._y0,v=i._x1,b=i._y1,E=(v-g)/3;i._context.bezierCurveTo(g+E,w+E*a,v-E,b-E*f,v,b)}function BW(i){this._context=i}BW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:igt(this,this._t0,bPt(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){var f=NaN;if(i=+i,a=+a,!(i===this._x1&&a===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,igt(this,bPt(this,f=pPt(this,i,a)),f);break;default:igt(this,this._t0,f=pPt(this,i,a));break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a,this._t0=f}}};function wPt(i){this._context=new mPt(i)}(wPt.prototype=Object.create(BW.prototype)).point=function(i,a){BW.prototype.point.call(this,a,i)};function mPt(i){this._context=i}mPt.prototype={moveTo:function(i,a){this._context.moveTo(a,i)},closePath:function(){this._context.closePath()},lineTo:function(i,a){this._context.lineTo(a,i)},bezierCurveTo:function(i,a,f,g,w,v){this._context.bezierCurveTo(a,i,g,f,v,w)}};function ADe(i){return new BW(i)}function LDe(i){return new wPt(i)}function vPt(i){this._context=i}vPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var i=this._x,a=this._y,f=i.length;if(f)if(this._line?this._context.lineTo(i[0],a[0]):this._context.moveTo(i[0],a[0]),f===2)this._context.lineTo(i[1],a[1]);else for(var g=yPt(i),w=yPt(a),v=0,b=1;b=0;--a)w[a]=(b[a]-w[a+1])/v[a];for(v[f-1]=(i[f]+w[f-1])/2,a=0;a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,a),this._context.lineTo(i,a);else{var f=this._x*(1-this._t)+i*this._t;this._context.lineTo(f,this._y),this._context.lineTo(f,a)}break}}this._x=i,this._y=a}};function MDe(i){return new RW(i,.5)}function IDe(i){return new RW(i,0)}function ODe(i){return new RW(i,1)}function mF(i,a,f){this.k=i,this.x=a,this.y=f}mF.prototype={constructor:mF,scale:function(i){return i===1?this:new mF(this.k*i,this.x,this.y)},translate:function(i,a){return i===0&a===0?this:new mF(this.k,this.x+this.k*i,this.y+this.k*a)},apply:function(i){return[i[0]*this.k+this.x,i[1]*this.k+this.y]},applyX:function(i){return i*this.k+this.x},applyY:function(i){return i*this.k+this.y},invert:function(i){return[(i[0]-this.x)/this.k,(i[1]-this.y)/this.k]},invertX:function(i){return(i-this.x)/this.k},invertY:function(i){return(i-this.y)/this.k},rescaleX:function(i){return i.copy().domain(i.range().map(this.invertX,this).map(i.invert,i))},rescaleY:function(i){return i.copy().domain(i.range().map(this.invertY,this).map(i.invert,i))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},mF.prototype;/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */const{entries:xPt,setPrototypeOf:kPt,isFrozen:NDe,getPrototypeOf:PDe,getOwnPropertyDescriptor:FDe}=Object;let{freeze:Wg,seal:qv,create:BDe}=Object,{apply:sgt,construct:agt}=typeof Reflect<"u"&&Reflect;sgt||(sgt=function(a,f,g){return a.apply(f,g)}),Wg||(Wg=function(a){return a}),qv||(qv=function(a){return a}),agt||(agt=function(a,f){return new a(...f)});const RDe=Ww(Array.prototype.forEach),EPt=Ww(Array.prototype.pop),vF=Ww(Array.prototype.push),jW=Ww(String.prototype.toLowerCase),ogt=Ww(String.prototype.toString),jDe=Ww(String.prototype.match),Hv=Ww(String.prototype.replace),$De=Ww(String.prototype.indexOf),zDe=Ww(String.prototype.trim),E2=Ww(RegExp.prototype.test),yF=qDe(TypeError);function Ww(i){return function(a){for(var f=arguments.length,g=new Array(f>1?f-1:0),w=1;w/gm),KDe=qv(/\${[\w\W]*}/gm),WDe=qv(/^data-[\-\w.\u00B7-\uFFFF]/),YDe=qv(/^aria-[\-\w]+$/),APt=qv(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),XDe=qv(/^(?:\w+script|data):/i),QDe=qv(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),LPt=qv(/^html$/i);var DPt=Object.freeze({__proto__:null,MUSTACHE_EXPR:UDe,ERB_EXPR:GDe,TMPLIT_EXPR:KDe,DATA_ATTR:WDe,ARIA_ATTR:YDe,IS_ALLOWED_URI:APt,IS_SCRIPT_OR_DATA:XDe,ATTR_WHITESPACE:QDe,DOCTYPE_NAME:LPt});const JDe=()=>typeof window>"u"?null:window,ZDe=function(a,f){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let g=null;const w="data-tt-policy-suffix";f&&f.hasAttribute(w)&&(g=f.getAttribute(w));const v="dompurify"+(g?"#"+g:"");try{return a.createPolicy(v,{createHTML(b){return b},createScriptURL(b){return b}})}catch{return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function MPt(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:JDe();const a=Gi=>MPt(Gi);if(a.version="3.0.5",a.removed=[],!i||!i.document||i.document.nodeType!==9)return a.isSupported=!1,a;const f=i.document,g=f.currentScript;let{document:w}=i;const{DocumentFragment:v,HTMLTemplateElement:b,Node:E,Element:S,NodeFilter:_,NamedNodeMap:M=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:F,DOMParser:R,trustedTypes:B}=i,z=S.prototype,Y=$W(z,"cloneNode"),nt=$W(z,"nextSibling"),ot=$W(z,"childNodes"),ft=$W(z,"parentNode");if(typeof b=="function"){const Gi=w.createElement("template");Gi.content&&Gi.content.ownerDocument&&(w=Gi.content.ownerDocument)}let wt,mt="";const{implementation:ct,createNodeIterator:rt,createDocumentFragment:it,getElementsByTagName:gt}=w,{importNode:Q}=f;let dt={};a.isSupported=typeof xPt=="function"&&typeof ft=="function"&&ct&&ct.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:K,ERB_EXPR:yt,TMPLIT_EXPR:V,DATA_ATTR:Ot,ARIA_ATTR:It,IS_SCRIPT_OR_DATA:jt,ATTR_WHITESPACE:xt}=DPt;let{IS_ALLOWED_URI:Ft}=DPt,Ct=null;const kt=Fo({},[...TPt,...cgt,...ugt,...lgt,...CPt]);let Gt=null;const Fe=Fo({},[...SPt,...hgt,..._Pt,...zW]);let Mt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),pn=null,Ae=null,ye=!0,tn=!0,sn=!1,be=!0,Ne=!1,Xt=!1,_e=!1,xe=!1,Mn=!1,ce=!1,Br=!1,we=!0,Fi=!1;const mi="user-content-";let ga=!0,Ss=!1,za={},br=null;const An=Fo({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Nn=null;const Bn=Fo({},["audio","video","img","source","image","track"]);let ke=null;const pe=Fo({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Je="http://www.w3.org/1998/Math/MathML",an="http://www.w3.org/2000/svg",xn="http://www.w3.org/1999/xhtml";let qa=xn,xo=!1,ko=null;const va=Fo({},[Je,an,xn],ogt);let Ha;const ds=["application/xhtml+xml","text/html"],Fu="text/html";let Zs,d1=null;const I2=w.createElement("form"),ll=function(cn){return cn instanceof RegExp||cn instanceof Function},Ic=function(cn){if(!(d1&&d1===cn)){if((!cn||typeof cn!="object")&&(cn={}),cn=XL(cn),Ha=ds.indexOf(cn.PARSER_MEDIA_TYPE)===-1?Ha=Fu:Ha=cn.PARSER_MEDIA_TYPE,Zs=Ha==="application/xhtml+xml"?ogt:jW,Ct="ALLOWED_TAGS"in cn?Fo({},cn.ALLOWED_TAGS,Zs):kt,Gt="ALLOWED_ATTR"in cn?Fo({},cn.ALLOWED_ATTR,Zs):Fe,ko="ALLOWED_NAMESPACES"in cn?Fo({},cn.ALLOWED_NAMESPACES,ogt):va,ke="ADD_URI_SAFE_ATTR"in cn?Fo(XL(pe),cn.ADD_URI_SAFE_ATTR,Zs):pe,Nn="ADD_DATA_URI_TAGS"in cn?Fo(XL(Bn),cn.ADD_DATA_URI_TAGS,Zs):Bn,br="FORBID_CONTENTS"in cn?Fo({},cn.FORBID_CONTENTS,Zs):An,pn="FORBID_TAGS"in cn?Fo({},cn.FORBID_TAGS,Zs):{},Ae="FORBID_ATTR"in cn?Fo({},cn.FORBID_ATTR,Zs):{},za="USE_PROFILES"in cn?cn.USE_PROFILES:!1,ye=cn.ALLOW_ARIA_ATTR!==!1,tn=cn.ALLOW_DATA_ATTR!==!1,sn=cn.ALLOW_UNKNOWN_PROTOCOLS||!1,be=cn.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ne=cn.SAFE_FOR_TEMPLATES||!1,Xt=cn.WHOLE_DOCUMENT||!1,Mn=cn.RETURN_DOM||!1,ce=cn.RETURN_DOM_FRAGMENT||!1,Br=cn.RETURN_TRUSTED_TYPE||!1,xe=cn.FORCE_BODY||!1,we=cn.SANITIZE_DOM!==!1,Fi=cn.SANITIZE_NAMED_PROPS||!1,ga=cn.KEEP_CONTENT!==!1,Ss=cn.IN_PLACE||!1,Ft=cn.ALLOWED_URI_REGEXP||APt,qa=cn.NAMESPACE||xn,Mt=cn.CUSTOM_ELEMENT_HANDLING||{},cn.CUSTOM_ELEMENT_HANDLING&&ll(cn.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Mt.tagNameCheck=cn.CUSTOM_ELEMENT_HANDLING.tagNameCheck),cn.CUSTOM_ELEMENT_HANDLING&&ll(cn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Mt.attributeNameCheck=cn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),cn.CUSTOM_ELEMENT_HANDLING&&typeof cn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Mt.allowCustomizedBuiltInElements=cn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ne&&(tn=!1),ce&&(Mn=!0),za&&(Ct=Fo({},[...CPt]),Gt=[],za.html===!0&&(Fo(Ct,TPt),Fo(Gt,SPt)),za.svg===!0&&(Fo(Ct,cgt),Fo(Gt,hgt),Fo(Gt,zW)),za.svgFilters===!0&&(Fo(Ct,ugt),Fo(Gt,hgt),Fo(Gt,zW)),za.mathMl===!0&&(Fo(Ct,lgt),Fo(Gt,_Pt),Fo(Gt,zW))),cn.ADD_TAGS&&(Ct===kt&&(Ct=XL(Ct)),Fo(Ct,cn.ADD_TAGS,Zs)),cn.ADD_ATTR&&(Gt===Fe&&(Gt=XL(Gt)),Fo(Gt,cn.ADD_ATTR,Zs)),cn.ADD_URI_SAFE_ATTR&&Fo(ke,cn.ADD_URI_SAFE_ATTR,Zs),cn.FORBID_CONTENTS&&(br===An&&(br=XL(br)),Fo(br,cn.FORBID_CONTENTS,Zs)),ga&&(Ct["#text"]=!0),Xt&&Fo(Ct,["html","head","body"]),Ct.table&&(Fo(Ct,["tbody"]),delete pn.tbody),cn.TRUSTED_TYPES_POLICY){if(typeof cn.TRUSTED_TYPES_POLICY.createHTML!="function")throw yF('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof cn.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw yF('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');wt=cn.TRUSTED_TYPES_POLICY,mt=wt.createHTML("")}else wt===void 0&&(wt=ZDe(B,g)),wt!==null&&typeof mt=="string"&&(mt=wt.createHTML(""));Wg&&Wg(cn),d1=cn}},wc=Fo({},["mi","mo","mn","ms","mtext"]),Ea=Fo({},["foreignobject","desc","title","annotation-xml"]),gu=Fo({},["title","style","font","a","script"]),ta=Fo({},cgt);Fo(ta,ugt),Fo(ta,HDe);const fo=Fo({},lgt);Fo(fo,VDe);const mc=function(cn){let Nr=ft(cn);(!Nr||!Nr.tagName)&&(Nr={namespaceURI:qa,tagName:"template"});const Si=jW(cn.tagName),vc=jW(Nr.tagName);return ko[cn.namespaceURI]?cn.namespaceURI===an?Nr.namespaceURI===xn?Si==="svg":Nr.namespaceURI===Je?Si==="svg"&&(vc==="annotation-xml"||wc[vc]):!!ta[Si]:cn.namespaceURI===Je?Nr.namespaceURI===xn?Si==="math":Nr.namespaceURI===an?Si==="math"&&Ea[vc]:!!fo[Si]:cn.namespaceURI===xn?Nr.namespaceURI===an&&!Ea[vc]||Nr.namespaceURI===Je&&!wc[vc]?!1:!fo[Si]&&(gu[Si]||!ta[Si]):!!(Ha==="application/xhtml+xml"&&ko[cn.namespaceURI]):!1},ca=function(cn){vF(a.removed,{element:cn});try{cn.parentNode.removeChild(cn)}catch{cn.remove()}},ya=function(cn,Nr){try{vF(a.removed,{attribute:Nr.getAttributeNode(cn),from:Nr})}catch{vF(a.removed,{attribute:null,from:Nr})}if(Nr.removeAttribute(cn),cn==="is"&&!Gt[cn])if(Mn||ce)try{ca(Nr)}catch{}else try{Nr.setAttribute(cn,"")}catch{}},ea=function(cn){let Nr,Si;if(xe)cn=""+cn;else{const Eh=jDe(cn,/^[\r\n\t ]+/);Si=Eh&&Eh[0]}Ha==="application/xhtml+xml"&&qa===xn&&(cn=''+cn+"");const vc=wt?wt.createHTML(cn):cn;if(qa===xn)try{Nr=new R().parseFromString(vc,Ha)}catch{}if(!Nr||!Nr.documentElement){Nr=ct.createDocument(qa,"template",null);try{Nr.documentElement.innerHTML=xo?mt:vc}catch{}}const Rc=Nr.body||Nr.documentElement;return cn&&Si&&Rc.insertBefore(w.createTextNode(Si),Rc.childNodes[0]||null),qa===xn?gt.call(Nr,Xt?"html":"body")[0]:Xt?Nr.documentElement:Rc},Zl=function(cn){return rt.call(cn.ownerDocument||cn,cn,_.SHOW_ELEMENT|_.SHOW_COMMENT|_.SHOW_TEXT,null,!1)},Uc=function(cn){return cn instanceof F&&(typeof cn.nodeName!="string"||typeof cn.textContent!="string"||typeof cn.removeChild!="function"||!(cn.attributes instanceof M)||typeof cn.removeAttribute!="function"||typeof cn.setAttribute!="function"||typeof cn.namespaceURI!="string"||typeof cn.insertBefore!="function"||typeof cn.hasChildNodes!="function")},rm=function(cn){return typeof E=="object"?cn instanceof E:cn&&typeof cn=="object"&&typeof cn.nodeType=="number"&&typeof cn.nodeName=="string"},kh=function(cn,Nr,Si){dt[cn]&&RDe(dt[cn],vc=>{vc.call(a,Nr,Si,d1)})},Md=function(cn){let Nr;if(kh("beforeSanitizeElements",cn,null),Uc(cn))return ca(cn),!0;const Si=Zs(cn.nodeName);if(kh("uponSanitizeElement",cn,{tagName:Si,allowedTags:Ct}),cn.hasChildNodes()&&!rm(cn.firstElementChild)&&(!rm(cn.content)||!rm(cn.content.firstElementChild))&&E2(/<[/\w]/g,cn.innerHTML)&&E2(/<[/\w]/g,cn.textContent))return ca(cn),!0;if(!Ct[Si]||pn[Si]){if(!pn[Si]&&Id(Si)&&(Mt.tagNameCheck instanceof RegExp&&E2(Mt.tagNameCheck,Si)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(Si)))return!1;if(ga&&!br[Si]){const vc=ft(cn)||cn.parentNode,Rc=ot(cn)||cn.childNodes;if(Rc&&vc){const Eh=Rc.length;for(let Zc=Eh-1;Zc>=0;--Zc)vc.insertBefore(Y(Rc[Zc],!0),nt(cn))}}return ca(cn),!0}return cn instanceof S&&!mc(cn)||(Si==="noscript"||Si==="noembed"||Si==="noframes")&&E2(/<\/no(script|embed|frames)/i,cn.innerHTML)?(ca(cn),!0):(Ne&&cn.nodeType===3&&(Nr=cn.textContent,Nr=Hv(Nr,K," "),Nr=Hv(Nr,yt," "),Nr=Hv(Nr,V," "),cn.textContent!==Nr&&(vF(a.removed,{element:cn.cloneNode()}),cn.textContent=Nr)),kh("afterSanitizeElements",cn,null),!1)},w0=function(cn,Nr,Si){if(we&&(Nr==="id"||Nr==="name")&&(Si in w||Si in I2))return!1;if(!(tn&&!Ae[Nr]&&E2(Ot,Nr))){if(!(ye&&E2(It,Nr))){if(!Gt[Nr]||Ae[Nr]){if(!(Id(cn)&&(Mt.tagNameCheck instanceof RegExp&&E2(Mt.tagNameCheck,cn)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(cn))&&(Mt.attributeNameCheck instanceof RegExp&&E2(Mt.attributeNameCheck,Nr)||Mt.attributeNameCheck instanceof Function&&Mt.attributeNameCheck(Nr))||Nr==="is"&&Mt.allowCustomizedBuiltInElements&&(Mt.tagNameCheck instanceof RegExp&&E2(Mt.tagNameCheck,Si)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(Si))))return!1}else if(!ke[Nr]){if(!E2(Ft,Hv(Si,xt,""))){if(!((Nr==="src"||Nr==="xlink:href"||Nr==="href")&&cn!=="script"&&$De(Si,"data:")===0&&Nn[cn])){if(!(sn&&!E2(jt,Hv(Si,xt,"")))){if(Si)return!1}}}}}}return!0},Id=function(cn){return cn.indexOf("-")>0},m0=function(cn){let Nr,Si,vc,Rc;kh("beforeSanitizeAttributes",cn,null);const{attributes:Eh}=cn;if(!Eh)return;const Zc={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Gt};for(Rc=Eh.length;Rc--;){Nr=Eh[Rc];const{name:Qh,namespaceURI:Od}=Nr;if(Si=Qh==="value"?Nr.value:zDe(Nr.value),vc=Zs(Qh),Zc.attrName=vc,Zc.attrValue=Si,Zc.keepAttr=!0,Zc.forceKeepAttr=void 0,kh("uponSanitizeAttribute",cn,Zc),Si=Zc.attrValue,Zc.forceKeepAttr||(ya(Qh,cn),!Zc.keepAttr))continue;if(!be&&E2(/\/>/i,Si)){ya(Qh,cn);continue}Ne&&(Si=Hv(Si,K," "),Si=Hv(Si,yt," "),Si=Hv(Si,V," "));const cs=Zs(cn.nodeName);if(w0(cs,vc,Si)){if(Fi&&(vc==="id"||vc==="name")&&(ya(Qh,cn),Si=mi+Si),wt&&typeof B=="object"&&typeof B.getAttributeType=="function"&&!Od)switch(B.getAttributeType(cs,vc)){case"TrustedHTML":{Si=wt.createHTML(Si);break}case"TrustedScriptURL":{Si=wt.createScriptURL(Si);break}}try{Od?cn.setAttributeNS(Od,Qh,Si):cn.setAttribute(Qh,Si),EPt(a.removed)}catch{}}}kh("afterSanitizeAttributes",cn,null)},hg=function Gi(cn){let Nr;const Si=Zl(cn);for(kh("beforeSanitizeShadowDOM",cn,null);Nr=Si.nextNode();)kh("uponSanitizeShadowNode",Nr,null),!Md(Nr)&&(Nr.content instanceof v&&Gi(Nr.content),m0(Nr));kh("afterSanitizeShadowDOM",cn,null)};return a.sanitize=function(Gi){let cn=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Nr,Si,vc,Rc;if(xo=!Gi,xo&&(Gi=""),typeof Gi!="string"&&!rm(Gi))if(typeof Gi.toString=="function"){if(Gi=Gi.toString(),typeof Gi!="string")throw yF("dirty is not a string, aborting")}else throw yF("toString is not a function");if(!a.isSupported)return Gi;if(_e||Ic(cn),a.removed=[],typeof Gi=="string"&&(Ss=!1),Ss){if(Gi.nodeName){const Qh=Zs(Gi.nodeName);if(!Ct[Qh]||pn[Qh])throw yF("root node is forbidden and cannot be sanitized in-place")}}else if(Gi instanceof E)Nr=ea(""),Si=Nr.ownerDocument.importNode(Gi,!0),Si.nodeType===1&&Si.nodeName==="BODY"||Si.nodeName==="HTML"?Nr=Si:Nr.appendChild(Si);else{if(!Mn&&!Ne&&!Xt&&Gi.indexOf("<")===-1)return wt&&Br?wt.createHTML(Gi):Gi;if(Nr=ea(Gi),!Nr)return Mn?null:Br?mt:""}Nr&&xe&&ca(Nr.firstChild);const Eh=Zl(Ss?Gi:Nr);for(;vc=Eh.nextNode();)Md(vc)||(vc.content instanceof v&&hg(vc.content),m0(vc));if(Ss)return Gi;if(Mn){if(ce)for(Rc=it.call(Nr.ownerDocument);Nr.firstChild;)Rc.appendChild(Nr.firstChild);else Rc=Nr;return(Gt.shadowroot||Gt.shadowrootmode)&&(Rc=Q.call(f,Rc,!0)),Rc}let Zc=Xt?Nr.outerHTML:Nr.innerHTML;return Xt&&Ct["!doctype"]&&Nr.ownerDocument&&Nr.ownerDocument.doctype&&Nr.ownerDocument.doctype.name&&E2(LPt,Nr.ownerDocument.doctype.name)&&(Zc=" +`+Zc),Ne&&(Zc=Hv(Zc,K," "),Zc=Hv(Zc,yt," "),Zc=Hv(Zc,V," ")),wt&&Br?wt.createHTML(Zc):Zc},a.setConfig=function(Gi){Ic(Gi),_e=!0},a.clearConfig=function(){d1=null,_e=!1},a.isValidAttribute=function(Gi,cn,Nr){d1||Ic({});const Si=Zs(Gi),vc=Zs(cn);return w0(Si,vc,Nr)},a.addHook=function(Gi,cn){typeof cn=="function"&&(dt[Gi]=dt[Gi]||[],vF(dt[Gi],cn))},a.removeHook=function(Gi){if(dt[Gi])return EPt(dt[Gi])},a.removeHooks=function(Gi){dt[Gi]&&(dt[Gi]=[])},a.removeAllHooks=function(){dt={}},a}var QL=MPt();const xF=//gi,tMe=i=>i?NPt(i).replace(/\\n/g,"#br#").split("#br#"):[""],eMe=(()=>{let i=!1;return()=>{i||(nMe(),i=!0)}})();function nMe(){const i="data-temp-href-target";QL.addHook("beforeSanitizeAttributes",a=>{a.tagName==="A"&&a.hasAttribute("target")&&a.setAttribute(i,a.getAttribute("target")||"")}),QL.addHook("afterSanitizeAttributes",a=>{a.tagName==="A"&&a.hasAttribute(i)&&(a.setAttribute("target",a.getAttribute(i)||""),a.removeAttribute(i),a.getAttribute("target")==="_blank"&&a.setAttribute("rel","noopener"))})}const IPt=i=>(eMe(),QL.sanitize(i)),OPt=(i,a)=>{var f;if(((f=a.flowchart)==null?void 0:f.htmlLabels)!==!1){const g=a.securityLevel;g==="antiscript"||g==="strict"?i=IPt(i):g!=="loose"&&(i=NPt(i),i=i.replace(//g,">"),i=i.replace(/=/g,"="),i=aMe(i))}return i},Ef=(i,a)=>i&&(a.dompurifyConfig?i=QL.sanitize(OPt(i,a),a.dompurifyConfig).toString():i=QL.sanitize(OPt(i,a),{FORBID_TAGS:["style"]}).toString(),i),rMe=(i,a)=>typeof i=="string"?Ef(i,a):i.flat().map(f=>Ef(f,a)),iMe=i=>xF.test(i),sMe=i=>i.split(xF),aMe=i=>i.replace(/#br#/g,"
    "),NPt=i=>i.replace(xF,"#br#"),oMe=i=>{let a="";return i&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replaceAll(/\(/g,"\\("),a=a.replaceAll(/\)/g,"\\)")),a},j1=i=>!(i===!1||["false","null","0"].includes(String(i).trim().toLowerCase())),cMe=function(...i){const a=i.filter(f=>!isNaN(f));return Math.max(...a)},uMe=function(...i){const a=i.filter(f=>!isNaN(f));return Math.min(...a)},kF=function(i){const a=i.split(/(,)/),f=[];for(let g=0;g0&&g+1Math.max(0,i.split(a).length-1),lMe=(i,a)=>{const f=fgt(i,"~"),g=fgt(a,"~");return f===1&&g===1},hMe=i=>{const a=fgt(i,"~");let f=!1;if(a<=1)return i;a%2!==0&&i.startsWith("~")&&(i=i.substring(1),f=!0);const g=[...i];let w=g.indexOf("~"),v=g.lastIndexOf("~");for(;w!==-1&&v!==-1&&w!==v;)g[w]="<",g[v]=">",w=g.indexOf("~"),v=g.lastIndexOf("~");return f&&g.unshift("~"),g.join("")},ei={getRows:tMe,sanitizeText:Ef,sanitizeTextOrArray:rMe,hasBreaks:iMe,splitBreaks:sMe,lineBreakRegex:xF,removeScript:IPt,getUrl:oMe,evaluate:j1,getMax:cMe,getMin:uMe},qW={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:i=>i>=255?255:i<0?0:i,g:i=>i>=255?255:i<0?0:i,b:i=>i>=255?255:i<0?0:i,h:i=>i%360,s:i=>i>=100?100:i<0?0:i,l:i=>i>=100?100:i<0?0:i,a:i=>i>=1?1:i<0?0:i},toLinear:i=>{const a=i/255;return i>.03928?Math.pow((a+.055)/1.055,2.4):a/12.92},hue2rgb:(i,a,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<1/6?i+(a-i)*6*f:f<1/2?a:f<2/3?i+(a-i)*(2/3-f)*6:i),hsl2rgb:({h:i,s:a,l:f},g)=>{if(!a)return f*2.55;i/=360,a/=100,f/=100;const w=f<.5?f*(1+a):f+a-f*a,v=2*f-w;switch(g){case"r":return qW.hue2rgb(v,w,i+1/3)*255;case"g":return qW.hue2rgb(v,w,i)*255;case"b":return qW.hue2rgb(v,w,i-1/3)*255}},rgb2hsl:({r:i,g:a,b:f},g)=>{i/=255,a/=255,f/=255;const w=Math.max(i,a,f),v=Math.min(i,a,f),b=(w+v)/2;if(g==="l")return b*100;if(w===v)return 0;const E=w-v,S=b>.5?E/(2-w-v):E/(w+v);if(g==="s")return S*100;switch(w){case i:return((a-f)/E+(aa>f?Math.min(a,Math.max(f,i)):Math.min(f,Math.max(a,i)),round:i=>Math.round(i*1e10)/1e10},unit:{dec2hex:i=>{const a=Math.round(i).toString(16);return a.length>1?a:`0${a}`}}},g8={};for(let i=0;i<=255;i++)g8[i]=Ia.unit.dec2hex(i);const ig={ALL:0,RGB:1,HSL:2};class fMe{constructor(){this.type=ig.ALL}get(){return this.type}set(a){if(this.type&&this.type!==a)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=a}reset(){this.type=ig.ALL}is(a){return this.type===a}}const dMe=fMe;class gMe{constructor(a,f){this.color=f,this.changed=!1,this.data=a,this.type=new dMe}set(a,f){return this.color=f,this.changed=!1,this.data=a,this.type.type=ig.ALL,this}_ensureHSL(){const a=this.data,{h:f,s:g,l:w}=a;f===void 0&&(a.h=Ia.channel.rgb2hsl(a,"h")),g===void 0&&(a.s=Ia.channel.rgb2hsl(a,"s")),w===void 0&&(a.l=Ia.channel.rgb2hsl(a,"l"))}_ensureRGB(){const a=this.data,{r:f,g,b:w}=a;f===void 0&&(a.r=Ia.channel.hsl2rgb(a,"r")),g===void 0&&(a.g=Ia.channel.hsl2rgb(a,"g")),w===void 0&&(a.b=Ia.channel.hsl2rgb(a,"b"))}get r(){const a=this.data,f=a.r;return!this.type.is(ig.HSL)&&f!==void 0?f:(this._ensureHSL(),Ia.channel.hsl2rgb(a,"r"))}get g(){const a=this.data,f=a.g;return!this.type.is(ig.HSL)&&f!==void 0?f:(this._ensureHSL(),Ia.channel.hsl2rgb(a,"g"))}get b(){const a=this.data,f=a.b;return!this.type.is(ig.HSL)&&f!==void 0?f:(this._ensureHSL(),Ia.channel.hsl2rgb(a,"b"))}get h(){const a=this.data,f=a.h;return!this.type.is(ig.RGB)&&f!==void 0?f:(this._ensureRGB(),Ia.channel.rgb2hsl(a,"h"))}get s(){const a=this.data,f=a.s;return!this.type.is(ig.RGB)&&f!==void 0?f:(this._ensureRGB(),Ia.channel.rgb2hsl(a,"s"))}get l(){const a=this.data,f=a.l;return!this.type.is(ig.RGB)&&f!==void 0?f:(this._ensureRGB(),Ia.channel.rgb2hsl(a,"l"))}get a(){return this.data.a}set r(a){this.type.set(ig.RGB),this.changed=!0,this.data.r=a}set g(a){this.type.set(ig.RGB),this.changed=!0,this.data.g=a}set b(a){this.type.set(ig.RGB),this.changed=!0,this.data.b=a}set h(a){this.type.set(ig.HSL),this.changed=!0,this.data.h=a}set s(a){this.type.set(ig.HSL),this.changed=!0,this.data.s=a}set l(a){this.type.set(ig.HSL),this.changed=!0,this.data.l=a}set a(a){this.changed=!0,this.data.a=a}}const pMe=gMe,HW=new pMe({r:0,g:0,b:0,a:0},"transparent"),PPt={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:i=>{if(i.charCodeAt(0)!==35)return;const a=i.match(PPt.re);if(!a)return;const f=a[1],g=parseInt(f,16),w=f.length,v=w%4===0,b=w>4,E=b?1:17,S=b?8:4,_=v?0:-1,M=b?255:15;return HW.set({r:(g>>S*(_+3)&M)*E,g:(g>>S*(_+2)&M)*E,b:(g>>S*(_+1)&M)*E,a:v?(g&M)*E/255:1},i)},stringify:i=>{const{r:a,g:f,b:g,a:w}=i;return w<1?`#${g8[Math.round(a)]}${g8[Math.round(f)]}${g8[Math.round(g)]}${g8[Math.round(w*255)]}`:`#${g8[Math.round(a)]}${g8[Math.round(f)]}${g8[Math.round(g)]}`}},EF=PPt,VW={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:i=>{const a=i.match(VW.hueRe);if(a){const[,f,g]=a;switch(g){case"grad":return Ia.channel.clamp.h(parseFloat(f)*.9);case"rad":return Ia.channel.clamp.h(parseFloat(f)*180/Math.PI);case"turn":return Ia.channel.clamp.h(parseFloat(f)*360)}}return Ia.channel.clamp.h(parseFloat(i))},parse:i=>{const a=i.charCodeAt(0);if(a!==104&&a!==72)return;const f=i.match(VW.re);if(!f)return;const[,g,w,v,b,E]=f;return HW.set({h:VW._hue2deg(g),s:Ia.channel.clamp.s(parseFloat(w)),l:Ia.channel.clamp.l(parseFloat(v)),a:b?Ia.channel.clamp.a(E?parseFloat(b)/100:parseFloat(b)):1},i)},stringify:i=>{const{h:a,s:f,l:g,a:w}=i;return w<1?`hsla(${Ia.lang.round(a)}, ${Ia.lang.round(f)}%, ${Ia.lang.round(g)}%, ${w})`:`hsl(${Ia.lang.round(a)}, ${Ia.lang.round(f)}%, ${Ia.lang.round(g)}%)`}},UW=VW,GW={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:i=>{i=i.toLowerCase();const a=GW.colors[i];if(a)return EF.parse(a)},stringify:i=>{const a=EF.stringify(i);for(const f in GW.colors)if(GW.colors[f]===a)return f}},FPt=GW,BPt={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:i=>{const a=i.charCodeAt(0);if(a!==114&&a!==82)return;const f=i.match(BPt.re);if(!f)return;const[,g,w,v,b,E,S,_,M]=f;return HW.set({r:Ia.channel.clamp.r(w?parseFloat(g)*2.55:parseFloat(g)),g:Ia.channel.clamp.g(b?parseFloat(v)*2.55:parseFloat(v)),b:Ia.channel.clamp.b(S?parseFloat(E)*2.55:parseFloat(E)),a:_?Ia.channel.clamp.a(M?parseFloat(_)/100:parseFloat(_)):1},i)},stringify:i=>{const{r:a,g:f,b:g,a:w}=i;return w<1?`rgba(${Ia.lang.round(a)}, ${Ia.lang.round(f)}, ${Ia.lang.round(g)}, ${Ia.lang.round(w)})`:`rgb(${Ia.lang.round(a)}, ${Ia.lang.round(f)}, ${Ia.lang.round(g)})`}},KW=BPt,Vv={format:{keyword:FPt,hex:EF,rgb:KW,rgba:KW,hsl:UW,hsla:UW},parse:i=>{if(typeof i!="string")return i;const a=EF.parse(i)||KW.parse(i)||UW.parse(i)||FPt.parse(i);if(a)return a;throw new Error(`Unsupported color format: "${i}"`)},stringify:i=>!i.changed&&i.color?i.color:i.type.is(ig.HSL)||i.data.r===void 0?UW.stringify(i):i.a<1||!Number.isInteger(i.r)||!Number.isInteger(i.g)||!Number.isInteger(i.b)?KW.stringify(i):EF.stringify(i)},RPt=(i,a)=>{const f=Vv.parse(i);for(const g in a)f[g]=Ia.channel.clamp[g](a[g]);return Vv.stringify(f)},g9=(i,a,f=0,g=1)=>{if(typeof i!="number")return RPt(i,{a});const w=HW.set({r:Ia.channel.clamp.r(i),g:Ia.channel.clamp.g(a),b:Ia.channel.clamp.b(f),a:Ia.channel.clamp.a(g)});return Vv.stringify(w)},jPt=(i,a)=>Ia.lang.round(Vv.parse(i)[a]),bMe=i=>{const{r:a,g:f,b:g}=Vv.parse(i),w=.2126*Ia.channel.toLinear(a)+.7152*Ia.channel.toLinear(f)+.0722*Ia.channel.toLinear(g);return Ia.lang.round(w)},wMe=i=>bMe(i)>=.5,p9=i=>!wMe(i),$Pt=(i,a,f)=>{const g=Vv.parse(i),w=g[a],v=Ia.channel.clamp[a](w+f);return w!==v&&(g[a]=v),Vv.stringify(g)},Is=(i,a)=>$Pt(i,"l",a),Js=(i,a)=>$Pt(i,"l",-a),Cn=(i,a)=>{const f=Vv.parse(i),g={};for(const w in a)a[w]&&(g[w]=f[w]+a[w]);return RPt(i,g)},mMe=(i,a,f=50)=>{const{r:g,g:w,b:v,a:b}=Vv.parse(i),{r:E,g:S,b:_,a:M}=Vv.parse(a),F=f/100,R=F*2-1,B=b-M,Y=((R*B===-1?R:(R+B)/(1+R*B))+1)/2,nt=1-Y,ot=g*Y+E*nt,ft=w*Y+S*nt,wt=v*Y+_*nt,mt=b*F+M*(1-F);return g9(ot,ft,wt,mt)},Ii=(i,a=100)=>{const f=Vv.parse(i);return f.r=255-f.r,f.g=255-f.g,f.b=255-f.b,mMe(f,i,a)},Yg=(i,a)=>a?Cn(i,{s:-40,l:10}):Cn(i,{s:-40,l:-10}),WW="#ffffff",YW="#f2f2f2";let vMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){var f,g,w,v,b,E,S,_,M,F,R;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Cn(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Cn(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Yg(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Yg(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ii(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ii(this.tertiaryColor),this.lineColor=this.lineColor||Ii(this.background),this.arrowheadColor=this.arrowheadColor||Ii(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Js(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Js(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ii(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Is(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this.darkMode)for(let B=0;B{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const yMe=i=>{const a=new vMe;return a.calculate(i),a};let xMe=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Is(this.primaryColor,16),this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Ii(this.background),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.tertiaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Is(Ii("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=g9(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Js("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Js(this.sectionBkgColor,10),this.taskBorderColor=g9(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=g9(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.secondBkg=Is(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Is(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Is(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Cn(this.primaryColor,{h:64}),this.fillType3=Cn(this.secondaryColor,{h:64}),this.fillType4=Cn(this.primaryColor,{h:-64}),this.fillType5=Cn(this.secondaryColor,{h:-64}),this.fillType6=Cn(this.primaryColor,{h:128}),this.fillType7=Cn(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330});for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const kMe=i=>{const a=new xMe;return a.calculate(i),a};let EMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Cn(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.tertiaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=g9(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||Js(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||Js(this.tertiaryColor,40);for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const dgt=i=>{const a=new EMe;return a.calculate(i),a};let TMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Is("#cde498",10),this.primaryBorderColor=Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.primaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.actorBorder=Js(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||Js(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||Js(this.tertiaryColor,40);for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const CMe=i=>{const a=new TMe;return a.calculate(i),a};class SMe{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Is(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.tertiaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.secondBkg=Is(this.contrast,55),this.border2=this.contrast,this.actorBorder=Is(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}}const Lx={base:{getThemeVariables:yMe},dark:{getThemeVariables:kMe},default:{getThemeVariables:dgt},forest:{getThemeVariables:CMe},neutral:{getThemeVariables:i=>{const a=new SMe;return a.calculate(i),a}}},Dx={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},theme:"default",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","maxEdges"],deterministicIds:!1,fontSize:16},zPt={...Dx,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:Lx.default.getThemeVariables(),sequence:{...Dx.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Dx.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Dx.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Dx.pie,useWidth:984},xyChart:{...Dx.xyChart,useWidth:void 0},requirement:{...Dx.requirement,useWidth:void 0},gitGraph:{...Dx.gitGraph,useMaxWidth:!1},sankey:{...Dx.sankey,useMaxWidth:!1}},qPt=(i,a="")=>Object.keys(i).reduce((f,g)=>Array.isArray(i[g])?f:typeof i[g]=="object"&&i[g]!==null?[...f,a+g,...qPt(i[g],"")]:[...f,a+g],[]),_Me=new Set(qPt(zPt,"")),Bl=zPt,XW=i=>{if(Kt.debug("sanitizeDirective called with",i),!(typeof i!="object"||i==null)){if(Array.isArray(i)){i.forEach(a=>XW(a));return}for(const a of Object.keys(i)){if(Kt.debug("Checking key",a),a.startsWith("__")||a.includes("proto")||a.includes("constr")||!_Me.has(a)||i[a]==null){Kt.debug("sanitize deleting key: ",a),delete i[a];continue}if(typeof i[a]=="object"){Kt.debug("sanitizing object",a),XW(i[a]);continue}const f=["themeCSS","fontFamily","altFontFamily"];for(const g of f)a.includes(g)&&(Kt.debug("sanitizing css option",a),i[a]=AMe(i[a]))}if(i.themeVariables)for(const a of Object.keys(i.themeVariables)){const f=i.themeVariables[a];f!=null&&f.match&&!f.match(/^[\d "#%(),.;A-Za-z]+$/)&&(i.themeVariables[a]="")}Kt.debug("After sanitization",i)}},AMe=i=>{let a=0,f=0;for(const g of i){if(a{for(const{id:a,detector:f,loader:g}of i)GPt(a,f,g)},GPt=(i,a,f)=>{JL[i]?Kt.error(`Detector with key ${i} already exists`):JL[i]={detector:a,loader:f},Kt.debug(`Detector with key ${i} added${f?" with loader":""}`)},DMe=i=>JL[i].loader,ggt=(i,a,{depth:f=2,clobber:g=!1}={})=>{const w={depth:f,clobber:g};return Array.isArray(a)&&!Array.isArray(i)?(a.forEach(v=>ggt(i,v,w)),i):Array.isArray(a)&&Array.isArray(i)?(a.forEach(v=>{i.includes(v)||i.push(v)}),i):i===void 0||f<=0?i!=null&&typeof i=="object"&&typeof a=="object"?Object.assign(i,a):a:(a!==void 0&&typeof i=="object"&&typeof a=="object"&&Object.keys(a).forEach(v=>{typeof a[v]=="object"&&(i[v]===void 0||typeof i[v]=="object")?(i[v]===void 0&&(i[v]=Array.isArray(a[v])?[]:{}),i[v]=ggt(i[v],a[v],{depth:f-1,clobber:g})):(g||typeof i[v]!="object"&&typeof a[v]!="object")&&(i[v]=a[v])}),i)},Ld=ggt;var MMe=typeof global=="object"&&global&&global.Object===Object&&global;const KPt=MMe;var IMe=typeof self=="object"&&self&&self.Object===Object&&self,OMe=KPt||IMe||Function("return this")();const Uv=OMe;var NMe=Uv.Symbol;const Yw=NMe;var WPt=Object.prototype,PMe=WPt.hasOwnProperty,FMe=WPt.toString,CF=Yw?Yw.toStringTag:void 0;function BMe(i){var a=PMe.call(i,CF),f=i[CF];try{i[CF]=void 0;var g=!0}catch{}var w=FMe.call(i);return g&&(a?i[CF]=f:delete i[CF]),w}var RMe=Object.prototype,jMe=RMe.toString;function $Me(i){return jMe.call(i)}var zMe="[object Null]",qMe="[object Undefined]",YPt=Yw?Yw.toStringTag:void 0;function b9(i){return i==null?i===void 0?qMe:zMe:YPt&&YPt in Object(i)?BMe(i):$Me(i)}function T2(i){var a=typeof i;return i!=null&&(a=="object"||a=="function")}var HMe="[object AsyncFunction]",VMe="[object Function]",UMe="[object GeneratorFunction]",GMe="[object Proxy]";function ZL(i){if(!T2(i))return!1;var a=b9(i);return a==VMe||a==UMe||a==HMe||a==GMe}var KMe=Uv["__core-js_shared__"];const pgt=KMe;var XPt=function(){var i=/[^.]+$/.exec(pgt&&pgt.keys&&pgt.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function WMe(i){return!!XPt&&XPt in i}var YMe=Function.prototype,XMe=YMe.toString;function w9(i){if(i!=null){try{return XMe.call(i)}catch{}try{return i+""}catch{}}return""}var QMe=/[\\^$.*+?()[\]{}|]/g,JMe=/^\[object .+?Constructor\]$/,ZMe=Function.prototype,tIe=Object.prototype,eIe=ZMe.toString,nIe=tIe.hasOwnProperty,rIe=RegExp("^"+eIe.call(nIe).replace(QMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function iIe(i){if(!T2(i)||WMe(i))return!1;var a=ZL(i)?rIe:JMe;return a.test(w9(i))}function sIe(i,a){return i==null?void 0:i[a]}function m9(i,a){var f=sIe(i,a);return iIe(f)?f:void 0}var aIe=m9(Object,"create");const SF=aIe;function oIe(){this.__data__=SF?SF(null):{},this.size=0}function cIe(i){var a=this.has(i)&&delete this.__data__[i];return this.size-=a?1:0,a}var uIe="__lodash_hash_undefined__",lIe=Object.prototype,hIe=lIe.hasOwnProperty;function fIe(i){var a=this.__data__;if(SF){var f=a[i];return f===uIe?void 0:f}return hIe.call(a,i)?a[i]:void 0}var dIe=Object.prototype,gIe=dIe.hasOwnProperty;function pIe(i){var a=this.__data__;return SF?a[i]!==void 0:gIe.call(a,i)}var bIe="__lodash_hash_undefined__";function wIe(i,a){var f=this.__data__;return this.size+=this.has(i)?0:1,f[i]=SF&&a===void 0?bIe:a,this}function v9(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1}function TIe(i,a){var f=this.__data__,g=JW(f,i);return g<0?(++this.size,f.push([i,a])):f[g][1]=a,this}function Mx(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1&&i%1==0&&i<=ZIe}function p8(i){return i!=null&&ygt(i.length)&&!ZL(i)}function uFt(i){return e4(i)&&p8(i)}function tOe(){return!1}var lFt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,hFt=lFt&&typeof module=="object"&&module&&!module.nodeType&&module,eOe=hFt&&hFt.exports===lFt,fFt=eOe?Uv.Buffer:void 0,nOe=fFt?fFt.isBuffer:void 0,rOe=nOe||tOe;const rD=rOe;var iOe="[object Object]",sOe=Function.prototype,aOe=Object.prototype,dFt=sOe.toString,oOe=aOe.hasOwnProperty,cOe=dFt.call(Object);function gFt(i){if(!e4(i)||b9(i)!=iOe)return!1;var a=vgt(i);if(a===null)return!0;var f=oOe.call(a,"constructor")&&a.constructor;return typeof f=="function"&&f instanceof f&&dFt.call(f)==cOe}var uOe="[object Arguments]",lOe="[object Array]",hOe="[object Boolean]",fOe="[object Date]",dOe="[object Error]",gOe="[object Function]",pOe="[object Map]",bOe="[object Number]",wOe="[object Object]",mOe="[object RegExp]",vOe="[object Set]",yOe="[object String]",xOe="[object WeakMap]",kOe="[object ArrayBuffer]",EOe="[object DataView]",TOe="[object Float32Array]",COe="[object Float64Array]",SOe="[object Int8Array]",_Oe="[object Int16Array]",AOe="[object Int32Array]",LOe="[object Uint8Array]",DOe="[object Uint8ClampedArray]",MOe="[object Uint16Array]",IOe="[object Uint32Array]",Rl={};Rl[TOe]=Rl[COe]=Rl[SOe]=Rl[_Oe]=Rl[AOe]=Rl[LOe]=Rl[DOe]=Rl[MOe]=Rl[IOe]=!0,Rl[uOe]=Rl[lOe]=Rl[kOe]=Rl[hOe]=Rl[EOe]=Rl[fOe]=Rl[dOe]=Rl[gOe]=Rl[pOe]=Rl[bOe]=Rl[wOe]=Rl[mOe]=Rl[vOe]=Rl[yOe]=Rl[xOe]=!1;function OOe(i){return e4(i)&&ygt(i.length)&&!!Rl[b9(i)]}function iY(i){return function(a){return i(a)}}var pFt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,AF=pFt&&typeof module=="object"&&module&&!module.nodeType&&module,NOe=AF&&AF.exports===pFt,xgt=NOe&&KPt.process,POe=function(){try{var i=AF&&AF.require&&AF.require("util").types;return i||xgt&&xgt.binding&&xgt.binding("util")}catch{}}();const iD=POe;var bFt=iD&&iD.isTypedArray,FOe=bFt?iY(bFt):OOe;const sY=FOe;function kgt(i,a){if(!(a==="constructor"&&typeof i[a]=="function")&&a!="__proto__")return i[a]}var BOe=Object.prototype,ROe=BOe.hasOwnProperty;function aY(i,a,f){var g=i[a];(!(ROe.call(i,a)&&tD(g,f))||f===void 0&&!(a in i))&&eY(i,a,f)}function LF(i,a,f,g){var w=!f;f||(f={});for(var v=-1,b=a.length;++v-1&&i%1==0&&i0){if(++a>=ZOe)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}var rNe=nNe(JOe);const xFt=rNe;function cY(i,a){return xFt(yFt(i,a,x9),i+"")}function DF(i,a,f){if(!T2(f))return!1;var g=typeof a;return(g=="number"?p8(f)&&oY(a,f.length):g=="string"&&a in f)?tD(f[a],i):!1}function iNe(i){return cY(function(a,f){var g=-1,w=f.length,v=w>1?f[w-1]:void 0,b=w>2?f[2]:void 0;for(v=i.length>3&&typeof v=="function"?(w--,v):void 0,b&&DF(f[0],f[1],b)&&(v=w<3?void 0:v,w=1),a=Object(a);++gE.args);XW(b),g=Ld(g,[...b])}else g=f.args;if(!g)return;let w=QW(i,a);const v="config";return g[v]!==void 0&&(w==="flowchart-v2"&&(w="flowchart"),g[w]=g[v],delete g[v]),g},EFt=function(i,a=null){try{const f=new RegExp(`[%]{2}(?![{]${oNe.source})(?=[}][%]{2}).* +`,"ig");i=i.trim().replace(f,"").replace(/'/gm,'"'),Kt.debug(`Detecting diagram directive${a!==null?" type:"+a:""} based on the text:${i}`);let g;const w=[];for(;(g=TF.exec(i))!==null;)if(g.index===TF.lastIndex&&TF.lastIndex++,g&&!a||a&&g[1]&&g[1].match(a)||a&&g[2]&&g[2].match(a)){const v=g[1]?g[1]:g[2],b=g[3]?g[3].trim():g[4]?JSON.parse(g[4].trim()):null;w.push({type:v,args:b})}return w.length===0?{type:i,args:null}:w.length===1?w[0]:w}catch(f){return Kt.error(`ERROR: ${f.message} - Unable to parse directive type: '${a}' based on the text: '${i}'`),{type:void 0,args:null}}},uNe=function(i){return i.replace(TF,"")},lNe=function(i,a){for(const[f,g]of a.entries())if(g.match(i))return f;return-1};function Xw(i,a){if(!i)return a;const f=`curve${i.charAt(0).toUpperCase()+i.slice(1)}`;return aNe[f]??a}function hNe(i,a){const f=i.trim();if(f)return a.securityLevel!=="loose"?h8(f):f}const fNe=(i,...a)=>{const f=i.split("."),g=f.length-1,w=f[g];let v=window;for(let b=0;b{f+=TFt(w,a),a=w});const g=f/2;return Egt(i,g)}function gNe(i){return i.length===1?i[0]:dNe(i)}const CFt=(i,a=2)=>{const f=Math.pow(10,a);return Math.round(i*f)/f},Egt=(i,a)=>{let f,g=a;for(const w of i){if(f){const v=TFt(w,f);if(v=1)return{x:w.x,y:w.y};if(b>0&&b<1)return{x:CFt((1-b)*f.x+b*w.x,5),y:CFt((1-b)*f.y+b*w.y,5)}}}f=w}throw new Error("Could not find a suitable point for the given distance")},pNe=(i,a,f)=>{Kt.info(`our points ${JSON.stringify(a)}`),a[0]!==f&&(a=a.reverse());const w=Egt(a,25),v=i?10:5,b=Math.atan2(a[0].y-w.y,a[0].x-w.x),E={x:0,y:0};return E.x=Math.sin(b)*v+(a[0].x+w.x)/2,E.y=-Math.cos(b)*v+(a[0].y+w.y)/2,E};function bNe(i,a,f){const g=structuredClone(f);Kt.info("our points",g),a!=="start_left"&&a!=="start_right"&&g.reverse();const w=25+i,v=Egt(g,w),b=10+i*.5,E=Math.atan2(g[0].y-v.y,g[0].x-v.x),S={x:0,y:0};return a==="start_left"?(S.x=Math.sin(E+Math.PI)*b+(g[0].x+v.x)/2,S.y=-Math.cos(E+Math.PI)*b+(g[0].y+v.y)/2):a==="end_right"?(S.x=Math.sin(E-Math.PI)*b+(g[0].x+v.x)/2-5,S.y=-Math.cos(E-Math.PI)*b+(g[0].y+v.y)/2-5):a==="end_left"?(S.x=Math.sin(E)*b+(g[0].x+v.x)/2-5,S.y=-Math.cos(E)*b+(g[0].y+v.y)/2-5):(S.x=Math.sin(E)*b+(g[0].x+v.x)/2,S.y=-Math.cos(E)*b+(g[0].y+v.y)/2),S}function C2(i){let a="",f="";for(const g of i)g!==void 0&&(g.startsWith("color:")||g.startsWith("text-align:")?f=f+g+";":a=a+g+";");return{style:a,labelStyle:f}}let SFt=0;const _Ft=()=>(SFt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+SFt);function wNe(i){let a="";const f="0123456789abcdef",g=f.length;for(let w=0;wwNe(i.length),mNe=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},vNe=function(i,a){const f=a.text.replace(ei.lineBreakRegex," "),[,g]=k9(a.fontSize),w=i.append("text");w.attr("x",a.x),w.attr("y",a.y),w.style("text-anchor",a.anchor),w.style("font-family",a.fontFamily),w.style("font-size",g),w.style("font-weight",a.fontWeight),w.attr("fill",a.fill),a.class!==void 0&&w.attr("class",a.class);const v=w.append("tspan");return v.attr("x",a.x+a.textMargin*2),v.attr("fill",a.fill),v.text(f),w},LFt=eD((i,a,f)=>{if(!i||(f=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},f),ei.lineBreakRegex.test(i)))return i;const g=i.split(" "),w=[];let v="";return g.forEach((b,E)=>{const S=n4(`${b} `,f),_=n4(v,f);if(S>a){const{hyphenatedStrings:R,remainingWord:B}=yNe(b,a,"-",f);w.push(v,...R),v=B}else _+S>=a?(w.push(v),v=b):v=[v,b].filter(Boolean).join(" ");E+1===g.length&&w.push(v)}),w.filter(b=>b!=="").join(f.joinWith)},(i,a,f)=>`${i}${a}${f.fontSize}${f.fontWeight}${f.fontFamily}${f.joinWith}`),yNe=eD((i,a,f="-",g)=>{g=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},g);const w=[...i],v=[];let b="";return w.forEach((E,S)=>{const _=`${b}${E}`;if(n4(_,g)>=a){const F=S+1,R=w.length===F,B=`${_}${f}`;v.push(R?_:B),b=""}else b=_}),{hyphenatedStrings:v,remainingWord:b}},(i,a,f="-",g)=>`${i}${a}${f}${g.fontSize}${g.fontWeight}${g.fontFamily}`);function Tgt(i,a){return Cgt(i,a).height}function n4(i,a){return Cgt(i,a).width}const Cgt=eD((i,a)=>{const{fontSize:f=12,fontFamily:g="Arial",fontWeight:w=400}=a;if(!i)return{width:0,height:0};const[,v]=k9(f),b=["sans-serif",g],E=i.split(ei.lineBreakRegex),S=[],_=Tr("body");if(!_.remove)return{width:0,height:0,lineHeight:0};const M=_.append("svg");for(const R of b){let B=0;const z={width:0,height:0,lineHeight:0};for(const Y of E){const nt=mNe();nt.text=Y||kFt;const ot=vNe(M,nt).style("font-size",v).style("font-weight",w).style("font-family",R),ft=(ot._groups||ot)[0][0].getBBox();if(ft.width===0&&ft.height===0)throw new Error("svg element not in render tree");z.width=Math.round(Math.max(z.width,ft.width)),B=Math.round(ft.height),z.height+=B,z.lineHeight=Math.round(Math.max(z.lineHeight,B))}S.push(z)}M.remove();const F=isNaN(S[1].height)||isNaN(S[1].width)||isNaN(S[1].lineHeight)||S[0].height>S[1].height&&S[0].width>S[1].width&&S[0].lineHeight>S[1].lineHeight?0:1;return S[F]},(i,a)=>`${i}${a.fontSize}${a.fontWeight}${a.fontFamily}`);class xNe{constructor(a=!1,f){this.count=0,this.count=f?f.length:0,this.next=a?()=>this.count++:()=>Date.now()}}let lY;const kNe=function(i){return lY=lY||document.createElement("div"),i=escape(i).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),lY.innerHTML=i,unescape(lY.textContent)};function DFt(i){return"str"in i}const ENe=(i,a,f,g)=>{var v;if(!g)return;const w=(v=i.node())==null?void 0:v.getBBox();w&&i.append("text").text(g).attr("x",w.x+w.width/2).attr("y",-f).attr("class",a)},k9=i=>{if(typeof i=="number")return[i,i+"px"];const a=parseInt(i??"",10);return Number.isNaN(a)?[void 0,void 0]:i===String(a)?[a,i+"px"]:[a,i]};function MF(i,a){return uY({},i,a)}const uo={assignWithDepth:Ld,wrapLabel:LFt,calculateTextHeight:Tgt,calculateTextWidth:n4,calculateTextDimensions:Cgt,cleanAndMerge:MF,detectInit:cNe,detectDirective:EFt,isSubstringInArray:lNe,interpolateToCurve:Xw,calcLabelPosition:gNe,calcCardinalityPosition:pNe,calcTerminalLabelPosition:bNe,formatUrl:hNe,getStylesFromArray:C2,generateId:_Ft,random:AFt,runFunc:fNe,entityDecode:kNe,insertTitle:ENe,parseFontSize:k9,InitIDGenerator:xNe},TNe=function(i){let a=i;return a=a.replace(/style.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/classDef.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/#\w+;/g,function(f){const g=f.substring(1,f.length-1);return/^\+?\d+$/.test(g)?"fl°°"+g+"¶ß":"fl°"+g+"¶ß"}),a},IF=function(i){return i.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")};var MFt="comm",IFt="rule",OFt="decl",CNe="@import",SNe="@keyframes",_Ne=Math.abs,Sgt=String.fromCharCode;function NFt(i){return i.trim()}function _gt(i,a,f){return i.replace(a,f)}function ANe(i,a){return i.indexOf(a)}function OF(i,a){return i.charCodeAt(a)|0}function NF(i,a,f){return i.slice(a,f)}function b8(i){return i.length}function PFt(i){return i.length}function hY(i,a){return a.push(i),i}var fY=1,aD=1,FFt=0,Qw=0,a1=0,oD="";function Agt(i,a,f,g,w,v,b){return{value:i,root:a,parent:f,type:g,props:w,children:v,line:fY,column:aD,length:b,return:""}}function LNe(){return a1}function DNe(){return a1=Qw>0?OF(oD,--Qw):0,aD--,a1===10&&(aD=1,fY--),a1}function Kv(){return a1=Qw2||Lgt(a1)>3?"":" "}function NNe(i,a){for(;--a&&Kv()&&!(a1<48||a1>102||a1>57&&a1<65||a1>70&&a1<97););return gY(i,dY()+(a<6&&E9()==32&&Kv()==32))}function Mgt(i){for(;Kv();)switch(a1){case i:return Qw;case 34:case 39:i!==34&&i!==39&&Mgt(a1);break;case 40:i===41&&Mgt(i);break;case 92:Kv();break}return Qw}function PNe(i,a){for(;Kv()&&i+a1!==47+10;)if(i+a1===42+42&&E9()===47)break;return"/*"+gY(a,Qw-1)+"*"+Sgt(i===47?i:Kv())}function FNe(i){for(;!Lgt(E9());)Kv();return gY(i,Qw)}function BNe(i){return INe(pY("",null,null,null,[""],i=MNe(i),0,[0],i))}function pY(i,a,f,g,w,v,b,E,S){for(var _=0,M=0,F=b,R=0,B=0,z=0,Y=1,nt=1,ot=1,ft=0,wt="",mt=w,ct=v,rt=g,it=wt;nt;)switch(z=ft,ft=Kv()){case 40:if(z!=108&&OF(it,F-1)==58){ANe(it+=_gt(Dgt(ft),"&","&\f"),"&\f")!=-1&&(ot=-1);break}case 34:case 39:case 91:it+=Dgt(ft);break;case 9:case 10:case 13:case 32:it+=ONe(z);break;case 92:it+=NNe(dY()-1,7);continue;case 47:switch(E9()){case 42:case 47:hY(RNe(PNe(Kv(),dY()),a,f),S);break;default:it+="/"}break;case 123*Y:E[_++]=b8(it)*ot;case 125*Y:case 59:case 0:switch(ft){case 0:case 125:nt=0;case 59+M:B>0&&b8(it)-F&&hY(B>32?RFt(it+";",g,f,F-1):RFt(_gt(it," ","")+";",g,f,F-2),S);break;case 59:it+=";";default:if(hY(rt=BFt(it,a,f,_,M,w,E,wt,mt=[],ct=[],F),v),ft===123)if(M===0)pY(it,a,rt,rt,mt,v,F,E,ct);else switch(R===99&&OF(it,3)===110?100:R){case 100:case 109:case 115:pY(i,rt,rt,g&&hY(BFt(i,rt,rt,0,0,w,E,wt,w,mt=[],F),ct),w,ct,F,E,g?mt:ct);break;default:pY(it,rt,rt,rt,[""],ct,0,E,ct)}}_=M=B=0,Y=ot=1,wt=it="",F=b;break;case 58:F=1+b8(it),B=z;default:if(Y<1){if(ft==123)--Y;else if(ft==125&&Y++==0&&DNe()==125)continue}switch(it+=Sgt(ft),ft*Y){case 38:ot=M>0?1:(it+="\f",-1);break;case 44:E[_++]=(b8(it)-1)*ot,ot=1;break;case 64:E9()===45&&(it+=Dgt(Kv())),R=E9(),M=F=b8(wt=it+=FNe(dY())),ft++;break;case 45:z===45&&b8(it)==2&&(Y=0)}}return v}function BFt(i,a,f,g,w,v,b,E,S,_,M){for(var F=w-1,R=w===0?v:[""],B=PFt(R),z=0,Y=0,nt=0;z0?R[ot]+" "+ft:_gt(ft,/&\f/g,R[ot])))&&(S[nt++]=wt);return Agt(i,a,f,w===0?IFt:E,S,_,M)}function RNe(i,a,f){return Agt(i,a,f,MFt,Sgt(LNe()),NF(i,2,-2),0)}function RFt(i,a,f,g){return Agt(i,a,f,OFt,NF(i,0,g),NF(i,g+1,-1),g)}function Igt(i,a){for(var f="",g=PFt(i),w=0;w{let f=Ld({},i),g={};for(const w of a)HFt(w),g=Ld(g,w);if(f=Ld(f,g),g.theme&&g.theme in Lx){const w=Ld({},$Ft),v=Ld(w.themeVariables||{},g.themeVariables);f.theme&&f.theme in Lx&&(f.themeVariables=Lx[f.theme].getThemeVariables(v))}return PF=f,UFt(PF),PF},$Ne=i=>(ib=Ld({},cD),ib=Ld(ib,i),i.theme&&Lx[i.theme]&&(ib.themeVariables=Lx[i.theme].getThemeVariables(i.themeVariables)),bY(ib,uD),ib),zNe=i=>{$Ft=Ld({},i)},qNe=i=>(ib=Ld(ib,i),bY(ib,uD),ib),zFt=()=>Ld({},ib),qFt=i=>(UFt(i),Ld(PF,i),o1()),o1=()=>Ld({},PF),HFt=i=>{i&&(["secure",...ib.secure??[]].forEach(a=>{Object.hasOwn(i,a)&&(Kt.debug(`Denied attempt to modify a secure key ${a}`,i[a]),delete i[a])}),Object.keys(i).forEach(a=>{a.startsWith("__")&&delete i[a]}),Object.keys(i).forEach(a=>{typeof i[a]=="string"&&(i[a].includes("<")||i[a].includes(">")||i[a].includes("url(data:"))&&delete i[a],typeof i[a]=="object"&&HFt(i[a])}))},HNe=i=>{XW(i),i.fontFamily&&(!i.themeVariables||!i.themeVariables.fontFamily)&&(i.themeVariables={fontFamily:i.fontFamily}),uD.push(i),bY(ib,uD)},wY=(i=ib)=>{uD=[],bY(i,uD)},VNe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},VFt={},UNe=i=>{VFt[i]||(Kt.warn(VNe[i]),VFt[i]=!0)},UFt=i=>{i&&(i.lazyLoadedDiagrams||i.loadExternalDiagramsAtStartup)&&UNe("LAZY_LOAD_DEPRECATED")},GFt="c4",GNe={id:GFt,detector:i=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>uje);return{id:GFt,diagram:i}}},KFt="flowchart",KNe={id:KFt,detector:(i,a)=>{var f,g;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||((g=a==null?void 0:a.flowchart)==null?void 0:g.defaultRenderer)==="elk"?!1:/^\s*graph/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>wWe);return{id:KFt,diagram:i}}},WFt="flowchart-v2",WNe={id:WFt,detector:(i,a)=>{var f,g,w;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-d3"||((g=a==null?void 0:a.flowchart)==null?void 0:g.defaultRenderer)==="elk"?!1:/^\s*graph/.test(i)&&((w=a==null?void 0:a.flowchart)==null?void 0:w.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>mWe);return{id:WFt,diagram:i}}},YFt="er",YNe={id:YFt,detector:i=>/^\s*erDiagram/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>VWe);return{id:YFt,diagram:i}}},XFt="gitGraph",XNe={id:XFt,detector:i=>/^\s*gitGraph/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>bYe);return{id:XFt,diagram:i}}},QFt="gantt",QNe={id:QFt,detector:i=>/^\s*gantt/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>sXe);return{id:QFt,diagram:i}}},JFt="info",JNe={id:JFt,detector:i=>/^\s*info/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>oXe);return{id:JFt,diagram:i}}},ZFt="pie",ZNe={id:ZFt,detector:i=>/^\s*pie/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>dXe);return{id:ZFt,diagram:i}}},tBt="quadrantChart",tPe={id:tBt,detector:i=>/^\s*quadrantChart/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>LXe);return{id:tBt,diagram:i}}},eBt="xychart",ePe={id:eBt,detector:i=>/^\s*xychart-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>ZXe);return{id:eBt,diagram:i}}},nBt="requirement",nPe={id:nBt,detector:i=>/^\s*requirement(Diagram)?/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>uQe);return{id:nBt,diagram:i}}},rBt="sequence",rPe={id:rBt,detector:i=>/^\s*sequenceDiagram/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>fJe);return{id:rBt,diagram:i}}},iBt="class",iPe={id:iBt,detector:(i,a)=>{var f;return((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>FJe);return{id:iBt,diagram:i}}},sBt="classDiagram",sPe={id:sBt,detector:(i,a)=>{var f;return/^\s*classDiagram/.test(i)&&((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>qJe);return{id:sBt,diagram:i}}},aBt="state",aPe={id:aBt,detector:(i,a)=>{var f;return((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>LZe);return{id:aBt,diagram:i}}},oBt="stateDiagram",oPe={id:oBt,detector:(i,a)=>{var f;return!!(/^\s*stateDiagram-v2/.test(i)||/^\s*stateDiagram/.test(i)&&((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>WZe);return{id:oBt,diagram:i}}},cBt="journey",cPe={id:cBt,detector:i=>/^\s*journey/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>dtn);return{id:cBt,diagram:i}}},uPe=function(i,a){for(let f of a)i.attr(f[0],f[1])},lPe=function(i,a,f){let g=new Map;return f?(g.set("width","100%"),g.set("style",`max-width: ${a}px;`)):(g.set("height",i),g.set("width",a)),g},sg=function(i,a,f,g){const w=lPe(a,f,g);uPe(i,w)},w8=function(i,a,f,g){const w=a.node().getBBox(),v=w.width,b=w.height;Kt.info(`SVG bounds: ${v}x${b}`,w);let E=0,S=0;Kt.info(`Graph bounds: ${E}x${S}`,i),E=v+f*2,S=b+f*2,Kt.info(`Calculated bounds: ${E}x${S}`),sg(a,S,E,g);const _=`${w.x-f} ${w.y-f} ${w.width+2*f} ${w.height+2*f}`;a.attr("viewBox",_)},mY={},hPe=(i,a,f)=>{let g="";return i in mY&&mY[i]?g=mY[i](f):Kt.warn(`No theme found for ${i}`),` & { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + fill: ${f.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${f.errorBkgColor}; + } + & .error-text { + fill: ${f.errorTextColor}; + stroke: ${f.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${f.lineColor}; + stroke: ${f.lineColor}; + } + & .marker.cross { + stroke: ${f.lineColor}; + } + + & svg { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + } + + ${g} + + ${a} +`},fPe=(i,a)=>{a!==void 0&&(mY[i]=a)},dPe=hPe;let Ogt="",Ngt="",Pgt="";const Fgt=i=>Ef(i,o1()),ag=()=>{Ogt="",Pgt="",Ngt=""},og=i=>{Ogt=Fgt(i).replace(/^\s+/g,"")},Xg=()=>Ogt,Qg=i=>{Pgt=Fgt(i).replace(/\n\s+/g,` +`)},Jg=()=>Pgt,S2=i=>{Ngt=Fgt(i)},Zg=()=>Ngt,uBt=Object.freeze(Object.defineProperty({__proto__:null,clear:ag,getAccDescription:Jg,getAccTitle:Xg,getDiagramTitle:Zg,setAccDescription:Qg,setAccTitle:og,setDiagramTitle:S2},Symbol.toStringTag,{value:"Module"})),gPe=Kt,pPe=d0t,Re=o1,bPe=qFt,lBt=cD,wPe=i=>Ef(i,Re()),hBt=w8,mPe=()=>uBt,vY={},yY=(i,a,f)=>{var g;if(vY[i])throw new Error(`Diagram ${i} already registered.`);vY[i]=a,f&&GPt(i,f),fPe(i,a.styles),(g=a.injectUtils)==null||g.call(a,gPe,pPe,Re,wPe,hBt,mPe(),()=>{})},Bgt=i=>{if(i in vY)return vY[i];throw new vPe(i)};class vPe extends Error{constructor(a){super(`Diagram ${a} not found.`)}}const FF=i=>{var w;const{securityLevel:a}=Re();let f=Tr("body");if(a==="sandbox"){const b=((w=Tr(`#i${i}`).node())==null?void 0:w.contentDocument)??document;f=Tr(b.body)}return f.select(`#${i}`)},fBt={draw:(i,a,f)=>{Kt.debug(`rendering svg for syntax error +`);const g=FF(a);g.attr("viewBox","0 0 2412 512"),sg(g,100,512,!0);const w=g.append("g");w.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),w.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),w.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),w.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),w.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),w.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),w.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),w.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${f}`)}},yPe=fBt,xPe={db:{},renderer:fBt,parser:{parser:{yy:{}},parse:()=>{}}},dBt="flowchart-elk",kPe={id:dBt,detector:(i,a)=>{var f;return!!(/^\s*flowchart-elk/.test(i)||/^\s*flowchart|graph/.test(i)&&((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="elk")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Ltn);return{id:dBt,diagram:i}}},gBt="timeline",EPe={id:gBt,detector:i=>/^\s*timeline/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Wtn);return{id:gBt,diagram:i}}},pBt="mindmap",TPe={id:pBt,detector:i=>/^\s*mindmap/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>ken);return{id:pBt,diagram:i}}},bBt="sankey",CPe={id:bBt,detector:i=>/^\s*sankey-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Jen);return{id:bBt,diagram:i}}},wBt="block",SPe={id:wBt,detector:i=>/^\s*block-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>mnn);return{id:wBt,diagram:i}}};let mBt=!1;const Rgt=()=>{mBt||(mBt=!0,yY("error",xPe,i=>i.toLowerCase().trim()==="error"),yY("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},i=>i.toLowerCase().trimStart().startsWith("---")),UPt(GNe,sPe,iPe,YNe,QNe,JNe,ZNe,nPe,rPe,kPe,WNe,KNe,TPe,EPe,XNe,oPe,aPe,cPe,tPe,CPe,ePe,SPe))};class vBt{constructor(a,f={}){this.text=a,this.metadata=f,this.type="graph",this.text=TNe(a),this.text+=` +`;const g=o1();try{this.type=QW(a,g)}catch(v){this.type="error",this.detectError=v}const w=Bgt(this.type);Kt.debug("Type "+this.type),this.db=w.db,this.renderer=w.renderer,this.parser=w.parser,this.parser.parser.yy=this.db,this.init=w.init,this.parse()}parse(){var f,g,w,v,b;if(this.detectError)throw this.detectError;(g=(f=this.db).clear)==null||g.call(f);const a=o1();(w=this.init)==null||w.call(this,a),this.metadata.title&&((b=(v=this.db).setDiagramTitle)==null||b.call(v,this.metadata.title)),this.parser.parse(this.text)}async render(a,f){await this.renderer.draw(this.text,a,f,this)}getParser(){return this.parser}getType(){return this.type}}const _Pe=async(i,a={})=>{const f=QW(i,o1());try{Bgt(f)}catch{const w=DMe(f);if(!w)throw new VPt(`Diagram ${f} not found.`);const{id:v,diagram:b}=await w();yY(v,b)}return new vBt(i,a)};let yBt=[];const APe=()=>{yBt.forEach(i=>{i()}),yBt=[]};var LPe=sFt(Object.keys,Object);const DPe=LPe;var MPe=Object.prototype,IPe=MPe.hasOwnProperty;function xBt(i){if(!rY(i))return DPe(i);var a=[];for(var f in Object(i))IPe.call(i,f)&&f!="constructor"&&a.push(f);return a}var OPe=m9(Uv,"DataView");const jgt=OPe;var NPe=m9(Uv,"Promise");const $gt=NPe;var PPe=m9(Uv,"Set");const lD=PPe;var FPe=m9(Uv,"WeakMap");const zgt=FPe;var kBt="[object Map]",BPe="[object Object]",EBt="[object Promise]",TBt="[object Set]",CBt="[object WeakMap]",SBt="[object DataView]",RPe=w9(jgt),jPe=w9(_F),$Pe=w9($gt),zPe=w9(lD),qPe=w9(zgt),T9=b9;(jgt&&T9(new jgt(new ArrayBuffer(1)))!=SBt||_F&&T9(new _F)!=kBt||$gt&&T9($gt.resolve())!=EBt||lD&&T9(new lD)!=TBt||zgt&&T9(new zgt)!=CBt)&&(T9=function(i){var a=b9(i),f=a==BPe?i.constructor:void 0,g=f?w9(f):"";if(g)switch(g){case RPe:return SBt;case jPe:return kBt;case $Pe:return EBt;case zPe:return TBt;case qPe:return CBt}return a});const hD=T9;var HPe="[object Map]",VPe="[object Set]",UPe=Object.prototype,GPe=UPe.hasOwnProperty;function BF(i){if(i==null)return!0;if(p8(i)&&(s1(i)||typeof i=="string"||typeof i.splice=="function"||rD(i)||sY(i)||nD(i)))return!i.length;var a=hD(i);if(a==HPe||a==VPe)return!i.size;if(rY(i))return!xBt(i).length;for(var f in i)if(GPe.call(i,f))return!1;return!0}const KPe="graphics-document document";function WPe(i,a){i.attr("role",KPe),a!==""&&i.attr("aria-roledescription",a)}function YPe(i,a,f,g){if(i.insert!==void 0){if(f){const w=`chart-desc-${g}`;i.attr("aria-describedby",w),i.insert("desc",":first-child").attr("id",w).text(f)}if(a){const w=`chart-title-${g}`;i.attr("aria-labelledby",w),i.insert("title",":first-child").attr("id",w).text(a)}}}const XPe=i=>i.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function _Bt(i){return typeof i>"u"||i===null}function QPe(i){return typeof i=="object"&&i!==null}function JPe(i){return Array.isArray(i)?i:_Bt(i)?[]:[i]}function ZPe(i,a){var f,g,w,v;if(a)for(v=Object.keys(a),f=0,g=v.length;fE&&(v=" ... ",a=g-E+v.length),f-g>E&&(b=" ...",f=g+E-b.length),{str:v+i.slice(a,f).replace(/\t/g,"→")+b,pos:g-a+v.length}}function Hgt(i,a){return tp.repeat(" ",a-i.length)+i}function cFe(i,a){if(a=Object.create(a||null),!i.buffer)return null;a.maxLength||(a.maxLength=79),typeof a.indent!="number"&&(a.indent=1),typeof a.linesBefore!="number"&&(a.linesBefore=3),typeof a.linesAfter!="number"&&(a.linesAfter=2);for(var f=/\r?\n|\r|\0/g,g=[0],w=[],v,b=-1;v=f.exec(i.buffer);)w.push(v.index),g.push(v.index+v[0].length),i.position<=v.index&&b<0&&(b=g.length-2);b<0&&(b=g.length-1);var E="",S,_,M=Math.min(i.line+a.linesAfter,w.length).toString().length,F=a.maxLength-(a.indent+M+3);for(S=1;S<=a.linesBefore&&!(b-S<0);S++)_=qgt(i.buffer,g[b-S],w[b-S],i.position-(g[b]-g[b-S]),F),E=tp.repeat(" ",a.indent)+Hgt((i.line-S+1).toString(),M)+" | "+_.str+` +`+E;for(_=qgt(i.buffer,g[b],w[b],i.position,F),E+=tp.repeat(" ",a.indent)+Hgt((i.line+1).toString(),M)+" | "+_.str+` +`,E+=tp.repeat("-",a.indent+M+3+_.pos)+`^ +`,S=1;S<=a.linesAfter&&!(b+S>=w.length);S++)_=qgt(i.buffer,g[b+S],w[b+S],i.position-(g[b]-g[b+S]),F),E+=tp.repeat(" ",a.indent)+Hgt((i.line+S+1).toString(),M)+" | "+_.str+` +`;return E.replace(/\n$/,"")}var uFe=cFe,lFe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],hFe=["scalar","sequence","mapping"];function fFe(i){var a={};return i!==null&&Object.keys(i).forEach(function(f){i[f].forEach(function(g){a[String(g)]=f})}),a}function dFe(i,a){if(a=a||{},Object.keys(a).forEach(function(f){if(lFe.indexOf(f)===-1)throw new Ox('Unknown option "'+f+'" is met in definition of "'+i+'" YAML type.')}),this.options=a,this.tag=i,this.kind=a.kind||null,this.resolve=a.resolve||function(){return!0},this.construct=a.construct||function(f){return f},this.instanceOf=a.instanceOf||null,this.predicate=a.predicate||null,this.represent=a.represent||null,this.representName=a.representName||null,this.defaultStyle=a.defaultStyle||null,this.multi=a.multi||!1,this.styleAliases=fFe(a.styleAliases||null),hFe.indexOf(this.kind)===-1)throw new Ox('Unknown kind "'+this.kind+'" is specified for "'+i+'" YAML type.')}var cg=dFe;function LBt(i,a){var f=[];return i[a].forEach(function(g){var w=f.length;f.forEach(function(v,b){v.tag===g.tag&&v.kind===g.kind&&v.multi===g.multi&&(w=b)}),f[w]=g}),f}function gFe(){var i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},a,f;function g(w){w.multi?(i.multi[w.kind].push(w),i.multi.fallback.push(w)):i[w.kind][w.tag]=i.fallback[w.tag]=w}for(a=0,f=arguments.length;a=0?"0b"+i.toString(2):"-0b"+i.toString(2).slice(1)},octal:function(i){return i>=0?"0o"+i.toString(8):"-0o"+i.toString(8).slice(1)},decimal:function(i){return i.toString(10)},hexadecimal:function(i){return i>=0?"0x"+i.toString(16).toUpperCase():"-0x"+i.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),PFe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function FFe(i){return!(i===null||!PFe.test(i)||i[i.length-1]==="_")}function BFe(i){var a,f;return a=i.replace(/_/g,"").toLowerCase(),f=a[0]==="-"?-1:1,"+-".indexOf(a[0])>=0&&(a=a.slice(1)),a===".inf"?f===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:a===".nan"?NaN:f*parseFloat(a,10)}var RFe=/^[-+]?[0-9]+e/;function jFe(i,a){var f;if(isNaN(i))switch(a){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===i)switch(a){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===i)switch(a){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(tp.isNegativeZero(i))return"-0.0";return f=i.toString(10),RFe.test(f)?f.replace("e",".e"):f}function $Fe(i){return Object.prototype.toString.call(i)==="[object Number]"&&(i%1!==0||tp.isNegativeZero(i))}var zFe=new cg("tag:yaml.org,2002:float",{kind:"scalar",resolve:FFe,construct:BFe,predicate:$Fe,represent:jFe,defaultStyle:"lowercase"}),DBt=vFe.extend({implicit:[EFe,_Fe,NFe,zFe]}),qFe=DBt,MBt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),IBt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function HFe(i){return i===null?!1:MBt.exec(i)!==null||IBt.exec(i)!==null}function VFe(i){var a,f,g,w,v,b,E,S=0,_=null,M,F,R;if(a=MBt.exec(i),a===null&&(a=IBt.exec(i)),a===null)throw new Error("Date resolve error");if(f=+a[1],g=+a[2]-1,w=+a[3],!a[4])return new Date(Date.UTC(f,g,w));if(v=+a[4],b=+a[5],E=+a[6],a[7]){for(S=a[7].slice(0,3);S.length<3;)S+="0";S=+S}return a[9]&&(M=+a[10],F=+(a[11]||0),_=(M*60+F)*6e4,a[9]==="-"&&(_=-_)),R=new Date(Date.UTC(f,g,w,v,b,E,S)),_&&R.setTime(R.getTime()-_),R}function UFe(i){return i.toISOString()}var GFe=new cg("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:HFe,construct:VFe,instanceOf:Date,represent:UFe});function KFe(i){return i==="<<"||i===null}var WFe=new cg("tag:yaml.org,2002:merge",{kind:"scalar",resolve:KFe}),Ugt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function YFe(i){if(i===null)return!1;var a,f,g=0,w=i.length,v=Ugt;for(f=0;f64)){if(a<0)return!1;g+=6}return g%8===0}function XFe(i){var a,f,g=i.replace(/[\r\n=]/g,""),w=g.length,v=Ugt,b=0,E=[];for(a=0;a>16&255),E.push(b>>8&255),E.push(b&255)),b=b<<6|v.indexOf(g.charAt(a));return f=w%4*6,f===0?(E.push(b>>16&255),E.push(b>>8&255),E.push(b&255)):f===18?(E.push(b>>10&255),E.push(b>>2&255)):f===12&&E.push(b>>4&255),new Uint8Array(E)}function QFe(i){var a="",f=0,g,w,v=i.length,b=Ugt;for(g=0;g>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]),f=(f<<8)+i[g];return w=v%3,w===0?(a+=b[f>>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]):w===2?(a+=b[f>>10&63],a+=b[f>>4&63],a+=b[f<<2&63],a+=b[64]):w===1&&(a+=b[f>>2&63],a+=b[f<<4&63],a+=b[64],a+=b[64]),a}function JFe(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}var ZFe=new cg("tag:yaml.org,2002:binary",{kind:"scalar",resolve:YFe,construct:XFe,predicate:JFe,represent:QFe}),tBe=Object.prototype.hasOwnProperty,eBe=Object.prototype.toString;function nBe(i){if(i===null)return!0;var a=[],f,g,w,v,b,E=i;for(f=0,g=E.length;f>10)+55296,(i-65536&1023)+56320)}for(var $Bt=new Array(256),zBt=new Array(256),dD=0;dD<256;dD++)$Bt[dD]=jBt(dD)?1:0,zBt[dD]=jBt(dD);function kBe(i,a){this.input=i,this.filename=a.filename||null,this.schema=a.schema||dBe,this.onWarning=a.onWarning||null,this.legacy=a.legacy||!1,this.json=a.json||!1,this.listener=a.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=i.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function qBt(i,a){var f={name:i.filename,buffer:i.input.slice(0,-1),position:i.position,line:i.line,column:i.position-i.lineStart};return f.snippet=uFe(f),new Ox(a,f)}function Ks(i,a){throw qBt(i,a)}function EY(i,a){i.onWarning&&i.onWarning.call(null,qBt(i,a))}var HBt={YAML:function(a,f,g){var w,v,b;a.version!==null&&Ks(a,"duplication of %YAML directive"),g.length!==1&&Ks(a,"YAML directive accepts exactly one argument"),w=/^([0-9]+)\.([0-9]+)$/.exec(g[0]),w===null&&Ks(a,"ill-formed argument of the YAML directive"),v=parseInt(w[1],10),b=parseInt(w[2],10),v!==1&&Ks(a,"unacceptable YAML version of the document"),a.version=g[0],a.checkLineBreaks=b<2,b!==1&&b!==2&&EY(a,"unsupported YAML version of the document")},TAG:function(a,f,g){var w,v;g.length!==2&&Ks(a,"TAG directive accepts exactly two arguments"),w=g[0],v=g[1],FBt.test(w)||Ks(a,"ill-formed tag handle (first argument) of the TAG directive"),m8.call(a.tagMap,w)&&Ks(a,'there is a previously declared suffix for "'+w+'" tag handle'),BBt.test(v)||Ks(a,"ill-formed tag prefix (second argument) of the TAG directive");try{v=decodeURIComponent(v)}catch{Ks(a,"tag prefix is malformed: "+v)}a.tagMap[w]=v}};function v8(i,a,f,g){var w,v,b,E;if(a1&&(i.result+=tp.repeat(` +`,a-1))}function EBe(i,a,f){var g,w,v,b,E,S,_,M,F=i.kind,R=i.result,B;if(B=i.input.charCodeAt(i.position),sb(B)||fD(B)||B===35||B===38||B===42||B===33||B===124||B===62||B===39||B===34||B===37||B===64||B===96||(B===63||B===45)&&(w=i.input.charCodeAt(i.position+1),sb(w)||f&&fD(w)))return!1;for(i.kind="scalar",i.result="",v=b=i.position,E=!1;B!==0;){if(B===58){if(w=i.input.charCodeAt(i.position+1),sb(w)||f&&fD(w))break}else if(B===35){if(g=i.input.charCodeAt(i.position-1),sb(g))break}else{if(i.position===i.lineStart&&TY(i)||f&&fD(B))break;if(r4(B))if(S=i.line,_=i.lineStart,M=i.lineIndent,c1(i,!1,-1),i.lineIndent>=a){E=!0,B=i.input.charCodeAt(i.position);continue}else{i.position=b,i.line=S,i.lineStart=_,i.lineIndent=M;break}}E&&(v8(i,v,b,!1),Wgt(i,i.line-S),v=b=i.position,E=!1),C9(B)||(b=i.position+1),B=i.input.charCodeAt(++i.position)}return v8(i,v,b,!1),i.result?!0:(i.kind=F,i.result=R,!1)}function TBe(i,a){var f,g,w;if(f=i.input.charCodeAt(i.position),f!==39)return!1;for(i.kind="scalar",i.result="",i.position++,g=w=i.position;(f=i.input.charCodeAt(i.position))!==0;)if(f===39)if(v8(i,g,i.position,!0),f=i.input.charCodeAt(++i.position),f===39)g=i.position,i.position++,w=i.position;else return!0;else r4(f)?(v8(i,g,w,!0),Wgt(i,c1(i,!1,a)),g=w=i.position):i.position===i.lineStart&&TY(i)?Ks(i,"unexpected end of the document within a single quoted scalar"):(i.position++,w=i.position);Ks(i,"unexpected end of the stream within a single quoted scalar")}function CBe(i,a){var f,g,w,v,b,E;if(E=i.input.charCodeAt(i.position),E!==34)return!1;for(i.kind="scalar",i.result="",i.position++,f=g=i.position;(E=i.input.charCodeAt(i.position))!==0;){if(E===34)return v8(i,f,i.position,!0),i.position++,!0;if(E===92){if(v8(i,f,i.position,!0),E=i.input.charCodeAt(++i.position),r4(E))c1(i,!1,a);else if(E<256&&$Bt[E])i.result+=zBt[E],i.position++;else if((b=vBe(E))>0){for(w=b,v=0;w>0;w--)E=i.input.charCodeAt(++i.position),(b=mBe(E))>=0?v=(v<<4)+b:Ks(i,"expected hexadecimal character");i.result+=xBe(v),i.position++}else Ks(i,"unknown escape sequence");f=g=i.position}else r4(E)?(v8(i,f,g,!0),Wgt(i,c1(i,!1,a)),f=g=i.position):i.position===i.lineStart&&TY(i)?Ks(i,"unexpected end of the document within a double quoted scalar"):(i.position++,g=i.position)}Ks(i,"unexpected end of the stream within a double quoted scalar")}function SBe(i,a){var f=!0,g,w,v,b=i.tag,E,S=i.anchor,_,M,F,R,B,z=Object.create(null),Y,nt,ot,ft;if(ft=i.input.charCodeAt(i.position),ft===91)M=93,B=!1,E=[];else if(ft===123)M=125,B=!0,E={};else return!1;for(i.anchor!==null&&(i.anchorMap[i.anchor]=E),ft=i.input.charCodeAt(++i.position);ft!==0;){if(c1(i,!0,a),ft=i.input.charCodeAt(i.position),ft===M)return i.position++,i.tag=b,i.anchor=S,i.kind=B?"mapping":"sequence",i.result=E,!0;f?ft===44&&Ks(i,"expected the node content, but found ','"):Ks(i,"missed comma between flow collection entries"),nt=Y=ot=null,F=R=!1,ft===63&&(_=i.input.charCodeAt(i.position+1),sb(_)&&(F=R=!0,i.position++,c1(i,!0,a))),g=i.line,w=i.lineStart,v=i.position,pD(i,a,xY,!1,!0),nt=i.tag,Y=i.result,c1(i,!0,a),ft=i.input.charCodeAt(i.position),(R||i.line===g)&&ft===58&&(F=!0,ft=i.input.charCodeAt(++i.position),c1(i,!0,a),pD(i,a,xY,!1,!0),ot=i.result),B?gD(i,E,z,nt,Y,ot,g,w,v):F?E.push(gD(i,null,z,nt,Y,ot,g,w,v)):E.push(Y),c1(i,!0,a),ft=i.input.charCodeAt(i.position),ft===44?(f=!0,ft=i.input.charCodeAt(++i.position)):f=!1}Ks(i,"unexpected end of the stream within a flow collection")}function _Be(i,a){var f,g,w=Ggt,v=!1,b=!1,E=a,S=0,_=!1,M,F;if(F=i.input.charCodeAt(i.position),F===124)g=!1;else if(F===62)g=!0;else return!1;for(i.kind="scalar",i.result="";F!==0;)if(F=i.input.charCodeAt(++i.position),F===43||F===45)Ggt===w?w=F===43?PBt:gBe:Ks(i,"repeat of a chomping mode identifier");else if((M=yBe(F))>=0)M===0?Ks(i,"bad explicit indentation width of a block scalar; it cannot be less than one"):b?Ks(i,"repeat of an indentation width identifier"):(E=a+M-1,b=!0);else break;if(C9(F)){do F=i.input.charCodeAt(++i.position);while(C9(F));if(F===35)do F=i.input.charCodeAt(++i.position);while(!r4(F)&&F!==0)}for(;F!==0;){for(Kgt(i),i.lineIndent=0,F=i.input.charCodeAt(i.position);(!b||i.lineIndentE&&(E=i.lineIndent),r4(F)){S++;continue}if(i.lineIndenta)&&S!==0)Ks(i,"bad indentation of a sequence entry");else if(i.lineIndenta)&&(nt&&(b=i.line,E=i.lineStart,S=i.position),pD(i,a,kY,!0,w)&&(nt?z=i.result:Y=i.result),nt||(gD(i,F,R,B,z,Y,b,E,S),B=z=Y=null),c1(i,!0,-1),ft=i.input.charCodeAt(i.position)),(i.line===v||i.lineIndent>a)&&ft!==0)Ks(i,"bad indentation of a mapping entry");else if(i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndent tag; it should be "scalar", not "'+i.kind+'"'),F=0,R=i.implicitTypes.length;F"),i.result!==null&&z.kind!==i.kind&&Ks(i,"unacceptable node kind for !<"+i.tag+'> tag; it should be "'+z.kind+'", not "'+i.kind+'"'),z.resolve(i.result,i.tag)?(i.result=z.construct(i.result,i.tag),i.anchor!==null&&(i.anchorMap[i.anchor]=i.result)):Ks(i,"cannot resolve a node with !<"+i.tag+"> explicit tag")}return i.listener!==null&&i.listener("close",i),i.tag!==null||i.anchor!==null||M}function IBe(i){var a=i.position,f,g,w,v=!1,b;for(i.version=null,i.checkLineBreaks=i.legacy,i.tagMap=Object.create(null),i.anchorMap=Object.create(null);(b=i.input.charCodeAt(i.position))!==0&&(c1(i,!0,-1),b=i.input.charCodeAt(i.position),!(i.lineIndent>0||b!==37));){for(v=!0,b=i.input.charCodeAt(++i.position),f=i.position;b!==0&&!sb(b);)b=i.input.charCodeAt(++i.position);for(g=i.input.slice(f,i.position),w=[],g.length<1&&Ks(i,"directive name must not be less than one character in length");b!==0;){for(;C9(b);)b=i.input.charCodeAt(++i.position);if(b===35){do b=i.input.charCodeAt(++i.position);while(b!==0&&!r4(b));break}if(r4(b))break;for(f=i.position;b!==0&&!sb(b);)b=i.input.charCodeAt(++i.position);w.push(i.input.slice(f,i.position))}b!==0&&Kgt(i),m8.call(HBt,g)?HBt[g](i,g,w):EY(i,'unknown document directive "'+g+'"')}if(c1(i,!0,-1),i.lineIndent===0&&i.input.charCodeAt(i.position)===45&&i.input.charCodeAt(i.position+1)===45&&i.input.charCodeAt(i.position+2)===45?(i.position+=3,c1(i,!0,-1)):v&&Ks(i,"directives end mark is expected"),pD(i,i.lineIndent-1,kY,!1,!0),c1(i,!0,-1),i.checkLineBreaks&&bBe.test(i.input.slice(a,i.position))&&EY(i,"non-ASCII line breaks are interpreted as content"),i.documents.push(i.result),i.position===i.lineStart&&TY(i)){i.input.charCodeAt(i.position)===46&&(i.position+=3,c1(i,!0,-1));return}if(i.position"u"&&(f=a,a=null);var g=GBt(i,f);if(typeof a!="function")return g;for(var w=0,v=g.length;wi.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(a,f,g)=>"<"+f+g.replace(/="([^"]*)"/g,"='$1'")+">"),qBe=i=>{const{text:a,metadata:f}=$Be(i),{displayMode:g,title:w,config:v={}}=f;return g&&(v.gantt||(v.gantt={}),v.gantt.displayMode=g),{title:w,config:v,text:a}},HBe=i=>{const a=uo.detectInit(i)??{},f=uo.detectDirective(i,"wrap");return Array.isArray(f)?a.wrap=f.some(({type:g})=>{}):(f==null?void 0:f.type)==="wrap"&&(a.wrap=!0),{text:uNe(i),directive:a}};function KBt(i){const a=zBe(i),f=qBe(a),g=HBe(f.text),w=MF(f.config,g.directive);return i=XPe(g.text),{code:i,title:f.title,config:w}}const VBe=5e4,UBe="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",GBe="sandbox",KBe="loose",WBe="http://www.w3.org/2000/svg",YBe="http://www.w3.org/1999/xlink",XBe="http://www.w3.org/1999/xhtml",QBe="100%",JBe="100%",ZBe="border:0;margin:0;",tRe="margin:0",eRe="allow-top-navigation-by-user-activation allow-popups",nRe='The "iframe" tag is not supported by your browser.',rRe=["foreignobject"],iRe=["dominant-baseline"];function WBt(i){const a=KBt(i);return wY(),HNe(a.config??{}),a}async function sRe(i,a){Rgt(),i=WBt(i).code;try{await Ygt(i)}catch(f){if(a!=null&&a.suppressErrors)return!1;throw f}return!0}const YBt=(i,a,f=[])=>` +.${i} ${a} { ${f.join(" !important; ")} !important; }`,aRe=(i,a={})=>{var g;let f="";if(i.themeCSS!==void 0&&(f+=` +${i.themeCSS}`),i.fontFamily!==void 0&&(f+=` +:root { --mermaid-font-family: ${i.fontFamily}}`),i.altFontFamily!==void 0&&(f+=` +:root { --mermaid-alt-font-family: ${i.altFontFamily}}`),!BF(a)){const E=i.htmlLabels||((g=i.flowchart)==null?void 0:g.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const S in a){const _=a[S];BF(_.styles)||E.forEach(M=>{f+=YBt(_.id,M,_.styles)}),BF(_.textStyles)||(f+=YBt(_.id,"tspan",_.textStyles))}}return f},oRe=(i,a,f,g)=>{const w=aRe(i,f),v=dPe(a,w,i.themeVariables);return Igt(BNe(`${g}{${v}}`),jNe)},cRe=(i="",a,f)=>{let g=i;return!f&&!a&&(g=g.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),g=IF(g),g=g.replace(/
    /g,"
    "),g},uRe=(i="",a)=>{var w,v;const f=(v=(w=a==null?void 0:a.viewBox)==null?void 0:w.baseVal)!=null&&v.height?a.viewBox.baseVal.height+"px":JBe,g=btoa(''+i+"");return``},XBt=(i,a,f,g,w)=>{const v=i.append("div");v.attr("id",f),g&&v.attr("style",g);const b=v.append("svg").attr("id",a).attr("width","100%").attr("xmlns",WBe);return w&&b.attr("xmlns:xlink",w),b.append("g"),i};function QBt(i,a){return i.append("iframe").attr("id",a).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const lRe=(i,a,f,g)=>{var w,v,b;(w=i.getElementById(a))==null||w.remove(),(v=i.getElementById(f))==null||v.remove(),(b=i.getElementById(g))==null||b.remove()},hRe=async function(i,a,f){var V,Ot,It,jt,xt,Ft;Rgt();const g=WBt(a);a=g.code;const w=o1();Kt.debug(w),a.length>((w==null?void 0:w.maxTextSize)??VBe)&&(a=UBe);const v="#"+i,b="i"+i,E="#"+b,S="d"+i,_="#"+S;let M=Tr("body");const F=w.securityLevel===GBe,R=w.securityLevel===KBe,B=w.fontFamily;if(f!==void 0){if(f&&(f.innerHTML=""),F){const Ct=QBt(Tr(f),b);M=Tr(Ct.nodes()[0].contentDocument.body),M.node().style.margin=0}else M=Tr(f);XBt(M,i,S,`font-family: ${B}`,YBe)}else{if(lRe(document,i,S,b),F){const Ct=QBt(Tr("body"),b);M=Tr(Ct.nodes()[0].contentDocument.body),M.node().style.margin=0}else M=Tr("body");XBt(M,i,S)}let z,Y;try{z=await Ygt(a,{title:g.title})}catch(Ct){z=new vBt("error"),Y=Ct}const nt=M.select(_).node(),ot=z.type,ft=nt.firstChild,wt=ft.firstChild,mt=(Ot=(V=z.renderer).getClasses)==null?void 0:Ot.call(V,a,z),ct=oRe(w,ot,mt,v),rt=document.createElement("style");rt.innerHTML=ct,ft.insertBefore(rt,wt);try{await z.renderer.draw(a,i,jFt,z)}catch(Ct){throw yPe.draw(a,i,jFt),Ct}const it=M.select(`${_} svg`),gt=(jt=(It=z.db).getAccTitle)==null?void 0:jt.call(It),Q=(Ft=(xt=z.db).getAccDescription)==null?void 0:Ft.call(xt);dRe(ot,it,gt,Q),M.select(`[id="${i}"]`).selectAll("foreignobject > *").attr("xmlns",XBe);let dt=M.select(_).node().innerHTML;if(Kt.debug("config.arrowMarkerAbsolute",w.arrowMarkerAbsolute),dt=cRe(dt,F,j1(w.arrowMarkerAbsolute)),F){const Ct=M.select(_+" svg").node();dt=uRe(dt,Ct)}else R||(dt=QL.sanitize(dt,{ADD_TAGS:rRe,ADD_ATTR:iRe}));if(APe(),Y)throw Y;const yt=Tr(F?E:_).node();return yt&&"remove"in yt&&yt.remove(),{svg:dt,bindFunctions:z.db.bindFunctions}};function fRe(i={}){var f;i!=null&&i.fontFamily&&!((f=i.themeVariables)!=null&&f.fontFamily)&&(i.themeVariables||(i.themeVariables={}),i.themeVariables.fontFamily=i.fontFamily),zNe(i),i!=null&&i.theme&&i.theme in Lx?i.themeVariables=Lx[i.theme].getThemeVariables(i.themeVariables):i&&(i.themeVariables=Lx.default.getThemeVariables(i.themeVariables));const a=typeof i=="object"?$Ne(i):zFt();d0t(a.logLevel),Rgt()}const Ygt=(i,a={})=>{const{code:f}=KBt(i);return _Pe(f,a)};function dRe(i,a,f,g){WPe(a,i),YPe(a,f,g,a.attr("id"))}const S9=Object.freeze({render:hRe,parse:sRe,getDiagramFromText:Ygt,initialize:fRe,getConfig:o1,setConfig:qFt,getSiteConfig:zFt,updateSiteConfig:qNe,reset:()=>{wY()},globalReset:()=>{wY(cD)},defaultConfig:cD});d0t(o1().logLevel),wY(o1());const gRe=async()=>{Kt.debug("Loading registered diagrams");const a=(await Promise.allSettled(Object.entries(JL).map(async([f,{detector:g,loader:w}])=>{if(w)try{Bgt(f)}catch{try{const{diagram:b,id:E}=await w();yY(E,b,g)}catch(b){throw Kt.error(`Failed to load external diagram with key ${f}. Removing from detectors.`),delete JL[f],b}}}))).filter(f=>f.status==="rejected");if(a.length>0){Kt.error(`Failed to load ${a.length} external diagrams`);for(const f of a)Kt.error(f);throw new Error(`Failed to load ${a.length} external diagrams`)}},pRe=(i,a,f)=>{Kt.warn(i),DFt(i)?(f&&f(i.str,i.hash),a.push({...i,message:i.str,error:i})):(f&&f(i),i instanceof Error&&a.push({str:i.message,message:i.message,hash:i.name,error:i}))},JBt=async function(i={querySelector:".mermaid"}){try{await bRe(i)}catch(a){if(DFt(a)&&Kt.error(a.str),_2.parseError&&_2.parseError(a),!i.suppressErrors)throw Kt.error("Use the suppressErrors option to suppress these errors"),a}},bRe=async function({postRenderCallback:i,querySelector:a,nodes:f}={querySelector:".mermaid"}){const g=S9.getConfig();Kt.debug(`${i?"":"No "}Callback function found`);let w;if(f)w=f;else if(a)w=document.querySelectorAll(a);else throw new Error("Nodes and querySelector are both undefined");Kt.debug(`Found ${w.length} diagrams`),(g==null?void 0:g.startOnLoad)!==void 0&&(Kt.debug("Start On Load: "+(g==null?void 0:g.startOnLoad)),S9.updateSiteConfig({startOnLoad:g==null?void 0:g.startOnLoad}));const v=new uo.InitIDGenerator(g.deterministicIds,g.deterministicIDSeed);let b;const E=[];for(const S of Array.from(w)){Kt.info("Rendering diagram: "+S.id);/*! Check if previously processed */if(S.getAttribute("data-processed"))continue;S.setAttribute("data-processed","true");const _=`mermaid-${v.next()}`;b=S.innerHTML,b=BL(uo.entityDecode(b)).trim().replace(//gi,"
    ");const M=uo.detectInit(b);M&&Kt.debug("Detected early reinit: ",M);try{const{svg:F,bindFunctions:R}=await nRt(_,b,S);S.innerHTML=F,i&&await i(_),R&&R(S)}catch(F){pRe(F,E,_2.parseError)}}if(E.length>0)throw E[0]},ZBt=function(i){S9.initialize(i)},wRe=async function(i,a,f){Kt.warn("mermaid.init is deprecated. Please use run instead."),i&&ZBt(i);const g={postRenderCallback:f,querySelector:".mermaid"};typeof a=="string"?g.querySelector=a:a&&(a instanceof HTMLElement?g.nodes=[a]:g.nodes=a),await JBt(g)},mRe=async(i,{lazyLoad:a=!0}={})=>{UPt(...i),a===!1&&await gRe()},tRt=function(){if(_2.startOnLoad){const{startOnLoad:i}=S9.getConfig();i&&_2.run().catch(a=>Kt.error("Mermaid failed to initialize",a))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",tRt,!1)}const vRe=function(i){_2.parseError=i},CY=[];let Xgt=!1;const eRt=async()=>{if(!Xgt){for(Xgt=!0;CY.length>0;){const i=CY.shift();if(i)try{await i()}catch(a){Kt.error("Error executing queue",a)}}Xgt=!1}},yRe=async(i,a)=>new Promise((f,g)=>{const w=()=>new Promise((v,b)=>{S9.parse(i,a).then(E=>{v(E),f(E)},E=>{var S;Kt.error("Error parsing",E),(S=_2.parseError)==null||S.call(_2,E),b(E),g(E)})});CY.push(w),eRt().catch(g)}),nRt=(i,a,f)=>new Promise((g,w)=>{const v=()=>new Promise((b,E)=>{S9.render(i,a,f).then(S=>{b(S),g(S)},S=>{var _;Kt.error("Error parsing",S),(_=_2.parseError)==null||_.call(_2,S),E(S),w(S)})});CY.push(v),eRt().catch(w)}),_2={startOnLoad:!0,mermaidAPI:S9,parse:yRe,render:nRt,init:wRe,run:JBt,registerExternalDiagrams:mRe,initialize:ZBt,parseError:void 0,contentLoaded:tRt,setParseErrorHandler:vRe,detectType:QW};var SY=function(){var i=function(br,An,Nn,Bn){for(Nn=Nn||{},Bn=br.length;Bn--;Nn[br[Bn]]=An);return Nn},a=[1,24],f=[1,25],g=[1,26],w=[1,27],v=[1,28],b=[1,63],E=[1,64],S=[1,65],_=[1,66],M=[1,67],F=[1,68],R=[1,69],B=[1,29],z=[1,30],Y=[1,31],nt=[1,32],ot=[1,33],ft=[1,34],wt=[1,35],mt=[1,36],ct=[1,37],rt=[1,38],it=[1,39],gt=[1,40],Q=[1,41],dt=[1,42],K=[1,43],yt=[1,44],V=[1,45],Ot=[1,46],It=[1,47],jt=[1,48],xt=[1,50],Ft=[1,51],Ct=[1,52],kt=[1,53],Gt=[1,54],Fe=[1,55],Mt=[1,56],pn=[1,57],Ae=[1,58],ye=[1,59],tn=[1,60],sn=[14,42],be=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ne=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Xt=[1,82],_e=[1,83],xe=[1,84],Mn=[1,85],ce=[12,14,42],Br=[12,14,33,42],we=[12,14,33,42,76,77,79,80],Fi=[12,33],mi=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ga={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(An,Nn,Bn,ke,pe,Je,an){var xn=Je.length-1;switch(pe){case 3:ke.setDirection("TB");break;case 4:ke.setDirection("BT");break;case 5:ke.setDirection("RL");break;case 6:ke.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:ke.setC4Type(Je[xn-3]);break;case 19:ke.setTitle(Je[xn].substring(6)),this.$=Je[xn].substring(6);break;case 20:ke.setAccDescription(Je[xn].substring(15)),this.$=Je[xn].substring(15);break;case 21:this.$=Je[xn].trim(),ke.setTitle(this.$);break;case 22:case 23:this.$=Je[xn].trim(),ke.setAccDescription(this.$);break;case 28:case 29:Je[xn].splice(2,0,"ENTERPRISE"),ke.addPersonOrSystemBoundary(...Je[xn]),this.$=Je[xn];break;case 30:ke.addPersonOrSystemBoundary(...Je[xn]),this.$=Je[xn];break;case 31:Je[xn].splice(2,0,"CONTAINER"),ke.addContainerBoundary(...Je[xn]),this.$=Je[xn];break;case 32:ke.addDeploymentNode("node",...Je[xn]),this.$=Je[xn];break;case 33:ke.addDeploymentNode("nodeL",...Je[xn]),this.$=Je[xn];break;case 34:ke.addDeploymentNode("nodeR",...Je[xn]),this.$=Je[xn];break;case 35:ke.popBoundaryParseStack();break;case 39:ke.addPersonOrSystem("person",...Je[xn]),this.$=Je[xn];break;case 40:ke.addPersonOrSystem("external_person",...Je[xn]),this.$=Je[xn];break;case 41:ke.addPersonOrSystem("system",...Je[xn]),this.$=Je[xn];break;case 42:ke.addPersonOrSystem("system_db",...Je[xn]),this.$=Je[xn];break;case 43:ke.addPersonOrSystem("system_queue",...Je[xn]),this.$=Je[xn];break;case 44:ke.addPersonOrSystem("external_system",...Je[xn]),this.$=Je[xn];break;case 45:ke.addPersonOrSystem("external_system_db",...Je[xn]),this.$=Je[xn];break;case 46:ke.addPersonOrSystem("external_system_queue",...Je[xn]),this.$=Je[xn];break;case 47:ke.addContainer("container",...Je[xn]),this.$=Je[xn];break;case 48:ke.addContainer("container_db",...Je[xn]),this.$=Je[xn];break;case 49:ke.addContainer("container_queue",...Je[xn]),this.$=Je[xn];break;case 50:ke.addContainer("external_container",...Je[xn]),this.$=Je[xn];break;case 51:ke.addContainer("external_container_db",...Je[xn]),this.$=Je[xn];break;case 52:ke.addContainer("external_container_queue",...Je[xn]),this.$=Je[xn];break;case 53:ke.addComponent("component",...Je[xn]),this.$=Je[xn];break;case 54:ke.addComponent("component_db",...Je[xn]),this.$=Je[xn];break;case 55:ke.addComponent("component_queue",...Je[xn]),this.$=Je[xn];break;case 56:ke.addComponent("external_component",...Je[xn]),this.$=Je[xn];break;case 57:ke.addComponent("external_component_db",...Je[xn]),this.$=Je[xn];break;case 58:ke.addComponent("external_component_queue",...Je[xn]),this.$=Je[xn];break;case 60:ke.addRel("rel",...Je[xn]),this.$=Je[xn];break;case 61:ke.addRel("birel",...Je[xn]),this.$=Je[xn];break;case 62:ke.addRel("rel_u",...Je[xn]),this.$=Je[xn];break;case 63:ke.addRel("rel_d",...Je[xn]),this.$=Je[xn];break;case 64:ke.addRel("rel_l",...Je[xn]),this.$=Je[xn];break;case 65:ke.addRel("rel_r",...Je[xn]),this.$=Je[xn];break;case 66:ke.addRel("rel_b",...Je[xn]),this.$=Je[xn];break;case 67:Je[xn].splice(0,1),ke.addRel("rel",...Je[xn]),this.$=Je[xn];break;case 68:ke.updateElStyle("update_el_style",...Je[xn]),this.$=Je[xn];break;case 69:ke.updateRelStyle("update_rel_style",...Je[xn]),this.$=Je[xn];break;case 70:ke.updateLayoutConfig("update_layout_config",...Je[xn]),this.$=Je[xn];break;case 71:this.$=[Je[xn]];break;case 72:Je[xn].unshift(Je[xn-1]),this.$=Je[xn];break;case 73:case 75:this.$=Je[xn].trim();break;case 74:let qa={};qa[Je[xn-1].trim()]=Je[xn].trim(),this.$=qa;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:70,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:71,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:72,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:73,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{14:[1,74]},i(sn,[2,13],{43:23,29:49,30:61,32:62,20:75,34:b,36:E,37:S,38:_,39:M,40:F,41:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn}),i(sn,[2,14]),i(be,[2,16],{12:[1,76]}),i(sn,[2,36],{12:[1,77]}),i(Ne,[2,19]),i(Ne,[2,20]),{25:[1,78]},{27:[1,79]},i(Ne,[2,23]),{35:80,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:86,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:87,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:88,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:89,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:90,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:91,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:92,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:93,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:94,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:95,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:96,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:97,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:98,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:99,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:100,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:101,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:102,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:103,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:104,75:81,76:Xt,77:_e,79:xe,80:Mn},i(ce,[2,59]),{35:105,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:106,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:107,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:108,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:109,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:110,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:111,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:112,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:113,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:114,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:115,75:81,76:Xt,77:_e,79:xe,80:Mn},{20:116,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{12:[1,118],33:[1,117]},{35:119,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:120,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:121,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:122,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:123,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:124,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:125,75:81,76:Xt,77:_e,79:xe,80:Mn},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},i(sn,[2,15]),i(be,[2,17],{21:22,19:130,22:a,23:f,24:g,26:w,28:v}),i(sn,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:a,23:f,24:g,26:w,28:v,34:b,36:E,37:S,38:_,39:M,40:F,41:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn}),i(Ne,[2,21]),i(Ne,[2,22]),i(ce,[2,39]),i(Br,[2,71],{75:81,35:132,76:Xt,77:_e,79:xe,80:Mn}),i(we,[2,73]),{78:[1,133]},i(we,[2,75]),i(we,[2,76]),i(ce,[2,40]),i(ce,[2,41]),i(ce,[2,42]),i(ce,[2,43]),i(ce,[2,44]),i(ce,[2,45]),i(ce,[2,46]),i(ce,[2,47]),i(ce,[2,48]),i(ce,[2,49]),i(ce,[2,50]),i(ce,[2,51]),i(ce,[2,52]),i(ce,[2,53]),i(ce,[2,54]),i(ce,[2,55]),i(ce,[2,56]),i(ce,[2,57]),i(ce,[2,58]),i(ce,[2,60]),i(ce,[2,61]),i(ce,[2,62]),i(ce,[2,63]),i(ce,[2,64]),i(ce,[2,65]),i(ce,[2,66]),i(ce,[2,67]),i(ce,[2,68]),i(ce,[2,69]),i(ce,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},i(Fi,[2,28]),i(Fi,[2,29]),i(Fi,[2,30]),i(Fi,[2,31]),i(Fi,[2,32]),i(Fi,[2,33]),i(Fi,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},i(be,[2,18]),i(sn,[2,38]),i(Br,[2,72]),i(we,[2,74]),i(ce,[2,24]),i(ce,[2,35]),i(mi,[2,25]),i(mi,[2,26],{12:[1,138]}),i(mi,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(An,Nn){if(Nn.recoverable)this.trace(An);else{var Bn=new Error(An);throw Bn.hash=Nn,Bn}},parse:function(An){var Nn=this,Bn=[0],ke=[],pe=[null],Je=[],an=this.table,xn="",qa=0,xo=0,ko=2,va=1,Ha=Je.slice.call(arguments,1),ds=Object.create(this.lexer),Fu={yy:{}};for(var Zs in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Zs)&&(Fu.yy[Zs]=this.yy[Zs]);ds.setInput(An,Fu.yy),Fu.yy.lexer=ds,Fu.yy.parser=this,typeof ds.yylloc>"u"&&(ds.yylloc={});var d1=ds.yylloc;Je.push(d1);var I2=ds.options&&ds.options.ranges;typeof Fu.yy.parseError=="function"?this.parseError=Fu.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ll(){var Zl;return Zl=ke.pop()||ds.lex()||va,typeof Zl!="number"&&(Zl instanceof Array&&(ke=Zl,Zl=ke.pop()),Zl=Nn.symbols_[Zl]||Zl),Zl}for(var Ic,wc,Ea,gu,ta={},fo,mc,ca,ya;;){if(wc=Bn[Bn.length-1],this.defaultActions[wc]?Ea=this.defaultActions[wc]:((Ic===null||typeof Ic>"u")&&(Ic=ll()),Ea=an[wc]&&an[wc][Ic]),typeof Ea>"u"||!Ea.length||!Ea[0]){var ea="";ya=[];for(fo in an[wc])this.terminals_[fo]&&fo>ko&&ya.push("'"+this.terminals_[fo]+"'");ds.showPosition?ea="Parse error on line "+(qa+1)+`: +`+ds.showPosition()+` +Expecting `+ya.join(", ")+", got '"+(this.terminals_[Ic]||Ic)+"'":ea="Parse error on line "+(qa+1)+": Unexpected "+(Ic==va?"end of input":"'"+(this.terminals_[Ic]||Ic)+"'"),this.parseError(ea,{text:ds.match,token:this.terminals_[Ic]||Ic,line:ds.yylineno,loc:d1,expected:ya})}if(Ea[0]instanceof Array&&Ea.length>1)throw new Error("Parse Error: multiple actions possible at state: "+wc+", token: "+Ic);switch(Ea[0]){case 1:Bn.push(Ic),pe.push(ds.yytext),Je.push(ds.yylloc),Bn.push(Ea[1]),Ic=null,xo=ds.yyleng,xn=ds.yytext,qa=ds.yylineno,d1=ds.yylloc;break;case 2:if(mc=this.productions_[Ea[1]][1],ta.$=pe[pe.length-mc],ta._$={first_line:Je[Je.length-(mc||1)].first_line,last_line:Je[Je.length-1].last_line,first_column:Je[Je.length-(mc||1)].first_column,last_column:Je[Je.length-1].last_column},I2&&(ta._$.range=[Je[Je.length-(mc||1)].range[0],Je[Je.length-1].range[1]]),gu=this.performAction.apply(ta,[xn,xo,qa,Fu.yy,Ea[1],pe,Je].concat(Ha)),typeof gu<"u")return gu;mc&&(Bn=Bn.slice(0,-1*mc*2),pe=pe.slice(0,-1*mc),Je=Je.slice(0,-1*mc)),Bn.push(this.productions_[Ea[1]][0]),pe.push(ta.$),Je.push(ta._$),ca=an[Bn[Bn.length-2]][Bn[Bn.length-1]],Bn.push(ca);break;case 3:return!0}}return!0}},Ss=function(){var br={EOF:1,parseError:function(Nn,Bn){if(this.yy.parser)this.yy.parser.parseError(Nn,Bn);else throw new Error(Nn)},setInput:function(An,Nn){return this.yy=Nn||this.yy||{},this._input=An,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var An=this._input[0];this.yytext+=An,this.yyleng++,this.offset++,this.match+=An,this.matched+=An;var Nn=An.match(/(?:\r\n?|\n).*/g);return Nn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),An},unput:function(An){var Nn=An.length,Bn=An.split(/(?:\r\n?|\n)/g);this._input=An+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Nn),this.offset-=Nn;var ke=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Bn.length-1&&(this.yylineno-=Bn.length-1);var pe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Bn?(Bn.length===ke.length?this.yylloc.first_column:0)+ke[ke.length-Bn.length].length-Bn[0].length:this.yylloc.first_column-Nn},this.options.ranges&&(this.yylloc.range=[pe[0],pe[0]+this.yyleng-Nn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(An){this.unput(this.match.slice(An))},pastInput:function(){var An=this.matched.substr(0,this.matched.length-this.match.length);return(An.length>20?"...":"")+An.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var An=this.match;return An.length<20&&(An+=this._input.substr(0,20-An.length)),(An.substr(0,20)+(An.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var An=this.pastInput(),Nn=new Array(An.length+1).join("-");return An+this.upcomingInput()+` +`+Nn+"^"},test_match:function(An,Nn){var Bn,ke,pe;if(this.options.backtrack_lexer&&(pe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pe.yylloc.range=this.yylloc.range.slice(0))),ke=An[0].match(/(?:\r\n?|\n).*/g),ke&&(this.yylineno+=ke.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ke?ke[ke.length-1].length-ke[ke.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+An[0].length},this.yytext+=An[0],this.match+=An[0],this.matches=An,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(An[0].length),this.matched+=An[0],Bn=this.performAction.call(this,this.yy,this,Nn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Bn)return Bn;if(this._backtrack){for(var Je in pe)this[Je]=pe[Je];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var An,Nn,Bn,ke;this._more||(this.yytext="",this.match="");for(var pe=this._currentRules(),Je=0;JeNn[0].length)){if(Nn=Bn,ke=Je,this.options.backtrack_lexer){if(An=this.test_match(Bn,pe[Je]),An!==!1)return An;if(this._backtrack){Nn=!1;continue}else return!1}else if(!this.options.flex)break}return Nn?(An=this.test_match(Nn,pe[ke]),An!==!1?An:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Nn=this.next();return Nn||this.lex()},begin:function(Nn){this.conditionStack.push(Nn)},popState:function(){var Nn=this.conditionStack.length-1;return Nn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Nn){return Nn=this.conditionStack.length-1-Math.abs(Nn||0),Nn>=0?this.conditionStack[Nn]:"INITIAL"},pushState:function(Nn){this.begin(Nn)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Nn,Bn,ke,pe){switch(ke){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:return this.begin("node"),39;case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:return this.begin("rel_u"),66;case 53:return this.begin("rel_u"),66;case 54:return this.begin("rel_d"),67;case 55:return this.begin("rel_d"),67;case 56:return this.begin("rel_l"),68;case 57:return this.begin("rel_l"),68;case 58:return this.begin("rel_r"),69;case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return br}();ga.lexer=Ss;function za(){this.yy={}}return za.prototype=ga,ga.Parser=za,new za}();SY.parser=SY;const xRe=SY;let Wv=[],y8=[""],ep="global",Yv="",i4=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],jF=[],Qgt="",Jgt=!1,_Y=4,AY=2;var rRt;const kRe=function(){return rRt},ERe=function(i){rRt=Ef(i,Re())},TRe=function(i,a,f,g,w,v,b,E,S){if(i==null||a===void 0||a===null||f===void 0||f===null||g===void 0||g===null)return;let _={};const M=jF.find(F=>F.from===a&&F.to===f);if(M?_=M:jF.push(_),_.type=i,_.from=a,_.to=f,_.label={text:g},w==null)_.techn={text:""};else if(typeof w=="object"){let[F,R]=Object.entries(w)[0];_[F]={text:R}}else _.techn={text:w};if(v==null)_.descr={text:""};else if(typeof v=="object"){let[F,R]=Object.entries(v)[0];_[F]={text:R}}else _.descr={text:v};if(typeof b=="object"){let[F,R]=Object.entries(b)[0];_[F]=R}else _.sprite=b;if(typeof E=="object"){let[F,R]=Object.entries(E)[0];_[F]=R}else _.tags=E;if(typeof S=="object"){let[F,R]=Object.entries(S)[0];_[F]=R}else _.link=S;_.wrap=x8()},CRe=function(i,a,f,g,w,v,b){if(a===null||f===null)return;let E={};const S=Wv.find(_=>_.alias===a);if(S&&a===S.alias?E=S:(E.alias=a,Wv.push(E)),f==null?E.label={text:""}:E.label={text:f},g==null)E.descr={text:""};else if(typeof g=="object"){let[_,M]=Object.entries(g)[0];E[_]={text:M}}else E.descr={text:g};if(typeof w=="object"){let[_,M]=Object.entries(w)[0];E[_]=M}else E.sprite=w;if(typeof v=="object"){let[_,M]=Object.entries(v)[0];E[_]=M}else E.tags=v;if(typeof b=="object"){let[_,M]=Object.entries(b)[0];E[_]=M}else E.link=b;E.typeC4Shape={text:i},E.parentBoundary=ep,E.wrap=x8()},SRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let S={};const _=Wv.find(M=>M.alias===a);if(_&&a===_.alias?S=_:(S.alias=a,Wv.push(S)),f==null?S.label={text:""}:S.label={text:f},g==null)S.techn={text:""};else if(typeof g=="object"){let[M,F]=Object.entries(g)[0];S[M]={text:F}}else S.techn={text:g};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[M,F]=Object.entries(w)[0];S[M]={text:F}}else S.descr={text:w};if(typeof v=="object"){let[M,F]=Object.entries(v)[0];S[M]=F}else S.sprite=v;if(typeof b=="object"){let[M,F]=Object.entries(b)[0];S[M]=F}else S.tags=b;if(typeof E=="object"){let[M,F]=Object.entries(E)[0];S[M]=F}else S.link=E;S.wrap=x8(),S.typeC4Shape={text:i},S.parentBoundary=ep},_Re=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let S={};const _=Wv.find(M=>M.alias===a);if(_&&a===_.alias?S=_:(S.alias=a,Wv.push(S)),f==null?S.label={text:""}:S.label={text:f},g==null)S.techn={text:""};else if(typeof g=="object"){let[M,F]=Object.entries(g)[0];S[M]={text:F}}else S.techn={text:g};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[M,F]=Object.entries(w)[0];S[M]={text:F}}else S.descr={text:w};if(typeof v=="object"){let[M,F]=Object.entries(v)[0];S[M]=F}else S.sprite=v;if(typeof b=="object"){let[M,F]=Object.entries(b)[0];S[M]=F}else S.tags=b;if(typeof E=="object"){let[M,F]=Object.entries(E)[0];S[M]=F}else S.link=E;S.wrap=x8(),S.typeC4Shape={text:i},S.parentBoundary=ep},ARe=function(i,a,f,g,w){if(i===null||a===null)return;let v={};const b=i4.find(E=>E.alias===i);if(b&&i===b.alias?v=b:(v.alias=i,i4.push(v)),a==null?v.label={text:""}:v.label={text:a},f==null)v.type={text:"system"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];v[E]={text:S}}else v.type={text:f};if(typeof g=="object"){let[E,S]=Object.entries(g)[0];v[E]=S}else v.tags=g;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];v[E]=S}else v.link=w;v.parentBoundary=ep,v.wrap=x8(),Yv=ep,ep=i,y8.push(Yv)},LRe=function(i,a,f,g,w){if(i===null||a===null)return;let v={};const b=i4.find(E=>E.alias===i);if(b&&i===b.alias?v=b:(v.alias=i,i4.push(v)),a==null?v.label={text:""}:v.label={text:a},f==null)v.type={text:"container"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];v[E]={text:S}}else v.type={text:f};if(typeof g=="object"){let[E,S]=Object.entries(g)[0];v[E]=S}else v.tags=g;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];v[E]=S}else v.link=w;v.parentBoundary=ep,v.wrap=x8(),Yv=ep,ep=i,y8.push(Yv)},DRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let S={};const _=i4.find(M=>M.alias===a);if(_&&a===_.alias?S=_:(S.alias=a,i4.push(S)),f==null?S.label={text:""}:S.label={text:f},g==null)S.type={text:"node"};else if(typeof g=="object"){let[M,F]=Object.entries(g)[0];S[M]={text:F}}else S.type={text:g};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[M,F]=Object.entries(w)[0];S[M]={text:F}}else S.descr={text:w};if(typeof b=="object"){let[M,F]=Object.entries(b)[0];S[M]=F}else S.tags=b;if(typeof E=="object"){let[M,F]=Object.entries(E)[0];S[M]=F}else S.link=E;S.nodeType=i,S.parentBoundary=ep,S.wrap=x8(),Yv=ep,ep=a,y8.push(Yv)},MRe=function(){ep=Yv,y8.pop(),Yv=y8.pop(),y8.push(Yv)},IRe=function(i,a,f,g,w,v,b,E,S,_,M){let F=Wv.find(R=>R.alias===a);if(!(F===void 0&&(F=i4.find(R=>R.alias===a),F===void 0))){if(f!=null)if(typeof f=="object"){let[R,B]=Object.entries(f)[0];F[R]=B}else F.bgColor=f;if(g!=null)if(typeof g=="object"){let[R,B]=Object.entries(g)[0];F[R]=B}else F.fontColor=g;if(w!=null)if(typeof w=="object"){let[R,B]=Object.entries(w)[0];F[R]=B}else F.borderColor=w;if(v!=null)if(typeof v=="object"){let[R,B]=Object.entries(v)[0];F[R]=B}else F.shadowing=v;if(b!=null)if(typeof b=="object"){let[R,B]=Object.entries(b)[0];F[R]=B}else F.shape=b;if(E!=null)if(typeof E=="object"){let[R,B]=Object.entries(E)[0];F[R]=B}else F.sprite=E;if(S!=null)if(typeof S=="object"){let[R,B]=Object.entries(S)[0];F[R]=B}else F.techn=S;if(_!=null)if(typeof _=="object"){let[R,B]=Object.entries(_)[0];F[R]=B}else F.legendText=_;if(M!=null)if(typeof M=="object"){let[R,B]=Object.entries(M)[0];F[R]=B}else F.legendSprite=M}},ORe=function(i,a,f,g,w,v,b){const E=jF.find(S=>S.from===a&&S.to===f);if(E!==void 0){if(g!=null)if(typeof g=="object"){let[S,_]=Object.entries(g)[0];E[S]=_}else E.textColor=g;if(w!=null)if(typeof w=="object"){let[S,_]=Object.entries(w)[0];E[S]=_}else E.lineColor=w;if(v!=null)if(typeof v=="object"){let[S,_]=Object.entries(v)[0];E[S]=parseInt(_)}else E.offsetX=parseInt(v);if(b!=null)if(typeof b=="object"){let[S,_]=Object.entries(b)[0];E[S]=parseInt(_)}else E.offsetY=parseInt(b)}},NRe=function(i,a,f){let g=_Y,w=AY;if(typeof a=="object"){const v=Object.values(a)[0];g=parseInt(v)}else g=parseInt(a);if(typeof f=="object"){const v=Object.values(f)[0];w=parseInt(v)}else w=parseInt(f);g>=1&&(_Y=g),w>=1&&(AY=w)},PRe=function(){return _Y},FRe=function(){return AY},BRe=function(){return ep},RRe=function(){return Yv},iRt=function(i){return i==null?Wv:Wv.filter(a=>a.parentBoundary===i)},jRe=function(i){return Wv.find(a=>a.alias===i)},$Re=function(i){return Object.keys(iRt(i))},zRe=function(i){return i==null?i4:i4.filter(a=>a.parentBoundary===i)},qRe=function(){return jF},HRe=function(){return Qgt},VRe=function(i){Jgt=i},x8=function(){return Jgt},Zgt={addPersonOrSystem:CRe,addPersonOrSystemBoundary:ARe,addContainer:SRe,addContainerBoundary:LRe,addComponent:_Re,addDeploymentNode:DRe,popBoundaryParseStack:MRe,addRel:TRe,updateElStyle:IRe,updateRelStyle:ORe,updateLayoutConfig:NRe,autoWrap:x8,setWrap:VRe,getC4ShapeArray:iRt,getC4Shape:jRe,getC4ShapeKeys:$Re,getBoundarys:zRe,getCurrentBoundaryParse:BRe,getParentBoundaryParse:RRe,getRels:qRe,getTitle:HRe,getC4Type:kRe,getC4ShapeInRow:PRe,getC4BoundaryInRow:FRe,setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,getConfig:()=>Re().c4,clear:function(){Wv=[],i4=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Yv="",ep="global",y8=[""],jF=[],y8=[""],Qgt="",Jgt=!1,_Y=4,AY=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(i){Qgt=Ef(i,Re())},setC4Type:ERe},LY=(i,a)=>{const f=i.append("rect");if(f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),a.rx!==void 0&&f.attr("rx",a.rx),a.ry!==void 0&&f.attr("ry",a.ry),a.attrs!==void 0)for(const g in a.attrs)f.attr(g,a.attrs[g]);return a.class!==void 0&&f.attr("class",a.class),f},sRt=(i,a)=>{const f={x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,stroke:a.stroke,class:"rect"};LY(i,f).lower()},URe=(i,a)=>{const f=a.text.replace(xF," "),g=i.append("text");g.attr("x",a.x),g.attr("y",a.y),g.attr("class","legend"),g.style("text-anchor",a.anchor),a.class!==void 0&&g.attr("class",a.class);const w=g.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),g},GRe=(i,a,f,g)=>{const w=i.append("image");w.attr("x",a),w.attr("y",f);const v=h8(g);w.attr("xlink:href",v)},KRe=(i,a,f,g)=>{const w=i.append("use");w.attr("x",a),w.attr("y",f);const v=h8(g);w.attr("xlink:href",`#${v}`)},_9=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),tpt=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),ept=function(i,a){return LY(i,a)},aRt=function(i,a,f,g,w,v){const b=i.append("image");b.attr("width",a),b.attr("height",f),b.attr("x",g),b.attr("y",w);let E=v.startsWith("data:image/png;base64")?v:h8(v);b.attr("xlink:href",E)},WRe=(i,a,f)=>{const g=i.append("g");let w=0;for(let v of a){let b=v.textColor?v.textColor:"#444444",E=v.lineColor?v.lineColor:"#444444",S=v.offsetX?parseInt(v.offsetX):0,_=v.offsetY?parseInt(v.offsetY):0,M="";if(w===0){let R=g.append("line");R.attr("x1",v.startPoint.x),R.attr("y1",v.startPoint.y),R.attr("x2",v.endPoint.x),R.attr("y2",v.endPoint.y),R.attr("stroke-width","1"),R.attr("stroke",E),R.style("fill","none"),v.type!=="rel_b"&&R.attr("marker-end","url("+M+"#arrowhead)"),(v.type==="birel"||v.type==="rel_b")&&R.attr("marker-start","url("+M+"#arrowend)"),w=-1}else{let R=g.append("path");R.attr("fill","none").attr("stroke-width","1").attr("stroke",E).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",v.startPoint.x).replaceAll("starty",v.startPoint.y).replaceAll("controlx",v.startPoint.x+(v.endPoint.x-v.startPoint.x)/2-(v.endPoint.x-v.startPoint.x)/4).replaceAll("controly",v.startPoint.y+(v.endPoint.y-v.startPoint.y)/2).replaceAll("stopx",v.endPoint.x).replaceAll("stopy",v.endPoint.y)),v.type!=="rel_b"&&R.attr("marker-end","url("+M+"#arrowhead)"),(v.type==="birel"||v.type==="rel_b")&&R.attr("marker-start","url("+M+"#arrowend)")}let F=f.messageFont();Nx(f)(v.label.text,g,Math.min(v.startPoint.x,v.endPoint.x)+Math.abs(v.endPoint.x-v.startPoint.x)/2+S,Math.min(v.startPoint.y,v.endPoint.y)+Math.abs(v.endPoint.y-v.startPoint.y)/2+_,v.label.width,v.label.height,{fill:b},F),v.techn&&v.techn.text!==""&&(F=f.messageFont(),Nx(f)("["+v.techn.text+"]",g,Math.min(v.startPoint.x,v.endPoint.x)+Math.abs(v.endPoint.x-v.startPoint.x)/2+S,Math.min(v.startPoint.y,v.endPoint.y)+Math.abs(v.endPoint.y-v.startPoint.y)/2+f.messageFontSize+5+_,Math.max(v.label.width,v.techn.width),v.techn.height,{fill:b,"font-style":"italic"},F))}},YRe=function(i,a,f){const g=i.append("g");let w=a.bgColor?a.bgColor:"none",v=a.borderColor?a.borderColor:"#444444",b=a.fontColor?a.fontColor:"black",E={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};a.nodeType&&(E={"stroke-width":1});let S={x:a.x,y:a.y,fill:w,stroke:v,width:a.width,height:a.height,rx:2.5,ry:2.5,attrs:E};ept(g,S);let _=f.boundaryFont();_.fontWeight="bold",_.fontSize=_.fontSize+2,_.fontColor=b,Nx(f)(a.label.text,g,a.x,a.y+a.label.Y,a.width,a.height,{fill:"#444444"},_),a.type&&a.type.text!==""&&(_=f.boundaryFont(),_.fontColor=b,Nx(f)(a.type.text,g,a.x,a.y+a.type.Y,a.width,a.height,{fill:"#444444"},_)),a.descr&&a.descr.text!==""&&(_=f.boundaryFont(),_.fontSize=_.fontSize-2,_.fontColor=b,Nx(f)(a.descr.text,g,a.x,a.y+a.descr.Y,a.width,a.height,{fill:"#444444"},_))},XRe=function(i,a,f){var F;let g=a.bgColor?a.bgColor:f[a.typeC4Shape.text+"_bg_color"],w=a.borderColor?a.borderColor:f[a.typeC4Shape.text+"_border_color"],v=a.fontColor?a.fontColor:"#FFFFFF",b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(a.typeC4Shape.text){case"person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const E=i.append("g");E.attr("class","person-man");const S=_9();switch(a.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":S.x=a.x,S.y=a.y,S.fill=g,S.width=a.width,S.height=a.height,S.stroke=w,S.rx=2.5,S.ry=2.5,S.attrs={"stroke-width":.5},ept(E,S);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":E.append("path").attr("fill",g).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2).replaceAll("height",a.height)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":E.append("path").attr("fill",g).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("width",a.width).replaceAll("half",a.height/2)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",a.x+a.width).replaceAll("starty",a.y).replaceAll("half",a.height/2));break}let _=sje(f,a.typeC4Shape.text);switch(E.append("text").attr("fill",v).attr("font-family",_.fontFamily).attr("font-size",_.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",a.typeC4Shape.width).attr("x",a.x+a.width/2-a.typeC4Shape.width/2).attr("y",a.y+a.typeC4Shape.Y).text("<<"+a.typeC4Shape.text+">>"),a.typeC4Shape.text){case"person":case"external_person":aRt(E,48,48,a.x+a.width/2-24,a.y+a.image.Y,b);break}let M=f[a.typeC4Shape.text+"Font"]();return M.fontWeight="bold",M.fontSize=M.fontSize+2,M.fontColor=v,Nx(f)(a.label.text,E,a.x,a.y+a.label.Y,a.width,a.height,{fill:v},M),M=f[a.typeC4Shape.text+"Font"](),M.fontColor=v,a.techn&&((F=a.techn)==null?void 0:F.text)!==""?Nx(f)(a.techn.text,E,a.x,a.y+a.techn.Y,a.width,a.height,{fill:v,"font-style":"italic"},M):a.type&&a.type.text!==""&&Nx(f)(a.type.text,E,a.x,a.y+a.type.Y,a.width,a.height,{fill:v,"font-style":"italic"},M),a.descr&&a.descr.text!==""&&(M=f.personFont(),M.fontColor=v,Nx(f)(a.descr.text,E,a.x,a.y+a.descr.Y,a.width,a.height,{fill:v},M)),a.height},QRe=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},JRe=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},ZRe=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},tje=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},eje=function(i){i.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},nje=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},rje=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},ije=function(i){const f=i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);f.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),f.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},sje=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),Nx=function(){function i(w,v,b,E,S,_,M){const F=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("text-anchor","middle").text(w);g(F,M)}function a(w,v,b,E,S,_,M,F){const{fontSize:R,fontFamily:B,fontWeight:z}=F,Y=w.split(ei.lineBreakRegex);for(let nt=0;nt=this.data.widthLimit||g>=this.data.widthLimit||this.nextData.cnt>oRt)&&(f=this.nextData.startx+a.margin+Cs.nextLinePaddingX,w=this.nextData.stopy+a.margin*2,this.nextData.stopx=g=f+a.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=v=w+a.height,this.nextData.cnt=1),a.x=f,a.y=w,this.updateVal(this.data,"startx",f,Math.min),this.updateVal(this.data,"starty",w,Math.min),this.updateVal(this.data,"stopx",g,Math.max),this.updateVal(this.data,"stopy",v,Math.max),this.updateVal(this.nextData,"startx",f,Math.min),this.updateVal(this.nextData,"starty",w,Math.min),this.updateVal(this.nextData,"stopx",g,Math.max),this.updateVal(this.nextData,"stopy",v,Math.max)}init(a){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},rpt(a.db.getConfig())}bumpLastMargin(a){this.data.stopx+=a,this.data.stopy+=a}}const rpt=function(i){Ld(Cs,i),i.fontFamily&&(Cs.personFontFamily=Cs.systemFontFamily=Cs.messageFontFamily=i.fontFamily),i.fontSize&&(Cs.personFontSize=Cs.systemFontSize=Cs.messageFontSize=i.fontSize),i.fontWeight&&(Cs.personFontWeight=Cs.systemFontWeight=Cs.messageFontWeight=i.fontWeight)},$F=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),IY=i=>({fontFamily:i.boundaryFontFamily,fontSize:i.boundaryFontSize,fontWeight:i.boundaryFontWeight}),aje=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight});function Xv(i,a,f,g,w){if(!a[i].width)if(f)a[i].text=LFt(a[i].text,w,g),a[i].textLines=a[i].text.split(ei.lineBreakRegex).length,a[i].width=w,a[i].height=Tgt(a[i].text,g);else{let v=a[i].text.split(ei.lineBreakRegex);a[i].textLines=v.length;let b=0;a[i].height=0,a[i].width=0;for(const E of v)a[i].width=Math.max(n4(E,g),a[i].width),b=Tgt(E,g),a[i].height=a[i].height+b}}const uRt=function(i,a,f){a.x=f.data.startx,a.y=f.data.starty,a.width=f.data.stopx-f.data.startx,a.height=f.data.stopy-f.data.starty,a.label.y=Cs.c4ShapeMargin-35;let g=a.wrap&&Cs.wrap,w=IY(Cs);w.fontSize=w.fontSize+2,w.fontWeight="bold";let v=n4(a.label.text,w);Xv("label",a,g,w,v),s4.drawBoundary(i,a,Cs)},lRt=function(i,a,f,g){let w=0;for(const v of g){w=0;const b=f[v];let E=$F(Cs,b.typeC4Shape.text);switch(E.fontSize=E.fontSize-2,b.typeC4Shape.width=n4("«"+b.typeC4Shape.text+"»",E),b.typeC4Shape.height=E.fontSize+2,b.typeC4Shape.Y=Cs.c4ShapePadding,w=b.typeC4Shape.Y+b.typeC4Shape.height-4,b.image={width:0,height:0,Y:0},b.typeC4Shape.text){case"person":case"external_person":b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height;break}b.sprite&&(b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height);let S=b.wrap&&Cs.wrap,_=Cs.width-Cs.c4ShapePadding*2,M=$F(Cs,b.typeC4Shape.text);if(M.fontSize=M.fontSize+2,M.fontWeight="bold",Xv("label",b,S,M,_),b.label.Y=w+8,w=b.label.Y+b.label.height,b.type&&b.type.text!==""){b.type.text="["+b.type.text+"]";let B=$F(Cs,b.typeC4Shape.text);Xv("type",b,S,B,_),b.type.Y=w+5,w=b.type.Y+b.type.height}else if(b.techn&&b.techn.text!==""){b.techn.text="["+b.techn.text+"]";let B=$F(Cs,b.techn.text);Xv("techn",b,S,B,_),b.techn.Y=w+5,w=b.techn.Y+b.techn.height}let F=w,R=b.label.width;if(b.descr&&b.descr.text!==""){let B=$F(Cs,b.typeC4Shape.text);Xv("descr",b,S,B,_),b.descr.Y=w+20,w=b.descr.Y+b.descr.height,R=Math.max(b.label.width,b.descr.width),F=w-b.descr.textLines*5}R=R+Cs.c4ShapePadding,b.width=Math.max(b.width||Cs.width,R,Cs.width),b.height=Math.max(b.height||Cs.height,F,Cs.height),b.margin=b.margin||Cs.c4ShapeMargin,i.insert(b),s4.drawC4Shape(a,b,Cs)}i.bumpLastMargin(Cs.c4ShapeMargin)};let Jw=class{constructor(a,f){this.x=a,this.y=f}},hRt=function(i,a){let f=i.x,g=i.y,w=a.x,v=a.y,b=f+i.width/2,E=g+i.height/2,S=Math.abs(f-w),_=Math.abs(g-v),M=_/S,F=i.height/i.width,R=null;return g==v&&fw?R=new Jw(f,E):f==w&&gv&&(R=new Jw(b,g)),f>w&&g=M?R=new Jw(f,E+M*i.width/2):R=new Jw(b-S/_*i.height/2,g+i.height):f=M?R=new Jw(f+i.width,E+M*i.width/2):R=new Jw(b+S/_*i.height/2,g+i.height):fv?F>=M?R=new Jw(f+i.width,E-M*i.width/2):R=new Jw(b+i.height/2*S/_,g):f>w&&g>v&&(F>=M?R=new Jw(f,E-i.width/2*M):R=new Jw(b-i.height/2*S/_,g)),R},oje=function(i,a){let f={x:0,y:0};f.x=a.x+a.width/2,f.y=a.y+a.height/2;let g=hRt(i,f);f.x=i.x+i.width/2,f.y=i.y+i.height/2;let w=hRt(a,f);return{startPoint:g,endPoint:w}};const cje=function(i,a,f,g){let w=0;for(let v of a){w=w+1;let b=v.wrap&&Cs.wrap,E=aje(Cs);g.db.getC4Type()==="C4Dynamic"&&(v.label.text=w+": "+v.label.text);let _=n4(v.label.text,E);Xv("label",v,b,E,_),v.techn&&v.techn.text!==""&&(_=n4(v.techn.text,E),Xv("techn",v,b,E,_)),v.descr&&v.descr.text!==""&&(_=n4(v.descr.text,E),Xv("descr",v,b,E,_));let M=f(v.from),F=f(v.to),R=oje(M,F);v.startPoint=R.startPoint,v.endPoint=R.endPoint}s4.drawRels(i,a,Cs)};function fRt(i,a,f,g,w){let v=new cRt(w);v.data.widthLimit=f.data.widthLimit/Math.min(npt,g.length);for(let[b,E]of g.entries()){let S=0;E.image={width:0,height:0,Y:0},E.sprite&&(E.image.width=48,E.image.height=48,E.image.Y=S,S=E.image.Y+E.image.height);let _=E.wrap&&Cs.wrap,M=IY(Cs);if(M.fontSize=M.fontSize+2,M.fontWeight="bold",Xv("label",E,_,M,v.data.widthLimit),E.label.Y=S+8,S=E.label.Y+E.label.height,E.type&&E.type.text!==""){E.type.text="["+E.type.text+"]";let z=IY(Cs);Xv("type",E,_,z,v.data.widthLimit),E.type.Y=S+5,S=E.type.Y+E.type.height}if(E.descr&&E.descr.text!==""){let z=IY(Cs);z.fontSize=z.fontSize-2,Xv("descr",E,_,z,v.data.widthLimit),E.descr.Y=S+20,S=E.descr.Y+E.descr.height}if(b==0||b%npt===0){let z=f.data.startx+Cs.diagramMarginX,Y=f.data.stopy+Cs.diagramMarginY+S;v.setData(z,z,Y,Y)}else{let z=v.data.stopx!==v.data.startx?v.data.stopx+Cs.diagramMarginX:v.data.startx,Y=v.data.starty;v.setData(z,z,Y,Y)}v.name=E.alias;let F=w.db.getC4ShapeArray(E.alias),R=w.db.getC4ShapeKeys(E.alias);R.length>0&&lRt(v,i,F,R),a=E.alias;let B=w.db.getBoundarys(a);B.length>0&&fRt(i,a,v,B,w),E.alias!=="global"&&uRt(i,E,v),f.data.stopy=Math.max(v.data.stopy+Cs.c4ShapeMargin,f.data.stopy),f.data.stopx=Math.max(v.data.stopx+Cs.c4ShapeMargin,f.data.stopx),DY=Math.max(DY,f.data.stopx),MY=Math.max(MY,f.data.stopy)}}const dRt={drawPersonOrSystemArray:lRt,drawBoundary:uRt,setConf:rpt,draw:function(i,a,f,g){Cs=Re().c4;const w=Re().securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const b=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body");let E=g.db;g.db.setWrap(Cs.wrap),oRt=E.getC4ShapeInRow(),npt=E.getC4BoundaryInRow(),Kt.debug(`C:${JSON.stringify(Cs,null,2)}`);const S=w==="sandbox"?b.select(`[id="${a}"]`):Tr(`[id="${a}"]`);s4.insertComputerIcon(S),s4.insertDatabaseIcon(S),s4.insertClockIcon(S);let _=new cRt(g);_.setData(Cs.diagramMarginX,Cs.diagramMarginX,Cs.diagramMarginY,Cs.diagramMarginY),_.data.widthLimit=screen.availWidth,DY=Cs.diagramMarginX,MY=Cs.diagramMarginY;const M=g.db.getTitle();let F=g.db.getBoundarys("");fRt(S,"",_,F,g),s4.insertArrowHead(S),s4.insertArrowEnd(S),s4.insertArrowCrossHead(S),s4.insertArrowFilledHead(S),cje(S,g.db.getRels(),g.db.getC4Shape,g),_.data.stopx=DY,_.data.stopy=MY;const R=_.data;let z=R.stopy-R.starty+2*Cs.diagramMarginY;const nt=R.stopx-R.startx+2*Cs.diagramMarginX;M&&S.append("text").text(M).attr("x",(R.stopx-R.startx)/2-4*Cs.diagramMarginX).attr("y",R.starty+Cs.diagramMarginY),sg(S,z,nt,Cs.useMaxWidth);const ot=M?60:0;S.attr("viewBox",R.startx-Cs.diagramMarginX+" -"+(Cs.diagramMarginY+ot)+" "+nt+" "+(z+ot)),Kt.debug("models:",R)}},uje=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:xRe,db:Zgt,renderer:dRt,styles:i=>`.person { + stroke: ${i.personBorder}; + fill: ${i.personBkg}; + } +`,init:({c4:i,wrap:a})=>{dRt.setConf(i),Zgt.setWrap(a)}}},Symbol.toStringTag,{value:"Module"}));var ipt=function(){var i=function(Od,cs,As,to){for(As=As||{},to=Od.length;to--;As[Od[to]]=cs);return As},a=[1,4],f=[1,3],g=[1,5],w=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],v=[2,2],b=[1,13],E=[1,14],S=[1,15],_=[1,16],M=[1,23],F=[1,25],R=[1,26],B=[1,27],z=[1,49],Y=[1,48],nt=[1,29],ot=[1,30],ft=[1,31],wt=[1,32],mt=[1,33],ct=[1,44],rt=[1,46],it=[1,42],gt=[1,47],Q=[1,43],dt=[1,50],K=[1,45],yt=[1,51],V=[1,52],Ot=[1,34],It=[1,35],jt=[1,36],xt=[1,37],Ft=[1,57],Ct=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],kt=[1,61],Gt=[1,60],Fe=[1,62],Mt=[8,9,11,73,75],pn=[1,88],Ae=[1,93],ye=[1,92],tn=[1,89],sn=[1,85],be=[1,91],Ne=[1,87],Xt=[1,94],_e=[1,90],xe=[1,95],Mn=[1,86],ce=[8,9,10,11,73,75],Br=[8,9,10,11,44,73,75],we=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Fi=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],mi=[42,58,86,99,102,103,106,108,111,112,113],ga=[1,121],Ss=[1,120],za=[1,128],br=[1,142],An=[1,143],Nn=[1,144],Bn=[1,145],ke=[1,130],pe=[1,132],Je=[1,136],an=[1,137],xn=[1,138],qa=[1,139],xo=[1,140],ko=[1,141],va=[1,146],Ha=[1,147],ds=[1,126],Fu=[1,127],Zs=[1,134],d1=[1,129],I2=[1,133],ll=[1,131],Ic=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],wc=[1,149],Ea=[8,9,11],gu=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],ta=[1,169],fo=[1,165],mc=[1,166],ca=[1,170],ya=[1,167],ea=[1,168],Zl=[75,113,116],Uc=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],rm=[10,103],kh=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],Md=[1,235],w0=[1,233],Id=[1,237],m0=[1,231],hg=[1,232],Gi=[1,234],cn=[1,236],Nr=[1,238],Si=[1,255],vc=[8,9,11,103],Rc=[8,9,10,11,58,81,102,103,106,107,108,109],Eh={trace:function(){},yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(cs,As,to,Ci,pu,Le,iy){var $e=Le.length-1;switch(pu){case 2:this.$=[];break;case 3:(!Array.isArray(Le[$e])||Le[$e].length>0)&&Le[$e-1].push(Le[$e]),this.$=Le[$e-1];break;case 4:case 176:this.$=Le[$e];break;case 11:Ci.setDirection("TB"),this.$="TB";break;case 12:Ci.setDirection(Le[$e-1]),this.$=Le[$e-1];break;case 27:this.$=Le[$e-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=Ci.addSubGraph(Le[$e-6],Le[$e-1],Le[$e-4]);break;case 34:this.$=Ci.addSubGraph(Le[$e-3],Le[$e-1],Le[$e-3]);break;case 35:this.$=Ci.addSubGraph(void 0,Le[$e-1],void 0);break;case 37:this.$=Le[$e].trim(),Ci.setAccTitle(this.$);break;case 38:case 39:this.$=Le[$e].trim(),Ci.setAccDescription(this.$);break;case 43:Ci.addLink(Le[$e-2].stmt,Le[$e],Le[$e-1]),this.$={stmt:Le[$e],nodes:Le[$e].concat(Le[$e-2].nodes)};break;case 44:Ci.addLink(Le[$e-3].stmt,Le[$e-1],Le[$e-2]),this.$={stmt:Le[$e-1],nodes:Le[$e-1].concat(Le[$e-3].nodes)};break;case 45:this.$={stmt:Le[$e-1],nodes:Le[$e-1]};break;case 46:this.$={stmt:Le[$e],nodes:Le[$e]};break;case 47:this.$=[Le[$e]];break;case 48:this.$=Le[$e-4].concat(Le[$e]);break;case 49:this.$=Le[$e];break;case 50:this.$=Le[$e-2],Ci.setClass(Le[$e-2],Le[$e]);break;case 51:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"square");break;case 52:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"doublecircle");break;case 53:this.$=Le[$e-5],Ci.addVertex(Le[$e-5],Le[$e-2],"circle");break;case 54:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"ellipse");break;case 55:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"stadium");break;case 56:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"subroutine");break;case 57:this.$=Le[$e-7],Ci.addVertex(Le[$e-7],Le[$e-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Le[$e-5],Le[$e-3]]]));break;case 58:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"cylinder");break;case 59:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"round");break;case 60:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"diamond");break;case 61:this.$=Le[$e-5],Ci.addVertex(Le[$e-5],Le[$e-2],"hexagon");break;case 62:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"odd");break;case 63:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"trapezoid");break;case 64:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"inv_trapezoid");break;case 65:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"lean_right");break;case 66:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"lean_left");break;case 67:this.$=Le[$e],Ci.addVertex(Le[$e]);break;case 68:Le[$e-1].text=Le[$e],this.$=Le[$e-1];break;case 69:case 70:Le[$e-2].text=Le[$e-1],this.$=Le[$e-2];break;case 71:this.$=Le[$e];break;case 72:var g1=Ci.destructLink(Le[$e],Le[$e-2]);this.$={type:g1.type,stroke:g1.stroke,length:g1.length,text:Le[$e-1]};break;case 73:this.$={text:Le[$e],type:"text"};break;case 74:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 75:this.$={text:Le[$e],type:"string"};break;case 76:this.$={text:Le[$e],type:"markdown"};break;case 77:var g1=Ci.destructLink(Le[$e]);this.$={type:g1.type,stroke:g1.stroke,length:g1.length};break;case 78:this.$=Le[$e-1];break;case 79:this.$={text:Le[$e],type:"text"};break;case 80:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 81:this.$={text:Le[$e],type:"string"};break;case 82:case 97:this.$={text:Le[$e],type:"markdown"};break;case 94:this.$={text:Le[$e],type:"text"};break;case 95:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 96:this.$={text:Le[$e],type:"text"};break;case 98:this.$=Le[$e-4],Ci.addClass(Le[$e-2],Le[$e]);break;case 99:this.$=Le[$e-4],Ci.setClass(Le[$e-2],Le[$e]);break;case 100:case 108:this.$=Le[$e-1],Ci.setClickEvent(Le[$e-1],Le[$e]);break;case 101:case 109:this.$=Le[$e-3],Ci.setClickEvent(Le[$e-3],Le[$e-2]),Ci.setTooltip(Le[$e-3],Le[$e]);break;case 102:this.$=Le[$e-2],Ci.setClickEvent(Le[$e-2],Le[$e-1],Le[$e]);break;case 103:this.$=Le[$e-4],Ci.setClickEvent(Le[$e-4],Le[$e-3],Le[$e-2]),Ci.setTooltip(Le[$e-4],Le[$e]);break;case 104:this.$=Le[$e-2],Ci.setLink(Le[$e-2],Le[$e]);break;case 105:this.$=Le[$e-4],Ci.setLink(Le[$e-4],Le[$e-2]),Ci.setTooltip(Le[$e-4],Le[$e]);break;case 106:this.$=Le[$e-4],Ci.setLink(Le[$e-4],Le[$e-2],Le[$e]);break;case 107:this.$=Le[$e-6],Ci.setLink(Le[$e-6],Le[$e-4],Le[$e]),Ci.setTooltip(Le[$e-6],Le[$e-2]);break;case 110:this.$=Le[$e-1],Ci.setLink(Le[$e-1],Le[$e]);break;case 111:this.$=Le[$e-3],Ci.setLink(Le[$e-3],Le[$e-2]),Ci.setTooltip(Le[$e-3],Le[$e]);break;case 112:this.$=Le[$e-3],Ci.setLink(Le[$e-3],Le[$e-2],Le[$e]);break;case 113:this.$=Le[$e-5],Ci.setLink(Le[$e-5],Le[$e-4],Le[$e]),Ci.setTooltip(Le[$e-5],Le[$e-2]);break;case 114:this.$=Le[$e-4],Ci.addVertex(Le[$e-2],void 0,void 0,Le[$e]);break;case 115:this.$=Le[$e-4],Ci.updateLink([Le[$e-2]],Le[$e]);break;case 116:this.$=Le[$e-4],Ci.updateLink(Le[$e-2],Le[$e]);break;case 117:this.$=Le[$e-8],Ci.updateLinkInterpolate([Le[$e-6]],Le[$e-2]),Ci.updateLink([Le[$e-6]],Le[$e]);break;case 118:this.$=Le[$e-8],Ci.updateLinkInterpolate(Le[$e-6],Le[$e-2]),Ci.updateLink(Le[$e-6],Le[$e]);break;case 119:this.$=Le[$e-6],Ci.updateLinkInterpolate([Le[$e-4]],Le[$e]);break;case 120:this.$=Le[$e-6],Ci.updateLinkInterpolate(Le[$e-4],Le[$e]);break;case 121:case 123:this.$=[Le[$e]];break;case 122:case 124:Le[$e-2].push(Le[$e]),this.$=Le[$e-2];break;case 126:this.$=Le[$e-1]+Le[$e];break;case 174:this.$=Le[$e];break;case 175:this.$=Le[$e-1]+""+Le[$e];break;case 177:this.$=Le[$e-1]+""+Le[$e];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:a,10:f,12:g},{1:[3]},i(w,v,{5:6}),{4:7,9:a,10:f,12:g},{4:8,9:a,10:f,12:g},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},i(w,[2,9]),i(w,[2,10]),i(w,[2,11]),{8:[1,54],9:[1,55],10:Ft,15:53,18:56},i(Ct,[2,3]),i(Ct,[2,4]),i(Ct,[2,5]),i(Ct,[2,6]),i(Ct,[2,7]),i(Ct,[2,8]),{8:kt,9:Gt,11:Fe,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:kt,9:Gt,11:Fe,21:66},{8:kt,9:Gt,11:Fe,21:67},{8:kt,9:Gt,11:Fe,21:68},{8:kt,9:Gt,11:Fe,21:69},{8:kt,9:Gt,11:Fe,21:70},{8:kt,9:Gt,10:[1,71],11:Fe,21:72},i(Ct,[2,36]),{35:[1,73]},{37:[1,74]},i(Ct,[2,39]),i(Mt,[2,46],{18:75,10:Ft}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:pn,42:Ae,58:ye,77:[1,83],86:tn,92:[1,80],94:[1,81],98:82,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn,117:84},i(Ct,[2,178]),i(Ct,[2,179]),i(Ct,[2,180]),i(Ct,[2,181]),i(ce,[2,47]),i(ce,[2,49],{44:[1,96]}),i(Br,[2,67],{110:109,29:[1,97],42:z,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:Y,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:ct,99:rt,102:it,103:gt,106:Q,108:dt,111:K,112:yt,113:V}),i(we,[2,174]),i(we,[2,135]),i(we,[2,136]),i(we,[2,137]),i(we,[2,138]),i(we,[2,139]),i(we,[2,140]),i(we,[2,141]),i(we,[2,142]),i(we,[2,143]),i(we,[2,144]),i(we,[2,145]),i(w,[2,12]),i(w,[2,18]),i(w,[2,19]),{9:[1,110]},i(Fi,[2,26],{18:111,10:Ft}),i(Ct,[2,27]),{40:112,41:38,42:z,43:39,45:40,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},i(Ct,[2,40]),i(Ct,[2,41]),i(Ct,[2,42]),i(mi,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:ga,116:Ss},i([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),i(Ct,[2,28]),i(Ct,[2,29]),i(Ct,[2,30]),i(Ct,[2,31]),i(Ct,[2,32]),{10:za,12:br,14:An,27:Nn,28:122,32:Bn,42:ke,58:pe,73:Je,77:[1,124],78:[1,125],80:135,81:an,82:xn,83:qa,84:xo,85:ko,86:va,87:Ha,88:123,102:ds,106:Fu,108:Zs,111:d1,112:I2,113:ll},i(Ic,v,{5:148}),i(Ct,[2,37]),i(Ct,[2,38]),i(Mt,[2,45],{42:wc}),{42:z,45:150,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{99:[1,151],100:152,102:[1,153]},{42:z,45:154,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{42:z,45:155,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},i(Ea,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},i(Ea,[2,108],{117:160,10:[1,159],14:pn,42:Ae,58:ye,86:tn,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn}),i(Ea,[2,110],{10:[1,161]}),i(gu,[2,176]),i(gu,[2,163]),i(gu,[2,164]),i(gu,[2,165]),i(gu,[2,166]),i(gu,[2,167]),i(gu,[2,168]),i(gu,[2,169]),i(gu,[2,170]),i(gu,[2,171]),i(gu,[2,172]),i(gu,[2,173]),{42:z,45:162,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{30:163,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:171,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:173,48:[1,172],65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:174,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:175,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:176,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{106:[1,177]},{30:178,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:179,63:[1,180],65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:181,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:182,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:183,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},i(we,[2,175]),i(w,[2,20]),i(Fi,[2,25]),i(Mt,[2,43],{18:184,10:Ft}),i(mi,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{75:[1,188],76:189,113:ga,116:Ss},i(Zl,[2,73]),i(Zl,[2,75]),i(Zl,[2,76]),i(Zl,[2,161]),i(Zl,[2,162]),{8:kt,9:Gt,10:za,11:Fe,12:br,14:An,21:191,27:Nn,29:[1,190],32:Bn,42:ke,58:pe,73:Je,80:135,81:an,82:xn,83:qa,84:xo,85:ko,86:va,87:Ha,88:192,102:ds,106:Fu,108:Zs,111:d1,112:I2,113:ll},i(Uc,[2,94]),i(Uc,[2,96]),i(Uc,[2,97]),i(Uc,[2,150]),i(Uc,[2,151]),i(Uc,[2,152]),i(Uc,[2,153]),i(Uc,[2,154]),i(Uc,[2,155]),i(Uc,[2,156]),i(Uc,[2,157]),i(Uc,[2,158]),i(Uc,[2,159]),i(Uc,[2,160]),i(Uc,[2,83]),i(Uc,[2,84]),i(Uc,[2,85]),i(Uc,[2,86]),i(Uc,[2,87]),i(Uc,[2,88]),i(Uc,[2,89]),i(Uc,[2,90]),i(Uc,[2,91]),i(Uc,[2,92]),i(Uc,[2,93]),{6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,32:[1,193],33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},{10:Ft,18:194},{10:[1,195],42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:109,111:K,112:yt,113:V},{10:[1,196]},{10:[1,197],103:[1,198]},i(rm,[2,121]),{10:[1,199],42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:109,111:K,112:yt,113:V},{10:[1,200],42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:109,111:K,112:yt,113:V},{77:[1,201]},i(Ea,[2,102],{10:[1,202]}),i(Ea,[2,104],{10:[1,203]}),{77:[1,204]},i(gu,[2,177]),{77:[1,205],95:[1,206]},i(ce,[2,50],{110:109,42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,111:K,112:yt,113:V}),{31:[1,207],65:ta,79:208,113:ca,114:ya,115:ea},i(kh,[2,79]),i(kh,[2,81]),i(kh,[2,82]),i(kh,[2,146]),i(kh,[2,147]),i(kh,[2,148]),i(kh,[2,149]),{47:[1,209],65:ta,79:208,113:ca,114:ya,115:ea},{30:210,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{49:[1,211],65:ta,79:208,113:ca,114:ya,115:ea},{51:[1,212],65:ta,79:208,113:ca,114:ya,115:ea},{53:[1,213],65:ta,79:208,113:ca,114:ya,115:ea},{55:[1,214],65:ta,79:208,113:ca,114:ya,115:ea},{58:[1,215]},{62:[1,216],65:ta,79:208,113:ca,114:ya,115:ea},{64:[1,217],65:ta,79:208,113:ca,114:ya,115:ea},{30:218,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{31:[1,219],65:ta,79:208,113:ca,114:ya,115:ea},{65:ta,67:[1,220],69:[1,221],79:208,113:ca,114:ya,115:ea},{65:ta,67:[1,223],69:[1,222],79:208,113:ca,114:ya,115:ea},i(Mt,[2,44],{42:wc}),i(mi,[2,70]),i(mi,[2,69]),{60:[1,224],65:ta,79:208,113:ca,114:ya,115:ea},i(mi,[2,72]),i(Zl,[2,74]),{30:225,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},i(Ic,v,{5:226}),i(Uc,[2,95]),i(Ct,[2,35]),{41:227,42:z,43:39,45:40,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{10:Md,58:w0,81:Id,89:228,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{10:Md,58:w0,81:Id,89:239,101:[1,240],102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{10:Md,58:w0,81:Id,89:241,101:[1,242],102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{102:[1,243]},{10:Md,58:w0,81:Id,89:244,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{42:z,45:245,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},i(Ea,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},i(Ea,[2,109]),i(Ea,[2,111],{10:[1,249]}),i(Ea,[2,112]),i(Br,[2,51]),i(kh,[2,80]),i(Br,[2,52]),{49:[1,250],65:ta,79:208,113:ca,114:ya,115:ea},i(Br,[2,59]),i(Br,[2,54]),i(Br,[2,55]),i(Br,[2,56]),{106:[1,251]},i(Br,[2,58]),i(Br,[2,60]),{64:[1,252],65:ta,79:208,113:ca,114:ya,115:ea},i(Br,[2,62]),i(Br,[2,63]),i(Br,[2,65]),i(Br,[2,64]),i(Br,[2,66]),i([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:ta,79:208,113:ca,114:ya,115:ea},{6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,32:[1,254],33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},i(ce,[2,48]),i(Ea,[2,114],{103:Si}),i(vc,[2,123],{105:256,10:Md,58:w0,81:Id,102:m0,106:hg,107:Gi,108:cn,109:Nr}),i(Rc,[2,125]),i(Rc,[2,127]),i(Rc,[2,128]),i(Rc,[2,129]),i(Rc,[2,130]),i(Rc,[2,131]),i(Rc,[2,132]),i(Rc,[2,133]),i(Rc,[2,134]),i(Ea,[2,115],{103:Si}),{10:[1,257]},i(Ea,[2,116],{103:Si}),{10:[1,258]},i(rm,[2,122]),i(Ea,[2,98],{103:Si}),i(Ea,[2,99],{110:109,42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,111:K,112:yt,113:V}),i(Ea,[2,103]),i(Ea,[2,105],{10:[1,259]}),i(Ea,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:kt,9:Gt,11:Fe,21:264},i(Ct,[2,34]),{10:Md,58:w0,81:Id,102:m0,104:265,105:230,106:hg,107:Gi,108:cn,109:Nr},i(Rc,[2,126]),{14:pn,42:Ae,58:ye,86:tn,98:266,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn,117:84},{14:pn,42:Ae,58:ye,86:tn,98:267,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn,117:84},{95:[1,268]},i(Ea,[2,113]),i(Br,[2,53]),{30:269,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},i(Br,[2,61]),i(Ic,v,{5:270}),i(vc,[2,124],{105:256,10:Md,58:w0,81:Id,102:m0,106:hg,107:Gi,108:cn,109:Nr}),i(Ea,[2,119],{117:160,10:[1,271],14:pn,42:Ae,58:ye,86:tn,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn}),i(Ea,[2,120],{117:160,10:[1,272],14:pn,42:Ae,58:ye,86:tn,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn}),i(Ea,[2,107]),{31:[1,273],65:ta,79:208,113:ca,114:ya,115:ea},{6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,32:[1,274],33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},{10:Md,58:w0,81:Id,89:275,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{10:Md,58:w0,81:Id,89:276,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},i(Br,[2,57]),i(Ct,[2,33]),i(Ea,[2,117],{103:Si}),i(Ea,[2,118],{103:Si})],defaultActions:{},parseError:function(cs,As){if(As.recoverable)this.trace(cs);else{var to=new Error(cs);throw to.hash=As,to}},parse:function(cs){var As=this,to=[0],Ci=[],pu=[null],Le=[],iy=this.table,$e="",g1=0,ip=0,sy=2,D8=1,g4=Le.slice.call(arguments,1),th=Object.create(this.lexer),fg={yy:{}};for(var O2 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O2)&&(fg.yy[O2]=this.yy[O2]);th.setInput(cs,fg.yy),fg.yy.lexer=th,fg.yy.parser=this,typeof th.yylloc>"u"&&(th.yylloc={});var M8=th.yylloc;Le.push(M8);var N2=th.options&&th.options.ranges;typeof fg.yy.parseError=="function"?this.parseError=fg.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function p4(){var sp;return sp=Ci.pop()||th.lex()||D8,typeof sp!="number"&&(sp instanceof Array&&(Ci=sp,sp=Ci.pop()),sp=As.symbols_[sp]||sp),sp}for(var U1,Nd,Pd,I8,im={},Gx,hb,Kx,b4;;){if(Nd=to[to.length-1],this.defaultActions[Nd]?Pd=this.defaultActions[Nd]:((U1===null||typeof U1>"u")&&(U1=p4()),Pd=iy[Nd]&&iy[Nd][U1]),typeof Pd>"u"||!Pd.length||!Pd[0]){var ay="";b4=[];for(Gx in iy[Nd])this.terminals_[Gx]&&Gx>sy&&b4.push("'"+this.terminals_[Gx]+"'");th.showPosition?ay="Parse error on line "+(g1+1)+`: +`+th.showPosition()+` +Expecting `+b4.join(", ")+", got '"+(this.terminals_[U1]||U1)+"'":ay="Parse error on line "+(g1+1)+": Unexpected "+(U1==D8?"end of input":"'"+(this.terminals_[U1]||U1)+"'"),this.parseError(ay,{text:th.match,token:this.terminals_[U1]||U1,line:th.yylineno,loc:M8,expected:b4})}if(Pd[0]instanceof Array&&Pd.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Nd+", token: "+U1);switch(Pd[0]){case 1:to.push(U1),pu.push(th.yytext),Le.push(th.yylloc),to.push(Pd[1]),U1=null,ip=th.yyleng,$e=th.yytext,g1=th.yylineno,M8=th.yylloc;break;case 2:if(hb=this.productions_[Pd[1]][1],im.$=pu[pu.length-hb],im._$={first_line:Le[Le.length-(hb||1)].first_line,last_line:Le[Le.length-1].last_line,first_column:Le[Le.length-(hb||1)].first_column,last_column:Le[Le.length-1].last_column},N2&&(im._$.range=[Le[Le.length-(hb||1)].range[0],Le[Le.length-1].range[1]]),I8=this.performAction.apply(im,[$e,ip,g1,fg.yy,Pd[1],pu,Le].concat(g4)),typeof I8<"u")return I8;hb&&(to=to.slice(0,-1*hb*2),pu=pu.slice(0,-1*hb),Le=Le.slice(0,-1*hb)),to.push(this.productions_[Pd[1]][0]),pu.push(im.$),Le.push(im._$),Kx=iy[to[to.length-2]][to[to.length-1]],to.push(Kx);break;case 3:return!0}}return!0}},Zc=function(){var Od={EOF:1,parseError:function(As,to){if(this.yy.parser)this.yy.parser.parseError(As,to);else throw new Error(As)},setInput:function(cs,As){return this.yy=As||this.yy||{},this._input=cs,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var cs=this._input[0];this.yytext+=cs,this.yyleng++,this.offset++,this.match+=cs,this.matched+=cs;var As=cs.match(/(?:\r\n?|\n).*/g);return As?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),cs},unput:function(cs){var As=cs.length,to=cs.split(/(?:\r\n?|\n)/g);this._input=cs+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-As),this.offset-=As;var Ci=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),to.length-1&&(this.yylineno-=to.length-1);var pu=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:to?(to.length===Ci.length?this.yylloc.first_column:0)+Ci[Ci.length-to.length].length-to[0].length:this.yylloc.first_column-As},this.options.ranges&&(this.yylloc.range=[pu[0],pu[0]+this.yyleng-As]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(cs){this.unput(this.match.slice(cs))},pastInput:function(){var cs=this.matched.substr(0,this.matched.length-this.match.length);return(cs.length>20?"...":"")+cs.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var cs=this.match;return cs.length<20&&(cs+=this._input.substr(0,20-cs.length)),(cs.substr(0,20)+(cs.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var cs=this.pastInput(),As=new Array(cs.length+1).join("-");return cs+this.upcomingInput()+` +`+As+"^"},test_match:function(cs,As){var to,Ci,pu;if(this.options.backtrack_lexer&&(pu={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pu.yylloc.range=this.yylloc.range.slice(0))),Ci=cs[0].match(/(?:\r\n?|\n).*/g),Ci&&(this.yylineno+=Ci.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ci?Ci[Ci.length-1].length-Ci[Ci.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+cs[0].length},this.yytext+=cs[0],this.match+=cs[0],this.matches=cs,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(cs[0].length),this.matched+=cs[0],to=this.performAction.call(this,this.yy,this,As,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),to)return to;if(this._backtrack){for(var Le in pu)this[Le]=pu[Le];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var cs,As,to,Ci;this._more||(this.yytext="",this.match="");for(var pu=this._currentRules(),Le=0;LeAs[0].length)){if(As=to,Ci=Le,this.options.backtrack_lexer){if(cs=this.test_match(to,pu[Le]),cs!==!1)return cs;if(this._backtrack){As=!1;continue}else return!1}else if(!this.options.flex)break}return As?(cs=this.test_match(As,pu[Ci]),cs!==!1?cs:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var As=this.next();return As||this.lex()},begin:function(As){this.conditionStack.push(As)},popState:function(){var As=this.conditionStack.length-1;return As>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(As){return As=this.conditionStack.length-1-Math.abs(As||0),As>=0?this.conditionStack[As]:"INITIAL"},pushState:function(As){this.begin(As)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(As,to,Ci,pu){switch(Ci){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 92;case 11:this.popState();break;case 12:return 93;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("md_string");break;case 16:return"STR";case 17:this.popState();break;case 18:this.pushState("string");break;case 19:return 81;case 20:return 99;case 21:return 82;case 22:return 101;case 23:return 83;case 24:return 84;case 25:return 94;case 26:this.begin("click");break;case 27:this.popState();break;case 28:return 85;case 29:return As.lex.firstGraph()&&this.begin("dir"),12;case 30:return As.lex.firstGraph()&&this.begin("dir"),12;case 31:return As.lex.firstGraph()&&this.begin("dir"),12;case 32:return 27;case 33:return 32;case 34:return 95;case 35:return 95;case 36:return 95;case 37:return 95;case 38:return this.popState(),13;case 39:return this.popState(),14;case 40:return this.popState(),14;case 41:return this.popState(),14;case 42:return this.popState(),14;case 43:return this.popState(),14;case 44:return this.popState(),14;case 45:return this.popState(),14;case 46:return this.popState(),14;case 47:return this.popState(),14;case 48:return this.popState(),14;case 49:return 118;case 50:return 119;case 51:return 120;case 52:return 121;case 53:return 102;case 54:return 108;case 55:return 44;case 56:return 58;case 57:return 42;case 58:return 8;case 59:return 103;case 60:return 112;case 61:return this.popState(),75;case 62:return this.pushState("edgeText"),73;case 63:return 116;case 64:return this.popState(),75;case 65:return this.pushState("thickEdgeText"),73;case 66:return 116;case 67:return this.popState(),75;case 68:return this.pushState("dottedEdgeText"),73;case 69:return 116;case 70:return 75;case 71:return this.popState(),51;case 72:return"TEXT";case 73:return this.pushState("ellipseText"),50;case 74:return this.popState(),53;case 75:return this.pushState("text"),52;case 76:return this.popState(),55;case 77:return this.pushState("text"),54;case 78:return 56;case 79:return this.pushState("text"),65;case 80:return this.popState(),62;case 81:return this.pushState("text"),61;case 82:return this.popState(),47;case 83:return this.pushState("text"),46;case 84:return this.popState(),67;case 85:return this.popState(),69;case 86:return 114;case 87:return this.pushState("trapText"),66;case 88:return this.pushState("trapText"),68;case 89:return 115;case 90:return 65;case 91:return 87;case 92:return"SEP";case 93:return 86;case 94:return 112;case 95:return 108;case 96:return 42;case 97:return 106;case 98:return 111;case 99:return 113;case 100:return this.popState(),60;case 101:return this.pushState("text"),60;case 102:return this.popState(),49;case 103:return this.pushState("text"),48;case 104:return this.popState(),31;case 105:return this.pushState("text"),29;case 106:return this.popState(),64;case 107:return this.pushState("text"),63;case 108:return"TEXT";case 109:return"QUOTE";case 110:return 9;case 111:return 10;case 112:return 11}},rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{callbackargs:{rules:[11,12,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},callbackname:{rules:[8,9,10,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},href:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},click:{rules:[15,18,27,28,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dottedEdgeText:{rules:[15,18,67,69,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},thickEdgeText:{rules:[15,18,64,66,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},edgeText:{rules:[15,18,61,63,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},trapText:{rules:[15,18,70,73,75,77,81,83,84,85,86,87,88,101,103,105,107],inclusive:!1},ellipseText:{rules:[15,18,70,71,72,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},text:{rules:[15,18,70,73,74,75,76,77,80,81,82,83,87,88,100,101,102,103,104,105,106,107,108],inclusive:!1},vertex:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dir:{rules:[15,18,38,39,40,41,42,43,44,45,46,47,48,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr_multiline:{rules:[5,6,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr:{rules:[3,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_title:{rules:[1,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},md_string:{rules:[13,14,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},string:{rules:[15,16,17,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},INITIAL:{rules:[0,2,4,7,15,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,73,75,77,78,79,81,83,87,88,89,90,91,92,93,94,95,96,97,98,99,101,103,105,107,109,110,111,112],inclusive:!0}}};return Od}();Eh.lexer=Zc;function Qh(){this.yy={}}return Qh.prototype=Eh,Eh.Parser=Qh,new Qh}();ipt.parser=ipt;const spt=ipt,lje="flowchart-";let gRt=0,bD=Re(),jl={},Qv=[],wD={},Px=[],OY={},NY={},PY=0,apt=!0,Zw,FY,BY=[];const RY=i=>ei.sanitizeText(i,bD),zF=function(i){const a=Object.keys(jl);for(const f of a)if(jl[f].id===i)return jl[f].domId;return i},pRt=function(i,a,f,g,w,v,b={}){let E,S=i;S!==void 0&&S.trim().length!==0&&(jl[S]===void 0&&(jl[S]={id:S,labelType:"text",domId:lje+S+"-"+gRt,styles:[],classes:[]}),gRt++,a!==void 0?(bD=Re(),E=RY(a.text.trim()),jl[S].labelType=a.type,E[0]==='"'&&E[E.length-1]==='"'&&(E=E.substring(1,E.length-1)),jl[S].text=E):jl[S].text===void 0&&(jl[S].text=i),f!==void 0&&(jl[S].type=f),g!=null&&g.forEach(function(_){jl[S].styles.push(_)}),w!=null&&w.forEach(function(_){jl[S].classes.push(_)}),v!==void 0&&(jl[S].dir=v),jl[S].props===void 0?jl[S].props=b:b!==void 0&&Object.assign(jl[S].props,b))},bRt=function(i,a,f){const v={start:i,end:a,type:void 0,text:"",labelType:"text"};Kt.info("abc78 Got edge...",v);const b=f.text;if(b!==void 0&&(v.text=RY(b.text.trim()),v.text[0]==='"'&&v.text[v.text.length-1]==='"'&&(v.text=v.text.substring(1,v.text.length-1)),v.labelType=b.type),f!==void 0&&(v.type=f.type,v.stroke=f.stroke,v.length=f.length),(v==null?void 0:v.length)>10&&(v.length=10),Qv.length<(bD.maxEdges??500))Kt.info("abc78 pushing edge..."),Qv.push(v);else throw new Error(`Edge limit exceeded. ${Qv.length} edges found, but the limit is ${bD.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)},wRt=function(i,a,f){Kt.info("addLink (abc78)",i,a,f);let g,w;for(g=0;g=Qv.length)throw new Error(`The index ${f} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${Qv.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);f==="default"?Qv.defaultStyle=a:(uo.isSubstringInArray("fill",a)===-1&&a.push("fill:none"),Qv[f].style=a)})},yRt=function(i,a){i.split(",").forEach(function(f){wD[f]===void 0&&(wD[f]={id:f,styles:[],textStyles:[]}),a!=null&&a.forEach(function(g){if(g.match("color")){const w=g.replace("fill","bgFill").replace("color","fill");wD[f].textStyles.push(w)}wD[f].styles.push(g)})})},xRt=function(i){Zw=i,Zw.match(/.*/)&&(Zw="LR"),Zw.match(/.*v/)&&(Zw="TB"),Zw==="TD"&&(Zw="TB")},jY=function(i,a){i.split(",").forEach(function(f){let g=f;jl[g]!==void 0&&jl[g].classes.push(a),OY[g]!==void 0&&OY[g].classes.push(a)})},hje=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(NY[FY==="gen-1"?zF(f):f]=RY(a))})},fje=function(i,a,f){let g=zF(i);if(Re().securityLevel!=="loose"||a===void 0)return;let w=[];if(typeof f=="string"){w=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let v=0;v")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Tr(this).classed("hover",!1)})};BY.push(DRt);const MRt=function(i="gen-1"){jl={},wD={},Qv=[],BY=[DRt],Px=[],OY={},PY=0,NY={},apt=!0,FY=i,bD=Re(),ag()},IRt=i=>{FY=i||"gen-2"},ORt=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},NRt=function(i,a,f){let g=i.text.trim(),w=f.text;i===f&&f.text.match(/\s/)&&(g=void 0);function v(M){const F={boolean:{},number:{},string:{}},R=[];let B;return{nodeList:M.filter(function(Y){const nt=typeof Y;return Y.stmt&&Y.stmt==="dir"?(B=Y.value,!1):Y.trim()===""?!1:nt in F?F[nt].hasOwnProperty(Y)?!1:F[nt][Y]=!0:R.includes(Y)?!1:R.push(Y)}),dir:B}}let b=[];const{nodeList:E,dir:S}=v(b.concat.apply(b,a));if(b=E,FY==="gen-1")for(let M=0;M2e3)return;if(PRt[qF]=a,Px[a].id===i)return{result:!0,count:0};let g=0,w=1;for(;g=0){const b=FRt(i,v);if(b.result)return{result:!0,count:w+b.count};w=w+b.count}g=g+1}return{result:!1,count:w}},BRt=function(i){return PRt[i]},RRt=function(){qF=-1,Px.length>0&&FRt("none",Px.length-1)},jRt=function(){return Px},$Rt=()=>apt?(apt=!1,!0):!1,gje=i=>{let a=i.trim(),f="arrow_open";switch(a[0]){case"<":f="arrow_point",a=a.slice(1);break;case"x":f="arrow_cross",a=a.slice(1);break;case"o":f="arrow_circle",a=a.slice(1);break}let g="normal";return a.includes("=")&&(g="thick"),a.includes(".")&&(g="dotted"),{type:f,stroke:g}},pje=(i,a)=>{const f=a.length;let g=0;for(let w=0;w{const a=i.trim();let f=a.slice(0,-1),g="arrow_open";switch(a.slice(-1)){case"x":g="arrow_cross",a[0]==="x"&&(g="double_"+g,f=f.slice(1));break;case">":g="arrow_point",a[0]==="<"&&(g="double_"+g,f=f.slice(1));break;case"o":g="arrow_circle",a[0]==="o"&&(g="double_"+g,f=f.slice(1));break}let w="normal",v=f.length-1;f[0]==="="&&(w="thick"),f[0]==="~"&&(w="invisible");let b=pje(".",f);return b&&(w="dotted",v=b),{type:g,stroke:w,length:v}},zRt=(i,a)=>{const f=bje(i);let g;if(a){if(g=gje(a),g.stroke!==f.stroke)return{type:"INVALID",stroke:"INVALID"};if(g.type==="arrow_open")g.type=f.type;else{if(g.type!==f.type)return{type:"INVALID",stroke:"INVALID"};g.type="double_"+g.type}return g.type==="double_arrow"&&(g.type="double_arrow_point"),g.length=f.length,g}return f},qRt=(i,a)=>{let f=!1;return i.forEach(g=>{g.nodes.indexOf(a)>=0&&(f=!0)}),f},HRt=(i,a)=>{const f=[];return i.nodes.forEach((g,w)=>{qRt(a,g)||f.push(i.nodes[w])}),{nodes:f}},VRt={firstGraph:$Rt},A9={defaultConfig:()=>lBt.flowchart,setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,addVertex:pRt,lookUpDomId:zF,addLink:wRt,updateLinkInterpolate:mRt,updateLink:vRt,addClass:yRt,setDirection:xRt,setClass:jY,setTooltip:hje,getTooltip:ERt,setClickEvent:TRt,setLink:kRt,bindFunctions:CRt,getDirection:SRt,getVertices:_Rt,getEdges:ARt,getClasses:LRt,clear:MRt,setGen:IRt,defaultStyle:ORt,addSubGraph:NRt,getDepthFirstPos:BRt,indexNodes:RRt,getSubGraphs:jRt,destructLink:zRt,lex:VRt,exists:qRt,makeUniq:HRt,setDiagramTitle:S2,getDiagramTitle:Zg},wje=Object.freeze(Object.defineProperty({__proto__:null,addClass:yRt,addLink:wRt,addSingleLink:bRt,addSubGraph:NRt,addVertex:pRt,bindFunctions:CRt,clear:MRt,default:A9,defaultStyle:ORt,destructLink:zRt,firstGraph:$Rt,getClasses:LRt,getDepthFirstPos:BRt,getDirection:SRt,getEdges:ARt,getSubGraphs:jRt,getTooltip:ERt,getVertices:_Rt,indexNodes:RRt,lex:VRt,lookUpDomId:zF,setClass:jY,setClickEvent:TRt,setDirection:xRt,setGen:IRt,setLink:kRt,updateLink:vRt,updateLinkInterpolate:mRt},Symbol.toStringTag,{value:"Module"}));var mje="[object Symbol]";function L9(i){return typeof i=="symbol"||e4(i)&&b9(i)==mje}function mD(i,a){for(var f=-1,g=i==null?0:i.length,w=Array(g);++f-1}function A2(i){return p8(i)?wFt(i):xBt(i)}var Fje=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bje=/^\w*$/;function opt(i,a){if(s1(i))return!1;var f=typeof i;return f=="number"||f=="symbol"||f=="boolean"||i==null||L9(i)?!0:Bje.test(i)||!Fje.test(i)||a!=null&&i in Object(a)}var Rje=500;function jje(i){var a=eD(i,function(g){return f.size===Rje&&f.clear(),g}),f=a.cache;return a}var $je=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zje=/\\(\\)?/g,qje=jje(function(i){var a=[];return i.charCodeAt(0)===46&&a.push(""),i.replace($je,function(f,g,w,v){a.push(w?v.replace(zje,"$1"):g||f)}),a});const Hje=qje;function JRt(i){return i==null?"":KRt(i)}function zY(i,a){return s1(i)?i:opt(i,a)?[i]:Hje(JRt(i))}var Vje=1/0;function HF(i){if(typeof i=="string"||L9(i))return i;var a=i+"";return a=="0"&&1/i==-Vje?"-0":a}function qY(i,a){a=zY(a,i);for(var f=0,g=a.length;i!=null&&f0&&f(E)?a>1?HY(E,a-1,f,g,w):cpt(w,E):g||(w[w.length]=E)}return w}function vD(i){var a=i==null?0:i.length;return a?HY(i,1):[]}function Kje(i){return xFt(yFt(i,void 0,vD),i+"")}function Wje(i,a,f,g){var w=-1,v=i==null?0:i.length;for(g&&v&&(f=i[++w]);++wE))return!1;var _=v.get(i),M=v.get(a);if(_&&M)return _==a&&M==i;var F=-1,R=!0,B=f&xze?new UF:void 0;for(v.set(i,a),v.set(a,i);++F2?a[2]:void 0;for(w&&DF(a[0],a[1],w)&&(g=1);++f-1?w[v?a[b]:b]:void 0}}var lqe=Math.max;function hqe(i,a,f){var g=i==null?0:i.length;if(!g)return-1;var w=f==null?0:Dje(f);return w<0&&(w=lqe(g+w,0)),QRt(i,k8(a),w)}var fqe=uqe(hqe);const bpt=fqe;function Cjt(i,a){var f=-1,g=p8(i)?Array(i.length):[];return UY(i,function(w,v,b){g[++f]=a(w,v,b)}),g}function u1(i,a){var f=s1(i)?mD:Cjt;return f(i,k8(a))}function dqe(i,a){return i==null?i:wgt(i,ppt(a),y9)}function gqe(i,a){return i&&gpt(i,ppt(a))}function pqe(i,a){return i>a}var bqe=Object.prototype,wqe=bqe.hasOwnProperty;function mqe(i,a){return i!=null&&wqe.call(i,a)}function lo(i,a){return i!=null&&xjt(i,a,mqe)}function vqe(i,a){return mD(a,function(f){return i[f]})}function Bx(i){return i==null?[]:vqe(i,A2(i))}function Tf(i){return i===void 0}function Sjt(i,a){return ia||v&&b&&S&&!E&&!_||g&&b&&S||!f&&S||!w)return 1;if(!g&&!v&&!_&&i=E)return S;var _=f[g];return S*(_=="desc"?-1:1)}}return i.index-a.index}function Cqe(i,a,f){a.length?a=mD(a,function(v){return s1(v)?function(b){return qY(b,v.length===1?v[0]:v)}:v}):a=[x9];var g=-1;a=mD(a,iY(k8));var w=Cjt(i,function(v,b,E){var S=mD(a,function(_){return _(v)});return{criteria:S,index:++g,value:v}});return kqe(w,function(v,b){return Tqe(v,b,f)})}function Sqe(i,a){return xqe(i,a,function(f,g){return kjt(i,g)})}var _qe=Kje(function(i,a){return i==null?{}:Sqe(i,a)});const KF=_qe;var Aqe=Math.ceil,Lqe=Math.max;function Dqe(i,a,f,g){for(var w=-1,v=Lqe(Aqe((a-i)/(f||1)),0),b=Array(v);v--;)b[g?v:++w]=i,i+=f;return b}function Mqe(i){return function(a,f,g){return g&&typeof g!="number"&&DF(a,f,g)&&(f=g=void 0),a=$Y(a),f===void 0?(f=a,a=0):f=$Y(f),g=g===void 0?a1&&DF(i,a[0],a[1])?a=[]:f>2&&DF(a[0],a[1],a[2])&&(a=[a[0]]),Cqe(i,HY(a,1),[])});const YF=Nqe;var Pqe=1/0,Fqe=lD&&1/hpt(new lD([,-0]))[1]==Pqe?function(i){return new lD(i)}:Mje;const Bqe=Fqe;var Rqe=200;function jqe(i,a,f){var g=-1,w=Pje,v=i.length,b=!0,E=[],S=E;if(f)b=!1,w=oqe;else if(v>=Rqe){var _=a?null:Bqe(i);if(_)return hpt(_);b=!1,w=djt,S=new UF}else S=a?[]:E;t:for(;++g1?w.setNode(v,f):w.setNode(v)}),this}setNode(a,f){return lo(this._nodes,a)?(arguments.length>1&&(this._nodes[a]=f),this):(this._nodes[a]=arguments.length>1?f:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]=I9,this._children[a]={},this._children[I9][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount,this)}node(a){return this._nodes[a]}hasNode(a){return lo(this._nodes,a)}removeNode(a){var f=this;if(lo(this._nodes,a)){var g=function(w){f.removeEdge(f._edgeObjs[w])};delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],yr(this.children(a),function(w){f.setParent(w)}),delete this._children[a]),yr(A2(this._in[a]),g),delete this._in[a],delete this._preds[a],yr(A2(this._out[a]),g),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,f){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(Tf(f))f=I9;else{f+="";for(var g=f;!Tf(g);g=this.parent(g))if(g===a)throw new Error("Setting "+f+" as parent of "+a+" would create a cycle");this.setNode(f)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=f,this._children[f][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var f=this._parent[a];if(f!==I9)return f}}children(a){if(Tf(a)&&(a=I9),this._isCompound){var f=this._children[a];if(f)return A2(f)}else{if(a===I9)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var f=this._preds[a];if(f)return A2(f)}successors(a){var f=this._sucs[a];if(f)return A2(f)}neighbors(a){var f=this.predecessors(a);if(f)return zqe(f,this.successors(a))}isLeaf(a){var f;return this.isDirected()?f=this.successors(a):f=this.neighbors(a),f.length===0}filterNodes(a){var f=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});f.setGraph(this.graph());var g=this;yr(this._nodes,function(b,E){a(E)&&f.setNode(E,b)}),yr(this._edgeObjs,function(b){f.hasNode(b.v)&&f.hasNode(b.w)&&f.setEdge(b,g.edge(b))});var w={};function v(b){var E=g.parent(b);return E===void 0||f.hasNode(E)?(w[b]=E,E):E in w?w[E]:v(E)}return this._isCompound&&yr(f.nodes(),function(b){f.setParent(b,v(b))}),f}setDefaultEdgeLabel(a){return ZL(a)||(a=sD(a)),this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return Bx(this._edgeObjs)}setPath(a,f){var g=this,w=arguments;return WF(a,function(v,b){return w.length>1?g.setEdge(v,b,f):g.setEdge(v,b),b}),this}setEdge(){var a,f,g,w,v=!1,b=arguments[0];typeof b=="object"&&b!==null&&"v"in b?(a=b.v,f=b.w,g=b.name,arguments.length===2&&(w=arguments[1],v=!0)):(a=b,f=arguments[1],g=arguments[3],arguments.length>2&&(w=arguments[2],v=!0)),a=""+a,f=""+f,Tf(g)||(g=""+g);var E=XF(this._isDirected,a,f,g);if(lo(this._edgeLabels,E))return v&&(this._edgeLabels[E]=w),this;if(!Tf(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(f),this._edgeLabels[E]=v?w:this._defaultEdgeLabelFn(a,f,g);var S=Gqe(this._isDirected,a,f,g);return a=S.v,f=S.w,Object.freeze(S),this._edgeObjs[E]=S,Ajt(this._preds[f],a),Ajt(this._sucs[a],f),this._in[f][E]=S,this._out[a][E]=S,this._edgeCount++,this}edge(a,f,g){var w=arguments.length===1?vpt(this._isDirected,arguments[0]):XF(this._isDirected,a,f,g);return this._edgeLabels[w]}hasEdge(a,f,g){var w=arguments.length===1?vpt(this._isDirected,arguments[0]):XF(this._isDirected,a,f,g);return lo(this._edgeLabels,w)}removeEdge(a,f,g){var w=arguments.length===1?vpt(this._isDirected,arguments[0]):XF(this._isDirected,a,f,g),v=this._edgeObjs[w];return v&&(a=v.v,f=v.w,delete this._edgeLabels[w],delete this._edgeObjs[w],Ljt(this._preds[f],a),Ljt(this._sucs[a],f),delete this._in[f][w],delete this._out[a][w],this._edgeCount--),this}inEdges(a,f){var g=this._in[a];if(g){var w=Bx(g);return f?Fx(w,function(v){return v.v===f}):w}}outEdges(a,f){var g=this._out[a];if(g){var w=Bx(g);return f?Fx(w,function(v){return v.w===f}):w}}nodeEdges(a,f){var g=this.inEdges(a,f);if(g)return g.concat(this.outEdges(a,f))}}l1.prototype._nodeCount=0,l1.prototype._edgeCount=0;function Ajt(i,a){i[a]?i[a]++:i[a]=1}function Ljt(i,a){--i[a]||delete i[a]}function XF(i,a,f,g){var w=""+a,v=""+f;if(!i&&w>v){var b=w;w=v,v=b}return w+_jt+v+_jt+(Tf(g)?Uqe:g)}function Gqe(i,a,f,g){var w=""+a,v=""+f;if(!i&&w>v){var b=w;w=v,v=b}var E={v:w,w:v};return g&&(E.name=g),E}function vpt(i,a){return XF(i,a.v,a.w,a.name)}class Kqe{constructor(){var a={};a._next=a._prev=a,this._sentinel=a}dequeue(){var a=this._sentinel,f=a._prev;if(f!==a)return Djt(f),f}enqueue(a){var f=this._sentinel;a._prev&&a._next&&Djt(a),a._next=f._next,f._next._prev=a,f._next=a,a._prev=f}toString(){for(var a=[],f=this._sentinel,g=f._prev;g!==f;)a.push(JSON.stringify(g,Wqe)),g=g._prev;return"["+a.join(", ")+"]"}}function Djt(i){i._prev._next=i._next,i._next._prev=i._prev,delete i._next,delete i._prev}function Wqe(i,a){if(i!=="_next"&&i!=="_prev")return a}var Yqe=sD(1);function Xqe(i,a){if(i.nodeCount()<=1)return[];var f=Jqe(i,a||Yqe),g=Qqe(f.graph,f.buckets,f.zeroIdx);return vD(u1(g,function(w){return i.outEdges(w.v,w.w)}))}function Qqe(i,a,f){for(var g=[],w=a[a.length-1],v=a[0],b;i.nodeCount();){for(;b=v.dequeue();)ypt(i,a,f,b);for(;b=w.dequeue();)ypt(i,a,f,b);if(i.nodeCount()){for(var E=a.length-2;E>0;--E)if(b=a[E].dequeue(),b){g=g.concat(ypt(i,a,f,b,!0));break}}}return g}function ypt(i,a,f,g,w){var v=w?[]:void 0;return yr(i.inEdges(g.v),function(b){var E=i.edge(b),S=i.node(b.v);w&&v.push({v:b.v,w:b.w}),S.out-=E,xpt(a,f,S)}),yr(i.outEdges(g.v),function(b){var E=i.edge(b),S=b.w,_=i.node(S);_.in-=E,xpt(a,f,_)}),i.removeNode(g.v),v}function Jqe(i,a){var f=new l1,g=0,w=0;yr(i.nodes(),function(E){f.setNode(E,{v:E,in:0,out:0})}),yr(i.edges(),function(E){var S=f.edge(E.v,E.w)||0,_=a(E),M=S+_;f.setEdge(E.v,E.w,M),w=Math.max(w,f.node(E.v).out+=_),g=Math.max(g,f.node(E.w).in+=_)});var v=M9(w+g+3).map(function(){return new Kqe}),b=g+1;return yr(f.nodes(),function(E){xpt(v,b,f.node(E))}),{graph:f,buckets:v,zeroIdx:b}}function xpt(i,a,f){f.out?f.in?i[f.out-f.in+a].enqueue(f):i[i.length-1].enqueue(f):i[0].enqueue(f)}function Zqe(i){var a=i.graph().acyclicer==="greedy"?Xqe(i,f(i)):tHe(i);yr(a,function(g){var w=i.edge(g);i.removeEdge(g),w.forwardName=g.name,w.reversed=!0,i.setEdge(g.w,g.v,w,WY("rev"))});function f(g){return function(w){return g.edge(w).weight}}}function tHe(i){var a=[],f={},g={};function w(v){lo(g,v)||(g[v]=!0,f[v]=!0,yr(i.outEdges(v),function(b){lo(f,b.w)?a.push(b):w(b.w)}),delete f[v])}return yr(i.nodes(),w),a}function eHe(i){yr(i.edges(),function(a){var f=i.edge(a);if(f.reversed){i.removeEdge(a);var g=f.forwardName;delete f.reversed,delete f.forwardName,i.setEdge(a.w,a.v,f,g)}})}function xD(i,a,f,g){var w;do w=WY(g);while(i.hasNode(w));return f.dummy=a,i.setNode(w,f),w}function nHe(i){var a=new l1().setGraph(i.graph());return yr(i.nodes(),function(f){a.setNode(f,i.node(f))}),yr(i.edges(),function(f){var g=a.edge(f.v,f.w)||{weight:0,minlen:1},w=i.edge(f);a.setEdge(f.v,f.w,{weight:g.weight+w.weight,minlen:Math.max(g.minlen,w.minlen)})}),a}function Mjt(i){var a=new l1({multigraph:i.isMultigraph()}).setGraph(i.graph());return yr(i.nodes(),function(f){i.children(f).length||a.setNode(f,i.node(f))}),yr(i.edges(),function(f){a.setEdge(f,i.edge(f))}),a}function Ijt(i,a){var f=i.x,g=i.y,w=a.x-f,v=a.y-g,b=i.width/2,E=i.height/2;if(!w&&!v)throw new Error("Not possible to find intersection inside of the rectangle");var S,_;return Math.abs(v)*b>Math.abs(w)*E?(v<0&&(E=-E),S=E*w/v,_=E):(w<0&&(b=-b),S=b,_=b*v/w),{x:f+S,y:g+_}}function YY(i){var a=u1(M9(Njt(i)+1),function(){return[]});return yr(i.nodes(),function(f){var g=i.node(f),w=g.rank;Tf(w)||(a[w][g.order]=f)}),a}function rHe(i){var a=GF(u1(i.nodes(),function(f){return i.node(f).rank}));yr(i.nodes(),function(f){var g=i.node(f);lo(g,"rank")&&(g.rank-=a)})}function iHe(i){var a=GF(u1(i.nodes(),function(v){return i.node(v).rank})),f=[];yr(i.nodes(),function(v){var b=i.node(v).rank-a;f[b]||(f[b]=[]),f[b].push(v)});var g=0,w=i.graph().nodeRankFactor;yr(f,function(v,b){Tf(v)&&b%w!==0?--g:g&&yr(v,function(E){i.node(E).rank+=g})})}function Ojt(i,a,f,g){var w={width:0,height:0};return arguments.length>=4&&(w.rank=f,w.order=g),xD(i,"border",w,a)}function Njt(i){return D9(u1(i.nodes(),function(a){var f=i.node(a).rank;if(!Tf(f))return f}))}function sHe(i,a){var f={lhs:[],rhs:[]};return yr(i,function(g){a(g)?f.lhs.push(g):f.rhs.push(g)}),f}function aHe(i,a){var f=Ejt();try{return a()}finally{console.log(i+" time: "+(Ejt()-f)+"ms")}}function oHe(i,a){return a()}function cHe(i){function a(f){var g=i.children(f),w=i.node(f);if(g.length&&yr(g,a),lo(w,"minRank")){w.borderLeft=[],w.borderRight=[];for(var v=w.minRank,b=w.maxRank+1;vb.lim&&(E=b,S=!0);var _=Fx(a.edges(),function(M){return S===Gjt(i,i.node(M.v),E)&&S!==Gjt(i,i.node(M.w),E)});return mpt(_,function(M){return QF(a,M)})}function Ujt(i,a,f,g){var w=f.v,v=f.w;i.removeEdge(w,v),i.setEdge(g.v,g.w,{}),Spt(i),Cpt(i,a),EHe(i,a)}function EHe(i,a){var f=bpt(i.nodes(),function(w){return!a.node(w).parent}),g=xHe(i,f);g=g.slice(1),yr(g,function(w){var v=i.node(w).parent,b=a.edge(w,v),E=!1;b||(b=a.edge(v,w),E=!0),a.node(w).rank=a.node(v).rank+(E?b.minlen:-b.minlen)})}function THe(i,a,f){return i.hasEdge(a,f)}function Gjt(i,a,f){return f.low<=a.lim&&a.lim<=f.lim}function CHe(i){switch(i.graph().ranker){case"network-simplex":Kjt(i);break;case"tight-tree":_He(i);break;case"longest-path":SHe(i);break;default:Kjt(i)}}var SHe=Tpt;function _He(i){Tpt(i),Rjt(i)}function Kjt(i){O9(i)}function AHe(i){var a=xD(i,"root",{},"_root"),f=LHe(i),g=D9(Bx(f))-1,w=2*g+1;i.graph().nestingRoot=a,yr(i.edges(),function(b){i.edge(b).minlen*=w});var v=DHe(i)+1;yr(i.children(),function(b){Wjt(i,a,w,v,g,f,b)}),i.graph().nodeRankFactor=w}function Wjt(i,a,f,g,w,v,b){var E=i.children(b);if(!E.length){b!==a&&i.setEdge(a,b,{weight:0,minlen:f});return}var S=Ojt(i,"_bt"),_=Ojt(i,"_bb"),M=i.node(b);i.setParent(S,b),M.borderTop=S,i.setParent(_,b),M.borderBottom=_,yr(E,function(F){Wjt(i,a,f,g,w,v,F);var R=i.node(F),B=R.borderTop?R.borderTop:F,z=R.borderBottom?R.borderBottom:F,Y=R.borderTop?g:2*g,nt=B!==z?1:w-v[b]+1;i.setEdge(S,B,{weight:Y,minlen:nt,nestingEdge:!0}),i.setEdge(z,_,{weight:Y,minlen:nt,nestingEdge:!0})}),i.parent(b)||i.setEdge(a,S,{weight:0,minlen:w+v[b]})}function LHe(i){var a={};function f(g,w){var v=i.children(g);v&&v.length&&yr(v,function(b){f(b,w+1)}),a[g]=w}return yr(i.children(),function(g){f(g,1)}),a}function DHe(i){return WF(i.edges(),function(a,f){return a+i.edge(f).weight},0)}function MHe(i){var a=i.graph();i.removeNode(a.nestingRoot),delete a.nestingRoot,yr(i.edges(),function(f){var g=i.edge(f);g.nestingEdge&&i.removeEdge(f)})}function IHe(i,a,f){var g={},w;yr(f,function(v){for(var b=i.parent(v),E,S;b;){if(E=i.parent(b),E?(S=g[E],g[E]=b):(S=w,w=b),S&&S!==b){a.setEdge(S,b);return}b=E}})}function OHe(i,a,f){var g=NHe(i),w=new l1({compound:!0}).setGraph({root:g}).setDefaultNodeLabel(function(v){return i.node(v)});return yr(i.nodes(),function(v){var b=i.node(v),E=i.parent(v);(b.rank===a||b.minRank<=a&&a<=b.maxRank)&&(w.setNode(v),w.setParent(v,E||g),yr(i[f](v),function(S){var _=S.v===v?S.w:S.v,M=w.edge(_,v),F=Tf(M)?0:M.weight;w.setEdge(_,v,{weight:i.edge(S).weight+F})}),lo(b,"minRank")&&w.setNode(v,{borderLeft:b.borderLeft[a],borderRight:b.borderRight[a]}))}),w}function NHe(i){for(var a;i.hasNode(a=WY("_root")););return a}function PHe(i,a){for(var f=0,g=1;g0;)M%2&&(F+=E[M+1]),M=M-1>>1,E[M]+=_.weight;S+=_.weight*F})),S}function BHe(i){var a={},f=Fx(i.nodes(),function(E){return!i.children(E).length}),g=D9(u1(f,function(E){return i.node(E).rank})),w=u1(M9(g+1),function(){return[]});function v(E){if(!lo(a,E)){a[E]=!0;var S=i.node(E);w[S.rank].push(E),yr(i.successors(E),v)}}var b=YF(f,function(E){return i.node(E).rank});return yr(b,v),w}function RHe(i,a){return u1(a,function(f){var g=i.inEdges(f);if(g.length){var w=WF(g,function(v,b){var E=i.edge(b),S=i.node(b.v);return{sum:v.sum+E.weight*S.order,weight:v.weight+E.weight}},{sum:0,weight:0});return{v:f,barycenter:w.sum/w.weight,weight:w.weight}}else return{v:f}})}function jHe(i,a){var f={};yr(i,function(w,v){var b=f[w.v]={indegree:0,in:[],out:[],vs:[w.v],i:v};Tf(w.barycenter)||(b.barycenter=w.barycenter,b.weight=w.weight)}),yr(a.edges(),function(w){var v=f[w.v],b=f[w.w];!Tf(v)&&!Tf(b)&&(b.indegree++,v.out.push(f[w.w]))});var g=Fx(f,function(w){return!w.indegree});return $He(g)}function $He(i){var a=[];function f(v){return function(b){b.merged||(Tf(b.barycenter)||Tf(v.barycenter)||b.barycenter>=v.barycenter)&&zHe(v,b)}}function g(v){return function(b){b.in.push(v),--b.indegree===0&&i.push(b)}}for(;i.length;){var w=i.pop();a.push(w),yr(w.in.reverse(),f(w)),yr(w.out,g(w))}return u1(Fx(a,function(v){return!v.merged}),function(v){return KF(v,["vs","i","barycenter","weight"])})}function zHe(i,a){var f=0,g=0;i.weight&&(f+=i.barycenter*i.weight,g+=i.weight),a.weight&&(f+=a.barycenter*a.weight,g+=a.weight),i.vs=a.vs.concat(i.vs),i.barycenter=f/g,i.weight=g,i.i=Math.min(a.i,i.i),a.merged=!0}function qHe(i,a){var f=sHe(i,function(M){return lo(M,"barycenter")}),g=f.lhs,w=YF(f.rhs,function(M){return-M.i}),v=[],b=0,E=0,S=0;g.sort(HHe(!!a)),S=Yjt(v,w,S),yr(g,function(M){S+=M.vs.length,v.push(M.vs),b+=M.barycenter*M.weight,E+=M.weight,S=Yjt(v,w,S)});var _={vs:vD(v)};return E&&(_.barycenter=b/E,_.weight=E),_}function Yjt(i,a,f){for(var g;a.length&&(g=GY(a)).i<=f;)a.pop(),i.push(g.vs),f++;return f}function HHe(i){return function(a,f){return a.barycenterf.barycenter?1:i?f.i-a.i:a.i-f.i}}function Xjt(i,a,f,g){var w=i.children(a),v=i.node(a),b=v?v.borderLeft:void 0,E=v?v.borderRight:void 0,S={};b&&(w=Fx(w,function(z){return z!==b&&z!==E}));var _=RHe(i,w);yr(_,function(z){if(i.children(z.v).length){var Y=Xjt(i,z.v,f,g);S[z.v]=Y,lo(Y,"barycenter")&&UHe(z,Y)}});var M=jHe(_,f);VHe(M,S);var F=qHe(M,g);if(b&&(F.vs=vD([b,F.vs,E]),i.predecessors(b).length)){var R=i.node(i.predecessors(b)[0]),B=i.node(i.predecessors(E)[0]);lo(F,"barycenter")||(F.barycenter=0,F.weight=0),F.barycenter=(F.barycenter*F.weight+R.order+B.order)/(F.weight+2),F.weight+=2}return F}function VHe(i,a){yr(i,function(f){f.vs=vD(f.vs.map(function(g){return a[g]?a[g].vs:g}))})}function UHe(i,a){Tf(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight)}function GHe(i){var a=Njt(i),f=Qjt(i,M9(1,a+1),"inEdges"),g=Qjt(i,M9(a-1,-1,-1),"outEdges"),w=BHe(i);Jjt(i,w);for(var v=Number.POSITIVE_INFINITY,b,E=0,S=0;S<4;++E,++S){KHe(E%2?f:g,E%4>=2),w=YY(i);var _=PHe(i,w);_b||E>a[S].lim));for(_=S,S=g;(S=i.parent(S))!==_;)v.push(S);return{path:w.concat(v.reverse()),lca:_}}function XHe(i){var a={},f=0;function g(w){var v=f;yr(i.children(w),g),a[w]={low:v,lim:f++}}return yr(i.children(),g),a}function QHe(i,a){var f={};function g(w,v){var b=0,E=0,S=w.length,_=GY(v);return yr(v,function(M,F){var R=ZHe(i,M),B=R?i.node(R).order:S;(R||M===_)&&(yr(v.slice(E,F+1),function(z){yr(i.predecessors(z),function(Y){var nt=i.node(Y),ot=nt.order;(ot_)&&Zjt(f,R,M)})})}function w(v,b){var E=-1,S,_=0;return yr(b,function(M,F){if(i.node(M).dummy==="border"){var R=i.predecessors(M);R.length&&(S=i.node(R[0]).order,g(b,_,F,E,S),_=F,E=S)}g(b,_,b.length,S,v.length)}),b}return WF(a,w),f}function ZHe(i,a){if(i.node(a).dummy)return bpt(i.predecessors(a),function(f){return i.node(f).dummy})}function Zjt(i,a,f){if(a>f){var g=a;a=f,f=g}var w=i[a];w||(i[a]=w={}),w[f]=!0}function tVe(i,a,f){if(a>f){var g=a;a=f,f=g}return lo(i[a],f)}function eVe(i,a,f,g){var w={},v={},b={};return yr(a,function(E){yr(E,function(S,_){w[S]=S,v[S]=S,b[S]=_})}),yr(a,function(E){var S=-1;yr(E,function(_){var M=g(_);if(M.length){M=YF(M,function(Y){return b[Y]});for(var F=(M.length-1)/2,R=Math.floor(F),B=Math.ceil(F);R<=B;++R){var z=M[R];v[_]===_&&S0}function o4(i,a,f){var g=i.x,w=i.y,v=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;a.forEach(function(z){b=Math.min(b,z.x),E=Math.min(E,z.y)});for(var S=g-i.width/2-b,_=w-i.height/2-E,M=0;M1&&v.sort(function(z,Y){var nt=z.x-f.x,ot=z.y-f.y,ft=Math.sqrt(nt*nt+ot*ot),wt=Y.x-f.x,mt=Y.y-f.y,ct=Math.sqrt(wt*wt+mt*mt);return ftMath.abs(w)*E?(v<0&&(E=-E),S=v===0?0:E*w/v,_=E):(w<0&&(b=-b),S=b,_=w===0?0:b*v/w),{x:f+S,y:g+_}}var Rpt={rect:iUe,ellipse:sUe,circle:aUe,diamond:oUe};function rUe(i){Rpt=i}function iUe(i,a,f){var g=i.insert("rect",":first-child").attr("rx",f.rx).attr("ry",f.ry).attr("x",-a.width/2).attr("y",-a.height/2).attr("width",a.width).attr("height",a.height);return f.intersect=function(w){return Bpt(f,w)},g}function sUe(i,a,f){var g=a.width/2,w=a.height/2,v=i.insert("ellipse",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("rx",g).attr("ry",w);return f.intersect=function(b){return s$t(f,g,w,b)},v}function aUe(i,a,f){var g=Math.max(a.width,a.height)/2,w=i.insert("circle",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("r",g);return f.intersect=function(v){return eUe(f,g,v)},w}function oUe(i,a,f){var g=a.width*Math.SQRT2/2,w=a.height*Math.SQRT2/2,v=[{x:0,y:-w},{x:-g,y:0},{x:0,y:w},{x:g,y:0}],b=i.insert("polygon",":first-child").attr("points",v.map(function(E){return E.x+","+E.y}).join(" "));return f.intersect=function(E){return o4(f,v,E)},b}function cUe(){var i=function(a,f){hUe(f);var g=JF(a,"output"),w=JF(g,"clusters"),v=JF(g,"edgePaths"),b=Npt(JF(g,"edgeLabels"),f),E=Fpt(JF(g,"nodes"),f,Rpt);kD(f),tUe(E,f),ZVe(b,f),Ppt(v,f,Dpt);var S=Opt(w,f);JVe(S,f),fUe(f)};return i.createNodes=function(a){return arguments.length?(QVe(a),i):Fpt},i.createClusters=function(a){return arguments.length?(HVe(a),i):Opt},i.createEdgeLabels=function(a){return arguments.length?(VVe(a),i):Npt},i.createEdgePaths=function(a){return arguments.length?(UVe(a),i):Ppt},i.shapes=function(a){return arguments.length?(rUe(a),i):Rpt},i.arrows=function(a){return arguments.length?(FVe(a),i):Dpt},i}var uUe={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},lUe={arrowhead:"normal",curve:Kg};function hUe(i){i.nodes().forEach(function(a){var f=i.node(a);!lo(f,"label")&&!i.children(a).length&&(f.label=a),lo(f,"paddingX")&&yD(f,{paddingLeft:f.paddingX,paddingRight:f.paddingX}),lo(f,"paddingY")&&yD(f,{paddingTop:f.paddingY,paddingBottom:f.paddingY}),lo(f,"padding")&&yD(f,{paddingLeft:f.padding,paddingRight:f.padding,paddingTop:f.padding,paddingBottom:f.padding}),yD(f,uUe),yr(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(g){f[g]=Number(f[g])}),lo(f,"width")&&(f._prevWidth=f.width),lo(f,"height")&&(f._prevHeight=f.height)}),i.edges().forEach(function(a){var f=i.edge(a);lo(f,"label")||(f.label=""),yD(f,lUe)})}function fUe(i){yr(i.nodes(),function(a){var f=i.node(a);lo(f,"_prevWidth")?f.width=f._prevWidth:delete f.width,lo(f,"_prevHeight")?f.height=f._prevHeight:delete f.height,delete f._prevWidth,delete f._prevHeight})}function JF(i,a){var f=i.select("g."+a);return f.empty()&&(f=i.append("g").attr("class",a)),f}function o$t(i,a,f){const g=a.width,w=a.height,v=(g+w)*.9,b=[{x:v/2,y:0},{x:v,y:-v/2},{x:v/2,y:-v},{x:0,y:-v/2}],E=Rx(i,v,v,b);return f.intersect=function(S){return o4(f,b,S)},E}function c$t(i,a,f){const w=a.height,v=w/4,b=a.width+2*v,E=[{x:v,y:0},{x:b-v,y:0},{x:b,y:-w/2},{x:b-v,y:-w},{x:v,y:-w},{x:0,y:-w/2}],S=Rx(i,b,w,E);return f.intersect=function(_){return o4(f,E,_)},S}function u$t(i,a,f){const g=a.width,w=a.height,v=[{x:-w/2,y:0},{x:g,y:0},{x:g,y:-w},{x:-w/2,y:-w},{x:0,y:-w/2}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function l$t(i,a,f){const g=a.width,w=a.height,v=[{x:-2*w/6,y:0},{x:g-w/6,y:0},{x:g+2*w/6,y:-w},{x:w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function h$t(i,a,f){const g=a.width,w=a.height,v=[{x:2*w/6,y:0},{x:g+w/6,y:0},{x:g-2*w/6,y:-w},{x:-w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function f$t(i,a,f){const g=a.width,w=a.height,v=[{x:-2*w/6,y:0},{x:g+2*w/6,y:0},{x:g-w/6,y:-w},{x:w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function d$t(i,a,f){const g=a.width,w=a.height,v=[{x:w/6,y:0},{x:g-w/6,y:0},{x:g+2*w/6,y:-w},{x:-2*w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function g$t(i,a,f){const g=a.width,w=a.height,v=[{x:0,y:0},{x:g+w/2,y:0},{x:g,y:-w/2},{x:g+w/2,y:-w},{x:0,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function p$t(i,a,f){const g=a.height,w=a.width+g/4,v=i.insert("rect",":first-child").attr("rx",g/2).attr("ry",g/2).attr("x",-w/2).attr("y",-g/2).attr("width",w).attr("height",g);return f.intersect=function(b){return Bpt(f,b)},v}function b$t(i,a,f){const g=a.width,w=a.height,v=[{x:0,y:0},{x:g,y:0},{x:g,y:-w},{x:0,y:-w},{x:0,y:0},{x:-8,y:0},{x:g+8,y:0},{x:g+8,y:-w},{x:-8,y:-w},{x:-8,y:0}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function w$t(i,a,f){const g=a.width,w=g/2,v=w/(2.5+g/50),b=a.height+v,E="M 0,"+v+" a "+w+","+v+" 0,0,0 "+g+" 0 a "+w+","+v+" 0,0,0 "+-g+" 0 l 0,"+b+" a "+w+","+v+" 0,0,0 "+g+" 0 l 0,"+-b,S=i.attr("label-offset-y",v).insert("path",":first-child").attr("d",E).attr("transform","translate("+-g/2+","+-(b/2+v)+")");return f.intersect=function(_){const M=Bpt(f,_),F=M.x-f.x;if(w!=0&&(Math.abs(F)f.height/2-v)){let R=v*v*(1-F*F/(w*w));R!=0&&(R=Math.sqrt(R)),R=v-R,_.y-f.y>0&&(R=-R),M.y+=R}return M},S}function dUe(i){i.shapes().question=o$t,i.shapes().hexagon=c$t,i.shapes().stadium=p$t,i.shapes().subroutine=b$t,i.shapes().cylinder=w$t,i.shapes().rect_left_inv_arrow=u$t,i.shapes().lean_right=l$t,i.shapes().lean_left=h$t,i.shapes().trapezoid=f$t,i.shapes().inv_trapezoid=d$t,i.shapes().rect_right_inv_arrow=g$t}function gUe(i){i({question:o$t}),i({hexagon:c$t}),i({stadium:p$t}),i({subroutine:b$t}),i({cylinder:w$t}),i({rect_left_inv_arrow:u$t}),i({lean_right:l$t}),i({lean_left:h$t}),i({trapezoid:f$t}),i({inv_trapezoid:d$t}),i({rect_right_inv_arrow:g$t})}function Rx(i,a,f,g){return i.insert("polygon",":first-child").attr("points",g.map(function(w){return w.x+","+w.y}).join(" ")).attr("transform","translate("+-a/2+","+f/2+")")}const pUe={addToRender:dUe,addToRenderV2:gUe},m$t={},bUe=function(i){const a=Object.keys(i);for(const f of a)m$t[f]=i[f]},v$t=function(i,a,f,g,w,v){const b=g?g.select(`[id="${f}"]`):Tr(`[id="${f}"]`),E=w||document;Object.keys(i).forEach(function(_){const M=i[_];let F="default";M.classes.length>0&&(F=M.classes.join(" "));const R=C2(M.styles);let B=M.text!==void 0?M.text:M.id,z;if(j1(Re().flowchart.htmlLabels)){const ot={label:B.replace(/fa[blrs]?:fa-[\w-]+/g,ft=>``)};z=Mpt(b,ot).node(),z.parentNode.removeChild(z)}else{const ot=E.createElementNS("http://www.w3.org/2000/svg","text");ot.setAttribute("style",R.labelStyle.replace("color:","fill:"));const ft=B.split(ei.lineBreakRegex);for(const wt of ft){const mt=E.createElementNS("http://www.w3.org/2000/svg","tspan");mt.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),mt.setAttribute("dy","1em"),mt.setAttribute("x","1"),mt.textContent=wt,ot.appendChild(mt)}z=ot}let Y=0,nt="";switch(M.type){case"round":Y=5,nt="rect";break;case"square":nt="rect";break;case"diamond":nt="question";break;case"hexagon":nt="hexagon";break;case"odd":nt="rect_left_inv_arrow";break;case"lean_right":nt="lean_right";break;case"lean_left":nt="lean_left";break;case"trapezoid":nt="trapezoid";break;case"inv_trapezoid":nt="inv_trapezoid";break;case"odd_right":nt="rect_left_inv_arrow";break;case"circle":nt="circle";break;case"ellipse":nt="ellipse";break;case"stadium":nt="stadium";break;case"subroutine":nt="subroutine";break;case"cylinder":nt="cylinder";break;case"group":nt="rect";break;default:nt="rect"}Kt.warn("Adding node",M.id,M.domId),a.setNode(v.db.lookUpDomId(M.id),{labelType:"svg",labelStyle:R.labelStyle,shape:nt,label:z,rx:Y,ry:Y,class:F,style:R.style,id:v.db.lookUpDomId(M.id)})})},y$t=function(i,a,f){let g=0,w,v;if(i.defaultStyle!==void 0){const b=C2(i.defaultStyle);w=b.style,v=b.labelStyle}i.forEach(function(b){g++;const E="L-"+b.start+"-"+b.end,S="LS-"+b.start,_="LE-"+b.end,M={};b.type==="arrow_open"?M.arrowhead="none":M.arrowhead="normal";let F="",R="";if(b.style!==void 0){const B=C2(b.style);F=B.style,R=B.labelStyle}else switch(b.stroke){case"normal":F="fill:none",w!==void 0&&(F=w),v!==void 0&&(R=v);break;case"dotted":F="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":F=" stroke-width: 3.5px;fill:none";break}M.style=F,M.labelStyle=R,b.interpolate!==void 0?M.curve=Xw(b.interpolate,Kg):i.defaultInterpolate!==void 0?M.curve=Xw(i.defaultInterpolate,Kg):M.curve=Xw(m$t.curve,Kg),b.text===void 0?b.style!==void 0&&(M.arrowheadStyle="fill: #333"):(M.arrowheadStyle="fill: #333",M.labelpos="c",j1(Re().flowchart.htmlLabels)?(M.labelType="html",M.label=`${b.text.replace(/fa[blrs]?:fa-[\w-]+/g,B=>``)}`):(M.labelType="text",M.label=b.text.replace(ei.lineBreakRegex,` +`),b.style===void 0&&(M.style=M.style||"stroke: #333; stroke-width: 1.5px;fill:none"),M.labelStyle=M.labelStyle.replace("color:","fill:"))),M.id=E,M.class=S+" "+_,M.minlen=b.length||1,a.setEdge(f.db.lookUpDomId(b.start),f.db.lookUpDomId(b.end),M,g)})},wUe={setConf:bUe,addVertices:v$t,addEdges:y$t,getClasses:function(i,a){return Kt.info("Extracting classes"),a.db.getClasses()},draw:function(i,a,f,g){Kt.info("Drawing flowchart");const{securityLevel:w,flowchart:v}=Re();let b;w==="sandbox"&&(b=Tr("#i"+a));const E=Tr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?b.nodes()[0].contentDocument:document;let _=g.db.getDirection();_===void 0&&(_="TD");const M=v.nodeSpacing||50,F=v.rankSpacing||50,R=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:_,nodesep:M,ranksep:F,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let B;const z=g.db.getSubGraphs();for(let rt=z.length-1;rt>=0;rt--)B=z[rt],g.db.addVertex(B.id,B.title,"group",void 0,B.classes);const Y=g.db.getVertices();Kt.warn("Get vertices",Y);const nt=g.db.getEdges();let ot=0;for(ot=z.length-1;ot>=0;ot--){B=z[ot],$Ot("cluster").append("text");for(let rt=0;rt{a.forEach(w=>{xUe[w](i,f,g)})},xUe={extension:(i,a,f)=>{Kt.trace("Making markers for ",f),i.append("defs").append("marker").attr("id",f+"_"+a+"-extensionStart").attr("class","marker extension "+a).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-extensionEnd").attr("class","marker extension "+a).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-compositionStart").attr("class","marker composition "+a).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-compositionEnd").attr("class","marker composition "+a).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-aggregationStart").attr("class","marker aggregation "+a).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-aggregationEnd").attr("class","marker aggregation "+a).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-dependencyStart").attr("class","marker dependency "+a).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-dependencyEnd").attr("class","marker dependency "+a).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-lollipopStart").attr("class","marker lollipop "+a).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),i.append("defs").append("marker").attr("id",f+"_"+a+"-lollipopEnd").attr("class","marker lollipop "+a).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},point:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-pointEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",f+"_"+a+"-pointStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-circleEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",f+"_"+a+"-circleStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-crossEnd").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),i.append("marker").attr("id",f+"_"+a+"-crossStart").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},jpt=yUe;function kUe(i,a){a&&i.attr("style",a)}function EUe(i){const a=Tr(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),f=a.append("xhtml:div"),g=i.label,w=i.isNode?"nodeLabel":"edgeLabel";return f.html('"+g+""),kUe(f,i.labelStyle),f.style("display","inline-block"),f.style("white-space","nowrap"),f.attr("xmlns","http://www.w3.org/1999/xhtml"),a.node()}const ab=(i,a,f,g)=>{let w=i||"";if(typeof w=="object"&&(w=w[0]),j1(Re().flowchart.htmlLabels)){w=w.replace(/\\n|\n/g,"
    "),Kt.debug("vertexText"+w);const v={isNode:g,label:IF(w).replace(/fa[blrs]?:fa-[\w-]+/g,E=>``),labelStyle:a.replace("fill:","color:")};return EUe(v)}else{const v=document.createElementNS("http://www.w3.org/2000/svg","text");v.setAttribute("style",a.replace("color:","fill:"));let b=[];typeof w=="string"?b=w.split(/\\n|\n|/gi):Array.isArray(w)?b=w:b=[];for(const E of b){const S=document.createElementNS("http://www.w3.org/2000/svg","tspan");S.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),S.setAttribute("dy","1em"),S.setAttribute("x","0"),f?S.setAttribute("class","title-row"):S.setAttribute("class","row"),S.textContent=E.trim(),v.appendChild(S)}return v}},TUe={};function CUe(i,a){const f=a||TUe,g=typeof f.includeImageAlt=="boolean"?f.includeImageAlt:!0,w=typeof f.includeHtml=="boolean"?f.includeHtml:!0;return x$t(i,g,w)}function x$t(i,a,f){if(SUe(i)){if("value"in i)return i.type==="html"&&!f?"":i.value;if(a&&"alt"in i&&i.alt)return i.alt;if("children"in i)return k$t(i.children,a,f)}return Array.isArray(i)?k$t(i,a,f):""}function k$t(i,a,f){const g=[];let w=-1;for(;++ww?0:w+a:a=a>w?w:a,f=f>0?f:0,g.length<1e4)b=Array.from(g),b.unshift(a,f),i.splice(...b);else for(f&&i.splice(a,f);v0?(c4(i,i.length,0,a),i):a}const E$t={}.hasOwnProperty;function _Ue(i){const a={};let f=-1;for(;++fb))return;const it=a.events.length;let gt=it,Q,dt;for(;gt--;)if(a.events[gt][0]==="exit"&&a.events[gt][1].type==="chunkFlow"){if(Q){dt=a.events[gt][1].end;break}Q=!0}for(ot(g),rt=it;rtwt;){const ct=f[mt];a.containerState=ct[1],ct[0].exit.call(a,i)}f.length=wt}function ft(){w.write([null]),v=void 0,w=void 0,a.containerState._closeFlow=void 0}}function $Ue(i,a,f){return Cl(i,i.attempt(this.parser.constructs.document,a,f),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function C$t(i){if(i===null||ob(i)||PUe(i))return 1;if(NUe(i))return 2}function qpt(i,a,f){const g=[];let w=-1;for(;++w1&&i[f][1].end.offset-i[f][1].start.offset>1?2:1;const F=Object.assign({},i[g][1].end),R=Object.assign({},i[f][1].start);S$t(F,-S),S$t(R,S),b={type:S>1?"strongSequence":"emphasisSequence",start:F,end:Object.assign({},i[g][1].end)},E={type:S>1?"strongSequence":"emphasisSequence",start:Object.assign({},i[f][1].start),end:R},v={type:S>1?"strongText":"emphasisText",start:Object.assign({},i[g][1].end),end:Object.assign({},i[f][1].start)},w={type:S>1?"strong":"emphasis",start:Object.assign({},b.start),end:Object.assign({},E.end)},i[g][1].end=Object.assign({},b.start),i[f][1].start=Object.assign({},E.end),_=[],i[g][1].end.offset-i[g][1].start.offset&&(_=tm(_,[["enter",i[g][1],a],["exit",i[g][1],a]])),_=tm(_,[["enter",w,a],["enter",b,a],["exit",b,a],["enter",v,a]]),_=tm(_,qpt(a.parser.constructs.insideSpan.null,i.slice(g+1,f),a)),_=tm(_,[["exit",v,a],["enter",E,a],["exit",E,a],["exit",w,a]]),i[f][1].end.offset-i[f][1].start.offset?(M=2,_=tm(_,[["enter",i[f][1],a],["exit",i[f][1],a]])):M=0,c4(i,g-1,f-g+3,_),f=g+_.length-M-2;break}}for(f=-1;++f0&&du(rt)?Cl(i,ft,"linePrefix",v+1)(rt):ft(rt)}function ft(rt){return rt===null||$a(rt)?i.check(M$t,Y,mt)(rt):(i.enter("codeFlowValue"),wt(rt))}function wt(rt){return rt===null||$a(rt)?(i.exit("codeFlowValue"),ft(rt)):(i.consume(rt),wt)}function mt(rt){return i.exit("codeFenced"),a(rt)}function ct(rt,it,gt){let Q=0;return dt;function dt(It){return rt.enter("lineEnding"),rt.consume(It),rt.exit("lineEnding"),K}function K(It){return rt.enter("codeFencedFence"),du(It)?Cl(rt,yt,"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(It):yt(It)}function yt(It){return It===E?(rt.enter("codeFencedFenceSequence"),V(It)):gt(It)}function V(It){return It===E?(Q++,rt.consume(It),V):Q>=b?(rt.exit("codeFencedFenceSequence"),du(It)?Cl(rt,Ot,"whitespace")(It):Ot(It)):gt(It)}function Ot(It){return It===null||$a(It)?(rt.exit("codeFencedFence"),it(It)):gt(It)}}}function JUe(i,a,f){const g=this;return w;function w(b){return b===null?f(b):(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),v)}function v(b){return g.parser.lazy[g.now().line]?f(b):a(b)}}const Upt={name:"codeIndented",tokenize:tGe},ZUe={tokenize:eGe,partial:!0};function tGe(i,a,f){const g=this;return w;function w(_){return i.enter("codeIndented"),Cl(i,v,"linePrefix",4+1)(_)}function v(_){const M=g.events[g.events.length-1];return M&&M[1].type==="linePrefix"&&M[2].sliceSerialize(M[1],!0).length>=4?b(_):f(_)}function b(_){return _===null?S(_):$a(_)?i.attempt(ZUe,b,S)(_):(i.enter("codeFlowValue"),E(_))}function E(_){return _===null||$a(_)?(i.exit("codeFlowValue"),b(_)):(i.consume(_),E)}function S(_){return i.exit("codeIndented"),a(_)}}function eGe(i,a,f){const g=this;return w;function w(b){return g.parser.lazy[g.now().line]?f(b):$a(b)?(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),w):Cl(i,v,"linePrefix",4+1)(b)}function v(b){const E=g.events[g.events.length-1];return E&&E[1].type==="linePrefix"&&E[2].sliceSerialize(E[1],!0).length>=4?a(b):$a(b)?w(b):f(b)}}const nGe={name:"codeText",tokenize:sGe,resolve:rGe,previous:iGe};function rGe(i){let a=i.length-4,f=3,g,w;if((i[f][1].type==="lineEnding"||i[f][1].type==="space")&&(i[a][1].type==="lineEnding"||i[a][1].type==="space")){for(g=f;++g=4?a(b):i.interrupt(g.parser.constructs.flow,f,a)(b)}}function N$t(i,a,f,g,w,v,b,E,S){const _=S||Number.POSITIVE_INFINITY;let M=0;return F;function F(ot){return ot===60?(i.enter(g),i.enter(w),i.enter(v),i.consume(ot),i.exit(v),R):ot===null||ot===32||ot===41||$pt(ot)?f(ot):(i.enter(g),i.enter(b),i.enter(E),i.enter("chunkString",{contentType:"string"}),Y(ot))}function R(ot){return ot===62?(i.enter(v),i.consume(ot),i.exit(v),i.exit(w),i.exit(g),a):(i.enter(E),i.enter("chunkString",{contentType:"string"}),B(ot))}function B(ot){return ot===62?(i.exit("chunkString"),i.exit(E),R(ot)):ot===null||ot===60||$a(ot)?f(ot):(i.consume(ot),ot===92?z:B)}function z(ot){return ot===60||ot===62||ot===92?(i.consume(ot),B):B(ot)}function Y(ot){return!M&&(ot===null||ot===41||ob(ot))?(i.exit("chunkString"),i.exit(E),i.exit(b),i.exit(g),a(ot)):M<_&&ot===40?(i.consume(ot),M++,Y):ot===41?(i.consume(ot),M--,Y):ot===null||ot===32||ot===40||$pt(ot)?f(ot):(i.consume(ot),ot===92?nt:Y)}function nt(ot){return ot===40||ot===41||ot===92?(i.consume(ot),Y):Y(ot)}}function P$t(i,a,f,g,w,v){const b=this;let E=0,S;return _;function _(B){return i.enter(g),i.enter(w),i.consume(B),i.exit(w),i.enter(v),M}function M(B){return E>999||B===null||B===91||B===93&&!S||B===94&&!E&&"_hiddenFootnoteSupport"in b.parser.constructs?f(B):B===93?(i.exit(v),i.enter(w),i.consume(B),i.exit(w),i.exit(g),a):$a(B)?(i.enter("lineEnding"),i.consume(B),i.exit("lineEnding"),M):(i.enter("chunkString",{contentType:"string"}),F(B))}function F(B){return B===null||B===91||B===93||$a(B)||E++>999?(i.exit("chunkString"),M(B)):(i.consume(B),S||(S=!du(B)),B===92?R:F)}function R(B){return B===91||B===92||B===93?(i.consume(B),E++,F):F(B)}}function F$t(i,a,f,g,w,v){let b;return E;function E(R){return R===34||R===39||R===40?(i.enter(g),i.enter(w),i.consume(R),i.exit(w),b=R===40?41:R,S):f(R)}function S(R){return R===b?(i.enter(w),i.consume(R),i.exit(w),i.exit(g),a):(i.enter(v),_(R))}function _(R){return R===b?(i.exit(v),S(b)):R===null?f(R):$a(R)?(i.enter("lineEnding"),i.consume(R),i.exit("lineEnding"),Cl(i,_,"linePrefix")):(i.enter("chunkString",{contentType:"string"}),M(R))}function M(R){return R===b||R===null||$a(R)?(i.exit("chunkString"),_(R)):(i.consume(R),R===92?F:M)}function F(R){return R===b||R===92?(i.consume(R),M):M(R)}}function ZF(i,a){let f;return g;function g(w){return $a(w)?(i.enter("lineEnding"),i.consume(w),i.exit("lineEnding"),f=!0,g):du(w)?Cl(i,g,f?"linePrefix":"lineSuffix")(w):a(w)}}function ED(i){return i.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const fGe={name:"definition",tokenize:gGe},dGe={tokenize:pGe,partial:!0};function gGe(i,a,f){const g=this;let w;return v;function v(B){return i.enter("definition"),b(B)}function b(B){return P$t.call(g,i,E,f,"definitionLabel","definitionLabelMarker","definitionLabelString")(B)}function E(B){return w=ED(g.sliceSerialize(g.events[g.events.length-1][1]).slice(1,-1)),B===58?(i.enter("definitionMarker"),i.consume(B),i.exit("definitionMarker"),S):f(B)}function S(B){return ob(B)?ZF(i,_)(B):_(B)}function _(B){return N$t(i,M,f,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(B)}function M(B){return i.attempt(dGe,F,F)(B)}function F(B){return du(B)?Cl(i,R,"whitespace")(B):R(B)}function R(B){return B===null||$a(B)?(i.exit("definition"),g.parser.defined.push(w),a(B)):f(B)}}function pGe(i,a,f){return g;function g(E){return ob(E)?ZF(i,w)(E):f(E)}function w(E){return F$t(i,v,f,"definitionTitle","definitionTitleMarker","definitionTitleString")(E)}function v(E){return du(E)?Cl(i,b,"whitespace")(E):b(E)}function b(E){return E===null||$a(E)?a(E):f(E)}}const bGe={name:"hardBreakEscape",tokenize:wGe};function wGe(i,a,f){return g;function g(v){return i.enter("hardBreakEscape"),i.consume(v),w}function w(v){return $a(v)?(i.exit("hardBreakEscape"),a(v)):f(v)}}const mGe={name:"headingAtx",tokenize:yGe,resolve:vGe};function vGe(i,a){let f=i.length-2,g=3,w,v;return i[g][1].type==="whitespace"&&(g+=2),f-2>g&&i[f][1].type==="whitespace"&&(f-=2),i[f][1].type==="atxHeadingSequence"&&(g===f-1||f-4>g&&i[f-2][1].type==="whitespace")&&(f-=g+1===f?2:4),f>g&&(w={type:"atxHeadingText",start:i[g][1].start,end:i[f][1].end},v={type:"chunkText",start:i[g][1].start,end:i[f][1].end,contentType:"text"},c4(i,g,f-g+1,[["enter",w,a],["enter",v,a],["exit",v,a],["exit",w,a]])),i}function yGe(i,a,f){let g=0;return w;function w(M){return i.enter("atxHeading"),v(M)}function v(M){return i.enter("atxHeadingSequence"),b(M)}function b(M){return M===35&&g++<6?(i.consume(M),b):M===null||ob(M)?(i.exit("atxHeadingSequence"),E(M)):f(M)}function E(M){return M===35?(i.enter("atxHeadingSequence"),S(M)):M===null||$a(M)?(i.exit("atxHeading"),a(M)):du(M)?Cl(i,E,"whitespace")(M):(i.enter("atxHeadingText"),_(M))}function S(M){return M===35?(i.consume(M),S):(i.exit("atxHeadingSequence"),E(M))}function _(M){return M===null||M===35||ob(M)?(i.exit("atxHeadingText"),E(M)):(i.consume(M),_)}}const xGe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],B$t=["pre","script","style","textarea"],kGe={name:"htmlFlow",tokenize:SGe,resolveTo:CGe,concrete:!0},EGe={tokenize:AGe,partial:!0},TGe={tokenize:_Ge,partial:!0};function CGe(i){let a=i.length;for(;a--&&!(i[a][0]==="enter"&&i[a][1].type==="htmlFlow"););return a>1&&i[a-2][1].type==="linePrefix"&&(i[a][1].start=i[a-2][1].start,i[a+1][1].start=i[a-2][1].start,i.splice(a-2,2)),i}function SGe(i,a,f){const g=this;let w,v,b,E,S;return _;function _(Mt){return M(Mt)}function M(Mt){return i.enter("htmlFlow"),i.enter("htmlFlowData"),i.consume(Mt),F}function F(Mt){return Mt===33?(i.consume(Mt),R):Mt===47?(i.consume(Mt),v=!0,Y):Mt===63?(i.consume(Mt),w=3,g.interrupt?a:kt):u4(Mt)?(i.consume(Mt),b=String.fromCharCode(Mt),nt):f(Mt)}function R(Mt){return Mt===45?(i.consume(Mt),w=2,B):Mt===91?(i.consume(Mt),w=5,E=0,z):u4(Mt)?(i.consume(Mt),w=4,g.interrupt?a:kt):f(Mt)}function B(Mt){return Mt===45?(i.consume(Mt),g.interrupt?a:kt):f(Mt)}function z(Mt){const pn="CDATA[";return Mt===pn.charCodeAt(E++)?(i.consume(Mt),E===pn.length?g.interrupt?a:yt:z):f(Mt)}function Y(Mt){return u4(Mt)?(i.consume(Mt),b=String.fromCharCode(Mt),nt):f(Mt)}function nt(Mt){if(Mt===null||Mt===47||Mt===62||ob(Mt)){const pn=Mt===47,Ae=b.toLowerCase();return!pn&&!v&&B$t.includes(Ae)?(w=1,g.interrupt?a(Mt):yt(Mt)):xGe.includes(b.toLowerCase())?(w=6,pn?(i.consume(Mt),ot):g.interrupt?a(Mt):yt(Mt)):(w=7,g.interrupt&&!g.parser.lazy[g.now().line]?f(Mt):v?ft(Mt):wt(Mt))}return Mt===45||Zv(Mt)?(i.consume(Mt),b+=String.fromCharCode(Mt),nt):f(Mt)}function ot(Mt){return Mt===62?(i.consume(Mt),g.interrupt?a:yt):f(Mt)}function ft(Mt){return du(Mt)?(i.consume(Mt),ft):dt(Mt)}function wt(Mt){return Mt===47?(i.consume(Mt),dt):Mt===58||Mt===95||u4(Mt)?(i.consume(Mt),mt):du(Mt)?(i.consume(Mt),wt):dt(Mt)}function mt(Mt){return Mt===45||Mt===46||Mt===58||Mt===95||Zv(Mt)?(i.consume(Mt),mt):ct(Mt)}function ct(Mt){return Mt===61?(i.consume(Mt),rt):du(Mt)?(i.consume(Mt),ct):wt(Mt)}function rt(Mt){return Mt===null||Mt===60||Mt===61||Mt===62||Mt===96?f(Mt):Mt===34||Mt===39?(i.consume(Mt),S=Mt,it):du(Mt)?(i.consume(Mt),rt):gt(Mt)}function it(Mt){return Mt===S?(i.consume(Mt),S=null,Q):Mt===null||$a(Mt)?f(Mt):(i.consume(Mt),it)}function gt(Mt){return Mt===null||Mt===34||Mt===39||Mt===47||Mt===60||Mt===61||Mt===62||Mt===96||ob(Mt)?ct(Mt):(i.consume(Mt),gt)}function Q(Mt){return Mt===47||Mt===62||du(Mt)?wt(Mt):f(Mt)}function dt(Mt){return Mt===62?(i.consume(Mt),K):f(Mt)}function K(Mt){return Mt===null||$a(Mt)?yt(Mt):du(Mt)?(i.consume(Mt),K):f(Mt)}function yt(Mt){return Mt===45&&w===2?(i.consume(Mt),jt):Mt===60&&w===1?(i.consume(Mt),xt):Mt===62&&w===4?(i.consume(Mt),Gt):Mt===63&&w===3?(i.consume(Mt),kt):Mt===93&&w===5?(i.consume(Mt),Ct):$a(Mt)&&(w===6||w===7)?(i.exit("htmlFlowData"),i.check(EGe,Fe,V)(Mt)):Mt===null||$a(Mt)?(i.exit("htmlFlowData"),V(Mt)):(i.consume(Mt),yt)}function V(Mt){return i.check(TGe,Ot,Fe)(Mt)}function Ot(Mt){return i.enter("lineEnding"),i.consume(Mt),i.exit("lineEnding"),It}function It(Mt){return Mt===null||$a(Mt)?V(Mt):(i.enter("htmlFlowData"),yt(Mt))}function jt(Mt){return Mt===45?(i.consume(Mt),kt):yt(Mt)}function xt(Mt){return Mt===47?(i.consume(Mt),b="",Ft):yt(Mt)}function Ft(Mt){if(Mt===62){const pn=b.toLowerCase();return B$t.includes(pn)?(i.consume(Mt),Gt):yt(Mt)}return u4(Mt)&&b.length<8?(i.consume(Mt),b+=String.fromCharCode(Mt),Ft):yt(Mt)}function Ct(Mt){return Mt===93?(i.consume(Mt),kt):yt(Mt)}function kt(Mt){return Mt===62?(i.consume(Mt),Gt):Mt===45&&w===2?(i.consume(Mt),kt):yt(Mt)}function Gt(Mt){return Mt===null||$a(Mt)?(i.exit("htmlFlowData"),Fe(Mt)):(i.consume(Mt),Gt)}function Fe(Mt){return i.exit("htmlFlow"),a(Mt)}}function _Ge(i,a,f){const g=this;return w;function w(b){return $a(b)?(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),v):f(b)}function v(b){return g.parser.lazy[g.now().line]?f(b):a(b)}}function AGe(i,a,f){return g;function g(w){return i.enter("lineEnding"),i.consume(w),i.exit("lineEnding"),i.attempt(XY,a,f)}}const LGe={name:"htmlText",tokenize:DGe};function DGe(i,a,f){const g=this;let w,v,b;return E;function E(kt){return i.enter("htmlText"),i.enter("htmlTextData"),i.consume(kt),S}function S(kt){return kt===33?(i.consume(kt),_):kt===47?(i.consume(kt),ct):kt===63?(i.consume(kt),wt):u4(kt)?(i.consume(kt),gt):f(kt)}function _(kt){return kt===45?(i.consume(kt),M):kt===91?(i.consume(kt),v=0,z):u4(kt)?(i.consume(kt),ft):f(kt)}function M(kt){return kt===45?(i.consume(kt),B):f(kt)}function F(kt){return kt===null?f(kt):kt===45?(i.consume(kt),R):$a(kt)?(b=F,xt(kt)):(i.consume(kt),F)}function R(kt){return kt===45?(i.consume(kt),B):F(kt)}function B(kt){return kt===62?jt(kt):kt===45?R(kt):F(kt)}function z(kt){const Gt="CDATA[";return kt===Gt.charCodeAt(v++)?(i.consume(kt),v===Gt.length?Y:z):f(kt)}function Y(kt){return kt===null?f(kt):kt===93?(i.consume(kt),nt):$a(kt)?(b=Y,xt(kt)):(i.consume(kt),Y)}function nt(kt){return kt===93?(i.consume(kt),ot):Y(kt)}function ot(kt){return kt===62?jt(kt):kt===93?(i.consume(kt),ot):Y(kt)}function ft(kt){return kt===null||kt===62?jt(kt):$a(kt)?(b=ft,xt(kt)):(i.consume(kt),ft)}function wt(kt){return kt===null?f(kt):kt===63?(i.consume(kt),mt):$a(kt)?(b=wt,xt(kt)):(i.consume(kt),wt)}function mt(kt){return kt===62?jt(kt):wt(kt)}function ct(kt){return u4(kt)?(i.consume(kt),rt):f(kt)}function rt(kt){return kt===45||Zv(kt)?(i.consume(kt),rt):it(kt)}function it(kt){return $a(kt)?(b=it,xt(kt)):du(kt)?(i.consume(kt),it):jt(kt)}function gt(kt){return kt===45||Zv(kt)?(i.consume(kt),gt):kt===47||kt===62||ob(kt)?Q(kt):f(kt)}function Q(kt){return kt===47?(i.consume(kt),jt):kt===58||kt===95||u4(kt)?(i.consume(kt),dt):$a(kt)?(b=Q,xt(kt)):du(kt)?(i.consume(kt),Q):jt(kt)}function dt(kt){return kt===45||kt===46||kt===58||kt===95||Zv(kt)?(i.consume(kt),dt):K(kt)}function K(kt){return kt===61?(i.consume(kt),yt):$a(kt)?(b=K,xt(kt)):du(kt)?(i.consume(kt),K):Q(kt)}function yt(kt){return kt===null||kt===60||kt===61||kt===62||kt===96?f(kt):kt===34||kt===39?(i.consume(kt),w=kt,V):$a(kt)?(b=yt,xt(kt)):du(kt)?(i.consume(kt),yt):(i.consume(kt),Ot)}function V(kt){return kt===w?(i.consume(kt),w=void 0,It):kt===null?f(kt):$a(kt)?(b=V,xt(kt)):(i.consume(kt),V)}function Ot(kt){return kt===null||kt===34||kt===39||kt===60||kt===61||kt===96?f(kt):kt===47||kt===62||ob(kt)?Q(kt):(i.consume(kt),Ot)}function It(kt){return kt===47||kt===62||ob(kt)?Q(kt):f(kt)}function jt(kt){return kt===62?(i.consume(kt),i.exit("htmlTextData"),i.exit("htmlText"),a):f(kt)}function xt(kt){return i.exit("htmlTextData"),i.enter("lineEnding"),i.consume(kt),i.exit("lineEnding"),Ft}function Ft(kt){return du(kt)?Cl(i,Ct,"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(kt):Ct(kt)}function Ct(kt){return i.enter("htmlTextData"),b(kt)}}const Gpt={name:"labelEnd",tokenize:FGe,resolveTo:PGe,resolveAll:NGe},MGe={tokenize:BGe},IGe={tokenize:RGe},OGe={tokenize:jGe};function NGe(i){let a=-1;for(;++a=3&&(_===null||$a(_))?(i.exit("thematicBreak"),a(_)):f(_)}function S(_){return _===w?(i.consume(_),g++,S):(i.exit("thematicBreakSequence"),du(_)?Cl(i,E,"whitespace")(_):E(_))}}const cb={name:"list",tokenize:WGe,continuation:{tokenize:YGe},exit:QGe},GGe={tokenize:JGe,partial:!0},KGe={tokenize:XGe,partial:!0};function WGe(i,a,f){const g=this,w=g.events[g.events.length-1];let v=w&&w[1].type==="linePrefix"?w[2].sliceSerialize(w[1],!0).length:0,b=0;return E;function E(B){const z=g.containerState.type||(B===42||B===43||B===45?"listUnordered":"listOrdered");if(z==="listUnordered"?!g.containerState.marker||B===g.containerState.marker:zpt(B)){if(g.containerState.type||(g.containerState.type=z,i.enter(z,{_container:!0})),z==="listUnordered")return i.enter("listItemPrefix"),B===42||B===45?i.check(QY,f,_)(B):_(B);if(!g.interrupt||B===49)return i.enter("listItemPrefix"),i.enter("listItemValue"),S(B)}return f(B)}function S(B){return zpt(B)&&++b<10?(i.consume(B),S):(!g.interrupt||b<2)&&(g.containerState.marker?B===g.containerState.marker:B===41||B===46)?(i.exit("listItemValue"),_(B)):f(B)}function _(B){return i.enter("listItemMarker"),i.consume(B),i.exit("listItemMarker"),g.containerState.marker=g.containerState.marker||B,i.check(XY,g.interrupt?f:M,i.attempt(GGe,R,F))}function M(B){return g.containerState.initialBlankLine=!0,v++,R(B)}function F(B){return du(B)?(i.enter("listItemPrefixWhitespace"),i.consume(B),i.exit("listItemPrefixWhitespace"),R):f(B)}function R(B){return g.containerState.size=v+g.sliceSerialize(i.exit("listItemPrefix"),!0).length,a(B)}}function YGe(i,a,f){const g=this;return g.containerState._closeFlow=void 0,i.check(XY,w,v);function w(E){return g.containerState.furtherBlankLines=g.containerState.furtherBlankLines||g.containerState.initialBlankLine,Cl(i,a,"listItemIndent",g.containerState.size+1)(E)}function v(E){return g.containerState.furtherBlankLines||!du(E)?(g.containerState.furtherBlankLines=void 0,g.containerState.initialBlankLine=void 0,b(E)):(g.containerState.furtherBlankLines=void 0,g.containerState.initialBlankLine=void 0,i.attempt(KGe,a,b)(E))}function b(E){return g.containerState._closeFlow=!0,g.interrupt=void 0,Cl(i,i.attempt(cb,a,f),"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E)}}function XGe(i,a,f){const g=this;return Cl(i,w,"listItemIndent",g.containerState.size+1);function w(v){const b=g.events[g.events.length-1];return b&&b[1].type==="listItemIndent"&&b[2].sliceSerialize(b[1],!0).length===g.containerState.size?a(v):f(v)}}function QGe(i){i.exit(this.containerState.type)}function JGe(i,a,f){const g=this;return Cl(i,w,"listItemPrefixWhitespace",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function w(v){const b=g.events[g.events.length-1];return!du(v)&&b&&b[1].type==="listItemPrefixWhitespace"?a(v):f(v)}}const R$t={name:"setextUnderline",tokenize:tKe,resolveTo:ZGe};function ZGe(i,a){let f=i.length,g,w,v;for(;f--;)if(i[f][0]==="enter"){if(i[f][1].type==="content"){g=f;break}i[f][1].type==="paragraph"&&(w=f)}else i[f][1].type==="content"&&i.splice(f,1),!v&&i[f][1].type==="definition"&&(v=f);const b={type:"setextHeading",start:Object.assign({},i[w][1].start),end:Object.assign({},i[i.length-1][1].end)};return i[w][1].type="setextHeadingText",v?(i.splice(w,0,["enter",b,a]),i.splice(v+1,0,["exit",i[g][1],a]),i[g][1].end=Object.assign({},i[v][1].end)):i[g][1]=b,i.push(["exit",b,a]),i}function tKe(i,a,f){const g=this;let w;return v;function v(_){let M=g.events.length,F;for(;M--;)if(g.events[M][1].type!=="lineEnding"&&g.events[M][1].type!=="linePrefix"&&g.events[M][1].type!=="content"){F=g.events[M][1].type==="paragraph";break}return!g.parser.lazy[g.now().line]&&(g.interrupt||F)?(i.enter("setextHeadingLine"),w=_,b(_)):f(_)}function b(_){return i.enter("setextHeadingLineSequence"),E(_)}function E(_){return _===w?(i.consume(_),E):(i.exit("setextHeadingLineSequence"),du(_)?Cl(i,S,"lineSuffix")(_):S(_))}function S(_){return _===null||$a(_)?(i.exit("setextHeadingLine"),a(_)):f(_)}}const eKe={tokenize:nKe};function nKe(i){const a=this,f=i.attempt(XY,g,i.attempt(this.parser.constructs.flowInitial,w,Cl(i,i.attempt(this.parser.constructs.flow,w,i.attempt(oGe,w)),"linePrefix")));return f;function g(v){if(v===null){i.consume(v);return}return i.enter("lineEndingBlank"),i.consume(v),i.exit("lineEndingBlank"),a.currentConstruct=void 0,f}function w(v){if(v===null){i.consume(v);return}return i.enter("lineEnding"),i.consume(v),i.exit("lineEnding"),a.currentConstruct=void 0,f}}const rKe={resolveAll:$$t()},iKe=j$t("string"),sKe=j$t("text");function j$t(i){return{tokenize:a,resolveAll:$$t(i==="text"?aKe:void 0)};function a(f){const g=this,w=this.parser.constructs[i],v=f.attempt(w,b,E);return b;function b(M){return _(M)?v(M):E(M)}function E(M){if(M===null){f.consume(M);return}return f.enter("data"),f.consume(M),S}function S(M){return _(M)?(f.exit("data"),v(M)):(f.consume(M),S)}function _(M){if(M===null)return!0;const F=w[M];let R=-1;if(F)for(;++R-1){const E=b[0];typeof E=="string"?b[0]=E.slice(g):b.shift()}v>0&&b.push(i[w].slice(0,v))}return b}function uKe(i,a){let f=-1;const g=[];let w;for(;++f13&&f<32||f>126&&f<160||f>55295&&f<57344||f>64975&&f<65008||(f&65535)===65535||(f&65535)===65534||f>1114111?"�":String.fromCharCode(f)}const gKe=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function pKe(i){return i.replace(gKe,bKe)}function bKe(i,a,f){if(a)return a;if(f.charCodeAt(0)===35){const w=f.charCodeAt(1),v=w===120||w===88;return q$t(f.slice(v?2:1),v?16:10)}return Vpt(f)||i}function JY(i){return!i||typeof i!="object"?"":"position"in i||"type"in i?H$t(i.position):"start"in i||"end"in i?H$t(i):"line"in i||"column"in i?Wpt(i):""}function Wpt(i){return V$t(i&&i.line)+":"+V$t(i&&i.column)}function H$t(i){return Wpt(i&&i.start)+"-"+Wpt(i&&i.end)}function V$t(i){return i&&typeof i=="number"?i:1}const U$t={}.hasOwnProperty,G$t=function(i,a,f){return typeof a!="string"&&(f=a,a=void 0),wKe(f)(dKe(hKe(f).document().write(fKe()(i,a,!0))))};function wKe(i){const a={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:E(ga),autolinkProtocol:K,autolinkEmail:K,atxHeading:E(Br),blockQuote:E(Xt),characterEscape:K,characterReference:K,codeFenced:E(_e),codeFencedFenceInfo:S,codeFencedFenceMeta:S,codeIndented:E(_e,S),codeText:E(xe,S),codeTextData:K,data:K,codeFlowValue:K,definition:E(Mn),definitionDestinationString:S,definitionLabelString:S,definitionTitleString:S,emphasis:E(ce),hardBreakEscape:E(we),hardBreakTrailing:E(we),htmlFlow:E(Fi,S),htmlFlowData:K,htmlText:E(Fi,S),htmlTextData:K,image:E(mi),label:S,link:E(ga),listItem:E(za),listItemValue:z,listOrdered:E(Ss,B),listUnordered:E(Ss),paragraph:E(br),reference:Ae,referenceString:S,resourceDestinationString:S,resourceTitleString:S,setextHeading:E(Br),strong:E(An),thematicBreak:E(Bn)},exit:{atxHeading:M(),atxHeadingSequence:it,autolink:M(),autolinkEmail:Ne,autolinkProtocol:be,blockQuote:M(),characterEscapeValue:yt,characterReferenceMarkerHexadecimal:tn,characterReferenceMarkerNumeric:tn,characterReferenceValue:sn,codeFenced:M(ft),codeFencedFence:ot,codeFencedFenceInfo:Y,codeFencedFenceMeta:nt,codeFlowValue:yt,codeIndented:M(wt),codeText:M(xt),codeTextData:yt,data:yt,definition:M(),definitionDestinationString:rt,definitionLabelString:mt,definitionTitleString:ct,emphasis:M(),hardBreakEscape:M(Ot),hardBreakTrailing:M(Ot),htmlFlow:M(It),htmlFlowData:yt,htmlText:M(jt),htmlTextData:yt,image:M(Ct),label:Gt,labelText:kt,lineEnding:V,link:M(Ft),listItem:M(),listOrdered:M(),listUnordered:M(),paragraph:M(),referenceString:ye,resourceDestinationString:Fe,resourceTitleString:Mt,resource:pn,setextHeading:M(dt),setextHeadingLineSequence:Q,setextHeadingText:gt,strong:M(),thematicBreak:M()}};K$t(a,(i||{}).mdastExtensions||[]);const f={};return g;function g(ke){let pe={type:"root",children:[]};const Je={stack:[pe],tokenStack:[],config:a,enter:_,exit:F,buffer:S,resume:R,setData:v,getData:b},an=[];let xn=-1;for(;++xn0){const qa=Je.tokenStack[Je.tokenStack.length-1];(qa[1]||W$t).call(Je,void 0,qa[0])}for(pe.position={start:T8(ke.length>0?ke[0][1].start:{line:1,column:1,offset:0}),end:T8(ke.length>0?ke[ke.length-2][1].end:{line:1,column:1,offset:0})},xn=-1;++xn{M!==0&&(w++,g.push([])),_.split(" ").forEach(F=>{F&&g[w].push({content:F,type:E})})}):(b.type==="strong"||b.type==="emphasis")&&b.children.forEach(S=>{v(S,b.type)})}return f.forEach(b=>{b.type==="paragraph"&&b.children.forEach(E=>{v(E)})}),g}function xKe(i){const{children:a}=G$t(i);function f(g){return g.type==="text"?g.value.replace(/\n/g,"
    "):g.type==="strong"?`${g.children.map(f).join("")}`:g.type==="emphasis"?`${g.children.map(f).join("")}`:g.type==="paragraph"?`

    ${g.children.map(f).join("")}

    `:`Unsupported markdown: ${g.type}`}return a.map(f).join("")}function kKe(i){return Intl.Segmenter?[...new Intl.Segmenter().segment(i)].map(a=>a.segment):[...i]}function EKe(i,a){const f=kKe(a.content);return Y$t(i,[],f,a.type)}function Y$t(i,a,f,g){if(f.length===0)return[{content:a.join(""),type:g},{content:"",type:g}];const[w,...v]=f,b=[...a,w];return i([{content:b.join(""),type:g}])?Y$t(i,b,v,g):(a.length===0&&w&&(a.push(w),f.shift()),[{content:a.join(""),type:g},{content:f.join(""),type:g}])}function TKe(i,a){if(i.some(({content:f})=>f.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return Ypt(i,a)}function Ypt(i,a,f=[],g=[]){if(i.length===0)return g.length>0&&f.push(g),f.length>0?f:[];let w="";i[0].content===" "&&(w=" ",i.shift());const v=i.shift()??{content:" ",type:"normal"},b=[...g];if(w!==""&&b.push({content:w,type:"normal"}),b.push(v),a(b))return Ypt(i,a,f,b);if(g.length>0)f.push(g),i.unshift(v);else if(v.content){const[E,S]=EKe(a,v);f.push([E]),S.content&&i.unshift(S)}return Ypt(i,a,f)}function CKe(i,a){a&&i.attr("style",a)}function SKe(i,a,f,g,w=!1){const v=i.append("foreignObject"),b=v.append("xhtml:div"),E=a.label,S=a.isNode?"nodeLabel":"edgeLabel";b.html(` + "+E+""),CKe(b,a.labelStyle),b.style("display","table-cell"),b.style("white-space","nowrap"),b.style("max-width",f+"px"),b.attr("xmlns","http://www.w3.org/1999/xhtml"),w&&b.attr("class","labelBkg");let _=b.node().getBoundingClientRect();return _.width===f&&(b.style("display","table"),b.style("white-space","break-spaces"),b.style("width",f+"px"),_=b.node().getBoundingClientRect()),v.style("width",_.width),v.style("height",_.height),v.node()}function Xpt(i,a,f){return i.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",a*f-.1+"em").attr("dy",f+"em")}function _Ke(i,a,f){const g=i.append("text"),w=Xpt(g,1,a);Qpt(w,f);const v=w.node().getComputedTextLength();return g.remove(),v}function AKe(i,a,f){var b;const g=i.append("text"),w=Xpt(g,1,a);Qpt(w,[{content:f,type:"normal"}]);const v=(b=w.node())==null?void 0:b.getBoundingClientRect();return v&&g.remove(),v}function LKe(i,a,f,g=!1){const v=a.append("g"),b=v.insert("rect").attr("class","background"),E=v.append("text").attr("y","-10.1");let S=0;for(const _ of f){const M=R=>_Ke(v,1.1,R)<=i,F=M(_)?[_]:TKe(_,M);for(const R of F){const B=Xpt(E,S,1.1);Qpt(B,R),S++}}if(g){const _=E.node().getBBox(),M=2;return b.attr("x",-M).attr("y",-M).attr("width",_.width+2*M).attr("height",_.height+2*M),v.node()}else return E.node()}function Qpt(i,a){i.text(""),a.forEach((f,g)=>{const w=i.append("tspan").attr("font-style",f.type==="emphasis"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",f.type==="strong"?"bold":"normal");g===0?w.text(f.content):w.text(" "+f.content)})}const ZY=(i,a="",{style:f="",isTitle:g=!1,classes:w="",useHtmlLabels:v=!0,isNode:b=!0,width:E=200,addSvgBackground:S=!1}={})=>{if(Kt.info("createText",a,f,g,w,v,b,S),v){const _=xKe(a),M={isNode:b,label:IF(_).replace(/fa[blrs]?:fa-[\w-]+/g,R=>``),labelStyle:f.replace("fill:","color:")};return SKe(i,M,E,w,S)}else{const _=yKe(a);return LKe(E,i,_,S)}},$1=async(i,a,f,g)=>{let w;const v=a.useHtmlLabels||j1(Re().flowchart.htmlLabels);f?w=f:w="node default";const b=i.insert("g").attr("class",w).attr("id",a.domId||a.id),E=b.insert("g").attr("class","label").attr("style",a.labelStyle);let S;a.labelText===void 0?S="":S=typeof a.labelText=="string"?a.labelText:a.labelText[0];const _=E.node();let M;a.labelType==="markdown"?M=ZY(E,Ef(IF(S),Re()),{useHtmlLabels:v,width:a.width||Re().flowchart.wrappingWidth,classes:"markdown-node-label"}):M=_.appendChild(ab(Ef(IF(S),Re()),a.labelStyle,!1,g));let F=M.getBBox();const R=a.padding/2;if(j1(Re().flowchart.htmlLabels)){const B=M.children[0],z=Tr(M),Y=B.getElementsByTagName("img");if(Y){const nt=S.replace(/]*>/g,"").trim()==="";await Promise.all([...Y].map(ot=>new Promise(ft=>{function wt(){if(ot.style.display="flex",ot.style.flexDirection="column",nt){const mt=Re().fontSize?Re().fontSize:window.getComputedStyle(document.body).fontSize,ct=5,rt=parseInt(mt,10)*ct+"px";ot.style.minWidth=rt,ot.style.maxWidth=rt}else ot.style.width="100%";ft(ot)}setTimeout(()=>{ot.complete&&wt()}),ot.addEventListener("error",wt),ot.addEventListener("load",wt)})))}F=B.getBoundingClientRect(),z.attr("width",F.width),z.attr("height",F.height)}return v?E.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"):E.attr("transform","translate(0, "+-F.height/2+")"),a.centerLabel&&E.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),E.insert("rect",":first-child"),{shapeSvg:b,bbox:F,halfPadding:R,label:E}},xh=(i,a)=>{const f=a.node().getBBox();i.width=f.width,i.height=f.height};function l4(i,a,f,g){return i.insert("polygon",":first-child").attr("points",g.map(function(w){return w.x+","+w.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-a/2+","+f/2+")")}let ho={},ty={},X$t={};const DKe=()=>{ty={},X$t={},ho={}},tX=(i,a)=>(Kt.trace("In isDecendant",a," ",i," = ",ty[a].includes(i)),!!ty[a].includes(i)),MKe=(i,a)=>(Kt.info("Decendants of ",a," is ",ty[a]),Kt.info("Edge is ",i),i.v===a||i.w===a?!1:ty[a]?ty[a].includes(i.v)||tX(i.v,a)||tX(i.w,a)||ty[a].includes(i.w):(Kt.debug("Tilt, ",a,",not in decendants"),!1)),Q$t=(i,a,f,g)=>{Kt.warn("Copying children of ",i,"root",g,"data",a.node(i),g);const w=a.children(i)||[];i!==g&&w.push(i),Kt.warn("Copying (nodes) clusterId",i,"nodes",w),w.forEach(v=>{if(a.children(v).length>0)Q$t(v,a,f,g);else{const b=a.node(v);Kt.info("cp ",v," to ",g," with parent ",i),f.setNode(v,b),g!==a.parent(v)&&(Kt.warn("Setting parent",v,a.parent(v)),f.setParent(v,a.parent(v))),i!==g&&v!==i?(Kt.debug("Setting parent",v,i),f.setParent(v,i)):(Kt.info("In copy ",i,"root",g,"data",a.node(i),g),Kt.debug("Not Setting parent for node=",v,"cluster!==rootId",i!==g,"node!==clusterId",v!==i));const E=a.edges(v);Kt.debug("Copying Edges",E),E.forEach(S=>{Kt.info("Edge",S);const _=a.edge(S.v,S.w,S.name);Kt.info("Edge data",_,g);try{MKe(S,g)?(Kt.info("Copying as ",S.v,S.w,_,S.name),f.setEdge(S.v,S.w,_,S.name),Kt.info("newGraph edges ",f.edges(),f.edge(f.edges()[0]))):Kt.info("Skipping copy of edge ",S.v,"-->",S.w," rootId: ",g," clusterId:",i)}catch(M){Kt.error(M)}})}Kt.debug("Removing node",v),a.removeNode(v)})},J$t=(i,a)=>{const f=a.children(i);let g=[...f];for(const w of f)X$t[w]=i,g=[...g,...J$t(w,a)];return g},tB=(i,a)=>{Kt.trace("Searching",i);const f=a.children(i);if(Kt.trace("Searching children of id ",i,f),f.length<1)return Kt.trace("This is a valid node",i),i;for(const g of f){const w=tB(g,a);if(w)return Kt.trace("Found replacement for",i," => ",w),w}},eX=i=>!ho[i]||!ho[i].externalConnections?i:ho[i]?ho[i].id:i,IKe=(i,a)=>{if(!i||a>10){Kt.debug("Opting out, no graph ");return}else Kt.debug("Opting in, graph ");i.nodes().forEach(function(f){i.children(f).length>0&&(Kt.warn("Cluster identified",f," Replacement id in edges: ",tB(f,i)),ty[f]=J$t(f,i),ho[f]={id:tB(f,i),clusterData:i.node(f)})}),i.nodes().forEach(function(f){const g=i.children(f),w=i.edges();g.length>0?(Kt.debug("Cluster identified",f,ty),w.forEach(v=>{if(v.v!==f&&v.w!==f){const b=tX(v.v,f),E=tX(v.w,f);b^E&&(Kt.warn("Edge: ",v," leaves cluster ",f),Kt.warn("Decendants of XXX ",f,": ",ty[f]),ho[f].externalConnections=!0)}})):Kt.debug("Not a cluster ",f,ty)});for(let f of Object.keys(ho)){const g=ho[f].id,w=i.parent(g);w!==f&&ho[w]&&!ho[w].externalConnections&&(ho[f].id=w)}i.edges().forEach(function(f){const g=i.edge(f);Kt.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(f)),Kt.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(i.edge(f)));let w=f.v,v=f.w;if(Kt.warn("Fix XXX",ho,"ids:",f.v,f.w,"Translating: ",ho[f.v]," --- ",ho[f.w]),ho[f.v]&&ho[f.w]&&ho[f.v]===ho[f.w]){Kt.warn("Fixing and trixing link to self - removing XXX",f.v,f.w,f.name),Kt.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=eX(f.v),v=eX(f.w),i.removeEdge(f.v,f.w,f.name);const b=f.w+"---"+f.v;i.setNode(b,{domId:b,id:b,labelStyle:"",labelText:g.label,padding:0,shape:"labelRect",style:""});const E=structuredClone(g),S=structuredClone(g);E.label="",E.arrowTypeEnd="none",S.label="",E.fromCluster=f.v,S.toCluster=f.v,i.setEdge(w,b,E,f.name+"-cyclic-special"),i.setEdge(b,v,S,f.name+"-cyclic-special")}else if(ho[f.v]||ho[f.w]){if(Kt.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=eX(f.v),v=eX(f.w),i.removeEdge(f.v,f.w,f.name),w!==f.v){const b=i.parent(w);ho[b].externalConnections=!0,g.fromCluster=f.v}if(v!==f.w){const b=i.parent(v);ho[b].externalConnections=!0,g.toCluster=f.w}Kt.warn("Fix Replacing with XXX",w,v,f.name),i.setEdge(w,v,g,f.name)}}),Kt.warn("Adjusted Graph",jx(i)),Z$t(i,0),Kt.trace(ho)},Z$t=(i,a)=>{if(Kt.warn("extractor - ",a,jx(i),i.children("D")),a>10){Kt.error("Bailing out");return}let f=i.nodes(),g=!1;for(const w of f){const v=i.children(w);g=g||v.length>0}if(!g){Kt.debug("Done, no node has children",i.nodes());return}Kt.debug("Nodes = ",f,a);for(const w of f)if(Kt.debug("Extracting node",w,ho,ho[w]&&!ho[w].externalConnections,!i.parent(w),i.node(w),i.children("D")," Depth ",a),!ho[w])Kt.debug("Not a cluster",w,a);else if(!ho[w].externalConnections&&i.children(w)&&i.children(w).length>0){Kt.warn("Cluster without external connections, without a parent and with children",w,a);let b=i.graph().rankdir==="TB"?"LR":"TB";ho[w]&&ho[w].clusterData&&ho[w].clusterData.dir&&(b=ho[w].clusterData.dir,Kt.warn("Fixing dir",ho[w].clusterData.dir,b));const E=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:b,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Kt.warn("Old graph before copy",jx(i)),Q$t(w,i,E,w),i.setNode(w,{clusterNode:!0,id:w,clusterData:ho[w].clusterData,labelText:ho[w].labelText,graph:E}),Kt.warn("New graph after copy node: (",w,")",jx(E)),Kt.debug("Old graph after copy",jx(i))}else Kt.warn("Cluster ** ",w," **not meeting the criteria !externalConnections:",!ho[w].externalConnections," no parent: ",!i.parent(w)," children ",i.children(w)&&i.children(w).length>0,i.children("D"),a),Kt.debug(ho);f=i.nodes(),Kt.warn("New list of nodes",f);for(const w of f){const v=i.node(w);Kt.warn(" Now next level",w,v),v.clusterNode&&Z$t(v.graph,a+1)}},tzt=(i,a)=>{if(a.length===0)return[];let f=Object.assign(a);return a.forEach(g=>{const w=i.children(g),v=tzt(i,w);f=[...f,...v]}),f},OKe=i=>tzt(i,i.children());function NKe(i,a){return i.intersect(a)}function ezt(i,a,f,g){var w=i.x,v=i.y,b=w-g.x,E=v-g.y,S=Math.sqrt(a*a*E*E+f*f*b*b),_=Math.abs(a*f*b/S);g.x0}function BKe(i,a,f){var g=i.x,w=i.y,v=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;typeof a.forEach=="function"?a.forEach(function(z){b=Math.min(b,z.x),E=Math.min(E,z.y)}):(b=Math.min(b,a.x),E=Math.min(E,a.y));for(var S=g-i.width/2-b,_=w-i.height/2-E,M=0;M1&&v.sort(function(z,Y){var nt=z.x-f.x,ot=z.y-f.y,ft=Math.sqrt(nt*nt+ot*ot),wt=Y.x-f.x,mt=Y.y-f.y,ct=Math.sqrt(wt*wt+mt*mt);return ft{var f=i.x,g=i.y,w=a.x-f,v=a.y-g,b=i.width/2,E=i.height/2,S,_;return Math.abs(v)*b>Math.abs(w)*E?(v<0&&(E=-E),S=v===0?0:E*w/v,_=E):(w<0&&(b=-b),S=b,_=w===0?0:b*v/w),{x:f+S,y:g+_}},Ql={node:NKe,circle:PKe,ellipse:ezt,polygon:BKe,rect:eB},RKe=async(i,a)=>{a.useHtmlLabels||Re().flowchart.htmlLabels||(a.centerLabel=!0);const{shapeSvg:g,bbox:w,halfPadding:v}=await $1(i,a,"node "+a.classes,!0);Kt.info("Classes = ",a.classes);const b=g.insert("rect",":first-child");return b.attr("rx",a.rx).attr("ry",a.ry).attr("x",-w.width/2-v).attr("y",-w.height/2-v).attr("width",w.width+a.padding).attr("height",w.height+a.padding),xh(a,b),a.intersect=function(E){return Ql.rect(a,E)},g},jKe=i=>{const a=new Set;for(const f of i)switch(f){case"x":a.add("right"),a.add("left");break;case"y":a.add("up"),a.add("down");break;default:a.add(f);break}return a},$Ke=(i,a,f)=>{const g=jKe(i),w=2,v=a.height+2*f.padding,b=v/w,E=a.width+2*b+f.padding,S=f.padding/2;return g.has("right")&&g.has("left")&&g.has("up")&&g.has("down")?[{x:0,y:0},{x:b,y:0},{x:E/2,y:2*S},{x:E-b,y:0},{x:E,y:0},{x:E,y:-v/3},{x:E+2*S,y:-v/2},{x:E,y:-2*v/3},{x:E,y:-v},{x:E-b,y:-v},{x:E/2,y:-v-2*S},{x:b,y:-v},{x:0,y:-v},{x:0,y:-2*v/3},{x:-2*S,y:-v/2},{x:0,y:-v/3}]:g.has("right")&&g.has("left")&&g.has("up")?[{x:b,y:0},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:b,y:-v},{x:0,y:-v/2}]:g.has("right")&&g.has("left")&&g.has("down")?[{x:0,y:0},{x:b,y:-v},{x:E-b,y:-v},{x:E,y:0}]:g.has("right")&&g.has("up")&&g.has("down")?[{x:0,y:0},{x:E,y:-b},{x:E,y:-v+b},{x:0,y:-v}]:g.has("left")&&g.has("up")&&g.has("down")?[{x:E,y:0},{x:0,y:-b},{x:0,y:-v+b},{x:E,y:-v}]:g.has("right")&&g.has("left")?[{x:b,y:0},{x:b,y:-S},{x:E-b,y:-S},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:E-b,y:-v+S},{x:b,y:-v+S},{x:b,y:-v},{x:0,y:-v/2}]:g.has("up")&&g.has("down")?[{x:E/2,y:0},{x:0,y:-S},{x:b,y:-S},{x:b,y:-v+S},{x:0,y:-v+S},{x:E/2,y:-v},{x:E,y:-v+S},{x:E-b,y:-v+S},{x:E-b,y:-S},{x:E,y:-S}]:g.has("right")&&g.has("up")?[{x:0,y:0},{x:E,y:-b},{x:0,y:-v}]:g.has("right")&&g.has("down")?[{x:0,y:0},{x:E,y:0},{x:0,y:-v}]:g.has("left")&&g.has("up")?[{x:E,y:0},{x:0,y:-b},{x:E,y:-v}]:g.has("left")&&g.has("down")?[{x:E,y:0},{x:0,y:0},{x:E,y:-v}]:g.has("right")?[{x:b,y:-S},{x:b,y:-S},{x:E-b,y:-S},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:E-b,y:-v+S},{x:b,y:-v+S},{x:b,y:-v+S}]:g.has("left")?[{x:b,y:0},{x:b,y:-S},{x:E-b,y:-S},{x:E-b,y:-v+S},{x:b,y:-v+S},{x:b,y:-v},{x:0,y:-v/2}]:g.has("up")?[{x:b,y:-S},{x:b,y:-v+S},{x:0,y:-v+S},{x:E/2,y:-v},{x:E,y:-v+S},{x:E-b,y:-v+S},{x:E-b,y:-S}]:g.has("down")?[{x:E/2,y:0},{x:0,y:-S},{x:b,y:-S},{x:b,y:-v+S},{x:E-b,y:-v+S},{x:E-b,y:-S},{x:E,y:-S}]:[{x:0,y:0}]},rzt=i=>i?" "+i:"",L2=(i,a)=>`${a||"node default"}${rzt(i.classes)} ${rzt(i.class)}`,izt=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=w+v,E=[{x:b/2,y:0},{x:b,y:-b/2},{x:b/2,y:-b},{x:0,y:-b/2}];Kt.info("Question main (Circle)");const S=l4(f,b,b,E);return S.attr("style",a.style),xh(a,S),a.intersect=function(_){return Kt.warn("Intersect called"),Ql.polygon(a,E,_)},f},zKe=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=28,w=[{x:0,y:g/2},{x:g/2,y:0},{x:0,y:-g/2},{x:-g/2,y:0}];return f.insert("polygon",":first-child").attr("points",w.map(function(b){return b.x+","+b.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),a.width=28,a.height=28,a.intersect=function(b){return Ql.circle(a,14,b)},f},qKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=4,v=g.height+a.padding,b=v/w,E=g.width+2*b+a.padding,S=[{x:b,y:0},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:b,y:-v},{x:0,y:-v/2}],_=l4(f,E,v,S);return _.attr("style",a.style),xh(a,_),a.intersect=function(M){return Ql.polygon(a,S,M)},f},HKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,void 0,!0),w=2,v=g.height+2*a.padding,b=v/w,E=g.width+2*b+a.padding,S=$Ke(a.directions,g,a),_=l4(f,E,v,S);return _.attr("style",a.style),xh(a,_),a.intersect=function(M){return Ql.polygon(a,S,M)},f},VKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-v/2,y:0},{x:w,y:0},{x:w,y:-v},{x:-v/2,y:-v},{x:0,y:-v/2}];return l4(f,w,v,b).attr("style",a.style),a.width=w+v,a.height=v,a.intersect=function(S){return Ql.polygon(a,b,S)},f},UKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-2*v/6,y:0},{x:w-v/6,y:0},{x:w+2*v/6,y:-v},{x:v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},GKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:2*v/6,y:0},{x:w+v/6,y:0},{x:w-2*v/6,y:-v},{x:-v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},KKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-2*v/6,y:0},{x:w+2*v/6,y:0},{x:w-v/6,y:-v},{x:v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},WKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:v/6,y:0},{x:w-v/6,y:0},{x:w+2*v/6,y:-v},{x:-2*v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},YKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:0,y:0},{x:w+v/2,y:0},{x:w,y:-v/2},{x:w+v/2,y:-v},{x:0,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},XKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=w/2,b=v/(2.5+w/50),E=g.height+b+a.padding,S="M 0,"+b+" a "+v+","+b+" 0,0,0 "+w+" 0 a "+v+","+b+" 0,0,0 "+-w+" 0 l 0,"+E+" a "+v+","+b+" 0,0,0 "+w+" 0 l 0,"+-E,_=f.attr("label-offset-y",b).insert("path",":first-child").attr("style",a.style).attr("d",S).attr("transform","translate("+-w/2+","+-(E/2+b)+")");return xh(a,_),a.intersect=function(M){const F=Ql.rect(a,M),R=F.x-a.x;if(v!=0&&(Math.abs(R)a.height/2-b)){let B=b*b*(1-R*R/(v*v));B!=0&&(B=Math.sqrt(B)),B=b-B,M.y-a.y>0&&(B=-B),F.y+=B}return F},f},QKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,"node "+a.classes+" "+a.class,!0),v=f.insert("rect",":first-child"),b=a.positioned?a.width:g.width+a.padding,E=a.positioned?a.height:g.height+a.padding,S=a.positioned?-b/2:-g.width/2-w,_=a.positioned?-E/2:-g.height/2-w;if(v.attr("class","basic label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",S).attr("y",_).attr("width",b).attr("height",E),a.props){const M=new Set(Object.keys(a.props));a.props.borders&&(Jpt(v,a.props.borders,b,E),M.delete("borders")),M.forEach(F=>{Kt.warn(`Unknown node property ${F}`)})}return xh(a,v),a.intersect=function(M){return Ql.rect(a,M)},f},JKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,"node "+a.classes,!0),v=f.insert("rect",":first-child"),b=a.positioned?a.width:g.width+a.padding,E=a.positioned?a.height:g.height+a.padding,S=a.positioned?-b/2:-g.width/2-w,_=a.positioned?-E/2:-g.height/2-w;if(v.attr("class","basic cluster composite label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",S).attr("y",_).attr("width",b).attr("height",E),a.props){const M=new Set(Object.keys(a.props));a.props.borders&&(Jpt(v,a.props.borders,b,E),M.delete("borders")),M.forEach(F=>{Kt.warn(`Unknown node property ${F}`)})}return xh(a,v),a.intersect=function(M){return Ql.rect(a,M)},f},ZKe=async(i,a)=>{const{shapeSvg:f}=await $1(i,a,"label",!0);Kt.trace("Classes = ",a.class);const g=f.insert("rect",":first-child"),w=0,v=0;if(g.attr("width",w).attr("height",v),f.attr("class","label edgeLabel"),a.props){const b=new Set(Object.keys(a.props));a.props.borders&&(Jpt(g,a.props.borders,w,v),b.delete("borders")),b.forEach(E=>{Kt.warn(`Unknown node property ${E}`)})}return xh(a,g),a.intersect=function(b){return Ql.rect(a,b)},f};function Jpt(i,a,f,g){const w=[],v=E=>{w.push(E,0)},b=E=>{w.push(0,E)};a.includes("t")?(Kt.debug("add top border"),v(f)):b(f),a.includes("r")?(Kt.debug("add right border"),v(g)):b(g),a.includes("b")?(Kt.debug("add bottom border"),v(f)):b(f),a.includes("l")?(Kt.debug("add left border"),v(g)):b(g),i.attr("stroke-dasharray",w.join(" "))}const tWe=(i,a)=>{let f;a.classes?f="node "+a.classes:f="node default";const g=i.insert("g").attr("class",f).attr("id",a.domId||a.id),w=g.insert("rect",":first-child"),v=g.insert("line"),b=g.insert("g").attr("class","label"),E=a.labelText.flat?a.labelText.flat():a.labelText;let S="";typeof E=="object"?S=E[0]:S=E,Kt.info("Label text abc79",S,E,typeof E=="object");const _=b.node().appendChild(ab(S,a.labelStyle,!0,!0));let M={width:0,height:0};if(j1(Re().flowchart.htmlLabels)){const Y=_.children[0],nt=Tr(_);M=Y.getBoundingClientRect(),nt.attr("width",M.width),nt.attr("height",M.height)}Kt.info("Text 2",E);const F=E.slice(1,E.length);let R=_.getBBox();const B=b.node().appendChild(ab(F.join?F.join("
    "):F,a.labelStyle,!0,!0));if(j1(Re().flowchart.htmlLabels)){const Y=B.children[0],nt=Tr(B);M=Y.getBoundingClientRect(),nt.attr("width",M.width),nt.attr("height",M.height)}const z=a.padding/2;return Tr(B).attr("transform","translate( "+(M.width>R.width?0:(R.width-M.width)/2)+", "+(R.height+z+5)+")"),Tr(_).attr("transform","translate( "+(M.width{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.height+a.padding,v=g.width+w/4+a.padding,b=f.insert("rect",":first-child").attr("style",a.style).attr("rx",w/2).attr("ry",w/2).attr("x",-v/2).attr("y",-w/2).attr("width",v).attr("height",w);return xh(a,b),a.intersect=function(E){return Ql.rect(a,E)},f},nWe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,L2(a,void 0),!0),v=f.insert("circle",":first-child");return v.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w).attr("width",g.width+a.padding).attr("height",g.height+a.padding),Kt.info("Circle main"),xh(a,v),a.intersect=function(b){return Kt.info("Circle intersect",a,g.width/2+w,b),Ql.circle(a,g.width/2+w,b)},f},rWe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,L2(a,void 0),!0),v=5,b=f.insert("g",":first-child"),E=b.insert("circle"),S=b.insert("circle");return b.attr("class",a.class),E.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w+v).attr("width",g.width+a.padding+v*2).attr("height",g.height+a.padding+v*2),S.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w).attr("width",g.width+a.padding).attr("height",g.height+a.padding),Kt.info("DoubleCircle main"),xh(a,E),a.intersect=function(_){return Kt.info("DoubleCircle intersect",a,g.width/2+w+v,_),Ql.circle(a,g.width/2+w+v,_)},f},iWe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:0,y:0},{x:w,y:0},{x:w,y:-v},{x:0,y:-v},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-v},{x:-8,y:-v},{x:-8,y:0}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},sWe=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=f.insert("circle",":first-child");return g.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),xh(a,g),a.intersect=function(w){return Ql.circle(a,7,w)},f},szt=(i,a,f)=>{const g=i.insert("g").attr("class","node default").attr("id",a.domId||a.id);let w=70,v=10;f==="LR"&&(w=10,v=70);const b=g.append("rect").attr("x",-1*w/2).attr("y",-1*v/2).attr("width",w).attr("height",v).attr("class","fork-join");return xh(a,b),a.height=a.height+a.padding/2,a.width=a.width+a.padding/2,a.intersect=function(E){return Ql.rect(a,E)},g},azt={rhombus:izt,composite:JKe,question:izt,rect:QKe,labelRect:ZKe,rectWithTitle:tWe,choice:zKe,circle:nWe,doublecircle:rWe,stadium:eWe,hexagon:qKe,block_arrow:HKe,rect_left_inv_arrow:VKe,lean_right:UKe,lean_left:GKe,trapezoid:KKe,inv_trapezoid:WKe,rect_right_inv_arrow:YKe,cylinder:XKe,start:sWe,end:(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=f.insert("circle",":first-child"),w=f.insert("circle",":first-child");return w.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),g.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),xh(a,w),a.intersect=function(v){return Ql.circle(a,7,v)},f},note:RKe,subroutine:iWe,fork:szt,join:szt,class_box:(i,a)=>{const f=a.padding/2,g=4,w=8;let v;a.classes?v="node "+a.classes:v="node default";const b=i.insert("g").attr("class",v).attr("id",a.domId||a.id),E=b.insert("rect",":first-child"),S=b.insert("line"),_=b.insert("line");let M=0,F=g;const R=b.insert("g").attr("class","label");let B=0;const z=a.classData.annotations&&a.classData.annotations[0],Y=a.classData.annotations[0]?"«"+a.classData.annotations[0]+"»":"",nt=R.node().appendChild(ab(Y,a.labelStyle,!0,!0));let ot=nt.getBBox();if(j1(Re().flowchart.htmlLabels)){const gt=nt.children[0],Q=Tr(nt);ot=gt.getBoundingClientRect(),Q.attr("width",ot.width),Q.attr("height",ot.height)}a.classData.annotations[0]&&(F+=ot.height+g,M+=ot.width);let ft=a.classData.label;a.classData.type!==void 0&&a.classData.type!==""&&(Re().flowchart.htmlLabels?ft+="<"+a.classData.type+">":ft+="<"+a.classData.type+">");const wt=R.node().appendChild(ab(ft,a.labelStyle,!0,!0));Tr(wt).attr("class","classTitle");let mt=wt.getBBox();if(j1(Re().flowchart.htmlLabels)){const gt=wt.children[0],Q=Tr(wt);mt=gt.getBoundingClientRect(),Q.attr("width",mt.width),Q.attr("height",mt.height)}F+=mt.height+g,mt.width>M&&(M=mt.width);const ct=[];a.classData.members.forEach(gt=>{const Q=gt.getDisplayDetails();let dt=Q.displayText;Re().flowchart.htmlLabels&&(dt=dt.replace(//g,">"));const K=R.node().appendChild(ab(dt,Q.cssStyle?Q.cssStyle:a.labelStyle,!0,!0));let yt=K.getBBox();if(j1(Re().flowchart.htmlLabels)){const V=K.children[0],Ot=Tr(K);yt=V.getBoundingClientRect(),Ot.attr("width",yt.width),Ot.attr("height",yt.height)}yt.width>M&&(M=yt.width),F+=yt.height+g,ct.push(K)}),F+=w;const rt=[];if(a.classData.methods.forEach(gt=>{const Q=gt.getDisplayDetails();let dt=Q.displayText;Re().flowchart.htmlLabels&&(dt=dt.replace(//g,">"));const K=R.node().appendChild(ab(dt,Q.cssStyle?Q.cssStyle:a.labelStyle,!0,!0));let yt=K.getBBox();if(j1(Re().flowchart.htmlLabels)){const V=K.children[0],Ot=Tr(K);yt=V.getBoundingClientRect(),Ot.attr("width",yt.width),Ot.attr("height",yt.height)}yt.width>M&&(M=yt.width),F+=yt.height+g,rt.push(K)}),F+=w,z){let gt=(M-ot.width)/2;Tr(nt).attr("transform","translate( "+(-1*M/2+gt)+", "+-1*F/2+")"),B=ot.height+g}let it=(M-mt.width)/2;return Tr(wt).attr("transform","translate( "+(-1*M/2+it)+", "+(-1*F/2+B)+")"),B+=mt.height+g,S.attr("class","divider").attr("x1",-M/2-f).attr("x2",M/2+f).attr("y1",-F/2-f+w+B).attr("y2",-F/2-f+w+B),B+=w,ct.forEach(gt=>{Tr(gt).attr("transform","translate( "+-M/2+", "+(-1*F/2+B+w/2)+")");const Q=gt==null?void 0:gt.getBBox();B+=((Q==null?void 0:Q.height)??0)+g}),B+=w,_.attr("class","divider").attr("x1",-M/2-f).attr("x2",M/2+f).attr("y1",-F/2-f+w+B).attr("y2",-F/2-f+w+B),B+=w,rt.forEach(gt=>{Tr(gt).attr("transform","translate( "+-M/2+", "+(-1*F/2+B)+")");const Q=gt==null?void 0:gt.getBBox();B+=((Q==null?void 0:Q.height)??0)+g}),E.attr("style",a.style).attr("class","outer title-state").attr("x",-M/2-f).attr("y",-(F/2)-f).attr("width",M+a.padding).attr("height",F+a.padding),xh(a,E),a.intersect=function(gt){return Ql.rect(a,gt)},b}};let TD={};const nX=async(i,a,f)=>{let g,w;if(a.link){let v;Re().securityLevel==="sandbox"?v="_top":a.linkTarget&&(v=a.linkTarget||"_blank"),g=i.insert("svg:a").attr("xlink:href",a.link).attr("target",v),w=await azt[a.shape](g,a,f)}else w=await azt[a.shape](i,a,f),g=w;return a.tooltip&&w.attr("title",a.tooltip),a.class&&w.attr("class","node default "+a.class),g.attr("data-node","true"),g.attr("data-id",a.id),TD[a.id]=g,a.haveCallback&&TD[a.id].attr("class",TD[a.id].attr("class")+" clickable"),g},aWe=(i,a)=>{TD[a.id]=i},oWe=()=>{TD={}},Zpt=i=>{const a=TD[i.id];Kt.trace("Transforming node",i.diff,i,"translate("+(i.x-i.width/2-5)+", "+i.width/2+")");const f=8,g=i.diff||0;return i.clusterNode?a.attr("transform","translate("+(i.x+g-i.width/2)+", "+(i.y-i.height/2-f)+")"):a.attr("transform","translate("+i.x+", "+i.y+")"),g},rX=({flowchart:i})=>{var w,v;const a=((w=i==null?void 0:i.subGraphTitleMargin)==null?void 0:w.top)??0,f=((v=i==null?void 0:i.subGraphTitleMargin)==null?void 0:v.bottom)??0,g=a+f;return{subGraphTitleTopMargin:a,subGraphTitleBottomMargin:f,subGraphTitleTotalMargin:g}},cWe={rect:(i,a)=>{Kt.info("Creating subgraph rect for ",a.id,a);const f=Re(),g=i.insert("g").attr("class","cluster"+(a.class?" "+a.class:"")).attr("id",a.id),w=g.insert("rect",":first-child"),v=j1(f.flowchart.htmlLabels),b=g.insert("g").attr("class","cluster-label"),E=a.labelType==="markdown"?ZY(b,a.labelText,{style:a.labelStyle,useHtmlLabels:v}):b.node().appendChild(ab(a.labelText,a.labelStyle,void 0,!0));let S=E.getBBox();if(j1(f.flowchart.htmlLabels)){const z=E.children[0],Y=Tr(E);S=z.getBoundingClientRect(),Y.attr("width",S.width),Y.attr("height",S.height)}const _=0*a.padding,M=_/2,F=a.width<=S.width+_?S.width+_:a.width;a.width<=S.width+_?a.diff=(S.width-a.width)/2-a.padding/2:a.diff=-a.padding/2,Kt.trace("Data ",a,JSON.stringify(a)),w.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-F/2).attr("y",a.y-a.height/2-M).attr("width",F).attr("height",a.height+_);const{subGraphTitleTopMargin:R}=rX(f);v?b.attr("transform",`translate(${a.x-S.width/2}, ${a.y-a.height/2+R})`):b.attr("transform",`translate(${a.x}, ${a.y-a.height/2+R})`);const B=w.node().getBBox();return a.width=B.width,a.height=B.height,a.intersect=function(z){return eB(a,z)},g},roundedWithTitle:(i,a)=>{const f=Re(),g=i.insert("g").attr("class",a.classes).attr("id",a.id),w=g.insert("rect",":first-child"),v=g.insert("g").attr("class","cluster-label"),b=g.append("rect"),E=v.node().appendChild(ab(a.labelText,a.labelStyle,void 0,!0));let S=E.getBBox();if(j1(f.flowchart.htmlLabels)){const z=E.children[0],Y=Tr(E);S=z.getBoundingClientRect(),Y.attr("width",S.width),Y.attr("height",S.height)}S=E.getBBox();const _=0*a.padding,M=_/2,F=a.width<=S.width+a.padding?S.width+a.padding:a.width;a.width<=S.width+a.padding?a.diff=(S.width+a.padding*0-a.width)/2:a.diff=-a.padding/2,w.attr("class","outer").attr("x",a.x-F/2-M).attr("y",a.y-a.height/2-M).attr("width",F+_).attr("height",a.height+_),b.attr("class","inner").attr("x",a.x-F/2-M).attr("y",a.y-a.height/2-M+S.height-1).attr("width",F+_).attr("height",a.height+_-S.height-3);const{subGraphTitleTopMargin:R}=rX(f);v.attr("transform",`translate(${a.x-S.width/2}, ${a.y-a.height/2-a.padding/3+(j1(f.flowchart.htmlLabels)?5:3)+R})`);const B=w.node().getBBox();return a.height=B.height,a.intersect=function(z){return eB(a,z)},g},noteGroup:(i,a)=>{const f=i.insert("g").attr("class","note-cluster").attr("id",a.id),g=f.insert("rect",":first-child"),w=0*a.padding,v=w/2;g.attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-a.width/2-v).attr("y",a.y-a.height/2-v).attr("width",a.width+w).attr("height",a.height+w).attr("fill","none");const b=g.node().getBBox();return a.width=b.width,a.height=b.height,a.intersect=function(E){return eB(a,E)},f},divider:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),g=f.insert("rect",":first-child"),w=0*a.padding,v=w/2;g.attr("class","divider").attr("x",a.x-a.width/2-v).attr("y",a.y-a.height/2).attr("width",a.width+w).attr("height",a.height+w);const b=g.node().getBBox();return a.width=b.width,a.height=b.height,a.diff=-a.padding/2,a.intersect=function(E){return eB(a,E)},f}};let ozt={};const uWe=(i,a)=>{Kt.trace("Inserting cluster");const f=a.shape||"rect";ozt[a.id]=cWe[f](i,a)},lWe=()=>{ozt={}},C8={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function iX(i,a){if(i===void 0||a===void 0)return{angle:0,deltaX:0,deltaY:0};i=sX(i),a=sX(a);const[f,g]=[i.x,i.y],[w,v]=[a.x,a.y],b=w-f,E=v-g;return{angle:Math.atan(E/b),deltaX:b,deltaY:E}}const sX=i=>Array.isArray(i)?{x:i[0],y:i[1]}:i,czt=i=>({x:function(a,f,g){let w=0;if(f===0&&Object.hasOwn(C8,i.arrowTypeStart)){const{angle:v,deltaX:b}=iX(g[0],g[1]);w=C8[i.arrowTypeStart]*Math.cos(v)*(b>=0?1:-1)}else if(f===g.length-1&&Object.hasOwn(C8,i.arrowTypeEnd)){const{angle:v,deltaX:b}=iX(g[g.length-1],g[g.length-2]);w=C8[i.arrowTypeEnd]*Math.cos(v)*(b>=0?1:-1)}return sX(a).x+w},y:function(a,f,g){let w=0;if(f===0&&Object.hasOwn(C8,i.arrowTypeStart)){const{angle:v,deltaY:b}=iX(g[0],g[1]);w=C8[i.arrowTypeStart]*Math.abs(Math.sin(v))*(b>=0?1:-1)}else if(f===g.length-1&&Object.hasOwn(C8,i.arrowTypeEnd)){const{angle:v,deltaY:b}=iX(g[g.length-1],g[g.length-2]);w=C8[i.arrowTypeEnd]*Math.abs(Math.sin(v))*(b>=0?1:-1)}return sX(a).y+w}}),uzt=(i,a,f,g,w)=>{a.arrowTypeStart&&lzt(i,"start",a.arrowTypeStart,f,g,w),a.arrowTypeEnd&&lzt(i,"end",a.arrowTypeEnd,f,g,w)},hWe={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},lzt=(i,a,f,g,w,v)=>{const b=hWe[f];if(!b){Kt.warn(`Unknown arrow type: ${f}`);return}const E=a==="start"?"Start":"End";i.attr(`marker-${a}`,`url(${g}#${w}_${v}-${b}${E})`)};let aX={},p0={};const fWe=()=>{aX={},p0={}},tbt=(i,a)=>{const f=j1(Re().flowchart.htmlLabels),g=a.labelType==="markdown"?ZY(i,a.label,{style:a.labelStyle,useHtmlLabels:f,addSvgBackground:!0}):ab(a.label,a.labelStyle),w=i.insert("g").attr("class","edgeLabel"),v=w.insert("g").attr("class","label");v.node().appendChild(g);let b=g.getBBox();if(f){const S=g.children[0],_=Tr(g);b=S.getBoundingClientRect(),_.attr("width",b.width),_.attr("height",b.height)}v.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),aX[a.id]=w,a.width=b.width,a.height=b.height;let E;if(a.startLabelLeft){const S=ab(a.startLabelLeft,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),p0[a.id]||(p0[a.id]={}),p0[a.id].startLeft=_,oX(E,a.startLabelLeft)}if(a.startLabelRight){const S=ab(a.startLabelRight,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=_.node().appendChild(S),M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),p0[a.id]||(p0[a.id]={}),p0[a.id].startRight=_,oX(E,a.startLabelRight)}if(a.endLabelLeft){const S=ab(a.endLabelLeft,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),_.node().appendChild(S),p0[a.id]||(p0[a.id]={}),p0[a.id].endLeft=_,oX(E,a.endLabelLeft)}if(a.endLabelRight){const S=ab(a.endLabelRight,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),_.node().appendChild(S),p0[a.id]||(p0[a.id]={}),p0[a.id].endRight=_,oX(E,a.endLabelRight)}return g};function oX(i,a){Re().flowchart.htmlLabels&&i&&(i.style.width=a.length*9+"px",i.style.height="12px")}const hzt=(i,a)=>{Kt.debug("Moving label abc88 ",i.id,i.label,aX[i.id],a);let f=a.updatedPath?a.updatedPath:a.originalPath;const g=Re(),{subGraphTitleTotalMargin:w}=rX(g);if(i.label){const v=aX[i.id];let b=i.x,E=i.y;if(f){const S=uo.calcLabelPosition(f);Kt.debug("Moving label "+i.label+" from (",b,",",E,") to (",S.x,",",S.y,") abc88"),a.updatedPath&&(b=S.x,E=S.y)}v.attr("transform",`translate(${b}, ${E+w/2})`)}if(i.startLabelLeft){const v=p0[i.id].startLeft;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_left",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}if(i.startLabelRight){const v=p0[i.id].startRight;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_right",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}if(i.endLabelLeft){const v=p0[i.id].endLeft;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_left",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}if(i.endLabelRight){const v=p0[i.id].endRight;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_right",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}},dWe=(i,a)=>{const f=i.x,g=i.y,w=Math.abs(a.x-f),v=Math.abs(a.y-g),b=i.width/2,E=i.height/2;return w>=b||v>=E},gWe=(i,a,f)=>{Kt.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(a)} + insidePoint : ${JSON.stringify(f)} + node : x:${i.x} y:${i.y} w:${i.width} h:${i.height}`);const g=i.x,w=i.y,v=Math.abs(g-f.x),b=i.width/2;let E=f.xMath.abs(g-a.x)*S){let F=f.y{Kt.debug("abc88 cutPathAtIntersect",i,a);let f=[],g=i[0],w=!1;return i.forEach(v=>{if(!dWe(a,v)&&!w){const b=gWe(a,g,v);let E=!1;f.forEach(S=>{E=E||S.x===b.x&&S.y===b.y}),f.some(S=>S.x===b.x&&S.y===b.y)||f.push(b),w=!0}else g=v,w||f.push(v)}),f},dzt=function(i,a,f,g,w,v,b){let E=f.points;Kt.debug("abc88 InsertEdge: edge=",f,"e=",a);let S=!1;const _=v.node(a.v);var M=v.node(a.w);M!=null&&M.intersect&&(_!=null&&_.intersect)&&(E=E.slice(1,f.points.length-1),E.unshift(_.intersect(E[0])),E.push(M.intersect(E[E.length-1]))),f.toCluster&&(Kt.debug("to cluster abc88",g[f.toCluster]),E=fzt(f.points,g[f.toCluster].node),S=!0),f.fromCluster&&(Kt.debug("from cluster abc88",g[f.fromCluster]),E=fzt(E.reverse(),g[f.fromCluster].node).reverse(),S=!0);const F=E.filter(mt=>!Number.isNaN(mt.y));let R=wF;f.curve&&(w==="graph"||w==="flowchart")&&(R=f.curve);const{x:B,y:z}=czt(f),Y=Ax().x(B).y(z).curve(R);let nt;switch(f.thickness){case"normal":nt="edge-thickness-normal";break;case"thick":nt="edge-thickness-thick";break;case"invisible":nt="edge-thickness-thick";break;default:nt=""}switch(f.pattern){case"solid":nt+=" edge-pattern-solid";break;case"dotted":nt+=" edge-pattern-dotted";break;case"dashed":nt+=" edge-pattern-dashed";break}const ot=i.append("path").attr("d",Y(F)).attr("id",f.id).attr("class"," "+nt+(f.classes?" "+f.classes:"")).attr("style",f.style);let ft="";(Re().flowchart.arrowMarkerAbsolute||Re().state.arrowMarkerAbsolute)&&(ft=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,ft=ft.replace(/\(/g,"\\("),ft=ft.replace(/\)/g,"\\)")),uzt(ot,f,ft,b,w);let wt={};return S&&(wt.updatedPath=E),wt.originalPath=f.points,wt},gzt=async(i,a,f,g,w,v)=>{Kt.info("Graph in recursive render: XXX",jx(a),w);const b=a.graph().rankdir;Kt.trace("Dir in recursive render - dir:",b);const E=i.insert("g").attr("class","root");a.nodes()?Kt.info("Recursive render XXX",a.nodes()):Kt.info("No nodes found for",a),a.edges().length>0&&Kt.trace("Recursive edges",a.edge(a.edges()[0]));const S=E.insert("g").attr("class","clusters"),_=E.insert("g").attr("class","edgePaths"),M=E.insert("g").attr("class","edgeLabels"),F=E.insert("g").attr("class","nodes");await Promise.all(a.nodes().map(async function(z){const Y=a.node(z);if(w!==void 0){const nt=JSON.parse(JSON.stringify(w.clusterData));Kt.info("Setting data for cluster XXX (",z,") ",nt,w),a.setNode(w.id,nt),a.parent(z)||(Kt.trace("Setting parent",z,w.id),a.setParent(z,w.id,nt))}if(Kt.info("(Insert) Node XXX"+z+": "+JSON.stringify(a.node(z))),Y&&Y.clusterNode){Kt.info("Cluster identified",z,Y.width,a.node(z));const nt=await gzt(F,Y.graph,f,g,a.node(z),v),ot=nt.elem;xh(Y,ot),Y.diff=nt.diff||0,Kt.info("Node bounds (abc123)",z,Y,Y.width,Y.x,Y.y),aWe(ot,Y),Kt.warn("Recursive render complete ",ot,Y)}else a.children(z).length>0?(Kt.info("Cluster - the non recursive path XXX",z,Y.id,Y,a),Kt.info(tB(Y.id,a)),ho[Y.id]={id:tB(Y.id,a),node:Y}):(Kt.info("Node - the non recursive path",z,Y.id,Y),await nX(F,a.node(z),b))})),a.edges().forEach(function(z){const Y=a.edge(z.v,z.w,z.name);Kt.info("Edge "+z.v+" -> "+z.w+": "+JSON.stringify(z)),Kt.info("Edge "+z.v+" -> "+z.w+": ",z," ",JSON.stringify(a.edge(z))),Kt.info("Fix",ho,"ids:",z.v,z.w,"Translateing: ",ho[z.v],ho[z.w]),tbt(M,Y)}),a.edges().forEach(function(z){Kt.info("Edge "+z.v+" -> "+z.w+": "+JSON.stringify(z))}),Kt.info("#############################################"),Kt.info("### Layout ###"),Kt.info("#############################################"),Kt.info(a),kD(a),Kt.info("Graph after layout:",jx(a));let R=0;const{subGraphTitleTotalMargin:B}=rX(v);return OKe(a).forEach(function(z){const Y=a.node(z);Kt.info("Position "+z+": "+JSON.stringify(a.node(z))),Kt.info("Position "+z+": ("+Y.x,","+Y.y,") width: ",Y.width," height: ",Y.height),Y&&Y.clusterNode?(Y.y+=B,Zpt(Y)):a.children(z).length>0?(Y.height+=B,uWe(S,Y),ho[Y.id].node=Y):(Y.y+=B/2,Zpt(Y))}),a.edges().forEach(function(z){const Y=a.edge(z);Kt.info("Edge "+z.v+" -> "+z.w+": "+JSON.stringify(Y),Y),Y.points.forEach(ot=>ot.y+=B/2);const nt=dzt(_,z,Y,ho,f,a,g);hzt(Y,nt)}),a.nodes().forEach(function(z){const Y=a.node(z);Kt.info(z,Y.type,Y.diff),Y.type==="group"&&(R=Y.diff)}),{elem:E,diff:R}},ebt=async(i,a,f,g,w)=>{jpt(i,f,g,w),oWe(),fWe(),lWe(),DKe(),Kt.warn("Graph at first:",JSON.stringify(jx(a))),IKe(a),Kt.warn("Graph after:",JSON.stringify(jx(a)));const v=Re();await gzt(i,a,g,w,void 0,v)},pzt={},pWe=function(i){const a=Object.keys(i);for(const f of a)pzt[f]=i[f]},bzt=function(i,a,f,g,w,v){const b=g.select(`[id="${f}"]`);Object.keys(i).forEach(function(S){const _=i[S];let M="default";_.classes.length>0&&(M=_.classes.join(" ")),M=M+" flowchart-label";const F=C2(_.styles);let R=_.text!==void 0?_.text:_.id,B;if(Kt.info("vertex",_,_.labelType),_.labelType==="markdown")Kt.info("vertex",_,_.labelType);else if(j1(Re().flowchart.htmlLabels)){const nt={label:R.replace(/fa[blrs]?:fa-[\w-]+/g,ot=>``)};B=Mpt(b,nt).node(),B.parentNode.removeChild(B)}else{const nt=w.createElementNS("http://www.w3.org/2000/svg","text");nt.setAttribute("style",F.labelStyle.replace("color:","fill:"));const ot=R.split(ei.lineBreakRegex);for(const ft of ot){const wt=w.createElementNS("http://www.w3.org/2000/svg","tspan");wt.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),wt.setAttribute("dy","1em"),wt.setAttribute("x","1"),wt.textContent=ft,nt.appendChild(wt)}B=nt}let z=0,Y="";switch(_.type){case"round":z=5,Y="rect";break;case"square":Y="rect";break;case"diamond":Y="question";break;case"hexagon":Y="hexagon";break;case"odd":Y="rect_left_inv_arrow";break;case"lean_right":Y="lean_right";break;case"lean_left":Y="lean_left";break;case"trapezoid":Y="trapezoid";break;case"inv_trapezoid":Y="inv_trapezoid";break;case"odd_right":Y="rect_left_inv_arrow";break;case"circle":Y="circle";break;case"ellipse":Y="ellipse";break;case"stadium":Y="stadium";break;case"subroutine":Y="subroutine";break;case"cylinder":Y="cylinder";break;case"group":Y="rect";break;case"doublecircle":Y="doublecircle";break;default:Y="rect"}a.setNode(_.id,{labelStyle:F.labelStyle,shape:Y,labelText:R,labelType:_.labelType,rx:z,ry:z,class:M,style:F.style,id:_.id,link:_.link,linkTarget:_.linkTarget,tooltip:v.db.getTooltip(_.id)||"",domId:v.db.lookUpDomId(_.id),haveCallback:_.haveCallback,width:_.type==="group"?500:void 0,dir:_.dir,type:_.type,props:_.props,padding:Re().flowchart.padding}),Kt.info("setNode",{labelStyle:F.labelStyle,labelType:_.labelType,shape:Y,labelText:R,rx:z,ry:z,class:M,style:F.style,id:_.id,domId:v.db.lookUpDomId(_.id),width:_.type==="group"?500:void 0,type:_.type,dir:_.dir,props:_.props,padding:Re().flowchart.padding})})},wzt=function(i,a,f){Kt.info("abc78 edges = ",i);let g=0,w={},v,b;if(i.defaultStyle!==void 0){const E=C2(i.defaultStyle);v=E.style,b=E.labelStyle}i.forEach(function(E){g++;const S="L-"+E.start+"-"+E.end;w[S]===void 0?(w[S]=0,Kt.info("abc78 new entry",S,w[S])):(w[S]++,Kt.info("abc78 new entry",S,w[S]));let _=S+"-"+w[S];Kt.info("abc78 new link id to be used is",S,_,w[S]);const M="LS-"+E.start,F="LE-"+E.end,R={style:"",labelStyle:""};switch(R.minlen=E.length||1,E.type==="arrow_open"?R.arrowhead="none":R.arrowhead="normal",R.arrowTypeStart="arrow_open",R.arrowTypeEnd="arrow_open",E.type){case"double_arrow_cross":R.arrowTypeStart="arrow_cross";case"arrow_cross":R.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":R.arrowTypeStart="arrow_point";case"arrow_point":R.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":R.arrowTypeStart="arrow_circle";case"arrow_circle":R.arrowTypeEnd="arrow_circle";break}let B="",z="";switch(E.stroke){case"normal":B="fill:none;",v!==void 0&&(B=v),b!==void 0&&(z=b),R.thickness="normal",R.pattern="solid";break;case"dotted":R.thickness="normal",R.pattern="dotted",R.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":R.thickness="thick",R.pattern="solid",R.style="stroke-width: 3.5px;fill:none;";break;case"invisible":R.thickness="invisible",R.pattern="solid",R.style="stroke-width: 0;fill:none;";break}if(E.style!==void 0){const Y=C2(E.style);B=Y.style,z=Y.labelStyle}R.style=R.style+=B,R.labelStyle=R.labelStyle+=z,E.interpolate!==void 0?R.curve=Xw(E.interpolate,Kg):i.defaultInterpolate!==void 0?R.curve=Xw(i.defaultInterpolate,Kg):R.curve=Xw(pzt.curve,Kg),E.text===void 0?E.style!==void 0&&(R.arrowheadStyle="fill: #333"):(R.arrowheadStyle="fill: #333",R.labelpos="c"),R.labelType=E.labelType,R.label=E.text.replace(ei.lineBreakRegex,` +`),E.style===void 0&&(R.style=R.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),R.labelStyle=R.labelStyle.replace("color:","fill:"),R.id=_,R.classes="flowchart-link "+M+" "+F,a.setEdge(E.start,E.end,R,g)})},nbt={setConf:pWe,addVertices:bzt,addEdges:wzt,getClasses:function(i,a){return a.db.getClasses()},draw:async function(i,a,f,g){Kt.info("Drawing flowchart");let w=g.db.getDirection();w===void 0&&(w="TD");const{securityLevel:v,flowchart:b}=Re(),E=b.nodeSpacing||50,S=b.rankSpacing||50;let _;v==="sandbox"&&(_=Tr("#i"+a));const M=Tr(v==="sandbox"?_.nodes()[0].contentDocument.body:"body"),F=v==="sandbox"?_.nodes()[0].contentDocument:document,R=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:w,nodesep:E,ranksep:S,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let B;const z=g.db.getSubGraphs();Kt.info("Subgraphs - ",z);for(let ct=z.length-1;ct>=0;ct--)B=z[ct],Kt.info("Subgraph - ",B),g.db.addVertex(B.id,{text:B.title,type:B.labelType},"group",void 0,B.classes,B.dir);const Y=g.db.getVertices(),nt=g.db.getEdges();Kt.info("Edges",nt);let ot=0;for(ot=z.length-1;ot>=0;ot--){B=z[ot],$Ot("cluster").append("text");for(let ct=0;ct{const f=jPt,g=f(i,"r"),w=f(i,"g"),v=f(i,"b");return g9(g,w,v,a)},mzt=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${bWe(i.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`,wWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:spt,db:A9,renderer:nbt,styles:mzt,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,wUe.setConf(i.flowchart),A9.clear(),A9.setGen("gen-1")}}},Symbol.toStringTag,{value:"Module"})),mWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:spt,db:A9,renderer:nbt,styles:mzt,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,bPe({flowchart:{arrowMarkerAbsolute:i.arrowMarkerAbsolute}}),nbt.setConf(i.flowchart),A9.clear(),A9.setGen("gen-2")}}},Symbol.toStringTag,{value:"Module"}));var rbt=function(){var i=function(gt,Q,dt,K){for(dt=dt||{},K=gt.length;K--;dt[gt[K]]=Q);return dt},a=[6,8,10,20,22,24,26,27,28],f=[1,10],g=[1,11],w=[1,12],v=[1,13],b=[1,14],E=[1,15],S=[1,21],_=[1,22],M=[1,23],F=[1,24],R=[1,25],B=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],z=[1,34],Y=[27,28,46,47],nt=[41,42,43,44,45],ot=[17,34],ft=[1,54],wt=[1,53],mt=[17,34,36,38],ct={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:function(Q,dt,K,yt,V,Ot,It){var jt=Ot.length-1;switch(V){case 1:break;case 2:this.$=[];break;case 3:Ot[jt-1].push(Ot[jt]),this.$=Ot[jt-1];break;case 4:case 5:this.$=Ot[jt];break;case 6:case 7:this.$=[];break;case 8:yt.addEntity(Ot[jt-4]),yt.addEntity(Ot[jt-2]),yt.addRelationship(Ot[jt-4],Ot[jt],Ot[jt-2],Ot[jt-3]);break;case 9:yt.addEntity(Ot[jt-3]),yt.addAttributes(Ot[jt-3],Ot[jt-1]);break;case 10:yt.addEntity(Ot[jt-2]);break;case 11:yt.addEntity(Ot[jt]);break;case 12:yt.addEntity(Ot[jt-6],Ot[jt-4]),yt.addAttributes(Ot[jt-6],Ot[jt-1]);break;case 13:yt.addEntity(Ot[jt-5],Ot[jt-3]);break;case 14:yt.addEntity(Ot[jt-3],Ot[jt-1]);break;case 15:case 16:this.$=Ot[jt].trim(),yt.setAccTitle(this.$);break;case 17:case 18:this.$=Ot[jt].trim(),yt.setAccDescription(this.$);break;case 19:case 43:this.$=Ot[jt];break;case 20:case 41:case 42:this.$=Ot[jt].replace(/"/g,"");break;case 21:case 29:this.$=[Ot[jt]];break;case 22:Ot[jt].push(Ot[jt-1]),this.$=Ot[jt];break;case 23:this.$={attributeType:Ot[jt-1],attributeName:Ot[jt]};break;case 24:this.$={attributeType:Ot[jt-2],attributeName:Ot[jt-1],attributeKeyTypeList:Ot[jt]};break;case 25:this.$={attributeType:Ot[jt-2],attributeName:Ot[jt-1],attributeComment:Ot[jt]};break;case 26:this.$={attributeType:Ot[jt-3],attributeName:Ot[jt-2],attributeKeyTypeList:Ot[jt-1],attributeComment:Ot[jt]};break;case 27:case 28:case 31:this.$=Ot[jt];break;case 30:Ot[jt-2].push(Ot[jt]),this.$=Ot[jt-2];break;case 32:this.$=Ot[jt].replace(/"/g,"");break;case 33:this.$={cardA:Ot[jt],relType:Ot[jt-1],cardB:Ot[jt-2]};break;case 34:this.$=yt.Cardinality.ZERO_OR_ONE;break;case 35:this.$=yt.Cardinality.ZERO_OR_MORE;break;case 36:this.$=yt.Cardinality.ONE_OR_MORE;break;case 37:this.$=yt.Cardinality.ONLY_ONE;break;case 38:this.$=yt.Cardinality.MD_PARENT;break;case 39:this.$=yt.Identification.NON_IDENTIFYING;break;case 40:this.$=yt.Identification.IDENTIFYING;break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:f,22:g,24:w,26:v,27:b,28:E},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:16,11:9,20:f,22:g,24:w,26:v,27:b,28:E},i(a,[2,5]),i(a,[2,6]),i(a,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:S,42:_,43:M,44:F,45:R}),{21:[1,26]},{23:[1,27]},{25:[1,28]},i(a,[2,18]),i(B,[2,19]),i(B,[2,20]),i(a,[2,4]),{11:29,27:b,28:E},{16:30,17:[1,31],29:32,30:33,34:z},{11:35,27:b,28:E},{40:36,46:[1,37],47:[1,38]},i(Y,[2,34]),i(Y,[2,35]),i(Y,[2,36]),i(Y,[2,37]),i(Y,[2,38]),i(a,[2,15]),i(a,[2,16]),i(a,[2,17]),{13:[1,39]},{17:[1,40]},i(a,[2,10]),{16:41,17:[2,21],29:32,30:33,34:z},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:S,42:_,43:M,44:F,45:R},i(nt,[2,39]),i(nt,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},i(a,[2,9]),{17:[2,22]},i(ot,[2,23],{32:50,33:51,35:52,37:ft,38:wt}),i([17,34,37,38],[2,28]),i(a,[2,14],{15:[1,55]}),i([27,28],[2,33]),i(a,[2,8]),i(a,[2,41]),i(a,[2,42]),i(a,[2,43]),i(ot,[2,24],{33:56,36:[1,57],38:wt}),i(ot,[2,25]),i(mt,[2,29]),i(ot,[2,32]),i(mt,[2,31]),{16:58,17:[1,59],29:32,30:33,34:z},i(ot,[2,26]),{35:60,37:ft},{17:[1,61]},i(a,[2,13]),i(mt,[2,30]),i(a,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:function(Q,dt){if(dt.recoverable)this.trace(Q);else{var K=new Error(Q);throw K.hash=dt,K}},parse:function(Q){var dt=this,K=[0],yt=[],V=[null],Ot=[],It=this.table,jt="",xt=0,Ft=0,Ct=2,kt=1,Gt=Ot.slice.call(arguments,1),Fe=Object.create(this.lexer),Mt={yy:{}};for(var pn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,pn)&&(Mt.yy[pn]=this.yy[pn]);Fe.setInput(Q,Mt.yy),Mt.yy.lexer=Fe,Mt.yy.parser=this,typeof Fe.yylloc>"u"&&(Fe.yylloc={});var Ae=Fe.yylloc;Ot.push(Ae);var ye=Fe.options&&Fe.options.ranges;typeof Mt.yy.parseError=="function"?this.parseError=Mt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tn(){var Fi;return Fi=yt.pop()||Fe.lex()||kt,typeof Fi!="number"&&(Fi instanceof Array&&(yt=Fi,Fi=yt.pop()),Fi=dt.symbols_[Fi]||Fi),Fi}for(var sn,be,Ne,Xt,_e={},xe,Mn,ce,Br;;){if(be=K[K.length-1],this.defaultActions[be]?Ne=this.defaultActions[be]:((sn===null||typeof sn>"u")&&(sn=tn()),Ne=It[be]&&It[be][sn]),typeof Ne>"u"||!Ne.length||!Ne[0]){var we="";Br=[];for(xe in It[be])this.terminals_[xe]&&xe>Ct&&Br.push("'"+this.terminals_[xe]+"'");Fe.showPosition?we="Parse error on line "+(xt+1)+`: +`+Fe.showPosition()+` +Expecting `+Br.join(", ")+", got '"+(this.terminals_[sn]||sn)+"'":we="Parse error on line "+(xt+1)+": Unexpected "+(sn==kt?"end of input":"'"+(this.terminals_[sn]||sn)+"'"),this.parseError(we,{text:Fe.match,token:this.terminals_[sn]||sn,line:Fe.yylineno,loc:Ae,expected:Br})}if(Ne[0]instanceof Array&&Ne.length>1)throw new Error("Parse Error: multiple actions possible at state: "+be+", token: "+sn);switch(Ne[0]){case 1:K.push(sn),V.push(Fe.yytext),Ot.push(Fe.yylloc),K.push(Ne[1]),sn=null,Ft=Fe.yyleng,jt=Fe.yytext,xt=Fe.yylineno,Ae=Fe.yylloc;break;case 2:if(Mn=this.productions_[Ne[1]][1],_e.$=V[V.length-Mn],_e._$={first_line:Ot[Ot.length-(Mn||1)].first_line,last_line:Ot[Ot.length-1].last_line,first_column:Ot[Ot.length-(Mn||1)].first_column,last_column:Ot[Ot.length-1].last_column},ye&&(_e._$.range=[Ot[Ot.length-(Mn||1)].range[0],Ot[Ot.length-1].range[1]]),Xt=this.performAction.apply(_e,[jt,Ft,xt,Mt.yy,Ne[1],V,Ot].concat(Gt)),typeof Xt<"u")return Xt;Mn&&(K=K.slice(0,-1*Mn*2),V=V.slice(0,-1*Mn),Ot=Ot.slice(0,-1*Mn)),K.push(this.productions_[Ne[1]][0]),V.push(_e.$),Ot.push(_e._$),ce=It[K[K.length-2]][K[K.length-1]],K.push(ce);break;case 3:return!0}}return!0}},rt=function(){var gt={EOF:1,parseError:function(dt,K){if(this.yy.parser)this.yy.parser.parseError(dt,K);else throw new Error(dt)},setInput:function(Q,dt){return this.yy=dt||this.yy||{},this._input=Q,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Q=this._input[0];this.yytext+=Q,this.yyleng++,this.offset++,this.match+=Q,this.matched+=Q;var dt=Q.match(/(?:\r\n?|\n).*/g);return dt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Q},unput:function(Q){var dt=Q.length,K=Q.split(/(?:\r\n?|\n)/g);this._input=Q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-dt),this.offset-=dt;var yt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),K.length-1&&(this.yylineno-=K.length-1);var V=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:K?(K.length===yt.length?this.yylloc.first_column:0)+yt[yt.length-K.length].length-K[0].length:this.yylloc.first_column-dt},this.options.ranges&&(this.yylloc.range=[V[0],V[0]+this.yyleng-dt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Q){this.unput(this.match.slice(Q))},pastInput:function(){var Q=this.matched.substr(0,this.matched.length-this.match.length);return(Q.length>20?"...":"")+Q.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Q=this.match;return Q.length<20&&(Q+=this._input.substr(0,20-Q.length)),(Q.substr(0,20)+(Q.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Q=this.pastInput(),dt=new Array(Q.length+1).join("-");return Q+this.upcomingInput()+` +`+dt+"^"},test_match:function(Q,dt){var K,yt,V;if(this.options.backtrack_lexer&&(V={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(V.yylloc.range=this.yylloc.range.slice(0))),yt=Q[0].match(/(?:\r\n?|\n).*/g),yt&&(this.yylineno+=yt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:yt?yt[yt.length-1].length-yt[yt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Q[0].length},this.yytext+=Q[0],this.match+=Q[0],this.matches=Q,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Q[0].length),this.matched+=Q[0],K=this.performAction.call(this,this.yy,this,dt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),K)return K;if(this._backtrack){for(var Ot in V)this[Ot]=V[Ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Q,dt,K,yt;this._more||(this.yytext="",this.match="");for(var V=this._currentRules(),Ot=0;Otdt[0].length)){if(dt=K,yt=Ot,this.options.backtrack_lexer){if(Q=this.test_match(K,V[Ot]),Q!==!1)return Q;if(this._backtrack){dt=!1;continue}else return!1}else if(!this.options.flex)break}return dt?(Q=this.test_match(dt,V[yt]),Q!==!1?Q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var dt=this.next();return dt||this.lex()},begin:function(dt){this.conditionStack.push(dt)},popState:function(){var dt=this.conditionStack.length-1;return dt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(dt){return dt=this.conditionStack.length-1-Math.abs(dt||0),dt>=0?this.conditionStack[dt]:"INITIAL"},pushState:function(dt){this.begin(dt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(dt,K,yt,V){switch(yt){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return K.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return K.yytext[0];case 55:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return gt}();ct.lexer=rt;function it(){this.yy={}}return it.prototype=ct,ct.Parser=it,new it}();rbt.parser=rbt;const vWe=rbt;let S8={},ibt=[];const yWe={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},xWe={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},vzt=function(i,a=void 0){return S8[i]===void 0?(S8[i]={attributes:[],alias:a},Kt.info("Added new entity :",i)):S8[i]&&!S8[i].alias&&a&&(S8[i].alias=a,Kt.info(`Add alias '${a}' to entity '${i}'`)),S8[i]},kWe={Cardinality:yWe,Identification:xWe,getConfig:()=>Re().er,addEntity:vzt,addAttributes:function(i,a){let f=vzt(i),g;for(g=a.length-1;g>=0;g--)f.attributes.push(a[g]),Kt.debug("Added attribute ",a[g].attributeName)},getEntities:()=>S8,addRelationship:function(i,a,f,g){let w={entityA:i,roleA:a,entityB:f,relSpec:g};ibt.push(w),Kt.debug("Added new relationship :",w)},getRelationships:()=>ibt,clear:function(){S8={},ibt=[],ag()},setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,setDiagramTitle:S2,getDiagramTitle:Zg},ey={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},ny={ERMarkers:ey,insertMarkers:function(i,a){let f;i.append("defs").append("marker").attr("id",ey.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",ey.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",ey.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),i.append("defs").append("marker").attr("id",ey.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,0 L21,18"),i.append("defs").append("marker").attr("id",ey.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),i.append("defs").append("marker").attr("id",ey.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}},EWe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function TWe(i){return typeof i=="string"&&EWe.test(i)}const b0=[];for(let i=0;i<256;++i)b0.push((i+256).toString(16).slice(1));function CWe(i,a=0){return(b0[i[a+0]]+b0[i[a+1]]+b0[i[a+2]]+b0[i[a+3]]+"-"+b0[i[a+4]]+b0[i[a+5]]+"-"+b0[i[a+6]]+b0[i[a+7]]+"-"+b0[i[a+8]]+b0[i[a+9]]+"-"+b0[i[a+10]]+b0[i[a+11]]+b0[i[a+12]]+b0[i[a+13]]+b0[i[a+14]]+b0[i[a+15]]).toLowerCase()}function SWe(i){if(!TWe(i))throw TypeError("Invalid UUID");let a;const f=new Uint8Array(16);return f[0]=(a=parseInt(i.slice(0,8),16))>>>24,f[1]=a>>>16&255,f[2]=a>>>8&255,f[3]=a&255,f[4]=(a=parseInt(i.slice(9,13),16))>>>8,f[5]=a&255,f[6]=(a=parseInt(i.slice(14,18),16))>>>8,f[7]=a&255,f[8]=(a=parseInt(i.slice(19,23),16))>>>8,f[9]=a&255,f[10]=(a=parseInt(i.slice(24,36),16))/1099511627776&255,f[11]=a/4294967296&255,f[12]=a>>>24&255,f[13]=a>>>16&255,f[14]=a>>>8&255,f[15]=a&255,f}function _We(i){i=unescape(encodeURIComponent(i));const a=[];for(let f=0;f>>32-a}function IWe(i){const a=[1518500249,1859775393,2400959708,3395469782],f=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof i=="string"){const b=unescape(encodeURIComponent(i));i=[];for(let E=0;E>>0;R=F,F=M,M=sbt(_,30)>>>0,_=S,S=Y}f[0]=f[0]+S>>>0,f[1]=f[1]+_>>>0,f[2]=f[2]+M>>>0,f[3]=f[3]+F>>>0,f[4]=f[4]+R>>>0}return[f[0]>>24&255,f[0]>>16&255,f[0]>>8&255,f[0]&255,f[1]>>24&255,f[1]>>16&255,f[1]>>8&255,f[1]&255,f[2]>>24&255,f[2]>>16&255,f[2]>>8&255,f[2]&255,f[3]>>24&255,f[3]>>16&255,f[3]>>8&255,f[3]&255,f[4]>>24&255,f[4]>>16&255,f[4]>>8&255,f[4]&255]}const OWe=DWe("v5",80,IWe),NWe=/[^\dA-Za-z](\W)*/g;let z1={},nB=new Map;const PWe=function(i){const a=Object.keys(i);for(const f of a)z1[f]=i[f]},FWe=(i,a,f)=>{const g=z1.entityPadding/3,w=z1.entityPadding/3,v=z1.fontSize*.85,b=a.node().getBBox(),E=[];let S=!1,_=!1,M=0,F=0,R=0,B=0,z=b.height+g*2,Y=1;f.forEach(wt=>{wt.attributeKeyTypeList!==void 0&&wt.attributeKeyTypeList.length>0&&(S=!0),wt.attributeComment!==void 0&&(_=!0)}),f.forEach(wt=>{const mt=`${a.node().id}-attr-${Y}`;let ct=0;const rt=kF(wt.attributeType),it=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(rt),gt=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(wt.attributeName),Q={};Q.tn=it,Q.nn=gt;const dt=it.node().getBBox(),K=gt.node().getBBox();if(M=Math.max(M,dt.width),F=Math.max(F,K.width),ct=Math.max(dt.height,K.height),S){const yt=wt.attributeKeyTypeList!==void 0?wt.attributeKeyTypeList.join(","):"",V=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(yt);Q.kn=V;const Ot=V.node().getBBox();R=Math.max(R,Ot.width),ct=Math.max(ct,Ot.height)}if(_){const yt=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(wt.attributeComment||"");Q.cn=yt;const V=yt.node().getBBox();B=Math.max(B,V.width),ct=Math.max(ct,V.height)}Q.height=ct,E.push(Q),z+=ct+g*2,Y+=1});let nt=4;S&&(nt+=2),_&&(nt+=2);const ot=M+F+R+B,ft={width:Math.max(z1.minEntityWidth,Math.max(b.width+z1.entityPadding*2,ot+w*nt)),height:f.length>0?z:Math.max(z1.minEntityHeight,b.height+z1.entityPadding*2)};if(f.length>0){const wt=Math.max(0,(ft.width-ot-w*nt)/(nt/2));a.attr("transform","translate("+ft.width/2+","+(g+b.height/2)+")");let mt=b.height+g*2,ct="attributeBoxOdd";E.forEach(rt=>{const it=mt+g+rt.height/2;rt.tn.attr("transform","translate("+w+","+it+")");const gt=i.insert("rect","#"+rt.tn.node().id).classed(`er ${ct}`,!0).attr("x",0).attr("y",mt).attr("width",M+w*2+wt).attr("height",rt.height+g*2),Q=parseFloat(gt.attr("x"))+parseFloat(gt.attr("width"));rt.nn.attr("transform","translate("+(Q+w)+","+it+")");const dt=i.insert("rect","#"+rt.nn.node().id).classed(`er ${ct}`,!0).attr("x",Q).attr("y",mt).attr("width",F+w*2+wt).attr("height",rt.height+g*2);let K=parseFloat(dt.attr("x"))+parseFloat(dt.attr("width"));if(S){rt.kn.attr("transform","translate("+(K+w)+","+it+")");const yt=i.insert("rect","#"+rt.kn.node().id).classed(`er ${ct}`,!0).attr("x",K).attr("y",mt).attr("width",R+w*2+wt).attr("height",rt.height+g*2);K=parseFloat(yt.attr("x"))+parseFloat(yt.attr("width"))}_&&(rt.cn.attr("transform","translate("+(K+w)+","+it+")"),i.insert("rect","#"+rt.cn.node().id).classed(`er ${ct}`,"true").attr("x",K).attr("y",mt).attr("width",B+w*2+wt).attr("height",rt.height+g*2)),mt+=rt.height+g*2,ct=ct==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else ft.height=Math.max(z1.minEntityHeight,z),a.attr("transform","translate("+ft.width/2+","+ft.height/2+")");return ft},BWe=function(i,a,f){const g=Object.keys(a);let w;return g.forEach(function(v){const b=HWe(v,"entity");nB.set(v,b);const E=i.append("g").attr("id",b);w=w===void 0?b:w;const S="text-"+b,_=E.append("text").classed("er entityLabel",!0).attr("id",S).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Re().fontFamily).style("font-size",z1.fontSize+"px").text(a[v].alias??v),{width:M,height:F}=FWe(E,_,a[v].attributes),B=E.insert("rect","#"+S).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",M).attr("height",F).node().getBBox();f.setNode(b,{width:B.width,height:B.height,shape:"rect",id:b})}),w},RWe=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )")})},yzt=function(i){return(i.entityA+i.roleA+i.entityB).replace(/\s/g,"")},jWe=function(i,a){return i.forEach(function(f){a.setEdge(nB.get(f.entityA),nB.get(f.entityB),{relationship:f},yzt(f))}),i};let xzt=0;const $We=function(i,a,f,g,w){xzt++;const v=f.edge(nB.get(a.entityA),nB.get(a.entityB),yzt(a)),b=Ax().x(function(z){return z.x}).y(function(z){return z.y}).curve(wF),E=i.insert("path","#"+g).classed("er relationshipLine",!0).attr("d",b(v.points)).style("stroke",z1.stroke).style("fill","none");a.relSpec.relType===w.db.Identification.NON_IDENTIFYING&&E.attr("stroke-dasharray","8,8");let S="";switch(z1.arrowMarkerAbsolute&&(S=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,S=S.replace(/\(/g,"\\("),S=S.replace(/\)/g,"\\)")),a.relSpec.cardA){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ZERO_OR_ONE_END+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ZERO_OR_MORE_END+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ONE_OR_MORE_END+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ONLY_ONE_END+")");break;case w.db.Cardinality.MD_PARENT:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.MD_PARENT_END+")");break}switch(a.relSpec.cardB){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ZERO_OR_ONE_START+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ZERO_OR_MORE_START+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ONE_OR_MORE_START+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ONLY_ONE_START+")");break;case w.db.Cardinality.MD_PARENT:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.MD_PARENT_START+")");break}const _=E.node().getTotalLength(),M=E.node().getPointAtLength(_*.5),F="rel"+xzt,B=i.append("text").classed("er relationshipLabel",!0).attr("id",F).attr("x",M.x).attr("y",M.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Re().fontFamily).style("font-size",z1.fontSize+"px").text(a.roleA).node().getBBox();i.insert("rect","#"+F).classed("er relationshipLabelBox",!0).attr("x",M.x-B.width/2).attr("y",M.y-B.height/2).attr("width",B.width).attr("height",B.height)},zWe=function(i,a,f,g){z1=Re().er,Kt.info("Drawing ER diagram");const w=Re().securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const E=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);ny.insertMarkers(E,z1);let S;S=new l1({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:z1.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const _=BWe(E,g.db.getEntities(),S),M=jWe(g.db.getRelationships(),S);kD(S),RWe(E,S),M.forEach(function(Y){$We(E,Y,S,_,g)});const F=z1.diagramPadding;uo.insertTitle(E,"entityTitleText",z1.titleTopMargin,g.db.getDiagramTitle());const R=E.node().getBBox(),B=R.width+F*2,z=R.height+F*2;sg(E,z,B,z1.useMaxWidth),E.attr("viewBox",`${R.x-F} ${R.y-F} ${B} ${z}`)},qWe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function HWe(i="",a=""){const f=i.replace(NWe,"");return`${kzt(a)}${kzt(f)}${OWe(i,qWe)}`}function kzt(i=""){return i.length>0?`${i}-`:""}const VWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:vWe,db:kWe,renderer:{setConf:PWe,draw:zWe},styles:i=>` + .entityBox { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${i.attributeBackgroundColorOdd}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxEven { + fill: ${i.attributeBackgroundColorEven}; + stroke: ${i.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${i.tertiaryColor}; + opacity: 0.7; + background-color: ${i.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${i.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + +`}},Symbol.toStringTag,{value:"Module"}));var abt=function(){var i=function(ct,rt,it,gt){for(it=it||{},gt=ct.length;gt--;it[ct[gt]]=rt);return it},a=[1,3],f=[1,6],g=[1,4],w=[1,5],v=[2,5],b=[1,12],E=[5,7,13,19,21,23,24,26,28,31,37,40,47],S=[7,13,19,21,23,24,26,28,31,37,40],_=[7,12,13,19,21,23,24,26,28,31,37,40],M=[7,13,47],F=[1,42],R=[1,41],B=[7,13,29,32,35,38,47],z=[1,55],Y=[1,56],nt=[1,57],ot=[7,13,32,35,42,47],ft={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,GG:5,document:6,EOF:7,":":8,DIR:9,options:10,body:11,OPT:12,NL:13,line:14,statement:15,commitStatement:16,mergeStatement:17,cherryPickStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ref:27,BRANCH:28,ORDER:29,NUM:30,CHERRY_PICK:31,COMMIT_ID:32,STR:33,PARENT_COMMIT:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,ID:46,";":47,$accept:0,$end:1},terminals_:{2:"error",5:"GG",7:"EOF",8:":",9:"DIR",12:"OPT",13:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",28:"BRANCH",29:"ORDER",30:"NUM",31:"CHERRY_PICK",32:"COMMIT_ID",33:"STR",34:"PARENT_COMMIT",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",46:"ID",47:";"},productions_:[0,[3,2],[3,3],[3,4],[3,5],[6,0],[6,2],[10,2],[10,1],[11,0],[11,2],[14,2],[14,1],[15,1],[15,1],[15,1],[15,2],[15,2],[15,1],[15,1],[15,1],[15,2],[25,2],[25,4],[18,3],[18,5],[18,5],[18,7],[18,7],[18,5],[18,5],[18,5],[18,7],[18,7],[18,7],[18,7],[17,2],[17,4],[17,4],[17,4],[17,6],[17,6],[17,6],[17,6],[17,6],[17,6],[17,8],[17,8],[17,8],[17,8],[17,8],[17,8],[16,2],[16,3],[16,3],[16,5],[16,5],[16,3],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,3],[16,5],[16,5],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[41,0],[41,1],[39,1],[39,1],[39,1],[27,1],[27,1],[4,1],[4,1],[4,1]],performAction:function(rt,it,gt,Q,dt,K,yt){var V=K.length-1;switch(dt){case 2:return K[V];case 3:return K[V-1];case 4:return Q.setDirection(K[V-3]),K[V-1];case 6:Q.setOptions(K[V-1]),this.$=K[V];break;case 7:K[V-1]+=K[V],this.$=K[V-1];break;case 9:this.$=[];break;case 10:K[V-1].push(K[V]),this.$=K[V-1];break;case 11:this.$=K[V-1];break;case 16:this.$=K[V].trim(),Q.setAccTitle(this.$);break;case 17:case 18:this.$=K[V].trim(),Q.setAccDescription(this.$);break;case 19:Q.addSection(K[V].substr(8)),this.$=K[V].substr(8);break;case 21:Q.checkout(K[V]);break;case 22:Q.branch(K[V]);break;case 23:Q.branch(K[V-2],K[V]);break;case 24:Q.cherryPick(K[V],"",void 0);break;case 25:Q.cherryPick(K[V-2],"",void 0,K[V]);break;case 26:Q.cherryPick(K[V-2],"",K[V]);break;case 27:Q.cherryPick(K[V-4],"",K[V],K[V-2]);break;case 28:Q.cherryPick(K[V-4],"",K[V-2],K[V]);break;case 29:Q.cherryPick(K[V],"",K[V-2]);break;case 30:Q.cherryPick(K[V],"","");break;case 31:Q.cherryPick(K[V-2],"","");break;case 32:Q.cherryPick(K[V-4],"","",K[V-2]);break;case 33:Q.cherryPick(K[V-4],"","",K[V]);break;case 34:Q.cherryPick(K[V-2],"",K[V-4],K[V]);break;case 35:Q.cherryPick(K[V-2],"","",K[V]);break;case 36:Q.merge(K[V],"","","");break;case 37:Q.merge(K[V-2],K[V],"","");break;case 38:Q.merge(K[V-2],"",K[V],"");break;case 39:Q.merge(K[V-2],"","",K[V]);break;case 40:Q.merge(K[V-4],K[V],"",K[V-2]);break;case 41:Q.merge(K[V-4],"",K[V],K[V-2]);break;case 42:Q.merge(K[V-4],"",K[V-2],K[V]);break;case 43:Q.merge(K[V-4],K[V-2],K[V],"");break;case 44:Q.merge(K[V-4],K[V-2],"",K[V]);break;case 45:Q.merge(K[V-4],K[V],K[V-2],"");break;case 46:Q.merge(K[V-6],K[V-4],K[V-2],K[V]);break;case 47:Q.merge(K[V-6],K[V],K[V-4],K[V-2]);break;case 48:Q.merge(K[V-6],K[V-4],K[V],K[V-2]);break;case 49:Q.merge(K[V-6],K[V-2],K[V-4],K[V]);break;case 50:Q.merge(K[V-6],K[V],K[V-2],K[V-4]);break;case 51:Q.merge(K[V-6],K[V-2],K[V],K[V-4]);break;case 52:Q.commit(K[V]);break;case 53:Q.commit("","",Q.commitType.NORMAL,K[V]);break;case 54:Q.commit("","",K[V],"");break;case 55:Q.commit("","",K[V],K[V-2]);break;case 56:Q.commit("","",K[V-2],K[V]);break;case 57:Q.commit("",K[V],Q.commitType.NORMAL,"");break;case 58:Q.commit("",K[V-2],Q.commitType.NORMAL,K[V]);break;case 59:Q.commit("",K[V],Q.commitType.NORMAL,K[V-2]);break;case 60:Q.commit("",K[V-2],K[V],"");break;case 61:Q.commit("",K[V],K[V-2],"");break;case 62:Q.commit("",K[V-4],K[V-2],K[V]);break;case 63:Q.commit("",K[V-4],K[V],K[V-2]);break;case 64:Q.commit("",K[V-2],K[V-4],K[V]);break;case 65:Q.commit("",K[V],K[V-4],K[V-2]);break;case 66:Q.commit("",K[V],K[V-2],K[V-4]);break;case 67:Q.commit("",K[V-2],K[V],K[V-4]);break;case 68:Q.commit(K[V],"",Q.commitType.NORMAL,"");break;case 69:Q.commit(K[V],"",Q.commitType.NORMAL,K[V-2]);break;case 70:Q.commit(K[V-2],"",Q.commitType.NORMAL,K[V]);break;case 71:Q.commit(K[V-2],"",K[V],"");break;case 72:Q.commit(K[V],"",K[V-2],"");break;case 73:Q.commit(K[V],K[V-2],Q.commitType.NORMAL,"");break;case 74:Q.commit(K[V-2],K[V],Q.commitType.NORMAL,"");break;case 75:Q.commit(K[V-4],"",K[V-2],K[V]);break;case 76:Q.commit(K[V-4],"",K[V],K[V-2]);break;case 77:Q.commit(K[V-2],"",K[V-4],K[V]);break;case 78:Q.commit(K[V],"",K[V-4],K[V-2]);break;case 79:Q.commit(K[V],"",K[V-2],K[V-4]);break;case 80:Q.commit(K[V-2],"",K[V],K[V-4]);break;case 81:Q.commit(K[V-4],K[V],K[V-2],"");break;case 82:Q.commit(K[V-4],K[V-2],K[V],"");break;case 83:Q.commit(K[V-2],K[V],K[V-4],"");break;case 84:Q.commit(K[V],K[V-2],K[V-4],"");break;case 85:Q.commit(K[V],K[V-4],K[V-2],"");break;case 86:Q.commit(K[V-2],K[V-4],K[V],"");break;case 87:Q.commit(K[V-4],K[V],Q.commitType.NORMAL,K[V-2]);break;case 88:Q.commit(K[V-4],K[V-2],Q.commitType.NORMAL,K[V]);break;case 89:Q.commit(K[V-2],K[V],Q.commitType.NORMAL,K[V-4]);break;case 90:Q.commit(K[V],K[V-2],Q.commitType.NORMAL,K[V-4]);break;case 91:Q.commit(K[V],K[V-4],Q.commitType.NORMAL,K[V-2]);break;case 92:Q.commit(K[V-2],K[V-4],Q.commitType.NORMAL,K[V]);break;case 93:Q.commit(K[V-6],K[V-4],K[V-2],K[V]);break;case 94:Q.commit(K[V-6],K[V-4],K[V],K[V-2]);break;case 95:Q.commit(K[V-6],K[V-2],K[V-4],K[V]);break;case 96:Q.commit(K[V-6],K[V],K[V-4],K[V-2]);break;case 97:Q.commit(K[V-6],K[V-2],K[V],K[V-4]);break;case 98:Q.commit(K[V-6],K[V],K[V-2],K[V-4]);break;case 99:Q.commit(K[V-4],K[V-6],K[V-2],K[V]);break;case 100:Q.commit(K[V-4],K[V-6],K[V],K[V-2]);break;case 101:Q.commit(K[V-2],K[V-6],K[V-4],K[V]);break;case 102:Q.commit(K[V],K[V-6],K[V-4],K[V-2]);break;case 103:Q.commit(K[V-2],K[V-6],K[V],K[V-4]);break;case 104:Q.commit(K[V],K[V-6],K[V-2],K[V-4]);break;case 105:Q.commit(K[V],K[V-4],K[V-2],K[V-6]);break;case 106:Q.commit(K[V-2],K[V-4],K[V],K[V-6]);break;case 107:Q.commit(K[V],K[V-2],K[V-4],K[V-6]);break;case 108:Q.commit(K[V-2],K[V],K[V-4],K[V-6]);break;case 109:Q.commit(K[V-4],K[V-2],K[V],K[V-6]);break;case 110:Q.commit(K[V-4],K[V],K[V-2],K[V-6]);break;case 111:Q.commit(K[V-2],K[V-4],K[V-6],K[V]);break;case 112:Q.commit(K[V],K[V-4],K[V-6],K[V-2]);break;case 113:Q.commit(K[V-2],K[V],K[V-6],K[V-4]);break;case 114:Q.commit(K[V],K[V-2],K[V-6],K[V-4]);break;case 115:Q.commit(K[V-4],K[V-2],K[V-6],K[V]);break;case 116:Q.commit(K[V-4],K[V],K[V-6],K[V-2]);break;case 117:this.$="";break;case 118:this.$=K[V];break;case 119:this.$=Q.commitType.NORMAL;break;case 120:this.$=Q.commitType.REVERSE;break;case 121:this.$=Q.commitType.HIGHLIGHT;break}},table:[{3:1,4:2,5:a,7:f,13:g,47:w},{1:[3]},{3:7,4:2,5:a,7:f,13:g,47:w},{6:8,7:v,8:[1,9],9:[1,10],10:11,13:b},i(E,[2,124]),i(E,[2,125]),i(E,[2,126]),{1:[2,1]},{7:[1,13]},{6:14,7:v,10:11,13:b},{8:[1,15]},i(S,[2,9],{11:16,12:[1,17]}),i(_,[2,8]),{1:[2,2]},{7:[1,18]},{6:19,7:v,10:11,13:b},{7:[2,6],13:[1,22],14:20,15:21,16:23,17:24,18:25,19:[1,26],21:[1,27],23:[1,28],24:[1,29],25:30,26:[1,31],28:[1,35],31:[1,34],37:[1,33],40:[1,32]},i(_,[2,7]),{1:[2,3]},{7:[1,36]},i(S,[2,10]),{4:37,7:f,13:g,47:w},i(S,[2,12]),i(M,[2,13]),i(M,[2,14]),i(M,[2,15]),{20:[1,38]},{22:[1,39]},i(M,[2,18]),i(M,[2,19]),i(M,[2,20]),{27:40,33:F,46:R},i(M,[2,117],{41:43,32:[1,46],33:[1,48],35:[1,44],38:[1,45],42:[1,47]}),{27:49,33:F,46:R},{32:[1,50],35:[1,51]},{27:52,33:F,46:R},{1:[2,4]},i(S,[2,11]),i(M,[2,16]),i(M,[2,17]),i(M,[2,21]),i(B,[2,122]),i(B,[2,123]),i(M,[2,52]),{33:[1,53]},{39:54,43:z,44:Y,45:nt},{33:[1,58]},{33:[1,59]},i(M,[2,118]),i(M,[2,36],{32:[1,60],35:[1,62],38:[1,61]}),{33:[1,63]},{33:[1,64],36:[1,65]},i(M,[2,22],{29:[1,66]}),i(M,[2,53],{32:[1,68],38:[1,67],42:[1,69]}),i(M,[2,54],{32:[1,71],35:[1,70],42:[1,72]}),i(ot,[2,119]),i(ot,[2,120]),i(ot,[2,121]),i(M,[2,57],{35:[1,73],38:[1,74],42:[1,75]}),i(M,[2,68],{32:[1,78],35:[1,76],38:[1,77]}),{33:[1,79]},{39:80,43:z,44:Y,45:nt},{33:[1,81]},i(M,[2,24],{34:[1,82],35:[1,83]}),{32:[1,84]},{32:[1,85]},{30:[1,86]},{39:87,43:z,44:Y,45:nt},{33:[1,88]},{33:[1,89]},{33:[1,90]},{33:[1,91]},{33:[1,92]},{33:[1,93]},{39:94,43:z,44:Y,45:nt},{33:[1,95]},{33:[1,96]},{39:97,43:z,44:Y,45:nt},{33:[1,98]},i(M,[2,37],{35:[1,100],38:[1,99]}),i(M,[2,38],{32:[1,102],35:[1,101]}),i(M,[2,39],{32:[1,103],38:[1,104]}),{33:[1,105]},{33:[1,106],36:[1,107]},{33:[1,108]},{33:[1,109]},i(M,[2,23]),i(M,[2,55],{32:[1,110],42:[1,111]}),i(M,[2,59],{38:[1,112],42:[1,113]}),i(M,[2,69],{32:[1,115],38:[1,114]}),i(M,[2,56],{32:[1,116],42:[1,117]}),i(M,[2,61],{35:[1,118],42:[1,119]}),i(M,[2,72],{32:[1,121],35:[1,120]}),i(M,[2,58],{38:[1,122],42:[1,123]}),i(M,[2,60],{35:[1,124],42:[1,125]}),i(M,[2,73],{35:[1,127],38:[1,126]}),i(M,[2,70],{32:[1,129],38:[1,128]}),i(M,[2,71],{32:[1,131],35:[1,130]}),i(M,[2,74],{35:[1,133],38:[1,132]}),{39:134,43:z,44:Y,45:nt},{33:[1,135]},{33:[1,136]},{33:[1,137]},{33:[1,138]},{39:139,43:z,44:Y,45:nt},i(M,[2,25],{35:[1,140]}),i(M,[2,26],{34:[1,141]}),i(M,[2,31],{34:[1,142]}),i(M,[2,29],{34:[1,143]}),i(M,[2,30],{34:[1,144]}),{33:[1,145]},{33:[1,146]},{39:147,43:z,44:Y,45:nt},{33:[1,148]},{39:149,43:z,44:Y,45:nt},{33:[1,150]},{33:[1,151]},{33:[1,152]},{33:[1,153]},{33:[1,154]},{33:[1,155]},{33:[1,156]},{39:157,43:z,44:Y,45:nt},{33:[1,158]},{33:[1,159]},{33:[1,160]},{39:161,43:z,44:Y,45:nt},{33:[1,162]},{39:163,43:z,44:Y,45:nt},{33:[1,164]},{33:[1,165]},{33:[1,166]},{39:167,43:z,44:Y,45:nt},{33:[1,168]},i(M,[2,43],{35:[1,169]}),i(M,[2,44],{38:[1,170]}),i(M,[2,42],{32:[1,171]}),i(M,[2,45],{35:[1,172]}),i(M,[2,40],{38:[1,173]}),i(M,[2,41],{32:[1,174]}),{33:[1,175],36:[1,176]},{33:[1,177]},{33:[1,178]},{33:[1,179]},{33:[1,180]},i(M,[2,66],{42:[1,181]}),i(M,[2,79],{32:[1,182]}),i(M,[2,67],{42:[1,183]}),i(M,[2,90],{38:[1,184]}),i(M,[2,80],{32:[1,185]}),i(M,[2,89],{38:[1,186]}),i(M,[2,65],{42:[1,187]}),i(M,[2,78],{32:[1,188]}),i(M,[2,64],{42:[1,189]}),i(M,[2,84],{35:[1,190]}),i(M,[2,77],{32:[1,191]}),i(M,[2,83],{35:[1,192]}),i(M,[2,63],{42:[1,193]}),i(M,[2,91],{38:[1,194]}),i(M,[2,62],{42:[1,195]}),i(M,[2,85],{35:[1,196]}),i(M,[2,86],{35:[1,197]}),i(M,[2,92],{38:[1,198]}),i(M,[2,76],{32:[1,199]}),i(M,[2,87],{38:[1,200]}),i(M,[2,75],{32:[1,201]}),i(M,[2,81],{35:[1,202]}),i(M,[2,82],{35:[1,203]}),i(M,[2,88],{38:[1,204]}),{33:[1,205]},{39:206,43:z,44:Y,45:nt},{33:[1,207]},{33:[1,208]},{39:209,43:z,44:Y,45:nt},{33:[1,210]},i(M,[2,27]),i(M,[2,32]),i(M,[2,28]),i(M,[2,33]),i(M,[2,34]),i(M,[2,35]),{33:[1,211]},{33:[1,212]},{33:[1,213]},{39:214,43:z,44:Y,45:nt},{33:[1,215]},{39:216,43:z,44:Y,45:nt},{33:[1,217]},{33:[1,218]},{33:[1,219]},{33:[1,220]},{33:[1,221]},{33:[1,222]},{33:[1,223]},{39:224,43:z,44:Y,45:nt},{33:[1,225]},{33:[1,226]},{33:[1,227]},{39:228,43:z,44:Y,45:nt},{33:[1,229]},{39:230,43:z,44:Y,45:nt},{33:[1,231]},{33:[1,232]},{33:[1,233]},{39:234,43:z,44:Y,45:nt},i(M,[2,46]),i(M,[2,48]),i(M,[2,47]),i(M,[2,49]),i(M,[2,51]),i(M,[2,50]),i(M,[2,107]),i(M,[2,108]),i(M,[2,105]),i(M,[2,106]),i(M,[2,110]),i(M,[2,109]),i(M,[2,114]),i(M,[2,113]),i(M,[2,112]),i(M,[2,111]),i(M,[2,116]),i(M,[2,115]),i(M,[2,104]),i(M,[2,103]),i(M,[2,102]),i(M,[2,101]),i(M,[2,99]),i(M,[2,100]),i(M,[2,98]),i(M,[2,97]),i(M,[2,96]),i(M,[2,95]),i(M,[2,93]),i(M,[2,94])],defaultActions:{7:[2,1],13:[2,2],18:[2,3],36:[2,4]},parseError:function(rt,it){if(it.recoverable)this.trace(rt);else{var gt=new Error(rt);throw gt.hash=it,gt}},parse:function(rt){var it=this,gt=[0],Q=[],dt=[null],K=[],yt=this.table,V="",Ot=0,It=0,jt=2,xt=1,Ft=K.slice.call(arguments,1),Ct=Object.create(this.lexer),kt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(kt.yy[Gt]=this.yy[Gt]);Ct.setInput(rt,kt.yy),kt.yy.lexer=Ct,kt.yy.parser=this,typeof Ct.yylloc>"u"&&(Ct.yylloc={});var Fe=Ct.yylloc;K.push(Fe);var Mt=Ct.options&&Ct.options.ranges;typeof kt.yy.parseError=="function"?this.parseError=kt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pn(){var ce;return ce=Q.pop()||Ct.lex()||xt,typeof ce!="number"&&(ce instanceof Array&&(Q=ce,ce=Q.pop()),ce=it.symbols_[ce]||ce),ce}for(var Ae,ye,tn,sn,be={},Ne,Xt,_e,xe;;){if(ye=gt[gt.length-1],this.defaultActions[ye]?tn=this.defaultActions[ye]:((Ae===null||typeof Ae>"u")&&(Ae=pn()),tn=yt[ye]&&yt[ye][Ae]),typeof tn>"u"||!tn.length||!tn[0]){var Mn="";xe=[];for(Ne in yt[ye])this.terminals_[Ne]&&Ne>jt&&xe.push("'"+this.terminals_[Ne]+"'");Ct.showPosition?Mn="Parse error on line "+(Ot+1)+`: +`+Ct.showPosition()+` +Expecting `+xe.join(", ")+", got '"+(this.terminals_[Ae]||Ae)+"'":Mn="Parse error on line "+(Ot+1)+": Unexpected "+(Ae==xt?"end of input":"'"+(this.terminals_[Ae]||Ae)+"'"),this.parseError(Mn,{text:Ct.match,token:this.terminals_[Ae]||Ae,line:Ct.yylineno,loc:Fe,expected:xe})}if(tn[0]instanceof Array&&tn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ye+", token: "+Ae);switch(tn[0]){case 1:gt.push(Ae),dt.push(Ct.yytext),K.push(Ct.yylloc),gt.push(tn[1]),Ae=null,It=Ct.yyleng,V=Ct.yytext,Ot=Ct.yylineno,Fe=Ct.yylloc;break;case 2:if(Xt=this.productions_[tn[1]][1],be.$=dt[dt.length-Xt],be._$={first_line:K[K.length-(Xt||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(Xt||1)].first_column,last_column:K[K.length-1].last_column},Mt&&(be._$.range=[K[K.length-(Xt||1)].range[0],K[K.length-1].range[1]]),sn=this.performAction.apply(be,[V,It,Ot,kt.yy,tn[1],dt,K].concat(Ft)),typeof sn<"u")return sn;Xt&&(gt=gt.slice(0,-1*Xt*2),dt=dt.slice(0,-1*Xt),K=K.slice(0,-1*Xt)),gt.push(this.productions_[tn[1]][0]),dt.push(be.$),K.push(be._$),_e=yt[gt[gt.length-2]][gt[gt.length-1]],gt.push(_e);break;case 3:return!0}}return!0}},wt=function(){var ct={EOF:1,parseError:function(it,gt){if(this.yy.parser)this.yy.parser.parseError(it,gt);else throw new Error(it)},setInput:function(rt,it){return this.yy=it||this.yy||{},this._input=rt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var rt=this._input[0];this.yytext+=rt,this.yyleng++,this.offset++,this.match+=rt,this.matched+=rt;var it=rt.match(/(?:\r\n?|\n).*/g);return it?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),rt},unput:function(rt){var it=rt.length,gt=rt.split(/(?:\r\n?|\n)/g);this._input=rt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-it),this.offset-=it;var Q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),gt.length-1&&(this.yylineno-=gt.length-1);var dt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:gt?(gt.length===Q.length?this.yylloc.first_column:0)+Q[Q.length-gt.length].length-gt[0].length:this.yylloc.first_column-it},this.options.ranges&&(this.yylloc.range=[dt[0],dt[0]+this.yyleng-it]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(rt){this.unput(this.match.slice(rt))},pastInput:function(){var rt=this.matched.substr(0,this.matched.length-this.match.length);return(rt.length>20?"...":"")+rt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var rt=this.match;return rt.length<20&&(rt+=this._input.substr(0,20-rt.length)),(rt.substr(0,20)+(rt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var rt=this.pastInput(),it=new Array(rt.length+1).join("-");return rt+this.upcomingInput()+` +`+it+"^"},test_match:function(rt,it){var gt,Q,dt;if(this.options.backtrack_lexer&&(dt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(dt.yylloc.range=this.yylloc.range.slice(0))),Q=rt[0].match(/(?:\r\n?|\n).*/g),Q&&(this.yylineno+=Q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Q?Q[Q.length-1].length-Q[Q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+rt[0].length},this.yytext+=rt[0],this.match+=rt[0],this.matches=rt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(rt[0].length),this.matched+=rt[0],gt=this.performAction.call(this,this.yy,this,it,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),gt)return gt;if(this._backtrack){for(var K in dt)this[K]=dt[K];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var rt,it,gt,Q;this._more||(this.yytext="",this.match="");for(var dt=this._currentRules(),K=0;Kit[0].length)){if(it=gt,Q=K,this.options.backtrack_lexer){if(rt=this.test_match(gt,dt[K]),rt!==!1)return rt;if(this._backtrack){it=!1;continue}else return!1}else if(!this.options.flex)break}return it?(rt=this.test_match(it,dt[Q]),rt!==!1?rt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var it=this.next();return it||this.lex()},begin:function(it){this.conditionStack.push(it)},popState:function(){var it=this.conditionStack.length-1;return it>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(it){return it=this.conditionStack.length-1-Math.abs(it||0),it>=0?this.conditionStack[it]:"INITIAL"},pushState:function(it){this.begin(it)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(it,gt,Q,dt){switch(Q){case 0:return this.begin("acc_title"),19;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),21;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 13;case 8:break;case 9:break;case 10:return 5;case 11:return 40;case 12:return 32;case 13:return 38;case 14:return 42;case 15:return 43;case 16:return 44;case 17:return 45;case 18:return 35;case 19:return 28;case 20:return 29;case 21:return 37;case 22:return 31;case 23:return 34;case 24:return 26;case 25:return 9;case 26:return 9;case 27:return 8;case 28:return"CARET";case 29:this.begin("options");break;case 30:this.popState();break;case 31:return 12;case 32:return 36;case 33:this.begin("string");break;case 34:this.popState();break;case 35:return 33;case 36:return 30;case 37:return 46;case 38:return 7}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:parent:)/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:TB\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},options:{rules:[30,31],inclusive:!1},string:{rules:[34,35],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,36,37,38,39],inclusive:!0}}};return ct}();ft.lexer=wt;function mt(){this.yy={}}return mt.prototype=ft,ft.Parser=mt,new mt}();abt.parser=abt;const UWe=abt;let cX=Re().gitGraph.mainBranchName,GWe=Re().gitGraph.mainBranchOrder,q1={},np=null,rB={};rB[cX]={name:cX,order:GWe};let h1={};h1[cX]=np;let Dd=cX,Ezt="LR",N9=0;function obt(){return AFt({length:7})}function KWe(i,a){const f=Object.create(null);return i.reduce((g,w)=>{const v=a(w);return f[v]||(f[v]=!0,g.push(w)),g},[])}const WWe=function(i){Ezt=i};let Tzt={};const YWe=function(i){Kt.debug("options str",i),i=i&&i.trim(),i=i||"{}";try{Tzt=JSON.parse(i)}catch(a){Kt.error("error while parsing gitGraph options",a.message)}},XWe=function(){return Tzt},QWe=function(i,a,f,g){Kt.debug("Entering commit:",i,a,f,g),a=ei.sanitizeText(a,Re()),i=ei.sanitizeText(i,Re()),g=ei.sanitizeText(g,Re());const w={id:a||N9+"-"+obt(),message:i,seq:N9++,type:f||CD.NORMAL,tag:g||"",parents:np==null?[]:[np.id],branch:Dd};np=w,q1[w.id]=w,h1[Dd]=w.id,Kt.debug("in pushCommit "+w.id)},JWe=function(i,a){if(i=ei.sanitizeText(i,Re()),h1[i]===void 0)h1[i]=np!=null?np.id:null,rB[i]={name:i,order:a?parseInt(a,10):null},Czt(i),Kt.debug("in createBranch");else{let f=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+i+'")');throw f.hash={text:"branch "+i,token:"branch "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+i+'"']},f}},ZWe=function(i,a,f,g){i=ei.sanitizeText(i,Re()),a=ei.sanitizeText(a,Re());const w=q1[h1[Dd]],v=q1[h1[i]];if(Dd===i){let E=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(w===void 0||!w){let E=new Error('Incorrect usage of "merge". Current branch ('+Dd+")has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},E}else if(h1[i]===void 0){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") does not exist");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+i]},E}else if(v===void 0||!v){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},E}else if(w===v){let E=new Error('Incorrect usage of "merge". Both branches have same head');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(a&&q1[a]!==void 0){let E=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw E.hash={text:"merge "+i+a+f+g,token:"merge "+i+a+f+g,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+i+" "+a+"_UNIQUE "+f+" "+g]},E}const b={id:a||N9+"-"+obt(),message:"merged branch "+i+" into "+Dd,seq:N9++,parents:[np==null?null:np.id,h1[i]],branch:Dd,type:CD.MERGE,customType:f,customId:!!a,tag:g||""};np=b,q1[b.id]=b,h1[Dd]=b.id,Kt.debug(h1),Kt.debug("in mergeBranch")},tYe=function(i,a,f,g){if(Kt.debug("Entering cherryPick:",i,a,f),i=ei.sanitizeText(i,Re()),a=ei.sanitizeText(a,Re()),f=ei.sanitizeText(f,Re()),g=ei.sanitizeText(g,Re()),!i||q1[i]===void 0){let b=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw b.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},b}let w=q1[i],v=w.branch;if(g&&!(Array.isArray(w.parents)&&w.parents.includes(g)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");if(w.type===CD.MERGE&&!g)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!a||q1[a]===void 0){if(v===Dd){let S=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw S.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},S}const b=q1[h1[Dd]];if(b===void 0||!b){let S=new Error('Incorrect usage of "cherry-pick". Current branch ('+Dd+")has no commits");throw S.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},S}const E={id:N9+"-"+obt(),message:"cherry-picked "+w+" into "+Dd,seq:N9++,parents:[np==null?null:np.id,w.id],branch:Dd,type:CD.CHERRY_PICK,tag:f??`cherry-pick:${w.id}${w.type===CD.MERGE?`|parent:${g}`:""}`};np=E,q1[E.id]=E,h1[Dd]=E.id,Kt.debug(h1),Kt.debug("in cherryPick")}},Czt=function(i){if(i=ei.sanitizeText(i,Re()),h1[i]===void 0){let a=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+i+'")');throw a.hash={text:"checkout "+i,token:"checkout "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+i+'"']},a}else{Dd=i;const a=h1[Dd];np=q1[a]}};function Szt(i,a,f){const g=i.indexOf(a);g===-1?i.push(f):i.splice(g,1,f)}function _zt(i){const a=i.reduce((w,v)=>w.seq>v.seq?w:v,i[0]);let f="";i.forEach(function(w){w===a?f+=" *":f+=" |"});const g=[f,a.id,a.seq];for(let w in h1)h1[w]===a.id&&g.push(w);if(Kt.debug(g.join(" ")),a.parents&&a.parents.length==2){const w=q1[a.parents[0]];Szt(i,a,w),i.push(q1[a.parents[1]])}else{if(a.parents.length==0)return;{const w=q1[a.parents];Szt(i,a,w)}}i=KWe(i,w=>w.id),_zt(i)}const eYe=function(){Kt.debug(q1);const i=Azt()[0];_zt([i])},nYe=function(){q1={},np=null;let i=Re().gitGraph.mainBranchName,a=Re().gitGraph.mainBranchOrder;h1={},h1[i]=null,rB={},rB[i]={name:i,order:a},Dd=i,N9=0,ag()},rYe=function(){return Object.values(rB).map((a,f)=>a.order!==null?a:{...a,order:parseFloat(`0.${f}`,10)}).sort((a,f)=>a.order-f.order).map(({name:a})=>({name:a}))},iYe=function(){return h1},sYe=function(){return q1},Azt=function(){const i=Object.keys(q1).map(function(a){return q1[a]});return i.forEach(function(a){Kt.debug(a.id)}),i.sort((a,f)=>a.seq-f.seq),i},aYe=function(){return Dd},oYe=function(){return Ezt},cYe=function(){return np},CD={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},uYe={getConfig:()=>Re().gitGraph,setDirection:WWe,setOptions:YWe,getOptions:XWe,commit:QWe,branch:JWe,merge:ZWe,cherryPick:tYe,checkout:Czt,prettyPrint:eYe,clear:nYe,getBranchesAsObjArray:rYe,getBranches:iYe,getCommits:sYe,getCommitsArray:Azt,getCurrentBranch:aYe,getDirection:oYe,getHead:cYe,setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,setDiagramTitle:S2,getDiagramTitle:Zg,commitType:CD};let iB={};const D2={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},P9=8;let Cf={},$x={},uX=[],sB=0,f1="LR";const lYe=()=>{Cf={},$x={},iB={},sB=0,uX=[],f1="LR"},Lzt=i=>{const a=document.createElementNS("http://www.w3.org/2000/svg","text");let f=[];typeof i=="string"?f=i.split(/\\n|\n|/gi):Array.isArray(i)?f=i:f=[];for(const g of f){const w=document.createElementNS("http://www.w3.org/2000/svg","tspan");w.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),w.setAttribute("dy","1em"),w.setAttribute("x","0"),w.setAttribute("class","row"),w.textContent=g.trim(),a.appendChild(w)}return a},hYe=i=>{let a="",f=0;return i.forEach(g=>{const w=f1==="TB"?$x[g].y:$x[g].x;w>=f&&(a=g,f=w)}),a||void 0},Dzt=(i,a,f)=>{const g=Re().gitGraph,w=i.append("g").attr("class","commit-bullets"),v=i.append("g").attr("class","commit-labels");let b=0;f1==="TB"&&(b=30);const S=Object.keys(a).sort((R,B)=>a[R].seq-a[B].seq),_=g.parallelCommits,M=10,F=40;S.forEach(R=>{const B=a[R];if(_)if(B.parents.length){const ot=hYe(B.parents);b=f1==="TB"?$x[ot].y+F:$x[ot].x+F}else b=0,f1==="TB"&&(b=30);const z=b+M,Y=f1==="TB"?z:Cf[B.branch].pos,nt=f1==="TB"?Cf[B.branch].pos:z;if(f){let ot,ft=B.customType!==void 0&&B.customType!==""?B.customType:B.type;switch(ft){case D2.NORMAL:ot="commit-normal";break;case D2.REVERSE:ot="commit-reverse";break;case D2.HIGHLIGHT:ot="commit-highlight";break;case D2.MERGE:ot="commit-merge";break;case D2.CHERRY_PICK:ot="commit-cherry-pick";break;default:ot="commit-normal"}if(ft===D2.HIGHLIGHT){const wt=w.append("rect");wt.attr("x",nt-10),wt.attr("y",Y-10),wt.attr("height",20),wt.attr("width",20),wt.attr("class",`commit ${B.id} commit-highlight${Cf[B.branch].index%P9} ${ot}-outer`),w.append("rect").attr("x",nt-6).attr("y",Y-6).attr("height",12).attr("width",12).attr("class",`commit ${B.id} commit${Cf[B.branch].index%P9} ${ot}-inner`)}else if(ft===D2.CHERRY_PICK)w.append("circle").attr("cx",nt).attr("cy",Y).attr("r",10).attr("class",`commit ${B.id} ${ot}`),w.append("circle").attr("cx",nt-3).attr("cy",Y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${ot}`),w.append("circle").attr("cx",nt+3).attr("cy",Y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${ot}`),w.append("line").attr("x1",nt+3).attr("y1",Y+1).attr("x2",nt).attr("y2",Y-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${ot}`),w.append("line").attr("x1",nt-3).attr("y1",Y+1).attr("x2",nt).attr("y2",Y-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${ot}`);else{const wt=w.append("circle");if(wt.attr("cx",nt),wt.attr("cy",Y),wt.attr("r",B.type===D2.MERGE?9:10),wt.attr("class",`commit ${B.id} commit${Cf[B.branch].index%P9}`),ft===D2.MERGE){const mt=w.append("circle");mt.attr("cx",nt),mt.attr("cy",Y),mt.attr("r",6),mt.attr("class",`commit ${ot} ${B.id} commit${Cf[B.branch].index%P9}`)}ft===D2.REVERSE&&w.append("path").attr("d",`M ${nt-5},${Y-5}L${nt+5},${Y+5}M${nt-5},${Y+5}L${nt+5},${Y-5}`).attr("class",`commit ${ot} ${B.id} commit${Cf[B.branch].index%P9}`)}}if(f1==="TB"?$x[B.id]={x:nt,y:z}:$x[B.id]={x:z,y:Y},f){if(B.type!==D2.CHERRY_PICK&&(B.customId&&B.type===D2.MERGE||B.type!==D2.MERGE)&&g.showCommitLabel){const wt=v.append("g"),mt=wt.insert("rect").attr("class","commit-label-bkg"),ct=wt.append("text").attr("x",b).attr("y",Y+25).attr("class","commit-label").text(B.id);let rt=ct.node().getBBox();if(mt.attr("x",z-rt.width/2-2).attr("y",Y+13.5).attr("width",rt.width+2*2).attr("height",rt.height+2*2),f1==="TB"&&(mt.attr("x",nt-(rt.width+4*4+5)).attr("y",Y-12),ct.attr("x",nt-(rt.width+4*4)).attr("y",Y+rt.height-12)),f1!=="TB"&&ct.attr("x",z-rt.width/2),g.rotateCommitLabel)if(f1==="TB")ct.attr("transform","rotate(-45, "+nt+", "+Y+")"),mt.attr("transform","rotate(-45, "+nt+", "+Y+")");else{let it=-7.5-(rt.width+10)/25*9.5,gt=10+rt.width/25*8.5;wt.attr("transform","translate("+it+", "+gt+") rotate(-45, "+b+", "+Y+")")}}if(B.tag){const wt=v.insert("polygon"),mt=v.append("circle"),ct=v.append("text").attr("y",Y-16).attr("class","tag-label").text(B.tag);let rt=ct.node().getBBox();ct.attr("x",z-rt.width/2);const it=rt.height/2,gt=Y-19.2;wt.attr("class","tag-label-bkg").attr("points",` + ${b-rt.width/2-4/2},${gt+2} + ${b-rt.width/2-4/2},${gt-2} + ${z-rt.width/2-4},${gt-it-2} + ${z+rt.width/2+4},${gt-it-2} + ${z+rt.width/2+4},${gt+it+2} + ${z-rt.width/2-4},${gt+it+2}`),mt.attr("cx",b-rt.width/2+4/2).attr("cy",gt).attr("r",1.5).attr("class","tag-hole"),f1==="TB"&&(wt.attr("class","tag-label-bkg").attr("points",` + ${nt},${b+2} + ${nt},${b-2} + ${nt+M},${b-it-2} + ${nt+M+rt.width+4},${b-it-2} + ${nt+M+rt.width+4},${b+it+2} + ${nt+M},${b+it+2}`).attr("transform","translate(12,12) rotate(45, "+nt+","+b+")"),mt.attr("cx",nt+4/2).attr("cy",b).attr("transform","translate(12,12) rotate(45, "+nt+","+b+")"),ct.attr("x",nt+5).attr("y",b+3).attr("transform","translate(14,14) rotate(45, "+nt+","+b+")"))}}b+=F+M,b>sB&&(sB=b)})},fYe=(i,a,f,g,w)=>{const b=(f1==="TB"?f.x_.branch===b,S=_=>_.seq>i.seq&&_.seqS(_)&&E(_))},aB=(i,a,f=0)=>{const g=i+Math.abs(i-a)/2;if(f>5)return g;if(uX.every(b=>Math.abs(b-g)>=10))return uX.push(g),g;const v=Math.abs(i-a);return aB(i,a-v/5,f+1)},dYe=(i,a,f,g)=>{const w=$x[a.id],v=$x[f.id],b=fYe(a,f,w,v,g);let E="",S="",_=0,M=0,F=Cf[f.branch].index,R;if(b){E="A 10 10, 0, 0, 0,",S="A 10 10, 0, 0, 1,",_=10,M=10;const B=w.yv.x&&(E="A 20 20, 0, 0, 0,",S="A 20 20, 0, 0, 1,",_=20,M=20,F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${w.x} ${v.y-_} ${S} ${w.x-M} ${v.y} L ${v.x} ${v.y}`),w.x===v.x&&(F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${w.x+_} ${w.y} ${E} ${w.x+M} ${v.y+_} L ${v.x} ${v.y}`)):(w.yv.y&&(E="A 20 20, 0, 0, 0,",_=20,M=20,F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${v.x-_} ${w.y} ${E} ${v.x} ${w.y-M} L ${v.x} ${v.y}`),w.y===v.y&&(F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${w.x} ${v.y-_} ${E} ${w.x+M} ${v.y} L ${v.x} ${v.y}`));i.append("path").attr("d",R).attr("class","arrow arrow"+F%P9)},gYe=(i,a)=>{const f=i.append("g").attr("class","commit-arrows");Object.keys(a).forEach(g=>{const w=a[g];w.parents&&w.parents.length>0&&w.parents.forEach(v=>{dYe(f,a[v],w,a)})})},pYe=(i,a)=>{const f=Re().gitGraph,g=i.append("g");a.forEach((w,v)=>{const b=v%P9,E=Cf[w.name].pos,S=g.append("line");S.attr("x1",0),S.attr("y1",E),S.attr("x2",sB),S.attr("y2",E),S.attr("class","branch branch"+b),f1==="TB"&&(S.attr("y1",30),S.attr("x1",E),S.attr("y2",sB),S.attr("x2",E)),uX.push(E);let _=w.name;const M=Lzt(_),F=g.insert("rect"),B=g.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+b);B.node().appendChild(M);let z=M.getBBox();F.attr("class","branchLabelBkg label"+b).attr("rx",4).attr("ry",4).attr("x",-z.width-4-(f.rotateCommitLabel===!0?30:0)).attr("y",-z.height/2+8).attr("width",z.width+18).attr("height",z.height+4),B.attr("transform","translate("+(-z.width-14-(f.rotateCommitLabel===!0?30:0))+", "+(E-z.height/2-1)+")"),f1==="TB"&&(F.attr("x",E-z.width/2-10).attr("y",0),B.attr("transform","translate("+(E-z.width/2-5)+", 0)")),f1!=="TB"&&F.attr("transform","translate(-19, "+(E-z.height/2)+")")})},bYe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:UWe,db:uYe,renderer:{draw:function(i,a,f,g){lYe();const w=Re(),v=w.gitGraph;Kt.debug("in gitgraph renderer",i+` +`,"id:",a,f),iB=g.db.getCommits();const b=g.db.getBranchesAsObjArray();f1=g.db.getDirection();const E=Tr(`[id="${a}"]`);let S=0;b.forEach((_,M)=>{const F=Lzt(_.name),R=E.append("g"),B=R.insert("g").attr("class","branchLabel"),z=B.insert("g").attr("class","label branch-label");z.node().appendChild(F);let Y=F.getBBox();Cf[_.name]={pos:S,index:M},S+=50+(v.rotateCommitLabel?40:0)+(f1==="TB"?Y.width/2:0),z.remove(),B.remove(),R.remove()}),Dzt(E,iB,!1),v.showBranches&&pYe(E,b),gYe(E,iB),Dzt(E,iB,!0),uo.insertTitle(E,"gitTitleText",v.titleTopMargin,g.db.getDiagramTitle()),hBt(void 0,E,v.diagramPadding,v.useMaxWidth??w.useMaxWidth)}},styles:i=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(a=>` + .branch-label${a} { fill: ${i["gitBranchLabel"+a]}; } + .commit${a} { stroke: ${i["git"+a]}; fill: ${i["git"+a]}; } + .commit-highlight${a} { stroke: ${i["gitInv"+a]}; fill: ${i["gitInv"+a]}; } + .label${a} { fill: ${i["git"+a]}; } + .arrow${a} { stroke: ${i["git"+a]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${i.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelColor};} + .commit-label-bkg { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${i.tagLabelFontSize}; fill: ${i.tagLabelColor};} + .tag-label-bkg { fill: ${i.tagLabelBackground}; stroke: ${i.tagLabelBorder}; } + .tag-hole { fill: ${i.textColor}; } + + .commit-merge { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + .commit-reverse { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var cbt=function(){var i=function(K,yt,V,Ot){for(V=V||{},Ot=K.length;Ot--;V[K[Ot]]=yt);return V},a=[6,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,33,35,37],f=[1,25],g=[1,26],w=[1,27],v=[1,28],b=[1,29],E=[1,30],S=[1,31],_=[1,9],M=[1,10],F=[1,11],R=[1,12],B=[1,13],z=[1,14],Y=[1,15],nt=[1,16],ot=[1,18],ft=[1,19],wt=[1,20],mt=[1,21],ct=[1,22],rt=[1,24],it=[1,32],gt={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,dateFormat:19,inclusiveEndDates:20,topAxis:21,axisFormat:22,tickInterval:23,excludes:24,includes:25,todayMarker:26,title:27,acc_title:28,acc_title_value:29,acc_descr:30,acc_descr_value:31,acc_descr_multiline_value:32,section:33,clickStatement:34,taskTxt:35,taskData:36,click:37,callbackname:38,callbackargs:39,href:40,clickStatementDebug:41,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",19:"dateFormat",20:"inclusiveEndDates",21:"topAxis",22:"axisFormat",23:"tickInterval",24:"excludes",25:"includes",26:"todayMarker",27:"title",28:"acc_title",29:"acc_title_value",30:"acc_descr",31:"acc_descr_value",32:"acc_descr_multiline_value",33:"section",35:"taskTxt",36:"taskData",37:"click",38:"callbackname",39:"callbackargs",40:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[41,2],[41,3],[41,3],[41,4],[41,3],[41,4],[41,2]],performAction:function(yt,V,Ot,It,jt,xt,Ft){var Ct=xt.length-1;switch(jt){case 1:return xt[Ct-1];case 2:this.$=[];break;case 3:xt[Ct-1].push(xt[Ct]),this.$=xt[Ct-1];break;case 4:case 5:this.$=xt[Ct];break;case 6:case 7:this.$=[];break;case 8:It.setWeekday("monday");break;case 9:It.setWeekday("tuesday");break;case 10:It.setWeekday("wednesday");break;case 11:It.setWeekday("thursday");break;case 12:It.setWeekday("friday");break;case 13:It.setWeekday("saturday");break;case 14:It.setWeekday("sunday");break;case 15:It.setDateFormat(xt[Ct].substr(11)),this.$=xt[Ct].substr(11);break;case 16:It.enableInclusiveEndDates(),this.$=xt[Ct].substr(18);break;case 17:It.TopAxis(),this.$=xt[Ct].substr(8);break;case 18:It.setAxisFormat(xt[Ct].substr(11)),this.$=xt[Ct].substr(11);break;case 19:It.setTickInterval(xt[Ct].substr(13)),this.$=xt[Ct].substr(13);break;case 20:It.setExcludes(xt[Ct].substr(9)),this.$=xt[Ct].substr(9);break;case 21:It.setIncludes(xt[Ct].substr(9)),this.$=xt[Ct].substr(9);break;case 22:It.setTodayMarker(xt[Ct].substr(12)),this.$=xt[Ct].substr(12);break;case 24:It.setDiagramTitle(xt[Ct].substr(6)),this.$=xt[Ct].substr(6);break;case 25:this.$=xt[Ct].trim(),It.setAccTitle(this.$);break;case 26:case 27:this.$=xt[Ct].trim(),It.setAccDescription(this.$);break;case 28:It.addSection(xt[Ct].substr(8)),this.$=xt[Ct].substr(8);break;case 30:It.addTask(xt[Ct-1],xt[Ct]),this.$="task";break;case 31:this.$=xt[Ct-1],It.setClickEvent(xt[Ct-1],xt[Ct],null);break;case 32:this.$=xt[Ct-2],It.setClickEvent(xt[Ct-2],xt[Ct-1],xt[Ct]);break;case 33:this.$=xt[Ct-2],It.setClickEvent(xt[Ct-2],xt[Ct-1],null),It.setLink(xt[Ct-2],xt[Ct]);break;case 34:this.$=xt[Ct-3],It.setClickEvent(xt[Ct-3],xt[Ct-2],xt[Ct-1]),It.setLink(xt[Ct-3],xt[Ct]);break;case 35:this.$=xt[Ct-2],It.setClickEvent(xt[Ct-2],xt[Ct],null),It.setLink(xt[Ct-2],xt[Ct-1]);break;case 36:this.$=xt[Ct-3],It.setClickEvent(xt[Ct-3],xt[Ct-1],xt[Ct]),It.setLink(xt[Ct-3],xt[Ct-2]);break;case 37:this.$=xt[Ct-1],It.setLink(xt[Ct-1],xt[Ct]);break;case 38:case 44:this.$=xt[Ct-1]+" "+xt[Ct];break;case 39:case 40:case 42:this.$=xt[Ct-2]+" "+xt[Ct-1]+" "+xt[Ct];break;case 41:case 43:this.$=xt[Ct-3]+" "+xt[Ct-2]+" "+xt[Ct-1]+" "+xt[Ct];break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:f,13:g,14:w,15:v,16:b,17:E,18:S,19:_,20:M,21:F,22:R,23:B,24:z,25:Y,26:nt,27:ot,28:ft,30:wt,32:mt,33:ct,34:23,35:rt,37:it},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:33,11:17,12:f,13:g,14:w,15:v,16:b,17:E,18:S,19:_,20:M,21:F,22:R,23:B,24:z,25:Y,26:nt,27:ot,28:ft,30:wt,32:mt,33:ct,34:23,35:rt,37:it},i(a,[2,5]),i(a,[2,6]),i(a,[2,15]),i(a,[2,16]),i(a,[2,17]),i(a,[2,18]),i(a,[2,19]),i(a,[2,20]),i(a,[2,21]),i(a,[2,22]),i(a,[2,23]),i(a,[2,24]),{29:[1,34]},{31:[1,35]},i(a,[2,27]),i(a,[2,28]),i(a,[2,29]),{36:[1,36]},i(a,[2,8]),i(a,[2,9]),i(a,[2,10]),i(a,[2,11]),i(a,[2,12]),i(a,[2,13]),i(a,[2,14]),{38:[1,37],40:[1,38]},i(a,[2,4]),i(a,[2,25]),i(a,[2,26]),i(a,[2,30]),i(a,[2,31],{39:[1,39],40:[1,40]}),i(a,[2,37],{38:[1,41]}),i(a,[2,32],{40:[1,42]}),i(a,[2,33]),i(a,[2,35],{39:[1,43]}),i(a,[2,34]),i(a,[2,36])],defaultActions:{},parseError:function(yt,V){if(V.recoverable)this.trace(yt);else{var Ot=new Error(yt);throw Ot.hash=V,Ot}},parse:function(yt){var V=this,Ot=[0],It=[],jt=[null],xt=[],Ft=this.table,Ct="",kt=0,Gt=0,Fe=2,Mt=1,pn=xt.slice.call(arguments,1),Ae=Object.create(this.lexer),ye={yy:{}};for(var tn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,tn)&&(ye.yy[tn]=this.yy[tn]);Ae.setInput(yt,ye.yy),ye.yy.lexer=Ae,ye.yy.parser=this,typeof Ae.yylloc>"u"&&(Ae.yylloc={});var sn=Ae.yylloc;xt.push(sn);var be=Ae.options&&Ae.options.ranges;typeof ye.yy.parseError=="function"?this.parseError=ye.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ne(){var Ss;return Ss=It.pop()||Ae.lex()||Mt,typeof Ss!="number"&&(Ss instanceof Array&&(It=Ss,Ss=It.pop()),Ss=V.symbols_[Ss]||Ss),Ss}for(var Xt,_e,xe,Mn,ce={},Br,we,Fi,mi;;){if(_e=Ot[Ot.length-1],this.defaultActions[_e]?xe=this.defaultActions[_e]:((Xt===null||typeof Xt>"u")&&(Xt=Ne()),xe=Ft[_e]&&Ft[_e][Xt]),typeof xe>"u"||!xe.length||!xe[0]){var ga="";mi=[];for(Br in Ft[_e])this.terminals_[Br]&&Br>Fe&&mi.push("'"+this.terminals_[Br]+"'");Ae.showPosition?ga="Parse error on line "+(kt+1)+`: +`+Ae.showPosition()+` +Expecting `+mi.join(", ")+", got '"+(this.terminals_[Xt]||Xt)+"'":ga="Parse error on line "+(kt+1)+": Unexpected "+(Xt==Mt?"end of input":"'"+(this.terminals_[Xt]||Xt)+"'"),this.parseError(ga,{text:Ae.match,token:this.terminals_[Xt]||Xt,line:Ae.yylineno,loc:sn,expected:mi})}if(xe[0]instanceof Array&&xe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_e+", token: "+Xt);switch(xe[0]){case 1:Ot.push(Xt),jt.push(Ae.yytext),xt.push(Ae.yylloc),Ot.push(xe[1]),Xt=null,Gt=Ae.yyleng,Ct=Ae.yytext,kt=Ae.yylineno,sn=Ae.yylloc;break;case 2:if(we=this.productions_[xe[1]][1],ce.$=jt[jt.length-we],ce._$={first_line:xt[xt.length-(we||1)].first_line,last_line:xt[xt.length-1].last_line,first_column:xt[xt.length-(we||1)].first_column,last_column:xt[xt.length-1].last_column},be&&(ce._$.range=[xt[xt.length-(we||1)].range[0],xt[xt.length-1].range[1]]),Mn=this.performAction.apply(ce,[Ct,Gt,kt,ye.yy,xe[1],jt,xt].concat(pn)),typeof Mn<"u")return Mn;we&&(Ot=Ot.slice(0,-1*we*2),jt=jt.slice(0,-1*we),xt=xt.slice(0,-1*we)),Ot.push(this.productions_[xe[1]][0]),jt.push(ce.$),xt.push(ce._$),Fi=Ft[Ot[Ot.length-2]][Ot[Ot.length-1]],Ot.push(Fi);break;case 3:return!0}}return!0}},Q=function(){var K={EOF:1,parseError:function(V,Ot){if(this.yy.parser)this.yy.parser.parseError(V,Ot);else throw new Error(V)},setInput:function(yt,V){return this.yy=V||this.yy||{},this._input=yt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var yt=this._input[0];this.yytext+=yt,this.yyleng++,this.offset++,this.match+=yt,this.matched+=yt;var V=yt.match(/(?:\r\n?|\n).*/g);return V?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),yt},unput:function(yt){var V=yt.length,Ot=yt.split(/(?:\r\n?|\n)/g);this._input=yt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-V),this.offset-=V;var It=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ot.length-1&&(this.yylineno-=Ot.length-1);var jt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ot?(Ot.length===It.length?this.yylloc.first_column:0)+It[It.length-Ot.length].length-Ot[0].length:this.yylloc.first_column-V},this.options.ranges&&(this.yylloc.range=[jt[0],jt[0]+this.yyleng-V]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(yt){this.unput(this.match.slice(yt))},pastInput:function(){var yt=this.matched.substr(0,this.matched.length-this.match.length);return(yt.length>20?"...":"")+yt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var yt=this.match;return yt.length<20&&(yt+=this._input.substr(0,20-yt.length)),(yt.substr(0,20)+(yt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var yt=this.pastInput(),V=new Array(yt.length+1).join("-");return yt+this.upcomingInput()+` +`+V+"^"},test_match:function(yt,V){var Ot,It,jt;if(this.options.backtrack_lexer&&(jt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(jt.yylloc.range=this.yylloc.range.slice(0))),It=yt[0].match(/(?:\r\n?|\n).*/g),It&&(this.yylineno+=It.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:It?It[It.length-1].length-It[It.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+yt[0].length},this.yytext+=yt[0],this.match+=yt[0],this.matches=yt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(yt[0].length),this.matched+=yt[0],Ot=this.performAction.call(this,this.yy,this,V,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ot)return Ot;if(this._backtrack){for(var xt in jt)this[xt]=jt[xt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var yt,V,Ot,It;this._more||(this.yytext="",this.match="");for(var jt=this._currentRules(),xt=0;xtV[0].length)){if(V=Ot,It=xt,this.options.backtrack_lexer){if(yt=this.test_match(Ot,jt[xt]),yt!==!1)return yt;if(this._backtrack){V=!1;continue}else return!1}else if(!this.options.flex)break}return V?(yt=this.test_match(V,jt[It]),yt!==!1?yt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var V=this.next();return V||this.lex()},begin:function(V){this.conditionStack.push(V)},popState:function(){var V=this.conditionStack.length-1;return V>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(V){return V=this.conditionStack.length-1-Math.abs(V||0),V>=0?this.conditionStack[V]:"INITIAL"},pushState:function(V){this.begin(V)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(V,Ot,It,jt){switch(It){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),28;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),30;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 40;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 38;case 21:this.popState();break;case 22:return 39;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 37;case 26:return 4;case 27:return 19;case 28:return 20;case 29:return 21;case 30:return 22;case 31:return 23;case 32:return 25;case 33:return 24;case 34:return 26;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return"date";case 43:return 27;case 44:return"accDescription";case 45:return 33;case 46:return 35;case 47:return 36;case 48:return":";case 49:return 6;case 50:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],inclusive:!0}}};return K}();gt.lexer=Q;function dt(){this.yy={}}return dt.prototype=gt,gt.Parser=dt,new dt}();cbt.parser=cbt;const wYe=cbt;var Mzt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){var f="day";return function(g,w,v){var b=function(_){return _.add(4-_.isoWeekday(),f)},E=w.prototype;E.isoWeekYear=function(){return b(this).year()},E.isoWeek=function(_){if(!this.$utils().u(_))return this.add(7*(_-this.isoWeek()),f);var M,F,R,B,z=b(this),Y=(M=this.isoWeekYear(),F=this.$u,R=(F?v.utc:v)().year(M).startOf("year"),B=4-R.isoWeekday(),R.isoWeekday()>4&&(B+=7),R.add(B,f));return z.diff(Y,"week")+1},E.isoWeekday=function(_){return this.$utils().u(_)?this.day()||7:this.day(this.day()%7?_:_-7)};var S=E.startOf;E.startOf=function(_,M){var F=this.$utils(),R=!!F.u(M)||M;return F.p(_)==="isoweek"?R?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):S.bind(this)(_,M)}}})})(Mzt);var mYe=Mzt.exports;const vYe=e9(mYe);var Izt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){var f={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},g=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,w=/\d\d/,v=/\d\d?/,b=/\d*[^-_:/,()\s\d]+/,E={},S=function(Y){return(Y=+Y)+(Y>68?1900:2e3)},_=function(Y){return function(nt){this[Y]=+nt}},M=[/[+-]\d\d:?(\d\d)?|Z/,function(Y){(this.zone||(this.zone={})).offset=function(nt){if(!nt||nt==="Z")return 0;var ot=nt.match(/([+-]|\d\d)/g),ft=60*ot[1]+(+ot[2]||0);return ft===0?0:ot[0]==="+"?-ft:ft}(Y)}],F=function(Y){var nt=E[Y];return nt&&(nt.indexOf?nt:nt.s.concat(nt.f))},R=function(Y,nt){var ot,ft=E.meridiem;if(ft){for(var wt=1;wt<=24;wt+=1)if(Y.indexOf(ft(wt,0,nt))>-1){ot=wt>12;break}}else ot=Y===(nt?"pm":"PM");return ot},B={A:[b,function(Y){this.afternoon=R(Y,!1)}],a:[b,function(Y){this.afternoon=R(Y,!0)}],S:[/\d/,function(Y){this.milliseconds=100*+Y}],SS:[w,function(Y){this.milliseconds=10*+Y}],SSS:[/\d{3}/,function(Y){this.milliseconds=+Y}],s:[v,_("seconds")],ss:[v,_("seconds")],m:[v,_("minutes")],mm:[v,_("minutes")],H:[v,_("hours")],h:[v,_("hours")],HH:[v,_("hours")],hh:[v,_("hours")],D:[v,_("day")],DD:[w,_("day")],Do:[b,function(Y){var nt=E.ordinal,ot=Y.match(/\d+/);if(this.day=ot[0],nt)for(var ft=1;ft<=31;ft+=1)nt(ft).replace(/\[|\]/g,"")===Y&&(this.day=ft)}],M:[v,_("month")],MM:[w,_("month")],MMM:[b,function(Y){var nt=F("months"),ot=(F("monthsShort")||nt.map(function(ft){return ft.slice(0,3)})).indexOf(Y)+1;if(ot<1)throw new Error;this.month=ot%12||ot}],MMMM:[b,function(Y){var nt=F("months").indexOf(Y)+1;if(nt<1)throw new Error;this.month=nt%12||nt}],Y:[/[+-]?\d+/,_("year")],YY:[w,function(Y){this.year=S(Y)}],YYYY:[/\d{4}/,_("year")],Z:M,ZZ:M};function z(Y){var nt,ot;nt=Y,ot=E&&E.formats;for(var ft=(Y=nt.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Q,dt,K){var yt=K&&K.toUpperCase();return dt||ot[K]||f[K]||ot[yt].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(V,Ot,It){return Ot||It.slice(1)})})).match(g),wt=ft.length,mt=0;mt-1)return new Date((xt==="X"?1e3:1)*jt);var Ct=z(xt)(jt),kt=Ct.year,Gt=Ct.month,Fe=Ct.day,Mt=Ct.hours,pn=Ct.minutes,Ae=Ct.seconds,ye=Ct.milliseconds,tn=Ct.zone,sn=new Date,be=Fe||(kt||Gt?1:sn.getDate()),Ne=kt||sn.getFullYear(),Xt=0;kt&&!Gt||(Xt=Gt>0?Gt-1:sn.getMonth());var _e=Mt||0,xe=pn||0,Mn=Ae||0,ce=ye||0;return tn?new Date(Date.UTC(Ne,Xt,be,_e,xe,Mn,ce+60*tn.offset*1e3)):Ft?new Date(Date.UTC(Ne,Xt,be,_e,xe,Mn,ce)):new Date(Ne,Xt,be,_e,xe,Mn,ce)}catch{return new Date("")}}(ct,gt,rt),this.init(),yt&&yt!==!0&&(this.$L=this.locale(yt).$L),K&&ct!=this.format(gt)&&(this.$d=new Date("")),E={}}else if(gt instanceof Array)for(var V=gt.length,Ot=1;Ot<=V;Ot+=1){it[1]=gt[Ot-1];var It=ot.apply(this,it);if(It.isValid()){this.$d=It.$d,this.$L=It.$L,this.init();break}Ot===V&&(this.$d=new Date(""))}else wt.call(this,mt)}}})})(Izt);var yYe=Izt.exports;const xYe=e9(yYe);var Ozt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){return function(f,g){var w=g.prototype,v=w.format;w.format=function(b){var E=this,S=this.$locale();if(!this.isValid())return v.bind(this)(b);var _=this.$utils(),M=(b||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(F){switch(F){case"Q":return Math.ceil((E.$M+1)/3);case"Do":return S.ordinal(E.$D);case"gggg":return E.weekYear();case"GGGG":return E.isoWeekYear();case"wo":return S.ordinal(E.week(),"W");case"w":case"ww":return _.s(E.week(),F==="w"?1:2,"0");case"W":case"WW":return _.s(E.isoWeek(),F==="W"?1:2,"0");case"k":case"kk":return _.s(String(E.$H===0?24:E.$H),F==="k"?1:2,"0");case"X":return Math.floor(E.$d.getTime()/1e3);case"x":return E.$d.getTime();case"z":return"["+E.offsetName()+"]";case"zzz":return"["+E.offsetName("long")+"]";default:return F}});return v.bind(this)(M)}}})})(Ozt);var kYe=Ozt.exports;const EYe=e9(kYe);tg.extend(vYe),tg.extend(xYe),tg.extend(EYe);let h4="",ubt="",lbt,hbt="",oB=[],cB=[],fbt={},dbt=[],lX=[],SD="",gbt="";const Nzt=["active","done","crit","milestone"];let pbt=[],uB=!1,bbt=!1,wbt="sunday",mbt=0;const TYe=function(){dbt=[],lX=[],SD="",pbt=[],hX=0,ybt=void 0,fX=void 0,H1=[],h4="",ubt="",gbt="",lbt=void 0,hbt="",oB=[],cB=[],uB=!1,bbt=!1,mbt=0,fbt={},ag(),wbt="sunday"},CYe=function(i){ubt=i},SYe=function(){return ubt},_Ye=function(i){lbt=i},AYe=function(){return lbt},LYe=function(i){hbt=i},DYe=function(){return hbt},MYe=function(i){h4=i},IYe=function(){uB=!0},OYe=function(){return uB},NYe=function(){bbt=!0},PYe=function(){return bbt},FYe=function(i){gbt=i},BYe=function(){return gbt},RYe=function(){return h4},jYe=function(i){oB=i.toLowerCase().split(/[\s,]+/)},$Ye=function(){return oB},zYe=function(i){cB=i.toLowerCase().split(/[\s,]+/)},qYe=function(){return cB},HYe=function(){return fbt},VYe=function(i){SD=i,dbt.push(i)},UYe=function(){return dbt},GYe=function(){let i=$zt();const a=10;let f=0;for(;!i&&f=6&&f.includes("weekends")||f.includes(i.format("dddd").toLowerCase())?!0:f.includes(i.format(a.trim()))},KYe=function(i){wbt=i},WYe=function(){return wbt},Fzt=function(i,a,f,g){if(!f.length||i.manualEndTime)return;let w;i.startTime instanceof Date?w=tg(i.startTime):w=tg(i.startTime,a,!0),w=w.add(1,"d");let v;i.endTime instanceof Date?v=tg(i.endTime):v=tg(i.endTime,a,!0);const[b,E]=YYe(w,v,a,f,g);i.endTime=b.toDate(),i.renderEndTime=E},YYe=function(i,a,f,g,w){let v=!1,b=null;for(;i<=a;)v||(b=a.toDate()),v=Pzt(i,f,g,w),v&&(a=a.add(1,"d")),i=i.add(1,"d");return[a,b]},vbt=function(i,a,f){f=f.trim();const w=/^after\s+([\d\w- ]+)/.exec(f.trim());if(w!==null){let b=null;if(w[1].split(" ").forEach(function(E){let S=AD(E);S!==void 0&&(b?S.endTime>b.endTime&&(b=S):b=S)}),b)return b.endTime;{const E=new Date;return E.setHours(0,0,0,0),E}}let v=tg(f,a.trim(),!0);if(v.isValid())return v.toDate();{Kt.debug("Invalid date:"+f),Kt.debug("With date format:"+a.trim());const b=new Date(f);if(b===void 0||isNaN(b.getTime())||b.getFullYear()<-1e4||b.getFullYear()>1e4)throw new Error("Invalid date:"+f);return b}},Bzt=function(i){const a=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(i.trim());return a!==null?[Number.parseFloat(a[1]),a[2]]:[NaN,"ms"]},Rzt=function(i,a,f,g=!1){f=f.trim();let w=tg(f,a.trim(),!0);if(w.isValid())return g&&(w=w.add(1,"d")),w.toDate();let v=tg(i);const[b,E]=Bzt(f);if(!Number.isNaN(b)){const S=v.add(b,E);S.isValid()&&(v=S)}return v.toDate()};let hX=0;const _D=function(i){return i===void 0?(hX=hX+1,"task"+hX):i},XYe=function(i,a){let f;a.substr(0,1)===":"?f=a.substr(1,a.length):f=a;const g=f.split(","),w={};Hzt(g,w,Nzt);for(let b=0;b{window.open(f,"_self")}),fbt[g]=f)}),zzt(i,"clickable")},zzt=function(i,a){i.split(",").forEach(function(f){let g=AD(f);g!==void 0&&g.classes.push(a)})},eXe=function(i,a,f){if(Re().securityLevel!=="loose"||a===void 0)return;let g=[];if(typeof f=="string"){g=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let v=0;v{uo.runFunc(a,...g)})},qzt=function(i,a){pbt.push(function(){const f=document.querySelector(`[id="${i}"]`);f!==null&&f.addEventListener("click",function(){a()})},function(){const f=document.querySelector(`[id="${i}-text"]`);f!==null&&f.addEventListener("click",function(){a()})})},nXe={getConfig:()=>Re().gantt,clear:TYe,setDateFormat:MYe,getDateFormat:RYe,enableInclusiveEndDates:IYe,endDatesAreInclusive:OYe,enableTopAxis:NYe,topAxisEnabled:PYe,setAxisFormat:CYe,getAxisFormat:SYe,setTickInterval:_Ye,getTickInterval:AYe,setTodayMarker:LYe,getTodayMarker:DYe,setAccTitle:og,getAccTitle:Xg,setDiagramTitle:S2,getDiagramTitle:Zg,setDisplayMode:FYe,getDisplayMode:BYe,setAccDescription:Qg,getAccDescription:Jg,addSection:VYe,getSections:UYe,getTasks:GYe,addTask:JYe,findTaskById:AD,addTaskOrg:ZYe,setIncludes:jYe,getIncludes:$Ye,setExcludes:zYe,getExcludes:qYe,setClickEvent:function(i,a,f){i.split(",").forEach(function(g){eXe(g,a,f)}),zzt(i,"clickable")},setLink:tXe,getLinks:HYe,bindFunctions:function(i){pbt.forEach(function(a){a(i)})},parseDuration:Bzt,isInvalidDate:Pzt,setWeekday:KYe,getWeekday:WYe};function Hzt(i,a,f){let g=!0;for(;g;)g=!1,f.forEach(function(w){const v="^\\s*"+w+"\\s*$",b=new RegExp(v);i[0].match(b)&&(a[w]=!0,i.shift(1),g=!0)})}const rXe=function(){Kt.debug("Something is calling, setConf, remove the call")},Vzt={monday:hF,tuesday:NNt,wednesday:PNt,thursday:l9,friday:FNt,saturday:BNt,sunday:lF},iXe=(i,a)=>{let f=[...i].map(()=>-1/0),g=[...i].sort((v,b)=>v.startTime-b.startTime||v.order-b.order),w=0;for(const v of g)for(let b=0;b=f[b]){f[b]=v.endTime,v.order=b+a,b>w&&(w=b);break}return w};let zx;const sXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:wYe,db:nXe,renderer:{setConf:rXe,draw:function(i,a,f,g){const w=Re().gantt,v=Re().securityLevel;let b;v==="sandbox"&&(b=Tr("#i"+a));const E=Tr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=v==="sandbox"?b.nodes()[0].contentDocument:document,_=S.getElementById(a);zx=_.parentElement.offsetWidth,zx===void 0&&(zx=1200),w.useWidth!==void 0&&(zx=w.useWidth);const M=g.db.getTasks();let F=[];for(const gt of M)F.push(gt.type);F=it(F);const R={};let B=2*w.topPadding;if(g.db.getDisplayMode()==="compact"||w.displayMode==="compact"){const gt={};for(const dt of M)gt[dt.section]===void 0?gt[dt.section]=[dt]:gt[dt.section].push(dt);let Q=0;for(const dt of Object.keys(gt)){const K=iXe(gt[dt],Q)+1;Q+=K,B+=K*(w.barHeight+w.barGap),R[dt]=K}}else{B+=M.length*(w.barHeight+w.barGap);for(const gt of F)R[gt]=M.filter(Q=>Q.type===gt).length}_.setAttribute("viewBox","0 0 "+zx+" "+B);const z=E.select(`[id="${a}"]`),Y=eDe().domain([B9e(M,function(gt){return gt.startTime}),F9e(M,function(gt){return gt.endTime})]).rangeRound([0,zx-w.leftPadding-w.rightPadding]);function nt(gt,Q){const dt=gt.startTime,K=Q.startTime;let yt=0;return dt>K?yt=1:dtkt.order))].map(kt=>gt.find(Gt=>Gt.order===kt));z.append("g").selectAll("rect").data(jt).enter().append("rect").attr("x",0).attr("y",function(kt,Gt){return Gt=kt.order,Gt*Q+dt-2}).attr("width",function(){return Ot-w.rightPadding/2}).attr("height",Q).attr("class",function(kt){for(const[Gt,Fe]of F.entries())if(kt.type===Fe)return"section section"+Gt%w.numberSectionStyles;return"section section0"});const xt=z.append("g").selectAll("rect").data(gt).enter(),Ft=g.db.getLinks();if(xt.append("rect").attr("id",function(kt){return kt.id}).attr("rx",3).attr("ry",3).attr("x",function(kt){return kt.milestone?Y(kt.startTime)+K+.5*(Y(kt.endTime)-Y(kt.startTime))-.5*yt:Y(kt.startTime)+K}).attr("y",function(kt,Gt){return Gt=kt.order,Gt*Q+dt}).attr("width",function(kt){return kt.milestone?yt:Y(kt.renderEndTime||kt.endTime)-Y(kt.startTime)}).attr("height",yt).attr("transform-origin",function(kt,Gt){return Gt=kt.order,(Y(kt.startTime)+K+.5*(Y(kt.endTime)-Y(kt.startTime))).toString()+"px "+(Gt*Q+dt+.5*yt).toString()+"px"}).attr("class",function(kt){const Gt="task";let Fe="";kt.classes.length>0&&(Fe=kt.classes.join(" "));let Mt=0;for(const[Ae,ye]of F.entries())kt.type===ye&&(Mt=Ae%w.numberSectionStyles);let pn="";return kt.active?kt.crit?pn+=" activeCrit":pn=" active":kt.done?kt.crit?pn=" doneCrit":pn=" done":kt.crit&&(pn+=" crit"),pn.length===0&&(pn=" task"),kt.milestone&&(pn=" milestone "+pn),pn+=Mt,pn+=" "+Fe,Gt+pn}),xt.append("text").attr("id",function(kt){return kt.id+"-text"}).text(function(kt){return kt.task}).attr("font-size",w.fontSize).attr("x",function(kt){let Gt=Y(kt.startTime),Fe=Y(kt.renderEndTime||kt.endTime);kt.milestone&&(Gt+=.5*(Y(kt.endTime)-Y(kt.startTime))-.5*yt),kt.milestone&&(Fe=Gt+yt);const Mt=this.getBBox().width;return Mt>Fe-Gt?Fe+Mt+1.5*w.leftPadding>Ot?Gt+K-5:Fe+K+5:(Fe-Gt)/2+Gt+K}).attr("y",function(kt,Gt){return Gt=kt.order,Gt*Q+w.barHeight/2+(w.fontSize/2-2)+dt}).attr("text-height",yt).attr("class",function(kt){const Gt=Y(kt.startTime);let Fe=Y(kt.endTime);kt.milestone&&(Fe=Gt+yt);const Mt=this.getBBox().width;let pn="";kt.classes.length>0&&(pn=kt.classes.join(" "));let Ae=0;for(const[tn,sn]of F.entries())kt.type===sn&&(Ae=tn%w.numberSectionStyles);let ye="";return kt.active&&(kt.crit?ye="activeCritText"+Ae:ye="activeText"+Ae),kt.done?kt.crit?ye=ye+" doneCritText"+Ae:ye=ye+" doneText"+Ae:kt.crit&&(ye=ye+" critText"+Ae),kt.milestone&&(ye+=" milestoneText"),Mt>Fe-Gt?Fe+Mt+1.5*w.leftPadding>Ot?pn+" taskTextOutsideLeft taskTextOutside"+Ae+" "+ye:pn+" taskTextOutsideRight taskTextOutside"+Ae+" "+ye+" width-"+Mt:pn+" taskText taskText"+Ae+" "+ye+" width-"+Mt}),Re().securityLevel==="sandbox"){let kt;kt=Tr("#i"+a);const Gt=kt.nodes()[0].contentDocument;xt.filter(function(Fe){return Ft[Fe.id]!==void 0}).each(function(Fe){var Mt=Gt.querySelector("#"+Fe.id),pn=Gt.querySelector("#"+Fe.id+"-text");const Ae=Mt.parentNode;var ye=Gt.createElement("a");ye.setAttribute("xlink:href",Ft[Fe.id]),ye.setAttribute("target","_top"),Ae.appendChild(ye),ye.appendChild(Mt),ye.appendChild(pn)})}}function wt(gt,Q,dt,K,yt,V,Ot,It){if(Ot.length===0&&It.length===0)return;let jt,xt;for(const{startTime:Mt,endTime:pn}of V)(jt===void 0||Mtxt)&&(xt=pn);if(!jt||!xt)return;if(tg(xt).diff(tg(jt),"year")>5){Kt.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}const Ft=g.db.getDateFormat(),Ct=[];let kt=null,Gt=tg(jt);for(;Gt.valueOf()<=xt;)g.db.isInvalidDate(Gt,Ft,Ot,It)?kt?kt.end=Gt:kt={start:Gt,end:Gt}:kt&&(Ct.push(kt),kt=null),Gt=Gt.add(1,"d");z.append("g").selectAll("rect").data(Ct).enter().append("rect").attr("id",function(Mt){return"exclude-"+Mt.start.format("YYYY-MM-DD")}).attr("x",function(Mt){return Y(Mt.start)+dt}).attr("y",w.gridLineStartPadding).attr("width",function(Mt){const pn=Mt.end.add(1,"day");return Y(pn)-Y(Mt.start)}).attr("height",yt-Q-w.gridLineStartPadding).attr("transform-origin",function(Mt,pn){return(Y(Mt.start)+dt+.5*(Y(Mt.end)-Y(Mt.start))).toString()+"px "+(pn*gt+.5*yt).toString()+"px"}).attr("class","exclude-range")}function mt(gt,Q,dt,K){let yt=G9e(Y).tickSize(-K+Q+w.gridLineStartPadding).tickFormat(DW(g.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));const Ot=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(g.db.getTickInterval()||w.tickInterval);if(Ot!==null){const It=Ot[1],jt=Ot[2],xt=g.db.getWeekday()||w.weekday;switch(jt){case"millisecond":yt.ticks(UL.every(It));break;case"second":yt.ticks(f8.every(It));break;case"minute":yt.ticks(cF.every(It));break;case"hour":yt.ticks(uF.every(It));break;case"day":yt.ticks(c9.every(It));break;case"week":yt.ticks(Vzt[xt].every(It));break;case"month":yt.ticks(fF.every(It));break}}if(z.append("g").attr("class","grid").attr("transform","translate("+gt+", "+(K-50)+")").call(yt).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),g.db.topAxisEnabled()||w.topAxis){let It=U9e(Y).tickSize(-K+Q+w.gridLineStartPadding).tickFormat(DW(g.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));if(Ot!==null){const jt=Ot[1],xt=Ot[2],Ft=g.db.getWeekday()||w.weekday;switch(xt){case"millisecond":It.ticks(UL.every(jt));break;case"second":It.ticks(f8.every(jt));break;case"minute":It.ticks(cF.every(jt));break;case"hour":It.ticks(uF.every(jt));break;case"day":It.ticks(c9.every(jt));break;case"week":It.ticks(Vzt[Ft].every(jt));break;case"month":It.ticks(fF.every(jt));break}}z.append("g").attr("class","grid").attr("transform","translate("+gt+", "+Q+")").call(It).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function ct(gt,Q){let dt=0;const K=Object.keys(R).map(yt=>[yt,R[yt]]);z.append("g").selectAll("text").data(K).enter().append(function(yt){const V=yt[0].split(ei.lineBreakRegex),Ot=-(V.length-1)/2,It=S.createElementNS("http://www.w3.org/2000/svg","text");It.setAttribute("dy",Ot+"em");for(const[jt,xt]of V.entries()){const Ft=S.createElementNS("http://www.w3.org/2000/svg","tspan");Ft.setAttribute("alignment-baseline","central"),Ft.setAttribute("x","10"),jt>0&&Ft.setAttribute("dy","1em"),Ft.textContent=xt,It.appendChild(Ft)}return It}).attr("x",10).attr("y",function(yt,V){if(V>0)for(let Ot=0;Ot` + .mermaid-main-font { + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .exclude-range { + fill: ${i.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${i.sectionBkgColor}; + } + + .section2 { + fill: ${i.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${i.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${i.titleColor}; + } + + .sectionTitle1 { + fill: ${i.titleColor}; + } + + .sectionTitle2 { + fill: ${i.titleColor}; + } + + .sectionTitle3 { + fill: ${i.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${i.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${i.fontFamily}; + fill: ${i.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${i.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideRight { + fill: ${i.taskTextDarkColor}; + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideLeft { + fill: ${i.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${i.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${i.taskBkgColor}; + stroke: ${i.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${i.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${i.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${i.activeTaskBkgColor}; + stroke: ${i.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${i.doneTaskBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${i.critBorderColor}; + fill: ${i.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.titleColor||i.textColor}; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } +`}},Symbol.toStringTag,{value:"Module"}));var xbt=function(){var i=function(v,b,E,S){for(E=E||{},S=v.length;S--;E[v[S]]=b);return E},a=[6,9,10],f={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(b,E,S,_,M,F,R){switch(F.length-1,M){case 1:return _;case 4:break;case 6:_.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},i(a,[2,3]),i(a,[2,4]),i(a,[2,5]),i(a,[2,6])],defaultActions:{4:[2,1]},parseError:function(b,E){if(E.recoverable)this.trace(b);else{var S=new Error(b);throw S.hash=E,S}},parse:function(b){var E=this,S=[0],_=[],M=[null],F=[],R=this.table,B="",z=0,Y=0,nt=2,ot=1,ft=F.slice.call(arguments,1),wt=Object.create(this.lexer),mt={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(mt.yy[ct]=this.yy[ct]);wt.setInput(b,mt.yy),mt.yy.lexer=wt,mt.yy.parser=this,typeof wt.yylloc>"u"&&(wt.yylloc={});var rt=wt.yylloc;F.push(rt);var it=wt.options&&wt.options.ranges;typeof mt.yy.parseError=="function"?this.parseError=mt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gt(){var Ct;return Ct=_.pop()||wt.lex()||ot,typeof Ct!="number"&&(Ct instanceof Array&&(_=Ct,Ct=_.pop()),Ct=E.symbols_[Ct]||Ct),Ct}for(var Q,dt,K,yt,V={},Ot,It,jt,xt;;){if(dt=S[S.length-1],this.defaultActions[dt]?K=this.defaultActions[dt]:((Q===null||typeof Q>"u")&&(Q=gt()),K=R[dt]&&R[dt][Q]),typeof K>"u"||!K.length||!K[0]){var Ft="";xt=[];for(Ot in R[dt])this.terminals_[Ot]&&Ot>nt&&xt.push("'"+this.terminals_[Ot]+"'");wt.showPosition?Ft="Parse error on line "+(z+1)+`: +`+wt.showPosition()+` +Expecting `+xt.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":Ft="Parse error on line "+(z+1)+": Unexpected "+(Q==ot?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(Ft,{text:wt.match,token:this.terminals_[Q]||Q,line:wt.yylineno,loc:rt,expected:xt})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+dt+", token: "+Q);switch(K[0]){case 1:S.push(Q),M.push(wt.yytext),F.push(wt.yylloc),S.push(K[1]),Q=null,Y=wt.yyleng,B=wt.yytext,z=wt.yylineno,rt=wt.yylloc;break;case 2:if(It=this.productions_[K[1]][1],V.$=M[M.length-It],V._$={first_line:F[F.length-(It||1)].first_line,last_line:F[F.length-1].last_line,first_column:F[F.length-(It||1)].first_column,last_column:F[F.length-1].last_column},it&&(V._$.range=[F[F.length-(It||1)].range[0],F[F.length-1].range[1]]),yt=this.performAction.apply(V,[B,Y,z,mt.yy,K[1],M,F].concat(ft)),typeof yt<"u")return yt;It&&(S=S.slice(0,-1*It*2),M=M.slice(0,-1*It),F=F.slice(0,-1*It)),S.push(this.productions_[K[1]][0]),M.push(V.$),F.push(V._$),jt=R[S[S.length-2]][S[S.length-1]],S.push(jt);break;case 3:return!0}}return!0}},g=function(){var v={EOF:1,parseError:function(E,S){if(this.yy.parser)this.yy.parser.parseError(E,S);else throw new Error(E)},setInput:function(b,E){return this.yy=E||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var E=b.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},unput:function(b){var E=b.length,S=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var _=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var M=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===_.length?this.yylloc.first_column:0)+_[_.length-S.length].length-S[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[M[0],M[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(b){this.unput(this.match.slice(b))},pastInput:function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var b=this.pastInput(),E=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+E+"^"},test_match:function(b,E){var S,_,M;if(this.options.backtrack_lexer&&(M={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(M.yylloc.range=this.yylloc.range.slice(0))),_=b[0].match(/(?:\r\n?|\n).*/g),_&&(this.yylineno+=_.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_?_[_.length-1].length-_[_.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],S=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var F in M)this[F]=M[F];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,E,S,_;this._more||(this.yytext="",this.match="");for(var M=this._currentRules(),F=0;FE[0].length)){if(E=S,_=F,this.options.backtrack_lexer){if(b=this.test_match(S,M[F]),b!==!1)return b;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(b=this.test_match(E,M[_]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var E=this.next();return E||this.lex()},begin:function(E){this.conditionStack.push(E)},popState:function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},pushState:function(E){this.begin(E)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(E,S,_,M){switch(_){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return v}();f.lexer=g;function w(){this.yy={}}return w.prototype=f,f.Parser=w,new w}();xbt.parser=xbt;const aXe=xbt,Uzt={info:!1};let kbt=Uzt.info;const oXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:aXe,db:{clear:()=>{kbt=Uzt.info},setInfo:i=>{kbt=i},getInfo:()=>kbt},renderer:{draw:(i,a,f)=>{Kt.debug(`rendering info diagram +`+i);const g=FF(a);sg(g,100,400,!0),g.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${f}`)}}}},Symbol.toStringTag,{value:"Module"}));var Ebt=function(){var i=function(wt,mt,ct,rt){for(ct=ct||{},rt=wt.length;rt--;ct[wt[rt]]=mt);return ct},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[1,10,12,14,16,18,19,20,21,22],b=[2,4],E=[1,5,10,12,14,16,18,19,20,21,22],S=[20,21,22],_=[2,7],M=[1,12],F=[1,13],R=[1,14],B=[1,15],z=[1,16],Y=[1,17],nt={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(mt,ct,rt,it,gt,Q,dt){var K=Q.length-1;switch(gt){case 3:it.setShowData(!0);break;case 6:this.$=Q[K-1];break;case 8:it.addSection(Q[K-1],it.cleanupValue(Q[K]));break;case 9:this.$=Q[K].trim(),it.setDiagramTitle(this.$);break;case 10:this.$=Q[K].trim(),it.setAccTitle(this.$);break;case 11:case 12:this.$=Q[K].trim(),it.setAccDescription(this.$);break;case 13:it.addSection(Q[K].substr(8)),this.$=Q[K].substr(8);break}},table:[{3:1,4:2,5:a,20:f,21:g,22:w},{1:[3]},{3:7,4:2,5:a,20:f,21:g,22:w},i(v,b,{6:8,7:[1,9]}),i(E,[2,14]),i(E,[2,15]),i(E,[2,16]),{1:[2,1]},i(S,_,{8:10,9:11,1:[2,2],10:M,12:F,14:R,16:B,18:z,19:Y}),i(v,b,{6:18}),i(v,[2,5]),{4:19,20:f,21:g,22:w},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},i(S,[2,12]),i(S,[2,13]),i(S,_,{8:10,9:11,1:[2,3],10:M,12:F,14:R,16:B,18:z,19:Y}),i(v,[2,6]),i(S,[2,8]),i(S,[2,9]),i(S,[2,10]),i(S,[2,11])],defaultActions:{7:[2,1]},parseError:function(mt,ct){if(ct.recoverable)this.trace(mt);else{var rt=new Error(mt);throw rt.hash=ct,rt}},parse:function(mt){var ct=this,rt=[0],it=[],gt=[null],Q=[],dt=this.table,K="",yt=0,V=0,Ot=2,It=1,jt=Q.slice.call(arguments,1),xt=Object.create(this.lexer),Ft={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(Ft.yy[Ct]=this.yy[Ct]);xt.setInput(mt,Ft.yy),Ft.yy.lexer=xt,Ft.yy.parser=this,typeof xt.yylloc>"u"&&(xt.yylloc={});var kt=xt.yylloc;Q.push(kt);var Gt=xt.options&&xt.options.ranges;typeof Ft.yy.parseError=="function"?this.parseError=Ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(){var xe;return xe=it.pop()||xt.lex()||It,typeof xe!="number"&&(xe instanceof Array&&(it=xe,xe=it.pop()),xe=ct.symbols_[xe]||xe),xe}for(var Mt,pn,Ae,ye,tn={},sn,be,Ne,Xt;;){if(pn=rt[rt.length-1],this.defaultActions[pn]?Ae=this.defaultActions[pn]:((Mt===null||typeof Mt>"u")&&(Mt=Fe()),Ae=dt[pn]&&dt[pn][Mt]),typeof Ae>"u"||!Ae.length||!Ae[0]){var _e="";Xt=[];for(sn in dt[pn])this.terminals_[sn]&&sn>Ot&&Xt.push("'"+this.terminals_[sn]+"'");xt.showPosition?_e="Parse error on line "+(yt+1)+`: +`+xt.showPosition()+` +Expecting `+Xt.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_e="Parse error on line "+(yt+1)+": Unexpected "+(Mt==It?"end of input":"'"+(this.terminals_[Mt]||Mt)+"'"),this.parseError(_e,{text:xt.match,token:this.terminals_[Mt]||Mt,line:xt.yylineno,loc:kt,expected:Xt})}if(Ae[0]instanceof Array&&Ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+pn+", token: "+Mt);switch(Ae[0]){case 1:rt.push(Mt),gt.push(xt.yytext),Q.push(xt.yylloc),rt.push(Ae[1]),Mt=null,V=xt.yyleng,K=xt.yytext,yt=xt.yylineno,kt=xt.yylloc;break;case 2:if(be=this.productions_[Ae[1]][1],tn.$=gt[gt.length-be],tn._$={first_line:Q[Q.length-(be||1)].first_line,last_line:Q[Q.length-1].last_line,first_column:Q[Q.length-(be||1)].first_column,last_column:Q[Q.length-1].last_column},Gt&&(tn._$.range=[Q[Q.length-(be||1)].range[0],Q[Q.length-1].range[1]]),ye=this.performAction.apply(tn,[K,V,yt,Ft.yy,Ae[1],gt,Q].concat(jt)),typeof ye<"u")return ye;be&&(rt=rt.slice(0,-1*be*2),gt=gt.slice(0,-1*be),Q=Q.slice(0,-1*be)),rt.push(this.productions_[Ae[1]][0]),gt.push(tn.$),Q.push(tn._$),Ne=dt[rt[rt.length-2]][rt[rt.length-1]],rt.push(Ne);break;case 3:return!0}}return!0}},ot=function(){var wt={EOF:1,parseError:function(ct,rt){if(this.yy.parser)this.yy.parser.parseError(ct,rt);else throw new Error(ct)},setInput:function(mt,ct){return this.yy=ct||this.yy||{},this._input=mt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var mt=this._input[0];this.yytext+=mt,this.yyleng++,this.offset++,this.match+=mt,this.matched+=mt;var ct=mt.match(/(?:\r\n?|\n).*/g);return ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),mt},unput:function(mt){var ct=mt.length,rt=mt.split(/(?:\r\n?|\n)/g);this._input=mt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ct),this.offset-=ct;var it=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),rt.length-1&&(this.yylineno-=rt.length-1);var gt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:rt?(rt.length===it.length?this.yylloc.first_column:0)+it[it.length-rt.length].length-rt[0].length:this.yylloc.first_column-ct},this.options.ranges&&(this.yylloc.range=[gt[0],gt[0]+this.yyleng-ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(mt){this.unput(this.match.slice(mt))},pastInput:function(){var mt=this.matched.substr(0,this.matched.length-this.match.length);return(mt.length>20?"...":"")+mt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var mt=this.match;return mt.length<20&&(mt+=this._input.substr(0,20-mt.length)),(mt.substr(0,20)+(mt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var mt=this.pastInput(),ct=new Array(mt.length+1).join("-");return mt+this.upcomingInput()+` +`+ct+"^"},test_match:function(mt,ct){var rt,it,gt;if(this.options.backtrack_lexer&&(gt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gt.yylloc.range=this.yylloc.range.slice(0))),it=mt[0].match(/(?:\r\n?|\n).*/g),it&&(this.yylineno+=it.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:it?it[it.length-1].length-it[it.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+mt[0].length},this.yytext+=mt[0],this.match+=mt[0],this.matches=mt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(mt[0].length),this.matched+=mt[0],rt=this.performAction.call(this,this.yy,this,ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),rt)return rt;if(this._backtrack){for(var Q in gt)this[Q]=gt[Q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var mt,ct,rt,it;this._more||(this.yytext="",this.match="");for(var gt=this._currentRules(),Q=0;Qct[0].length)){if(ct=rt,it=Q,this.options.backtrack_lexer){if(mt=this.test_match(rt,gt[Q]),mt!==!1)return mt;if(this._backtrack){ct=!1;continue}else return!1}else if(!this.options.flex)break}return ct?(mt=this.test_match(ct,gt[it]),mt!==!1?mt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ct=this.next();return ct||this.lex()},begin:function(ct){this.conditionStack.push(ct)},popState:function(){var ct=this.conditionStack.length-1;return ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ct){return ct=this.conditionStack.length-1-Math.abs(ct||0),ct>=0?this.conditionStack[ct]:"INITIAL"},pushState:function(ct){this.begin(ct)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ct,rt,it,gt){switch(it){case 0:break;case 1:break;case 2:return 20;case 3:break;case 4:break;case 5:return this.begin("title"),12;case 6:return this.popState(),"title_value";case 7:return this.begin("acc_title"),14;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),16;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 15:this.popState();break;case 16:return"txt";case 17:return 5;case 18:return 7;case 19:return"value";case 20:return 22}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[6],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,7,9,11,14,17,18,19,20],inclusive:!0}}};return wt}();nt.lexer=ot;function ft(){this.yy={}}return ft.prototype=nt,nt.Parser=ft,new ft}();Ebt.parser=Ebt;const cXe=Ebt,Gzt=Bl.pie,dX={sections:{},showData:!1,config:Gzt};let gX=dX.sections,Tbt=dX.showData;const uXe=structuredClone(Gzt),lXe={getConfig:()=>structuredClone(uXe),clear:()=>{gX=structuredClone(dX.sections),Tbt=dX.showData,ag()},setDiagramTitle:S2,getDiagramTitle:Zg,setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,addSection:(i,a)=>{i=Ef(i,Re()),gX[i]===void 0&&(gX[i]=a,Kt.debug(`added new section: ${i}, with value: ${a}`))},getSections:()=>gX,cleanupValue:i=>(i.substring(0,1)===":"&&(i=i.substring(1).trim()),Number(i.trim())),setShowData:i=>{Tbt=i},getShowData:()=>Tbt},hXe=i=>` + .pieCircle{ + stroke: ${i.pieStrokeColor}; + stroke-width : ${i.pieStrokeWidth}; + opacity : ${i.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${i.pieOuterStrokeColor}; + stroke-width: ${i.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${i.pieTitleTextSize}; + fill: ${i.pieTitleTextColor}; + font-family: ${i.fontFamily}; + } + .slice { + font-family: ${i.fontFamily}; + fill: ${i.pieSectionTextColor}; + font-size:${i.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${i.pieLegendTextColor}; + font-family: ${i.fontFamily}; + font-size: ${i.pieLegendTextSize}; + } +`,fXe=i=>{const a=Object.entries(i).map(g=>({label:g[0],value:g[1]})).sort((g,w)=>w.value-g.value);return pDe().value(g=>g.value)(a)},dXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:cXe,db:lXe,renderer:{draw:(i,a,f,g)=>{Kt.debug(`rendering pie chart +`+i);const w=g.db,v=Re(),b=MF(w.getConfig(),v.pie),E=40,S=18,_=4,M=450,F=M,R=FF(a),B=R.append("g"),z=w.getSections();B.attr("transform","translate("+F/2+","+M/2+")");const{themeVariables:Y}=v;let[nt]=k9(Y.pieOuterStrokeWidth);nt??(nt=2);const ot=b.textPosition,ft=Math.min(F,M)/2-E,wt=YL().innerRadius(0).outerRadius(ft),mt=YL().innerRadius(ft*ot).outerRadius(ft*ot);B.append("circle").attr("cx",0).attr("cy",0).attr("r",ft+nt/2).attr("class","pieOuterCircle");const ct=fXe(z),rt=[Y.pie1,Y.pie2,Y.pie3,Y.pie4,Y.pie5,Y.pie6,Y.pie7,Y.pie8,Y.pie9,Y.pie10,Y.pie11,Y.pie12],it=oF(rt);B.selectAll("mySlices").data(ct).enter().append("path").attr("d",wt).attr("fill",yt=>it(yt.data.label)).attr("class","pieCircle");let gt=0;Object.keys(z).forEach(yt=>{gt+=z[yt]}),B.selectAll("mySlices").data(ct).enter().append("text").text(yt=>(yt.data.value/gt*100).toFixed(0)+"%").attr("transform",yt=>"translate("+mt.centroid(yt)+")").style("text-anchor","middle").attr("class","slice"),B.append("text").text(w.getDiagramTitle()).attr("x",0).attr("y",-(M-50)/2).attr("class","pieTitleText");const Q=B.selectAll(".legend").data(it.domain()).enter().append("g").attr("class","legend").attr("transform",(yt,V)=>{const Ot=S+_,It=Ot*it.domain().length/2,jt=12*S,xt=V*Ot-It;return"translate("+jt+","+xt+")"});Q.append("rect").attr("width",S).attr("height",S).style("fill",it).style("stroke",it),Q.data(ct).append("text").attr("x",S+_).attr("y",S-_).text(yt=>{const{label:V,value:Ot}=yt.data;return w.getShowData()?`${V} [${Ot}]`:V});const dt=Math.max(...Q.selectAll("text").nodes().map(yt=>(yt==null?void 0:yt.getBoundingClientRect().width)??0)),K=F+E+S+_+dt;R.attr("viewBox",`0 0 ${K} ${M}`),sg(R,M,K,b.useMaxWidth)}},styles:hXe}},Symbol.toStringTag,{value:"Module"}));var Cbt=function(){var i=function(Ae,ye,tn,sn){for(tn=tn||{},sn=Ae.length;sn--;tn[Ae[sn]]=ye);return tn},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[1,7],b=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],E=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],S=[32,33,34],_=[2,7],M=[1,13],F=[1,17],R=[1,18],B=[1,19],z=[1,20],Y=[1,21],nt=[1,22],ot=[1,23],ft=[1,24],wt=[1,25],mt=[1,26],ct=[1,27],rt=[1,30],it=[1,31],gt=[1,32],Q=[1,33],dt=[1,34],K=[1,35],yt=[1,36],V=[1,37],Ot=[1,38],It=[1,39],jt=[1,40],xt=[1,41],Ft=[1,42],Ct=[1,57],kt=[1,58],Gt=[5,22,26,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51],Fe={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,QUADRANT:6,document:7,line:8,statement:9,axisDetails:10,quadrantDetails:11,points:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,text:21,point_start:22,point_x:23,point_y:24,"X-AXIS":25,"AXIS-TEXT-DELIMITER":26,"Y-AXIS":27,QUADRANT_1:28,QUADRANT_2:29,QUADRANT_3:30,QUADRANT_4:31,NEWLINE:32,SEMI:33,EOF:34,alphaNumToken:35,textNoTagsToken:36,STR:37,MD_STR:38,alphaNum:39,PUNCTUATION:40,AMP:41,NUM:42,ALPHA:43,COMMA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,UNDERSCORE:50,MINUS:51,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",6:"QUADRANT",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",22:"point_start",23:"point_x",24:"point_y",25:"X-AXIS",26:"AXIS-TEXT-DELIMITER",27:"Y-AXIS",28:"QUADRANT_1",29:"QUADRANT_2",30:"QUADRANT_3",31:"QUADRANT_4",32:"NEWLINE",33:"SEMI",34:"EOF",37:"STR",38:"MD_STR",40:"PUNCTUATION",41:"AMP",42:"NUM",43:"ALPHA",44:"COMMA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"UNDERSCORE",51:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,1],[9,1],[9,1],[9,2],[9,2],[9,2],[9,1],[9,1],[12,4],[10,4],[10,3],[10,2],[10,4],[10,3],[10,2],[11,2],[11,2],[11,2],[11,2],[4,1],[4,1],[4,1],[21,1],[21,2],[21,1],[21,1],[39,1],[39,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[36,1],[36,1],[36,1]],performAction:function(ye,tn,sn,be,Ne,Xt,_e){var xe=Xt.length-1;switch(Ne){case 12:this.$=Xt[xe].trim(),be.setDiagramTitle(this.$);break;case 13:this.$=Xt[xe].trim(),be.setAccTitle(this.$);break;case 14:case 15:this.$=Xt[xe].trim(),be.setAccDescription(this.$);break;case 16:be.addSection(Xt[xe].substr(8)),this.$=Xt[xe].substr(8);break;case 17:be.addPoint(Xt[xe-3],Xt[xe-1],Xt[xe]);break;case 18:be.setXAxisLeftText(Xt[xe-2]),be.setXAxisRightText(Xt[xe]);break;case 19:Xt[xe-1].text+=" ⟶ ",be.setXAxisLeftText(Xt[xe-1]);break;case 20:be.setXAxisLeftText(Xt[xe]);break;case 21:be.setYAxisBottomText(Xt[xe-2]),be.setYAxisTopText(Xt[xe]);break;case 22:Xt[xe-1].text+=" ⟶ ",be.setYAxisBottomText(Xt[xe-1]);break;case 23:be.setYAxisBottomText(Xt[xe]);break;case 24:be.setQuadrant1Text(Xt[xe]);break;case 25:be.setQuadrant2Text(Xt[xe]);break;case 26:be.setQuadrant3Text(Xt[xe]);break;case 27:be.setQuadrant4Text(Xt[xe]);break;case 31:this.$={text:Xt[xe],type:"text"};break;case 32:this.$={text:Xt[xe-1].text+""+Xt[xe],type:Xt[xe-1].type};break;case 33:this.$={text:Xt[xe],type:"text"};break;case 34:this.$={text:Xt[xe],type:"markdown"};break;case 35:this.$=Xt[xe];break;case 36:this.$=Xt[xe-1]+""+Xt[xe];break}},table:[{3:1,4:2,5:a,6:f,32:g,33:w,34:v},{1:[3]},{3:8,4:2,5:a,6:f,32:g,33:w,34:v},{3:9,4:2,5:a,6:f,32:g,33:w,34:v},i(b,[2,4],{7:10}),i(E,[2,28]),i(E,[2,29]),i(E,[2,30]),{1:[2,1]},{1:[2,2]},i(S,_,{8:11,9:12,10:14,11:15,12:16,21:28,35:29,1:[2,3],5:M,13:F,15:R,17:B,19:z,20:Y,25:nt,27:ot,28:ft,29:wt,30:mt,31:ct,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),i(b,[2,5]),{4:43,32:g,33:w,34:v},i(S,_,{10:14,11:15,12:16,21:28,35:29,9:44,5:M,13:F,15:R,17:B,19:z,20:Y,25:nt,27:ot,28:ft,29:wt,30:mt,31:ct,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),i(S,[2,9]),i(S,[2,10]),i(S,[2,11]),{14:[1,45]},{16:[1,46]},{18:[1,47]},i(S,[2,15]),i(S,[2,16]),{21:48,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:49,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:50,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:51,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:52,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:53,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{5:Ct,22:[1,54],35:56,36:55,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt},i(Gt,[2,31]),i(Gt,[2,33]),i(Gt,[2,34]),i(Gt,[2,37]),i(Gt,[2,38]),i(Gt,[2,39]),i(Gt,[2,40]),i(Gt,[2,41]),i(Gt,[2,42]),i(Gt,[2,43]),i(Gt,[2,44]),i(Gt,[2,45]),i(Gt,[2,46]),i(Gt,[2,47]),i(b,[2,6]),i(S,[2,8]),i(S,[2,12]),i(S,[2,13]),i(S,[2,14]),i(S,[2,20],{36:55,35:56,5:Ct,26:[1,59],40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,23],{36:55,35:56,5:Ct,26:[1,60],40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,24],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,25],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,26],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,27],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),{23:[1,61]},i(Gt,[2,32]),i(Gt,[2,48]),i(Gt,[2,49]),i(Gt,[2,50]),i(S,[2,19],{35:29,21:62,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),i(S,[2,22],{35:29,21:63,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),{24:[1,64]},i(S,[2,18],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,21],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,17])],defaultActions:{8:[2,1],9:[2,2]},parseError:function(ye,tn){if(tn.recoverable)this.trace(ye);else{var sn=new Error(ye);throw sn.hash=tn,sn}},parse:function(ye){var tn=this,sn=[0],be=[],Ne=[null],Xt=[],_e=this.table,xe="",Mn=0,ce=0,Br=2,we=1,Fi=Xt.slice.call(arguments,1),mi=Object.create(this.lexer),ga={yy:{}};for(var Ss in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ss)&&(ga.yy[Ss]=this.yy[Ss]);mi.setInput(ye,ga.yy),ga.yy.lexer=mi,ga.yy.parser=this,typeof mi.yylloc>"u"&&(mi.yylloc={});var za=mi.yylloc;Xt.push(za);var br=mi.options&&mi.options.ranges;typeof ga.yy.parseError=="function"?this.parseError=ga.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function An(){var va;return va=be.pop()||mi.lex()||we,typeof va!="number"&&(va instanceof Array&&(be=va,va=be.pop()),va=tn.symbols_[va]||va),va}for(var Nn,Bn,ke,pe,Je={},an,xn,qa,xo;;){if(Bn=sn[sn.length-1],this.defaultActions[Bn]?ke=this.defaultActions[Bn]:((Nn===null||typeof Nn>"u")&&(Nn=An()),ke=_e[Bn]&&_e[Bn][Nn]),typeof ke>"u"||!ke.length||!ke[0]){var ko="";xo=[];for(an in _e[Bn])this.terminals_[an]&&an>Br&&xo.push("'"+this.terminals_[an]+"'");mi.showPosition?ko="Parse error on line "+(Mn+1)+`: +`+mi.showPosition()+` +Expecting `+xo.join(", ")+", got '"+(this.terminals_[Nn]||Nn)+"'":ko="Parse error on line "+(Mn+1)+": Unexpected "+(Nn==we?"end of input":"'"+(this.terminals_[Nn]||Nn)+"'"),this.parseError(ko,{text:mi.match,token:this.terminals_[Nn]||Nn,line:mi.yylineno,loc:za,expected:xo})}if(ke[0]instanceof Array&&ke.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bn+", token: "+Nn);switch(ke[0]){case 1:sn.push(Nn),Ne.push(mi.yytext),Xt.push(mi.yylloc),sn.push(ke[1]),Nn=null,ce=mi.yyleng,xe=mi.yytext,Mn=mi.yylineno,za=mi.yylloc;break;case 2:if(xn=this.productions_[ke[1]][1],Je.$=Ne[Ne.length-xn],Je._$={first_line:Xt[Xt.length-(xn||1)].first_line,last_line:Xt[Xt.length-1].last_line,first_column:Xt[Xt.length-(xn||1)].first_column,last_column:Xt[Xt.length-1].last_column},br&&(Je._$.range=[Xt[Xt.length-(xn||1)].range[0],Xt[Xt.length-1].range[1]]),pe=this.performAction.apply(Je,[xe,ce,Mn,ga.yy,ke[1],Ne,Xt].concat(Fi)),typeof pe<"u")return pe;xn&&(sn=sn.slice(0,-1*xn*2),Ne=Ne.slice(0,-1*xn),Xt=Xt.slice(0,-1*xn)),sn.push(this.productions_[ke[1]][0]),Ne.push(Je.$),Xt.push(Je._$),qa=_e[sn[sn.length-2]][sn[sn.length-1]],sn.push(qa);break;case 3:return!0}}return!0}},Mt=function(){var Ae={EOF:1,parseError:function(tn,sn){if(this.yy.parser)this.yy.parser.parseError(tn,sn);else throw new Error(tn)},setInput:function(ye,tn){return this.yy=tn||this.yy||{},this._input=ye,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ye=this._input[0];this.yytext+=ye,this.yyleng++,this.offset++,this.match+=ye,this.matched+=ye;var tn=ye.match(/(?:\r\n?|\n).*/g);return tn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ye},unput:function(ye){var tn=ye.length,sn=ye.split(/(?:\r\n?|\n)/g);this._input=ye+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-tn),this.offset-=tn;var be=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),sn.length-1&&(this.yylineno-=sn.length-1);var Ne=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:sn?(sn.length===be.length?this.yylloc.first_column:0)+be[be.length-sn.length].length-sn[0].length:this.yylloc.first_column-tn},this.options.ranges&&(this.yylloc.range=[Ne[0],Ne[0]+this.yyleng-tn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ye){this.unput(this.match.slice(ye))},pastInput:function(){var ye=this.matched.substr(0,this.matched.length-this.match.length);return(ye.length>20?"...":"")+ye.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ye=this.match;return ye.length<20&&(ye+=this._input.substr(0,20-ye.length)),(ye.substr(0,20)+(ye.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ye=this.pastInput(),tn=new Array(ye.length+1).join("-");return ye+this.upcomingInput()+` +`+tn+"^"},test_match:function(ye,tn){var sn,be,Ne;if(this.options.backtrack_lexer&&(Ne={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ne.yylloc.range=this.yylloc.range.slice(0))),be=ye[0].match(/(?:\r\n?|\n).*/g),be&&(this.yylineno+=be.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:be?be[be.length-1].length-be[be.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ye[0].length},this.yytext+=ye[0],this.match+=ye[0],this.matches=ye,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ye[0].length),this.matched+=ye[0],sn=this.performAction.call(this,this.yy,this,tn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),sn)return sn;if(this._backtrack){for(var Xt in Ne)this[Xt]=Ne[Xt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ye,tn,sn,be;this._more||(this.yytext="",this.match="");for(var Ne=this._currentRules(),Xt=0;Xttn[0].length)){if(tn=sn,be=Xt,this.options.backtrack_lexer){if(ye=this.test_match(sn,Ne[Xt]),ye!==!1)return ye;if(this._backtrack){tn=!1;continue}else return!1}else if(!this.options.flex)break}return tn?(ye=this.test_match(tn,Ne[be]),ye!==!1?ye:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var tn=this.next();return tn||this.lex()},begin:function(tn){this.conditionStack.push(tn)},popState:function(){var tn=this.conditionStack.length-1;return tn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(tn){return tn=this.conditionStack.length-1-Math.abs(tn||0),tn>=0?this.conditionStack[tn]:"INITIAL"},pushState:function(tn){this.begin(tn)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(tn,sn,be,Ne){switch(be){case 0:break;case 1:break;case 2:return 32;case 3:break;case 4:return this.begin("title"),13;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),15;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),17;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 25;case 14:return 27;case 15:return 26;case 16:return 28;case 17:return 29;case 18:return 30;case 19:return 31;case 20:this.begin("md_string");break;case 21:return"MD_STR";case 22:this.popState();break;case 23:this.begin("string");break;case 24:this.popState();break;case 25:return"STR";case 26:return this.begin("point_start"),22;case 27:return this.begin("point_x"),23;case 28:this.popState();break;case 29:this.popState(),this.begin("point_y");break;case 30:return this.popState(),24;case 31:return 6;case 32:return 43;case 33:return"COLON";case 34:return 45;case 35:return 44;case 36:return 46;case 37:return 46;case 38:return 47;case 39:return 49;case 40:return 50;case 41:return 48;case 42:return 41;case 43:return 51;case 44:return 42;case 45:return 5;case 46:return 33;case 47:return 40;case 48:return 34}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[30],inclusive:!1},point_x:{rules:[29],inclusive:!1},point_start:{rules:[27,28],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[21,22],inclusive:!1},string:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,23,26,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return Ae}();Fe.lexer=Mt;function pn(){this.yy={}}return pn.prototype=Fe,Fe.Parser=pn,new pn}();Cbt.parser=Cbt;const gXe=Cbt,rp=dgt();class pXe{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var a,f,g,w,v,b,E,S,_,M,F,R,B,z,Y,nt,ot,ft;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:((a=Bl.quadrantChart)==null?void 0:a.chartWidth)||500,chartWidth:((f=Bl.quadrantChart)==null?void 0:f.chartHeight)||500,titlePadding:((g=Bl.quadrantChart)==null?void 0:g.titlePadding)||10,titleFontSize:((w=Bl.quadrantChart)==null?void 0:w.titleFontSize)||20,quadrantPadding:((v=Bl.quadrantChart)==null?void 0:v.quadrantPadding)||5,xAxisLabelPadding:((b=Bl.quadrantChart)==null?void 0:b.xAxisLabelPadding)||5,yAxisLabelPadding:((E=Bl.quadrantChart)==null?void 0:E.yAxisLabelPadding)||5,xAxisLabelFontSize:((S=Bl.quadrantChart)==null?void 0:S.xAxisLabelFontSize)||16,yAxisLabelFontSize:((_=Bl.quadrantChart)==null?void 0:_.yAxisLabelFontSize)||16,quadrantLabelFontSize:((M=Bl.quadrantChart)==null?void 0:M.quadrantLabelFontSize)||16,quadrantTextTopPadding:((F=Bl.quadrantChart)==null?void 0:F.quadrantTextTopPadding)||5,pointTextPadding:((R=Bl.quadrantChart)==null?void 0:R.pointTextPadding)||5,pointLabelFontSize:((B=Bl.quadrantChart)==null?void 0:B.pointLabelFontSize)||12,pointRadius:((z=Bl.quadrantChart)==null?void 0:z.pointRadius)||5,xAxisPosition:((Y=Bl.quadrantChart)==null?void 0:Y.xAxisPosition)||"top",yAxisPosition:((nt=Bl.quadrantChart)==null?void 0:nt.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:((ot=Bl.quadrantChart)==null?void 0:ot.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:((ft=Bl.quadrantChart)==null?void 0:ft.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:rp.quadrant1Fill,quadrant2Fill:rp.quadrant2Fill,quadrant3Fill:rp.quadrant3Fill,quadrant4Fill:rp.quadrant4Fill,quadrant1TextFill:rp.quadrant1TextFill,quadrant2TextFill:rp.quadrant2TextFill,quadrant3TextFill:rp.quadrant3TextFill,quadrant4TextFill:rp.quadrant4TextFill,quadrantPointFill:rp.quadrantPointFill,quadrantPointTextFill:rp.quadrantPointTextFill,quadrantXAxisTextFill:rp.quadrantXAxisTextFill,quadrantYAxisTextFill:rp.quadrantYAxisTextFill,quadrantTitleFill:rp.quadrantTitleFill,quadrantInternalBorderStrokeFill:rp.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:rp.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),Kt.info("clear called")}setData(a){this.data={...this.data,...a}}addPoints(a){this.data.points=[...a,...this.data.points]}setConfig(a){Kt.trace("setConfig called with: ",a),this.config={...this.config,...a}}setThemeConfig(a){Kt.trace("setThemeConfig called with: ",a),this.themeConfig={...this.themeConfig,...a}}calculateSpace(a,f,g,w){const v=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,b={top:a==="top"&&f?v:0,bottom:a==="bottom"&&f?v:0},E=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,S={left:this.config.yAxisPosition==="left"&&g?E:0,right:this.config.yAxisPosition==="right"&&g?E:0},_=this.config.titleFontSize+this.config.titlePadding*2,M={top:w?_:0},F=this.config.quadrantPadding+S.left,R=this.config.quadrantPadding+b.top+M.top,B=this.config.chartWidth-this.config.quadrantPadding*2-S.left-S.right,z=this.config.chartHeight-this.config.quadrantPadding*2-b.top-b.bottom-M.top,Y=B/2,nt=z/2;return{xAxisSpace:b,yAxisSpace:S,titleSpace:M,quadrantSpace:{quadrantLeft:F,quadrantTop:R,quadrantWidth:B,quadrantHalfWidth:Y,quadrantHeight:z,quadrantHalfHeight:nt}}}getAxisLabels(a,f,g,w){const{quadrantSpace:v,titleSpace:b}=w,{quadrantHalfHeight:E,quadrantHeight:S,quadrantLeft:_,quadrantHalfWidth:M,quadrantTop:F,quadrantWidth:R}=v,B=!!this.data.xAxisRightText,z=!!this.data.yAxisTopText,Y=[];return this.data.xAxisLeftText&&f&&Y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:_+(B?M/2:0),y:a==="top"?this.config.xAxisLabelPadding+b.top:this.config.xAxisLabelPadding+F+S+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:B?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&f&&Y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:_+M+(B?M/2:0),y:a==="top"?this.config.xAxisLabelPadding+b.top:this.config.xAxisLabelPadding+F+S+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:B?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&g&&Y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+_+R+this.config.quadrantPadding,y:F+S-(z?E/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:z?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&g&&Y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+_+R+this.config.quadrantPadding,y:F+E-(z?E/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:z?"center":"left",horizontalPos:"top",rotation:-90}),Y}getQuadrants(a){const{quadrantSpace:f}=a,{quadrantHalfHeight:g,quadrantLeft:w,quadrantHalfWidth:v,quadrantTop:b}=f,E=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w+v,y:b,width:v,height:g,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w,y:b,width:v,height:g,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w,y:b+g,width:v,height:g,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w+v,y:b+g,width:v,height:g,fill:this.themeConfig.quadrant4Fill}];for(const S of E)S.text.x=S.x+S.width/2,this.data.points.length===0?(S.text.y=S.y+S.height/2,S.text.horizontalPos="middle"):(S.text.y=S.y+this.config.quadrantTextTopPadding,S.text.horizontalPos="top");return E}getQuadrantPoints(a){const{quadrantSpace:f}=a,{quadrantHeight:g,quadrantLeft:w,quadrantTop:v,quadrantWidth:b}=f,E=VL().domain([0,1]).range([w,b+w]),S=VL().domain([0,1]).range([g+v,v]);return this.data.points.map(M=>({x:E(M.x),y:S(M.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:M.text,fill:this.themeConfig.quadrantPointTextFill,x:E(M.x),y:S(M.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}}))}getBorders(a){const f=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:g}=a,{quadrantHalfHeight:w,quadrantHeight:v,quadrantLeft:b,quadrantHalfWidth:E,quadrantTop:S,quadrantWidth:_}=g;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b-f,y1:S,x2:b+_+f,y2:S},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b+_,y1:S+f,x2:b+_,y2:S+v-f},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b-f,y1:S+v,x2:b+_+f,y2:S+v},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b,y1:S+f,x2:b,y2:S+v-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:b+E,y1:S+f,x2:b+E,y2:S+v-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:b+f,y1:S+w,x2:b+_-f,y2:S+w}]}getTitle(a){if(a)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const a=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),f=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),g=this.config.showTitle&&!!this.data.titleText,w=this.data.points.length>0?"bottom":this.config.xAxisPosition,v=this.calculateSpace(w,a,f,g);return{points:this.getQuadrantPoints(v),quadrants:this.getQuadrants(v),axisLabels:this.getAxisLabels(w,a,f,v),borderLines:this.getBorders(v),title:this.getTitle(g)}}}const bXe=Re();function qx(i){return Ef(i.trim(),bXe)}const ug=new pXe;function wXe(i){ug.setData({quadrant1Text:qx(i.text)})}function mXe(i){ug.setData({quadrant2Text:qx(i.text)})}function vXe(i){ug.setData({quadrant3Text:qx(i.text)})}function yXe(i){ug.setData({quadrant4Text:qx(i.text)})}function xXe(i){ug.setData({xAxisLeftText:qx(i.text)})}function kXe(i){ug.setData({xAxisRightText:qx(i.text)})}function EXe(i){ug.setData({yAxisTopText:qx(i.text)})}function TXe(i){ug.setData({yAxisBottomText:qx(i.text)})}function CXe(i,a,f){ug.addPoints([{x:a,y:f,text:qx(i.text)}])}function SXe(i){ug.setConfig({chartWidth:i})}function _Xe(i){ug.setConfig({chartHeight:i})}function AXe(){const i=Re(),{themeVariables:a,quadrantChart:f}=i;return f&&ug.setConfig(f),ug.setThemeConfig({quadrant1Fill:a.quadrant1Fill,quadrant2Fill:a.quadrant2Fill,quadrant3Fill:a.quadrant3Fill,quadrant4Fill:a.quadrant4Fill,quadrant1TextFill:a.quadrant1TextFill,quadrant2TextFill:a.quadrant2TextFill,quadrant3TextFill:a.quadrant3TextFill,quadrant4TextFill:a.quadrant4TextFill,quadrantPointFill:a.quadrantPointFill,quadrantPointTextFill:a.quadrantPointTextFill,quadrantXAxisTextFill:a.quadrantXAxisTextFill,quadrantYAxisTextFill:a.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:a.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:a.quadrantInternalBorderStrokeFill,quadrantTitleFill:a.quadrantTitleFill}),ug.setData({titleText:Zg()}),ug.build()}const LXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:gXe,db:{setWidth:SXe,setHeight:_Xe,setQuadrant1Text:wXe,setQuadrant2Text:mXe,setQuadrant3Text:vXe,setQuadrant4Text:yXe,setXAxisLeftText:xXe,setXAxisRightText:kXe,setYAxisTopText:EXe,setYAxisBottomText:TXe,addPoint:CXe,getQuadrantData:AXe,clear:function(){ug.clear(),ag()},setAccTitle:og,getAccTitle:Xg,setDiagramTitle:S2,getDiagramTitle:Zg,getAccDescription:Jg,setAccDescription:Qg},renderer:{draw:(i,a,f,g)=>{var gt,Q,dt;function w(K){return K==="top"?"hanging":"middle"}function v(K){return K==="left"?"start":"middle"}function b(K){return`translate(${K.x}, ${K.y}) rotate(${K.rotation||0})`}const E=Re();Kt.debug(`Rendering quadrant chart +`+i);const S=E.securityLevel;let _;S==="sandbox"&&(_=Tr("#i"+a));const F=Tr(S==="sandbox"?_.nodes()[0].contentDocument.body:"body").select(`[id="${a}"]`),R=F.append("g").attr("class","main"),B=((gt=E.quadrantChart)==null?void 0:gt.chartWidth)||500,z=((Q=E.quadrantChart)==null?void 0:Q.chartHeight)||500;sg(F,z,B,((dt=E.quadrantChart)==null?void 0:dt.useMaxWidth)||!0),F.attr("viewBox","0 0 "+B+" "+z),g.db.setHeight(z),g.db.setWidth(B);const Y=g.db.getQuadrantData(),nt=R.append("g").attr("class","quadrants"),ot=R.append("g").attr("class","border"),ft=R.append("g").attr("class","data-points"),wt=R.append("g").attr("class","labels"),mt=R.append("g").attr("class","title");Y.title&&mt.append("text").attr("x",0).attr("y",0).attr("fill",Y.title.fill).attr("font-size",Y.title.fontSize).attr("dominant-baseline",w(Y.title.horizontalPos)).attr("text-anchor",v(Y.title.verticalPos)).attr("transform",b(Y.title)).text(Y.title.text),Y.borderLines&&ot.selectAll("line").data(Y.borderLines).enter().append("line").attr("x1",K=>K.x1).attr("y1",K=>K.y1).attr("x2",K=>K.x2).attr("y2",K=>K.y2).style("stroke",K=>K.strokeFill).style("stroke-width",K=>K.strokeWidth);const ct=nt.selectAll("g.quadrant").data(Y.quadrants).enter().append("g").attr("class","quadrant");ct.append("rect").attr("x",K=>K.x).attr("y",K=>K.y).attr("width",K=>K.width).attr("height",K=>K.height).attr("fill",K=>K.fill),ct.append("text").attr("x",0).attr("y",0).attr("fill",K=>K.text.fill).attr("font-size",K=>K.text.fontSize).attr("dominant-baseline",K=>w(K.text.horizontalPos)).attr("text-anchor",K=>v(K.text.verticalPos)).attr("transform",K=>b(K.text)).text(K=>K.text.text),wt.selectAll("g.label").data(Y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(K=>K.text).attr("fill",K=>K.fill).attr("font-size",K=>K.fontSize).attr("dominant-baseline",K=>w(K.horizontalPos)).attr("text-anchor",K=>v(K.verticalPos)).attr("transform",K=>b(K));const it=ft.selectAll("g.data-point").data(Y.points).enter().append("g").attr("class","data-point");it.append("circle").attr("cx",K=>K.x).attr("cy",K=>K.y).attr("r",K=>K.radius).attr("fill",K=>K.fill),it.append("text").attr("x",0).attr("y",0).text(K=>K.text.text).attr("fill",K=>K.text.fill).attr("font-size",K=>K.text.fontSize).attr("dominant-baseline",K=>w(K.text.horizontalPos)).attr("text-anchor",K=>v(K.text.verticalPos)).attr("transform",K=>b(K.text))}},styles:()=>""}},Symbol.toStringTag,{value:"Module"}));var Sbt=function(){var i=function(It,jt,xt,Ft){for(xt=xt||{},Ft=It.length;Ft--;xt[It[Ft]]=jt);return xt},a=[1,10,12,14,16,18,19,21,23],f=[2,6],g=[1,3],w=[1,5],v=[1,6],b=[1,7],E=[1,5,10,12,14,16,18,19,21,23,34,35,36],S=[1,25],_=[1,26],M=[1,28],F=[1,29],R=[1,30],B=[1,31],z=[1,32],Y=[1,33],nt=[1,34],ot=[1,35],ft=[1,36],wt=[1,37],mt=[1,43],ct=[1,42],rt=[1,47],it=[1,50],gt=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],dt=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],K=[1,64],yt={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(jt,xt,Ft,Ct,kt,Gt,Fe){var Mt=Gt.length-1;switch(kt){case 5:Ct.setOrientation(Gt[Mt]);break;case 9:Ct.setDiagramTitle(Gt[Mt].text.trim());break;case 12:Ct.setLineData({text:"",type:"text"},Gt[Mt]);break;case 13:Ct.setLineData(Gt[Mt-1],Gt[Mt]);break;case 14:Ct.setBarData({text:"",type:"text"},Gt[Mt]);break;case 15:Ct.setBarData(Gt[Mt-1],Gt[Mt]);break;case 16:this.$=Gt[Mt].trim(),Ct.setAccTitle(this.$);break;case 17:case 18:this.$=Gt[Mt].trim(),Ct.setAccDescription(this.$);break;case 19:this.$=Gt[Mt-1];break;case 20:this.$=[Number(Gt[Mt-2]),...Gt[Mt]];break;case 21:this.$=[Number(Gt[Mt])];break;case 22:Ct.setXAxisTitle(Gt[Mt]);break;case 23:Ct.setXAxisTitle(Gt[Mt-1]);break;case 24:Ct.setXAxisTitle({type:"text",text:""});break;case 25:Ct.setXAxisBand(Gt[Mt]);break;case 26:Ct.setXAxisRangeData(Number(Gt[Mt-2]),Number(Gt[Mt]));break;case 27:this.$=Gt[Mt-1];break;case 28:this.$=[Gt[Mt-2],...Gt[Mt]];break;case 29:this.$=[Gt[Mt]];break;case 30:Ct.setYAxisTitle(Gt[Mt]);break;case 31:Ct.setYAxisTitle(Gt[Mt-1]);break;case 32:Ct.setYAxisTitle({type:"text",text:""});break;case 33:Ct.setYAxisRangeData(Number(Gt[Mt-2]),Number(Gt[Mt]));break;case 37:this.$={text:Gt[Mt],type:"text"};break;case 38:this.$={text:Gt[Mt],type:"text"};break;case 39:this.$={text:Gt[Mt],type:"markdown"};break;case 40:this.$=Gt[Mt];break;case 41:this.$=Gt[Mt-1]+""+Gt[Mt];break}},table:[i(a,f,{3:1,4:2,7:4,5:g,34:w,35:v,36:b}),{1:[3]},i(a,f,{4:2,7:4,3:8,5:g,34:w,35:v,36:b}),i(a,f,{4:2,7:4,6:9,3:10,5:g,8:[1,11],34:w,35:v,36:b}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},i(E,[2,34]),i(E,[2,35]),i(E,[2,36]),{1:[2,1]},i(a,f,{4:2,7:4,3:21,5:g,34:w,35:v,36:b}),{1:[2,3]},i(E,[2,5]),i(a,[2,7],{4:22,34:w,35:v,36:b}),{11:23,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:39,13:38,24:mt,27:ct,29:40,30:41,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:45,15:44,27:rt,33:46,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:49,17:48,24:it,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:52,17:51,24:it,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{20:[1,53]},{22:[1,54]},i(gt,[2,18]),{1:[2,2]},i(gt,[2,8]),i(gt,[2,9]),i(Q,[2,37],{40:55,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt}),i(Q,[2,38]),i(Q,[2,39]),i(dt,[2,40]),i(dt,[2,42]),i(dt,[2,43]),i(dt,[2,44]),i(dt,[2,45]),i(dt,[2,46]),i(dt,[2,47]),i(dt,[2,48]),i(dt,[2,49]),i(dt,[2,50]),i(dt,[2,51]),i(gt,[2,10]),i(gt,[2,22],{30:41,29:56,24:mt,27:ct}),i(gt,[2,24]),i(gt,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},i(gt,[2,11]),i(gt,[2,30],{33:60,27:rt}),i(gt,[2,32]),{31:[1,61]},i(gt,[2,12]),{17:62,24:it},{25:63,27:K},i(gt,[2,14]),{17:65,24:it},i(gt,[2,16]),i(gt,[2,17]),i(dt,[2,41]),i(gt,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},i(gt,[2,31]),{27:[1,69]},i(gt,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},i(gt,[2,15]),i(gt,[2,26]),i(gt,[2,27]),{11:59,32:72,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},i(gt,[2,33]),i(gt,[2,19]),{25:73,27:K},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(jt,xt){if(xt.recoverable)this.trace(jt);else{var Ft=new Error(jt);throw Ft.hash=xt,Ft}},parse:function(jt){var xt=this,Ft=[0],Ct=[],kt=[null],Gt=[],Fe=this.table,Mt="",pn=0,Ae=0,ye=2,tn=1,sn=Gt.slice.call(arguments,1),be=Object.create(this.lexer),Ne={yy:{}};for(var Xt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Xt)&&(Ne.yy[Xt]=this.yy[Xt]);be.setInput(jt,Ne.yy),Ne.yy.lexer=be,Ne.yy.parser=this,typeof be.yylloc>"u"&&(be.yylloc={});var _e=be.yylloc;Gt.push(_e);var xe=be.options&&be.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Mn(){var Nn;return Nn=Ct.pop()||be.lex()||tn,typeof Nn!="number"&&(Nn instanceof Array&&(Ct=Nn,Nn=Ct.pop()),Nn=xt.symbols_[Nn]||Nn),Nn}for(var ce,Br,we,Fi,mi={},ga,Ss,za,br;;){if(Br=Ft[Ft.length-1],this.defaultActions[Br]?we=this.defaultActions[Br]:((ce===null||typeof ce>"u")&&(ce=Mn()),we=Fe[Br]&&Fe[Br][ce]),typeof we>"u"||!we.length||!we[0]){var An="";br=[];for(ga in Fe[Br])this.terminals_[ga]&&ga>ye&&br.push("'"+this.terminals_[ga]+"'");be.showPosition?An="Parse error on line "+(pn+1)+`: +`+be.showPosition()+` +Expecting `+br.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":An="Parse error on line "+(pn+1)+": Unexpected "+(ce==tn?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(An,{text:be.match,token:this.terminals_[ce]||ce,line:be.yylineno,loc:_e,expected:br})}if(we[0]instanceof Array&&we.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Br+", token: "+ce);switch(we[0]){case 1:Ft.push(ce),kt.push(be.yytext),Gt.push(be.yylloc),Ft.push(we[1]),ce=null,Ae=be.yyleng,Mt=be.yytext,pn=be.yylineno,_e=be.yylloc;break;case 2:if(Ss=this.productions_[we[1]][1],mi.$=kt[kt.length-Ss],mi._$={first_line:Gt[Gt.length-(Ss||1)].first_line,last_line:Gt[Gt.length-1].last_line,first_column:Gt[Gt.length-(Ss||1)].first_column,last_column:Gt[Gt.length-1].last_column},xe&&(mi._$.range=[Gt[Gt.length-(Ss||1)].range[0],Gt[Gt.length-1].range[1]]),Fi=this.performAction.apply(mi,[Mt,Ae,pn,Ne.yy,we[1],kt,Gt].concat(sn)),typeof Fi<"u")return Fi;Ss&&(Ft=Ft.slice(0,-1*Ss*2),kt=kt.slice(0,-1*Ss),Gt=Gt.slice(0,-1*Ss)),Ft.push(this.productions_[we[1]][0]),kt.push(mi.$),Gt.push(mi._$),za=Fe[Ft[Ft.length-2]][Ft[Ft.length-1]],Ft.push(za);break;case 3:return!0}}return!0}},V=function(){var It={EOF:1,parseError:function(xt,Ft){if(this.yy.parser)this.yy.parser.parseError(xt,Ft);else throw new Error(xt)},setInput:function(jt,xt){return this.yy=xt||this.yy||{},this._input=jt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var jt=this._input[0];this.yytext+=jt,this.yyleng++,this.offset++,this.match+=jt,this.matched+=jt;var xt=jt.match(/(?:\r\n?|\n).*/g);return xt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),jt},unput:function(jt){var xt=jt.length,Ft=jt.split(/(?:\r\n?|\n)/g);this._input=jt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-xt),this.offset-=xt;var Ct=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ft.length-1&&(this.yylineno-=Ft.length-1);var kt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ft?(Ft.length===Ct.length?this.yylloc.first_column:0)+Ct[Ct.length-Ft.length].length-Ft[0].length:this.yylloc.first_column-xt},this.options.ranges&&(this.yylloc.range=[kt[0],kt[0]+this.yyleng-xt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(jt){this.unput(this.match.slice(jt))},pastInput:function(){var jt=this.matched.substr(0,this.matched.length-this.match.length);return(jt.length>20?"...":"")+jt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var jt=this.match;return jt.length<20&&(jt+=this._input.substr(0,20-jt.length)),(jt.substr(0,20)+(jt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var jt=this.pastInput(),xt=new Array(jt.length+1).join("-");return jt+this.upcomingInput()+` +`+xt+"^"},test_match:function(jt,xt){var Ft,Ct,kt;if(this.options.backtrack_lexer&&(kt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(kt.yylloc.range=this.yylloc.range.slice(0))),Ct=jt[0].match(/(?:\r\n?|\n).*/g),Ct&&(this.yylineno+=Ct.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ct?Ct[Ct.length-1].length-Ct[Ct.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+jt[0].length},this.yytext+=jt[0],this.match+=jt[0],this.matches=jt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(jt[0].length),this.matched+=jt[0],Ft=this.performAction.call(this,this.yy,this,xt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ft)return Ft;if(this._backtrack){for(var Gt in kt)this[Gt]=kt[Gt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var jt,xt,Ft,Ct;this._more||(this.yytext="",this.match="");for(var kt=this._currentRules(),Gt=0;Gtxt[0].length)){if(xt=Ft,Ct=Gt,this.options.backtrack_lexer){if(jt=this.test_match(Ft,kt[Gt]),jt!==!1)return jt;if(this._backtrack){xt=!1;continue}else return!1}else if(!this.options.flex)break}return xt?(jt=this.test_match(xt,kt[Ct]),jt!==!1?jt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var xt=this.next();return xt||this.lex()},begin:function(xt){this.conditionStack.push(xt)},popState:function(){var xt=this.conditionStack.length-1;return xt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(xt){return xt=this.conditionStack.length-1-Math.abs(xt||0),xt>=0?this.conditionStack[xt]:"INITIAL"},pushState:function(xt){this.begin(xt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(xt,Ft,Ct,kt){switch(Ct){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return It}();yt.lexer=V;function Ot(){this.yy={}}return Ot.prototype=yt,yt.Parser=Ot,new Ot}();Sbt.parser=Sbt;const DXe=Sbt;function Kzt(i){return i.type==="bar"}function Wzt(i){return i.type==="band"}function lB(i){return i.type==="linear"}class Yzt{constructor(a){this.parentGroup=a}getMaxDimension(a,f){if(!this.parentGroup)return{width:a.reduce((v,b)=>Math.max(b.length,v),0)*f,height:f};const g={width:0,height:0},w=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",f);for(const v of a){const b=AKe(w,1,v),E=b?b.width:v.length*f,S=b?b.height:f;g.width=Math.max(g.width,E),g.height=Math.max(g.height,S)}return w.remove(),g}}const Xzt=.7,Qzt=.2;class Jzt{constructor(a,f,g,w){this.axisConfig=a,this.title=f,this.textDimensionCalculator=g,this.axisThemeConfig=w,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}setRange(a){this.range=a,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=a[1]-a[0]:this.boundingRect.width=a[1]-a[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(a){this.axisPosition=a,this.setRange(this.range)}getTickDistance(){const a=this.getRange();return Math.abs(a[0]-a[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(a=>a.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){Xzt*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(Xzt*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(a){let f=a.height;if(this.axisConfig.showAxisLine&&f>this.axisConfig.axisLineWidth&&(f-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const g=this.getLabelDimension(),w=Qzt*a.width;this.outerPadding=Math.min(g.width/2,w);const v=g.height+this.axisConfig.labelPadding*2;this.labelTextHeight=g.height,v<=f&&(f-=v,this.showLabel=!0)}if(this.axisConfig.showTick&&f>=this.axisConfig.tickLength&&(this.showTick=!0,f-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const g=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),w=g.height+this.axisConfig.titlePadding*2;this.titleTextHeight=g.height,w<=f&&(f-=w,this.showTitle=!0)}this.boundingRect.width=a.width,this.boundingRect.height=a.height-f}calculateSpaceIfDrawnVertical(a){let f=a.width;if(this.axisConfig.showAxisLine&&f>this.axisConfig.axisLineWidth&&(f-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const g=this.getLabelDimension(),w=Qzt*a.height;this.outerPadding=Math.min(g.height/2,w);const v=g.width+this.axisConfig.labelPadding*2;v<=f&&(f-=v,this.showLabel=!0)}if(this.axisConfig.showTick&&f>=this.axisConfig.tickLength&&(this.showTick=!0,f-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const g=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),w=g.height+this.axisConfig.titlePadding*2;this.titleTextHeight=g.height,w<=f&&(f-=w,this.showTitle=!0)}this.boundingRect.width=a.width-f,this.boundingRect.height=a.height}calculateSpace(a){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(a):this.calculateSpaceIfDrawnHorizontally(a),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}getDrawableElementsForLeftAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${f},${this.boundingRect.y} L ${f},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(f),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const f=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);a.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${f},${this.getScaleValue(g)} L ${f-this.axisConfig.tickLength},${this.getScaleValue(g)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),a}getDrawableElementsForBottomAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.y+this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${f} L ${this.boundingRect.x+this.boundingRect.width},${f}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.getScaleValue(f),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const f=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);a.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${this.getScaleValue(g)},${f} L ${this.getScaleValue(g)},${f+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),a}getDrawableElementsForTopAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${f} L ${this.boundingRect.x+this.boundingRect.width},${f}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.getScaleValue(f),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const f=this.boundingRect.y;a.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${this.getScaleValue(g)},${f+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(g)},${f+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),a}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}class MXe extends Jzt{constructor(a,f,g,w,v){super(a,w,v,f),this.categories=g,this.scale=V0t().domain(this.categories).range(this.getRange())}setRange(a){super.setRange(a)}recalculateScale(){this.scale=V0t().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Kt.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(a){return this.scale(a)||this.getRange()[0]}}class IXe extends Jzt{constructor(a,f,g,w,v){super(a,w,v,f),this.domain=g,this.scale=VL().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const a=[...this.domain];this.axisPosition==="left"&&a.reverse(),this.scale=VL().domain(a).range(this.getRange())}getScaleValue(a){return this.scale(a)}}function Zzt(i,a,f,g){const w=new Yzt(g);return Wzt(i)?new MXe(a,f,i.categories,i.title,w):new IXe(a,f,[i.min,i.max],i.title,w)}class OXe{constructor(a,f,g,w){this.textDimensionCalculator=a,this.chartConfig=f,this.chartData=g,this.chartThemeConfig=w,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}calculateSpace(a){const f=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),g=Math.max(f.width,a.width),w=f.height+2*this.chartConfig.titlePadding;return f.width<=g&&f.height<=w&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=g,this.boundingRect.height=w,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const a=[];return this.showChartTitle&&a.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),a}}function NXe(i,a,f,g){const w=new Yzt(g);return new OXe(w,i,a,f)}class PXe{constructor(a,f,g,w,v){this.plotData=a,this.xAxis=f,this.yAxis=g,this.orientation=w,this.plotIndex=v}getDrawableElement(){const a=this.plotData.data.map(g=>[this.xAxis.getScaleValue(g[0]),this.yAxis.getScaleValue(g[1])]);let f;return this.orientation==="horizontal"?f=Ax().y(g=>g[0]).x(g=>g[1])(a):f=Ax().x(g=>g[0]).y(g=>g[1])(a),f?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:f,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}class FXe{constructor(a,f,g,w,v,b){this.barData=a,this.boundingRect=f,this.xAxis=g,this.yAxis=w,this.orientation=v,this.plotIndex=b}getDrawableElement(){const a=this.barData.data.map(v=>[this.xAxis.getScaleValue(v[0]),this.yAxis.getScaleValue(v[1])]),f=.05,g=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-f),w=g/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:a.map(v=>({x:this.boundingRect.x,y:v[0]-w,height:g,width:v[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:a.map(v=>({x:v[0]-w,y:v[1],width:g,height:this.boundingRect.y+this.boundingRect.height-v[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}class BXe{constructor(a,f,g){this.chartConfig=a,this.chartData=f,this.chartThemeConfig=g,this.boundingRect={x:0,y:0,width:0,height:0}}setAxes(a,f){this.xAxis=a,this.yAxis=f}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}calculateSpace(a){return this.boundingRect.width=a.width,this.boundingRect.height=a.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");const a=[];for(const[f,g]of this.chartData.plots.entries())switch(g.type){case"line":{const w=new PXe(g,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,f);a.push(...w.getDrawableElement())}break;case"bar":{const w=new FXe(g,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,f);a.push(...w.getDrawableElement())}break}return a}}function RXe(i,a,f){return new BXe(i,a,f)}class jXe{constructor(a,f,g,w){this.chartConfig=a,this.chartData=f,this.componentStore={title:NXe(a,f,g,w),plot:RXe(a,f,g),xAxis:Zzt(f.xAxis,a.xAxis,{titleColor:g.xAxisTitleColor,labelColor:g.xAxisLabelColor,tickColor:g.xAxisTickColor,axisLineColor:g.xAxisLineColor},w),yAxis:Zzt(f.yAxis,a.yAxis,{titleColor:g.yAxisTitleColor,labelColor:g.yAxisLabelColor,tickColor:g.yAxisTickColor,axisLineColor:g.yAxisLineColor},w)}}calculateVerticalSpace(){let a=this.chartConfig.width,f=this.chartConfig.height,g=0,w=0,v=Math.floor(a*this.chartConfig.plotReservedSpacePercent/100),b=Math.floor(f*this.chartConfig.plotReservedSpacePercent/100),E=this.componentStore.plot.calculateSpace({width:v,height:b});a-=E.width,f-=E.height,E=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:f}),w=E.height,f-=E.height,this.componentStore.xAxis.setAxisPosition("bottom"),E=this.componentStore.xAxis.calculateSpace({width:a,height:f}),f-=E.height,this.componentStore.yAxis.setAxisPosition("left"),E=this.componentStore.yAxis.calculateSpace({width:a,height:f}),g=E.width,a-=E.width,a>0&&(v+=a,a=0),f>0&&(b+=f,f=0),this.componentStore.plot.calculateSpace({width:v,height:b}),this.componentStore.plot.setBoundingBoxXY({x:g,y:w}),this.componentStore.xAxis.setRange([g,g+v]),this.componentStore.xAxis.setBoundingBoxXY({x:g,y:w+b}),this.componentStore.yAxis.setRange([w,w+b]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:w}),this.chartData.plots.some(S=>Kzt(S))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizonatalSpace(){let a=this.chartConfig.width,f=this.chartConfig.height,g=0,w=0,v=0,b=Math.floor(a*this.chartConfig.plotReservedSpacePercent/100),E=Math.floor(f*this.chartConfig.plotReservedSpacePercent/100),S=this.componentStore.plot.calculateSpace({width:b,height:E});a-=S.width,f-=S.height,S=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:f}),g=S.height,f-=S.height,this.componentStore.xAxis.setAxisPosition("left"),S=this.componentStore.xAxis.calculateSpace({width:a,height:f}),a-=S.width,w=S.width,this.componentStore.yAxis.setAxisPosition("top"),S=this.componentStore.yAxis.calculateSpace({width:a,height:f}),f-=S.height,v=g+S.height,a>0&&(b+=a,a=0),f>0&&(E+=f,f=0),this.componentStore.plot.calculateSpace({width:b,height:E}),this.componentStore.plot.setBoundingBoxXY({x:w,y:v}),this.componentStore.yAxis.setRange([w,w+b]),this.componentStore.yAxis.setBoundingBoxXY({x:w,y:g}),this.componentStore.xAxis.setRange([v,v+E]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:v}),this.chartData.plots.some(_=>Kzt(_))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizonatalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const a=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const f of Object.values(this.componentStore))a.push(...f.getDrawableElements());return a}}class $Xe{static build(a,f,g,w){return new jXe(a,f,g,w).getDrawableElement()}}let hB=0,tqt,fB=nqt(),dB=eqt(),Pu=rqt(),_bt=dB.plotColorPalette.split(",").map(i=>i.trim()),pX=!1,Abt=!1;function eqt(){const i=dgt(),a=o1();return MF(i.xyChart,a.themeVariables.xyChart)}function nqt(){const i=o1();return MF(Bl.xyChart,i.xyChart)}function rqt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function Lbt(i){const a=o1();return Ef(i.trim(),a)}function zXe(i){tqt=i}function qXe(i){i==="horizontal"?fB.chartOrientation="horizontal":fB.chartOrientation="vertical"}function HXe(i){Pu.xAxis.title=Lbt(i.text)}function iqt(i,a){Pu.xAxis={type:"linear",title:Pu.xAxis.title,min:i,max:a},pX=!0}function VXe(i){Pu.xAxis={type:"band",title:Pu.xAxis.title,categories:i.map(a=>Lbt(a.text))},pX=!0}function UXe(i){Pu.yAxis.title=Lbt(i.text)}function GXe(i,a){Pu.yAxis={type:"linear",title:Pu.yAxis.title,min:i,max:a},Abt=!0}function KXe(i){const a=Math.min(...i),f=Math.max(...i),g=lB(Pu.yAxis)?Pu.yAxis.min:1/0,w=lB(Pu.yAxis)?Pu.yAxis.max:-1/0;Pu.yAxis={type:"linear",title:Pu.yAxis.title,min:Math.min(g,a),max:Math.max(w,f)}}function sqt(i){let a=[];if(i.length===0)return a;if(!pX){const f=lB(Pu.xAxis)?Pu.xAxis.min:1/0,g=lB(Pu.xAxis)?Pu.xAxis.max:-1/0;iqt(Math.min(f,1),Math.max(g,i.length))}if(Abt||KXe(i),Wzt(Pu.xAxis)&&(a=Pu.xAxis.categories.map((f,g)=>[f,i[g]])),lB(Pu.xAxis)){const f=Pu.xAxis.min,g=Pu.xAxis.max,w=(g-f+1)/i.length,v=[];for(let b=f;b<=g;b+=w)v.push(`${b}`);a=v.map((b,E)=>[b,i[E]])}return a}function aqt(i){return _bt[i===0?0:i%_bt.length]}function WXe(i,a){const f=sqt(a);Pu.plots.push({type:"line",strokeFill:aqt(hB),strokeWidth:2,data:f}),hB++}function YXe(i,a){const f=sqt(a);Pu.plots.push({type:"bar",fill:aqt(hB),data:f}),hB++}function XXe(){if(Pu.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return Pu.title=Zg(),$Xe.build(fB,Pu,dB,tqt)}function QXe(){return dB}function JXe(){return fB}const ZXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:DXe,db:{getDrawableElem:XXe,clear:function(){ag(),hB=0,fB=nqt(),Pu=rqt(),dB=eqt(),_bt=dB.plotColorPalette.split(",").map(i=>i.trim()),pX=!1,Abt=!1},setAccTitle:og,getAccTitle:Xg,setDiagramTitle:S2,getDiagramTitle:Zg,getAccDescription:Jg,setAccDescription:Qg,setOrientation:qXe,setXAxisTitle:HXe,setXAxisRangeData:iqt,setXAxisBand:VXe,setYAxisTitle:UXe,setYAxisRangeData:GXe,setLineData:WXe,setBarData:YXe,setTmpSVGG:zXe,getChartThemeConfig:QXe,getChartConfig:JXe},renderer:{draw:(i,a,f,g)=>{const w=g.db,v=w.getChartThemeConfig(),b=w.getChartConfig();function E(nt){return nt==="top"?"text-before-edge":"middle"}function S(nt){return nt==="left"?"start":nt==="right"?"end":"middle"}function _(nt){return`translate(${nt.x}, ${nt.y}) rotate(${nt.rotation||0})`}Kt.debug(`Rendering xychart chart +`+i);const M=FF(a),F=M.append("g").attr("class","main"),R=F.append("rect").attr("width",b.width).attr("height",b.height).attr("class","background");sg(M,b.height,b.width,!0),M.attr("viewBox",`0 0 ${b.width} ${b.height}`),R.attr("fill",v.backgroundColor),w.setTmpSVGG(M.append("g").attr("class","mermaid-tmp-group"));const B=w.getDrawableElem(),z={};function Y(nt){let ot=F,ft="";for(const[wt]of nt.entries()){let mt=F;wt>0&&z[ft]&&(mt=z[ft]),ft+=nt[wt],ot=z[ft],ot||(ot=z[ft]=mt.append("g").attr("class",nt[wt]))}return ot}for(const nt of B){if(nt.data.length===0)continue;const ot=Y(nt.groupTexts);switch(nt.type){case"rect":ot.selectAll("rect").data(nt.data).enter().append("rect").attr("x",ft=>ft.x).attr("y",ft=>ft.y).attr("width",ft=>ft.width).attr("height",ft=>ft.height).attr("fill",ft=>ft.fill).attr("stroke",ft=>ft.strokeFill).attr("stroke-width",ft=>ft.strokeWidth);break;case"text":ot.selectAll("text").data(nt.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",ft=>ft.fill).attr("font-size",ft=>ft.fontSize).attr("dominant-baseline",ft=>E(ft.verticalPos)).attr("text-anchor",ft=>S(ft.horizontalPos)).attr("transform",ft=>_(ft)).text(ft=>ft.text);break;case"path":ot.selectAll("path").data(nt.data).enter().append("path").attr("d",ft=>ft.path).attr("fill",ft=>ft.fill?ft.fill:"none").attr("stroke",ft=>ft.strokeFill).attr("stroke-width",ft=>ft.strokeWidth);break}}}}}},Symbol.toStringTag,{value:"Module"}));var Dbt=function(){var i=function(Ae,ye,tn,sn){for(tn=tn||{},sn=Ae.length;sn--;tn[Ae[sn]]=ye);return tn},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],b=[1,18],E=[2,7],S=[1,22],_=[1,23],M=[1,24],F=[1,25],R=[1,26],B=[1,27],z=[1,20],Y=[1,28],nt=[1,29],ot=[62,63],ft=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],wt=[1,47],mt=[1,48],ct=[1,49],rt=[1,50],it=[1,51],gt=[1,52],Q=[1,53],dt=[53,54],K=[1,64],yt=[1,60],V=[1,61],Ot=[1,62],It=[1,63],jt=[1,65],xt=[1,69],Ft=[1,70],Ct=[1,67],kt=[1,68],Gt=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],Fe={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:function(ye,tn,sn,be,Ne,Xt,_e){var xe=Xt.length-1;switch(Ne){case 4:this.$=Xt[xe].trim(),be.setAccTitle(this.$);break;case 5:case 6:this.$=Xt[xe].trim(),be.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:be.addRequirement(Xt[xe-3],Xt[xe-4]);break;case 14:be.setNewReqId(Xt[xe-2]);break;case 15:be.setNewReqText(Xt[xe-2]);break;case 16:be.setNewReqRisk(Xt[xe-2]);break;case 17:be.setNewReqVerifyMethod(Xt[xe-2]);break;case 20:this.$=be.RequirementType.REQUIREMENT;break;case 21:this.$=be.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=be.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=be.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=be.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=be.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=be.RiskLevel.LOW_RISK;break;case 27:this.$=be.RiskLevel.MED_RISK;break;case 28:this.$=be.RiskLevel.HIGH_RISK;break;case 29:this.$=be.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=be.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=be.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=be.VerifyType.VERIFY_TEST;break;case 33:be.addElement(Xt[xe-3]);break;case 34:be.setNewElementType(Xt[xe-2]);break;case 35:be.setNewElementDocRef(Xt[xe-2]);break;case 38:be.addRelationship(Xt[xe-2],Xt[xe],Xt[xe-4]);break;case 39:be.addRelationship(Xt[xe-2],Xt[xe-4],Xt[xe]);break;case 40:this.$=be.Relationships.CONTAINS;break;case 41:this.$=be.Relationships.COPIES;break;case 42:this.$=be.Relationships.DERIVES;break;case 43:this.$=be.Relationships.SATISFIES;break;case 44:this.$=be.Relationships.VERIFIES;break;case 45:this.$=be.Relationships.REFINES;break;case 46:this.$=be.Relationships.TRACES;break}},table:[{3:1,4:2,6:a,9:f,11:g,13:w},{1:[3]},{3:8,4:2,5:[1,7],6:a,9:f,11:g,13:w},{5:[1,9]},{10:[1,10]},{12:[1,11]},i(v,[2,6]),{3:12,4:2,6:a,9:f,11:g,13:w},{1:[2,2]},{4:17,5:b,7:13,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},i(v,[2,4]),i(v,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:b,7:31,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:32,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:33,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:34,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:35,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},i(ot,[2,20]),i(ot,[2,21]),i(ot,[2,22]),i(ot,[2,23]),i(ot,[2,24]),i(ot,[2,25]),i(ft,[2,49]),i(ft,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:wt,56:mt,57:ct,58:rt,59:it,60:gt,61:Q},{52:54,55:wt,56:mt,57:ct,58:rt,59:it,60:gt,61:Q},{5:[1,55]},{5:[1,56]},{53:[1,57]},i(dt,[2,40]),i(dt,[2,41]),i(dt,[2,42]),i(dt,[2,43]),i(dt,[2,44]),i(dt,[2,45]),i(dt,[2,46]),{54:[1,58]},{5:K,20:59,21:yt,24:V,26:Ot,28:It,30:jt},{5:xt,30:Ft,46:66,47:Ct,49:kt},{23:71,62:Y,63:nt},{23:72,62:Y,63:nt},i(Gt,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:K,20:77,21:yt,24:V,26:Ot,28:It,30:jt},i(Gt,[2,19]),i(Gt,[2,33]),{22:[1,78]},{22:[1,79]},{5:xt,30:Ft,46:80,47:Ct,49:kt},i(Gt,[2,37]),i(Gt,[2,38]),i(Gt,[2,39]),{23:81,62:Y,63:nt},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},i(Gt,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},i(Gt,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:K,20:106,21:yt,24:V,26:Ot,28:It,30:jt},{5:K,20:107,21:yt,24:V,26:Ot,28:It,30:jt},{5:K,20:108,21:yt,24:V,26:Ot,28:It,30:jt},{5:K,20:109,21:yt,24:V,26:Ot,28:It,30:jt},{5:xt,30:Ft,46:110,47:Ct,49:kt},{5:xt,30:Ft,46:111,47:Ct,49:kt},i(Gt,[2,14]),i(Gt,[2,15]),i(Gt,[2,16]),i(Gt,[2,17]),i(Gt,[2,34]),i(Gt,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:function(ye,tn){if(tn.recoverable)this.trace(ye);else{var sn=new Error(ye);throw sn.hash=tn,sn}},parse:function(ye){var tn=this,sn=[0],be=[],Ne=[null],Xt=[],_e=this.table,xe="",Mn=0,ce=0,Br=2,we=1,Fi=Xt.slice.call(arguments,1),mi=Object.create(this.lexer),ga={yy:{}};for(var Ss in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ss)&&(ga.yy[Ss]=this.yy[Ss]);mi.setInput(ye,ga.yy),ga.yy.lexer=mi,ga.yy.parser=this,typeof mi.yylloc>"u"&&(mi.yylloc={});var za=mi.yylloc;Xt.push(za);var br=mi.options&&mi.options.ranges;typeof ga.yy.parseError=="function"?this.parseError=ga.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function An(){var va;return va=be.pop()||mi.lex()||we,typeof va!="number"&&(va instanceof Array&&(be=va,va=be.pop()),va=tn.symbols_[va]||va),va}for(var Nn,Bn,ke,pe,Je={},an,xn,qa,xo;;){if(Bn=sn[sn.length-1],this.defaultActions[Bn]?ke=this.defaultActions[Bn]:((Nn===null||typeof Nn>"u")&&(Nn=An()),ke=_e[Bn]&&_e[Bn][Nn]),typeof ke>"u"||!ke.length||!ke[0]){var ko="";xo=[];for(an in _e[Bn])this.terminals_[an]&&an>Br&&xo.push("'"+this.terminals_[an]+"'");mi.showPosition?ko="Parse error on line "+(Mn+1)+`: +`+mi.showPosition()+` +Expecting `+xo.join(", ")+", got '"+(this.terminals_[Nn]||Nn)+"'":ko="Parse error on line "+(Mn+1)+": Unexpected "+(Nn==we?"end of input":"'"+(this.terminals_[Nn]||Nn)+"'"),this.parseError(ko,{text:mi.match,token:this.terminals_[Nn]||Nn,line:mi.yylineno,loc:za,expected:xo})}if(ke[0]instanceof Array&&ke.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bn+", token: "+Nn);switch(ke[0]){case 1:sn.push(Nn),Ne.push(mi.yytext),Xt.push(mi.yylloc),sn.push(ke[1]),Nn=null,ce=mi.yyleng,xe=mi.yytext,Mn=mi.yylineno,za=mi.yylloc;break;case 2:if(xn=this.productions_[ke[1]][1],Je.$=Ne[Ne.length-xn],Je._$={first_line:Xt[Xt.length-(xn||1)].first_line,last_line:Xt[Xt.length-1].last_line,first_column:Xt[Xt.length-(xn||1)].first_column,last_column:Xt[Xt.length-1].last_column},br&&(Je._$.range=[Xt[Xt.length-(xn||1)].range[0],Xt[Xt.length-1].range[1]]),pe=this.performAction.apply(Je,[xe,ce,Mn,ga.yy,ke[1],Ne,Xt].concat(Fi)),typeof pe<"u")return pe;xn&&(sn=sn.slice(0,-1*xn*2),Ne=Ne.slice(0,-1*xn),Xt=Xt.slice(0,-1*xn)),sn.push(this.productions_[ke[1]][0]),Ne.push(Je.$),Xt.push(Je._$),qa=_e[sn[sn.length-2]][sn[sn.length-1]],sn.push(qa);break;case 3:return!0}}return!0}},Mt=function(){var Ae={EOF:1,parseError:function(tn,sn){if(this.yy.parser)this.yy.parser.parseError(tn,sn);else throw new Error(tn)},setInput:function(ye,tn){return this.yy=tn||this.yy||{},this._input=ye,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ye=this._input[0];this.yytext+=ye,this.yyleng++,this.offset++,this.match+=ye,this.matched+=ye;var tn=ye.match(/(?:\r\n?|\n).*/g);return tn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ye},unput:function(ye){var tn=ye.length,sn=ye.split(/(?:\r\n?|\n)/g);this._input=ye+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-tn),this.offset-=tn;var be=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),sn.length-1&&(this.yylineno-=sn.length-1);var Ne=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:sn?(sn.length===be.length?this.yylloc.first_column:0)+be[be.length-sn.length].length-sn[0].length:this.yylloc.first_column-tn},this.options.ranges&&(this.yylloc.range=[Ne[0],Ne[0]+this.yyleng-tn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ye){this.unput(this.match.slice(ye))},pastInput:function(){var ye=this.matched.substr(0,this.matched.length-this.match.length);return(ye.length>20?"...":"")+ye.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ye=this.match;return ye.length<20&&(ye+=this._input.substr(0,20-ye.length)),(ye.substr(0,20)+(ye.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ye=this.pastInput(),tn=new Array(ye.length+1).join("-");return ye+this.upcomingInput()+` +`+tn+"^"},test_match:function(ye,tn){var sn,be,Ne;if(this.options.backtrack_lexer&&(Ne={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ne.yylloc.range=this.yylloc.range.slice(0))),be=ye[0].match(/(?:\r\n?|\n).*/g),be&&(this.yylineno+=be.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:be?be[be.length-1].length-be[be.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ye[0].length},this.yytext+=ye[0],this.match+=ye[0],this.matches=ye,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ye[0].length),this.matched+=ye[0],sn=this.performAction.call(this,this.yy,this,tn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),sn)return sn;if(this._backtrack){for(var Xt in Ne)this[Xt]=Ne[Xt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ye,tn,sn,be;this._more||(this.yytext="",this.match="");for(var Ne=this._currentRules(),Xt=0;Xttn[0].length)){if(tn=sn,be=Xt,this.options.backtrack_lexer){if(ye=this.test_match(sn,Ne[Xt]),ye!==!1)return ye;if(this._backtrack){tn=!1;continue}else return!1}else if(!this.options.flex)break}return tn?(ye=this.test_match(tn,Ne[be]),ye!==!1?ye:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var tn=this.next();return tn||this.lex()},begin:function(tn){this.conditionStack.push(tn)},popState:function(){var tn=this.conditionStack.length-1;return tn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(tn){return tn=this.conditionStack.length-1-Math.abs(tn||0),tn>=0?this.conditionStack[tn]:"INITIAL"},pushState:function(tn){this.begin(tn)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(tn,sn,be,Ne){switch(be){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return sn.yytext=sn.yytext.trim(),62}},rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,50],inclusive:!0}}};return Ae}();Fe.lexer=Mt;function pn(){this.yy={}}return pn.prototype=Fe,Fe.Parser=pn,new pn}();Dbt.parser=Dbt;const tQe=Dbt;let Mbt=[],ub={},gB={},_8={},pB={};const eQe={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},getConfig:()=>Re().req,addRequirement:(i,a)=>(gB[i]===void 0&&(gB[i]={name:i,type:a,id:ub.id,text:ub.text,risk:ub.risk,verifyMethod:ub.verifyMethod}),ub={},gB[i]),getRequirements:()=>gB,setNewReqId:i=>{ub!==void 0&&(ub.id=i)},setNewReqText:i=>{ub!==void 0&&(ub.text=i)},setNewReqRisk:i=>{ub!==void 0&&(ub.risk=i)},setNewReqVerifyMethod:i=>{ub!==void 0&&(ub.verifyMethod=i)},setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,addElement:i=>(pB[i]===void 0&&(pB[i]={name:i,type:_8.type,docRef:_8.docRef},Kt.info("Added new requirement: ",i)),_8={},pB[i]),getElements:()=>pB,setNewElementType:i=>{_8!==void 0&&(_8.type=i)},setNewElementDocRef:i=>{_8!==void 0&&(_8.docRef=i)},addRelationship:(i,a,f)=>{Mbt.push({type:i,src:a,dst:f})},getRelationships:()=>Mbt,clear:()=>{Mbt=[],ub={},gB={},_8={},pB={},ag()}},nQe=i=>` + + marker { + fill: ${i.relationColor}; + stroke: ${i.relationColor}; + } + + marker.cross { + stroke: ${i.lineColor}; + } + + svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + .reqBox { + fill: ${i.requirementBackground}; + fill-opacity: 1.0; + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${i.requirementTextColor}; + } + .reqLabelBox { + fill: ${i.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + .relationshipLine { + stroke: ${i.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${i.relationLabelColor}; + } + +`,Ibt={CONTAINS:"contains",ARROW:"arrow"},oqt={ReqMarkers:Ibt,insertLineEndings:(i,a)=>{let f=i.append("defs").append("marker").attr("id",Ibt.CONTAINS+"_line_ending").attr("refX",0).attr("refY",a.line_height/2).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("g");f.append("circle").attr("cx",a.line_height/2).attr("cy",a.line_height/2).attr("r",a.line_height/2).attr("fill","none"),f.append("line").attr("x1",0).attr("x2",a.line_height).attr("y1",a.line_height/2).attr("y2",a.line_height/2).attr("stroke-width",1),f.append("line").attr("y1",0).attr("y2",a.line_height).attr("x1",a.line_height/2).attr("x2",a.line_height/2).attr("stroke-width",1),i.append("defs").append("marker").attr("id",Ibt.ARROW+"_line_ending").attr("refX",a.line_height).attr("refY",.5*a.line_height).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${a.line_height},${a.line_height/2} + M${a.line_height},${a.line_height/2} + L0,${a.line_height}`).attr("stroke-width",1)}};let Xh={},cqt=0;const uqt=(i,a)=>i.insert("rect","#"+a).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Xh.rect_min_width+"px").attr("height",Xh.rect_min_height+"px"),lqt=(i,a,f)=>{let g=Xh.rect_min_width/2,w=i.append("text").attr("class","req reqLabel reqTitle").attr("id",a).attr("x",g).attr("y",Xh.rect_padding).attr("dominant-baseline","hanging"),v=0;f.forEach(_=>{v==0?w.append("tspan").attr("text-anchor","middle").attr("x",Xh.rect_min_width/2).attr("dy",0).text(_):w.append("tspan").attr("text-anchor","middle").attr("x",Xh.rect_min_width/2).attr("dy",Xh.line_height*.75).text(_),v++});let b=1.5*Xh.rect_padding,E=v*Xh.line_height*.75,S=b+E;return i.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Xh.rect_min_width).attr("y1",S).attr("y2",S),{titleNode:w,y:S}},hqt=(i,a,f,g)=>{let w=i.append("text").attr("class","req reqLabel").attr("id",a).attr("x",Xh.rect_padding).attr("y",g).attr("dominant-baseline","hanging"),v=0;const b=30;let E=[];return f.forEach(S=>{let _=S.length;for(;_>b&&v<3;){let M=S.substring(0,b);S=S.substring(b,S.length),_=S.length,E[E.length]=M,v++}if(v==3){let M=E[E.length-1];E[E.length-1]=M.substring(0,M.length-4)+"..."}else E[E.length]=S;v=0}),E.forEach(S=>{w.append("tspan").attr("x",Xh.rect_padding).attr("dy",Xh.line_height).text(S)}),w},rQe=(i,a,f,g)=>{const w=a.node().getTotalLength(),v=a.node().getPointAtLength(w*.5),b="rel"+cqt;cqt++;const S=i.append("text").attr("class","req relationshipLabel").attr("id",b).attr("x",v.x).attr("y",v.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(g).node().getBBox();i.insert("rect","#"+b).attr("class","req reqLabelBox").attr("x",v.x-S.width/2).attr("y",v.y-S.height/2).attr("width",S.width).attr("height",S.height).attr("fill","white").attr("fill-opacity","85%")},iQe=function(i,a,f,g,w){const v=f.edge(LD(a.src),LD(a.dst)),b=Ax().x(function(S){return S.x}).y(function(S){return S.y}),E=i.insert("path","#"+g).attr("class","er relationshipLine").attr("d",b(v.points)).attr("fill","none");a.type==w.db.Relationships.CONTAINS?E.attr("marker-start","url("+ei.getUrl(Xh.arrowMarkerAbsolute)+"#"+a.type+"_line_ending)"):(E.attr("stroke-dasharray","10,7"),E.attr("marker-end","url("+ei.getUrl(Xh.arrowMarkerAbsolute)+"#"+oqt.ReqMarkers.ARROW+"_line_ending)")),rQe(i,E,Xh,`<<${a.type}>>`)},sQe=(i,a,f)=>{Object.keys(i).forEach(g=>{let w=i[g];g=LD(g),Kt.info("Added new requirement: ",g);const v=f.append("g").attr("id",g),b="req-"+g,E=uqt(v,b);let S=lqt(v,g+"_title",[`<<${w.type}>>`,`${w.name}`]);hqt(v,g+"_body",[`Id: ${w.id}`,`Text: ${w.text}`,`Risk: ${w.risk}`,`Verification: ${w.verifyMethod}`],S.y);const _=E.node().getBBox();a.setNode(g,{width:_.width,height:_.height,shape:"rect",id:g})})},aQe=(i,a,f)=>{Object.keys(i).forEach(g=>{let w=i[g];const v=LD(g),b=f.append("g").attr("id",v),E="element-"+v,S=uqt(b,E);let _=lqt(b,E+"_title",["<>",`${g}`]);hqt(b,E+"_body",[`Type: ${w.type||"Not Specified"}`,`Doc Ref: ${w.docRef||"None"}`],_.y);const M=S.node().getBBox();a.setNode(v,{width:M.width,height:M.height,shape:"rect",id:v})})},oQe=(i,a)=>(i.forEach(function(f){let g=LD(f.src),w=LD(f.dst);a.setEdge(g,w,{relationship:f})}),i),cQe=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&(i.select("#"+f),i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )"))})},LD=i=>i.replace(/\s/g,"").replace(/\./g,"_"),uQe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:tQe,db:eQe,renderer:{draw:(i,a,f,g)=>{Xh=Re().requirement;const w=Xh.securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const E=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);oqt.insertLineEndings(E,Xh);const S=new l1({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Xh.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let _=g.db.getRequirements(),M=g.db.getElements(),F=g.db.getRelationships();sQe(_,S,E),aQe(M,S,E),oQe(F,S),kD(S),cQe(E,S),F.forEach(function(nt){iQe(E,nt,S,a,g)});const R=Xh.rect_padding,B=E.node().getBBox(),z=B.width+R*2,Y=B.height+R*2;sg(E,Y,z,Xh.useMaxWidth),E.attr("viewBox",`${B.x-R} ${B.y-R} ${z} ${Y}`)}},styles:nQe}},Symbol.toStringTag,{value:"Module"}));var Obt=function(){var i=function(be,Ne,Xt,_e){for(Xt=Xt||{},_e=be.length;_e--;Xt[be[_e]]=Ne);return Xt},a=[1,2],f=[1,3],g=[1,4],w=[2,4],v=[1,9],b=[1,11],E=[1,13],S=[1,14],_=[1,16],M=[1,17],F=[1,18],R=[1,24],B=[1,25],z=[1,26],Y=[1,27],nt=[1,28],ot=[1,29],ft=[1,30],wt=[1,31],mt=[1,32],ct=[1,33],rt=[1,34],it=[1,35],gt=[1,36],Q=[1,37],dt=[1,38],K=[1,39],yt=[1,41],V=[1,42],Ot=[1,43],It=[1,44],jt=[1,45],xt=[1,46],Ft=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],Ct=[4,5,16,50,52,53],kt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],Gt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],Fe=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],Mt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],pn=[68,69,70],Ae=[1,120],ye={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,DOTTED_ARROW:74,SOLID_CROSS:75,DOTTED_CROSS:76,SOLID_POINT:77,DOTTED_POINT:78,TXT:79,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"DOTTED_ARROW",75:"SOLID_CROSS",76:"DOTTED_CROSS",77:"SOLID_POINT",78:"DOTTED_POINT",79:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:function(Ne,Xt,_e,xe,Mn,ce,Br){var we=ce.length-1;switch(Mn){case 3:return xe.apply(ce[we]),ce[we];case 4:case 9:this.$=[];break;case 5:case 10:ce[we-1].push(ce[we]),this.$=ce[we-1];break;case 6:case 7:case 11:case 12:this.$=ce[we];break;case 8:case 13:this.$=[];break;case 15:ce[we].type="createParticipant",this.$=ce[we];break;case 16:ce[we-1].unshift({type:"boxStart",boxData:xe.parseBoxData(ce[we-2])}),ce[we-1].push({type:"boxEnd",boxText:ce[we-2]}),this.$=ce[we-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(ce[we-2]),sequenceIndexStep:Number(ce[we-1]),sequenceVisible:!0,signalType:xe.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(ce[we-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:xe.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:xe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:xe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:xe.LINETYPE.ACTIVE_START,actor:ce[we-1]};break;case 23:this.$={type:"activeEnd",signalType:xe.LINETYPE.ACTIVE_END,actor:ce[we-1]};break;case 29:xe.setDiagramTitle(ce[we].substring(6)),this.$=ce[we].substring(6);break;case 30:xe.setDiagramTitle(ce[we].substring(7)),this.$=ce[we].substring(7);break;case 31:this.$=ce[we].trim(),xe.setAccTitle(this.$);break;case 32:case 33:this.$=ce[we].trim(),xe.setAccDescription(this.$);break;case 34:ce[we-1].unshift({type:"loopStart",loopText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.LOOP_START}),ce[we-1].push({type:"loopEnd",loopText:ce[we-2],signalType:xe.LINETYPE.LOOP_END}),this.$=ce[we-1];break;case 35:ce[we-1].unshift({type:"rectStart",color:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.RECT_START}),ce[we-1].push({type:"rectEnd",color:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.RECT_END}),this.$=ce[we-1];break;case 36:ce[we-1].unshift({type:"optStart",optText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.OPT_START}),ce[we-1].push({type:"optEnd",optText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.OPT_END}),this.$=ce[we-1];break;case 37:ce[we-1].unshift({type:"altStart",altText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.ALT_START}),ce[we-1].push({type:"altEnd",signalType:xe.LINETYPE.ALT_END}),this.$=ce[we-1];break;case 38:ce[we-1].unshift({type:"parStart",parText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.PAR_START}),ce[we-1].push({type:"parEnd",signalType:xe.LINETYPE.PAR_END}),this.$=ce[we-1];break;case 39:ce[we-1].unshift({type:"parStart",parText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.PAR_OVER_START}),ce[we-1].push({type:"parEnd",signalType:xe.LINETYPE.PAR_END}),this.$=ce[we-1];break;case 40:ce[we-1].unshift({type:"criticalStart",criticalText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.CRITICAL_START}),ce[we-1].push({type:"criticalEnd",signalType:xe.LINETYPE.CRITICAL_END}),this.$=ce[we-1];break;case 41:ce[we-1].unshift({type:"breakStart",breakText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.BREAK_START}),ce[we-1].push({type:"breakEnd",optText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.BREAK_END}),this.$=ce[we-1];break;case 43:this.$=ce[we-3].concat([{type:"option",optionText:xe.parseMessage(ce[we-1]),signalType:xe.LINETYPE.CRITICAL_OPTION},ce[we]]);break;case 45:this.$=ce[we-3].concat([{type:"and",parText:xe.parseMessage(ce[we-1]),signalType:xe.LINETYPE.PAR_AND},ce[we]]);break;case 47:this.$=ce[we-3].concat([{type:"else",altText:xe.parseMessage(ce[we-1]),signalType:xe.LINETYPE.ALT_ELSE},ce[we]]);break;case 48:ce[we-3].draw="participant",ce[we-3].type="addParticipant",ce[we-3].description=xe.parseMessage(ce[we-1]),this.$=ce[we-3];break;case 49:ce[we-1].draw="participant",ce[we-1].type="addParticipant",this.$=ce[we-1];break;case 50:ce[we-3].draw="actor",ce[we-3].type="addParticipant",ce[we-3].description=xe.parseMessage(ce[we-1]),this.$=ce[we-3];break;case 51:ce[we-1].draw="actor",ce[we-1].type="addParticipant",this.$=ce[we-1];break;case 52:ce[we-1].type="destroyParticipant",this.$=ce[we-1];break;case 53:this.$=[ce[we-1],{type:"addNote",placement:ce[we-2],actor:ce[we-1].actor,text:ce[we]}];break;case 54:ce[we-2]=[].concat(ce[we-1],ce[we-1]).slice(0,2),ce[we-2][0]=ce[we-2][0].actor,ce[we-2][1]=ce[we-2][1].actor,this.$=[ce[we-1],{type:"addNote",placement:xe.PLACEMENT.OVER,actor:ce[we-2].slice(0,2),text:ce[we]}];break;case 55:this.$=[ce[we-1],{type:"addLinks",actor:ce[we-1].actor,text:ce[we]}];break;case 56:this.$=[ce[we-1],{type:"addALink",actor:ce[we-1].actor,text:ce[we]}];break;case 57:this.$=[ce[we-1],{type:"addProperties",actor:ce[we-1].actor,text:ce[we]}];break;case 58:this.$=[ce[we-1],{type:"addDetails",actor:ce[we-1].actor,text:ce[we]}];break;case 61:this.$=[ce[we-2],ce[we]];break;case 62:this.$=ce[we];break;case 63:this.$=xe.PLACEMENT.LEFTOF;break;case 64:this.$=xe.PLACEMENT.RIGHTOF;break;case 65:this.$=[ce[we-4],ce[we-1],{type:"addMessage",from:ce[we-4].actor,to:ce[we-1].actor,signalType:ce[we-3],msg:ce[we],activate:!0},{type:"activeStart",signalType:xe.LINETYPE.ACTIVE_START,actor:ce[we-1]}];break;case 66:this.$=[ce[we-4],ce[we-1],{type:"addMessage",from:ce[we-4].actor,to:ce[we-1].actor,signalType:ce[we-3],msg:ce[we]},{type:"activeEnd",signalType:xe.LINETYPE.ACTIVE_END,actor:ce[we-4]}];break;case 67:this.$=[ce[we-3],ce[we-1],{type:"addMessage",from:ce[we-3].actor,to:ce[we-1].actor,signalType:ce[we-2],msg:ce[we]}];break;case 68:this.$={type:"addParticipant",actor:ce[we]};break;case 69:this.$=xe.LINETYPE.SOLID_OPEN;break;case 70:this.$=xe.LINETYPE.DOTTED_OPEN;break;case 71:this.$=xe.LINETYPE.SOLID;break;case 72:this.$=xe.LINETYPE.DOTTED;break;case 73:this.$=xe.LINETYPE.SOLID_CROSS;break;case 74:this.$=xe.LINETYPE.DOTTED_CROSS;break;case 75:this.$=xe.LINETYPE.SOLID_POINT;break;case 76:this.$=xe.LINETYPE.DOTTED_POINT;break;case 77:this.$=xe.parseMessage(ce[we].trim().substring(1));break}},table:[{3:1,4:a,5:f,6:g},{1:[3]},{3:5,4:a,5:f,6:g},{3:6,4:a,5:f,6:g},i([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],w,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:v,5:b,8:8,9:10,12:12,13:E,14:S,17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},i(Ft,[2,5]),{9:47,12:12,13:E,14:S,17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},i(Ft,[2,7]),i(Ft,[2,8]),i(Ft,[2,14]),{12:48,50:Q,52:dt,53:K},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:xt},{22:55,70:xt},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},i(Ft,[2,29]),i(Ft,[2,30]),{32:[1,61]},{34:[1,62]},i(Ft,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:xt},{22:72,70:xt},{22:73,70:xt},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82]},{55:83,57:[1,84],65:[1,85],66:[1,86]},{22:87,70:xt},{22:88,70:xt},{22:89,70:xt},{22:90,70:xt},i([5,51,64,71,72,73,74,75,76,77,78,79],[2,68]),i(Ft,[2,6]),i(Ft,[2,15]),i(Ct,[2,9],{10:91}),i(Ft,[2,17]),{5:[1,93],19:[1,92]},{5:[1,94]},i(Ft,[2,21]),{5:[1,95]},{5:[1,96]},i(Ft,[2,24]),i(Ft,[2,25]),i(Ft,[2,26]),i(Ft,[2,27]),i(Ft,[2,28]),i(Ft,[2,31]),i(Ft,[2,32]),i(kt,w,{7:97}),i(kt,w,{7:98}),i(kt,w,{7:99}),i(Gt,w,{40:100,7:101}),i(Fe,w,{42:102,7:103}),i(Fe,w,{7:103,42:104}),i(Mt,w,{45:105,7:106}),i(kt,w,{7:107}),{5:[1,109],51:[1,108]},{5:[1,111],51:[1,110]},{5:[1,112]},{22:115,68:[1,113],69:[1,114],70:xt},i(pn,[2,69]),i(pn,[2,70]),i(pn,[2,71]),i(pn,[2,72]),i(pn,[2,73]),i(pn,[2,74]),i(pn,[2,75]),i(pn,[2,76]),{22:116,70:xt},{22:118,58:117,70:xt},{70:[2,63]},{70:[2,64]},{56:119,79:Ae},{56:121,79:Ae},{56:122,79:Ae},{56:123,79:Ae},{4:[1,126],5:[1,128],11:125,12:127,16:[1,124],50:Q,52:dt,53:K},{5:[1,129]},i(Ft,[2,19]),i(Ft,[2,20]),i(Ft,[2,22]),i(Ft,[2,23]),{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,130],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,131],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,132],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{16:[1,133]},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[2,46],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,49:[1,134],50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{16:[1,135]},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[2,44],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,48:[1,136],50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{16:[1,137]},{16:[1,138]},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[2,42],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,47:[1,139],50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,140],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{15:[1,141]},i(Ft,[2,49]),{15:[1,142]},i(Ft,[2,51]),i(Ft,[2,52]),{22:143,70:xt},{22:144,70:xt},{56:145,79:Ae},{56:146,79:Ae},{56:147,79:Ae},{64:[1,148],79:[2,62]},{5:[2,55]},{5:[2,77]},{5:[2,56]},{5:[2,57]},{5:[2,58]},i(Ft,[2,16]),i(Ct,[2,10]),{12:149,50:Q,52:dt,53:K},i(Ct,[2,12]),i(Ct,[2,13]),i(Ft,[2,18]),i(Ft,[2,34]),i(Ft,[2,35]),i(Ft,[2,36]),i(Ft,[2,37]),{15:[1,150]},i(Ft,[2,38]),{15:[1,151]},i(Ft,[2,39]),i(Ft,[2,40]),{15:[1,152]},i(Ft,[2,41]),{5:[1,153]},{5:[1,154]},{56:155,79:Ae},{56:156,79:Ae},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:157,70:xt},i(Ct,[2,11]),i(Gt,w,{7:101,40:158}),i(Fe,w,{7:103,42:159}),i(Mt,w,{7:106,45:160}),i(Ft,[2,48]),i(Ft,[2,50]),{5:[2,65]},{5:[2,66]},{79:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],85:[2,63],86:[2,64],119:[2,55],120:[2,77],121:[2,56],122:[2,57],123:[2,58],145:[2,67],146:[2,53],147:[2,54],155:[2,65],156:[2,66],157:[2,61],158:[2,47],159:[2,45],160:[2,43]},parseError:function(Ne,Xt){if(Xt.recoverable)this.trace(Ne);else{var _e=new Error(Ne);throw _e.hash=Xt,_e}},parse:function(Ne){var Xt=this,_e=[0],xe=[],Mn=[null],ce=[],Br=this.table,we="",Fi=0,mi=0,ga=2,Ss=1,za=ce.slice.call(arguments,1),br=Object.create(this.lexer),An={yy:{}};for(var Nn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Nn)&&(An.yy[Nn]=this.yy[Nn]);br.setInput(Ne,An.yy),An.yy.lexer=br,An.yy.parser=this,typeof br.yylloc>"u"&&(br.yylloc={});var Bn=br.yylloc;ce.push(Bn);var ke=br.options&&br.options.ranges;typeof An.yy.parseError=="function"?this.parseError=An.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(){var Zs;return Zs=xe.pop()||br.lex()||Ss,typeof Zs!="number"&&(Zs instanceof Array&&(xe=Zs,Zs=xe.pop()),Zs=Xt.symbols_[Zs]||Zs),Zs}for(var Je,an,xn,qa,xo={},ko,va,Ha,ds;;){if(an=_e[_e.length-1],this.defaultActions[an]?xn=this.defaultActions[an]:((Je===null||typeof Je>"u")&&(Je=pe()),xn=Br[an]&&Br[an][Je]),typeof xn>"u"||!xn.length||!xn[0]){var Fu="";ds=[];for(ko in Br[an])this.terminals_[ko]&&ko>ga&&ds.push("'"+this.terminals_[ko]+"'");br.showPosition?Fu="Parse error on line "+(Fi+1)+`: +`+br.showPosition()+` +Expecting `+ds.join(", ")+", got '"+(this.terminals_[Je]||Je)+"'":Fu="Parse error on line "+(Fi+1)+": Unexpected "+(Je==Ss?"end of input":"'"+(this.terminals_[Je]||Je)+"'"),this.parseError(Fu,{text:br.match,token:this.terminals_[Je]||Je,line:br.yylineno,loc:Bn,expected:ds})}if(xn[0]instanceof Array&&xn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+an+", token: "+Je);switch(xn[0]){case 1:_e.push(Je),Mn.push(br.yytext),ce.push(br.yylloc),_e.push(xn[1]),Je=null,mi=br.yyleng,we=br.yytext,Fi=br.yylineno,Bn=br.yylloc;break;case 2:if(va=this.productions_[xn[1]][1],xo.$=Mn[Mn.length-va],xo._$={first_line:ce[ce.length-(va||1)].first_line,last_line:ce[ce.length-1].last_line,first_column:ce[ce.length-(va||1)].first_column,last_column:ce[ce.length-1].last_column},ke&&(xo._$.range=[ce[ce.length-(va||1)].range[0],ce[ce.length-1].range[1]]),qa=this.performAction.apply(xo,[we,mi,Fi,An.yy,xn[1],Mn,ce].concat(za)),typeof qa<"u")return qa;va&&(_e=_e.slice(0,-1*va*2),Mn=Mn.slice(0,-1*va),ce=ce.slice(0,-1*va)),_e.push(this.productions_[xn[1]][0]),Mn.push(xo.$),ce.push(xo._$),Ha=Br[_e[_e.length-2]][_e[_e.length-1]],_e.push(Ha);break;case 3:return!0}}return!0}},tn=function(){var be={EOF:1,parseError:function(Xt,_e){if(this.yy.parser)this.yy.parser.parseError(Xt,_e);else throw new Error(Xt)},setInput:function(Ne,Xt){return this.yy=Xt||this.yy||{},this._input=Ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Ne=this._input[0];this.yytext+=Ne,this.yyleng++,this.offset++,this.match+=Ne,this.matched+=Ne;var Xt=Ne.match(/(?:\r\n?|\n).*/g);return Xt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ne},unput:function(Ne){var Xt=Ne.length,_e=Ne.split(/(?:\r\n?|\n)/g);this._input=Ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Xt),this.offset-=Xt;var xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),_e.length-1&&(this.yylineno-=_e.length-1);var Mn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:_e?(_e.length===xe.length?this.yylloc.first_column:0)+xe[xe.length-_e.length].length-_e[0].length:this.yylloc.first_column-Xt},this.options.ranges&&(this.yylloc.range=[Mn[0],Mn[0]+this.yyleng-Xt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Ne){this.unput(this.match.slice(Ne))},pastInput:function(){var Ne=this.matched.substr(0,this.matched.length-this.match.length);return(Ne.length>20?"...":"")+Ne.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ne=this.match;return Ne.length<20&&(Ne+=this._input.substr(0,20-Ne.length)),(Ne.substr(0,20)+(Ne.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ne=this.pastInput(),Xt=new Array(Ne.length+1).join("-");return Ne+this.upcomingInput()+` +`+Xt+"^"},test_match:function(Ne,Xt){var _e,xe,Mn;if(this.options.backtrack_lexer&&(Mn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Mn.yylloc.range=this.yylloc.range.slice(0))),xe=Ne[0].match(/(?:\r\n?|\n).*/g),xe&&(this.yylineno+=xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:xe?xe[xe.length-1].length-xe[xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ne[0].length},this.yytext+=Ne[0],this.match+=Ne[0],this.matches=Ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ne[0].length),this.matched+=Ne[0],_e=this.performAction.call(this,this.yy,this,Xt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),_e)return _e;if(this._backtrack){for(var ce in Mn)this[ce]=Mn[ce];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ne,Xt,_e,xe;this._more||(this.yytext="",this.match="");for(var Mn=this._currentRules(),ce=0;ceXt[0].length)){if(Xt=_e,xe=ce,this.options.backtrack_lexer){if(Ne=this.test_match(_e,Mn[ce]),Ne!==!1)return Ne;if(this._backtrack){Xt=!1;continue}else return!1}else if(!this.options.flex)break}return Xt?(Ne=this.test_match(Xt,Mn[xe]),Ne!==!1?Ne:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Xt=this.next();return Xt||this.lex()},begin:function(Xt){this.conditionStack.push(Xt)},popState:function(){var Xt=this.conditionStack.length-1;return Xt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Xt){return Xt=this.conditionStack.length-1-Math.abs(Xt||0),Xt>=0?this.conditionStack[Xt]:"INITIAL"},pushState:function(Xt){this.begin(Xt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Xt,_e,xe,Mn){switch(xe){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;case 8:return this.begin("ID"),50;case 9:return this.begin("ID"),52;case 10:return 13;case 11:return this.begin("ID"),53;case 12:return _e.yytext=_e.yytext.trim(),this.begin("ALIAS"),70;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),36;case 16:return this.begin("LINE"),37;case 17:return this.begin("LINE"),38;case 18:return this.begin("LINE"),39;case 19:return this.begin("LINE"),49;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),43;case 22:return this.begin("LINE"),48;case 23:return this.begin("LINE"),44;case 24:return this.begin("LINE"),47;case 25:return this.begin("LINE"),46;case 26:return this.popState(),15;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;case 37:return this.begin("ID"),23;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;case 41:return this.popState(),"acc_title_value";case 42:return this.begin("acc_descr"),33;case 43:return this.popState(),"acc_descr_value";case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return _e.yytext=_e.yytext.trim(),70;case 53:return 73;case 54:return 74;case 55:return 71;case 56:return 72;case 57:return 75;case 58:return 76;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 68;case 63:return 69;case 64:return 5;case 65:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],inclusive:!0}}};return be}();ye.lexer=tn;function sn(){this.yy={}}return sn.prototype=ye,ye.Parser=sn,new sn}();Obt.parser=Obt;const lQe=Obt;class hQe{constructor(a){this.init=a,this.records=this.init()}reset(){this.records=this.init()}}const ws=new hQe(()=>({prevActor:void 0,actors:{},createdActors:{},destroyedActors:{},boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),fQe=function(i){ws.records.boxes.push({name:i.text,wrap:i.wrap===void 0&&F9()||!!i.wrap,fill:i.color,actorKeys:[]}),ws.records.currentBox=ws.records.boxes.slice(-1)[0]},Nbt=function(i,a,f,g){let w=ws.records.currentBox;const v=ws.records.actors[i];if(v){if(ws.records.currentBox&&v.box&&ws.records.currentBox!==v.box)throw new Error("A same participant should only be defined in one Box: "+v.name+" can't be in '"+v.box.name+"' and in '"+ws.records.currentBox.name+"' at the same time.");if(w=v.box?v.box:ws.records.currentBox,v.box=w,v&&a===v.name&&f==null)return}(f==null||f.text==null)&&(f={text:a,wrap:null,type:g}),(g==null||f.text==null)&&(f={text:a,wrap:null,type:g}),ws.records.actors[i]={box:w,name:a,description:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap,prevActor:ws.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:g||"participant"},ws.records.prevActor&&ws.records.actors[ws.records.prevActor]&&(ws.records.actors[ws.records.prevActor].nextActor=i),ws.records.currentBox&&ws.records.currentBox.actorKeys.push(i),ws.records.prevActor=i},dQe=i=>{let a,f=0;for(a=0;a>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},b}return ws.records.messages.push({from:i,to:a,message:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap,type:g,activate:w}),!0},pQe=function(){return ws.records.boxes.length>0},bQe=function(){return ws.records.boxes.some(i=>i.name)},wQe=function(){return ws.records.messages},mQe=function(){return ws.records.boxes},vQe=function(){return ws.records.actors},yQe=function(){return ws.records.createdActors},xQe=function(){return ws.records.destroyedActors},bB=function(i){return ws.records.actors[i]},kQe=function(){return Object.keys(ws.records.actors)},EQe=function(){ws.records.sequenceNumbersEnabled=!0},TQe=function(){ws.records.sequenceNumbersEnabled=!1},CQe=()=>ws.records.sequenceNumbersEnabled,SQe=function(i){ws.records.wrapEnabled=i},F9=()=>ws.records.wrapEnabled!==void 0?ws.records.wrapEnabled:Re().sequence.wrap,_Qe=function(){ws.reset(),ag()},AQe=function(i){const a=i.trim(),f={text:a.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:a.match(/^:?wrap:/)!==null?!0:a.match(/^:?nowrap:/)!==null?!1:void 0};return Kt.debug("parseMessage:",f),f},LQe=function(i){const a=i.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let f=a!=null&&a[1]?a[1].trim():"transparent",g=a!=null&&a[2]?a[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",f)||(f="transparent",g=i.trim());else{const w=new Option().style;w.color=f,w.color!==f&&(f="transparent",g=i.trim())}return{color:f,text:g!==void 0?Ef(g.replace(/^:?(?:no)?wrap:/,""),Re()):void 0,wrap:g!==void 0?g.match(/^:?wrap:/)!==null?!0:g.match(/^:?nowrap:/)!==null?!1:void 0:void 0}},wB={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},DQe={FILLED:0,OPEN:1},MQe={LEFTOF:0,RIGHTOF:1,OVER:2},fqt=function(i,a,f){const g={actor:i,placement:a,message:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap},w=[].concat(i,i);ws.records.notes.push(g),ws.records.messages.push({from:w[0],to:w[1],message:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap,type:wB.NOTE,placement:a})},dqt=function(i,a){const f=bB(i);try{let g=Ef(a.text,Re());g=g.replace(/&/g,"&"),g=g.replace(/=/g,"=");const w=JSON.parse(g);Pbt(f,w)}catch(g){Kt.error("error while parsing actor link text",g)}},IQe=function(i,a){const f=bB(i);try{const b={};let E=Ef(a.text,Re());var g=E.indexOf("@");E=E.replace(/&/g,"&"),E=E.replace(/=/g,"=");var w=E.slice(0,g-1).trim(),v=E.slice(g+1).trim();b[w]=v,Pbt(f,b)}catch(b){Kt.error("error while parsing actor link text",b)}};function Pbt(i,a){if(i.links==null)i.links=a;else for(let f in a)i.links[f]=a[f]}const gqt=function(i,a){const f=bB(i);try{let g=Ef(a.text,Re());const w=JSON.parse(g);pqt(f,w)}catch(g){Kt.error("error while parsing actor properties text",g)}};function pqt(i,a){if(i.properties==null)i.properties=a;else for(let f in a)i.properties[f]=a[f]}function OQe(){ws.records.currentBox=void 0}const bqt=function(i,a){const f=bB(i),g=document.getElementById(a.text);try{const w=g.innerHTML,v=JSON.parse(w);v.properties&&pqt(f,v.properties),v.links&&Pbt(f,v.links)}catch(w){Kt.error("error while parsing actor details text",w)}},NQe=function(i,a){if(i!==void 0&&i.properties!==void 0)return i.properties[a]},wqt=function(i){if(Array.isArray(i))i.forEach(function(a){wqt(a)});else switch(i.type){case"sequenceIndex":ws.records.messages.push({from:void 0,to:void 0,message:{start:i.sequenceIndex,step:i.sequenceIndexStep,visible:i.sequenceVisible},wrap:!1,type:i.signalType});break;case"addParticipant":Nbt(i.actor,i.actor,i.description,i.draw);break;case"createParticipant":if(ws.records.actors[i.actor])throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");ws.records.lastCreated=i.actor,Nbt(i.actor,i.actor,i.description,i.draw),ws.records.createdActors[i.actor]=ws.records.messages.length;break;case"destroyParticipant":ws.records.lastDestroyed=i.actor,ws.records.destroyedActors[i.actor]=ws.records.messages.length;break;case"activeStart":Sf(i.actor,void 0,void 0,i.signalType);break;case"activeEnd":Sf(i.actor,void 0,void 0,i.signalType);break;case"addNote":fqt(i.actor,i.placement,i.text);break;case"addLinks":dqt(i.actor,i.text);break;case"addALink":IQe(i.actor,i.text);break;case"addProperties":gqt(i.actor,i.text);break;case"addDetails":bqt(i.actor,i.text);break;case"addMessage":if(ws.records.lastCreated){if(i.to!==ws.records.lastCreated)throw new Error("The created participant "+ws.records.lastCreated+" does not have an associated creating message after its declaration. Please check the sequence diagram.");ws.records.lastCreated=void 0}else if(ws.records.lastDestroyed){if(i.to!==ws.records.lastDestroyed&&i.from!==ws.records.lastDestroyed)throw new Error("The destroyed participant "+ws.records.lastDestroyed+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");ws.records.lastDestroyed=void 0}Sf(i.from,i.to,i.msg,i.signalType,i.activate);break;case"boxStart":fQe(i.boxData);break;case"boxEnd":OQe();break;case"loopStart":Sf(void 0,void 0,i.loopText,i.signalType);break;case"loopEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"rectStart":Sf(void 0,void 0,i.color,i.signalType);break;case"rectEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"optStart":Sf(void 0,void 0,i.optText,i.signalType);break;case"optEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"altStart":Sf(void 0,void 0,i.altText,i.signalType);break;case"else":Sf(void 0,void 0,i.altText,i.signalType);break;case"altEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"setAccTitle":og(i.text);break;case"parStart":Sf(void 0,void 0,i.parText,i.signalType);break;case"and":Sf(void 0,void 0,i.parText,i.signalType);break;case"parEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"criticalStart":Sf(void 0,void 0,i.criticalText,i.signalType);break;case"option":Sf(void 0,void 0,i.optionText,i.signalType);break;case"criticalEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"breakStart":Sf(void 0,void 0,i.breakText,i.signalType);break;case"breakEnd":Sf(void 0,void 0,void 0,i.signalType);break}},mqt={addActor:Nbt,addMessage:gQe,addSignal:Sf,addLinks:dqt,addDetails:bqt,addProperties:gqt,autoWrap:F9,setWrap:SQe,enableSequenceNumbers:EQe,disableSequenceNumbers:TQe,showSequenceNumbers:CQe,getMessages:wQe,getActors:vQe,getCreatedActors:yQe,getDestroyedActors:xQe,getActor:bB,getActorKeys:kQe,getActorProperty:NQe,getAccTitle:Xg,getBoxes:mQe,getDiagramTitle:Zg,setDiagramTitle:S2,getConfig:()=>Re().sequence,clear:_Qe,parseMessage:AQe,parseBoxData:LQe,LINETYPE:wB,ARROWTYPE:DQe,PLACEMENT:MQe,addNote:fqt,setAccTitle:og,apply:wqt,setAccDescription:Qg,getAccDescription:Jg,hasAtLeastOneBox:pQe,hasAtLeastOneBoxWithTitle:bQe},PQe=i=>`.actor { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + + text.actor > tspan { + fill: ${i.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${i.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${i.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${i.signalColor}; + } + + #arrowhead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .sequenceNumber { + fill: ${i.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${i.signalColor}; + } + + #crosshead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .messageText { + fill: ${i.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${i.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${i.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${i.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation1 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation2 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${i.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + .actor-man circle, line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + stroke-width: 2px; + } +`,B9=18*2,vqt="actor-top",yqt="actor-bottom",Fbt=function(i,a){return LY(i,a)},FQe=function(i,a,f,g,w){if(a.links===void 0||a.links===null||Object.keys(a.links).length===0)return{height:0,width:0};const v=a.links,b=a.actorCnt,E=a.rectData;var S="none";w&&(S="block !important");const _=i.append("g");_.attr("id","actor"+b+"_popup"),_.attr("class","actorPopupMenu"),_.attr("display",S);var M="";E.class!==void 0&&(M=" "+E.class);let F=E.width>f?E.width:f;const R=_.append("rect");if(R.attr("class","actorPopupMenuPanel"+M),R.attr("x",E.x),R.attr("y",E.height),R.attr("fill",E.fill),R.attr("stroke",E.stroke),R.attr("width",F),R.attr("height",E.height),R.attr("rx",E.rx),R.attr("ry",E.ry),v!=null){var B=20;for(let nt in v){var z=_.append("a"),Y=h8(v[nt]);z.attr("xlink:href",Y),z.attr("target","_blank"),ZQe(g)(nt,z,E.x+10,E.height+B,F,20,{class:"actor"},g),B+=30}}return R.attr("height",B),{height:E.height+B,width:F}},BQe=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},DD=function(i,a){let f=0,g=0;const w=a.text.split(ei.lineBreakRegex),[v,b]=k9(a.fontSize);let E=[],S=0,_=()=>a.y;if(a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0)switch(a.valign){case"top":case"start":_=()=>Math.round(a.y+a.textMargin);break;case"middle":case"center":_=()=>Math.round(a.y+(f+g+a.textMargin)/2);break;case"bottom":case"end":_=()=>Math.round(a.y+(f+g+2*a.textMargin)-a.textMargin);break}if(a.anchor!==void 0&&a.textMargin!==void 0&&a.width!==void 0)switch(a.anchor){case"left":case"start":a.x=Math.round(a.x+a.textMargin),a.anchor="start",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"middle":case"center":a.x=Math.round(a.x+a.width/2),a.anchor="middle",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"right":case"end":a.x=Math.round(a.x+a.width-a.textMargin),a.anchor="end",a.dominantBaseline="middle",a.alignmentBaseline="middle";break}for(let[M,F]of w.entries()){a.textMargin!==void 0&&a.textMargin===0&&v!==void 0&&(S=M*v);const R=i.append("text");R.attr("x",a.x),R.attr("y",_()),a.anchor!==void 0&&R.attr("text-anchor",a.anchor).attr("dominant-baseline",a.dominantBaseline).attr("alignment-baseline",a.alignmentBaseline),a.fontFamily!==void 0&&R.style("font-family",a.fontFamily),b!==void 0&&R.style("font-size",b),a.fontWeight!==void 0&&R.style("font-weight",a.fontWeight),a.fill!==void 0&&R.attr("fill",a.fill),a.class!==void 0&&R.attr("class",a.class),a.dy!==void 0?R.attr("dy",a.dy):S!==0&&R.attr("dy",S);const B=F||kFt;if(a.tspan){const z=R.append("tspan");z.attr("x",a.x),a.fill!==void 0&&z.attr("fill",a.fill),z.text(B)}else R.text(B);a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0&&(g+=(R._groups||R)[0][0].getBBox().height,f=g),E.push(R)}return E},xqt=function(i,a){function f(w,v,b,E,S){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-S)+" "+(w+b-S*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");return g.attr("points",f(a.x,a.y,a.width,a.height,7)),g.attr("class","labelBox"),a.y=a.y+a.height/2,DD(i,a),g};let f4=-1;const kqt=(i,a,f,g)=>{i.select&&f.forEach(w=>{const v=a[w],b=i.select("#actor"+v.actorCnt);!g.mirrorActors&&v.stopy?b.attr("y2",v.stopy+v.height/2):g.mirrorActors&&b.attr("y2",v.stopy)})},RQe=function(i,a,f,g){const w=g?a.stopy:a.starty,v=a.x+a.width/2,b=w+5,E=i.append("g").lower();var S=E;g||(f4++,Object.keys(a.links||{}).length&&!f.forceMenus&&S.attr("onclick",BQe(`actor${f4}_popup`)).attr("cursor","pointer"),S.append("line").attr("id","actor"+f4).attr("x1",v).attr("y1",b).attr("x2",v).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),S=E.append("g"),a.actorCnt=f4,a.links!=null&&S.attr("id","root-"+f4));const _=_9();var M="actor";a.properties!=null&&a.properties.class?M=a.properties.class:_.fill="#eaeaea",g?M+=` ${yqt}`:M+=` ${vqt}`,_.x=a.x,_.y=w,_.width=a.width,_.height=a.height,_.class=M,_.rx=3,_.ry=3;const F=Fbt(S,_);if(a.rectData=_,a.properties!=null&&a.properties.icon){const B=a.properties.icon.trim();B.charAt(0)==="@"?KRe(S,_.x+_.width-20,_.y+10,B.substr(1)):GRe(S,_.x+_.width-20,_.y+10,B)}Bbt(f)(a.description,S,_.x,_.y,_.width,_.height,{class:"actor"},f);let R=a.height;if(F.node){const B=F.node().getBBox();a.height=B.height,R=B.height}return R},jQe=function(i,a,f,g){const w=g?a.stopy:a.starty,v=a.x+a.width/2,b=w+80;i.lower(),g||(f4++,i.append("line").attr("id","actor"+f4).attr("x1",v).attr("y1",b).attr("x2",v).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),a.actorCnt=f4);const E=i.append("g");let S="actor-man";g?S+=` ${yqt}`:S+=` ${vqt}`,E.attr("class",S);const _=_9();_.x=a.x,_.y=w,_.fill="#eaeaea",_.width=a.width,_.height=a.height,_.class="actor",_.rx=3,_.ry=3,E.append("line").attr("id","actor-man-torso"+f4).attr("x1",v).attr("y1",w+25).attr("x2",v).attr("y2",w+45),E.append("line").attr("id","actor-man-arms"+f4).attr("x1",v-B9/2).attr("y1",w+33).attr("x2",v+B9/2).attr("y2",w+33),E.append("line").attr("x1",v-B9/2).attr("y1",w+60).attr("x2",v).attr("y2",w+45),E.append("line").attr("x1",v).attr("y1",w+45).attr("x2",v+B9/2-2).attr("y2",w+60);const M=E.append("circle");M.attr("cx",a.x+a.width/2),M.attr("cy",w+10),M.attr("r",15),M.attr("width",a.width),M.attr("height",a.height);const F=E.node().getBBox();return a.height=F.height,Bbt(f)(a.description,E,_.x,_.y+35,_.width,_.height,{class:"actor"},f),a.height},$Qe=function(i,a,f,g){switch(a.type){case"actor":return jQe(i,a,f,g);case"participant":return RQe(i,a,f,g)}},zQe=function(i,a,f){const w=i.append("g");Eqt(w,a),a.name&&Bbt(f)(a.name,w,a.x,a.y+(a.textMaxHeight||0)/2,a.width,0,{class:"text"},f),w.lower()},qQe=function(i){return i.append("g")},HQe=function(i,a,f,g,w){const v=_9(),b=a.anchored;v.x=a.startx,v.y=a.starty,v.class="activation"+w%3,v.width=a.stopx-a.startx,v.height=f-a.starty,Fbt(b,v)},VQe=function(i,a,f,g){const{boxMargin:w,boxTextMargin:v,labelBoxHeight:b,labelBoxWidth:E,messageFontFamily:S,messageFontSize:_,messageFontWeight:M}=g,F=i.append("g"),R=function(Y,nt,ot,ft){return F.append("line").attr("x1",Y).attr("y1",nt).attr("x2",ot).attr("y2",ft).attr("class","loopLine")};R(a.startx,a.starty,a.stopx,a.starty),R(a.stopx,a.starty,a.stopx,a.stopy),R(a.startx,a.stopy,a.stopx,a.stopy),R(a.startx,a.starty,a.startx,a.stopy),a.sections!==void 0&&a.sections.forEach(function(Y){R(a.startx,Y.y,a.stopx,Y.y).style("stroke-dasharray","3, 3")});let B=tpt();B.text=f,B.x=a.startx,B.y=a.starty,B.fontFamily=S,B.fontSize=_,B.fontWeight=M,B.anchor="middle",B.valign="middle",B.tspan=!1,B.width=E||50,B.height=b||20,B.textMargin=v,B.class="labelText",xqt(F,B),B=Tqt(),B.text=a.title,B.x=a.startx+E/2+(a.stopx-a.startx)/2,B.y=a.starty+w+v,B.anchor="middle",B.valign="middle",B.textMargin=v,B.class="loopText",B.fontFamily=S,B.fontSize=_,B.fontWeight=M,B.wrap=!0;let z=DD(F,B);return a.sectionTitles!==void 0&&a.sectionTitles.forEach(function(Y,nt){if(Y.message){B.text=Y.message,B.x=a.startx+(a.stopx-a.startx)/2,B.y=a.sections[nt].y+w+v,B.class="loopText",B.anchor="middle",B.valign="middle",B.tspan=!1,B.fontFamily=S,B.fontSize=_,B.fontWeight=M,B.wrap=a.wrap,z=DD(F,B);let ot=Math.round(z.map(ft=>(ft._groups||ft)[0][0].getBBox().height).reduce((ft,wt)=>ft+wt));a.sections[nt].height+=ot-(w+v)}}),a.height=Math.round(a.stopy-a.starty),F},Eqt=function(i,a){sRt(i,a)},UQe=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},GQe=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},KQe=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},WQe=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},YQe=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},XQe=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},QQe=function(i){i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},Tqt=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},JQe=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Bbt=function(){function i(w,v,b,E,S,_,M){const F=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("text-anchor","middle").text(w);g(F,M)}function a(w,v,b,E,S,_,M,F){const{actorFontSize:R,actorFontFamily:B,actorFontWeight:z}=F,[Y,nt]=k9(R),ot=w.split(ei.lineBreakRegex);for(let ft=0;fti.height||0))+(this.loops.length===0?0:this.loops.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.messages.length===0?0:this.messages.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.notes.length===0?0:this.notes.map(i=>i.height||0).reduce((i,a)=>i+a))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(i){this.boxes.push(i)},addActor:function(i){this.actors.push(i)},addLoop:function(i){this.loops.push(i)},addMessage:function(i){this.messages.push(i)},addNote:function(i){this.notes.push(i)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Sqt(Re())},updateVal:function(i,a,f,g){i[a]===void 0?i[a]=f:i[a]=g(f,i[a])},updateBounds:function(i,a,f,g){const w=this;let v=0;function b(E){return function(_){v++;const M=w.sequenceItems.length-v+1;w.updateVal(_,"starty",a-M*bn.boxMargin,Math.min),w.updateVal(_,"stopy",g+M*bn.boxMargin,Math.max),w.updateVal(Wr.data,"startx",i-M*bn.boxMargin,Math.min),w.updateVal(Wr.data,"stopx",f+M*bn.boxMargin,Math.max),E!=="activation"&&(w.updateVal(_,"startx",i-M*bn.boxMargin,Math.min),w.updateVal(_,"stopx",f+M*bn.boxMargin,Math.max),w.updateVal(Wr.data,"starty",a-M*bn.boxMargin,Math.min),w.updateVal(Wr.data,"stopy",g+M*bn.boxMargin,Math.max))}}this.sequenceItems.forEach(b()),this.activations.forEach(b("activation"))},insert:function(i,a,f,g){const w=ei.getMin(i,f),v=ei.getMax(i,f),b=ei.getMin(a,g),E=ei.getMax(a,g);this.updateVal(Wr.data,"startx",w,Math.min),this.updateVal(Wr.data,"starty",b,Math.min),this.updateVal(Wr.data,"stopx",v,Math.max),this.updateVal(Wr.data,"stopy",E,Math.max),this.updateBounds(w,b,v,E)},newActivation:function(i,a,f){const g=f[i.from.actor],w=bX(i.from.actor).length||0,v=g.x+g.width/2+(w-1)*bn.activationWidth/2;this.activations.push({startx:v,starty:this.verticalPos+2,stopx:v+bn.activationWidth,stopy:void 0,actor:i.from.actor,anchored:_f.anchorElement(a)})},endActivation:function(i){const a=this.activations.map(function(f){return f.actor}).lastIndexOf(i.from.actor);return this.activations.splice(a,1)[0]},createLoop:function(i={message:void 0,wrap:!1,width:void 0},a){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:i.message,wrap:i.wrap,width:i.width,height:0,fill:a}},newLoop:function(i={message:void 0,wrap:!1,width:void 0},a){this.sequenceItems.push(this.createLoop(i,a))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},addSectionToLoop:function(i){const a=this.sequenceItems.pop();a.sections=a.sections||[],a.sectionTitles=a.sectionTitles||[],a.sections.push({y:Wr.getVerticalPos(),height:0}),a.sectionTitles.push(i),this.sequenceItems.push(a)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=ei.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},tJe=function(i,a){Wr.bumpVerticalPos(bn.boxMargin),a.height=bn.boxMargin,a.starty=Wr.getVerticalPos();const f=_9();f.x=a.startx,f.y=a.starty,f.width=a.width||bn.width,f.class="note";const g=i.append("g"),w=_f.drawRect(g,f),v=tpt();v.x=a.startx,v.y=a.starty,v.width=f.width,v.dy="1em",v.text=a.message,v.class="noteText",v.fontFamily=bn.noteFontFamily,v.fontSize=bn.noteFontSize,v.fontWeight=bn.noteFontWeight,v.anchor=bn.noteAlign,v.textMargin=bn.noteMargin,v.valign="center";const b=DD(g,v),E=Math.round(b.map(S=>(S._groups||S)[0][0].getBBox().height).reduce((S,_)=>S+_));w.attr("height",E+2*bn.noteMargin),a.height+=E+2*bn.noteMargin,Wr.bumpVerticalPos(E+2*bn.noteMargin),a.stopy=a.starty+E+2*bn.noteMargin,a.stopx=a.startx+f.width,Wr.insert(a.startx,a.starty,a.stopx,a.stopy),Wr.models.addNote(a)},R9=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight}),MD=i=>({fontFamily:i.noteFontFamily,fontSize:i.noteFontSize,fontWeight:i.noteFontWeight}),Rbt=i=>({fontFamily:i.actorFontFamily,fontSize:i.actorFontSize,fontWeight:i.actorFontWeight});function eJe(i,a){Wr.bumpVerticalPos(10);const{startx:f,stopx:g,message:w}=a,v=ei.splitBreaks(w).length,b=uo.calculateTextDimensions(w,R9(bn)),E=b.height/v;a.height+=E,Wr.bumpVerticalPos(E);let S,_=b.height-10;const M=b.width;if(f===g){S=Wr.getVerticalPos()+_,bn.rightAngles||(_+=bn.boxMargin,S=Wr.getVerticalPos()+_),_+=30;const F=ei.getMax(M/2,bn.width/2);Wr.insert(f-F,Wr.getVerticalPos()-10+_,g+F,Wr.getVerticalPos()+30+_)}else _+=bn.boxMargin,S=Wr.getVerticalPos()+_,Wr.insert(f,S-10,g,S);return Wr.bumpVerticalPos(_),a.height+=_,a.stopy=a.starty+a.height,Wr.insert(a.fromBounds,a.starty,a.toBounds,a.stopy),S}const nJe=function(i,a,f,g){const{startx:w,stopx:v,starty:b,message:E,type:S,sequenceIndex:_,sequenceVisible:M}=a,F=uo.calculateTextDimensions(E,R9(bn)),R=tpt();R.x=w,R.y=b+10,R.width=v-w,R.class="messageText",R.dy="1em",R.text=E,R.fontFamily=bn.messageFontFamily,R.fontSize=bn.messageFontSize,R.fontWeight=bn.messageFontWeight,R.anchor=bn.messageAlign,R.valign="center",R.textMargin=bn.wrapPadding,R.tspan=!1,DD(i,R);const B=F.width;let z;w===v?bn.rightAngles?z=i.append("path").attr("d",`M ${w},${f} H ${w+ei.getMax(bn.width/2,B/2)} V ${f+25} H ${w}`):z=i.append("path").attr("d","M "+w+","+f+" C "+(w+60)+","+(f-10)+" "+(w+60)+","+(f+30)+" "+w+","+(f+20)):(z=i.append("line"),z.attr("x1",w),z.attr("y1",f),z.attr("x2",v),z.attr("y2",f)),S===g.db.LINETYPE.DOTTED||S===g.db.LINETYPE.DOTTED_CROSS||S===g.db.LINETYPE.DOTTED_POINT||S===g.db.LINETYPE.DOTTED_OPEN?(z.style("stroke-dasharray","3, 3"),z.attr("class","messageLine1")):z.attr("class","messageLine0");let Y="";bn.arrowMarkerAbsolute&&(Y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Y=Y.replace(/\(/g,"\\("),Y=Y.replace(/\)/g,"\\)")),z.attr("stroke-width",2),z.attr("stroke","none"),z.style("fill","none"),(S===g.db.LINETYPE.SOLID||S===g.db.LINETYPE.DOTTED)&&z.attr("marker-end","url("+Y+"#arrowhead)"),(S===g.db.LINETYPE.SOLID_POINT||S===g.db.LINETYPE.DOTTED_POINT)&&z.attr("marker-end","url("+Y+"#filled-head)"),(S===g.db.LINETYPE.SOLID_CROSS||S===g.db.LINETYPE.DOTTED_CROSS)&&z.attr("marker-end","url("+Y+"#crosshead)"),(M||bn.showSequenceNumbers)&&(z.attr("marker-start","url("+Y+"#sequencenumber)"),i.append("text").attr("x",w).attr("y",f+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(_))},rJe=function(i,a,f,g,w,v,b){let E=0,S=0,_,M=0;for(const F of g){const R=a[F],B=R.box;_&&_!=B&&(b||Wr.models.addBox(_),S+=bn.boxMargin+_.margin),B&&B!=_&&(b||(B.x=E+S,B.y=w),S+=B.margin),R.width=R.width||bn.width,R.height=ei.getMax(R.height||bn.height,bn.height),R.margin=R.margin||bn.actorMargin,M=ei.getMax(M,R.height),f[R.name]&&(S+=R.width/2),R.x=E+S,R.starty=Wr.getVerticalPos(),Wr.insert(R.x,w,R.x+R.width,R.height),E+=R.width+S,R.box&&(R.box.width=E+B.margin-R.box.x),S=R.margin,_=R.box,Wr.models.addActor(R)}_&&!b&&Wr.models.addBox(_),Wr.bumpVerticalPos(M)},jbt=function(i,a,f,g){if(g){let w=0;Wr.bumpVerticalPos(bn.boxMargin*2);for(const v of f){const b=a[v];b.stopy||(b.stopy=Wr.getVerticalPos());const E=_f.drawActor(i,b,bn,!0);w=ei.getMax(w,E)}Wr.bumpVerticalPos(w+bn.boxMargin)}else for(const w of f){const v=a[w];_f.drawActor(i,v,bn,!1)}},Cqt=function(i,a,f,g){let w=0,v=0;for(const b of f){const E=a[b],S=oJe(E),_=_f.drawPopup(i,E,S,bn,bn.forceMenus,g);_.height>w&&(w=_.height),_.width+E.x>v&&(v=_.width+E.x)}return{maxHeight:w,maxWidth:v}},Sqt=function(i){Ld(bn,i),i.fontFamily&&(bn.actorFontFamily=bn.noteFontFamily=bn.messageFontFamily=i.fontFamily),i.fontSize&&(bn.actorFontSize=bn.noteFontSize=bn.messageFontSize=i.fontSize),i.fontWeight&&(bn.actorFontWeight=bn.noteFontWeight=bn.messageFontWeight=i.fontWeight)},bX=function(i){return Wr.activations.filter(function(a){return a.actor===i})},_qt=function(i,a){const f=a[i],g=bX(i),w=g.reduce(function(b,E){return ei.getMin(b,E.startx)},f.x+f.width/2-1),v=g.reduce(function(b,E){return ei.getMax(b,E.stopx)},f.x+f.width/2+1);return[w,v]};function d4(i,a,f,g,w){Wr.bumpVerticalPos(f);let v=g;if(a.id&&a.message&&i[a.id]){const b=i[a.id].width,E=R9(bn);a.message=uo.wrapLabel(`[${a.message}]`,b-2*bn.wrapPadding,E),a.width=b,a.wrap=!0;const S=uo.calculateTextDimensions(a.message,E),_=ei.getMax(S.height,bn.labelBoxHeight);v=g+_,Kt.debug(`${_} - ${a.message}`)}w(a),Wr.bumpVerticalPos(v)}function iJe(i,a,f,g,w,v,b){function E(_,M){_.x{xt.add(Ft.from),xt.add(Ft.to)}),z=z.filter(Ft=>xt.has(Ft))}rJe(_,M,F,z,0,Y,!1);const mt=hJe(Y,M,wt,g);_f.insertArrowHead(_),_f.insertArrowCrossHead(_),_f.insertArrowFilledHead(_),_f.insertSequenceNumber(_);function ct(xt,Ft){const Ct=Wr.endActivation(xt);Ct.starty+18>Ft&&(Ct.starty=Ft-6,Ft+=12),_f.drawActivation(_,Ct,Ft,bn,bX(xt.from.actor).length),Wr.insert(Ct.startx,Ft-10,Ct.stopx,Ft)}let rt=1,it=1;const gt=[],Q=[];Y.forEach(function(xt,Ft){let Ct,kt,Gt;switch(xt.type){case g.db.LINETYPE.NOTE:Wr.resetVerticalPos(),kt=xt.noteModel,tJe(_,kt);break;case g.db.LINETYPE.ACTIVE_START:Wr.newActivation(xt,_,M);break;case g.db.LINETYPE.ACTIVE_END:ct(xt,Wr.getVerticalPos());break;case g.db.LINETYPE.LOOP_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.LOOP_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"loop",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.RECT_START:d4(mt,xt,bn.boxMargin,bn.boxMargin,Fe=>Wr.newLoop(void 0,Fe.message));break;case g.db.LINETYPE.RECT_END:Ct=Wr.endLoop(),Q.push(Ct),Wr.models.addLoop(Ct),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos());break;case g.db.LINETYPE.OPT_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.OPT_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"opt",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.ALT_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.ALT_ELSE:d4(mt,xt,bn.boxMargin+bn.boxTextMargin,bn.boxMargin,Fe=>Wr.addSectionToLoop(Fe));break;case g.db.LINETYPE.ALT_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"alt",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.PAR_START:case g.db.LINETYPE.PAR_OVER_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe)),Wr.saveVerticalPos();break;case g.db.LINETYPE.PAR_AND:d4(mt,xt,bn.boxMargin+bn.boxTextMargin,bn.boxMargin,Fe=>Wr.addSectionToLoop(Fe));break;case g.db.LINETYPE.PAR_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"par",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.AUTONUMBER:rt=xt.message.start||rt,it=xt.message.step||it,xt.message.visible?g.db.enableSequenceNumbers():g.db.disableSequenceNumbers();break;case g.db.LINETYPE.CRITICAL_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.CRITICAL_OPTION:d4(mt,xt,bn.boxMargin+bn.boxTextMargin,bn.boxMargin,Fe=>Wr.addSectionToLoop(Fe));break;case g.db.LINETYPE.CRITICAL_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"critical",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.BREAK_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.BREAK_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"break",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;default:try{Gt=xt.msgModel,Gt.starty=Wr.getVerticalPos(),Gt.sequenceIndex=rt,Gt.sequenceVisible=g.db.showSequenceNumbers();const Fe=eJe(_,Gt);iJe(xt,Gt,Fe,Ft,M,F,R),gt.push({messageModel:Gt,lineStartY:Fe}),Wr.models.addMessage(Gt)}catch(Fe){Kt.error("error while drawing message",Fe)}}[g.db.LINETYPE.SOLID_OPEN,g.db.LINETYPE.DOTTED_OPEN,g.db.LINETYPE.SOLID,g.db.LINETYPE.DOTTED,g.db.LINETYPE.SOLID_CROSS,g.db.LINETYPE.DOTTED_CROSS,g.db.LINETYPE.SOLID_POINT,g.db.LINETYPE.DOTTED_POINT].includes(xt.type)&&(rt=rt+it)}),Kt.debug("createdActors",F),Kt.debug("destroyedActors",R),jbt(_,M,z,!1),gt.forEach(xt=>nJe(_,xt.messageModel,xt.lineStartY,g)),bn.mirrorActors&&jbt(_,M,z,!0),Q.forEach(xt=>_f.drawBackgroundRect(_,xt)),kqt(_,M,z,bn),Wr.models.boxes.forEach(function(xt){xt.height=Wr.getVerticalPos()-xt.y,Wr.insert(xt.x,xt.y,xt.x+xt.width,xt.height),xt.startx=xt.x,xt.starty=xt.y,xt.stopx=xt.startx+xt.width,xt.stopy=xt.starty+xt.height,xt.stroke="rgb(0,0,0, 0.5)",_f.drawBox(_,xt,bn)}),ot&&Wr.bumpVerticalPos(bn.boxMargin);const dt=Cqt(_,M,z,S),{bounds:K}=Wr.getBounds();let yt=K.stopy-K.starty;yt{const b=i[v];b.wrap&&(b.description=uo.wrapLabel(b.description,bn.width-2*bn.wrapPadding,Rbt(bn)));const E=uo.calculateTextDimensions(b.description,Rbt(bn));b.width=b.wrap?bn.width:ei.getMax(bn.width,E.width+2*bn.wrapPadding),b.height=b.wrap?ei.getMax(E.height,bn.height):bn.height,g=ei.getMax(g,b.height)});for(const v in a){const b=i[v];if(!b)continue;const E=i[b.nextActor];if(!E){const F=a[v]+bn.actorMargin-b.width/2;b.margin=ei.getMax(F,bn.actorMargin);continue}const _=a[v]+bn.actorMargin-b.width/2-E.width/2;b.margin=ei.getMax(_,bn.actorMargin)}let w=0;return f.forEach(v=>{const b=R9(bn);let E=v.actorKeys.reduce((M,F)=>M+=i[F].width+(i[F].margin||0),0);E-=2*bn.boxTextMargin,v.wrap&&(v.name=uo.wrapLabel(v.name,E-2*bn.wrapPadding,b));const S=uo.calculateTextDimensions(v.name,b);w=ei.getMax(S.height,w);const _=ei.getMax(E,S.width+2*bn.wrapPadding);if(v.margin=bn.boxTextMargin,E<_){const M=(_-E)/2;v.margin+=M}}),f.forEach(v=>v.textMaxHeight=w),ei.getMax(g,bn.height)}const uJe=function(i,a,f){const g=a[i.from].x,w=a[i.to].x,v=i.wrap&&i.message;let b=uo.calculateTextDimensions(v?uo.wrapLabel(i.message,bn.width,MD(bn)):i.message,MD(bn));const E={width:v?bn.width:ei.getMax(bn.width,b.width+2*bn.noteMargin),height:0,startx:a[i.from].x,stopx:0,starty:0,stopy:0,message:i.message};return i.placement===f.db.PLACEMENT.RIGHTOF?(E.width=v?ei.getMax(bn.width,b.width):ei.getMax(a[i.from].width/2+a[i.to].width/2,b.width+2*bn.noteMargin),E.startx=g+(a[i.from].width+bn.actorMargin)/2):i.placement===f.db.PLACEMENT.LEFTOF?(E.width=v?ei.getMax(bn.width,b.width+2*bn.noteMargin):ei.getMax(a[i.from].width/2+a[i.to].width/2,b.width+2*bn.noteMargin),E.startx=g-E.width+(a[i.from].width-bn.actorMargin)/2):i.to===i.from?(b=uo.calculateTextDimensions(v?uo.wrapLabel(i.message,ei.getMax(bn.width,a[i.from].width),MD(bn)):i.message,MD(bn)),E.width=v?ei.getMax(bn.width,a[i.from].width):ei.getMax(a[i.from].width,bn.width,b.width+2*bn.noteMargin),E.startx=g+(a[i.from].width-E.width)/2):(E.width=Math.abs(g+a[i.from].width/2-(w+a[i.to].width/2))+bn.actorMargin,E.startx=g2,F=Y=>E?-Y:Y;i.from===i.to?_=S:(i.activate&&!M&&(_+=F(bn.activationWidth/2-1)),[f.db.LINETYPE.SOLID_OPEN,f.db.LINETYPE.DOTTED_OPEN].includes(i.type)||(_+=F(3)));const R=[g,w,v,b],B=Math.abs(S-_);i.wrap&&i.message&&(i.message=uo.wrapLabel(i.message,ei.getMax(B+2*bn.wrapPadding,bn.width),R9(bn)));const z=uo.calculateTextDimensions(i.message,R9(bn));return{width:ei.getMax(i.wrap?0:z.width+2*bn.wrapPadding,B+2*bn.wrapPadding,bn.width),height:0,startx:S,stopx:_,starty:0,stopy:0,message:i.message,type:i.type,wrap:i.wrap,fromBounds:Math.min.apply(null,R),toBounds:Math.max.apply(null,R)}},hJe=function(i,a,f,g){const w={},v=[];let b,E,S;return i.forEach(function(_){switch(_.id=uo.random({length:10}),_.type){case g.db.LINETYPE.LOOP_START:case g.db.LINETYPE.ALT_START:case g.db.LINETYPE.OPT_START:case g.db.LINETYPE.PAR_START:case g.db.LINETYPE.PAR_OVER_START:case g.db.LINETYPE.CRITICAL_START:case g.db.LINETYPE.BREAK_START:v.push({id:_.id,msg:_.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case g.db.LINETYPE.ALT_ELSE:case g.db.LINETYPE.PAR_AND:case g.db.LINETYPE.CRITICAL_OPTION:_.message&&(b=v.pop(),w[b.id]=b,w[_.id]=b,v.push(b));break;case g.db.LINETYPE.LOOP_END:case g.db.LINETYPE.ALT_END:case g.db.LINETYPE.OPT_END:case g.db.LINETYPE.PAR_END:case g.db.LINETYPE.CRITICAL_END:case g.db.LINETYPE.BREAK_END:b=v.pop(),w[b.id]=b;break;case g.db.LINETYPE.ACTIVE_START:{const F=a[_.from?_.from.actor:_.to.actor],R=bX(_.from?_.from.actor:_.to.actor).length,B=F.x+F.width/2+(R-1)*bn.activationWidth/2,z={startx:B,stopx:B+bn.activationWidth,actor:_.from.actor,enabled:!0};Wr.activations.push(z)}break;case g.db.LINETYPE.ACTIVE_END:{const F=Wr.activations.map(R=>R.actor).lastIndexOf(_.from.actor);delete Wr.activations.splice(F,1)[0]}break}_.placement!==void 0?(E=uJe(_,a,g),_.noteModel=E,v.forEach(F=>{b=F,b.from=ei.getMin(b.from,E.startx),b.to=ei.getMax(b.to,E.startx+E.width),b.width=ei.getMax(b.width,Math.abs(b.from-b.to))-bn.labelBoxWidth})):(S=lJe(_,a,g),_.msgModel=S,S.startx&&S.stopx&&v.length>0&&v.forEach(F=>{if(b=F,S.startx===S.stopx){const R=a[_.from],B=a[_.to];b.from=ei.getMin(R.x-S.width/2,R.x-R.width/2,b.from),b.to=ei.getMax(B.x+S.width/2,B.x+R.width/2,b.to),b.width=ei.getMax(b.width,Math.abs(b.to-b.from))-bn.labelBoxWidth}else b.from=ei.getMin(S.startx,b.from),b.to=ei.getMax(S.stopx,b.to),b.width=ei.getMax(b.width,S.width)-bn.labelBoxWidth}))}),Wr.activations=[],Kt.debug("Loop type widths:",w),w},fJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:lQe,db:mqt,renderer:{bounds:Wr,drawActors:jbt,drawActorsPopup:Cqt,setConf:Sqt,draw:sJe},styles:PQe,init:({wrap:i})=>{mqt.setWrap(i)}}},Symbol.toStringTag,{value:"Module"}));var $bt=function(){var i=function(za,br,An,Nn){for(An=An||{},Nn=za.length;Nn--;An[za[Nn]]=br);return An},a=[1,17],f=[1,18],g=[1,19],w=[1,39],v=[1,40],b=[1,25],E=[1,23],S=[1,24],_=[1,31],M=[1,32],F=[1,33],R=[1,34],B=[1,35],z=[1,36],Y=[1,26],nt=[1,27],ot=[1,28],ft=[1,29],wt=[1,43],mt=[1,30],ct=[1,42],rt=[1,44],it=[1,41],gt=[1,45],Q=[1,9],dt=[1,8,9],K=[1,56],yt=[1,57],V=[1,58],Ot=[1,59],It=[1,60],jt=[1,61],xt=[1,62],Ft=[1,8,9,39],Ct=[1,74],kt=[1,8,9,12,13,21,37,39,42,59,60,61,62,63,64,65,70,72],Gt=[1,8,9,12,13,19,21,37,39,42,46,59,60,61,62,63,64,65,70,72,74,80,95,97,98],Fe=[13,74,80,95,97,98],Mt=[13,64,65,74,80,95,97,98],pn=[13,59,60,61,62,63,74,80,95,97,98],Ae=[1,93],ye=[1,110],tn=[1,108],sn=[1,102],be=[1,103],Ne=[1,104],Xt=[1,105],_e=[1,106],xe=[1,107],Mn=[1,109],ce=[1,8,9,37,39,42],Br=[1,8,9,21],we=[1,8,9,78],Fi=[1,8,9,21,73,74,78,80,81,82,83,84,85],mi={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,styleStatement:27,cssClassStatement:28,noteStatement:29,direction:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,namespaceIdentifier:36,STRUCT_START:37,classStatements:38,STRUCT_STOP:39,NAMESPACE:40,classIdentifier:41,STYLE_SEPARATOR:42,members:43,CLASS:44,ANNOTATION_START:45,ANNOTATION_END:46,MEMBER:47,SEPARATOR:48,relation:49,NOTE_FOR:50,noteText:51,NOTE:52,direction_tb:53,direction_bt:54,direction_rl:55,direction_lr:56,relationType:57,lineType:58,AGGREGATION:59,EXTENSION:60,COMPOSITION:61,DEPENDENCY:62,LOLLIPOP:63,LINE:64,DOTTED_LINE:65,CALLBACK:66,LINK:67,LINK_TARGET:68,CLICK:69,CALLBACK_NAME:70,CALLBACK_ARGS:71,HREF:72,STYLE:73,ALPHA:74,stylesOpt:75,CSSCLASS:76,style:77,COMMA:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,commentToken:86,textToken:87,graphCodeTokens:88,textNoTagsToken:89,TAGSTART:90,TAGEND:91,"==":92,"--":93,DEFAULT:94,MINUS:95,keywords:96,UNICODE_TEXT:97,BQUOTE_STR:98,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",37:"STRUCT_START",39:"STRUCT_STOP",40:"NAMESPACE",42:"STYLE_SEPARATOR",44:"CLASS",45:"ANNOTATION_START",46:"ANNOTATION_END",47:"MEMBER",48:"SEPARATOR",50:"NOTE_FOR",52:"NOTE",53:"direction_tb",54:"direction_bt",55:"direction_rl",56:"direction_lr",59:"AGGREGATION",60:"EXTENSION",61:"COMPOSITION",62:"DEPENDENCY",63:"LOLLIPOP",64:"LINE",65:"DOTTED_LINE",66:"CALLBACK",67:"LINK",68:"LINK_TARGET",69:"CLICK",70:"CALLBACK_NAME",71:"CALLBACK_ARGS",72:"HREF",73:"STYLE",74:"ALPHA",76:"CSSCLASS",78:"COMMA",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",88:"graphCodeTokens",90:"TAGSTART",91:"TAGEND",92:"==",93:"--",94:"DEFAULT",95:"MINUS",96:"keywords",97:"UNICODE_TEXT",98:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[36,2],[38,1],[38,2],[38,3],[23,1],[23,3],[23,4],[23,6],[41,2],[41,3],[25,4],[43,1],[43,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[29,3],[29,2],[30,1],[30,1],[30,1],[30,1],[49,3],[49,2],[49,2],[49,1],[57,1],[57,1],[57,1],[57,1],[57,1],[58,1],[58,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[28,3],[75,1],[75,3],[77,1],[77,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[86,1],[86,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[89,1],[89,1],[89,1],[89,1],[16,1],[16,1],[16,1],[16,1],[18,1],[51,1]],performAction:function(br,An,Nn,Bn,ke,pe,Je){var an=pe.length-1;switch(ke){case 8:this.$=pe[an-1];break;case 9:case 11:case 12:this.$=pe[an];break;case 10:case 13:this.$=pe[an-1]+pe[an];break;case 14:case 15:this.$=pe[an-1]+"~"+pe[an]+"~";break;case 16:Bn.addRelation(pe[an]);break;case 17:pe[an-1].title=Bn.cleanupLabel(pe[an]),Bn.addRelation(pe[an-1]);break;case 27:this.$=pe[an].trim(),Bn.setAccTitle(this.$);break;case 28:case 29:this.$=pe[an].trim(),Bn.setAccDescription(this.$);break;case 30:Bn.addClassesToNamespace(pe[an-3],pe[an-1]);break;case 31:Bn.addClassesToNamespace(pe[an-4],pe[an-1]);break;case 32:this.$=pe[an],Bn.addNamespace(pe[an]);break;case 33:this.$=[pe[an]];break;case 34:this.$=[pe[an-1]];break;case 35:pe[an].unshift(pe[an-2]),this.$=pe[an];break;case 37:Bn.setCssClass(pe[an-2],pe[an]);break;case 38:Bn.addMembers(pe[an-3],pe[an-1]);break;case 39:Bn.setCssClass(pe[an-5],pe[an-3]),Bn.addMembers(pe[an-5],pe[an-1]);break;case 40:this.$=pe[an],Bn.addClass(pe[an]);break;case 41:this.$=pe[an-1],Bn.addClass(pe[an-1]),Bn.setClassLabel(pe[an-1],pe[an]);break;case 42:Bn.addAnnotation(pe[an],pe[an-2]);break;case 43:this.$=[pe[an]];break;case 44:pe[an].push(pe[an-1]),this.$=pe[an];break;case 45:break;case 46:Bn.addMember(pe[an-1],Bn.cleanupLabel(pe[an]));break;case 47:break;case 48:break;case 49:this.$={id1:pe[an-2],id2:pe[an],relation:pe[an-1],relationTitle1:"none",relationTitle2:"none"};break;case 50:this.$={id1:pe[an-3],id2:pe[an],relation:pe[an-1],relationTitle1:pe[an-2],relationTitle2:"none"};break;case 51:this.$={id1:pe[an-3],id2:pe[an],relation:pe[an-2],relationTitle1:"none",relationTitle2:pe[an-1]};break;case 52:this.$={id1:pe[an-4],id2:pe[an],relation:pe[an-2],relationTitle1:pe[an-3],relationTitle2:pe[an-1]};break;case 53:Bn.addNote(pe[an],pe[an-1]);break;case 54:Bn.addNote(pe[an]);break;case 55:Bn.setDirection("TB");break;case 56:Bn.setDirection("BT");break;case 57:Bn.setDirection("RL");break;case 58:Bn.setDirection("LR");break;case 59:this.$={type1:pe[an-2],type2:pe[an],lineType:pe[an-1]};break;case 60:this.$={type1:"none",type2:pe[an],lineType:pe[an-1]};break;case 61:this.$={type1:pe[an-1],type2:"none",lineType:pe[an]};break;case 62:this.$={type1:"none",type2:"none",lineType:pe[an]};break;case 63:this.$=Bn.relationType.AGGREGATION;break;case 64:this.$=Bn.relationType.EXTENSION;break;case 65:this.$=Bn.relationType.COMPOSITION;break;case 66:this.$=Bn.relationType.DEPENDENCY;break;case 67:this.$=Bn.relationType.LOLLIPOP;break;case 68:this.$=Bn.lineType.LINE;break;case 69:this.$=Bn.lineType.DOTTED_LINE;break;case 70:case 76:this.$=pe[an-2],Bn.setClickEvent(pe[an-1],pe[an]);break;case 71:case 77:this.$=pe[an-3],Bn.setClickEvent(pe[an-2],pe[an-1]),Bn.setTooltip(pe[an-2],pe[an]);break;case 72:this.$=pe[an-2],Bn.setLink(pe[an-1],pe[an]);break;case 73:this.$=pe[an-3],Bn.setLink(pe[an-2],pe[an-1],pe[an]);break;case 74:this.$=pe[an-3],Bn.setLink(pe[an-2],pe[an-1]),Bn.setTooltip(pe[an-2],pe[an]);break;case 75:this.$=pe[an-4],Bn.setLink(pe[an-3],pe[an-2],pe[an]),Bn.setTooltip(pe[an-3],pe[an-1]);break;case 78:this.$=pe[an-3],Bn.setClickEvent(pe[an-2],pe[an-1],pe[an]);break;case 79:this.$=pe[an-4],Bn.setClickEvent(pe[an-3],pe[an-2],pe[an-1]),Bn.setTooltip(pe[an-3],pe[an]);break;case 80:this.$=pe[an-3],Bn.setLink(pe[an-2],pe[an]);break;case 81:this.$=pe[an-4],Bn.setLink(pe[an-3],pe[an-1],pe[an]);break;case 82:this.$=pe[an-4],Bn.setLink(pe[an-3],pe[an-1]),Bn.setTooltip(pe[an-3],pe[an]);break;case 83:this.$=pe[an-5],Bn.setLink(pe[an-4],pe[an-2],pe[an]),Bn.setTooltip(pe[an-4],pe[an-1]);break;case 84:this.$=pe[an-2],Bn.setCssStyle(pe[an-1],pe[an]);break;case 85:Bn.setCssClass(pe[an-1],pe[an]);break;case 86:this.$=[pe[an]];break;case 87:pe[an-2].push(pe[an]),this.$=pe[an-2];break;case 89:this.$=pe[an-1]+pe[an];break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:37,17:20,18:38,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,31:a,33:f,35:g,36:21,40:w,41:22,44:v,45:b,47:E,48:S,50:_,52:M,53:F,54:R,55:B,56:z,66:Y,67:nt,69:ot,73:ft,74:wt,76:mt,80:ct,95:rt,97:it,98:gt},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},i(Q,[2,5],{8:[1,46]}),{8:[1,47]},i(dt,[2,16],{21:[1,48]}),i(dt,[2,18]),i(dt,[2,19]),i(dt,[2,20]),i(dt,[2,21]),i(dt,[2,22]),i(dt,[2,23]),i(dt,[2,24]),i(dt,[2,25]),i(dt,[2,26]),{32:[1,49]},{34:[1,50]},i(dt,[2,29]),i(dt,[2,45],{49:51,57:54,58:55,13:[1,52],21:[1,53],59:K,60:yt,61:V,62:Ot,63:It,64:jt,65:xt}),{37:[1,63]},i(Ft,[2,36],{37:[1,65],42:[1,64]}),i(dt,[2,47]),i(dt,[2,48]),{16:66,74:wt,80:ct,95:rt,97:it},{16:37,17:67,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{16:37,17:68,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{16:37,17:69,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{74:[1,70]},{13:[1,71]},{16:37,17:72,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{13:Ct,51:73},i(dt,[2,55]),i(dt,[2,56]),i(dt,[2,57]),i(dt,[2,58]),i(kt,[2,11],{16:37,18:38,17:75,19:[1,76],74:wt,80:ct,95:rt,97:it,98:gt}),i(kt,[2,12],{19:[1,77]}),{15:78,16:79,74:wt,80:ct,95:rt,97:it},{16:37,17:80,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(Gt,[2,112]),i(Gt,[2,113]),i(Gt,[2,114]),i(Gt,[2,115]),i([1,8,9,12,13,19,21,37,39,42,59,60,61,62,63,64,65,70,72],[2,116]),i(Q,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,17:20,36:21,41:22,16:37,18:38,5:81,31:a,33:f,35:g,40:w,44:v,45:b,47:E,48:S,50:_,52:M,53:F,54:R,55:B,56:z,66:Y,67:nt,69:ot,73:ft,74:wt,76:mt,80:ct,95:rt,97:it,98:gt}),{5:82,10:5,16:37,17:20,18:38,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,31:a,33:f,35:g,36:21,40:w,41:22,44:v,45:b,47:E,48:S,50:_,52:M,53:F,54:R,55:B,56:z,66:Y,67:nt,69:ot,73:ft,74:wt,76:mt,80:ct,95:rt,97:it,98:gt},i(dt,[2,17]),i(dt,[2,27]),i(dt,[2,28]),{13:[1,84],16:37,17:83,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{49:85,57:54,58:55,59:K,60:yt,61:V,62:Ot,63:It,64:jt,65:xt},i(dt,[2,46]),{58:86,64:jt,65:xt},i(Fe,[2,62],{57:87,59:K,60:yt,61:V,62:Ot,63:It}),i(Mt,[2,63]),i(Mt,[2,64]),i(Mt,[2,65]),i(Mt,[2,66]),i(Mt,[2,67]),i(pn,[2,68]),i(pn,[2,69]),{8:[1,89],23:90,38:88,41:22,44:v},{16:91,74:wt,80:ct,95:rt,97:it},{43:92,47:Ae},{46:[1,94]},{13:[1,95]},{13:[1,96]},{70:[1,97],72:[1,98]},{21:ye,73:tn,74:sn,75:99,77:100,79:101,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn},{74:[1,111]},{13:Ct,51:112},i(dt,[2,54]),i(dt,[2,117]),i(kt,[2,13]),i(kt,[2,14]),i(kt,[2,15]),{37:[2,32]},{15:113,16:79,37:[2,9],74:wt,80:ct,95:rt,97:it},i(ce,[2,40],{11:114,12:[1,115]}),i(Q,[2,7]),{9:[1,116]},i(Br,[2,49]),{16:37,17:117,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{13:[1,119],16:37,17:118,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(Fe,[2,61],{57:120,59:K,60:yt,61:V,62:Ot,63:It}),i(Fe,[2,60]),{39:[1,121]},{23:90,38:122,41:22,44:v},{8:[1,123],39:[2,33]},i(Ft,[2,37],{37:[1,124]}),{39:[1,125]},{39:[2,43],43:126,47:Ae},{16:37,17:127,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(dt,[2,70],{13:[1,128]}),i(dt,[2,72],{13:[1,130],68:[1,129]}),i(dt,[2,76],{13:[1,131],71:[1,132]}),{13:[1,133]},i(dt,[2,84],{78:[1,134]}),i(we,[2,86],{79:135,21:ye,73:tn,74:sn,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn}),i(Fi,[2,88]),i(Fi,[2,90]),i(Fi,[2,91]),i(Fi,[2,92]),i(Fi,[2,93]),i(Fi,[2,94]),i(Fi,[2,95]),i(Fi,[2,96]),i(Fi,[2,97]),i(Fi,[2,98]),i(dt,[2,85]),i(dt,[2,53]),{37:[2,10]},i(ce,[2,41]),{13:[1,136]},{1:[2,4]},i(Br,[2,51]),i(Br,[2,50]),{16:37,17:137,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(Fe,[2,59]),i(dt,[2,30]),{39:[1,138]},{23:90,38:139,39:[2,34],41:22,44:v},{43:140,47:Ae},i(Ft,[2,38]),{39:[2,44]},i(dt,[2,42]),i(dt,[2,71]),i(dt,[2,73]),i(dt,[2,74],{68:[1,141]}),i(dt,[2,77]),i(dt,[2,78],{13:[1,142]}),i(dt,[2,80],{13:[1,144],68:[1,143]}),{21:ye,73:tn,74:sn,77:145,79:101,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn},i(Fi,[2,89]),{14:[1,146]},i(Br,[2,52]),i(dt,[2,31]),{39:[2,35]},{39:[1,147]},i(dt,[2,75]),i(dt,[2,79]),i(dt,[2,81]),i(dt,[2,82],{68:[1,148]}),i(we,[2,87],{79:135,21:ye,73:tn,74:sn,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn}),i(ce,[2,8]),i(Ft,[2,39]),i(dt,[2,83])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],78:[2,32],113:[2,10],116:[2,4],126:[2,44],139:[2,35]},parseError:function(br,An){if(An.recoverable)this.trace(br);else{var Nn=new Error(br);throw Nn.hash=An,Nn}},parse:function(br){var An=this,Nn=[0],Bn=[],ke=[null],pe=[],Je=this.table,an="",xn=0,qa=0,xo=2,ko=1,va=pe.slice.call(arguments,1),Ha=Object.create(this.lexer),ds={yy:{}};for(var Fu in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Fu)&&(ds.yy[Fu]=this.yy[Fu]);Ha.setInput(br,ds.yy),ds.yy.lexer=Ha,ds.yy.parser=this,typeof Ha.yylloc>"u"&&(Ha.yylloc={});var Zs=Ha.yylloc;pe.push(Zs);var d1=Ha.options&&Ha.options.ranges;typeof ds.yy.parseError=="function"?this.parseError=ds.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function I2(){var ea;return ea=Bn.pop()||Ha.lex()||ko,typeof ea!="number"&&(ea instanceof Array&&(Bn=ea,ea=Bn.pop()),ea=An.symbols_[ea]||ea),ea}for(var ll,Ic,wc,Ea,gu={},ta,fo,mc,ca;;){if(Ic=Nn[Nn.length-1],this.defaultActions[Ic]?wc=this.defaultActions[Ic]:((ll===null||typeof ll>"u")&&(ll=I2()),wc=Je[Ic]&&Je[Ic][ll]),typeof wc>"u"||!wc.length||!wc[0]){var ya="";ca=[];for(ta in Je[Ic])this.terminals_[ta]&&ta>xo&&ca.push("'"+this.terminals_[ta]+"'");Ha.showPosition?ya="Parse error on line "+(xn+1)+`: +`+Ha.showPosition()+` +Expecting `+ca.join(", ")+", got '"+(this.terminals_[ll]||ll)+"'":ya="Parse error on line "+(xn+1)+": Unexpected "+(ll==ko?"end of input":"'"+(this.terminals_[ll]||ll)+"'"),this.parseError(ya,{text:Ha.match,token:this.terminals_[ll]||ll,line:Ha.yylineno,loc:Zs,expected:ca})}if(wc[0]instanceof Array&&wc.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ic+", token: "+ll);switch(wc[0]){case 1:Nn.push(ll),ke.push(Ha.yytext),pe.push(Ha.yylloc),Nn.push(wc[1]),ll=null,qa=Ha.yyleng,an=Ha.yytext,xn=Ha.yylineno,Zs=Ha.yylloc;break;case 2:if(fo=this.productions_[wc[1]][1],gu.$=ke[ke.length-fo],gu._$={first_line:pe[pe.length-(fo||1)].first_line,last_line:pe[pe.length-1].last_line,first_column:pe[pe.length-(fo||1)].first_column,last_column:pe[pe.length-1].last_column},d1&&(gu._$.range=[pe[pe.length-(fo||1)].range[0],pe[pe.length-1].range[1]]),Ea=this.performAction.apply(gu,[an,qa,xn,ds.yy,wc[1],ke,pe].concat(va)),typeof Ea<"u")return Ea;fo&&(Nn=Nn.slice(0,-1*fo*2),ke=ke.slice(0,-1*fo),pe=pe.slice(0,-1*fo)),Nn.push(this.productions_[wc[1]][0]),ke.push(gu.$),pe.push(gu._$),mc=Je[Nn[Nn.length-2]][Nn[Nn.length-1]],Nn.push(mc);break;case 3:return!0}}return!0}},ga=function(){var za={EOF:1,parseError:function(An,Nn){if(this.yy.parser)this.yy.parser.parseError(An,Nn);else throw new Error(An)},setInput:function(br,An){return this.yy=An||this.yy||{},this._input=br,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var br=this._input[0];this.yytext+=br,this.yyleng++,this.offset++,this.match+=br,this.matched+=br;var An=br.match(/(?:\r\n?|\n).*/g);return An?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),br},unput:function(br){var An=br.length,Nn=br.split(/(?:\r\n?|\n)/g);this._input=br+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-An),this.offset-=An;var Bn=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Nn.length-1&&(this.yylineno-=Nn.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Nn?(Nn.length===Bn.length?this.yylloc.first_column:0)+Bn[Bn.length-Nn.length].length-Nn[0].length:this.yylloc.first_column-An},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-An]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(br){this.unput(this.match.slice(br))},pastInput:function(){var br=this.matched.substr(0,this.matched.length-this.match.length);return(br.length>20?"...":"")+br.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var br=this.match;return br.length<20&&(br+=this._input.substr(0,20-br.length)),(br.substr(0,20)+(br.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var br=this.pastInput(),An=new Array(br.length+1).join("-");return br+this.upcomingInput()+` +`+An+"^"},test_match:function(br,An){var Nn,Bn,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),Bn=br[0].match(/(?:\r\n?|\n).*/g),Bn&&(this.yylineno+=Bn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Bn?Bn[Bn.length-1].length-Bn[Bn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+br[0].length},this.yytext+=br[0],this.match+=br[0],this.matches=br,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(br[0].length),this.matched+=br[0],Nn=this.performAction.call(this,this.yy,this,An,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Nn)return Nn;if(this._backtrack){for(var pe in ke)this[pe]=ke[pe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var br,An,Nn,Bn;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),pe=0;peAn[0].length)){if(An=Nn,Bn=pe,this.options.backtrack_lexer){if(br=this.test_match(Nn,ke[pe]),br!==!1)return br;if(this._backtrack){An=!1;continue}else return!1}else if(!this.options.flex)break}return An?(br=this.test_match(An,ke[Bn]),br!==!1?br:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var An=this.next();return An||this.lex()},begin:function(An){this.conditionStack.push(An)},popState:function(){var An=this.conditionStack.length-1;return An>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(An){return An=this.conditionStack.length-1-Math.abs(An||0),An>=0?this.conditionStack[An]:"INITIAL"},pushState:function(An){this.begin(An)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(An,Nn,Bn,ke){switch(Bn){case 0:return 53;case 1:return 54;case 2:return 55;case 3:return 56;case 4:break;case 5:break;case 6:return this.begin("acc_title"),31;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),33;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 70;case 22:this.popState();break;case 23:return 71;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 73;case 28:return this.begin("namespace"),40;case 29:return this.popState(),8;case 30:break;case 31:return this.begin("namespace-body"),37;case 32:return this.popState(),39;case 33:return"EOF_IN_STRUCT";case 34:return 8;case 35:break;case 36:return"EDGE_STATE";case 37:return this.begin("class"),44;case 38:return this.popState(),8;case 39:break;case 40:return this.popState(),this.popState(),39;case 41:return this.begin("class-body"),37;case 42:return this.popState(),39;case 43:return"EOF_IN_STRUCT";case 44:return"EDGE_STATE";case 45:return"OPEN_IN_STRUCT";case 46:break;case 47:return"MEMBER";case 48:return 76;case 49:return 66;case 50:return 67;case 51:return 69;case 52:return 50;case 53:return 52;case 54:return 45;case 55:return 46;case 56:return 72;case 57:this.popState();break;case 58:return"GENERICTYPE";case 59:this.begin("generic");break;case 60:this.popState();break;case 61:return"BQUOTE_STR";case 62:this.begin("bqstring");break;case 63:return 68;case 64:return 68;case 65:return 68;case 66:return 68;case 67:return 60;case 68:return 60;case 69:return 62;case 70:return 62;case 71:return 61;case 72:return 59;case 73:return 63;case 74:return 64;case 75:return 65;case 76:return 21;case 77:return 42;case 78:return 95;case 79:return"DOT";case 80:return"PLUS";case 81:return 81;case 82:return 78;case 83:return 84;case 84:return 84;case 85:return 85;case 86:return"EQUALS";case 87:return"EQUALS";case 88:return 74;case 89:return 12;case 90:return 14;case 91:return"PUNCTUATION";case 92:return 80;case 93:return 97;case 94:return 83;case 95:return 83;case 96:return 9}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,32,33,34,35,36,37,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},namespace:{rules:[26,28,29,30,31,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},"class-body":{rules:[26,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},class:{rules:[26,38,39,40,41,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_descr:{rules:[9,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_title:{rules:[7,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},callback_args:{rules:[22,23,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},callback_name:{rules:[19,20,21,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},href:{rules:[26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},struct:{rules:[26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},generic:{rules:[26,48,49,50,51,52,53,54,55,56,57,58,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},bqstring:{rules:[26,48,49,50,51,52,53,54,55,56,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},string:{rules:[24,25,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,37,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96],inclusive:!0}}};return za}();mi.lexer=ga;function Ss(){this.yy={}}return Ss.prototype=mi,mi.Parser=Ss,new Ss}();$bt.parser=$bt;const Aqt=$bt,Lqt=["#","+","~","-",""];class Dqt{constructor(a,f){this.memberType=f,this.visibility="",this.classifier="";const g=Ef(a,Re());this.parseMember(g)}getDisplayDetails(){let a=this.visibility+kF(this.id);this.memberType==="method"&&(a+=`(${kF(this.parameters.trim())})`,this.returnType&&(a+=" : "+kF(this.returnType))),a=a.trim();const f=this.parseClassifier();return{displayText:a,cssStyle:f}}parseMember(a){let f="";if(this.memberType==="method"){const g=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/,w=a.match(g);if(w){const v=w[1]?w[1].trim():"";if(Lqt.includes(v)&&(this.visibility=v),this.id=w[2].trim(),this.parameters=w[3]?w[3].trim():"",f=w[4]?w[4].trim():"",this.returnType=w[5]?w[5].trim():"",f===""){const b=this.returnType.substring(this.returnType.length-1);b.match(/[$*]/)&&(f=b,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const g=a.length,w=a.substring(0,1),v=a.substring(g-1);Lqt.includes(w)&&(this.visibility=w),v.match(/[$*]/)&&(f=v),this.id=a.substring(this.visibility===""?0:1,f===""?g:g-1)}this.classifier=f}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}const wX="classId-";let zbt=[],Jl={},mX=[],Mqt=0,A8={},qbt=0,mB=[];const j9=i=>ei.sanitizeText(i,Re()),$9=function(i){const a=ei.sanitizeText(i,Re());let f="",g=a;if(a.indexOf("~")>0){const w=a.split("~");g=j9(w[0]),f=j9(w[1])}return{className:g,type:f}},dJe=function(i,a){const f=ei.sanitizeText(i,Re());a&&(a=j9(a));const{className:g}=$9(f);Jl[g].label=a},vX=function(i){const a=ei.sanitizeText(i,Re()),{className:f,type:g}=$9(a);if(Object.hasOwn(Jl,f))return;const w=ei.sanitizeText(f,Re());Jl[w]={id:w,type:g,label:w,cssClasses:[],methods:[],members:[],annotations:[],styles:[],domId:wX+w+"-"+Mqt},Mqt++},Iqt=function(i){const a=ei.sanitizeText(i,Re());if(a in Jl)return Jl[a].domId;throw new Error("Class not found: "+a)},gJe=function(){zbt=[],Jl={},mX=[],mB=[],mB.push(Nqt),A8={},qbt=0,ag()},pJe=function(i){return Jl[i]},bJe=function(){return Jl},wJe=function(){return zbt},mJe=function(){return mX},vJe=function(i){Kt.debug("Adding relation: "+JSON.stringify(i)),vX(i.id1),vX(i.id2),i.id1=$9(i.id1).className,i.id2=$9(i.id2).className,i.relationTitle1=ei.sanitizeText(i.relationTitle1.trim(),Re()),i.relationTitle2=ei.sanitizeText(i.relationTitle2.trim(),Re()),zbt.push(i)},yJe=function(i,a){const f=$9(i).className;Jl[f].annotations.push(a)},Oqt=function(i,a){vX(i);const f=$9(i).className,g=Jl[f];if(typeof a=="string"){const w=a.trim();w.startsWith("<<")&&w.endsWith(">>")?g.annotations.push(j9(w.substring(2,w.length-2))):w.indexOf(")")>0?g.methods.push(new Dqt(w,"method")):w&&g.members.push(new Dqt(w,"attribute"))}},xJe=function(i,a){Array.isArray(a)&&(a.reverse(),a.forEach(f=>Oqt(i,f)))},kJe=function(i,a){const f={id:`note${mX.length}`,class:a,text:i};mX.push(f)},EJe=function(i){return i.startsWith(":")&&(i=i.substring(1)),j9(i.trim())},Hbt=function(i,a){i.split(",").forEach(function(f){let g=f;f[0].match(/\d/)&&(g=wX+g),Jl[g]!==void 0&&Jl[g].cssClasses.push(a)})},TJe=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(Jl[f].tooltip=j9(a))})},CJe=function(i,a){return a?A8[a].classes[i].tooltip:Jl[i].tooltip},SJe=function(i,a,f){const g=Re();i.split(",").forEach(function(w){let v=w;w[0].match(/\d/)&&(v=wX+v),Jl[v]!==void 0&&(Jl[v].link=uo.formatUrl(a,g),g.securityLevel==="sandbox"?Jl[v].linkTarget="_top":typeof f=="string"?Jl[v].linkTarget=j9(f):Jl[v].linkTarget="_blank")}),Hbt(i,"clickable")},_Je=function(i,a,f){i.split(",").forEach(function(g){AJe(g,a,f),Jl[g].haveCallback=!0}),Hbt(i,"clickable")},AJe=function(i,a,f){const g=ei.sanitizeText(i,Re());if(Re().securityLevel!=="loose"||a===void 0)return;const v=g;if(Jl[v]!==void 0){const b=Iqt(v);let E=[];if(typeof f=="string"){E=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let S=0;S")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Tr(this).classed("hover",!1)})};mB.push(Nqt);let Pqt="TB";const yX={setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,getConfig:()=>Re().class,addClass:vX,bindFunctions:LJe,clear:gJe,getClass:pJe,getClasses:bJe,getNotes:mJe,addAnnotation:yJe,addNote:kJe,getRelations:wJe,addRelation:vJe,getDirection:()=>Pqt,setDirection:i=>{Pqt=i},addMember:Oqt,addMembers:xJe,cleanupLabel:EJe,lineType:DJe,relationType:MJe,setClickEvent:_Je,setCssClass:Hbt,setLink:SJe,getTooltip:CJe,setTooltip:TJe,lookUpDomId:Iqt,setDiagramTitle:S2,getDiagramTitle:Zg,setClassLabel:dJe,addNamespace:function(i){A8[i]===void 0&&(A8[i]={id:i,classes:{},children:{},domId:wX+i+"-"+qbt},qbt++)},addClassesToNamespace:function(i,a){if(A8[i]!==void 0)for(const f of a){const{className:g}=$9(f);Jl[g].parent=i,A8[i].classes[g]=Jl[g]}},getNamespace:function(i){return A8[i]},getNamespaces:function(){return A8},setCssStyle:function(i,a){const f=Jl[i];if(!(!a||!f))for(const g of a)g.includes(",")?f.styles.push(...g.split(",")):f.styles.push(g)}},Fqt=i=>`g.classGroup text { + fill: ${i.nodeBorder||i.classText}; + stroke: none; + font-family: ${i.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${i.classText}; +} +.edgeLabel .label rect { + fill: ${i.mainBkg}; +} +.label text { + fill: ${i.classText}; +} +.edgeLabel .label span { + background: ${i.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.classGroup line { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${i.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${i.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`;let Bqt=0;const IJe=function(i,a,f,g,w){const v=function(ft){switch(ft){case w.db.relationType.AGGREGATION:return"aggregation";case w.db.relationType.EXTENSION:return"extension";case w.db.relationType.COMPOSITION:return"composition";case w.db.relationType.DEPENDENCY:return"dependency";case w.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(ft=>!Number.isNaN(ft.y));const b=a.points,E=Ax().x(function(ft){return ft.x}).y(function(ft){return ft.y}).curve(wF),S=i.append("path").attr("d",E(b)).attr("id","edge"+Bqt).attr("class","relation");let _="";g.arrowMarkerAbsolute&&(_=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,_=_.replace(/\(/g,"\\("),_=_.replace(/\)/g,"\\)")),f.relation.lineType==1&&S.attr("class","relation dashed-line"),f.relation.lineType==10&&S.attr("class","relation dotted-line"),f.relation.type1!=="none"&&S.attr("marker-start","url("+_+"#"+v(f.relation.type1)+"Start)"),f.relation.type2!=="none"&&S.attr("marker-end","url("+_+"#"+v(f.relation.type2)+"End)");let M,F;const R=a.points.length;let B=uo.calcLabelPosition(a.points);M=B.x,F=B.y;let z,Y,nt,ot;if(R%2!==0&&R>1){let ft=uo.calcCardinalityPosition(f.relation.type1!=="none",a.points,a.points[0]),wt=uo.calcCardinalityPosition(f.relation.type2!=="none",a.points,a.points[R-1]);Kt.debug("cardinality_1_point "+JSON.stringify(ft)),Kt.debug("cardinality_2_point "+JSON.stringify(wt)),z=ft.x,Y=ft.y,nt=wt.x,ot=wt.y}if(f.title!==void 0){const ft=i.append("g").attr("class","classLabel"),wt=ft.append("text").attr("class","label").attr("x",M).attr("y",F).attr("fill","red").attr("text-anchor","middle").text(f.title);window.label=wt;const mt=wt.node().getBBox();ft.insert("rect",":first-child").attr("class","box").attr("x",mt.x-g.padding/2).attr("y",mt.y-g.padding/2).attr("width",mt.width+g.padding).attr("height",mt.height+g.padding)}Kt.info("Rendering relation "+JSON.stringify(f)),f.relationTitle1!==void 0&&f.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",z).attr("y",Y).attr("fill","black").attr("font-size","6").text(f.relationTitle1),f.relationTitle2!==void 0&&f.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",nt).attr("y",ot).attr("fill","black").attr("font-size","6").text(f.relationTitle2),Bqt++},OJe=function(i,a,f,g){Kt.debug("Rendering class ",a,f);const w=a.id,v={id:w,label:a.id,width:0,height:0},b=i.append("g").attr("id",g.db.lookUpDomId(w)).attr("class","classGroup");let E;a.link?E=b.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",f.textHeight+f.padding).attr("x",0):E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);let S=!0;a.annotations.forEach(function(wt){const mt=E.append("tspan").text("«"+wt+"»");S||mt.attr("dy",f.textHeight),S=!1});let _=Rqt(a);const M=E.append("tspan").text(_).attr("class","title");S||M.attr("dy",f.textHeight);const F=E.node().getBBox().height;let R,B,z;if(a.members.length>0){R=b.append("line").attr("x1",0).attr("y1",f.padding+F+f.dividerMargin/2).attr("y2",f.padding+F+f.dividerMargin/2);const wt=b.append("text").attr("x",f.padding).attr("y",F+f.dividerMargin+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.members.forEach(function(mt){jqt(wt,mt,S,f),S=!1}),B=wt.node().getBBox()}if(a.methods.length>0){z=b.append("line").attr("x1",0).attr("y1",f.padding+F+f.dividerMargin+B.height).attr("y2",f.padding+F+f.dividerMargin+B.height);const wt=b.append("text").attr("x",f.padding).attr("y",F+2*f.dividerMargin+B.height+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.methods.forEach(function(mt){jqt(wt,mt,S,f),S=!1})}const Y=b.node().getBBox();var nt=" ";a.cssClasses.length>0&&(nt=nt+a.cssClasses.join(" "));const ft=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",Y.width+2*f.padding).attr("height",Y.height+f.padding+.5*f.dividerMargin).attr("class",nt).node().getBBox().width;return E.node().childNodes.forEach(function(wt){wt.setAttribute("x",(ft-wt.getBBox().width)/2)}),a.tooltip&&E.insert("title").text(a.tooltip),R&&R.attr("x2",ft),z&&z.attr("x2",ft),v.width=ft,v.height=Y.height+f.padding+.5*f.dividerMargin,v},Rqt=function(i){let a=i.id;return i.type&&(a+="<"+kF(i.type)+">"),a},NJe=function(i,a,f,g){Kt.debug("Rendering note ",a,f);const w=a.id,v={id:w,text:a.text,width:0,height:0},b=i.append("g").attr("id",w).attr("class","classGroup");let E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);const S=JSON.parse(`"${a.text}"`).split(` +`);S.forEach(function(R){Kt.debug(`Adding line: ${R}`),E.append("tspan").text(R).attr("class","title").attr("dy",f.textHeight)});const _=b.node().getBBox(),F=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",_.width+2*f.padding).attr("height",_.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin).node().getBBox().width;return E.node().childNodes.forEach(function(R){R.setAttribute("x",(F-R.getBBox().width)/2)}),v.width=F,v.height=_.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin,v},jqt=function(i,a,f,g){const{displayText:w,cssStyle:v}=a.getDisplayDetails(),b=i.append("tspan").attr("x",g.padding).text(w);v!==""&&b.attr("style",a.cssStyle),f||b.attr("dy",g.textHeight)},Vbt={getClassTitleString:Rqt,drawClass:OJe,drawEdge:IJe,drawNote:NJe};let xX={};const kX=20,vB=function(i){const a=Object.entries(xX).find(f=>f[1].label===i);if(a)return a[0]},PJe=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},FJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Aqt,db:yX,renderer:{draw:function(i,a,f,g){const w=Re().class;xX={},Kt.info("Rendering diagram "+i);const v=Re().securityLevel;let b;v==="sandbox"&&(b=Tr("#i"+a));const E=Tr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=E.select(`[id='${a}']`);PJe(S);const _=new l1({multigraph:!0});_.setGraph({isMultiGraph:!0}),_.setDefaultEdgeLabel(function(){return{}});const M=g.db.getClasses(),F=Object.keys(M);for(const ft of F){const wt=M[ft],mt=Vbt.drawClass(S,wt,w,g);xX[mt.id]=mt,_.setNode(mt.id,mt),Kt.info("Org height: "+mt.height)}g.db.getRelations().forEach(function(ft){Kt.info("tjoho"+vB(ft.id1)+vB(ft.id2)+JSON.stringify(ft)),_.setEdge(vB(ft.id1),vB(ft.id2),{relation:ft},ft.title||"DEFAULT")}),g.db.getNotes().forEach(function(ft){Kt.debug(`Adding note: ${JSON.stringify(ft)}`);const wt=Vbt.drawNote(S,ft,w,g);xX[wt.id]=wt,_.setNode(wt.id,wt),ft.class&&ft.class in M&&_.setEdge(ft.id,vB(ft.class),{relation:{id1:ft.id,id2:ft.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),kD(_),_.nodes().forEach(function(ft){ft!==void 0&&_.node(ft)!==void 0&&(Kt.debug("Node "+ft+": "+JSON.stringify(_.node(ft))),E.select("#"+(g.db.lookUpDomId(ft)||ft)).attr("transform","translate("+(_.node(ft).x-_.node(ft).width/2)+","+(_.node(ft).y-_.node(ft).height/2)+" )"))}),_.edges().forEach(function(ft){ft!==void 0&&_.edge(ft)!==void 0&&(Kt.debug("Edge "+ft.v+" -> "+ft.w+": "+JSON.stringify(_.edge(ft))),Vbt.drawEdge(S,_.edge(ft),_.edge(ft).relation,w,g))});const z=S.node().getBBox(),Y=z.width+kX*2,nt=z.height+kX*2;sg(S,nt,Y,w.useMaxWidth);const ot=`${z.x-kX} ${z.y-kX} ${Y} ${nt}`;Kt.debug(`viewBox ${ot}`),S.attr("viewBox",ot)}},styles:Fqt,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,yX.clear()}}},Symbol.toStringTag,{value:"Module"})),Ubt=i=>ei.sanitizeText(i,Re());let Gbt={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const BJe=function(i,a,f,g){const w=Object.keys(i);Kt.info("keys:",w),Kt.info(i),w.forEach(function(v){var _,M;const b=i[v],S={shape:"rect",id:b.id,domId:b.domId,labelText:Ubt(b.id),labelStyle:"",style:"fill: none; stroke: black",padding:((_=Re().flowchart)==null?void 0:_.padding)??((M=Re().class)==null?void 0:M.padding)};a.setNode(b.id,S),$qt(b.classes,a,f,g,b.id),Kt.info("setNode",S)})},$qt=function(i,a,f,g,w){const v=Object.keys(i);Kt.info("keys:",v),Kt.info(i),v.filter(b=>i[b].parent==w).forEach(function(b){var z,Y;const E=i[b],S=E.cssClasses.join(" "),_=C2(E.styles),M=E.label??E.id,F=0,R="class_box",B={labelStyle:_.labelStyle,shape:R,labelText:Ubt(M),classData:E,rx:F,ry:F,class:S,style:_.style,id:E.id,domId:E.domId,tooltip:g.db.getTooltip(E.id,w)||"",haveCallback:E.haveCallback,link:E.link,width:E.type==="group"?500:void 0,type:E.type,padding:((z=Re().flowchart)==null?void 0:z.padding)??((Y=Re().class)==null?void 0:Y.padding)};a.setNode(E.id,B),w&&a.setParent(E.id,w),Kt.info("setNode",B)})},RJe=function(i,a,f,g){Kt.info(i),i.forEach(function(w,v){var Y,nt;const b=w,E="",S={labelStyle:"",style:""},_=b.text,M=0,F="note",R={labelStyle:S.labelStyle,shape:F,labelText:Ubt(_),noteData:b,rx:M,ry:M,class:E,style:S.style,id:b.id,domId:b.id,tooltip:"",type:"note",padding:((Y=Re().flowchart)==null?void 0:Y.padding)??((nt=Re().class)==null?void 0:nt.padding)};if(a.setNode(b.id,R),Kt.info("setNode",R),!b.class||!(b.class in g))return;const B=f+v,z={id:`edgeNote${B}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:Xw(Gbt.curve,Kg)};a.setEdge(b.id,b.class,z,B)})},jJe=function(i,a){const f=Re().flowchart;let g=0;i.forEach(function(w){var b;g++;const v={classes:"relation",pattern:w.relation.lineType==1?"dashed":"solid",id:`id_${w.id1}_${w.id2}_${g}`,arrowhead:w.type==="arrow_open"?"none":"normal",startLabelRight:w.relationTitle1==="none"?"":w.relationTitle1,endLabelLeft:w.relationTitle2==="none"?"":w.relationTitle2,arrowTypeStart:zqt(w.relation.type1),arrowTypeEnd:zqt(w.relation.type2),style:"fill:none",labelStyle:"",curve:Xw(f==null?void 0:f.curve,Kg)};if(Kt.info(v,w),w.style!==void 0){const E=C2(w.style);v.style=E.style,v.labelStyle=E.labelStyle}w.text=w.title,w.text===void 0?w.style!==void 0&&(v.arrowheadStyle="fill: #333"):(v.arrowheadStyle="fill: #333",v.labelpos="c",((b=Re().flowchart)==null?void 0:b.htmlLabels)??Re().htmlLabels?(v.labelType="html",v.label=''+w.text+""):(v.labelType="text",v.label=w.text.replace(ei.lineBreakRegex,` +`),w.style===void 0&&(v.style=v.style||"stroke: #333; stroke-width: 1.5px;fill:none"),v.labelStyle=v.labelStyle.replace("color:","fill:"))),a.setEdge(w.id1,w.id2,v,g)})},$Je=function(i){Gbt={...Gbt,...i}},zJe=async function(i,a,f,g){Kt.info("Drawing class - ",a);const w=Re().flowchart??Re().class,v=Re().securityLevel;Kt.info("config:",w);const b=(w==null?void 0:w.nodeSpacing)??50,E=(w==null?void 0:w.rankSpacing)??50,S=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:g.db.getDirection(),nodesep:b,ranksep:E,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),_=g.db.getNamespaces(),M=g.db.getClasses(),F=g.db.getRelations(),R=g.db.getNotes();Kt.info(F),BJe(_,S,a,g),$qt(M,S,a,g),jJe(F,S),RJe(R,S,F.length+1,M);let B;v==="sandbox"&&(B=Tr("#i"+a));const z=Tr(v==="sandbox"?B.nodes()[0].contentDocument.body:"body"),Y=z.select(`[id="${a}"]`),nt=z.select("#"+a+" g");if(await ebt(nt,S,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",a),uo.insertTitle(Y,"classTitleText",(w==null?void 0:w.titleTopMargin)??5,g.db.getDiagramTitle()),w8(S,Y,w==null?void 0:w.diagramPadding,w==null?void 0:w.useMaxWidth),!(w!=null&&w.htmlLabels)){const ot=v==="sandbox"?B.nodes()[0].contentDocument:document,ft=ot.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const wt of ft){const mt=wt.getBBox(),ct=ot.createElementNS("http://www.w3.org/2000/svg","rect");ct.setAttribute("rx",0),ct.setAttribute("ry",0),ct.setAttribute("width",mt.width),ct.setAttribute("height",mt.height),wt.insertBefore(ct,wt.firstChild)}}};function zqt(i){let a;switch(i){case 0:a="aggregation";break;case 1:a="extension";break;case 2:a="composition";break;case 3:a="dependency";break;case 4:a="lollipop";break;default:a="none"}return a}const qJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Aqt,db:yX,renderer:{setConf:$Je,draw:zJe},styles:Fqt,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,yX.clear()}}},Symbol.toStringTag,{value:"Module"}));var Kbt=function(){var i=function(xt,Ft,Ct,kt){for(Ct=Ct||{},kt=xt.length;kt--;Ct[xt[kt]]=Ft);return Ct},a=[1,2],f=[1,3],g=[1,4],w=[2,4],v=[1,9],b=[1,11],E=[1,15],S=[1,16],_=[1,17],M=[1,18],F=[1,30],R=[1,19],B=[1,20],z=[1,21],Y=[1,22],nt=[1,23],ot=[1,25],ft=[1,26],wt=[1,27],mt=[1,28],ct=[1,29],rt=[1,32],it=[1,33],gt=[1,34],Q=[1,35],dt=[1,31],K=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],yt=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],V=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Ot={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"-->",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(Ft,Ct,kt,Gt,Fe,Mt,pn){var Ae=Mt.length-1;switch(Fe){case 3:return Gt.setRootDoc(Mt[Ae]),Mt[Ae];case 4:this.$=[];break;case 5:Mt[Ae]!="nl"&&(Mt[Ae-1].push(Mt[Ae]),this.$=Mt[Ae-1]);break;case 6:case 7:this.$=Mt[Ae];break;case 8:this.$="nl";break;case 11:this.$=Mt[Ae];break;case 12:const be=Mt[Ae-1];be.description=Gt.trimColon(Mt[Ae]),this.$=be;break;case 13:this.$={stmt:"relation",state1:Mt[Ae-2],state2:Mt[Ae]};break;case 14:const Ne=Gt.trimColon(Mt[Ae]);this.$={stmt:"relation",state1:Mt[Ae-3],state2:Mt[Ae-1],description:Ne};break;case 18:this.$={stmt:"state",id:Mt[Ae-3],type:"default",description:"",doc:Mt[Ae-1]};break;case 19:var ye=Mt[Ae],tn=Mt[Ae-2].trim();if(Mt[Ae].match(":")){var sn=Mt[Ae].split(":");ye=sn[0],tn=[tn,sn[1]]}this.$={stmt:"state",id:ye,type:"default",description:tn};break;case 20:this.$={stmt:"state",id:Mt[Ae-3],type:"default",description:Mt[Ae-5],doc:Mt[Ae-1]};break;case 21:this.$={stmt:"state",id:Mt[Ae],type:"fork"};break;case 22:this.$={stmt:"state",id:Mt[Ae],type:"join"};break;case 23:this.$={stmt:"state",id:Mt[Ae],type:"choice"};break;case 24:this.$={stmt:"state",id:Gt.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:Mt[Ae-1].trim(),note:{position:Mt[Ae-2].trim(),text:Mt[Ae].trim()}};break;case 28:this.$=Mt[Ae].trim(),Gt.setAccTitle(this.$);break;case 29:case 30:this.$=Mt[Ae].trim(),Gt.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:Mt[Ae-1].trim(),classes:Mt[Ae].trim()};break;case 33:this.$={stmt:"applyClass",id:Mt[Ae-1].trim(),styleClass:Mt[Ae].trim()};break;case 34:Gt.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:Gt.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:Gt.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:Gt.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:Mt[Ae].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:Mt[Ae-2].trim(),classes:[Mt[Ae].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:Mt[Ae-2].trim(),classes:[Mt[Ae].trim()],type:"default",description:""};break}},table:[{3:1,4:a,5:f,6:g},{1:[3]},{3:5,4:a,5:f,6:g},{3:6,4:a,5:f,6:g},i([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],w,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:S,18:_,21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,5]),{9:36,10:12,11:13,12:14,15:E,16:S,18:_,21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,7]),i(K,[2,8]),i(K,[2,9]),i(K,[2,10]),i(K,[2,11],{13:[1,37],14:[1,38]}),i(K,[2,15]),{17:[1,39]},i(K,[2,17],{19:[1,40]}),{22:[1,41]},i(K,[2,21]),i(K,[2,22]),i(K,[2,23]),i(K,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},i(K,[2,27]),{33:[1,46]},{35:[1,47]},i(K,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},i(yt,[2,40],{51:[1,51]}),i(yt,[2,41],{51:[1,52]}),i(K,[2,34]),i(K,[2,35]),i(K,[2,36]),i(K,[2,37]),i(K,[2,6]),i(K,[2,12]),{12:53,23:F,50:dt},i(K,[2,16]),i(V,w,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},i(K,[2,28]),i(K,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},i(K,[2,13],{13:[1,63]}),{4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:S,18:_,20:[1,64],21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},i(K,[2,31]),i(K,[2,32]),i(K,[2,33]),i(yt,[2,42]),i(yt,[2,43]),i(K,[2,14]),i(K,[2,18]),i(V,w,{7:68}),i(K,[2,25]),i(K,[2,26]),{4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:S,18:_,20:[1,69],21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(Ft,Ct){if(Ct.recoverable)this.trace(Ft);else{var kt=new Error(Ft);throw kt.hash=Ct,kt}},parse:function(Ft){var Ct=this,kt=[0],Gt=[],Fe=[null],Mt=[],pn=this.table,Ae="",ye=0,tn=0,sn=2,be=1,Ne=Mt.slice.call(arguments,1),Xt=Object.create(this.lexer),_e={yy:{}};for(var xe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xe)&&(_e.yy[xe]=this.yy[xe]);Xt.setInput(Ft,_e.yy),_e.yy.lexer=Xt,_e.yy.parser=this,typeof Xt.yylloc>"u"&&(Xt.yylloc={});var Mn=Xt.yylloc;Mt.push(Mn);var ce=Xt.options&&Xt.options.ranges;typeof _e.yy.parseError=="function"?this.parseError=_e.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Br(){var ke;return ke=Gt.pop()||Xt.lex()||be,typeof ke!="number"&&(ke instanceof Array&&(Gt=ke,ke=Gt.pop()),ke=Ct.symbols_[ke]||ke),ke}for(var we,Fi,mi,ga,Ss={},za,br,An,Nn;;){if(Fi=kt[kt.length-1],this.defaultActions[Fi]?mi=this.defaultActions[Fi]:((we===null||typeof we>"u")&&(we=Br()),mi=pn[Fi]&&pn[Fi][we]),typeof mi>"u"||!mi.length||!mi[0]){var Bn="";Nn=[];for(za in pn[Fi])this.terminals_[za]&&za>sn&&Nn.push("'"+this.terminals_[za]+"'");Xt.showPosition?Bn="Parse error on line "+(ye+1)+`: +`+Xt.showPosition()+` +Expecting `+Nn.join(", ")+", got '"+(this.terminals_[we]||we)+"'":Bn="Parse error on line "+(ye+1)+": Unexpected "+(we==be?"end of input":"'"+(this.terminals_[we]||we)+"'"),this.parseError(Bn,{text:Xt.match,token:this.terminals_[we]||we,line:Xt.yylineno,loc:Mn,expected:Nn})}if(mi[0]instanceof Array&&mi.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Fi+", token: "+we);switch(mi[0]){case 1:kt.push(we),Fe.push(Xt.yytext),Mt.push(Xt.yylloc),kt.push(mi[1]),we=null,tn=Xt.yyleng,Ae=Xt.yytext,ye=Xt.yylineno,Mn=Xt.yylloc;break;case 2:if(br=this.productions_[mi[1]][1],Ss.$=Fe[Fe.length-br],Ss._$={first_line:Mt[Mt.length-(br||1)].first_line,last_line:Mt[Mt.length-1].last_line,first_column:Mt[Mt.length-(br||1)].first_column,last_column:Mt[Mt.length-1].last_column},ce&&(Ss._$.range=[Mt[Mt.length-(br||1)].range[0],Mt[Mt.length-1].range[1]]),ga=this.performAction.apply(Ss,[Ae,tn,ye,_e.yy,mi[1],Fe,Mt].concat(Ne)),typeof ga<"u")return ga;br&&(kt=kt.slice(0,-1*br*2),Fe=Fe.slice(0,-1*br),Mt=Mt.slice(0,-1*br)),kt.push(this.productions_[mi[1]][0]),Fe.push(Ss.$),Mt.push(Ss._$),An=pn[kt[kt.length-2]][kt[kt.length-1]],kt.push(An);break;case 3:return!0}}return!0}},It=function(){var xt={EOF:1,parseError:function(Ct,kt){if(this.yy.parser)this.yy.parser.parseError(Ct,kt);else throw new Error(Ct)},setInput:function(Ft,Ct){return this.yy=Ct||this.yy||{},this._input=Ft,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Ft=this._input[0];this.yytext+=Ft,this.yyleng++,this.offset++,this.match+=Ft,this.matched+=Ft;var Ct=Ft.match(/(?:\r\n?|\n).*/g);return Ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ft},unput:function(Ft){var Ct=Ft.length,kt=Ft.split(/(?:\r\n?|\n)/g);this._input=Ft+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ct),this.offset-=Ct;var Gt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),kt.length-1&&(this.yylineno-=kt.length-1);var Fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:kt?(kt.length===Gt.length?this.yylloc.first_column:0)+Gt[Gt.length-kt.length].length-kt[0].length:this.yylloc.first_column-Ct},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-Ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Ft){this.unput(this.match.slice(Ft))},pastInput:function(){var Ft=this.matched.substr(0,this.matched.length-this.match.length);return(Ft.length>20?"...":"")+Ft.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ft=this.match;return Ft.length<20&&(Ft+=this._input.substr(0,20-Ft.length)),(Ft.substr(0,20)+(Ft.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ft=this.pastInput(),Ct=new Array(Ft.length+1).join("-");return Ft+this.upcomingInput()+` +`+Ct+"^"},test_match:function(Ft,Ct){var kt,Gt,Fe;if(this.options.backtrack_lexer&&(Fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Fe.yylloc.range=this.yylloc.range.slice(0))),Gt=Ft[0].match(/(?:\r\n?|\n).*/g),Gt&&(this.yylineno+=Gt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Gt?Gt[Gt.length-1].length-Gt[Gt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ft[0].length},this.yytext+=Ft[0],this.match+=Ft[0],this.matches=Ft,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ft[0].length),this.matched+=Ft[0],kt=this.performAction.call(this,this.yy,this,Ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),kt)return kt;if(this._backtrack){for(var Mt in Fe)this[Mt]=Fe[Mt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ft,Ct,kt,Gt;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),Mt=0;MtCt[0].length)){if(Ct=kt,Gt=Mt,this.options.backtrack_lexer){if(Ft=this.test_match(kt,Fe[Mt]),Ft!==!1)return Ft;if(this._backtrack){Ct=!1;continue}else return!1}else if(!this.options.flex)break}return Ct?(Ft=this.test_match(Ct,Fe[Gt]),Ft!==!1?Ft:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ct=this.next();return Ct||this.lex()},begin:function(Ct){this.conditionStack.push(Ct)},popState:function(){var Ct=this.conditionStack.length-1;return Ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ct){return Ct=this.conditionStack.length-1-Math.abs(Ct||0),Ct>=0?this.conditionStack[Ct]:"INITIAL"},pushState:function(Ct){this.begin(Ct)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ct,kt,Gt,Fe){switch(Gt){case 0:return 40;case 1:return 44;case 2:return 45;case 3:return 46;case 4:return 47;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),16;case 13:return 17;case 14:this.popState();break;case 15:return this.begin("acc_title"),32;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),34;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),37;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),38;case 25:return this.popState(),39;case 26:return this.pushState("CLASS"),41;case 27:return this.popState(),this.pushState("CLASS_STYLE"),42;case 28:return this.popState(),43;case 29:return this.pushState("SCALE"),16;case 30:return 17;case 31:this.popState();break;case 32:this.pushState("STATE");break;case 33:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),24;case 34:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),25;case 35:return this.popState(),kt.yytext=kt.yytext.slice(0,-10).trim(),26;case 36:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),24;case 37:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),25;case 38:return this.popState(),kt.yytext=kt.yytext.slice(0,-10).trim(),26;case 39:return 44;case 40:return 45;case 41:return 46;case 42:return 47;case 43:this.pushState("STATE_STRING");break;case 44:return this.pushState("STATE_ID"),"AS";case 45:return this.popState(),"ID";case 46:this.popState();break;case 47:return"STATE_DESCR";case 48:return 18;case 49:this.popState();break;case 50:return this.popState(),this.pushState("struct"),19;case 51:break;case 52:return this.popState(),20;case 53:break;case 54:return this.begin("NOTE"),28;case 55:return this.popState(),this.pushState("NOTE_ID"),52;case 56:return this.popState(),this.pushState("NOTE_ID"),53;case 57:this.popState(),this.pushState("FLOATING_NOTE");break;case 58:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 59:break;case 60:return"NOTE_TEXT";case 61:return this.popState(),"ID";case 62:return this.popState(),this.pushState("NOTE_TEXT"),23;case 63:return this.popState(),kt.yytext=kt.yytext.substr(2).trim(),30;case 64:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),30;case 65:return 6;case 66:return 6;case 67:return 15;case 68:return 50;case 69:return 23;case 70:return kt.yytext=kt.yytext.trim(),13;case 71:return 14;case 72:return 27;case 73:return 51;case 74:return 5;case 75:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,32,39,40,41,42,51,52,53,54,68,69,70,71,72],inclusive:!1},FLOATING_NOTE_ID:{rules:[61],inclusive:!1},FLOATING_NOTE:{rules:[58,59,60],inclusive:!1},NOTE_TEXT:{rules:[63,64],inclusive:!1},NOTE_ID:{rules:[62],inclusive:!1},NOTE:{rules:[55,56,57],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,30,31],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[45],inclusive:!1},STATE_STRING:{rules:[46,47],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,33,34,35,36,37,38,43,44,48,49,50],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,50,54,65,66,67,68,69,70,71,73,74,75],inclusive:!0}}};return xt}();Ot.lexer=It;function jt(){this.yy={}}return jt.prototype=Ot,Ot.Parser=jt,new jt}();Kbt.parser=Kbt;const qqt=Kbt,HJe="LR",VJe="TB",EX="state",Wbt="relation",UJe="classDef",GJe="applyClass",yB="default",Hqt="divider",Ybt="[*]",Vqt="start",Uqt=Ybt,Gqt="end",Kqt="color",Wqt="fill",KJe="bgFill",WJe=",";function Yqt(){return{}}let Xqt=HJe,TX=[],xB=Yqt();const Qqt=()=>({relations:[],states:{},documents:{}});let CX={root:Qqt()},lg=CX.root,kB=0,Jqt=0;const YJe={LINE:0,DOTTED_LINE:1},XJe={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},SX=i=>JSON.parse(JSON.stringify(i)),QJe=i=>{Kt.info("Setting root doc",i),TX=i},JJe=()=>TX,_X=(i,a,f)=>{if(a.stmt===Wbt)_X(i,a.state1,!0),_X(i,a.state2,!1);else if(a.stmt===EX&&(a.id==="[*]"?(a.id=f?i.id+"_start":i.id+"_end",a.start=f):a.id=a.id.trim()),a.doc){const g=[];let w=[],v;for(v=0;v0&&w.length>0){const b={stmt:EX,id:_Ft(),type:"divider",doc:SX(w)};g.push(SX(b)),a.doc=g}a.doc.forEach(b=>_X(a,b,!0))}},ZJe=()=>(_X({id:"root"},{id:"root",doc:TX},!0),{id:"root",doc:TX}),tZe=i=>{let a;i.doc?a=i.doc:a=i,Kt.info(a),Zqt(!0),Kt.info("Extract",a),a.forEach(f=>{switch(f.stmt){case EX:z9(f.id.trim(),f.type,f.doc,f.description,f.note,f.classes,f.styles,f.textStyles);break;case Wbt:tHt(f.state1,f.state2,f.description);break;case UJe:eHt(f.id.trim(),f.classes);break;case GJe:Zbt(f.id.trim(),f.styleClass);break}})},z9=function(i,a=yB,f=null,g=null,w=null,v=null,b=null,E=null){const S=i==null?void 0:i.trim();lg.states[S]===void 0?(Kt.info("Adding state ",S,g),lg.states[S]={id:S,descriptions:[],type:a,doc:f,note:w,classes:[],styles:[],textStyles:[]}):(lg.states[S].doc||(lg.states[S].doc=f),lg.states[S].type||(lg.states[S].type=a)),g&&(Kt.info("Setting state description",S,g),typeof g=="string"&&Jbt(S,g.trim()),typeof g=="object"&&g.forEach(_=>Jbt(S,_.trim()))),w&&(lg.states[S].note=w,lg.states[S].note.text=ei.sanitizeText(lg.states[S].note.text,Re())),v&&(Kt.info("Setting state classes",S,v),(typeof v=="string"?[v]:v).forEach(M=>Zbt(S,M.trim()))),b&&(Kt.info("Setting state styles",S,b),(typeof b=="string"?[b]:b).forEach(M=>lZe(S,M.trim()))),E&&(Kt.info("Setting state styles",S,b),(typeof E=="string"?[E]:E).forEach(M=>hZe(S,M.trim())))},Zqt=function(i){CX={root:Qqt()},lg=CX.root,kB=0,xB=Yqt(),i||ag()},EB=function(i){return lg.states[i]},eZe=function(){return lg.states},nZe=function(){Kt.info("Documents = ",CX)},rZe=function(){return lg.relations};function Xbt(i=""){let a=i;return i===Ybt&&(kB++,a=`${Vqt}${kB}`),a}function Qbt(i="",a=yB){return i===Ybt?Vqt:a}function iZe(i=""){let a=i;return i===Uqt&&(kB++,a=`${Gqt}${kB}`),a}function sZe(i="",a=yB){return i===Uqt?Gqt:a}function aZe(i,a,f){let g=Xbt(i.id.trim()),w=Qbt(i.id.trim(),i.type),v=Xbt(a.id.trim()),b=Qbt(a.id.trim(),a.type);z9(g,w,i.doc,i.description,i.note,i.classes,i.styles,i.textStyles),z9(v,b,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles),lg.relations.push({id1:g,id2:v,relationTitle:ei.sanitizeText(f,Re())})}const tHt=function(i,a,f){if(typeof i=="object")aZe(i,a,f);else{const g=Xbt(i.trim()),w=Qbt(i),v=iZe(a.trim()),b=sZe(a);z9(g,w),z9(v,b),lg.relations.push({id1:g,id2:v,title:ei.sanitizeText(f,Re())})}},Jbt=function(i,a){const f=lg.states[i],g=a.startsWith(":")?a.replace(":","").trim():a;f.descriptions.push(ei.sanitizeText(g,Re()))},oZe=function(i){return i.substring(0,1)===":"?i.substr(2).trim():i.trim()},cZe=()=>(Jqt++,"divider-id-"+Jqt),eHt=function(i,a=""){xB[i]===void 0&&(xB[i]={id:i,styles:[],textStyles:[]});const f=xB[i];a!=null&&a.split(WJe).forEach(g=>{const w=g.replace(/([^;]*);/,"$1").trim();if(g.match(Kqt)){const b=w.replace(Wqt,KJe).replace(Kqt,Wqt);f.textStyles.push(b)}f.styles.push(w)})},uZe=function(){return xB},Zbt=function(i,a){i.split(",").forEach(function(f){let g=EB(f);if(g===void 0){const w=f.trim();z9(w),g=EB(w)}g.classes.push(a)})},lZe=function(i,a){const f=EB(i);f!==void 0&&f.textStyles.push(a)},hZe=function(i,a){const f=EB(i);f!==void 0&&f.textStyles.push(a)},Hx={getConfig:()=>Re().state,addState:z9,clear:Zqt,getState:EB,getStates:eZe,getRelations:rZe,getClasses:uZe,getDirection:()=>Xqt,addRelation:tHt,getDividerId:cZe,setDirection:i=>{Xqt=i},cleanupLabel:oZe,lineType:YJe,relationType:XJe,logDocuments:nZe,getRootDoc:JJe,setRootDoc:QJe,getRootDocV2:ZJe,extract:tZe,trimColon:i=>i&&i[0]===":"?i.substr(1).trim():i.trim(),getAccTitle:Xg,setAccTitle:og,getAccDescription:Jg,setAccDescription:Qg,addStyleClass:eHt,setCssClass:Zbt,addDescription:Jbt,setDiagramTitle:S2,getDiagramTitle:Zg},nHt=i=>` +defs #statediagram-barbEnd { + fill: ${i.transitionColor}; + stroke: ${i.transitionColor}; + } +g.stateGroup text { + fill: ${i.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${i.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${i.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.stateGroup line { + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${i.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${i.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + + text { + fill: ${i.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${i.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${i.transitionLabelColor||i.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${i.transitionLabelColor||i.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${i.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node .fork-join { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node circle.state-end { + fill: ${i.innerEndBackground}; + stroke: ${i.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${i.compositeBackground||i.background}; + // stroke: ${i.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${i.stateBkg||i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${i.lineColor}; +} + +.statediagram-cluster rect { + fill: ${i.compositeTitleBackground}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${i.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${i.stateBorder||i.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${i.compositeBackground||i.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${i.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${i.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${i.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`,t2t={},fZe=(i,a)=>{t2t[i]=a},dZe=i=>t2t[i],rHt=()=>Object.keys(t2t),gZe={get:dZe,set:fZe,keys:rHt,size:()=>rHt().length},pZe=i=>i.append("circle").attr("class","start-state").attr("r",Re().state.sizeUnit).attr("cx",Re().state.padding+Re().state.sizeUnit).attr("cy",Re().state.padding+Re().state.sizeUnit),bZe=i=>i.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Re().state.textHeight).attr("class","divider").attr("x2",Re().state.textHeight*2).attr("y1",0).attr("y2",0),wZe=(i,a)=>{const f=i.append("text").attr("x",2*Re().state.padding).attr("y",Re().state.textHeight+2*Re().state.padding).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.id),g=f.node().getBBox();return i.insert("rect",":first-child").attr("x",Re().state.padding).attr("y",Re().state.padding).attr("width",g.width+2*Re().state.padding).attr("height",g.height+2*Re().state.padding).attr("rx",Re().state.radius),f},mZe=(i,a)=>{const f=function(R,B,z){const Y=R.append("tspan").attr("x",2*Re().state.padding).text(B);z||Y.attr("dy",Re().state.textHeight)},w=i.append("text").attr("x",2*Re().state.padding).attr("y",Re().state.textHeight+1.3*Re().state.padding).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.descriptions[0]).node().getBBox(),v=w.height,b=i.append("text").attr("x",Re().state.padding).attr("y",v+Re().state.padding*.4+Re().state.dividerMargin+Re().state.textHeight).attr("class","state-description");let E=!0,S=!0;a.descriptions.forEach(function(R){E||(f(b,R,S),S=!1),E=!1});const _=i.append("line").attr("x1",Re().state.padding).attr("y1",Re().state.padding+v+Re().state.dividerMargin/2).attr("y2",Re().state.padding+v+Re().state.dividerMargin/2).attr("class","descr-divider"),M=b.node().getBBox(),F=Math.max(M.width,w.width);return _.attr("x2",F+3*Re().state.padding),i.insert("rect",":first-child").attr("x",Re().state.padding).attr("y",Re().state.padding).attr("width",F+2*Re().state.padding).attr("height",M.height+v+2*Re().state.padding).attr("rx",Re().state.radius),i},vZe=(i,a,f)=>{const g=Re().state.padding,w=2*Re().state.padding,v=i.node().getBBox(),b=v.width,E=v.x,S=i.append("text").attr("x",0).attr("y",Re().state.titleShift).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.id),M=S.node().getBBox().width+w;let F=Math.max(M,b);F===b&&(F=F+w);let R;const B=i.node().getBBox();a.doc,R=E-g,M>b&&(R=(b-F)/2+g),Math.abs(E-B.x)b&&(R=E-(M-b)/2);const z=1-Re().state.textHeight;return i.insert("rect",":first-child").attr("x",R).attr("y",z).attr("class",f?"alt-composit":"composit").attr("width",F).attr("height",B.height+Re().state.textHeight+Re().state.titleShift+1).attr("rx","0"),S.attr("x",R+g),M<=b&&S.attr("x",E+(F-w)/2-M/2+g),i.insert("rect",":first-child").attr("x",R).attr("y",Re().state.titleShift-Re().state.textHeight-Re().state.padding).attr("width",F).attr("height",Re().state.textHeight*3).attr("rx",Re().state.radius),i.insert("rect",":first-child").attr("x",R).attr("y",Re().state.titleShift-Re().state.textHeight-Re().state.padding).attr("width",F).attr("height",B.height+3+2*Re().state.textHeight).attr("rx",Re().state.radius),i},yZe=i=>(i.append("circle").attr("class","end-state-outer").attr("r",Re().state.sizeUnit+Re().state.miniPadding).attr("cx",Re().state.padding+Re().state.sizeUnit+Re().state.miniPadding).attr("cy",Re().state.padding+Re().state.sizeUnit+Re().state.miniPadding),i.append("circle").attr("class","end-state-inner").attr("r",Re().state.sizeUnit).attr("cx",Re().state.padding+Re().state.sizeUnit+2).attr("cy",Re().state.padding+Re().state.sizeUnit+2)),xZe=(i,a)=>{let f=Re().state.forkWidth,g=Re().state.forkHeight;if(a.parentId){let w=f;f=g,g=w}return i.append("rect").style("stroke","black").style("fill","black").attr("width",f).attr("height",g).attr("x",Re().state.padding).attr("y",Re().state.padding)},kZe=(i,a,f,g)=>{let w=0;const v=g.append("text");v.style("text-anchor","start"),v.attr("class","noteText");let b=i.replace(/\r\n/g,"
    ");b=b.replace(/\n/g,"
    ");const E=b.split(ei.lineBreakRegex);let S=1.25*Re().state.noteMargin;for(const _ of E){const M=_.trim();if(M.length>0){const F=v.append("tspan");if(F.text(M),S===0){const R=F.node().getBBox();S+=R.height}w+=S,F.attr("x",a+Re().state.noteMargin),F.attr("y",f+w+1.25*Re().state.noteMargin)}}return{textWidth:v.node().getBBox().width,textHeight:w}},EZe=(i,a)=>{a.attr("class","state-note");const f=a.append("rect").attr("x",0).attr("y",Re().state.padding),g=a.append("g"),{textWidth:w,textHeight:v}=kZe(i,0,0,g);return f.attr("height",v+2*Re().state.noteMargin),f.attr("width",w+Re().state.noteMargin*2),f},iHt=function(i,a){const f=a.id,g={id:f,label:a.id,width:0,height:0},w=i.append("g").attr("id",f).attr("class","stateGroup");a.type==="start"&&pZe(w),a.type==="end"&&yZe(w),(a.type==="fork"||a.type==="join")&&xZe(w,a),a.type==="note"&&EZe(a.note.text,w),a.type==="divider"&&bZe(w),a.type==="default"&&a.descriptions.length===0&&wZe(w,a),a.type==="default"&&a.descriptions.length>0&&mZe(w,a);const v=w.node().getBBox();return g.width=v.width+2*Re().state.padding,g.height=v.height+2*Re().state.padding,gZe.set(f,g),g};let sHt=0;const TZe=function(i,a,f){const g=function(S){switch(S){case Hx.relationType.AGGREGATION:return"aggregation";case Hx.relationType.EXTENSION:return"extension";case Hx.relationType.COMPOSITION:return"composition";case Hx.relationType.DEPENDENCY:return"dependency"}};a.points=a.points.filter(S=>!Number.isNaN(S.y));const w=a.points,v=Ax().x(function(S){return S.x}).y(function(S){return S.y}).curve(wF),b=i.append("path").attr("d",v(w)).attr("id","edge"+sHt).attr("class","transition");let E="";if(Re().state.arrowMarkerAbsolute&&(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,E=E.replace(/\(/g,"\\("),E=E.replace(/\)/g,"\\)")),b.attr("marker-end","url("+E+"#"+g(Hx.relationType.DEPENDENCY)+"End)"),f.title!==void 0){const S=i.append("g").attr("class","stateLabel"),{x:_,y:M}=uo.calcLabelPosition(a.points),F=ei.getRows(f.title);let R=0;const B=[];let z=0,Y=0;for(let ft=0;ft<=F.length;ft++){const wt=S.append("text").attr("text-anchor","middle").text(F[ft]).attr("x",_).attr("y",M+R),mt=wt.node().getBBox();z=Math.max(z,mt.width),Y=Math.min(Y,mt.x),Kt.info(mt.x,_,M+R),R===0&&(R=wt.node().getBBox().height,Kt.info("Title height",R,M)),B.push(wt)}let nt=R*F.length;if(F.length>1){const ft=(F.length-1)*R*.5;B.forEach((wt,mt)=>wt.attr("y",M+mt*R-ft)),nt=R*F.length}const ot=S.node().getBBox();S.insert("rect",":first-child").attr("class","box").attr("x",_-z/2-Re().state.padding/2).attr("y",M-nt/2-Re().state.padding/2-3.5).attr("width",z+Re().state.padding).attr("height",nt+Re().state.padding),Kt.info(ot)}sHt++};let M2;const e2t={},CZe=function(){},SZe=function(i){i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},_Ze=function(i,a,f,g){M2=Re().state;const w=Re().securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const b=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body"),E=w==="sandbox"?v.nodes()[0].contentDocument:document;Kt.debug("Rendering diagram "+i);const S=b.select(`[id='${a}']`);SZe(S);const _=g.db.getRootDoc();aHt(_,S,void 0,!1,b,E,g);const M=M2.padding,F=S.node().getBBox(),R=F.width+M*2,B=F.height+M*2,z=R*1.75;sg(S,B,z,M2.useMaxWidth),S.attr("viewBox",`${F.x-M2.padding} ${F.y-M2.padding} `+R+" "+B)},AZe=i=>i?i.length*M2.fontSizeFactor:1,aHt=(i,a,f,g,w,v,b)=>{const E=new l1({compound:!0,multigraph:!0});let S,_=!0;for(S=0;S{const mt=wt.parentElement;let ct=0,rt=0;mt&&(mt.parentElement&&(ct=mt.parentElement.getBBox().width),rt=parseInt(mt.getAttribute("data-x-shift"),10),Number.isNaN(rt)&&(rt=0)),wt.setAttribute("x1",0-rt+8),wt.setAttribute("x2",ct-rt-8)})):Kt.debug("No Node "+ot+": "+JSON.stringify(E.node(ot)))});let Y=z.getBBox();E.edges().forEach(function(ot){ot!==void 0&&E.edge(ot)!==void 0&&(Kt.debug("Edge "+ot.v+" -> "+ot.w+": "+JSON.stringify(E.edge(ot))),TZe(a,E.edge(ot),E.edge(ot).relation))}),Y=z.getBBox();const nt={id:f||"root",label:f||"root",width:0,height:0};return nt.width=Y.width+2*M2.padding,nt.height=Y.height+2*M2.padding,Kt.debug("Doc rendered",nt,E),nt},LZe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:qqt,db:Hx,renderer:{setConf:CZe,draw:_Ze},styles:nHt,init:i=>{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,Hx.clear()}}},Symbol.toStringTag,{value:"Module"})),AX="rect",n2t="rectWithTitle",DZe="start",MZe="end",IZe="divider",OZe="roundedWithTitle",NZe="note",PZe="noteGroup",ID="statediagram",FZe=`${ID}-state`,oHt="transition",BZe="note",RZe=`${oHt} note-edge`,jZe=`${ID}-${BZe}`,$Ze=`${ID}-cluster`,zZe=`${ID}-cluster-alt`,cHt="parent",uHt="note",qZe="state",r2t="----",HZe=`${r2t}${uHt}`,lHt=`${r2t}${cHt}`,hHt="fill:none",fHt="fill: #333",dHt="c",gHt="text",pHt="normal";let LX={},L8=0;const VZe=function(i){const a=Object.keys(i);for(const f of a)i[f]},UZe=function(i,a){return a.db.extract(a.db.getRootDocV2()),a.db.getClasses()};function GZe(i){return i==null?"":i.classes?i.classes.join(" "):""}function i2t(i="",a=0,f="",g=r2t){const w=f!==null&&f.length>0?`${g}${f}`:"";return`${qZe}-${i}${w}-${a}`}const TB=(i,a,f,g,w,v)=>{const b=f.id,E=GZe(g[b]);if(b!=="root"){let S=AX;f.start===!0&&(S=DZe),f.start===!1&&(S=MZe),f.type!==yB&&(S=f.type),LX[b]||(LX[b]={id:b,shape:S,description:ei.sanitizeText(b,Re()),classes:`${E} ${FZe}`});const _=LX[b];f.description&&(Array.isArray(_.description)?(_.shape=n2t,_.description.push(f.description)):_.description.length>0?(_.shape=n2t,_.description===b?_.description=[f.description]:_.description=[_.description,f.description]):(_.shape=AX,_.description=f.description),_.description=ei.sanitizeTextOrArray(_.description,Re())),_.description.length===1&&_.shape===n2t&&(_.shape=AX),!_.type&&f.doc&&(Kt.info("Setting cluster for ",b,s2t(f)),_.type="group",_.dir=s2t(f),_.shape=f.type===Hqt?IZe:OZe,_.classes=_.classes+" "+$Ze+" "+(v?zZe:""));const M={labelStyle:"",shape:_.shape,labelText:_.description,classes:_.classes,style:"",id:b,dir:_.dir,domId:i2t(b,L8),type:_.type,padding:15};if(M.centerLabel=!0,f.note){const F={labelStyle:"",shape:NZe,labelText:f.note.text,classes:jZe,style:"",id:b+HZe+"-"+L8,domId:i2t(b,L8,uHt),type:_.type,padding:15},R={labelStyle:"",shape:PZe,labelText:f.note.text,classes:_.classes,style:"",id:b+lHt,domId:i2t(b,L8,cHt),type:"group",padding:0};L8++;const B=b+lHt;i.setNode(B,R),i.setNode(F.id,F),i.setNode(b,M),i.setParent(b,B),i.setParent(F.id,B);let z=b,Y=F.id;f.note.position==="left of"&&(z=F.id,Y=b),i.setEdge(z,Y,{arrowhead:"none",arrowType:"",style:hHt,labelStyle:"",classes:RZe,arrowheadStyle:fHt,labelpos:dHt,labelType:gHt,thickness:pHt})}else i.setNode(b,M)}a&&a.id!=="root"&&(Kt.trace("Setting node ",b," to be child of its parent ",a.id),i.setParent(b,a.id)),f.doc&&(Kt.trace("Adding nodes children "),KZe(i,f,f.doc,g,w,!v))},KZe=(i,a,f,g,w,v)=>{Kt.trace("items",f),f.forEach(b=>{switch(b.stmt){case EX:TB(i,a,b,g,w,v);break;case yB:TB(i,a,b,g,w,v);break;case Wbt:{TB(i,a,b.state1,g,w,v),TB(i,a,b.state2,g,w,v);const E={id:"edge"+L8,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:hHt,labelStyle:"",label:ei.sanitizeText(b.description,Re()),arrowheadStyle:fHt,labelpos:dHt,labelType:gHt,thickness:pHt,classes:oHt};i.setEdge(b.state1.id,b.state2.id,E,L8),L8++}break}})},s2t=(i,a=VJe)=>{let f=a;if(i.doc)for(let g=0;g{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,Hx.clear()}}},Symbol.toStringTag,{value:"Module"}));var a2t=function(){var i=function(F,R,B,z){for(B=B||{},z=F.length;z--;B[F[z]]=R);return B},a=[6,8,10,11,12,14,16,17,18],f=[1,9],g=[1,10],w=[1,11],v=[1,12],b=[1,13],E=[1,14],S={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(R,B,z,Y,nt,ot,ft){var wt=ot.length-1;switch(nt){case 1:return ot[wt-1];case 2:this.$=[];break;case 3:ot[wt-1].push(ot[wt]),this.$=ot[wt-1];break;case 4:case 5:this.$=ot[wt];break;case 6:case 7:this.$=[];break;case 8:Y.setDiagramTitle(ot[wt].substr(6)),this.$=ot[wt].substr(6);break;case 9:this.$=ot[wt].trim(),Y.setAccTitle(this.$);break;case 10:case 11:this.$=ot[wt].trim(),Y.setAccDescription(this.$);break;case 12:Y.addSection(ot[wt].substr(8)),this.$=ot[wt].substr(8);break;case 13:Y.addTask(ot[wt-1],ot[wt]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:f,12:g,14:w,16:v,17:b,18:E},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:15,11:f,12:g,14:w,16:v,17:b,18:E},i(a,[2,5]),i(a,[2,6]),i(a,[2,8]),{13:[1,16]},{15:[1,17]},i(a,[2,11]),i(a,[2,12]),{19:[1,18]},i(a,[2,4]),i(a,[2,9]),i(a,[2,10]),i(a,[2,13])],defaultActions:{},parseError:function(R,B){if(B.recoverable)this.trace(R);else{var z=new Error(R);throw z.hash=B,z}},parse:function(R){var B=this,z=[0],Y=[],nt=[null],ot=[],ft=this.table,wt="",mt=0,ct=0,rt=2,it=1,gt=ot.slice.call(arguments,1),Q=Object.create(this.lexer),dt={yy:{}};for(var K in this.yy)Object.prototype.hasOwnProperty.call(this.yy,K)&&(dt.yy[K]=this.yy[K]);Q.setInput(R,dt.yy),dt.yy.lexer=Q,dt.yy.parser=this,typeof Q.yylloc>"u"&&(Q.yylloc={});var yt=Q.yylloc;ot.push(yt);var V=Q.options&&Q.options.ranges;typeof dt.yy.parseError=="function"?this.parseError=dt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var Ae;return Ae=Y.pop()||Q.lex()||it,typeof Ae!="number"&&(Ae instanceof Array&&(Y=Ae,Ae=Y.pop()),Ae=B.symbols_[Ae]||Ae),Ae}for(var It,jt,xt,Ft,Ct={},kt,Gt,Fe,Mt;;){if(jt=z[z.length-1],this.defaultActions[jt]?xt=this.defaultActions[jt]:((It===null||typeof It>"u")&&(It=Ot()),xt=ft[jt]&&ft[jt][It]),typeof xt>"u"||!xt.length||!xt[0]){var pn="";Mt=[];for(kt in ft[jt])this.terminals_[kt]&&kt>rt&&Mt.push("'"+this.terminals_[kt]+"'");Q.showPosition?pn="Parse error on line "+(mt+1)+`: +`+Q.showPosition()+` +Expecting `+Mt.join(", ")+", got '"+(this.terminals_[It]||It)+"'":pn="Parse error on line "+(mt+1)+": Unexpected "+(It==it?"end of input":"'"+(this.terminals_[It]||It)+"'"),this.parseError(pn,{text:Q.match,token:this.terminals_[It]||It,line:Q.yylineno,loc:yt,expected:Mt})}if(xt[0]instanceof Array&&xt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+jt+", token: "+It);switch(xt[0]){case 1:z.push(It),nt.push(Q.yytext),ot.push(Q.yylloc),z.push(xt[1]),It=null,ct=Q.yyleng,wt=Q.yytext,mt=Q.yylineno,yt=Q.yylloc;break;case 2:if(Gt=this.productions_[xt[1]][1],Ct.$=nt[nt.length-Gt],Ct._$={first_line:ot[ot.length-(Gt||1)].first_line,last_line:ot[ot.length-1].last_line,first_column:ot[ot.length-(Gt||1)].first_column,last_column:ot[ot.length-1].last_column},V&&(Ct._$.range=[ot[ot.length-(Gt||1)].range[0],ot[ot.length-1].range[1]]),Ft=this.performAction.apply(Ct,[wt,ct,mt,dt.yy,xt[1],nt,ot].concat(gt)),typeof Ft<"u")return Ft;Gt&&(z=z.slice(0,-1*Gt*2),nt=nt.slice(0,-1*Gt),ot=ot.slice(0,-1*Gt)),z.push(this.productions_[xt[1]][0]),nt.push(Ct.$),ot.push(Ct._$),Fe=ft[z[z.length-2]][z[z.length-1]],z.push(Fe);break;case 3:return!0}}return!0}},_=function(){var F={EOF:1,parseError:function(B,z){if(this.yy.parser)this.yy.parser.parseError(B,z);else throw new Error(B)},setInput:function(R,B){return this.yy=B||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var B=R.match(/(?:\r\n?|\n).*/g);return B?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},unput:function(R){var B=R.length,z=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-B),this.offset-=B;var Y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var nt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===Y.length?this.yylloc.first_column:0)+Y[Y.length-z.length].length-z[0].length:this.yylloc.first_column-B},this.options.ranges&&(this.yylloc.range=[nt[0],nt[0]+this.yyleng-B]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(R){this.unput(this.match.slice(R))},pastInput:function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var R=this.pastInput(),B=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+B+"^"},test_match:function(R,B){var z,Y,nt;if(this.options.backtrack_lexer&&(nt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(nt.yylloc.range=this.yylloc.range.slice(0))),Y=R[0].match(/(?:\r\n?|\n).*/g),Y&&(this.yylineno+=Y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Y?Y[Y.length-1].length-Y[Y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],z=this.performAction.call(this,this.yy,this,B,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var ot in nt)this[ot]=nt[ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,B,z,Y;this._more||(this.yytext="",this.match="");for(var nt=this._currentRules(),ot=0;otB[0].length)){if(B=z,Y=ot,this.options.backtrack_lexer){if(R=this.test_match(z,nt[ot]),R!==!1)return R;if(this._backtrack){B=!1;continue}else return!1}else if(!this.options.flex)break}return B?(R=this.test_match(B,nt[Y]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var B=this.next();return B||this.lex()},begin:function(B){this.conditionStack.push(B)},popState:function(){var B=this.conditionStack.length-1;return B>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(B){return B=this.conditionStack.length-1-Math.abs(B||0),B>=0?this.conditionStack[B]:"INITIAL"},pushState:function(B){this.begin(B)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(B,z,Y,nt){switch(Y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return F}();S.lexer=_;function M(){this.yy={}}return M.prototype=S,S.Parser=M,new M}();a2t.parser=a2t;const YZe=a2t;let OD="";const o2t=[],CB=[],SB=[],XZe=function(){o2t.length=0,CB.length=0,OD="",SB.length=0,ag()},QZe=function(i){OD=i,o2t.push(i)},JZe=function(){return o2t},ZZe=function(){let i=bHt();const a=100;let f=0;for(;!i&&f{f.people&&i.push(...f.people)}),[...new Set(i)].sort()},etn=function(i,a){const f=a.substr(1).split(":");let g=0,w=[];f.length===1?(g=Number(f[0]),w=[]):(g=Number(f[0]),w=f[1].split(","));const v=w.map(E=>E.trim()),b={section:OD,type:OD,people:v,task:i,score:g};SB.push(b)},ntn=function(i){const a={section:OD,type:OD,description:i,task:i,classes:[]};CB.push(a)},bHt=function(){const i=function(f){return SB[f].processed};let a=!0;for(const[f,g]of SB.entries())i(f),a=a&&g.processed;return a},wHt={getConfig:()=>Re().journey,clear:XZe,setDiagramTitle:S2,getDiagramTitle:Zg,setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,addSection:QZe,getSections:JZe,getTasks:ZZe,addTask:etn,addTaskOrg:ntn,getActors:function(){return ttn()}},rtn=i=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${i.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${i.textColor} + } + + .legend { + fill: ${i.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${i.textColor} + } + + .face { + ${i.faceColor?`fill: ${i.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${i.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${i.fillType0?`fill: ${i.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${i.fillType0?`fill: ${i.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${i.fillType0?`fill: ${i.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${i.fillType0?`fill: ${i.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${i.fillType0?`fill: ${i.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${i.fillType0?`fill: ${i.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${i.fillType0?`fill: ${i.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${i.fillType0?`fill: ${i.fillType7}`:""}; + } + + .actor-0 { + ${i.actor0?`fill: ${i.actor0}`:""}; + } + .actor-1 { + ${i.actor1?`fill: ${i.actor1}`:""}; + } + .actor-2 { + ${i.actor2?`fill: ${i.actor2}`:""}; + } + .actor-3 { + ${i.actor3?`fill: ${i.actor3}`:""}; + } + .actor-4 { + ${i.actor4?`fill: ${i.actor4}`:""}; + } + .actor-5 { + ${i.actor5?`fill: ${i.actor5}`:""}; + } +`,c2t=function(i,a){return LY(i,a)},itn=function(i,a){const g=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function v(S){const _=YL().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const _=YL().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?v(w):a.score<3?b(w):E(w),g},mHt=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},vHt=function(i,a){return URe(i,a)},stn=function(i,a){function f(w,v,b,E,S){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-S)+" "+(w+b-S*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");g.attr("points",f(a.x,a.y,50,20,7)),g.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,vHt(i,a)},atn=function(i,a,f){const g=i.append("g"),w=_9();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width*a.taskCount+f.diagramMarginX*(a.taskCount-1),w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,c2t(g,w),xHt(f)(a.text,g,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let yHt=-1;const otn=function(i,a,f){const g=a.x+f.width/2,w=i.append("g");yHt++;const v=300+5*30;w.append("line").attr("id","task"+yHt).attr("x1",g).attr("y1",a.y).attr("x2",g).attr("y2",v).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),itn(w,{cx:g,cy:300+(5-a.score)*30,score:a.score});const b=_9();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,c2t(w,b);let E=a.x+14;a.people.forEach(S=>{const _=a.actors[S].color,M={cx:E,cy:a.y,r:7,fill:_,stroke:"#000",title:S,pos:a.actors[S].position};mHt(w,M),E+=10}),xHt(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},ctn=function(i,a){sRt(i,a)},xHt=function(){function i(w,v,b,E,S,_,M,F){const R=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("font-color",F).style("text-anchor","middle").text(w);g(R,M)}function a(w,v,b,E,S,_,M,F,R){const{taskFontSize:B,taskFontFamily:z}=F,Y=w.split(//gi);for(let nt=0;nt{const w=Vx[g].color,v={cx:20,cy:f,r:7,fill:w,stroke:"#000",pos:Vx[g].position};_B.drawCircle(i,v);const b={x:40,y:f+7,fill:"#666",text:g,textMargin:a.boxTextMargin|5};_B.drawText(i,b),f+=20})}const DX=Re().journey,q9=DX.leftMargin,htn=function(i,a,f,g){const w=Re().journey,v=Re().securityLevel;let b;v==="sandbox"&&(b=Tr("#i"+a));const E=Tr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body");em.init();const S=E.select("#"+a);_B.initGraphics(S);const _=g.db.getTasks(),M=g.db.getDiagramTitle(),F=g.db.getActors();for(const ot in Vx)delete Vx[ot];let R=0;F.forEach(ot=>{Vx[ot]={color:w.actorColours[R%w.actorColours.length],position:R},R++}),ltn(S),em.insert(0,0,q9,Object.keys(Vx).length*50),ftn(S,_,0);const B=em.getBounds();M&&S.append("text").text(M).attr("x",q9).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const z=B.stopy-B.starty+2*w.diagramMarginY,Y=q9+B.stopx+2*w.diagramMarginX;sg(S,z,Y,w.useMaxWidth),S.append("line").attr("x1",q9).attr("y1",w.height*4).attr("x2",Y-q9-4).attr("y2",w.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const nt=M?70:0;S.attr("viewBox",`${B.startx} -25 ${Y} ${z+nt}`),S.attr("preserveAspectRatio","xMinYMin meet"),S.attr("height",z+nt+25)},em={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(i,a,f,g){i[a]===void 0?i[a]=f:i[a]=g(f,i[a])},updateBounds:function(i,a,f,g){const w=Re().journey,v=this;let b=0;function E(S){return function(M){b++;const F=v.sequenceItems.length-b+1;v.updateVal(M,"starty",a-F*w.boxMargin,Math.min),v.updateVal(M,"stopy",g+F*w.boxMargin,Math.max),v.updateVal(em.data,"startx",i-F*w.boxMargin,Math.min),v.updateVal(em.data,"stopx",f+F*w.boxMargin,Math.max),S!=="activation"&&(v.updateVal(M,"startx",i-F*w.boxMargin,Math.min),v.updateVal(M,"stopx",f+F*w.boxMargin,Math.max),v.updateVal(em.data,"starty",a-F*w.boxMargin,Math.min),v.updateVal(em.data,"stopy",g+F*w.boxMargin,Math.max))}}this.sequenceItems.forEach(E())},insert:function(i,a,f,g){const w=Math.min(i,f),v=Math.max(i,f),b=Math.min(a,g),E=Math.max(a,g);this.updateVal(em.data,"startx",w,Math.min),this.updateVal(em.data,"starty",b,Math.min),this.updateVal(em.data,"stopx",v,Math.max),this.updateVal(em.data,"stopy",E,Math.max),this.updateBounds(w,b,v,E)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},u2t=DX.sectionFills,kHt=DX.sectionColours,ftn=function(i,a,f){const g=Re().journey;let w="";const v=g.height*2+g.diagramMarginY,b=f+v;let E=0,S="#CCC",_="black",M=0;for(const[F,R]of a.entries()){if(w!==R.section){S=u2t[E%u2t.length],M=E%u2t.length,_=kHt[E%kHt.length];let z=0;const Y=R.section;for(let ot=F;ot(Vx[Y]&&(z[Y]=Vx[Y]),z),{});R.x=F*g.taskMargin+F*g.width+q9,R.y=b,R.width=g.diagramMarginX,R.height=g.diagramMarginY,R.colour=_,R.fill=S,R.num=M,R.actors=B,_B.drawTask(i,R,g),em.insert(R.x,R.y,R.x+R.width+g.taskMargin,300+5*30)}},EHt={setConf:utn,draw:htn},dtn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:YZe,db:wHt,renderer:EHt,styles:rtn,init:i=>{EHt.setConf(i.journey),wHt.clear()}}},Symbol.toStringTag,{value:"Module"})),gtn=(i,a,f)=>{const{parentById:g}=f,w=new Set;let v=i;for(;v;){if(w.add(v),v===a)return v;v=g[v]}for(v=a;v;){if(w.has(v))return v;v=g[v]}return"root"};function MX(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var THt={exports:{}};(function(i,a){(function(f){i.exports=f()})(function(){return function(){function f(g,w,v){function b(_,M){if(!w[_]){if(!g[_]){var F=typeof MX=="function"&&MX;if(!M&&F)return F(_,!0);if(E)return E(_,!0);var R=new Error("Cannot find module '"+_+"'");throw R.code="MODULE_NOT_FOUND",R}var B=w[_]={exports:{}};g[_][0].call(B.exports,function(z){var Y=g[_][1][z];return b(Y||z)},B,B.exports,f,g,w,v)}return w[_].exports}for(var E=typeof MX=="function"&&MX,S=0;S0&&arguments[0]!==void 0?arguments[0]:{},R=F.defaultLayoutOptions,B=R===void 0?{}:R,z=F.algorithms,Y=z===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:z,nt=F.workerFactory,ot=F.workerUrl;if(b(this,_),this.defaultLayoutOptions=B,this.initialized=!1,typeof ot>"u"&&typeof nt>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var ft=nt;typeof ot<"u"&&typeof nt>"u"&&(ft=function(ct){return new Worker(ct)});var wt=ft(ot);if(typeof wt.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new S(wt),this.worker.postMessage({cmd:"register",algorithms:Y}).then(function(mt){return M.initialized=!0}).catch(console.err)}return v(_,[{key:"layout",value:function(F){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},B=R.layoutOptions,z=B===void 0?this.defaultLayoutOptions:B,Y=R.logging,nt=Y===void 0?!1:Y,ot=R.measureExecutionTime,ft=ot===void 0?!1:ot;return F?this.worker.postMessage({cmd:"layout",graph:F,layoutOptions:z,options:{logging:nt,measureExecutionTime:ft}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),_}();w.default=E;var S=function(){function _(M){var F=this;if(b(this,_),M===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=M,this.worker.onmessage=function(R){setTimeout(function(){F.receive(F,R)},0)}}return v(_,[{key:"postMessage",value:function(F){var R=this.id||0;this.id=R+1,F.id=R;var B=this;return new Promise(function(z,Y){B.resolvers[R]=function(nt,ot){nt?(B.convertGwtStyleError(nt),Y(nt)):z(ot)},B.worker.postMessage(F)})}},{key:"receive",value:function(F,R){var B=R.data,z=F.resolvers[B.id];z&&(delete F.resolvers[B.id],B.error?z(B.error):z(null,B.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(F){if(F){var R=F.__java$exception;R&&(R.cause&&R.cause.backingJsObject&&(F.cause=R.cause.backingJsObject,this.convertGwtStyleError(F.cause)),delete F.__java$exception)}}}]),_}()},{}],2:[function(f,g,w){(function(v){(function(){var b;typeof window<"u"?b=window:typeof v<"u"?b=v:typeof self<"u"&&(b=self);var E;function S(){}function _(){}function M(){}function F(){}function R(){}function B(){}function z(){}function Y(){}function nt(){}function ot(){}function ft(){}function wt(){}function mt(){}function ct(){}function rt(){}function it(){}function gt(){}function Q(){}function dt(){}function K(){}function yt(){}function V(){}function Ot(){}function It(){}function jt(){}function xt(){}function Ft(){}function Ct(){}function kt(){}function Gt(){}function Fe(){}function Mt(){}function pn(){}function Ae(){}function ye(){}function tn(){}function sn(){}function be(){}function Ne(){}function Xt(){}function _e(){}function xe(){}function Mn(){}function ce(){}function Br(){}function we(){}function Fi(){}function mi(){}function ga(){}function Ss(){}function za(){}function br(){}function An(){}function Nn(){}function Bn(){}function ke(){}function pe(){}function Je(){}function an(){}function xn(){}function qa(){}function xo(){}function ko(){}function va(){}function Ha(){}function ds(){}function Fu(){}function Zs(){}function d1(){}function I2(){}function ll(){}function Ic(){}function wc(){}function Ea(){}function gu(){}function ta(){}function fo(){}function mc(){}function ca(){}function ya(){}function ea(){}function Zl(){}function Uc(){}function rm(){}function kh(){}function Md(){}function w0(){}function Id(){}function m0(){}function hg(){}function Gi(){}function cn(){}function Nr(){}function Si(){}function vc(){}function Rc(){}function Eh(){}function Zc(){}function Qh(){}function Od(){}function cs(){}function As(){}function to(){}function Ci(){}function pu(){}function Le(){}function iy(){}function $e(){}function g1(){}function ip(){}function sy(){}function D8(){}function g4(){}function th(){}function fg(){}function O2(){}function M8(){}function N2(){}function p4(){}function U1(){}function Nd(){}function Pd(){}function I8(){}function im(){}function Gx(){}function hb(){}function Kx(){}function b4(){}function ay(){}function sp(){}function BD(){}function $l(){}function U9(){}function Gc(){}function $X(){}function P2(){}function zX(){}function MB(){}function qX(){}function IB(){}function p1(){}function oy(){}function G9(){}function OB(){}function fb(){}function cy(){}function HX(){}function F2(){}function VX(){}function UX(){}function Wx(){}function K9(){}function NB(){}function O8(){}function GX(){}function N8(){}function KX(){}function WX(){}function YX(){}function XX(){}function QX(){}function JX(){}function ZX(){}function tQ(){}function eQ(){}function nQ(){}function rQ(){}function RD(){}function iQ(){}function sQ(){}function W9(){}function PB(){}function Yx(){}function aQ(){}function oQ(){}function cQ(){}function uQ(){}function lQ(){}function Y9(){}function jD(){}function FB(){}function w4(){}function m4(){}function hQ(){}function Lf(){}function Xx(){}function fQ(){}function P8(){}function v0(){}function dQ(){}function gQ(){}function pQ(){}function BB(){}function bQ(){}function X9(){}function Q9(){}function RB(){}function $D(){}function Qx(){}function wQ(){}function jB(){}function $B(){}function mQ(){}function vQ(){}function yQ(){}function xQ(){}function kQ(){}function EQ(){}function y0(){}function sm(){}function TQ(){}function J9(){}function Z9(){}function CQ(){}function v4(){}function F8(){}function zD(){}function uy(){}function B8(){}function SQ(){}function tC(){}function Fd(){}function zB(){}function qD(){}function R8(){}function HD(){}function qB(){}function _Q(){}function VD(){}function AQ(){}function LQ(){}function HB(){}function Jx(){}function VB(){}function Zx(){}function DQ(){}function UD(){}function MQ(){}function IQ(){}function OQ(){}function NQ(){}function UB(){}function PQ(){}function FQ(){}function GB(){}function BQ(){}function RQ(){}function jQ(){}function $Q(){}function KB(){}function zQ(){}function qQ(){}function WB(){}function YB(){}function XB(){}function HQ(){}function VQ(){}function j8(){}function t6(){}function eC(){}function UQ(){}function GD(){}function nC(){}function KD(){}function QB(){}function JB(){}function GQ(){}function KQ(){}function WQ(){}function ZB(){}function tR(){}function YQ(){}function XQ(){}function QQ(){}function JQ(){}function ZQ(){}function eR(){}function tJ(){}function eJ(){}function nJ(){}function rJ(){}function nR(){}function rC(){}function iJ(){}function sJ(){}function rR(){}function aJ(){}function oJ(){}function cJ(){}function uJ(){}function lJ(){}function hJ(){}function iR(){}function fJ(){}function sR(){}function dJ(){}function gJ(){}function pJ(){}function iC(){}function bJ(){}function sC(){}function wJ(){}function aR(){}function oR(){}function cR(){}function uR(){}function am(){}function lR(){}function hR(){}function fR(){}function dR(){}function mJ(){}function e6(){}function WD(){}function y4(){}function vJ(){}function yJ(){}function aC(){}function gR(){}function xJ(){}function kJ(){}function EJ(){}function TJ(){}function CJ(){}function SJ(){}function _J(){}function AJ(){}function LJ(){}function DJ(){}function oC(){}function pR(){}function MJ(){}function IJ(){}function OJ(){}function NJ(){}function PJ(){}function bR(){}function wR(){}function FJ(){}function mR(){}function vR(){}function BJ(){}function RJ(){}function jJ(){}function $J(){}function zJ(){}function qJ(){}function HJ(){}function VJ(){}function YD(){}function UJ(){}function $8(){}function yR(){}function GJ(){}function KJ(){}function WJ(){}function YJ(){}function XJ(){}function QJ(){}function JJ(){}function ZJ(){}function tZ(){}function eZ(){}function nZ(){}function rZ(){}function iZ(){}function sZ(){}function aZ(){}function n6(){}function xR(){}function oZ(){}function cZ(){}function uZ(){}function kR(){}function lZ(){}function cC(){}function hZ(){}function fZ(){}function dZ(){}function gZ(){}function pZ(){}function bZ(){}function wZ(){}function mZ(){}function vZ(){}function yZ(){}function r6(){}function xZ(){}function kZ(){}function EZ(){}function TZ(){}function CZ(){}function SZ(){}function _Z(){}function AZ(){}function uC(){}function LZ(){}function DZ(){}function MZ(){}function IZ(){}function OZ(){}function NZ(){}function PZ(){}function FZ(){}function i6(){}function ER(){}function BZ(){}function XD(){}function RZ(){}function jZ(){}function $Z(){}function zZ(){}function qZ(){}function HZ(){}function VZ(){}function TR(){}function UZ(){}function CR(){}function GZ(){}function SR(){}function _R(){}function AR(){}function KZ(){}function WZ(){}function LR(){}function YZ(){}function DR(){}function XZ(){}function QZ(){}function QD(){}function JZ(){}function ZZ(){}function ttt(){}function ett(){}function ntt(){}function MR(){}function rtt(){}function itt(){}function stt(){}function A2t(){}function att(){}function ott(){}function ctt(){}function utt(){}function ltt(){}function htt(){}function ftt(){}function dtt(){}function gtt(){}function ptt(){}function btt(){}function wtt(){}function mtt(){}function vtt(){}function ytt(){}function xtt(){}function Kc(){}function ktt(){}function lC(){}function yc(){}function bu(){}function Xi(){}function JD(){}function Ett(){}function Ttt(){}function Ctt(){}function s6(){}function B2(){}function z8(){}function Stt(){}function ZD(){}function _tt(){}function Att(){}function Ltt(){}function IR(){}function Dtt(){}function Mtt(){}function tM(){}function Itt(){}function zl(){}function Yu(){}function OR(){}function Ott(){}function Ntt(){}function ly(){}function x4(){}function hy(){}function ap(){}function a6(){}function eM(){}function NR(){}function PR(){}function Ptt(){}function G1(){}function FR(){}function fy(){}function q8(){}function nM(){}function o6(){}function db(){}function BR(){}function RR(){}function jR(){}function Ftt(){}function c6(){}function dy(){}function op(){}function gb(){}function k4(){}function H8(){}function hC(){}function rM(){}function Btt(){}function Rtt(){}function $R(){}function zR(){}function je(){}function V8(){}function qR(){}function HR(){}function jtt(){}function U8(){}function G8(){}function VR(){}function $tt(){}function ztt(){}function qtt(){}function Htt(){}function Vtt(){}function Utt(){}function iM(){}function Gtt(){}function Ktt(){}function UR(){}function fC(){}function Wtt(){}function sM(){}function K8(){}function W8(){}function Y8(){}function GR(){}function Ytt(){}function KR(){}function WR(){}function Xtt(){}function dC(){}function pb(){}function YR(){}function XR(){}function gC(){}function Qtt(){}function E4(){}function QR(){}function aM(){}function Oc(){}function oM(){}function cM(){}function pC(){}function Jtt(){}function Ztt(){}function bC(){}function tet(){}function wC(){}function mC(){}function b1(){}function uM(){}function lM(){}function u6(){}function eet(){}function net(){}function ret(){}function iet(){}function x0(){}function vC(){}function l6(){}function K1(){}function JR(){}function ZR(){}function tj(){}function ej(){}function nj(){}function rj(){}function w1(){}function Bu(){}function set(){}function aet(){}function oet(){}function Ru(){}function yC(){}function ij(){}function sj(){}function h6(){}function cet(){}function X8(){}function uet(){}function aj(){}function het(){}function fet(){}function xC(){}function oj(){}function hM(){}function kC(){}function det(){}function get(){}function fM(){}function EC(){}function W1(){}function Q8(){}function pet(){}function J8(){}function dM(){}function R2(){}function TC(){}function gM(){}function m1(){}function CC(){}function Y1(){}function X1(){}function bet(){}function wet(){}function T4(){}function Z8(){}function tE(){}function SC(){}function met(){}function vet(){}function f6(){}function cj(){}function uj(){}function yet(){}function lj(){}function xet(){}function hj(){}function pM(){}function ket(){}function _C(){}function Eet(){}function Tet(){}function Cet(){}function _et(){}function Aet(){}function fj(){}function Let(){}function Det(){}function Met(){}function dj(){}function Iet(){}function Oet(){}function AC(){}function Net(){}function Pet(){}function Fet(){}function Bet(){}function Ret(){}function jet(){}function gj(){}function $et(){}function pj(){}function zet(){}function bM(){}function qet(){}function bj(){}function Het(){}function wj(){}function Vet(){}function mj(){}function vj(){}function yj(){}function wM(){}function C4(){}function LC(){}function Q1(){}function xj(){}function eE(){}function mM(){}function kj(){}function j2(){}function Ej(){}function DC(){UC()}function Uet(){jM()}function Tj(){RH()}function Cj(){Mat()}function Sj(){b_()}function MC(){u6t()}function IC(){Vf()}function _j(){vxt()}function Aj(){TO()}function d6(){$M()}function om(){gI()}function nE(){UYt()}function Lj(){ok()}function Get(){vse()}function Dj(){m4t()}function g6(){ore()}function vM(){v4t()}function Mj(){Xse()}function Ket(){are()}function Ij(){g7()}function OC(){Ooe()}function NC(){Ioe()}function yM(){nie()}function Wet(){Noe()}function Yet(){Vb()}function Xet(){T$()}function Qet(){o8t()}function Jet(){De()}function Zet(){Poe()}function tnt(){cce()}function ent(){cre()}function nnt(){Ohe()}function rnt(){ure()}function int(){W0e()}function snt(){j6t()}function ant(){Sg()}function ont(){Wue()}function p6(){Cc()}function cnt(){mre()}function rE(){ak()}function Jh(){xkt()}function unt(){Ub()}function iE(){kkt()}function PC(){fd()}function lnt(){LO()}function hnt(){rct()}function fnt(){fot()}function Zh(){WZt()}function dnt(){Tq()}function gnt(){VH()}function Oj(){ai()}function pnt(){aH()}function Nj(){Y5t()}function Pj(){fat()}function Fj(){fV()}function Bj(){Okt()}function Df(t){Wn(t)}function Rj(t){this.a=t}function FC(t){this.a=t}function jj(t){this.a=t}function $j(t){this.a=t}function bnt(t){this.a=t}function wnt(t){this.a=t}function zj(t){this.a=t}function mnt(t){this.a=t}function qj(t){this.a=t}function bb(t){this.a=t}function vnt(t){this.a=t}function ynt(t){this.a=t}function xM(t){this.a=t}function xnt(t){this.a=t}function knt(t){this.a=t}function sE(t){this.a=t}function wb(t){this.a=t}function Hj(t){this.a=t}function aE(t){this.a=t}function S4(t){this.a=t}function kM(t){this.a=t}function b6(t){this.a=t}function EM(t){this.b=t}function dg(t){this.c=t}function Ent(t){this.a=t}function gy(t){this.a=t}function Vj(t){this.a=t}function Uj(t){this.a=t}function TM(t){this.a=t}function CM(t){this.a=t}function Gj(t){this.a=t}function w6(t){this.a=t}function oE(t){this.a=t}function Tnt(t){this.a=t}function Kj(t){this.a=t}function Wj(t){this.a=t}function Yj(t){this.a=t}function Xj(t){this.a=t}function xc(t){this.a=t}function cE(t){this.a=t}function uE(t){this.a=t}function cp(){this.a=[]}function Cnt(t,e){t.a=e}function Snt(t,e){t.a=e}function _nt(t,e){t.b=e}function Ant(t,e){t.b=e}function Lnt(t,e){t.b=e}function Qj(t,e){t.j=e}function L2t(t,e){t.g=e}function Jj(t,e){t.i=e}function Dnt(t,e){t.c=e}function m6(t,e){t.c=e}function D2t(t,e){t.d=e}function v6(t,e){t.d=e}function y(t,e){t.k=e}function p(t,e){t.c=e}function x(t,e){t.c=e}function C(t,e){t.a=e}function L(t,e){t.a=e}function O(t,e){t.f=e}function N(t,e){t.a=e}function j(t,e){t.b=e}function H(t,e){t.d=e}function q(t,e){t.i=e}function W(t,e){t.o=e}function Z(t,e){t.r=e}function st(t,e){t.a=e}function bt(t,e){t.b=e}function pt(t,e){t.e=e}function _t(t,e){t.f=e}function St(t,e){t.g=e}function Et(t,e){t.e=e}function Nt(t,e){t.f=e}function Pt(t,e){t.f=e}function qt(t,e){t.a=e}function re(t,e){t.b=e}function ee(t,e){t.n=e}function Ut(t,e){t.a=e}function de(t,e){t.c=e}function Yt(t,e){t.c=e}function Ee(t,e){t.c=e}function Te(t,e){t.a=e}function ie(t,e){t.a=e}function ze(t,e){t.d=e}function me(t,e){t.d=e}function yn(t,e){t.e=e}function nn(t,e){t.e=e}function qe(t,e){t.g=e}function Tn(t,e){t.f=e}function Xn(t,e){t.j=e}function lr(t,e){t.a=e}function Sn(t,e){t.a=e}function or(t,e){t.b=e}function pr(t){t.b=t.a}function kr(t){t.c=t.d.d}function wr(t){this.a=t}function Cr(t){this.a=t}function $n(t){this.a=t}function cr(t){this.a=t}function mr(t){this.a=t}function Sr(t){this.a=t}function gi(t){this.a=t}function ss(t){this.a=t}function na(t){this.a=t}function vi(t){this.a=t}function si(t){this.a=t}function Qi(t){this.a=t}function ks(t){this.a=t}function as(t){this.a=t}function Es(t){this.b=t}function eo(t){this.b=t}function Ta(t){this.b=t}function pa(t){this.a=t}function mo(t){this.a=t}function Kn(t){this.c=t}function G(t){this.c=t}function Vn(t){this.c=t}function gr(t){this.d=t}function nr(t){this.a=t}function Be(t){this.a=t}function Ls(t){this.a=t}function hr(t){this.a=t}function us(t){this.a=t}function Ya(t){this.a=t}function kc(t){this.a=t}function Ca(t){this.a=t}function oc(t){this.a=t}function ra(t){this.a=t}function no(t){this.a=t}function ql(t){this.a=t}function Sl(t){this.a=t}function mb(t){this.a=t}function vb(t){this.a=t}function v1(t){this.a=t}function up(t){this.a=t}function Bd(t){this.a=t}function cm(t){this.a=t}function py(t){this.a=t}function y6(t){this.a=t}function _4(t){this.a=t}function x6(t){this.a=t}function BC(t){this.a=t}function A4(t){this.a=t}function k0(t){this.a=t}function J1(t){this.a=t}function E0(t){this.a=t}function by(t){this.a=t}function $2(t){this.a=t}function Zj(t){this.a=t}function Mnt(t){this.a=t}function Int(t){this.a=t}function RC(t){this.a=t}function Ont(t){this.a=t}function Nnt(t){this.a=t}function L4(t){this.a=t}function t$(t){this.a=t}function lE(t){this.a=t}function SM(t){this.a=t}function jC(t){this.a=t}function e$(t){this.a=t}function n$(t){this.a=t}function Pnt(t){this.a=t}function lp(t){this.a=t}function $C(t){this.a=t}function _M(t){this.a=t}function z2(t){this.a=t}function T0(t){this.e=t}function D4(t){this.a=t}function yVt(t){this.a=t}function k6(t){this.a=t}function M2t(t){this.a=t}function xVt(t){this.a=t}function kVt(t){this.a=t}function EVt(t){this.a=t}function TVt(t){this.a=t}function CVt(t){this.a=t}function SVt(t){this.a=t}function _Vt(t){this.a=t}function AVt(t){this.a=t}function LVt(t){this.a=t}function DVt(t){this.a=t}function MVt(t){this.a=t}function I2t(t){this.a=t}function IVt(t){this.a=t}function OVt(t){this.a=t}function NVt(t){this.a=t}function PVt(t){this.a=t}function FVt(t){this.a=t}function BVt(t){this.a=t}function RVt(t){this.a=t}function jVt(t){this.a=t}function $Vt(t){this.a=t}function zVt(t){this.a=t}function qVt(t){this.a=t}function HVt(t){this.a=t}function VVt(t){this.a=t}function UVt(t){this.a=t}function GVt(t){this.a=t}function KVt(t){this.a=t}function WVt(t){this.a=t}function YVt(t){this.a=t}function XVt(t){this.a=t}function QVt(t){this.a=t}function JVt(t){this.a=t}function ZVt(t){this.a=t}function tUt(t){this.a=t}function eUt(t){this.a=t}function nUt(t){this.a=t}function rUt(t){this.a=t}function iUt(t){this.a=t}function sUt(t){this.a=t}function aUt(t){this.a=t}function oUt(t){this.a=t}function cUt(t){this.a=t}function uUt(t){this.a=t}function lUt(t){this.a=t}function hUt(t){this.a=t}function fUt(t){this.a=t}function dUt(t){this.a=t}function gUt(t){this.a=t}function pUt(t){this.a=t}function bUt(t){this.c=t}function wUt(t){this.b=t}function mUt(t){this.a=t}function vUt(t){this.a=t}function yUt(t){this.a=t}function xUt(t){this.a=t}function kUt(t){this.a=t}function EUt(t){this.a=t}function TUt(t){this.a=t}function CUt(t){this.a=t}function SUt(t){this.a=t}function _Ut(t){this.a=t}function AUt(t){this.a=t}function LUt(t){this.a=t}function DUt(t){this.a=t}function MUt(t){this.a=t}function IUt(t){this.a=t}function OUt(t){this.a=t}function NUt(t){this.a=t}function PUt(t){this.a=t}function FUt(t){this.a=t}function BUt(t){this.a=t}function RUt(t){this.a=t}function jUt(t){this.a=t}function $Ut(t){this.a=t}function zUt(t){this.a=t}function qUt(t){this.a=t}function HUt(t){this.a=t}function VUt(t){this.a=t}function gg(t){this.a=t}function M4(t){this.a=t}function UUt(t){this.a=t}function GUt(t){this.a=t}function KUt(t){this.a=t}function WUt(t){this.a=t}function YUt(t){this.a=t}function XUt(t){this.a=t}function QUt(t){this.a=t}function JUt(t){this.a=t}function ZUt(t){this.a=t}function tGt(t){this.a=t}function eGt(t){this.a=t}function nGt(t){this.a=t}function rGt(t){this.a=t}function iGt(t){this.a=t}function sGt(t){this.a=t}function aGt(t){this.a=t}function oGt(t){this.a=t}function cGt(t){this.a=t}function uGt(t){this.a=t}function lGt(t){this.a=t}function hGt(t){this.a=t}function fGt(t){this.a=t}function dGt(t){this.a=t}function gGt(t){this.a=t}function pGt(t){this.a=t}function bGt(t){this.a=t}function r$(t){this.a=t}function wGt(t){this.f=t}function mGt(t){this.a=t}function vGt(t){this.a=t}function yGt(t){this.a=t}function xGt(t){this.a=t}function kGt(t){this.a=t}function EGt(t){this.a=t}function TGt(t){this.a=t}function CGt(t){this.a=t}function SGt(t){this.a=t}function _Gt(t){this.a=t}function AGt(t){this.a=t}function LGt(t){this.a=t}function DGt(t){this.a=t}function MGt(t){this.a=t}function IGt(t){this.a=t}function OGt(t){this.a=t}function NGt(t){this.a=t}function PGt(t){this.a=t}function FGt(t){this.a=t}function BGt(t){this.a=t}function RGt(t){this.a=t}function jGt(t){this.a=t}function $Gt(t){this.a=t}function zGt(t){this.a=t}function qGt(t){this.a=t}function HGt(t){this.a=t}function VGt(t){this.a=t}function UGt(t){this.a=t}function Fnt(t){this.a=t}function O2t(t){this.a=t}function Oi(t){this.b=t}function GGt(t){this.a=t}function KGt(t){this.a=t}function WGt(t){this.a=t}function YGt(t){this.a=t}function XGt(t){this.a=t}function QGt(t){this.a=t}function JGt(t){this.a=t}function ZGt(t){this.b=t}function tKt(t){this.a=t}function AM(t){this.a=t}function eKt(t){this.a=t}function nKt(t){this.a=t}function N2t(t){this.c=t}function i$(t){this.e=t}function s$(t){this.a=t}function a$(t){this.a=t}function Bnt(t){this.a=t}function rKt(t){this.d=t}function iKt(t){this.a=t}function P2t(t){this.a=t}function F2t(t){this.a=t}function um(t){this.e=t}function vnn(){this.a=0}function _r(){dl(this)}function fe(){Qrt(this)}function Rnt(){zee(this)}function sKt(){}function lm(){this.c=qIt}function aKt(t,e){t.b+=e}function ynn(t,e){e.Wb(t)}function xnn(t){return t.a}function knn(t){return t.a}function Enn(t){return t.a}function Tnn(t){return t.a}function Cnn(t){return t.a}function at(t){return t.e}function Snn(){return null}function _nn(){return null}function Ann(){xwt(),oSn()}function Lnn(t){t.b.Of(t.e)}function oKt(t){t.b=new irt}function zC(t,e){t.b=e-t.b}function qC(t,e){t.a=e-t.a}function In(t,e){t.push(e)}function cKt(t,e){t.sort(e)}function uKt(t,e){e.jd(t.a)}function Dnn(t,e){Xs(e,t)}function Mnn(t,e,n){t.Yd(n,e)}function LM(t,e){t.e=e,e.b=t}function B2t(t){Vd(),this.a=t}function lKt(t){Vd(),this.a=t}function hKt(t){Vd(),this.a=t}function jnt(t){Dm(),this.a=t}function fKt(t){$E(),Aht.le(t)}function R2t(){R2t=V,new _r}function q2(){MJt.call(this)}function j2t(){MJt.call(this)}function $2t(){q2.call(this)}function $nt(){q2.call(this)}function dKt(){q2.call(this)}function DM(){q2.call(this)}function Xu(){q2.call(this)}function E6(){q2.call(this)}function Vr(){q2.call(this)}function Th(){q2.call(this)}function gKt(){q2.call(this)}function cc(){q2.call(this)}function pKt(){q2.call(this)}function bKt(){this.a=this}function o$(){this.Bb|=256}function wKt(){this.b=new TQt}function wy(t,e){t.length=e}function c$(t,e){ge(t.a,e)}function Inn(t,e){h6t(t.c,e)}function Onn(t,e){qs(t.b,e)}function Nnn(t,e){IH(t.a,e)}function Pnn(t,e){jat(t.a,e)}function hE(t,e){Ei(t.e,e)}function T6(t){WH(t.c,t.b)}function Fnn(t,e){t.kc().Nb(e)}function z2t(t){this.a=A2n(t)}function Os(){this.a=new _r}function mKt(){this.a=new _r}function q2t(){this.a=new BYt}function u$(){this.a=new fe}function znt(){this.a=new fe}function H2t(){this.a=new fe}function tf(){this.a=new I2}function H2(){this.a=new dse}function V2t(){this.a=new O2}function U2t(){this.a=new sre}function G2t(){this.a=new wZt}function vKt(){this.a=new fe}function yKt(){this.a=new fe}function xKt(){this.a=new fe}function K2t(){this.a=new fe}function kKt(){this.d=new fe}function EKt(){this.a=new Cre}function TKt(){this.a=new Os}function CKt(){this.a=new _r}function SKt(){this.b=new _r}function _Kt(){this.b=new fe}function W2t(){this.e=new fe}function AKt(){this.a=new Yet}function LKt(){this.d=new fe}function DKt(){Dne.call(this)}function MKt(){Dne.call(this)}function IKt(){fe.call(this)}function Y2t(){$2t.call(this)}function X2t(){u$.call(this)}function OKt(){gz.call(this)}function NKt(){K2t.call(this)}function HC(){sKt.call(this)}function qnt(){HC.call(this)}function C6(){sKt.call(this)}function Q2t(){C6.call(this)}function PKt(){ewt.call(this)}function FKt(){ewt.call(this)}function BKt(){ewt.call(this)}function RKt(){nwt.call(this)}function VC(){Wtt.call(this)}function J2t(){Wtt.call(this)}function Qu(){Ki.call(this)}function jKt(){tWt.call(this)}function $Kt(){tWt.call(this)}function zKt(){_r.call(this)}function qKt(){_r.call(this)}function HKt(){_r.call(this)}function Hnt(){Roe.call(this)}function VKt(){Os.call(this)}function UKt(){o$.call(this)}function Vnt(){Pmt.call(this)}function Z2t(){_r.call(this)}function Unt(){Pmt.call(this)}function Gnt(){_r.call(this)}function GKt(){_r.call(this)}function twt(){E4.call(this)}function KKt(){twt.call(this)}function WKt(){E4.call(this)}function YKt(){kj.call(this)}function ewt(){this.a=new Os}function XKt(){this.a=new _r}function QKt(){this.a=new fe}function nwt(){this.a=new _r}function S6(){this.a=new Ki}function JKt(){this.j=new fe}function ZKt(){this.a=new QWt}function tWt(){this.a=new Qtt}function rwt(){this.a=new Xi}function UC(){UC=V,yht=new _}function Knt(){Knt=V,xht=new nWt}function Wnt(){Wnt=V,kht=new eWt}function eWt(){sE.call(this,"")}function nWt(){sE.call(this,"")}function rWt(t){ooe.call(this,t)}function iWt(t){ooe.call(this,t)}function iwt(t){qj.call(this,t)}function swt(t){SYt.call(this,t)}function Bnn(t){SYt.call(this,t)}function Rnn(t){swt.call(this,t)}function jnn(t){swt.call(this,t)}function $nn(t){swt.call(this,t)}function sWt(t){Sst.call(this,t)}function aWt(t){Sst.call(this,t)}function oWt(t){jZt.call(this,t)}function cWt(t){Awt.call(this,t)}function GC(t){y$.call(this,t)}function awt(t){y$.call(this,t)}function uWt(t){y$.call(this,t)}function owt(t){c4n.call(this,t)}function cwt(t){owt.call(this,t)}function uc(t){aee.call(this,t)}function lWt(t){uc.call(this,t)}function _6(){uE.call(this,{})}function hWt(){hWt=V,Kve=new K}function l$(){l$=V,Cht=new oJt}function fWt(){fWt=V,r9t=new S}function uwt(){uwt=V,i9t=new ct}function h$(){h$=V,mA=new gt}function Ynt(t){EE(),this.a=t}function Xnt(t){F4t(),this.a=t}function my(t){Nit(),this.f=t}function Qnt(t){Nit(),this.f=t}function dWt(t){KZt(),this.a=t}function gWt(t){t.b=null,t.c=0}function znn(t,e){t.e=e,Wde(t,e)}function qnn(t,e){t.a=e,Y4n(t)}function Jnt(t,e,n){t.a[e.g]=n}function Hnn(t,e,n){lyn(n,t,e)}function Vnn(t,e){jan(e.i,t.n)}function pWt(t,e){ubn(t).Cd(e)}function Unn(t,e){t.a.ec().Mc(e)}function bWt(t,e){return t.g-e.g}function Gnn(t,e){return t*t/e}function Ie(t){return Wn(t),t}function Rt(t){return Wn(t),t}function MM(t){return Wn(t),t}function Knn(t){return new cE(t)}function Wnn(t){return new Oy(t)}function lwt(t){return Wn(t),t}function Ynn(t){return Wn(t),t}function f$(t){uc.call(this,t)}function Bo(t){uc.call(this,t)}function wWt(t){uc.call(this,t)}function Znt(t){aee.call(this,t)}function fE(t){uc.call(this,t)}function zn(t){uc.call(this,t)}function Ro(t){uc.call(this,t)}function mWt(t){uc.call(this,t)}function A6(t){uc.call(this,t)}function hp(t){uc.call(this,t)}function fp(t){uc.call(this,t)}function L6(t){uc.call(this,t)}function Rd(t){uc.call(this,t)}function trt(t){uc.call(this,t)}function Yr(t){uc.call(this,t)}function hl(t){Wn(t),this.a=t}function hwt(t){return cw(t),t}function KC(t){Eyt(t,t.length)}function WC(t){return t.b==t.c}function vy(t){return!!t&&t.b}function Xnn(t){return!!t&&t.k}function Qnn(t){return!!t&&t.j}function Jnn(t,e,n){t.c.Ef(e,n)}function vWt(t,e){t.be(e),e.ae(t)}function D6(t){Vd(),this.a=Hr(t)}function ert(){this.a=Gr(Hr(ao))}function yWt(){throw at(new Vr)}function Znn(){throw at(new Vr)}function fwt(){throw at(new Vr)}function xWt(){throw at(new Vr)}function trn(){throw at(new Vr)}function ern(){throw at(new Vr)}function d$(){d$=V,$E()}function dp(){Sr.call(this,"")}function YC(){Sr.call(this,"")}function yb(){Sr.call(this,"")}function I4(){Sr.call(this,"")}function dwt(t){Bo.call(this,t)}function gwt(t){Bo.call(this,t)}function jd(t){zn.call(this,t)}function dE(t){Ta.call(this,t)}function kWt(t){dE.call(this,t)}function nrt(t){uz.call(this,t)}function rrt(t){Kmt.call(this,t,0)}function irt(){s3t.call(this,12,3)}function ut(t,e){return Zne(t,e)}function g$(t,e){return zst(t,e)}function nrn(t,e){return t.a-e.a}function rrn(t,e){return t.a-e.a}function irn(t,e){return t.a-e.a}function srn(t,e){return e in t.a}function EWt(t){return t.a?t.b:0}function arn(t){return t.a?t.b:0}function orn(t,e,n){e.Cd(t.a[n])}function crn(t,e,n){e.Pe(t.a[n])}function urn(t,e){t.b=new io(e)}function lrn(t,e){return t.b=e,t}function TWt(t,e){return t.c=e,t}function CWt(t,e){return t.f=e,t}function hrn(t,e){return t.g=e,t}function pwt(t,e){return t.a=e,t}function bwt(t,e){return t.f=e,t}function frn(t,e){return t.k=e,t}function wwt(t,e){return t.a=e,t}function drn(t,e){return t.e=e,t}function mwt(t,e){return t.e=e,t}function grn(t,e){return t.f=e,t}function prn(t,e){t.b=!0,t.d=e}function brn(t,e){return t.b-e.b}function wrn(t,e){return t.g-e.g}function mrn(t,e){return t?0:e-1}function SWt(t,e){return t?0:e-1}function vrn(t,e){return t?e-1:0}function yrn(t,e){return t.s-e.s}function xrn(t,e){return e.rg(t)}function hm(t,e){return t.b=e,t}function p$(t,e){return t.a=e,t}function fm(t,e){return t.c=e,t}function dm(t,e){return t.d=e,t}function gm(t,e){return t.e=e,t}function vwt(t,e){return t.f=e,t}function XC(t,e){return t.a=e,t}function gE(t,e){return t.b=e,t}function pE(t,e){return t.c=e,t}function Ve(t,e){return t.c=e,t}function fn(t,e){return t.b=e,t}function Ue(t,e){return t.d=e,t}function Ge(t,e){return t.e=e,t}function krn(t,e){return t.f=e,t}function Ke(t,e){return t.g=e,t}function We(t,e){return t.a=e,t}function Ye(t,e){return t.i=e,t}function Xe(t,e){return t.j=e,t}function Ern(t,e){Vb(),hc(e,t)}function Trn(t,e,n){$un(t.a,e,n)}function b$(t){pit.call(this,t)}function _Wt(t){H2n.call(this,t)}function AWt(t){one.call(this,t)}function ywt(t){one.call(this,t)}function xb(t){$m.call(this,t)}function LWt(t){ist.call(this,t)}function DWt(t){ist.call(this,t)}function MWt(){Lmt.call(this,"")}function Sa(){this.a=0,this.b=0}function IWt(){this.b=0,this.a=0}function OWt(t,e){t.b=0,Hy(t,e)}function NWt(t,e){return t.k=e,t}function Crn(t,e){return t.j=e,t}function Srn(t,e){t.c=e,t.b=!0}function PWt(){PWt=V,aye=Byn()}function kb(){kb=V,Z7e=Wvn()}function FWt(){FWt=V,da=a3n()}function xwt(){xwt=V,b2=e7()}function bE(){bE=V,zIt=Yvn()}function BWt(){BWt=V,BTe=Xvn()}function kwt(){kwt=V,Bc=G4n()}function y1(t){return t.e&&t.e()}function RWt(t){return t.l|t.m<<22}function jWt(t,e){return t.c._b(e)}function $Wt(t,e){return Bue(t.b,e)}function srt(t){return t?t.d:null}function _rn(t){return t?t.g:null}function Arn(t){return t?t.i:null}function V2(t){return wg(t),t.o}function O4(t,e){return t.a+=e,t}function art(t,e){return t.a+=e,t}function gp(t,e){return t.a+=e,t}function pm(t,e){return t.a+=e,t}function Ewt(t,e){for(;t.Bd(e););}function w$(t){this.a=new M6(t)}function zWt(){throw at(new Vr)}function qWt(){throw at(new Vr)}function HWt(){throw at(new Vr)}function VWt(){throw at(new Vr)}function UWt(){throw at(new Vr)}function GWt(){throw at(new Vr)}function pp(t){this.a=new Bit(t)}function KWt(){this.a=new L_(PLt)}function WWt(){this.b=new L_(tLt)}function YWt(){this.a=new L_(sDt)}function XWt(){this.b=new L_(bdt)}function QWt(){this.b=new L_(bdt)}function m$(t){this.a=0,this.b=t}function Twt(t){Spe(),ySn(this,t)}function wE(t){return Mb(t),t.a}function IM(t){return t.b!=t.d.c}function Cwt(t,e){return t.d[e.p]}function JWt(t,e){return Bkn(t,e)}function Swt(t,e,n){t.splice(e,n)}function N4(t,e){for(;t.Re(e););}function ZWt(t){t.c?f0e(t):d0e(t)}function tYt(){throw at(new Vr)}function eYt(){throw at(new Vr)}function nYt(){throw at(new Vr)}function rYt(){throw at(new Vr)}function iYt(){throw at(new Vr)}function sYt(){throw at(new Vr)}function aYt(){throw at(new Vr)}function oYt(){throw at(new Vr)}function cYt(){throw at(new Vr)}function uYt(){throw at(new Vr)}function Lrn(){throw at(new cc)}function Drn(){throw at(new cc)}function OM(t){this.a=new lYt(t)}function lYt(t){Ngn(this,t,f4n())}function NM(t){return!t||$ee(t)}function PM(t){return _d[t]!=-1}function Mrn(){MU!=0&&(MU=0),IU=-1}function hYt(){vht==null&&(vht=[])}function FM(t,e){W4.call(this,t,e)}function mE(t,e){FM.call(this,t,e)}function fYt(t,e){this.a=t,this.b=e}function dYt(t,e){this.a=t,this.b=e}function gYt(t,e){this.a=t,this.b=e}function pYt(t,e){this.a=t,this.b=e}function bYt(t,e){this.a=t,this.b=e}function wYt(t,e){this.a=t,this.b=e}function mYt(t,e){this.a=t,this.b=e}function vE(t,e){this.e=t,this.d=e}function _wt(t,e){this.b=t,this.c=e}function vYt(t,e){this.b=t,this.a=e}function yYt(t,e){this.b=t,this.a=e}function xYt(t,e){this.b=t,this.a=e}function kYt(t,e){this.b=t,this.a=e}function EYt(t,e){this.a=t,this.b=e}function ort(t,e){this.a=t,this.b=e}function TYt(t,e){this.a=t,this.f=e}function bm(t,e){this.g=t,this.i=e}function Rr(t,e){this.f=t,this.g=e}function CYt(t,e){this.b=t,this.c=e}function SYt(t){Bmt(t.dc()),this.c=t}function Irn(t,e){this.a=t,this.b=e}function _Yt(t,e){this.a=t,this.b=e}function AYt(t){this.a=u(Hr(t),15)}function Awt(t){this.a=u(Hr(t),15)}function LYt(t){this.a=u(Hr(t),85)}function v$(t){this.b=u(Hr(t),85)}function y$(t){this.b=u(Hr(t),51)}function x$(){this.q=new b.Date}function crt(t,e){this.a=t,this.b=e}function DYt(t,e){return Tu(t.b,e)}function BM(t,e){return t.b.Hc(e)}function MYt(t,e){return t.b.Ic(e)}function IYt(t,e){return t.b.Qc(e)}function OYt(t,e){return t.b.Hc(e)}function NYt(t,e){return t.c.uc(e)}function PYt(t,e){return Ti(t.c,e)}function x1(t,e){return t.a._b(e)}function FYt(t,e){return t>e&&e0}function grt(t,e){return $c(t,e)<0}function JYt(t,e){return Dit(t.a,e)}function Qrn(t,e){tre.call(this,t,e)}function Pwt(t){Yit(),jZt.call(this,t)}function Fwt(t,e){Kte(t,t.length,e)}function zM(t,e){xee(t,t.length,e)}function iS(t,e){return t.a.get(e)}function ZYt(t,e){return Tu(t.e,e)}function Bwt(t){return Wn(t),!1}function Rwt(t){this.a=u(Hr(t),229)}function D$(t){gn.call(this,t,21)}function M$(t,e){Rr.call(this,t,e)}function prt(t,e){Rr.call(this,t,e)}function tXt(t,e){this.b=t,this.a=e}function I$(t,e){this.d=t,this.e=e}function eXt(t,e){this.a=t,this.b=e}function nXt(t,e){this.a=t,this.b=e}function rXt(t,e){this.a=t,this.b=e}function iXt(t,e){this.a=t,this.b=e}function O6(t,e){this.a=t,this.b=e}function sXt(t,e){this.b=t,this.a=e}function jwt(t,e){this.b=t,this.a=e}function $wt(t,e){Rr.call(this,t,e)}function zwt(t,e){Rr.call(this,t,e)}function P4(t,e){Rr.call(this,t,e)}function brt(t,e){Rr.call(this,t,e)}function wrt(t,e){Rr.call(this,t,e)}function mrt(t,e){Rr.call(this,t,e)}function O$(t,e){Rr.call(this,t,e)}function qwt(t,e){this.b=t,this.a=e}function N$(t,e){Rr.call(this,t,e)}function Hwt(t,e){this.b=t,this.a=e}function P$(t,e){Rr.call(this,t,e)}function aXt(t,e){this.b=t,this.a=e}function Vwt(t,e){Rr.call(this,t,e)}function vrt(t,e){Rr.call(this,t,e)}function qM(t,e){Rr.call(this,t,e)}function sS(t,e,n){t.splice(e,0,n)}function Jrn(t,e,n){t.Mb(n)&&e.Cd(n)}function Zrn(t,e,n){e.Pe(t.a.Ye(n))}function tin(t,e,n){e.Dd(t.a.Ze(n))}function ein(t,e,n){e.Cd(t.a.Kb(n))}function nin(t,e){return Zu(t.c,e)}function rin(t,e){return Zu(t.e,e)}function F$(t,e){Rr.call(this,t,e)}function B$(t,e){Rr.call(this,t,e)}function aS(t,e){Rr.call(this,t,e)}function Uwt(t,e){Rr.call(this,t,e)}function Ns(t,e){Rr.call(this,t,e)}function R$(t,e){Rr.call(this,t,e)}function oXt(t,e){this.a=t,this.b=e}function cXt(t,e){this.a=t,this.b=e}function uXt(t,e){this.a=t,this.b=e}function lXt(t,e){this.a=t,this.b=e}function hXt(t,e){this.a=t,this.b=e}function fXt(t,e){this.a=t,this.b=e}function dXt(t,e){this.b=t,this.a=e}function gXt(t,e){this.b=t,this.a=e}function Gwt(t,e){this.b=t,this.a=e}function kE(t,e){this.c=t,this.d=e}function pXt(t,e){this.e=t,this.d=e}function bXt(t,e){this.a=t,this.b=e}function wXt(t,e){this.a=t,this.b=e}function mXt(t,e){this.a=t,this.b=e}function vXt(t,e){this.b=t,this.a=e}function yXt(t,e){this.b=e,this.c=t}function j$(t,e){Rr.call(this,t,e)}function HM(t,e){Rr.call(this,t,e)}function yrt(t,e){Rr.call(this,t,e)}function Kwt(t,e){Rr.call(this,t,e)}function oS(t,e){Rr.call(this,t,e)}function xrt(t,e){Rr.call(this,t,e)}function krt(t,e){Rr.call(this,t,e)}function VM(t,e){Rr.call(this,t,e)}function Wwt(t,e){Rr.call(this,t,e)}function Ert(t,e){Rr.call(this,t,e)}function cS(t,e){Rr.call(this,t,e)}function Ywt(t,e){Rr.call(this,t,e)}function uS(t,e){Rr.call(this,t,e)}function lS(t,e){Rr.call(this,t,e)}function ky(t,e){Rr.call(this,t,e)}function Trt(t,e){Rr.call(this,t,e)}function Crt(t,e){Rr.call(this,t,e)}function Xwt(t,e){Rr.call(this,t,e)}function UM(t,e){Rr.call(this,t,e)}function F4(t,e){Rr.call(this,t,e)}function Srt(t,e){Rr.call(this,t,e)}function $$(t,e){Rr.call(this,t,e)}function GM(t,e){Rr.call(this,t,e)}function Ey(t,e){Rr.call(this,t,e)}function z$(t,e){Rr.call(this,t,e)}function Qwt(t,e){Rr.call(this,t,e)}function _rt(t,e){Rr.call(this,t,e)}function Art(t,e){Rr.call(this,t,e)}function Lrt(t,e){Rr.call(this,t,e)}function Drt(t,e){Rr.call(this,t,e)}function Mrt(t,e){Rr.call(this,t,e)}function Irt(t,e){Rr.call(this,t,e)}function Ort(t,e){Rr.call(this,t,e)}function xXt(t,e){this.b=t,this.a=e}function Jwt(t,e){Rr.call(this,t,e)}function kXt(t,e){this.a=t,this.b=e}function EXt(t,e){this.a=t,this.b=e}function TXt(t,e){this.a=t,this.b=e}function Zwt(t,e){Rr.call(this,t,e)}function tmt(t,e){Rr.call(this,t,e)}function CXt(t,e){this.a=t,this.b=e}function iin(t,e){return LE(),e!=t}function KM(t){return ur(t.a),t.b}function Nrt(t){return hxn(t,t.c),t}function SXt(){return PWt(),new aye}function _Xt(){vz(),this.a=new wvt}function AXt(){rV(),this.a=new Os}function LXt(){gst(),this.b=new Os}function DXt(t,e){this.b=t,this.d=e}function MXt(t,e){this.a=t,this.b=e}function IXt(t,e){this.a=t,this.b=e}function OXt(t,e){this.a=t,this.b=e}function NXt(t,e){this.b=t,this.a=e}function emt(t,e){Rr.call(this,t,e)}function nmt(t,e){Rr.call(this,t,e)}function q$(t,e){Rr.call(this,t,e)}function mm(t,e){Rr.call(this,t,e)}function Prt(t,e){Rr.call(this,t,e)}function H$(t,e){Rr.call(this,t,e)}function rmt(t,e){Rr.call(this,t,e)}function imt(t,e){Rr.call(this,t,e)}function WM(t,e){Rr.call(this,t,e)}function smt(t,e){Rr.call(this,t,e)}function Frt(t,e){Rr.call(this,t,e)}function V$(t,e){Rr.call(this,t,e)}function Brt(t,e){Rr.call(this,t,e)}function Rrt(t,e){Rr.call(this,t,e)}function jrt(t,e){Rr.call(this,t,e)}function $rt(t,e){Rr.call(this,t,e)}function amt(t,e){Rr.call(this,t,e)}function zrt(t,e){Rr.call(this,t,e)}function omt(t,e){Rr.call(this,t,e)}function YM(t,e){Rr.call(this,t,e)}function qrt(t,e){Rr.call(this,t,e)}function cmt(t,e){Rr.call(this,t,e)}function XM(t,e){Rr.call(this,t,e)}function umt(t,e){Rr.call(this,t,e)}function PXt(t,e){this.b=t,this.a=e}function FXt(t,e){this.b=t,this.a=e}function BXt(t,e){this.b=t,this.a=e}function RXt(t,e){this.b=t,this.a=e}function lmt(t,e){this.a=t,this.b=e}function jXt(t,e){this.a=t,this.b=e}function $Xt(t,e){this.a=t,this.b=e}function ae(t,e){this.a=t,this.b=e}function hS(t,e){Rr.call(this,t,e)}function QM(t,e){Rr.call(this,t,e)}function N6(t,e){Rr.call(this,t,e)}function fS(t,e){Rr.call(this,t,e)}function JM(t,e){Rr.call(this,t,e)}function Hrt(t,e){Rr.call(this,t,e)}function U$(t,e){Rr.call(this,t,e)}function dS(t,e){Rr.call(this,t,e)}function Vrt(t,e){Rr.call(this,t,e)}function G$(t,e){Rr.call(this,t,e)}function B4(t,e){Rr.call(this,t,e)}function ZM(t,e){Rr.call(this,t,e)}function gS(t,e){Rr.call(this,t,e)}function pS(t,e){Rr.call(this,t,e)}function tI(t,e){Rr.call(this,t,e)}function K$(t,e){Rr.call(this,t,e)}function R4(t,e){Rr.call(this,t,e)}function Urt(t,e){Rr.call(this,t,e)}function zXt(t,e){Rr.call(this,t,e)}function W$(t,e){Rr.call(this,t,e)}function qXt(t,e){this.a=t,this.b=e}function HXt(t,e){this.a=t,this.b=e}function VXt(t,e){this.a=t,this.b=e}function UXt(t,e){this.a=t,this.b=e}function GXt(t,e){this.a=t,this.b=e}function KXt(t,e){this.a=t,this.b=e}function Ws(t,e){this.a=t,this.b=e}function WXt(t,e){this.a=t,this.b=e}function YXt(t,e){this.a=t,this.b=e}function XXt(t,e){this.a=t,this.b=e}function QXt(t,e){this.a=t,this.b=e}function JXt(t,e){this.a=t,this.b=e}function ZXt(t,e){this.a=t,this.b=e}function tQt(t,e){this.b=t,this.a=e}function eQt(t,e){this.b=t,this.a=e}function nQt(t,e){this.b=t,this.a=e}function rQt(t,e){this.b=t,this.a=e}function iQt(t,e){this.a=t,this.b=e}function sQt(t,e){this.a=t,this.b=e}function Y$(t,e){Rr.call(this,t,e)}function aQt(t,e){this.a=t,this.b=e}function oQt(t,e){this.a=t,this.b=e}function P6(t,e){Rr.call(this,t,e)}function cQt(t,e){this.f=t,this.c=e}function hmt(t,e){return Zu(t.g,e)}function sin(t,e){return Zu(e.b,t)}function uQt(t,e){return Yat(t.a,e)}function ain(t,e){return-t.b.af(e)}function oin(t,e){t&&hi(VP,t,e)}function fmt(t,e){t.i=null,Gq(t,e)}function cin(t,e,n){tfe(e,zot(t,n))}function uin(t,e,n){tfe(e,zot(t,n))}function lin(t,e){R6n(t.a,u(e,58))}function lQt(t,e){N0n(t.a,u(e,12))}function X$(t,e){this.a=t,this.b=e}function hQt(t,e){this.a=t,this.b=e}function fQt(t,e){this.a=t,this.b=e}function dQt(t,e){this.a=t,this.b=e}function gQt(t,e){this.a=t,this.b=e}function pQt(t,e){this.d=t,this.b=e}function bQt(t,e){this.e=t,this.a=e}function eI(t,e){this.b=t,this.c=e}function dmt(t,e){this.i=t,this.g=e}function gmt(t,e){this.d=t,this.e=e}function hin(t,e){Y0n(new Zn(t),e)}function Q$(t){return wO(t.c,t.b)}function Ko(t){return t?t.md():null}function $t(t){return t??null}function ba(t){return typeof t===Nct}function Ty(t){return typeof t===kk}function Cy(t){return typeof t===u8t}function vm(t,e){return $c(t,e)==0}function J$(t,e){return $c(t,e)>=0}function bS(t,e){return $c(t,e)!=0}function Z$(t,e){return fpn(t.Kc(),e)}function Cb(t,e){return t.Rd().Xb(e)}function wQt(t){return Ll(t),t.d.gc()}function tz(t){return AS(t==null),t}function wS(t,e){return t.a+=""+e,t}function Mo(t,e){return t.a+=""+e,t}function mS(t,e){return t.a+=""+e,t}function tu(t,e){return t.a+=""+e,t}function ni(t,e){return t.a+=""+e,t}function pmt(t,e){return t.a+=""+e,t}function fin(t){return""+(Wn(t),t)}function mQt(t){dl(this),t_(this,t)}function vQt(){i3t(),lyt.call(this)}function yQt(t,e){pyt.call(this,t,e)}function xQt(t,e){pyt.call(this,t,e)}function ez(t,e){pyt.call(this,t,e)}function ro(t,e){hs(t,e,t.c.b,t.c)}function j4(t,e){hs(t,e,t.a,t.a.a)}function bmt(t){return vn(t,0),null}function kQt(){this.b=0,this.a=!1}function EQt(){this.b=0,this.a=!1}function TQt(){this.b=new M6(zy(12))}function CQt(){CQt=V,t3e=$r(not())}function SQt(){SQt=V,k4e=$r(Bde())}function _Qt(){_Qt=V,Uke=$r(pce())}function wmt(){wmt=V,R2t(),s9t=new _r}function k1(t){return t.a=0,t.b=0,t}function AQt(t,e){return t.a=e.g+1,t}function Grt(t,e){Dy.call(this,t,e)}function un(t,e){rs.call(this,t,e)}function $4(t,e){dmt.call(this,t,e)}function LQt(t,e){sI.call(this,t,e)}function Krt(t,e){o7.call(this,t,e)}function ui(t,e){A$(),hi(KK,t,e)}function DQt(t,e){t.q.setTime(tw(e))}function din(t){b.clearTimeout(t)}function gin(t){return Hr(t),new vS(t)}function MQt(t,e){return $t(t)===$t(e)}function IQt(t,e){return t.a.a.a.cc(e)}function Wrt(t,e){return Lh(t.a,0,e)}function mmt(t){return wln(u(t,74))}function F6(t){return Ys((Wn(t),t))}function pin(t){return Ys((Wn(t),t))}function OQt(t){return Eu(t.l,t.m,t.h)}function vmt(t,e){return jc(t.a,e.a)}function bin(t,e){return vee(t.a,e.a)}function win(t,e){return Bi(t.a,e.a)}function $d(t,e){return t.indexOf(e)}function min(t,e){return t.j[e.p]==2}function ym(t,e){return t==e?0:t?1:-1}function nz(t){return t<10?"0"+t:""+t}function ec(t){return typeof t===u8t}function vin(t){return t==bv||t==y3}function yin(t){return t==bv||t==v3}function NQt(t,e){return jc(t.g,e.g)}function ymt(t){return Xo(t.b.b,t,0)}function PQt(){Lz.call(this,0,0,0,0)}function zd(){hr.call(this,new kp)}function xmt(t,e){GE(t,0,t.length,e)}function xin(t,e){return ge(t.a,e),e}function kin(t,e){return Bf(),e.a+=t}function Ein(t,e){return Bf(),e.a+=t}function Tin(t,e){return Bf(),e.c+=t}function Cin(t,e){return ge(t.c,e),t}function kmt(t,e){return ch(t.a,e),t}function FQt(t){this.a=SXt(),this.b=t}function BQt(t){this.a=SXt(),this.b=t}function io(t){this.a=t.a,this.b=t.b}function vS(t){this.a=t,DC.call(this)}function RQt(t){this.a=t,DC.call(this)}function B6(){Ah.call(this,0,0,0,0)}function rz(t){return ch(new Fs,t)}function jQt(t){return Kz(u(t,123))}function Hl(t){return t.vh()&&t.wh()}function z4(t){return t!=Td&&t!=d2}function bg(t){return t==Uo||t==tc}function q4(t){return t==Gh||t==kd}function $Qt(t){return t==J5||t==Q5}function Sin(t,e){return jc(t.g,e.g)}function zQt(t,e){return new o7(e,t)}function _in(t,e){return new o7(e,t)}function Emt(t){return Wcn(t.b.Kc(),t.a)}function Yrt(t,e){p7(t,e),t7(t,t.D)}function Xrt(t,e,n){Rq(t,e),Bq(t,n)}function H4(t,e,n){qm(t,e),zm(t,n)}function Ch(t,e,n){Su(t,e),_u(t,n)}function nI(t,e,n){XE(t,e),JE(t,n)}function rI(t,e,n){QE(t,e),ZE(t,n)}function qQt(t,e,n){svt.call(this,t,e,n)}function Tmt(t){cQt.call(this,t,!0)}function HQt(){M$.call(this,"Tail",3)}function VQt(){M$.call(this,"Head",1)}function Sb(t){Xd(),cpn.call(this,t)}function xm(t){Lz.call(this,t,t,t,t)}function Qrt(t){t.c=Vt(aa,Ln,1,0,5,1)}function Cmt(t){return t.b&&bct(t),t.a}function Smt(t){return t.b&&bct(t),t.c}function Ain(t,e){wd||(t.b=e)}function Lin(t,e){return t[t.length]=e}function Din(t,e){return t[t.length]=e}function Min(t,e){return qy(e,ed(t))}function Iin(t,e){return qy(e,ed(t))}function Oin(t,e){return Hq(Kit(t.d),e)}function Nin(t,e){return Hq(Kit(t.g),e)}function Pin(t,e){return Hq(Kit(t.j),e)}function _a(t,e){rs.call(this,t.b,e)}function Fin(t,e){Or(Wc(t.a),hre(e))}function Bin(t,e){Or(Al(t.a),fre(e))}function Rin(t,e,n){Ch(n,n.i+t,n.j+e)}function UQt(t,e,n){ls(t.c[e.g],e.g,n)}function jin(t,e,n){u(t.c,71).Gi(e,n)}function Jrt(t,e,n){return ls(t,e,n),n}function GQt(t){Cu(t.Sf(),new Int(t))}function V4(t){return t!=null?$i(t):0}function $in(t){return t==null?0:$i(t)}function yS(t){yi(),um.call(this,t)}function KQt(t){this.a=t,$vt.call(this,t)}function Z1(){Z1=V,b.Math.log(2)}function Sh(){Sh=V,Q0=(XYt(),sTe)}function WQt(){WQt=V,I1t=new d_(Udt)}function Ur(){Ur=V,new YQt,new fe}function YQt(){new _r,new _r,new _r}function zin(){throw at(new hp(Mve))}function qin(){throw at(new hp(Mve))}function Hin(){throw at(new hp(Ive))}function Vin(){throw at(new hp(Ive))}function Zrt(t){this.a=t,v$.call(this,t)}function tit(t){this.a=t,v$.call(this,t)}function XQt(t,e){Dm(),this.a=t,this.b=e}function Uin(t,e){Hr(e),X4(t).Jc(new ot)}function Ds(t,e){Mit(t.c,t.c.length,e)}function lc(t){return t.ae?1:0}function Amt(t,e){return $c(t,e)>0?t:e}function Eu(t,e,n){return{l:t,m:e,h:n}}function Gin(t,e){t.a!=null&&lQt(e,t.a)}function Kin(t){Xa(t,null),xa(t,null)}function Win(t,e,n){return hi(t.g,n,e)}function U4(t,e,n){return Q5t(e,n,t.c)}function Yin(t,e,n){return hi(t.k,n,e)}function Xin(t,e,n){return P9n(t,e,n),n}function Qin(t,e){return rh(),e.n.b+=t}function JQt(t){Qyt.call(this),this.b=t}function Lmt(t){bvt.call(this),this.a=t}function ZQt(){M$.call(this,"Range",2)}function iz(t){this.b=t,this.a=new fe}function tJt(t){this.b=new pu,this.a=t}function eJt(t){t.a=new Ae,t.c=new Ae}function nJt(t){t.a=new _r,t.d=new _r}function rJt(t){pst(t,null),bst(t,null)}function iJt(t,e){return B9n(t.a,e,null)}function Jin(t,e){return hi(t.a,e.a,e)}function Oa(t){return new ae(t.a,t.b)}function Dmt(t){return new ae(t.c,t.d)}function Zin(t){return new ae(t.c,t.d)}function xS(t,e){return YTn(t.c,t.b,e)}function Lt(t,e){return t!=null&&aot(t,e)}function eit(t,e){return qpn(t.Kc(),e)!=-1}function sz(t){return t.Ob()?t.Pb():null}function tsn(t){this.b=(mn(),new Kn(t))}function Mmt(t){this.a=t,_r.call(this)}function sJt(){sI.call(this,null,null)}function aJt(){fz.call(this,null,null)}function oJt(){Rr.call(this,"INSTANCE",0)}function cJt(){Dxt(),this.a=new L_(SCt)}function uJt(t){return af(t,0,t.length)}function esn(t,e){return new _Jt(t.Kc(),e)}function Imt(t,e){return t.a.Bc(e)!=null}function lJt(t,e){Ir(t),t.Gc(u(e,15))}function nsn(t,e,n){t.c.bd(e,u(n,136))}function rsn(t,e,n){t.c.Ui(e,u(n,136))}function hJt(t,e){t.c&&(Zvt(e),Bne(e))}function isn(t,e){t.q.setHours(e),N_(t,e)}function ssn(t,e){Tm(e,t.a.a.a,t.a.a.b)}function asn(t,e,n,r){ls(t.a[e.g],n.g,r)}function nit(t,e,n){return t.a[e.g][n.g]}function osn(t,e){return t.e[e.c.p][e.p]}function csn(t,e){return t.c[e.c.p][e.p]}function td(t,e){return t.a[e.c.p][e.p]}function usn(t,e){return t.j[e.p]=y6n(e)}function rit(t,e){return t.a.Bc(e)!=null}function lsn(t,e){return Rt(Ht(e.a))<=t}function hsn(t,e){return Rt(Ht(e.a))>=t}function fsn(t,e){return F3t(t.f,e.Pg())}function R6(t,e){return t.a*e.a+t.b*e.b}function dsn(t,e){return t.a<_vt(e)?-1:1}function gsn(t,e){return F3t(t.b,e.Pg())}function psn(t,e,n){return n?e!=0:e!=t-1}function fJt(t,e,n){t.a=e^1502,t.b=n^dut}function bsn(t,e,n){return t.a=e,t.b=n,t}function qd(t,e){return t.a*=e,t.b*=e,t}function ge(t,e){return In(t.c,e),!0}function kS(t,e,n){return ls(t.g,e,n),n}function Ps(t,e,n){mI.call(this,t,e,n)}function az(t,e,n){Ps.call(this,t,e,n)}function Omt(t,e,n){kz.call(this,t,e,n)}function dJt(t,e,n){kz.call(this,t,e,n)}function gJt(t,e,n){Omt.call(this,t,e,n)}function Ju(t,e,n){Ps.call(this,t,e,n)}function pJt(t,e,n){az.call(this,t,e,n)}function Nmt(t,e,n){mI.call(this,t,e,n)}function G4(t,e,n){mI.call(this,t,e,n)}function bJt(t,e,n){Nmt.call(this,t,e,n)}function oz(t){t.j=Vt(m9t,ue,319,0,0,1)}function K4(){this.a=Vt(aa,Ln,1,8,5,1)}function Pmt(){this.Bb|=256,this.Bb|=512}function Zn(t){this.i=t,this.f=this.i.j}function _b(t){this.c=t,this.a=this.c.a}function W4(t,e){this.a=t,v$.call(this,e)}function Fmt(t,e){return I2n(t,new yb,e).a}function Bmt(t){if(!t)throw at(new DM)}function Rmt(t){if(!t)throw at(new Xu)}function jmt(){jmt=V,jmt(),uye=new sn}function wJt(){wJt=V,hrt(),NTe=new Bj}function EE(){EE=V,A9t=new Ynt(null)}function wsn(t){SI(t,sme),ZH(t,PCn(t))}function mJt(t){t.a=u(jn(t.b.a,4),129)}function vJt(t){t.a=u(jn(t.b.a,4),129)}function yJt(t){t.b.Qb(),--t.d.f.d,Nz(t.d)}function $mt(t){this.a=t,dg.call(this,t.d)}function xJt(t,e){this.a=t,rrt.call(this,e)}function kJt(t,e){this.a=t,rrt.call(this,e)}function EJt(t,e){this.a=t,rrt.call(this,e)}function zmt(t,e){this.a=e,rrt.call(this,t)}function TJt(t,e){this.a=e,Sst.call(this,t)}function CJt(t,e){this.a=t,Sst.call(this,e)}function SJt(t,e){this.a=e,y$.call(this,t)}function _Jt(t,e){this.a=e,y$.call(this,t)}function sr(t,e){return Hr(e),new SJt(t,e)}function AJt(t,e){return new Zfe(t.a,t.b,e)}function qmt(t,e,n){return t.indexOf(e,n)}function cz(t,e){return t.lastIndexOf(e)}function ES(t){return t==null?Vu:rc(t)}function msn(t){return t==null?null:t.name}function vsn(t){return t.l+t.m*Sk+t.h*bw}function ysn(t){return IM(t.a)?dre(t):null}function ef(t){Sr.call(this,(Wn(t),t))}function eh(t){Sr.call(this,(Wn(t),t))}function LJt(t){sE.call(this,u(Hr(t),34))}function DJt(t){sE.call(this,u(Hr(t),34))}function iit(t){hr.call(this,new U3t(t))}function uz(t){Ta.call(this,t),this.a=t}function Hmt(t){eo.call(this,t),this.a=t}function Vmt(t){dE.call(this,t),this.a=t}function MJt(){oz(this),Xz(this),this.je()}function IJt(t){this.a=t,Es.call(this,t)}function Vl(t){return ur(t.a!=null),t.a}function OJt(t,e){return ge(e.a,t.a),t.a}function NJt(t,e){return ge(e.b,t.a),t.a}function km(t,e){return ge(e.a,t.a),t.a}function iI(t,e,n){return dat(t,e,e,n),t}function lz(t,e){return++t.b,ge(t.a,e)}function Umt(t,e){return++t.b,zu(t.a,e)}function xsn(t,e){return Bi(t.c.d,e.c.d)}function ksn(t,e){return Bi(t.c.c,e.c.c)}function Esn(t,e){return Bi(t.n.a,e.n.a)}function ju(t,e){return u(Ai(t.b,e),15)}function Tsn(t,e){return t.n.b=(Wn(e),e)}function Csn(t,e){return t.n.b=(Wn(e),e)}function Zu(t,e){return!!e&&t.b[e.g]==e}function TS(t){return lc(t.a)||lc(t.b)}function Em(t){return t.$H||(t.$H=++i_n)}function Ssn(t){return t.a!=null?t.a:null}function _sn(t,e){return Bi(t.e.b,e.e.b)}function Asn(t,e){return Bi(t.e.a,e.e.a)}function Lsn(t,e,n){return bie(t,e,n,t.b)}function Gmt(t,e,n){return bie(t,e,n,t.c)}function Dsn(t){return Bf(),!!t&&!t.dc()}function PJt(){ZC(),this.b=new WVt(this)}function hz(){hz=V,$U=new rs(Xbe,0)}function Pn(){Pn=V,t2=!1,bT=!0}function wp(t){var e;e=t.a,t.a=t.b,t.b=e}function sI(t,e){rS(),this.a=t,this.b=e}function fz(t,e){bp(),this.b=t,this.c=e}function sit(t,e){Nit(),this.f=e,this.d=t}function Kmt(t,e){P3t(e,t),this.d=t,this.c=e}function Wmt(t,e){ixt.call(this,t,e,null)}function FJt(t,e,n,r){byt.call(this,t,e,n,r)}function j6(t){this.d=t,Zn.call(this,t)}function $6(t){this.c=t,Zn.call(this,t)}function aI(t){this.c=t,j6.call(this,t)}function Msn(t){return new By(3,t)}function C0(t){return oh(t,c3),new wu(t)}function BJt(t){return $E(),parseInt(t)||-1}function Isn(t){return l$(),jr((Vne(),zve),t)}function TE(t,e,n){return qmt(t,Hu(e),n)}function ait(t,e){return new FZt(t,t.gc(),e)}function Osn(t,e){return Pit(t.c).Md().Xb(e)}function CE(t,e,n){var r;r=t.fd(e),r.Rb(n)}function Ymt(t,e,n){u(UI(t,e),21).Fc(n)}function Nsn(t,e,n){jat(t.a,n),IH(t.a,e)}function oI(t){Lt(t,158)&&u(t,158).pi()}function RJt(t){zvt.call(this,t,null,null)}function oit(t){yy(),this.b=t,this.a=!0}function jJt(t){k$(),this.b=t,this.a=!0}function SE(t){return ur(t.b!=0),t.a.a.c}function Pf(t){return ur(t.b!=0),t.c.b.c}function Psn(t,e){return dat(t,e,e+1,""),t}function qi(t,e){return!!t.q&&Tu(t.q,e)}function $Jt(t){return t.b=u(Uyt(t.a),44)}function Fsn(t){return t.f!=null?t.f:""+t.g}function cit(t){return t.f!=null?t.f:""+t.g}function Bsn(t,e){return t>0?e/(t*t):e*100}function Rsn(t,e){return t>0?e*e/t:e*e*100}function Sy(t,e){return u(od(t.a,e),34)}function jsn(t,e){return Vb(),dn(t,e.e,e)}function $sn(t,e,n){return C$(),n.Mg(t,e)}function zsn(t){return Sg(),t.e.a+t.f.a/2}function qsn(t,e,n){return Sg(),n.e.a-t*e}function Hsn(t){return Sg(),t.e.b+t.f.b/2}function Vsn(t,e,n){return Sg(),n.e.b-t*e}function zJt(t){t.d=new RJt(t),t.e=new _r}function qJt(){this.a=new Fm,this.b=new Fm}function HJt(t){this.c=t,this.a=1,this.b=1}function VJt(t){Ict(),oKt(this),this.Ff(t)}function Usn(t,e,n){Tq(),t.pf(e)&&n.Cd(t)}function Gsn(t,e,n){return ge(e,ele(t,n))}function Tm(t,e,n){return t.a+=e,t.b+=n,t}function Ksn(t,e,n){return t.a*=e,t.b*=n,t}function Xmt(t,e){return t.a=e.a,t.b=e.b,t}function dz(t){return t.a=-t.a,t.b=-t.b,t}function CS(t,e,n){return t.a-=e,t.b-=n,t}function UJt(t){Ki.call(this),XS(this,t)}function GJt(){Rr.call(this,"GROW_TREE",0)}function KJt(){Rr.call(this,"POLYOMINO",0)}function Ul(t,e,n){nl.call(this,t,e,n,2)}function Wsn(t,e,n){h_(Wc(t.a),e,hre(n))}function WJt(t,e){rS(),sI.call(this,t,e)}function Qmt(t,e){bp(),fz.call(this,t,e)}function YJt(t,e){bp(),Qmt.call(this,t,e)}function XJt(t,e){bp(),fz.call(this,t,e)}function Ysn(t,e){return t.c.Fc(u(e,136))}function Xsn(t,e,n){h_(Al(t.a),e,fre(n))}function QJt(t){this.c=t,Su(t,0),_u(t,0)}function uit(t,e){Sh(),Iz.call(this,t,e)}function JJt(t,e){Sh(),uit.call(this,t,e)}function Jmt(t,e){Sh(),uit.call(this,t,e)}function Zmt(t,e){Sh(),Iz.call(this,t,e)}function ZJt(t,e){Sh(),Jmt.call(this,t,e)}function tZt(t,e){Sh(),Zmt.call(this,t,e)}function eZt(t,e){Sh(),Iz.call(this,t,e)}function Qsn(t,e,n){return e.zl(t.e,t.c,n)}function Jsn(t,e,n){return e.Al(t.e,t.c,n)}function tvt(t,e,n){return pV(VI(t,e),n)}function lit(t,e){return jb(t.e,u(e,54))}function Zsn(t){return t==null?null:TCn(t)}function tan(t){return t==null?null:w4n(t)}function ean(t){return t==null?null:rc(t)}function nan(t){return t==null?null:rc(t)}function Me(t){return AS(t==null||Ty(t)),t}function Ht(t){return AS(t==null||Cy(t)),t}function Gr(t){return AS(t==null||ba(t)),t}function wg(t){t.o==null&&Yxn(t)}function evt(t){if(!t)throw at(new DM)}function ran(t){if(!t)throw at(new $nt)}function ur(t){if(!t)throw at(new cc)}function _y(t){if(!t)throw at(new Xu)}function nZt(t){if(!t)throw at(new Th)}function _E(){_E=V,GP=new jKt,new $Kt}function Y4(){Y4=V,ex=new Oi("root")}function nvt(){Roe.call(this),this.Bb|=po}function ian(t,e){this.d=t,kr(this),this.b=e}function rvt(t,e){Bst.call(this,t),this.a=e}function ivt(t,e){Bst.call(this,t),this.a=e}function svt(t,e,n){yq.call(this,t,e,n,null)}function rZt(t,e,n){yq.call(this,t,e,n,null)}function cI(t,e){this.c=t,vE.call(this,t,e)}function SS(t,e){this.a=t,cI.call(this,t,e)}function avt(t){this.q=new b.Date(tw(t))}function iZt(t){return t>8?0:t+1}function sZt(t,e){wd||ge(t.a,e)}function san(t,e){return $M(),a7(e.d.i,t)}function aan(t,e){return ok(),new F0e(e,t)}function oan(t,e,n){return t.Ne(e,n)<=0?n:e}function can(t,e,n){return t.Ne(e,n)<=0?e:n}function uan(t,e){return u(od(t.b,e),143)}function lan(t,e){return u(od(t.c,e),233)}function hit(t){return u(Oe(t.a,t.b),293)}function aZt(t){return new ae(t.c,t.d+t.a)}function oZt(t){return Wn(t),t?1231:1237}function cZt(t){return rh(),$Qt(u(t,203))}function Ay(){Ay=V,tCt=en((Yl(),qw))}function han(t,e){e.a?pxn(t,e):rit(t.a,e.b)}function uI(t,e,n){++t.j,t.tj(),Fst(t,e,n)}function uZt(t,e,n){++t.j,t.qj(e,t.Zi(e,n))}function lZt(t,e,n){var r;r=t.fd(e),r.Rb(n)}function ovt(t,e,n){return n=hh(t,e,6,n),n}function cvt(t,e,n){return n=hh(t,e,3,n),n}function uvt(t,e,n){return n=hh(t,e,9,n),n}function Hd(t,e){return SI(e,I8t),t.f=e,t}function lvt(t,e){return(e&xi)%t.d.length}function hZt(t,e,n){return qkt(t.c,t.b,e,n)}function fZt(t,e){this.c=t,$m.call(this,e)}function dZt(t,e){this.a=t,ZGt.call(this,e)}function lI(t,e){this.a=t,ZGt.call(this,e)}function rs(t,e){Oi.call(this,t),this.a=e}function hvt(t,e){N2t.call(this,t),this.a=e}function fit(t,e){N2t.call(this,t),this.a=e}function fan(t){U5t.call(this,0,0),this.f=t}function gZt(t,e,n){return t.a+=af(e,0,n),t}function hI(t){return!t.a&&(t.a=new dt),t.a}function fvt(t,e){var n;return n=t.e,t.e=e,n}function dvt(t,e){var n;return n=e,!!t.Fe(n)}function dan(t,e){return Pn(),t==e?0:t?1:-1}function Ly(t,e){t.a.bd(t.b,e),++t.b,t.c=-1}function fI(t){t.b?fI(t.b):t.f.c.zc(t.e,t.d)}function pZt(t){dl(t.e),t.d.b=t.d,t.d.a=t.d}function gan(t,e,n){U2(),Cnt(t,e.Ve(t.a,n))}function gvt(t,e,n){return W6(t,u(e,22),n)}function Ff(t,e){return g$(new Array(e),t)}function pan(t){return qr(Ab(t,32))^qr(t)}function dit(t){return String.fromCharCode(t)}function ban(t){return t==null?null:t.message}function wan(t,e,n){return t.apply(e,n)}function man(t,e){var n;n=t[fut],n.call(t,e)}function van(t,e){var n;n=t[fut],n.call(t,e)}function yan(t,e){return $M(),!a7(e.d.i,t)}function pvt(t,e,n,r){Lz.call(this,t,e,n,r)}function bZt(){gz.call(this),this.a=new Sa}function bvt(){this.n=new Sa,this.o=new Sa}function wZt(){this.b=new Sa,this.c=new fe}function mZt(){this.a=new fe,this.b=new fe}function vZt(){this.a=new O2,this.b=new wKt}function wvt(){this.b=new kp,this.a=new kp}function yZt(){this.b=new Os,this.a=new Os}function xZt(){this.b=new _r,this.a=new _r}function kZt(){this.b=new WWt,this.a=new uC}function EZt(){this.a=new Xet,this.b=new AJ}function TZt(){this.a=new fe,this.d=new fe}function gz(){this.n=new C6,this.i=new B6}function CZt(t){this.a=(oh(t,c3),new wu(t))}function SZt(t){this.a=(oh(t,c3),new wu(t))}function xan(t){return t<100?null:new xb(t)}function kan(t,e){return t.n.a=(Wn(e),e+10)}function Ean(t,e){return t.n.a=(Wn(e),e+10)}function Tan(t,e){return e==t||L7(JH(e),t)}function _Zt(t,e){return hi(t.a,e,"")==null}function Can(t,e){var n;return n=e.qi(t.a),n}function ki(t,e){return t.a+=e.a,t.b+=e.b,t}function ia(t,e){return t.a-=e.a,t.b-=e.b,t}function San(t){return wy(t.j.c,0),t.a=-1,t}function mvt(t,e,n){return n=hh(t,e,11,n),n}function _an(t,e,n){n!=null&&Vq(e,wot(t,n))}function Aan(t,e,n){n!=null&&Uq(e,wot(t,n))}function z6(t,e,n,r){Jt.call(this,t,e,n,r)}function vvt(t,e,n,r){Jt.call(this,t,e,n,r)}function AZt(t,e,n,r){vvt.call(this,t,e,n,r)}function LZt(t,e,n,r){jz.call(this,t,e,n,r)}function git(t,e,n,r){jz.call(this,t,e,n,r)}function yvt(t,e,n,r){jz.call(this,t,e,n,r)}function DZt(t,e,n,r){git.call(this,t,e,n,r)}function xvt(t,e,n,r){git.call(this,t,e,n,r)}function kn(t,e,n,r){yvt.call(this,t,e,n,r)}function MZt(t,e,n,r){xvt.call(this,t,e,n,r)}function IZt(t,e,n,r){vyt.call(this,t,e,n,r)}function Dy(t,e){Bo.call(this,uA+t+Ew+e)}function kvt(t,e){return t.jk().wi().ri(t,e)}function Evt(t,e){return t.jk().wi().ti(t,e)}function OZt(t,e){return Wn(t),$t(t)===$t(e)}function hn(t,e){return Wn(t),$t(t)===$t(e)}function Lan(t,e){return t.b.Bd(new nXt(t,e))}function Dan(t,e){return t.b.Bd(new rXt(t,e))}function NZt(t,e){return t.b.Bd(new iXt(t,e))}function Man(t,e){return t.e=u(t.d.Kb(e),159)}function Tvt(t,e,n){return t.lastIndexOf(e,n)}function Ian(t,e,n){return Bi(t[e.a],t[n.a])}function Oan(t,e){return Zt(e,(De(),iP),t)}function Nan(t,e){return jc(e.a.d.p,t.a.d.p)}function Pan(t,e){return jc(t.a.d.p,e.a.d.p)}function Fan(t,e){return Bi(t.c-t.s,e.c-e.s)}function Ban(t,e){return Bi(t.b.e.a,e.b.e.a)}function Ran(t,e){return Bi(t.c.e.a,e.c.e.a)}function PZt(t){return t.c?Xo(t.c.a,t,0):-1}function q6(t){return t==zw||t==Y0||t==hu}function Cvt(t,e){this.c=t,zit.call(this,t,e)}function FZt(t,e,n){this.a=t,Kmt.call(this,e,n)}function BZt(t){this.c=t,ez.call(this,rN,0)}function RZt(t,e,n){this.c=e,this.b=n,this.a=t}function dI(t){LE(),this.d=t,this.a=new K4}function jZt(t){Vd(),this.a=(mn(),new dE(t))}function jan(t,e){bg(t.f)?zxn(t,e):m3n(t,e)}function $Zt(t,e){Jcn.call(this,t,t.length,e)}function $an(t,e){wd||e&&(t.d=e)}function zZt(t,e){return Lt(e,15)&&b0e(t.c,e)}function zan(t,e,n){return u(t.c,71).Wk(e,n)}function pz(t,e,n){return u(t.c,71).Xk(e,n)}function qan(t,e,n){return Qsn(t,u(e,343),n)}function Svt(t,e,n){return Jsn(t,u(e,343),n)}function Han(t,e,n){return cfe(t,u(e,343),n)}function qZt(t,e,n){return M3n(t,u(e,343),n)}function _S(t,e){return e==null?null:Gy(t.b,e)}function _vt(t){return Cy(t)?(Wn(t),t):t.ue()}function bz(t){return!isNaN(t)&&!isFinite(t)}function pit(t){eJt(this),nh(this),Ma(this,t)}function fl(t){Qrt(this),Hvt(this.c,0,t.Pc())}function _h(t,e,n){this.a=t,this.b=e,this.c=n}function HZt(t,e,n){this.a=t,this.b=e,this.c=n}function VZt(t,e,n){this.d=t,this.b=n,this.a=e}function UZt(t){this.a=t,pg(),Pc(Date.now())}function GZt(t){Kl(t.a),q3t(t.c,t.b),t.b=null}function bit(){bit=V,_9t=new ye,oye=new tn}function KZt(){KZt=V,lTe=Vt(aa,Ln,1,0,5,1)}function WZt(){WZt=V,ATe=Vt(aa,Ln,1,0,5,1)}function Avt(){Avt=V,LTe=Vt(aa,Ln,1,0,5,1)}function Vd(){Vd=V,new B2t((mn(),mn(),co))}function Van(t){return KE(),jr((tae(),lye),t)}function Uan(t){return bl(),jr((Vse(),bye),t)}function Gan(t){return TH(),jr((Lie(),kye),t)}function Kan(t){return Mq(),jr((Die(),Eye),t)}function Wan(t){return aV(),jr((Lce(),Tye),t)}function Yan(t){return A1(),jr((qse(),_ye),t)}function Xan(t){return pl(),jr((zse(),Lye),t)}function Qan(t){return qu(),jr((Hse(),Mye),t)}function Jan(t){return yV(),jr((CQt(),t3e),t)}function Zan(t){return Gm(),jr((nae(),n3e),t)}function ton(t){return dk(),jr((iae(),i3e),t)}function eon(t){return m_(),jr((rae(),o3e),t)}function non(t){return E$(),jr((eie(),c3e),t)}function ron(t){return Iq(),jr((Mie(),C3e),t)}function ion(t){return WS(),jr((Use(),Q3e),t)}function son(t){return Ua(),jr((jae(),e4e),t)}function aon(t){return u7(),jr((aae(),a4e),t)}function oon(t){return lw(),jr((sae(),f4e),t)}function Lvt(t,e){if(!t)throw at(new zn(e))}function AE(t){if(!t)throw at(new Ro(l8t))}function wit(t,e){if(t!=e)throw at(new Th)}function YZt(t,e,n){this.a=t,this.b=e,this.c=n}function Dvt(t,e,n){this.a=t,this.b=e,this.c=n}function XZt(t,e,n){this.a=t,this.b=e,this.c=n}function wz(t,e,n){this.b=t,this.a=e,this.c=n}function Mvt(t,e,n){this.b=t,this.c=e,this.a=n}function Ivt(t,e,n){this.a=t,this.b=e,this.c=n}function mz(t,e,n){this.e=e,this.b=t,this.d=n}function QZt(t,e,n){this.b=t,this.a=e,this.c=n}function con(t,e,n){return U2(),t.a.Yd(e,n),e}function mit(t){var e;return e=new ll,e.e=t,e}function Ovt(t){var e;return e=new kKt,e.b=t,e}function gI(){gI=V,XU=new pQ,QU=new BB}function vz(){vz=V,_4e=new SQ,S4e=new tC}function Bf(){Bf=V,I4e=new iJ,O4e=new sJ}function uon(t){return Vm(),jr((Ese(),H4e),t)}function lon(t){return Za(),jr((SQt(),k4e),t)}function hon(t){return rH(),jr((cae(),C4e),t)}function fon(t){return ud(),jr((oae(),F4e),t)}function don(t){return Qy(),jr(($ae(),R4e),t)}function gon(t){return iV(),jr((gce(),V4e),t)}function pon(t){return wk(),jr((hoe(),U4e),t)}function bon(t){return Eq(),jr((Pie(),G4e),t)}function won(t){return QS(),jr((yse(),K4e),t)}function mon(t){return $q(),jr((xse(),W4e),t)}function von(t){return Ip(),jr((zae(),Y4e),t)}function yon(t){return YI(),jr((Nie(),X4e),t)}function xon(t){return M7(),jr((goe(),n5e),t)}function kon(t){return Co(),jr((Uce(),r5e),t)}function Eon(t){return c7(),jr((Cse(),i5e),t)}function Ton(t){return Cg(),jr((Tse(),a5e),t)}function Con(t){return fq(),jr((zie(),o5e),t)}function Son(t){return AO(),jr((doe(),e5e),t)}function _on(t){return ow(),jr((kse(),J4e),t)}function Aon(t){return UH(),jr((foe(),Z4e),t)}function Lon(t){return qI(),jr((Oie(),t5e),t)}function Don(t){return Rh(),jr((Hae(),c5e),t)}function Mon(t){return Bp(),jr((Sce(),I6e),t)}function Ion(t){return o_(),jr((Sse(),O6e),t)}function Oon(t){return Yy(),jr((uae(),N6e),t)}function Non(t){return w_(),jr((qae(),P6e),t)}function Pon(t){return cf(),jr((Gce(),F6e),t)}function Fon(t){return Wd(),jr((lae(),B6e),t)}function Bon(t){return KI(),jr((Fie(),R6e),t)}function Ron(t){return To(),jr((Lse(),$6e),t)}function jon(t){return tH(),jr((_se(),z6e),t)}function $on(t){return i_(),jr((Ase(),q6e),t)}function zon(t){return b7(),jr((Mse(),H6e),t)}function qon(t){return jq(),jr((Dse(),V6e),t)}function Hon(t){return iH(),jr((Ise(),U6e),t)}function Von(t){return Hm(),jr(($se(),oke),t)}function Uon(t){return US(),jr((Bie(),fke),t)}function Gon(t){return Gd(),jr((Rie(),vke),t)}function Kon(t){return nd(),jr((jie(),xke),t)}function Won(t){return C1(),jr(($ie(),Fke),t)}function Yon(t){return Bm(),jr((qie(),Hke),t)}function Xon(t){return bk(),jr((wae(),Vke),t)}function Qon(t){return I_(),jr((_Qt(),Uke),t)}function Jon(t){return s_(),jr((Ose(),Gke),t)}function Zon(t){return a_(),jr((bae(),p8e),t)}function tcn(t){return uq(),jr((Vie(),b8e),t)}function ecn(t){return Kq(),jr((Uie(),x8e),t)}function ncn(t){return zH(),jr((Vae(),E8e),t)}function rcn(t){return uO(),jr((Nse(),C8e),t)}function icn(t){return Cq(),jr((Hie(),T8e),t)}function scn(t){return NH(),jr((pae(),U8e),t)}function acn(t){return Zq(),jr((Pse(),G8e),t)}function ocn(t){return vH(),jr((Fse(),K8e),t)}function ccn(t){return DH(),jr((Bse(),Y8e),t)}function ucn(t){return dH(),jr((Rse(),J8e),t)}function lcn(t){return wq(),jr((Gie(),vEe),t)}function hcn(t){return r7(),jr((Iie(),x4e),t)}function fcn(t){return Un(),jr((poe(),b4e),t)}function dcn(t){return Sq(),jr((jse(),yEe),t)}function gcn(t){return gat(),jr((Kie(),xEe),t)}function pcn(t){return A_(),jr((Uae(),EEe),t)}function bcn(t){return S$(),jr((uie(),CEe),t)}function wcn(t){return pO(),jr((Kse(),TEe),t)}function mcn(t){return _$(),jr((lie(),_Ee),t)}function vcn(t){return BI(),jr((Wie(),AEe),t)}function ycn(t){return DO(),jr((Gae(),LEe),t)}function xcn(t){return tS(),jr((hie(),UEe),t)}function kcn(t){return sO(),jr((Yie(),GEe),t)}function Ecn(t){return D1(),jr((Wae(),JEe),t)}function Tcn(t){return Fp(),jr((fce(),t7e),t)}function Ccn(t){return I0(),jr((boe(),e7e),t)}function Scn(t){return fw(),jr((woe(),o7e),t)}function _cn(t){return Rs(),jr((Kae(),S7e),t)}function Acn(t){return cd(),jr((Wse(),_7e),t)}function Lcn(t){return Lg(),jr((mae(),A7e),t)}function Dcn(t){return HH(),jr((moe(),L7e),t)}function Mcn(t){return Ag(),jr((Gse(),M7e),t)}function Icn(t){return uh(),jr((vae(),O7e),t)}function Ocn(t){return e3(),jr((Ace(),N7e),t)}function Ncn(t){return o5(),jr((Yae(),P7e),t)}function Pcn(t){return ka(),jr((voe(),F7e),t)}function Fcn(t){return wl(),jr((yoe(),B7e),t)}function Bcn(t){return ve(),jr((Xae(),R7e),t)}function Rcn(t){return Yl(),jr((yae(),H7e),t)}function jcn(t){return Ml(),jr((_ce(),V7e),t)}function $cn(t){return lk(),jr((Yse(),U7e),t)}function zcn(t,e){return Wn(t),t+(Wn(e),e)}function qcn(t){return vit(),jr((Xie(),G7e),t)}function Hcn(t){return pH(),jr((xae(),K7e),t)}function Vcn(t){return sH(),jr((kae(),X7e),t)}function LE(){LE=V,JAt=(ve(),Gn),nK=Jn}function vit(){vit=V,bIt=new _te,wIt=new fee}function Ucn(t){return!t.e&&(t.e=new fe),t.e}function yit(t,e){this.c=t,this.a=e,this.b=e-t}function JZt(t,e,n){this.a=t,this.b=e,this.c=n}function xit(t,e,n){this.a=t,this.b=e,this.c=n}function Nvt(t,e,n){this.a=t,this.b=e,this.c=n}function Pvt(t,e,n){this.a=t,this.b=e,this.c=n}function ZZt(t,e,n){this.a=t,this.b=e,this.c=n}function tte(t,e,n){this.a=t,this.b=e,this.c=n}function mp(t,e,n){this.e=t,this.a=e,this.c=n}function ete(t,e,n){Sh(),Zyt.call(this,t,e,n)}function kit(t,e,n){Sh(),Fyt.call(this,t,e,n)}function Fvt(t,e,n){Sh(),Fyt.call(this,t,e,n)}function Bvt(t,e,n){Sh(),Fyt.call(this,t,e,n)}function nte(t,e,n){Sh(),kit.call(this,t,e,n)}function Rvt(t,e,n){Sh(),kit.call(this,t,e,n)}function rte(t,e,n){Sh(),Rvt.call(this,t,e,n)}function ite(t,e,n){Sh(),Fvt.call(this,t,e,n)}function ste(t,e,n){Sh(),Bvt.call(this,t,e,n)}function Eit(t){Lz.call(this,t.d,t.c,t.a,t.b)}function jvt(t){Lz.call(this,t.d,t.c,t.a,t.b)}function $vt(t){this.d=t,kr(this),this.b=Vun(t.d)}function Gcn(t){return O7(),jr((dce(),uTe),t)}function pI(t,e){return Hr(t),Hr(e),new dYt(t,e)}function H6(t,e){return Hr(t),Hr(e),new mte(t,e)}function Kcn(t,e){return Hr(t),Hr(e),new vte(t,e)}function Wcn(t,e){return Hr(t),Hr(e),new kYt(t,e)}function Tit(t){return ur(t.b!=0),Oh(t,t.a.a)}function Ycn(t){return ur(t.b!=0),Oh(t,t.c.b)}function Xcn(t){return!t.c&&(t.c=new x0),t.c}function DE(t){var e;return e=new fe,Wst(e,t),e}function Qcn(t){var e;return e=new Os,Wst(e,t),e}function ate(t){var e;return e=new q2t,oat(e,t),e}function bI(t){var e;return e=new Ki,oat(e,t),e}function u(t,e){return AS(t==null||aot(t,e)),t}function Jcn(t,e,n){see.call(this,e,n),this.a=t}function ote(t,e){this.c=t,this.b=e,this.a=!1}function cte(){this.a=";,;",this.b="",this.c=""}function ute(t,e,n){this.b=t,yQt.call(this,e,n)}function zvt(t,e,n){this.c=t,I$.call(this,e,n)}function qvt(t,e,n){kE.call(this,t,e),this.b=n}function Hvt(t,e,n){N6t(n,0,t,e,n.length,!1)}function S0(t,e,n,r,s){t.b=e,t.c=n,t.d=r,t.a=s}function Vvt(t,e,n,r,s){t.d=e,t.c=n,t.a=r,t.b=s}function Zcn(t,e){e&&(t.b=e,t.a=(Mb(e),e.a))}function wI(t,e){if(!t)throw at(new zn(e))}function V6(t,e){if(!t)throw at(new Ro(e))}function Uvt(t,e){if(!t)throw at(new wWt(e))}function tun(t,e){return T$(),jc(t.d.p,e.d.p)}function eun(t,e){return Sg(),Bi(t.e.b,e.e.b)}function nun(t,e){return Sg(),Bi(t.e.a,e.e.a)}function run(t,e){return jc(Tte(t.d),Tte(e.d))}function yz(t,e){return e&&Vz(t,e.d)?e:null}function iun(t,e){return e==(ve(),Gn)?t.c:t.d}function Gvt(t){return Fb(rln(ec(t)?rf(t):t))}function sun(t){return new ae(t.c+t.b,t.d+t.a)}function lte(t){return t!=null&&!Uat(t,CL,SL)}function aun(t,e){return(que(t)<<4|que(e))&js}function hte(t,e,n,r,s){t.c=e,t.d=n,t.b=r,t.a=s}function Kvt(t){var e,n;e=t.b,n=t.c,t.b=n,t.c=e}function Wvt(t){var e,n;n=t.d,e=t.a,t.d=e,t.a=n}function oun(t,e){var n;return n=t.c,S4t(t,e),n}function Yvt(t,e){return e<0?t.g=-1:t.g=e,t}function xz(t,e){return pgn(t),t.a*=e,t.b*=e,t}function fte(t,e,n){aoe.call(this,e,n),this.d=t}function mI(t,e,n){gmt.call(this,t,e),this.c=n}function kz(t,e,n){gmt.call(this,t,e),this.c=n}function Xvt(t){Avt(),E4.call(this),this.ci(t)}function dte(){VE(),Aln.call(this,(Eb(),yf))}function gte(t){return yi(),new _0(0,t)}function pte(){pte=V,a0t=(mn(),new pa(lht))}function Ez(){Ez=V,new oxt((Wnt(),kht),(Knt(),xht))}function bte(){bte=V,d9t=Vt(Ra,ue,17,256,0,1)}function wte(){this.b=Rt(Ht(Se((Vf(),eft))))}function Cit(t){this.b=t,this.a=K2(this.b.a).Od()}function mte(t,e){this.b=t,this.a=e,DC.call(this)}function vte(t,e){this.a=t,this.b=e,DC.call(this)}function yte(t,e,n){this.a=t,$4.call(this,e,n)}function xte(t,e,n){this.a=t,$4.call(this,e,n)}function ME(t,e,n){var r;r=new Oy(n),_1(t,e,r)}function Qvt(t,e,n){var r;return r=t[e],t[e]=n,r}function Tz(t){var e;return e=t.slice(),zst(e,t)}function Cz(t){var e;return e=t.n,t.a.b+e.d+e.a}function kte(t){var e;return e=t.n,t.e.b+e.d+e.a}function Jvt(t){var e;return e=t.n,t.e.a+e.b+e.c}function Zvt(t){t.a.b=t.b,t.b.a=t.a,t.a=t.b=null}function Zr(t,e){return hs(t,e,t.c.b,t.c),!0}function cun(t){return t.a?t.a:Zit(t)}function uun(t){return J6(),O0(t)==Ji(qb(t))}function lun(t){return J6(),qb(t)==Ji(O0(t))}function Cm(t,e){return k_(t,new kE(e.a,e.b))}function hun(t,e){return Gz(),got(t,e),new Vee(t,e)}function fun(t,e){return t.c=e)throw at(new Y2t)}function My(t,e){return dO(t,(Wn(e),new no(e)))}function G6(t,e){return dO(t,(Wn(e),new ql(e)))}function oee(t,e,n){return RSn(t,u(e,12),u(n,12))}function cee(t){return rl(),u(t,12).g.c.length!=0}function uee(t){return rl(),u(t,12).e.c.length!=0}function Xun(t,e){return ok(),Bi(e.a.o.a,t.a.o.a)}function Qun(t,e){e.Bb&Fc&&!t.a.o&&(t.a.o=e)}function Jun(t,e){e.Ug("General 'Rotator",1),fCn(t)}function Zun(t,e,n){e.qf(n,Rt(Ht(tr(t.b,n)))*t.a)}function lee(t,e,n){return w5(),i7(t,e)&&i7(t,n)}function IS(t){return wl(),!t.Hc(Hg)&&!t.Hc(g2)}function tln(t){return t.e?$3t(t.e):null}function OS(t){return ec(t)?""+t:p0e(t)}function myt(t){var e;for(e=t;e.f;)e=e.f;return e}function eln(t,e,n){return ls(e,0,iyt(e[0],n[0])),e}function vp(t,e,n,r){var s;s=t.i,s.i=e,s.a=n,s.b=r}function Jt(t,e,n,r){Ps.call(this,t,e,n),this.b=r}function ha(t,e,n,r,s){jst.call(this,t,e,n,r,s,-1)}function NS(t,e,n,r,s){jI.call(this,t,e,n,r,s,-1)}function jz(t,e,n,r){mI.call(this,t,e,n),this.b=r}function hee(t){cQt.call(this,t,!1),this.a=!1}function fee(){zXt.call(this,"LOOKAHEAD_LAYOUT",1)}function dee(t){this.b=t,j6.call(this,t),mJt(this)}function gee(t){this.b=t,aI.call(this,t),vJt(this)}function Iy(t,e,n){this.a=t,z6.call(this,e,n,5,6)}function vyt(t,e,n,r){this.b=t,Ps.call(this,e,n,r)}function pee(t,e){this.b=t,dg.call(this,t.b),this.a=e}function bee(t){this.a=Zle(t.a),this.b=new fl(t.b)}function yyt(t,e){Dm(),Irn.call(this,t,uH(new hl(e)))}function $z(t,e){return yi(),new Pyt(t,e,0)}function Rit(t,e){return yi(),new Pyt(6,t,e)}function Na(t,e){for(Wn(e);t.Ob();)e.Cd(t.Pb())}function Tu(t,e){return ba(e)?ost(t,e):!!Eo(t.f,e)}function jit(t,e){return e.Vh()?jb(t.b,u(e,54)):e}function nln(t,e){return hn(t.substr(0,e.length),e)}function A0(t){return new rr(new zmt(t.a.length,t.a))}function zz(t){return new ae(t.c+t.b/2,t.d+t.a/2)}function rln(t){return Eu(~t.l&Il,~t.m&Il,~t.h&Fg)}function $it(t){return typeof t===ZO||typeof t===Pct}function dl(t){t.f=new FQt(t),t.i=new BQt(t),++t.g}function wee(t){if(!t)throw at(new cc);return t.d}function K6(t){var e;return e=r_(t),ur(e!=null),e}function iln(t){var e;return e=y2n(t),ur(e!=null),e}function OE(t,e){var n;return n=t.a.gc(),P3t(e,n),n-e}function qs(t,e){var n;return n=t.a.zc(e,t),n==null}function yI(t,e){return t.a.zc(e,(Pn(),t2))==null}function xyt(t){return new ln(null,uln(t,t.length))}function kyt(t,e,n){return jge(t,u(e,42),u(n,176))}function W6(t,e,n){return zf(t.a,e),Qvt(t.b,e.g,n)}function sln(t,e,n){IE(n,t.a.c.length),Mh(t.a,n,e)}function zt(t,e,n,r){pue(e,n,t.length),aln(t,e,n,r)}function aln(t,e,n,r){var s;for(s=e;s0?b.Math.log(t/e):-100}function vee(t,e){return $c(t,e)<0?-1:$c(t,e)>0?1:0}function xI(t,e){lJt(t,Lt(e,160)?e:u(e,2036).Rl())}function Syt(t,e){if(t==null)throw at(new A6(e))}function uln(t,e){return hgn(e,t.length),new Ste(t,e)}function _yt(t,e){return e?Ma(t,e):!1}function lln(){return l$(),lt(ut($ve,1),te,549,0,[Cht])}function FS(t){return t.e==0?t:new Y2(-t.e,t.d,t.a)}function hln(t,e){return Bi(t.c.c+t.c.b,e.c.c+e.c.b)}function kI(t,e){hs(t.d,e,t.b.b,t.b),++t.a,t.c=null}function yee(t,e){return t.c?yee(t.c,e):ge(t.b,e),t}function fln(t,e,n){var r;return r=$y(t,e),Est(t,e,n),r}function xee(t,e,n){var r;for(r=0;r=t.g}function ls(t,e,n){return ran(n==null||JEn(t,n)),t[e]=n}function Iyt(t,e){return qn(e,t.length+1),t.substr(e)}function Xit(t,e){for(Wn(e);t.c=t?new Lwt:Pgn(t-1)}function Pa(t){return!t.a&&t.c?t.c.b:t.a}function Byt(t){return Lt(t,616)?t:new $ne(t)}function Mb(t){t.c?Mb(t.c):($b(t),t.d=!0)}function jS(t){t.c?t.c.$e():(t.d=!0,Z6n(t))}function zee(t){t.b=!1,t.c=!1,t.d=!1,t.a=!1}function qee(t){var e,n;return e=t.c.i.c,n=t.d.i.c,e==n}function Mln(t,e){var n;n=t.Ih(e),n>=0?t.ki(n):C6t(t,e)}function Hee(t,e){t.c<0||t.b.b0;)t=t<<1|(t<0?1:0);return t}function Qee(t,e){var n;return n=new eu(t),In(e.c,n),n}function Jee(t,e){t.u.Hc((wl(),Hg))&&F5n(t,e),t0n(t,e)}function Nc(t,e){return $t(t)===$t(e)||t!=null&&Ti(t,e)}function Io(t,e){return Dit(t.a,e)?t.b[u(e,22).g]:null}function Vln(){return E$(),lt(ut(rCt,1),te,488,0,[Wht])}function Uln(){return S$(),lt(ut(IDt,1),te,489,0,[wdt])}function Gln(){return _$(),lt(ut(SEe,1),te,558,0,[mdt])}function Kln(){return tS(),lt(ut(ZDt,1),te,539,0,[kP])}function Kz(t){return!t.n&&(t.n=new Jt(Po,t,1,7)),t.n}function Jit(t){return!t.c&&(t.c=new Jt(kl,t,9,9)),t.c}function zyt(t){return!t.c&&(t.c=new kn(vr,t,5,8)),t.c}function Wln(t){return!t.b&&(t.b=new kn(vr,t,4,7)),t.b}function EI(t){return t.j.c.length=0,Hyt(t.c),San(t.a),t}function RE(t){return t.e==dT&&nn(t,qwn(t.g,t.b)),t.e}function TI(t){return t.f==dT&&Tn(t,Ovn(t.g,t.b)),t.f}function fi(t,e,n,r){return xce(t,e,n,!1),lH(t,r),t}function Zee(t,e){this.b=t,zit.call(this,t,e),mJt(this)}function tne(t,e){this.b=t,Cvt.call(this,t,e),vJt(this)}function $S(t){this.d=t,this.a=this.d.b,this.b=this.d.c}function qyt(t,e){this.b=t,this.c=e,this.a=new I6(this.b)}function Va(t,e){return qn(e,t.length),t.charCodeAt(e)}function Yln(t,e){L5t(t,Rt(_g(e,"x")),Rt(_g(e,"y")))}function Xln(t,e){L5t(t,Rt(_g(e,"x")),Rt(_g(e,"y")))}function _i(t,e){return $b(t),new ln(t,new Z3t(e,t.a))}function Wo(t,e){return $b(t),new ln(t,new R3t(e,t.a))}function Ny(t,e){return $b(t),new rvt(t,new use(e,t.a))}function Wz(t,e){return $b(t),new ivt(t,new lse(e,t.a))}function Qln(t,e){return new Tne(u(Hr(t),50),u(Hr(e),50))}function Jln(t,e){return Bi(t.d.c+t.d.b/2,e.d.c+e.d.b/2)}function ene(t,e,n){n.a?_u(t,e.b-t.f/2):Su(t,e.a-t.g/2)}function Zln(t,e){return Bi(t.g.c+t.g.b/2,e.g.c+e.g.b/2)}function thn(t,e){return Iwt(),Bi((Wn(t),t),(Wn(e),e))}function ehn(t){return t!=null&&BM(WK,t.toLowerCase())}function Hyt(t){var e;for(e=t.Kc();e.Ob();)e.Pb(),e.Qb()}function X4(t){var e;return e=t.b,!e&&(t.b=e=new vnt(t)),e}function Zit(t){var e;return e=jgn(t),e||null}function nne(t,e){var n,r;return n=t/e,r=Ys(n),n>r&&++r,r}function nhn(t,e,n){var r;r=u(t.d.Kb(n),159),r&&r.Nb(e)}function rhn(t,e,n){sTn(t.a,n),Fpn(n),Sxn(t.b,n),STn(e,n)}function Yz(t,e,n,r){this.a=t,this.c=e,this.b=n,this.d=r}function Vyt(t,e,n,r){this.c=t,this.b=e,this.a=n,this.d=r}function rne(t,e,n,r){this.c=t,this.b=e,this.d=n,this.a=r}function Ah(t,e,n,r){this.c=t,this.d=e,this.b=n,this.a=r}function ine(t,e,n,r){this.a=t,this.d=e,this.c=n,this.b=r}function tst(t,e,n,r){this.a=t,this.e=e,this.d=n,this.c=r}function sne(t,e,n,r){this.a=t,this.c=e,this.d=n,this.b=r}function est(t,e,n){this.a=b8t,this.d=t,this.b=e,this.c=n}function X6(t,e,n,r){Rr.call(this,t,e),this.a=n,this.b=r}function ane(t,e){this.d=(Wn(t),t),this.a=16449,this.c=e}function one(t){this.a=new fe,this.e=Vt(Fr,ue,53,t,0,2)}function ihn(t){t.Ug("No crossing minimization",1),t.Vg()}function cne(){uc.call(this,"There is no more element.")}function une(t,e,n,r){this.a=t,this.b=e,this.c=n,this.d=r}function lne(t,e,n,r){this.a=t,this.b=e,this.c=n,this.d=r}function X2(t,e,n,r){this.e=t,this.a=e,this.c=n,this.d=r}function hne(t,e,n,r){this.a=t,this.c=e,this.d=n,this.b=r}function fne(t,e,n,r){Sh(),hse.call(this,e,n,r),this.a=t}function dne(t,e,n,r){Sh(),hse.call(this,e,n,r),this.a=t}function nst(t,e,n){var r,s;return r=n8t(t),s=e.ti(n,r),s}function mg(t){var e,n;return n=(e=new lm,e),YE(n,t),n}function rst(t){var e,n;return n=(e=new lm,e),a6t(n,t),n}function shn(t,e){var n;return n=tr(t.f,e),j4t(e,n),null}function gne(t){return!t.b&&(t.b=new Jt(Ts,t,12,3)),t.b}function pne(t){return AS(t==null||$it(t)&&t.Tm!==yt),t}function Xz(t){return t.n&&(t.e!==wbe&&t.je(),t.j=null),t}function jE(t){if(Ll(t.d),t.d.d!=t.c)throw at(new Th)}function Uyt(t){return ur(t.b0&&Khe(this)}function bne(t,e){this.a=t,ian.call(this,t,u(t.d,15).fd(e))}function ahn(t,e){return Bi(tl(t)*Gl(t),tl(e)*Gl(e))}function ohn(t,e){return Bi(tl(t)*Gl(t),tl(e)*Gl(e))}function chn(t){return Zm(t)&&Ie(Me(ne(t,(De(),Mw))))}function uhn(t,e){return dn(t,u(X(e,(De(),OT)),17),e)}function lhn(t,e){return u(X(t,(oe(),Uk)),15).Fc(e),e}function Gyt(t,e){return t.b=e.b,t.c=e.c,t.d=e.d,t.a=e.a,t}function wne(t,e,n,r){this.b=t,this.c=r,ez.call(this,e,n)}function hhn(t,e,n){t.i=0,t.e=0,e!=n&&tue(t,e,n)}function fhn(t,e,n){t.i=0,t.e=0,e!=n&&eue(t,e,n)}function dhn(t,e,n){return ZC(),$2n(u(tr(t.e,e),529),n)}function Q6(t){var e;return e=t.f,e||(t.f=new vE(t,t.c))}function mne(t,e){return a5(t.j,e.s,e.c)+a5(e.e,t.s,t.c)}function vne(t,e){t.e&&!t.e.a&&(aKt(t.e,e),vne(t.e,e))}function yne(t,e){t.d&&!t.d.a&&(aKt(t.d,e),yne(t.d,e))}function ghn(t,e){return-Bi(tl(t)*Gl(t),tl(e)*Gl(e))}function phn(t){return u(t.ld(),149).Pg()+":"+rc(t.md())}function xne(){Fot(this,new Fj),this.wb=(Lb(),Fn),bE()}function kne(t){this.b=new fe,Hs(this.b,this.b),this.a=t}function Kyt(t,e){new Ki,this.a=new Qu,this.b=t,this.c=e}function Nm(){Nm=V,C9t=new Gt,Oht=new Gt,S9t=new Fe}function mn(){mn=V,co=new jt,q0=new Ft,FU=new Ct}function Wyt(){Wyt=V,vye=new Ha,xye=new uyt,yye=new ds}function J6(){J6=V,VU=new fe,Jht=new _r,Qht=new fe}function Qz(t,e){if(t==null)throw at(new A6(e));return t}function Jz(t){return!t.a&&(t.a=new Jt(bi,t,10,11)),t.a}function Di(t){return!t.q&&(t.q=new Jt(vf,t,11,10)),t.q}function Qt(t){return!t.s&&(t.s=new Jt(Wu,t,21,17)),t.s}function bhn(t){return Hr(t),uhe(new rr(sr(t.a.Kc(),new z)))}function whn(t,e){return Wl(t),Wl(e),bWt(u(t,22),u(e,22))}function Q2(t,e,n){var r,s;r=_vt(n),s=new cE(r),_1(t,e,s)}function sst(t,e,n,r,s,o){jI.call(this,t,e,n,r,s,o?-2:-1)}function Ene(t,e,n,r){gmt.call(this,e,n),this.b=t,this.a=r}function Tne(t,e){Rnn.call(this,new Bit(t)),this.a=t,this.b=e}function Yyt(t){this.b=t,this.c=t,t.e=null,t.c=null,this.a=1}function mhn(t){Bf();var e;e=u(t.g,10),e.n.a=t.d.c+e.d.b}function $E(){$E=V;var t,e;e=!Cwn(),t=new it,Aht=e?new rt:t}function ast(t){return mn(),Lt(t,59)?new nrt(t):new uz(t)}function Zz(t){return Lt(t,16)?new LS(u(t,16)):Qcn(t.Kc())}function vhn(t){return new xJt(t,t.e.Rd().gc()*t.c.Rd().gc())}function yhn(t){return new kJt(t,t.e.Rd().gc()*t.c.Rd().gc())}function Xyt(t){return t&&t.hashCode?t.hashCode():Em(t)}function ost(t,e){return e==null?!!Eo(t.f,null):Fun(t.i,e)}function xhn(t,e){var n;return n=Imt(t.a,e),n&&(e.d=null),n}function Cne(t,e,n){return t.f?t.f.ef(e,n):!1}function CI(t,e,n,r){ls(t.c[e.g],n.g,r),ls(t.c[n.g],e.g,r)}function cst(t,e,n,r){ls(t.c[e.g],e.g,n),ls(t.b[e.g],e.g,r)}function khn(t,e,n){return Rt(Ht(n.a))<=t&&Rt(Ht(n.b))>=e}function Sne(t,e){this.g=t,this.d=lt(ut(V0,1),jp,10,0,[e])}function _ne(t){this.c=t,this.b=new pp(u(Hr(new Fu),50))}function Ane(t){this.c=t,this.b=new pp(u(Hr(new b4),50))}function Lne(t){this.b=t,this.a=new pp(u(Hr(new Ci),50))}function Dne(){this.b=new Os,this.d=new Ki,this.e=new X2t}function Qyt(){this.c=new Sa,this.d=new Sa,this.e=new Sa}function Pm(){this.a=new Qu,this.b=(oh(3,c3),new wu(3))}function yp(t,e){this.e=t,this.a=aa,this.b=M0e(e),this.c=e}function tq(t){this.c=t.c,this.d=t.d,this.b=t.b,this.a=t.a}function Mne(t,e,n,r,s,o){this.a=t,tat.call(this,e,n,r,s,o)}function Ine(t,e,n,r,s,o){this.a=t,tat.call(this,e,n,r,s,o)}function Ib(t,e,n,r,s,o,h){return new Cst(t.e,e,n,r,s,o,h)}function Ehn(t,e,n){return n>=0&&hn(t.substr(n,e.length),e)}function One(t,e){return Lt(e,149)&&hn(t.b,u(e,149).Pg())}function Thn(t,e){return t.a?e.Gh().Kc():u(e.Gh(),71).Ii()}function Nne(t,e){var n;return n=t.b.Qc(e),Aie(n,t.b.gc()),n}function SI(t,e){if(t==null)throw at(new A6(e));return t}function Yo(t){return t.u||(_l(t),t.u=new dZt(t,t)),t.u}function ust(t){this.a=(mn(),Lt(t,59)?new nrt(t):new uz(t))}function $u(t){var e;return e=u(jn(t,16),29),e||t.ii()}function eq(t,e){var n;return n=V2(t.Rm),e==null?n:n+": "+e}function Lh(t,e,n){return Da(e,n,t.length),t.substr(e,n-e)}function Pne(t,e){gz.call(this),c4t(this),this.a=t,this.c=e}function Chn(t){t&&eq(t,t.ie())}function Shn(t){d$(),b.setTimeout(function(){throw t},0)}function _hn(){return TH(),lt(ut(N9t,1),te,436,0,[zht,O9t])}function Ahn(){return Mq(),lt(ut(F9t,1),te,435,0,[P9t,qht])}function Lhn(){return Iq(),lt(ut(lCt,1),te,432,0,[Zht,UU])}function Dhn(){return r7(),lt(ut(y4e,1),te,517,0,[KN,dft])}function Mhn(){return qI(),lt(ut(NSt,1),te,487,0,[OSt,EG])}function Ihn(){return YI(),lt(ut(MSt,1),te,428,0,[xG,DSt])}function Ohn(){return Eq(),lt(ut(ESt,1),te,431,0,[kSt,Aft])}function Nhn(){return KI(),lt(ut(jAt,1),te,430,0,[T1t,C1t])}function Phn(){return US(),lt(ut(hke,1),te,531,0,[KA,GA])}function Fhn(){return Gd(),lt(ut(mke,1),te,523,0,[Dv,Gp])}function Bhn(){return nd(),lt(ut(yke,1),te,522,0,[Fw,yd])}function Rhn(){return C1(),lt(ut(Pke,1),te,528,0,[F3,o2])}function jhn(){return fq(),lt(ut(KSt,1),te,429,0,[Hft,GSt])}function $hn(){return wq(),lt(ut(CDt,1),te,490,0,[gdt,TDt])}function zhn(){return gat(),lt(ut(MDt,1),te,491,0,[LDt,DDt])}function qhn(){return uq(),lt(ut(NLt,1),te,433,0,[K1t,OLt])}function Hhn(){return Cq(),lt(ut(BLt,1),te,434,0,[FLt,Z1t])}function Vhn(){return Bm(),lt(ut(qke,1),te,464,0,[c2,Z5])}function Uhn(){return Kq(),lt(ut(PLt,1),te,500,0,[hK,nx])}function Ghn(){return BI(),lt(ut(ODt,1),te,438,0,[vdt,kK])}function Khn(){return sO(),lt(ut(eMt,1),te,437,0,[TK,tMt])}function Whn(){return vit(),lt(ut(jK,1),te,347,0,[bIt,wIt])}function nq(t,e,n,r){return n>=0?t.Uh(e,n,r):t.Ch(null,n,r)}function _I(t){return t.b.b==0?t.a.sf():Tit(t.b)}function Yhn(t){if(t.p!=5)throw at(new Xu);return qr(t.f)}function Xhn(t){if(t.p!=5)throw at(new Xu);return qr(t.k)}function Jyt(t){return $t(t.a)===$t((fat(),r0t))&&WTn(t),t.a}function Qhn(t,e){t.b=e,t.c>0&&t.b>0&&(t.g=Dz(t.c,t.b,t.a))}function Jhn(t,e){t.c=e,t.c>0&&t.b>0&&(t.g=Dz(t.c,t.b,t.a))}function Fne(t,e){st(this,new ae(t.a,t.b)),bt(this,bI(e))}function Fm(){jnn.call(this,new M6(zy(12))),Bmt(!0),this.a=2}function lst(t,e,n){yi(),um.call(this,t),this.b=e,this.a=n}function Zyt(t,e,n){Sh(),i$.call(this,e),this.a=t,this.b=n}function Bne(t){var e;e=t.c.d.b,t.b=e,t.a=t.c.d,e.a=t.c.d.b=t}function Zhn(t){return t.b==0?null:(ur(t.b!=0),Oh(t,t.a.a))}function nu(t,e){return e==null?Ko(Eo(t.f,null)):iS(t.i,e)}function Rne(t,e,n,r,s){return new Rot(t,(KE(),Bht),e,n,r,s)}function rq(t,e){return Cie(e),Egn(t,Vt(Fr,ii,28,e,15,1),e)}function iq(t,e){return Qz(t,"set1"),Qz(e,"set2"),new _Yt(t,e)}function tfn(t,e){var n=_ht[t.charCodeAt(0)];return n??t}function jne(t,e){var n,r;return n=e,r=new be,dpe(t,n,r),r.d}function hst(t,e,n,r){var s;s=new bZt,e.a[n.g]=s,W6(t.b,r,s)}function efn(t,e){var n;return n=ygn(t.f,e),ki(dz(n),t.f.d)}function sq(t){var e;Mgn(t.a),GQt(t.a),e=new RC(t.a),j5t(e)}function nfn(t,e){x0e(t,!0),Cu(t.e.Rf(),new Mvt(t,!0,e))}function rfn(t,e){return J6(),t==Ji(O0(e))||t==Ji(qb(e))}function ifn(t,e){return Sg(),u(X(e,(Cc(),h0)),17).a==t}function Ys(t){return Math.max(Math.min(t,xi),-2147483648)|0}function $ne(t){this.a=u(Hr(t),277),this.b=(mn(),new Vmt(t))}function zne(t,e,n){this.i=new fe,this.b=t,this.g=e,this.a=n}function t3t(t,e,n){this.a=new fe,this.e=t,this.f=e,this.c=n}function aq(t,e,n){this.c=new fe,this.e=t,this.f=e,this.b=n}function qne(t){gz.call(this),c4t(this),this.a=t,this.c=!0}function sfn(t){function e(){}return e.prototype=t||{},new e}function afn(t){if(t.Ae())return null;var e=t.n;return DU[e]}function AI(t){return t.Db>>16!=3?null:u(t.Cb,27)}function ed(t){return t.Db>>16!=9?null:u(t.Cb,27)}function Hne(t){return t.Db>>16!=6?null:u(t.Cb,74)}function Bm(){Bm=V,c2=new nmt(_k,0),Z5=new nmt(Ak,1)}function Gd(){Gd=V,Dv=new Zwt(Ak,0),Gp=new Zwt(_k,1)}function nd(){nd=V,Fw=new tmt(xut,0),yd=new tmt("UP",1)}function Vne(){Vne=V,zve=$r((l$(),lt(ut($ve,1),te,549,0,[Cht])))}function Une(t){var e;return e=new w$(zy(t.length)),J4t(e,t),e}function Gne(t,e){return t.b+=e.b,t.c+=e.c,t.d+=e.d,t.a+=e.a,t}function ofn(t,e){return Ice(t,e)?(Aoe(t),!0):!1}function vg(t,e){if(e==null)throw at(new E6);return _wn(t,e)}function LI(t,e){var n;n=t.q.getHours(),t.q.setDate(e),N_(t,n)}function e3t(t,e,n){var r;r=t.Ih(e),r>=0?t.bi(r,n):J6t(t,e,n)}function Kne(t,e){var n;return n=t.Ih(e),n>=0?t.Wh(n):Vot(t,e)}function Wne(t,e){var n;for(Hr(e),n=t.a;n;n=n.c)e.Yd(n.g,n.i)}function fst(t,e,n){var r;r=Jce(t,e,n),t.b=new Yq(r.c.length)}function Q4(t,e,n){oq(),t&&hi(t0t,t,e),t&&hi(VP,t,n)}function cfn(t,e){return vz(),Pn(),u(e.a,17).a0}function n3t(t){var e;return e=t.d,e=t.bj(t.f),Or(t,e),e.Ob()}function Yne(t,e){var n;return n=new ayt(e),yfe(n,t),new fl(n)}function hfn(t){if(t.p!=0)throw at(new Xu);return bS(t.f,0)}function ffn(t){if(t.p!=0)throw at(new Xu);return bS(t.k,0)}function Xne(t){return t.Db>>16!=7?null:u(t.Cb,241)}function zE(t){return t.Db>>16!=6?null:u(t.Cb,241)}function Qne(t){return t.Db>>16!=7?null:u(t.Cb,167)}function Ji(t){return t.Db>>16!=11?null:u(t.Cb,27)}function Py(t){return t.Db>>16!=17?null:u(t.Cb,29)}function Jne(t){return t.Db>>16!=3?null:u(t.Cb,155)}function r3t(t){var e;return $b(t),e=new Os,_i(t,new A4(e))}function Zne(t,e){var n=t.a=t.a||[];return n[e]||(n[e]=t.ve(e))}function dfn(t,e){var n;n=t.q.getHours(),t.q.setMonth(e),N_(t,n)}function tre(t,e){oz(this),this.f=e,this.g=t,Xz(this),this.je()}function ere(t,e){this.a=t,this.c=Oa(this.a),this.b=new tq(e)}function nre(t,e,n){this.a=e,this.c=t,this.b=(Hr(n),new fl(n))}function rre(t,e,n){this.a=e,this.c=t,this.b=(Hr(n),new fl(n))}function ire(t){this.a=t,this.b=Vt(cke,ue,2043,t.e.length,0,2)}function sre(){this.a=new zd,this.e=new Os,this.g=0,this.i=0}function oq(){oq=V,t0t=new _r,VP=new _r,oin(sye,new dC)}function are(){are=V,G6e=el(new Fs,(Ua(),Zo),(Za(),WN))}function i3t(){i3t=V,K6e=el(new Fs,(Ua(),Zo),(Za(),WN))}function ore(){ore=V,Y6e=el(new Fs,(Ua(),Zo),(Za(),WN))}function cre(){cre=V,dke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function rh(){rh=V,bke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function ure(){ure=V,wke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function gst(){gst=V,kke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function zS(t,e,n,r,s,o){return new Tg(t.e,e,t.Lj(),n,r,s,o)}function jo(t,e,n){return e==null?yu(t.f,null,n):Km(t.i,e,n)}function Xa(t,e){t.c&&zu(t.c.g,t),t.c=e,t.c&&ge(t.c.g,t)}function Aa(t,e){t.c&&zu(t.c.a,t),t.c=e,t.c&&ge(t.c.a,t)}function hc(t,e){t.i&&zu(t.i.j,t),t.i=e,t.i&&ge(t.i.j,t)}function xa(t,e){t.d&&zu(t.d.e,t),t.d=e,t.d&&ge(t.d.e,t)}function pst(t,e){t.a&&zu(t.a.k,t),t.a=e,t.a&&ge(t.a.k,t)}function bst(t,e){t.b&&zu(t.b.f,t),t.b=e,t.b&&ge(t.b.f,t)}function lre(t,e){Cln(t,t.b,t.c),u(t.b.b,68),e&&u(e.b,68).b}function gfn(t,e){return Bi(u(t.c,65).c.e.b,u(e.c,65).c.e.b)}function pfn(t,e){return Bi(u(t.c,65).c.e.a,u(e.c,65).c.e.a)}function bfn(t){return Iat(),Pn(),u(t.a,86).d.e!=0}function cq(t,e){Lt(t.Cb,184)&&(u(t.Cb,184).tb=null),mu(t,e)}function wst(t,e){Lt(t.Cb,90)&&t3(_l(u(t.Cb,90)),4),mu(t,e)}function wfn(t,e){D5t(t,e),Lt(t.Cb,90)&&t3(_l(u(t.Cb,90)),2)}function mfn(t,e){var n,r;n=e.c,r=n!=null,r&&Y6(t,new Oy(e.c))}function hre(t){var e,n;return n=(bE(),e=new lm,e),YE(n,t),n}function fre(t){var e,n;return n=(bE(),e=new lm,e),YE(n,t),n}function dre(t){for(var e;;)if(e=t.Pb(),!t.Ob())return e}function vfn(t,e,n){return ge(t.a,(Gz(),got(e,n),new bm(e,n))),t}function ru(t,e){return vo(),Gst(e)?new Sz(e,t):new eI(e,t)}function DI(t){return Xd(),$c(t,0)>=0?zb(t):FS(zb(Cp(t)))}function yfn(t){var e;return e=u(Tz(t.b),9),new _h(t.a,e,t.c)}function gre(t,e){var n;return n=u(Gy(Q6(t.a),e),16),n?n.gc():0}function pre(t,e,n){var r;$ue(e,n,t.c.length),r=n-e,Swt(t.c,e,r)}function xp(t,e,n){$ue(e,n,t.gc()),this.c=t,this.a=e,this.b=n-e}function Z6(t){this.c=new Ki,this.b=t.b,this.d=t.c,this.a=t.a}function mst(t){this.a=b.Math.cos(t),this.b=b.Math.sin(t)}function J2(t,e,n,r){this.c=t,this.d=r,pst(this,e),bst(this,n)}function s3t(t,e){Bnn.call(this,new M6(zy(t))),oh(e,hbe),this.a=e}function bre(t,e,n){return new Rot(t,(KE(),Fht),null,!1,e,n)}function wre(t,e,n){return new Rot(t,(KE(),Rht),e,n,null,!1)}function xfn(){return bl(),lt(ut(Ho,1),te,108,0,[I9t,sc,w3])}function kfn(){return qu(),lt(ut(Dye,1),te,471,0,[O1,n2,Kf])}function Efn(){return pl(),lt(ut(Aye,1),te,470,0,[c0,e2,Gf])}function Tfn(){return A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])}function Cfn(){return WS(),lt(ut(CCt,1),te,391,0,[rft,nft,ift])}function Sfn(){return Vm(),lt(ut(vft,1),te,372,0,[mv,r2,wv])}function _fn(){return QS(),lt(ut(CSt,1),te,322,0,[_A,QN,TSt])}function Afn(){return $q(),lt(ut(_St,1),te,351,0,[SSt,yG,Lft])}function Lfn(){return ow(),lt(ut(Q4e,1),te,459,0,[Ift,_T,z5])}function Dfn(){return c7(),lt(ut(qft,1),te,298,0,[$ft,zft,JN])}function Mfn(){return Cg(),lt(ut(s5e,1),te,311,0,[ZN,H5,qk])}function Ifn(){return o_(),lt(ut(LAt,1),te,390,0,[w1t,AAt,QG])}function Ofn(){return To(),lt(ut(j6e,1),te,462,0,[HA,vl,ku])}function Nfn(){return tH(),lt(ut(qAt,1),te,387,0,[$At,S1t,zAt])}function Pfn(){return i_(),lt(ut(HAt,1),te,349,0,[A1t,_1t,lP])}function Ffn(){return b7(),lt(ut(UAt,1),te,350,0,[L1t,VAt,VA])}function Bfn(){return jq(),lt(ut(WAt,1),te,352,0,[KAt,D1t,GAt])}function Rfn(){return iH(),lt(ut(YAt,1),te,388,0,[M1t,$T,P3])}function jfn(){return Hm(),lt(ut(ake,1),te,463,0,[hP,UA,eK])}function rd(t){return dc(lt(ut(la,1),ue,8,0,[t.i.n,t.n,t.a]))}function $fn(){return s_(),lt(ut(fLt,1),te,392,0,[hLt,N1t,dP])}function mre(){mre=V,w8e=el(new Fs,(bk(),YA),(I_(),nLt))}function uq(){uq=V,K1t=new rmt("DFS",0),OLt=new rmt("BFS",1)}function vre(t,e,n){var r;r=new hZ,r.b=e,r.a=n,++e.b,ge(t.d,r)}function zfn(t,e,n){var r;r=new io(n.d),ki(r,t),L5t(e,r.a,r.b)}function qfn(t,e){fJt(t,qr(sa(_m(e,24),TV)),qr(sa(e,TV)))}function Fy(t,e){if(t<0||t>e)throw at(new Bo(C8t+t+S8t+e))}function vn(t,e){if(t<0||t>=e)throw at(new Bo(C8t+t+S8t+e))}function qn(t,e){if(t<0||t>=e)throw at(new dwt(C8t+t+S8t+e))}function gn(t,e){this.b=(Wn(t),t),this.a=e&u3?e:e|64|Jd}function a3t(t){var e;return $b(t),e=(Nm(),Nm(),Oht),Pq(t,e)}function Hfn(t,e,n){var r;return r=B_(t,e,!1),r.b<=e&&r.a<=n}function Vfn(){return Sq(),lt(ut(ADt,1),te,439,0,[pdt,_Dt,SDt])}function Ufn(){return dH(),lt(ut(cDt,1),te,394,0,[oDt,hdt,aDt])}function Gfn(){return vH(),lt(ut(sDt,1),te,445,0,[mP,pK,sdt])}function Kfn(){return DH(),lt(ut(W8e,1),te,455,0,[adt,cdt,odt])}function Wfn(){return uO(),lt(ut($Lt,1),te,393,0,[fK,RLt,jLt])}function Yfn(){return Zq(),lt(ut(iDt,1),te,299,0,[idt,rDt,nDt])}function Xfn(){return cd(),lt(ut(XMt,1),te,278,0,[GT,$3,KT])}function Qfn(){return lk(),lt(ut(pIt,1),te,280,0,[gIt,q3,RK])}function Jfn(){return Ag(),lt(ut(cIt,1),te,346,0,[IK,Xp,bL])}function Zfn(){return pO(),lt(ut(bdt,1),te,444,0,[vK,yK,xK])}function Rm(t){return Hr(t),Lt(t,16)?new fl(u(t,16)):DE(t.Kc())}function o3t(t,e){return t&&t.equals?t.equals(e):$t(t)===$t(e)}function sa(t,e){return Fb(Uun(ec(t)?rf(t):t,ec(e)?rf(e):e))}function T1(t,e){return Fb(Gun(ec(t)?rf(t):t,ec(e)?rf(e):e))}function vst(t,e){return Fb(Kun(ec(t)?rf(t):t,ec(e)?rf(e):e))}function t1n(t,e){var n;return n=(Wn(t),t).g,evt(!!n),Wn(e),n(e)}function yre(t,e){var n,r;return r=OE(t,e),n=t.a.fd(r),new CYt(t,n)}function e1n(t){return t.Db>>16!=6?null:u(Kot(t),241)}function n1n(t){if(t.p!=2)throw at(new Xu);return qr(t.f)&js}function r1n(t){if(t.p!=2)throw at(new Xu);return qr(t.k)&js}function et(t){return ur(t.ar?1:0}function Tre(t,e){var n,r;return n=qst(e),r=n,u(tr(t.c,r),17).a}function yst(t,e,n){var r;r=t.d[e.p],t.d[e.p]=t.d[n.p],t.d[n.p]=r}function g1n(t,e,n){var r;t.n&&e&&n&&(r=new Ktt,ge(t.e,r))}function xst(t,e){if(qs(t.a,e),e.d)throw at(new uc(Nbe));e.d=t}function l3t(t,e){this.a=new fe,this.d=new fe,this.f=t,this.c=e}function Cre(){this.c=new cJt,this.a=new gse,this.b=new SKt,VYt()}function Sre(){ck(),this.b=new _r,this.a=new _r,this.c=new fe}function _re(t,e,n){this.d=t,this.j=e,this.e=n,this.o=-1,this.p=3}function Are(t,e,n){this.d=t,this.k=e,this.f=n,this.o=-1,this.p=5}function Lre(t,e,n,r,s,o){l4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Dre(t,e,n,r,s,o){h4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Mre(t,e,n,r,s,o){A3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Ire(t,e,n,r,s,o){g4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Ore(t,e,n,r,s,o){L3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Nre(t,e,n,r,s,o){f4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Pre(t,e,n,r,s,o){d4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Fre(t,e,n,r,s,o){D3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Bre(t,e,n,r){i$.call(this,n),this.b=t,this.c=e,this.d=r}function Rre(t,e){this.f=t,this.a=(VE(),QK),this.c=QK,this.b=e}function jre(t,e){this.g=t,this.d=(VE(),JK),this.a=JK,this.b=e}function h3t(t,e){!t.c&&(t.c=new ps(t,0)),gV(t.c,(Ni(),AL),e)}function p1n(t,e){return Qxn(t,e,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function b1n(t,e){return vee(Pc(t.q.getTime()),Pc(e.q.getTime()))}function $re(t){return _it(t.e.Rd().gc()*t.c.Rd().gc(),16,new wnt(t))}function w1n(t){return!!t.u&&Wc(t.u.a).i!=0&&!(t.n&&lot(t.n))}function m1n(t){return!!t.a&&Al(t.a.a).i!=0&&!(t.b&&hot(t.b))}function f3t(t,e){return e==0?!!t.o&&t.o.f!=0:iot(t,e)}function v1n(t,e,n){var r;return r=u(t.Zb().xc(e),16),!!r&&r.Hc(n)}function zre(t,e,n){var r;return r=u(t.Zb().xc(e),16),!!r&&r.Mc(n)}function qre(t,e){var n;return n=1-e,t.a[n]=Wq(t.a[n],n),Wq(t,e)}function Hre(t,e){var n,r;return r=sa(t,So),n=Rf(e,32),T1(n,r)}function Vre(t,e,n){var r;r=(Hr(t),new fl(t)),xvn(new nre(r,e,n))}function MI(t,e,n){var r;r=(Hr(t),new fl(t)),kvn(new rre(r,e,n))}function Ec(t,e,n,r,s,o){return xce(t,e,n,o),x5t(t,r),k5t(t,s),t}function Ure(t,e,n,r){return t.a+=""+Lh(e==null?Vu:rc(e),n,r),t}function La(t,e){this.a=t,gr.call(this,t),Fy(e,t.gc()),this.b=e}function Gre(t){this.a=Vt(aa,Ln,1,W4t(b.Math.max(8,t))<<1,5,1)}function II(t){return u(ld(t,Vt(V0,jp,10,t.c.length,0,1)),199)}function Kd(t){return u(ld(t,Vt(hft,Rut,18,t.c.length,0,1)),482)}function Kre(t){return t.a?t.e.length==0?t.a.a:t.a.a+(""+t.e):t.c}function qS(t){for(;t.d>0&&t.a[--t.d]==0;);t.a[t.d++]==0&&(t.e=0)}function Wre(t){return ur(t.b.b!=t.d.a),t.c=t.b=t.b.b,--t.a,t.c.c}function y1n(t,e,n){t.a=e,t.c=n,t.b.a.$b(),nh(t.d),wy(t.e.a.c,0)}function Yre(t,e){var n;t.e=new rwt,n=n3(e),Ds(n,t.c),l0e(t,n,0)}function Bs(t,e,n,r){var s;s=new q8,s.a=e,s.b=n,s.c=r,Zr(t.a,s)}function le(t,e,n,r){var s;s=new q8,s.a=e,s.b=n,s.c=r,Zr(t.b,s)}function Xre(t,e,n){if(t<0||en)throw at(new Bo(O4n(t,e,n)))}function OI(t,e){if(t<0||t>=e)throw at(new Bo(l5n(t,e)));return t}function x1n(t){if(!("stack"in t))try{throw t}catch{}return t}function J4(t){return ZC(),Lt(t.g,10)?u(t.g,10):null}function k1n(t){return X4(t).dc()?!1:(Uin(t,new ft),!0)}function tw(t){var e;return ec(t)?(e=t,e==-0?0:e):B0n(t)}function Qre(t,e){return Lt(e,44)?bot(t.a,u(e,44)):!1}function Jre(t,e){return Lt(e,44)?bot(t.a,u(e,44)):!1}function Zre(t,e){return Lt(e,44)?bot(t.a,u(e,44)):!1}function d3t(t){var e;return Mb(t),e=new Mt,N4(t.a,new _4(e)),e}function g3t(){var t,e,n;return e=(n=(t=new lm,t),n),ge(QIt,e),e}function lq(t){var e;return Mb(t),e=new pn,N4(t.a,new x6(e)),e}function E1n(t,e){return t.a<=t.b?(e.Dd(t.a++),!0):!1}function tie(t){uat.call(this,t,(KE(),Pht),null,!1,null,!1)}function eie(){eie=V,c3e=$r((E$(),lt(ut(rCt,1),te,488,0,[Wht])))}function nie(){nie=V,QAt=Wee(he(1),he(4)),XAt=Wee(he(1),he(2))}function T1n(t,e){return new xit(e,CS(Oa(e.e),t,t),(Pn(),!0))}function hq(t){return new wu((oh(t,jct),Oq(Qa(Qa(5,t),t/10|0))))}function C1n(t){return _it(t.e.Rd().gc()*t.c.Rd().gc(),273,new bnt(t))}function rie(t){return u(ld(t,Vt(w4e,f2e,12,t.c.length,0,1)),2042)}function S1n(t){return rh(),!go(t)&&!(!go(t)&&t.c.i.c==t.d.i.c)}function _1n(t,e){return ak(),u(X(e,(Cc(),tx)),17).a>=t.gc()}function HS(t,e){uSn(e,t),Kvt(t.d),Kvt(u(X(t,(De(),VG)),214))}function kst(t,e){lSn(e,t),Wvt(t.d),Wvt(u(X(t,(De(),VG)),214))}function A1n(t,e,n){t.d&&zu(t.d.e,t),t.d=e,t.d&&Sm(t.d.e,n,t)}function L1n(t,e,n){return n.f.c.length>0?kyt(t.a,e,n):kyt(t.b,e,n)}function D1n(t,e,n){var r;r=Kwn();try{return wan(t,e,n)}finally{kdn(r)}}function jm(t,e){var n,r;return n=vg(t,e),r=null,n&&(r=n.pe()),r}function VS(t,e){var n,r;return n=vg(t,e),r=null,n&&(r=n.se()),r}function qE(t,e){var n,r;return n=$y(t,e),r=null,n&&(r=n.se()),r}function yg(t,e){var n,r;return n=vg(t,e),r=null,n&&(r=d6t(n)),r}function M1n(t,e,n){var r;return r=T7(n),uV(t.g,r,e),uV(t.i,e,n),e}function p3t(t,e,n){this.d=new gUt(this),this.e=t,this.i=e,this.f=n}function iie(t,e,n,r){this.e=null,this.c=t,this.d=e,this.a=n,this.b=r}function sie(t,e,n,r){nJt(this),this.c=t,this.e=e,this.f=n,this.b=r}function b3t(t,e,n,r){this.d=t,this.n=e,this.g=n,this.o=r,this.p=-1}function aie(t,e,n,r){return Lt(n,59)?new FJt(t,e,n,r):new byt(t,e,n,r)}function HE(t){return Lt(t,16)?u(t,16).dc():!t.Kc().Ob()}function oie(t){if(t.e.g!=t.b)throw at(new Th);return!!t.c&&t.d>0}function Ar(t){return ur(t.b!=t.d.c),t.c=t.b,t.b=t.b.a,++t.a,t.c.c}function w3t(t,e){Wn(e),ls(t.a,t.c,e),t.c=t.c+1&t.a.length-1,Lhe(t)}function Ob(t,e){Wn(e),t.b=t.b-1&t.a.length-1,ls(t.a,t.b,e),Lhe(t)}function cie(t){var e;e=t.Gh(),this.a=Lt(e,71)?u(e,71).Ii():e.Kc()}function I1n(t){return new gn(wgn(u(t.a.md(),16).gc(),t.a.ld()),16)}function uie(){uie=V,CEe=$r((S$(),lt(ut(IDt,1),te,489,0,[wdt])))}function lie(){lie=V,_Ee=$r((_$(),lt(ut(SEe,1),te,558,0,[mdt])))}function hie(){hie=V,UEe=$r((tS(),lt(ut(ZDt,1),te,539,0,[kP])))}function O1n(){return lw(),lt(ut(LCt,1),te,389,0,[x3,ACt,uft,lft])}function N1n(){return KE(),lt(ut(BU,1),te,303,0,[Pht,Fht,Bht,Rht])}function P1n(){return dk(),lt(ut(r3e,1),te,332,0,[$N,jN,zN,qN])}function F1n(){return m_(),lt(ut(a3e,1),te,406,0,[HN,zU,qU,VN])}function B1n(){return Gm(),lt(ut(e3e,1),te,417,0,[RN,BN,Ght,Kht])}function R1n(){return u7(),lt(ut(s4e,1),te,416,0,[bv,y3,v3,F5])}function j1n(){return ud(),lt(ut(P4e,1),te,421,0,[zk,yT,xT,mft])}function $1n(){return rH(),lt(ut(T4e,1),te,371,0,[wft,gG,pG,YN])}function z1n(){return Yy(),lt(ut(v1t,1),te,203,0,[JG,m1t,J5,Q5])}function q1n(){return Wd(),lt(ut(RAt,1),te,284,0,[Up,BAt,k1t,E1t])}function H1n(t){var e;return t.j==(ve(),Er)&&(e=J1e(t),Zu(e,Jn))}function V1n(t,e){var n;n=e.a,Xa(n,e.c.d),xa(n,e.d.d),Vy(n.a,t.n)}function m3t(t,e){var n;return n=u(od(t.b,e),67),!n&&(n=new Ki),n}function ek(t){return ZC(),Lt(t.g,154)?u(t.g,154):null}function U1n(t){t.a=null,t.e=null,wy(t.b.c,0),wy(t.f.c,0),t.c=null}function fq(){fq=V,Hft=new Xwt(J7,0),GSt=new Xwt("TOP_LEFT",1)}function US(){US=V,KA=new Jwt("UPPER",0),GA=new Jwt("LOWER",1)}function G1n(t,e){return R6(new ae(e.e.a+e.f.a/2,e.e.b+e.f.b/2),t)}function fie(t,e){return u(Vl(My(u(Ai(t.k,e),15).Oc(),R5)),113)}function die(t,e){return u(Vl(G6(u(Ai(t.k,e),15).Oc(),R5)),113)}function K1n(){return bk(),lt(ut(tLt,1),te,405,0,[sK,WA,YA,XA])}function W1n(){return a_(),lt(ut(ILt,1),te,353,0,[G1t,lK,U1t,V1t])}function Y1n(){return NH(),lt(ut(eDt,1),te,354,0,[rdt,ZLt,tDt,JLt])}function X1n(){return Yl(),lt(ut(xL,1),te,386,0,[RP,qw,BP,z3])}function Q1n(){return uh(),lt(ut(I7e,1),te,290,0,[NP,K0,h2,OP])}function J1n(){return Lg(),lt(ut(Udt,1),te,223,0,[Vdt,IP,WT,e8])}function Z1n(){return pH(),lt(ut(xIt,1),te,320,0,[Wdt,mIt,yIt,vIt])}function tdn(){return sH(),lt(ut(Y7e,1),te,415,0,[Ydt,EIt,kIt,TIt])}function edn(t){return oq(),Tu(t0t,t)?u(tr(t0t,t),341).Qg():null}function Dh(t,e,n){return e<0?Vot(t,n):u(n,69).wk().Bk(t,t.hi(),e)}function ndn(t,e,n){var r;return r=T7(n),uV(t.j,r,e),hi(t.k,e,n),e}function rdn(t,e,n){var r;return r=T7(n),uV(t.d,r,e),hi(t.e,e,n),e}function gie(t){var e,n;return e=(kb(),n=new sM,n),t&&ZH(e,t),e}function v3t(t){var e;return e=t.aj(t.i),t.i>0&&Xc(t.g,0,e,0,t.i),e}function pie(t,e){var n;for(n=t.j.c.length;n>24}function sdn(t){if(t.p!=1)throw at(new Xu);return qr(t.k)<<24>>24}function adn(t){if(t.p!=7)throw at(new Xu);return qr(t.k)<<16>>16}function odn(t){if(t.p!=7)throw at(new Xu);return qr(t.f)<<16>>16}function Z4(t,e){return e.e==0||t.e==0?yA:(F7(),Zot(t,e))}function mie(t,e){return $t(e)===$t(t)?"(this Map)":e==null?Vu:rc(e)}function cdn(t,e,n){return Fit(Ht(Ko(Eo(t.f,e))),Ht(Ko(Eo(t.f,n))))}function udn(t,e,n){var r;r=u(tr(t.g,n),60),ge(t.a.c,new Ws(e,r))}function vie(t,e,n){t.i=0,t.e=0,e!=n&&(eue(t,e,n),tue(t,e,n))}function ldn(t,e,n,r,s){var o;o=h6n(s,n,r),ge(e,r5n(s,o)),W3n(t,s,e)}function y3t(t,e,n,r,s){this.i=t,this.a=e,this.e=n,this.j=r,this.f=s}function yie(t,e){Qyt.call(this),this.a=t,this.b=e,ge(this.a.b,this)}function xie(t){this.b=new _r,this.c=new _r,this.d=new _r,this.a=t}function kie(t,e){var n;return n=new I4,t.Gd(n),n.a+="..",e.Hd(n),n.a}function Eie(t,e){var n;for(n=e;n;)Tm(t,n.i,n.j),n=Ji(n);return t}function Tie(t,e,n){var r;return r=T7(n),hi(t.b,r,e),hi(t.c,e,n),e}function xg(t){var e;for(e=0;t.Ob();)t.Pb(),e=Qa(e,1);return Oq(e)}function D0(t,e){vo();var n;return n=u(t,69).vk(),l4n(n,e),n.xl(e)}function hdn(t,e,n){if(n){var r=n.oe();t.a[e]=r(n)}else delete t.a[e]}function x3t(t,e){var n;n=t.q.getHours(),t.q.setFullYear(e+Wb),N_(t,n)}function fdn(t,e){return u(e==null?Ko(Eo(t.f,null)):iS(t.i,e),288)}function k3t(t,e){return t==(Un(),xs)&&e==xs?4:t==xs||e==xs?8:32}function dq(t,e,n){return hV(t,e,n,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function ddn(t,e,n){return $7(t,e,n,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function gdn(t,e,n){return i6n(t,e,n,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function E3t(t){t.b!=t.c&&(t.a=Vt(aa,Ln,1,8,5,1),t.b=0,t.c=0)}function GS(t){return ur(t.a=0&&t.a[n]===e[n];n--);return n<0}function gq(t){var e;return t?new ayt(t):(e=new zd,oat(e,t),e)}function xdn(t,e){var n,r;r=!1;do n=Vce(t,e),r=r|n;while(n);return r}function kdn(t){t&&W0n((uwt(),i9t)),--MU,t&&IU!=-1&&(din(IU),IU=-1)}function pq(t){Qxt(),fJt(this,qr(sa(_m(t,24),TV)),qr(sa(t,TV)))}function Lie(){Lie=V,kye=$r((TH(),lt(ut(N9t,1),te,436,0,[zht,O9t])))}function Die(){Die=V,Eye=$r((Mq(),lt(ut(F9t,1),te,435,0,[P9t,qht])))}function Mie(){Mie=V,C3e=$r((Iq(),lt(ut(lCt,1),te,432,0,[Zht,UU])))}function Iie(){Iie=V,x4e=$r((r7(),lt(ut(y4e,1),te,517,0,[KN,dft])))}function Oie(){Oie=V,t5e=$r((qI(),lt(ut(NSt,1),te,487,0,[OSt,EG])))}function Nie(){Nie=V,X4e=$r((YI(),lt(ut(MSt,1),te,428,0,[xG,DSt])))}function Pie(){Pie=V,G4e=$r((Eq(),lt(ut(ESt,1),te,431,0,[kSt,Aft])))}function Fie(){Fie=V,R6e=$r((KI(),lt(ut(jAt,1),te,430,0,[T1t,C1t])))}function Bie(){Bie=V,fke=$r((US(),lt(ut(hke,1),te,531,0,[KA,GA])))}function Rie(){Rie=V,vke=$r((Gd(),lt(ut(mke,1),te,523,0,[Dv,Gp])))}function jie(){jie=V,xke=$r((nd(),lt(ut(yke,1),te,522,0,[Fw,yd])))}function $ie(){$ie=V,Fke=$r((C1(),lt(ut(Pke,1),te,528,0,[F3,o2])))}function zie(){zie=V,o5e=$r((fq(),lt(ut(KSt,1),te,429,0,[Hft,GSt])))}function qie(){qie=V,Hke=$r((Bm(),lt(ut(qke,1),te,464,0,[c2,Z5])))}function Hie(){Hie=V,T8e=$r((Cq(),lt(ut(BLt,1),te,434,0,[FLt,Z1t])))}function Vie(){Vie=V,b8e=$r((uq(),lt(ut(NLt,1),te,433,0,[K1t,OLt])))}function Uie(){Uie=V,x8e=$r((Kq(),lt(ut(PLt,1),te,500,0,[hK,nx])))}function Gie(){Gie=V,vEe=$r((wq(),lt(ut(CDt,1),te,490,0,[gdt,TDt])))}function Kie(){Kie=V,xEe=$r((gat(),lt(ut(MDt,1),te,491,0,[LDt,DDt])))}function Wie(){Wie=V,AEe=$r((BI(),lt(ut(ODt,1),te,438,0,[vdt,kK])))}function Yie(){Yie=V,GEe=$r((sO(),lt(ut(eMt,1),te,437,0,[TK,tMt])))}function Xie(){Xie=V,G7e=$r((vit(),lt(ut(jK,1),te,347,0,[bIt,wIt])))}function Edn(){return Rs(),lt(ut(gL,1),te,88,0,[Ed,tc,Uo,kd,Gh])}function Tdn(){return ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])}function Cdn(t,e,n){return u(e==null?yu(t.f,null,n):Km(t.i,e,n),288)}function Sdn(t){return(t.k==(Un(),xs)||t.k==Ms)&&qi(t,(oe(),MA))}function _st(t){return t.c&&t.d?u3t(t.c)+"->"+u3t(t.d):"e_"+Em(t)}function Fa(t,e){var n,r;for(Wn(e),r=t.Kc();r.Ob();)n=r.Pb(),e.Cd(n)}function _dn(t,e){var n;n=new _6,Q2(n,"x",e.a),Q2(n,"y",e.b),Y6(t,n)}function Adn(t,e){var n;n=new _6,Q2(n,"x",e.a),Q2(n,"y",e.b),Y6(t,n)}function Qie(t,e){var n;for(n=e;n;)Tm(t,-n.i,-n.j),n=Ji(n);return t}function C3t(t,e){var n,r;for(n=e,r=0;n>0;)r+=t.a[n],n-=n&-n;return r}function Mh(t,e,n){var r;return r=(vn(e,t.c.length),t.c[e]),t.c[e]=n,r}function S3t(t,e,n){t.a.c.length=0,ZTn(t,e,n),t.a.c.length==0||_En(t,e)}function NI(t){t.i=0,zM(t.b,null),zM(t.c,null),t.a=null,t.e=null,++t.g}function bq(){bq=V,wd=!0,fye=!1,dye=!1,pye=!1,gye=!1}function Ast(t){bq(),!wd&&(this.c=t,this.e=!0,this.a=new fe)}function Jie(t,e){this.c=0,this.b=e,xQt.call(this,t,17493),this.a=this.c}function Zie(t){nbe(),oKt(this),this.a=new Ki,s5t(this,t),Zr(this.a,t)}function tse(){Qrt(this),this.b=new ae(Zi,Zi),this.a=new ae(Vs,Vs)}function wq(){wq=V,gdt=new amt(eEt,0),TDt=new amt("TARGET_WIDTH",1)}function t5(t,e){return($b(t),wE(new ln(t,new Z3t(e,t.a)))).Bd(Rk)}function Ldn(){return Ua(),lt(ut(SCt,1),te,367,0,[Wf,H0,Qc,cu,Zo])}function Ddn(){return Qy(),lt(ut(B4e,1),te,375,0,[XN,mG,vG,wG,bG])}function Mdn(){return Ip(),lt(ut(LSt,1),te,348,0,[Dft,ASt,Mft,ST,CT])}function Idn(){return w_(),lt(ut(MAt,1),te,323,0,[DAt,y1t,x1t,zA,qA])}function Odn(){return Rh(),lt(ut(a_t,1),te,171,0,[rP,OA,s2,NA,S3])}function Ndn(){return zH(),lt(ut(k8e,1),te,368,0,[Q1t,W1t,J1t,Y1t,X1t])}function Pdn(){return A_(),lt(ut(kEe,1),te,373,0,[rx,Xk,aL,sL,xP])}function Fdn(){return DO(),lt(ut(BDt,1),te,324,0,[NDt,ydt,FDt,xdt,PDt])}function Bdn(){return D1(),lt(ut(G0,1),te,170,0,[_n,Qs,f0,Bw,Wp])}function Rdn(){return o5(),lt(ut(mL,1),te,256,0,[f2,PP,uIt,wL,lIt])}function jdn(t){return d$(),function(){return D1n(t,this,arguments)}}function go(t){return!t.c||!t.d?!1:!!t.c.i&&t.c.i==t.d.i}function _3t(t,e){return Lt(e,143)?hn(t.c,u(e,143).c):!1}function _l(t){return t.t||(t.t=new QGt(t),h_(new dWt(t),0,t.t)),t.t}function ese(t){this.b=t,Zn.call(this,t),this.a=u(jn(this.b.a,4),129)}function nse(t){this.b=t,$6.call(this,t),this.a=u(jn(this.b.a,4),129)}function jf(t,e,n,r,s){fse.call(this,e,r,s),this.c=t,this.b=n}function A3t(t,e,n,r,s){_re.call(this,e,r,s),this.c=t,this.a=n}function L3t(t,e,n,r,s){Are.call(this,e,r,s),this.c=t,this.a=n}function D3t(t,e,n,r,s){fse.call(this,e,r,s),this.c=t,this.a=n}function Lst(t,e){var n;return n=u(od(t.d,e),23),n||u(od(t.e,e),23)}function rse(t,e){var n,r;return n=e.ld(),r=t.Fe(n),!!r&&Nc(r.e,e.md())}function ise(t,e){var n;return n=e.ld(),new bm(n,t.e.pc(n,u(e.md(),16)))}function $dn(t,e){var n;return n=t.a.get(e),n??Vt(aa,Ln,1,0,5,1)}function sse(t){var e;return e=t.length,hn(Qn.substr(Qn.length-e,e),t)}function dr(t){if(Mr(t))return t.c=t.a,t.a.Pb();throw at(new cc)}function M3t(t,e){return e==0||t.e==0?t:e>0?Yde(t,e):mle(t,-e)}function nk(t,e){return e==0||t.e==0?t:e>0?mle(t,e):Yde(t,-e)}function I3t(t){Qrn.call(this,t==null?Vu:rc(t),Lt(t,82)?u(t,82):null)}function ase(t){var e;return t.c||(e=t.r,Lt(e,90)&&(t.c=u(e,29))),t.c}function Dst(t){var e;return e=new Pm,Qo(e,t),Zt(e,(De(),Vo),null),e}function ose(t){var e,n;return e=t.c.i,n=t.d.i,e.k==(Un(),Ms)&&n.k==Ms}function Mst(t){var e,n,r;return e=t&Il,n=t>>22&Il,r=t<0?Fg:0,Eu(e,n,r)}function zdn(t){var e,n,r,s;for(n=t,r=0,s=n.length;r=0?t.Lh(r,n,!0):tv(t,e,n)}function Hdn(t,e,n){return Bi(R6(S7(t),Oa(e.b)),R6(S7(t),Oa(n.b)))}function Vdn(t,e,n){return Bi(R6(S7(t),Oa(e.e)),R6(S7(t),Oa(n.e)))}function Udn(t,e){return b.Math.min(Nb(e.a,t.d.d.c),Nb(e.b,t.d.d.c))}function PI(t,e){t._i(t.i+1),kS(t,t.i,t.Zi(t.i,e)),t.Mi(t.i++,e),t.Ni()}function KS(t){var e,n;++t.j,e=t.g,n=t.i,t.g=null,t.i=0,t.Oi(n,e),t.Ni()}function cse(t,e,n){var r;r=new Mmt(t.a),t_(r,t.a.a),yu(r.f,e,n),t.a.a=r}function O3t(t,e,n,r){var s;for(s=0;se)throw at(new Bo(x6t(t,e,"index")));return t}function Ep(t,e){var n;return n=(vn(e,t.c.length),t.c[e]),Swt(t.c,e,1),n}function F3t(t,e){var n,r;return n=(Wn(t),t),r=(Wn(e),e),n==r?0:ne.p?-1:0}function bse(t){var e;return t.a||(e=t.r,Lt(e,156)&&(t.a=u(e,156))),t.a}function Qdn(t,e,n){var r;return++t.e,--t.f,r=u(t.d[e].gd(n),136),r.md()}function Jdn(t){var e,n;return e=t.ld(),n=u(t.md(),16),pI(n.Nc(),new mnt(e))}function wse(t,e){return Tu(t.a,e)?(rk(t.a,e),!0):!1}function ik(t,e,n){return OI(e,t.e.Rd().gc()),OI(n,t.c.Rd().gc()),t.a[e][n]}function vq(t,e,n){this.a=t,this.b=e,this.c=n,ge(t.t,this),ge(e.i,this)}function yq(t,e,n,r){this.f=t,this.e=e,this.d=n,this.b=r,this.c=r?r.d:null}function FI(){this.b=new Ki,this.a=new Ki,this.b=new Ki,this.a=new Ki}function VE(){VE=V;var t,e;QK=(bE(),e=new o$,e),JK=(t=new Hnt,t)}function Zdn(t){var e;return $b(t),e=new ute(t,t.a.e,t.a.d|4),new rvt(t,e)}function mse(t){var e;for(Mb(t),e=0;t.a.Bd(new xn);)e=Qa(e,1);return e}function xq(t,e){return Wn(e),t.c=0,"Initial capacity must not be negative")}function kq(){kq=V,oL=new Oi("org.eclipse.elk.labels.labelManager")}function vse(){vse=V,wSt=new rs("separateLayerConnections",(rH(),wft))}function C1(){C1=V,F3=new emt("REGULAR",0),o2=new emt("CRITICAL",1)}function BI(){BI=V,vdt=new cmt("FIXED",0),kK=new cmt("CENTER_NODE",1)}function Eq(){Eq=V,kSt=new Kwt("QUADRATIC",0),Aft=new Kwt("SCANLINE",1)}function yse(){yse=V,K4e=$r((QS(),lt(ut(CSt,1),te,322,0,[_A,QN,TSt])))}function xse(){xse=V,W4e=$r(($q(),lt(ut(_St,1),te,351,0,[SSt,yG,Lft])))}function kse(){kse=V,J4e=$r((ow(),lt(ut(Q4e,1),te,459,0,[Ift,_T,z5])))}function Ese(){Ese=V,H4e=$r((Vm(),lt(ut(vft,1),te,372,0,[mv,r2,wv])))}function Tse(){Tse=V,a5e=$r((Cg(),lt(ut(s5e,1),te,311,0,[ZN,H5,qk])))}function Cse(){Cse=V,i5e=$r((c7(),lt(ut(qft,1),te,298,0,[$ft,zft,JN])))}function Sse(){Sse=V,O6e=$r((o_(),lt(ut(LAt,1),te,390,0,[w1t,AAt,QG])))}function _se(){_se=V,z6e=$r((tH(),lt(ut(qAt,1),te,387,0,[$At,S1t,zAt])))}function Ase(){Ase=V,q6e=$r((i_(),lt(ut(HAt,1),te,349,0,[A1t,_1t,lP])))}function Lse(){Lse=V,$6e=$r((To(),lt(ut(j6e,1),te,462,0,[HA,vl,ku])))}function Dse(){Dse=V,V6e=$r((jq(),lt(ut(WAt,1),te,352,0,[KAt,D1t,GAt])))}function Mse(){Mse=V,H6e=$r((b7(),lt(ut(UAt,1),te,350,0,[L1t,VAt,VA])))}function Ise(){Ise=V,U6e=$r((iH(),lt(ut(YAt,1),te,388,0,[M1t,$T,P3])))}function Ose(){Ose=V,Gke=$r((s_(),lt(ut(fLt,1),te,392,0,[hLt,N1t,dP])))}function Nse(){Nse=V,C8e=$r((uO(),lt(ut($Lt,1),te,393,0,[fK,RLt,jLt])))}function Pse(){Pse=V,G8e=$r((Zq(),lt(ut(iDt,1),te,299,0,[idt,rDt,nDt])))}function Fse(){Fse=V,K8e=$r((vH(),lt(ut(sDt,1),te,445,0,[mP,pK,sdt])))}function Bse(){Bse=V,Y8e=$r((DH(),lt(ut(W8e,1),te,455,0,[adt,cdt,odt])))}function Rse(){Rse=V,J8e=$r((dH(),lt(ut(cDt,1),te,394,0,[oDt,hdt,aDt])))}function jse(){jse=V,yEe=$r((Sq(),lt(ut(ADt,1),te,439,0,[pdt,_Dt,SDt])))}function $se(){$se=V,oke=$r((Hm(),lt(ut(ake,1),te,463,0,[hP,UA,eK])))}function zse(){zse=V,Lye=$r((pl(),lt(ut(Aye,1),te,470,0,[c0,e2,Gf])))}function qse(){qse=V,_ye=$r((A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])))}function Hse(){Hse=V,Mye=$r((qu(),lt(ut(Dye,1),te,471,0,[O1,n2,Kf])))}function Vse(){Vse=V,bye=$r((bl(),lt(ut(Ho,1),te,108,0,[I9t,sc,w3])))}function Use(){Use=V,Q3e=$r((WS(),lt(ut(CCt,1),te,391,0,[rft,nft,ift])))}function Gse(){Gse=V,M7e=$r((Ag(),lt(ut(cIt,1),te,346,0,[IK,Xp,bL])))}function Kse(){Kse=V,TEe=$r((pO(),lt(ut(bdt,1),te,444,0,[vK,yK,xK])))}function Wse(){Wse=V,_7e=$r((cd(),lt(ut(XMt,1),te,278,0,[GT,$3,KT])))}function Yse(){Yse=V,U7e=$r((lk(),lt(ut(pIt,1),te,280,0,[gIt,q3,RK])))}function ad(t,e){return!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),Yat(t.o,e)}function t0n(t,e){var n;t.C&&(n=u(Io(t.b,e),127).n,n.d=t.C.d,n.a=t.C.a)}function z3t(t){var e,n,r,s;s=t.d,e=t.a,n=t.b,r=t.c,t.d=n,t.a=r,t.b=s,t.c=e}function e0n(t){return!t.g&&(t.g=new gC),!t.g.b&&(t.g.b=new KGt(t)),t.g.b}function RI(t){return!t.g&&(t.g=new gC),!t.g.c&&(t.g.c=new XGt(t)),t.g.c}function n0n(t){return!t.g&&(t.g=new gC),!t.g.d&&(t.g.d=new WGt(t)),t.g.d}function r0n(t){return!t.g&&(t.g=new gC),!t.g.a&&(t.g.a=new YGt(t)),t.g.a}function i0n(t,e,n,r){return n&&(r=n.Rh(e,ns(n.Dh(),t.c.uk()),null,r)),r}function s0n(t,e,n,r){return n&&(r=n.Th(e,ns(n.Dh(),t.c.uk()),null,r)),r}function Pst(t,e,n,r){var s;return s=Vt(Fr,ii,28,e+1,15,1),u7n(s,t,e,n,r),s}function Vt(t,e,n,r,s,o){var h;return h=yhe(s,r),s!=10&<(ut(t,o),e,n,s,h),h}function a0n(t,e,n){var r,s;for(s=new o7(e,t),r=0;rn||e=0?t.Lh(n,!0,!0):tv(t,e,!0)}function E0n(t,e,n){var r;return r=Jce(t,e,n),t.b=new Yq(r.c.length),ukt(t,r)}function T0n(t){if(t.b<=0)throw at(new cc);return--t.b,t.a-=t.c.c,he(t.a)}function C0n(t){var e;if(!t.a)throw at(new cne);return e=t.a,t.a=Ji(t.a),e}function S0n(t){for(;!t.a;)if(!NZt(t.c,new BC(t)))return!1;return!0}function sk(t){var e;return Hr(t),Lt(t,204)?(e=u(t,204),e):new b6(t)}function _0n(t){Tq(),u(t.of((ai(),j3)),181).Fc((wl(),FP)),t.qf(zdt,null)}function Tq(){Tq=V,YEe=new NR,QEe=new PR,XEe=pbn((ai(),zdt),YEe,l2,QEe)}function Cq(){Cq=V,FLt=new smt("LEAF_NUMBER",0),Z1t=new smt("NODE_SIZE",1)}function $st(t){t.a=Vt(Fr,ii,28,t.b+1,15,1),t.c=Vt(Fr,ii,28,t.b,15,1),t.d=0}function A0n(t,e){t.a.Ne(e.d,t.b)>0&&(ge(t.c,new qvt(e.c,e.d,t.d)),t.b=e.d)}function Q3t(t,e){if(t.g==null||e>=t.i)throw at(new Grt(e,t.i));return t.g[e]}function Zse(t,e,n){if(d7(t,n),n!=null&&!t.fk(n))throw at(new $nt);return n}function zst(t,e){return WI(e)!=10&<(Wl(e),e.Sm,e.__elementTypeId$,WI(e),t),t}function GE(t,e,n,r){var s;r=(Nm(),r||C9t),s=t.slice(e,n),k6t(s,t,e,n,-e,r)}function Ih(t,e,n,r,s){return e<0?tv(t,n,r):u(n,69).wk().yk(t,t.hi(),e,r,s)}function L0n(t,e){return Bi(Rt(Ht(X(t,(oe(),xv)))),Rt(Ht(X(e,xv))))}function tae(){tae=V,lye=$r((KE(),lt(ut(BU,1),te,303,0,[Pht,Fht,Bht,Rht])))}function KE(){KE=V,Pht=new M$("All",0),Fht=new VQt,Bht=new ZQt,Rht=new HQt}function pl(){pl=V,c0=new wrt(_k,0),e2=new wrt(J7,1),Gf=new wrt(Ak,2)}function eae(){eae=V,fV(),sOt=Zi,JTe=Vs,aOt=new na(Zi),ZTe=new na(Vs)}function nae(){nae=V,n3e=$r((Gm(),lt(ut(e3e,1),te,417,0,[RN,BN,Ght,Kht])))}function rae(){rae=V,o3e=$r((m_(),lt(ut(a3e,1),te,406,0,[HN,zU,qU,VN])))}function iae(){iae=V,i3e=$r((dk(),lt(ut(r3e,1),te,332,0,[$N,jN,zN,qN])))}function sae(){sae=V,f4e=$r((lw(),lt(ut(LCt,1),te,389,0,[x3,ACt,uft,lft])))}function aae(){aae=V,a4e=$r((u7(),lt(ut(s4e,1),te,416,0,[bv,y3,v3,F5])))}function oae(){oae=V,F4e=$r((ud(),lt(ut(P4e,1),te,421,0,[zk,yT,xT,mft])))}function cae(){cae=V,C4e=$r((rH(),lt(ut(T4e,1),te,371,0,[wft,gG,pG,YN])))}function uae(){uae=V,N6e=$r((Yy(),lt(ut(v1t,1),te,203,0,[JG,m1t,J5,Q5])))}function lae(){lae=V,B6e=$r((Wd(),lt(ut(RAt,1),te,284,0,[Up,BAt,k1t,E1t])))}function qI(){qI=V,OSt=new Ywt(r0,0),EG=new Ywt("IMPROVE_STRAIGHTNESS",1)}function hae(t,e){var n,r;return r=e/t.c.Rd().gc()|0,n=e%t.c.Rd().gc(),ik(t,r,n)}function fae(t){var e;if(t.nl())for(e=t.i-1;e>=0;--e)Dt(t,e);return v3t(t)}function J3t(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[0];)n=e;return n}function dae(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[1];)n=e;return n}function D0n(t){return Lt(t,180)?""+u(t,180).a:t==null?null:rc(t)}function M0n(t){return Lt(t,180)?""+u(t,180).a:t==null?null:rc(t)}function gae(t,e){if(e.a)throw at(new uc(Nbe));qs(t.a,e),e.a=t,!t.j&&(t.j=e)}function Z3t(t,e){ez.call(this,e.zd(),e.yd()&-16449),Wn(t),this.a=t,this.c=e}function I0n(t,e){return new xit(e,Tm(Oa(e.e),e.f.a+t,e.f.b+t),(Pn(),!1))}function O0n(t,e){return LE(),ge(t,new Ws(e,he(e.e.c.length+e.g.c.length)))}function N0n(t,e){return LE(),ge(t,new Ws(e,he(e.e.c.length+e.g.c.length)))}function pae(){pae=V,U8e=$r((NH(),lt(ut(eDt,1),te,354,0,[rdt,ZLt,tDt,JLt])))}function bae(){bae=V,p8e=$r((a_(),lt(ut(ILt,1),te,353,0,[G1t,lK,U1t,V1t])))}function wae(){wae=V,Vke=$r((bk(),lt(ut(tLt,1),te,405,0,[sK,WA,YA,XA])))}function mae(){mae=V,A7e=$r((Lg(),lt(ut(Udt,1),te,223,0,[Vdt,IP,WT,e8])))}function vae(){vae=V,O7e=$r((uh(),lt(ut(I7e,1),te,290,0,[NP,K0,h2,OP])))}function yae(){yae=V,H7e=$r((Yl(),lt(ut(xL,1),te,386,0,[RP,qw,BP,z3])))}function xae(){xae=V,K7e=$r((pH(),lt(ut(xIt,1),te,320,0,[Wdt,mIt,yIt,vIt])))}function kae(){kae=V,X7e=$r((sH(),lt(ut(Y7e,1),te,415,0,[Ydt,EIt,kIt,TIt])))}function Sq(){Sq=V,pdt=new zrt(J2e,0),_Dt=new zrt(y7t,1),SDt=new zrt(r0,2)}function jy(t,e,n,r,s){return Wn(t),Wn(e),Wn(n),Wn(r),Wn(s),new Tyt(t,e,r)}function Eae(t,e){var n;return n=u(rk(t.e,e),400),n?(Zvt(n),n.e):null}function zu(t,e){var n;return n=Xo(t,e,0),n==-1?!1:(Ep(t,n),!0)}function Tae(t,e,n){var r;return Mb(t),r=new Je,r.a=e,t.a.Nb(new sXt(r,n)),r.a}function P0n(t){var e;return Mb(t),e=Vt(ma,No,28,0,15,1),N4(t.a,new y6(e)),e}function t4t(t){var e;if(!rat(t))throw at(new cc);return t.e=1,e=t.d,t.d=null,e}function Cp(t){var e;return ec(t)&&(e=0-t,!isNaN(e))?e:Fb(h7(t))}function Xo(t,e,n){for(;n=0?AH(t,n,!0,!0):tv(t,e,!0)}function n4t(t){var e;return e=nw(jn(t,32)),e==null&&(Au(t),e=nw(jn(t,32))),e}function r4t(t){var e;return t.Oh()||(e=fr(t.Dh())-t.ji(),t.$h().Mk(e)),t.zh()}function Dae(t,e){eCt=new Le,s3e=e,kA=t,u(kA.b,68),V3t(kA,eCt,null),Gge(kA)}function WS(){WS=V,rft=new vrt("XY",0),nft=new vrt("X",1),ift=new vrt("Y",2)}function qu(){qu=V,O1=new mrt("TOP",0),n2=new mrt(J7,1),Kf=new mrt(O8t,2)}function Cg(){Cg=V,ZN=new Crt(r0,0),H5=new Crt("TOP",1),qk=new Crt(O8t,2)}function KI(){KI=V,T1t=new Qwt("INPUT_ORDER",0),C1t=new Qwt("PORT_DEGREE",1)}function WE(){WE=V,a9t=Eu(Il,Il,524287),Wve=Eu(0,0,aN),o9t=Mst(1),Mst(2),c9t=Mst(0)}function Gst(t){var e;return t.d!=t.r&&(e=of(t),t.e=!!e&&e.lk()==Wme,t.d=e),t.e}function Kst(t,e,n){var r;return r=t.g[e],kS(t,e,t.Zi(e,n)),t.Ri(e,n,r),t.Ni(),r}function Dq(t,e){var n;return n=t.dd(e),n>=0?(t.gd(n),!0):!1}function Wst(t,e){var n;for(Hr(t),Hr(e),n=!1;e.Ob();)n=n|t.Fc(e.Pb());return n}function od(t,e){var n;return n=u(tr(t.e,e),400),n?(hJt(t,n),n.e):null}function Mae(t){var e,n;return e=t/60|0,n=t%60,n==0?""+e:""+e+":"+(""+n)}function $y(t,e){var n=t.a[e],r=(yat(),Lht)[typeof n];return r?r(n):f5t(typeof n)}function fc(t,e){var n,r;return $b(t),r=new R3t(e,t.a),n=new BZt(r),new ln(t,n)}function Yst(t){var e;return e=t.b.c.length==0?null:Oe(t.b,0),e!=null&&sat(t,0),e}function j0n(t,e){var n,r,s;s=e.c.i,n=u(tr(t.f,s),60),r=n.d.c-n.e.c,P4t(e.a,r,0)}function i4t(t,e){var n;for(++t.d,++t.c[e],n=e+1;n=0;)++e[0]}function $0n(t,e){Su(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function z0n(t,e){_u(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function q0n(t,e){qm(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function H0n(t,e){zm(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function V0n(t,e,n){return R6(new ae(n.e.a+n.f.a/2,n.e.b+n.f.b/2),t)==(Wn(e),e)}function U0n(t,e){return Lt(e,102)&&u(e,19).Bb&po?new Krt(e,t):new o7(e,t)}function G0n(t,e){return Lt(e,102)&&u(e,19).Bb&po?new Krt(e,t):new o7(e,t)}function WI(t){return t.__elementTypeCategory$==null?10:t.__elementTypeCategory$}function Nae(t,e){return e==(bit(),bit(),oye)?t.toLocaleLowerCase():t.toLowerCase()}function Pae(t){if(!t.e)throw at(new cc);return t.c=t.a=t.e,t.e=t.e.e,--t.d,t.a.f}function s4t(t){if(!t.c)throw at(new cc);return t.e=t.a=t.c,t.c=t.c.c,++t.d,t.a.f}function Fae(t){var e;for(++t.a,e=t.c.a.length;t.at.a[r]&&(r=n);return r}function Bae(t){var e;return e=u(X(t,(oe(),vv)),313),e?e.a==t:!1}function Rae(t){var e;return e=u(X(t,(oe(),vv)),313),e?e.i==t:!1}function jae(){jae=V,e4e=$r((Ua(),lt(ut(SCt,1),te,367,0,[Wf,H0,Qc,cu,Zo])))}function $ae(){$ae=V,R4e=$r((Qy(),lt(ut(B4e,1),te,375,0,[XN,mG,vG,wG,bG])))}function zae(){zae=V,Y4e=$r((Ip(),lt(ut(LSt,1),te,348,0,[Dft,ASt,Mft,ST,CT])))}function qae(){qae=V,P6e=$r((w_(),lt(ut(MAt,1),te,323,0,[DAt,y1t,x1t,zA,qA])))}function Hae(){Hae=V,c5e=$r((Rh(),lt(ut(a_t,1),te,171,0,[rP,OA,s2,NA,S3])))}function Vae(){Vae=V,E8e=$r((zH(),lt(ut(k8e,1),te,368,0,[Q1t,W1t,J1t,Y1t,X1t])))}function Uae(){Uae=V,EEe=$r((A_(),lt(ut(kEe,1),te,373,0,[rx,Xk,aL,sL,xP])))}function Gae(){Gae=V,LEe=$r((DO(),lt(ut(BDt,1),te,324,0,[NDt,ydt,FDt,xdt,PDt])))}function Kae(){Kae=V,S7e=$r((Rs(),lt(ut(gL,1),te,88,0,[Ed,tc,Uo,kd,Gh])))}function Wae(){Wae=V,JEe=$r((D1(),lt(ut(G0,1),te,170,0,[_n,Qs,f0,Bw,Wp])))}function Yae(){Yae=V,P7e=$r((o5(),lt(ut(mL,1),te,256,0,[f2,PP,uIt,wL,lIt])))}function Xae(){Xae=V,R7e=$r((ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])))}function Mq(){Mq=V,P9t=new zwt("BY_SIZE",0),qht=new zwt("BY_SIZE_AND_SHAPE",1)}function Iq(){Iq=V,Zht=new Vwt("EADES",0),UU=new Vwt("FRUCHTERMAN_REINGOLD",1)}function YI(){YI=V,xG=new Wwt("READING_DIRECTION",0),DSt=new Wwt("ROTATION",1)}function YS(){YS=V,u4e=new BD,l4e=new $X,o4e=new P2,c4e=new Gc,h4e=new zX}function Qae(t){this.b=new fe,this.a=new fe,this.c=new fe,this.d=new fe,this.e=t}function Jae(t){this.g=t,this.f=new fe,this.a=b.Math.min(this.g.c.c,this.g.d.c)}function Zae(t,e,n){gz.call(this),c4t(this),this.a=t,this.c=n,this.b=e.d,this.f=e.e}function J0n(t,e,n){var r,s;for(s=new G(n);s.a=0&&e0?e-1:e,NWt(Crn(Eoe(Yvt(new S6,n),t.n),t.j),t.k)}function zo(t){var e,n;n=(e=new Vnt,e),Or((!t.q&&(t.q=new Jt(vf,t,11,10)),t.q),n)}function a4t(t){return(t.i&2?"interface ":t.i&1?"":"class ")+(wg(t),t.o)}function Oq(t){return $c(t,xi)>0?xi:$c(t,Ga)<0?Ga:qr(t)}function zy(t){return t<3?(oh(t,pbe),t+1):t=-.01&&t.a<=gd&&(t.a=0),t.b>=-.01&&t.b<=gd&&(t.b=0),t}function e5(t){w5();var e,n;for(n=E7t,e=0;en&&(n=t[e]);return n}function roe(t,e){var n;if(n=zO(t.Dh(),e),!n)throw at(new zn(Jb+e+qlt));return n}function qy(t,e){var n;for(n=t;Ji(n);)if(n=Ji(n),n==e)return!0;return!1}function ugn(t,e){var n,r,s;for(r=e.a.ld(),n=u(e.a.md(),16).gc(),s=0;st||t>e)throw at(new gwt("fromIndex: 0, toIndex: "+t+x8t+e))}function $m(t){if(t<0)throw at(new zn("Illegal Capacity: "+t));this.g=this.aj(t)}function o4t(t,e){return Z1(),$f(Kb),b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)}function Jst(t,e){var n,r,s,o;for(r=t.d,s=0,o=r.length;s0&&(t.a/=e,t.b/=e),t}function sh(t){var e;return t.w?t.w:(e=e1n(t),e&&!e.Vh()&&(t.w=e),e)}function YE(t,e){var n,r;r=t.a,n=s2n(t,e,null),r!=e&&!t.e&&(n=H7(t,e,n)),n&&n.oj()}function coe(t,e,n){var r,s;r=e;do s=Rt(t.p[r.p])+n,t.p[r.p]=s,r=t.a[r.p];while(r!=e)}function uoe(t,e,n){var r=function(){return t.apply(r,arguments)};return e.apply(r,n),r}function bgn(t){var e;return t==null?null:(e=u(t,195),A3n(e,e.length))}function Dt(t,e){if(t.g==null||e>=t.i)throw at(new Grt(e,t.i));return t.Wi(e,t.g[e])}function wgn(t,e){mn();var n,r;for(r=new fe,n=0;n=14&&e<=16))),t}function jr(t,e){var n;return Wn(e),n=t[":"+e],wI(!!n,"Enum constant undefined: "+e),n}function Lr(t,e,n,r,s,o){var h;return h=Wit(t,e),Toe(n,h),h.i=s?8:0,h.f=r,h.e=s,h.g=o,h}function l4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=1,this.c=t,this.a=n}function h4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=2,this.c=t,this.a=n}function f4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=6,this.c=t,this.a=n}function d4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=7,this.c=t,this.a=n}function g4t(t,e,n,r,s){this.d=e,this.j=r,this.e=s,this.o=-1,this.p=4,this.c=t,this.a=n}function Coe(t,e){var n,r,s,o;for(r=e,s=0,o=r.length;s=0))throw at(new zn("tolerance ("+t+") must be >= 0"));return t}function _oe(t,e){var n;return Lt(e,44)?t.c.Mc(e):(n=Yat(t,e),yH(t,e),n)}function Oo(t,e,n){return uw(t,e),mu(t,n),Sp(t,0),Hy(t,1),Mp(t,!0),Dp(t,!0),t}function QI(t,e){var n;if(n=t.gc(),e<0||e>n)throw at(new Dy(e,n));return new Cvt(t,e)}function zq(t,e){t.b=b.Math.max(t.b,e.d),t.e+=e.r+(t.a.c.length==0?0:t.c),ge(t.a,e)}function Aoe(t){_y(t.c>=0),Mwn(t.d,t.c)<0&&(t.a=t.a-1&t.d.a.length-1,t.b=t.d.c),t.c=-1}function qq(t){var e,n;for(n=t.c.Cc().Kc();n.Ob();)e=u(n.Pb(),16),e.$b();t.c.$b(),t.d=0}function _gn(t){var e,n,r,s;for(n=t.a,r=0,s=n.length;r=0}function x4t(t,e){t.r>0&&t.c0&&t.g!=0&&x4t(t.i,e/t.r*t.i.d))}function k4t(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,1,n,t.c))}function eat(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,4,n,t.c))}function n7(t,e){var n;n=t.k,t.k=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,2,n,t.k))}function nat(t,e){var n;n=t.D,t.D=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,2,n,t.D))}function Vq(t,e){var n;n=t.f,t.f=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,8,n,t.f))}function Uq(t,e){var n;n=t.i,t.i=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,7,n,t.i))}function E4t(t,e){var n;n=t.a,t.a=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,8,n,t.a))}function T4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,0,n,t.b))}function C4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,0,n,t.b))}function S4t(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,1,n,t.c))}function _4t(t,e){var n;n=t.d,t.d=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,1,n,t.d))}function Ngn(t,e,n){var r;t.b=e,t.a=n,r=(t.a&512)==512?new YKt:new kj,t.c=Wkn(r,t.b,t.a)}function $oe(t,e){return Ng(t.e,e)?(vo(),Gst(e)?new Sz(e,t):new eI(e,t)):new gQt(e,t)}function Pgn(t){var e,n;return 0>t?new Lwt:(e=t+1,n=new Jie(e,t),new ivt(null,n))}function Fgn(t,e){mn();var n;return n=new M6(1),ba(t)?jo(n,t,e):yu(n.f,t,e),new Kn(n)}function Bgn(t,e){var n,r;return n=t.c,r=e.e[t.p],r>0?u(Oe(n.a,r-1),10):null}function Rgn(t,e){var n,r;return n=t.o+t.p,r=e.o+e.p,ne?(e<<=1,e>0?e:z_):e}function rat(t){switch(Rmt(t.e!=3),t.e){case 2:return!1;case 0:return!0}return Kdn(t)}function qoe(t,e){var n;return Lt(e,8)?(n=u(e,8),t.a==n.a&&t.b==n.b):!1}function $gn(t,e){var n;n=new Le,u(e.b,68),u(e.b,68),u(e.b,68),Cu(e.a,new Pvt(t,n,e))}function Hoe(t,e){var n,r;for(r=e.vc().Kc();r.Ob();)n=u(r.Pb(),44),SO(t,n.ld(),n.md())}function A4t(t,e){var n;n=t.d,t.d=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,11,n,t.d))}function Gq(t,e){var n;n=t.j,t.j=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,13,n,t.j))}function L4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,21,n,t.b))}function zgn(t,e){(bq(),wd?null:e.c).length==0&&sZt(e,new _e),jo(t.a,wd?null:e.c,e)}function qgn(t,e){e.Ug("Hierarchical port constraint processing",1),amn(t),SSn(t),e.Vg()}function Vm(){Vm=V,mv=new yrt("START",0),r2=new yrt("MIDDLE",1),wv=new yrt("END",2)}function Kq(){Kq=V,hK=new imt("P1_NODE_PLACEMENT",0),nx=new imt("P2_EDGE_ROUTING",1)}function Pb(){Pb=V,$k=new Oi(G8t),WU=new Oi(s2e),TA=new Oi(a2e),UN=new Oi(o2e)}function Um(t){var e;return wit(t.f.g,t.d),ur(t.b),t.c=t.a,e=u(t.a.Pb(),44),t.b=q4t(t),e}function D4t(t){var e;return t.b==null?(bp(),bp(),KP):(e=t.ul()?t.tl():t.sl(),e)}function Voe(t,e){var n;return n=e==null?-1:Xo(t.b,e,0),n<0?!1:(sat(t,n),!0)}function zf(t,e){var n;return Wn(e),n=e.g,t.b[n]?!1:(ls(t.b,n,e),++t.c,!0)}function Wq(t,e){var n,r;return n=1-e,r=t.a[n],t.a[n]=r.a[e],r.a[e]=t,t.b=!0,r.b=!1,r}function Hgn(t,e){var n,r;for(r=e.Kc();r.Ob();)n=u(r.Pb(),272),t.b=!0,qs(t.e,n),n.b=t}function Vgn(t,e){var n,r;return n=u(X(t,(De(),I3)),8),r=u(X(e,I3),8),Bi(n.b,r.b)}function iat(t,e,n){var r,s,o;return o=e>>5,s=e&31,r=sa(Ab(t.n[n][o],qr(Rf(s,1))),3),r}function Uoe(t,e,n){var r,s,o;for(o=t.a.length-1,s=t.b,r=0;r0?1:0:(!t.c&&(t.c=DI(Pc(t.f))),t.c).e}function tce(t,e){e?t.B==null&&(t.B=t.D,t.D=null):t.B!=null&&(t.D=t.B,t.B=null)}function Wgn(t,e){return u7(),t==bv&&e==y3||t==y3&&e==bv||t==F5&&e==v3||t==v3&&e==F5}function Ygn(t,e){return u7(),t==bv&&e==v3||t==bv&&e==F5||t==y3&&e==F5||t==y3&&e==v3}function ece(t,e){return Z1(),$f(gd),b.Math.abs(0-e)<=gd||e==0||isNaN(0)&&isNaN(e)?0:t/e}function nce(t,e){return Rt(Ht(Vl(dO(Wo(new ln(null,new gn(t.c.b,16)),new uUt(t)),e))))}function N4t(t,e){return Rt(Ht(Vl(dO(Wo(new ln(null,new gn(t.c.b,16)),new cUt(t)),e))))}function Xgn(){return Co(),lt(ut(jft,1),te,259,0,[CG,Uh,LA,SG,DT,q5,DA,AT,LT,_G])}function Qgn(){return cf(),lt(ut(FAt,1),te,243,0,[ZG,cP,uP,OAt,NAt,IAt,PAt,tK,Lv,N3])}function Jgn(t,e){var n;e.Ug("General Compactor",1),n=rwn(u(ne(t,(Ub(),edt)),393)),n.Cg(t)}function Zgn(t,e){var n,r;return n=u(ne(t,(Ub(),dK)),17),r=u(ne(e,dK),17),jc(n.a,r.a)}function P4t(t,e,n){var r,s;for(s=Dr(t,0);s.b!=s.d.c;)r=u(Ar(s),8),r.a+=e,r.b+=n;return t}function JS(t,e,n){var r;for(r=t.b[n&t.f];r;r=r.b)if(n==r.a&&Ud(e,r.g))return r;return null}function ZS(t,e,n){var r;for(r=t.c[n&t.f];r;r=r.d)if(n==r.f&&Ud(e,r.i))return r;return null}function tpn(t,e,n){var r,s,o;for(r=0,s=0;s>>31;r!=0&&(t[n]=r)}function uat(t,e,n,r,s,o){var h;this.c=t,h=new fe,gxt(t,h,e,t.b,n,r,s,o),this.a=new La(h,0)}function rce(){this.c=new m$(0),this.b=new m$(k7t),this.d=new m$(U2e),this.a=new m$(Mut)}function Nh(t,e,n,r,s,o,h){Rr.call(this,t,e),this.d=n,this.e=r,this.c=s,this.b=o,this.a=id(h)}function vs(t,e,n,r,s,o,h,d,m,k,T,A,P){return u1e(t,e,n,r,s,o,h,d,m,k,T,A,P),qat(t,!1),t}function epn(t){return t.b.c.i.k==(Un(),Ms)?u(X(t.b.c.i,(oe(),Li)),12):t.b.c}function ice(t){return t.b.d.i.k==(Un(),Ms)?u(X(t.b.d.i,(oe(),Li)),12):t.b.d}function npn(t){var e;return e=lq(t),vm(e.a,0)?(k$(),k$(),cye):(k$(),new jJt(e.b))}function lat(t){var e;return e=d3t(t),vm(e.a,0)?(yy(),yy(),Nht):(yy(),new oit(e.b))}function hat(t){var e;return e=d3t(t),vm(e.a,0)?(yy(),yy(),Nht):(yy(),new oit(e.c))}function sce(t){switch(t.g){case 2:return ve(),Gn;case 4:return ve(),Jn;default:return t}}function ace(t){switch(t.g){case 1:return ve(),Er;case 3:return ve(),Hn;default:return t}}function oce(t){switch(t.g){case 0:return new Dtt;case 1:return new Mtt;default:return null}}function ok(){ok=V,bft=new rs("edgelabelcenterednessanalysis.includelabel",(Pn(),t2))}function F4t(){F4t=V,ske=Yd(AQt(ri(ri(new Fs,(Ua(),Qc),(Za(),aG)),cu,eG),Zo),sG)}function cce(){cce=V,uke=Yd(AQt(ri(ri(new Fs,(Ua(),Qc),(Za(),aG)),cu,eG),Zo),sG)}function fat(){fat=V,_L=new VKt,r0t=lt(ut(Wu,1),I5,179,0,[]),DTe=lt(ut(vf,1),zTt,62,0,[])}function r7(){r7=V,KN=new Uwt("TO_INTERNAL_LTR",0),dft=new Uwt("TO_INPUT_DIRECTION",1)}function rl(){rl=V,PCt=new fb,OCt=new cy,NCt=new HX,ICt=new F2,FCt=new VX,BCt=new UX}function rpn(t,e){e.Ug(k2e,1),j5t(zrn(new RC((JC(),new tst(t,!1,!1,new G9))))),e.Vg()}function ipn(t,e,n){n.Ug("DFS Treeifying phase",1),xwn(t,e),vkn(t,e),t.a=null,t.b=null,n.Vg()}function JI(t,e){return Pn(),ba(t)?F3t(t,Gr(e)):Cy(t)?Fit(t,Ht(e)):Ty(t)?Wun(t,Me(e)):t.Fd(e)}function t_(t,e){var n,r;for(Wn(e),r=e.vc().Kc();r.Ob();)n=u(r.Pb(),44),t.zc(n.ld(),n.md())}function spn(t,e,n){var r;for(r=n.Kc();r.Ob();)if(!dq(t,e,r.Pb()))return!1;return!0}function apn(t,e,n,r,s){var o;return n&&(o=ns(e.Dh(),t.c),s=n.Rh(e,-1-(o==-1?r:o),null,s)),s}function opn(t,e,n,r,s){var o;return n&&(o=ns(e.Dh(),t.c),s=n.Th(e,-1-(o==-1?r:o),null,s)),s}function uce(t){var e;if(t.b==-2){if(t.e==0)e=-1;else for(e=0;t.a[e]==0;e++);t.b=e}return t.b}function cpn(t){if(Wn(t),t.length==0)throw at(new jd("Zero length BigInteger"));gEn(this,t)}function B4t(t){this.i=t.gc(),this.i>0&&(this.g=this.aj(this.i+(this.i/8|0)+1),t.Qc(this.g))}function lce(t,e,n){this.g=t,this.d=e,this.e=n,this.a=new fe,y5n(this),mn(),Ds(this.a,null)}function R4t(t,e){e.q=t,t.d=b.Math.max(t.d,e.r),t.b+=e.d+(t.a.c.length==0?0:t.c),ge(t.a,e)}function i7(t,e){var n,r,s,o;return s=t.c,n=t.c+t.b,o=t.d,r=t.d+t.a,e.a>s&&e.ao&&e.bs?n=s:qn(e,n+1),t.a=Lh(t.a,0,e)+(""+r)+Iyt(t.a,n)}function vce(t,e){t.a=Qa(t.a,1),t.c=b.Math.min(t.c,e),t.b=b.Math.max(t.b,e),t.d=Qa(t.d,e)}function ppn(t,e){return e1||t.Ob())return++t.a,t.g=0,e=t.i,t.Ob(),e;throw at(new cc)}function Ece(t){switch(t.a.g){case 1:return new AXt;case 3:return new Ahe;default:return new int}}function $4t(t,e){switch(e){case 1:return!!t.n&&t.n.i!=0;case 2:return t.k!=null}return f3t(t,e)}function Pc(t){return oN>22),s=t.h+e.h+(r>>22),Eu(n&Il,r&Il,s&Fg)}function Mce(t,e){var n,r,s;return n=t.l-e.l,r=t.m-e.m+(n>>22),s=t.h-e.h+(r>>22),Eu(n&Il,r&Il,s&Fg)}function Fpn(t){var e,n;for(LCn(t),n=new G(t.d);n.ar)throw at(new Dy(e,r));return t.Si()&&(n=Yne(t,n)),t.Ei(e,n)}function l7(t,e,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=e;o<=r;o++)u5(t,o,h)||cV(t,o,h,!0,!1)}function Xpn(t){w5();var e,n,r;for(n=Vt(la,ue,8,2,0,1),r=0,e=0;e<2;e++)r+=.5,n[e]=Hmn(r,t);return n}function h7(t){var e,n,r;return e=~t.l+1&Il,n=~t.m+(e==0?1:0)&Il,r=~t.h+(e==0&&n==0?1:0)&Fg,Eu(e,n,r)}function W4t(t){var e;if(t<0)return Ga;if(t==0)return 0;for(e=z_;!(e&t);e>>=1);return e}function vat(t,e,n){return t>=128?!1:t<64?bS(sa(Rf(1,t),n),0):bS(sa(Rf(1,t-64),e),0)}function oO(t,e,n){return n==null?(!t.q&&(t.q=new _r),rk(t.q,e)):(!t.q&&(t.q=new _r),hi(t.q,e,n)),t}function Zt(t,e,n){return n==null?(!t.q&&(t.q=new _r),rk(t.q,e)):(!t.q&&(t.q=new _r),hi(t.q,e,n)),t}function qce(t){var e,n;return n=new mq,Qo(n,t),Zt(n,(Pb(),$k),t),e=new _r,C7n(t,n,e),Z9n(t,n,e),n}function Hce(t){var e,n;return e=t.t-t.k[t.o.p]*t.d+t.j[t.o.p]>t.f,n=t.u+t.e[t.o.p]*t.d>t.f*t.s*t.d,e||n}function Vce(t,e){var n,r,s,o;for(n=!1,r=t.a[e].length,o=0;o=0,"Negative initial capacity"),wI(e>=0,"Non-positive load factor"),dl(this)}function Jpn(t,e,n,r,s){var o,h;if(h=t.length,o=n.length,e<0||r<0||s<0||e+s>h||r+s>o)throw at(new $2t)}function J4t(t,e){mn();var n,r,s,o,h;for(h=!1,r=e,s=0,o=r.length;s1||e>=0&&t.b<3)}function kat(t){var e,n,r;e=~t.l+1&Il,n=~t.m+(e==0?1:0)&Il,r=~t.h+(e==0&&n==0?1:0)&Fg,t.l=e,t.m=n,t.h=r}function e5t(t){mn();var e,n,r;for(r=1,n=t.Kc();n.Ob();)e=n.Pb(),r=31*r+(e!=null?$i(e):0),r=r|0;return r}function rbn(t,e,n,r,s){var o;return o=H6t(t,e),n&&kat(o),s&&(t=Xmn(t,e),r?Zb=h7(t):Zb=Eu(t.l,t.m,t.h)),o}function tue(t,e,n){t.g=$ot(t,e,(ve(),Jn),t.b),t.d=$ot(t,n,Jn,t.b),!(t.g.c==0||t.d.c==0)&&Mfe(t)}function eue(t,e,n){t.g=$ot(t,e,(ve(),Gn),t.j),t.d=$ot(t,n,Gn,t.j),!(t.g.c==0||t.d.c==0)&&Mfe(t)}function n5t(t,e){switch(e){case 7:return!!t.e&&t.e.i!=0;case 8:return!!t.d&&t.d.i!=0}return $5t(t,e)}function ibn(t,e){switch(e.g){case 0:Lt(t.b,641)||(t.b=new mce);break;case 1:Lt(t.b,642)||(t.b=new wte)}}function nue(t){switch(t.g){case 0:return new Ott;default:throw at(new zn(cU+(t.f!=null?t.f:""+t.g)))}}function rue(t){switch(t.g){case 0:return new Yu;default:throw at(new zn(cU+(t.f!=null?t.f:""+t.g)))}}function sbn(t,e,n){return!wE(_i(new ln(null,new gn(t.c,16)),new Sl(new HXt(e,n)))).Bd((U2(),Rk))}function iue(t,e){return R6(S7(u(X(e,(Cc(),Mv)),88)),new ae(t.c.e.a-t.b.e.a,t.c.e.b-t.b.e.b))<=0}function abn(t,e){for(;t.g==null&&!t.c?n3t(t):t.g==null||t.i!=0&&u(t.g[t.i-1],51).Ob();)lin(e,XH(t))}function cw(t){var e,n;for(n=new G(t.a.b);n.ar?1:0}function ubn(t){return ge(t.c,(ck(),WEe)),o4t(t.a,Rt(Ht(Se((Wat(),YG)))))?new Htt:new gGt(t)}function lbn(t){for(;!t.d||!t.d.Ob();)if(t.b&&!WC(t.b))t.d=u(K6(t.b),51);else return null;return t.d}function i5t(t){switch(t.g){case 1:return U2e;default:case 2:return 0;case 3:return Mut;case 4:return k7t}}function hbn(){yi();var t;return u0t||(t=Msn(Gb("M",!0)),t=Mz(Gb("M",!1),t),u0t=t,u0t)}function sH(){sH=V,Ydt=new Y$("ELK",0),EIt=new Y$("JSON",1),kIt=new Y$("DOT",2),TIt=new Y$("SVG",3)}function i_(){i_=V,A1t=new Lrt("STACKED",0),_1t=new Lrt("REVERSE_STACKED",1),lP=new Lrt("SEQUENCED",2)}function s_(){s_=V,hLt=new Prt(r0,0),N1t=new Prt("MIDDLE_TO_MIDDLE",1),dP=new Prt("AVOID_OVERLAP",2)}function g7(){g7=V,vSt=new DQ,ySt=new UD,D4e=new VB,L4e=new MQ,A4e=new Zx,mSt=(Wn(A4e),new kt)}function aH(){aH=V,oIt=new xm(15),D7e=new _a((ai(),Yp),oIt),pL=Jk,rIt=u7e,iIt=jw,aIt=lx,sIt=R3}function r5(t,e){var n,r,s,o,h;for(r=e,s=0,o=r.length;s=t.b.c.length||(a5t(t,2*e+1),n=2*e+2,n0&&(e.Cd(n),n.i&&d2n(n))}function o5t(t,e,n){var r;for(r=n-1;r>=0&&t[r]===e[r];r--);return r<0?0:grt(sa(t[r],So),sa(e[r],So))?-1:1}function oue(t,e,n){var r,s;this.g=t,this.c=e,this.a=this,this.d=this,s=zoe(n),r=Vt(qve,iN,227,s,0,1),this.b=r}function _at(t,e,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=e;o<=r;o++)if(u5(t,o,h))return!0;return!1}function wbn(t,e){var n,r;for(r=t.Zb().Cc().Kc();r.Ob();)if(n=u(r.Pb(),16),n.Hc(e))return!0;return!1}function cue(t,e,n){var r,s,o,h;for(Wn(n),h=!1,o=t.fd(e),s=n.Kc();s.Ob();)r=s.Pb(),o.Rb(r),h=!0;return h}function Aat(t,e){var n,r;return r=u(jn(t.a,4),129),n=Vt(e0t,sht,424,e,0,1),r!=null&&Xc(r,0,n,0,r.length),n}function uue(t,e){var n;return n=new nct((t.f&256)!=0,t.i,t.a,t.d,(t.f&16)!=0,t.j,t.g,e),t.e!=null||(n.c=t),n}function mbn(t,e){var n;return t===e?!0:Lt(e,85)?(n=u(e,85),l6t(K2(t),n.vc())):!1}function lue(t,e,n){var r,s;for(s=n.Kc();s.Ob();)if(r=u(s.Pb(),44),t.Be(e,r.md()))return!0;return!1}function hue(t,e,n){return t.d[e.p][n.p]||(xmn(t,e,n),t.d[e.p][n.p]=!0,t.d[n.p][e.p]=!0),t.a[e.p][n.p]}function vbn(t,e){var n;return!t||t==e||!qi(e,(oe(),yv))?!1:(n=u(X(e,(oe(),yv)),10),n!=t)}function Lat(t){switch(t.i){case 2:return!0;case 1:return!1;case-1:++t.c;default:return t.$l()}}function fue(t){switch(t.i){case-2:return!0;case-1:return!1;case 1:--t.c;default:return t._l()}}function due(t){tre.call(this,"The given string does not match the expected format for individual spacings.",t)}function ybn(t,e){var n;e.Ug("Min Size Preprocessing",1),n=v6t(t),Mi(t,(N0(),nL),n.a),Mi(t,bK,n.b),e.Vg()}function xbn(t){var e,n,r;for(e=0,r=Vt(la,ue,8,t.b,0,1),n=Dr(t,0);n.b!=n.d.c;)r[e++]=u(Ar(n),8);return r}function Dat(t,e,n){var r,s,o;for(r=new Ki,o=Dr(n,0);o.b!=o.d.c;)s=u(Ar(o),8),Zr(r,new io(s));cue(t,e,r)}function kbn(t,e){var n;return n=Qa(t,e),grt(vst(t,e),0)|J$(vst(t,n),0)?n:Qa(rN,vst(Ab(n,63),1))}function Ebn(t,e){var n,r;return n=u(t.d.Bc(e),16),n?(r=t.e.hc(),r.Gc(n),t.e.d-=n.gc(),n.$b(),r):null}function gue(t){var e;if(e=t.a.c.length,e>0)return IE(e-1,t.a.c.length),Ep(t.a,e-1);throw at(new gKt)}function pue(t,e,n){if(t>e)throw at(new zn(CV+t+Mbe+e));if(t<0||e>n)throw at(new gwt(CV+t+T8t+e+x8t+n))}function p7(t,e){t.D==null&&t.B!=null&&(t.D=t.B,t.B=null),nat(t,e==null?null:(Wn(e),e)),t.C&&t.hl(null)}function Tbn(t,e){var n;n=Se((Wat(),YG))!=null&&e.Sg()!=null?Rt(Ht(e.Sg()))/Rt(Ht(Se(YG))):1,hi(t.b,e,n)}function c5t(t,e){var n,r;if(r=t.c[e],r!=0)for(t.c[e]=0,t.d-=r,n=e+1;neU?t-n>eU:n-t>eU}function Sue(t,e){var n;for(n=0;ns&&(nfe(e.q,s),r=n!=e.q.d)),r}function _ue(t,e){var n,r,s,o,h,d,m,k;return m=e.i,k=e.j,r=t.f,s=r.i,o=r.j,h=m-s,d=k-o,n=b.Math.sqrt(h*h+d*d),n}function g5t(t,e){var n,r;return r=xH(t),r||(n=(Tct(),pde(e)),r=new rKt(n),Or(r.El(),t)),r}function hO(t,e){var n,r;return n=u(t.c.Bc(e),16),n?(r=t.hc(),r.Gc(n),t.d-=n.gc(),n.$b(),t.mc(r)):t.jc()}function Pbn(t,e){var n,r;for(r=Dl(t.d,1)!=0,n=!0;n;)n=!1,n=e.c.mg(e.e,r),n=n|qO(t,e,r,!1),r=!r;I4t(t)}function Aue(t,e,n,r){var s,o;t.a=e,o=r?0:1,t.f=(s=new zfe(t.c,t.a,n,o),new y0e(n,t.a,s,t.e,t.b,t.c==(Hm(),UA)))}function cH(t){var e;return ur(t.a!=t.b),e=t.d.a[t.a],nZt(t.b==t.d.c&&e!=null),t.c=t.a,t.a=t.a+1&t.d.a.length-1,e}function Lue(t){var e;if(t.c!=0)return t.c;for(e=0;e=t.c.b:t.a<=t.c.b))throw at(new cc);return e=t.a,t.a+=t.c.c,++t.b,he(e)}function Pat(t){var e;return e=new Lmt(t.a),Qo(e,t),Zt(e,(oe(),Li),t),e.o.a=t.g,e.o.b=t.f,e.n.a=t.i,e.n.b=t.j,e}function Fat(t){return(ve(),Gu).Hc(t.j)?Rt(Ht(X(t,(oe(),MT)))):dc(lt(ut(la,1),ue,8,0,[t.i.n,t.n,t.a])).b}function Bbn(t){var e;return e=rz(ike),u(X(t,(oe(),lu)),21).Hc((Co(),DT))&&ri(e,(Ua(),Qc),(Za(),uG)),e}function Rbn(t){var e,n,r,s;for(s=new Os,r=new G(t);r.a=0?e:-e;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return e<0?1/s:s}function Hbn(t,e){var n,r,s;for(s=1,n=t,r=e>=0?e:-e;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return e<0?1/s:s}function jb(t,e){var n,r,s,o;return o=(s=t?xH(t):null,h1e((r=e,s&&s.Gl(),r))),o==e&&(n=xH(t),n&&n.Gl()),o}function Due(t,e,n){var r,s;return s=t.f,t.f=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,0,s,e),n?n.nj(r):n=r),n}function Mue(t,e,n){var r,s;return s=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,3,s,e),n?n.nj(r):n=r),n}function b5t(t,e,n){var r,s;return s=t.a,t.a=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,1,s,e),n?n.nj(r):n=r),n}function Iue(t){var e,n;if(t!=null)for(n=0;n=r||e-129&&t<128?(bte(),e=t+128,n=d9t[e],!n&&(n=d9t[e]=new wr(t)),n):new wr(t)}function w7(t){var e,n;return t>-129&&t<128?(Ote(),e=t+128,n=w9t[e],!n&&(n=w9t[e]=new $n(t)),n):new $n(t)}function Pue(t,e){var n;t.a.c.length>0&&(n=u(Oe(t.a,t.a.c.length-1),579),s5t(n,e))||ge(t.a,new Zie(e))}function Ybn(t){Bf();var e,n;e=t.d.c-t.e.c,n=u(t.g,154),Cu(n.b,new XVt(e)),Cu(n.c,new QVt(e)),Fa(n.i,new JVt(e))}function Fue(t){var e;return e=new yb,e.a+="VerticalSegment ",tu(e,t.e),e.a+=" ",ni(e,Fmt(new ert,new G(t.k))),e.a}function Bat(t,e){var n,r,s;for(n=0,s=gc(t,e).Kc();s.Ob();)r=u(s.Pb(),12),n+=X(r,(oe(),ml))!=null?1:0;return n}function a5(t,e,n){var r,s,o;for(r=0,o=Dr(t,0);o.b!=o.d.c&&(s=Rt(Ht(Ar(o))),!(s>n));)s>=e&&++r;return r}function Bue(t,e){Hr(t);try{return t._b(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return!1;throw at(n)}}function m5t(t,e){Hr(t);try{return t.Hc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return!1;throw at(n)}}function Xbn(t,e){Hr(t);try{return t.Mc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return!1;throw at(n)}}function Gy(t,e){Hr(t);try{return t.xc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return null;throw at(n)}}function Qbn(t,e){Hr(t);try{return t.Bc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return null;throw at(n)}}function c_(t,e){switch(e.g){case 2:case 1:return gc(t,e);case 3:case 4:return Bh(gc(t,e))}return mn(),mn(),co}function u_(t){var e;return t.Db&64?qf(t):(e=new ef(qf(t)),e.a+=" (name: ",Mo(e,t.zb),e.a+=")",e.a)}function Jbn(t){var e;return e=u(od(t.c.c,""),233),e||(e=new Z6(pE(gE(new fy,""),"Other")),Op(t.c.c,"",e)),e}function v5t(t,e,n){var r,s;return s=t.sb,t.sb=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,4,s,e),n?n.nj(r):n=r),n}function y5t(t,e,n){var r,s;return s=t.r,t.r=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,8,s,t.r),n?n.nj(r):n=r),n}function Zbn(t,e,n){var r,s;return r=new Tg(t.e,4,13,(s=e.c,s||(wn(),Sd)),null,Np(t,e),!1),n?n.nj(r):n=r,n}function t2n(t,e,n){var r,s;return r=new Tg(t.e,3,13,null,(s=e.c,s||(wn(),Sd)),Np(t,e),!1),n?n.nj(r):n=r,n}function Lp(t,e){var n,r;return n=u(e,691),r=n.el(),!r&&n.fl(r=Lt(e,90)?new pQt(t,u(e,29)):new Rre(t,u(e,156))),r}function fO(t,e,n){var r;t._i(t.i+1),r=t.Zi(e,n),e!=t.i&&Xc(t.g,e,t.g,e+1,t.i-e),ls(t.g,e,r),++t.i,t.Mi(e,n),t.Ni()}function e2n(t,e){var n;return e.a&&(n=e.a.a.length,t.a?ni(t.a,t.b):t.a=new eh(t.d),Ure(t.a,e.a,e.d.length,n)),t}function n2n(t,e){var n;t.c=e,t.a=own(e),t.a<54&&(t.f=(n=e.d>1?Hre(e.a[0],e.a[1]):Hre(e.a[0],0),tw(e.e>0?n:Cp(n))))}function dO(t,e){var n;return n=new Je,t.a.Bd(n)?(EE(),new Ynt(Wn(Tae(t,n.a,e)))):(Mb(t),EE(),EE(),A9t)}function Rue(t,e){var n;t.c.length!=0&&(n=u(ld(t,Vt(V0,jp,10,t.c.length,0,1)),199),xmt(n,new P8),I1e(n,e))}function jue(t,e){var n;t.c.length!=0&&(n=u(ld(t,Vt(V0,jp,10,t.c.length,0,1)),199),xmt(n,new v0),I1e(n,e))}function Ti(t,e){return ba(t)?hn(t,e):Cy(t)?OZt(t,e):Ty(t)?(Wn(t),$t(t)===$t(e)):gyt(t)?t.Fb(e):oyt(t)?MQt(t,e):o3t(t,e)}function Ph(t,e,n){if(e<0)C6t(t,n);else{if(!n.rk())throw at(new zn(Jb+n.xe()+aA));u(n,69).wk().Ek(t,t.hi(),e)}}function $ue(t,e,n){if(t<0||e>n)throw at(new Bo(CV+t+T8t+e+", size: "+n));if(t>e)throw at(new zn(CV+t+Mbe+e))}function zue(t){var e;return t.Db&64?qf(t):(e=new ef(qf(t)),e.a+=" (source: ",Mo(e,t.d),e.a+=")",e.a)}function que(t){return t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:t>=48&&t<=57?t-48:0}function r2n(t){yV();var e,n,r,s;for(n=not(),r=0,s=n.length;r=0?zb(t):FS(zb(Cp(t))))}function Uue(t,e,n,r,s,o){this.e=new fe,this.f=(To(),HA),ge(this.e,t),this.d=e,this.a=n,this.b=r,this.f=s,this.c=o}function a2n(t,e,n){t.n=G2(x2,[ue,cut],[376,28],14,[n,Ys(b.Math.ceil(e/32))],2),t.o=e,t.p=n,t.j=e-1>>1,t.k=n-1>>1}function Gue(t){return t-=t>>1&1431655765,t=(t>>2&858993459)+(t&858993459),t=(t>>4)+t&252645135,t+=t>>8,t+=t>>16,t&63}function Kue(t,e){var n,r;for(r=new Zn(t);r.e!=r.i.gc();)if(n=u(ar(r),142),$t(e)===$t(n))return!0;return!1}function o2n(t,e,n){var r,s,o;return o=(s=N7(t.b,e),s),o&&(r=u(pV(VI(t,o),""),29),r)?K6t(t,r,e,n):null}function Rat(t,e,n){var r,s,o;return o=(s=N7(t.b,e),s),o&&(r=u(pV(VI(t,o),""),29),r)?W6t(t,r,e,n):null}function c2n(t,e){var n;if(n=n5(t.i,e),n==null)throw at(new Rd("Node did not exist in input."));return j4t(e,n),null}function u2n(t,e){var n;if(n=zO(t,e),Lt(n,331))return u(n,35);throw at(new zn(Jb+e+"' is not a valid attribute"))}function h_(t,e,n){var r;if(r=t.gc(),e>r)throw at(new Dy(e,r));if(t.Si()&&t.Hc(n))throw at(new zn(AN));t.Gi(e,n)}function l2n(t,e){e.Ug("Sort end labels",1),ms(_i(fc(new ln(null,new gn(t.b,16)),new PB),new Yx),new aQ),e.Vg()}function Rs(){Rs=V,Ed=new JM(G_,0),tc=new JM(Ak,1),Uo=new JM(_k,2),kd=new JM(xut,3),Gh=new JM("UP",4)}function pO(){pO=V,vK=new qrt("P1_STRUCTURE",0),yK=new qrt("P2_PROCESSING_ORDER",1),xK=new qrt("P3_EXECUTION",2)}function Wue(){Wue=V,v8e=Yd(Yd(nS(Yd(Yd(nS(ri(new Fs,(bk(),WA),(I_(),O1t)),YA),oLt),uLt),XA),rLt),lLt)}function h2n(t){switch(u(X(t,(oe(),Aw)),311).g){case 1:Zt(t,Aw,(Cg(),qk));break;case 2:Zt(t,Aw,(Cg(),H5))}}function f2n(t){switch(t){case 0:return new BKt;case 1:return new PKt;case 2:return new FKt;default:throw at(new DM)}}function Yue(t){switch(t.g){case 2:return tc;case 1:return Uo;case 4:return kd;case 3:return Gh;default:return Ed}}function T5t(t,e){switch(t.b.g){case 0:case 1:return e;case 2:case 3:return new Ah(e.d,0,e.a,e.b);default:return null}}function C5t(t){switch(t.g){case 1:return Gn;case 2:return Hn;case 3:return Jn;case 4:return Er;default:return bc}}function bO(t){switch(t.g){case 1:return Er;case 2:return Gn;case 3:return Hn;case 4:return Jn;default:return bc}}function hH(t){switch(t.g){case 1:return Jn;case 2:return Er;case 3:return Gn;case 4:return Hn;default:return bc}}function S5t(t,e,n,r){switch(e){case 1:return!t.n&&(t.n=new Jt(Po,t,1,7)),t.n;case 2:return t.k}return mxt(t,e,n,r)}function f_(t,e,n){var r,s;return t.Pj()?(s=t.Qj(),r=Uot(t,e,n),t.Jj(t.Ij(7,he(n),r,e,s)),r):Uot(t,e,n)}function jat(t,e){var n,r,s;t.d==null?(++t.e,--t.f):(s=e.ld(),n=e.Bi(),r=(n&xi)%t.d.length,Qdn(t,r,vde(t,r,n,s)))}function m7(t,e){var n;n=(t.Bb&Uf)!=0,e?t.Bb|=Uf:t.Bb&=-1025,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,10,n,e))}function v7(t,e){var n;n=(t.Bb&u3)!=0,e?t.Bb|=u3:t.Bb&=-4097,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,12,n,e))}function y7(t,e){var n;n=(t.Bb&ol)!=0,e?t.Bb|=ol:t.Bb&=-8193,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,15,n,e))}function x7(t,e){var n;n=(t.Bb&b3)!=0,e?t.Bb|=b3:t.Bb&=-2049,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,11,n,e))}function d2n(t){var e;t.g&&(e=t.c.kg()?t.f:t.a,okt(e.a,t.o,!0),okt(e.a,t.o,!1),Zt(t.o,(De(),bs),(ka(),zw)))}function g2n(t){var e;if(!t.a)throw at(new Ro("Cannot offset an unassigned cut."));e=t.c-t.b,t.b+=e,yne(t,e),vne(t,e)}function p2n(t,e){var n;if(n=tr(t.k,e),n==null)throw at(new Rd("Port did not exist in input."));return j4t(e,n),null}function b2n(t){var e,n;for(n=bde(sh(t)).Kc();n.Ob();)if(e=Gr(n.Pb()),O_(t,e))return wdn((QYt(),mTe),e);return null}function Xue(t){var e,n;for(n=t.p.a.ec().Kc();n.Ob();)if(e=u(n.Pb(),218),e.f&&t.b[e.c]<-1e-10)return e;return null}function w2n(t){var e,n;for(n=Db(new yb,91),e=!0;t.Ob();)e||(n.a+=ao),e=!1,tu(n,t.Pb());return(n.a+="]",n).a}function m2n(t){var e,n,r;for(e=new fe,r=new G(t.b);r.ae?1:t==e?t==0?Bi(1/t,1/e):0:isNaN(t)?isNaN(e)?0:1:-1}function y2n(t){var e;return e=t.a[t.c-1&t.a.length-1],e==null?null:(t.c=t.c-1&t.a.length-1,ls(t.a,t.c,null),e)}function x2n(t){var e,n,r;for(r=0,n=t.length,e=0;e=1?tc:kd):n}function C2n(t){switch(u(X(t,(De(),zg)),223).g){case 1:return new TJ;case 3:return new LJ;default:return new EJ}}function $b(t){if(t.c)$b(t.c);else if(t.d)throw at(new Ro("Stream already terminated, can't be modified or used"))}function Km(t,e,n){var r;return r=t.a.get(e),t.a.set(e,n===void 0?null:n),r===void 0?(++t.c,++t.b.g):++t.d,r}function S2n(t,e,n){var r,s;for(s=t.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),10),rO(n,u(Oe(e,r.p),16)))return r;return null}function A5t(t,e,n){var r;return r=0,e&&(q4(t.a)?r+=e.f.a/2:r+=e.f.b/2),n&&(q4(t.a)?r+=n.f.a/2:r+=n.f.b/2),r}function _2n(t,e,n){var r;r=n,!r&&(r=Yvt(new S6,0)),r.Ug(u2e,2),ehe(t.b,e,r.eh(1)),qTn(t,e,r.eh(1)),UCn(e,r.eh(1)),r.Vg()}function L5t(t,e,n){var r,s;return r=(kb(),s=new fC,s),Rq(r,e),Bq(r,n),t&&Or((!t.a&&(t.a=new Ps(vh,t,5)),t.a),r),r}function zat(t){var e;return t.Db&64?qf(t):(e=new ef(qf(t)),e.a+=" (identifier: ",Mo(e,t.k),e.a+=")",e.a)}function qat(t,e){var n;n=(t.Bb&Fc)!=0,e?t.Bb|=Fc:t.Bb&=-32769,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,18,n,e))}function D5t(t,e){var n;n=(t.Bb&Fc)!=0,e?t.Bb|=Fc:t.Bb&=-32769,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,18,n,e))}function k7(t,e){var n;n=(t.Bb&Jd)!=0,e?t.Bb|=Jd:t.Bb&=-16385,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,16,n,e))}function M5t(t,e){var n;n=(t.Bb&po)!=0,e?t.Bb|=po:t.Bb&=-65537,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,20,n,e))}function I5t(t){var e;return e=Vt(Yh,Zd,28,2,15,1),t-=po,e[0]=(t>>10)+cN&js,e[1]=(t&1023)+56320&js,af(e,0,e.length)}function A2n(t){var e;return e=Jy(t),e>34028234663852886e22?Zi:e<-34028234663852886e22?Vs:e}function Qa(t,e){var n;return ec(t)&&ec(e)&&(n=t+e,oN"+Z2(e.c):"e_"+$i(e),t.b&&t.c?Z2(t.b)+"->"+Z2(t.c):"e_"+$i(t))}function M2n(t,e){return hn(e.b&&e.c?Z2(e.b)+"->"+Z2(e.c):"e_"+$i(e),t.b&&t.c?Z2(t.b)+"->"+Z2(t.c):"e_"+$i(t))}function Wm(t,e){return Z1(),$f(Kb),b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e))}function Lg(){Lg=V,Vdt=new U$(G_,0),IP=new U$("POLYLINE",1),WT=new U$("ORTHOGONAL",2),e8=new U$("SPLINES",3)}function dH(){dH=V,oDt=new $rt("ASPECT_RATIO_DRIVEN",0),hdt=new $rt("MAX_SCALE_DRIVEN",1),aDt=new $rt("AREA_DRIVEN",2)}function I2n(t,e,n){var r;try{ebn(t,e,n)}catch(s){throw s=es(s),Lt(s,606)?(r=s,at(new I3t(r))):at(s)}return e}function O2n(t){var e,n,r;for(n=0,r=t.length;ne&&r.Ne(t[o-1],t[o])>0;--o)h=t[o],ls(t,o,t[o-1]),ls(t,o-1,h)}function Qe(t,e){var n,r,s,o,h;if(n=e.f,Op(t.c.d,n,e),e.g!=null)for(s=e.g,o=0,h=s.length;oe){Wre(n);break}}kI(n,e)}function B2n(t,e){var n,r,s;r=J4(e),s=Rt(Ht(Wy(r,(De(),Yf)))),n=b.Math.max(0,s/2-.5),x_(e,n,1),ge(t,new dXt(e,n))}function R2n(t,e,n){var r;n.Ug("Straight Line Edge Routing",1),n.dh(e,I7t),r=u(ne(e,(Y4(),ex)),27),Bge(t,r),n.dh(e,iU)}function O5t(t,e){t.n.c.length==0&&ge(t.n,new aq(t.s,t.t,t.i)),ge(t.b,e),dxt(u(Oe(t.n,t.n.c.length-1),209),e),vge(t,e)}function d_(t){var e;this.a=(e=u(t.e&&t.e(),9),new _h(e,u(Ff(e,e.length),9),0)),this.b=Vt(aa,Ln,1,this.a.a.length,5,1)}function rc(t){var e;return Array.isArray(t)&&t.Tm===yt?V2(Wl(t))+"@"+(e=$i(t)>>>0,e.toString(16)):t.toString()}function j2n(t,e){return t.h==aN&&t.m==0&&t.l==0?(e&&(Zb=Eu(0,0,0)),OQt((WE(),o9t))):(e&&(Zb=Eu(t.l,t.m,t.h)),Eu(0,0,0))}function $2n(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function tle(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function N5t(t,e,n,r){switch(e){case 3:return t.f;case 4:return t.g;case 5:return t.i;case 6:return t.j}return S5t(t,e,n,r)}function gH(t,e){if(e==t.d)return t.e;if(e==t.e)return t.d;throw at(new zn("Node "+e+" not part of edge "+t))}function z2n(t,e){var n;if(n=zO(t.Dh(),e),Lt(n,102))return u(n,19);throw at(new zn(Jb+e+"' is not a valid reference"))}function Fh(t,e,n,r){if(e<0)J6t(t,n,r);else{if(!n.rk())throw at(new zn(Jb+n.xe()+aA));u(n,69).wk().Ck(t,t.hi(),e,r)}}function Ll(t){var e;if(t.b){if(Ll(t.b),t.b.d!=t.c)throw at(new Th)}else t.d.dc()&&(e=u(t.f.c.xc(t.e),16),e&&(t.d=e))}function q2n(t){Ay();var e,n,r,s;for(e=t.o.b,r=u(u(Ai(t.r,(ve(),Er)),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s=n.e,s.b+=e}function H2n(t){var e,n,r;for(this.a=new zd,r=new G(t);r.a=s)return e.c+n;return e.c+e.b.gc()}function U2n(t,e){_E();var n,r,s,o;for(r=fae(t),s=e,GE(r,0,r.length,s),n=0;n0&&(r+=s,++n);return n>1&&(r+=t.d*(n-1)),r}function K2n(t){var e,n,r,s,o;return o=Jxt(t),n=NM(t.c),r=!n,r&&(s=new cp,_1(o,"knownLayouters",s),e=new VGt(s),Fa(t.c,e)),o}function B5t(t){var e,n,r;for(r=new dp,r.a+="[",e=0,n=t.gc();e0&&(qn(e-1,t.length),t.charCodeAt(e-1)==58)&&!Uat(t,CL,SL))}function R5t(t,e){var n;return $t(t)===$t(e)?!0:Lt(e,92)?(n=u(e,92),t.e==n.e&&t.d==n.d&&ydn(t,n.a)):!1}function hk(t){switch(ve(),t.g){case 4:return Hn;case 1:return Jn;case 3:return Er;case 2:return Gn;default:return bc}}function Q2n(t){var e,n;if(t.b)return t.b;for(n=wd?null:t.d;n;){if(e=wd?null:n.b,e)return e;n=wd?null:n.d}return xE(),M9t}function j5t(t){var e,n,r;for(r=Rt(Ht(t.a.of((ai(),LK)))),n=new G(t.a.Sf());n.a>5,e=t&31,r=Vt(Fr,ii,28,n+1,15,1),r[n]=1<3;)s*=10,--o;t=(t+(s>>1))/s|0}return r.i=t,!0}function ns(t,e){var n,r,s;if(n=(t.i==null&&Qd(t),t.i),r=e.Lj(),r!=-1){for(s=n.length;r=0;--r)for(e=n[r],s=0;s>1,this.k=e-1>>1}function fwn(t){Tq(),u(t.of((ai(),l2)),181).Hc((Ml(),FK))&&(u(t.of(j3),181).Fc((wl(),n8)),u(t.of(l2),181).Mc(FK))}function ole(t){var e,n;e=t.d==(wk(),kT),n=qxt(t),e&&!n||!e&&n?Zt(t.a,(De(),u0),(I0(),TP)):Zt(t.a,(De(),u0),(I0(),EP))}function Wat(){Wat=V,C$(),YG=(De(),Av),M6e=id(lt(ut(Sdt,1),v7t,149,0,[aP,Yf,Y5,_v,O3,l1t,FT,BT,h1t,jA,W5,Pw,X5]))}function dwn(t,e){var n;return n=u(nc(t,gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),n.Qc(Ate(n.gc()))}function cle(t,e){var n,r;if(r=new ra(t.a.ad(e,!0)),r.a.gc()<=1)throw at(new E6);return n=r.a.ec().Kc(),n.Pb(),u(n.Pb(),39)}function gwn(t,e,n){var r,s;return r=Rt(t.p[e.i.p])+Rt(t.d[e.i.p])+e.n.b+e.a.b,s=Rt(t.p[n.i.p])+Rt(t.d[n.i.p])+n.n.b+n.a.b,s-r}function G5t(t,e){var n;return t.i>0&&(e.lengtht.i&&ls(e,t.i,null),e}function bH(t){var e;return t.Db&64?u_(t):(e=new ef(u_(t)),e.a+=" (instanceClassName: ",Mo(e,t.D),e.a+=")",e.a)}function wH(t){var e,n,r,s;for(s=0,n=0,r=t.length;n0?(t._j(),r=e==null?0:$i(e),s=(r&xi)%t.d.length,n=vde(t,s,r,e),n!=-1):!1}function ule(t,e){var n,r;t.a=Qa(t.a,1),t.c=b.Math.min(t.c,e),t.b=b.Math.max(t.b,e),t.d+=e,n=e-t.f,r=t.e+n,t.f=r-t.e-n,t.e=r}function K5t(t,e){switch(e){case 3:zm(t,0);return;case 4:qm(t,0);return;case 5:Su(t,0);return;case 6:_u(t,0);return}w5t(t,e)}function Ym(t,e){switch(e.g){case 1:return H6(t.j,(rl(),OCt));case 2:return H6(t.j,(rl(),PCt));default:return mn(),mn(),co}}function W5t(t){Dm();var e;switch(e=t.Pc(),e.length){case 0:return Eht;case 1:return new Ait(Hr(e[0]));default:return new ust(O2n(e))}}function lle(t,e){t.Xj();try{t.d.bd(t.e++,e),t.f=t.d.j,t.g=-1}catch(n){throw n=es(n),Lt(n,77)?at(new Th):at(n)}}function Xat(){Xat=V,s0t=new mC,HIt=new b1,VIt=new uM,UIt=new lM,GIt=new u6,KIt=new eet,WIt=new net,YIt=new ret,XIt=new iet}function mH(t,e){wmt();var n,r;return n=hI((h$(),h$(),mA)),r=null,e==n&&(r=u(nu(s9t,t),624)),r||(r=new Lee(t),e==n&&jo(s9t,t,r)),r}function hle(t){Yy();var e;return(t.q?t.q:(mn(),mn(),q0))._b((De(),Cv))?e=u(X(t,Cv),203):e=u(X(Pa(t),RA),203),e}function Wy(t,e){var n,r;return r=null,qi(t,(De(),KG))&&(n=u(X(t,KG),96),n.pf(e)&&(r=n.of(e))),r==null&&(r=X(Pa(t),e)),r}function fle(t,e){var n,r,s;return Lt(e,44)?(n=u(e,44),r=n.ld(),s=Gy(t.Rc(),r),Ud(s,n.md())&&(s!=null||t.Rc()._b(r))):!1}function L1(t,e){var n,r,s;return t.f>0&&(t._j(),r=e==null?0:$i(e),s=(r&xi)%t.d.length,n=I6t(t,s,r,e),n)?n.md():null}function vu(t,e,n){var r,s,o;return t.Pj()?(r=t.i,o=t.Qj(),fO(t,r,e),s=t.Ij(3,null,e,r,o),n?n.nj(s):n=s):fO(t,t.i,e),n}function bwn(t,e,n){var r,s;return r=new Tg(t.e,4,10,(s=e.c,Lt(s,90)?u(s,29):(wn(),xf)),null,Np(t,e),!1),n?n.nj(r):n=r,n}function wwn(t,e,n){var r,s;return r=new Tg(t.e,3,10,null,(s=e.c,Lt(s,90)?u(s,29):(wn(),xf)),Np(t,e),!1),n?n.nj(r):n=r,n}function dle(t){Ay();var e;return e=new io(u(t.e.of((ai(),lx)),8)),t.B.Hc((Ml(),XT))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function zb(t){Xd();var e,n;return n=qr(t),e=qr(Ab(t,32)),e!=0?new xre(n,e):n>10||n<0?new kg(1,n):tye[n]}function mO(t,e){var n;return ec(t)&&ec(e)&&(n=t%e,oN=0?o=o.a[1]:(s=o,o=o.a[0])}return s}function yO(t,e,n){var r,s,o;for(s=null,o=t.b;o;){if(r=t.a.Ne(e,o.d),n&&r==0)return o;r<=0?o=o.a[0]:(s=o,o=o.a[1])}return s}function Ewn(t,e,n,r){var s,o,h;return s=!1,S9n(t.f,n,r)&&(Uwn(t.f,t.a[e][n],t.a[e][r]),o=t.a[e],h=o[r],o[r]=o[n],o[n]=h,s=!0),s}function wle(t,e,n){var r,s,o,h;for(s=u(tr(t.b,n),183),r=0,h=new G(e.j);h.a>5,e&=31,s=t.d+n+(e==0?0:1),r=Vt(Fr,ii,28,s,15,1),x3n(r,t.a,n,e),o=new Y2(t.e,s,r),qS(o),o}function Twn(t,e){var n,r,s;for(r=new rr(sr(_s(t).a.Kc(),new z));Mr(r);)if(n=u(dr(r),18),s=n.d.i,s.c==e)return!1;return!0}function Q5t(t,e,n){var r,s,o,h,d;return h=t.k,d=e.k,r=n[h.g][d.g],s=Ht(Wy(t,r)),o=Ht(Wy(e,r)),b.Math.max((Wn(s),s),(Wn(o),o))}function Cwn(){return Error.stackTraceLimit>0?(b.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function Swn(t,e){return Z1(),Z1(),$f(Kb),(b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e)))>0}function J5t(t,e){return Z1(),Z1(),$f(Kb),(b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e)))<0}function vle(t,e){return Z1(),Z1(),$f(Kb),(b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e)))<=0}function Jat(t,e){for(var n=0;!e[n]||e[n]=="";)n++;for(var r=e[n++];n0&&this.b>0&&(this.g=Dz(this.c,this.b,this.a))}function _wn(t,e){var n=t.a,r;e=String(e),n.hasOwnProperty(e)&&(r=n[e]);var s=(yat(),Lht)[typeof r],o=s?s(r):f5t(typeof r);return o}function T7(t){var e,n,r;if(r=null,e=a0 in t.a,n=!e,n)throw at(new Rd("Every element must have an id."));return r=mk(vg(t,a0)),r}function Xm(t){var e,n;for(n=Ufe(t),e=null;t.c==2;)wi(t),e||(e=(yi(),yi(),new yS(2)),gw(e,n),n=e),n.Jm(Ufe(t));return n}function yH(t,e){var n,r,s;return t._j(),r=e==null?0:$i(e),s=(r&xi)%t.d.length,n=I6t(t,s,r,e),n?(_oe(t,n),n.md()):null}function Sle(t,e){return t.e>e.e?1:t.ee.d?t.e:t.d=48&&t<48+b.Math.min(10,10)?t-48:t>=97&&t<97?t-97+10:t>=65&&t<65?t-65+10:-1}function Awn(t,e){if(e.c==t)return e.d;if(e.d==t)return e.c;throw at(new zn("Input edge is not connected to the input port."))}function Lwn(t){if(kH(uT,t))return Pn(),bT;if(kH(jlt,t))return Pn(),t2;throw at(new zn("Expecting true or false"))}function ext(t){switch(typeof t){case Nct:return _p(t);case u8t:return F6(t);case kk:return oZt(t);default:return t==null?0:Em(t)}}function Yd(t,e){if(t.a<0)throw at(new Ro("Did not call before(...) or after(...) before calling add(...)."));return Ymt(t,t.a,e),t}function nxt(t){return oq(),Lt(t,162)?u(tr(VP,sye),294).Rg(t):Tu(VP,Wl(t))?u(tr(VP,Wl(t)),294).Rg(t):null}function Au(t){var e,n;return t.Db&32||(n=(e=u(jn(t,16),29),fr(e||t.ii())-fr(t.ii())),n!=0&&fk(t,32,Vt(aa,Ln,1,n,5,1))),t}function fk(t,e,n){var r;t.Db&e?n==null?fxn(t,e):(r=vot(t,e),r==-1?t.Eb=n:ls(nw(t.Eb),r,n)):n!=null&&Pkn(t,e,n)}function Dwn(t,e,n,r){var s,o;e.c.length!=0&&(s=C6n(n,r),o=S5n(e),ms(Pq(new ln(null,new gn(o,1)),new r6),new ine(t,n,s,r)))}function Mwn(t,e){var n,r,s,o;return r=t.a.length-1,n=e-t.b&r,o=t.c-e&r,s=t.c-t.b&r,nZt(n=o?(Lbn(t,e),-1):(Abn(t,e),1)}function xH(t){var e,n,r;if(r=t.Jh(),!r)for(e=0,n=t.Ph();n;n=n.Ph()){if(++e>uut)return n.Qh();if(r=n.Jh(),r||n==t)break}return r}function Ale(t,e){var n;return $t(e)===$t(t)?!0:!Lt(e,21)||(n=u(e,21),n.gc()!=t.gc())?!1:t.Ic(n)}function Iwn(t,e){return t.ee.e?1:t.fe.f?1:$i(t)-$i(e)}function kH(t,e){return Wn(t),e==null?!1:hn(t,e)?!0:t.length==e.length&&hn(t.toLowerCase(),e.toLowerCase())}function Mg(t){var e,n;return $c(t,-129)>0&&$c(t,128)<0?(Ite(),e=qr(t)+128,n=g9t[e],!n&&(n=g9t[e]=new Cr(t)),n):new Cr(t)}function lw(){lw=V,x3=new B$(r0,0),ACt=new B$("INSIDE_PORT_SIDE_GROUPS",1),uft=new B$("GROUP_MODEL_ORDER",2),lft=new B$(J8t,3)}function Own(t){var e;return t.b||Srn(t,(e=Can(t.e,t.a),!e||!hn(jlt,L1((!e.b&&(e.b=new Ul((wn(),wo),Mc,e)),e.b),"qualified")))),t.c}function Nwn(t,e){var n,r;for(n=(qn(e,t.length),t.charCodeAt(e)),r=e+1;r2e3&&(Vve=t,IU=b.setTimeout(Mrn,10))),MU++==0?(K0n((uwt(),i9t)),!0):!1}function Wwn(t,e,n){var r;(fye?(Q2n(t),!0):dye||pye?(xE(),!0):gye&&(xE(),!1))&&(r=new UZt(e),r.b=n,n4n(t,r))}function tot(t,e){var n;n=!t.A.Hc((Yl(),qw))||t.q==(ka(),hu),t.u.Hc((wl(),Hg))?n?BCn(t,e):Tpe(t,e):t.u.Hc(g2)&&(n?rCn(t,e):jpe(t,e))}function Nle(t){var e;$t(ne(t,(ai(),cx)))===$t((Ag(),IK))&&(Ji(t)?(e=u(ne(Ji(t),cx),346),Mi(t,cx,e)):Mi(t,cx,bL))}function Ywn(t){var e,n;return qi(t.d.i,(De(),OT))?(e=u(X(t.c.i,OT),17),n=u(X(t.d.i,OT),17),jc(e.a,n.a)>0):!1}function Ple(t,e,n){return new Ah(b.Math.min(t.a,e.a)-n/2,b.Math.min(t.b,e.b)-n/2,b.Math.abs(t.a-e.a)+n,b.Math.abs(t.b-e.b)+n)}function Fle(t){var e;this.d=new fe,this.j=new Sa,this.g=new Sa,e=t.g.b,this.f=u(X(Pa(e),(De(),ph)),88),this.e=Rt(Ht(SH(e,O3)))}function Ble(t){this.d=new fe,this.e=new kp,this.c=Vt(Fr,ii,28,(ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])).length,15,1),this.b=t}function sxt(t,e,n){var r;switch(r=n[t.g][e],t.g){case 1:case 3:return new ae(0,r);case 2:case 4:return new ae(r,0);default:return null}}function Rle(t,e,n){var r,s;s=u(_I(e.f),205);try{s.rf(t,n),Hee(e.f,s)}catch(o){throw o=es(o),Lt(o,103)?(r=o,at(r)):at(o)}}function jle(t,e,n){var r,s,o,h,d,m;return r=null,d=Ykt(e7(),e),o=null,d&&(s=null,m=Kkt(d,n),h=null,m!=null&&(h=t.qf(d,m)),s=h,o=s),r=o,r}function eot(t,e,n,r){var s;if(s=t.length,e>=s)return s;for(e=e>0?e:0;er&&ls(e,r,null),e}function $le(t,e){var n,r;for(r=t.a.length,e.lengthr&&ls(e,r,null),e}function C7(t,e){var n,r;if(++t.j,e!=null&&(n=(r=t.a.Cb,Lt(r,99)?u(r,99).th():null),txn(e,n))){fk(t.a,4,n);return}fk(t.a,4,u(e,129))}function Xwn(t){var e;if(t==null)return null;if(e=e6n(su(t,!0)),e==null)throw at(new trt("Invalid hexBinary value: '"+t+"'"));return e}function EH(t,e,n){var r;e.a.length>0&&(ge(t.b,new ote(e.a,n)),r=e.a.length,0r&&(e.a+=uJt(Vt(Yh,Zd,28,-r,15,1))))}function zle(t,e,n){var r,s,o;if(!n[e.d])for(n[e.d]=!0,s=new G(s5(e));s.a=t.b>>1)for(r=t.c,n=t.b;n>e;--n)r=r.b;else for(r=t.a.a,n=0;n=0?t.Wh(s):Vot(t,r)):n<0?Vot(t,r):u(r,69).wk().Bk(t,t.hi(),n)}function Ule(t){var e,n,r;for(r=(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),t.o),n=r.c.Kc();n.e!=n.i.gc();)e=u(n.Yj(),44),e.md();return RI(r)}function Se(t){var e;if(Lt(t.a,4)){if(e=nxt(t.a),e==null)throw at(new Ro(gwe+t.b+"'. "+dwe+(wg(UP),UP.k)+lTt));return e}else return t.a}function imn(t,e){var n,r;if(t.j.length!=e.j.length)return!1;for(n=0,r=t.j.length;n=64&&e<128&&(s=T1(s,Rf(1,e-64)));return s}function SH(t,e){var n,r;return r=null,qi(t,(ai(),Zk))&&(n=u(X(t,Zk),96),n.pf(e)&&(r=n.of(e))),r==null&&Pa(t)&&(r=X(Pa(t),e)),r}function smn(t,e){var n;return n=u(X(t,(De(),Vo)),75),eit(e,d4e)?n?nh(n):(n=new Qu,Zt(t,Vo,n)):n&&Zt(t,Vo,null),n}function b_(){b_=V,cCt=(ai(),$Mt),Xht=yMt,f3e=sx,oCt=Yp,b3e=(RH(),$9t),p3e=R9t,w3e=q9t,g3e=B9t,d3e=(Mat(),iCt),Yht=u3e,aCt=l3e,HU=h3e}function _H(t){switch(Iwt(),this.c=new fe,this.d=t,t.g){case 0:case 2:this.a=$yt(_Ct),this.b=Zi;break;case 3:case 1:this.a=_Ct,this.b=Vs}}function amn(t){var e;q6(u(X(t,(De(),bs)),101))&&(e=t.b,N1e((vn(0,e.c.length),u(e.c[0],30))),N1e(u(Oe(e,e.c.length-1),30)))}function omn(t,e){e.Ug("Self-Loop post-processing",1),ms(_i(_i(fc(new ln(null,new gn(t.b,16)),new RQ),new jQ),new $Q),new KB),e.Vg()}function Gle(t,e,n){var r,s;if(t.c)Su(t.c,t.c.i+e),_u(t.c,t.c.j+n);else for(s=new G(t.b);s.a=0&&(n.d=t.t);break;case 3:t.t>=0&&(n.a=t.t)}t.C&&(n.b=t.C.b,n.c=t.C.c)}function w_(){w_=V,DAt=new GM(y7t,0),y1t=new GM(qut,1),x1t=new GM("LINEAR_SEGMENTS",2),zA=new GM("BRANDES_KOEPF",3),qA=new GM(q2e,4)}function m_(){m_=V,HN=new P$(_V,0),zU=new P$(kut,1),qU=new P$(Eut,2),VN=new P$(Tut,3),HN.a=!1,zU.a=!0,qU.a=!1,VN.a=!0}function dk(){dk=V,$N=new N$(_V,0),jN=new N$(kut,1),zN=new N$(Eut,2),qN=new N$(Tut,3),$N.a=!1,jN.a=!0,zN.a=!1,qN.a=!0}function gk(t,e,n,r){var s;return n>=0?t.Sh(e,n,r):(t.Ph()&&(r=(s=t.Fh(),s>=0?t.Ah(r):t.Ph().Th(t,-1-s,null,r))),t.Ch(e,n,r))}function axt(t,e){switch(e){case 7:!t.e&&(t.e=new kn(Ts,t,7,4)),Ir(t.e);return;case 8:!t.d&&(t.d=new kn(Ts,t,8,5)),Ir(t.d);return}K5t(t,e)}function Mi(t,e,n){return n==null?(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),yH(t.o,e)):(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),SO(t.o,e,n)),t}function Xle(t,e){mn();var n,r,s,o;for(n=t,o=e,Lt(t,21)&&!Lt(e,21)&&(n=e,o=t),s=n.Kc();s.Ob();)if(r=s.Pb(),o.Hc(r))return!1;return!0}function fmn(t,e,n,r){if(e.an.b)return!0}return!1}function aot(t,e){return ba(t)?!!Bve[e]:t.Sm?!!t.Sm[e]:Cy(t)?!!Fve[e]:Ty(t)?!!Pve[e]:!1}function dmn(t){var e;e=t.a;do e=u(dr(new rr(sr(ua(e).a.Kc(),new z))),18).c.i,e.k==(Un(),fa)&&t.b.Fc(e);while(e.k==(Un(),fa));t.b=Bh(t.b)}function Qle(t,e){var n,r,s;for(s=t,r=new rr(sr(ua(e).a.Kc(),new z));Mr(r);)n=u(dr(r),18),n.c.i.c&&(s=b.Math.max(s,n.c.i.c.p));return s}function gmn(t,e){var n,r,s;for(s=0,r=u(u(Ai(t.r,e),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s+=n.d.d+n.b.Mf().b+n.d.a,r.Ob()&&(s+=t.w);return s}function pmn(t,e){var n,r,s;for(s=0,r=u(u(Ai(t.r,e),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s+=n.d.b+n.b.Mf().a+n.d.c,r.Ob()&&(s+=t.w);return s}function Jle(t){var e,n,r,s;if(r=0,s=n3(t),s.c.length==0)return 1;for(n=new G(s);n.a=0?t.Lh(h,n,!0):tv(t,o,n)):u(o,69).wk().yk(t,t.hi(),s,n,r)}function vmn(t,e,n,r){var s,o;o=e.pf((ai(),ux))?u(e.of(ux),21):t.j,s=r2n(o),s!=(yV(),Uht)&&(n&&!Z5t(s)||h6t(n6n(t,s,r),e))}function ymn(t){switch(t.g){case 1:return Gm(),RN;case 3:return Gm(),BN;case 2:return Gm(),Kht;case 4:return Gm(),Ght;default:return null}}function xmn(t,e,n){if(t.e)switch(t.b){case 1:hhn(t.c,e,n);break;case 0:fhn(t.c,e,n)}else vie(t.c,e,n);t.a[e.p][n.p]=t.c.i,t.a[n.p][e.p]=t.c.e}function Zle(t){var e,n;if(t==null)return null;for(n=Vt(V0,ue,199,t.length,0,2),e=0;e=0)return s;if(t.ol()){for(r=0;r=s)throw at(new Dy(e,s));if(t.Si()&&(r=t.dd(n),r>=0&&r!=e))throw at(new zn(AN));return t.Xi(e,n)}function oxt(t,e){if(this.a=u(Hr(t),253),this.b=u(Hr(e),253),t.Ed(e)>0||t==(Knt(),xht)||e==(Wnt(),kht))throw at(new zn("Invalid range: "+kie(t,e)))}function the(t){var e,n;for(this.b=new fe,this.c=t,this.a=!1,n=new G(t.a);n.a0),(e&-e)==e)return Ys(e*Dl(t,31)*4656612873077393e-25);do n=Dl(t,31),r=n%e;while(n-r+(e-1)<0);return Ys(r)}function _mn(t,e,n){switch(n.g){case 1:t.a=e.a/2,t.b=0;break;case 2:t.a=e.a,t.b=e.b/2;break;case 3:t.a=e.a/2,t.b=e.b;break;case 4:t.a=0,t.b=e.b/2}}function xO(t,e,n,r){var s,o;for(s=e;s1&&(o=Emn(t,e)),o}function rhe(t){var e;return e=Rt(Ht(ne(t,(ai(),MP))))*b.Math.sqrt((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a).i),new ae(e,e/Rt(Ht(ne(t,DK))))}function cot(t){var e;return t.f&&t.f.Vh()&&(e=u(t.f,54),t.f=u(jb(t,e),84),t.f!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,8,e,t.f))),t.f}function uot(t){var e;return t.i&&t.i.Vh()&&(e=u(t.i,54),t.i=u(jb(t,e),84),t.i!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,7,e,t.i))),t.i}function yo(t){var e;return t.b&&t.b.Db&64&&(e=t.b,t.b=u(jb(t,e),19),t.b!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,21,e,t.b))),t.b}function IH(t,e){var n,r,s;t.d==null?(++t.e,++t.f):(r=e.Bi(),X6n(t,t.f+1),s=(r&xi)%t.d.length,n=t.d[s],!n&&(n=t.d[s]=t.dk()),n.Fc(e),++t.f)}function lxt(t,e,n){var r;return e.tk()?!1:e.Ik()!=-2?(r=e.ik(),r==null?n==null:Ti(r,n)):e.qk()==t.e.Dh()&&n==null}function OH(){var t;oh(16,pbe),t=zoe(16),this.b=Vt(Tht,iN,302,t,0,1),this.c=Vt(Tht,iN,302,t,0,1),this.a=null,this.e=null,this.i=0,this.f=t-1,this.g=0}function Ig(t){bvt.call(this),this.k=(Un(),xs),this.j=(oh(6,c3),new wu(6)),this.b=(oh(2,c3),new wu(2)),this.d=new qnt,this.f=new Q2t,this.a=t}function Lmn(t){var e,n;t.c.length<=1||(e=c0e(t,(ve(),Er)),Wfe(t,u(e.a,17).a,u(e.b,17).a),n=c0e(t,Gn),Wfe(t,u(n.a,17).a,u(n.b,17).a))}function Dmn(t,e,n){var r,s;for(s=t.a.b,r=s.c.length;r102?-1:t<=57?t-48:t<65?-1:t<=70?t-65+10:t<97?-1:t-97+10}function got(t,e){if(t==null)throw at(new A6("null key in entry: null="+e));if(e==null)throw at(new A6("null value in entry: "+t+"=null"))}function Omn(t,e){for(var n,r;t.Ob();)if(!e.Ob()||(n=t.Pb(),r=e.Pb(),!($t(n)===$t(r)||n!=null&&Ti(n,r))))return!1;return!e.Ob()}function ahe(t,e){var n;return n=lt(ut(ma,1),No,28,15,[Oat(t.a[0],e),Oat(t.a[1],e),Oat(t.a[2],e)]),t.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function ohe(t,e){var n;return n=lt(ut(ma,1),No,28,15,[oH(t.a[0],e),oH(t.a[1],e),oH(t.a[2],e)]),t.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function fxt(t,e,n){q6(u(X(e,(De(),bs)),101))||(S3t(t,e,Pp(e,n)),S3t(t,e,Pp(e,(ve(),Er))),S3t(t,e,Pp(e,Hn)),mn(),Ds(e.j,new dUt(t)))}function che(t){var e,n;for(t.c||JTn(t),n=new Qu,e=new G(t.a),et(e);e.a0&&(qn(0,e.length),e.charCodeAt(0)==43)?(qn(1,e.length+1),e.substr(1)):e))}function Kmn(t){var e;return t==null?null:new Sb((e=su(t,!0),e.length>0&&(qn(0,e.length),e.charCodeAt(0)==43)?(qn(1,e.length+1),e.substr(1)):e))}function gxt(t,e,n,r,s,o,h,d){var m,k;r&&(m=r.a[0],m&&gxt(t,e,n,m,s,o,h,d),Eot(t,n,r.d,s,o,h,d)&&e.Fc(r),k=r.a[1],k&&gxt(t,e,n,k,s,o,h,d))}function u5(t,e,n){try{return vm(iat(t,e,n),1)}catch(r){throw r=es(r),Lt(r,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(r)}}function dhe(t,e,n){try{return vm(iat(t,e,n),0)}catch(r){throw r=es(r),Lt(r,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(r)}}function ghe(t,e,n){try{return vm(iat(t,e,n),2)}catch(r){throw r=es(r),Lt(r,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(r)}}function phe(t,e){if(t.g==-1)throw at(new Xu);t.Xj();try{t.d.hd(t.g,e),t.f=t.d.j}catch(n){throw n=es(n),Lt(n,77)?at(new Th):at(n)}}function Wmn(t){var e,n,r,s,o;for(r=new G(t.b);r.ao&&ls(e,o,null),e}function Ymn(t,e){var n,r;if(r=t.gc(),e==null){for(n=0;n0&&(m+=s),k[T]=h,h+=d*(m+r)}function whe(t){var e,n,r;for(r=t.f,t.n=Vt(ma,No,28,r,15,1),t.d=Vt(ma,No,28,r,15,1),e=0;e0?t.c:0),++s;t.b=r,t.d=o}function khe(t,e){var n;return n=lt(ut(ma,1),No,28,15,[uxt(t,(A1(),Ac),e),uxt(t,xu,e),uxt(t,Lc,e)]),t.f&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function rvn(t,e,n){var r;try{cV(t,e+t.j,n+t.k,!1,!0)}catch(s){throw s=es(s),Lt(s,77)?(r=s,at(new Bo(r.g+LV+e+ao+n+")."))):at(s)}}function ivn(t,e,n){var r;try{cV(t,e+t.j,n+t.k,!0,!1)}catch(s){throw s=es(s),Lt(s,77)?(r=s,at(new Bo(r.g+LV+e+ao+n+")."))):at(s)}}function Ehe(t){var e;qi(t,(De(),Tv))&&(e=u(X(t,Tv),21),e.Hc((e3(),Qf))?(e.Mc(Qf),e.Fc(Jf)):e.Hc(Jf)&&(e.Mc(Jf),e.Fc(Qf)))}function The(t){var e;qi(t,(De(),Tv))&&(e=u(X(t,Tv),21),e.Hc((e3(),t1))?(e.Mc(t1),e.Fc(bf)):e.Hc(bf)&&(e.Mc(bf),e.Fc(t1)))}function yot(t,e,n,r){var s,o,h,d;return t.a==null&&a4n(t,e),h=e.b.j.c.length,o=n.d.p,d=r.d.p,s=d-1,s<0&&(s=h-1),o<=s?t.a[s]-t.a[o]:t.a[h-1]-t.a[o]+t.a[s]}function svn(t){var e,n;if(!t.b)for(t.b=hq(u(t.f,27).kh().i),n=new Zn(u(t.f,27).kh());n.e!=n.i.gc();)e=u(ar(n),135),ge(t.b,new Qnt(e));return t.b}function avn(t){var e,n;if(!t.e)for(t.e=hq(Jit(u(t.f,27)).i),n=new Zn(Jit(u(t.f,27)));n.e!=n.i.gc();)e=u(ar(n),123),ge(t.e,new wGt(e));return t.e}function Che(t){var e,n;if(!t.a)for(t.a=hq(Jz(u(t.f,27)).i),n=new Zn(Jz(u(t.f,27)));n.e!=n.i.gc();)e=u(ar(n),27),ge(t.a,new sit(t,e));return t.a}function Jm(t){var e;if(!t.C&&(t.D!=null||t.B!=null))if(e=K9n(t),e)t.hl(e);else try{t.hl(null)}catch(n){if(n=es(n),!Lt(n,63))throw at(n)}return t.C}function ovn(t){switch(t.q.g){case 5:Yhe(t,(ve(),Hn)),Yhe(t,Er);break;case 4:Jge(t,(ve(),Hn)),Jge(t,Er);break;default:t1e(t,(ve(),Hn)),t1e(t,Er)}}function cvn(t){switch(t.q.g){case 5:Xhe(t,(ve(),Jn)),Xhe(t,Gn);break;case 4:Zge(t,(ve(),Jn)),Zge(t,Gn);break;default:e1e(t,(ve(),Jn)),e1e(t,Gn)}}function l5(t,e){var n,r,s;for(s=new Sa,r=t.Kc();r.Ob();)n=u(r.Pb(),36),B7(n,s.a,0),s.a+=n.f.a+e,s.b=b.Math.max(s.b,n.f.b);return s.b>0&&(s.b+=e),s}function FH(t,e){var n,r,s;for(s=new Sa,r=t.Kc();r.Ob();)n=u(r.Pb(),36),B7(n,0,s.b),s.b+=n.f.b+e,s.a=b.Math.max(s.a,n.f.a);return s.a>0&&(s.a+=e),s}function She(t){var e,n,r;for(r=xi,n=new G(t.a);n.a>16==6?t.Cb.Th(t,5,F1,e):(r=yo(u(En((n=u(jn(t,16),29),n||t.ii()),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function uvn(t){$E();var e=t.e;if(e&&e.stack){var n=e.stack,r=e+` +`;return n.substring(0,r.length)==r&&(n=n.substring(r.length)),n.split(` +`)}return[]}function lvn(t){var e;return e=(Doe(),Yve),e[t>>>28]|e[t>>24&15]<<4|e[t>>20&15]<<8|e[t>>16&15]<<12|e[t>>12&15]<<16|e[t>>8&15]<<20|e[t>>4&15]<<24|e[t&15]<<28}function Lhe(t){var e,n,r;t.b==t.c&&(r=t.a.length,n=W4t(b.Math.max(8,r))<<1,t.b!=0?(e=Ff(t.a,n),Uoe(t,e,r),t.a=e,t.b=0):wy(t.a,n),t.c=r)}function hvn(t,e){var n;return n=t.b,n.pf((ai(),Pl))?n.ag()==(ve(),Gn)?-n.Mf().a-Rt(Ht(n.of(Pl))):e+Rt(Ht(n.of(Pl))):n.ag()==(ve(),Gn)?-n.Mf().a:e}function EO(t){var e;return t.b.c.length!=0&&u(Oe(t.b,0),72).a?u(Oe(t.b,0),72).a:(e=Zit(t),e??""+(t.c?Xo(t.c.a,t,0):-1))}function BH(t){var e;return t.f.c.length!=0&&u(Oe(t.f,0),72).a?u(Oe(t.f,0),72).a:(e=Zit(t),e??""+(t.i?Xo(t.i.j,t,0):-1))}function fvn(t,e){var n,r;if(e<0||e>=t.gc())return null;for(n=e;n0?t.c:0),s=b.Math.max(s,e.d),++r;t.e=o,t.b=s}function gvn(t){var e,n;if(!t.b)for(t.b=hq(u(t.f,123).kh().i),n=new Zn(u(t.f,123).kh());n.e!=n.i.gc();)e=u(ar(n),135),ge(t.b,new Qnt(e));return t.b}function pvn(t,e){var n,r,s;if(e.dc())return _E(),_E(),GP;for(n=new fZt(t,e.gc()),s=new Zn(t);s.e!=s.i.gc();)r=ar(s),e.Hc(r)&&Or(n,r);return n}function mxt(t,e,n,r){return e==0?r?(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),t.o):(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),RI(t.o)):AH(t,e,n,r)}function kot(t){var e,n;if(t.rb)for(e=0,n=t.rb.i;e>22),s+=r>>22,s<0)?!1:(t.l=n&Il,t.m=r&Il,t.h=s&Fg,!0)}function Eot(t,e,n,r,s,o,h){var d,m;return!(e.Te()&&(m=t.a.Ne(n,r),m<0||!s&&m==0)||e.Ue()&&(d=t.a.Ne(n,o),d>0||!h&&d==0))}function vvn(t,e){g7();var n;if(n=t.j.g-e.j.g,n!=0)return 0;switch(t.j.g){case 2:return Hat(e,ySt)-Hat(t,ySt);case 4:return Hat(t,vSt)-Hat(e,vSt)}return 0}function yvn(t){switch(t.g){case 0:return Oft;case 1:return Nft;case 2:return Pft;case 3:return Fft;case 4:return kG;case 5:return Bft;default:return null}}function qo(t,e,n){var r,s;return r=(s=new Unt,uw(s,e),mu(s,n),Or((!t.c&&(t.c=new Jt(Ov,t,12,10)),t.c),s),s),Sp(r,0),Hy(r,1),Mp(r,!0),Dp(r,!0),r}function pk(t,e){var n,r;if(e>=t.i)throw at(new Grt(e,t.i));return++t.j,n=t.g[e],r=t.i-e-1,r>0&&Xc(t.g,e+1,t.g,e,r),ls(t.g,--t.i,null),t.Qi(e,n),t.Ni(),n}function Dhe(t,e){var n,r;return t.Db>>16==17?t.Cb.Th(t,21,mf,e):(r=yo(u(En((n=u(jn(t,16),29),n||t.ii()),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function xvn(t){var e,n,r,s;for(mn(),Ds(t.c,t.a),s=new G(t.c);s.an.a.c.length))throw at(new zn("index must be >= 0 and <= layer node count"));t.c&&zu(t.c.a,t),t.c=n,n&&Sm(n.a,e,t)}function Phe(t,e){var n,r,s;for(r=new rr(sr(Dg(t).a.Kc(),new z));Mr(r);)return n=u(dr(r),18),s=u(e.Kb(n),10),new FC(Hr(s.n.b+s.o.b/2));return UC(),UC(),yht}function Fhe(t,e){this.c=new _r,this.a=t,this.b=e,this.d=u(X(t,(oe(),G5)),312),$t(X(t,(De(),iAt)))===$t((qI(),EG))?this.e=new MKt:this.e=new DKt}function y_(t,e){var n,r;return r=null,t.pf((ai(),Zk))&&(n=u(t.of(Zk),96),n.pf(e)&&(r=n.of(e))),r==null&&t.Tf()&&(r=t.Tf().of(e)),r==null&&(r=Se(e)),r}function Tot(t,e){var n,r;n=t.fd(e);try{return r=n.Pb(),n.Qb(),r}catch(s){throw s=es(s),Lt(s,112)?at(new Bo("Can't remove element "+e)):at(s)}}function Lvn(t,e){var n,r,s;if(r=new x$,s=new Q4t(r.q.getFullYear()-Wb,r.q.getMonth(),r.q.getDate()),n=$7n(t,e,s),n==0||n0?e:0),++n;return new ae(r,s)}function Ext(t,e){var n,r;return t.Db>>16==6?t.Cb.Th(t,6,Ts,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),$K)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Txt(t,e){var n,r;return t.Db>>16==7?t.Cb.Th(t,1,zP,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),SIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Cxt(t,e){var n,r;return t.Db>>16==9?t.Cb.Th(t,9,bi,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),AIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function jhe(t,e){var n,r;return t.Db>>16==5?t.Cb.Th(t,9,YK,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),Zp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function $he(t,e){var n,r;return t.Db>>16==7?t.Cb.Th(t,6,F1,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),eb)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Sxt(t,e){var n,r;return t.Db>>16==3?t.Cb.Th(t,0,HP,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),Jp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function zhe(){this.a=new WR,this.g=new OH,this.j=new OH,this.b=new _r,this.d=new OH,this.i=new OH,this.k=new _r,this.c=new _r,this.e=new _r,this.f=new _r}function Ivn(t,e,n){var r,s,o;for(n<0&&(n=0),o=t.i,s=n;suut)return _7(t,r);if(r==t)return!0}}return!1}function Nvn(t){switch(hz(),t.q.g){case 5:T1e(t,(ve(),Hn)),T1e(t,Er);break;case 4:Cde(t,(ve(),Hn)),Cde(t,Er);break;default:Ape(t,(ve(),Hn)),Ape(t,Er)}}function Pvn(t){switch(hz(),t.q.g){case 5:H1e(t,(ve(),Jn)),H1e(t,Gn);break;case 4:Kle(t,(ve(),Jn)),Kle(t,Gn);break;default:Lpe(t,(ve(),Jn)),Lpe(t,Gn)}}function Fvn(t){var e,n;e=u(X(t,(Vf(),N3e)),17),e?(n=e.a,n==0?Zt(t,(Pb(),WU),new Kat):Zt(t,(Pb(),WU),new pq(n))):Zt(t,(Pb(),WU),new pq(1))}function Bvn(t,e){var n;switch(n=t.i,e.g){case 1:return-(t.n.b+t.o.b);case 2:return t.n.a-n.o.a;case 3:return t.n.b-n.o.b;case 4:return-(t.n.a+t.o.a)}return 0}function Rvn(t,e){switch(t.g){case 0:return e==(Rh(),s2)?gG:pG;case 1:return e==(Rh(),s2)?gG:YN;case 2:return e==(Rh(),s2)?YN:pG;default:return YN}}function CO(t,e){var n,r,s;for(zu(t.a,e),t.e-=e.r+(t.a.c.length==0?0:t.c),s=O7t,r=new G(t.a);r.a>16==3?t.Cb.Th(t,12,bi,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),CIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Axt(t,e){var n,r;return t.Db>>16==11?t.Cb.Th(t,10,bi,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),_It)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function qhe(t,e){var n,r;return t.Db>>16==10?t.Cb.Th(t,11,mf,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),tb)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Hhe(t,e){var n,r;return t.Db>>16==10?t.Cb.Th(t,12,vf,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),K3)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function of(t){var e;return!(t.Bb&1)&&t.r&&t.r.Vh()&&(e=u(t.r,54),t.r=u(jb(t,e),142),t.r!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,8,e,t.r))),t.r}function Cot(t,e,n){var r;return r=lt(ut(ma,1),No,28,15,[t6t(t,(A1(),Ac),e,n),t6t(t,xu,e,n),t6t(t,Lc,e,n)]),t.f&&(r[0]=b.Math.max(r[0],r[2]),r[2]=r[0]),r}function jvn(t,e){var n,r,s;if(s=umn(t,e),s.c.length!=0)for(Ds(s,new Z9),n=s.c.length,r=0;r>19,k=e.h>>19,m!=k?k-m:(s=t.h,d=e.h,s!=d?s-d:(r=t.m,h=e.m,r!=h?r-h:(n=t.l,o=e.l,n-o)))}function RH(){RH=V,H9t=(aV(),Hht),q9t=new un(_8t,H9t),z9t=(Mq(),qht),$9t=new un(A8t,z9t),j9t=(TH(),zht),R9t=new un(L8t,j9t),B9t=new un(D8t,(Pn(),!0))}function x_(t,e,n){var r,s;r=e*n,Lt(t.g,154)?(s=ek(t),s.f.d?s.f.a||(t.d.a+=r+gd):(t.d.d-=r+gd,t.d.a+=r+gd)):Lt(t.g,10)&&(t.d.d-=r,t.d.a+=2*r)}function Vhe(t,e,n){var r,s,o,h,d;for(s=t[n.g],d=new G(e.d);d.a0?t.b:0),++n;e.b=r,e.e=s}function Uhe(t){var e,n,r;if(r=t.b,FYt(t.i,r.length)){for(n=r.length*2,t.b=Vt(Tht,iN,302,n,0,1),t.c=Vt(Tht,iN,302,n,0,1),t.f=n-1,t.i=0,e=t.a;e;e=e.c)NO(t,e,e);++t.g}}function Gvn(t,e,n,r){var s,o,h,d;for(s=0;sh&&(d=h/r),s>o&&(m=o/s),qd(t,b.Math.min(d,m)),t}function Wvn(){fV();var t,e;try{if(e=u(jxt((Eb(),yf),hT),2113),e)return e}catch(n){if(n=es(n),Lt(n,103))t=n,Ayt((Ur(),t));else throw at(n)}return new W8}function Yvn(){fV();var t,e;try{if(e=u(jxt((Eb(),yf),hf),2040),e)return e}catch(n){if(n=es(n),Lt(n,103))t=n,Ayt((Ur(),t));else throw at(n)}return new l6}function Xvn(){eae();var t,e;try{if(e=u(jxt((Eb(),yf),Cw),2122),e)return e}catch(n){if(n=es(n),Lt(n,103))t=n,Ayt((Ur(),t));else throw at(n)}return new Z8}function Qvn(t,e,n){var r,s;return s=t.e,t.e=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,4,s,e),n?n.nj(r):n=r),s!=e&&(e?n=H7(t,QH(t,e),n):n=H7(t,t.a,n)),n}function Ghe(){x$.call(this),this.e=-1,this.a=!1,this.p=Ga,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=Ga}function Jvn(t,e){var n,r,s;if(r=t.b.d.d,t.a||(r+=t.b.d.a),s=e.b.d.d,e.a||(s+=e.b.d.a),n=Bi(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function Zvn(t,e){var n,r,s;if(r=t.b.b.d,t.a||(r+=t.b.b.a),s=e.b.b.d,e.a||(s+=e.b.b.a),n=Bi(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function tyn(t,e){var n,r,s;if(r=t.b.g.d,t.a||(r+=t.b.g.a),s=e.b.g.d,e.a||(s+=e.b.g.a),n=Bi(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function Dxt(){Dxt=V,J3e=el(ri(ri(ri(new Fs,(Ua(),cu),(Za(),sSt)),cu,aSt),Zo,oSt),Zo,WCt),t4e=ri(ri(new Fs,cu,zCt),cu,YCt),Z3e=el(new Fs,Zo,QCt)}function eyn(t){var e,n,r,s,o;for(e=u(X(t,(oe(),MA)),85),o=t.n,r=e.Cc().Kc();r.Ob();)n=u(r.Pb(),314),s=n.i,s.c+=o.a,s.d+=o.b,n.c?f0e(n):d0e(n);Zt(t,MA,null)}function nyn(t,e,n){var r,s;switch(s=t.b,r=s.d,e.g){case 1:return-r.d-n;case 2:return s.o.a+r.c+n;case 3:return s.o.b+r.a+n;case 4:return-r.b-n;default:return-1}}function ryn(t,e,n){var r,s;for(n.Ug("Interactive node placement",1),t.a=u(X(e,(oe(),G5)),312),s=new G(e.b);s.a0&&(h=(o&xi)%t.d.length,s=I6t(t,h,o,e),s)?(d=s.nd(n),d):(r=t.ck(o,e,n),t.c.Fc(r),null)}function Oxt(t,e){var n,r,s,o;switch(Lp(t,e).Kl()){case 3:case 2:{for(n=v5(e),s=0,o=n.i;s=0;r--)if(hn(t[r].d,e)||hn(t[r].d,n)){t.length>=r+1&&t.splice(0,r+1);break}return t}function _O(t,e){var n;return ec(t)&&ec(e)&&(n=t/e,oN0&&(t.b+=2,t.a+=r):(t.b+=1,t.a+=b.Math.min(r,s))}function Zhe(t){var e;e=u(X(u(jh(t.b,0),39),(Cc(),SLt)),107),Zt(t,(ji(),zT),new ae(0,0)),U0e(new FI,t,e.b+e.c-Rt(Ht(X(t,R1t))),e.d+e.a-Rt(Ht(X(t,j1t))))}function tfe(t,e){var n,r;if(r=!1,ba(e)&&(r=!0,Y6(t,new Oy(Gr(e)))),r||Lt(e,242)&&(r=!0,Y6(t,(n=_vt(u(e,242)),new cE(n)))),!r)throw at(new Znt(LTt))}function yyn(t,e,n,r){var s,o,h;return s=new Tg(t.e,1,10,(h=e.c,Lt(h,90)?u(h,29):(wn(),xf)),(o=n.c,Lt(o,90)?u(o,29):(wn(),xf)),Np(t,e),!1),r?r.nj(s):r=s,r}function Fxt(t){var e,n;switch(u(X(Pa(t),(De(),Q_t)),429).g){case 0:return e=t.n,n=t.o,new ae(e.a+n.a/2,e.b+n.b/2);case 1:return new io(t.n);default:return null}}function AO(){AO=V,TG=new uS(r0,0),FSt=new uS("LEFTUP",1),RSt=new uS("RIGHTUP",2),PSt=new uS("LEFTDOWN",3),BSt=new uS("RIGHTDOWN",4),Rft=new uS("BALANCED",5)}function xyn(t,e,n){var r,s,o;if(r=Bi(t.a[e.p],t.a[n.p]),r==0){if(s=u(X(e,(oe(),Uk)),15),o=u(X(n,Uk),15),s.Hc(n))return-1;if(o.Hc(e))return 1}return r}function kyn(t){switch(t.g){case 1:return new mtt;case 2:return new vtt;case 3:return new wtt;case 0:return null;default:throw at(new zn(Clt+(t.f!=null?t.f:""+t.g)))}}function Bxt(t,e,n){switch(e){case 1:!t.n&&(t.n=new Jt(Po,t,1,7)),Ir(t.n),!t.n&&(t.n=new Jt(Po,t,1,7)),gs(t.n,u(n,16));return;case 2:n7(t,Gr(n));return}r5t(t,e,n)}function Rxt(t,e,n){switch(e){case 3:zm(t,Rt(Ht(n)));return;case 4:qm(t,Rt(Ht(n)));return;case 5:Su(t,Rt(Ht(n)));return;case 6:_u(t,Rt(Ht(n)));return}Bxt(t,e,n)}function jH(t,e,n){var r,s,o;o=(r=new Unt,r),s=hd(o,e,null),s&&s.oj(),mu(o,n),Or((!t.c&&(t.c=new Jt(Ov,t,12,10)),t.c),o),Sp(o,0),Hy(o,1),Mp(o,!0),Dp(o,!0)}function jxt(t,e){var n,r,s;return n=iS(t.i,e),Lt(n,241)?(s=u(n,241),s.zi()==null,s.wi()):Lt(n,507)?(r=u(n,2037),s=r.b,s):null}function Eyn(t,e,n,r){var s,o;return Hr(e),Hr(n),o=u(_S(t.d,e),17),_ae(!!o,"Row %s not in %s",e,t.e),s=u(_S(t.b,n),17),_ae(!!s,"Column %s not in %s",n,t.c),Rce(t,o.a,s.a,r)}function efe(t,e,n,r,s,o,h){var d,m,k,T,A;if(T=s[o],k=o==h-1,d=k?r:0,A=yhe(d,T),r!=10&<(ut(t,h-o),e[o],n[o],d,A),!k)for(++o,m=0;m1||d==-1?(o=u(m,15),s.Wb(awn(t,o))):s.Wb(lct(t,u(m,58)))))}function Dyn(t,e,n,r){hYt();var s=vht;function o(){for(var h=0;h0)return!1;return!0}function Oyn(t){var e,n,r,s,o;for(r=new sw(new mr(t.b).a);r.b;)n=Um(r),e=u(n.ld(),10),o=u(u(n.md(),42).a,10),s=u(u(n.md(),42).b,8),ki(k1(e.n),ki(Oa(o.n),s))}function Nyn(t){switch(u(X(t.b,(De(),V_t)),387).g){case 1:ms(Wo(fc(new ln(null,new gn(t.d,16)),new WD),new y4),new vJ);break;case 2:L8n(t);break;case 0:o5n(t)}}function Pyn(t,e,n){var r,s,o;for(r=n,!r&&(r=new S6),r.Ug("Layout",t.a.c.length),o=new G(t.a);o.axlt)return n;s>-1e-6&&++n}return n}function zxt(t,e){var n;e!=t.b?(n=null,t.b&&(n=nq(t.b,t,-4,n)),e&&(n=gk(e,t,-4,n)),n=Mue(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,e,e))}function ife(t,e){var n;e!=t.f?(n=null,t.f&&(n=nq(t.f,t,-1,n)),e&&(n=gk(e,t,-1,n)),n=Due(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,0,e,e))}function jyn(t,e,n,r){var s,o,h,d;return Hl(t.e)&&(s=e.Lk(),d=e.md(),o=n.md(),h=Ib(t,1,s,d,o,s.Jk()?$7(t,s,o,Lt(s,102)&&(u(s,19).Bb&po)!=0):-1,!0),r?r.nj(h):r=h),r}function sfe(t){var e,n,r;if(t==null)return null;if(n=u(t,15),n.dc())return"";for(r=new dp,e=n.Kc();e.Ob();)Mo(r,(Ni(),Gr(e.Pb()))),r.a+=" ";return Wrt(r,r.a.length-1)}function afe(t){var e,n,r;if(t==null)return null;if(n=u(t,15),n.dc())return"";for(r=new dp,e=n.Kc();e.Ob();)Mo(r,(Ni(),Gr(e.Pb()))),r.a+=" ";return Wrt(r,r.a.length-1)}function $yn(t,e,n){var r,s;return r=t.c[e.c.p][e.p],s=t.c[n.c.p][n.p],r.a!=null&&s.a!=null?Fit(r.a,s.a):r.a!=null?-1:s.a!=null?1:0}function zyn(t,e,n){return n.Ug("Tree layout",1),EI(t.b),E1(t.b,(bk(),sK),sK),E1(t.b,WA,WA),E1(t.b,YA,YA),E1(t.b,XA,XA),t.a=XO(t.b,e),Pyn(t,e,n.eh(1)),n.Vg(),e}function qyn(t,e){var n,r,s,o,h,d;if(e)for(o=e.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Tb(),y2):new _b(n);d.Ob();)h=u(d.Pb(),17),s=qE(e,h.a),r=new _Gt(t),Xln(r.a,s)}function Hyn(t,e){var n,r,s,o,h,d;if(e)for(o=e.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Tb(),y2):new _b(n);d.Ob();)h=u(d.Pb(),17),s=qE(e,h.a),r=new mGt(t),Yln(r.a,s)}function Vyn(t){var e;if(t!=null&&t.length>0&&Va(t,t.length-1)==33)try{return e=pde(Lh(t,0,t.length-1)),e.e==null}catch(n){if(n=es(n),!Lt(n,33))throw at(n)}return!1}function Uyn(t,e,n){var r,s,o;switch(r=Pa(e),s=fH(r),o=new Yc,hc(o,e),n.g){case 1:Xs(o,bO(hk(s)));break;case 2:Xs(o,hk(s))}return Zt(o,(De(),D3),Ht(X(t,D3))),o}function qxt(t){var e,n;return e=u(dr(new rr(sr(ua(t.a).a.Kc(),new z))),18),n=u(dr(new rr(sr(_s(t.a).a.Kc(),new z))),18),Ie(Me(X(e,(oe(),vd))))||Ie(Me(X(n,vd)))}function Qy(){Qy=V,XN=new HM("ONE_SIDE",0),mG=new HM("TWO_SIDES_CORNER",1),vG=new HM("TWO_SIDES_OPPOSING",2),wG=new HM("THREE_SIDES",3),bG=new HM("FOUR_SIDES",4)}function ofe(t,e){var n,r,s,o;for(o=new fe,s=0,r=e.Kc();r.Ob();){for(n=he(u(r.Pb(),17).a+s);n.a=t.f)break;In(o.c,n)}return o}function Gyn(t,e){var n,r,s,o,h;for(o=new G(e.a);o.a0&&Mhe(this,this.c-1,(ve(),Jn)),this.c0&&t[0].length>0&&(this.c=Ie(Me(X(Pa(t[0][0]),(oe(),ZSt))))),this.a=Vt(nke,ue,2117,t.length,0,2),this.b=Vt(rke,ue,2118,t.length,0,2),this.d=new Cue}function Qyn(t){return t.c.length==0?!1:(vn(0,t.c.length),u(t.c[0],18)).c.i.k==(Un(),fa)?!0:t5(Wo(new ln(null,new gn(t,16)),new WJ),new YJ)}function lfe(t,e){var n,r,s,o,h,d,m;for(d=n3(e),o=e.f,m=e.g,h=b.Math.sqrt(o*o+m*m),s=0,r=new G(d);r.a=0?(n=_O(t,EV),r=mO(t,EV)):(e=Ab(t,1),n=_O(e,5e8),r=mO(e,5e8),r=Qa(Rf(r,1),sa(t,1))),T1(Rf(r,32),sa(n,So))}function dfe(t,e,n){var r,s;switch(r=(ur(e.b!=0),u(Oh(e,e.a.a),8)),n.g){case 0:r.b=0;break;case 2:r.b=t.f;break;case 3:r.a=0;break;default:r.a=t.g}return s=Dr(e,0),kI(s,r),e}function gfe(t,e,n,r){var s,o,h,d,m;switch(m=t.b,o=e.d,h=o.j,d=sxt(h,m.d[h.g],n),s=ki(Oa(o.n),o.a),o.j.g){case 1:case 3:d.a+=s.a;break;case 2:case 4:d.b+=s.b}hs(r,d,r.c.b,r.c)}function u3n(t,e,n){var r,s,o,h;for(h=Xo(t.e,e,0),o=new W2t,o.b=n,r=new La(t.e,h);r.b1;e>>=1)e&1&&(r=Z4(r,n)),n.d==1?n=Z4(n,n):n=new Dle(Q0e(n.a,n.d,Vt(Fr,ii,28,n.d<<1,15,1)));return r=Z4(r,n),r}function Qxt(){Qxt=V;var t,e,n,r;for(L9t=Vt(ma,No,28,25,15,1),D9t=Vt(ma,No,28,33,15,1),r=152587890625e-16,e=32;e>=0;e--)D9t[e]=r,r*=.5;for(n=1,t=24;t>=0;t--)L9t[t]=n,n*=.5}function p3n(t){var e,n;if(Ie(Me(ne(t,(De(),L3))))){for(n=new rr(sr(Og(t).a.Kc(),new z));Mr(n);)if(e=u(dr(n),74),Zm(e)&&Ie(Me(ne(e,Mw))))return!0}return!1}function pfe(t,e){var n,r,s;qs(t.f,e)&&(e.b=t,r=e.c,Xo(t.j,r,0)!=-1||ge(t.j,r),s=e.d,Xo(t.j,s,0)!=-1||ge(t.j,s),n=e.a.b,n.c.length!=0&&(!t.i&&(t.i=new Fle(t)),ypn(t.i,n)))}function b3n(t){var e,n,r,s,o;return n=t.c.d,r=n.j,s=t.d.d,o=s.j,r==o?n.p=0&&hn(t.substr(e,3),"GMT")||e>=0&&hn(t.substr(e,3),"UTC"))&&(n[0]=e+3),Lkt(t,n,r)}function m3n(t,e){var n,r,s,o,h;for(o=t.g.a,h=t.g.b,r=new G(t.d);r.an;o--)t[o]|=e[o-n-1]>>>h,t[o-1]=e[o-n-1]<0&&Xc(t.g,e,t.g,e+r,d),h=n.Kc(),t.i+=r,s=0;s>4&15,o=t[r]&15,h[s++]=LIt[n],h[s++]=LIt[o];return af(h,0,h.length)}function Hu(t){var e,n;return t>=po?(e=cN+(t-po>>10&1023)&js,n=56320+(t-po&1023)&js,String.fromCharCode(e)+(""+String.fromCharCode(n))):String.fromCharCode(t&js)}function L3n(t,e){Ay();var n,r,s,o;return s=u(u(Ai(t.r,e),21),87),s.gc()>=2?(r=u(s.Kc().Pb(),117),n=t.u.Hc((wl(),yL)),o=t.u.Hc(n8),!r.a&&!n&&(s.gc()==2||o)):!1}function mfe(t,e,n,r,s){var o,h,d;for(o=i0e(t,e,n,r,s),d=!1;!o;)YH(t,s,!0),d=!0,o=i0e(t,e,n,r,s);d&&YH(t,s,!1),h=mat(s),h.c.length!=0&&(t.d&&t.d.Gg(h),mfe(t,s,n,r,h))}function HH(){HH=V,Gdt=new dS(r0,0),ZMt=new dS("DIRECTED",1),eIt=new dS("UNDIRECTED",2),QMt=new dS("ASSOCIATION",3),tIt=new dS("GENERALIZATION",4),JMt=new dS("DEPENDENCY",5)}function D3n(t,e){var n;if(!ed(t))throw at(new Ro(Pwe));switch(n=ed(t),e.g){case 1:return-(t.j+t.f);case 2:return t.i-n.g;case 3:return t.j-n.f;case 4:return-(t.i+t.g)}return 0}function M3n(t,e,n){var r,s,o;return r=e.Lk(),o=e.md(),s=r.Jk()?Ib(t,4,r,o,null,$7(t,r,o,Lt(r,102)&&(u(r,19).Bb&po)!=0),!0):Ib(t,r.tk()?2:1,r,o,r.ik(),-1,!0),n?n.nj(s):n=s,n}function D7(t,e){var n,r;for(Wn(e),r=t.b.c.length,ge(t.b,e);r>0;){if(n=r,r=(r-1)/2|0,t.a.Ne(Oe(t.b,r),e)<=0)return Mh(t.b,n,e),!0;Mh(t.b,n,Oe(t.b,r))}return Mh(t.b,r,e),!0}function t6t(t,e,n,r){var s,o;if(s=0,n)s=oH(t.a[n.g][e.g],r);else for(o=0;o=d)}function vfe(t){switch(t.g){case 0:return new Stt;case 1:return new _tt;default:throw at(new zn("No implementation is available for the width approximator "+(t.f!=null?t.f:""+t.g)))}}function e6t(t,e,n,r){var s;if(s=!1,ba(r)&&(s=!0,ME(e,n,Gr(r))),s||Ty(r)&&(s=!0,e6t(t,e,n,r)),s||Lt(r,242)&&(s=!0,Q2(e,n,u(r,242))),!s)throw at(new Znt(LTt))}function O3n(t,e){var n,r,s;if(n=e.qi(t.a),n&&(s=L1((!n.b&&(n.b=new Ul((wn(),wo),Mc,n)),n.b),lf),s!=null)){for(r=1;r<(il(),ZIt).length;++r)if(hn(ZIt[r],s))return r}return 0}function N3n(t,e){var n,r,s;if(n=e.qi(t.a),n&&(s=L1((!n.b&&(n.b=new Ul((wn(),wo),Mc,n)),n.b),lf),s!=null)){for(r=1;r<(il(),tOt).length;++r)if(hn(tOt[r],s))return r}return 0}function yfe(t,e){var n,r,s,o;if(Wn(e),o=t.a.gc(),o0?1:0;o.a[s]!=n;)o=o.a[s],s=t.a.Ne(n.d,o.d)>0?1:0;o.a[s]=r,r.b=n.b,r.a[0]=n.a[0],r.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function B3n(t){var e,n,r,s;for(e=new fe,n=Vt(Fl,$0,28,t.a.c.length,16,1),Eyt(n,n.length),s=new G(t.a);s.a0&&K0e((vn(0,n.c.length),u(n.c[0],30)),t),n.c.length>1&&K0e(u(Oe(n,n.c.length-1),30),t),e.Vg()}function j3n(t){wl();var e,n;return e=Hi(Hg,lt(ut(OK,1),te,279,0,[g2])),!(tO(iq(e,t))>1||(n=Hi(yL,lt(ut(OK,1),te,279,0,[vL,n8])),tO(iq(n,t))>1))}function r6t(t,e){var n;n=nu((Eb(),yf),t),Lt(n,507)?jo(yf,t,new fQt(this,e)):jo(yf,t,this),Fot(this,e),e==(bE(),zIt)?(this.wb=u(this,2038),u(e,2040)):this.wb=(Lb(),Fn)}function $3n(t){var e,n,r;if(t==null)return null;for(e=null,n=0;n=Rp?"error":r>=900?"warn":r>=800?"info":"log"),Oee(n,t.a),t.b&&ikt(e,n,t.b,"Exception: ",!0))}function X(t,e){var n,r;return r=(!t.q&&(t.q=new _r),tr(t.q,e)),r??(n=e.Sg(),Lt(n,4)&&(n==null?(!t.q&&(t.q=new _r),rk(t.q,e)):(!t.q&&(t.q=new _r),hi(t.q,e,n))),n)}function Ua(){Ua=V,Wf=new qM("P1_CYCLE_BREAKING",0),H0=new qM("P2_LAYERING",1),Qc=new qM("P3_NODE_ORDERING",2),cu=new qM("P4_NODE_PLACEMENT",3),Zo=new qM("P5_EDGE_ROUTING",4)}function z3n(t,e){YS();var n;if(t.c==e.c){if(t.b==e.b||Wgn(t.b,e.b)){if(n=vin(t.b)?1:-1,t.a&&!e.a)return n;if(!t.a&&e.a)return-n}return jc(t.b.g,e.b.g)}else return Bi(t.c,e.c)}function Cfe(t,e){var n,r,s;if(s6t(t,e))return!0;for(r=new G(e);r.a=s||e<0)throw at(new Bo(Zlt+e+Ew+s));if(n>=s||n<0)throw at(new Bo(tht+n+Ew+s));return e!=n?r=(o=t.Cj(n),t.qj(e,o),o):r=t.xj(n),r}function Afe(t){var e,n,r;if(r=t,t)for(e=0,n=t.Eh();n;n=n.Eh()){if(++e>uut)return Afe(n);if(r=n,n==t)throw at(new Ro("There is a cycle in the containment hierarchy of "+t))}return r}function Hb(t){var e,n,r;for(r=new aw(ao,"[","]"),n=t.Kc();n.Ob();)e=n.Pb(),Eg(r,$t(e)===$t(t)?"(this Collection)":e==null?Vu:rc(e));return r.a?r.e.length==0?r.a.a:r.a.a+(""+r.e):r.c}function s6t(t,e){var n,r;if(r=!1,e.gc()<2)return!1;for(n=0;n1&&(t.j.b+=t.e)):(t.j.a+=n.a,t.j.b=b.Math.max(t.j.b,n.b),t.d.c.length>1&&(t.j.a+=t.e))}function Vb(){Vb=V,$4e=lt(ut(bo,1),qc,64,0,[(ve(),Hn),Jn,Er]),j4e=lt(ut(bo,1),qc,64,0,[Jn,Er,Gn]),z4e=lt(ut(bo,1),qc,64,0,[Er,Gn,Hn]),q4e=lt(ut(bo,1),qc,64,0,[Gn,Hn,Jn])}function H3n(t,e,n,r){var s,o,h,d,m,k,T;if(h=t.c.d,d=t.d.d,h.j!=d.j)for(T=t.b,s=h.j,m=null;s!=d.j;)m=e==0?hH(s):C5t(s),o=sxt(s,T.d[s.g],n),k=sxt(m,T.d[m.g],n),Zr(r,ki(o,k)),s=m}function V3n(t,e,n,r){var s,o,h,d,m;return h=Ihe(t.a,e,n),d=u(h.a,17).a,o=u(h.b,17).a,r&&(m=u(X(e,(oe(),ml)),10),s=u(X(n,ml),10),m&&s&&(vie(t.b,m,s),d+=t.b.i,o+=t.b.e)),d>o}function Dfe(t){var e,n,r,s,o,h,d,m,k;for(this.a=Zle(t),this.b=new fe,n=t,r=0,s=n.length;rhit(t.d).c?(t.i+=t.g.c,Qat(t.d)):hit(t.d).c>hit(t.g).c?(t.e+=t.d.c,Qat(t.g)):(t.i+=zte(t.g),t.e+=zte(t.d),Qat(t.g),Qat(t.d))}function W3n(t,e,n){var r,s,o,h;for(o=e.q,h=e.r,new J2((C1(),o2),e,o,1),new J2(o2,o,h,1),s=new G(n);s.ad&&(m=d/r),s>o&&(k=o/s),h=b.Math.min(m,k),t.a+=h*(e.a-t.a),t.b+=h*(e.b-t.b)}function J3n(t,e,n,r,s){var o,h;for(h=!1,o=u(Oe(n.b,0),27);_7n(t,e,o,r,s)&&(h=!0,Ayn(n,o),n.b.c.length!=0);)o=u(Oe(n.b,0),27);return n.b.c.length==0&&CO(n.j,n),h&&PH(e.q),h}function Z3n(t,e){w5();var n,r,s,o;if(e.b<2)return!1;for(o=Dr(e,0),n=u(Ar(o),8),r=n;o.b!=o.d.c;){if(s=u(Ar(o),8),Jot(t,r,s))return!0;r=s}return!!Jot(t,r,n)}function o6t(t,e,n,r){var s,o;return n==0?(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),pz(t.o,e,r)):(o=u(En((s=u(jn(t,16),29),s||t.ii()),n),69),o.wk().Ak(t,Au(t),n-fr(t.ii()),e,r))}function Fot(t,e){var n;e!=t.sb?(n=null,t.sb&&(n=u(t.sb,54).Th(t,1,EL,n)),e&&(n=u(e,54).Rh(t,1,EL,n)),n=v5t(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,4,e,e))}function t4n(t,e){var n,r,s,o;if(e)s=_g(e,"x"),n=new TGt(t),XE(n.a,(Wn(s),s)),o=_g(e,"y"),r=new CGt(t),JE(r.a,(Wn(o),o));else throw at(new Rd("All edge sections need an end point."))}function e4n(t,e){var n,r,s,o;if(e)s=_g(e,"x"),n=new xGt(t),QE(n.a,(Wn(s),s)),o=_g(e,"y"),r=new kGt(t),ZE(r.a,(Wn(o),o));else throw at(new Rd("All edge sections need a start point."))}function n4n(t,e){var n,r,s,o,h,d,m;for(r=aue(t),o=0,d=r.length;o>22-e,s=t.h<>22-e):e<44?(n=0,r=t.l<>44-e):(n=0,r=0,s=t.l<t)throw at(new zn("k must be smaller than n"));return e==0||e==t?1:t==0?0:Nxt(t)/(Nxt(e)*Nxt(t-e))}function c6t(t,e){var n,r,s,o;for(n=new Tmt(t);n.g==null&&!n.c?n3t(n):n.g==null||n.i!=0&&u(n.g[n.i-1],51).Ob();)if(o=u(XH(n),58),Lt(o,167))for(r=u(o,167),s=0;s>4],e[n*2+1]=tW[o&15];return af(e,0,e.length)}function m4n(t){Gz();var e,n,r;switch(r=t.c.length,r){case 0:return Rve;case 1:return e=u(m1e(new G(t)),44),hun(e.ld(),e.md());default:return n=u(ld(t,Vt(Sw,xV,44,t.c.length,0,1)),173),new owt(n)}}function v4n(t){var e,n,r,s,o,h;for(e=new K4,n=new K4,Ob(e,t),Ob(n,t);n.b!=n.c;)for(s=u(K6(n),36),h=new G(s.a);h.a0&&VO(t,n,e),s):oxn(t,e,n)}function Ub(){Ub=V,H8e=(ai(),Jk),V8e=$w,j8e=jw,$8e=lx,z8e=l2,R8e=ux,GLt=LP,q8e=j3,tdt=(xkt(),_8e),edt=A8e,WLt=I8e,ndt=P8e,YLt=O8e,XLt=N8e,KLt=L8e,dK=D8e,gK=M8e,wP=F8e,QLt=B8e,ULt=S8e}function Rfe(t,e){var n,r,s,o,h;if(t.e<=e||Hfn(t,t.g,e))return t.g;for(o=t.r,r=t.g,h=t.r,s=(o-r)/2+r;r+11&&(t.e.b+=t.a)):(t.e.a+=n.a,t.e.b=b.Math.max(t.e.b,n.b),t.d.c.length>1&&(t.e.a+=t.a))}function T4n(t){var e,n,r,s;switch(s=t.i,e=s.b,r=s.j,n=s.g,s.a.g){case 0:n.a=(t.g.b.o.a-r.a)/2;break;case 1:n.a=e.d.n.a+e.d.a.a;break;case 2:n.a=e.d.n.a+e.d.a.a-r.a;break;case 3:n.b=e.d.n.b+e.d.a.b}}function C4n(t,e,n){var r,s,o;for(s=new rr(sr(Dg(n).a.Kc(),new z));Mr(s);)r=u(dr(s),18),!go(r)&&!(!go(r)&&r.c.i.c==r.d.i.c)&&(o=Lde(t,r,n,new IKt),o.c.length>1&&In(e.c,o))}function $fe(t,e,n,r,s){if(rr&&(t.a=r),t.bs&&(t.b=s),t}function S4n(t){if(Lt(t,143))return rkn(u(t,143));if(Lt(t,233))return K2n(u(t,233));if(Lt(t,23))return i4n(u(t,23));throw at(new zn(DTt+Hb(new hl(lt(ut(aa,1),Ln,1,5,[t])))))}function _4n(t,e,n,r,s){var o,h,d;for(o=!0,h=0;h>>s|n[h+r+1]<>>s,++h}return o}function f6t(t,e,n,r){var s,o,h;if(e.k==(Un(),fa)){for(o=new rr(sr(ua(e).a.Kc(),new z));Mr(o);)if(s=u(dr(o),18),h=s.c.i.k,h==fa&&t.c.a[s.c.i.c.p]==r&&t.c.a[e.c.p]==n)return!0}return!1}function A4n(t,e){var n,r,s,o;return e&=63,n=t.h&Fg,e<22?(o=n>>>e,s=t.m>>e|n<<22-e,r=t.l>>e|t.m<<22-e):e<44?(o=0,s=n>>>e-22,r=t.m>>e-22|t.h<<44-e):(o=0,s=0,r=n>>>e-44),Eu(r&Il,s&Il,o&Fg)}function zfe(t,e,n,r){var s;this.b=r,this.e=t==(Hm(),UA),s=e[n],this.d=G2(Fl,[ue,$0],[183,28],16,[s.length,s.length],2),this.a=G2(Fr,[ue,ii],[53,28],15,[s.length,s.length],2),this.c=new Kxt(e,n)}function L4n(t){var e,n,r;for(t.k=new s3t((ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])).length,t.j.c.length),r=new G(t.j);r.a=n)return I7(t,e,r.p),!0;return!1}function d5(t,e,n,r){var s,o,h,d,m,k;for(h=n.length,o=0,s=-1,k=Nae((qn(e,t.length+1),t.substr(e)),(bit(),_9t)),d=0;do&&nln(k,Nae(n[d],_9t))&&(s=d,o=m);return s>=0&&(r[0]=e+o),s}function Hfe(t){var e;return t.Db&64?Bot(t):(e=new eh(vTt),!t.a||ni(ni((e.a+=' "',e),t.a),'"'),ni(pm(ni(pm(ni(pm(ni(pm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function Vfe(t,e,n){var r,s,o,h,d;for(d=Lu(t.e.Dh(),e),s=u(t.g,124),r=0,h=0;hn?x6t(t,n,"start index"):e<0||e>n?x6t(e,n,"end index"):M_("end index (%s) must not be less than start index (%s)",lt(ut(aa,1),Ln,1,5,[he(e),he(t)]))}function Gfe(t,e){var n,r,s,o;for(r=0,s=t.length;r0&&Kfe(t,o,n));e.p=0}function He(t){var e;this.c=new Ki,this.f=t.e,this.e=t.d,this.i=t.g,this.d=t.c,this.b=t.b,this.k=t.j,this.a=t.a,t.i?this.j=t.i:this.j=(e=u(y1(G0),9),new _h(e,u(Ff(e,e.length),9),0)),this.g=t.f}function P4n(t){var e,n,r,s;for(e=Db(ni(new eh("Predicates."),"and"),40),n=!0,s=new gr(t);s.b0?d[h-1]:Vt(V0,jp,10,0,0,1),s=d[h],k=h=0?t.ki(s):C6t(t,r);else throw at(new zn(Jb+r.xe()+aA));else throw at(new zn(Gwe+e+Kwe));else Ph(t,n,r)}function d6t(t){var e,n;if(n=null,e=!1,Lt(t,211)&&(e=!0,n=u(t,211).a),e||Lt(t,263)&&(e=!0,n=""+u(t,263).a),e||Lt(t,492)&&(e=!0,n=""+u(t,492).a),!e)throw at(new Znt(LTt));return n}function g6t(t,e,n){var r,s,o,h,d,m;for(m=Lu(t.e.Dh(),e),r=0,d=t.i,s=u(t.g,124),h=0;h=t.d.b.c.length&&(e=new eu(t.d),e.p=r.p-1,ge(t.d.b,e),n=new eu(t.d),n.p=r.p,ge(t.d.b,n)),Aa(r,u(Oe(t.d.b,r.p),30))}function w6t(t,e,n){var r,s,o;if(!t.b[e.g]){for(t.b[e.g]=!0,r=n,!r&&(r=new FI),Zr(r.b,e),o=t.a[e.g].Kc();o.Ob();)s=u(o.Pb(),65),s.b!=e&&w6t(t,s.b,r),s.c!=e&&w6t(t,s.c,r),Zr(r.a,s);return r}return null}function j4n(t){switch(t.g){case 0:case 1:case 2:return ve(),Hn;case 3:case 4:case 5:return ve(),Er;case 6:case 7:case 8:return ve(),Gn;case 9:case 10:case 11:return ve(),Jn;default:return ve(),bc}}function $4n(t,e){var n;return t.c.length==0?!1:(n=hle((vn(0,t.c.length),u(t.c[0],18)).c.i),rh(),n==(Yy(),J5)||n==Q5?!0:t5(Wo(new ln(null,new gn(t,16)),new XJ),new MUt(e)))}function zot(t,e){if(Lt(e,207))return Nin(t,u(e,27));if(Lt(e,193))return Pin(t,u(e,123));if(Lt(e,451))return Oin(t,u(e,166));throw at(new zn(DTt+Hb(new hl(lt(ut(aa,1),Ln,1,5,[e])))))}function Zfe(t,e,n){var r,s;if(this.f=t,r=u(tr(t.b,e),260),s=r?r.a:0,P3t(n,s),n>=(s/2|0))for(this.e=r?r.c:null,this.d=s;n++0;)s4t(this);this.b=e,this.a=null}function z4n(t,e){var n,r;e.a?xkn(t,e):(n=u(lrt(t.b,e.b),60),n&&n==t.a[e.b.f]&&n.a&&n.a!=e.b.a&&n.c.Fc(e.b),r=u(urt(t.b,e.b),60),r&&t.a[r.f]==e.b&&r.a&&r.a!=e.b.a&&e.b.c.Fc(r),rit(t.b,e.b))}function t1e(t,e){var n,r;if(n=u(Io(t.b,e),127),u(u(Ai(t.r,e),21),87).dc()){n.n.b=0,n.n.c=0;return}n.n.b=t.C.b,n.n.c=t.C.c,t.A.Hc((Yl(),qw))&&_0e(t,e),r=pmn(t,e),tct(t,e)==(o5(),f2)&&(r+=2*t.w),n.a.a=r}function e1e(t,e){var n,r;if(n=u(Io(t.b,e),127),u(u(Ai(t.r,e),21),87).dc()){n.n.d=0,n.n.a=0;return}n.n.d=t.C.d,n.n.a=t.C.a,t.A.Hc((Yl(),qw))&&A0e(t,e),r=gmn(t,e),tct(t,e)==(o5(),f2)&&(r+=2*t.w),n.a.b=r}function q4n(t,e){var n,r,s,o;for(o=new fe,r=new G(e);r.ar&&(qn(e-1,t.length),t.charCodeAt(e-1)<=32);)--e;return r>0||en.a&&(r.Hc((fw(),cL))?s=(e.a-n.a)/2:r.Hc(uL)&&(s=e.a-n.a)),e.b>n.b&&(r.Hc((fw(),hL))?o=(e.b-n.b)/2:r.Hc(lL)&&(o=e.b-n.b)),n6t(t,s,o)}function u1e(t,e,n,r,s,o,h,d,m,k,T,A,P){Lt(t.Cb,90)&&t3(_l(u(t.Cb,90)),4),mu(t,n),t.f=h,v7(t,d),x7(t,m),m7(t,k),y7(t,T),Mp(t,A),k7(t,P),Dp(t,!0),Sp(t,s),t.Zk(o),uw(t,e),r!=null&&(t.i=null,Gq(t,r))}function x6t(t,e,n){if(t<0)return M_(abe,lt(ut(aa,1),Ln,1,5,[n,he(t)]));if(e<0)throw at(new zn(obe+e));return M_("%s (%s) must not be greater than size (%s)",lt(ut(aa,1),Ln,1,5,[n,he(t),he(e)]))}function k6t(t,e,n,r,s,o){var h,d,m,k;if(h=r-n,h<7){F2n(e,n,r,o);return}if(m=n+s,d=r+s,k=m+(d-m>>1),k6t(e,t,m,k,-s,o),k6t(e,t,k,d,-s,o),o.Ne(t[k-1],t[k])<=0){for(;n=0?t.bi(o,n):J6t(t,s,n);else throw at(new zn(Jb+s.xe()+aA));else throw at(new zn(Gwe+e+Kwe));else Fh(t,r,s,n)}function l1e(t){var e,n;if(t.f){for(;t.n>0;){if(e=u(t.k.Xb(t.n-1),76),n=e.Lk(),Lt(n,102)&&u(n,19).Bb&Fc&&(!t.e||n.pk()!=QT||n.Lj()!=0)&&e.md()!=null)return!0;--t.n}return!1}else return t.n>0}function h1e(t){var e,n,r,s;if(n=u(t,54)._h(),n)try{if(r=null,e=N7((Eb(),yf),X0e(W2n(n))),e&&(s=e.ai(),s&&(r=s.Fl(Ynn(n.e)))),r&&r!=t)return h1e(r)}catch(o){if(o=es(o),!Lt(o,63))throw at(o)}return t}function i5n(t,e,n){var r,s,o;n.Ug("Remove overlaps",1),n.dh(e,I7t),r=u(ne(e,(Y4(),ex)),27),t.f=r,t.a=oot(u(ne(e,(Ub(),wP)),299)),s=Ht(ne(e,(ai(),$w))),St(t,(Wn(s),s)),o=n3(r),mpe(t,e,o,n),n.dh(e,iU)}function s5n(t){var e,n,r;if(Ie(Me(ne(t,(ai(),_P))))){for(r=new fe,n=new rr(sr(Og(t).a.Kc(),new z));Mr(n);)e=u(dr(n),74),Zm(e)&&Ie(Me(ne(e,Ndt)))&&In(r.c,e);return r}else return mn(),mn(),co}function f1e(t){if(!t)return hWt(),Kve;var e=t.valueOf?t.valueOf():t;if(e!==t){var n=Lht[typeof e];return n?n(e):f5t(typeof e)}else return t instanceof Array||t instanceof b.Array?new Xj(t):new uE(t)}function d1e(t,e,n){var r,s,o;switch(o=t.o,r=u(Io(t.p,n),252),s=r.i,s.b=FO(r),s.a=PO(r),s.b=b.Math.max(s.b,o.a),s.b>o.a&&!e&&(s.b=o.a),s.c=-(s.b-o.a)/2,n.g){case 1:s.d=-s.a;break;case 3:s.d=o.b}dct(r),gct(r)}function g1e(t,e,n){var r,s,o;switch(o=t.o,r=u(Io(t.p,n),252),s=r.i,s.b=FO(r),s.a=PO(r),s.a=b.Math.max(s.a,o.b),s.a>o.b&&!e&&(s.a=o.b),s.d=-(s.a-o.b)/2,n.g){case 4:s.c=-s.b;break;case 2:s.c=o.a}dct(r),gct(r)}function a5n(t,e){var n,r,s,o,h;if(!e.dc()){if(s=u(e.Xb(0),131),e.gc()==1){Ude(t,s,s,1,0,e);return}for(n=1;n0)try{s=lh(e,Ga,xi)}catch(o){throw o=es(o),Lt(o,130)?(r=o,at(new _q(r))):at(o)}return n=(!t.a&&(t.a=new Bnt(t)),t.a),s=0?u(Dt(n,s),58):null}function l5n(t,e){if(t<0)return M_(abe,lt(ut(aa,1),Ln,1,5,["index",he(t)]));if(e<0)throw at(new zn(obe+e));return M_("%s (%s) must be less than size (%s)",lt(ut(aa,1),Ln,1,5,["index",he(t),he(e)]))}function h5n(t){var e,n,r,s,o;if(t==null)return Vu;for(o=new aw(ao,"[","]"),n=t,r=0,s=n.length;r=0?t.Lh(n,!0,!0):tv(t,s,!0),160)),u(r,220).Zl(e);else throw at(new zn(Jb+e.xe()+aA))}function S6t(t){var e,n;return t>-0x800000000000&&t<0x800000000000?t==0?0:(e=t<0,e&&(t=-t),n=Ys(b.Math.floor(b.Math.log(t)/.6931471805599453)),(!e||t!=b.Math.pow(2,n))&&++n,n):Dce(Pc(t))}function S5n(t){var e,n,r,s,o,h,d;for(o=new zd,n=new G(t);n.a2&&d.e.b+d.j.b<=2&&(s=d,r=h),o.a.zc(s,o),s.q=r);return o}function _5n(t,e,n){n.Ug("Eades radial",1),n.dh(e,iU),t.d=u(ne(e,(Y4(),ex)),27),t.c=Rt(Ht(ne(e,(Ub(),gK)))),t.e=oot(u(ne(e,wP),299)),t.a=nwn(u(ne(e,QLt),434)),t.b=kyn(u(ne(e,KLt),354)),iyn(t),n.dh(e,iU)}function A5n(t,e){if(e.Ug("Target Width Setter",1),ad(t,(fd(),ddt)))Mi(t,(N0(),B3),Ht(ne(t,ddt)));else throw at(new fp("A target width has to be set if the TargetWidthWidthApproximator should be used."));e.Vg()}function v1e(t,e){var n,r,s;return r=new Ig(t),Qo(r,e),Zt(r,(oe(),MG),e),Zt(r,(De(),bs),(ka(),hu)),Zt(r,u0,(I0(),SK)),y(r,(Un(),Ms)),n=new Yc,hc(n,r),Xs(n,(ve(),Gn)),s=new Yc,hc(s,r),Xs(s,Jn),r}function y1e(t){switch(t.g){case 0:return new Xnt((Hm(),hP));case 1:return new Zet;case 2:return new tnt;default:throw at(new zn("No implementation is available for the crossing minimizer "+(t.f!=null?t.f:""+t.g)))}}function x1e(t,e){var n,r,s,o,h;for(t.c[e.p]=!0,ge(t.a,e),h=new G(e.j);h.a=o)h.$b();else for(s=h.Kc(),r=0;r0?fwt():h<0&&C1e(t,e,-h),!0):!1}function PO(t){var e,n,r,s,o,h,d;if(d=0,t.b==0){for(h=ahe(t,!0),e=0,r=h,s=0,o=r.length;s0&&(d+=n,++e);e>1&&(d+=t.c*(e-1))}else d=EWt(lat(Ny(_i(xyt(t.a),new Ea),new gu)));return d>0?d+t.n.d+t.n.a:0}function FO(t){var e,n,r,s,o,h,d;if(d=0,t.b==0)d=EWt(lat(Ny(_i(xyt(t.a),new Ic),new wc)));else{for(h=ohe(t,!0),e=0,r=h,s=0,o=r.length;s0&&(d+=n,++e);e>1&&(d+=t.c*(e-1))}return d>0?d+t.n.b+t.n.c:0}function P5n(t){var e,n;if(t.c.length!=2)throw at(new Ro("Order only allowed for two paths."));e=(vn(0,t.c.length),u(t.c[0],18)),n=(vn(1,t.c.length),u(t.c[1],18)),e.d.i!=n.c.i&&(t.c.length=0,In(t.c,n),In(t.c,e))}function S1e(t,e,n){var r;for(H4(n,e.g,e.f),Ch(n,e.i,e.j),r=0;r<(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i;r++)S1e(t,u(Dt((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a),r),27),u(Dt((!n.a&&(n.a=new Jt(bi,n,10,11)),n.a),r),27))}function F5n(t,e){var n,r,s,o;for(o=u(Io(t.b,e),127),n=o.a,s=u(u(Ai(t.r,e),21),87).Kc();s.Ob();)r=u(s.Pb(),117),r.c&&(n.a=b.Math.max(n.a,Jvt(r.c)));if(n.a>0)switch(e.g){case 2:o.n.c=t.s;break;case 4:o.n.b=t.s}}function B5n(t,e){var n,r,s;return n=u(X(e,(Vf(),jk)),17).a-u(X(t,jk),17).a,n==0?(r=ia(Oa(u(X(t,(Pb(),UN)),8)),u(X(t,TA),8)),s=ia(Oa(u(X(e,UN),8)),u(X(e,TA),8)),Bi(r.a*r.b,s.a*s.b)):n}function R5n(t,e){var n,r,s;return n=u(X(e,(Cc(),uK)),17).a-u(X(t,uK),17).a,n==0?(r=ia(Oa(u(X(t,(ji(),gP)),8)),u(X(t,zT),8)),s=ia(Oa(u(X(e,gP),8)),u(X(e,zT),8)),Bi(r.a*r.b,s.a*s.b)):n}function _1e(t){var e,n;return n=new yb,n.a+="e_",e=Mpn(t),e!=null&&(n.a+=""+e),t.c&&t.d&&(ni((n.a+=" ",n),BH(t.c)),ni(tu((n.a+="[",n),t.c.i),"]"),ni((n.a+=But,n),BH(t.d)),ni(tu((n.a+="[",n),t.d.i),"]")),n.a}function A1e(t){switch(t.g){case 0:return new cnt;case 1:return new rE;case 2:return new ont;case 3:return new ant;default:throw at(new zn("No implementation is available for the layout phase "+(t.f!=null?t.f:""+t.g)))}}function L6t(t,e,n,r,s){var o;switch(o=0,s.g){case 1:o=b.Math.max(0,e.b+t.b-(n.b+r));break;case 3:o=b.Math.max(0,-t.b-r);break;case 2:o=b.Math.max(0,-t.a-r);break;case 4:o=b.Math.max(0,e.a+t.a-(n.a+r))}return o}function j5n(t,e,n){var r,s,o,h,d;if(n)for(s=n.a.length,r=new W2(s),d=(r.b-r.a)*r.c<0?(Tb(),y2):new _b(r);d.Ob();)h=u(d.Pb(),17),o=qE(n,h.a),ETt in o.a||Qlt in o.a?Z8n(t,o,e):mSn(t,o,e),wsn(u(tr(t.b,T7(o)),74))}function D6t(t){var e,n;switch(t.b){case-1:return!0;case 0:return n=t.t,n>1||n==-1?(t.b=-1,!0):(e=of(t),e&&(vo(),e.lk()==Wme)?(t.b=-1,!0):(t.b=1,!1));default:case 1:return!1}}function M6t(t,e){var n,r,s,o;if(wi(t),t.c!=0||t.a!=123)throw at(new Yr(Qr((Ur(),bme))));if(o=e==112,r=t.d,n=TE(t.i,125,r),n<0)throw at(new Yr(Qr((Ur(),wme))));return s=Lh(t.i,r,n),t.d=n+1,Qse(s,o,(t.e&512)==512)}function L1e(t){var e,n,r,s,o,h,d;if(r=t.a.c.length,r>0)for(h=t.c.d,d=t.d.d,s=qd(ia(new ae(d.a,d.b),h),1/(r+1)),o=new ae(h.a,h.b),n=new G(t.a);n.a=0&&r=0?t.Lh(n,!0,!0):tv(t,s,!0),160)),u(r,220).Wl(e);throw at(new zn(Jb+e.xe()+qlt))}function H5n(){Nwt();var t;return ITe?u(N7((Eb(),yf),hf),2038):(ui(Sw,new gM),R9n(),t=u(Lt(nu((Eb(),yf),hf),560)?nu(yf,hf):new Uee,560),ITe=!0,jSn(t),GSn(t),hi((Owt(),$It),t,new K1),jo(yf,hf,t),t)}function V5n(t,e){var n,r,s,o;t.j=-1,Hl(t.e)?(n=t.i,o=t.i!=0,PI(t,e),r=new Tg(t.e,3,t.c,null,e,n,o),s=e.zl(t.e,t.c,null),s=cfe(t,e,s),s?(s.nj(r),s.oj()):Ei(t.e,r)):(PI(t,e),s=e.zl(t.e,t.c,null),s&&s.oj())}function KH(t,e){var n,r,s;if(s=0,r=e[0],r>=t.length)return-1;for(n=(qn(r,t.length),t.charCodeAt(r));n>=48&&n<=57&&(s=s*10+(n-48),++r,!(r>=t.length));)n=(qn(r,t.length),t.charCodeAt(r));return r>e[0]?e[0]=r:s=-1,s}function U5n(t){var e,n,r,s,o;return s=u(t.a,17).a,o=u(t.b,17).a,n=s,r=o,e=b.Math.max(b.Math.abs(s),b.Math.abs(o)),s<=0&&s==o?(n=0,r=o-1):s==-e&&o!=e?(n=o,r=s,o>=0&&++n):(n=-o,r=s),new Ws(he(n),he(r))}function G5n(t,e,n,r){var s,o,h,d,m,k;for(s=0;s=0&&k>=0&&m=t.i)throw at(new Bo(Zlt+e+Ew+t.i));if(n>=t.i)throw at(new Bo(tht+n+Ew+t.i));return r=t.g[n],e!=n&&(e>16),e=r>>16&16,n=16-e,t=t>>e,r=t-256,e=r>>16&8,n+=e,t<<=e,r=t-u3,e=r>>16&4,n+=e,t<<=e,r=t-Jd,e=r>>16&2,n+=e,t<<=e,r=t>>14,e=r&~(r>>1),n+2-e)}function W5n(t){J6();var e,n,r,s;for(VU=new fe,Jht=new _r,Qht=new fe,e=(!t.a&&(t.a=new Jt(bi,t,10,11)),t.a),RCn(e),s=new Zn(e);s.e!=s.i.gc();)r=u(ar(s),27),Xo(VU,r,0)==-1&&(n=new fe,ge(Qht,n),Ile(r,n));return Qht}function Y5n(t,e,n){var r,s,o,h;t.a=n.b.d,Lt(e,326)?(s=b5(u(e,74),!1,!1),o=MO(s),r=new jC(t),Fa(o,r),KO(o,s),e.of((ai(),Iv))!=null&&Fa(u(e.of(Iv),75),r)):(h=u(e,422),h.rh(h.nh()+t.a.a),h.sh(h.oh()+t.a.b))}function X5n(t,e){var n,r,s;for(s=new fe,r=Dr(e.a,0);r.b!=r.d.c;)n=u(Ar(r),65),n.c.g==t.g&&$t(X(n.b,(Cc(),h0)))!==$t(X(n.c,h0))&&!t5(new ln(null,new gn(s,16)),new HUt(n))&&In(s.c,n);return Ds(s,new DZ),s}function M1e(t,e,n){var r,s,o,h;return Lt(e,153)&&Lt(n,153)?(o=u(e,153),h=u(n,153),t.a[o.a][h.a]+t.a[h.a][o.a]):Lt(e,250)&&Lt(n,250)&&(r=u(e,250),s=u(n,250),r.a==s.a)?u(X(s.a,(Vf(),jk)),17).a:0}function I1e(t,e){var n,r,s,o,h,d,m,k;for(k=Rt(Ht(X(e,(De(),jA)))),m=t[0].n.a+t[0].o.a+t[0].d.c+k,d=1;d=0?n:(d=RS(ia(new ae(h.c+h.b/2,h.d+h.a/2),new ae(o.c+o.b/2,o.d+o.a/2))),-(ige(o,h)-1)*d)}function J5n(t,e,n){var r;ms(new ln(null,(!n.a&&(n.a=new Jt(Wi,n,6,6)),new gn(n.a,16))),new GXt(t,e)),ms(new ln(null,(!n.n&&(n.n=new Jt(Po,n,1,7)),new gn(n.n,16))),new KXt(t,e)),r=u(ne(n,(ai(),Iv)),75),r&&P4t(r,t,e)}function tv(t,e,n){var r,s,o;if(o=y5((il(),ja),t.Dh(),e),o)return vo(),u(o,69).xk()||(o=tk($o(ja,o))),s=(r=t.Ih(o),u(r>=0?t.Lh(r,!0,!0):tv(t,o,!0),160)),u(s,220).Sl(e,n);throw at(new zn(Jb+e.xe()+qlt))}function I6t(t,e,n,r){var s,o,h,d,m;if(s=t.d[e],s){if(o=s.g,m=s.i,r!=null){for(d=0;d=n&&(r=e,k=(m.c+m.a)/2,h=k-n,m.c<=k-n&&(s=new yit(m.c,h),Sm(t,r++,s)),d=k+n,d<=m.a&&(o=new yit(d,m.a),Fy(r,t.c.length),sS(t.c,r,o)))}function P1e(t,e,n){var r,s,o,h,d,m;if(!e.dc()){for(s=new Ki,m=e.Kc();m.Ob();)for(d=u(m.Pb(),39),hi(t.a,he(d.g),he(n)),h=(r=Dr(new gg(d).a.d,0),new M4(r));IM(h.a);)o=u(Ar(h.a),65).c,hs(s,o,s.c.b,s.c);P1e(t,s,n+1)}}function O6t(t){var e;if(!t.c&&t.g==null)t.d=t.bj(t.f),Or(t,t.d),e=t.d;else{if(t.g==null)return!0;if(t.i==0)return!1;e=u(t.g[t.i-1],51)}return e==t.b&&null.Vm>=null.Um()?(XH(t),O6t(t)):e.Ob()}function F1e(t){if(this.a=t,t.c.i.k==(Un(),Ms))this.c=t.c,this.d=u(X(t.c.i,(oe(),Dc)),64);else if(t.d.i.k==Ms)this.c=t.d,this.d=u(X(t.d.i,(oe(),Dc)),64);else throw at(new zn("Edge "+t+" is not an external edge."))}function B1e(t,e){var n,r,s;s=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,s,t.b)),e?e!=t&&(mu(t,e.zb),Zst(t,e.d),n=(r=e.c,r??e.zb),eat(t,n==null||hn(n,e.zb)?null:n)):(mu(t,null),Zst(t,0),eat(t,null))}function R1e(t,e){var n;this.e=(Dm(),Hr(t),Dm(),W5t(t)),this.c=(Hr(e),W5t(e)),Bmt(this.e.Rd().dc()==this.c.Rd().dc()),this.d=Jue(this.e),this.b=Jue(this.c),n=G2(aa,[ue,Ln],[5,1],5,[this.e.Rd().gc(),this.c.Rd().gc()],2),this.a=n,_gn(this)}function j1e(t){!_ht&&(_ht=XCn());var e=t.replace(/[\x00-\x1f\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200b-\u200f\u2028-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb"\\]/g,function(n){return tfn(n)});return'"'+e+'"'}function N6t(t,e,n,r,s,o){var h,d,m,k,T;if(s!=0)for($t(t)===$t(n)&&(t=t.slice(e,e+s),e=0),m=n,d=e,k=e+s;d=h)throw at(new Dy(e,h));return s=n[e],h==1?r=null:(r=Vt(e0t,sht,424,h-1,0,1),Xc(n,0,r,0,e),o=h-e-1,o>0&&Xc(n,e+1,r,e,o)),C7(t,r),o1e(t,e,s),s}function z1e(t){var e,n;if(t.f){for(;t.n0?o=hk(n):o=bO(hk(n))),Mi(e,NT,o)}function sxn(t,e){var n;e.Ug("Partition preprocessing",1),n=u(nc(_i(fc(_i(new ln(null,new gn(t.a,16)),new AQ),new LQ),new HB),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),ms(n.Oc(),new Jx),e.Vg()}function axn(t,e){var n,r,s,o,h;for(h=t.j,e.a!=e.b&&Ds(h,new aC),s=h.c.length/2|0,r=0;r0&&VO(t,n,e),o):r.a!=null?(VO(t,e,n),-1):s.a!=null?(VO(t,n,e),1):0}function cxn(t,e){var n,r,s,o,h;for(s=e.b.b,t.a=Vt(Vh,l3,15,s,0,1),t.b=Vt(Fl,$0,28,s,16,1),h=Dr(e.b,0);h.b!=h.d.c;)o=u(Ar(h),39),t.a[o.g]=new Ki;for(r=Dr(e.a,0);r.b!=r.d.c;)n=u(Ar(r),65),t.a[n.b.g].Fc(n),t.a[n.c.g].Fc(n)}function U1e(t,e){var n,r,s,o;t.Pj()?(n=t.Ej(),o=t.Qj(),++t.j,t.qj(n,t.Zi(n,e)),r=t.Ij(3,null,e,n,o),t.Mj()?(s=t.Nj(e,null),s?(s.nj(r),s.oj()):t.Jj(r)):t.Jj(r)):(Nee(t,e),t.Mj()&&(s=t.Nj(e,null),s&&s.oj()))}function P6t(t,e,n){var r,s,o;t.Pj()?(o=t.Qj(),fO(t,e,n),r=t.Ij(3,null,n,e,o),t.Mj()?(s=t.Nj(n,null),t.Tj()&&(s=t.Uj(n,s)),s?(s.nj(r),s.oj()):t.Jj(r)):t.Jj(r)):(fO(t,e,n),t.Mj()&&(s=t.Nj(n,null),s&&s.oj()))}function WH(t,e){var n,r,s,o,h;for(h=Lu(t.e.Dh(),e),s=new pb,n=u(t.g,124),o=t.i;--o>=0;)r=n[o],h.am(r.Lk())&&Or(s,r);!$pe(t,s)&&Hl(t.e)&&hE(t,e.Jk()?Ib(t,6,e,(mn(),co),null,-1,!1):Ib(t,e.tk()?2:1,e,null,null,-1,!1))}function uxn(t,e){var n,r,s,o,h;return t.a==(M7(),AA)?!0:(o=e.a.c,n=e.a.c+e.a.b,!(e.j&&(r=e.A,h=r.c.c.a-r.o.a/2,s=o-(r.n.a+r.o.a),s>h)||e.q&&(r=e.C,h=r.c.c.a-r.o.a/2,s=r.n.a-n,s>h)))}function G1e(t){gst();var e,n,r,s,o,h,d;for(n=new kp,s=new G(t.e.b);s.a1?t.e*=Rt(t.a):t.f/=Rt(t.a),Mbn(t),Bwn(t),N8n(t),Zt(t.b,(b_(),HU),t.g)}function X1e(t,e,n){var r,s,o,h,d,m;for(r=0,m=n,e||(r=n*(t.c.length-1),m*=-1),o=new G(t);o.a=0?t.Ah(null):t.Ph().Th(t,-1-e,null,null)),t.Bh(u(s,54),n),r&&r.oj(),t.vh()&&t.wh()&&n>-1&&Ei(t,new ha(t,9,n,o,s)),s):o}function R6t(t,e){var n,r,s,o,h;for(o=t.b.Ce(e),r=(n=t.a.get(o),n??Vt(aa,Ln,1,0,5,1)),h=0;h>5,s>=t.d)return t.e<0;if(n=t.a[s],e=1<<(e&31),t.e<0){if(r=uce(t),s>16)),15).dd(o),d0&&(!(bg(t.a.c)&&e.n.d)&&!(q4(t.a.c)&&e.n.b)&&(e.g.d+=b.Math.max(0,r/2-.5)),!(bg(t.a.c)&&e.n.a)&&!(q4(t.a.c)&&e.n.c)&&(e.g.a-=r-1))}function sde(t){var e,n,r,s,o;if(s=new fe,o=tge(t,s),e=u(X(t,(oe(),ml)),10),e)for(r=new G(e.j);r.a>e,o=t.m>>e|n<<22-e,s=t.l>>e|t.m<<22-e):e<44?(h=r?Fg:0,o=n>>e-22,s=t.m>>e-22|n<<44-e):(h=r?Fg:0,o=r?Il:0,s=n>>e-44),Eu(s&Il,o&Il,h&Fg)}function Wot(t){var e,n,r,s,o,h;for(this.c=new fe,this.d=t,r=Zi,s=Zi,e=Vs,n=Vs,h=Dr(t,0);h.b!=h.d.c;)o=u(Ar(h),8),r=b.Math.min(r,o.a),s=b.Math.min(s,o.b),e=b.Math.max(e,o.a),n=b.Math.max(n,o.b);this.a=new Ah(r,s,e-r,n-s)}function ode(t,e){var n,r,s,o,h,d;for(o=new G(t.b);o.a0&&Lt(e,44)&&(t.a._j(),k=u(e,44),m=k.ld(),o=m==null?0:$i(m),h=lvt(t.a,o),n=t.a.d[h],n)){for(r=u(n.g,379),T=n.i,d=0;d=2)for(n=s.Kc(),e=Ht(n.Pb());n.Ob();)o=e,e=Ht(n.Pb()),r=b.Math.min(r,(Wn(e),e-(Wn(o),o)));return r}function Mxn(t,e){var n,r,s;for(s=new fe,r=Dr(e.a,0);r.b!=r.d.c;)n=u(Ar(r),65),n.b.g==t.g&&!hn(n.b.c,nU)&&$t(X(n.b,(Cc(),h0)))!==$t(X(n.c,h0))&&!t5(new ln(null,new gn(s,16)),new VUt(n))&&In(s.c,n);return Ds(s,new NZ),s}function Ixn(t,e){var n,r,s;if($t(e)===$t(Hr(t)))return!0;if(!Lt(e,15)||(r=u(e,15),s=t.gc(),s!=r.gc()))return!1;if(Lt(r,59)){for(n=0;n0&&(s=n),h=new G(t.f.e);h.a0?(e-=1,n-=1):r>=0&&s<0?(e+=1,n+=1):r>0&&s>=0?(e-=1,n+=1):(e+=1,n-=1),new Ws(he(e),he(n))}function Gxn(t,e){return t.ce.c?1:t.be.b?1:t.a!=e.a?$i(t.a)-$i(e.a):t.d==(US(),KA)&&e.d==GA?-1:t.d==GA&&e.d==KA?1:0}function gde(t,e){var n,r,s,o,h;return o=e.a,o.c.i==e.b?h=o.d:h=o.c,o.c.i==e.b?r=o.c:r=o.d,s=gwn(t.a,h,r),s>0&&s0):s<0&&-s0):!1}function Kxn(t,e,n,r){var s,o,h,d,m,k,T,A;for(s=(e-t.d)/t.c.c.length,o=0,t.a+=n,t.d=e,A=new G(t.c);A.a>24;return h}function Yxn(t){if(t.ze()){var e=t.c;e.Ae()?t.o="["+e.n:e.ze()?t.o="["+e.xe():t.o="[L"+e.xe()+";",t.b=e.we()+"[]",t.k=e.ye()+"[]";return}var n=t.j,r=t.d;r=r.split("/"),t.o=Jat(".",[n,Jat("$",r)]),t.b=Jat(".",[n,Jat(".",r)]),t.k=r[r.length-1]}function Xxn(t,e){var n,r,s,o,h;for(h=null,o=new G(t.e.a);o.a=0;e-=2)for(n=0;n<=e;n+=2)(t.b[n]>t.b[n+2]||t.b[n]===t.b[n+2]&&t.b[n+1]>t.b[n+3])&&(r=t.b[n+2],t.b[n+2]=t.b[n],t.b[n]=r,r=t.b[n+3],t.b[n+3]=t.b[n+1],t.b[n+1]=r);t.c=!0}}function Zxn(t,e){var n,r,s,o,h,d,m,k,T;for(k=-1,T=0,h=t,d=0,m=h.length;d0&&++T;++k}return T}function qf(t){var e,n;return n=new eh(V2(t.Rm)),n.a+="@",ni(n,(e=$i(t)>>>0,e.toString(16))),t.Vh()?(n.a+=" (eProxyURI: ",tu(n,t._h()),t.Kh()&&(n.a+=" eClass: ",tu(n,t.Kh())),n.a+=")"):t.Kh()&&(n.a+=" (eClass: ",tu(n,t.Kh()),n.a+=")"),n.a}function __(t){var e,n,r,s;if(t.e)throw at(new Ro((wg($ht),wut+$ht.k+mut)));for(t.d==(Rs(),Ed)&&bV(t,Uo),n=new G(t.a.a);n.a>24}return n}function n6n(t,e,n){var r,s,o;if(s=u(Io(t.i,e),314),!s)if(s=new Zae(t.d,e,n),W6(t.i,e,s),Z5t(e))asn(t.a,e.c,e.b,s);else switch(o=j4n(e),r=u(Io(t.p,o),252),o.g){case 1:case 3:s.j=!0,Jnt(r,e.b,s);break;case 4:case 2:s.k=!0,Jnt(r,e.c,s)}return s}function r6n(t,e){var n,r,s,o,h,d,m,k,T;for(m=C0(t.c-t.b&t.a.length-1),k=null,T=null,o=new $S(t);o.a!=o.b;)s=u(cH(o),10),n=(d=u(X(s,(oe(),N1)),12),d?d.i:null),r=(h=u(X(s,gf),12),h?h.i:null),(k!=n||T!=r)&&(Q1e(m,e),k=n,T=r),In(m.c,s);Q1e(m,e)}function i6n(t,e,n,r){var s,o,h,d,m,k;if(d=new pb,m=Lu(t.e.Dh(),e),s=u(t.g,124),vo(),u(e,69).xk())for(h=0;h=0)return s;for(o=1,d=new G(e.j);d.a=0)return s;for(o=1,d=new G(e.j);d.a0&&e.Ne((vn(s-1,t.c.length),u(t.c[s-1],10)),o)>0;)Mh(t,s,(vn(s-1,t.c.length),u(t.c[s-1],10))),--s;vn(s,t.c.length),t.c[s]=o}n.a=new _r,n.b=new _r}function s6n(t,e,n){var r,s,o,h,d,m,k,T;for(T=(r=u(e.e&&e.e(),9),new _h(r,u(Ff(r,r.length),9),0)),m=s3(n,"[\\[\\]\\s,]+"),o=m,h=0,d=o.length;h=0?(e||(e=new YC,r>0&&Mo(e,(Da(0,r,t.length),t.substr(0,r)))),e.a+="\\",PE(e,n&js)):e&&PE(e,n&js);return e?e.a:t}function o6n(t){var e,n,r;for(n=new G(t.a.a.b);n.a0&&(!(bg(t.a.c)&&e.n.d)&&!(q4(t.a.c)&&e.n.b)&&(e.g.d-=b.Math.max(0,r/2-.5)),!(bg(t.a.c)&&e.n.a)&&!(q4(t.a.c)&&e.n.c)&&(e.g.a+=b.Math.max(0,r-1)))}function Ede(t,e,n){var r,s;if((t.c-t.b&t.a.length-1)==2)e==(ve(),Hn)||e==Jn?(Nq(u(r_(t),15),(uh(),K0)),Nq(u(r_(t),15),h2)):(Nq(u(r_(t),15),(uh(),h2)),Nq(u(r_(t),15),K0));else for(s=new $S(t);s.a!=s.b;)r=u(cH(s),15),Nq(r,n)}function c6n(t,e){var n,r,s,o,h,d,m;for(s=DE(new O2t(t)),d=new La(s,s.c.length),o=DE(new O2t(e)),m=new La(o,o.c.length),h=null;d.b>0&&m.b>0&&(n=(ur(d.b>0),u(d.a.Xb(d.c=--d.b),27)),r=(ur(m.b>0),u(m.a.Xb(m.c=--m.b),27)),n==r);)h=n;return h}function Tde(t,e,n){var r,s,o,h;Tre(t,e)>Tre(t,n)?(r=gc(n,(ve(),Jn)),t.d=r.dc()?0:Sit(u(r.Xb(0),12)),h=gc(e,Gn),t.b=h.dc()?0:Sit(u(h.Xb(0),12))):(s=gc(n,(ve(),Gn)),t.d=s.dc()?0:Sit(u(s.Xb(0),12)),o=gc(e,Jn),t.b=o.dc()?0:Sit(u(o.Xb(0),12)))}function Cde(t,e){var n,r,s,o;for(n=t.o.a,o=u(u(Ai(t.r,e),21),87).Kc();o.Ob();)s=u(o.Pb(),117),s.e.a=n*Rt(Ht(s.b.of($U))),s.e.b=(r=s.b,r.pf((ai(),Pl))?r.ag()==(ve(),Hn)?-r.Mf().b-Rt(Ht(r.of(Pl))):Rt(Ht(r.of(Pl))):r.ag()==(ve(),Hn)?-r.Mf().b:0)}function u6n(t,e){var n,r,s,o;for(e.Ug("Self-Loop pre-processing",1),r=new G(t.a);r.at.c));h++)s.a>=t.s&&(o<0&&(o=h),d=h);return m=(t.s+t.c)/2,o>=0&&(r=Q8n(t,e,o,d),m=Yrn((vn(r,e.c.length),u(e.c[r],339))),nxn(e,r,n)),m}function zr(t,e,n){var r,s,o,h,d,m,k;for(h=(o=new aM,o),_4t(h,(Wn(e),e)),k=(!h.b&&(h.b=new Ul((wn(),wo),Mc,h)),h.b),m=1;m0&&KTn(this,s)}function Y6t(t,e,n,r,s,o){var h,d,m;if(!s[e.a]){for(s[e.a]=!0,h=r,!h&&(h=new mq),ge(h.e,e),m=o[e.a].Kc();m.Ob();)d=u(m.Pb(),289),!(d.d==n||d.c==n)&&(d.c!=e&&Y6t(t,d.c,e,h,s,o),d.d!=e&&Y6t(t,d.d,e,h,s,o),ge(h.c,d),Hs(h.d,d.b));return h}return null}function f6n(t){var e,n,r,s,o,h,d;for(e=0,s=new G(t.e);s.a=2}function d6n(t,e,n,r,s){var o,h,d,m,k,T;for(o=t.c.d.j,h=u(jh(n,0),8),T=1;T1||(e=Hi(Qf,lt(ut(Lo,1),te,95,0,[qg,Jf])),tO(iq(e,t))>1)||(r=Hi(t1,lt(ut(Lo,1),te,95,0,[W0,bf])),tO(iq(r,t))>1))}function X6t(t,e,n){var r,s,o;for(o=new G(t.t);o.a0&&(r.b.n-=r.c,r.b.n<=0&&r.b.u>0&&Zr(e,r.b));for(s=new G(t.i);s.a0&&(r.a.u-=r.c,r.a.u<=0&&r.a.n>0&&Zr(n,r.a))}function XH(t){var e,n,r,s,o;if(t.g==null&&(t.d=t.bj(t.f),Or(t,t.d),t.c))return o=t.f,o;if(e=u(t.g[t.i-1],51),s=e.Pb(),t.e=e,n=t.bj(s),n.Ob())t.d=n,Or(t,n);else for(t.d=null;!e.Ob()&&(ls(t.g,--t.i,null),t.i!=0);)r=u(t.g[t.i-1],51),e=r;return s}function p6n(t,e){var n,r,s,o,h,d;if(r=e,s=r.Lk(),Ng(t.e,s)){if(s.Si()&&dq(t,s,r.md()))return!1}else for(d=Lu(t.e.Dh(),s),n=u(t.g,124),o=0;o1||n>1)return 2;return e+n==1?2:0}function Dl(t,e){var n,r,s,o,h,d;return o=t.a*dut+t.b*1502,d=t.b*dut+11,n=b.Math.floor(d*lN),o+=n,d-=n*y8t,o%=y8t,t.a=o,t.b=d,e<=24?b.Math.floor(t.a*L9t[e]):(s=t.a*(1<=2147483648&&(r-=4294967296),r)}function Dde(t,e,n){var r,s,o,h,d,m,k;for(o=new fe,k=new Ki,h=new Ki,B7n(t,k,h,e),p9n(t,k,h,e,n),m=new G(t);m.ar.b.g&&In(o.c,r);return o}function x6n(t,e,n){var r,s,o,h,d,m;for(d=t.c,h=(n.q?n.q:(mn(),mn(),q0)).vc().Kc();h.Ob();)o=u(h.Pb(),44),r=!wE(_i(new ln(null,new gn(d,16)),new Sl(new jXt(e,o)))).Bd((U2(),Rk)),r&&(m=o.md(),Lt(m,4)&&(s=nxt(m),s!=null&&(m=s)),e.qf(u(o.ld(),149),m))}function k6n(t,e,n){var r,s;if(EI(t.b),E1(t.b,(pO(),vK),(tS(),kP)),E1(t.b,yK,e.g),E1(t.b,xK,e.a),t.a=XO(t.b,e),n.Ug("Compaction by shrinking a tree",t.a.c.length),e.i.c.length>1)for(s=new G(t.a);s.a=0?t.Lh(r,!0,!0):tv(t,o,!0),160)),u(s,220).Xl(e,n)}else throw at(new zn(Jb+e.xe()+aA))}function QH(t,e){var n,r,s,o,h;if(e){for(o=Lt(t.Cb,90)||Lt(t.Cb,102),h=!o&&Lt(t.Cb,331),r=new Zn((!e.a&&(e.a=new DS(e,Do,e)),e.a));r.e!=r.i.gc();)if(n=u(ar(r),89),s=lV(n),o?Lt(s,90):h?Lt(s,156):s)return s;return o?(wn(),xf):(wn(),Sd)}else return null}function E6n(t,e){var n,r,s,o;for(e.Ug("Resize child graph to fit parent.",1),r=new G(t.b);r.a=2*e&&ge(n,new yit(h[r-1]+e,h[r]-e));return n}function S6n(t,e,n){var r,s,o,h,d,m,k,T;if(n)for(o=n.a.length,r=new W2(o),d=(r.b-r.a)*r.c<0?(Tb(),y2):new _b(r);d.Ob();)h=u(d.Pb(),17),s=qE(n,h.a),s&&(m=ndn(t,(k=(kb(),T=new J2t,T),e&&Z6t(k,e),k),s),n7(m,yg(s,a0)),qH(s,m),E6t(s,m),xat(t,s,m))}function JH(t){var e,n,r,s,o,h;if(!t.j){if(h=new bC,e=_L,o=e.a.zc(t,e),o==null){for(r=new Zn(Yo(t));r.e!=r.i.gc();)n=u(ar(r),29),s=JH(n),gs(h,s),Or(h,n);e.a.Bc(t)!=null}Uy(h),t.j=new $4((u(Dt(Qt((Lb(),Fn).o),11),19),h.i),h.g),_l(t).b&=-33}return t.j}function _6n(t){var e,n,r,s;if(t==null)return null;if(r=su(t,!0),s=NN.length,hn(r.substr(r.length-s,s),NN)){if(n=r.length,n==4){if(e=(qn(0,r.length),r.charCodeAt(0)),e==43)return aOt;if(e==45)return ZTe}else if(n==3)return aOt}return new z2t(r)}function A6n(t){var e,n,r;return n=t.l,n&n-1||(r=t.m,r&r-1)||(e=t.h,e&e-1)||e==0&&r==0&&n==0?-1:e==0&&r==0&&n!=0?w4t(n):e==0&&r!=0&&n==0?w4t(r)+22:e!=0&&r==0&&n==0?w4t(e)+44:-1}function p5(t,e){var n,r,s,o,h;for(s=e.a&t.f,o=null,r=t.b[s];;r=r.b){if(r==e){o?o.b=e.b:t.b[s]=e.b;break}o=r}for(h=e.f&t.f,o=null,n=t.c[h];;n=n.d){if(n==e){o?o.d=e.d:t.c[h]=e.d;break}o=n}e.e?e.e.c=e.c:t.a=e.c,e.c?e.c.e=e.e:t.e=e.e,--t.i,++t.g}function L6n(t,e){var n;e.d?e.d.b=e.b:t.a=e.b,e.b?e.b.d=e.d:t.e=e.d,!e.e&&!e.c?(n=u(nf(u(rk(t.b,e.a),260)),260),n.a=0,++t.c):(n=u(nf(u(tr(t.b,e.a),260)),260),--n.a,e.e?e.e.c=e.c:n.b=u(nf(e.c),511),e.c?e.c.e=e.e:n.c=u(nf(e.e),511)),--t.d}function D6n(t){var e,n,r,s,o,h,d,m,k,T;for(n=t.o,e=t.p,h=xi,s=Ga,d=xi,o=Ga,k=0;k0),o.a.Xb(o.c=--o.b),Ly(o,s),ur(o.b3&&M0(t,0,e-3))}function I6n(t){var e,n,r,s;return $t(X(t,(De(),A3)))===$t((Ag(),Xp))?!t.e&&$t(X(t,iP))!==$t((c7(),JN)):(r=u(X(t,e1t),298),s=Ie(Me(X(t,n1t)))||$t(X(t,FA))===$t((QS(),QN)),e=u(X(t,R_t),17).a,n=t.a.c.length,!s&&r!=(c7(),JN)&&(e==0||e>n))}function O6n(t){var e,n;for(n=0;n0);n++);if(n>0&&n0);e++);return e>0&&n>16!=6&&e){if(_7(t,e))throw at(new zn(oA+K1e(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Ext(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,6,r)),r=ovt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,6,e,e))}function ZH(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=3&&e){if(_7(t,e))throw at(new zn(oA+Nge(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?_xt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,12,r)),r=cvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,e,e))}function Z6t(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=9&&e){if(_7(t,e))throw at(new zn(oA+I0e(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Cxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,9,r)),r=uvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,9,e,e))}function P7(t){var e,n,r,s,o;if(r=of(t),o=t.j,o==null&&r)return t.Jk()?null:r.ik();if(Lt(r,156)){if(n=r.jk(),n&&(s=n.wi(),s!=t.i)){if(e=u(r,156),e.nk())try{t.g=s.ti(e,o)}catch(h){if(h=es(h),Lt(h,82))t.g=null;else throw at(h)}t.i=s}return t.g}return null}function Nde(t){var e;return e=new fe,ge(e,new O6(new ae(t.c,t.d),new ae(t.c+t.b,t.d))),ge(e,new O6(new ae(t.c,t.d),new ae(t.c,t.d+t.a))),ge(e,new O6(new ae(t.c+t.b,t.d+t.a),new ae(t.c+t.b,t.d))),ge(e,new O6(new ae(t.c+t.b,t.d+t.a),new ae(t.c,t.d+t.a))),e}function N6n(t){var e,n,r;if(t==null)return Vu;try{return rc(t)}catch(s){if(s=es(s),Lt(s,103))return e=s,r=V2(Wl(t))+"@"+(n=(pg(),ext(t)>>>0),n.toString(16)),Wwn(Opn(),(xE(),"Exception during lenientFormat for "+r),e),"<"+r+" threw "+V2(e.Rm)+">";throw at(s)}}function P6n(t,e,n){var r,s,o;for(o=e.a.ec().Kc();o.Ob();)s=u(o.Pb(),74),r=u(tr(t.b,s),272),!r&&(Ji(O0(s))==Ji(qb(s))?kkn(t,s,n):O0(s)==Ji(qb(s))?tr(t.c,s)==null&&tr(t.b,qb(s))!=null&&fpe(t,s,n,!1):tr(t.d,s)==null&&tr(t.b,O0(s))!=null&&fpe(t,s,n,!0))}function F6n(t,e){var n,r,s,o,h,d,m;for(s=t.Kc();s.Ob();)for(r=u(s.Pb(),10),d=new Yc,hc(d,r),Xs(d,(ve(),Jn)),Zt(d,(oe(),IG),(Pn(),!0)),h=e.Kc();h.Ob();)o=u(h.Pb(),10),m=new Yc,hc(m,o),Xs(m,Gn),Zt(m,IG,!0),n=new Pm,Zt(n,IG,!0),Xa(n,d),xa(n,m)}function B6n(t,e,n,r){var s,o,h,d;s=wle(t,e,n),o=wle(t,n,e),h=u(tr(t.c,e),118),d=u(tr(t.c,n),118),s1)for(e=km((n=new H2,++t.b,n),t.d),d=Dr(o,0);d.b!=d.d.c;)h=u(Ar(d),125),Hf(Of(If(Nf(Mf(new tf,1),0),e),h))}function $6n(t,e,n){var r,s,o,h,d;for(n.Ug("Breaking Point Removing",1),t.a=u(X(e,(De(),zg)),223),o=new G(e.b);o.a>16!=11&&e){if(_7(t,e))throw at(new zn(oA+vkt(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Axt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,10,r)),r=mvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,11,e,e))}function z6n(t){var e,n,r,s;for(r=new sw(new mr(t.b).a);r.b;)n=Um(r),s=u(n.ld(),12),e=u(n.md(),10),Zt(e,(oe(),Li),s),Zt(s,ml,e),Zt(s,eP,(Pn(),!0)),Xs(s,u(X(e,Dc),64)),X(e,Dc),Zt(s.i,(De(),bs),(ka(),YT)),u(X(Pa(s.i),lu),21).Fc((Co(),DT))}function q6n(t,e,n){var r,s,o,h,d,m;if(o=0,h=0,t.c)for(m=new G(t.d.i.j);m.ao.a?-1:s.am){for(T=t.d,t.d=Vt(MIt,jTt,66,2*m+4,0,1),o=0;o=9223372036854776e3?(WE(),a9t):(s=!1,t<0&&(s=!0,t=-t),r=0,t>=bw&&(r=Ys(t/bw),t-=r*bw),n=0,t>=Sk&&(n=Ys(t/Sk),t-=n*Sk),e=Ys(t),o=Eu(e,n,r),s&&kat(o),o)}function Z6n(t){var e,n,r,s,o;if(o=new fe,Cu(t.b,new E0(o)),t.b.c.length=0,o.c.length!=0){for(e=(vn(0,o.c.length),u(o.c[0],82)),n=1,r=o.c.length;n=-e&&r==e?new Ws(he(n-1),he(r)):new Ws(he(n),he(r-1))}function Bde(){return Za(),lt(ut(h_n,1),te,81,0,[KCt,VCt,B5,gft,fSt,nG,fG,E3,lSt,eSt,cSt,k3,hSt,JCt,dSt,RCt,aG,pft,tG,uG,pSt,cG,jCt,uSt,bSt,lG,gSt,eG,YCt,aSt,sSt,dG,qCt,ZU,iG,zCt,vT,rSt,ZCt,oSt,CA,UCt,HCt,iSt,tSt,sG,hG,$Ct,oG,nSt,rG,XCt,WCt,WN,JU,QCt,GCt])}function nkn(t,e,n){t.d=0,t.b=0,e.k==(Un(),uu)&&n.k==uu&&u(X(e,(oe(),Li)),10)==u(X(n,Li),10)&&(qst(e).j==(ve(),Hn)?Tde(t,e,n):Tde(t,n,e)),e.k==uu&&n.k==fa?qst(e).j==(ve(),Hn)?t.d=1:t.b=1:n.k==uu&&e.k==fa&&(qst(n).j==(ve(),Hn)?t.b=1:t.d=1),$mn(t,e,n)}function rkn(t){var e,n,r,s,o,h,d,m,k,T,A;return A=Jxt(t),e=t.a,m=e!=null,m&&ME(A,"category",t.a),s=NM(new cr(t.d)),h=!s,h&&(k=new cp,_1(A,"knownOptions",k),n=new qGt(k),Fa(new cr(t.d),n)),o=NM(t.g),d=!o,d&&(T=new cp,_1(A,"supportedFeatures",T),r=new HGt(T),Fa(t.g,r)),A}function ikn(t){var e,n,r,s,o,h,d,m,k;for(r=!1,e=336,n=0,o=new CZt(t.length),d=t,m=0,k=d.length;m>16!=7&&e){if(_7(t,e))throw at(new zn(oA+Hfe(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Txt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=u(e,54).Rh(t,1,zP,r)),r=hyt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,7,e,e))}function Rde(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=3&&e){if(_7(t,e))throw at(new zn(oA+zue(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Sxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=u(e,54).Rh(t,0,HP,r)),r=fyt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,e,e))}function Zot(t,e){F7();var n,r,s,o,h,d,m,k,T;return e.d>t.d&&(d=t,t=e,e=d),e.d<63?Gkn(t,e):(h=(t.d&-2)<<4,k=M3t(t,h),T=M3t(e,h),r=vct(t,nk(k,h)),s=vct(e,nk(T,h)),m=Zot(k,T),n=Zot(r,s),o=Zot(vct(k,r),vct(s,T)),o=Sct(Sct(o,m),n),o=nk(o,h),m=nk(m,h<<1),Sct(Sct(m,o),n))}function Bp(){Bp=V,b1t=new F4(q2e,0),TAt=new F4("LONGEST_PATH",1),CAt=new F4("LONGEST_PATH_SOURCE",2),p1t=new F4("COFFMAN_GRAHAM",3),EAt=new F4(qut,4),SAt=new F4("STRETCH_WIDTH",5),XG=new F4("MIN_WIDTH",6),RT=new F4("BF_MODEL_ORDER",7),jT=new F4("DF_MODEL_ORDER",8)}function akn(t,e,n){var r,s,o,h,d;for(h=c_(t,n),d=Vt(V0,jp,10,e.length,0,1),r=0,o=h.Kc();o.Ob();)s=u(o.Pb(),12),Ie(Me(X(s,(oe(),eP))))&&(d[r++]=u(X(s,ml),10));if(r=0;o+=n?1:-1)h=h|e.c.lg(m,o,n,r&&!Ie(Me(X(e.j,(oe(),i2))))&&!Ie(Me(X(e.j,(oe(),U5))))),h=h|e.q.ug(m,o,n),h=h|C0e(t,m[o],n,r);return qs(t.c,e),h}function nV(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(T=rie(t.j),A=0,P=T.length;A1&&(t.a=!0),jun(u(n.b,68),ki(Oa(u(e.b,68).c),qd(ia(Oa(u(n.b,68).a),u(e.b,68).a),s))),lre(t,e),jde(t,n)}function $de(t){var e,n,r,s,o,h,d;for(o=new G(t.a.a);o.a0&&o>0?h.p=e++:r>0?h.p=n++:o>0?h.p=s++:h.p=n++}mn(),Ds(t.j,new R8)}function hkn(t){var e,n;n=null,e=u(Oe(t.g,0),18);do{if(n=e.d.i,qi(n,(oe(),gf)))return u(X(n,gf),12).i;if(n.k!=(Un(),xs)&&Mr(new rr(sr(_s(n).a.Kc(),new z))))e=u(dr(new rr(sr(_s(n).a.Kc(),new z))),18);else if(n.k!=xs)return null}while(n&&n.k!=(Un(),xs));return n}function fkn(t,e){var n,r,s,o,h,d,m,k,T;for(d=e.j,h=e.g,m=u(Oe(d,d.c.length-1),113),T=(vn(0,d.c.length),u(d.c[0],113)),k=yot(t,h,m,T),o=1;ok&&(m=n,T=s,k=r);e.a=T,e.c=m}function dkn(t,e,n){var r,s,o,h,d,m,k;for(k=new pp(new SUt(t)),h=lt(ut(w4e,1),f2e,12,0,[e,n]),d=0,m=h.length;dm-t.b&&dm-t.a&&d0?o.a?(d=o.b.Mf().a,n>d&&(s=(n-d)/2,o.d.b=s,o.d.c=s)):o.d.c=t.s+n:IS(t.u)&&(r=Zxt(o.b),r.c<0&&(o.d.b=-r.c),r.c+r.b>o.b.Mf().a&&(o.d.c=r.c+r.b-o.b.Mf().a))}function Dkn(t,e){var n,r,s,o,h;h=new fe,n=e;do o=u(tr(t.b,n),131),o.B=n.c,o.D=n.d,In(h.c,o),n=u(tr(t.k,n),18);while(n);return r=(vn(0,h.c.length),u(h.c[0],131)),r.j=!0,r.A=u(r.d.a.ec().Kc().Pb(),18).c.i,s=u(Oe(h,h.c.length-1),131),s.q=!0,s.C=u(s.d.a.ec().Kc().Pb(),18).d.i,h}function Mkn(t){var e,n;if(e=u(t.a,17).a,n=u(t.b,17).a,e>=0){if(e==n)return new Ws(he(-e-1),he(-e-1));if(e==-n)return new Ws(he(-e),he(n+1))}return b.Math.abs(e)>b.Math.abs(n)?e<0?new Ws(he(-e),he(n)):new Ws(he(-e),he(n+1)):new Ws(he(e+1),he(n))}function Ikn(t){var e,n;n=u(X(t,(De(),Iu)),171),e=u(X(t,(oe(),Aw)),311),n==(Rh(),s2)?(Zt(t,Iu,rP),Zt(t,Aw,(Cg(),H5))):n==S3?(Zt(t,Iu,rP),Zt(t,Aw,(Cg(),qk))):e==(Cg(),H5)?(Zt(t,Iu,s2),Zt(t,Aw,ZN)):e==qk&&(Zt(t,Iu,S3),Zt(t,Aw,ZN))}function rV(){rV=V,fP=new pZ,Dke=ri(new Fs,(Ua(),Qc),(Za(),tG)),Oke=el(ri(new Fs,Qc,cG),Zo,oG),Nke=Yd(Yd(nS(el(ri(new Fs,Wf,fG),Zo,hG),cu),lG),dG),Mke=el(ri(ri(ri(new Fs,H0,nG),cu,iG),cu,vT),Zo,rG),Ike=el(ri(ri(new Fs,cu,vT),cu,ZU),Zo,JU)}function D_(){D_=V,Bke=ri(el(new Fs,(Ua(),Zo),(Za(),XCt)),Qc,tG),zke=Yd(Yd(nS(el(ri(new Fs,Wf,fG),Zo,hG),cu),lG),dG),Rke=el(ri(ri(ri(new Fs,H0,nG),cu,iG),cu,vT),Zo,rG),$ke=ri(ri(new Fs,Qc,cG),Zo,oG),jke=el(ri(ri(new Fs,cu,vT),cu,ZU),Zo,JU)}function Okn(t,e,n,r,s){var o,h;(!go(e)&&e.c.i.c==e.d.i.c||!qoe(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])),n))&&!go(e)&&(e.c==s?CE(e.a,0,new io(n)):Zr(e.a,new io(n)),r&&!x1(t.a,n)&&(h=u(X(e,(De(),Vo)),75),h||(h=new Qu,Zt(e,Vo,h)),o=new io(n),hs(h,o,h.c.b,h.c),qs(t.a,o)))}function Hde(t,e){var n,r,s,o;for(o=qr(Ja(B0,L0(qr(Ja(e==null?0:$i(e),R0)),15))),n=o&t.b.length-1,s=null,r=t.b[n];r;s=r,r=r.a)if(r.d==o&&Ud(r.i,e))return s?s.a=r.a:t.b[n]=r.a,vWt(u(nf(r.c),604),u(nf(r.f),604)),LM(u(nf(r.b),227),u(nf(r.e),227)),--t.f,++t.e,!0;return!1}function Nkn(t){var e,n;for(n=new rr(sr(ua(t).a.Kc(),new z));Mr(n);)if(e=u(dr(n),18),e.c.i.k!=(Un(),Vc))throw at(new fp(zut+EO(t)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function Pkn(t,e,n){var r,s,o,h,d,m,k;if(s=Gue(t.Db&254),s==0)t.Eb=n;else{if(s==1)d=Vt(aa,Ln,1,2,5,1),o=vot(t,e),o==0?(d[0]=n,d[1]=t.Eb):(d[0]=t.Eb,d[1]=n);else for(d=Vt(aa,Ln,1,s+1,5,1),h=nw(t.Eb),r=2,m=0,k=0;r<=128;r<<=1)r==e?d[k++]=n:t.Db&r&&(d[k++]=h[m++]);t.Eb=d}t.Db|=e}function Vde(t,e,n){var r,s,o,h;for(this.b=new fe,s=0,r=0,h=new G(t);h.a0&&(o=u(Oe(this.b,0),176),s+=o.o,r+=o.p),s*=2,r*=2,e>1?s=Ys(b.Math.ceil(s*e)):r=Ys(b.Math.ceil(r/e)),this.a=new U5t(s,r)}function Ude(t,e,n,r,s,o){var h,d,m,k,T,A,P,$,U,J,tt,ht;for(T=r,e.j&&e.o?($=u(tr(t.f,e.A),60),J=$.d.c+$.d.b,--T):J=e.a.c+e.a.b,A=s,n.q&&n.o?($=u(tr(t.f,n.C),60),k=$.d.c,++A):k=n.a.c,tt=k-J,m=b.Math.max(2,A-T),d=tt/m,U=J+d,P=T;P=0;h+=s?1:-1){for(d=e[h],m=r==(ve(),Jn)?s?gc(d,r):Bh(gc(d,r)):s?Bh(gc(d,r)):gc(d,r),o&&(t.c[d.p]=m.gc()),A=m.Kc();A.Ob();)T=u(A.Pb(),12),t.d[T.p]=k++;Hs(n,m)}}function Kde(t,e,n){var r,s,o,h,d,m,k,T;for(o=Rt(Ht(t.b.Kc().Pb())),k=Rt(Ht(Ipn(e.b))),r=qd(Oa(t.a),k-n),s=qd(Oa(e.a),n-o),T=ki(r,s),qd(T,1/(k-o)),this.a=T,this.b=new fe,d=!0,h=t.b.Kc(),h.Pb();h.Ob();)m=Rt(Ht(h.Pb())),d&&m-n>xlt&&(this.b.Fc(n),d=!1),this.b.Fc(m);d&&this.b.Fc(n)}function Fkn(t){var e,n,r,s;if(tEn(t,t.n),t.d.c.length>0){for(KC(t.c);z6t(t,u(et(new G(t.e.a)),125))>5,e&=31,r>=t.d)return t.e<0?(Xd(),Zve):(Xd(),yA);if(o=t.d-r,s=Vt(Fr,ii,28,o+1,15,1),_4n(s,o,t.a,r,e),t.e<0){for(n=0;n0&&t.a[n]<<32-e){for(n=0;n=0?!1:(n=y5((il(),ja),s,e),n?(r=n.Ik(),(r>1||r==-1)&&Om($o(ja,n))!=3):!0)):!1}function $kn(t,e,n,r){var s,o,h,d,m;return d=Jo(u(Dt((!e.b&&(e.b=new kn(vr,e,4,7)),e.b),0),84)),m=Jo(u(Dt((!e.c&&(e.c=new kn(vr,e,5,8)),e.c),0),84)),Ji(d)==Ji(m)||qy(m,d)?null:(h=AI(e),h==n?r:(o=u(tr(t.a,h),10),o&&(s=o.e,s)?s:null))}function zkn(t,e,n){var r,s,o,h,d;for(n.Ug("Longest path to source layering",1),t.a=e,d=t.a.a,t.b=Vt(Fr,ii,28,d.c.length,15,1),r=0,h=new G(d);h.a0&&(n[0]+=t.d,h-=n[0]),n[2]>0&&(n[2]+=t.d,h-=n[2]),o=b.Math.max(0,h),n[1]=b.Math.max(n[1],h),O3t(t,xu,s.c+r.b+n[0]-(n[1]-h)/2,n),e==xu&&(t.c.b=o,t.c.c=s.c+r.b+(o-h)/2)}function r0e(){this.c=Vt(ma,No,28,(ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])).length,15,1),this.b=Vt(ma,No,28,lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn]).length,15,1),this.a=Vt(ma,No,28,lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn]).length,15,1),Fwt(this.c,Zi),Fwt(this.b,Vs),Fwt(this.a,Vs)}function iu(t,e,n){var r,s,o,h;if(e<=n?(s=e,o=n):(s=n,o=e),r=0,t.b==null)t.b=Vt(Fr,ii,28,2,15,1),t.b[0]=s,t.b[1]=o,t.c=!0;else{if(r=t.b.length,t.b[r-1]+1==s){t.b[r-1]=o;return}h=Vt(Fr,ii,28,r+2,15,1),Xc(t.b,0,h,0,r),t.b=h,t.b[r-1]>=s&&(t.c=!1,t.a=!1),t.b[r++]=s,t.b[r]=o,t.c||g5(t)}}function Kkn(t,e,n){var r,s,o,h,d,m,k;for(k=e.d,t.a=new wu(k.c.length),t.c=new _r,d=new G(k);d.a=0?t.Lh(k,!1,!0):tv(t,n,!1),61));t:for(o=A.Kc();o.Ob();){for(s=u(o.Pb(),58),T=0;T1;)r3(s,s.i-1);return r}function s0e(t,e){var n,r,s,o,h,d,m;for(n=new K4,o=new G(t.b);o.at.d[h.p]&&(n+=C3t(t.b,o),Ob(t.a,he(o)));for(;!WC(t.a);)i4t(t.b,u(K6(t.a),17).a)}return n}function Zkn(t){var e,n,r,s,o,h,d,m,k;for(t.a=new wvt,k=0,s=0,r=new G(t.i.b);r.ad.d&&(T=d.d+d.a+k));n.c.d=T,e.a.zc(n,e),m=b.Math.max(m,n.c.d+n.c.a)}return m}function Co(){Co=V,CG=new ky("COMMENTS",0),Uh=new ky("EXTERNAL_PORTS",1),LA=new ky("HYPEREDGES",2),SG=new ky("HYPERNODES",3),DT=new ky("NON_FREE_PORTS",4),q5=new ky("NORTH_SOUTH_PORTS",5),DA=new ky(D2e,6),AT=new ky("CENTER_LABELS",7),LT=new ky("END_LABELS",8),_G=new ky("PARTITIONS",9)}function e8n(t,e,n,r,s){return r<0?(r=d5(t,s,lt(ut(Pe,1),ue,2,6,[qct,Hct,Vct,Uct,Tk,Gct,Kct,Wct,Yct,Xct,Qct,Jct]),e),r<0&&(r=d5(t,s,lt(ut(Pe,1),ue,2,6,["Jan","Feb","Mar","Apr",Tk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function n8n(t,e,n,r,s){return r<0?(r=d5(t,s,lt(ut(Pe,1),ue,2,6,[qct,Hct,Vct,Uct,Tk,Gct,Kct,Wct,Yct,Xct,Qct,Jct]),e),r<0&&(r=d5(t,s,lt(ut(Pe,1),ue,2,6,["Jan","Feb","Mar","Apr",Tk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function r8n(t,e,n,r,s,o){var h,d,m,k;if(d=32,r<0){if(e[0]>=t.length||(d=Va(t,e[0]),d!=43&&d!=45)||(++e[0],r=KH(t,e),r<0))return!1;d==45&&(r=-r)}return d==32&&e[0]-n==2&&s.b==2&&(m=new x$,k=m.q.getFullYear()-Wb+Wb-80,h=k%100,o.a=r==h,r+=(k/100|0)*100+(r=0?zb(t):FS(zb(Cp(t)))),xA[e]=J$(Rf(t,e),0)?zb(Rf(t,e)):FS(zb(Cp(Rf(t,e)))),t=Ja(t,5);for(;e=k&&(m=r);m&&(T=b.Math.max(T,m.a.o.a)),T>P&&(A=k,P=T)}return A}function u8n(t){var e,n,r,s,o,h,d;for(o=new pp(u(Hr(new kh),50)),d=Vs,n=new G(t.d);n.anwe?Ds(m,t.b):r<=nwe&&r>rwe?Ds(m,t.d):r<=rwe&&r>iwe?Ds(m,t.c):r<=iwe&&Ds(m,t.a),o=l0e(t,m,o);return s}function h0e(t,e,n,r){var s,o,h,d,m,k;for(s=(r.c+r.a)/2,nh(e.j),Zr(e.j,s),nh(n.e),Zr(n.e,s),k=new IWt,d=new G(t.f);d.a1,d&&(r=new ae(s,n.b),Zr(e.a,r)),XS(e.a,lt(ut(la,1),ue,8,0,[P,A]))}function lkt(t,e,n){var r,s;for(e=48;n--)ML[n]=n-48<<24>>24;for(r=70;r>=65;r--)ML[r]=r-65+10<<24>>24;for(s=102;s>=97;s--)ML[s]=s-97+10<<24>>24;for(o=0;o<10;o++)tW[o]=48+o&js;for(t=10;t<=15;t++)tW[t]=65+t-10&js}function d8n(t,e){e.Ug("Process graph bounds",1),Zt(t,(ji(),R1t),KM(hat(Ny(new ln(null,new gn(t.b,16)),new zZ)))),Zt(t,j1t,KM(hat(Ny(new ln(null,new gn(t.b,16)),new qZ)))),Zt(t,pLt,KM(lat(Ny(new ln(null,new gn(t.b,16)),new HZ)))),Zt(t,bLt,KM(lat(Ny(new ln(null,new gn(t.b,16)),new VZ)))),e.Vg()}function g8n(t){var e,n,r,s,o;s=u(X(t,(De(),Ow)),21),o=u(X(t,GG),21),n=new ae(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),e=new io(n),s.Hc((Yl(),z3))&&(r=u(X(t,IT),8),o.Hc((Ml(),XT))&&(r.a<=0&&(r.a=20),r.b<=0&&(r.b=20)),e.a=b.Math.max(n.a,r.a),e.b=b.Math.max(n.b,r.b)),Ie(Me(X(t,c1t)))||V7n(t,n,e)}function p8n(t,e){var n,r,s,o;for(o=gc(e,(ve(),Er)).Kc();o.Ob();)r=u(o.Pb(),12),n=u(X(r,(oe(),ml)),10),n&&Hf(Of(If(Nf(Mf(new tf,0),.1),t.i[e.p].d),t.i[n.p].a));for(s=gc(e,Hn).Kc();s.Ob();)r=u(s.Pb(),12),n=u(X(r,(oe(),ml)),10),n&&Hf(Of(If(Nf(Mf(new tf,0),.1),t.i[n.p].d),t.i[e.p].a))}function ect(t){var e,n,r,s,o,h;if(!t.c){if(h=new Oc,e=_L,o=e.a.zc(t,e),o==null){for(r=new Zn(Wc(t));r.e!=r.i.gc();)n=u(ar(r),89),s=lV(n),Lt(s,90)&&gs(h,ect(u(s,29))),Or(h,n);e.a.Bc(t)!=null,e.a.gc()==0}lwn(h),Uy(h),t.c=new $4((u(Dt(Qt((Lb(),Fn).o),15),19),h.i),h.g),_l(t).b&=-33}return t.c}function fkt(t){var e;if(t.c!=10)throw at(new Yr(Qr((Ur(),pU))));switch(e=t.a,e){case 110:e=10;break;case 114:e=13;break;case 116:e=9;break;case 92:case 124:case 46:case 94:case 45:case 63:case 42:case 43:case 123:case 125:case 40:case 41:case 91:case 93:break;default:throw at(new Yr(Qr((Ur(),Hh))))}return e}function p0e(t){var e,n,r,s,o;if(t.l==0&&t.m==0&&t.h==0)return"0";if(t.h==aN&&t.m==0&&t.l==0)return"-9223372036854775808";if(t.h>>19)return"-"+p0e(h7(t));for(n=t,r="";!(n.l==0&&n.m==0&&n.h==0);){if(s=Mst(EV),n=Gkt(n,s,!0),e=""+RWt(Zb),!(n.l==0&&n.m==0&&n.h==0))for(o=9-e.length;o>0;o--)e="0"+e;r=e+r}return r}function b8n(t){var e,n,r,s,o,h,d;for(e=!1,n=0,s=new G(t.d.b);s.a=t.a||!Yxt(e,n))return-1;if(HE(u(r.Kb(e),20)))return 1;for(s=0,h=u(r.Kb(e),20).Kc();h.Ob();)if(o=u(h.Pb(),18),m=o.c.i==e?o.d.i:o.c.i,d=dkt(t,m,n,r),d==-1||(s=b.Math.max(s,d),s>t.c-1))return-1;return s+1}function b0e(t,e){var n,r,s,o,h,d;if($t(e)===$t(t))return!0;if(!Lt(e,15)||(r=u(e,15),d=t.gc(),r.gc()!=d))return!1;if(h=r.Kc(),t.Yi()){for(n=0;n0){if(t._j(),e!=null){for(o=0;o>24;case 97:case 98:case 99:case 100:case 101:case 102:return t-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return t-65+10<<24>>24;default:throw at(new jd("Invalid hexadecimal"))}}function aV(){aV=V,Q9t=new P4("SPIRAL",0),K9t=new P4("LINE_BY_LINE",1),W9t=new P4("MANHATTAN",2),G9t=new P4("JITTER",3),Hht=new P4("QUADRANTS_LINE_BY_LINE",4),X9t=new P4("QUADRANTS_MANHATTAN",5),Y9t=new P4("QUADRANTS_JITTER",6),U9t=new P4("COMBINE_LINE_BY_LINE_MANHATTAN",7),V9t=new P4("COMBINE_JITTER_MANHATTAN",8)}function m0e(t,e,n,r){var s,o,h,d,m,k;for(m=Sot(t,n),k=Sot(e,n),s=!1;m&&k&&(r||dvn(m,k,n));)h=Sot(m,n),d=Sot(k,n),HI(e),HI(t),o=m.c,_ct(m,!1),_ct(k,!1),n?(Xy(e,k.p,o),e.p=k.p,Xy(t,m.p+1,o),t.p=m.p):(Xy(t,m.p,o),t.p=m.p,Xy(e,k.p+1,o),e.p=k.p),Aa(m,null),Aa(k,null),m=h,k=d,s=!0;return s}function v0e(t){switch(t.g){case 0:return new Wet;case 1:return new NC;case 3:return new GYt;case 4:return new zJ;case 5:return new yZt;case 6:return new yM;case 2:return new OC;case 7:return new Dj;case 8:return new vM;default:throw at(new zn("No implementation is available for the layerer "+(t.f!=null?t.f:""+t.g)))}}function k8n(t,e,n,r){var s,o,h,d,m;for(s=!1,o=!1,d=new G(r.j);d.a=e.length)throw at(new Bo("Greedy SwitchDecider: Free layer not in graph."));this.c=e[t],this.e=new dI(r),aat(this.e,this.c,(ve(),Gn)),this.i=new dI(r),aat(this.i,this.c,Jn),this.f=new Bte(this.c),this.a=!o&&s.i&&!s.s&&this.c[0].k==(Un(),Ms),this.a&&F4n(this,t,e.length)}function x0e(t,e){var n,r,s,o,h,d;o=!t.B.Hc((Ml(),jP)),h=t.B.Hc(Kdt),t.a=new ale(h,o,t.c),t.n&&Gyt(t.a.n,t.n),Jnt(t.g,(A1(),xu),t.a),e||(r=new p_(1,o,t.c),r.n.a=t.k,W6(t.p,(ve(),Hn),r),s=new p_(1,o,t.c),s.n.d=t.k,W6(t.p,Er,s),d=new p_(0,o,t.c),d.n.c=t.k,W6(t.p,Gn,d),n=new p_(0,o,t.c),n.n.b=t.k,W6(t.p,Jn,n))}function T8n(t){var e,n,r;switch(e=u(X(t.d,(De(),zg)),223),e.g){case 2:n=fSn(t);break;case 3:n=(r=new fe,ms(_i(Wo(fc(fc(new ln(null,new gn(t.d.b,16)),new dJ),new gJ),new pJ),new rC),new nUt(r)),r);break;default:throw at(new Ro("Compaction not supported for "+e+" edges."))}NTn(t,n),Fa(new cr(t.g),new tUt(t))}function C8n(t,e){var n,r,s,o,h,d,m;if(e.Ug("Process directions",1),n=u(X(t,(Cc(),Mv)),88),n!=(Rs(),kd))for(s=Dr(t.b,0);s.b!=s.d.c;){switch(r=u(Ar(s),39),d=u(X(r,(ji(),pP)),17).a,m=u(X(r,bP),17).a,n.g){case 4:m*=-1;break;case 1:o=d,d=m,m=o;break;case 2:h=d,d=-m,m=h}Zt(r,pP,he(d)),Zt(r,bP,he(m))}e.Vg()}function S8n(t,e){var n;return n=new As,e&&Qo(n,u(tr(t.a,zP),96)),Lt(e,422)&&Qo(n,u(tr(t.a,qP),96)),Lt(e,366)?(Qo(n,u(tr(t.a,Po),96)),n):(Lt(e,84)&&Qo(n,u(tr(t.a,vr),96)),Lt(e,207)?(Qo(n,u(tr(t.a,bi),96)),n):Lt(e,193)?(Qo(n,u(tr(t.a,kl),96)),n):(Lt(e,326)&&Qo(n,u(tr(t.a,Ts),96)),n))}function _8n(t){var e,n,r,s,o,h,d,m;for(m=new tse,d=new G(t.a);d.a0&&e=0)return!1;if(e.p=n.b,ge(n.e,e),s==(Un(),fa)||s==uu){for(h=new G(e.j);h.at.d[d.p]&&(n+=C3t(t.b,o),Ob(t.a,he(o)))):++h;for(n+=t.b.d*h;!WC(t.a);)i4t(t.b,u(K6(t.a),17).a)}return n}function M0e(t){var e,n,r,s,o,h;return o=0,e=of(t),e.kk()&&(o|=4),t.Bb&ol&&(o|=2),Lt(t,102)?(n=u(t,19),s=yo(n),n.Bb&Fc&&(o|=32),s&&(fr(Py(s)),o|=8,h=s.t,(h>1||h==-1)&&(o|=16),s.Bb&Fc&&(o|=64)),n.Bb&po&&(o|=b3),o|=Uf):Lt(e,468)?o|=512:(r=e.kk(),r&&r.i&1&&(o|=256)),t.Bb&512&&(o|=128),o}function j8n(t,e){var n;return t.f==a0t?(n=Om($o((il(),ja),e)),t.e?n==4&&e!=(vk(),s8)&&e!=(vk(),i8)&&e!=(vk(),o0t)&&e!=(vk(),c0t):n==2):t.d&&(t.d.Hc(e)||t.d.Hc(tk($o((il(),ja),e)))||t.d.Hc(y5((il(),ja),t.b,e)))?!0:t.f&&tkt((il(),t.f),TI($o(ja,e)))?(n=Om($o(ja,e)),t.e?n==4:n==2):!1}function $8n(t){var e,n,r,s,o,h,d,m,k,T,A,P,$;for(P=-1,$=0,k=t,T=0,A=k.length;T0&&++$;++P}return $}function z8n(t,e,n,r){var s,o,h,d,m,k,T,A;return h=u(ne(n,(ai(),Jk)),8),m=h.a,T=h.b+t,s=b.Math.atan2(T,m),s<0&&(s+=xw),s+=e,s>xw&&(s-=xw),d=u(ne(r,Jk),8),k=d.a,A=d.b+t,o=b.Math.atan2(A,k),o<0&&(o+=xw),o+=e,o>xw&&(o-=xw),Z1(),$f(1e-10),b.Math.abs(s-o)<=1e-10||s==o||isNaN(s)&&isNaN(o)?0:so?1:ym(isNaN(s),isNaN(o))}function ict(t){var e,n,r,s,o,h,d;for(d=new _r,r=new G(t.a.b);r.a=t.o)throw at(new Y2t);d=e>>5,h=e&31,o=Rf(1,qr(Rf(h,1))),s?t.n[n][d]=T1(t.n[n][d],o):t.n[n][d]=sa(t.n[n][d],Gvt(o)),o=Rf(o,1),r?t.n[n][d]=T1(t.n[n][d],o):t.n[n][d]=sa(t.n[n][d],Gvt(o))}catch(m){throw m=es(m),Lt(m,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(m)}}function V8n(t,e,n,r){var s,o,h,d,m,k,T,A,P;for(P=new pp(new CUt(t)),d=lt(ut(V0,1),jp,10,0,[e,n]),m=0,k=d.length;m0&&(r=(!t.n&&(t.n=new Jt(Po,t,1,7)),u(Dt(t.n,0),135)).a,!r||ni(ni((e.a+=' "',e),r),'"'))),ni(pm(ni(pm(ni(pm(ni(pm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function I0e(t){var e,n,r;return t.Db&64?Bot(t):(e=new eh(xTt),n=t.k,n?ni(ni((e.a+=' "',e),n),'"'):(!t.n&&(t.n=new Jt(Po,t,1,7)),t.n.i>0&&(r=(!t.n&&(t.n=new Jt(Po,t,1,7)),u(Dt(t.n,0),135)).a,!r||ni(ni((e.a+=' "',e),r),'"'))),ni(pm(ni(pm(ni(pm(ni(pm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function K8n(t,e){var n,r,s,o,h;for(e==(i_(),_1t)&&IO(u(Ai(t.a,(Qy(),XN)),15)),s=u(Ai(t.a,(Qy(),XN)),15).Kc();s.Ob();)switch(r=u(s.Pb(),105),n=u(Oe(r.j,0),113).d.j,o=new fl(r.j),Ds(o,new cR),e.g){case 2:Mot(t,o,n,(Vm(),r2),1);break;case 1:case 0:h=O6n(o),Mot(t,new xp(o,0,h),n,(Vm(),r2),0),Mot(t,new xp(o,h,o.c.length),n,r2,1)}}function act(t,e){var n,r,s,o,h,d,m;if(e==null||e.length==0)return null;if(s=u(nu(t.a,e),143),!s){for(r=(d=new si(t.b).a.vc().Kc(),new Qi(d));r.a.Ob();)if(n=(o=u(r.a.Pb(),44),u(o.md(),143)),h=n.c,m=e.length,hn(h.substr(h.length-m,m),e)&&(e.length==h.length||Va(h,h.length-e.length-1)==46)){if(s)return null;s=n}s&&jo(t.a,e,s)}return s}function W8n(t,e){var n,r,s,o;return n=new Gi,r=u(nc(Wo(new ln(null,new gn(t.f,16)),n),jy(new we,new Fi,new Nn,new Bn,lt(ut(Ho,1),te,108,0,[(bl(),w3),sc]))),21),s=r.gc(),r=u(nc(Wo(new ln(null,new gn(e.f,16)),n),jy(new we,new Fi,new Nn,new Bn,lt(ut(Ho,1),te,108,0,[w3,sc]))),21),o=r.gc(),ss.p?(Xs(o,Er),o.d&&(d=o.o.b,e=o.a.b,o.a.b=d-e)):o.j==Er&&s.p>t.p&&(Xs(o,Hn),o.d&&(d=o.o.b,e=o.a.b,o.a.b=-(d-e)));break}return s}function HO(t,e,n,r,s){var o,h,d,m,k,T,A;if(!(Lt(e,207)||Lt(e,366)||Lt(e,193)))throw at(new zn("Method only works for ElkNode-, ElkLabel and ElkPort-objects."));return h=t.a/2,m=e.i+r-h,T=e.j+s-h,k=m+e.g+t.a,A=T+e.f+t.a,o=new Qu,Zr(o,new ae(m,T)),Zr(o,new ae(m,A)),Zr(o,new ae(k,A)),Zr(o,new ae(k,T)),d=new Wot(o),Qo(d,e),n&&hi(t.b,e,d),d}function B7(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(o=new ae(e,n),T=new G(t.a);T.a1,d&&(r=new ae(s,n.b),Zr(e.a,r)),XS(e.a,lt(ut(la,1),ue,8,0,[P,A]))}function cf(){cf=V,ZG=new Ey(r0,0),cP=new Ey("NIKOLOV",1),uP=new Ey("NIKOLOV_PIXEL",2),OAt=new Ey("NIKOLOV_IMPROVED",3),NAt=new Ey("NIKOLOV_IMPROVED_PIXEL",4),IAt=new Ey("DUMMYNODE_PERCENTAGE",5),PAt=new Ey("NODECOUNT_PERCENTAGE",6),tK=new Ey("NO_BOUNDARY",7),Lv=new Ey("MODEL_ORDER_LEFT_TO_RIGHT",8),N3=new Ey("MODEL_ORDER_RIGHT_TO_LEFT",9)}function iEn(t){var e,n,r,s,o;for(r=t.length,e=new YC,o=0;o=40,h&&s7n(t),gTn(t),Fkn(t),n=Xue(t),r=0;n&&r0&&Zr(t.f,o)):(t.c[h]-=k+1,t.c[h]<=0&&t.a[h]>0&&Zr(t.e,o))))}function U0e(t,e,n,r){var s,o,h,d,m,k,T;for(m=new ae(n,r),ia(m,u(X(e,(ji(),zT)),8)),T=Dr(e.b,0);T.b!=T.d.c;)k=u(Ar(T),39),ki(k.e,m),Zr(t.b,k);for(d=u(nc(r3t(new ln(null,new gn(e.a,16))),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15).Kc();d.Ob();){for(h=u(d.Pb(),65),o=Dr(h.a,0);o.b!=o.d.c;)s=u(Ar(o),8),s.a+=m.a,s.b+=m.b;Zr(t.a,h)}}function Akt(t,e){var n,r,s,o;if(0<(Lt(t,16)?u(t,16).gc():xg(t.Kc()))){if(s=e,1=0&&mo*2?(T=new Fq(A),k=tl(h)/Gl(h),m=Mct(T,e,new C6,n,r,s,k),ki(k1(T.e),m),A.c.length=0,o=0,In(A.c,T),In(A.c,h),o=tl(T)*Gl(T)+tl(h)*Gl(h)):(In(A.c,h),o+=tl(h)*Gl(h));return A}function K0e(t,e){var n,r,s,o,h,d;if(d=u(X(e,(De(),bs)),101),d==(ka(),Y0)||d==hu)for(s=new ae(e.f.a+e.d.b+e.d.c,e.f.b+e.d.d+e.d.a).b,h=new G(t.a);h.an?e:n;k<=A;++k)k==n?d=r++:(o=s[k],T=U.am(o.Lk()),k==e&&(m=k==A&&!T?r-1:r),T&&++r);return P=u(f_(t,e,n),76),d!=m&&hE(t,new jI(t.e,7,h,he(d),$.md(),m)),P}}else return u(Uot(t,e,n),76);return u(f_(t,e,n),76)}function TEn(t,e){var n,r,s,o,h,d,m;for(e.Ug("Port order processing",1),m=u(X(t,(De(),hAt)),430),r=new G(t.b);r.a=0&&(d=mvn(t,h),!(d&&(k<22?m.l|=1<>>1,h.m=T>>>1|(A&1)<<21,h.l=P>>>1|(T&1)<<21,--k;return n&&kat(m),o&&(r?(Zb=h7(t),s&&(Zb=Mce(Zb,(WE(),o9t)))):Zb=Eu(t.l,t.m,t.h)),m}function _En(t,e){var n,r,s,o,h,d,m,k,T,A;for(k=t.e[e.c.p][e.p]+1,m=e.c.a.c.length+1,d=new G(t.a);d.a0&&(qn(0,t.length),t.charCodeAt(0)==45||(qn(0,t.length),t.charCodeAt(0)==43))?1:0,r=h;rn)throw at(new jd(av+t+'"'));return d}function AEn(t){var e,n,r,s,o,h,d;for(h=new Ki,o=new G(t.a);o.a1)&&e==1&&u(t.a[t.b],10).k==(Un(),Vc)?xk(u(t.a[t.b],10),(uh(),K0)):r&&(!n||(t.c-t.b&t.a.length-1)>1)&&e==1&&u(t.a[t.c-1&t.a.length-1],10).k==(Un(),Vc)?xk(u(t.a[t.c-1&t.a.length-1],10),(uh(),h2)):(t.c-t.b&t.a.length-1)==2?(xk(u(r_(t),10),(uh(),K0)),xk(u(r_(t),10),h2)):r6n(t,s),E3t(t)}function MEn(t,e,n){var r,s,o,h,d;for(o=0,s=new Zn((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a));s.e!=s.i.gc();)r=u(ar(s),27),h="",(!r.n&&(r.n=new Jt(Po,r,1,7)),r.n).i==0||(h=u(Dt((!r.n&&(r.n=new Jt(Po,r,1,7)),r.n),0),135).a),d=new Eat(o++,e,h),Qo(d,r),Zt(d,(ji(),JA),r),d.e.b=r.j+r.f/2,d.f.a=b.Math.max(r.g,1),d.e.a=r.i+r.g/2,d.f.b=b.Math.max(r.f,1),Zr(e.b,d),yu(n.f,r,d)}function IEn(t){var e,n,r,s,o;r=u(X(t,(oe(),Li)),27),o=u(ne(r,(De(),Ow)),181).Hc((Yl(),qw)),t.e||(s=u(X(t,lu),21),e=new ae(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),s.Hc((Co(),Uh))?(Mi(r,bs,(ka(),hu)),rv(r,e.a,e.b,!1,!0)):Ie(Me(ne(r,c1t)))||rv(r,e.a,e.b,!0,!0)),o?Mi(r,Ow,en(qw)):Mi(r,Ow,(n=u(y1(xL),9),new _h(n,u(Ff(n,n.length),9),0)))}function Lkt(t,e,n){var r,s,o,h;if(e[0]>=t.length)return n.o=0,!0;switch(Va(t,e[0])){case 43:s=1;break;case 45:s=-1;break;default:return n.o=0,!0}if(++e[0],o=e[0],h=KH(t,e),h==0&&e[0]==o)return!1;if(e[0]d&&(d=s,T.c.length=0),s==d&&ge(T,new Ws(n.c.i,n)));mn(),Ds(T,t.c),Sm(t.b,m.p,T)}}function FEn(t,e){var n,r,s,o,h,d,m,k,T;for(h=new G(e.b);h.ad&&(d=s,T.c.length=0),s==d&&ge(T,new Ws(n.d.i,n)));mn(),Ds(T,t.c),Sm(t.f,m.p,T)}}function BEn(t,e){var n,r,s,o,h,d,m,k;if(k=Me(X(e,(Cc(),l8e))),k==null||(Wn(k),k)){for(cxn(t,e),s=new fe,m=Dr(e.b,0);m.b!=m.d.c;)h=u(Ar(m),39),n=w6t(t,h,null),n&&(Qo(n,e),In(s.c,n));if(t.a=null,t.b=null,s.c.length>1)for(r=new G(s);r.a=0&&d!=n&&(o=new ha(t,1,d,h,null),r?r.nj(o):r=o),n>=0&&(o=new ha(t,1,n,d==n?h:null,e),r?r.nj(o):r=o)),r}function X0e(t){var e,n,r;if(t.b==null){if(r=new dp,t.i!=null&&(Mo(r,t.i),r.a+=":"),t.f&256){for(t.f&256&&t.a!=null&&(ehn(t.i)||(r.a+="//"),Mo(r,t.a)),t.d!=null&&(r.a+="/",Mo(r,t.d)),t.f&16&&(r.a+="/"),e=0,n=t.j.length;eP?!1:(A=(m=B_(r,P,!1),m.a),T+d+A<=e.b&&($I(n,o-n.s),n.c=!0,$I(r,o-n.s),kO(r,n.s,n.t+n.d+d),r.k=!0,R4t(n.q,r),$=!0,s&&(zq(e,r),r.j=e,t.c.length>h&&(CO((vn(h,t.c.length),u(t.c[h],186)),r),(vn(h,t.c.length),u(t.c[h],186)).a.c.length==0&&Ep(t,h)))),$)}function VEn(t,e){var n,r,s,o,h,d;if(e.Ug("Partition midprocessing",1),s=new Fm,ms(_i(new ln(null,new gn(t.a,16)),new qB),new HVt(s)),s.d!=0){for(d=u(nc(a3t((o=s.i,new ln(null,(o||(s.i=new W4(s,s.c))).Nc()))),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),r=d.Kc(),n=u(r.Pb(),17);r.Ob();)h=u(r.Pb(),17),F6n(u(Ai(s,n),21),u(Ai(s,h),21)),n=h;e.Vg()}}function Z0e(t,e,n){var r,s,o,h,d,m,k,T;if(e.p==0){for(e.p=1,h=n,h||(s=new fe,o=(r=u(y1(bo),9),new _h(r,u(Ff(r,r.length),9),0)),h=new Ws(s,o)),u(h.a,15).Fc(e),e.k==(Un(),Ms)&&u(h.b,21).Fc(u(X(e,(oe(),Dc)),64)),m=new G(e.j);m.a0){if(s=u(t.Ab.g,2033),e==null){for(o=0;on.s&&dh)return ve(),Jn;break;case 4:case 3:if(T<0)return ve(),Hn;if(T+n>o)return ve(),Er}return m=(k+d/2)/h,r=(T+n/2)/o,m+r<=1&&m-r<=0?(ve(),Gn):m+r>=1&&m-r>=0?(ve(),Jn):r<.5?(ve(),Hn):(ve(),Er)}function YEn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(n=!1,T=Rt(Ht(X(e,(De(),Av)))),U=Kb*T,s=new G(e.b);s.am+U&&(J=A.g+P.g,P.a=(P.g*P.a+A.g*A.a)/J,P.g=J,A.f=P,n=!0)),o=d,A=P;return n}function rge(t,e,n,r,s,o,h){var d,m,k,T,A,P;for(P=new B6,k=e.Kc();k.Ob();)for(d=u(k.Pb(),853),A=new G(d.Rf());A.a0?d.a?(k=d.b.Mf().b,s>k&&(t.v||d.c.d.c.length==1?(h=(s-k)/2,d.d.d=h,d.d.a=h):(n=u(Oe(d.c.d,0),187).Mf().b,r=(n-k)/2,d.d.d=b.Math.max(0,r),d.d.a=s-r-k))):d.d.a=t.t+s:IS(t.u)&&(o=Zxt(d.b),o.d<0&&(d.d.d=-o.d),o.d+o.a>d.b.Mf().b&&(d.d.a=o.d+o.a-d.b.Mf().b))}function Vf(){Vf=V,jk=new _a((ai(),DP),he(1)),KU=new _a($w,80),F3e=new _a(zMt,5),S3e=new _a(sx,tT),N3e=new _a(qdt,he(1)),P3e=new _a(Hdt,(Pn(),!0)),gCt=new xm(50),I3e=new _a(Yp,gCt),hCt=AP,pCt=fL,_3e=new _a(Idt,!1),dCt=LP,D3e=R3,M3e=l2,L3e=jw,A3e=ux,O3e=j3,fCt=(u6t(),v3e),eft=E3e,GU=m3e,tft=y3e,bCt=k3e,j3e=dL,$3e=MK,R3e=MP,B3e=DK,wCt=(lk(),q3),new _a(t8,wCt)}function JEn(t,e){var n;switch(WI(t)){case 6:return ba(e);case 7:return Cy(e);case 8:return Ty(e);case 3:return Array.isArray(e)&&(n=WI(e),!(n>=14&&n<=16));case 11:return e!=null&&typeof e===Pct;case 12:return e!=null&&(typeof e===ZO||typeof e==Pct);case 0:return aot(e,t.__elementTypeId$);case 2:return $it(e)&&e.Tm!==yt;case 1:return $it(e)&&e.Tm!==yt||aot(e,t.__elementTypeId$);default:return!0}}function ige(t,e){var n,r,s,o;return r=b.Math.min(b.Math.abs(t.c-(e.c+e.b)),b.Math.abs(t.c+t.b-e.c)),o=b.Math.min(b.Math.abs(t.d-(e.d+e.a)),b.Math.abs(t.d+t.a-e.d)),n=b.Math.abs(t.c+t.b/2-(e.c+e.b/2)),n>t.b/2+e.b/2||(s=b.Math.abs(t.d+t.a/2-(e.d+e.a/2)),s>t.a/2+e.a/2)?1:n==0&&s==0?0:n==0?o/s+1:s==0?r/n+1:b.Math.min(r/n,o/s)+1}function ZEn(t,e){var n,r,s,o,h,d,m;for(o=0,d=0,m=0,s=new G(t.f.e);s.a0&&t.d!=(WS(),ift)&&(d+=h*(r.d.a+t.a[e.a][r.a]*(e.d.a-r.d.a)/n)),n>0&&t.d!=(WS(),nft)&&(m+=h*(r.d.b+t.a[e.a][r.a]*(e.d.b-r.d.b)/n)));switch(t.d.g){case 1:return new ae(d/o,e.d.b);case 2:return new ae(e.d.a,m/o);default:return new ae(d/o,m/o)}}function sge(t){var e,n,r,s,o,h;for(n=(!t.a&&(t.a=new Ps(vh,t,5)),t.a).i+2,h=new wu(n),ge(h,new ae(t.j,t.k)),ms(new ln(null,(!t.a&&(t.a=new Ps(vh,t,5)),new gn(t.a,16))),new pGt(h)),ge(h,new ae(t.b,t.c)),e=1;e0&&(aO(m,!1,(Rs(),Uo)),aO(m,!0,tc)),Cu(e.g,new mXt(t,n)),hi(t.g,e,n)}function cge(){cge=V;var t;for(p9t=lt(ut(Fr,1),ii,28,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),Dht=Vt(Fr,ii,28,37,15,1),Xve=lt(ut(Fr,1),ii,28,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),b9t=Vt(x2,cut,28,37,14,1),t=2;t<=36;t++)Dht[t]=Ys(b.Math.pow(t,p9t[t])),b9t[t]=_O(rN,Dht[t])}function t7n(t){var e;if((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i!=1)throw at(new zn(Fwe+(!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i));return e=new Qu,iO(u(Dt((!t.b&&(t.b=new kn(vr,t,4,7)),t.b),0),84))&&Ma(e,Xpe(t,iO(u(Dt((!t.b&&(t.b=new kn(vr,t,4,7)),t.b),0),84)),!1)),iO(u(Dt((!t.c&&(t.c=new kn(vr,t,5,8)),t.c),0),84))&&Ma(e,Xpe(t,iO(u(Dt((!t.c&&(t.c=new kn(vr,t,5,8)),t.c),0),84)),!0)),e}function uge(t,e){var n,r,s,o,h;for(e.d?s=t.a.c==(Gd(),Dv)?ua(e.b):_s(e.b):s=t.a.c==(Gd(),Gp)?ua(e.b):_s(e.b),o=!1,r=new rr(sr(s.a.Kc(),new z));Mr(r);)if(n=u(dr(r),18),h=Ie(t.a.f[t.a.g[e.b.p].p]),!(!h&&!go(n)&&n.c.i.c==n.d.i.c)&&!(Ie(t.a.n[t.a.g[e.b.p].p])||Ie(t.a.n[t.a.g[e.b.p].p]))&&(o=!0,x1(t.b,t.a.g[tvn(n,e.b).p])))return e.c=!0,e.a=n,e;return e.c=o,e.a=null,e}function Mkt(t,e,n){var r,s,o,h,d,m,k;if(r=n.gc(),r==0)return!1;if(t.Pj())if(m=t.Qj(),z5t(t,e,n),h=r==1?t.Ij(3,null,n.Kc().Pb(),e,m):t.Ij(5,null,n,e,m),t.Mj()){for(d=r<100?null:new xb(r),o=e+r,s=e;s0){for(h=0;h>16==-15&&t.Cb.Yh()&&Vst(new jst(t.Cb,9,13,n,t.c,Np(Al(u(t.Cb,62)),t))):Lt(t.Cb,90)&&t.Db>>16==-23&&t.Cb.Yh()&&(e=t.c,Lt(e,90)||(e=(wn(),xf)),Lt(n,90)||(n=(wn(),xf)),Vst(new jst(t.Cb,9,10,n,e,Np(Wc(u(t.Cb,29)),t)))))),t.c}function r7n(t,e,n){var r,s,o,h,d,m,k,T,A;for(n.Ug("Hyperedge merging",1),_xn(t,e),m=new La(e.b,0);m.b0,d=gH(e,o),Umt(n?d.b:d.g,e),s5(d).c.length==1&&hs(r,d,r.c.b,r.c),s=new Ws(o,e),Ob(t.o,s),zu(t.e.a,o))}function bge(t,e){var n,r,s,o,h,d,m;return r=b.Math.abs(zz(t.b).a-zz(e.b).a),d=b.Math.abs(zz(t.b).b-zz(e.b).b),s=0,m=0,n=1,h=1,r>t.b.b/2+e.b.b/2&&(s=b.Math.min(b.Math.abs(t.b.c-(e.b.c+e.b.b)),b.Math.abs(t.b.c+t.b.b-e.b.c)),n=1-s/r),d>t.b.a/2+e.b.a/2&&(m=b.Math.min(b.Math.abs(t.b.d-(e.b.d+e.b.a)),b.Math.abs(t.b.d+t.b.a-e.b.d)),h=1-m/d),o=b.Math.min(n,h),(1-o)*b.Math.sqrt(r*r+d*d)}function a7n(t){var e,n,r,s;for(Dct(t,t.e,t.f,(Bm(),c2),!0,t.c,t.i),Dct(t,t.e,t.f,c2,!1,t.c,t.i),Dct(t,t.e,t.f,Z5,!0,t.c,t.i),Dct(t,t.e,t.f,Z5,!1,t.c,t.i),n7n(t,t.c,t.e,t.f,t.i),r=new La(t.i,0);r.b=65;n--)_d[n]=n-65<<24>>24;for(r=122;r>=97;r--)_d[r]=r-97+26<<24>>24;for(s=57;s>=48;s--)_d[s]=s-48+52<<24>>24;for(_d[43]=62,_d[47]=63,o=0;o<=25;o++)nb[o]=65+o&js;for(h=26,m=0;h<=51;++h,m++)nb[h]=97+m&js;for(t=52,d=0;t<=61;++t,d++)nb[t]=48+d&js;nb[62]=43,nb[63]=47}function wge(t,e){var n,r,s,o,h,d;return s=O4t(t),d=O4t(e),s==d?t.e==e.e&&t.a<54&&e.a<54?t.fe.f?1:0:(r=t.e-e.e,n=(t.d>0?t.d:b.Math.floor((t.a-1)*Tbe)+1)-(e.d>0?e.d:b.Math.floor((e.a-1)*Tbe)+1),n>r+1?s:n0&&(h=Z4(h,Age(r))),Sle(o,h))):sk&&(P=0,$+=m+e,m=0),B7(h,P,$),n=b.Math.max(n,P+T.a),m=b.Math.max(m,T.b),P+=T.a+e;return new ae(n+e,$+m+e)}function Pkt(t,e){var n,r,s,o,h,d,m;if(!ed(t))throw at(new Ro(Pwe));if(r=ed(t),o=r.g,s=r.f,o<=0&&s<=0)return ve(),bc;switch(d=t.i,m=t.j,e.g){case 2:case 1:if(d<0)return ve(),Gn;if(d+t.g>o)return ve(),Jn;break;case 4:case 3:if(m<0)return ve(),Hn;if(m+t.f>s)return ve(),Er}return h=(d+t.g/2)/o,n=(m+t.f/2)/s,h+n<=1&&h-n<=0?(ve(),Gn):h+n>=1&&h-n>=0?(ve(),Jn):n<.5?(ve(),Hn):(ve(),Er)}function u7n(t,e,n,r,s){var o,h;if(o=Qa(sa(e[0],So),sa(r[0],So)),t[0]=qr(o),o=_m(o,32),n>=s){for(h=1;h0&&(s.b[h++]=0,s.b[h++]=o.b[0]-1),e=1;e0&&(H(m,m.d-s.d),s.c==(C1(),o2)&&N(m,m.a-s.d),m.d<=0&&m.i>0&&hs(e,m,e.c.b,e.c)));for(o=new G(t.f);o.a0&&(q(d,d.i-s.d),s.c==(C1(),o2)&&j(d,d.b-s.d),d.i<=0&&d.d>0&&hs(n,d,n.c.b,n.c)))}function f7n(t,e,n,r,s){var o,h,d,m,k,T,A,P,$;for(mn(),Ds(t,new U8),h=bI(t),$=new fe,P=new fe,d=null,m=0;h.b!=0;)o=u(h.b==0?null:(ur(h.b!=0),Oh(h,h.a.a)),163),!d||tl(d)*Gl(d)/21&&(m>tl(d)*Gl(d)/2||h.b==0)&&(A=new Fq(P),T=tl(d)/Gl(d),k=Mct(A,e,new C6,n,r,s,T),ki(k1(A.e),k),d=A,In($.c,A),m=0,P.c.length=0));return Hs($,P),$}function Xc(t,e,n,r,s){pg();var o,h,d,m,k,T,A;if(Syt(t,"src"),Syt(n,"dest"),A=Wl(t),m=Wl(n),Uvt((A.i&4)!=0,"srcType is not an array"),Uvt((m.i&4)!=0,"destType is not an array"),T=A.c,h=m.c,Uvt(T.i&1?T==h:(h.i&1)==0,"Array types don't match"),Jpn(t,e,n,r,s),!(T.i&1)&&A!=m)if(k=nw(t),o=nw(n),$t(t)===$t(n)&&er;)ls(o,d,k[--e]);else for(d=r+s;r0),r.a.Xb(r.c=--r.b),A>P+m&&Kl(r);for(h=new G($);h.a0),r.a.Xb(r.c=--r.b)}}function g7n(){yi();var t,e,n,r,s,o;if(l0t)return l0t;for(t=new ih(4),a3(t,Gb(wht,!0)),$_(t,Gb("M",!0)),$_(t,Gb("C",!0)),o=new ih(4),r=0;r<11;r++)iu(o,r,r);return e=new ih(4),a3(e,Gb("M",!0)),iu(e,4448,4607),iu(e,65438,65439),s=new yS(2),gw(s,t),gw(s,OL),n=new yS(2),n.Jm(Mz(o,Gb("L",!0))),n.Jm(e),n=new By(3,n),n=new Cyt(s,n),l0t=n,l0t}function s3(t,e){var n,r,s,o,h,d,m,k;for(n=new RegExp(e,"g"),m=Vt(Pe,ue,2,0,6,1),r=0,k=t,o=null;;)if(d=n.exec(k),d==null||k==""){m[r]=k;break}else h=d.index,m[r]=(Da(0,h,k.length),k.substr(0,h)),k=Lh(k,h+d[0].length,k.length),n.lastIndex=0,o==k&&(m[r]=(Da(0,1,k.length),k.substr(0,1)),k=(qn(1,k.length+1),k.substr(1))),o=k,++r;if(t.length>0){for(s=m.length;s>0&&m[s-1]=="";)--s;s0&&(A-=r[0]+t.c,r[0]+=t.c),r[2]>0&&(A-=r[2]+t.c),r[1]=b.Math.max(r[1],A),Pz(t.a[1],n.c+e.b+r[0]-(r[1]-A)/2,r[1]);for(o=t.a,d=0,k=o.length;d0?(t.n.c.length-1)*t.i:0,r=new G(t.n);r.a1)for(r=Dr(s,0);r.b!=r.d.c;)for(n=u(Ar(r),235),o=0,m=new G(n.e);m.a0&&(e[0]+=t.c,A-=e[0]),e[2]>0&&(A-=e[2]+t.c),e[1]=b.Math.max(e[1],A),Fz(t.a[1],r.d+n.d+e[0]-(e[1]-A)/2,e[1]);else for(U=r.d+n.d,$=r.a-n.d-n.a,h=t.a,m=0,T=h.length;m0||Wm(s.b.d,t.b.d+t.b.a)==0&&r.b<0||Wm(s.b.d+s.b.a,t.b.d)==0&&r.b>0){d=0;break}}else d=b.Math.min(d,b1e(t,s,r));d=b.Math.min(d,xge(t,o,d,r))}return d}function KO(t,e){var n,r,s,o,h,d,m;if(t.b<2)throw at(new zn("The vector chain must contain at least a source and a target point."));for(s=(ur(t.b!=0),u(t.a.a.c,8)),rI(e,s.a,s.b),m=new j6((!e.a&&(e.a=new Ps(vh,e,5)),e.a)),h=Dr(t,1);h.a=0&&o!=n))throw at(new zn(AN));for(s=0,m=0;mRt(td(h.g,h.d[0]).a)?(ur(m.b>0),m.a.Xb(m.c=--m.b),Ly(m,h),s=!0):d.e&&d.e.gc()>0&&(o=(!d.e&&(d.e=new fe),d.e).Mc(e),k=(!d.e&&(d.e=new fe),d.e).Mc(n),(o||k)&&((!d.e&&(d.e=new fe),d.e).Fc(h),++h.c));s||In(r.c,h)}function x7n(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;return A=t.a.i+t.a.g/2,P=t.a.i+t.a.g/2,U=e.i+e.g/2,tt=e.j+e.f/2,d=new ae(U,tt),k=u(ne(e,(ai(),Jk)),8),k.a=k.a+A,k.b=k.b+P,o=(d.b-k.b)/(d.a-k.a),r=d.b-o*d.a,J=n.i+n.g/2,ht=n.j+n.f/2,m=new ae(J,ht),T=u(ne(n,Jk),8),T.a=T.a+A,T.b=T.b+P,h=(m.b-T.b)/(m.a-T.a),s=m.b-h*m.a,$=(r-s)/(h-o),k.a<$&&d.a<$||$>>0,"0"+e.toString(16)),r="\\x"+Lh(n,n.length-2,n.length)):t>=po?(n=(e=t>>>0,"0"+e.toString(16)),r="\\v"+Lh(n,n.length-6,n.length)):r=""+String.fromCharCode(t&js)}return r}function Cge(t){var e,n,r;if(z4(u(X(t,(De(),bs)),101)))for(n=new G(t.j);n.a=e.o&&n.f<=e.f||e.a*.5<=n.f&&e.a*1.5>=n.f){if(h=u(Oe(e.n,e.n.c.length-1),209),h.e+h.d+n.g+s<=r&&(o=u(Oe(e.n,e.n.c.length-1),209),o.f-t.f+n.f<=t.b||t.a.c.length==1))return O5t(e,n),!0;if(e.s+n.g<=r&&(e.t+e.d+n.f+s<=t.b||t.a.c.length==1))return ge(e.b,n),d=u(Oe(e.n,e.n.c.length-1),209),ge(e.n,new aq(e.s,d.f+d.a+e.i,e.i)),dxt(u(Oe(e.n,e.n.c.length-1),209),n),vge(e,n),!0}return!1}function _ge(t,e,n){var r,s,o,h;return t.Pj()?(s=null,o=t.Qj(),r=t.Ij(1,h=Kst(t,e,n),n,e,o),t.Mj()&&!(t.Yi()&&h!=null?Ti(h,n):$t(h)===$t(n))?(h!=null&&(s=t.Oj(h,s)),s=t.Nj(n,s),t.Tj()&&(s=t.Wj(h,n,s)),s?(s.nj(r),s.oj()):t.Jj(r)):(t.Tj()&&(s=t.Wj(h,n,s)),s?(s.nj(r),s.oj()):t.Jj(r)),h):(h=Kst(t,e,n),t.Mj()&&!(t.Yi()&&h!=null?Ti(h,n):$t(h)===$t(n))&&(s=null,h!=null&&(s=t.Oj(h,null)),s=t.Nj(n,s),s&&s.oj()),h)}function A7n(t,e){var n,r,s,o,h;if(e.Ug("Path-Like Graph Wrapping",1),t.b.c.length==0){e.Vg();return}if(s=new q6t(t),h=(s.i==null&&(s.i=N4t(s,new bR)),Rt(s.i)*s.f),n=h/(s.i==null&&(s.i=N4t(s,new bR)),Rt(s.i)),s.b>n){e.Vg();return}switch(u(X(t,(De(),d1t)),351).g){case 2:o=new mR;break;case 0:o=new oC;break;default:o=new vR}if(r=o.og(t,s),!o.pg())switch(u(X(t,WG),352).g){case 2:r=w1e(s,r);break;case 1:r=ofe(s,r)}TTn(t,s,r),e.Vg()}function N_(t,e){var n,r,s,o,h,d,m,k;e%=24,t.q.getHours()!=e&&(r=new b.Date(t.q.getTime()),r.setDate(r.getDate()+1),d=t.q.getTimezoneOffset()-r.getTimezoneOffset(),d>0&&(m=d/60|0,k=d%60,s=t.q.getDate(),n=t.q.getHours(),n+m>=24&&++s,o=new b.Date(t.q.getFullYear(),t.q.getMonth(),s,e+m,t.q.getMinutes()+k,t.q.getSeconds(),t.q.getMilliseconds()),t.q.setTime(o.getTime()))),h=t.q.getTime(),t.q.setTime(h+36e5),t.q.getHours()!=e&&t.q.setTime(h)}function L7n(t,e){var n,r,s,o;if(qfn(t.d,t.e),t.c.a.$b(),Rt(Ht(X(e.j,(De(),FG))))!=0||Rt(Ht(X(e.j,FG)))!=0)for(n=S5,$t(X(e.j,U0))!==$t((Wd(),Up))&&Zt(e.j,(oe(),i2),(Pn(),!0)),o=u(X(e.j,$A),17).a,s=0;ss&&++k,ge(h,(vn(d+k,e.c.length),u(e.c[d+k],17))),m+=(vn(d+k,e.c.length),u(e.c[d+k],17)).a-r,++n;n=tt&&t.e[m.p]>U*t.b||At>=n*tt)&&(In(P.c,d),d=new fe,Ma(h,o),o.a.$b(),k-=T,$=b.Math.max($,k*t.b+J),k+=At,Tt=At,At=0,T=0,J=0);return new Ws($,P)}function pct(t){var e,n,r,s,o,h,d;if(!t.d){if(d=new Jtt,e=_L,o=e.a.zc(t,e),o==null){for(r=new Zn(Yo(t));r.e!=r.i.gc();)n=u(ar(r),29),gs(d,pct(n));e.a.Bc(t)!=null,e.a.gc()==0}for(h=d.i,s=(!t.q&&(t.q=new Jt(vf,t,11,10)),new Zn(t.q));s.e!=s.i.gc();++h)u(ar(s),411);gs(d,(!t.q&&(t.q=new Jt(vf,t,11,10)),t.q)),Uy(d),t.d=new $4((u(Dt(Qt((Lb(),Fn).o),9),19),d.i),d.g),t.e=u(d.g,688),t.e==null&&(t.e=DTe),_l(t).b&=-17}return t.d}function $7(t,e,n,r){var s,o,h,d,m,k;if(k=Lu(t.e.Dh(),e),m=0,s=u(t.g,124),vo(),u(e,69).xk()){for(h=0;h1||U==-1)if(A=u(J,71),P=u(T,71),A.dc())P.$b();else for(h=!!yo(e),o=0,d=t.a?A.Kc():A.Ii();d.Ob();)k=u(d.Pb(),58),s=u(od(t,k),58),s?(h?(m=P.dd(s),m==-1?P.Gi(o,s):o!=m&&P.Ui(o,s)):P.Gi(o,s),++o):t.b&&!h&&(P.Gi(o,k),++o);else J==null?T.Wb(null):(s=od(t,J),s==null?t.b&&!yo(e)&&T.Wb(J):T.Wb(s))}function N7n(t,e){var n,r,s,o,h,d,m,k;for(n=new gQ,s=new rr(sr(ua(e).a.Kc(),new z));Mr(s);)if(r=u(dr(s),18),!go(r)&&(d=r.c.i,Yxt(d,QU))){if(k=dkt(t,d,QU,XU),k==-1)continue;n.b=b.Math.max(n.b,k),!n.a&&(n.a=new fe),ge(n.a,d)}for(h=new rr(sr(_s(e).a.Kc(),new z));Mr(h);)if(o=u(dr(h),18),!go(o)&&(m=o.d.i,Yxt(m,XU))){if(k=dkt(t,m,XU,QU),k==-1)continue;n.d=b.Math.max(n.d,k),!n.c&&(n.c=new fe),ge(n.c,m)}return n}function P7n(t,e,n,r){var s,o,h,d,m,k,T;if(n.d.i!=e.i){for(s=new Ig(t),y(s,(Un(),fa)),Zt(s,(oe(),Li),n),Zt(s,(De(),bs),(ka(),hu)),In(r.c,s),h=new Yc,hc(h,s),Xs(h,(ve(),Gn)),d=new Yc,hc(d,s),Xs(d,Jn),T=n.d,xa(n,h),o=new Pm,Qo(o,n),Zt(o,Vo,null),Xa(o,d),xa(o,T),k=new La(n.b,0);k.b1e6)throw at(new f$("power of ten too big"));if(t<=xi)return nk(RO(Bk[1],e),e);for(r=RO(Bk[1],xi),s=r,n=Pc(t-xi),e=Ys(t%xi);$c(n,xi)>0;)s=Z4(s,r),n=sf(n,xi);for(s=Z4(s,RO(Bk[1],e)),s=nk(s,xi),n=Pc(t-xi);$c(n,xi)>0;)s=nk(s,xi),n=sf(n,xi);return s=nk(s,e),s}function Lge(t){var e,n,r,s,o,h,d,m,k,T;for(m=new G(t.a);m.ak&&r>k)T=d,k=Rt(e.p[d.p])+Rt(e.d[d.p])+d.o.b+d.d.a;else{s=!1,n._g()&&n.bh("bk node placement breaks on "+d+" which should have been after "+T);break}if(!s)break}return n._g()&&n.bh(e+" is feasible: "+s),s}function jkt(t,e,n,r){var s,o,h,d,m,k,T,A,P;if(o=new Ig(t),y(o,(Un(),uu)),Zt(o,(De(),bs),(ka(),hu)),s=0,e){for(h=new Yc,Zt(h,(oe(),Li),e),Zt(o,Li,e.i),Xs(h,(ve(),Gn)),hc(h,o),P=Kd(e.e),k=P,T=0,A=k.length;T0){if(s<0&&T.a&&(s=m,o=k[0],r=0),s>=0){if(d=T.b,m==s&&(d-=r++,d==0))return 0;if(!Ope(e,k,T,d,h)){m=s-1,k[0]=o;continue}}else if(s=-1,!Ope(e,k,T,0,h))return 0}else{if(s=-1,Va(T.c,0)==32){if(A=k[0],Oae(e,k),k[0]>A)continue}else if(Ehn(e,T.c,k[0])){k[0]+=T.c.length;continue}return 0}return CCn(h,n)?k[0]:0}function z7n(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(T=new Rz(new e$(n)),d=Vt(Fl,$0,28,t.f.e.c.length,16,1),Eyt(d,d.length),n[e.a]=0,k=new G(t.f.e);k.a=0&&!u5(t,T,A);)--A;s[T]=A}for($=0;$=0&&!u5(t,d,U);)--d;o[U]=d}for(m=0;me[P]&&Pr[m]&&cV(t,m,P,!1,!0)}function $kt(t){var e,n,r,s,o,h,d,m;n=Ie(Me(X(t,(Vf(),_3e)))),o=t.a.c.d,d=t.a.d.d,n?(h=qd(ia(new ae(d.a,d.b),o),.5),m=qd(Oa(t.e),.5),e=ia(ki(new ae(o.a,o.b),h),m),Xmt(t.d,e)):(s=Rt(Ht(X(t.a,F3e))),r=t.d,o.a>=d.a?o.b>=d.b?(r.a=d.a+(o.a-d.a)/2+s,r.b=d.b+(o.b-d.b)/2-s-t.e.b):(r.a=d.a+(o.a-d.a)/2+s,r.b=o.b+(d.b-o.b)/2+s):o.b>=d.b?(r.a=o.a+(d.a-o.a)/2+s,r.b=d.b+(o.b-d.b)/2+s):(r.a=o.a+(d.a-o.a)/2+s,r.b=o.b+(d.b-o.b)/2-s-t.e.b))}function F_(t){var e,n,r,s,o,h,d,m;if(!t.f){if(m=new cM,d=new cM,e=_L,h=e.a.zc(t,e),h==null){for(o=new Zn(Yo(t));o.e!=o.i.gc();)s=u(ar(o),29),gs(m,F_(s));e.a.Bc(t)!=null,e.a.gc()==0}for(r=(!t.s&&(t.s=new Jt(Wu,t,21,17)),new Zn(t.s));r.e!=r.i.gc();)n=u(ar(r),179),Lt(n,102)&&Or(d,u(n,19));Uy(d),t.r=new yte(t,(u(Dt(Qt((Lb(),Fn).o),6),19),d.i),d.g),gs(m,t.r),Uy(m),t.f=new $4((u(Dt(Qt(Fn.o),5),19),m.i),m.g),_l(t).b&=-3}return t.f}function Mge(t){wm(t,new dw(gm(hm(dm(fm(new G1,vw),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new g1))),le(t,vw,Lut,Se(cCt)),le(t,vw,Dut,Se(Xht)),le(t,vw,Dk,Se(f3e)),le(t,vw,ov,Se(oCt)),le(t,vw,A8t,Se(b3e)),le(t,vw,L8t,Se(p3e)),le(t,vw,_8t,Se(w3e)),le(t,vw,D8t,Se(g3e)),le(t,vw,B8t,Se(d3e)),le(t,vw,R8t,Se(Yht)),le(t,vw,j8t,Se(aCt)),le(t,vw,$8t,Se(HU))}function fV(){fV=V,LIt=lt(ut(Yh,1),Zd,28,15,[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70]),aTe=new RegExp(`[ +\r\f]+`);try{TL=lt(ut(E_n,1),Ln,2114,0,[new AM((wmt(),mH("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ",hI((h$(),h$(),mA))))),new AM(mH("yyyy-MM-dd'T'HH:mm:ss'.'SSS",hI(mA))),new AM(mH("yyyy-MM-dd'T'HH:mm:ss",hI(mA))),new AM(mH("yyyy-MM-dd'T'HH:mm",hI(mA))),new AM(mH("yyyy-MM-dd",hI(mA)))])}catch(t){if(t=es(t),!Lt(t,82))throw at(t)}}function H7n(t,e){var n,r,s,o;if(s=Dl(t.d,1)!=0,r=ykt(t,e),r==0&&Ie(Me(X(e.j,(oe(),i2)))))return 0;!Ie(Me(X(e.j,(oe(),i2))))&&!Ie(Me(X(e.j,U5)))||$t(X(e.j,(De(),U0)))===$t((Wd(),Up))?e.c.mg(e.e,s):s=Ie(Me(X(e.j,i2))),qO(t,e,s,!0),Ie(Me(X(e.j,U5)))&&Zt(e.j,U5,(Pn(),!1)),Ie(Me(X(e.j,i2)))&&(Zt(e.j,i2,(Pn(),!1)),Zt(e.j,U5,!0)),n=ykt(t,e);do{if(I4t(t),n==0)return 0;s=!s,o=n,qO(t,e,s,!1),n=ykt(t,e)}while(o>n);return o}function Ige(t,e){var n,r,s,o;if(s=Dl(t.d,1)!=0,r=GH(t,e),r==0&&Ie(Me(X(e.j,(oe(),i2)))))return 0;!Ie(Me(X(e.j,(oe(),i2))))&&!Ie(Me(X(e.j,U5)))||$t(X(e.j,(De(),U0)))===$t((Wd(),Up))?e.c.mg(e.e,s):s=Ie(Me(X(e.j,i2))),qO(t,e,s,!0),Ie(Me(X(e.j,U5)))&&Zt(e.j,U5,(Pn(),!1)),Ie(Me(X(e.j,i2)))&&(Zt(e.j,i2,(Pn(),!1)),Zt(e.j,U5,!0)),n=GH(t,e);do{if(I4t(t),n==0)return 0;s=!s,o=n,qO(t,e,s,!1),n=GH(t,e)}while(o>n);return o}function zkt(t,e,n,r){var s,o,h,d,m,k,T,A,P;return m=ia(new ae(n.a,n.b),t),k=m.a*e.b-m.b*e.a,T=e.a*r.b-e.b*r.a,A=(m.a*r.b-m.b*r.a)/T,P=k/T,T==0?k==0?(s=ki(new ae(n.a,n.b),qd(new ae(r.a,r.b),.5)),o=Nb(t,s),h=Nb(ki(new ae(t.a,t.b),e),s),d=b.Math.sqrt(r.a*r.a+r.b*r.b)*.5,o=0&&A<=1&&P>=0&&P<=1?ki(new ae(t.a,t.b),qd(new ae(e.a,e.b),A)):null}function V7n(t,e,n){var r,s,o,h,d;if(r=u(X(t,(De(),t1t)),21),n.a>e.a&&(r.Hc((fw(),cL))?t.c.a+=(n.a-e.a)/2:r.Hc(uL)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(r.Hc((fw(),hL))?t.c.b+=(n.b-e.b)/2:r.Hc(lL)&&(t.c.b+=n.b-e.b)),u(X(t,(oe(),lu)),21).Hc((Co(),Uh))&&(n.a>e.a||n.b>e.b))for(d=new G(t.a);d.ae.a&&(r.Hc((fw(),cL))?t.c.a+=(n.a-e.a)/2:r.Hc(uL)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(r.Hc((fw(),hL))?t.c.b+=(n.b-e.b)/2:r.Hc(lL)&&(t.c.b+=n.b-e.b)),u(X(t,(oe(),lu)),21).Hc((Co(),Uh))&&(n.a>e.a||n.b>e.b))for(h=new G(t.a);h.a0?t.i:0)>e&&m>0&&(o=0,h+=m+t.i,s=b.Math.max(s,P),r+=m+t.i,m=0,P=0,n&&(++A,ge(t.n,new aq(t.s,h,t.i))),d=0),P+=k.g+(d>0?t.i:0),m=b.Math.max(m,k.f),n&&dxt(u(Oe(t.n,A),209),k),o+=k.g+(d>0?t.i:0),++d;return s=b.Math.max(s,P),r+=m,n&&(t.r=s,t.d=r,wxt(t.j)),new Ah(t.s,t.t,s,r)}function bct(t){var e,n,r,s,o,h,d,m,k,T,A,P;for(t.b=!1,A=Zi,m=Vs,P=Zi,k=Vs,r=t.e.a.ec().Kc();r.Ob();)for(n=u(r.Pb(),272),s=n.a,A=b.Math.min(A,s.c),m=b.Math.max(m,s.c+s.b),P=b.Math.min(P,s.d),k=b.Math.max(k,s.d+s.a),h=new G(n.c);h.at.o.a&&(T=(m-t.o.a)/2,d.b=b.Math.max(d.b,T),d.c=b.Math.max(d.c,T))}}function W7n(t){var e,n,r,s,o,h,d,m;for(o=new Sre,Cin(o,(ck(),KEe)),r=(s=cat(t,Vt(Pe,ue,2,0,6,1)),new gr(new hl(new crt(t,s).b)));r.bd?1:-1:o5t(t.a,e.a,o),s==-1)A=-m,T=h==m?Ost(e.a,d,t.a,o):Pst(e.a,d,t.a,o);else if(A=h,h==m){if(s==0)return Xd(),yA;T=Ost(t.a,o,e.a,d)}else T=Pst(t.a,o,e.a,d);return k=new Y2(A,T.length,T),qS(k),k}function Y7n(t,e){var n,r,s,o;if(o=pge(e),!e.c&&(e.c=new Jt(kl,e,9,9)),ms(new ln(null,(!e.c&&(e.c=new Jt(kl,e,9,9)),new gn(e.c,16))),new xVt(o)),s=u(X(o,(oe(),lu)),21),z9n(e,s),s.Hc((Co(),Uh)))for(r=new Zn((!e.c&&(e.c=new Jt(kl,e,9,9)),e.c));r.e!=r.i.gc();)n=u(ar(r),123),bCn(t,e,o,n);return u(ne(e,(De(),Ow)),181).gc()!=0&&o0e(e,o),Ie(Me(X(o,cAt)))&&s.Fc(_G),qi(o,sP)&&pWt(new V5t(Rt(Ht(X(o,sP)))),o),$t(ne(e,A3))===$t((Ag(),Xp))?$Sn(t,e,o):TSn(t,e,o),o}function X7n(t){var e,n,r,s,o,h,d,m;for(s=new G(t.b);s.a0?Lh(n.a,0,o-1):""):(Da(0,o-1,t.length),t.substr(0,o-1)):n?n.a:t}function Q7n(t,e){var n,r,s,o,h,d,m;for(e.Ug("Sort By Input Model "+X(t,(De(),U0)),1),s=0,r=new G(t.b);r.a=t.b.length?(o[s++]=h.b[r++],o[s++]=h.b[r++]):r>=h.b.length?(o[s++]=t.b[n++],o[s++]=t.b[n++]):h.b[r]0?t.i:0)),++e;for(_5t(t.n,m),t.d=n,t.r=r,t.g=0,t.f=0,t.e=0,t.o=Zi,t.p=Zi,o=new G(t.b);o.a0&&(s=(!t.n&&(t.n=new Jt(Po,t,1,7)),u(Dt(t.n,0),135)).a,!s||ni(ni((e.a+=' "',e),s),'"'))),n=(!t.b&&(t.b=new kn(vr,t,4,7)),!(t.b.i<=1&&(!t.c&&(t.c=new kn(vr,t,5,8)),t.c.i<=1))),n?e.a+=" [":e.a+=" ",ni(e,Fmt(new ert,new Zn(t.b))),n&&(e.a+="]"),e.a+=But,n&&(e.a+="["),ni(e,Fmt(new ert,new Zn(t.c))),n&&(e.a+="]"),e.a)}function Z7n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(Wt=t.c,se=e.c,n=Xo(Wt.a,t,0),r=Xo(se.a,e,0),At=u(Ym(t,(To(),vl)).Kc().Pb(),12),Ze=u(Ym(t,ku).Kc().Pb(),12),Bt=u(Ym(e,vl).Kc().Pb(),12),On=u(Ym(e,ku).Kc().Pb(),12),ht=Kd(At.e),Ce=Kd(Ze.g),Tt=Kd(Bt.e),rn=Kd(On.g),Xy(t,r,se),h=Tt,T=0,U=h.length;TT?new J2((C1(),F3),n,e,k-T):k>0&&T>0&&(new J2((C1(),F3),e,n,0),new J2(F3,n,e,0))),h)}function nTn(t,e,n){var r,s,o;for(t.a=new fe,o=Dr(e.b,0);o.b!=o.d.c;){for(s=u(Ar(o),39);u(X(s,(Cc(),h0)),17).a>t.a.c.length-1;)ge(t.a,new Ws(S5,E7t));r=u(X(s,h0),17).a,n==(Rs(),Uo)||n==tc?(s.e.aRt(Ht(u(Oe(t.a,r),42).b))&&re(u(Oe(t.a,r),42),s.e.a+s.f.a)):(s.e.bRt(Ht(u(Oe(t.a,r),42).b))&&re(u(Oe(t.a,r),42),s.e.b+s.f.b))}}function Pge(t,e,n,r){var s,o,h,d,m,k,T;if(o=fH(r),d=Ie(Me(X(r,(De(),nAt)))),(d||Ie(Me(X(t,zG))))&&!z4(u(X(t,bs),101)))s=hk(o),m=Dkt(t,n,n==(To(),ku)?s:bO(s));else switch(m=new Yc,hc(m,t),e?(T=m.n,T.a=e.a-t.n.a,T.b=e.b-t.n.b,$fe(T,0,0,t.o.a,t.o.b),Xs(m,nge(m,o))):(s=hk(o),Xs(m,n==(To(),ku)?s:bO(s))),h=u(X(r,(oe(),lu)),21),k=m.j,o.g){case 2:case 1:(k==(ve(),Hn)||k==Er)&&h.Fc((Co(),q5));break;case 4:case 3:(k==(ve(),Jn)||k==Gn)&&h.Fc((Co(),q5))}return m}function Fge(t,e){var n,r,s,o,h,d;for(h=new sw(new mr(t.f.b).a);h.b;){if(o=Um(h),s=u(o.ld(),602),e==1){if(s.Af()!=(Rs(),Gh)&&s.Af()!=kd)continue}else if(s.Af()!=(Rs(),Uo)&&s.Af()!=tc)continue;switch(r=u(u(o.md(),42).b,86),d=u(u(o.md(),42).a,194),n=d.c,s.Af().g){case 2:r.g.c=t.e.a,r.g.b=b.Math.max(1,r.g.b+n);break;case 1:r.g.c=r.g.c+n,r.g.b=b.Math.max(1,r.g.b-n);break;case 4:r.g.d=t.e.b,r.g.a=b.Math.max(1,r.g.a+n);break;case 3:r.g.d=r.g.d+n,r.g.a=b.Math.max(1,r.g.a-n)}}}function rTn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(d=Vt(Fr,ii,28,e.b.c.length,15,1),k=Vt(fft,te,273,e.b.c.length,0,1),m=Vt(V0,jp,10,e.b.c.length,0,1),A=t.a,P=0,$=A.length;P<$;++P){for(T=A[P],J=0,h=new G(T.e);h.a0&&m[r]&&(U=U4(t.b,m[r],s)),J=b.Math.max(J,s.c.c.b+U);for(o=new G(T.e);o.a1)throw at(new zn(ON));m||(o=D0(e,r.Kc().Pb()),h.Fc(o))}return K4t(t,g6t(t,e,n),h)}function gV(t,e,n){var r,s,o,h,d,m,k,T;if(Ng(t.e,e))m=(vo(),u(e,69).xk()?new Sz(e,t):new eI(e,t)),WH(m.c,m.b),xS(m,u(n,16));else{for(T=Lu(t.e.Dh(),e),r=u(t.g,124),h=0;h"}m!=null&&(e.a+=""+m)}else t.e?(d=t.e.zb,d!=null&&(e.a+=""+d)):(e.a+="?",t.b?(e.a+=" super ",xct(t.b,e)):t.f&&(e.a+=" extends ",xct(t.f,e)))}function uTn(t){t.b=null,t.a=null,t.o=null,t.q=null,t.v=null,t.w=null,t.B=null,t.p=null,t.Q=null,t.R=null,t.S=null,t.T=null,t.U=null,t.V=null,t.W=null,t.bb=null,t.eb=null,t.ab=null,t.H=null,t.db=null,t.c=null,t.d=null,t.f=null,t.n=null,t.r=null,t.s=null,t.u=null,t.G=null,t.J=null,t.e=null,t.j=null,t.i=null,t.g=null,t.k=null,t.t=null,t.F=null,t.I=null,t.L=null,t.M=null,t.O=null,t.P=null,t.$=null,t.N=null,t.Z=null,t.cb=null,t.K=null,t.D=null,t.A=null,t.C=null,t._=null,t.fb=null,t.X=null,t.Y=null,t.gb=!1,t.hb=!1}function lTn(t){var e,n,r,s;if(r=Oct((!t.c&&(t.c=DI(Pc(t.f))),t.c),0),t.e==0||t.a==0&&t.f!=-1&&t.e<0)return r;if(e=O4t(t)<0?1:0,n=t.e,s=(r.length+1+b.Math.abs(Ys(t.e)),new I4),e==1&&(s.a+="-"),t.e>0)if(n-=r.length-e,n>=0){for(s.a+="0.";n>_w.length;n-=_w.length)Dte(s,_w);gZt(s,_w,Ys(n)),ni(s,(qn(e,r.length+1),r.substr(e)))}else n=e-n,ni(s,Lh(r,e,Ys(n))),s.a+=".",ni(s,Iyt(r,Ys(n)));else{for(ni(s,(qn(e,r.length+1),r.substr(e)));n<-_w.length;n+=_w.length)Dte(s,_w);gZt(s,_w,Ys(-n))}return s.a}function kct(t){var e,n,r,s,o,h,d,m,k;return!(t.k!=(Un(),xs)||t.j.c.length<=1||(o=u(X(t,(De(),bs)),101),o==(ka(),hu))||(s=(Yy(),(t.q?t.q:(mn(),mn(),q0))._b(Cv)?r=u(X(t,Cv),203):r=u(X(Pa(t),RA),203),r),s==JG)||!(s==J5||s==Q5)&&(h=Rt(Ht(Wy(t,jA))),e=u(X(t,oP),140),!e&&(e=new pvt(h,h,h,h)),k=gc(t,(ve(),Gn)),m=e.d+e.a+(k.gc()-1)*h,m>t.o.b||(n=gc(t,Jn),d=e.d+e.a+(n.gc()-1)*h,d>t.o.b)))}function hTn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;e.Ug("Orthogonal edge routing",1),k=Rt(Ht(X(t,(De(),X5)))),n=Rt(Ht(X(t,W5))),r=Rt(Ht(X(t,Pw))),P=new Uit(0,n),tt=0,h=new La(t.b,0),d=null,T=null,m=null,A=null;do T=h.b0?($=(U-1)*n,d&&($+=r),T&&($+=r),$e||Ie(Me(ne(m,(fd(),yP)))))&&(s=0,o+=T.b+n,In(A.c,T),T=new l3t(o,n),r=new Tat(0,T.f,T,n),zq(T,r),s=0),r.b.c.length==0||!Ie(Me(ne(Ji(m),(fd(),fdt))))&&(m.f>=r.o&&m.f<=r.f||r.a*.5<=m.f&&r.a*1.5>=m.f)?O5t(r,m):(h=new Tat(r.s+r.r+n,T.f,T,n),zq(T,h),O5t(h,m)),s=m.i+m.g;return In(A.c,T),A}function R_(t){var e,n,r,s;if(!(t.b==null||t.b.length<=2)&&!t.a){for(e=0,s=0;s=t.b[s+1])s+=2;else if(n0)for(r=new fl(u(Ai(t.a,o),21)),mn(),Ds(r,new _M(e)),s=new La(o.b,0);s.b0&&r>=-6?r>=0?iI(o,n-Ys(t.e),String.fromCharCode(46)):(dat(o,e-1,e-1,"0."),iI(o,e+1,af(_w,0,-Ys(r)-1))):(n-e>=1&&(iI(o,e,String.fromCharCode(46)),++n),iI(o,n,String.fromCharCode(69)),r>0&&iI(o,++n,String.fromCharCode(43)),iI(o,++n,""+OS(Pc(r)))),t.g=o.a,t.g))}function xTn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;r=Rt(Ht(X(e,(De(),sAt)))),Wt=u(X(e,$A),17).a,P=4,s=3,se=20/Wt,$=!1,m=0,h=xi;do{for(o=m!=1,A=m!=0,Ce=0,tt=t.a,Tt=0,Bt=tt.length;TtWt)?(m=2,h=xi):m==0?(m=1,h=Ce):(m=0,h=Ce)):($=Ce>=h||h-Ce0?1:ym(isNaN(r),isNaN(0)))>=0^($f(s0),(b.Math.abs(d)<=s0||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:ym(isNaN(d),isNaN(0)))>=0)?b.Math.max(d,r):($f(s0),(b.Math.abs(r)<=s0||r==0||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:ym(isNaN(r),isNaN(0)))>0?b.Math.sqrt(d*d+r*r):-b.Math.sqrt(d*d+r*r))}function gw(t,e){var n,r,s,o,h,d;if(e){if(!t.a&&(t.a=new u$),t.e==2){c$(t.a,e);return}if(e.e==1){for(s=0;s=po?Mo(n,I5t(r)):PE(n,r&js),h=new lst(10,null,0),sln(t.a,h,d-1)):(n=(h.Mm().length+o,new YC),Mo(n,h.Mm())),e.e==0?(r=e.Km(),r>=po?Mo(n,I5t(r)):PE(n,r&js)):Mo(n,e.Mm()),u(h,530).b=n.a}}function TTn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!n.dc()){for(d=0,P=0,r=n.Kc(),U=u(r.Pb(),17).a;d1&&(m=k.Hg(m,t.a,d));return m.c.length==1?u(Oe(m,m.c.length-1),238):m.c.length==2?dTn((vn(0,m.c.length),u(m.c[0],238)),(vn(1,m.c.length),u(m.c[1],238)),h,o):null}function ATn(t,e,n){var r,s,o,h,d,m,k;for(n.Ug("Find roots",1),t.a.c.length=0,s=Dr(e.b,0);s.b!=s.d.c;)r=u(Ar(s),39),r.b.b==0&&(Zt(r,(ji(),u2),(Pn(),!0)),ge(t.a,r));switch(t.a.c.length){case 0:o=new Eat(0,e,"DUMMY_ROOT"),Zt(o,(ji(),u2),(Pn(),!0)),Zt(o,F1t,!0),Zr(e.b,o);break;case 1:break;default:for(h=new Eat(0,e,nU),m=new G(t.a);m.a=b.Math.abs(r.b)?(r.b=0,o.d+o.a>h.d&&o.dh.c&&o.c0){if(e=new dmt(t.i,t.g),n=t.i,o=n<100?null:new xb(n),t.Tj())for(r=0;r0){for(d=t.g,k=t.i,KS(t),o=k<100?null:new xb(k),r=0;r>13|(t.m&15)<<9,s=t.m>>4&8191,o=t.m>>17|(t.h&255)<<5,h=(t.h&1048320)>>8,d=e.l&8191,m=e.l>>13|(e.m&15)<<9,k=e.m>>4&8191,T=e.m>>17|(e.h&255)<<5,A=(e.h&1048320)>>8,rn=n*d,Ze=r*d,On=s*d,Dn=o*d,er=h*d,m!=0&&(Ze+=n*m,On+=r*m,Dn+=s*m,er+=o*m),k!=0&&(On+=n*k,Dn+=r*k,er+=s*k),T!=0&&(Dn+=n*T,er+=r*T),A!=0&&(er+=n*A),$=rn&Il,U=(Ze&511)<<13,P=$+U,tt=rn>>22,ht=Ze>>9,Tt=(On&262143)<<4,At=(Dn&31)<<17,J=tt+ht+Tt+At,Wt=On>>18,se=Dn>>5,Ce=(er&4095)<<8,Bt=Wt+se+Ce,J+=P>>22,P&=Il,Bt+=J>>22,J&=Il,Bt&=Fg,Eu(P,J,Bt)}function Kge(t){var e,n,r,s,o,h,d;if(d=u(Oe(t.j,0),12),d.g.c.length!=0&&d.e.c.length!=0)throw at(new Ro("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(d.g.c.length!=0){for(o=Zi,n=new G(d.g);n.a4)if(t.fk(e)){if(t.al()){if(s=u(e,54),r=s.Eh(),m=r==t.e&&(t.ml()?s.yh(s.Fh(),t.il())==t.jl():-1-s.Fh()==t.Lj()),t.nl()&&!m&&!r&&s.Jh()){for(o=0;o0&&Kfe(t,d,A);for(s=new G(A);s.at.d[h.p]&&(n+=C3t(t.b,o)*u(m.b,17).a,Ob(t.a,he(o)));for(;!WC(t.a);)i4t(t.b,u(K6(t.a),17).a)}return n}function OTn(t,e){var n,r,s,o,h,d,m,k,T,A;if(T=u(X(t,(oe(),Dc)),64),r=u(Oe(t.j,0),12),T==(ve(),Hn)?Xs(r,Er):T==Er&&Xs(r,Hn),u(X(e,(De(),Ow)),181).Hc((Yl(),qw))){if(m=Rt(Ht(X(t,FT))),k=Rt(Ht(X(t,BT))),h=Rt(Ht(X(t,O3))),d=u(X(e,M3),21),d.Hc((wl(),Hg)))for(n=k,A=t.o.a/2-r.n.a,o=new G(r.f);o.a0&&(k=t.n.a/o);break;case 2:case 4:s=t.i.o.b,s>0&&(k=t.n.b/s)}Zt(t,(oe(),xv),k)}if(m=t.o,h=t.a,r)h.a=r.a,h.b=r.b,t.d=!0;else if(e!=Td&&e!=d2&&d!=bc)switch(d.g){case 1:h.a=m.a/2;break;case 2:h.a=m.a,h.b=m.b/2;break;case 3:h.a=m.a/2,h.b=m.b;break;case 4:h.b=m.b/2}else h.a=m.a/2,h.b=m.b/2}function j_(t){var e,n,r,s,o,h,d,m,k,T;if(t.Pj())if(T=t.Ej(),m=t.Qj(),T>0)if(e=new B4t(t.pj()),n=T,o=n<100?null:new xb(n),uI(t,n,e.g),s=n==1?t.Ij(4,Dt(e,0),null,0,m):t.Ij(6,e,null,-1,m),t.Mj()){for(r=new Zn(e);r.e!=r.i.gc();)o=t.Oj(ar(r),o);o?(o.nj(s),o.oj()):t.Jj(s)}else o?(o.nj(s),o.oj()):t.Jj(s);else uI(t,t.Ej(),t.Fj()),t.Jj(t.Ij(6,(mn(),co),null,-1,m));else if(t.Mj())if(T=t.Ej(),T>0){for(d=t.Fj(),k=T,uI(t,T,d),o=k<100?null:new xb(k),r=0;r1&&tl(h)*Gl(h)/2>d[0]){for(o=0;od[o];)++o;U=new xp(J,0,o+1),A=new Fq(U),T=tl(h)/Gl(h),m=Mct(A,e,new C6,n,r,s,T),ki(k1(A.e),m),V6(D7(P,A),X7),$=new xp(J,o+1,J.c.length),xxt(P,$),J.c.length=0,k=0,Kte(d,d.length,0)}else tt=P.b.c.length==0?null:Oe(P.b,0),tt!=null&&sat(P,0),k>0&&(d[k]=d[k-1]),d[k]+=tl(h)*Gl(h),++k,In(J.c,h);return J}function jTn(t,e){var n,r,s,o;n=e.b,o=new fl(n.j),s=0,r=n.j,r.c.length=0,Am(u(iw(t.b,(ve(),Hn),(Vm(),mv)),15),n),s=xO(o,s,new am,r),Am(u(iw(t.b,Hn,r2),15),n),s=xO(o,s,new bJ,r),Am(u(iw(t.b,Hn,wv),15),n),Am(u(iw(t.b,Jn,mv),15),n),Am(u(iw(t.b,Jn,r2),15),n),s=xO(o,s,new lR,r),Am(u(iw(t.b,Jn,wv),15),n),Am(u(iw(t.b,Er,mv),15),n),s=xO(o,s,new hR,r),Am(u(iw(t.b,Er,r2),15),n),s=xO(o,s,new fR,r),Am(u(iw(t.b,Er,wv),15),n),Am(u(iw(t.b,Gn,mv),15),n),s=xO(o,s,new aR,r),Am(u(iw(t.b,Gn,r2),15),n),Am(u(iw(t.b,Gn,wv),15),n)}function $Tn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$;for(d=new G(e);d.a.5?ht-=h*2*(U-.5):U<.5&&(ht+=o*2*(.5-U)),s=d.d.b,httt.a-J-T&&(ht=tt.a-J-T),d.n.a=e+ht}}function VTn(t){var e,n,r,s,o;if(r=u(X(t,(De(),Iu)),171),r==(Rh(),s2)){for(n=new rr(sr(ua(t).a.Kc(),new z));Mr(n);)if(e=u(dr(n),18),!ose(e))throw at(new fp(zut+EO(t)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(r==S3){for(o=new rr(sr(_s(t).a.Kc(),new z));Mr(o);)if(s=u(dr(o),18),!ose(s))throw at(new fp(zut+EO(t)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}}function XO(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U;if(t.e&&t.c.c>19&&(e=h7(e),m=!m),h=A6n(e),o=!1,s=!1,r=!1,t.h==aN&&t.m==0&&t.l==0)if(s=!0,o=!0,h==-1)t=OQt((WE(),a9t)),r=!0,m=!m;else return d=H6t(t,h),m&&kat(d),n&&(Zb=Eu(0,0,0)),d;else t.h>>19&&(o=!0,t=h7(t),r=!0,m=!m);return h!=-1?rbn(t,h,m,o,n):Lxt(t,e)<0?(n&&(o?Zb=h7(t):Zb=Eu(t.l,t.m,t.h)),Eu(0,0,0)):SEn(r?t:Eu(t.l,t.m,t.h),e,m,o,s,n)}function Sct(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U;if(h=t.e,m=e.e,h==0)return e;if(m==0)return t;if(o=t.d,d=e.d,o+d==2)return n=sa(t.a[0],So),r=sa(e.a[0],So),h==m?(T=Qa(n,r),U=qr(T),$=qr(Ab(T,32)),$==0?new kg(h,U):new Y2(h,2,lt(ut(Fr,1),ii,28,15,[U,$]))):(Xd(),J$(h<0?sf(r,n):sf(n,r),0)?zb(h<0?sf(r,n):sf(n,r)):FS(zb(Cp(h<0?sf(r,n):sf(n,r)))));if(h==m)P=h,A=o>=d?Pst(t.a,o,e.a,d):Pst(e.a,d,t.a,o);else{if(s=o!=d?o>d?1:-1:o5t(t.a,e.a,o),s==0)return Xd(),yA;s==1?(P=h,A=Ost(t.a,o,e.a,d)):(P=m,A=Ost(e.a,d,t.a,o))}return k=new Y2(P,A.length,A),qS(k),k}function GTn(t,e){var n,r,s,o,h,d,m;if(!(t.g>e.f||e.g>t.f)){for(n=0,r=0,h=t.w.a.ec().Kc();h.Ob();)s=u(h.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&++n;for(d=t.r.a.ec().Kc();d.Ob();)s=u(d.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&--n;for(m=e.w.a.ec().Kc();m.Ob();)s=u(m.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&++r;for(o=e.r.a.ec().Kc();o.Ob();)s=u(o.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&--r;n=0)return n;switch(Om($o(t,n))){case 2:{if(hn("",Lp(t,n.qk()).xe())){if(m=TI($o(t,n)),d=RE($o(t,n)),T=K6t(t,e,m,d),T)return T;for(s=Ekt(t,e),h=0,A=s.gc();h1)throw at(new zn(ON));for(T=Lu(t.e.Dh(),e),r=u(t.g,124),h=0;h1,k=new sd(P.b);lc(k.a)||lc(k.b);)m=u(lc(k.a)?et(k.a):et(k.b),18),A=m.c==P?m.d:m.c,b.Math.abs(dc(lt(ut(la,1),ue,8,0,[A.i.n,A.n,A.a])).b-h.b)>1&&Okn(t,m,h,o,P)}}function JTn(t){var e,n,r,s,o,h;if(s=new La(t.e,0),r=new La(t.a,0),t.d)for(n=0;nxlt;){for(o=e,h=0;b.Math.abs(e-o)0),s.a.Xb(s.c=--s.b),d7n(t,t.b-h,o,r,s),ur(s.b0),r.a.Xb(r.c=--r.b)}if(!t.d)for(n=0;n0?(t.f[T.p]=$/(T.e.c.length+T.g.c.length),t.c=b.Math.min(t.c,t.f[T.p]),t.b=b.Math.max(t.b,t.f[T.p])):d&&(t.f[T.p]=$)}}function t9n(t){t.b=null,t.bb=null,t.fb=null,t.qb=null,t.a=null,t.c=null,t.d=null,t.e=null,t.f=null,t.n=null,t.M=null,t.L=null,t.Q=null,t.R=null,t.K=null,t.db=null,t.eb=null,t.g=null,t.i=null,t.j=null,t.k=null,t.gb=null,t.o=null,t.p=null,t.q=null,t.r=null,t.$=null,t.ib=null,t.S=null,t.T=null,t.t=null,t.s=null,t.u=null,t.v=null,t.w=null,t.B=null,t.A=null,t.C=null,t.D=null,t.F=null,t.G=null,t.H=null,t.I=null,t.J=null,t.P=null,t.Z=null,t.U=null,t.V=null,t.W=null,t.X=null,t.Y=null,t._=null,t.ab=null,t.cb=null,t.hb=null,t.nb=null,t.lb=null,t.mb=null,t.ob=null,t.pb=null,t.jb=null,t.kb=null,t.N=!1,t.O=!1}function e9n(t,e,n){var r,s,o,h;for(n.Ug("Graph transformation ("+t.a+")",1),h=Rm(e.a),o=new G(e.b);o.a=d.b.c)&&(d.b=e),(!d.c||e.c<=d.c.c)&&(d.d=d.c,d.c=e),(!d.e||e.d>=d.e.d)&&(d.e=e),(!d.f||e.d<=d.f.d)&&(d.f=e);return r=new _H((u7(),bv)),MI(t,l4e,new hl(lt(ut(GN,1),Ln,382,0,[r]))),h=new _H(y3),MI(t,u4e,new hl(lt(ut(GN,1),Ln,382,0,[h]))),s=new _H(v3),MI(t,c4e,new hl(lt(ut(GN,1),Ln,382,0,[s]))),o=new _H(F5),MI(t,o4e,new hl(lt(ut(GN,1),Ln,382,0,[o]))),Qot(r.c,bv),Qot(s.c,v3),Qot(o.c,F5),Qot(h.c,y3),d.a.c.length=0,Hs(d.a,r.c),Hs(d.a,Bh(s.c)),Hs(d.a,o.c),Hs(d.a,Bh(h.c)),d}function i9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U;for(e.Ug(cwe,1),$=Rt(Ht(ne(t,(N0(),B3)))),h=Rt(Ht(ne(t,(fd(),iL)))),d=u(ne(t,rL),107),M4t((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a)),T=Hge((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a),$,h),!t.a&&(t.a=new Jt(bi,t,10,11)),k=new G(T);k.a0&&(t.a=m+($-1)*o,e.c.b+=t.a,e.f.b+=t.a)),U.a.gc()!=0&&(P=new Uit(1,o),$=Xkt(P,e,U,J,e.f.b+m-e.c.b),$>0&&(e.f.b+=m+($-1)*o))}function Xge(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(T=Rt(Ht(X(t,(De(),_v)))),r=Rt(Ht(X(t,pAt))),P=new iM,Zt(P,_v,T+r),k=e,ht=k.d,J=k.c.i,Tt=k.d.i,tt=ymt(J.c),At=ymt(Tt.c),s=new fe,A=tt;A<=At;A++)d=new Ig(t),y(d,(Un(),fa)),Zt(d,(oe(),Li),k),Zt(d,bs,(ka(),hu)),Zt(d,KG,P),$=u(Oe(t.b,A),30),A==tt?Xy(d,$.a.c.length-n,$):Aa(d,$),Bt=Rt(Ht(X(k,Hp))),Bt<0&&(Bt=0,Zt(k,Hp,Bt)),d.o.b=Bt,U=b.Math.floor(Bt/2),h=new Yc,Xs(h,(ve(),Gn)),hc(h,d),h.n.b=U,m=new Yc,Xs(m,Jn),hc(m,d),m.n.b=U,xa(k,h),o=new Pm,Qo(o,k),Zt(o,Vo,null),Xa(o,m),xa(o,ht),Kvn(d,k,o),In(s.c,o),k=o;return s}function _ct(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;for(m=u(Pp(t,(ve(),Gn)).Kc().Pb(),12).e,$=u(Pp(t,Jn).Kc().Pb(),12).g,d=m.c.length,At=rd(u(Oe(t.j,0),12));d-- >0;){for(J=(vn(0,m.c.length),u(m.c[0],18)),s=(vn(0,$.c.length),u($.c[0],18)),Tt=s.d.e,o=Xo(Tt,s,0),A1n(J,s.d,o),Xa(s,null),xa(s,null),U=J.a,e&&Zr(U,new io(At)),r=Dr(s.a,0);r.b!=r.d.c;)n=u(Ar(r),8),Zr(U,new io(n));for(ht=J.b,P=new G(s.b);P.ah)&&qs(t.b,u(tt.b,18));++d}o=h}}}function Kkt(t,e){var n;if(e==null||hn(e,Vu)||e.length==0&&t.k!=(Fp(),Qk))return null;switch(t.k.g){case 1:return kH(e,uT)?(Pn(),bT):kH(e,jlt)?(Pn(),t2):null;case 2:try{return he(lh(e,Ga,xi))}catch(r){if(r=es(r),Lt(r,130))return null;throw at(r)}case 4:try{return Jy(e)}catch(r){if(r=es(r),Lt(r,130))return null;throw at(r)}case 3:return e;case 5:return bue(t),D1e(t,e);case 6:return bue(t),s6n(t,t.a,e);case 7:try{return n=bxn(t),n.cg(e),n}catch(r){if(r=es(r),Lt(r,33))return null;throw at(r)}default:throw at(new Ro("Invalid type set for this layout option."))}}function Wkt(t){var e;switch(t.d){case 1:{if(t.Sj())return t.o!=-2;break}case 2:{if(t.Sj())return t.o==-2;break}case 3:case 5:case 4:case 6:case 7:return t.o>-2;default:return!1}switch(e=t.Rj(),t.p){case 0:return e!=null&&Ie(Me(e))!=bS(t.k,0);case 1:return e!=null&&u(e,222).a!=qr(t.k)<<24>>24;case 2:return e!=null&&u(e,180).a!=(qr(t.k)&js);case 6:return e!=null&&bS(u(e,168).a,t.k);case 5:return e!=null&&u(e,17).a!=qr(t.k);case 7:return e!=null&&u(e,191).a!=qr(t.k)<<16>>16;case 3:return e!=null&&Rt(Ht(e))!=t.j;case 4:return e!=null&&u(e,161).a!=t.j;default:return e==null?t.n!=null:!Ti(e,t.n)}}function QO(t,e,n){var r,s,o,h;return t.ol()&&t.nl()&&(h=jit(t,u(n,58)),$t(h)!==$t(n))?(t.xj(e),t.Dj(e,Zse(t,e,h)),t.al()&&(o=(s=u(n,54),t.ml()?t.kl()?s.Th(t.b,yo(u(En($u(t.b),t.Lj()),19)).n,u(En($u(t.b),t.Lj()).Hk(),29).kk(),null):s.Th(t.b,ns(s.Dh(),yo(u(En($u(t.b),t.Lj()),19))),null,null):s.Th(t.b,-1-t.Lj(),null,null)),!u(h,54).Ph()&&(o=(r=u(h,54),t.ml()?t.kl()?r.Rh(t.b,yo(u(En($u(t.b),t.Lj()),19)).n,u(En($u(t.b),t.Lj()).Hk(),29).kk(),o):r.Rh(t.b,ns(r.Dh(),yo(u(En($u(t.b),t.Lj()),19))),null,o):r.Rh(t.b,-1-t.Lj(),null,o))),o&&o.oj()),Hl(t.b)&&t.Jj(t.Ij(9,n,h,e,!1)),h):n}function Qge(t){var e,n,r,s,o,h,d,m,k,T;for(r=new fe,h=new G(t.e.a);h.a0&&(h=b.Math.max(h,ece(t.C.b+r.d.b,s))),T=r,A=s,P=o;t.C&&t.C.c>0&&($=P+t.C.c,k&&($+=T.d.c),h=b.Math.max(h,(Z1(),$f(gd),b.Math.abs(A-1)<=gd||A==1||isNaN(A)&&isNaN(1)?0:$/(1-A)))),n.n.b=0,n.a.a=h}function Zge(t,e){var n,r,s,o,h,d,m,k,T,A,P,$;if(n=u(Io(t.b,e),127),m=u(u(Ai(t.r,e),21),87),m.dc()){n.n.d=0,n.n.a=0;return}for(k=t.u.Hc((wl(),Hg)),h=0,t.A.Hc((Yl(),qw))&&A0e(t,e),d=m.Kc(),T=null,P=0,A=0;d.Ob();)r=u(d.Pb(),117),o=Rt(Ht(r.b.of((hz(),$U)))),s=r.b.Mf().b,T?($=A+T.d.a+t.w+r.d.d,h=b.Math.max(h,(Z1(),$f(gd),b.Math.abs(P-o)<=gd||P==o||isNaN(P)&&isNaN(o)?0:$/(o-P)))):t.C&&t.C.d>0&&(h=b.Math.max(h,ece(t.C.d+r.d.d,o))),T=r,P=o,A=s;t.C&&t.C.a>0&&($=A+t.C.a,k&&($+=T.d.a),h=b.Math.max(h,(Z1(),$f(gd),b.Math.abs(P-1)<=gd||P==1||isNaN(P)&&isNaN(1)?0:$/(1-P)))),n.n.d=0,n.a.b=h}function o9n(t,e,n,r,s,o,h,d){var m,k,T,A,P,$,U,J,tt,ht;if(U=!1,k=ekt(n.q,e.f+e.b-n.q.f),$=r.f>e.b&&d,ht=s-(n.q.e+k-h),A=(m=B_(r,ht,!1),m.a),$&&A>r.f)return!1;if($){for(P=0,tt=new G(e.d);tt.a=(vn(o,t.c.length),u(t.c[o],186)).e,!$&&A>e.b&&!T)?!1:((T||$||A<=e.b)&&(T&&A>e.b?(n.d=A,$I(n,Rfe(n,A))):(nfe(n.q,k),n.c=!0),$I(r,s-(n.s+n.r)),kO(r,n.q.e+n.q.d,e.f),zq(e,r),t.c.length>o&&(CO((vn(o,t.c.length),u(t.c[o],186)),r),(vn(o,t.c.length),u(t.c[o],186)).a.c.length==0&&Ep(t,o)),U=!0),U)}function tpe(t,e,n){var r,s,o,h,d,m;for(this.g=t,d=e.d.length,m=n.d.length,this.d=Vt(V0,jp,10,d+m,0,1),h=0;h0?Jst(this,this.f/this.a):td(e.g,e.d[0]).a!=null&&td(n.g,n.d[0]).a!=null?Jst(this,(Rt(td(e.g,e.d[0]).a)+Rt(td(n.g,n.d[0]).a))/2):td(e.g,e.d[0]).a!=null?Jst(this,td(e.g,e.d[0]).a):td(n.g,n.d[0]).a!=null&&Jst(this,td(n.g,n.d[0]).a)}function c9n(t,e){var n,r,s,o,h,d,m,k,T,A;for(t.a=new Iee(Vpn(gL)),r=new G(e.a);r.a=1&&(tt-h>0&&A>=0?(m.n.a+=J,m.n.b+=o*h):tt-h<0&&T>=0&&(m.n.a+=J*tt,m.n.b+=o));t.o.a=e.a,t.o.b=e.b,Zt(t,(De(),Ow),(Yl(),r=u(y1(xL),9),new _h(r,u(Ff(r,r.length),9),0)))}function h9n(t,e,n,r,s,o){var h;if(!(e==null||!Uat(e,BIt,RIt)))throw at(new zn("invalid scheme: "+e));if(!t&&!(n!=null&&$d(n,Hu(35))==-1&&n.length>0&&(qn(0,n.length),n.charCodeAt(0)!=47)))throw at(new zn("invalid opaquePart: "+n));if(t&&!(e!=null&&BM(WK,e.toLowerCase()))&&!(n==null||!Uat(n,CL,SL)))throw at(new zn(Fme+n));if(t&&e!=null&&BM(WK,e.toLowerCase())&&!Vyn(n))throw at(new zn(Fme+n));if(!X2n(r))throw at(new zn("invalid device: "+r));if(!Nbn(s))throw h=s==null?"invalid segments: null":"invalid segment: "+Dbn(s),at(new zn(h));if(!(o==null||$d(o,Hu(35))==-1))throw at(new zn("invalid query: "+o))}function f9n(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;if(n.Ug("Network simplex layering",1),t.b=e,ht=u(X(e,(De(),$A)),17).a*4,tt=t.b.a,tt.c.length<1){n.Vg();return}for(o=lEn(t,tt),J=null,s=Dr(o,0);s.b!=s.d.c;){for(r=u(Ar(s),15),d=ht*Ys(b.Math.sqrt(r.gc())),h=CEn(r),uct(pwt(frn(bwt(mit(h),d),J),!0),n.eh(1)),P=t.b.b,U=new G(h.a);U.a1)for(J=Vt(Fr,ii,28,t.b.b.c.length,15,1),A=0,k=new G(t.b.b);k.a0){EH(t,n,0),n.a+=String.fromCharCode(r),s=Nwn(e,o),EH(t,n,s),o+=s-1;continue}r==39?o+10&&U.a<=0){m.c.length=0,In(m.c,U);break}$=U.i-U.d,$>=d&&($>d&&(m.c.length=0,d=$),In(m.c,U))}m.c.length!=0&&(h=u(Oe(m,MH(s,m.c.length)),118),At.a.Bc(h)!=null,h.g=T++,Fkt(h,e,n,r),m.c.length=0)}for(tt=t.c.length+1,P=new G(t);P.aVs||e.o==Fw&&T=d&&s<=m)d<=s&&o<=m?(n[T++]=s,n[T++]=o,r+=2):d<=s?(n[T++]=s,n[T++]=m,t.b[r]=m+1,h+=2):o<=m?(n[T++]=d,n[T++]=o,r+=2):(n[T++]=d,n[T++]=m,t.b[r]=m+1);else if(mKb)&&d<10);mwt(t.c,new Gx),ipe(t),oln(t.c),n9n(t.f)}function x9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(n=u(X(t,(De(),bs)),101),h=t.f,o=t.d,d=h.a+o.b+o.c,m=0-o.d-t.c.b,T=h.b+o.d+o.a-t.c.b,k=new fe,A=new fe,s=new G(e);s.a=2){for(m=Dr(n,0),h=u(Ar(m),8),d=u(Ar(m),8);d.a0&&aO(k,!0,(Rs(),tc)),d.k==(Un(),Ms)&&zee(k),hi(t.f,d,e)}}function T9n(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(s=u(X(t,(ji(),JA)),27),k=xi,T=xi,d=Ga,m=Ga,At=Dr(t.b,0);At.b!=At.d.c;)ht=u(Ar(At),39),$=ht.e,U=ht.f,k=b.Math.min(k,$.a-U.a/2),T=b.Math.min(T,$.b-U.b/2),d=b.Math.max(d,$.a+U.a/2),m=b.Math.max(m,$.b+U.b/2);for(P=u(ne(s,(Cc(),SLt)),107),Tt=Dr(t.b,0);Tt.b!=Tt.d.c;)ht=u(Ar(Tt),39),A=X(ht,JA),Lt(A,207)&&(o=u(A,27),Ch(o,ht.e.a,ht.e.b),$O(o,ht));for(tt=Dr(t.a,0);tt.b!=tt.d.c;)J=u(Ar(tt),65),r=u(X(J,JA),74),r&&(e=J.a,n=b5(r,!0,!0),KO(e,n));Bt=d-k+(P.b+P.c),h=m-T+(P.d+P.a),Ie(Me(ne(s,(ai(),R3))))||rv(s,Bt,h,!1,!1),Mi(s,ox,Bt-(P.b+P.c)),Mi(s,ax,h-(P.d+P.a))}function ape(t,e){var n,r,s,o,h,d,m,k,T,A;for(m=!0,s=0,k=t.g[e.p],T=e.o.b+t.o,n=t.d[e.p][2],Mh(t.b,k,he(u(Oe(t.b,k),17).a-1+n)),Mh(t.c,k,Rt(Ht(Oe(t.c,k)))-T+n*t.f),++k,k>=t.j?(++t.j,ge(t.b,he(1)),ge(t.c,T)):(r=t.d[e.p][1],Mh(t.b,k,he(u(Oe(t.b,k),17).a+1-r)),Mh(t.c,k,Rt(Ht(Oe(t.c,k)))+T-r*t.f)),(t.r==(cf(),cP)&&(u(Oe(t.b,k),17).a>t.k||u(Oe(t.b,k-1),17).a>t.k)||t.r==uP&&(Rt(Ht(Oe(t.c,k)))>t.n||Rt(Ht(Oe(t.c,k-1)))>t.n))&&(m=!1),h=new rr(sr(ua(e).a.Kc(),new z));Mr(h);)o=u(dr(h),18),d=o.c.i,t.g[d.p]==k&&(A=ape(t,d),s=s+u(A.a,17).a,m=m&&Ie(Me(A.b)));return t.g[e.p]=k,s=s+t.d[e.p][0],new Ws(he(s),(Pn(),!!m))}function ope(t,e){var n,r,s,o,h;n=Rt(Ht(X(e,(De(),Yf)))),n<2&&Zt(e,Yf,2),r=u(X(e,ph),88),r==(Rs(),Ed)&&Zt(e,ph,fH(e)),s=u(X(e,T6e),17),s.a==0?Zt(e,(oe(),Kk),new Kat):Zt(e,(oe(),Kk),new pq(s.a)),o=Me(X(e,BA)),o==null&&Zt(e,BA,(Pn(),$t(X(e,zg))===$t((Lg(),WT)))),ms(new ln(null,new gn(e.a,16)),new lp(t)),ms(fc(new ln(null,new gn(e.b,16)),new p4),new $C(t)),h=new epe(e),Zt(e,(oe(),G5),h),EI(t.a),E1(t.a,(Ua(),Wf),u(X(e,Dw),188)),E1(t.a,H0,u(X(e,Iw),188)),E1(t.a,Qc,u(X(e,FA),188)),E1(t.a,cu,u(X(e,UG),188)),E1(t.a,Zo,Tpn(u(X(e,zg),223))),kmt(t.a,vSn(e)),Zt(e,Yft,XO(t.a,e))}function Xkt(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht;for(A=new _r,h=new fe,s1e(t,n,t.d.Ag(),h,A),s1e(t,r,t.d.Bg(),h,A),t.b=.2*(J=hde(fc(new ln(null,new gn(h,16)),new TZ)),tt=hde(fc(new ln(null,new gn(h,16)),new CZ)),b.Math.min(J,tt)),o=0,d=0;d=2&&(ht=Dde(h,!0,P),!t.e&&(t.e=new $Ut(t)),Dwn(t.e,ht,h,t.b)),ffe(h,P),D9n(h),$=-1,T=new G(h);T.ad)}function cpe(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;for(k=Zi,T=Zi,d=Vs,m=Vs,P=new G(e.i);P.a-1){for(s=Dr(d,0);s.b!=s.d.c;)r=u(Ar(s),131),r.v=h;for(;d.b!=0;)for(r=u(Tot(d,0),131),n=new G(r.i);n.a-1){for(o=new G(d);o.a0)&&(W(m,b.Math.min(m.o,s.o-1)),q(m,m.i-1),m.i==0&&In(d.c,m))}}function lpe(t,e,n,r,s){var o,h,d,m;return m=Zi,h=!1,d=zkt(t,ia(new ae(e.a,e.b),t),ki(new ae(n.a,n.b),s),ia(new ae(r.a,r.b),n)),o=!!d&&!(b.Math.abs(d.a-t.a)<=lv&&b.Math.abs(d.b-t.b)<=lv||b.Math.abs(d.a-e.a)<=lv&&b.Math.abs(d.b-e.b)<=lv),d=zkt(t,ia(new ae(e.a,e.b),t),n,s),d&&((b.Math.abs(d.a-t.a)<=lv&&b.Math.abs(d.b-t.b)<=lv)==(b.Math.abs(d.a-e.a)<=lv&&b.Math.abs(d.b-e.b)<=lv)||o?m=b.Math.min(m,RS(ia(d,n))):h=!0),d=zkt(t,ia(new ae(e.a,e.b),t),r,s),d&&(h||(b.Math.abs(d.a-t.a)<=lv&&b.Math.abs(d.b-t.b)<=lv)==(b.Math.abs(d.a-e.a)<=lv&&b.Math.abs(d.b-e.b)<=lv)||o)&&(m=b.Math.min(m,RS(ia(d,r)))),m}function hpe(t){wm(t,new dw(p$(gm(hm(dm(fm(new G1,Yb),c2e),"Minimizes the stress within a layout using stress majorization. Stress exists if the euclidean distance between a pair of nodes doesn't match their graph theoretic distance, that is, the shortest path between the two nodes. The method allows to specify individual edge lengths."),new U1),Du))),le(t,Yb,Y_,Se(kCt)),le(t,Yb,OV,(Pn(),!0)),le(t,Yb,_5,Se(K3e)),le(t,Yb,Ik,Se(W3e)),le(t,Yb,Mk,Se(Y3e)),le(t,Yb,nT,Se(G3e)),le(t,Yb,X_,Se(TCt)),le(t,Yb,rT,Se(X3e)),le(t,Yb,K8t,Se(xCt)),le(t,Yb,Y8t,Se(vCt)),le(t,Yb,X8t,Se(yCt)),le(t,Yb,Q8t,Se(ECt)),le(t,Yb,W8t,Se(YU))}function M9n(t){var e,n,r,s,o,h,d,m;for(e=null,r=new G(t);r.a0&&n.c==0&&(!e&&(e=new fe),In(e.c,n));if(e)for(;e.c.length!=0;){if(n=u(Ep(e,0),239),n.b&&n.b.c.length>0){for(o=(!n.b&&(n.b=new fe),new G(n.b));o.aXo(t,n,0))return new Ws(s,n)}else if(Rt(td(s.g,s.d[0]).a)>Rt(td(n.g,n.d[0]).a))return new Ws(s,n)}for(d=(!n.e&&(n.e=new fe),n.e).Kc();d.Ob();)h=u(d.Pb(),239),m=(!h.b&&(h.b=new fe),h.b),Fy(0,m.c.length),sS(m.c,0,n),h.c==m.c.length&&In(e.c,h)}return null}function I9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;for(e.Ug("Interactive crossing minimization",1),h=0,o=new G(t.b);o.a0&&(n+=m.n.a+m.o.a/2,++A),U=new G(m.j);U.a0&&(n/=A),ht=Vt(ma,No,28,r.a.c.length,15,1),d=0,k=new G(r.a);k.a=d&&s<=m)d<=s&&o<=m?r+=2:d<=s?(t.b[r]=m+1,h+=2):o<=m?(n[T++]=s,n[T++]=d-1,r+=2):(n[T++]=s,n[T++]=d-1,t.b[r]=m+1,h+=2);else if(m2?(T=new fe,Hs(T,new xp(ht,1,ht.b)),o=Jpe(T,At+t.a),Tt=new Wot(o),Qo(Tt,e),In(n.c,Tt)):r?Tt=u(tr(t.b,O0(e)),272):Tt=u(tr(t.b,qb(e)),272),m=O0(e),r&&(m=qb(e)),h=M4n(tt,m),k=At+t.a,h.a?(k+=b.Math.abs(tt.b-A.b),J=new ae(A.a,(A.b+tt.b)/2)):(k+=b.Math.abs(tt.a-A.a),J=new ae((A.a+tt.a)/2,A.b)),r?hi(t.d,e,new pxt(Tt,h,J,k)):hi(t.c,e,new pxt(Tt,h,J,k)),hi(t.b,e,Tt),U=(!e.n&&(e.n=new Jt(Po,e,1,7)),e.n),$=new Zn(U);$.e!=$.i.gc();)P=u(ar($),135),s=HO(t,P,!0,0,0),In(n.c,s)}function O9n(t){var e,n,r,s,o,h,d;if(!t.A.dc()){if(t.A.Hc((Yl(),RP))&&(u(Io(t.b,(ve(),Hn)),127).k=!0,u(Io(t.b,Er),127).k=!0,e=t.q!=(ka(),Y0)&&t.q!=hu,Qj(u(Io(t.b,Jn),127),e),Qj(u(Io(t.b,Gn),127),e),Qj(t.g,e),t.A.Hc(qw)&&(u(Io(t.b,Hn),127).j=!0,u(Io(t.b,Er),127).j=!0,u(Io(t.b,Jn),127).k=!0,u(Io(t.b,Gn),127).k=!0,t.g.k=!0)),t.A.Hc(BP))for(t.a.j=!0,t.a.k=!0,t.g.j=!0,t.g.k=!0,d=t.B.Hc((Ml(),kL)),s=not(),o=0,h=s.length;o0),u(T.a.Xb(T.c=--T.b),18));o!=r&&T.b>0;)t.a[o.p]=!0,t.a[r.p]=!0,o=(ur(T.b>0),u(T.a.Xb(T.c=--T.b),18));T.b>0&&Kl(T)}}function dpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$;if(!t.b)return!1;for(h=null,P=null,m=new Rst(null,null),s=1,m.a[1]=t.b,A=m;A.a[s];)k=s,d=P,P=A,A=A.a[s],r=t.a.Ne(e,A.d),s=r<0?0:1,r==0&&(!n.c||Nc(A.e,n.d))&&(h=A),!(A&&A.b)&&!vy(A.a[s])&&(vy(A.a[1-s])?P=P.a[k]=Wq(A,s):vy(A.a[1-s])||($=P.a[1-k],$&&(!vy($.a[1-k])&&!vy($.a[k])?(P.b=!1,$.b=!0,A.b=!0):(o=d.a[1]==P?1:0,vy($.a[k])?d.a[o]=qre(P,k):vy($.a[1-k])&&(d.a[o]=Wq(P,k)),A.b=d.a[o].b=!0,d.a[o].a[0].b=!1,d.a[o].a[1].b=!1))));return h&&(n.b=!0,n.d=h.e,A!=h&&(T=new Rst(A.d,A.e),F3n(t,m,h,T),P==h&&(P=T)),P.a[P.a[1]==A?1:0]=A.a[A.a[0]?0:1],--t.c),t.b=m.a[1],t.b&&(t.b.b=!1),n.b}function F9n(t){var e,n,r,s,o,h,d,m,k,T,A,P;for(s=new G(t.a.a.b);s.a0?s-=864e5:s+=864e5,m=new avt(Qa(Pc(e.q.getTime()),s))),T=new I4,k=t.a.length,o=0;o=97&&r<=122||r>=65&&r<=90){for(h=o+1;h=k)throw at(new zn("Missing trailing '"));h+1=14&&T<=16))?e.a._b(r)?(n.a?ni(n.a,n.b):n.a=new eh(n.d),mS(n.a,"[...]")):(d=nw(r),k=new LS(e),Eg(n,ppe(d,k))):Lt(r,183)?Eg(n,g5n(u(r,183))):Lt(r,195)?Eg(n,Zyn(u(r,195))):Lt(r,201)?Eg(n,u4n(u(r,201))):Lt(r,2111)?Eg(n,t3n(u(r,2111))):Lt(r,53)?Eg(n,d5n(u(r,53))):Lt(r,376)?Eg(n,M5n(u(r,376))):Lt(r,846)?Eg(n,f5n(u(r,846))):Lt(r,109)&&Eg(n,h5n(u(r,109))):Eg(n,r==null?Vu:rc(r));return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function q7(t,e){var n,r,s,o;o=t.F,e==null?(t.F=null,p7(t,null)):(t.F=(Wn(e),e),r=$d(e,Hu(60)),r!=-1?(s=(Da(0,r,e.length),e.substr(0,r)),$d(e,Hu(46))==-1&&!hn(s,kk)&&!hn(s,lA)&&!hn(s,wU)&&!hn(s,hA)&&!hn(s,fA)&&!hn(s,dA)&&!hn(s,gA)&&!hn(s,pA)&&(s=Yme),n=cz(e,Hu(62)),n!=-1&&(s+=""+(qn(n+1,e.length+1),e.substr(n+1))),p7(t,s)):(s=e,$d(e,Hu(46))==-1&&(r=$d(e,Hu(91)),r!=-1&&(s=(Da(0,r,e.length),e.substr(0,r))),!hn(s,kk)&&!hn(s,lA)&&!hn(s,wU)&&!hn(s,hA)&&!hn(s,fA)&&!hn(s,dA)&&!hn(s,gA)&&!hn(s,pA)?(s=Yme,r!=-1&&(s+=""+(qn(r,e.length+1),e.substr(r)))):s=e),p7(t,s),s==e&&(t.F=t.D))),t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,5,o,e))}function bpe(t,e){var n,r,s,o,h,d,m,k,T,A;if(m=e.length-1,d=(qn(m,e.length),e.charCodeAt(m)),d==93){if(h=$d(e,Hu(91)),h>=0)return s=z2n(t,(Da(1,h,e.length),e.substr(1,h-1))),T=(Da(h+1,m,e.length),e.substr(h+1,m-(h+1))),dSn(t,T,s)}else{if(n=-1,h9t==null&&(h9t=new RegExp("\\d")),h9t.test(String.fromCharCode(d))&&(n=Tvt(e,Hu(46),m-1),n>=0)){r=u(Ist(t,roe(t,(Da(1,n,e.length),e.substr(1,n-1))),!1),61),k=0;try{k=lh((qn(n+1,e.length+1),e.substr(n+1)),Ga,xi)}catch(P){throw P=es(P),Lt(P,130)?(o=P,at(new _q(o))):at(P)}if(k>16==-10?n=u(t.Cb,291).Yk(e,n):t.Db>>16==-15&&(!e&&(e=(wn(),Sd)),!k&&(k=(wn(),Sd)),t.Cb.Yh()&&(m=new Tg(t.Cb,1,13,k,e,Np(Al(u(t.Cb,62)),t),!1),n?n.nj(m):n=m));else if(Lt(t.Cb,90))t.Db>>16==-23&&(Lt(e,90)||(e=(wn(),xf)),Lt(k,90)||(k=(wn(),xf)),t.Cb.Yh()&&(m=new Tg(t.Cb,1,10,k,e,Np(Wc(u(t.Cb,29)),t),!1),n?n.nj(m):n=m));else if(Lt(t.Cb,456))for(d=u(t.Cb,850),h=(!d.b&&(d.b=new s$(new Gnt)),d.b),o=(r=new sw(new mr(h.a).a),new a$(r));o.a.b;)s=u(Um(o.a).ld(),89),n=H7(s,QH(s,d),n)}return n}function z9n(t,e){var n,r,s,o,h,d,m,k,T,A,P;for(h=Ie(Me(ne(t,(De(),L3)))),P=u(ne(t,M3),21),m=!1,k=!1,A=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));A.e!=A.i.gc()&&(!m||!k);){for(o=u(ar(A),123),d=0,s=A0(ah(lt(ut(gh,1),Ln,20,0,[(!o.d&&(o.d=new kn(Ts,o,8,5)),o.d),(!o.e&&(o.e=new kn(Ts,o,7,4)),o.e)])));Mr(s)&&(r=u(dr(s),74),T=h&&Zm(r)&&Ie(Me(ne(r,Mw))),n=Wge((!r.b&&(r.b=new kn(vr,r,4,7)),r.b),o)?t==Ji(Jo(u(Dt((!r.c&&(r.c=new kn(vr,r,5,8)),r.c),0),84))):t==Ji(Jo(u(Dt((!r.b&&(r.b=new kn(vr,r,4,7)),r.b),0),84))),!((T||n)&&(++d,d>1))););(d>0||P.Hc((wl(),Hg))&&(!o.n&&(o.n=new Jt(Po,o,1,7)),o.n).i>0)&&(m=!0),d>1&&(k=!0)}m&&e.Fc((Co(),Uh)),k&&e.Fc((Co(),LA))}function wpe(t){var e,n,r,s,o,h,d,m,k,T,A,P;if(P=u(ne(t,(ai(),jw)),21),P.dc())return null;if(d=0,h=0,P.Hc((Yl(),RP))){for(T=u(ne(t,fL),101),r=2,n=2,s=2,o=2,e=Ji(t)?u(ne(Ji(t),Rw),88):u(ne(t,Rw),88),k=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));k.e!=k.i.gc();)if(m=u(ar(k),123),A=u(ne(m,hx),64),A==(ve(),bc)&&(A=Pkt(m,e),Mi(m,hx,A)),T==(ka(),hu))switch(A.g){case 1:r=b.Math.max(r,m.i+m.g);break;case 2:n=b.Math.max(n,m.j+m.f);break;case 3:s=b.Math.max(s,m.i+m.g);break;case 4:o=b.Math.max(o,m.j+m.f)}else switch(A.g){case 1:r+=m.g+2;break;case 2:n+=m.f+2;break;case 3:s+=m.g+2;break;case 4:o+=m.f+2}d=b.Math.max(r,s),h=b.Math.max(n,o)}return rv(t,d,h,!0,!0)}function Act(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(Tt=u(nc(Pq(_i(new ln(null,new gn(e.d,16)),new aUt(n)),new oUt(n)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),A=xi,T=Ga,m=new G(e.b.j);m.a0,k?k&&(P=ht.p,h?++P:--P,A=u(Oe(ht.c.a,P),10),r=$ce(A),$=!(Jot(r,se,n[0])||lee(r,se,n[0]))):$=!0),U=!1,Wt=e.D.i,Wt&&Wt.c&&d.e&&(T=h&&Wt.p>0||!h&&Wt.p=0){for(m=null,d=new La(T.a,k+1);d.bh?1:ym(isNaN(0),isNaN(h)))<0&&($f(s0),(b.Math.abs(h-1)<=s0||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:ym(isNaN(h),isNaN(1)))<0)&&($f(s0),(b.Math.abs(0-d)<=s0||d==0||isNaN(0)&&isNaN(d)?0:0d?1:ym(isNaN(0),isNaN(d)))<0)&&($f(s0),(b.Math.abs(d-1)<=s0||d==1||isNaN(d)&&isNaN(1)?0:d<1?-1:d>1?1:ym(isNaN(d),isNaN(1)))<0)),o)}function K9n(t){var e,n,r,s;if(n=t.D!=null?t.D:t.B,e=$d(n,Hu(91)),e!=-1){r=(Da(0,e,n.length),n.substr(0,e)),s=new dp;do s.a+="[";while((e=TE(n,91,++e))!=-1);hn(r,kk)?s.a+="Z":hn(r,lA)?s.a+="B":hn(r,wU)?s.a+="C":hn(r,hA)?s.a+="D":hn(r,fA)?s.a+="F":hn(r,dA)?s.a+="I":hn(r,gA)?s.a+="J":hn(r,pA)?s.a+="S":(s.a+="L",s.a+=""+r,s.a+=";");try{return null}catch(o){if(o=es(o),!Lt(o,63))throw at(o)}}else if($d(n,Hu(46))==-1){if(hn(n,kk))return Fl;if(hn(n,lA))return ul;if(hn(n,wU))return Yh;if(hn(n,hA))return ma;if(hn(n,fA))return Y3;if(hn(n,dA))return Fr;if(hn(n,gA))return x2;if(hn(n,pA))return wx}return null}function W9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;for(t.e=e,d=W5n(e),se=new fe,r=new G(d);r.a=0&&J=k.c.c.length?T=k3t((Un(),xs),fa):T=k3t((Un(),fa),fa),T*=2,o=n.a.g,n.a.g=b.Math.max(o,o+(T-o)),h=n.b.g,n.b.g=b.Math.max(h,h+(T-h)),s=e}}function J9n(t){var e,n,r,s;for(ms(_i(new ln(null,new gn(t.a.b,16)),new rR),new aJ),Oyn(t),ms(_i(new ln(null,new gn(t.a.b,16)),new oJ),new cJ),t.c==(Lg(),e8)&&(ms(_i(fc(new ln(null,new gn(new cr(t.f),1)),new uJ),new lJ),new ZVt(t)),ms(_i(Wo(fc(fc(new ln(null,new gn(t.d.b,16)),new hJ),new iR),new fJ),new sR),new eUt(t))),s=new ae(Zi,Zi),e=new ae(Vs,Vs),r=new G(t.a.b);r.a0&&(e.a+=ao),wV(u(ar(d),167),e);for(e.a+=But,m=new j6((!r.c&&(r.c=new kn(vr,r,5,8)),r.c));m.e!=m.i.gc();)m.e>0&&(e.a+=ao),wV(u(ar(m),167),e);e.a+=")"}}function Z9n(t,e,n){var r,s,o,h,d,m,k,T;for(m=new Zn((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a));m.e!=m.i.gc();)for(d=u(ar(m),27),s=new rr(sr(Og(d).a.Kc(),new z));Mr(s);){if(r=u(dr(s),74),!r.b&&(r.b=new kn(vr,r,4,7)),!(r.b.i<=1&&(!r.c&&(r.c=new kn(vr,r,5,8)),r.c.i<=1)))throw at(new L6("Graph must not contain hyperedges."));if(!S_(r)&&d!=Jo(u(Dt((!r.c&&(r.c=new kn(vr,r,5,8)),r.c),0),84)))for(k=new mZt,Qo(k,r),Zt(k,(Pb(),$k),r),Dnt(k,u(Ko(Eo(n.f,d)),153)),v6(k,u(tr(n,Jo(u(Dt((!r.c&&(r.c=new kn(vr,r,5,8)),r.c),0),84))),153)),ge(e.c,k),h=new Zn((!r.n&&(r.n=new Jt(Po,r,1,7)),r.n));h.e!=h.i.gc();)o=u(ar(h),135),T=new yie(k,o.a),Qo(T,o),Zt(T,$k,o),T.e.a=b.Math.max(o.g,1),T.e.b=b.Math.max(o.f,1),$kt(T),ge(e.d,T)}}function tCn(t,e,n){var r,s,o,h,d,m,k,T,A,P;switch(n.Ug("Node promotion heuristic",1),t.i=e,t.r=u(X(e,(De(),a2)),243),t.r!=(cf(),Lv)&&t.r!=N3?_Cn(t):Zkn(t),T=u(X(t.i,eAt),17).a,o=new Fd,t.r.g){case 2:case 1:z7(t,o);break;case 3:for(t.r=tK,z7(t,o),m=0,d=new G(t.b);d.at.k&&(t.r=cP,z7(t,o));break;case 4:for(t.r=tK,z7(t,o),k=0,s=new G(t.c);s.at.n&&(t.r=uP,z7(t,o));break;case 6:P=Ys(b.Math.ceil(t.g.length*T/100)),z7(t,new zVt(P));break;case 5:A=Ys(b.Math.ceil(t.e*T/100)),z7(t,new qVt(A));break;case 8:ebe(t,!0);break;case 9:ebe(t,!1);break;default:z7(t,o)}t.r!=Lv&&t.r!=N3?Ekn(t,e):H8n(t,e),n.Vg()}function eCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;for(A=t.b,T=new La(A,0),Ly(T,new eu(t)),Tt=!1,h=1;T.b0&&(P.d+=T.n.d,P.d+=T.d),P.a>0&&(P.a+=T.n.a,P.a+=T.d),P.b>0&&(P.b+=T.n.b,P.b+=T.d),P.c>0&&(P.c+=T.n.c,P.c+=T.d),P}function vpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U;for(P=n.d,A=n.c,o=new ae(n.f.a+n.d.b+n.d.c,n.f.b+n.d.d+n.d.a),h=o.b,k=new G(t.a);k.a0&&(t.c[e.c.p][e.p].d+=Dl(t.i,24)*lN*.07000000029802322-.03500000014901161,t.c[e.c.p][e.p].a=t.c[e.c.p][e.p].d/t.c[e.c.p][e.p].b)}}function iCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;for(U=new G(t);U.ar.d,r.d=b.Math.max(r.d,e),d&&n&&(r.d=b.Math.max(r.d,r.a),r.a=r.d+s);break;case 3:n=e>r.a,r.a=b.Math.max(r.a,e),d&&n&&(r.a=b.Math.max(r.a,r.d),r.d=r.a+s);break;case 2:n=e>r.c,r.c=b.Math.max(r.c,e),d&&n&&(r.c=b.Math.max(r.b,r.c),r.b=r.c+s);break;case 4:n=e>r.b,r.b=b.Math.max(r.b,e),d&&n&&(r.b=b.Math.max(r.b,r.c),r.c=r.b+s)}}}function xpe(t,e){var n,r,s,o,h,d,m,k,T;return k="",e.length==0?t.ne(b8t,$ct,-1,-1):(T=Zy(e),hn(T.substr(0,3),"at ")&&(T=(qn(3,T.length+1),T.substr(3))),T=T.replace(/\[.*?\]/g,""),h=T.indexOf("("),h==-1?(h=T.indexOf("@"),h==-1?(k=T,T=""):(k=Zy((qn(h+1,T.length+1),T.substr(h+1))),T=Zy((Da(0,h,T.length),T.substr(0,h))))):(n=T.indexOf(")",h),k=(Da(h+1,n,T.length),T.substr(h+1,n-(h+1))),T=Zy((Da(0,h,T.length),T.substr(0,h)))),h=$d(T,Hu(46)),h!=-1&&(T=(qn(h+1,T.length+1),T.substr(h+1))),(T.length==0||hn(T,"Anonymous function"))&&(T=$ct),d=cz(k,Hu(58)),s=Tvt(k,Hu(58),d-1),m=-1,r=-1,o=b8t,d!=-1&&s!=-1&&(o=(Da(0,s,k.length),k.substr(0,s)),m=BJt((Da(s+1,d,k.length),k.substr(s+1,d-(s+1)))),r=BJt((qn(d+1,k.length+1),k.substr(d+1)))),t.ne(o,T,m,r))}function oCn(t){var e,n,r,s,o,h,d,m,k,T,A;for(k=new G(t);k.a0||T.j==Gn&&T.e.c.length-T.g.c.length<0)){e=!1;break}for(s=new G(T.g);s.a=k&&Wt>=tt&&(P+=U.n.b+J.n.b+J.a.b-Bt,++d));if(n)for(h=new G(Tt.e);h.a=k&&Wt>=tt&&(P+=U.n.b+J.n.b+J.a.b-Bt,++d))}d>0&&(se+=P/d,++$)}$>0?(e.a=s*se/$,e.g=$):(e.a=0,e.g=0)}function uCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;for(o=t.f.b,P=o.a,T=o.b,U=t.e.g,$=t.e.f,H4(t.e,o.a,o.b),se=P/U,Ce=T/$,k=new Zn(Kz(t.e));k.e!=k.i.gc();)m=u(ar(k),135),Su(m,m.i*se),_u(m,m.j*Ce);for(Tt=new Zn(Jit(t.e));Tt.e!=Tt.i.gc();)ht=u(ar(Tt),123),Bt=ht.i,Wt=ht.j,Bt>0&&Su(ht,Bt*se),Wt>0&&_u(ht,Wt*Ce);for(e_(t.b,new fg),e=new fe,d=new sw(new mr(t.c).a);d.b;)h=Um(d),r=u(h.ld(),74),n=u(h.md(),407).a,s=b5(r,!1,!1),A=dfe(O0(r),MO(s),n),KO(A,s),At=Sfe(r),At&&Xo(e,At,0)==-1&&(In(e.c,At),ene(At,(ur(A.b!=0),u(A.a.a.c,8)),n));for(tt=new sw(new mr(t.d).a);tt.b;)J=Um(tt),r=u(J.ld(),74),n=u(J.md(),407).a,s=b5(r,!1,!1),A=dfe(qb(r),cO(MO(s)),n),A=cO(A),KO(A,s),At=_fe(r),At&&Xo(e,At,0)==-1&&(In(e.c,At),ene(At,(ur(A.b!=0),u(A.c.b.c,8)),n))}function kpe(t,e,n,r){var s,o,h,d,m;return d=new Zkt(e),tkn(d,r),s=!0,t&&t.pf((ai(),Rw))&&(o=u(t.of((ai(),Rw)),88),s=o==(Rs(),Ed)||o==Uo||o==tc),x0e(d,!1),Cu(d.e.Rf(),new Mvt(d,!1,s)),hst(d,d.f,(A1(),Ac),(ve(),Hn)),hst(d,d.f,Lc,Er),hst(d,d.g,Ac,Gn),hst(d,d.g,Lc,Jn),Yle(d,Hn),Yle(d,Er),Jee(d,Jn),Jee(d,Gn),Ay(),h=d.A.Hc((Yl(),z3))&&d.B.Hc((Ml(),$P))?dle(d):null,h&&urn(d.a,h),aCn(d),ovn(d),cvn(d),O9n(d),oEn(d),Nvn(d),tot(d,Hn),tot(d,Er),R8n(d),oTn(d),n&&(q2n(d),Pvn(d),tot(d,Jn),tot(d,Gn),m=d.B.Hc((Ml(),kL)),d1e(d,m,Hn),d1e(d,m,Er),g1e(d,m,Jn),g1e(d,m,Gn),ms(new ln(null,new gn(new si(d.i),0)),new mc),ms(_i(new ln(null,Lyt(d.r).a.oc()),new ca),new ya),Yyn(d),d.e.Pf(d.o),ms(new ln(null,Lyt(d.r).a.oc()),new ea)),d.o}function lCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(k=Zi,r=new G(t.a.b);r.a1)for($=new Vkt(U,At,r),Fa(At,new MXt(t,$)),In(h.c,$),A=At.a.ec().Kc();A.Ob();)T=u(A.Pb(),42),zu(o,T.b);if(d.a.gc()>1)for($=new Vkt(U,d,r),Fa(d,new IXt(t,$)),In(h.c,$),A=d.a.ec().Kc();A.Ob();)T=u(A.Pb(),42),zu(o,T.b)}}function gCn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;if(J=t.n,tt=t.o,P=t.d,A=Rt(Ht(Wy(t,(De(),u1t)))),e){for(T=A*(e.gc()-1),$=0,m=e.Kc();m.Ob();)h=u(m.Pb(),10),T+=h.o.a,$=b.Math.max($,h.o.b);for(ht=J.a-(T-tt.a)/2,o=J.b-P.d+$,r=tt.a/(e.gc()+1),s=r,d=e.Kc();d.Ob();)h=u(d.Pb(),10),h.n.a=ht,h.n.b=o-h.o.b,ht+=h.o.a+A,k=Mde(h),k.n.a=h.o.a/2-k.a.a,k.n.b=h.o.b,U=u(X(h,(oe(),AG)),12),U.e.c.length+U.g.c.length==1&&(U.n.a=s-U.a.a,U.n.b=0,hc(U,t)),s+=r}if(n){for(T=A*(n.gc()-1),$=0,m=n.Kc();m.Ob();)h=u(m.Pb(),10),T+=h.o.a,$=b.Math.max($,h.o.b);for(ht=J.a-(T-tt.a)/2,o=J.b+tt.b+P.a-$,r=tt.a/(n.gc()+1),s=r,d=n.Kc();d.Ob();)h=u(d.Pb(),10),h.n.a=ht,h.n.b=o,ht+=h.o.a+A,k=Mde(h),k.n.a=h.o.a/2-k.a.a,k.n.b=0,U=u(X(h,(oe(),AG)),12),U.e.c.length+U.g.c.length==1&&(U.n.a=s-U.a.a,U.n.b=tt.b,hc(U,t)),s+=r}}function pCn(t,e){var n,r,s,o,h,d;if(u(X(e,(oe(),lu)),21).Hc((Co(),Uh))){for(d=new G(e.a);d.a=0&&h0&&(u(Io(t.b,e),127).a.b=n)}function yCn(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J;if(P=Rt(Ht(X(t,(De(),FT)))),$=Rt(Ht(X(t,BT))),A=Rt(Ht(X(t,O3))),d=t.o,o=u(Oe(t.j,0),12),h=o.n,J=B4n(o,A),!!J){if(e.Hc((wl(),Hg)))switch(u(X(t,(oe(),Dc)),64).g){case 1:J.c=(d.a-J.b)/2-h.a,J.d=$;break;case 3:J.c=(d.a-J.b)/2-h.a,J.d=-$-J.a;break;case 2:n&&o.e.c.length==0&&o.g.c.length==0?(T=r?J.a:u(Oe(o.f,0),72).o.b,J.d=(d.b-T)/2-h.b):J.d=d.b+$-h.b,J.c=-P-J.b;break;case 4:n&&o.e.c.length==0&&o.g.c.length==0?(T=r?J.a:u(Oe(o.f,0),72).o.b,J.d=(d.b-T)/2-h.b):J.d=d.b+$-h.b,J.c=P}else if(e.Hc(g2))switch(u(X(t,(oe(),Dc)),64).g){case 1:case 3:J.c=h.a+P;break;case 2:case 4:n&&!o.c?(T=r?J.a:u(Oe(o.f,0),72).o.b,J.d=(d.b-T)/2-h.b):J.d=h.b+$}for(s=J.d,k=new G(o.f);k.a=e.length)return{done:!0};var s=e[r++];return{value:[s,n.get(s)],done:!1}}}},w8n()||(t.prototype.createObject=function(){return{}},t.prototype.get=function(e){return this.obj[":"+e]},t.prototype.set=function(e,n){this.obj[":"+e]=n},t.prototype[fut]=function(e){delete this.obj[":"+e]},t.prototype.keys=function(){var e=[];for(var n in this.obj)n.charCodeAt(0)==58&&e.push(n.substring(1));return e}),t}function ji(){ji=V,JA=new Oi(G8t),new rs("DEPTH",he(0)),B1t=new rs("FAN",he(0)),gLt=new rs(W2e,he(0)),u2=new rs("ROOT",(Pn(),!1)),$1t=new rs("LEFTNEIGHBOR",null),Kke=new rs("RIGHTNEIGHBOR",null),oK=new rs("LEFTSIBLING",null),z1t=new rs("RIGHTSIBLING",null),F1t=new rs("DUMMY",!1),new rs("LEVEL",he(0)),wLt=new rs("REMOVABLE_EDGES",new Ki),pP=new rs("XCOOR",he(0)),bP=new rs("YCOOR",he(0)),cK=new rs("LEVELHEIGHT",0),P1=new rs("LEVELMIN",0),Xf=new rs("LEVELMAX",0),R1t=new rs("GRAPH_XMIN",0),j1t=new rs("GRAPH_YMIN",0),pLt=new rs("GRAPH_XMAX",0),bLt=new rs("GRAPH_YMAX",0),dLt=new rs("COMPACT_LEVEL_ASCENSION",!1),P1t=new rs("COMPACT_CONSTRAINTS",new fe),QA=new rs("ID",""),ZA=new rs("POSITION",he(0)),Kp=new rs("PRELIM",0),qT=new rs("MODIFIER",0),zT=new Oi(a2e),gP=new Oi(o2e)}function TCn(t){Nkt();var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(t==null)return null;if(A=t.length*8,A==0)return"";for(d=A%24,$=A/24|0,P=d!=0?$+1:$,o=null,o=Vt(Yh,Zd,28,P*4,15,1),k=0,T=0,e=0,n=0,r=0,h=0,s=0,m=0;m<$;m++)e=t[s++],n=t[s++],r=t[s++],T=(n&15)<<24>>24,k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,J=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,tt=r&-128?(r>>6^252)<<24>>24:r>>6<<24>>24,o[h++]=nb[U],o[h++]=nb[J|k<<4],o[h++]=nb[T<<2|tt],o[h++]=nb[r&63];return d==8?(e=t[s],k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,o[h++]=nb[U],o[h++]=nb[k<<4],o[h++]=61,o[h++]=61):d==16&&(e=t[s],n=t[s+1],T=(n&15)<<24>>24,k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,J=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,o[h++]=nb[U],o[h++]=nb[J|k<<4],o[h++]=nb[T<<2],o[h++]=61),af(o,0,o.length)}function CCn(t,e){var n,r,s,o,h,d,m;if(t.e==0&&t.p>0&&(t.p=-(t.p-1)),t.p>Ga&&x3t(e,t.p-Wb),h=e.q.getDate(),LI(e,1),t.k>=0&&dfn(e,t.k),t.c>=0?LI(e,t.c):t.k>=0?(m=new Q4t(e.q.getFullYear()-Wb,e.q.getMonth(),35),r=35-m.q.getDate(),LI(e,b.Math.min(r,h))):LI(e,h),t.f<0&&(t.f=e.q.getHours()),t.b>0&&t.f<12&&(t.f+=12),isn(e,t.f==24&&t.g?0:t.f),t.j>=0&&Ydn(e,t.j),t.n>=0&&o0n(e,t.n),t.i>=0&&DQt(e,Qa(Ja(_O(Pc(e.q.getTime()),Rp),Rp),t.i)),t.a&&(s=new x$,x3t(s,s.q.getFullYear()-Wb-80),grt(Pc(e.q.getTime()),Pc(s.q.getTime()))&&x3t(e,s.q.getFullYear()-Wb+100)),t.d>=0){if(t.c==-1)n=(7+t.d-e.q.getDay())%7,n>3&&(n-=7),d=e.q.getMonth(),LI(e,e.q.getDate()+n),e.q.getMonth()!=d&&LI(e,e.q.getDate()+(n>0?-7:7));else if(e.q.getDay()!=t.d)return!1}return t.o>Ga&&(o=e.q.getTimezoneOffset(),DQt(e,Qa(Pc(e.q.getTime()),(t.o-o)*60*Rp))),!0}function _pe(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;if(s=X(e,(oe(),Li)),!!Lt(s,207)){for(U=u(s,27),J=e.e,P=new io(e.c),o=e.d,P.a+=o.b,P.b+=o.d,Bt=u(ne(U,(De(),GG)),181),Zu(Bt,(Ml(),NK))&&($=u(ne(U,aAt),107),Snt($,o.a),D2t($,o.d),_nt($,o.b),m6($,o.c)),n=new fe,T=new G(e.a);T.ar.c.length-1;)ge(r,new Ws(S5,E7t));n=u(X(s,h0),17).a,bg(u(X(t,Mv),88))?(s.e.aRt(Ht((vn(n,r.c.length),u(r.c[n],42)).b))&&re((vn(n,r.c.length),u(r.c[n],42)),s.e.a+s.f.a)):(s.e.bRt(Ht((vn(n,r.c.length),u(r.c[n],42)).b))&&re((vn(n,r.c.length),u(r.c[n],42)),s.e.b+s.f.b))}for(o=Dr(t.b,0);o.b!=o.d.c;)s=u(Ar(o),39),n=u(X(s,(Cc(),h0)),17).a,Zt(s,(ji(),P1),Ht((vn(n,r.c.length),u(r.c[n],42)).a)),Zt(s,Xf,Ht((vn(n,r.c.length),u(r.c[n],42)).b));e.Vg()}function _Cn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(t.o=Rt(Ht(X(t.i,(De(),Av)))),t.f=Rt(Ht(X(t.i,Pw))),t.j=t.i.b.c.length,d=t.j-1,P=0,t.k=0,t.n=0,t.b=id(Vt(Ra,ue,17,t.j,0,1)),t.c=id(Vt(zs,ue,345,t.j,7,1)),h=new G(t.i.b);h.a0&&ge(t.q,T),ge(t.p,T);e-=r,$=m+e,k+=e*t.f,Mh(t.b,d,he($)),Mh(t.c,d,k),t.k=b.Math.max(t.k,$),t.n=b.Math.max(t.n,k),t.e+=e,e+=J}}function ve(){ve=V;var t;bc=new tI(G_,0),Hn=new tI(_V,1),Jn=new tI(kut,2),Er=new tI(Eut,3),Gn=new tI(Tut,4),Cd=(mn(),new dE((t=u(y1(bo),9),new _h(t,u(Ff(t,t.length),9),0)))),e1=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[]))),Kh=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[]))),wh=Ap(Hi(Er,lt(ut(bo,1),qc,64,0,[]))),wf=Ap(Hi(Gn,lt(ut(bo,1),qc,64,0,[]))),Gu=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Er]))),Ou=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[Gn]))),n1=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Gn]))),yl=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn]))),mh=Ap(Hi(Er,lt(ut(bo,1),qc,64,0,[Gn]))),Wh=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[Er]))),xl=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn,Gn]))),Uu=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[Er,Gn]))),Ku=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Er,Gn]))),cl=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn,Er]))),fu=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn,Er,Gn])))}function ACn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;for(e.Ug(_2e,1),J=new fe,se=new fe,k=new G(t.b);k.a0&&(At-=$),Ukt(h,At),T=0,P=new G(h.a);P.a0),d.a.Xb(d.c=--d.b)),m=.4*r*T,!o&&d.b0&&(m=(qn(0,e.length),e.charCodeAt(0)),m!=64)){if(m==37&&(A=e.lastIndexOf("%"),k=!1,A!=0&&(A==P-1||(k=(qn(A+1,e.length),e.charCodeAt(A+1)==46))))){if(h=(Da(1,A,e.length),e.substr(1,A-1)),At=hn("%",h)?null:n8t(h),r=0,k)try{r=lh((qn(A+2,e.length+1),e.substr(A+2)),Ga,xi)}catch(Bt){throw Bt=es(Bt),Lt(Bt,130)?(d=Bt,at(new _q(d))):at(Bt)}for(tt=D4t(t.Gh());tt.Ob();)if(U=eH(tt),Lt(U,519)&&(s=u(U,598),Tt=s.d,(At==null?Tt==null:hn(At,Tt))&&r--==0))return s;return null}if(T=e.lastIndexOf("."),$=T==-1?e:(Da(0,T,e.length),e.substr(0,T)),n=0,T!=-1)try{n=lh((qn(T+1,e.length+1),e.substr(T+1)),Ga,xi)}catch(Bt){if(Bt=es(Bt),Lt(Bt,130))$=e;else throw at(Bt)}for($=hn("%",$)?null:n8t($),J=D4t(t.Gh());J.Ob();)if(U=eH(J),Lt(U,197)&&(o=u(U,197),ht=o.xe(),($==null?ht==null:hn($,ht))&&n--==0))return o;return null}return bpe(t,e)}function FCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;for(T=new _r,m=new Fm,r=new G(t.a.a.b);r.ae.d.c){if($=t.c[e.a.d],tt=t.c[A.a.d],$==tt)continue;Hf(Of(If(Nf(Mf(new tf,1),100),$),tt))}}}}}function BCn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;if(P=u(u(Ai(t.r,e),21),87),e==(ve(),Jn)||e==Gn){Tpe(t,e);return}for(o=e==Hn?(Gm(),BN):(Gm(),RN),Bt=e==Hn?(qu(),O1):(qu(),Kf),n=u(Io(t.b,e),127),r=n.i,s=r.c+e5(lt(ut(ma,1),No,28,15,[n.n.b,t.C.b,t.k])),ht=r.c+r.b-e5(lt(ut(ma,1),No,28,15,[n.n.c,t.C.c,t.k])),h=wwt(Ovt(o),t.t),Tt=e==Hn?Vs:Zi,A=P.Kc();A.Ob();)k=u(A.Pb(),117),!(!k.c||k.c.d.c.length<=0)&&(tt=k.b.Mf(),J=k.e,$=k.c,U=$.i,U.b=(m=$.n,$.e.a+m.b+m.c),U.a=(d=$.n,$.e.b+d.d+d.a),SI(Bt,I8t),$.f=Bt,S1($,(pl(),Gf)),U.c=J.a-(U.b-tt.a)/2,Wt=b.Math.min(s,J.a),se=b.Math.max(ht,J.a+tt.a),U.cse&&(U.c=se-U.b),ge(h.d,new Oit(U,T5t(h,U))),Tt=e==Hn?b.Math.max(Tt,J.b+k.b.Mf().b):b.Math.min(Tt,J.b));for(Tt+=e==Hn?t.t:-t.t,At=H5t((h.e=Tt,h)),At>0&&(u(Io(t.b,e),127).a.b=At),T=P.Kc();T.Ob();)k=u(T.Pb(),117),!(!k.c||k.c.d.c.length<=0)&&(U=k.c.i,U.c-=k.e.a,U.d-=k.e.b)}function RCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$;for(e=new _r,m=new Zn(t);m.e!=m.i.gc();){for(d=u(ar(m),27),n=new Os,hi(Jht,d,n),$=new ip,s=u(nc(new ln(null,new Lm(new rr(sr(jO(d).a.Kc(),new z)))),Gte($,gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)])))),85),Soe(n,u(s.xc((Pn(),!0)),16),new sy),r=u(nc(_i(u(s.xc(!1),15).Lc(),new D8),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),h=r.Kc();h.Ob();)o=u(h.Pb(),74),P=Sfe(o),P&&(k=u(Ko(Eo(e.f,P)),21),k||(k=Xde(P),yu(e.f,P,k)),Ma(n,k));for(s=u(nc(new ln(null,new Lm(new rr(sr(Og(d).a.Kc(),new z)))),Gte($,gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc])))),85),Soe(n,u(s.xc(!0),16),new g4),r=u(nc(_i(u(s.xc(!1),15).Lc(),new th),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),A=r.Kc();A.Ob();)T=u(A.Pb(),74),P=_fe(T),P&&(k=u(Ko(Eo(e.f,P)),21),k||(k=Xde(P),yu(e.f,P,k)),Ma(n,k))}}function jCn(t,e){mct();var n,r,s,o,h,d,m,k,T,A,P,$,U,J;if(m=$c(t,0)<0,m&&(t=Cp(t)),$c(t,0)==0)switch(e){case 0:return"0";case 1:return Y7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return $=new yb,e<0?$.a+="0E+":$.a+="0E",$.a+=e==Ga?"2147483648":""+-e,$.a}T=18,A=Vt(Yh,Zd,28,T+1,15,1),n=T,J=t;do k=J,J=_O(J,10),A[--n]=qr(Qa(48,sf(k,Ja(J,10))))&js;while($c(J,0)!=0);if(s=sf(sf(sf(T,n),e),1),e==0)return m&&(A[--n]=45),af(A,n,T-n);if(e>0&&$c(s,-6)>=0){if($c(s,0)>=0){for(o=n+qr(s),d=T-1;d>=o;d--)A[d+1]=A[d];return A[++o]=46,m&&(A[--n]=45),af(A,n,T-n+1)}for(h=2;grt(h,Qa(Cp(s),1));h++)A[--n]=48;return A[--n]=46,A[--n]=48,m&&(A[--n]=45),af(A,n,T-n)}return U=n+1,r=T,P=new I4,m&&(P.a+="-"),r-U>=1?(Db(P,A[n]),P.a+=".",P.a+=af(A,n+1,T-n-1)):P.a+=af(A,n,T-n),P.a+="E",$c(s,0)>0&&(P.a+="+"),P.a+=""+OS(s),P.a}function rv(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;if(tt=new ae(t.g,t.f),J=v6t(t),J.a=b.Math.max(J.a,e),J.b=b.Math.max(J.b,n),se=J.a/tt.a,T=J.b/tt.b,Bt=J.a-tt.a,m=J.b-tt.b,r)for(h=Ji(t)?u(ne(Ji(t),(ai(),Rw)),88):u(ne(t,(ai(),Rw)),88),d=$t(ne(t,(ai(),fL)))===$t((ka(),hu)),Tt=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));Tt.e!=Tt.i.gc();)switch(ht=u(ar(Tt),123),At=u(ne(ht,hx),64),At==(ve(),bc)&&(At=Pkt(ht,h),Mi(ht,hx,At)),At.g){case 1:d||Su(ht,ht.i*se);break;case 2:Su(ht,ht.i+Bt),d||_u(ht,ht.j*T);break;case 3:d||Su(ht,ht.i*se),_u(ht,ht.j+m);break;case 4:d||_u(ht,ht.j*T)}if(H4(t,J.a,J.b),s)for(P=new Zn((!t.n&&(t.n=new Jt(Po,t,1,7)),t.n));P.e!=P.i.gc();)A=u(ar(P),135),$=A.i+A.g/2,U=A.j+A.f/2,Wt=$/tt.a,k=U/tt.b,Wt+k>=1&&(Wt-k>0&&U>=0?(Su(A,A.i+Bt),_u(A,A.j+m*k)):Wt-k<0&&$>=0&&(Su(A,A.i+Bt*Wt),_u(A,A.j+m)));return Mi(t,(ai(),jw),(Yl(),o=u(y1(xL),9),new _h(o,u(Ff(o,o.length),9),0))),new ae(se,T)}function Mpe(t){wm(t,new dw(p$(gm(hm(dm(fm(new G1,zh),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new Kc),zh))),le(t,zh,JV,Se(H8e)),le(t,zh,h3,Se(V8e)),le(t,zh,_5,Se(j8e)),le(t,zh,Ik,Se($8e)),le(t,zh,Mk,Se(z8e)),le(t,zh,nT,Se(R8e)),le(t,zh,X_,Se(GLt)),le(t,zh,rT,Se(q8e)),le(t,zh,_lt,Se(tdt)),le(t,zh,Slt,Se(edt)),le(t,zh,sU,Se(WLt)),le(t,zh,Alt,Se(ndt)),le(t,zh,Llt,Se(YLt)),le(t,zh,q7t,Se(XLt)),le(t,zh,z7t,Se(KLt)),le(t,zh,B7t,Se(dK)),le(t,zh,R7t,Se(gK)),le(t,zh,j7t,Se(wP)),le(t,zh,$7t,Se(QLt)),le(t,zh,F7t,Se(ULt))}function mV(t){var e,n,r,s,o,h,d,m,k,T,A;if(t==null)throw at(new jd(Vu));if(k=t,o=t.length,m=!1,o>0&&(e=(qn(0,t.length),t.charCodeAt(0)),(e==45||e==43)&&(t=(qn(1,t.length+1),t.substr(1)),--o,m=e==45)),o==0)throw at(new jd(av+k+'"'));for(;t.length>0&&(qn(0,t.length),t.charCodeAt(0)==48);)t=(qn(1,t.length+1),t.substr(1)),--o;if(o>(cge(),Xve)[10])throw at(new jd(av+k+'"'));for(s=0;s0&&(A=-parseInt((Da(0,r,t.length),t.substr(0,r)),10),t=(qn(r,t.length+1),t.substr(r)),o-=r,n=!1);o>=h;){if(r=parseInt((Da(0,h,t.length),t.substr(0,h)),10),t=(qn(h,t.length+1),t.substr(h)),o-=h,n)n=!1;else{if($c(A,d)<0)throw at(new jd(av+k+'"'));A=Ja(A,T)}A=sf(A,r)}if($c(A,0)>0)throw at(new jd(av+k+'"'));if(!m&&(A=Cp(A),$c(A,0)<0))throw at(new jd(av+k+'"'));return A}function n8t(t){Tct();var e,n,r,s,o,h,d,m;if(t==null)return null;if(s=$d(t,Hu(37)),s<0)return t;for(m=new eh((Da(0,s,t.length),t.substr(0,s))),e=Vt(ul,M5,28,4,15,1),d=0,r=0,h=t.length;ss+2&&vat((qn(s+1,t.length),t.charCodeAt(s+1)),PIt,FIt)&&vat((qn(s+2,t.length),t.charCodeAt(s+2)),PIt,FIt))if(n=aun((qn(s+1,t.length),t.charCodeAt(s+1)),(qn(s+2,t.length),t.charCodeAt(s+2))),s+=2,r>0?(n&192)==128?e[d++]=n<<24>>24:r=0:n>=128&&((n&224)==192?(e[d++]=n<<24>>24,r=2):(n&240)==224?(e[d++]=n<<24>>24,r=3):(n&248)==240&&(e[d++]=n<<24>>24,r=4)),r>0){if(d==r){switch(d){case 2:{Db(m,((e[0]&31)<<6|e[1]&63)&js);break}case 3:{Db(m,((e[0]&15)<<12|(e[1]&63)<<6|e[2]&63)&js);break}}d=0,r=0}}else{for(o=0;o=2){if((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i==0)n=(kb(),s=new K8,s),Or((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),n);else if((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i>1)for(P=new j6((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a));P.e!=P.i.gc();)E_(P);KO(e,u(Dt((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),0),166))}if(A)for(r=new Zn((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a));r.e!=r.i.gc();)for(n=u(ar(r),166),k=new Zn((!n.a&&(n.a=new Ps(vh,n,5)),n.a));k.e!=k.i.gc();)m=u(ar(k),377),d.a=b.Math.max(d.a,m.a),d.b=b.Math.max(d.b,m.b);for(h=new Zn((!t.n&&(t.n=new Jt(Po,t,1,7)),t.n));h.e!=h.i.gc();)o=u(ar(h),135),T=u(ne(o,pL),8),T&&Ch(o,T.a,T.b),A&&(d.a=b.Math.max(d.a,o.i+o.g),d.b=b.Math.max(d.b,o.j+o.f));return d}function Ope(t,e,n,r,s){var o,h,d;if(Oae(t,e),h=e[0],o=Va(n.c,0),d=-1,t5t(n))if(r>0){if(h+r>t.length)return!1;d=KH((Da(0,h+r,t.length),t.substr(0,h+r)),e)}else d=KH(t,e);switch(o){case 71:return d=d5(t,h,lt(ut(Pe,1),ue,2,6,[mbe,vbe]),e),s.e=d,!0;case 77:return e8n(t,e,s,d,h);case 76:return n8n(t,e,s,d,h);case 69:return K4n(t,e,h,s);case 99:return W4n(t,e,h,s);case 97:return d=d5(t,h,lt(ut(Pe,1),ue,2,6,["AM","PM"]),e),s.b=d,!0;case 121:return r8n(t,e,h,d,n,s);case 100:return d<=0?!1:(s.c=d,!0);case 83:return d<0?!1:uwn(d,h,e[0],s);case 104:d==12&&(d=0);case 75:case 72:return d<0?!1:(s.f=d,s.g=!1,!0);case 107:return d<0?!1:(s.f=d,s.g=!0,!0);case 109:return d<0?!1:(s.j=d,!0);case 115:return d<0?!1:(s.n=d,!0);case 90:if(hrn[m]&&(tt=m),A=new G(t.a.b);A.a1;){if(s=W6n(e),A=o.g,U=u(ne(e,rL),107),J=Rt(Ht(ne(e,mK))),(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i>1&&Rt(Ht(ne(e,(N0(),ldt))))!=Zi&&(o.c+(U.b+U.c))/(o.b+(U.d+U.a))1&&Rt(Ht(ne(e,(N0(),udt))))!=Zi&&(o.c+(U.b+U.c))/(o.b+(U.d+U.a))>J&&Mi(s,(N0(),B3),b.Math.max(Rt(Ht(ne(e,nL))),Rt(Ht(ne(s,B3)))-Rt(Ht(ne(e,udt))))),$=new lmt(r,T),m=Zpe($,s,P),k=m.g,k>=A&&k==k){for(h=0;h<(!s.a&&(s.a=new Jt(bi,s,10,11)),s.a).i;h++)S1e(t,u(Dt((!s.a&&(s.a=new Jt(bi,s,10,11)),s.a),h),27),u(Dt((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a),h),27));soe(e,$),Jhn(o,m.c),Qhn(o,m.b)}--d}Mi(e,(N0(),eL),o.b),Mi(e,HT,o.c),n.Vg()}function HCn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;for(e.Ug("Interactive node layering",1),n=new fe,P=new G(t.a);P.a=d){ur(Tt.b>0),Tt.a.Xb(Tt.c=--Tt.b);break}else tt.a>m&&(r?(Hs(r.b,tt.b),r.a=b.Math.max(r.a,tt.a),Kl(Tt)):(ge(tt.b,T),tt.c=b.Math.min(tt.c,m),tt.a=b.Math.max(tt.a,d),r=tt));r||(r=new _Kt,r.c=m,r.a=d,Ly(Tt,r),ge(r.b,T))}for(h=t.b,k=0,ht=new G(n);ht.a$&&(o&&(ro(se,P),ro(rn,he(k.b-1))),Jr=n.b,is+=P+e,P=0,T=b.Math.max(T,n.b+n.c+er)),Su(d,Jr),_u(d,is),T=b.Math.max(T,Jr+er+n.c),P=b.Math.max(P,A),Jr+=er+e;if(T=b.Math.max(T,r),Dn=is+P+n.a,Dnn0,Ze=b.Math.abs(P.b-U.b)>n0,(!n&&rn&&Ze||n&&(rn||Ze))&&Zr(tt.a,Bt)),Ma(tt.a,r),r.b==0?P=Bt:P=(ur(r.b!=0),u(r.c.b.c,8)),Lpn($,A,J),ice(s)==Ce&&(Pa(Ce.i)!=s.a&&(J=new Sa,p6t(J,Pa(Ce.i),Tt)),Zt(tt,Qft,J)),h4n($,tt,Tt),T.a.zc($,T);Xa(tt,Wt),xa(tt,Ce)}for(k=T.a.ec().Kc();k.Ob();)m=u(k.Pb(),18),Xa(m,null),xa(m,null);e.Vg()}function GCn(t,e){var n,r,s,o,h,d,m,k,T,A,P;for(s=u(X(t,(Cc(),Mv)),88),T=s==(Rs(),Uo)||s==tc?kd:tc,n=u(nc(_i(new ln(null,new gn(t.b,16)),new XD),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),m=u(nc(Wo(n.Oc(),new WUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),m.Gc(u(nc(Wo(n.Oc(),new YUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),16)),m.jd(new XUt(T)),P=new pp(new QUt(s)),r=new _r,d=m.Kc();d.Ob();)h=u(d.Pb(),240),k=u(h.a,39),Ie(Me(h.c))?(P.a.zc(k,(Pn(),t2))==null,new ra(P.a.Zc(k,!1)).a.gc()>0&&hi(r,k,u(new ra(P.a.Zc(k,!1)).a.Vc(),39)),new ra(P.a.ad(k,!0)).a.gc()>1&&hi(r,cle(P,k),k)):(new ra(P.a.Zc(k,!1)).a.gc()>0&&(o=u(new ra(P.a.Zc(k,!1)).a.Vc(),39),$t(o)===$t(Ko(Eo(r.f,k)))&&u(X(k,(ji(),P1t)),15).Fc(o)),new ra(P.a.ad(k,!0)).a.gc()>1&&(A=cle(P,k),$t(Ko(Eo(r.f,A)))===$t(k)&&u(X(A,(ji(),P1t)),15).Fc(k)),P.a.Bc(k)!=null)}function Npe(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;if(t.gc()==1)return u(t.Xb(0),235);if(t.gc()<=0)return new mq;for(s=t.Kc();s.Ob();){for(n=u(s.Pb(),235),U=0,T=xi,A=xi,m=Ga,k=Ga,$=new G(n.e);$.a<$.c.c.length;)P=u(et($),153),U+=u(X(P,(Vf(),jk)),17).a,T=b.Math.min(T,P.d.a-P.e.a/2),A=b.Math.min(A,P.d.b-P.e.b/2),m=b.Math.max(m,P.d.a+P.e.a/2),k=b.Math.max(k,P.d.b+P.e.b/2);Zt(n,(Vf(),jk),he(U)),Zt(n,(Pb(),TA),new ae(T,A)),Zt(n,UN,new ae(m,k))}for(mn(),t.jd(new M8),J=new mq,Qo(J,u(t.Xb(0),96)),d=0,Tt=0,o=t.Kc();o.Ob();)n=u(o.Pb(),235),tt=ia(Oa(u(X(n,(Pb(),UN)),8)),u(X(n,TA),8)),d=b.Math.max(d,tt.a),Tt+=tt.a*tt.b;for(d=b.Math.max(d,b.Math.sqrt(Tt)*Rt(Ht(X(J,(Vf(),S3e))))),ht=Rt(Ht(X(J,KU))),At=0,Bt=0,h=0,e=ht,r=t.Kc();r.Ob();)n=u(r.Pb(),235),tt=ia(Oa(u(X(n,(Pb(),UN)),8)),u(X(n,TA),8)),At+tt.a>d&&(At=0,Bt+=h+ht,h=0),vEn(J,n,At,Bt),e=b.Math.max(e,At+tt.a),h=b.Math.max(h,tt.b),At+=tt.a+ht;return J}function KCn(t){Nkt();var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(t==null||(o=Lq(t),U=x2n(o),U%4!=0))return null;if(J=U/4|0,J==0)return Vt(ul,M5,28,0,15,1);for(A=null,e=0,n=0,r=0,s=0,h=0,d=0,m=0,k=0,$=0,P=0,T=0,A=Vt(ul,M5,28,J*3,15,1);$>4)<<24>>24,A[P++]=((n&15)<<4|r>>2&15)<<24>>24,A[P++]=(r<<6|s)<<24>>24}return!PM(h=o[T++])||!PM(d=o[T++])?null:(e=_d[h],n=_d[d],m=o[T++],k=o[T++],_d[m]==-1||_d[k]==-1?m==61&&k==61?n&15?null:(tt=Vt(ul,M5,28,$*3+1,15,1),Xc(A,0,tt,0,$*3),tt[P]=(e<<2|n>>4)<<24>>24,tt):m!=61&&k==61?(r=_d[m],r&3?null:(tt=Vt(ul,M5,28,$*3+2,15,1),Xc(A,0,tt,0,$*3),tt[P++]=(e<<2|n>>4)<<24>>24,tt[P]=((n&15)<<4|r>>2&15)<<24>>24,tt)):null:(r=_d[m],s=_d[k],A[P++]=(e<<2|n>>4)<<24>>24,A[P++]=((n&15)<<4|r>>2&15)<<24>>24,A[P++]=(r<<6|s)<<24>>24,A))}function WCn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt;for(e.Ug(_2e,1),U=u(X(t,(De(),zg)),223),s=new G(t.b);s.a=2){for(J=!0,P=new G(o.j),n=u(et(P),12),$=null;P.a0)if(r=A.gc(),k=Ys(b.Math.floor((r+1)/2))-1,s=Ys(b.Math.ceil((r+1)/2))-1,e.o==yd)for(T=s;T>=k;T--)e.a[Bt.p]==Bt&&(J=u(A.Xb(T),42),U=u(J.a,10),!x1(n,J.b)&&$>t.b.e[U.p]&&(e.a[U.p]=Bt,e.g[Bt.p]=e.g[U.p],e.a[Bt.p]=e.g[Bt.p],e.f[e.g[Bt.p].p]=(Pn(),!!(Ie(e.f[e.g[Bt.p].p])&Bt.k==(Un(),fa))),$=t.b.e[U.p]));else for(T=k;T<=s;T++)e.a[Bt.p]==Bt&&(ht=u(A.Xb(T),42),tt=u(ht.a,10),!x1(n,ht.b)&&$0&&(s=u(Oe(tt.c.a,se-1),10),h=t.i[s.p],rn=b.Math.ceil(U4(t.n,s,tt)),o=Wt.a.e-tt.d.d-(h.a.e+s.o.b+s.d.a)-rn),k=Zi,se0&&Ce.a.e.e-Ce.a.a-(Ce.b.e.e-Ce.b.a)<0,U=At.a.e.e-At.a.a-(At.b.e.e-At.b.a)<0&&Ce.a.e.e-Ce.a.a-(Ce.b.e.e-Ce.b.a)>0,$=At.a.e.e+At.b.aCe.b.e.e+Ce.a.a,Bt=0,!J&&!U&&(P?o+A>0?Bt=A:k-r>0&&(Bt=r):$&&(o+d>0?Bt=d:k-Tt>0&&(Bt=Tt))),Wt.a.e+=Bt,Wt.b&&(Wt.d.e+=Bt),!1))}function Fpe(t,e,n){var r,s,o,h,d,m,k,T,A,P;if(r=new Ah(e.Lf().a,e.Lf().b,e.Mf().a,e.Mf().b),s=new B6,t.c)for(h=new G(e.Rf());h.ak&&(r.a+=uJt(Vt(Yh,Zd,28,-k,15,1))),r.a+="Is",$d(m,Hu(32))>=0)for(s=0;s=r.o.b/2}else Tt=!A;Tt?(ht=u(X(r,(oe(),Wk)),15),ht?P?o=ht:(s=u(X(r,Hk),15),s?ht.gc()<=s.gc()?o=ht:o=s:(o=new fe,Zt(r,Hk,o))):(o=new fe,Zt(r,Wk,o))):(s=u(X(r,(oe(),Hk)),15),s?A?o=s:(ht=u(X(r,Wk),15),ht?s.gc()<=ht.gc()?o=s:o=ht:(o=new fe,Zt(r,Wk,o))):(o=new fe,Zt(r,Hk,o))),o.Fc(t),Zt(t,(oe(),AG),n),e.d==n?(xa(e,null),n.e.c.length+n.g.c.length==0&&hc(n,null),fbn(n)):(Xa(e,null),n.e.c.length+n.g.c.length==0&&hc(n,null)),nh(e.a)}function JCn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is;for(n.Ug("MinWidth layering",1),$=e.b,Ce=e.a,is=u(X(e,(De(),Z_t)),17).a,d=u(X(e,tAt),17).a,t.b=Rt(Ht(X(e,Yf))),t.d=Zi,Bt=new G(Ce);Bt.a0?(k=0,tt&&(k+=d),k+=(Ze-1)*h,At&&(k+=d),rn&&At&&(k=b.Math.max(k,mkn(At,h,Tt,Ce))),k=t.a&&(r=N7n(t,Tt),T=b.Math.max(T,r.b),Bt=b.Math.max(Bt,r.d),ge(d,new Ws(Tt,r)));for(rn=new fe,k=0;k0),tt.a.Xb(tt.c=--tt.b),Ze=new eu(t.b),Ly(tt,Ze),ur(tt.b0){for(P=T<100?null:new xb(T),k=new B4t(e),U=k.g,ht=Vt(Fr,ii,28,T,15,1),r=0,Bt=new $m(T),s=0;s=0;)if($!=null?Ti($,U[m]):$t($)===$t(U[m])){ht.length<=r&&(tt=ht,ht=Vt(Fr,ii,28,2*ht.length,15,1),Xc(tt,0,ht,0,r)),ht[r++]=s,Or(Bt,U[m]);break t}if($=$,$t($)===$t(d))break}}if(k=Bt,U=Bt.g,T=r,r>ht.length&&(tt=ht,ht=Vt(Fr,ii,28,r,15,1),Xc(tt,0,ht,0,r)),r>0){for(At=!0,o=0;o=0;)pk(t,ht[h]);if(r!=T){for(s=T;--s>=r;)pk(k,s);tt=ht,ht=Vt(Fr,ii,28,r,15,1),Xc(tt,0,ht,0,r)}e=k}}}else for(e=pvn(t,e),s=t.i;--s>=0;)e.Hc(t.g[s])&&(pk(t,s),At=!0);if(At){if(ht!=null){for(n=e.gc(),A=n==1?zS(t,4,e.Kc().Pb(),null,ht[0],J):zS(t,6,e,ht,ht[0],J),P=n<100?null:new xb(n),s=e.Kc();s.Ob();)$=s.Pb(),P=Svt(t,u($,76),P);P?(P.nj(A),P.oj()):Ei(t.e,A)}else{for(P=xan(e.gc()),s=e.Kc();s.Ob();)$=s.Pb(),P=Svt(t,u($,76),P);P&&P.oj()}return!0}else return!1}function eSn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;for(n=new the(e),n.a||DEn(e),k=_8n(e),m=new Fm,tt=new r0e,J=new G(e.a);J.a0||n.o==yd&&s=n}function rSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er;for(At=e,Tt=new Fm,Bt=new Fm,T=jm(At,TTt),r=new une(t,n,Tt,Bt),E4n(r.a,r.b,r.c,r.d,T),m=(Ce=Tt.i,Ce||(Tt.i=new W4(Tt,Tt.c))),Ze=m.Kc();Ze.Ob();)for(rn=u(Ze.Pb(),166),s=u(Ai(Tt,rn),21),J=s.Kc();J.Ob();)if(U=J.Pb(),Wt=u(n5(t.d,U),166),Wt)d=(!rn.e&&(rn.e=new kn(Wi,rn,10,9)),rn.e),Or(d,Wt);else throw h=yg(At,a0),P=tme+U+eme+h,$=P+fT,at(new Rd($));for(k=(se=Bt.i,se||(Bt.i=new W4(Bt,Bt.c))),Dn=k.Kc();Dn.Ob();)for(On=u(Dn.Pb(),166),o=u(Ai(Bt,On),21),ht=o.Kc();ht.Ob();)if(tt=ht.Pb(),Wt=u(n5(t.d,tt),166),Wt)A=(!On.g&&(On.g=new kn(Wi,On,9,10)),On.g),Or(A,Wt);else throw h=yg(At,a0),P=tme+tt+eme+h,$=P+fT,at(new Rd($));!n.b&&(n.b=new kn(vr,n,4,7)),n.b.i!=0&&(!n.c&&(n.c=new kn(vr,n,5,8)),n.c.i!=0)&&(!n.b&&(n.b=new kn(vr,n,4,7)),n.b.i<=1&&(!n.c&&(n.c=new kn(vr,n,5,8)),n.c.i<=1))&&(!n.a&&(n.a=new Jt(Wi,n,6,6)),n.a).i==1&&(er=u(Dt((!n.a&&(n.a=new Jt(Wi,n,6,6)),n.a),0),166),!cot(er)&&!uot(er)&&(Vq(er,u(Dt((!n.b&&(n.b=new kn(vr,n,4,7)),n.b),0),84)),Uq(er,u(Dt((!n.c&&(n.c=new kn(vr,n,5,8)),n.c),0),84))))}function iSn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(At=t.a,Bt=0,Wt=At.length;Bt0?(A=u(Oe(P.c.a,h-1),10),rn=U4(t.b,P,A),tt=P.n.b-P.d.d-(A.n.b+A.o.b+A.d.a+rn)):tt=P.n.b-P.d.d,k=b.Math.min(tt,k),h1&&(h=b.Math.min(h,b.Math.abs(u(jh(d.a,1),8).b-T.b)))));else for(J=new G(e.j);J.as&&(o=P.a-s,h=xi,r.c.length=0,s=P.a),P.a>=s&&(In(r.c,d),d.a.b>1&&(h=b.Math.min(h,b.Math.abs(u(jh(d.a,d.a.b-2),8).b-P.b)))));if(r.c.length!=0&&o>e.o.a/2&&h>e.o.b/2){for($=new Yc,hc($,e),Xs($,(ve(),Hn)),$.n.a=e.o.a/2,ht=new Yc,hc(ht,e),Xs(ht,Er),ht.n.a=e.o.a/2,ht.n.b=e.o.b,m=new G(r);m.a=k.b?Xa(d,ht):Xa(d,$)):(k=u(Ycn(d.a),8),tt=d.a.b==0?rd(d.c):u(Pf(d.a),8),tt.b>=k.b?xa(d,ht):xa(d,$)),A=u(X(d,(De(),Vo)),75),A&&Ky(A,k,!0);e.n.a=s-e.o.a/2}}function aSn(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(d=Dr(t.b,0);d.b!=d.d.c;)if(h=u(Ar(d),39),!hn(h.c,nU))for(k=Mxn(h,t),e==(Rs(),Uo)||e==tc?Ds(k,new ttt):Ds(k,new ett),m=k.c.length,r=0;r=0?$=hk(d):$=bO(hk(d)),t.qf(NT,$)),k=new Sa,P=!1,t.pf(Sv)?(Xmt(k,u(t.of(Sv),8)),P=!0):bsn(k,h.a/2,h.b/2),$.g){case 4:Zt(T,Iu,(Rh(),s2)),Zt(T,DG,(ow(),z5)),T.o.b=h.b,J<0&&(T.o.a=-J),Xs(A,(ve(),Jn)),P||(k.a=h.a),k.a-=h.a;break;case 2:Zt(T,Iu,(Rh(),S3)),Zt(T,DG,(ow(),_T)),T.o.b=h.b,J<0&&(T.o.a=-J),Xs(A,(ve(),Gn)),P||(k.a=0);break;case 1:Zt(T,Aw,(Cg(),H5)),T.o.a=h.a,J<0&&(T.o.b=-J),Xs(A,(ve(),Er)),P||(k.b=h.b),k.b-=h.b;break;case 3:Zt(T,Aw,(Cg(),qk)),T.o.a=h.a,J<0&&(T.o.b=-J),Xs(A,(ve(),Hn)),P||(k.b=0)}if(Xmt(A.n,k),Zt(T,Sv,k),e==zw||e==Y0||e==hu){if(U=0,e==zw&&t.pf(Vp))switch($.g){case 1:case 2:U=u(t.of(Vp),17).a;break;case 3:case 4:U=-u(t.of(Vp),17).a}else switch($.g){case 4:case 2:U=o.b,e==Y0&&(U/=s.b);break;case 1:case 3:U=o.a,e==Y0&&(U/=s.a)}Zt(T,xv,U)}return Zt(T,Dc,$),T}function oSn(){xwt();function t(r){var s=this;this.dispatch=function(o){var h=o.data;switch(h.cmd){case"algorithms":var d=q5t((mn(),new Ta(new si(b2.b))));r.postMessage({id:h.id,data:d});break;case"categories":var m=q5t((mn(),new Ta(new si(b2.c))));r.postMessage({id:h.id,data:m});break;case"options":var k=q5t((mn(),new Ta(new si(b2.d))));r.postMessage({id:h.id,data:k});break;case"register":l9n(h.algorithms),r.postMessage({id:h.id});break;case"layout":j7n(h.graph,h.layoutOptions||{},h.options||{}),r.postMessage({id:h.id,data:h.graph});break}},this.saveDispatch=function(o){try{s.dispatch(o)}catch(h){r.postMessage({id:o.data.id,error:h})}}}function e(r){var s=this;this.dispatcher=new t({postMessage:function(o){s.onmessage({data:o})}}),this.postMessage=function(o){setTimeout(function(){s.dispatcher.saveDispatch({data:o})},0)}}if(typeof document===but&&typeof self!==but){var n=new t(self);self.onmessage=n.saveDispatch}else typeof g!==but&&g.exports&&(Object.defineProperty(w,"__esModule",{value:!0}),g.exports={default:e,Worker:e})}function qpe(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(T=new Ig(n),Qo(T,e),Zt(T,(oe(),Li),e),T.o.a=e.g,T.o.b=e.f,T.n.a=e.i,T.n.b=e.j,ge(n.a,T),hi(t.a,e,T),((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i!=0||Ie(Me(ne(e,(De(),L3)))))&&Zt(T,YSt,(Pn(),!0)),k=u(X(n,lu),21),A=u(X(T,(De(),bs)),101),A==(ka(),d2)?Zt(T,bs,Td):A!=Td&&k.Fc((Co(),DT)),P=0,r=u(X(n,ph),88),m=new Zn((!e.c&&(e.c=new Jt(kl,e,9,9)),e.c));m.e!=m.i.gc();)d=u(ar(m),123),s=Ji(e),($t(ne(s,U0))!==$t((Wd(),Up))||$t(ne(s,Dw))===$t((Ip(),ST))||$t(ne(s,Dw))===$t((Ip(),CT))||Ie(Me(ne(s,Ev)))||$t(ne(s,_3))!==$t((lw(),x3))||$t(ne(s,a2))===$t((cf(),Lv))||$t(ne(s,a2))===$t((cf(),N3))||$t(ne(s,Iw))===$t((Bp(),RT))||$t(ne(s,Iw))===$t((Bp(),jT)))&&!Ie(Me(ne(e,BG)))&&Mi(d,Pi,he(P++)),Ie(Me(ne(d,Nw)))||wCn(t,d,T,k,r,A);for(h=new Zn((!e.n&&(e.n=new Jt(Po,e,1,7)),e.n));h.e!=h.i.gc();)o=u(ar(h),135),!Ie(Me(ne(o,Nw)))&&o.a&&ge(T.b,Pat(o));return Ie(Me(X(T,PA)))&&k.Fc((Co(),CG)),Ie(Me(X(T,zG)))&&(k.Fc((Co(),SG)),k.Fc(LA),Zt(T,bs,Td)),T}function Mct(t,e,n,r,s,o,h){var d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is;for(J=0,On=0,k=new G(t.b);k.aJ&&(o&&(ro(se,$),ro(rn,he(T.b-1)),ge(t.d,U),d.c.length=0),Jr=n.b,is+=$+e,$=0,A=b.Math.max(A,n.b+n.c+er)),In(d.c,m),Gle(m,Jr,is),A=b.Math.max(A,Jr+er+n.c),$=b.Math.max($,P),Jr+=er+e,U=m;if(Hs(t.a,d),ge(t.d,u(Oe(d,d.c.length-1),163)),A=b.Math.max(A,r),Dn=is+$+n.a,Dns.d.d+s.d.a?T.f.d=!0:(T.f.d=!0,T.f.a=!0))),r.b!=r.d.c&&(e=n);T&&(o=u(tr(t.f,h.d.i),60),e.bo.d.d+o.d.a?T.f.d=!0:(T.f.d=!0,T.f.a=!0))}for(d=new rr(sr(ua($).a.Kc(),new z));Mr(d);)h=u(dr(d),18),h.a.b!=0&&(e=u(Pf(h.a),8),h.d.j==(ve(),Hn)&&(tt=new P_(e,new ae(e.a,s.d.d),s,h),tt.f.a=!0,tt.a=h.d,In(J.c,tt)),h.d.j==Er&&(tt=new P_(e,new ae(e.a,s.d.d+s.d.a),s,h),tt.f.d=!0,tt.a=h.d,In(J.c,tt)))}return J}function dSn(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(m=new fe,A=e.length,h=Z4t(n),k=0;k=U&&(Tt>U&&($.c.length=0,U=Tt),In($.c,h));$.c.length!=0&&(P=u(Oe($,MH(e,$.c.length)),131),Dn.a.Bc(P)!=null,P.s=J++,X6t(P,Ze,se),$.c.length=0)}for(Bt=t.c.length+1,d=new G(t);d.aOn.s&&(Kl(n),zu(On.i,r),r.c>0&&(r.a=On,ge(On.t,r),r.b=Ce,ge(Ce.i,r)))}function Hpe(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn;for(J=new wu(e.b),Bt=new wu(e.b),P=new wu(e.b),rn=new wu(e.b),tt=new wu(e.b),Ce=Dr(e,0);Ce.b!=Ce.d.c;)for(Wt=u(Ar(Ce),12),d=new G(Wt.g);d.a0,ht=Wt.g.c.length>0,k&&ht?In(P.c,Wt):k?In(J.c,Wt):ht&&In(Bt.c,Wt);for(U=new G(J);U.aTt.nh()-k.b&&(P=Tt.nh()-k.b),$>Tt.oh()-k.d&&($=Tt.oh()-k.d),T0){for(At=Dr(t.f,0);At.b!=At.d.c;)Tt=u(Ar(At),10),Tt.p+=P-t.e;b6t(t),nh(t.f),lkt(t,r,$)}else{for(Zr(t.f,$),$.p=r,t.e=b.Math.max(t.e,r),o=new rr(sr(ua($).a.Kc(),new z));Mr(o);)s=u(dr(o),18),!s.c.i.c&&s.c.i.k==(Un(),Vc)&&(Zr(t.f,s.c.i),s.c.i.p=r-1);t.c=r}else b6t(t),nh(t.f),r=0,Mr(new rr(sr(ua($).a.Kc(),new z)))?(P=0,P=Qle(P,$),r=P+2,lkt(t,r,$)):(Zr(t.f,$),$.p=0,t.e=b.Math.max(t.e,0),t.b=u(Oe(t.d.b,0),30),t.c=0);for(t.f.b==0||b6t(t),t.d.a.c.length=0,ht=new fe,k=new G(t.d.b);k.a=48&&e<=57){for(r=e-48;s=48&&e<=57;)if(r=r*10+e-48,r<0)throw at(new Yr(Qr((Ur(),BTt))))}else throw at(new Yr(Qr((Ur(),_me))));if(n=r,e==44){if(s>=t.j)throw at(new Yr(Qr((Ur(),Lme))));if((e=Va(t.i,s++))>=48&&e<=57){for(n=e-48;s=48&&e<=57;)if(n=n*10+e-48,n<0)throw at(new Yr(Qr((Ur(),BTt))));if(r>n)throw at(new Yr(Qr((Ur(),Dme))))}else n=-1}if(e!=125)throw at(new Yr(Qr((Ur(),Ame))));t.bm(s)?(o=(yi(),yi(),new By(9,o)),t.d=s+1):(o=(yi(),yi(),new By(3,o)),t.d=s),o.Om(r),o.Nm(n),wi(t)}}return o}function vSn(t){var e,n,r,s,o;switch(n=u(X(t,(oe(),lu)),21),e=rz(J3e),s=u(X(t,(De(),A3)),346),s==(Ag(),Xp)&&ch(e,Z3e),Ie(Me(X(t,a1t)))?ri(e,(Ua(),Wf),(Za(),pft)):ri(e,(Ua(),Qc),(Za(),pft)),X(t,(kq(),oL))!=null&&ch(e,t4e),(Ie(Me(X(t,X_t)))||Ie(Me(X(t,G_t))))&&el(e,(Ua(),Zo),(Za(),UCt)),u(X(t,ph),88).g){case 2:case 3:case 4:el(ri(e,(Ua(),Wf),(Za(),KCt)),Zo,GCt)}switch(n.Hc((Co(),CG))&&el(ri(ri(e,(Ua(),Wf),(Za(),VCt)),cu,qCt),Zo,HCt),$t(X(t,a2))!==$t((cf(),ZG))&&ri(e,(Ua(),Qc),(Za(),cSt)),n.Hc(_G)&&(ri(e,(Ua(),Wf),(Za(),fSt)),ri(e,H0,lSt),ri(e,Qc,hSt)),$t(X(t,PG))!==$t((M7(),AA))&&$t(X(t,zg))!==$t((Lg(),IP))&&el(e,(Ua(),Zo),(Za(),nSt)),Ie(Me(X(t,W_t)))&&ri(e,(Ua(),Qc),(Za(),eSt)),Ie(Me(X(t,n1t)))&&ri(e,(Ua(),Qc),(Za(),dSt)),I6n(t)&&($t(X(t,A3))===$t(Xp)?r=u(X(t,iP),298):r=u(X(t,e1t),298),o=r==(c7(),$ft)?(Za(),uSt):(Za(),bSt),ri(e,(Ua(),cu),o)),u(X(t,kAt),388).g){case 1:ri(e,(Ua(),cu),(Za(),gSt));break;case 2:el(ri(ri(e,(Ua(),Qc),(Za(),RCt)),cu,jCt),Zo,$Ct)}return $t(X(t,U0))!==$t((Wd(),Up))&&ri(e,(Ua(),Qc),(Za(),pSt)),e}function Kpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;if(Tu(t.a,e)){if(x1(u(tr(t.a,e),49),n))return 1}else hi(t.a,e,new Os);if(Tu(t.a,n)){if(x1(u(tr(t.a,n),49),e))return-1}else hi(t.a,n,new Os);if(Tu(t.e,e)){if(x1(u(tr(t.e,e),49),n))return-1}else hi(t.e,e,new Os);if(Tu(t.e,n)){if(x1(u(tr(t.a,n),49),e))return 1}else hi(t.e,n,new Os);if(t.c==(Wd(),k1t)||!qi(e,(oe(),Pi))||!qi(n,(oe(),Pi))){for(A=null,k=new G(e.j);k.ah?R7(t,e,n):R7(t,n,e),sh?1:0}return r=u(X(e,(oe(),Pi)),17).a,o=u(X(n,Pi),17).a,r>o?R7(t,e,n):R7(t,n,e),ro?1:0}function iv(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(n==null)return null;if(t.a!=e.jk())throw at(new zn(lT+e.xe()+fv));if(Lt(e,468)){if(tt=l8n(u(e,685),n),!tt)throw at(new zn(Hlt+n+"' is not a valid enumerator of '"+e.xe()+"'"));return tt}switch(Lp((il(),ja),e).Nl()){case 2:{n=su(n,!1);break}case 3:{n=su(n,!0);break}}if(r=Lp(ja,e).Jl(),r)return r.jk().wi().ti(r,n);if(P=Lp(ja,e).Ll(),P){for(tt=new fe,k=Sat(n),T=0,A=k.length;T1)for(U=new j6((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a));U.e!=U.i.gc();)E_(U);for(h=u(Dt((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),0),166),tt=Jr,Jr>Wt+Bt?tt=Wt+Bt:Jrse+J?ht=se+J:isWt-Bt&&ttse-J&&htJr+er?rn=Jr+er:Wtis+Ce?Ze=is+Ce:seJr-er&&rnis-Ce&&Zen&&(P=n-1),$=rb+Dl(e,24)*lN*A-A/2,$<0?$=1:$>r&&($=r-1),s=(kb(),m=new fC,m),Rq(s,P),Bq(s,$),Or((!h.a&&(h.a=new Ps(vh,h,5)),h.a),s)}function Wpe(t){wm(t,new dw(gm(hm(dm(fm(new G1,Ol),"ELK Rectangle Packing"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges. The given order of the boxes is always preserved and the main reading direction of the boxes is left to right. The algorithm is divided into two phases. One phase approximates the width in which the rectangles can be placed. The next phase places the rectangles in rows using the previously calculated width as bounding width and bundles rectangles with a similar height in blocks. A compaction step reduces the size of the drawing. Finally, the rectangles are expanded to fill their bounding box and eliminate empty unused spaces."),new s6))),le(t,Ol,Dk,1.3),le(t,Ol,eT,(Pn(),!1)),le(t,Ol,ov,wDt),le(t,Ol,h3,15),le(t,Ol,QV,Se(hEe)),le(t,Ol,_5,Se(gEe)),le(t,Ol,Ik,Se(bEe)),le(t,Ol,Mk,Se(wEe)),le(t,Ol,nT,Se(dEe)),le(t,Ol,X_,Se(gDt)),le(t,Ol,rT,Se(mEe)),le(t,Ol,Q7t,Se(xDt)),le(t,Ol,J7t,Se(yDt)),le(t,Ol,X7t,Se(ddt)),le(t,Ol,Y7t,Se(kDt)),le(t,Ol,Z7t,Se(bDt)),le(t,Ol,tTt,Se(fdt)),le(t,Ol,eTt,Se(pDt)),le(t,Ol,nTt,Se(vDt)),le(t,Ol,Y_,Se(dDt)),le(t,Ol,ZV,Se(fEe)),le(t,Ol,K7t,Se(vP)),le(t,Ol,G7t,Se(fDt)),le(t,Ol,W7t,Se(yP)),le(t,Ol,U7t,Se(mDt))}function Oct(t,e){mct();var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr;if(rn=t.e,U=t.d,s=t.a,rn==0)switch(e){case 0:return"0";case 1:return Y7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return se=new yb,e<0?se.a+="0E+":se.a+="0E",se.a+=-e,se.a}if(At=U*10+1+7,Bt=Vt(Yh,Zd,28,At+1,15,1),n=At,U==1)if(d=s[0],d<0){Jr=sa(d,So);do J=Jr,Jr=_O(Jr,10),Bt[--n]=48+qr(sf(J,Ja(Jr,10)))&js;while($c(Jr,0)!=0)}else{Jr=d;do J=Jr,Jr=Jr/10|0,Bt[--n]=48+(J-Jr*10)&js;while(Jr!=0)}else{On=Vt(Fr,ii,28,U,15,1),er=U,Xc(s,0,On,0,er);t:for(;;){for(Ce=0,k=er-1;k>=0;k--)Dn=Qa(Rf(Ce,32),sa(On[k],So)),ht=c3n(Dn),On[k]=qr(ht),Ce=qr(_m(ht,32));Tt=qr(Ce),tt=n;do Bt[--n]=48+Tt%10&js;while((Tt=Tt/10|0)!=0&&n!=0);for(r=9-tt+n,m=0;m0;m++)Bt[--n]=48;for(A=er-1;On[A]==0;A--)if(A==0)break t;er=A+1}for(;Bt[n]==48;)++n}if($=rn<0,h=At-n-e-1,e==0)return $&&(Bt[--n]=45),af(Bt,n,At-n);if(e>0&&h>=-6){if(h>=0){for(T=n+h,P=At-1;P>=T;P--)Bt[P+1]=Bt[P];return Bt[++T]=46,$&&(Bt[--n]=45),af(Bt,n,At-n+1)}for(A=2;A<-h+1;A++)Bt[--n]=48;return Bt[--n]=46,Bt[--n]=48,$&&(Bt[--n]=45),af(Bt,n,At-n)}return Ze=n+1,o=At,Wt=new I4,$&&(Wt.a+="-"),o-Ze>=1?(Db(Wt,Bt[n]),Wt.a+=".",Wt.a+=af(Bt,n+1,At-n-1)):Wt.a+=af(Bt,n,At-n),Wt.a+="E",h>0&&(Wt.a+="+"),Wt.a+=""+h,Wt.a}function Ype(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;switch(t.c=e,t.g=new _r,n=(xy(),new my(t.c)),r=new RC(n),j5t(r),At=Gr(ne(t.c,(LO(),zDt))),m=u(ne(t.c,Edt),324),Wt=u(ne(t.c,Tdt),437),h=u(ne(t.c,RDt),489),Bt=u(ne(t.c,kdt),438),t.j=Rt(Ht(ne(t.c,IEe))),d=t.a,m.g){case 0:d=t.a;break;case 1:d=t.b;break;case 2:d=t.i;break;case 3:d=t.e;break;case 4:d=t.f;break;default:throw at(new zn(cU+(m.f!=null?m.f:""+m.g)))}if(t.d=new zne(d,Wt,h),Zt(t.d,(s7(),EA),Me(ne(t.c,DEe))),t.d.c=Ie(Me(ne(t.c,jDt))),Jz(t.c).i==0)return t.d;for(A=new Zn(Jz(t.c));A.e!=A.i.gc();){for(T=u(ar(A),27),$=T.g/2,P=T.f/2,se=new ae(T.i+$,T.j+P);Tu(t.g,se);)Tm(se,(b.Math.random()-.5)*n0,(b.Math.random()-.5)*n0);J=u(ne(T,(ai(),UT)),140),tt=new ere(se,new Ah(se.a-$-t.j/2-J.b,se.b-P-t.j/2-J.d,T.g+t.j+(J.b+J.c),T.f+t.j+(J.d+J.a))),ge(t.d.i,tt),hi(t.g,se,new Ws(tt,T))}switch(Bt.g){case 0:if(At==null)t.d.d=u(Oe(t.d.i,0),68);else for(Tt=new G(t.d.i);Tt.a0?er+1:1);for(h=new G(se.g);h.a0?er+1:1)}t.c[k]==0?Zr(t.e,J):t.a[k]==0&&Zr(t.f,J),++k}for(U=-1,$=1,A=new fe,t.d=u(X(e,(oe(),Kk)),234);yh>0;){for(;t.e.b!=0;)is=u(Tit(t.e),10),t.b[is.p]=U--,_kt(t,is),--yh;for(;t.f.b!=0;)El=u(Tit(t.f),10),t.b[El.p]=$++,_kt(t,El),--yh;if(yh>0){for(P=Ga,Tt=new G(At);Tt.a=P&&(Bt>P&&(A.c.length=0,P=Bt),In(A.c,J)));T=t.sg(A),t.b[T.p]=$++,_kt(t,T),--yh}}for(Jr=At.c.length+1,k=0;kt.b[Go]&&(nv(r,!0),Zt(e,tP,(Pn(),!0)));t.a=null,t.c=null,t.b=null,nh(t.f),nh(t.e),n.Vg()}function Xpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;for(Wt=u(Dt((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),0),166),T=new Qu,Bt=new _r,se=sge(Wt),yu(Bt.f,Wt,se),P=new _r,r=new Ki,U=A0(ah(lt(ut(gh,1),Ln,20,0,[(!e.d&&(e.d=new kn(Ts,e,8,5)),e.d),(!e.e&&(e.e=new kn(Ts,e,7,4)),e.e)])));Mr(U);){if($=u(dr(U),74),(!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i!=1)throw at(new zn(Fwe+(!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i));$!=t&&(tt=u(Dt((!$.a&&($.a=new Jt(Wi,$,6,6)),$.a),0),166),hs(r,tt,r.c.b,r.c),J=u(Ko(Eo(Bt.f,tt)),13),J||(J=sge(tt),yu(Bt.f,tt,J)),A=n?ia(new io(u(Oe(se,se.c.length-1),8)),u(Oe(J,J.c.length-1),8)):ia(new io((vn(0,se.c.length),u(se.c[0],8))),(vn(0,J.c.length),u(J.c[0],8))),yu(P.f,tt,A))}if(r.b!=0)for(ht=u(Oe(se,n?se.c.length-1:0),8),k=1;k1&&hs(T,ht,T.c.b,T.c),Qst(s)));ht=Tt}return T}function Qpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(n.Ug(Q2e,1),On=u(nc(_i(new ln(null,new gn(e,16)),new ott),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),T=u(nc(_i(new ln(null,new gn(e,16)),new ZUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),U=u(nc(_i(new ln(null,new gn(e,16)),new JUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),J=Vt(aK,rU,39,e.gc(),0,1),h=0;h=0&&Ze=0&&!J[$]){J[$]=s,T.gd(d),--d;break}if($=Ze-P,$=0&&!J[$]){J[$]=s,T.gd(d),--d;break}}for(U.jd(new ctt),m=J.length-1;m>=0;m--)!J[m]&&!U.dc()&&(J[m]=u(U.Xb(0),39),U.gd(0));for(k=0;k=0;m--)Zr(n,(vn(m,h.c.length),u(h.c[m],8)));return n}function Zpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(At=Rt(Ht(ne(e,(N0(),B3)))),$=Rt(Ht(ne(e,nL))),P=Rt(Ht(ne(e,bK))),M4t((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a)),ht=Hge((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a),At,t.b),tt=0;ttP&&CO((vn(P,e.c.length),u(e.c[P],186)),T),T=null;e.c.length>P&&(vn(P,e.c.length),u(e.c[P],186)).a.c.length==0;)zu(e,(vn(P,e.c.length),e.c[P]));if(!T){--h;continue}if(!Ie(Me(u(Oe(T.b,0),27).of((fd(),yP))))&&HEn(e,U,o,T,tt,n,P,r)){J=!0;continue}if(tt){if($=U.b,A=T.f,!Ie(Me(u(Oe(T.b,0),27).of(yP)))&&o9n(e,U,o,T,n,P,r,s)){if(J=!0,$=t.j){t.a=-1,t.c=1;return}if(e=Va(t.i,t.d++),t.a=e,t.b==1){switch(e){case 92:if(r=10,t.d>=t.j)throw at(new Yr(Qr((Ur(),pU))));t.a=Va(t.i,t.d++);break;case 45:(t.e&512)==512&&t.d=t.j||Va(t.i,t.d)!=63)break;if(++t.d>=t.j)throw at(new Yr(Qr((Ur(),nht))));switch(e=Va(t.i,t.d++),e){case 58:r=13;break;case 61:r=14;break;case 33:r=15;break;case 91:r=19;break;case 62:r=18;break;case 60:if(t.d>=t.j)throw at(new Yr(Qr((Ur(),nht))));if(e=Va(t.i,t.d++),e==61)r=16;else if(e==33)r=17;else throw at(new Yr(Qr((Ur(),ume))));break;case 35:for(;t.d=t.j)throw at(new Yr(Qr((Ur(),pU))));t.a=Va(t.i,t.d++);break;default:r=0}t.c=r}function LSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(n.Ug("Process compaction",1),!!Ie(Me(X(e,(Cc(),xLt))))){for(s=u(X(e,Mv),88),$=Rt(Ht(X(e,H1t))),nTn(t,e,s),GCn(e,$/2/2),U=e.b,rw(U,new UUt(s)),k=Dr(U,0);k.b!=k.d.c;)if(m=u(Ar(k),39),!Ie(Me(X(m,(ji(),u2))))){if(r=A8n(m,s),J=E7n(m,e),A=0,P=0,r)switch(tt=r.e,s.g){case 2:A=tt.a-$-m.f.a,J.e.a-$-m.f.aA&&(A=J.e.a+J.f.a+$),P=A+m.f.a;break;case 4:A=tt.b-$-m.f.b,J.e.b-$-m.f.bA&&(A=J.e.b+J.f.b+$),P=A+m.f.b}else if(J)switch(s.g){case 2:A=J.e.a-$-m.f.a,P=A+m.f.a;break;case 1:A=J.e.a+J.f.a+$,P=A+m.f.a;break;case 4:A=J.e.b-$-m.f.b,P=A+m.f.b;break;case 3:A=J.e.b+J.f.b+$,P=A+m.f.b}$t(X(e,q1t))===$t((s_(),dP))?(o=A,h=P,d=f7(_i(new ln(null,new gn(t.a,16)),new NXt(o,h))),d.a!=null?s==(Rs(),Uo)||s==tc?m.e.a=A:m.e.b=A:(s==(Rs(),Uo)||s==Gh?d=f7(_i(loe(new ln(null,new gn(t.a,16))),new GUt(o))):d=f7(_i(loe(new ln(null,new gn(t.a,16))),new KUt(o))),d.a!=null&&(s==Uo||s==tc?m.e.a=Rt(Ht((ur(d.a!=null),u(d.a,42)).a)):m.e.b=Rt(Ht((ur(d.a!=null),u(d.a,42)).a)))),d.a!=null&&(T=Xo(t.a,(ur(d.a!=null),d.a),0),T>0&&T!=u(X(m,h0),17).a&&(Zt(m,dLt,(Pn(),!0)),Zt(m,h0,he(T))))):s==(Rs(),Uo)||s==tc?m.e.a=A:m.e.b=A}n.Vg()}}function tbe(t){var e,n,r,s,o,h,d,m,k;for(t.b=1,wi(t),e=null,t.c==0&&t.a==94?(wi(t),e=(yi(),yi(),new ih(4)),iu(e,0,gT),d=new ih(4)):d=(yi(),yi(),new ih(4)),s=!0;(k=t.c)!=1;){if(k==0&&t.a==93&&!s){e&&($_(e,d),d=e);break}if(n=t.a,r=!1,k==10)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:a3(d,j7(n)),r=!0;break;case 105:case 73:case 99:case 67:n=(a3(d,j7(n)),-1),n<0&&(r=!0);break;case 112:case 80:if(m=M6t(t,n),!m)throw at(new Yr(Qr((Ur(),rht))));a3(d,m),r=!0;break;default:n=fkt(t)}else if(k==24&&!s){if(e&&($_(e,d),d=e),o=tbe(t),$_(d,o),t.c!=0||t.a!=93)throw at(new Yr(Qr((Ur(),vme))));break}if(wi(t),!r){if(k==0){if(n==91)throw at(new Yr(Qr((Ur(),PTt))));if(n==93)throw at(new Yr(Qr((Ur(),FTt))));if(n==45&&!s&&t.a!=93)throw at(new Yr(Qr((Ur(),iht))))}if(t.c!=0||t.a!=45||n==45&&s)iu(d,n,n);else{if(wi(t),(k=t.c)==1)throw at(new Yr(Qr((Ur(),bU))));if(k==0&&t.a==93)iu(d,n,n),iu(d,45,45);else{if(k==0&&t.a==93||k==24)throw at(new Yr(Qr((Ur(),iht))));if(h=t.a,k==0){if(h==91)throw at(new Yr(Qr((Ur(),PTt))));if(h==93)throw at(new Yr(Qr((Ur(),FTt))));if(h==45)throw at(new Yr(Qr((Ur(),iht))))}else k==10&&(h=fkt(t));if(wi(t),n>h)throw at(new Yr(Qr((Ur(),kme))));iu(d,n,h)}}}s=!1}if(t.c==1)throw at(new Yr(Qr((Ur(),bU))));return g5(d),R_(d),t.b=0,wi(t),d}function DSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt;if(n.Ug("Coffman-Graham Layering",1),e.a.c.length==0){n.Vg();return}for(Wt=u(X(e,(De(),J_t)),17).a,m=0,h=0,P=new G(e.a);P.a=Wt||!Twn(ht,r))&&(r=Qee(e,T)),Aa(ht,r),o=new rr(sr(ua(ht).a.Kc(),new z));Mr(o);)s=u(dr(o),18),!t.a[s.p]&&(J=s.c.i,--t.e[J.p],t.e[J.p]==0&&V6(D7($,J),X7));for(k=T.c.length-1;k>=0;--k)ge(e.b,(vn(k,T.c.length),u(T.c[k],30)));e.a.c.length=0,n.Vg()}function ebe(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;Bt=!1;do for(Bt=!1,o=e?new cr(t.a.b).a.gc()-2:1;e?o>=0:ou(X(tt,Pi),17).a)&&(At=!1);if(At){for(m=e?o+1:o-1,d=m3t(t.a,he(m)),h=!1,Tt=!0,r=!1,T=Dr(d,0);T.b!=T.d.c;)k=u(Ar(T),10),qi(k,Pi)?k.p!=A.p&&(h=h|(e?u(X(k,Pi),17).au(X(A,Pi),17).a),Tt=!1):!h&&Tt&&k.k==(Un(),Vc)&&(r=!0,e?P=u(dr(new rr(sr(ua(k).a.Kc(),new z))),18).c.i:P=u(dr(new rr(sr(_s(k).a.Kc(),new z))),18).d.i,P==A&&(e?n=u(dr(new rr(sr(_s(k).a.Kc(),new z))),18).d.i:n=u(dr(new rr(sr(ua(k).a.Kc(),new z))),18).c.i,(e?u(Sy(t.a,n),17).a-u(Sy(t.a,P),17).a:u(Sy(t.a,P),17).a-u(Sy(t.a,n),17).a)<=2&&(Tt=!1)));if(r&&Tt&&(e?n=u(dr(new rr(sr(_s(A).a.Kc(),new z))),18).d.i:n=u(dr(new rr(sr(ua(A).a.Kc(),new z))),18).c.i,(e?u(Sy(t.a,n),17).a-u(Sy(t.a,A),17).a:u(Sy(t.a,A),17).a-u(Sy(t.a,n),17).a)<=2&&n.k==(Un(),xs)&&(Tt=!1)),h||Tt){for(J=Ide(t,A,e);J.a.gc()!=0;)U=u(J.a.ec().Kc().Pb(),10),J.a.Bc(U)!=null,Ma(J,Ide(t,U,e));--$,Bt=!0}}}while(Bt)}function MSn(t){zr(t.c,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#decimal"])),zr(t.d,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#integer"])),zr(t.e,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#boolean"])),zr(t.f,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EBoolean",pi,"EBoolean:Object"])),zr(t.i,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#byte"])),zr(t.g,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#hexBinary"])),zr(t.j,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EByte",pi,"EByte:Object"])),zr(t.n,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EChar",pi,"EChar:Object"])),zr(t.t,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#double"])),zr(t.u,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EDouble",pi,"EDouble:Object"])),zr(t.F,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#float"])),zr(t.G,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EFloat",pi,"EFloat:Object"])),zr(t.I,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#int"])),zr(t.J,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EInt",pi,"EInt:Object"])),zr(t.N,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#long"])),zr(t.O,ti,lt(ut(Pe,1),ue,2,6,[Ka,"ELong",pi,"ELong:Object"])),zr(t.Z,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#short"])),zr(t.$,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EShort",pi,"EShort:Object"])),zr(t._,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#string"]))}function ISn(t,e,n,r,s,o,h){var d,m,k,T,A,P,$,U;return P=u(r.a,17).a,$=u(r.b,17).a,A=t.b,U=t.c,d=0,T=0,e==(Rs(),Uo)||e==tc?(T=KM(Vue(Ny(Wo(new ln(null,new gn(n.b,16)),new ltt),new YZ))),A.e.b+A.f.b/2>T?(k=++$,d=Rt(Ht(Vl(My(Wo(new ln(null,new gn(n.b,16)),new BXt(s,k)),new DR))))):(m=++P,d=Rt(Ht(Vl(G6(Wo(new ln(null,new gn(n.b,16)),new RXt(s,m)),new XZ)))))):(T=KM(Vue(Ny(Wo(new ln(null,new gn(n.b,16)),new ZZ),new LR))),A.e.a+A.f.a/2>T?(k=++$,d=Rt(Ht(Vl(My(Wo(new ln(null,new gn(n.b,16)),new PXt(s,k)),new QZ))))):(m=++P,d=Rt(Ht(Vl(G6(Wo(new ln(null,new gn(n.b,16)),new FXt(s,m)),new QD)))))),e==Uo?(ro(t.a,new ae(Rt(Ht(X(A,(ji(),P1))))-s,d)),ro(t.a,new ae(U.e.a+U.f.a+s+o,d)),ro(t.a,new ae(U.e.a+U.f.a+s+o,U.e.b+U.f.b/2)),ro(t.a,new ae(U.e.a+U.f.a,U.e.b+U.f.b/2))):e==tc?(ro(t.a,new ae(Rt(Ht(X(A,(ji(),Xf))))+s,A.e.b+A.f.b/2)),ro(t.a,new ae(A.e.a+A.f.a+s,d)),ro(t.a,new ae(U.e.a-s-o,d)),ro(t.a,new ae(U.e.a-s-o,U.e.b+U.f.b/2)),ro(t.a,new ae(U.e.a,U.e.b+U.f.b/2))):e==Gh?(ro(t.a,new ae(d,Rt(Ht(X(A,(ji(),P1))))-s)),ro(t.a,new ae(d,U.e.b+U.f.b+s+o)),ro(t.a,new ae(U.e.a+U.f.a/2,U.e.b+U.f.b+s+o)),ro(t.a,new ae(U.e.a+U.f.a/2,U.e.b+U.f.b+s))):(t.a.b==0||(u(Pf(t.a),8).b=Rt(Ht(X(A,(ji(),Xf))))+s*u(h.b,17).a),ro(t.a,new ae(d,Rt(Ht(X(A,(ji(),Xf))))+s*u(h.b,17).a)),ro(t.a,new ae(d,U.e.b-s*u(h.a,17).a-o))),new Ws(he(P),he($))}function OSn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$;if(h=!0,A=null,r=null,s=null,e=!1,$=pTe,k=null,o=null,d=0,m=eot(t,d,BIt,RIt),m=0&&hn(t.substr(d,2),"//")?(d+=2,m=eot(t,d,CL,SL),r=(Da(d,m,t.length),t.substr(d,m-d)),d=m):A!=null&&(d==t.length||(qn(d,t.length),t.charCodeAt(d)!=47))&&(h=!1,m=qmt(t,Hu(35),d),m==-1&&(m=t.length),r=(Da(d,m,t.length),t.substr(d,m-d)),d=m);if(!n&&d0&&Va(T,T.length-1)==58&&(s=T,d=m)),dXot(o))&&(A=o);for(!A&&(A=(vn(0,tt.c.length),u(tt.c[0],185))),J=new G(e.b);J.aA&&(Dn=0,er+=T+Ce,T=0),U0e(Wt,h,Dn,er),e=b.Math.max(e,Dn+se.a),T=b.Math.max(T,se.b),Dn+=se.a+Ce;for(Bt=new _r,n=new _r,Ze=new G(t);Ze.a=-1900?1:0,n>=4?ni(t,lt(ut(Pe,1),ue,2,6,[mbe,vbe])[d]):ni(t,lt(ut(Pe,1),ue,2,6,["BC","AD"])[d]);break;case 121:Zwn(t,n,r);break;case 77:mEn(t,n,r);break;case 107:m=s.q.getHours(),m==0?M0(t,24,n):M0(t,m,n);break;case 83:M6n(t,n,s);break;case 69:T=r.q.getDay(),n==5?ni(t,lt(ut(Pe,1),ue,2,6,["S","M","T","W","T","F","S"])[T]):n==4?ni(t,lt(ut(Pe,1),ue,2,6,[Zct,tut,eut,nut,rut,iut,sut])[T]):ni(t,lt(ut(Pe,1),ue,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[T]);break;case 97:s.q.getHours()>=12&&s.q.getHours()<24?ni(t,lt(ut(Pe,1),ue,2,6,["AM","PM"])[1]):ni(t,lt(ut(Pe,1),ue,2,6,["AM","PM"])[0]);break;case 104:A=s.q.getHours()%12,A==0?M0(t,12,n):M0(t,A,n);break;case 75:P=s.q.getHours()%12,M0(t,P,n);break;case 72:$=s.q.getHours(),M0(t,$,n);break;case 99:U=r.q.getDay(),n==5?ni(t,lt(ut(Pe,1),ue,2,6,["S","M","T","W","T","F","S"])[U]):n==4?ni(t,lt(ut(Pe,1),ue,2,6,[Zct,tut,eut,nut,rut,iut,sut])[U]):n==3?ni(t,lt(ut(Pe,1),ue,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[U]):M0(t,U,1);break;case 76:J=r.q.getMonth(),n==5?ni(t,lt(ut(Pe,1),ue,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[J]):n==4?ni(t,lt(ut(Pe,1),ue,2,6,[qct,Hct,Vct,Uct,Tk,Gct,Kct,Wct,Yct,Xct,Qct,Jct])[J]):n==3?ni(t,lt(ut(Pe,1),ue,2,6,["Jan","Feb","Mar","Apr",Tk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[J]):M0(t,J+1,n);break;case 81:tt=r.q.getMonth()/3|0,n<4?ni(t,lt(ut(Pe,1),ue,2,6,["Q1","Q2","Q3","Q4"])[tt]):ni(t,lt(ut(Pe,1),ue,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[tt]);break;case 100:ht=r.q.getDate(),M0(t,ht,n);break;case 109:k=s.q.getMinutes(),M0(t,k,n);break;case 115:h=s.q.getSeconds(),M0(t,h,n);break;case 122:n<4?ni(t,o.c[0]):ni(t,o.c[1]);break;case 118:ni(t,o.b);break;case 90:n<3?ni(t,T5n(o)):n==3?ni(t,L5n(o)):ni(t,D5n(o.a));break;default:return!1}return!0}function a8t(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr;if(N0e(e),m=u(Dt((!e.b&&(e.b=new kn(vr,e,4,7)),e.b),0),84),T=u(Dt((!e.c&&(e.c=new kn(vr,e,5,8)),e.c),0),84),d=Jo(m),k=Jo(T),h=(!e.a&&(e.a=new Jt(Wi,e,6,6)),e.a).i==0?null:u(Dt((!e.a&&(e.a=new Jt(Wi,e,6,6)),e.a),0),166),Ce=u(tr(t.a,d),10),Dn=u(tr(t.a,k),10),rn=null,er=null,Lt(m,193)&&(se=u(tr(t.a,m),304),Lt(se,12)?rn=u(se,12):Lt(se,10)&&(Ce=u(se,10),rn=u(Oe(Ce.j,0),12))),Lt(T,193)&&(On=u(tr(t.a,T),304),Lt(On,12)?er=u(On,12):Lt(On,10)&&(Dn=u(On,10),er=u(Oe(Dn.j,0),12))),!Ce||!Dn)throw at(new L6("The source or the target of edge "+e+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(J=new Pm,Qo(J,e),Zt(J,(oe(),Li),e),Zt(J,(De(),Vo),null),$=u(X(r,lu),21),Ce==Dn&&$.Fc((Co(),DA)),rn||(Wt=(To(),ku),Ze=null,h&&z4(u(X(Ce,bs),101))&&(Ze=new ae(h.j,h.k),Eie(Ze,AI(e)),Qie(Ze,n),qy(k,d)&&(Wt=vl,ki(Ze,Ce.n))),rn=Pge(Ce,Ze,Wt,r)),er||(Wt=(To(),vl),Jr=null,h&&z4(u(X(Dn,bs),101))&&(Jr=new ae(h.b,h.c),Eie(Jr,AI(e)),Qie(Jr,n)),er=Pge(Dn,Jr,Wt,Pa(Dn))),Xa(J,rn),xa(J,er),(rn.e.c.length>1||rn.g.c.length>1||er.e.c.length>1||er.g.c.length>1)&&$.Fc((Co(),LA)),P=new Zn((!e.n&&(e.n=new Jt(Po,e,1,7)),e.n));P.e!=P.i.gc();)if(A=u(ar(P),135),!Ie(Me(ne(A,Nw)))&&A.a)switch(tt=Pat(A),ge(J.b,tt),u(X(tt,l0),278).g){case 1:case 2:$.Fc((Co(),LT));break;case 0:$.Fc((Co(),AT)),Zt(tt,l0,(cd(),GT))}if(o=u(X(r,FA),322),ht=u(X(r,UG),323),s=o==(QS(),QN)||ht==(w_(),y1t),h&&(!h.a&&(h.a=new Ps(vh,h,5)),h.a).i!=0&&s){for(Tt=MO(h),U=new Qu,Bt=Dr(Tt,0);Bt.b!=Bt.d.c;)At=u(Ar(Bt),8),Zr(U,new io(At));Zt(J,t_t,U)}return J}function BSn(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is;for(Ze=0,On=0,Ce=new _r,Wt=u(Vl(My(Wo(new ln(null,new gn(t.b,16)),new JZ),new stt)),17).a+1,rn=Vt(Fr,ii,28,Wt,15,1),tt=Vt(Fr,ii,28,Wt,15,1),J=0;J1)for(d=er+1;dk.b.e.b*(1-ht)+k.c.e.b*ht));U++);if(se.gc()>0&&(Jr=k.a.b==0?Oa(k.b.e):u(Pf(k.a),8),At=ki(Oa(u(se.Xb(se.gc()-1),39).e),u(se.Xb(se.gc()-1),39).f),P=ki(Oa(u(se.Xb(0),39).e),u(se.Xb(0),39).f),U>=se.gc()-1&&Jr.b>At.b&&k.c.e.b>At.b||U<=0&&Jr.bk.b.e.a*(1-ht)+k.c.e.a*ht));U++);if(se.gc()>0&&(Jr=k.a.b==0?Oa(k.b.e):u(Pf(k.a),8),At=ki(Oa(u(se.Xb(se.gc()-1),39).e),u(se.Xb(se.gc()-1),39).f),P=ki(Oa(u(se.Xb(0),39).e),u(se.Xb(0),39).f),U>=se.gc()-1&&Jr.a>At.a&&k.c.e.a>At.a||U<=0&&Jr.a=Rt(Ht(X(t,(ji(),bLt))))&&++On):($.f&&$.d.e.a<=Rt(Ht(X(t,(ji(),R1t))))&&++Ze,$.g&&$.c.e.a+$.c.f.a>=Rt(Ht(X(t,(ji(),pLt))))&&++On)}else Bt==0?A6t(k):Bt<0&&(++rn[er],++tt[is],Dn=ISn(k,e,t,new Ws(he(Ze),he(On)),n,r,new Ws(he(tt[is]),he(rn[er]))),Ze=u(Dn.a,17).a,On=u(Dn.b,17).a)}function RSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;if(r=e,m=n,t.b&&r.j==(ve(),Gn)&&m.j==(ve(),Gn)&&(Tt=r,r=m,m=Tt),Tu(t.a,r)){if(x1(u(tr(t.a,r),49),m))return 1}else hi(t.a,r,new Os);if(Tu(t.a,m)){if(x1(u(tr(t.a,m),49),r))return-1}else hi(t.a,m,new Os);if(Tu(t.d,r)){if(x1(u(tr(t.d,r),49),m))return-1}else hi(t.d,r,new Os);if(Tu(t.d,m)){if(x1(u(tr(t.a,m),49),r))return 1}else hi(t.d,m,new Os);if(r.j!=m.j)return ht=Sin(r.j,m.j),ht==-1?$h(t,m,r):$h(t,r,m),ht;if(r.e.c.length!=0&&m.e.c.length!=0){if(t.b&&(ht=mue(r,m),ht!=0))return ht==-1?$h(t,m,r):ht==1&&$h(t,r,m),ht;if(o=u(Oe(r.e,0),18).c.i,T=u(Oe(m.e,0),18).c.i,o==T)return s=u(X(u(Oe(r.e,0),18),(oe(),Pi)),17).a,k=u(X(u(Oe(m.e,0),18),Pi),17).a,s>k?$h(t,r,m):$h(t,m,r),sk?1:0;for(U=t.c,J=0,tt=U.length;Jk?$h(t,r,m):$h(t,m,r),sk?1:0):t.b&&(ht=mue(r,m),ht!=0)?(ht==-1?$h(t,m,r):ht==1&&$h(t,r,m),ht):(h=0,A=0,qi(u(Oe(r.g,0),18),Pi)&&(h=u(X(u(Oe(r.g,0),18),Pi),17).a),qi(u(Oe(m.g,0),18),Pi)&&(A=u(X(u(Oe(r.g,0),18),Pi),17).a),d&&d==P?Ie(Me(X(u(Oe(r.g,0),18),vd)))&&!Ie(Me(X(u(Oe(m.g,0),18),vd)))?($h(t,r,m),1):!Ie(Me(X(u(Oe(r.g,0),18),vd)))&&Ie(Me(X(u(Oe(m.g,0),18),vd)))?($h(t,m,r),-1):(h>A?$h(t,r,m):$h(t,m,r),hA?1:0):(t.f&&(t.f._b(d)&&(h=u(t.f.xc(d),17).a),t.f._b(P)&&(A=u(t.f.xc(P),17).a)),h>A?$h(t,r,m):$h(t,m,r),hA?1:0))):r.e.c.length!=0&&m.g.c.length!=0?($h(t,r,m),1):r.g.c.length!=0&&m.e.c.length!=0?($h(t,m,r),-1):qi(r,(oe(),Pi))&&qi(m,Pi)?(s=u(X(r,Pi),17).a,k=u(X(m,Pi),17).a,s>k?$h(t,r,m):$h(t,m,r),sk?1:0):($h(t,m,r),-1)}function jSn(t){t.gb||(t.gb=!0,t.b=Tc(t,0),fs(t.b,18),Vi(t.b,19),t.a=Tc(t,1),fs(t.a,1),Vi(t.a,2),Vi(t.a,3),Vi(t.a,4),Vi(t.a,5),t.o=Tc(t,2),fs(t.o,8),fs(t.o,9),Vi(t.o,10),Vi(t.o,11),Vi(t.o,12),Vi(t.o,13),Vi(t.o,14),Vi(t.o,15),Vi(t.o,16),Vi(t.o,17),Vi(t.o,18),Vi(t.o,19),Vi(t.o,20),Vi(t.o,21),Vi(t.o,22),Vi(t.o,23),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),t.p=Tc(t,3),fs(t.p,2),fs(t.p,3),fs(t.p,4),fs(t.p,5),Vi(t.p,6),Vi(t.p,7),zo(t.p),zo(t.p),t.q=Tc(t,4),fs(t.q,8),t.v=Tc(t,5),Vi(t.v,9),zo(t.v),zo(t.v),zo(t.v),t.w=Tc(t,6),fs(t.w,2),fs(t.w,3),fs(t.w,4),Vi(t.w,5),t.B=Tc(t,7),Vi(t.B,1),zo(t.B),zo(t.B),zo(t.B),t.Q=Tc(t,8),Vi(t.Q,0),zo(t.Q),t.R=Tc(t,9),fs(t.R,1),t.S=Tc(t,10),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),t.T=Tc(t,11),Vi(t.T,10),Vi(t.T,11),Vi(t.T,12),Vi(t.T,13),Vi(t.T,14),zo(t.T),zo(t.T),t.U=Tc(t,12),fs(t.U,2),fs(t.U,3),Vi(t.U,4),Vi(t.U,5),Vi(t.U,6),Vi(t.U,7),zo(t.U),t.V=Tc(t,13),Vi(t.V,10),t.W=Tc(t,14),fs(t.W,18),fs(t.W,19),fs(t.W,20),Vi(t.W,21),Vi(t.W,22),Vi(t.W,23),t.bb=Tc(t,15),fs(t.bb,10),fs(t.bb,11),fs(t.bb,12),fs(t.bb,13),fs(t.bb,14),fs(t.bb,15),fs(t.bb,16),Vi(t.bb,17),zo(t.bb),zo(t.bb),t.eb=Tc(t,16),fs(t.eb,2),fs(t.eb,3),fs(t.eb,4),fs(t.eb,5),fs(t.eb,6),fs(t.eb,7),Vi(t.eb,8),Vi(t.eb,9),t.ab=Tc(t,17),fs(t.ab,0),fs(t.ab,1),t.H=Tc(t,18),Vi(t.H,0),Vi(t.H,1),Vi(t.H,2),Vi(t.H,3),Vi(t.H,4),Vi(t.H,5),zo(t.H),t.db=Tc(t,19),Vi(t.db,2),t.c=di(t,20),t.d=di(t,21),t.e=di(t,22),t.f=di(t,23),t.i=di(t,24),t.g=di(t,25),t.j=di(t,26),t.k=di(t,27),t.n=di(t,28),t.r=di(t,29),t.s=di(t,30),t.t=di(t,31),t.u=di(t,32),t.fb=di(t,33),t.A=di(t,34),t.C=di(t,35),t.D=di(t,36),t.F=di(t,37),t.G=di(t,38),t.I=di(t,39),t.J=di(t,40),t.L=di(t,41),t.M=di(t,42),t.N=di(t,43),t.O=di(t,44),t.P=di(t,45),t.X=di(t,46),t.Y=di(t,47),t.Z=di(t,48),t.$=di(t,49),t._=di(t,50),t.cb=di(t,51),t.K=di(t,52))}function $Sn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er;for(h=new Ki,se=u(X(n,(De(),ph)),88),J=0,Ma(h,(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));h.b!=0;)T=u(h.b==0?null:(ur(h.b!=0),Oh(h,h.a.a)),27),k=Ji(T),($t(ne(k,U0))!==$t((Wd(),Up))||$t(ne(k,Dw))===$t((Ip(),ST))||$t(ne(k,Dw))===$t((Ip(),CT))||Ie(Me(ne(k,Ev)))||$t(ne(k,_3))!==$t((lw(),x3))||$t(ne(k,a2))===$t((cf(),Lv))||$t(ne(k,a2))===$t((cf(),N3))||$t(ne(k,Iw))===$t((Bp(),RT))||$t(ne(k,Iw))===$t((Bp(),jT)))&&!Ie(Me(ne(T,BG)))&&Mi(T,(oe(),Pi),he(J++)),ht=!Ie(Me(ne(T,Nw))),ht&&(P=(!T.a&&(T.a=new Jt(bi,T,10,11)),T.a).i!=0,U=p3n(T),$=$t(ne(T,A3))===$t((Ag(),Xp)),er=!ad(T,(ai(),VT))||sse(Gr(ne(T,VT))),Bt=null,er&&$&&(P||U)&&(Bt=pge(T),Zt(Bt,ph,se),qi(Bt,sP)&&pWt(new V5t(Rt(Ht(X(Bt,sP)))),Bt),u(ne(T,Ow),181).gc()!=0&&(A=Bt,ms(new ln(null,(!T.c&&(T.c=new Jt(kl,T,9,9)),new gn(T.c,16))),new kVt(A)),o0e(T,Bt))),Ce=n,rn=u(tr(t.a,Ji(T)),10),rn&&(Ce=rn.e),At=qpe(t,T,Ce),Bt&&(At.e=Bt,Bt.e=At,Ma(h,(!T.a&&(T.a=new Jt(bi,T,10,11)),T.a))));for(J=0,hs(h,e,h.c.b,h.c);h.b!=0;){for(o=u(h.b==0?null:(ur(h.b!=0),Oh(h,h.a.a)),27),m=new Zn((!o.b&&(o.b=new Jt(Ts,o,12,3)),o.b));m.e!=m.i.gc();)d=u(ar(m),74),N0e(d),($t(ne(e,U0))!==$t((Wd(),Up))||$t(ne(e,Dw))===$t((Ip(),ST))||$t(ne(e,Dw))===$t((Ip(),CT))||Ie(Me(ne(e,Ev)))||$t(ne(e,_3))!==$t((lw(),x3))||$t(ne(e,a2))===$t((cf(),Lv))||$t(ne(e,a2))===$t((cf(),N3))||$t(ne(e,Iw))===$t((Bp(),RT))||$t(ne(e,Iw))===$t((Bp(),jT)))&&Mi(d,(oe(),Pi),he(J++)),On=Jo(u(Dt((!d.b&&(d.b=new kn(vr,d,4,7)),d.b),0),84)),Dn=Jo(u(Dt((!d.c&&(d.c=new kn(vr,d,5,8)),d.c),0),84)),!(Ie(Me(ne(d,Nw)))||Ie(Me(ne(On,Nw)))||Ie(Me(ne(Dn,Nw))))&&(tt=Zm(d)&&Ie(Me(ne(On,L3)))&&Ie(Me(ne(d,Mw))),Wt=o,tt||qy(Dn,On)?Wt=On:qy(On,Dn)&&(Wt=Dn),Ce=n,rn=u(tr(t.a,Wt),10),rn&&(Ce=rn.e),Tt=a8t(t,d,Wt,Ce),Zt(Tt,(oe(),XSt),$kn(t,d,e,n)));if($=$t(ne(o,A3))===$t((Ag(),Xp)),$)for(s=new Zn((!o.a&&(o.a=new Jt(bi,o,10,11)),o.a));s.e!=s.i.gc();)r=u(ar(s),27),er=!ad(r,(ai(),VT))||sse(Gr(ne(r,VT))),Ze=$t(ne(r,A3))===$t(Xp),er&&Ze&&hs(h,r,h.c.b,h.c)}}function oe(){oe=V;var t,e;Li=new Oi(G8t),XSt=new Oi("coordinateOrigin"),Yft=new Oi("processors"),YSt=new rs("compoundNode",(Pn(),!1)),eP=new rs("insideConnections",!1),t_t=new Oi("originalBendpoints"),e_t=new Oi("originalDummyNodePosition"),n_t=new Oi("originalLabelEdge"),IA=new Oi("representedLabels"),MA=new Oi("endLabels"),Vk=new Oi("endLabel.origin"),Gk=new rs("labelSide",(uh(),NP)),V5=new rs("maxEdgeThickness",0),vd=new rs("reversed",!1),Kk=new Oi(s2e),N1=new rs("longEdgeSource",null),gf=new rs("longEdgeTarget",null),C3=new rs("longEdgeHasLabelDummies",!1),nP=new rs("longEdgeBeforeLabelDummy",!1),DG=new rs("edgeConstraint",(ow(),Ift)),yv=new Oi("inLayerLayoutUnit"),Aw=new rs("inLayerConstraint",(Cg(),ZN)),Uk=new rs("inLayerSuccessorConstraint",new fe),ZSt=new rs("inLayerSuccessorConstraintBetweenNonDummies",!1),ml=new Oi("portDummy"),LG=new rs("crossingHint",he(0)),lu=new rs("graphProperties",(e=u(y1(jft),9),new _h(e,u(Ff(e,e.length),9),0))),Dc=new rs("externalPortSide",(ve(),bc)),JSt=new rs("externalPortSize",new Sa),Vft=new Oi("externalPortReplacedDummies"),MG=new Oi("externalPortReplacedDummy"),$g=new rs("externalPortConnections",(t=u(y1(bo),9),new _h(t,u(Ff(t,t.length),9),0))),xv=new rs(Xbe,0),WSt=new Oi("barycenterAssociates"),Wk=new Oi("TopSideComments"),Hk=new Oi("BottomSideComments"),AG=new Oi("CommentConnectionPort"),Gft=new rs("inputCollect",!1),Wft=new rs("outputCollect",!1),tP=new rs("cyclic",!1),QSt=new Oi("crossHierarchyMap"),Qft=new Oi("targetOffset"),new rs("splineLabelSize",new Sa),G5=new Oi("spacings"),IG=new rs("partitionConstraint",!1),vv=new Oi("breakingPoint.info"),s_t=new Oi("splines.survivingEdge"),Lw=new Oi("splines.route.start"),K5=new Oi("splines.edgeChain"),i_t=new Oi("originalPortConstraints"),kv=new Oi("selfLoopHolder"),MT=new Oi("splines.nsPortY"),Pi=new Oi("modelOrder"),Kft=new Oi("longEdgeTargetNode"),i2=new rs(M2e,!1),U5=new rs(M2e,!1),Uft=new Oi("layerConstraints.hiddenNodes"),r_t=new Oi("layerConstraints.opposidePort"),Xft=new Oi("targetNode.modelOrder")}function zSn(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U;for(A=Dr(t.b,0);A.b!=A.d.c;)if(T=u(Ar(A),39),!hn(T.c,nU))for(o=u(nc(new ln(null,new gn(X5n(T,t),16)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),e==(Rs(),Uo)||e==tc?o.jd(new ntt):o.jd(new MR),U=o.gc(),s=0;s0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(m-$)/(b.Math.abs(d-P)/40)>50&&($>m?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a+r/5.3,T.e.b+T.f.b*h-r/2)):ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a+r/5.3,T.e.b+T.f.b*h+r/2)))),ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a,T.e.b+T.f.b*h))):e==tc?(k=Rt(Ht(X(T,(ji(),P1)))),T.e.a-r>k?ro(u(o.Xb(s),65).a,new ae(k-n,T.e.b+T.f.b*h)):u(o.Xb(s),65).a.b>0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(m-$)/(b.Math.abs(d-P)/40)>50&&($>m?ro(u(o.Xb(s),65).a,new ae(T.e.a-r/5.3,T.e.b+T.f.b*h-r/2)):ro(u(o.Xb(s),65).a,new ae(T.e.a-r/5.3,T.e.b+T.f.b*h+r/2)))),ro(u(o.Xb(s),65).a,new ae(T.e.a,T.e.b+T.f.b*h))):e==Gh?(k=Rt(Ht(X(T,(ji(),Xf)))),T.e.b+T.f.b+r0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(d-P)/(b.Math.abs(m-$)/40)>50&&(P>d?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h-r/2,T.e.b+r/5.3+T.f.b)):ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h+r/2,T.e.b+r/5.3+T.f.b)))),ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,T.e.b+T.f.b))):(k=Rt(Ht(X(T,(ji(),P1)))),iue(u(o.Xb(s),65),t)?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,u(Pf(u(o.Xb(s),65).a),8).b)):T.e.b-r>k?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,k-n)):u(o.Xb(s),65).a.b>0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(d-P)/(b.Math.abs(m-$)/40)>50&&(P>d?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h-r/2,T.e.b-r/5.3)):ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h+r/2,T.e.b-r/5.3)))),ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,T.e.b)))}function ai(){ai=V;var t,e;VT=new Oi(bwe),fx=new Oi(wwe),dMt=(I0(),_dt),c7e=new un(t7t,dMt),sx=new un(Dk,null),u7e=new Oi(dTt),pMt=(fw(),Hi(Ddt,lt(ut(Mdt,1),te,297,0,[Ldt]))),CP=new un(QV,pMt),SP=new un(TN,(Pn(),!1)),bMt=(Rs(),Ed),Rw=new un(blt,bMt),vMt=(Lg(),Vdt),mMt=new un(EN,vMt),f7e=new un(hTt,!1),kMt=(Ag(),IK),cx=new un(XV,kMt),MMt=new xm(12),Yp=new un(ov,MMt),AP=new un(Y_,!1),Pdt=new un(ZV,!1),LP=new un(X_,!1),FMt=(ka(),d2),fL=new un(Fut,FMt),Jk=new Oi(JV),DP=new Oi(gN),qdt=new Oi(IV),Hdt=new Oi(W_),EMt=new Qu,Iv=new un(h7t,EMt),h7e=new un(g7t,!1),d7e=new un(p7t,!1),TMt=new HC,UT=new un(w7t,TMt),AK=new un(JEt,!1),w7e=new un(mwe,1),ox=new Oi(vwe),ax=new Oi(ywe),dL=new un(pN,!1),new un(xwe,!0),he(0),new un(kwe,he(100)),new un(Ewe,!1),he(0),new un(Twe,he(4e3)),he(0),new un(Cwe,he(400)),new un(Swe,!1),new un(_we,!1),new un(Awe,!0),new un(Lwe,!1),gMt=(pH(),Wdt),l7e=new un(fTt,gMt),m7e=new un(zEt,10),v7e=new un(qEt,10),$Mt=new un(Lut,20),y7e=new un(HEt,10),zMt=new un(Put,2),qMt=new un(plt,10),HMt=new un(VEt,0),LK=new un(KEt,5),VMt=new un(UEt,1),UMt=new un(GEt,1),$w=new un(h3,20),x7e=new un(WEt,10),WMt=new un(YEt,10),Zk=new Oi(XEt),KMt=new PQt,GMt=new un(m7t,KMt),p7e=new Oi(mlt),IMt=!1,g7e=new un(wlt,IMt),SMt=new xm(5),CMt=new un(r7t,SMt),_Mt=(e3(),e=u(y1(Lo),9),new _h(e,u(Ff(e,e.length),9),0)),ux=new un(nT,_Mt),NMt=(o5(),f2),OMt=new un(a7t,NMt),Bdt=new Oi(o7t),Rdt=new Oi(c7t),jdt=new Oi(u7t),Fdt=new Oi(l7t),AMt=(t=u(y1(xL),9),new _h(t,u(Ff(t,t.length),9),0)),jw=new un(_5,AMt),DMt=en((Ml(),XT)),l2=new un(Mk,DMt),LMt=new ae(0,0),lx=new un(Ik,LMt),R3=new un(eT,!1),wMt=(cd(),GT),Odt=new un(f7t,wMt),Idt=new un(OV,!1),he(1),new un(Dwe,null),PMt=new Oi(b7t),$dt=new Oi(d7t),jMt=(ve(),bc),hx=new un(ZEt,jMt),Pl=new Oi(QEt),BMt=(wl(),en(g2)),j3=new un(rT,BMt),zdt=new un(i7t,!1),RMt=new un(s7t,!0),MK=new un(bN,1),YMt=new un(gTt,null),MP=new un(wN,150),DK=new un(mN,1.414),t8=new un(cv,null),k7e=new un(pTt,1),_P=new un(e7t,!1),Ndt=new un(n7t,!1),yMt=new un(Dut,1),xMt=(HH(),Gdt),new un(Mwe,xMt),b7e=!0,T7e=(lk(),q3),C7e=q3,E7e=q3}function Za(){Za=V,KCt=new Ns("DIRECTION_PREPROCESSOR",0),VCt=new Ns("COMMENT_PREPROCESSOR",1),B5=new Ns("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),gft=new Ns("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),fSt=new Ns("PARTITION_PREPROCESSOR",4),nG=new Ns("LABEL_DUMMY_INSERTER",5),fG=new Ns("SELF_LOOP_PREPROCESSOR",6),E3=new Ns("LAYER_CONSTRAINT_PREPROCESSOR",7),lSt=new Ns("PARTITION_MIDPROCESSOR",8),eSt=new Ns("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),cSt=new Ns("NODE_PROMOTION",10),k3=new Ns("LAYER_CONSTRAINT_POSTPROCESSOR",11),hSt=new Ns("PARTITION_POSTPROCESSOR",12),JCt=new Ns("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),dSt=new Ns("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),RCt=new Ns("BREAKING_POINT_INSERTER",15),aG=new Ns("LONG_EDGE_SPLITTER",16),pft=new Ns("PORT_SIDE_PROCESSOR",17),tG=new Ns("INVERTED_PORT_PROCESSOR",18),uG=new Ns("PORT_LIST_SORTER",19),pSt=new Ns("SORT_BY_INPUT_ORDER_OF_MODEL",20),cG=new Ns("NORTH_SOUTH_PORT_PREPROCESSOR",21),jCt=new Ns("BREAKING_POINT_PROCESSOR",22),uSt=new Ns(E2e,23),bSt=new Ns(T2e,24),lG=new Ns("SELF_LOOP_PORT_RESTORER",25),gSt=new Ns("SINGLE_EDGE_GRAPH_WRAPPER",26),eG=new Ns("IN_LAYER_CONSTRAINT_PROCESSOR",27),YCt=new Ns("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),aSt=new Ns("LABEL_AND_NODE_SIZE_PROCESSOR",29),sSt=new Ns("INNERMOST_NODE_MARGIN_CALCULATOR",30),dG=new Ns("SELF_LOOP_ROUTER",31),qCt=new Ns("COMMENT_NODE_MARGIN_CALCULATOR",32),ZU=new Ns("END_LABEL_PREPROCESSOR",33),iG=new Ns("LABEL_DUMMY_SWITCHER",34),zCt=new Ns("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),vT=new Ns("LABEL_SIDE_SELECTOR",36),rSt=new Ns("HYPEREDGE_DUMMY_MERGER",37),ZCt=new Ns("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),oSt=new Ns("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),CA=new Ns("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),UCt=new Ns("CONSTRAINTS_POSTPROCESSOR",41),HCt=new Ns("COMMENT_POSTPROCESSOR",42),iSt=new Ns("HYPERNODE_PROCESSOR",43),tSt=new Ns("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),sG=new Ns("LONG_EDGE_JOINER",45),hG=new Ns("SELF_LOOP_POSTPROCESSOR",46),$Ct=new Ns("BREAKING_POINT_REMOVER",47),oG=new Ns("NORTH_SOUTH_PORT_POSTPROCESSOR",48),nSt=new Ns("HORIZONTAL_COMPACTOR",49),rG=new Ns("LABEL_DUMMY_REMOVER",50),XCt=new Ns("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),WCt=new Ns("END_LABEL_SORTER",52),WN=new Ns("REVERSED_EDGE_RESTORER",53),JU=new Ns("END_LABEL_POSTPROCESSOR",54),QCt=new Ns("HIERARCHICAL_NODE_RESIZER",55),GCt=new Ns("DIRECTION_POSTPROCESSOR",56)}function o8t(){o8t=V,b_t=(YI(),xG),B5e=new un(nEt,b_t),Y5e=new un(rEt,(Pn(),!1)),k_t=(fq(),Hft),txe=new un(BV,k_t),pxe=new un(iEt,!1),bxe=new un(sEt,!0),u5e=new un(aEt,!1),D_t=(KI(),T1t),Mxe=new un(oEt,D_t),he(1),jxe=new un(cEt,he(7)),$xe=new un(uEt,!1),X5e=new un(lEt,!1),p_t=(Ip(),Dft),F5e=new un(Hut,p_t),C_t=(Bp(),b1t),gxe=new un(kN,C_t),E_t=(Rh(),rP),axe=new un(hEt,E_t),he(-1),sxe=new un(fEt,null),he(-1),oxe=new un(dEt,he(-1)),he(-1),cxe=new un(Vut,he(4)),he(-1),lxe=new un(Uut,he(2)),T_t=(cf(),ZG),dxe=new un(Gut,T_t),he(0),fxe=new un(Kut,he(0)),rxe=new un(Wut,he(xi)),g_t=(QS(),_A),P5e=new un(Z_,g_t),y5e=new un(gEt,!1),_5e=new un(Yut,.1),O5e=new un(Xut,!1),L5e=new un(pEt,null),D5e=new un(bEt,null),he(-1),M5e=new un(wEt,null),he(-1),I5e=new un(mEt,he(-1)),he(0),x5e=new un(vEt,he(40)),d_t=(c7(),zft),C5e=new un(Qut,d_t),f_t=JN,k5e=new un(RV,f_t),L_t=(w_(),zA),Dxe=new un(A5,L_t),xxe=new Oi(jV),S_t=(qI(),EG),wxe=new un(Jut,S_t),__t=(AO(),TG),vxe=new un(Zut,__t),Txe=new un(tlt,.3),Sxe=new Oi(elt),A_t=(Yy(),JG),_xe=new un(nlt,A_t),v_t=(tH(),S1t),q5e=new un(yEt,v_t),y_t=(i_(),A1t),H5e=new un(xEt,y_t),x_t=(b7(),VA),V5e=new un($V,x_t),G5e=new un(zV,.2),$5e=new un(rlt,2),Pxe=new un(kEt,null),Bxe=new un(EEt,10),Fxe=new un(TEt,10),Rxe=new un(CEt,20),he(0),Ixe=new un(SEt,he(0)),he(0),Oxe=new un(_Et,he(0)),he(0),Nxe=new un(AEt,he(0)),l5e=new un(ilt,!1),c_t=(M7(),AA),f5e=new un(LEt,c_t),o_t=(Eq(),Aft),h5e=new un(DEt,o_t),J5e=new un(qV,!1),he(0),Q5e=new un(slt,he(16)),he(0),Z5e=new un(alt,he(5)),O_t=(iH(),M1t),a6e=new un(Bg,O_t),zxe=new un(HV,10),Vxe=new un(VV,1),I_t=($q(),yG),Qxe=new un(tA,I_t),Kxe=new Oi(olt),M_t=he(1),he(0),Yxe=new un(clt,M_t),N_t=(jq(),D1t),l6e=new un(UV,N_t),o6e=new Oi(GV),n6e=new un(KV,!0),t6e=new un(WV,2),i6e=new un(ult,!0),m_t=(UH(),kG),j5e=new un(MEt,m_t),w_t=(wk(),ET),R5e=new un(IEt,w_t),h_t=(Wd(),Up),v5e=new un(YV,h_t),m5e=new un(OEt,!1),w5e=new un(NEt,!1),u_t=(lw(),x3),d5e=new un(llt,u_t),l_t=(o_(),w1t),b5e=new un(PEt,l_t),g5e=new un(hlt,0),p5e=new un(flt,0),nxe=Mft,exe=QN,uxe=XG,hxe=XG,ixe=p1t,A5e=(Ag(),Xp),N5e=_A,S5e=_A,E5e=_A,T5e=Xp,kxe=qA,Exe=zA,mxe=zA,yxe=zA,Cxe=x1t,Lxe=qA,Axe=qA,U5e=(Lg(),e8),K5e=e8,W5e=VA,z5e=IP,qxe=$T,Hxe=P3,Uxe=$T,Gxe=P3,Jxe=$T,Zxe=P3,Wxe=Lft,Xxe=yG,h6e=$T,f6e=P3,c6e=$T,u6e=P3,r6e=P3,e6e=P3,s6e=P3}function qSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is,El,Go,yh,mx,rb,r1,i1,Vw,o8,k2,c8,d0,J0,Bv,u8,vx,g0,Uw,Ug,f9e,mOt,Rv,NL,h0t,l8,PL,X3,FL,f0t,d9e;for(mOt=0,Jr=e,Go=0,rb=Jr.length;Go0&&(t.a[d0.p]=mOt++)}for(PL=0,is=n,yh=0,r1=is.length;yh0;){for(d0=(ur(vx.b>0),u(vx.a.Xb(vx.c=--vx.b),12)),u8=0,d=new G(d0.e);d.a0&&(d0.j==(ve(),Hn)?(t.a[d0.p]=PL,++PL):(t.a[d0.p]=PL+i1+o8,++o8))}PL+=o8}for(Bv=new _r,U=new zd,er=e,El=0,mx=er.length;Elk.b&&(k.b=g0)):d0.i.c==f9e&&(g0k.c&&(k.c=g0));for(GE(J,0,J.length,null),l8=Vt(Fr,ii,28,J.length,15,1),r=Vt(Fr,ii,28,PL+1,15,1),ht=0;ht0;)Ce%2>0&&(s+=f0t[Ce+1]),Ce=(Ce-1)/2|0,++f0t[Ce];for(Ze=Vt(lke,Ln,374,J.length*2,0,1),Bt=0;Bt0&&_I(El.f),ne(ht,YMt)!=null&&(d=u(ne(ht,YMt),347),Bv=d.Tg(ht),H4(ht,b.Math.max(ht.g,Bv.a),b.Math.max(ht.f,Bv.b)));if(r1=u(ne(e,Yp),107),$=e.g-(r1.b+r1.c),P=e.f-(r1.d+r1.a),g0.bh("Available Child Area: ("+$+"|"+P+")"),Mi(e,sx,$/P),Rle(e,s,r.eh(mx)),u(ne(e,t8),280)==RK&&(r8t(e),H4(e,r1.b+Rt(Ht(ne(e,ox)))+r1.c,r1.d+Rt(Ht(ne(e,ax)))+r1.a)),g0.bh("Executed layout algorithm: "+Gr(ne(e,VT))+" on node "+e.k),u(ne(e,t8),280)==q3){if($<0||P<0)throw at(new fp("The size defined by the parent parallel node is too small for the space provided by the paddings of the child hierarchical node. "+e.k));for(ad(e,ox)||ad(e,ax)||r8t(e),J=Rt(Ht(ne(e,ox))),U=Rt(Ht(ne(e,ax))),g0.bh("Desired Child Area: ("+J+"|"+U+")"),Vw=$/J,o8=P/U,i1=b.Math.min(Vw,b.Math.min(o8,Rt(Ht(ne(e,k7e))))),Mi(e,MK,i1),g0.bh(e.k+" -- Local Scale Factor (X|Y): ("+Vw+"|"+o8+")"),Bt=u(ne(e,CP),21),o=0,h=0,i1'?":hn(ume,t)?"'(?<' or '(? toIndex: ",T8t=", toIndex: ",C8t="Index: ",S8t=", Size: ",Q7="org.eclipse.elk.alg.common",Xr={50:1},Ibe="org.eclipse.elk.alg.common.compaction",Obe="Scanline/EventHandler",j0="org.eclipse.elk.alg.common.compaction.oned",Nbe="CNode belongs to another CGroup.",Pbe="ISpacingsHandler/1",wut="The ",mut=" instance has been finished already.",Fbe="The direction ",Bbe=" is not supported by the CGraph instance.",Rbe="OneDimensionalCompactor",jbe="OneDimensionalCompactor/lambda$0$Type",$be="Quadruplet",zbe="ScanlineConstraintCalculator",qbe="ScanlineConstraintCalculator/ConstraintsScanlineHandler",Hbe="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",Vbe="ScanlineConstraintCalculator/Timestamp",Ube="ScanlineConstraintCalculator/lambda$0$Type",t0={178:1,46:1},vut="org.eclipse.elk.alg.common.compaction.options",pc="org.eclipse.elk.core.data",_8t="org.eclipse.elk.polyomino.traversalStrategy",A8t="org.eclipse.elk.polyomino.lowLevelSort",L8t="org.eclipse.elk.polyomino.highLevelSort",D8t="org.eclipse.elk.polyomino.fill",uf={134:1},yut="polyomino",U_="org.eclipse.elk.alg.common.networksimplex",$0={183:1,3:1,4:1},Gbe="org.eclipse.elk.alg.common.nodespacing",ww="org.eclipse.elk.alg.common.nodespacing.cellsystem",J7="CENTER",Kbe={217:1,336:1},M8t={3:1,4:1,5:1,603:1},_k="LEFT",Ak="RIGHT",I8t="Vertical alignment cannot be null",O8t="BOTTOM",SV="org.eclipse.elk.alg.common.nodespacing.internal",G_="UNDEFINED",gd=.01,hN="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",Wbe="LabelPlacer/lambda$0$Type",Ybe="LabelPlacer/lambda$1$Type",Xbe="portRatioOrPosition",Z7="org.eclipse.elk.alg.common.overlaps",xut="DOWN",e0="org.eclipse.elk.alg.common.polyomino",_V="NORTH",kut="EAST",Eut="SOUTH",Tut="WEST",AV="org.eclipse.elk.alg.common.polyomino.structures",N8t="Direction",Cut="Grid is only of size ",Sut=". Requested point (",_ut=") is out of bounds.",LV=" Given center based coordinates were (",fN="org.eclipse.elk.graph.properties",Qbe="IPropertyHolder",P8t={3:1,96:1,137:1},Lk="org.eclipse.elk.alg.common.spore",Jbe="org.eclipse.elk.alg.common.utils",mw={205:1},T5="org.eclipse.elk.core",Zbe="Connected Components Compaction",t2e="org.eclipse.elk.alg.disco",DV="org.eclipse.elk.alg.disco.graph",Aut="org.eclipse.elk.alg.disco.options",F8t="CompactionStrategy",B8t="org.eclipse.elk.disco.componentCompaction.strategy",R8t="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",j8t="org.eclipse.elk.disco.debug.discoGraph",$8t="org.eclipse.elk.disco.debug.discoPolys",e2e="componentCompaction",vw="org.eclipse.elk.disco",Lut="org.eclipse.elk.spacing.componentComponent",Dut="org.eclipse.elk.edge.thickness",Dk="org.eclipse.elk.aspectRatio",ov="org.eclipse.elk.padding",C5="org.eclipse.elk.alg.disco.transform",Mut=1.5707963267948966,S5=17976931348623157e292,l3={3:1,4:1,5:1,198:1},n2e={3:1,6:1,4:1,5:1,100:1,115:1},Iut="org.eclipse.elk.alg.force",z8t="ComponentsProcessor",r2e="ComponentsProcessor/1",q8t="ElkGraphImporter/lambda$0$Type",dN="org.eclipse.elk.alg.force.graph",i2e="Component Layout",H8t="org.eclipse.elk.alg.force.model",MV="org.eclipse.elk.force.model",V8t="org.eclipse.elk.force.iterations",U8t="org.eclipse.elk.force.repulsivePower",Out="org.eclipse.elk.force.temperature",n0=.001,Nut="org.eclipse.elk.force.repulsion",K_="org.eclipse.elk.alg.force.options",tT=1.600000023841858,Du="org.eclipse.elk.force",gN="org.eclipse.elk.priority",h3="org.eclipse.elk.spacing.nodeNode",Put="org.eclipse.elk.spacing.edgeLabel",IV="org.eclipse.elk.randomSeed",W_="org.eclipse.elk.separateConnectedComponents",Y_="org.eclipse.elk.interactive",Fut="org.eclipse.elk.portConstraints",OV="org.eclipse.elk.edgeLabels.inline",X_="org.eclipse.elk.omitNodeMicroLayout",eT="org.eclipse.elk.nodeSize.fixedGraphSize",Mk="org.eclipse.elk.nodeSize.options",_5="org.eclipse.elk.nodeSize.constraints",nT="org.eclipse.elk.nodeLabels.placement",rT="org.eclipse.elk.portLabels.placement",pN="org.eclipse.elk.topdownLayout",bN="org.eclipse.elk.topdown.scaleFactor",wN="org.eclipse.elk.topdown.hierarchicalNodeWidth",mN="org.eclipse.elk.topdown.hierarchicalNodeAspectRatio",cv="org.eclipse.elk.topdown.nodeType",G8t="origin",s2e="random",a2e="boundingBox.upLeft",o2e="boundingBox.lowRight",K8t="org.eclipse.elk.stress.fixed",W8t="org.eclipse.elk.stress.desiredEdgeLength",Y8t="org.eclipse.elk.stress.dimension",X8t="org.eclipse.elk.stress.epsilon",Q8t="org.eclipse.elk.stress.iterationLimit",Yb="org.eclipse.elk.stress",c2e="ELK Stress",Ik="org.eclipse.elk.nodeSize.minimum",NV="org.eclipse.elk.alg.force.stress",u2e="Layered layout",Ok="org.eclipse.elk.alg.layered",vN="org.eclipse.elk.alg.layered.compaction.components",Q_="org.eclipse.elk.alg.layered.compaction.oned",PV="org.eclipse.elk.alg.layered.compaction.oned.algs",yw="org.eclipse.elk.alg.layered.compaction.recthull",pd="org.eclipse.elk.alg.layered.components",r0="NONE",J8t="MODEL_ORDER",qc={3:1,6:1,4:1,9:1,5:1,126:1},l2e={3:1,6:1,4:1,5:1,150:1,100:1,115:1},FV="org.eclipse.elk.alg.layered.compound",zi={47:1},au="org.eclipse.elk.alg.layered.graph",But=" -> ",h2e="Not supported by LGraph",Z8t="Port side is undefined",Rut={3:1,6:1,4:1,5:1,482:1,150:1,100:1,115:1},jp={3:1,6:1,4:1,5:1,150:1,199:1,210:1,100:1,115:1},f2e={3:1,6:1,4:1,5:1,150:1,2042:1,210:1,100:1,115:1},d2e=`([{"' \r +`,g2e=`)]}"' \r +`,p2e="The given string contains parts that cannot be parsed as numbers.",yN="org.eclipse.elk.core.math",b2e={3:1,4:1,140:1,214:1,423:1},w2e={3:1,4:1,107:1,214:1,423:1},$p="org.eclipse.elk.alg.layered.graph.transform",m2e="ElkGraphImporter",v2e="ElkGraphImporter/lambda$1$Type",y2e="ElkGraphImporter/lambda$2$Type",x2e="ElkGraphImporter/lambda$4$Type",Yn="org.eclipse.elk.alg.layered.intermediate",k2e="Node margin calculation",E2e="ONE_SIDED_GREEDY_SWITCH",T2e="TWO_SIDED_GREEDY_SWITCH",jut="No implementation is available for the layout processor ",$ut="IntermediateProcessorStrategy",zut="Node '",C2e="FIRST_SEPARATE",S2e="LAST_SEPARATE",_2e="Odd port side processing",Gs="org.eclipse.elk.alg.layered.intermediate.compaction",J_="org.eclipse.elk.alg.layered.intermediate.greedyswitch",z0="org.eclipse.elk.alg.layered.p3order.counting",xN={230:1},Nk="org.eclipse.elk.alg.layered.intermediate.loops",dh="org.eclipse.elk.alg.layered.intermediate.loops.ordering",Xb="org.eclipse.elk.alg.layered.intermediate.loops.routing",tEt="org.eclipse.elk.alg.layered.intermediate.preserveorder",i0="org.eclipse.elk.alg.layered.intermediate.wrapping",Hc="org.eclipse.elk.alg.layered.options",qut="INTERACTIVE",eEt="GREEDY",A2e="DEPTH_FIRST",L2e="EDGE_LENGTH",D2e="SELF_LOOPS",M2e="firstTryWithInitialOrder",nEt="org.eclipse.elk.layered.directionCongruency",rEt="org.eclipse.elk.layered.feedbackEdges",BV="org.eclipse.elk.layered.interactiveReferencePoint",iEt="org.eclipse.elk.layered.mergeEdges",sEt="org.eclipse.elk.layered.mergeHierarchyEdges",aEt="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",oEt="org.eclipse.elk.layered.portSortingStrategy",cEt="org.eclipse.elk.layered.thoroughness",uEt="org.eclipse.elk.layered.unnecessaryBendpoints",lEt="org.eclipse.elk.layered.generatePositionAndLayerIds",Hut="org.eclipse.elk.layered.cycleBreaking.strategy",kN="org.eclipse.elk.layered.layering.strategy",hEt="org.eclipse.elk.layered.layering.layerConstraint",fEt="org.eclipse.elk.layered.layering.layerChoiceConstraint",dEt="org.eclipse.elk.layered.layering.layerId",Vut="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",Uut="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",Gut="org.eclipse.elk.layered.layering.nodePromotion.strategy",Kut="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",Wut="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",Z_="org.eclipse.elk.layered.crossingMinimization.strategy",gEt="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",Yut="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",Xut="org.eclipse.elk.layered.crossingMinimization.semiInteractive",pEt="org.eclipse.elk.layered.crossingMinimization.inLayerPredOf",bEt="org.eclipse.elk.layered.crossingMinimization.inLayerSuccOf",wEt="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",mEt="org.eclipse.elk.layered.crossingMinimization.positionId",vEt="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",Qut="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",RV="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",A5="org.eclipse.elk.layered.nodePlacement.strategy",jV="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",Jut="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",Zut="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",tlt="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",elt="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",nlt="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",yEt="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",xEt="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",$V="org.eclipse.elk.layered.edgeRouting.splines.mode",zV="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",rlt="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",kEt="org.eclipse.elk.layered.spacing.baseValue",EEt="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",TEt="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",CEt="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",SEt="org.eclipse.elk.layered.priority.direction",_Et="org.eclipse.elk.layered.priority.shortness",AEt="org.eclipse.elk.layered.priority.straightness",ilt="org.eclipse.elk.layered.compaction.connectedComponents",LEt="org.eclipse.elk.layered.compaction.postCompaction.strategy",DEt="org.eclipse.elk.layered.compaction.postCompaction.constraints",qV="org.eclipse.elk.layered.highDegreeNodes.treatment",slt="org.eclipse.elk.layered.highDegreeNodes.threshold",alt="org.eclipse.elk.layered.highDegreeNodes.treeHeight",Bg="org.eclipse.elk.layered.wrapping.strategy",HV="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",VV="org.eclipse.elk.layered.wrapping.correctionFactor",tA="org.eclipse.elk.layered.wrapping.cutting.strategy",olt="org.eclipse.elk.layered.wrapping.cutting.cuts",clt="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",UV="org.eclipse.elk.layered.wrapping.validify.strategy",GV="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",KV="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",WV="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",ult="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",MEt="org.eclipse.elk.layered.edgeLabels.sideSelection",IEt="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",YV="org.eclipse.elk.layered.considerModelOrder.strategy",OEt="org.eclipse.elk.layered.considerModelOrder.portModelOrder",NEt="org.eclipse.elk.layered.considerModelOrder.noModelOrder",llt="org.eclipse.elk.layered.considerModelOrder.components",PEt="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",hlt="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",flt="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",dlt="layering",I2e="layering.minWidth",O2e="layering.nodePromotion",iT="crossingMinimization",XV="org.eclipse.elk.hierarchyHandling",N2e="crossingMinimization.greedySwitch",P2e="nodePlacement",F2e="nodePlacement.bk",B2e="edgeRouting",EN="org.eclipse.elk.edgeRouting",bd="spacing",FEt="priority",BEt="compaction",R2e="compaction.postCompaction",j2e="Specifies whether and how post-process compaction is applied.",REt="highDegreeNodes",jEt="wrapping",$2e="wrapping.cutting",z2e="wrapping.validify",$Et="wrapping.multiEdge",glt="edgeLabels",eA="considerModelOrder",zEt="org.eclipse.elk.spacing.commentComment",qEt="org.eclipse.elk.spacing.commentNode",HEt="org.eclipse.elk.spacing.edgeEdge",plt="org.eclipse.elk.spacing.edgeNode",VEt="org.eclipse.elk.spacing.labelLabel",UEt="org.eclipse.elk.spacing.labelPortHorizontal",GEt="org.eclipse.elk.spacing.labelPortVertical",KEt="org.eclipse.elk.spacing.labelNode",WEt="org.eclipse.elk.spacing.nodeSelfLoop",YEt="org.eclipse.elk.spacing.portPort",XEt="org.eclipse.elk.spacing.individual",QEt="org.eclipse.elk.port.borderOffset",JEt="org.eclipse.elk.noLayout",ZEt="org.eclipse.elk.port.side",TN="org.eclipse.elk.debugMode",t7t="org.eclipse.elk.alignment",e7t="org.eclipse.elk.insideSelfLoops.activate",n7t="org.eclipse.elk.insideSelfLoops.yo",blt="org.eclipse.elk.direction",r7t="org.eclipse.elk.nodeLabels.padding",i7t="org.eclipse.elk.portLabels.nextToPortIfPossible",s7t="org.eclipse.elk.portLabels.treatAsGroup",a7t="org.eclipse.elk.portAlignment.default",o7t="org.eclipse.elk.portAlignment.north",c7t="org.eclipse.elk.portAlignment.south",u7t="org.eclipse.elk.portAlignment.west",l7t="org.eclipse.elk.portAlignment.east",QV="org.eclipse.elk.contentAlignment",h7t="org.eclipse.elk.junctionPoints",f7t="org.eclipse.elk.edgeLabels.placement",d7t="org.eclipse.elk.port.index",g7t="org.eclipse.elk.commentBox",p7t="org.eclipse.elk.hypernode",b7t="org.eclipse.elk.port.anchor",wlt="org.eclipse.elk.partitioning.activate",mlt="org.eclipse.elk.partitioning.partition",JV="org.eclipse.elk.position",w7t="org.eclipse.elk.margins",m7t="org.eclipse.elk.spacing.portsSurrounding",ZV="org.eclipse.elk.interactiveLayout",_c="org.eclipse.elk.core.util",v7t={3:1,4:1,5:1,601:1},q2e="NETWORK_SIMPLEX",y7t="SIMPLE",_o={106:1,47:1},tU="org.eclipse.elk.alg.layered.p1cycles",Rg="org.eclipse.elk.alg.layered.p2layers",x7t={413:1,230:1},H2e={846:1,3:1,4:1},al="org.eclipse.elk.alg.layered.p3order",Ao="org.eclipse.elk.alg.layered.p4nodes",V2e={3:1,4:1,5:1,854:1},s0=1e-5,Qb="org.eclipse.elk.alg.layered.p4nodes.bk",vlt="org.eclipse.elk.alg.layered.p5edges",M1="org.eclipse.elk.alg.layered.p5edges.orthogonal",ylt="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",xlt=1e-6,f3="org.eclipse.elk.alg.layered.p5edges.splines",klt=.09999999999999998,eU=1e-8,U2e=4.71238898038469,k7t=3.141592653589793,jg="org.eclipse.elk.alg.mrtree",Elt=.10000000149011612,nU="SUPER_ROOT",nA="org.eclipse.elk.alg.mrtree.graph",E7t=-17976931348623157e292,ou="org.eclipse.elk.alg.mrtree.intermediate",G2e="Processor compute fanout",rU={3:1,6:1,4:1,5:1,534:1,100:1,115:1},K2e="Set neighbors in level",CN="org.eclipse.elk.alg.mrtree.options",W2e="DESCENDANTS",T7t="org.eclipse.elk.mrtree.compaction",C7t="org.eclipse.elk.mrtree.edgeEndTextureLength",S7t="org.eclipse.elk.mrtree.treeLevel",_7t="org.eclipse.elk.mrtree.positionConstraint",A7t="org.eclipse.elk.mrtree.weighting",L7t="org.eclipse.elk.mrtree.edgeRoutingMode",D7t="org.eclipse.elk.mrtree.searchOrder",Y2e="Position Constraint",Mu="org.eclipse.elk.mrtree",X2e="org.eclipse.elk.tree",Q2e="Processor arrange level",sT="org.eclipse.elk.alg.mrtree.p2order",Xl="org.eclipse.elk.alg.mrtree.p4route",M7t="org.eclipse.elk.alg.radial",xw=6.283185307179586,I7t="Before",O7t=5e-324,iU="After",N7t="org.eclipse.elk.alg.radial.intermediate",J2e="COMPACTION",Tlt="org.eclipse.elk.alg.radial.intermediate.compaction",Z2e={3:1,4:1,5:1,100:1},P7t="org.eclipse.elk.alg.radial.intermediate.optimization",Clt="No implementation is available for the layout option ",rA="org.eclipse.elk.alg.radial.options",F7t="org.eclipse.elk.radial.centerOnRoot",B7t="org.eclipse.elk.radial.orderId",R7t="org.eclipse.elk.radial.radius",sU="org.eclipse.elk.radial.rotate",Slt="org.eclipse.elk.radial.compactor",_lt="org.eclipse.elk.radial.compactionStepSize",j7t="org.eclipse.elk.radial.sorter",$7t="org.eclipse.elk.radial.wedgeCriteria",z7t="org.eclipse.elk.radial.optimizationCriteria",Alt="org.eclipse.elk.radial.rotation.targetAngle",Llt="org.eclipse.elk.radial.rotation.computeAdditionalWedgeSpace",q7t="org.eclipse.elk.radial.rotation.outgoingEdgeAngles",twe="Compaction",H7t="rotation",zh="org.eclipse.elk.radial",ewe="org.eclipse.elk.alg.radial.p1position.wedge",V7t="org.eclipse.elk.alg.radial.sorting",nwe=5.497787143782138,rwe=3.9269908169872414,iwe=2.356194490192345,swe="org.eclipse.elk.alg.rectpacking",aU="org.eclipse.elk.alg.rectpacking.intermediate",Dlt="org.eclipse.elk.alg.rectpacking.options",U7t="org.eclipse.elk.rectpacking.trybox",G7t="org.eclipse.elk.rectpacking.currentPosition",K7t="org.eclipse.elk.rectpacking.desiredPosition",W7t="org.eclipse.elk.rectpacking.inNewRow",Y7t="org.eclipse.elk.rectpacking.widthApproximation.strategy",X7t="org.eclipse.elk.rectpacking.widthApproximation.targetWidth",Q7t="org.eclipse.elk.rectpacking.widthApproximation.optimizationGoal",J7t="org.eclipse.elk.rectpacking.widthApproximation.lastPlaceShift",Z7t="org.eclipse.elk.rectpacking.packing.strategy",tTt="org.eclipse.elk.rectpacking.packing.compaction.rowHeightReevaluation",eTt="org.eclipse.elk.rectpacking.packing.compaction.iterations",nTt="org.eclipse.elk.rectpacking.whiteSpaceElimination.strategy",Mlt="widthApproximation",awe="Compaction Strategy",owe="packing.compaction",Ol="org.eclipse.elk.rectpacking",aT="org.eclipse.elk.alg.rectpacking.p1widthapproximation",oU="org.eclipse.elk.alg.rectpacking.p2packing",cwe="No Compaction",rTt="org.eclipse.elk.alg.rectpacking.p3whitespaceelimination",SN="org.eclipse.elk.alg.rectpacking.util",cU="No implementation available for ",d3="org.eclipse.elk.alg.spore",g3="org.eclipse.elk.alg.spore.options",uv="org.eclipse.elk.sporeCompaction",Ilt="org.eclipse.elk.underlyingLayoutAlgorithm",iTt="org.eclipse.elk.processingOrder.treeConstruction",sTt="org.eclipse.elk.processingOrder.spanningTreeCostFunction",Olt="org.eclipse.elk.processingOrder.preferredRoot",Nlt="org.eclipse.elk.processingOrder.rootSelection",Plt="org.eclipse.elk.structure.structureExtractionStrategy",aTt="org.eclipse.elk.compaction.compactionStrategy",oTt="org.eclipse.elk.compaction.orthogonal",cTt="org.eclipse.elk.overlapRemoval.maxIterations",uTt="org.eclipse.elk.overlapRemoval.runScanline",Flt="processingOrder",uwe="overlapRemoval",oT="org.eclipse.elk.sporeOverlap",lwe="org.eclipse.elk.alg.spore.p1structure",Blt="org.eclipse.elk.alg.spore.p2processingorder",Rlt="org.eclipse.elk.alg.spore.p3execution",hwe="Topdown Layout",fwe="Invalid index: ",cT="org.eclipse.elk.core.alg",L5={341:1},p3={294:1},dwe="Make sure its type is registered with the ",lTt=" utility class.",uT="true",jlt="false",gwe="Couldn't clone property '",lv=.05,Nl="org.eclipse.elk.core.options",pwe=1.2999999523162842,hv="org.eclipse.elk.box",hTt="org.eclipse.elk.expandNodes",fTt="org.eclipse.elk.box.packingMode",bwe="org.eclipse.elk.algorithm",wwe="org.eclipse.elk.resolvedAlgorithm",dTt="org.eclipse.elk.bendPoints",KSn="org.eclipse.elk.labelManager",mwe="org.eclipse.elk.scaleFactor",vwe="org.eclipse.elk.childAreaWidth",ywe="org.eclipse.elk.childAreaHeight",xwe="org.eclipse.elk.animate",kwe="org.eclipse.elk.animTimeFactor",Ewe="org.eclipse.elk.layoutAncestors",Twe="org.eclipse.elk.maxAnimTime",Cwe="org.eclipse.elk.minAnimTime",Swe="org.eclipse.elk.progressBar",_we="org.eclipse.elk.validateGraph",Awe="org.eclipse.elk.validateOptions",Lwe="org.eclipse.elk.zoomToFit",WSn="org.eclipse.elk.font.name",Dwe="org.eclipse.elk.font.size",gTt="org.eclipse.elk.topdown.sizeApproximator",pTt="org.eclipse.elk.topdown.scaleCap",Mwe="org.eclipse.elk.edge.type",Iwe="partitioning",Owe="nodeLabels",uU="portAlignment",$lt="nodeSize",zlt="port",bTt="portLabels",_N="topdown",Nwe="insideSelfLoops",iA="org.eclipse.elk.fixed",lU="org.eclipse.elk.random",wTt={3:1,34:1,22:1,347:1},Pwe="port must have a parent node to calculate the port side",Fwe="The edge needs to have exactly one edge section. Found: ",sA="org.eclipse.elk.core.util.adapters",qh="org.eclipse.emf.ecore",D5="org.eclipse.elk.graph",Bwe="EMapPropertyHolder",Rwe="ElkBendPoint",jwe="ElkGraphElement",$we="ElkConnectableShape",mTt="ElkEdge",zwe="ElkEdgeSection",qwe="EModelElement",Hwe="ENamedElement",vTt="ElkLabel",yTt="ElkNode",xTt="ElkPort",Vwe={94:1,93:1},Pk="org.eclipse.emf.common.notify.impl",Jb="The feature '",aA="' is not a valid changeable feature",Uwe="Expecting null",qlt="' is not a valid feature",Gwe="The feature ID",Kwe=" is not a valid feature ID",Fc=32768,Wwe={110:1,94:1,93:1,58:1,54:1,99:1},Rn="org.eclipse.emf.ecore.impl",kw="org.eclipse.elk.graph.impl",oA="Recursive containment not allowed for ",lT="The datatype '",fv="' is not a valid classifier",Hlt="The value '",M5={195:1,3:1,4:1},Vlt="The class '",hT="http://www.eclipse.org/elk/ElkGraph",kTt="property",cA="value",Ult="source",Ywe="properties",Xwe="identifier",Glt="height",Klt="width",Wlt="parent",Ylt="text",Xlt="children",Qwe="hierarchical",ETt="sources",Qlt="targets",TTt="sections",hU="bendPoints",CTt="outgoingShape",STt="incomingShape",_Tt="outgoingSections",ATt="incomingSections",oo="org.eclipse.emf.common.util",LTt="Severe implementation error in the Json to ElkGraph importer.",a0="id",Ba="org.eclipse.elk.graph.json",DTt="Unhandled parameter types: ",Jwe="startPoint",Zwe="An edge must have at least one source and one target (edge id: '",fT="').",tme="Referenced edge section does not exist: ",eme=" (edge id: '",MTt="target",nme="sourcePoint",rme="targetPoint",fU="group",pi="name",ime="connectableShape cannot be null",sme="edge cannot be null",Jlt="Passed edge is not 'simple'.",dU="org.eclipse.elk.graph.util",AN="The 'no duplicates' constraint is violated",Zlt="targetIndex=",Ew=", size=",tht="sourceIndex=",o0={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1},eht={3:1,4:1,20:1,31:1,56:1,16:1,51:1,15:1,59:1,70:1,66:1,61:1,596:1},gU="logging",ame="measureExecutionTime",ome="parser.parse.1",cme="parser.parse.2",pU="parser.next.1",nht="parser.next.2",ume="parser.next.3",lme="parser.next.4",Tw="parser.factor.1",ITt="parser.factor.2",hme="parser.factor.3",fme="parser.factor.4",dme="parser.factor.5",gme="parser.factor.6",pme="parser.atom.1",bme="parser.atom.2",wme="parser.atom.3",OTt="parser.atom.4",rht="parser.atom.5",NTt="parser.cc.1",bU="parser.cc.2",mme="parser.cc.3",vme="parser.cc.5",PTt="parser.cc.6",FTt="parser.cc.7",iht="parser.cc.8",yme="parser.ope.1",xme="parser.ope.2",kme="parser.ope.3",zp="parser.descape.1",Eme="parser.descape.2",Tme="parser.descape.3",Cme="parser.descape.4",Sme="parser.descape.5",Hh="parser.process.1",_me="parser.quantifier.1",Ame="parser.quantifier.2",Lme="parser.quantifier.3",Dme="parser.quantifier.4",BTt="parser.quantifier.5",Mme="org.eclipse.emf.common.notify",RTt={424:1,686:1},Ime={3:1,4:1,20:1,31:1,56:1,16:1,15:1,70:1,61:1},LN={378:1,152:1},uA="index=",sht={3:1,4:1,5:1,129:1},Ome={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,61:1},jTt={3:1,6:1,4:1,5:1,198:1},Nme={3:1,4:1,5:1,173:1,379:1},Pme=";/?:@&=+$,",Fme="invalid authority: ",Bme="EAnnotation",Rme="ETypedElement",jme="EStructuralFeature",$me="EAttribute",zme="EClassifier",qme="EEnumLiteral",Hme="EGenericType",Vme="EOperation",Ume="EParameter",Gme="EReference",Kme="ETypeParameter",Yi="org.eclipse.emf.ecore.util",aht={79:1},$Tt={3:1,20:1,16:1,15:1,61:1,597:1,79:1,71:1,97:1},Wme="org.eclipse.emf.ecore.util.FeatureMap$Entry",ol=8192,b3=2048,lA="byte",wU="char",hA="double",fA="float",dA="int",gA="long",pA="short",Yme="java.lang.Object",I5={3:1,4:1,5:1,254:1},zTt={3:1,4:1,5:1,688:1},Xme={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,71:1},ic={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,79:1,71:1,97:1},DN="mixed",ti="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",lf="kind",Qme={3:1,4:1,5:1,689:1},qTt={3:1,4:1,20:1,31:1,56:1,16:1,15:1,70:1,61:1,79:1,71:1,97:1},mU={20:1,31:1,56:1,16:1,15:1,61:1,71:1},vU={51:1,128:1,287:1},yU={76:1,343:1},xU="The value of type '",kU="' must be of type '",O5=1352,hf="http://www.eclipse.org/emf/2002/Ecore",EU=-32768,dv="constraints",Ka="baseType",Jme="getEStructuralFeature",Zme="getFeatureID",bA="feature",tve="getOperationID",HTt="operation",eve="defaultValue",nve="eTypeParameters",rve="isInstance",ive="getEEnumLiteral",sve="eContainingClass",li={57:1},ave={3:1,4:1,5:1,124:1},ove="org.eclipse.emf.ecore.resource",cve={94:1,93:1,599:1,2034:1},oht="org.eclipse.emf.ecore.resource.impl",VTt="unspecified",MN="simple",TU="attribute",uve="attributeWildcard",CU="element",cht="elementWildcard",I1="collapse",uht="itemType",SU="namespace",IN="##targetNamespace",ff="whiteSpace",UTt="wildcards",Cw="http://www.eclipse.org/emf/2003/XMLType",lht="##any",dT="uninitialized",ON="The multiplicity constraint is violated",_U="org.eclipse.emf.ecore.xml.type",lve="ProcessingInstruction",hve="SimpleAnyType",fve="XMLTypeDocumentRoot",$s="org.eclipse.emf.ecore.xml.type.impl",NN="INF",dve="processing",gve="ENTITIES_._base",GTt="minLength",KTt="ENTITY",AU="NCName",pve="IDREFS_._base",WTt="integer",hht="token",fht="pattern",bve="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",YTt="\\i\\c*",wve="[\\i-[:]][\\c-[:]]*",mve="nonPositiveInteger",PN="maxInclusive",XTt="NMTOKEN",vve="NMTOKENS_._base",QTt="nonNegativeInteger",FN="minInclusive",yve="normalizedString",xve="unsignedByte",kve="unsignedInt",Eve="18446744073709551615",Tve="unsignedShort",Cve="processingInstruction",qp="org.eclipse.emf.ecore.xml.type.internal",gT=1114111,Sve="Internal Error: shorthands: \\u",wA="xml:isDigit",dht="xml:isWord",ght="xml:isSpace",pht="xml:isNameChar",bht="xml:isInitialNameChar",_ve="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",Ave="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",Lve="Private Use",wht="ASSIGNED",mht="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯",JTt="UNASSIGNED",pT={3:1,122:1},Dve="org.eclipse.emf.ecore.xml.type.util",LU={3:1,4:1,5:1,381:1},ZTt="org.eclipse.xtext.xbase.lib",Mve="Cannot add elements to a Range",Ive="Cannot set elements in a Range",Ove="Cannot remove elements from a Range",Nve="user.agent",l,DU,vht;b.goog=b.goog||{},b.goog.global=b.goog.global||b,DU={},D(1,null,{},S),l.Fb=function(e){return MQt(this,e)},l.Gb=function(){return this.Rm},l.Hb=function(){return Em(this)},l.Ib=function(){var e;return V2(Wl(this))+"@"+(e=$i(this)>>>0,e.toString(16))},l.equals=function(t){return this.Fb(t)},l.hashCode=function(){return this.Hb()},l.toString=function(){return this.Ib()};var Pve,Fve,Bve;D(296,1,{296:1,2124:1},Y4t),l.ve=function(e){var n;return n=new Y4t,n.i=4,e>1?n.c=Zne(this,e-1):n.c=this,n},l.we=function(){return wg(this),this.b},l.xe=function(){return V2(this)},l.ye=function(){return wg(this),this.k},l.ze=function(){return(this.i&4)!=0},l.Ae=function(){return(this.i&1)!=0},l.Ib=function(){return a4t(this)},l.i=0;var aa=I(Sc,"Object",1),t9t=I(Sc,"Class",296);D(2096,1,tN),I(eN,"Optional",2096),D(1191,2096,tN,_),l.Fb=function(e){return e===this},l.Hb=function(){return 2040732332},l.Ib=function(){return"Optional.absent()"},l.Jb=function(e){return Hr(e),UC(),yht};var yht;I(eN,"Absent",1191),D(636,1,{},ert),I(eN,"Joiner",636);var YSn=os(eN,"Predicate");D(589,1,{178:1,589:1,3:1,46:1},Rj),l.Mb=function(e){return Zce(this,e)},l.Lb=function(e){return Zce(this,e)},l.Fb=function(e){var n;return Lt(e,589)?(n=u(e,589),U6t(this.a,n.a)):!1},l.Hb=function(){return e5t(this.a)+306654252},l.Ib=function(){return P4n(this.a)},I(eN,"Predicates/AndPredicate",589),D(419,2096,{419:1,3:1},FC),l.Fb=function(e){var n;return Lt(e,419)?(n=u(e,419),Ti(this.a,n.a)):!1},l.Hb=function(){return 1502476572+$i(this.a)},l.Ib=function(){return cbe+this.a+")"},l.Jb=function(e){return new FC(Qz(e.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},I(eN,"Present",419),D(204,1,V7),l.Nb=function(e){Na(this,e)},l.Qb=function(){yWt()},I(on,"UnmodifiableIterator",204),D(2076,204,U7),l.Qb=function(){yWt()},l.Rb=function(e){throw at(new Vr)},l.Wb=function(e){throw at(new Vr)},I(on,"UnmodifiableListIterator",2076),D(399,2076,U7),l.Ob=function(){return this.c0},l.Pb=function(){if(this.c>=this.d)throw at(new cc);return this.Xb(this.c++)},l.Tb=function(){return this.c},l.Ub=function(){if(this.c<=0)throw at(new cc);return this.Xb(--this.c)},l.Vb=function(){return this.c-1},l.c=0,l.d=0,I(on,"AbstractIndexedListIterator",399),D(713,204,V7),l.Ob=function(){return rat(this)},l.Pb=function(){return t4t(this)},l.e=1,I(on,"AbstractIterator",713),D(2084,1,{229:1}),l.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},l.Fb=function(e){return Cat(this,e)},l.Hb=function(){return $i(this.Zb())},l.dc=function(){return this.gc()==0},l.ec=function(){return U6(this)},l.Ib=function(){return rc(this.Zb())},I(on,"AbstractMultimap",2084),D(742,2084,pw),l.$b=function(){qq(this)},l._b=function(e){return jWt(this,e)},l.ac=function(){return new vE(this,this.c)},l.ic=function(e){return this.hc()},l.bc=function(){return new W4(this,this.c)},l.jc=function(){return this.mc(this.hc())},l.kc=function(){return new iWt(this)},l.lc=function(){return Not(this.c.vc().Nc(),new F,64,this.d)},l.cc=function(e){return Ai(this,e)},l.fc=function(e){return hO(this,e)},l.gc=function(){return this.d},l.mc=function(e){return mn(),new Ta(e)},l.nc=function(){return new rWt(this)},l.oc=function(){return Not(this.c.Cc().Nc(),new M,64,this.d)},l.pc=function(e,n){return new yq(this,e,n,null)},l.d=0,I(on,"AbstractMapBasedMultimap",742),D(1696,742,pw),l.hc=function(){return new wu(this.a)},l.jc=function(){return mn(),mn(),co},l.cc=function(e){return u(Ai(this,e),15)},l.fc=function(e){return u(hO(this,e),15)},l.Zb=function(){return Q6(this)},l.Fb=function(e){return Cat(this,e)},l.qc=function(e){return u(Ai(this,e),15)},l.rc=function(e){return u(hO(this,e),15)},l.mc=function(e){return ast(u(e,15))},l.pc=function(e,n){return aie(this,e,u(n,15),null)},I(on,"AbstractListMultimap",1696),D(748,1,wa),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.c.Ob()||this.e.Ob()},l.Pb=function(){var e;return this.e.Ob()||(e=u(this.c.Pb(),44),this.b=e.ld(),this.a=u(e.md(),16),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},l.Qb=function(){this.e.Qb(),u(nf(this.a),16).dc()&&this.c.Qb(),--this.d.d},I(on,"AbstractMapBasedMultimap/Itr",748),D(1129,748,wa,rWt),l.sc=function(e,n){return n},I(on,"AbstractMapBasedMultimap/1",1129),D(1130,1,{},M),l.Kb=function(e){return u(e,16).Nc()},I(on,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1130),D(1131,748,wa,iWt),l.sc=function(e,n){return new bm(e,n)},I(on,"AbstractMapBasedMultimap/2",1131);var e9t=os(xr,"Map");D(2065,1,sv),l.wc=function(e){e_(this,e)},l.yc=function(e,n,r){return Vat(this,e,n,r)},l.$b=function(){this.vc().$b()},l.tc=function(e){return bot(this,e)},l._b=function(e){return!!Vxt(this,e,!1)},l.uc=function(e){var n,r,s;for(r=this.vc().Kc();r.Ob();)if(n=u(r.Pb(),44),s=n.md(),$t(e)===$t(s)||e!=null&&Ti(e,s))return!0;return!1},l.Fb=function(e){var n,r,s;if(e===this)return!0;if(!Lt(e,85)||(s=u(e,85),this.gc()!=s.gc()))return!1;for(r=s.vc().Kc();r.Ob();)if(n=u(r.Pb(),44),!this.tc(n))return!1;return!0},l.xc=function(e){return Ko(Vxt(this,e,!1))},l.Hb=function(){return U4t(this.vc())},l.dc=function(){return this.gc()==0},l.ec=function(){return new cr(this)},l.zc=function(e,n){throw at(new hp("Put not supported on this map"))},l.Ac=function(e){t_(this,e)},l.Bc=function(e){return Ko(Vxt(this,e,!0))},l.gc=function(){return this.vc().gc()},l.Ib=function(){return hfe(this)},l.Cc=function(){return new si(this)},I(xr,"AbstractMap",2065),D(2085,2065,sv),l.bc=function(){return new v$(this)},l.vc=function(){return nee(this)},l.ec=function(){var e;return e=this.g,e||(this.g=this.bc())},l.Cc=function(){var e;return e=this.i,e||(this.i=new LYt(this))},I(on,"Maps/ViewCachingAbstractMap",2085),D(402,2085,sv,vE),l.xc=function(e){return tgn(this,e)},l.Bc=function(e){return Ebn(this,e)},l.$b=function(){this.d==this.e.c?this.e.$b():Az(new ryt(this))},l._b=function(e){return Bue(this.d,e)},l.Ec=function(){return new jj(this)},l.Dc=function(){return this.Ec()},l.Fb=function(e){return this===e||Ti(this.d,e)},l.Hb=function(){return $i(this.d)},l.ec=function(){return this.e.ec()},l.gc=function(){return this.d.gc()},l.Ib=function(){return rc(this.d)},I(on,"AbstractMapBasedMultimap/AsMap",402);var gh=os(Sc,"Iterable");D(31,1,o3),l.Jc=function(e){Fa(this,e)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new gn(this,0)},l.Oc=function(){return new ln(null,this.Nc())},l.Fc=function(e){throw at(new hp("Add not supported on this collection"))},l.Gc=function(e){return Ma(this,e)},l.$b=function(){Hyt(this)},l.Hc=function(e){return Ky(this,e,!1)},l.Ic=function(e){return rO(this,e)},l.dc=function(){return this.gc()==0},l.Mc=function(e){return Ky(this,e,!0)},l.Pc=function(){return dyt(this)},l.Qc=function(e){return v_(this,e)},l.Ib=function(){return Hb(this)},I(xr,"AbstractCollection",31);var df=os(xr,"Set");D(dd,31,sl),l.Nc=function(){return new gn(this,1)},l.Fb=function(e){return Ale(this,e)},l.Hb=function(){return U4t(this)},I(xr,"AbstractSet",dd),D(2068,dd,sl),I(on,"Sets/ImprovedAbstractSet",2068),D(2069,2068,sl),l.$b=function(){this.Rc().$b()},l.Hc=function(e){return fle(this,e)},l.dc=function(){return this.Rc().dc()},l.Mc=function(e){var n;return this.Hc(e)&&Lt(e,44)?(n=u(e,44),this.Rc().ec().Mc(n.ld())):!1},l.gc=function(){return this.Rc().gc()},I(on,"Maps/EntrySet",2069),D(1127,2069,sl,jj),l.Hc=function(e){return m5t(this.a.d.vc(),e)},l.Kc=function(){return new ryt(this.a)},l.Rc=function(){return this.a},l.Mc=function(e){var n;return m5t(this.a.d.vc(),e)?(n=u(nf(u(e,44)),44),qdn(this.a.e,n.ld()),!0):!1},l.Nc=function(){return pI(this.a.d.vc().Nc(),new $j(this.a))},I(on,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1127),D(1128,1,{},$j),l.Kb=function(e){return ise(this.a,u(e,44))},I(on,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1128),D(746,1,wa,ryt),l.Nb=function(e){Na(this,e)},l.Pb=function(){var e;return e=u(this.b.Pb(),44),this.a=u(e.md(),16),ise(this.c,e)},l.Ob=function(){return this.b.Ob()},l.Qb=function(){AE(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},I(on,"AbstractMapBasedMultimap/AsMap/AsMapIterator",746),D(542,2068,sl,v$),l.$b=function(){this.b.$b()},l.Hc=function(e){return this.b._b(e)},l.Jc=function(e){Hr(e),this.b.wc(new Uj(e))},l.dc=function(){return this.b.dc()},l.Kc=function(){return new GC(this.b.vc().Kc())},l.Mc=function(e){return this.b._b(e)?(this.b.Bc(e),!0):!1},l.gc=function(){return this.b.gc()},I(on,"Maps/KeySet",542),D(327,542,sl,W4),l.$b=function(){var e;Az((e=this.b.vc().Kc(),new _wt(this,e)))},l.Ic=function(e){return this.b.ec().Ic(e)},l.Fb=function(e){return this===e||Ti(this.b.ec(),e)},l.Hb=function(){return $i(this.b.ec())},l.Kc=function(){var e;return e=this.b.vc().Kc(),new _wt(this,e)},l.Mc=function(e){var n,r;return r=0,n=u(this.b.Bc(e),16),n&&(r=n.gc(),n.$b(),this.a.d-=r),r>0},l.Nc=function(){return this.b.ec().Nc()},I(on,"AbstractMapBasedMultimap/KeySet",327),D(747,1,wa,_wt),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.c.Ob()},l.Pb=function(){return this.a=u(this.c.Pb(),44),this.a.ld()},l.Qb=function(){var e;AE(!!this.a),e=u(this.a.md(),16),this.c.Qb(),this.b.a.d-=e.gc(),e.$b(),this.a=null},I(on,"AbstractMapBasedMultimap/KeySet/1",747),D(502,402,{85:1,133:1},cI),l.bc=function(){return this.Sc()},l.ec=function(){return this.Uc()},l.Sc=function(){return new FM(this.c,this.Wc())},l.Tc=function(){return this.Wc().Tc()},l.Uc=function(){var e;return e=this.b,e||(this.b=this.Sc())},l.Vc=function(){return this.Wc().Vc()},l.Wc=function(){return u(this.d,133)},I(on,"AbstractMapBasedMultimap/SortedAsMap",502),D(446,502,h8t,SS),l.bc=function(){return new mE(this.a,u(u(this.d,133),139))},l.Sc=function(){return new mE(this.a,u(u(this.d,133),139))},l.ec=function(){var e;return e=this.b,u(e||(this.b=new mE(this.a,u(u(this.d,133),139))),277)},l.Uc=function(){var e;return e=this.b,u(e||(this.b=new mE(this.a,u(u(this.d,133),139))),277)},l.Wc=function(){return u(u(this.d,133),139)},l.Xc=function(e){return u(u(this.d,133),139).Xc(e)},l.Yc=function(e){return u(u(this.d,133),139).Yc(e)},l.Zc=function(e,n){return new SS(this.a,u(u(this.d,133),139).Zc(e,n))},l.$c=function(e){return u(u(this.d,133),139).$c(e)},l._c=function(e){return u(u(this.d,133),139)._c(e)},l.ad=function(e,n){return new SS(this.a,u(u(this.d,133),139).ad(e,n))},I(on,"AbstractMapBasedMultimap/NavigableAsMap",446),D(501,327,ube,FM),l.Nc=function(){return this.b.ec().Nc()},I(on,"AbstractMapBasedMultimap/SortedKeySet",501),D(401,501,f8t,mE),I(on,"AbstractMapBasedMultimap/NavigableKeySet",401),D(551,31,o3,yq),l.Fc=function(e){var n,r;return Ll(this),r=this.d.dc(),n=this.d.Fc(e),n&&(++this.f.d,r&&fI(this)),n},l.Gc=function(e){var n,r,s;return e.dc()?!1:(s=(Ll(this),this.d.gc()),n=this.d.Gc(e),n&&(r=this.d.gc(),this.f.d+=r-s,s==0&&fI(this)),n)},l.$b=function(){var e;e=(Ll(this),this.d.gc()),e!=0&&(this.d.$b(),this.f.d-=e,Nz(this))},l.Hc=function(e){return Ll(this),this.d.Hc(e)},l.Ic=function(e){return Ll(this),this.d.Ic(e)},l.Fb=function(e){return e===this?!0:(Ll(this),Ti(this.d,e))},l.Hb=function(){return Ll(this),$i(this.d)},l.Kc=function(){return Ll(this),new $vt(this)},l.Mc=function(e){var n;return Ll(this),n=this.d.Mc(e),n&&(--this.f.d,Nz(this)),n},l.gc=function(){return wQt(this)},l.Nc=function(){return Ll(this),this.d.Nc()},l.Ib=function(){return Ll(this),rc(this.d)},I(on,"AbstractMapBasedMultimap/WrappedCollection",551);var Vh=os(xr,"List");D(744,551,{20:1,31:1,16:1,15:1},byt),l.jd=function(e){rw(this,e)},l.Nc=function(){return Ll(this),this.d.Nc()},l.bd=function(e,n){var r;Ll(this),r=this.d.dc(),u(this.d,15).bd(e,n),++this.a.d,r&&fI(this)},l.cd=function(e,n){var r,s,o;return n.dc()?!1:(o=(Ll(this),this.d.gc()),r=u(this.d,15).cd(e,n),r&&(s=this.d.gc(),this.a.d+=s-o,o==0&&fI(this)),r)},l.Xb=function(e){return Ll(this),u(this.d,15).Xb(e)},l.dd=function(e){return Ll(this),u(this.d,15).dd(e)},l.ed=function(){return Ll(this),new KQt(this)},l.fd=function(e){return Ll(this),new bne(this,e)},l.gd=function(e){var n;return Ll(this),n=u(this.d,15).gd(e),--this.a.d,Nz(this),n},l.hd=function(e,n){return Ll(this),u(this.d,15).hd(e,n)},l.kd=function(e,n){return Ll(this),aie(this.a,this.e,u(this.d,15).kd(e,n),this.b?this.b:this)},I(on,"AbstractMapBasedMultimap/WrappedList",744),D(1126,744,{20:1,31:1,16:1,15:1,59:1},FJt),I(on,"AbstractMapBasedMultimap/RandomAccessWrappedList",1126),D(628,1,wa,$vt),l.Nb=function(e){Na(this,e)},l.Ob=function(){return jE(this),this.b.Ob()},l.Pb=function(){return jE(this),this.b.Pb()},l.Qb=function(){yJt(this)},I(on,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",628),D(745,628,P0,KQt,bne),l.Qb=function(){yJt(this)},l.Rb=function(e){var n;n=wQt(this.a)==0,(jE(this),u(this.b,128)).Rb(e),++this.a.a.d,n&&fI(this.a)},l.Sb=function(){return(jE(this),u(this.b,128)).Sb()},l.Tb=function(){return(jE(this),u(this.b,128)).Tb()},l.Ub=function(){return(jE(this),u(this.b,128)).Ub()},l.Vb=function(){return(jE(this),u(this.b,128)).Vb()},l.Wb=function(e){(jE(this),u(this.b,128)).Wb(e)},I(on,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",745),D(743,551,ube,svt),l.Nc=function(){return Ll(this),this.d.Nc()},I(on,"AbstractMapBasedMultimap/WrappedSortedSet",743),D(1125,743,f8t,qQt),I(on,"AbstractMapBasedMultimap/WrappedNavigableSet",1125),D(1124,551,sl,rZt),l.Nc=function(){return Ll(this),this.d.Nc()},I(on,"AbstractMapBasedMultimap/WrappedSet",1124),D(1133,1,{},F),l.Kb=function(e){return Jdn(u(e,44))},I(on,"AbstractMapBasedMultimap/lambda$1$Type",1133),D(1132,1,{},mnt),l.Kb=function(e){return new bm(this.a,e)},I(on,"AbstractMapBasedMultimap/lambda$2$Type",1132);var Sw=os(xr,"Map/Entry");D(358,1,Fct),l.Fb=function(e){var n;return Lt(e,44)?(n=u(e,44),Ud(this.ld(),n.ld())&&Ud(this.md(),n.md())):!1},l.Hb=function(){var e,n;return e=this.ld(),n=this.md(),(e==null?0:$i(e))^(n==null?0:$i(n))},l.nd=function(e){throw at(new Vr)},l.Ib=function(){return this.ld()+"="+this.md()},I(on,lbe,358),D(2086,31,o3),l.$b=function(){this.od().$b()},l.Hc=function(e){var n;return Lt(e,44)?(n=u(e,44),v1n(this.od(),n.ld(),n.md())):!1},l.Mc=function(e){var n;return Lt(e,44)?(n=u(e,44),zre(this.od(),n.ld(),n.md())):!1},l.gc=function(){return this.od().d},I(on,"Multimaps/Entries",2086),D(749,2086,o3,qj),l.Kc=function(){return this.a.kc()},l.od=function(){return this.a},l.Nc=function(){return this.a.lc()},I(on,"AbstractMultimap/Entries",749),D(750,749,sl,iwt),l.Nc=function(){return this.a.lc()},l.Fb=function(e){return l6t(this,e)},l.Hb=function(){return Joe(this)},I(on,"AbstractMultimap/EntrySet",750),D(751,31,o3,bb),l.$b=function(){this.a.$b()},l.Hc=function(e){return wbn(this.a,e)},l.Kc=function(){return this.a.nc()},l.gc=function(){return this.a.d},l.Nc=function(){return this.a.oc()},I(on,"AbstractMultimap/Values",751),D(2087,31,{849:1,20:1,31:1,16:1}),l.Jc=function(e){Hr(e),X4(this).Jc(new Tnt(e))},l.Nc=function(){var e;return e=X4(this).Nc(),Not(e,new wt,64|e.yd()&1296,this.a.d)},l.Fc=function(e){return fwt(),!0},l.Gc=function(e){return Hr(this),Hr(e),Lt(e,552)?k1n(u(e,849)):!e.dc()&&Wst(this,e.Kc())},l.Hc=function(e){var n;return n=u(Gy(Q6(this.a),e),16),(n?n.gc():0)>0},l.Fb=function(e){return Vxn(this,e)},l.Hb=function(){return $i(X4(this))},l.dc=function(){return X4(this).dc()},l.Mc=function(e){return C1e(this,e,1)>0},l.Ib=function(){return rc(X4(this))},I(on,"AbstractMultiset",2087),D(2089,2068,sl),l.$b=function(){qq(this.a.a)},l.Hc=function(e){var n,r;return Lt(e,503)?(r=u(e,425),u(r.a.md(),16).gc()<=0?!1:(n=gre(this.a,r.a.ld()),n==u(r.a.md(),16).gc())):!1},l.Mc=function(e){var n,r,s,o;return Lt(e,503)&&(r=u(e,425),n=r.a.ld(),s=u(r.a.md(),16).gc(),s!=0)?(o=this.a,N5n(o,n,s)):!1},I(on,"Multisets/EntrySet",2089),D(1139,2089,sl,vnt),l.Kc=function(){return new uWt(nee(Q6(this.a.a)).Kc())},l.gc=function(){return Q6(this.a.a).gc()},I(on,"AbstractMultiset/EntrySet",1139),D(627,742,pw),l.hc=function(){return this.pd()},l.jc=function(){return this.qd()},l.cc=function(e){return this.rd(e)},l.fc=function(e){return this.sd(e)},l.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},l.qd=function(){return mn(),mn(),FU},l.Fb=function(e){return Cat(this,e)},l.rd=function(e){return u(Ai(this,e),21)},l.sd=function(e){return u(hO(this,e),21)},l.mc=function(e){return mn(),new dE(u(e,21))},l.pc=function(e,n){return new rZt(this,e,u(n,21))},I(on,"AbstractSetMultimap",627),D(1723,627,pw),l.hc=function(){return new pp(this.b)},l.pd=function(){return new pp(this.b)},l.jc=function(){return Byt(new pp(this.b))},l.qd=function(){return Byt(new pp(this.b))},l.cc=function(e){return u(u(Ai(this,e),21),87)},l.rd=function(e){return u(u(Ai(this,e),21),87)},l.fc=function(e){return u(u(hO(this,e),21),87)},l.sd=function(e){return u(u(hO(this,e),21),87)},l.mc=function(e){return Lt(e,277)?Byt(u(e,277)):(mn(),new Vmt(u(e,87)))},l.Zb=function(){var e;return e=this.f,e||(this.f=Lt(this.c,139)?new SS(this,u(this.c,139)):Lt(this.c,133)?new cI(this,u(this.c,133)):new vE(this,this.c))},l.pc=function(e,n){return Lt(n,277)?new qQt(this,e,u(n,277)):new svt(this,e,u(n,87))},I(on,"AbstractSortedSetMultimap",1723),D(1724,1723,pw),l.Zb=function(){var e;return e=this.f,u(u(e||(this.f=Lt(this.c,139)?new SS(this,u(this.c,139)):Lt(this.c,133)?new cI(this,u(this.c,133)):new vE(this,this.c)),133),139)},l.ec=function(){var e;return e=this.i,u(u(e||(this.i=Lt(this.c,139)?new mE(this,u(this.c,139)):Lt(this.c,133)?new FM(this,u(this.c,133)):new W4(this,this.c)),87),277)},l.bc=function(){return Lt(this.c,139)?new mE(this,u(this.c,139)):Lt(this.c,133)?new FM(this,u(this.c,133)):new W4(this,this.c)},I(on,"AbstractSortedKeySortedSetMultimap",1724),D(2109,1,{2046:1}),l.Fb=function(e){return pyn(this,e)},l.Hb=function(){var e;return U4t((e=this.g,e||(this.g=new xM(this))))},l.Ib=function(){var e;return hfe((e=this.f,e||(this.f=new $mt(this))))},I(on,"AbstractTable",2109),D(679,dd,sl,xM),l.$b=function(){xWt()},l.Hc=function(e){var n,r;return Lt(e,478)?(n=u(e,697),r=u(Gy(See(this.a),Cb(n.c.e,n.b)),85),!!r&&m5t(r.vc(),new bm(Cb(n.c.c,n.a),ik(n.c,n.b,n.a)))):!1},l.Kc=function(){return vhn(this.a)},l.Mc=function(e){var n,r;return Lt(e,478)?(n=u(e,697),r=u(Gy(See(this.a),Cb(n.c.e,n.b)),85),!!r&&Xbn(r.vc(),new bm(Cb(n.c.c,n.a),ik(n.c,n.b,n.a)))):!1},l.gc=function(){return Lte(this.a)},l.Nc=function(){return C1n(this.a)},I(on,"AbstractTable/CellSet",679),D(2025,31,o3,xnt),l.$b=function(){xWt()},l.Hc=function(e){return o3n(this.a,e)},l.Kc=function(){return yhn(this.a)},l.gc=function(){return Lte(this.a)},l.Nc=function(){return $re(this.a)},I(on,"AbstractTable/Values",2025),D(1697,1696,pw),I(on,"ArrayListMultimapGwtSerializationDependencies",1697),D(520,1697,pw,irt,s3t),l.hc=function(){return new wu(this.a)},l.a=0,I(on,"ArrayListMultimap",520),D(678,2109,{678:1,2046:1,3:1},R1e),I(on,"ArrayTable",678),D(2021,399,U7,xJt),l.Xb=function(e){return new X4t(this.a,e)},I(on,"ArrayTable/1",2021),D(2022,1,{},bnt),l.td=function(e){return new X4t(this.a,e)},I(on,"ArrayTable/1methodref$getCell$Type",2022),D(2110,1,{697:1}),l.Fb=function(e){var n;return e===this?!0:Lt(e,478)?(n=u(e,697),Ud(Cb(this.c.e,this.b),Cb(n.c.e,n.b))&&Ud(Cb(this.c.c,this.a),Cb(n.c.c,n.a))&&Ud(ik(this.c,this.b,this.a),ik(n.c,n.b,n.a))):!1},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[Cb(this.c.e,this.b),Cb(this.c.c,this.a),ik(this.c,this.b,this.a)]))},l.Ib=function(){return"("+Cb(this.c.e,this.b)+","+Cb(this.c.c,this.a)+")="+ik(this.c,this.b,this.a)},I(on,"Tables/AbstractCell",2110),D(478,2110,{478:1,697:1},X4t),l.a=0,l.b=0,l.d=0,I(on,"ArrayTable/2",478),D(2024,1,{},wnt),l.td=function(e){return hae(this.a,e)},I(on,"ArrayTable/2methodref$getValue$Type",2024),D(2023,399,U7,kJt),l.Xb=function(e){return hae(this.a,e)},I(on,"ArrayTable/3",2023),D(2077,2065,sv),l.$b=function(){Az(this.kc())},l.vc=function(){return new Vj(this)},l.lc=function(){return new ane(this.kc(),this.gc())},I(on,"Maps/IteratorBasedAbstractMap",2077),D(842,2077,sv),l.$b=function(){throw at(new Vr)},l._b=function(e){return $Wt(this.c,e)},l.kc=function(){return new EJt(this,this.c.b.c.gc())},l.lc=function(){return _it(this.c.b.c.gc(),16,new zj(this))},l.xc=function(e){var n;return n=u(_S(this.c,e),17),n?this.vd(n.a):null},l.dc=function(){return this.c.b.c.dc()},l.ec=function(){return Pit(this.c)},l.zc=function(e,n){var r;if(r=u(_S(this.c,e),17),!r)throw at(new zn(this.ud()+" "+e+" not in "+Pit(this.c)));return this.wd(r.a,n)},l.Bc=function(e){throw at(new Vr)},l.gc=function(){return this.c.b.c.gc()},I(on,"ArrayTable/ArrayMap",842),D(2020,1,{},zj),l.td=function(e){return Aee(this.a,e)},I(on,"ArrayTable/ArrayMap/0methodref$getEntry$Type",2020),D(2018,358,Fct,fYt),l.ld=function(){return Osn(this.a,this.b)},l.md=function(){return this.a.vd(this.b)},l.nd=function(e){return this.a.wd(this.b,e)},l.b=0,I(on,"ArrayTable/ArrayMap/1",2018),D(2019,399,U7,EJt),l.Xb=function(e){return Aee(this.a,e)},I(on,"ArrayTable/ArrayMap/2",2019),D(2017,842,sv,pee),l.ud=function(){return"Column"},l.vd=function(e){return ik(this.b,this.a,e)},l.wd=function(e,n){return Rce(this.b,this.a,e,n)},l.a=0,I(on,"ArrayTable/Row",2017),D(843,842,sv,$mt),l.vd=function(e){return new pee(this.a,e)},l.zc=function(e,n){return u(n,85),trn()},l.wd=function(e,n){return u(n,85),ern()},l.ud=function(){return"Row"},I(on,"ArrayTable/RowMap",843),D(1157,1,fh,dYt),l.Ad=function(e){return(this.a.yd()&-262&e)!=0},l.yd=function(){return this.a.yd()&-262},l.zd=function(){return this.a.zd()},l.Nb=function(e){this.a.Nb(new pYt(e,this.b))},l.Bd=function(e){return this.a.Bd(new gYt(e,this.b))},I(on,"CollectSpliterators/1",1157),D(1158,1,ir,gYt),l.Cd=function(e){this.a.Cd(this.b.Kb(e))},I(on,"CollectSpliterators/1/lambda$0$Type",1158),D(1159,1,ir,pYt),l.Cd=function(e){this.a.Cd(this.b.Kb(e))},I(on,"CollectSpliterators/1/lambda$1$Type",1159),D(1154,1,fh,RZt),l.Ad=function(e){return((16464|this.b)&e)!=0},l.yd=function(){return 16464|this.b},l.zd=function(){return this.a.zd()},l.Nb=function(e){this.a.Qe(new wYt(e,this.c))},l.Bd=function(e){return this.a.Re(new bYt(e,this.c))},l.b=0,I(on,"CollectSpliterators/1WithCharacteristics",1154),D(1155,1,nN,bYt),l.Dd=function(e){this.a.Cd(this.b.td(e))},I(on,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1155),D(1156,1,nN,wYt),l.Dd=function(e){this.a.Cd(this.b.td(e))},I(on,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1156),D(1150,1,fh),l.Ad=function(e){return(this.a&e)!=0},l.yd=function(){return this.a},l.zd=function(){return this.e&&(this.b=Amt(this.b,this.e.zd())),Amt(this.b,0)},l.Nb=function(e){this.e&&(this.e.Nb(e),this.e=null),this.c.Nb(new mYt(this,e)),this.b=0},l.Bd=function(e){for(;;){if(this.e&&this.e.Bd(e))return bS(this.b,rN)&&(this.b=sf(this.b,1)),!0;if(this.e=null,!this.c.Bd(new knt(this)))return!1}},l.a=0,l.b=0,I(on,"CollectSpliterators/FlatMapSpliterator",1150),D(1152,1,ir,knt),l.Cd=function(e){Man(this.a,e)},I(on,"CollectSpliterators/FlatMapSpliterator/lambda$0$Type",1152),D(1153,1,ir,mYt),l.Cd=function(e){nhn(this.a,this.b,e)},I(on,"CollectSpliterators/FlatMapSpliterator/lambda$1$Type",1153),D(1151,1150,fh,iie),I(on,"CollectSpliterators/FlatMapSpliteratorOfObject",1151),D(253,1,Bct),l.Fd=function(e){return this.Ed(u(e,253))},l.Ed=function(e){var n;return e==(Wnt(),kht)?1:e==(Knt(),xht)?-1:(n=(Ez(),JI(this.a,e.a)),n!=0?n:Lt(this,526)==Lt(e,526)?0:Lt(this,526)?1:-1)},l.Id=function(){return this.a},l.Fb=function(e){return bxt(this,e)},I(on,"Cut",253),D(1823,253,Bct,nWt),l.Ed=function(e){return e==this?0:1},l.Gd=function(e){throw at(new j2t)},l.Hd=function(e){e.a+="+∞)"},l.Id=function(){throw at(new Ro(fbe))},l.Hb=function(){return pg(),ext(this)},l.Jd=function(e){return!1},l.Ib=function(){return"+∞"};var xht;I(on,"Cut/AboveAll",1823),D(526,253,{253:1,526:1,3:1,34:1},LJt),l.Gd=function(e){tu((e.a+="(",e),this.a)},l.Hd=function(e){Db(tu(e,this.a),93)},l.Hb=function(){return~$i(this.a)},l.Jd=function(e){return Ez(),JI(this.a,e)<0},l.Ib=function(){return"/"+this.a+"\\"},I(on,"Cut/AboveValue",526),D(1822,253,Bct,eWt),l.Ed=function(e){return e==this?0:-1},l.Gd=function(e){e.a+="(-∞"},l.Hd=function(e){throw at(new j2t)},l.Id=function(){throw at(new Ro(fbe))},l.Hb=function(){return pg(),ext(this)},l.Jd=function(e){return!0},l.Ib=function(){return"-∞"};var kht;I(on,"Cut/BelowAll",1822),D(1824,253,Bct,DJt),l.Gd=function(e){tu((e.a+="[",e),this.a)},l.Hd=function(e){Db(tu(e,this.a),41)},l.Hb=function(){return $i(this.a)},l.Jd=function(e){return Ez(),JI(this.a,e)<=0},l.Ib=function(){return"\\"+this.a+"/"},I(on,"Cut/BelowValue",1824),D(547,1,F0),l.Jc=function(e){Fa(this,e)},l.Ib=function(){return w2n(u(Qz(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},I(on,"FluentIterable",547),D(442,547,F0,vS),l.Kc=function(){return new rr(sr(this.a.Kc(),new z))},I(on,"FluentIterable/2",442),D(1059,547,F0,RQt),l.Kc=function(){return A0(this)},I(on,"FluentIterable/3",1059),D(724,399,U7,zmt),l.Xb=function(e){return this.a[e].Kc()},I(on,"FluentIterable/3/1",724),D(2070,1,{}),l.Ib=function(){return rc(this.Kd().b)},I(on,"ForwardingObject",2070),D(2071,2070,dbe),l.Kd=function(){return this.Ld()},l.Jc=function(e){Fa(this,e)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new gn(this,0)},l.Oc=function(){return new ln(null,this.Nc())},l.Fc=function(e){return this.Ld(),qWt()},l.Gc=function(e){return this.Ld(),HWt()},l.$b=function(){this.Ld(),VWt()},l.Hc=function(e){return this.Ld().Hc(e)},l.Ic=function(e){return this.Ld().Ic(e)},l.dc=function(){return this.Ld().b.dc()},l.Kc=function(){return this.Ld().Kc()},l.Mc=function(e){return this.Ld(),UWt()},l.gc=function(){return this.Ld().b.gc()},l.Pc=function(){return this.Ld().Pc()},l.Qc=function(e){return this.Ld().Qc(e)},I(on,"ForwardingCollection",2071),D(2078,31,d8t),l.Kc=function(){return this.Od()},l.Fc=function(e){throw at(new Vr)},l.Gc=function(e){throw at(new Vr)},l.Md=function(){var e;return e=this.c,e||(this.c=this.Nd())},l.$b=function(){throw at(new Vr)},l.Hc=function(e){return e!=null&&Ky(this,e,!1)},l.Nd=function(){switch(this.gc()){case 0:return Dm(),Dm(),Eht;case 1:return Dm(),new Ait(Hr(this.Od().Pb()));default:return new yyt(this,this.Pc())}},l.Mc=function(e){throw at(new Vr)},I(on,"ImmutableCollection",2078),D(727,2078,d8t,B2t),l.Kc=function(){return sk(this.a.Kc())},l.Hc=function(e){return e!=null&&this.a.Hc(e)},l.Ic=function(e){return this.a.Ic(e)},l.dc=function(){return this.a.dc()},l.Od=function(){return sk(this.a.Kc())},l.gc=function(){return this.a.gc()},l.Pc=function(){return this.a.Pc()},l.Qc=function(e){return this.a.Qc(e)},l.Ib=function(){return rc(this.a)},I(on,"ForwardingImmutableCollection",727),D(306,2078,G7),l.Kc=function(){return this.Od()},l.ed=function(){return this.Pd(0)},l.fd=function(e){return this.Pd(e)},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.kd=function(e,n){return this.Qd(e,n)},l.bd=function(e,n){throw at(new Vr)},l.cd=function(e,n){throw at(new Vr)},l.Md=function(){return this},l.Fb=function(e){return Ixn(this,e)},l.Hb=function(){return Spn(this)},l.dd=function(e){return e==null?-1:Ymn(this,e)},l.Od=function(){return this.Pd(0)},l.Pd=function(e){return ait(this,e)},l.gd=function(e){throw at(new Vr)},l.hd=function(e,n){throw at(new Vr)},l.Qd=function(e,n){var r;return uH((r=new AYt(this),new xp(r,e,n)))};var Eht;I(on,"ImmutableList",306),D(2105,306,G7),l.Kc=function(){return sk(this.Rd().Kc())},l.kd=function(e,n){return uH(this.Rd().kd(e,n))},l.Hc=function(e){return e!=null&&this.Rd().Hc(e)},l.Ic=function(e){return this.Rd().Ic(e)},l.Fb=function(e){return Ti(this.Rd(),e)},l.Xb=function(e){return Cb(this,e)},l.Hb=function(){return $i(this.Rd())},l.dd=function(e){return this.Rd().dd(e)},l.dc=function(){return this.Rd().dc()},l.Od=function(){return sk(this.Rd().Kc())},l.gc=function(){return this.Rd().gc()},l.Qd=function(e,n){return uH(this.Rd().kd(e,n))},l.Pc=function(){return this.Rd().Qc(Vt(aa,Ln,1,this.Rd().gc(),5,1))},l.Qc=function(e){return this.Rd().Qc(e)},l.Ib=function(){return rc(this.Rd())},I(on,"ForwardingImmutableList",2105),D(729,1,K7),l.vc=function(){return K2(this)},l.wc=function(e){e_(this,e)},l.ec=function(){return Pit(this)},l.yc=function(e,n,r){return Vat(this,e,n,r)},l.Cc=function(){return this.Vd()},l.$b=function(){throw at(new Vr)},l._b=function(e){return this.xc(e)!=null},l.uc=function(e){return this.Vd().Hc(e)},l.Td=function(){return new lKt(this)},l.Ud=function(){return new hKt(this)},l.Fb=function(e){return mbn(this,e)},l.Hb=function(){return K2(this).Hb()},l.dc=function(){return this.gc()==0},l.zc=function(e,n){return Znn()},l.Bc=function(e){throw at(new Vr)},l.Ib=function(){return s4n(this)},l.Vd=function(){return this.e?this.e:this.e=this.Ud()},l.c=null,l.d=null,l.e=null;var Rve;I(on,"ImmutableMap",729),D(730,729,K7),l._b=function(e){return $Wt(this,e)},l.uc=function(e){return NYt(this.b,e)},l.Sd=function(){return Nue(new ynt(this))},l.Td=function(){return Nue(Xee(this.b))},l.Ud=function(){return Vd(),new B2t(Yee(this.b))},l.Fb=function(e){return PYt(this.b,e)},l.xc=function(e){return _S(this,e)},l.Hb=function(){return $i(this.b.c)},l.dc=function(){return this.b.c.dc()},l.gc=function(){return this.b.c.gc()},l.Ib=function(){return rc(this.b.c)},I(on,"ForwardingImmutableMap",730),D(2072,2071,Rct),l.Kd=function(){return this.Wd()},l.Ld=function(){return this.Wd()},l.Nc=function(){return new gn(this,1)},l.Fb=function(e){return e===this||this.Wd().Fb(e)},l.Hb=function(){return this.Wd().Hb()},I(on,"ForwardingSet",2072),D(1085,2072,Rct,ynt),l.Kd=function(){return BE(this.a.b)},l.Ld=function(){return BE(this.a.b)},l.Hc=function(e){if(Lt(e,44)&&u(e,44).ld()==null)return!1;try{return OYt(BE(this.a.b),e)}catch(n){if(n=es(n),Lt(n,212))return!1;throw at(n)}},l.Wd=function(){return BE(this.a.b)},l.Qc=function(e){var n;return n=Nne(BE(this.a.b),e),BE(this.a.b).b.gc()=0?"+":"")+(r/60|0),n=nz(b.Math.abs(r)%60),(Efe(),rye)[this.q.getDay()]+" "+iye[this.q.getMonth()]+" "+nz(this.q.getDate())+" "+nz(this.q.getHours())+":"+nz(this.q.getMinutes())+":"+nz(this.q.getSeconds())+" GMT"+e+n+" "+this.q.getFullYear()};var OU=I(xr,"Date",206);D(2015,206,kbe,Ghe),l.a=!1,l.b=0,l.c=0,l.d=0,l.e=0,l.f=0,l.g=!1,l.i=0,l.j=0,l.k=0,l.n=0,l.o=0,l.p=0,I("com.google.gwt.i18n.shared.impl","DateRecord",2015),D(2064,1,{}),l.pe=function(){return null},l.qe=function(){return null},l.re=function(){return null},l.se=function(){return null},l.te=function(){return null},I(Ck,"JSONValue",2064),D(221,2064,{221:1},cp,Xj),l.Fb=function(e){return Lt(e,221)?o3t(this.a,u(e,221).a):!1},l.oe=function(){return Tnn},l.Hb=function(){return Xyt(this.a)},l.pe=function(){return this},l.Ib=function(){var e,n,r;for(r=new eh("["),n=0,e=this.a.length;n0&&(r.a+=","),tu(r,$y(this,n));return r.a+="]",r.a},I(Ck,"JSONArray",221),D(492,2064,{492:1},xc),l.oe=function(){return Cnn},l.qe=function(){return this},l.Ib=function(){return Pn(),""+this.a},l.a=!1;var Uve,Gve;I(Ck,"JSONBoolean",492),D(997,63,Pg,lWt),I(Ck,"JSONException",997),D(1036,2064,{},K),l.oe=function(){return Snn},l.Ib=function(){return Vu};var Kve;I(Ck,"JSONNull",1036),D(263,2064,{263:1},cE),l.Fb=function(e){return Lt(e,263)?this.a==u(e,263).a:!1},l.oe=function(){return knn},l.Hb=function(){return F6(this.a)},l.re=function(){return this},l.Ib=function(){return this.a+""},l.a=0,I(Ck,"JSONNumber",263),D(190,2064,{190:1},_6,uE),l.Fb=function(e){return Lt(e,190)?o3t(this.a,u(e,190).a):!1},l.oe=function(){return Enn},l.Hb=function(){return Xyt(this.a)},l.se=function(){return this},l.Ib=function(){var e,n,r,s,o,h,d;for(d=new eh("{"),e=!0,h=cat(this,Vt(Pe,ue,2,0,6,1)),r=h,s=0,o=r.length;s=0?":"+this.c:"")+")"},l.c=0;var m9t=I(Sc,"StackTraceElement",319);Bve={3:1,483:1,34:1,2:1};var Pe=I(Sc,g8t,2);D(111,427,{483:1},dp,YC,ef),I(Sc,"StringBuffer",111),D(104,427,{483:1},yb,I4,eh),I(Sc,"StringBuilder",104),D(702,77,out,dwt),I(Sc,"StringIndexOutOfBoundsException",702),D(2145,1,{});var Qve;D(48,63,{3:1,103:1,63:1,82:1,48:1},Vr,hp),I(Sc,"UnsupportedOperationException",48),D(247,242,{3:1,34:1,242:1,247:1},gO,Twt),l.Fd=function(e){return wge(this,u(e,247))},l.ue=function(){return Jy(Uge(this))},l.Fb=function(e){var n;return this===e?!0:Lt(e,247)?(n=u(e,247),this.e==n.e&&wge(this,n)==0):!1},l.Hb=function(){var e;return this.b!=0?this.b:this.a<54?(e=Pc(this.f),this.b=qr(sa(e,-1)),this.b=33*this.b+qr(sa(_m(e,32),-1)),this.b=17*this.b+Ys(this.e),this.b):(this.b=17*Lue(this.c)+Ys(this.e),this.b)},l.Ib=function(){return Uge(this)},l.a=0,l.b=0,l.d=0,l.e=0,l.f=0;var Jve,_w,v9t,y9t,x9t,k9t,E9t,T9t,Mht=I("java.math","BigDecimal",247);D(92,242,{3:1,34:1,242:1,92:1},kg,xre,Y2,Dle,Sb),l.Fd=function(e){return Sle(this,u(e,92))},l.ue=function(){return Jy(Oct(this,0))},l.Fb=function(e){return R5t(this,e)},l.Hb=function(){return Lue(this)},l.Ib=function(){return Oct(this,0)},l.b=-2,l.c=0,l.d=0,l.e=0;var Zve,NU,tye,Iht,PU,yA,N5=I("java.math","BigInteger",92),eye,nye,Bk,xA;D(497,2065,sv),l.$b=function(){dl(this)},l._b=function(e){return Tu(this,e)},l.uc=function(e){return lue(this,e,this.i)||lue(this,e,this.f)},l.vc=function(){return new mr(this)},l.xc=function(e){return tr(this,e)},l.zc=function(e,n){return hi(this,e,n)},l.Bc=function(e){return rk(this,e)},l.gc=function(){return QC(this)},l.g=0,I(xr,"AbstractHashMap",497),D(267,dd,sl,mr),l.$b=function(){this.a.$b()},l.Hc=function(e){return Qre(this,e)},l.Kc=function(){return new sw(this.a)},l.Mc=function(e){var n;return Qre(this,e)?(n=u(e,44).ld(),this.a.Bc(n),!0):!1},l.gc=function(){return this.a.gc()},I(xr,"AbstractHashMap/EntrySet",267),D(268,1,wa,sw),l.Nb=function(e){Na(this,e)},l.Pb=function(){return Um(this)},l.Ob=function(){return this.b},l.Qb=function(){Sae(this)},l.b=!1,l.d=0,I(xr,"AbstractHashMap/EntrySetIterator",268),D(426,1,wa,gr),l.Nb=function(e){Na(this,e)},l.Ob=function(){return frt(this)},l.Pb=function(){return Uyt(this)},l.Qb=function(){Kl(this)},l.b=0,l.c=-1,I(xr,"AbstractList/IteratorImpl",426),D(98,426,P0,La),l.Qb=function(){Kl(this)},l.Rb=function(e){Ly(this,e)},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Ub=function(){return ur(this.b>0),this.a.Xb(this.c=--this.b)},l.Vb=function(){return this.b-1},l.Wb=function(e){_y(this.c!=-1),this.a.hd(this.c,e)},I(xr,"AbstractList/ListIteratorImpl",98),D(244,56,W7,xp),l.bd=function(e,n){Fy(e,this.b),this.c.bd(this.a+e,n),++this.b},l.Xb=function(e){return vn(e,this.b),this.c.Xb(this.a+e)},l.gd=function(e){var n;return vn(e,this.b),n=this.c.gd(this.a+e),--this.b,n},l.hd=function(e,n){return vn(e,this.b),this.c.hd(this.a+e,n)},l.gc=function(){return this.b},l.a=0,l.b=0,I(xr,"AbstractList/SubList",244),D(266,dd,sl,cr),l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a._b(e)},l.Kc=function(){var e;return e=this.a.vc().Kc(),new vi(e)},l.Mc=function(e){return this.a._b(e)?(this.a.Bc(e),!0):!1},l.gc=function(){return this.a.gc()},I(xr,"AbstractMap/1",266),D(541,1,wa,vi),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var e;return e=u(this.a.Pb(),44),e.ld()},l.Qb=function(){this.a.Qb()},I(xr,"AbstractMap/1/1",541),D(231,31,o3,si),l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a.uc(e)},l.Kc=function(){var e;return e=this.a.vc().Kc(),new Qi(e)},l.gc=function(){return this.a.gc()},I(xr,"AbstractMap/2",231),D(300,1,wa,Qi),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var e;return e=u(this.a.Pb(),44),e.md()},l.Qb=function(){this.a.Qb()},I(xr,"AbstractMap/2/1",300),D(493,1,{493:1,44:1}),l.Fb=function(e){var n;return Lt(e,44)?(n=u(e,44),Nc(this.d,n.ld())&&Nc(this.e,n.md())):!1},l.ld=function(){return this.d},l.md=function(){return this.e},l.Hb=function(){return V4(this.d)^V4(this.e)},l.nd=function(e){return fvt(this,e)},l.Ib=function(){return this.d+"="+this.e},I(xr,"AbstractMap/AbstractEntry",493),D(397,493,{493:1,397:1,44:1},I$),I(xr,"AbstractMap/SimpleEntry",397),D(2082,1,lut),l.Fb=function(e){var n;return Lt(e,44)?(n=u(e,44),Nc(this.ld(),n.ld())&&Nc(this.md(),n.md())):!1},l.Hb=function(){return V4(this.ld())^V4(this.md())},l.Ib=function(){return this.ld()+"="+this.md()},I(xr,lbe,2082),D(2090,2065,h8t),l.Xc=function(e){return srt(this.Ee(e))},l.tc=function(e){return rse(this,e)},l._b=function(e){return dvt(this,e)},l.vc=function(){return new Es(this)},l.Tc=function(){return wee(this.Ge())},l.Yc=function(e){return srt(this.He(e))},l.xc=function(e){var n;return n=e,Ko(this.Fe(n))},l.$c=function(e){return srt(this.Ie(e))},l.ec=function(){return new ks(this)},l.Vc=function(){return wee(this.Je())},l._c=function(e){return srt(this.Ke(e))},I(xr,"AbstractNavigableMap",2090),D(629,dd,sl,Es),l.Hc=function(e){return Lt(e,44)&&rse(this.b,u(e,44))},l.Kc=function(){return this.b.De()},l.Mc=function(e){var n;return Lt(e,44)?(n=u(e,44),this.b.Le(n)):!1},l.gc=function(){return this.b.gc()},I(xr,"AbstractNavigableMap/EntrySet",629),D(1146,dd,f8t,ks),l.Nc=function(){return new D$(this)},l.$b=function(){this.a.$b()},l.Hc=function(e){return dvt(this.a,e)},l.Kc=function(){var e;return e=this.a.vc().b.De(),new as(e)},l.Mc=function(e){return dvt(this.a,e)?(this.a.Bc(e),!0):!1},l.gc=function(){return this.a.gc()},I(xr,"AbstractNavigableMap/NavigableKeySet",1146),D(1147,1,wa,as),l.Nb=function(e){Na(this,e)},l.Ob=function(){return frt(this.a.a)},l.Pb=function(){var e;return e=$Jt(this.a),e.ld()},l.Qb=function(){GZt(this.a)},I(xr,"AbstractNavigableMap/NavigableKeySet/1",1147),D(2103,31,o3),l.Fc=function(e){return V6(D7(this,e),X7),!0},l.Gc=function(e){return Wn(e),wI(e!=this,"Can't add a queue to itself"),Ma(this,e)},l.$b=function(){for(;Yst(this)!=null;);},I(xr,"AbstractQueue",2103),D(310,31,{4:1,20:1,31:1,16:1},K4,Gre),l.Fc=function(e){return w3t(this,e),!0},l.$b=function(){E3t(this)},l.Hc=function(e){return Ice(new $S(this),e)},l.dc=function(){return WC(this)},l.Kc=function(){return new $S(this)},l.Mc=function(e){return ofn(new $S(this),e)},l.gc=function(){return this.c-this.b&this.a.length-1},l.Nc=function(){return new gn(this,272)},l.Qc=function(e){var n;return n=this.c-this.b&this.a.length-1,e.lengthn&&ls(e,n,null),e},l.b=0,l.c=0,I(xr,"ArrayDeque",310),D(458,1,wa,$S),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.a!=this.b},l.Pb=function(){return cH(this)},l.Qb=function(){Aoe(this)},l.a=0,l.b=0,l.c=-1,I(xr,"ArrayDeque/IteratorImpl",458),D(13,56,Cbe,fe,wu,fl),l.bd=function(e,n){Sm(this,e,n)},l.Fc=function(e){return ge(this,e)},l.cd=function(e,n){return l5t(this,e,n)},l.Gc=function(e){return Hs(this,e)},l.$b=function(){wy(this.c,0)},l.Hc=function(e){return Xo(this,e,0)!=-1},l.Jc=function(e){Cu(this,e)},l.Xb=function(e){return Oe(this,e)},l.dd=function(e){return Xo(this,e,0)},l.dc=function(){return this.c.length==0},l.Kc=function(){return new G(this)},l.gd=function(e){return Ep(this,e)},l.Mc=function(e){return zu(this,e)},l.ce=function(e,n){pre(this,e,n)},l.hd=function(e,n){return Mh(this,e,n)},l.gc=function(){return this.c.length},l.jd=function(e){Ds(this,e)},l.Pc=function(){return Tz(this.c)},l.Qc=function(e){return ld(this,e)};var XSn=I(xr,"ArrayList",13);D(7,1,wa,G),l.Nb=function(e){Na(this,e)},l.Ob=function(){return lc(this)},l.Pb=function(){return et(this)},l.Qb=function(){PS(this)},l.a=0,l.b=-1,I(xr,"ArrayList/1",7),D(2112,b.Function,{},It),l.Me=function(e,n){return Bi(e,n)},D(151,56,Sbe,hl),l.Hc=function(e){return Loe(this,e)!=-1},l.Jc=function(e){var n,r,s,o;for(Wn(e),r=this.a,s=0,o=r.length;s0)throw at(new zn(k8t+e+" greater than "+this.e));return this.f.Te()?Rne(this.c,this.b,this.a,e,n):bre(this.c,e,n)},l.zc=function(e,n){if(!Eot(this.c,this.f,e,this.b,this.a,this.e,this.d))throw at(new zn(e+" outside the range "+this.b+" to "+this.e));return Yce(this.c,e,n)},l.Bc=function(e){var n;return n=e,Eot(this.c,this.f,n,this.b,this.a,this.e,this.d)?jne(this.c,n):null},l.Le=function(e){return Vz(this,e.ld())&&q3t(this.c,e)},l.gc=function(){var e,n,r;if(this.f.Te()?this.a?n=E7(this.c,this.b,!0):n=E7(this.c,this.b,!1):n=J3t(this.c),!(n&&Vz(this,n.d)&&n))return 0;for(e=0,r=new uat(this.c,this.f,this.b,this.a,this.e,this.d);frt(r.a);r.b=u(Uyt(r.a),44))++e;return e},l.ad=function(e,n){if(this.f.Te()&&this.c.a.Ne(e,this.b)<0)throw at(new zn(k8t+e+Lbe+this.b));return this.f.Ue()?Rne(this.c,e,n,this.e,this.d):wre(this.c,e,n)},l.a=!1,l.d=!1,I(xr,"TreeMap/SubMap",631),D(303,22,gut,M$),l.Te=function(){return!1},l.Ue=function(){return!1};var Pht,Fht,Bht,Rht,BU=Lr(xr,"TreeMap/SubMapType",303,Pr,N1n,Van);D(1143,303,gut,VQt),l.Ue=function(){return!0},Lr(xr,"TreeMap/SubMapType/1",1143,BU,null,null),D(1144,303,gut,ZQt),l.Te=function(){return!0},l.Ue=function(){return!0},Lr(xr,"TreeMap/SubMapType/2",1144,BU,null,null),D(1145,303,gut,HQt),l.Te=function(){return!0},Lr(xr,"TreeMap/SubMapType/3",1145,BU,null,null);var lye;D(157,dd,{3:1,20:1,31:1,16:1,277:1,21:1,87:1,157:1},q2t,pp,ra),l.Nc=function(){return new D$(this)},l.Fc=function(e){return yI(this,e)},l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a._b(e)},l.Kc=function(){return this.a.ec().Kc()},l.Mc=function(e){return rit(this,e)},l.gc=function(){return this.a.gc()};var n_n=I(xr,"TreeSet",157);D(1082,1,{},no),l.Ve=function(e,n){return oan(this.a,e,n)},I(put,"BinaryOperator/lambda$0$Type",1082),D(1083,1,{},ql),l.Ve=function(e,n){return can(this.a,e,n)},I(put,"BinaryOperator/lambda$1$Type",1083),D(952,1,{},Ne),l.Kb=function(e){return e},I(put,"Function/lambda$0$Type",952),D(395,1,Kr,Sl),l.Mb=function(e){return!this.a.Mb(e)},I(put,"Predicate/lambda$2$Type",395),D(581,1,{581:1});var hye=I(V_,"Handler",581);D(2107,1,tN),l.xe=function(){return"DUMMY"},l.Ib=function(){return this.xe()};var M9t;I(V_,"Level",2107),D(1706,2107,tN,Xt),l.xe=function(){return"INFO"},I(V_,"Level/LevelInfo",1706),D(1843,1,{},mKt);var jht;I(V_,"LogManager",1843),D(1896,1,tN,UZt),l.b=null,I(V_,"LogRecord",1896),D(525,1,{525:1},Ast),l.e=!1;var fye=!1,dye=!1,wd=!1,gye=!1,pye=!1;I(V_,"Logger",525),D(835,581,{581:1},_e),I(V_,"SimpleConsoleLogHandler",835),D(108,22,{3:1,34:1,22:1,108:1},prt);var I9t,sc,w3,Ho=Lr(Us,"Collector/Characteristics",108,Pr,xfn,Uan),bye;D(758,1,{},Tyt),I(Us,"CollectorImpl",758),D(1074,1,{},xe),l.Ve=function(e,n){return e2n(u(e,213),u(n,213))},I(Us,"Collectors/10methodref$merge$Type",1074),D(1075,1,{},Mn),l.Kb=function(e){return Kre(u(e,213))},I(Us,"Collectors/11methodref$toString$Type",1075),D(1076,1,{},mb),l.Kb=function(e){return Pn(),!!mmt(e)},I(Us,"Collectors/12methodref$test$Type",1076),D(144,1,{},ce),l.Yd=function(e,n){u(e,16).Fc(n)},I(Us,"Collectors/20methodref$add$Type",144),D(146,1,{},Br),l.Xe=function(){return new fe},I(Us,"Collectors/21methodref$ctor$Type",146),D(359,1,{},we),l.Xe=function(){return new Os},I(Us,"Collectors/23methodref$ctor$Type",359),D(360,1,{},Fi),l.Yd=function(e,n){qs(u(e,49),n)},I(Us,"Collectors/24methodref$add$Type",360),D(1069,1,{},mi),l.Ve=function(e,n){return RYt(u(e,15),u(n,16))},I(Us,"Collectors/4methodref$addAll$Type",1069),D(1073,1,{},ga),l.Yd=function(e,n){Eg(u(e,213),u(n,483))},I(Us,"Collectors/9methodref$add$Type",1073),D(1072,1,{},cte),l.Xe=function(){return new aw(this.a,this.b,this.c)},I(Us,"Collectors/lambda$15$Type",1072),D(1077,1,{},Ss),l.Xe=function(){var e;return e=new kp,Op(e,(Pn(),!1),new fe),Op(e,!0,new fe),e},I(Us,"Collectors/lambda$22$Type",1077),D(1078,1,{},vb),l.Xe=function(){return lt(ut(aa,1),Ln,1,5,[this.a])},I(Us,"Collectors/lambda$25$Type",1078),D(1079,1,{},v1),l.Yd=function(e,n){_un(this.a,nw(e))},I(Us,"Collectors/lambda$26$Type",1079),D(1080,1,{},up),l.Ve=function(e,n){return eln(this.a,nw(e),nw(n))},I(Us,"Collectors/lambda$27$Type",1080),D(1081,1,{},za),l.Kb=function(e){return nw(e)[0]},I(Us,"Collectors/lambda$28$Type",1081),D(728,1,{},br),l.Ve=function(e,n){return iyt(e,n)},I(Us,"Collectors/lambda$4$Type",728),D(145,1,{},An),l.Ve=function(e,n){return Frn(u(e,16),u(n,16))},I(Us,"Collectors/lambda$42$Type",145),D(361,1,{},Nn),l.Ve=function(e,n){return Brn(u(e,49),u(n,49))},I(Us,"Collectors/lambda$50$Type",361),D(362,1,{},Bn),l.Kb=function(e){return u(e,49)},I(Us,"Collectors/lambda$51$Type",362),D(1068,1,{},Bd),l.Yd=function(e,n){obn(this.a,u(e,85),n)},I(Us,"Collectors/lambda$7$Type",1068),D(1070,1,{},ke),l.Ve=function(e,n){return Bpn(u(e,85),u(n,85),new mi)},I(Us,"Collectors/lambda$8$Type",1070),D(1071,1,{},cm),l.Kb=function(e){return N2n(this.a,u(e,85))},I(Us,"Collectors/lambda$9$Type",1071),D(550,1,{}),l.$e=function(){jS(this)},l.d=!1,I(Us,"TerminatableStream",550),D(827,550,E8t,rvt),l.$e=function(){jS(this)},I(Us,"DoubleStreamImpl",827),D(1847,736,fh,ute),l.Re=function(e){return Bmn(this,u(e,189))},l.a=null,I(Us,"DoubleStreamImpl/2",1847),D(1848,1,uN,py),l.Pe=function(e){Din(this.a,e)},I(Us,"DoubleStreamImpl/2/lambda$0$Type",1848),D(1845,1,uN,y6),l.Pe=function(e){Lin(this.a,e)},I(Us,"DoubleStreamImpl/lambda$0$Type",1845),D(1846,1,uN,_4),l.Pe=function(e){ule(this.a,e)},I(Us,"DoubleStreamImpl/lambda$2$Type",1846),D(1397,735,fh,Jie),l.Re=function(e){return E1n(this,u(e,202))},l.a=0,l.b=0,l.c=0,I(Us,"IntStream/5",1397),D(806,550,E8t,ivt),l.$e=function(){jS(this)},l._e=function(){return Mb(this),this.a},I(Us,"IntStreamImpl",806),D(807,550,E8t,Lwt),l.$e=function(){jS(this)},l._e=function(){return Mb(this),jmt(),uye},I(Us,"IntStreamImpl/Empty",807),D(1687,1,nN,x6),l.Dd=function(e){vce(this.a,e)},I(Us,"IntStreamImpl/lambda$4$Type",1687);var r_n=os(Us,"Stream");D(26,550,{533:1,687:1,848:1},ln),l.$e=function(){jS(this)};var Rk;I(Us,"StreamImpl",26),D(1102,499,fh,BZt),l.Bd=function(e){for(;S0n(this);){if(this.a.Bd(e))return!0;jS(this.b),this.b=null,this.a=null}return!1},I(Us,"StreamImpl/1",1102),D(1103,1,ir,BC),l.Cd=function(e){Zcn(this.a,u(e,848))},I(Us,"StreamImpl/1/lambda$0$Type",1103),D(1104,1,Kr,A4),l.Mb=function(e){return qs(this.a,e)},I(Us,"StreamImpl/1methodref$add$Type",1104),D(1105,499,fh,wne),l.Bd=function(e){var n;return this.a||(n=new fe,this.b.a.Nb(new k0(n)),mn(),Ds(n,this.c),this.a=new gn(n,16)),toe(this.a,e)},l.a=null,I(Us,"StreamImpl/5",1105),D(1106,1,ir,k0),l.Cd=function(e){ge(this.a,e)},I(Us,"StreamImpl/5/2methodref$add$Type",1106),D(737,499,fh,Z3t),l.Bd=function(e){for(this.b=!1;!this.b&&this.c.Bd(new eXt(this,e)););return this.b},l.b=!1,I(Us,"StreamImpl/FilterSpliterator",737),D(1096,1,ir,eXt),l.Cd=function(e){Yun(this.a,this.b,e)},I(Us,"StreamImpl/FilterSpliterator/lambda$0$Type",1096),D(1091,736,fh,use),l.Re=function(e){return Lan(this,u(e,189))},I(Us,"StreamImpl/MapToDoubleSpliterator",1091),D(1095,1,ir,nXt),l.Cd=function(e){Zrn(this.a,this.b,e)},I(Us,"StreamImpl/MapToDoubleSpliterator/lambda$0$Type",1095),D(1090,735,fh,lse),l.Re=function(e){return Dan(this,u(e,202))},I(Us,"StreamImpl/MapToIntSpliterator",1090),D(1094,1,ir,rXt),l.Cd=function(e){tin(this.a,this.b,e)},I(Us,"StreamImpl/MapToIntSpliterator/lambda$0$Type",1094),D(734,499,fh,R3t),l.Bd=function(e){return NZt(this,e)},I(Us,"StreamImpl/MapToObjSpliterator",734),D(1093,1,ir,iXt),l.Cd=function(e){ein(this.a,this.b,e)},I(Us,"StreamImpl/MapToObjSpliterator/lambda$0$Type",1093),D(1092,499,fh,joe),l.Bd=function(e){for(;drt(this.b,0);){if(!this.a.Bd(new pe))return!1;this.b=sf(this.b,1)}return this.a.Bd(e)},l.b=0,I(Us,"StreamImpl/SkipSpliterator",1092),D(1097,1,ir,pe),l.Cd=function(e){},I(Us,"StreamImpl/SkipSpliterator/lambda$0$Type",1097),D(626,1,ir,Je),l.Cd=function(e){Cnt(this,e)},I(Us,"StreamImpl/ValueConsumer",626),D(1098,1,ir,an),l.Cd=function(e){U2()},I(Us,"StreamImpl/lambda$0$Type",1098),D(1099,1,ir,xn),l.Cd=function(e){U2()},I(Us,"StreamImpl/lambda$1$Type",1099),D(1100,1,{},J1),l.Ve=function(e,n){return con(this.a,e,n)},I(Us,"StreamImpl/lambda$4$Type",1100),D(1101,1,ir,sXt),l.Cd=function(e){gan(this.b,this.a,e)},I(Us,"StreamImpl/lambda$5$Type",1101),D(1107,1,ir,E0),l.Cd=function(e){Cpn(this.a,u(e,380))},I(Us,"TerminatableStream/lambda$0$Type",1107),D(2142,1,{}),D(2014,1,{},qa),I("javaemul.internal","ConsoleLogger",2014);var i_n=0;D(2134,1,{}),D(1830,1,ir,xo),l.Cd=function(e){u(e,317)},I(Q7,"BowyerWatsonTriangulation/lambda$0$Type",1830),D(1831,1,ir,$2),l.Cd=function(e){Ma(this.a,u(e,317).e)},I(Q7,"BowyerWatsonTriangulation/lambda$1$Type",1831),D(1832,1,ir,ko),l.Cd=function(e){u(e,177)},I(Q7,"BowyerWatsonTriangulation/lambda$2$Type",1832),D(1827,1,Xr,Zj),l.Ne=function(e,n){return cdn(this.a,u(e,177),u(n,177))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Q7,"NaiveMinST/lambda$0$Type",1827),D(506,1,{},by),I(Q7,"NodeMicroLayout",506),D(177,1,{177:1},O6),l.Fb=function(e){var n;return Lt(e,177)?(n=u(e,177),Nc(this.a,n.a)&&Nc(this.b,n.b)||Nc(this.a,n.b)&&Nc(this.b,n.a)):!1},l.Hb=function(){return V4(this.a)+V4(this.b)};var s_n=I(Q7,"TEdge",177);D(317,1,{317:1},Bkt),l.Fb=function(e){var n;return Lt(e,317)?(n=u(e,317),Aq(this,n.a)&&Aq(this,n.b)&&Aq(this,n.c)):!1},l.Hb=function(){return V4(this.a)+V4(this.b)+V4(this.c)},I(Q7,"TTriangle",317),D(225,1,{225:1},iz),I(Q7,"Tree",225),D(1218,1,{},nre),I(Ibe,"Scanline",1218);var wye=os(Ibe,Obe);D(1758,1,{},Qae),I(j0,"CGraph",1758),D(316,1,{316:1},sre),l.b=0,l.c=0,l.d=0,l.g=0,l.i=0,l.k=Vs,I(j0,"CGroup",316),D(830,1,{},U2t),I(j0,"CGroup/CGroupBuilder",830),D(60,1,{60:1},wZt),l.Ib=function(){var e;return this.j?Gr(this.j.Kb(this)):(wg(RU),RU.o+"@"+(e=Em(this)>>>0,e.toString(16)))},l.f=0,l.i=Vs;var RU=I(j0,"CNode",60);D(829,1,{},G2t),I(j0,"CNode/CNodeBuilder",829);var mye;D(1590,1,{},va),l.ff=function(e,n){return 0},l.gf=function(e,n){return 0},I(j0,Pbe,1590),D(1853,1,{},Ha),l.cf=function(e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;for(T=Zi,s=new G(e.a.b);s.as.d.c||s.d.c==h.d.c&&s.d.b0?e+this.n.d+this.n.a:0},l.kf=function(){var e,n,r,s,o;if(o=0,this.e)this.b?o=this.b.a:this.a[1][1]&&(o=this.a[1][1].kf());else if(this.g)o=F5t(this,Cot(this,null,!0));else for(n=(A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])),r=0,s=n.length;r0?o+this.n.b+this.n.c:0},l.lf=function(){var e,n,r,s,o;if(this.g)for(e=Cot(this,null,!1),r=(A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])),s=0,o=r.length;s0&&(s[0]+=this.d,r-=s[0]),s[2]>0&&(s[2]+=this.d,r-=s[2]),this.c.a=b.Math.max(0,r),this.c.d=n.d+e.d+(this.c.a-r)/2,s[1]=b.Math.max(s[1],r),N3t(this,xu,n.d+e.d+s[0]-(s[1]-r)/2,s)},l.b=null,l.d=0,l.e=!1,l.f=!1,l.g=!1;var Vht=0,jU=0;I(ww,"GridContainerCell",1538),D(470,22,{3:1,34:1,22:1,470:1},wrt);var e2,c0,Gf,Aye=Lr(ww,"HorizontalLabelAlignment",470,Pr,Efn,Xan),Lye;D(314,217,{217:1,314:1},qne,Zae,Pne),l.jf=function(){return kte(this)},l.kf=function(){return Jvt(this)},l.a=0,l.c=!1;var a_n=I(ww,"LabelCell",314);D(252,336,{217:1,336:1,252:1},p_),l.jf=function(){return PO(this)},l.kf=function(){return FO(this)},l.lf=function(){dct(this)},l.mf=function(){gct(this)},l.b=0,l.c=0,l.d=!1,I(ww,"StripContainerCell",252),D(1691,1,Kr,Ic),l.Mb=function(e){return Xnn(u(e,217))},I(ww,"StripContainerCell/lambda$0$Type",1691),D(1692,1,{},wc),l.Ye=function(e){return u(e,217).kf()},I(ww,"StripContainerCell/lambda$1$Type",1692),D(1693,1,Kr,Ea),l.Mb=function(e){return Qnn(u(e,217))},I(ww,"StripContainerCell/lambda$2$Type",1693),D(1694,1,{},gu),l.Ye=function(e){return u(e,217).jf()},I(ww,"StripContainerCell/lambda$3$Type",1694),D(471,22,{3:1,34:1,22:1,471:1},mrt);var Kf,n2,O1,Dye=Lr(ww,"VerticalLabelAlignment",471,Pr,kfn,Qan),Mye;D(800,1,{},Zkt),l.c=0,l.d=0,l.k=0,l.s=0,l.t=0,l.v=!1,l.w=0,l.D=!1,I(SV,"NodeContext",800),D(1536,1,Xr,ta),l.Ne=function(e,n){return NQt(u(e,64),u(n,64))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(SV,"NodeContext/0methodref$comparePortSides$Type",1536),D(1537,1,Xr,fo),l.Ne=function(e,n){return S3n(u(e,117),u(n,117))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(SV,"NodeContext/1methodref$comparePortContexts$Type",1537),D(164,22,{3:1,34:1,22:1,164:1},Nh);var Iye,Oye,Nye,Pye,Fye,Bye,Rye,jye,$ye,zye,qye,Hye,Vye,Uye,Gye,Kye,Wye,Yye,Xye,Qye,Jye,Uht,Zye=Lr(SV,"NodeLabelLocation",164,Pr,not,Jan),t3e;D(117,1,{117:1},q1e),l.a=!1,I(SV,"PortContext",117),D(1541,1,ir,mc),l.Cd=function(e){ZWt(u(e,314))},I(hN,Wbe,1541),D(1542,1,Kr,ca),l.Mb=function(e){return!!u(e,117).c},I(hN,Ybe,1542),D(1543,1,ir,ya),l.Cd=function(e){ZWt(u(e,117).c)},I(hN,"LabelPlacer/lambda$2$Type",1543);var tCt;D(1540,1,ir,ea),l.Cd=function(e){Ay(),Lnn(u(e,117))},I(hN,"NodeLabelAndSizeUtilities/lambda$0$Type",1540),D(801,1,ir,Mvt),l.Cd=function(e){Hrn(this.b,this.c,this.a,u(e,187))},l.a=!1,l.c=!1,I(hN,"NodeLabelCellCreator/lambda$0$Type",801),D(1539,1,ir,Ont),l.Cd=function(e){Inn(this.a,u(e,187))},I(hN,"PortContextCreator/lambda$0$Type",1539);var $U;D(1902,1,{},Zl),I(Z7,"GreedyRectangleStripOverlapRemover",1902),D(1903,1,Xr,Uc),l.Ne=function(e,n){return xsn(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Z7,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1903),D(1849,1,{},kKt),l.a=5,l.e=0,I(Z7,"RectangleStripOverlapRemover",1849),D(1850,1,Xr,rm),l.Ne=function(e,n){return ksn(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Z7,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1850),D(1852,1,Xr,kh),l.Ne=function(e,n){return hln(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Z7,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1852),D(417,22,{3:1,34:1,22:1,417:1},O$);var BN,Ght,Kht,RN,e3e=Lr(Z7,"RectangleStripOverlapRemover/OverlapRemovalDirection",417,Pr,B1n,Zan),n3e;D(226,1,{226:1},Oit),I(Z7,"RectangleStripOverlapRemover/RectangleNode",226),D(1851,1,ir,Nnt),l.Cd=function(e){Jmn(this.a,u(e,226))},I(Z7,"RectangleStripOverlapRemover/lambda$1$Type",1851),D(1323,1,Xr,Md),l.Ne=function(e,n){return mTn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1323),D(1326,1,{},w0),l.Kb=function(e){return u(e,334).a},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1326),D(1327,1,Kr,Id),l.Mb=function(e){return u(e,332).a},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1327),D(1328,1,Kr,m0),l.Mb=function(e){return u(e,332).a},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1328),D(1321,1,Xr,hg),l.Ne=function(e,n){return W8n(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1321),D(1324,1,{},Gi),l.Kb=function(e){return u(e,334).a},I(e0,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1324),D(781,1,Xr,cn),l.Ne=function(e,n){return Dpn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinNumOfExtensionsComparator",781),D(1319,1,Xr,Nr),l.Ne=function(e,n){return Rgn(u(e,330),u(n,330))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinPerimeterComparator",1319),D(1320,1,Xr,Si),l.Ne=function(e,n){return kmn(u(e,330),u(n,330))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinPerimeterComparatorWithShape",1320),D(1322,1,Xr,vc),l.Ne=function(e,n){return pEn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1322),D(1325,1,{},Rc),l.Kb=function(e){return u(e,334).a},I(e0,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1325),D(782,1,{},qwt),l.Ve=function(e,n){return L1n(this,u(e,42),u(n,176))},I(e0,"SuccessorCombination",782),D(649,1,{},Eh),l.Ve=function(e,n){var r;return U5n((r=u(e,42),u(n,176),r))},I(e0,"SuccessorJitter",649),D(648,1,{},Zc),l.Ve=function(e,n){var r;return Mkn((r=u(e,42),u(n,176),r))},I(e0,"SuccessorLineByLine",648),D(573,1,{},Qh),l.Ve=function(e,n){var r;return Uxn((r=u(e,42),u(n,176),r))},I(e0,"SuccessorManhattan",573),D(1344,1,{},Od),l.Ve=function(e,n){var r;return ekn((r=u(e,42),u(n,176),r))},I(e0,"SuccessorMaxNormWindingInMathPosSense",1344),D(409,1,{},L4),l.Ve=function(e,n){return kyt(this,e,n)},l.c=!1,l.d=!1,l.e=!1,l.f=!1,I(e0,"SuccessorQuadrantsGeneric",409),D(1345,1,{},cs),l.Kb=function(e){return u(e,334).a},I(e0,"SuccessorQuadrantsGeneric/lambda$0$Type",1345),D(332,22,{3:1,34:1,22:1,332:1},N$),l.a=!1;var jN,$N,zN,qN,r3e=Lr(AV,N8t,332,Pr,P1n,ton),i3e;D(1317,1,{}),l.Ib=function(){var e,n,r,s,o,h;for(r=" ",e=he(0),o=0;o=0?"b"+e+"["+_st(this.a)+"]":"b["+_st(this.a)+"]"):"b_"+Em(this)},I(dN,"FBendpoint",250),D(289,137,{3:1,289:1,96:1,137:1},mZt),l.Ib=function(){return _st(this)},I(dN,"FEdge",289),D(235,137,{3:1,235:1,96:1,137:1},mq);var c_n=I(dN,"FGraph",235);D(453,309,{3:1,453:1,309:1,96:1,137:1},yie),l.Ib=function(){return this.b==null||this.b.length==0?"l["+_st(this.a)+"]":"l_"+this.b},I(dN,"FLabel",453),D(153,309,{3:1,153:1,309:1,96:1,137:1},JQt),l.Ib=function(){return u3t(this)},l.a=0,I(dN,"FNode",153),D(2100,1,{}),l.vf=function(e){Ikt(this,e)},l.wf=function(){xhe(this)},l.d=0,I(H8t,"AbstractForceModel",2100),D(641,2100,{641:1},mce),l.uf=function(e,n){var r,s,o,h,d;return Yge(this.f,e,n),o=ia(Oa(n.d),e.d),d=b.Math.sqrt(o.a*o.a+o.b*o.b),s=b.Math.max(0,d-RS(e.e)/2-RS(n.e)/2),r=M1e(this.e,e,n),r>0?h=-cln(s,this.c)*r:h=Bsn(s,this.b)*u(X(e,(Vf(),jk)),17).a,qd(o,h/d),o},l.vf=function(e){Ikt(this,e),this.a=u(X(e,(Vf(),GU)),17).a,this.c=Rt(Ht(X(e,KU))),this.b=Rt(Ht(X(e,tft)))},l.xf=function(e){return e0&&(h-=Gnn(s,this.a)*r),qd(o,h*this.b/d),o},l.vf=function(e){var n,r,s,o,h,d,m;for(Ikt(this,e),this.b=Rt(Ht(X(e,(Vf(),eft)))),this.c=this.b/u(X(e,GU),17).a,s=e.e.c.length,h=0,o=0,m=new G(e.e);m.a0},l.a=0,l.b=0,l.c=0,I(H8t,"FruchtermanReingoldModel",642),D(860,1,uf,MC),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,MV),""),"Force Model"),"Determines the model for force calculation."),uCt),(Fp(),ts)),lCt),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,V8t),""),"Iterations"),"The number of iterations on the force model."),he(300)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,U8t),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Out),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),n0),Wa),zs),en(_n)))),Bs(e,Out,MV,T3e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Nut),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),Wa),zs),en(_n)))),Bs(e,Nut,MV,x3e),Bpe((new IC,e))};var m3e,v3e,uCt,y3e,x3e,k3e,E3e,T3e;I(K_,"ForceMetaDataProvider",860),D(432,22,{3:1,34:1,22:1,432:1},Vwt);var Zht,UU,lCt=Lr(K_,"ForceModelStrategy",432,Pr,Lhn,ron),C3e;D(Rp,1,uf,IC),l.hf=function(e){Bpe(e)};var S3e,_3e,hCt,GU,fCt,A3e,L3e,D3e,M3e,dCt,I3e,gCt,pCt,O3e,jk,N3e,tft,bCt,P3e,F3e,KU,eft,B3e,R3e,j3e,wCt,$3e;I(K_,"ForceOptions",Rp),D(1001,1,{},Pd),l.sf=function(){var e;return e=new V2t,e},l.tf=function(e){},I(K_,"ForceOptions/ForceFactory",1001);var UN,TA,$k,WU;D(861,1,uf,_j),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,K8t),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(Pn(),!1)),(Fp(),oa)),ys),en((D1(),Qs))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,W8t),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[f0]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Y8t),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),mCt),ts),CCt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,X8t),""),"Stress Epsilon"),"Termination criterion for the iterative process."),n0),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Q8t),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),he(xi)),ac),Ra),en(_n)))),hpe((new Aj,e))};var z3e,q3e,mCt,H3e,V3e,U3e;I(K_,"StressMetaDataProvider",861),D(1004,1,uf,Aj),l.hf=function(e){hpe(e)};var YU,vCt,yCt,xCt,kCt,ECt,G3e,K3e,W3e,Y3e,TCt,X3e;I(K_,"StressOptions",1004),D(1005,1,{},U1),l.sf=function(){var e;return e=new vZt,e},l.tf=function(e){},I(K_,"StressOptions/StressFactory",1005),D(1110,205,mw,vZt),l.rf=function(e,n){var r,s,o,h,d;for(n.Ug(c2e,1),Ie(Me(ne(e,(TO(),kCt))))?Ie(Me(ne(e,TCt)))||sq((r=new by((xy(),new my(e))),r)):Ade(new V2t,e,n.eh(1)),o=qce(e),s=yge(this.a,o),d=s.Kc();d.Ob();)h=u(d.Pb(),235),!(h.e.c.length<=1)&&(pTn(this.b,h),$xn(this.b),Cu(h.d,new Nd));o=Npe(s),Vpe(o),n.Vg()},I(NV,"StressLayoutProvider",1110),D(1111,1,ir,Nd),l.Cd=function(e){$kt(u(e,453))},I(NV,"StressLayoutProvider/lambda$0$Type",1111),D(1002,1,{},wKt),l.c=0,l.e=0,l.g=0,I(NV,"StressMajorization",1002),D(391,22,{3:1,34:1,22:1,391:1},vrt);var nft,rft,ift,CCt=Lr(NV,"StressMajorization/Dimension",391,Pr,Cfn,ion),Q3e;D(1003,1,Xr,e$),l.Ne=function(e,n){return Ian(this.a,u(e,153),u(n,153))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(NV,"StressMajorization/lambda$0$Type",1003),D(1192,1,{},Cre),I(Ok,"ElkLayered",1192),D(1193,1,ir,n$),l.Cd=function(e){p5n(this.a,u(e,36))},I(Ok,"ElkLayered/lambda$0$Type",1193),D(1194,1,ir,Pnt),l.Cd=function(e){Oan(this.a,u(e,36))},I(Ok,"ElkLayered/lambda$1$Type",1194),D(1281,1,{},cJt);var J3e,Z3e,t4e;I(Ok,"GraphConfigurator",1281),D(770,1,ir,lp),l.Cd=function(e){Nfe(this.a,u(e,10))},I(Ok,"GraphConfigurator/lambda$0$Type",770),D(771,1,{},p4),l.Kb=function(e){return Dxt(),new ln(null,new gn(u(e,30).a,16))},I(Ok,"GraphConfigurator/lambda$1$Type",771),D(772,1,ir,$C),l.Cd=function(e){Nfe(this.a,u(e,10))},I(Ok,"GraphConfigurator/lambda$2$Type",772),D(1109,205,mw,EKt),l.rf=function(e,n){var r;r=Y7n(new CKt,e),$t(ne(e,(De(),A3)))===$t((Ag(),Xp))?_2n(this.a,r,n):Fxn(this.a,r,n),n.$g()||_pe(new d6,r)},I(Ok,"LayeredLayoutProvider",1109),D(367,22,{3:1,34:1,22:1,367:1},qM);var Wf,H0,Qc,cu,Zo,SCt=Lr(Ok,"LayeredPhases",367,Pr,Ldn,son),e4e;D(1717,1,{},Foe),l.i=0;var n4e;I(vN,"ComponentsToCGraphTransformer",1717);var r4e;D(1718,1,{},N2),l.yf=function(e,n){return b.Math.min(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},l.zf=function(e,n){return b.Math.min(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},I(vN,"ComponentsToCGraphTransformer/1",1718),D(86,1,{86:1}),l.i=0,l.k=!0,l.o=Vs;var sft=I(Q_,"CNode",86);D(469,86,{469:1,86:1},Wmt,ixt),l.Ib=function(){return""},I(vN,"ComponentsToCGraphTransformer/CRectNode",469),D(1688,1,{},I8);var aft,oft;I(vN,"OneDimensionalComponentsCompaction",1688),D(1689,1,{},im),l.Kb=function(e){return bfn(u(e,42))},l.Fb=function(e){return this===e},I(vN,"OneDimensionalComponentsCompaction/lambda$0$Type",1689),D(1690,1,{},Gx),l.Kb=function(e){return L2n(u(e,42))},l.Fb=function(e){return this===e},I(vN,"OneDimensionalComponentsCompaction/lambda$1$Type",1690),D(1720,1,{},Iee),I(Q_,"CGraph",1720),D(194,1,{194:1},Zat),l.b=0,l.c=0,l.e=0,l.g=!0,l.i=Vs,I(Q_,"CGroup",194),D(1719,1,{},hb),l.yf=function(e,n){return b.Math.max(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},l.zf=function(e,n){return b.Math.max(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},I(Q_,Pbe,1719),D(1721,1,{},O1e),l.d=!1;var i4e,cft=I(Q_,Rbe,1721);D(1722,1,{},Kx),l.Kb=function(e){return Mwt(),Pn(),u(u(e,42).a,86).d.e!=0},l.Fb=function(e){return this===e},I(Q_,jbe,1722),D(833,1,{},syt),l.a=!1,l.b=!1,l.c=!1,l.d=!1,I(Q_,$be,833),D(1898,1,{},Wte),I(PV,zbe,1898);var GN=os(yw,Obe);D(1899,1,{382:1},Ane),l.bf=function(e){Vkn(this,u(e,475))},I(PV,qbe,1899),D(Wb,1,Xr,b4),l.Ne=function(e,n){return Zln(u(e,86),u(n,86))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(PV,Hbe,Wb),D(475,1,{475:1},Gwt),l.a=!1,I(PV,Vbe,475),D(1901,1,Xr,ay),l.Ne=function(e,n){return tyn(u(e,475),u(n,475))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(PV,Ube,1901),D(148,1,{148:1},kE,qvt),l.Fb=function(e){var n;return e==null||u_n!=Wl(e)?!1:(n=u(e,148),Nc(this.c,n.c)&&Nc(this.d,n.d))},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[this.c,this.d]))},l.Ib=function(){return"("+this.c+ao+this.d+(this.a?"cx":"")+this.b+")"},l.a=!0,l.c=0,l.d=0;var u_n=I(yw,"Point",148);D(416,22,{3:1,34:1,22:1,416:1},F$);var bv,v3,F5,y3,s4e=Lr(yw,"Point/Quadrant",416,Pr,R1n,aon),a4e;D(1708,1,{},xKt),l.b=null,l.c=null,l.d=null,l.e=null,l.f=null;var o4e,c4e,u4e,l4e,h4e;I(yw,"RectilinearConvexHull",1708),D(583,1,{382:1},_H),l.bf=function(e){A0n(this,u(e,148))},l.b=0;var _Ct;I(yw,"RectilinearConvexHull/MaximalElementsEventHandler",583),D(1710,1,Xr,sp),l.Ne=function(e,n){return thn(Ht(e),Ht(n))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1710),D(1709,1,{382:1},Jae),l.bf=function(e){skn(this,u(e,148))},l.a=0,l.b=null,l.c=null,l.d=null,l.e=null,I(yw,"RectilinearConvexHull/RectangleEventHandler",1709),D(1711,1,Xr,BD),l.Ne=function(e,n){return c1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$0$Type",1711),D(1712,1,Xr,$X),l.Ne=function(e,n){return u1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$1$Type",1712),D(1713,1,Xr,P2),l.Ne=function(e,n){return o1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$2$Type",1713),D(1714,1,Xr,Gc),l.Ne=function(e,n){return l1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$3$Type",1714),D(1715,1,Xr,zX),l.Ne=function(e,n){return z3n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$4$Type",1715),D(1716,1,{},rre),I(yw,"Scanline",1716),D(2104,1,{}),I(pd,"AbstractGraphPlacer",2104),D(335,1,{335:1},VJt),l.Ff=function(e){return this.Gf(e)?(dn(this.b,u(X(e,(oe(),$g)),21),e),!0):!1},l.Gf=function(e){var n,r,s,o;for(n=u(X(e,(oe(),$g)),21),o=u(Ai(Ri,n),21),s=o.Kc();s.Ob();)if(r=u(s.Pb(),21),!u(Ai(this.b,r),15).dc())return!1;return!0};var Ri;I(pd,"ComponentGroup",335),D(779,2104,{},K2t),l.Hf=function(e){var n,r;for(r=new G(this.a);r.ar&&(A=0,P+=m+s,m=0),k=h.c,B7(h,A+k.a,P+k.b),k1(k),o=b.Math.max(o,A+T.a),m=b.Math.max(m,T.b),A+=T.a+s;n.f.a=o,n.f.b=P+m},l.Jf=function(e,n){var r,s,o,h,d;if($t(X(n,(De(),_3)))===$t((lw(),x3))){for(s=e.Kc();s.Ob();){for(r=u(s.Pb(),36),d=0,h=new G(r.a);h.ar&&!u(X(h,(oe(),$g)),21).Hc((ve(),Hn))||k&&u(X(k,(oe(),$g)),21).Hc((ve(),Jn))||u(X(h,(oe(),$g)),21).Hc((ve(),Gn)))&&($=P,U+=m+s,m=0),T=h.c,u(X(h,(oe(),$g)),21).Hc((ve(),Hn))&&($=o+s),B7(h,$+T.a,U+T.b),o=b.Math.max(o,$+A.a),u(X(h,$g),21).Hc(Er)&&(P=b.Math.max(P,$+A.a+s)),k1(T),m=b.Math.max(m,A.b),$+=A.a+s,k=h;n.f.a=o,n.f.b=U+m},l.Jf=function(e,n){},I(pd,"ModelOrderRowGraphPlacer",1313),D(1311,1,Xr,IB),l.Ne=function(e,n){return _pn(u(e,36),u(n,36))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(pd,"SimpleRowGraphPlacer/1",1311);var d4e;D(1280,1,t0,p1),l.Lb=function(e){var n;return n=u(X(u(e,249).b,(De(),Vo)),75),!!n&&n.b!=0},l.Fb=function(e){return this===e},l.Mb=function(e){var n;return n=u(X(u(e,249).b,(De(),Vo)),75),!!n&&n.b!=0},I(FV,"CompoundGraphPostprocessor/1",1280),D(1279,1,zi,SKt),l.Kf=function(e,n){ehe(this,u(e,36),n)},I(FV,"CompoundGraphPreprocessor",1279),D(452,1,{452:1},Uue),l.c=!1,I(FV,"CompoundGraphPreprocessor/ExternalPort",452),D(249,1,{249:1},wz),l.Ib=function(){return cit(this.c)+":"+_1e(this.b)},I(FV,"CrossHierarchyEdge",249),D(777,1,Xr,_M),l.Ne=function(e,n){return Avn(this,u(e,249),u(n,249))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(FV,"CrossHierarchyEdgeComparator",777),D(304,137,{3:1,304:1,96:1,137:1}),l.p=0,I(au,"LGraphElement",304),D(18,304,{3:1,18:1,304:1,96:1,137:1},Pm),l.Ib=function(){return _1e(this)};var hft=I(au,"LEdge",18);D(36,304,{3:1,20:1,36:1,304:1,96:1,137:1},y4t),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return new G(this.b)},l.Ib=function(){return this.b.c.length==0?"G-unlayered"+Hb(this.a):this.a.c.length==0?"G-layered"+Hb(this.b):"G[layerless"+Hb(this.a)+", layers"+Hb(this.b)+"]"};var g4e=I(au,"LGraph",36),p4e;D(666,1,{}),l.Lf=function(){return this.e.n},l.of=function(e){return X(this.e,e)},l.Mf=function(){return this.e.o},l.Nf=function(){return this.e.p},l.pf=function(e){return qi(this.e,e)},l.Of=function(e){this.e.n.a=e.a,this.e.n.b=e.b},l.Pf=function(e){this.e.o.a=e.a,this.e.o.b=e.b},l.Qf=function(e){this.e.p=e},I(au,"LGraphAdapters/AbstractLShapeAdapter",666),D(473,1,{853:1},z2),l.Rf=function(){var e,n;if(!this.b)for(this.b=C0(this.a.b.c.length),n=new G(this.a.b);n.a0&&kue((qn(n-1,e.length),e.charCodeAt(n-1)),g2e);)--n;if(h> ",e),BH(r)),ni(tu((e.a+="[",e),r.i),"]")),e.a},l.c=!0,l.d=!1;var ICt,OCt,NCt,PCt,FCt,BCt,w4e=I(au,"LPort",12);D(408,1,F0,D4),l.Jc=function(e){Fa(this,e)},l.Kc=function(){var e;return e=new G(this.a.e),new yVt(e)},I(au,"LPort/1",408),D(1309,1,wa,yVt),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(et(this.a),18).c},l.Ob=function(){return lc(this.a)},l.Qb=function(){PS(this.a)},I(au,"LPort/1/1",1309),D(369,1,F0,k6),l.Jc=function(e){Fa(this,e)},l.Kc=function(){var e;return e=new G(this.a.g),new M2t(e)},I(au,"LPort/2",369),D(776,1,wa,M2t),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(et(this.a),18).d},l.Ob=function(){return lc(this.a)},l.Qb=function(){PS(this.a)},I(au,"LPort/2/1",776),D(1302,1,F0,uXt),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return new sd(this)},I(au,"LPort/CombineIter",1302),D(208,1,wa,sd),l.Nb=function(e){Na(this,e)},l.Qb=function(){zWt()},l.Ob=function(){return TS(this)},l.Pb=function(){return lc(this.a)?et(this.a):et(this.b)},I(au,"LPort/CombineIter/1",208),D(1303,1,t0,fb),l.Lb=function(e){return cee(e)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).g.c.length!=0},I(au,"LPort/lambda$0$Type",1303),D(1304,1,t0,cy),l.Lb=function(e){return uee(e)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).e.c.length!=0},I(au,"LPort/lambda$1$Type",1304),D(1305,1,t0,HX),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Hn)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Hn)},I(au,"LPort/lambda$2$Type",1305),D(1306,1,t0,F2),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Jn)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Jn)},I(au,"LPort/lambda$3$Type",1306),D(1307,1,t0,VX),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Er)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Er)},I(au,"LPort/lambda$4$Type",1307),D(1308,1,t0,UX),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Gn)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Gn)},I(au,"LPort/lambda$5$Type",1308),D(30,304,{3:1,20:1,304:1,30:1,96:1,137:1},eu),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return new G(this.a)},l.Ib=function(){return"L_"+Xo(this.b.b,this,0)+Hb(this.a)},I(au,"Layer",30),D(1330,1,{},CKt),I($p,m2e,1330),D(1334,1,{},Wx),l.Kb=function(e){return Jo(u(e,84))},I($p,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1334),D(1337,1,{},K9),l.Kb=function(e){return Jo(u(e,84))},I($p,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1337),D(1331,1,ir,xVt),l.Cd=function(e){V1e(this.a,u(e,123))},I($p,q8t,1331),D(1332,1,ir,kVt),l.Cd=function(e){V1e(this.a,u(e,123))},I($p,v2e,1332),D(1333,1,{},NB),l.Kb=function(e){return new ln(null,new gn(zyt(u(e,74)),16))},I($p,y2e,1333),D(1335,1,Kr,EVt),l.Mb=function(e){return Min(this.a,u(e,27))},I($p,x2e,1335),D(1336,1,{},O8),l.Kb=function(e){return new ln(null,new gn(Wln(u(e,74)),16))},I($p,"ElkGraphImporter/lambda$5$Type",1336),D(1338,1,Kr,TVt),l.Mb=function(e){return Iin(this.a,u(e,27))},I($p,"ElkGraphImporter/lambda$7$Type",1338),D(1339,1,Kr,GX),l.Mb=function(e){return chn(u(e,74))},I($p,"ElkGraphImporter/lambda$8$Type",1339),D(1297,1,{},d6);var m4e;I($p,"ElkGraphLayoutTransferrer",1297),D(1298,1,Kr,CVt),l.Mb=function(e){return yan(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$0$Type",1298),D(1299,1,ir,SVt),l.Cd=function(e){$M(),ge(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$1$Type",1299),D(1300,1,Kr,_Vt),l.Mb=function(e){return san(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$2$Type",1300),D(1301,1,ir,AVt),l.Cd=function(e){$M(),ge(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$3$Type",1301),D(819,1,{},wvt),I(Yn,"BiLinkedHashMultiMap",819),D(1550,1,zi,N8),l.Kf=function(e,n){Kgn(u(e,36),n)},I(Yn,"CommentNodeMarginCalculator",1550),D(1551,1,{},KX),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"CommentNodeMarginCalculator/lambda$0$Type",1551),D(1552,1,ir,WX),l.Cd=function(e){K7n(u(e,10))},I(Yn,"CommentNodeMarginCalculator/lambda$1$Type",1552),D(1553,1,zi,YX),l.Kf=function(e,n){Qkn(u(e,36),n)},I(Yn,"CommentPostprocessor",1553),D(1554,1,zi,XX),l.Kf=function(e,n){vCn(u(e,36),n)},I(Yn,"CommentPreprocessor",1554),D(1555,1,zi,QX),l.Kf=function(e,n){gkn(u(e,36),n)},I(Yn,"ConstraintsPostprocessor",1555),D(1556,1,zi,JX),l.Kf=function(e,n){xpn(u(e,36),n)},I(Yn,"EdgeAndLayerConstraintEdgeReverser",1556),D(1557,1,zi,ZX),l.Kf=function(e,n){hwn(u(e,36),n)},I(Yn,"EndLabelPostprocessor",1557),D(1558,1,{},tQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"EndLabelPostprocessor/lambda$0$Type",1558),D(1559,1,Kr,eQ),l.Mb=function(e){return Sdn(u(e,10))},I(Yn,"EndLabelPostprocessor/lambda$1$Type",1559),D(1560,1,ir,nQ),l.Cd=function(e){eyn(u(e,10))},I(Yn,"EndLabelPostprocessor/lambda$2$Type",1560),D(1561,1,zi,rQ),l.Kf=function(e,n){H4n(u(e,36),n)},I(Yn,"EndLabelPreprocessor",1561),D(1562,1,{},RD),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"EndLabelPreprocessor/lambda$0$Type",1562),D(1563,1,ir,XZt),l.Cd=function(e){Vrn(this.a,this.b,this.c,u(e,10))},l.a=0,l.b=0,l.c=!1,I(Yn,"EndLabelPreprocessor/lambda$1$Type",1563),D(1564,1,Kr,iQ),l.Mb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),KT))},I(Yn,"EndLabelPreprocessor/lambda$2$Type",1564),D(1565,1,ir,LVt),l.Cd=function(e){Zr(this.a,u(e,72))},I(Yn,"EndLabelPreprocessor/lambda$3$Type",1565),D(1566,1,Kr,sQ),l.Mb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),$3))},I(Yn,"EndLabelPreprocessor/lambda$4$Type",1566),D(1567,1,ir,DVt),l.Cd=function(e){Zr(this.a,u(e,72))},I(Yn,"EndLabelPreprocessor/lambda$5$Type",1567),D(1615,1,zi,Uet),l.Kf=function(e,n){l2n(u(e,36),n)};var v4e;I(Yn,"EndLabelSorter",1615),D(1616,1,Xr,W9),l.Ne=function(e,n){return Hwn(u(e,465),u(n,465))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"EndLabelSorter/1",1616),D(465,1,{465:1},kne),I(Yn,"EndLabelSorter/LabelGroup",465),D(1617,1,{},PB),l.Kb=function(e){return jM(),new ln(null,new gn(u(e,30).a,16))},I(Yn,"EndLabelSorter/lambda$0$Type",1617),D(1618,1,Kr,Yx),l.Mb=function(e){return jM(),u(e,10).k==(Un(),xs)},I(Yn,"EndLabelSorter/lambda$1$Type",1618),D(1619,1,ir,aQ),l.Cd=function(e){r4n(u(e,10))},I(Yn,"EndLabelSorter/lambda$2$Type",1619),D(1620,1,Kr,oQ),l.Mb=function(e){return jM(),$t(X(u(e,72),(De(),l0)))===$t((cd(),$3))},I(Yn,"EndLabelSorter/lambda$3$Type",1620),D(1621,1,Kr,cQ),l.Mb=function(e){return jM(),$t(X(u(e,72),(De(),l0)))===$t((cd(),KT))},I(Yn,"EndLabelSorter/lambda$4$Type",1621),D(1568,1,zi,uQ),l.Kf=function(e,n){cTn(this,u(e,36))},l.b=0,l.c=0,I(Yn,"FinalSplineBendpointsCalculator",1568),D(1569,1,{},lQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"FinalSplineBendpointsCalculator/lambda$0$Type",1569),D(1570,1,{},Y9),l.Kb=function(e){return new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Yn,"FinalSplineBendpointsCalculator/lambda$1$Type",1570),D(1571,1,Kr,jD),l.Mb=function(e){return!go(u(e,18))},I(Yn,"FinalSplineBendpointsCalculator/lambda$2$Type",1571),D(1572,1,Kr,FB),l.Mb=function(e){return qi(u(e,18),(oe(),Lw))},I(Yn,"FinalSplineBendpointsCalculator/lambda$3$Type",1572),D(1573,1,ir,MVt),l.Cd=function(e){wEn(this.a,u(e,131))},I(Yn,"FinalSplineBendpointsCalculator/lambda$4$Type",1573),D(1574,1,ir,w4),l.Cd=function(e){IO(u(e,18).a)},I(Yn,"FinalSplineBendpointsCalculator/lambda$5$Type",1574),D(803,1,zi,I2t),l.Kf=function(e,n){e9n(this,u(e,36),n)},I(Yn,"GraphTransformer",803),D(517,22,{3:1,34:1,22:1,517:1},Uwt);var dft,KN,y4e=Lr(Yn,"GraphTransformer/Mode",517,Pr,Dhn,hcn),x4e;D(1575,1,zi,m4),l.Kf=function(e,n){E6n(u(e,36),n)},I(Yn,"HierarchicalNodeResizingProcessor",1575),D(1576,1,zi,hQ),l.Kf=function(e,n){qgn(u(e,36),n)},I(Yn,"HierarchicalPortConstraintProcessor",1576),D(1577,1,Xr,Lf),l.Ne=function(e,n){return lmn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"HierarchicalPortConstraintProcessor/NodeComparator",1577),D(1578,1,zi,Xx),l.Kf=function(e,n){h7n(u(e,36),n)},I(Yn,"HierarchicalPortDummySizeProcessor",1578),D(1579,1,zi,fQ),l.Kf=function(e,n){x8n(this,u(e,36),n)},l.a=0,I(Yn,"HierarchicalPortOrthogonalEdgeRouter",1579),D(1580,1,Xr,P8),l.Ne=function(e,n){return Esn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"HierarchicalPortOrthogonalEdgeRouter/1",1580),D(1581,1,Xr,v0),l.Ne=function(e,n){return L0n(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"HierarchicalPortOrthogonalEdgeRouter/2",1581),D(1582,1,zi,dQ),l.Kf=function(e,n){R3n(u(e,36),n)},I(Yn,"HierarchicalPortPositionProcessor",1582),D(1583,1,zi,om),l.Kf=function(e,n){tSn(this,u(e,36))},l.a=0,l.c=0;var XU,QU;I(Yn,"HighDegreeNodeLayeringProcessor",1583),D(580,1,{580:1},gQ),l.b=-1,l.d=-1,I(Yn,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",580),D(1584,1,{},pQ),l.Kb=function(e){return gI(),ua(u(e,10))},l.Fb=function(e){return this===e},I(Yn,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1584),D(1585,1,{},BB),l.Kb=function(e){return gI(),_s(u(e,10))},l.Fb=function(e){return this===e},I(Yn,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1585),D(1591,1,zi,bQ),l.Kf=function(e,n){r7n(this,u(e,36),n)},I(Yn,"HyperedgeDummyMerger",1591),D(804,1,{},Ivt),l.a=!1,l.b=!1,l.c=!1,I(Yn,"HyperedgeDummyMerger/MergeState",804),D(1592,1,{},X9),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"HyperedgeDummyMerger/lambda$0$Type",1592),D(1593,1,{},Q9),l.Kb=function(e){return new ln(null,new gn(u(e,10).j,16))},I(Yn,"HyperedgeDummyMerger/lambda$1$Type",1593),D(1594,1,ir,RB),l.Cd=function(e){u(e,12).p=-1},I(Yn,"HyperedgeDummyMerger/lambda$2$Type",1594),D(1595,1,zi,$D),l.Kf=function(e,n){e7n(u(e,36),n)},I(Yn,"HypernodesProcessor",1595),D(1596,1,zi,Qx),l.Kf=function(e,n){l7n(u(e,36),n)},I(Yn,"InLayerConstraintProcessor",1596),D(1597,1,zi,wQ),l.Kf=function(e,n){rpn(u(e,36),n)},I(Yn,"InnermostNodeMarginCalculator",1597),D(1598,1,zi,jB),l.Kf=function(e,n){pCn(this,u(e,36))},l.a=Vs,l.b=Vs,l.c=Zi,l.d=Zi;var l_n=I(Yn,"InteractiveExternalPortPositioner",1598);D(1599,1,{},$B),l.Kb=function(e){return u(e,18).d.i},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$0$Type",1599),D(1600,1,{},IVt),l.Kb=function(e){return Tsn(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$1$Type",1600),D(1601,1,{},mQ),l.Kb=function(e){return u(e,18).c.i},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$2$Type",1601),D(1602,1,{},OVt),l.Kb=function(e){return Csn(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$3$Type",1602),D(1603,1,{},NVt),l.Kb=function(e){return kan(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$4$Type",1603),D(1604,1,{},PVt),l.Kb=function(e){return Ean(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$5$Type",1604),D(81,22,{3:1,34:1,22:1,81:1,196:1},Ns),l.dg=function(){switch(this.g){case 15:return new pR;case 22:return new MJ;case 47:return new NJ;case 28:case 35:return new CQ;case 32:return new N8;case 42:return new YX;case 1:return new XX;case 41:return new QX;case 56:return new I2t((r7(),KN));case 0:return new I2t((r7(),dft));case 2:return new JX;case 54:return new ZX;case 33:return new rQ;case 51:return new uQ;case 55:return new m4;case 13:return new hQ;case 38:return new Xx;case 44:return new fQ;case 40:return new dQ;case 9:return new om;case 49:return new PJt;case 37:return new bQ;case 43:return new $D;case 27:return new Qx;case 30:return new wQ;case 3:return new jB;case 18:return new yQ;case 29:return new xQ;case 5:return new nE;case 50:return new vQ;case 34:return new Lj;case 36:return new v4;case 52:return new Uet;case 11:return new F8;case 7:return new Get;case 39:return new zD;case 45:return new uy;case 16:return new B8;case 10:return new _Xt;case 48:return new zB;case 21:return new qD;case 23:return new Xnt((Hm(),UA));case 8:return new HD;case 12:return new _Q;case 4:return new VD;case 19:return new Ij;case 17:return new IQ;case 53:return new OQ;case 6:return new WB;case 25:return new AKt;case 46:return new BQ;case 31:return new EZt;case 14:return new UQ;case 26:return new BJ;case 20:return new JB;case 24:return new Xnt((Hm(),eK));default:throw at(new zn(jut+(this.f!=null?this.f:""+this.g)))}};var RCt,jCt,$Ct,zCt,qCt,HCt,VCt,UCt,GCt,KCt,B5,JU,ZU,WCt,YCt,XCt,QCt,JCt,ZCt,tSt,CA,eSt,nSt,rSt,iSt,sSt,gft,tG,eG,aSt,nG,rG,iG,vT,k3,E3,oSt,sG,aG,cSt,oG,cG,uSt,lSt,hSt,fSt,uG,pft,WN,lG,hG,fG,dG,dSt,gSt,pSt,bSt,h_n=Lr(Yn,$ut,81,Pr,Bde,lon),k4e;D(1605,1,zi,yQ),l.Kf=function(e,n){dCn(u(e,36),n)},I(Yn,"InvertedPortProcessor",1605),D(1606,1,zi,xQ),l.Kf=function(e,n){uEn(u(e,36),n)},I(Yn,"LabelAndNodeSizeProcessor",1606),D(1607,1,Kr,kQ),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"LabelAndNodeSizeProcessor/lambda$0$Type",1607),D(1608,1,Kr,EQ),l.Mb=function(e){return u(e,10).k==(Un(),Ms)},I(Yn,"LabelAndNodeSizeProcessor/lambda$1$Type",1608),D(1609,1,ir,QZt),l.Cd=function(e){Urn(this.b,this.a,this.c,u(e,10))},l.a=!1,l.c=!1,I(Yn,"LabelAndNodeSizeProcessor/lambda$2$Type",1609),D(1610,1,zi,nE),l.Kf=function(e,n){j9n(u(e,36),n)};var E4e;I(Yn,"LabelDummyInserter",1610),D(1611,1,t0,y0),l.Lb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),GT))},l.Fb=function(e){return this===e},l.Mb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),GT))},I(Yn,"LabelDummyInserter/1",1611),D(1612,1,zi,vQ),l.Kf=function(e,n){_9n(u(e,36),n)},I(Yn,"LabelDummyRemover",1612),D(1613,1,Kr,sm),l.Mb=function(e){return Ie(Me(X(u(e,72),(De(),r1t))))},I(Yn,"LabelDummyRemover/lambda$0$Type",1613),D(1378,1,zi,Lj),l.Kf=function(e,n){v9n(this,u(e,36),n)},l.a=null;var bft;I(Yn,"LabelDummySwitcher",1378),D(292,1,{292:1},F0e),l.c=0,l.d=null,l.f=0,I(Yn,"LabelDummySwitcher/LabelDummyInfo",292),D(1379,1,{},TQ),l.Kb=function(e){return ok(),new ln(null,new gn(u(e,30).a,16))},I(Yn,"LabelDummySwitcher/lambda$0$Type",1379),D(1380,1,Kr,J9),l.Mb=function(e){return ok(),u(e,10).k==(Un(),Vc)},I(Yn,"LabelDummySwitcher/lambda$1$Type",1380),D(1381,1,{},FVt),l.Kb=function(e){return aan(this.a,u(e,10))},I(Yn,"LabelDummySwitcher/lambda$2$Type",1381),D(1382,1,ir,BVt),l.Cd=function(e){Sln(this.a,u(e,292))},I(Yn,"LabelDummySwitcher/lambda$3$Type",1382),D(1383,1,Xr,Z9),l.Ne=function(e,n){return Xun(u(e,292),u(n,292))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"LabelDummySwitcher/lambda$4$Type",1383),D(802,1,zi,CQ),l.Kf=function(e,n){c0n(u(e,36),n)},I(Yn,"LabelManagementProcessor",802),D(1614,1,zi,v4),l.Kf=function(e,n){jkn(u(e,36),n)},I(Yn,"LabelSideSelector",1614),D(1622,1,zi,F8),l.Kf=function(e,n){S7n(u(e,36),n)},I(Yn,"LayerConstraintPostprocessor",1622),D(1623,1,zi,Get),l.Kf=function(e,n){xxn(u(e,36),n)};var wSt;I(Yn,"LayerConstraintPreprocessor",1623),D(371,22,{3:1,34:1,22:1,371:1},R$);var YN,gG,pG,wft,T4e=Lr(Yn,"LayerConstraintPreprocessor/HiddenNodeConnections",371,Pr,$1n,hon),C4e;D(1624,1,zi,zD),l.Kf=function(e,n){HTn(u(e,36),n)},I(Yn,"LayerSizeAndGraphHeightCalculator",1624),D(1625,1,zi,uy),l.Kf=function(e,n){T6n(u(e,36),n)},I(Yn,"LongEdgeJoiner",1625),D(1626,1,zi,B8),l.Kf=function(e,n){vTn(u(e,36),n)},I(Yn,"LongEdgeSplitter",1626),D(1627,1,zi,_Xt),l.Kf=function(e,n){tCn(this,u(e,36),n)},l.e=0,l.f=0,l.j=0,l.k=0,l.n=0,l.o=0;var S4e,_4e;I(Yn,"NodePromotion",1627),D(1628,1,Xr,SQ),l.Ne=function(e,n){return dbn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"NodePromotion/1",1628),D(1629,1,Xr,tC),l.Ne=function(e,n){return gbn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"NodePromotion/2",1629),D(1630,1,{},Fd),l.Kb=function(e){return u(e,42),vz(),Pn(),!0},l.Fb=function(e){return this===e},I(Yn,"NodePromotion/lambda$0$Type",1630),D(1631,1,{},zVt),l.Kb=function(e){return ufn(this.a,u(e,42))},l.Fb=function(e){return this===e},l.a=0,I(Yn,"NodePromotion/lambda$1$Type",1631),D(1632,1,{},qVt),l.Kb=function(e){return cfn(this.a,u(e,42))},l.Fb=function(e){return this===e},l.a=0,I(Yn,"NodePromotion/lambda$2$Type",1632),D(1633,1,zi,zB),l.Kf=function(e,n){WCn(u(e,36),n)},I(Yn,"NorthSouthPortPostprocessor",1633),D(1634,1,zi,qD),l.Kf=function(e,n){ACn(u(e,36),n)},I(Yn,"NorthSouthPortPreprocessor",1634),D(1635,1,Xr,R8),l.Ne=function(e,n){return Apn(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"NorthSouthPortPreprocessor/lambda$0$Type",1635),D(1636,1,zi,HD),l.Kf=function(e,n){VEn(u(e,36),n)},I(Yn,"PartitionMidprocessor",1636),D(1637,1,Kr,qB),l.Mb=function(e){return qi(u(e,10),(De(),OT))},I(Yn,"PartitionMidprocessor/lambda$0$Type",1637),D(1638,1,ir,HVt),l.Cd=function(e){uhn(this.a,u(e,10))},I(Yn,"PartitionMidprocessor/lambda$1$Type",1638),D(1639,1,zi,_Q),l.Kf=function(e,n){U6n(u(e,36),n)},I(Yn,"PartitionPostprocessor",1639),D(1640,1,zi,VD),l.Kf=function(e,n){sxn(u(e,36),n)},I(Yn,"PartitionPreprocessor",1640),D(1641,1,Kr,AQ),l.Mb=function(e){return qi(u(e,10),(De(),OT))},I(Yn,"PartitionPreprocessor/lambda$0$Type",1641),D(1642,1,{},LQ),l.Kb=function(e){return new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Yn,"PartitionPreprocessor/lambda$1$Type",1642),D(1643,1,Kr,HB),l.Mb=function(e){return Ywn(u(e,18))},I(Yn,"PartitionPreprocessor/lambda$2$Type",1643),D(1644,1,ir,Jx),l.Cd=function(e){Upn(u(e,18))},I(Yn,"PartitionPreprocessor/lambda$3$Type",1644),D(1645,1,zi,Ij),l.Kf=function(e,n){TEn(u(e,36),n)};var mSt,A4e,L4e,D4e,vSt,ySt;I(Yn,"PortListSorter",1645),D(1648,1,Xr,VB),l.Ne=function(e,n){return Sie(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"PortListSorter/lambda$0$Type",1648),D(1650,1,Xr,Zx),l.Ne=function(e,n){return age(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"PortListSorter/lambda$1$Type",1650),D(1646,1,{},DQ),l.Kb=function(e){return g7(),u(e,12).e},I(Yn,"PortListSorter/lambda$2$Type",1646),D(1647,1,{},UD),l.Kb=function(e){return g7(),u(e,12).g},I(Yn,"PortListSorter/lambda$3$Type",1647),D(1649,1,Xr,MQ),l.Ne=function(e,n){return vvn(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"PortListSorter/lambda$4$Type",1649),D(1651,1,zi,IQ),l.Kf=function(e,n){Nxn(u(e,36),n)},I(Yn,"PortSideProcessor",1651),D(1652,1,zi,OQ),l.Kf=function(e,n){P8n(u(e,36),n)},I(Yn,"ReversedEdgeRestorer",1652),D(1657,1,zi,AKt),l.Kf=function(e,n){evn(this,u(e,36),n)},I(Yn,"SelfLoopPortRestorer",1657),D(1658,1,{},NQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"SelfLoopPortRestorer/lambda$0$Type",1658),D(1659,1,Kr,UB),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SelfLoopPortRestorer/lambda$1$Type",1659),D(1660,1,Kr,PQ),l.Mb=function(e){return qi(u(e,10),(oe(),kv))},I(Yn,"SelfLoopPortRestorer/lambda$2$Type",1660),D(1661,1,{},FQ),l.Kb=function(e){return u(X(u(e,10),(oe(),kv)),337)},I(Yn,"SelfLoopPortRestorer/lambda$3$Type",1661),D(1662,1,ir,jVt),l.Cd=function(e){b4n(this.a,u(e,337))},I(Yn,"SelfLoopPortRestorer/lambda$4$Type",1662),D(805,1,ir,GB),l.Cd=function(e){L4n(u(e,105))},I(Yn,"SelfLoopPortRestorer/lambda$5$Type",805),D(1663,1,zi,BQ),l.Kf=function(e,n){omn(u(e,36),n)},I(Yn,"SelfLoopPostProcessor",1663),D(1664,1,{},RQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"SelfLoopPostProcessor/lambda$0$Type",1664),D(1665,1,Kr,jQ),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SelfLoopPostProcessor/lambda$1$Type",1665),D(1666,1,Kr,$Q),l.Mb=function(e){return qi(u(e,10),(oe(),kv))},I(Yn,"SelfLoopPostProcessor/lambda$2$Type",1666),D(1667,1,ir,KB),l.Cd=function(e){myn(u(e,10))},I(Yn,"SelfLoopPostProcessor/lambda$3$Type",1667),D(1668,1,{},zQ),l.Kb=function(e){return new ln(null,new gn(u(e,105).f,1))},I(Yn,"SelfLoopPostProcessor/lambda$4$Type",1668),D(1669,1,ir,RVt),l.Cd=function(e){V1n(this.a,u(e,340))},I(Yn,"SelfLoopPostProcessor/lambda$5$Type",1669),D(1670,1,Kr,qQ),l.Mb=function(e){return!!u(e,105).i},I(Yn,"SelfLoopPostProcessor/lambda$6$Type",1670),D(1671,1,ir,$Vt),l.Cd=function(e){Vnn(this.a,u(e,105))},I(Yn,"SelfLoopPostProcessor/lambda$7$Type",1671),D(1653,1,zi,WB),l.Kf=function(e,n){u6n(u(e,36),n)},I(Yn,"SelfLoopPreProcessor",1653),D(1654,1,{},YB),l.Kb=function(e){return new ln(null,new gn(u(e,105).f,1))},I(Yn,"SelfLoopPreProcessor/lambda$0$Type",1654),D(1655,1,{},XB),l.Kb=function(e){return u(e,340).a},I(Yn,"SelfLoopPreProcessor/lambda$1$Type",1655),D(1656,1,ir,HQ),l.Cd=function(e){Kin(u(e,18))},I(Yn,"SelfLoopPreProcessor/lambda$2$Type",1656),D(1672,1,zi,EZt),l.Kf=function(e,n){Q3n(this,u(e,36),n)},I(Yn,"SelfLoopRouter",1672),D(1673,1,{},VQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"SelfLoopRouter/lambda$0$Type",1673),D(1674,1,Kr,j8),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SelfLoopRouter/lambda$1$Type",1674),D(1675,1,Kr,t6),l.Mb=function(e){return qi(u(e,10),(oe(),kv))},I(Yn,"SelfLoopRouter/lambda$2$Type",1675),D(1676,1,{},eC),l.Kb=function(e){return u(X(u(e,10),(oe(),kv)),337)},I(Yn,"SelfLoopRouter/lambda$3$Type",1676),D(1677,1,ir,oXt),l.Cd=function(e){rhn(this.a,this.b,u(e,337))},I(Yn,"SelfLoopRouter/lambda$4$Type",1677),D(1678,1,zi,UQ),l.Kf=function(e,n){_kn(u(e,36),n)},I(Yn,"SemiInteractiveCrossMinProcessor",1678),D(1679,1,Kr,GD),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1679),D(1680,1,Kr,nC),l.Mb=function(e){return $te(u(e,10))._b((De(),I3))},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1680),D(1681,1,Xr,KD),l.Ne=function(e,n){return Vgn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1681),D(1682,1,{},QB),l.Ve=function(e,n){return lhn(u(e,10),u(n,10))},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1682),D(1684,1,zi,JB),l.Kf=function(e,n){Q7n(u(e,36),n)},I(Yn,"SortByInputModelProcessor",1684),D(1685,1,Kr,GQ),l.Mb=function(e){return u(e,12).g.c.length!=0},I(Yn,"SortByInputModelProcessor/lambda$0$Type",1685),D(1686,1,ir,VVt),l.Cd=function(e){N4n(this.a,u(e,12))},I(Yn,"SortByInputModelProcessor/lambda$1$Type",1686),D(1759,817,{},Xoe),l.df=function(e){var n,r,s,o;switch(this.c=e,this.a.g){case 2:n=new fe,ms(_i(new ln(null,new gn(this.c.a.b,16)),new rJ),new bXt(this,n)),OO(this,new WQ),Cu(n,new ZB),n.c.length=0,ms(_i(new ln(null,new gn(this.c.a.b,16)),new tR),new GVt(n)),OO(this,new YQ),Cu(n,new XQ),n.c.length=0,r=QQt(hat(Ny(new ln(null,new gn(this.c.a.b,16)),new KVt(this))),new QQ),ms(new ln(null,new gn(this.c.a.a,16)),new lXt(r,n)),OO(this,new ZQ),Cu(n,new eR),n.c.length=0;break;case 3:s=new fe,OO(this,new KQ),o=QQt(hat(Ny(new ln(null,new gn(this.c.a.b,16)),new UVt(this))),new JQ),ms(_i(new ln(null,new gn(this.c.a.b,16)),new tJ),new fXt(o,s)),OO(this,new eJ),Cu(s,new nJ),s.c.length=0;break;default:throw at(new pKt)}},l.b=0,I(Gs,"EdgeAwareScanlineConstraintCalculation",1759),D(1760,1,t0,KQ),l.Lb=function(e){return Lt(u(e,60).g,154)},l.Fb=function(e){return this===e},l.Mb=function(e){return Lt(u(e,60).g,154)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1760),D(1761,1,{},UVt),l.Ye=function(e){return w5n(this.a,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1761),D(1769,1,kV,cXt),l.de=function(){x_(this.a,this.b,-1)},l.b=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1769),D(1771,1,t0,WQ),l.Lb=function(e){return Lt(u(e,60).g,154)},l.Fb=function(e){return this===e},l.Mb=function(e){return Lt(u(e,60).g,154)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1771),D(1772,1,ir,ZB),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1772),D(1773,1,Kr,tR),l.Mb=function(e){return Lt(u(e,60).g,10)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1773),D(1775,1,ir,GVt),l.Cd=function(e){B2n(this.a,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1775),D(1774,1,kV,dXt),l.de=function(){x_(this.b,this.a,-1)},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1774),D(1776,1,t0,YQ),l.Lb=function(e){return Lt(u(e,60).g,10)},l.Fb=function(e){return this===e},l.Mb=function(e){return Lt(u(e,60).g,10)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1776),D(1777,1,ir,XQ),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1777),D(1778,1,{},KVt),l.Ye=function(e){return m5n(this.a,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1778),D(1779,1,{},QQ),l.We=function(){return 0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1779),D(1762,1,{},JQ),l.We=function(){return 0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1762),D(1781,1,ir,lXt),l.Cd=function(e){qun(this.a,this.b,u(e,316))},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1781),D(1780,1,kV,hXt),l.de=function(){fde(this.a,this.b,-1)},l.b=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1780),D(1782,1,t0,ZQ),l.Lb=function(e){return u(e,60),!0},l.Fb=function(e){return this===e},l.Mb=function(e){return u(e,60),!0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1782),D(1783,1,ir,eR),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1783),D(1763,1,Kr,tJ),l.Mb=function(e){return Lt(u(e,60).g,10)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1763),D(1765,1,ir,fXt),l.Cd=function(e){Hun(this.a,this.b,u(e,60))},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1765),D(1764,1,kV,gXt),l.de=function(){x_(this.b,this.a,-1)},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1764),D(1766,1,t0,eJ),l.Lb=function(e){return u(e,60),!0},l.Fb=function(e){return this===e},l.Mb=function(e){return u(e,60),!0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1766),D(1767,1,ir,nJ),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1767),D(1768,1,Kr,rJ),l.Mb=function(e){return Lt(u(e,60).g,154)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1768),D(1770,1,ir,bXt),l.Cd=function(e){ogn(this.a,this.b,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1770),D(1586,1,zi,PJt),l.Kf=function(e,n){CTn(this,u(e,36),n)};var M4e;I(Gs,"HorizontalGraphCompactor",1586),D(1587,1,{},WVt),l.ff=function(e,n){var r,s,o;return e4t(e,n)||(r=J4(e),s=J4(n),r&&r.k==(Un(),Ms)||s&&s.k==(Un(),Ms))?0:(o=u(X(this.a.a,(oe(),G5)),312),Lsn(o,r?r.k:(Un(),fa),s?s.k:(Un(),fa)))},l.gf=function(e,n){var r,s,o;return e4t(e,n)?1:(r=J4(e),s=J4(n),o=u(X(this.a.a,(oe(),G5)),312),Gmt(o,r?r.k:(Un(),fa),s?s.k:(Un(),fa)))},I(Gs,"HorizontalGraphCompactor/1",1587),D(1588,1,{},nR),l.ef=function(e,n){return ZC(),e.a.i==0},I(Gs,"HorizontalGraphCompactor/lambda$0$Type",1588),D(1589,1,{},YVt),l.ef=function(e,n){return dhn(this.a,e,n)},I(Gs,"HorizontalGraphCompactor/lambda$1$Type",1589),D(1730,1,{},Cae);var I4e,O4e;I(Gs,"LGraphToCGraphTransformer",1730),D(1738,1,Kr,rC),l.Mb=function(e){return e!=null},I(Gs,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1738),D(1731,1,{},iJ),l.Kb=function(e){return Bf(),rc(X(u(u(e,60).g,10),(oe(),Li)))},I(Gs,"LGraphToCGraphTransformer/lambda$0$Type",1731),D(1732,1,{},sJ),l.Kb=function(e){return Bf(),Fue(u(u(e,60).g,154))},I(Gs,"LGraphToCGraphTransformer/lambda$1$Type",1732),D(1741,1,Kr,rR),l.Mb=function(e){return Bf(),Lt(u(e,60).g,10)},I(Gs,"LGraphToCGraphTransformer/lambda$10$Type",1741),D(1742,1,ir,aJ),l.Cd=function(e){mhn(u(e,60))},I(Gs,"LGraphToCGraphTransformer/lambda$11$Type",1742),D(1743,1,Kr,oJ),l.Mb=function(e){return Bf(),Lt(u(e,60).g,154)},I(Gs,"LGraphToCGraphTransformer/lambda$12$Type",1743),D(1747,1,ir,cJ),l.Cd=function(e){Ybn(u(e,60))},I(Gs,"LGraphToCGraphTransformer/lambda$13$Type",1747),D(1744,1,ir,XVt),l.Cd=function(e){kin(this.a,u(e,8))},l.a=0,I(Gs,"LGraphToCGraphTransformer/lambda$14$Type",1744),D(1745,1,ir,QVt),l.Cd=function(e){Tin(this.a,u(e,116))},l.a=0,I(Gs,"LGraphToCGraphTransformer/lambda$15$Type",1745),D(1746,1,ir,JVt),l.Cd=function(e){Ein(this.a,u(e,8))},l.a=0,I(Gs,"LGraphToCGraphTransformer/lambda$16$Type",1746),D(1748,1,{},uJ),l.Kb=function(e){return Bf(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Gs,"LGraphToCGraphTransformer/lambda$17$Type",1748),D(1749,1,Kr,lJ),l.Mb=function(e){return Bf(),go(u(e,18))},I(Gs,"LGraphToCGraphTransformer/lambda$18$Type",1749),D(1750,1,ir,ZVt),l.Cd=function(e){j0n(this.a,u(e,18))},I(Gs,"LGraphToCGraphTransformer/lambda$19$Type",1750),D(1734,1,ir,tUt),l.Cd=function(e){f1n(this.a,u(e,154))},I(Gs,"LGraphToCGraphTransformer/lambda$2$Type",1734),D(1751,1,{},hJ),l.Kb=function(e){return Bf(),new ln(null,new gn(u(e,30).a,16))},I(Gs,"LGraphToCGraphTransformer/lambda$20$Type",1751),D(1752,1,{},iR),l.Kb=function(e){return Bf(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Gs,"LGraphToCGraphTransformer/lambda$21$Type",1752),D(1753,1,{},fJ),l.Kb=function(e){return Bf(),u(X(u(e,18),(oe(),Lw)),15)},I(Gs,"LGraphToCGraphTransformer/lambda$22$Type",1753),D(1754,1,Kr,sR),l.Mb=function(e){return Dsn(u(e,15))},I(Gs,"LGraphToCGraphTransformer/lambda$23$Type",1754),D(1755,1,ir,eUt),l.Cd=function(e){a5n(this.a,u(e,15))},I(Gs,"LGraphToCGraphTransformer/lambda$24$Type",1755),D(1733,1,ir,wXt),l.Cd=function(e){udn(this.a,this.b,u(e,154))},I(Gs,"LGraphToCGraphTransformer/lambda$3$Type",1733),D(1735,1,{},dJ),l.Kb=function(e){return Bf(),new ln(null,new gn(u(e,30).a,16))},I(Gs,"LGraphToCGraphTransformer/lambda$4$Type",1735),D(1736,1,{},gJ),l.Kb=function(e){return Bf(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Gs,"LGraphToCGraphTransformer/lambda$5$Type",1736),D(1737,1,{},pJ),l.Kb=function(e){return Bf(),u(X(u(e,18),(oe(),Lw)),15)},I(Gs,"LGraphToCGraphTransformer/lambda$6$Type",1737),D(1739,1,ir,nUt),l.Cd=function(e){v5n(this.a,u(e,15))},I(Gs,"LGraphToCGraphTransformer/lambda$8$Type",1739),D(1740,1,ir,mXt),l.Cd=function(e){Win(this.a,this.b,u(e,154))},I(Gs,"LGraphToCGraphTransformer/lambda$9$Type",1740),D(1729,1,{},iC),l.cf=function(e){var n,r,s,o,h;for(this.a=e,this.d=new znt,this.c=Vt(Z9t,Ln,125,this.a.a.a.c.length,0,1),this.b=0,r=new G(this.a.a.a);r.a=tt&&(ge(h,he(A)),At=b.Math.max(At,Bt[A-1]-P),m+=J,ht+=Bt[A-1]-ht,P=Bt[A-1],J=k[A]),J=b.Math.max(J,k[A]),++A;m+=J}U=b.Math.min(1/At,1/n.b/m),U>s&&(s=U,r=h)}return r},l.pg=function(){return!1},I(i0,"MSDCutIndexHeuristic",816),D(1683,1,zi,BJ),l.Kf=function(e,n){A7n(u(e,36),n)},I(i0,"SingleEdgeGraphWrapper",1683),D(232,22,{3:1,34:1,22:1,232:1},oS);var j5,kT,ET,T3,SA,$5,TT=Lr(Hc,"CenterEdgeLabelPlacementStrategy",232,Pr,d0n,pon),U4e;D(431,22,{3:1,34:1,22:1,431:1},Kwt);var kSt,Aft,ESt=Lr(Hc,"ConstraintCalculationStrategy",431,Pr,Ohn,bon),G4e;D(322,22,{3:1,34:1,22:1,322:1,188:1,196:1},xrt),l.dg=function(){return y1e(this)},l.qg=function(){return y1e(this)};var QN,_A,TSt,CSt=Lr(Hc,"CrossingMinimizationStrategy",322,Pr,_fn,won),K4e;D(351,22,{3:1,34:1,22:1,351:1},krt);var SSt,Lft,yG,_St=Lr(Hc,"CuttingStrategy",351,Pr,Afn,mon),W4e;D(348,22,{3:1,34:1,22:1,348:1,188:1,196:1},VM),l.dg=function(){return lde(this)},l.qg=function(){return lde(this)};var ASt,Dft,CT,Mft,ST,LSt=Lr(Hc,"CycleBreakingStrategy",348,Pr,Mdn,von),Y4e;D(428,22,{3:1,34:1,22:1,428:1},Wwt);var xG,DSt,MSt=Lr(Hc,"DirectionCongruency",428,Pr,Ihn,yon),X4e;D(459,22,{3:1,34:1,22:1,459:1},Ert);var _T,Ift,z5,Q4e=Lr(Hc,"EdgeConstraint",459,Pr,Lfn,_on),J4e;D(283,22,{3:1,34:1,22:1,283:1},cS);var Oft,Nft,Pft,Fft,kG,Bft,ISt=Lr(Hc,"EdgeLabelSideSelection",283,Pr,l0n,Aon),Z4e;D(487,22,{3:1,34:1,22:1,487:1},Ywt);var EG,OSt,NSt=Lr(Hc,"EdgeStraighteningStrategy",487,Pr,Mhn,Lon),t5e;D(281,22,{3:1,34:1,22:1,281:1},uS);var Rft,PSt,FSt,TG,BSt,RSt,jSt=Lr(Hc,"FixedAlignment",281,Pr,h0n,Son),e5e;D(282,22,{3:1,34:1,22:1,282:1},lS);var $St,zSt,qSt,HSt,AA,VSt,USt=Lr(Hc,"GraphCompactionStrategy",282,Pr,f0n,xon),n5e;D(259,22,{3:1,34:1,22:1,259:1},ky);var AT,CG,LT,Uh,LA,SG,DT,q5,_G,DA,jft=Lr(Hc,"GraphProperties",259,Pr,Xgn,kon),r5e;D(298,22,{3:1,34:1,22:1,298:1},Trt);var JN,$ft,zft,qft=Lr(Hc,"GreedySwitchType",298,Pr,Dfn,Eon),i5e;D(311,22,{3:1,34:1,22:1,311:1},Crt);var qk,ZN,H5,s5e=Lr(Hc,"InLayerConstraint",311,Pr,Mfn,Ton),a5e;D(429,22,{3:1,34:1,22:1,429:1},Xwt);var Hft,GSt,KSt=Lr(Hc,"InteractiveReferencePoint",429,Pr,jhn,Con),o5e,WSt,Hk,vv,AG,YSt,XSt,LG,QSt,tP,DG,MA,Vk,$g,Vft,MG,Dc,JSt,i2,lu,Uft,Gft,eP,Aw,yv,Uk,ZSt,Gk,nP,C3,N1,gf,Kft,V5,Pi,Li,t_t,e_t,n_t,r_t,i_t,Wft,IG,ml,xv,Yft,Kk,IA,vd,U5,kv,G5,K5,MT,Lw,s_t,Xft,Qft,Wk;D(171,22,{3:1,34:1,22:1,171:1},UM);var OA,s2,NA,S3,rP,a_t=Lr(Hc,"LayerConstraint",171,Pr,Odn,Don),c5e;D(859,1,uf,Qet),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,nEt),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),b_t),(Fp(),ts)),MSt),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,rEt),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(Pn(),!1)),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,BV),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),k_t),ts),KSt),en(_n)))),Bs(e,BV,Hut,nxe),Bs(e,BV,Z_,exe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,iEt),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,sEt),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),oa),ys),en(_n)))),Qe(e,new He(krn(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,aEt),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),oa),ys),en(Bw)),lt(ut(Pe,1),ue,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,oEt),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),D_t),ts),jAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,cEt),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),he(7)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,uEt),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,lEt),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Hut),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),p_t),ts),LSt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,kN),dlt),"Node Layering Strategy"),"Strategy for node layering."),C_t),ts),_At),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,hEt),dlt),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),E_t),ts),a_t),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,fEt),dlt),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,dEt),dlt),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),he(-1)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Vut),I2e),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),he(4)),ac),Ra),en(_n)))),Bs(e,Vut,kN,uxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Uut),I2e),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),he(2)),ac),Ra),en(_n)))),Bs(e,Uut,kN,hxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Gut),O2e),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),T_t),ts),FAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Kut),O2e),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),he(0)),ac),Ra),en(_n)))),Bs(e,Kut,Gut,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Wut),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),he(xi)),ac),Ra),en(_n)))),Bs(e,Wut,kN,ixe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Z_),iT),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),g_t),ts),CSt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,gEt),iT),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Yut),iT),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),Wa),zs),en(_n)))),Bs(e,Yut,XV,A5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Xut),iT),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),oa),ys),en(_n)))),Bs(e,Xut,Z_,N5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,pEt),iT),"In Layer Predecessor of"),"Allows to set a constraint which specifies of which node the current node is the predecessor. If set to 's' then the node is the predecessor of 's' and is in the same layer"),null),ix),Pe),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,bEt),iT),"In Layer Successor of"),"Allows to set a constraint which specifies of which node the current node is the successor. If set to 's' then the node is the successor of 's' and is in the same layer"),null),ix),Pe),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,wEt),iT),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,mEt),iT),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),he(-1)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,vEt),N2e),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),he(40)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Qut),N2e),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),d_t),ts),qft),en(_n)))),Bs(e,Qut,Z_,S5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,RV),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),f_t),ts),qft),en(_n)))),Bs(e,RV,Z_,E5e),Bs(e,RV,XV,T5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,A5),P2e),"Node Placement Strategy"),"Strategy for node placement."),L_t),ts),MAt),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,jV),P2e),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),oa),ys),en(_n)))),Bs(e,jV,A5,kxe),Bs(e,jV,A5,Exe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Jut),F2e),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),S_t),ts),NSt),en(_n)))),Bs(e,Jut,A5,mxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Zut),F2e),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),__t),ts),jSt),en(_n)))),Bs(e,Zut,A5,yxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,tlt),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),Wa),zs),en(_n)))),Bs(e,tlt,A5,Cxe),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,elt),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),ts),v1t),en(Qs)))),Bs(e,elt,A5,Lxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,nlt),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),A_t),ts),v1t),en(_n)))),Bs(e,nlt,A5,Axe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,yEt),B2e),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),v_t),ts),qAt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,xEt),B2e),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),y_t),ts),HAt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,$V),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),x_t),ts),UAt),en(_n)))),Bs(e,$V,EN,U5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,zV),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),Wa),zs),en(_n)))),Bs(e,zV,EN,K5e),Bs(e,zV,$V,W5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,rlt),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),Wa),zs),en(_n)))),Bs(e,rlt,EN,z5e),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,kEt),bd),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,EEt),bd),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,TEt),bd),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,CEt),bd),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,SEt),FEt),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_Et),FEt),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,AEt),FEt),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ilt),BEt),Zbe),"Tries to further compact components (disconnected sub-graphs)."),!1),oa),ys),en(_n)))),Bs(e,ilt,W_,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,LEt),R2e),"Post Compaction Strategy"),j2e),c_t),ts),USt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,DEt),R2e),"Post Compaction Constraint Calculation"),j2e),o_t),ts),ESt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,qV),REt),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,slt),REt),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),he(16)),ac),Ra),en(_n)))),Bs(e,slt,qV,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,alt),REt),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),he(5)),ac),Ra),en(_n)))),Bs(e,alt,qV,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Bg),jEt),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),O_t),ts),YAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,HV),jEt),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),Wa),zs),en(_n)))),Bs(e,HV,Bg,qxe),Bs(e,HV,Bg,Hxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,VV),jEt),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),Wa),zs),en(_n)))),Bs(e,VV,Bg,Uxe),Bs(e,VV,Bg,Gxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,tA),$2e),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),I_t),ts),_St),en(_n)))),Bs(e,tA,Bg,Jxe),Bs(e,tA,Bg,Zxe),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,olt),$2e),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),xd),Vh),en(_n)))),Bs(e,olt,tA,Wxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,clt),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),M_t),ac),Ra),en(_n)))),Bs(e,clt,tA,Xxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,UV),z2e),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),N_t),ts),WAt),en(_n)))),Bs(e,UV,Bg,h6e),Bs(e,UV,Bg,f6e),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,GV),z2e),"Valid Indices for Wrapping"),null),xd),Vh),en(_n)))),Bs(e,GV,Bg,c6e),Bs(e,GV,Bg,u6e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,KV),$Et),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),oa),ys),en(_n)))),Bs(e,KV,Bg,r6e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,WV),$Et),"Distance Penalty When Improving Cuts"),null),2),Wa),zs),en(_n)))),Bs(e,WV,Bg,e6e),Bs(e,WV,KV,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ult),$Et),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),oa),ys),en(_n)))),Bs(e,ult,Bg,s6e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,MEt),glt),"Edge Label Side Selection"),"Method to decide on edge label sides."),m_t),ts),ISt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,IEt),glt),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),w_t),ts),TT),Hi(_n,lt(ut(G0,1),te,170,0,[Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,YV),eA),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),h_t),ts),RAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,OEt),eA),"Consider Port Order"),"If disabled the port order of output ports is derived from the edge order and input ports are ordered by their incoming connections. If enabled all ports are ordered by the port model order."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,NEt),eA),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,llt),eA),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),u_t),ts),LCt),en(_n)))),Bs(e,llt,W_,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,PEt),eA),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),l_t),ts),LAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,hlt),eA),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),Wa),zs),en(_n)))),Bs(e,hlt,YV,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,flt),eA),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),Wa),zs),en(_n)))),Bs(e,flt,YV,null),ibe((new Jet,e))};var u5e,l5e,h5e,o_t,f5e,c_t,d5e,u_t,g5e,p5e,b5e,l_t,w5e,m5e,v5e,h_t,y5e,x5e,k5e,f_t,E5e,T5e,C5e,d_t,S5e,_5e,A5e,L5e,D5e,M5e,I5e,O5e,N5e,P5e,g_t,F5e,p_t,B5e,b_t,R5e,w_t,j5e,m_t,$5e,z5e,q5e,v_t,H5e,y_t,V5e,x_t,U5e,G5e,K5e,W5e,Y5e,X5e,Q5e,J5e,Z5e,txe,k_t,exe,nxe,rxe,ixe,sxe,axe,E_t,oxe,cxe,uxe,lxe,hxe,fxe,dxe,T_t,gxe,C_t,pxe,bxe,wxe,S_t,mxe,vxe,__t,yxe,xxe,kxe,Exe,Txe,Cxe,Sxe,_xe,A_t,Axe,Lxe,Dxe,L_t,Mxe,D_t,Ixe,Oxe,Nxe,Pxe,Fxe,Bxe,Rxe,jxe,$xe,zxe,qxe,Hxe,Vxe,Uxe,Gxe,Kxe,Wxe,Yxe,M_t,Xxe,Qxe,I_t,Jxe,Zxe,t6e,e6e,n6e,r6e,i6e,s6e,a6e,O_t,o6e,c6e,u6e,l6e,N_t,h6e,f6e;I(Hc,"LayeredMetaDataProvider",859),D(998,1,uf,Jet),l.hf=function(e){ibe(e)};var u0,Jft,OG,PA,NG,P_t,PG,_3,FG,F_t,B_t,BG,Zft,U0,t1t,Ev,R_t,iP,e1t,j_t,d6e,g6e,p6e,RG,n1t,FA,Dw,b6e,ph,$_t,z_t,jG,r1t,l0,$G,zg,q_t,H_t,V_t,i1t,s1t,U_t,Hp,a1t,G_t,A3,K_t,W_t,Y_t,zG,L3,Mw,X_t,Q_t,Vo,J_t,w6e,Iu,qG,Z_t,tAt,eAt,a2,Iw,HG,nAt,rAt,VG,Tv,iAt,o1t,BA,sAt,Cv,RA,UG,Ow,c1t,IT,GG,Nw,aAt,oAt,cAt,OT,uAt,m6e,v6e,y6e,x6e,Sv,D3,bs,Vp,k6e,M3,lAt,NT,hAt,I3,E6e,PT,fAt,Yk,T6e,C6e,sP,u1t,dAt,aP,Yf,W5,Y5,_v,Pw,KG,O3,l1t,FT,BT,Av,X5,h1t,oP,jA,$A,S6e,_6e,A6e,gAt,L6e,f1t,pAt,bAt,wAt,mAt,d1t,vAt,yAt,xAt,kAt,g1t,WG;I(Hc,"LayeredOptions",998),D(999,1,{},RJ),l.sf=function(){var e;return e=new EKt,e},l.tf=function(e){},I(Hc,"LayeredOptions/LayeredFactory",999),D(1391,1,{}),l.a=0;var D6e;I(_c,"ElkSpacings/AbstractSpacingsBuilder",1391),D(792,1391,{},V5t);var YG,M6e;I(Hc,"LayeredSpacings/LayeredSpacingsBuilder",792),D(265,22,{3:1,34:1,22:1,265:1,188:1,196:1},F4),l.dg=function(){return v0e(this)},l.qg=function(){return v0e(this)};var RT,p1t,jT,EAt,TAt,CAt,XG,b1t,SAt,_At=Lr(Hc,"LayeringStrategy",265,Pr,Sgn,Mon),I6e;D(390,22,{3:1,34:1,22:1,390:1},Srt);var w1t,AAt,QG,LAt=Lr(Hc,"LongEdgeOrderingStrategy",390,Pr,Ifn,Ion),O6e;D(203,22,{3:1,34:1,22:1,203:1},$$);var Q5,J5,JG,m1t,v1t=Lr(Hc,"NodeFlexibility",203,Pr,z1n,Oon),N6e;D(323,22,{3:1,34:1,22:1,323:1,188:1,196:1},GM),l.dg=function(){return ude(this)},l.qg=function(){return ude(this)};var zA,y1t,x1t,qA,DAt,MAt=Lr(Hc,"NodePlacementStrategy",323,Pr,Idn,Non),P6e;D(243,22,{3:1,34:1,22:1,243:1},Ey);var IAt,Lv,N3,cP,OAt,NAt,uP,PAt,ZG,tK,FAt=Lr(Hc,"NodePromotionStrategy",243,Pr,Qgn,Pon),F6e;D(284,22,{3:1,34:1,22:1,284:1},z$);var BAt,Up,k1t,E1t,RAt=Lr(Hc,"OrderingStrategy",284,Pr,q1n,Fon),B6e;D(430,22,{3:1,34:1,22:1,430:1},Qwt);var T1t,C1t,jAt=Lr(Hc,"PortSortingStrategy",430,Pr,Nhn,Bon),R6e;D(462,22,{3:1,34:1,22:1,462:1},_rt);var vl,ku,HA,j6e=Lr(Hc,"PortType",462,Pr,Ofn,Ron),$6e;D(387,22,{3:1,34:1,22:1,387:1},Art);var $At,S1t,zAt,qAt=Lr(Hc,"SelfLoopDistributionStrategy",387,Pr,Nfn,jon),z6e;D(349,22,{3:1,34:1,22:1,349:1},Lrt);var _1t,lP,A1t,HAt=Lr(Hc,"SelfLoopOrderingStrategy",349,Pr,Pfn,$on),q6e;D(312,1,{312:1},epe),I(Hc,"Spacings",312),D(350,22,{3:1,34:1,22:1,350:1},Drt);var L1t,VAt,VA,UAt=Lr(Hc,"SplineRoutingMode",350,Pr,Ffn,zon),H6e;D(352,22,{3:1,34:1,22:1,352:1},Mrt);var D1t,GAt,KAt,WAt=Lr(Hc,"ValidifyStrategy",352,Pr,Bfn,qon),V6e;D(388,22,{3:1,34:1,22:1,388:1},Irt);var P3,M1t,$T,YAt=Lr(Hc,"WrappingStrategy",388,Pr,Rfn,Hon),U6e;D(1398,1,_o,Ket),l.rg=function(e){return u(e,36),G6e},l.Kf=function(e,n){kTn(this,u(e,36),n)};var G6e;I(tU,"DepthFirstCycleBreaker",1398),D(793,1,_o,lyt),l.rg=function(e){return u(e,36),K6e},l.Kf=function(e,n){CSn(this,u(e,36),n)},l.sg=function(e){return u(Oe(e,MH(this.d,e.c.length)),10)};var K6e;I(tU,"GreedyCycleBreaker",793),D(1401,793,_o,vQt),l.sg=function(e){var n,r,s,o;for(o=null,n=xi,s=new G(e);s.a1&&(Ie(Me(X(Pa((vn(0,e.c.length),u(e.c[0],10))),(De(),Ev))))?kde(e,this.d,u(this,669)):(mn(),Ds(e,this.d)),kce(this.e,e))},l.lg=function(e,n,r,s){var o,h,d,m,k,T,A;for(n!=jte(r,e.length)&&(h=e[n-(r?1:-1)],j3t(this.f,h,r?(To(),ku):(To(),vl))),o=e[n][0],A=!s||o.k==(Un(),Ms),T=id(e[n]),this.vg(T,A,!1,r),d=0,k=new G(T);k.a"),e0?fst(this.a,e[n-1],e[n]):!r&&n1&&(Ie(Me(X(Pa((vn(0,e.c.length),u(e.c[0],10))),(De(),Ev))))?kde(e,this.d,this):(mn(),Ds(e,this.d)),Ie(Me(X(Pa((vn(0,e.c.length),u(e.c[0],10))),Ev)))||kce(this.e,e))},I(al,"ModelOrderBarycenterHeuristic",669),D(1866,1,Xr,kUt),l.Ne=function(e,n){return x4n(this.a,u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(al,"ModelOrderBarycenterHeuristic/lambda$0$Type",1866),D(1423,1,_o,tnt),l.rg=function(e){var n;return u(e,36),n=rz(uke),ri(n,(Ua(),Qc),(Za(),uG)),n},l.Kf=function(e,n){ihn((u(e,36),n))};var uke;I(al,"NoCrossingMinimizer",1423),D(809,413,x7t,ywt),l.tg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U;switch(P=this.g,r.g){case 1:{for(o=0,h=0,A=new G(e.j);A.a1&&(o.j==(ve(),Jn)?this.b[e]=!0:o.j==Gn&&e>0&&(this.b[e-1]=!0))},l.f=0,I(z0,"AllCrossingsCounter",1861),D(595,1,{},Yq),l.b=0,l.d=0,I(z0,"BinaryIndexedTree",595),D(532,1,{},dI);var JAt,nK;I(z0,"CrossingsCounter",532),D(1950,1,Xr,EUt),l.Ne=function(e,n){return Dun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$0$Type",1950),D(1951,1,Xr,TUt),l.Ne=function(e,n){return Mun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$1$Type",1951),D(1952,1,Xr,CUt),l.Ne=function(e,n){return Iun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$2$Type",1952),D(1953,1,Xr,SUt),l.Ne=function(e,n){return Oun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$3$Type",1953),D(1954,1,ir,_Ut),l.Cd=function(e){O0n(this.a,u(e,12))},I(z0,"CrossingsCounter/lambda$4$Type",1954),D(1955,1,Kr,AUt),l.Mb=function(e){return iin(this.a,u(e,12))},I(z0,"CrossingsCounter/lambda$5$Type",1955),D(1956,1,ir,LUt),l.Cd=function(e){lQt(this,e)},I(z0,"CrossingsCounter/lambda$6$Type",1956),D(1957,1,ir,xXt),l.Cd=function(e){var n;LE(),Ob(this.b,(n=this.a,u(e,12),n))},I(z0,"CrossingsCounter/lambda$7$Type",1957),D(839,1,t0,yR),l.Lb=function(e){return LE(),qi(u(e,12),(oe(),ml))},l.Fb=function(e){return this===e},l.Mb=function(e){return LE(),qi(u(e,12),(oe(),ml))},I(z0,"CrossingsCounter/lambda$8$Type",839),D(1949,1,{},DUt),I(z0,"HyperedgeCrossingsCounter",1949),D(477,1,{34:1,477:1},TZt),l.Fd=function(e){return Iwn(this,u(e,477))},l.b=0,l.c=0,l.e=0,l.f=0;var f_n=I(z0,"HyperedgeCrossingsCounter/Hyperedge",477);D(374,1,{34:1,374:1},Yz),l.Fd=function(e){return Gxn(this,u(e,374))},l.b=0,l.c=0;var lke=I(z0,"HyperedgeCrossingsCounter/HyperedgeCorner",374);D(531,22,{3:1,34:1,22:1,531:1},Jwt);var GA,KA,hke=Lr(z0,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",531,Pr,Phn,Uon),fke;D(1425,1,_o,ent),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?dke:null},l.Kf=function(e,n){ryn(this,u(e,36),n)};var dke;I(Ao,"InteractiveNodePlacer",1425),D(1426,1,_o,nnt),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?gke:null},l.Kf=function(e,n){zmn(this,u(e,36),n)};var gke,rK,iK;I(Ao,"LinearSegmentsNodePlacer",1426),D(261,1,{34:1,261:1},W2t),l.Fd=function(e){return brn(this,u(e,261))},l.Fb=function(e){var n;return Lt(e,261)?(n=u(e,261),this.b==n.b):!1},l.Hb=function(){return this.b},l.Ib=function(){return"ls"+Hb(this.e)},l.a=0,l.b=0,l.c=-1,l.d=-1,l.g=0;var pke=I(Ao,"LinearSegmentsNodePlacer/LinearSegment",261);D(1428,1,_o,Yte),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?bke:null},l.Kf=function(e,n){bSn(this,u(e,36),n)},l.b=0,l.g=0;var bke;I(Ao,"NetworkSimplexPlacer",1428),D(1447,1,Xr,GJ),l.Ne=function(e,n){return jc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Ao,"NetworkSimplexPlacer/0methodref$compare$Type",1447),D(1449,1,Xr,KJ),l.Ne=function(e,n){return jc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Ao,"NetworkSimplexPlacer/1methodref$compare$Type",1449),D(655,1,{655:1},kXt);var d_n=I(Ao,"NetworkSimplexPlacer/EdgeRep",655);D(412,1,{412:1},Vyt),l.b=!1;var g_n=I(Ao,"NetworkSimplexPlacer/NodeRep",412);D(515,13,{3:1,4:1,20:1,31:1,56:1,13:1,16:1,15:1,59:1,515:1},IKt),I(Ao,"NetworkSimplexPlacer/Path",515),D(1429,1,{},WJ),l.Kb=function(e){return u(e,18).d.i.k},I(Ao,"NetworkSimplexPlacer/Path/lambda$0$Type",1429),D(1430,1,Kr,YJ),l.Mb=function(e){return u(e,273)==(Un(),fa)},I(Ao,"NetworkSimplexPlacer/Path/lambda$1$Type",1430),D(1431,1,{},XJ),l.Kb=function(e){return u(e,18).d.i},I(Ao,"NetworkSimplexPlacer/Path/lambda$2$Type",1431),D(1432,1,Kr,MUt),l.Mb=function(e){return cZt(hle(u(e,10)))},I(Ao,"NetworkSimplexPlacer/Path/lambda$3$Type",1432),D(1433,1,Kr,QJ),l.Mb=function(e){return gun(u(e,12))},I(Ao,"NetworkSimplexPlacer/lambda$0$Type",1433),D(1434,1,ir,EXt),l.Cd=function(e){Yin(this.a,this.b,u(e,12))},I(Ao,"NetworkSimplexPlacer/lambda$1$Type",1434),D(1443,1,ir,IUt),l.Cd=function(e){x5n(this.a,u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$10$Type",1443),D(1444,1,{},JJ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$11$Type",1444),D(1445,1,ir,OUt),l.Cd=function(e){p8n(this.a,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$12$Type",1445),D(1446,1,{},ZJ),l.Kb=function(e){return rh(),he(u(e,125).e)},I(Ao,"NetworkSimplexPlacer/lambda$13$Type",1446),D(1448,1,{},tZ),l.Kb=function(e){return rh(),he(u(e,125).e)},I(Ao,"NetworkSimplexPlacer/lambda$15$Type",1448),D(1450,1,Kr,eZ),l.Mb=function(e){return rh(),u(e,412).c.k==(Un(),xs)},I(Ao,"NetworkSimplexPlacer/lambda$17$Type",1450),D(1451,1,Kr,nZ),l.Mb=function(e){return rh(),u(e,412).c.j.c.length>1},I(Ao,"NetworkSimplexPlacer/lambda$18$Type",1451),D(1452,1,ir,rne),l.Cd=function(e){twn(this.c,this.b,this.d,this.a,u(e,412))},l.c=0,l.d=0,I(Ao,"NetworkSimplexPlacer/lambda$19$Type",1452),D(1435,1,{},rZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$2$Type",1435),D(1453,1,ir,NUt),l.Cd=function(e){Qin(this.a,u(e,12))},l.a=0,I(Ao,"NetworkSimplexPlacer/lambda$20$Type",1453),D(1454,1,{},iZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$21$Type",1454),D(1455,1,ir,PUt),l.Cd=function(e){usn(this.a,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$22$Type",1455),D(1456,1,Kr,sZ),l.Mb=function(e){return cZt(e)},I(Ao,"NetworkSimplexPlacer/lambda$23$Type",1456),D(1457,1,{},aZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$24$Type",1457),D(1458,1,Kr,FUt),l.Mb=function(e){return min(this.a,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$25$Type",1458),D(1459,1,ir,TXt),l.Cd=function(e){C4n(this.a,this.b,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$26$Type",1459),D(1460,1,Kr,n6),l.Mb=function(e){return rh(),!go(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$27$Type",1460),D(1461,1,Kr,xR),l.Mb=function(e){return rh(),!go(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$28$Type",1461),D(1462,1,{},BUt),l.Ve=function(e,n){return Xin(this.a,u(e,30),u(n,30))},I(Ao,"NetworkSimplexPlacer/lambda$29$Type",1462),D(1436,1,{},oZ),l.Kb=function(e){return rh(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Ao,"NetworkSimplexPlacer/lambda$3$Type",1436),D(1437,1,Kr,cZ),l.Mb=function(e){return rh(),S1n(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$4$Type",1437),D(1438,1,ir,RUt),l.Cd=function(e){T7n(this.a,u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$5$Type",1438),D(1439,1,{},uZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$6$Type",1439),D(1440,1,Kr,kR),l.Mb=function(e){return rh(),u(e,10).k==(Un(),xs)},I(Ao,"NetworkSimplexPlacer/lambda$7$Type",1440),D(1441,1,{},lZ),l.Kb=function(e){return rh(),new ln(null,new Lm(new rr(sr(Dg(u(e,10)).a.Kc(),new z))))},I(Ao,"NetworkSimplexPlacer/lambda$8$Type",1441),D(1442,1,Kr,cC),l.Mb=function(e){return rh(),dun(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$9$Type",1442),D(1424,1,_o,rnt),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?wke:null},l.Kf=function(e,n){iTn(u(e,36),n)};var wke;I(Ao,"SimpleNodePlacer",1424),D(185,1,{185:1},m5),l.Ib=function(){var e;return e="",this.c==(Gd(),Dv)?e+=Ak:this.c==Gp&&(e+=_k),this.o==(nd(),Fw)?e+=xut:this.o==yd?e+="UP":e+="BALANCED",e},I(Qb,"BKAlignedLayout",185),D(523,22,{3:1,34:1,22:1,523:1},Zwt);var Gp,Dv,mke=Lr(Qb,"BKAlignedLayout/HDirection",523,Pr,Fhn,Gon),vke;D(522,22,{3:1,34:1,22:1,522:1},tmt);var Fw,yd,yke=Lr(Qb,"BKAlignedLayout/VDirection",522,Pr,Bhn,Kon),xke;D(1699,1,{},CXt),I(Qb,"BKAligner",1699),D(1702,1,{},Fhe),I(Qb,"BKCompactor",1702),D(663,1,{663:1},hZ),l.a=0,I(Qb,"BKCompactor/ClassEdge",663),D(466,1,{466:1},LKt),l.a=null,l.b=0,I(Qb,"BKCompactor/ClassNode",466),D(1427,1,_o,LXt),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?kke:null},l.Kf=function(e,n){NSn(this,u(e,36),n)},l.d=!1;var kke;I(Qb,"BKNodePlacer",1427),D(1700,1,{},fZ),l.d=0,I(Qb,"NeighborhoodInformation",1700),D(1701,1,Xr,jUt),l.Ne=function(e,n){return cgn(this,u(e,42),u(n,42))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Qb,"NeighborhoodInformation/NeighborComparator",1701),D(823,1,{}),I(Qb,"ThresholdStrategy",823),D(1825,823,{},DKt),l.wg=function(e,n,r){return this.a.o==(nd(),yd)?Zi:Vs},l.xg=function(){},I(Qb,"ThresholdStrategy/NullThresholdStrategy",1825),D(587,1,{587:1},DXt),l.c=!1,l.d=!1,I(Qb,"ThresholdStrategy/Postprocessable",587),D(1826,823,{},MKt),l.wg=function(e,n,r){var s,o,h;return o=n==r,s=this.a.a[r.p]==n,o||s?(h=e,this.a.c==(Gd(),Dv)?(o&&(h=yct(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=yct(this,r,!1))):(o&&(h=yct(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=yct(this,r,!1))),h):e},l.xg=function(){for(var e,n,r,s,o;this.d.b!=0;)o=u(Zhn(this.d),587),s=uge(this,o),s.a&&(e=s.a,r=Ie(this.a.f[this.a.g[o.b.p].p]),!(!r&&!go(e)&&e.c.i.c==e.d.i.c)&&(n=gde(this,o),n||xin(this.e,o)));for(;this.e.a.c.length!=0;)gde(this,u(gue(this.e),587))},I(Qb,"ThresholdStrategy/SimpleThresholdStrategy",1826),D(645,1,{645:1,188:1,196:1},dZ),l.dg=function(){return Ece(this)},l.qg=function(){return Ece(this)};var I1t;I(vlt,"EdgeRouterFactory",645),D(1485,1,_o,int),l.rg=function(e){return Ukn(u(e,36))},l.Kf=function(e,n){hTn(u(e,36),n)};var Eke,Tke,Cke,Ske,_ke,ZAt,Ake,Lke;I(vlt,"OrthogonalEdgeRouter",1485),D(1478,1,_o,AXt),l.rg=function(e){return dyn(u(e,36))},l.Kf=function(e,n){NCn(this,u(e,36),n)};var Dke,Mke,Ike,Oke,fP,Nke;I(vlt,"PolylineEdgeRouter",1478),D(1479,1,t0,pZ),l.Lb=function(e){return z4t(u(e,10))},l.Fb=function(e){return this===e},l.Mb=function(e){return z4t(u(e,10))},I(vlt,"PolylineEdgeRouter/1",1479),D(1872,1,Kr,bZ),l.Mb=function(e){return u(e,132).c==(C1(),o2)},I(M1,"HyperEdgeCycleDetector/lambda$0$Type",1872),D(1873,1,{},wZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$1$Type",1873),D(1874,1,Kr,mZ),l.Mb=function(e){return u(e,132).c==(C1(),o2)},I(M1,"HyperEdgeCycleDetector/lambda$2$Type",1874),D(1875,1,{},vZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$3$Type",1875),D(1876,1,{},yZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$4$Type",1876),D(1877,1,{},gZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$5$Type",1877),D(118,1,{34:1,118:1},eO),l.Fd=function(e){return wrn(this,u(e,118))},l.Fb=function(e){var n;return Lt(e,118)?(n=u(e,118),this.g==n.g):!1},l.Hb=function(){return this.g},l.Ib=function(){var e,n,r,s;for(e=new eh("{"),s=new G(this.n);s.a"+this.b+" ("+Fsn(this.c)+")"},l.d=0,I(M1,"HyperEdgeSegmentDependency",132),D(528,22,{3:1,34:1,22:1,528:1},emt);var o2,F3,Pke=Lr(M1,"HyperEdgeSegmentDependency/DependencyType",528,Pr,Rhn,Won),Fke;D(1878,1,{},$Ut),I(M1,"HyperEdgeSegmentSplitter",1878),D(1879,1,{},IWt),l.a=0,l.b=0,I(M1,"HyperEdgeSegmentSplitter/AreaRating",1879),D(339,1,{339:1},yit),l.a=0,l.b=0,l.c=0,I(M1,"HyperEdgeSegmentSplitter/FreeArea",339),D(1880,1,Xr,r6),l.Ne=function(e,n){return Fan(u(e,118),u(n,118))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(M1,"HyperEdgeSegmentSplitter/lambda$0$Type",1880),D(1881,1,ir,ine),l.Cd=function(e){ldn(this.a,this.d,this.c,this.b,u(e,118))},l.b=0,I(M1,"HyperEdgeSegmentSplitter/lambda$1$Type",1881),D(1882,1,{},xZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).e,16))},I(M1,"HyperEdgeSegmentSplitter/lambda$2$Type",1882),D(1883,1,{},kZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).j,16))},I(M1,"HyperEdgeSegmentSplitter/lambda$3$Type",1883),D(1884,1,{},EZ),l.Ye=function(e){return Rt(Ht(e))},I(M1,"HyperEdgeSegmentSplitter/lambda$4$Type",1884),D(664,1,{},Uit),l.a=0,l.b=0,l.c=0,I(M1,"OrthogonalRoutingGenerator",664),D(1703,1,{},TZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).e,16))},I(M1,"OrthogonalRoutingGenerator/lambda$0$Type",1703),D(1704,1,{},CZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).j,16))},I(M1,"OrthogonalRoutingGenerator/lambda$1$Type",1704),D(670,1,{}),I(ylt,"BaseRoutingDirectionStrategy",670),D(1870,670,{},PKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!(e.r&&!e.q))for(A=n+e.o*r,T=new G(e.n);T.an0&&(h=A,o=e,s=new ae(P,h),Zr(d.a,s),ev(this,d,o,s,!1),$=e.r,$&&(U=Rt(Ht(jh($.e,0))),s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1),h=n+$.o*r,o=$,s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1)),s=new ae(tt,h),Zr(d.a,s),ev(this,d,o,s,!1)))},l.zg=function(e){return e.i.n.a+e.n.a+e.a.a},l.Ag=function(){return ve(),Er},l.Bg=function(){return ve(),Hn},I(ylt,"NorthToSouthRoutingStrategy",1870),D(1871,670,{},FKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!(e.r&&!e.q))for(A=n-e.o*r,T=new G(e.n);T.an0&&(h=A,o=e,s=new ae(P,h),Zr(d.a,s),ev(this,d,o,s,!1),$=e.r,$&&(U=Rt(Ht(jh($.e,0))),s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1),h=n-$.o*r,o=$,s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1)),s=new ae(tt,h),Zr(d.a,s),ev(this,d,o,s,!1)))},l.zg=function(e){return e.i.n.a+e.n.a+e.a.a},l.Ag=function(){return ve(),Hn},l.Bg=function(){return ve(),Er},I(ylt,"SouthToNorthRoutingStrategy",1871),D(1869,670,{},BKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!(e.r&&!e.q))for(A=n+e.o*r,T=new G(e.n);T.an0&&(h=A,o=e,s=new ae(h,P),Zr(d.a,s),ev(this,d,o,s,!0),$=e.r,$&&(U=Rt(Ht(jh($.e,0))),s=new ae(h,U),Zr(d.a,s),ev(this,d,o,s,!0),h=n+$.o*r,o=$,s=new ae(h,U),Zr(d.a,s),ev(this,d,o,s,!0)),s=new ae(h,tt),Zr(d.a,s),ev(this,d,o,s,!0)))},l.zg=function(e){return e.i.n.b+e.n.b+e.a.b},l.Ag=function(){return ve(),Jn},l.Bg=function(){return ve(),Gn},I(ylt,"WestToEastRoutingStrategy",1869),D(828,1,{},Rkt),l.Ib=function(){return Hb(this.a)},l.b=0,l.c=!1,l.d=!1,l.f=0,I(f3,"NubSpline",828),D(418,1,{418:1},Kde,Fne),I(f3,"NubSpline/PolarCP",418),D(1480,1,_o,Ahe),l.rg=function(e){return n3n(u(e,36))},l.Kf=function(e,n){ZCn(this,u(e,36),n)};var Bke,Rke,jke,$ke,zke;I(f3,"SplineEdgeRouter",1480),D(274,1,{274:1},vq),l.Ib=function(){return this.a+" ->("+this.c+") "+this.b},l.c=0,I(f3,"SplineEdgeRouter/Dependency",274),D(464,22,{3:1,34:1,22:1,464:1},nmt);var c2,Z5,qke=Lr(f3,"SplineEdgeRouter/SideToProcess",464,Pr,Vhn,Yon),Hke;D(1481,1,Kr,SZ),l.Mb=function(e){return D_(),!u(e,131).o},I(f3,"SplineEdgeRouter/lambda$0$Type",1481),D(1482,1,{},_Z),l.Ze=function(e){return D_(),u(e,131).v+1},I(f3,"SplineEdgeRouter/lambda$1$Type",1482),D(1483,1,ir,MXt),l.Cd=function(e){wun(this.a,this.b,u(e,42))},I(f3,"SplineEdgeRouter/lambda$2$Type",1483),D(1484,1,ir,IXt),l.Cd=function(e){mun(this.a,this.b,u(e,42))},I(f3,"SplineEdgeRouter/lambda$3$Type",1484),D(131,1,{34:1,131:1},a1e,Vkt),l.Fd=function(e){return yrn(this,u(e,131))},l.b=0,l.e=!1,l.f=0,l.g=0,l.j=!1,l.k=!1,l.n=0,l.o=!1,l.p=!1,l.q=!1,l.s=0,l.u=0,l.v=0,l.F=0,I(f3,"SplineSegment",131),D(467,1,{467:1},AZ),l.a=0,l.b=!1,l.c=!1,l.d=!1,l.e=!1,l.f=0,I(f3,"SplineSegment/EdgeInformation",467),D(1198,1,{},uC),I(jg,z8t,1198),D(1199,1,Xr,LZ),l.Ne=function(e,n){return R5n(u(e,121),u(n,121))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(jg,r2e,1199),D(1197,1,{},WWt),I(jg,"MrTree",1197),D(405,22,{3:1,34:1,22:1,405:1,188:1,196:1},q$),l.dg=function(){return A1e(this)},l.qg=function(){return A1e(this)};var sK,WA,YA,XA,tLt=Lr(jg,"TreeLayoutPhases",405,Pr,K1n,Xon),Vke;D(1112,205,mw,kZt),l.rf=function(e,n){var r,s,o,h,d,m,k,T;for(Ie(Me(ne(e,(Cc(),CLt))))||sq((r=new by((xy(),new my(e))),r)),d=n.eh(Elt),d.Ug("build tGraph",1),m=(k=new FI,Qo(k,e),Zt(k,(ji(),JA),e),T=new _r,MEn(e,k,T),XEn(e,k,T),k),d.Vg(),d=n.eh(Elt),d.Ug("Split graph",1),h=BEn(this.a,m),d.Vg(),o=new G(h);o.a"+Z2(this.c):"e_"+$i(this)},I(nA,"TEdge",65),D(121,137,{3:1,121:1,96:1,137:1},FI),l.Ib=function(){var e,n,r,s,o;for(o=null,s=Dr(this.b,0);s.b!=s.d.c;)r=u(Ar(s),39),o+=(r.c==null||r.c.length==0?"n_"+r.g:"n_"+r.c)+` +`;for(n=Dr(this.a,0);n.b!=n.d.c;)e=u(Ar(n),65),o+=(e.b&&e.c?Z2(e.b)+"->"+Z2(e.c):"e_"+$i(e))+` +`;return o};var p_n=I(nA,"TGraph",121);D(643,508,{3:1,508:1,643:1,96:1,137:1}),I(nA,"TShape",643),D(39,643,{3:1,508:1,39:1,643:1,96:1,137:1},Eat),l.Ib=function(){return Z2(this)};var aK=I(nA,"TNode",39);D(236,1,F0,gg),l.Jc=function(e){Fa(this,e)},l.Kc=function(){var e;return e=Dr(this.a.d,0),new M4(e)},I(nA,"TNode/2",236),D(329,1,wa,M4),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(Ar(this.a),65).c},l.Ob=function(){return IM(this.a)},l.Qb=function(){Qst(this.a)},I(nA,"TNode/2/1",329),D(1923,1,zi,FZ),l.Kf=function(e,n){LSn(this,u(e,121),n)},I(ou,"CompactionProcessor",1923),D(1924,1,Xr,UUt),l.Ne=function(e,n){return bpn(this.a,u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$0$Type",1924),D(1925,1,Kr,NXt),l.Mb=function(e){return khn(this.b,this.a,u(e,42))},l.a=0,l.b=0,I(ou,"CompactionProcessor/lambda$1$Type",1925),D(1934,1,Xr,i6),l.Ne=function(e,n){return dln(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$10$Type",1934),D(1935,1,Xr,ER),l.Ne=function(e,n){return _sn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$11$Type",1935),D(1936,1,Xr,BZ),l.Ne=function(e,n){return gln(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$12$Type",1936),D(1926,1,Kr,GUt),l.Mb=function(e){return lsn(this.a,u(e,42))},l.a=0,I(ou,"CompactionProcessor/lambda$2$Type",1926),D(1927,1,Kr,KUt),l.Mb=function(e){return hsn(this.a,u(e,42))},l.a=0,I(ou,"CompactionProcessor/lambda$3$Type",1927),D(1928,1,Kr,XD),l.Mb=function(e){return u(e,39).c.indexOf(nU)==-1},I(ou,"CompactionProcessor/lambda$4$Type",1928),D(1929,1,{},WUt),l.Kb=function(e){return T1n(this.a,u(e,39))},l.a=0,I(ou,"CompactionProcessor/lambda$5$Type",1929),D(1930,1,{},YUt),l.Kb=function(e){return I0n(this.a,u(e,39))},l.a=0,I(ou,"CompactionProcessor/lambda$6$Type",1930),D(1931,1,Xr,XUt),l.Ne=function(e,n){return Hdn(this.a,u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$7$Type",1931),D(1932,1,Xr,QUt),l.Ne=function(e,n){return Vdn(this.a,u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$8$Type",1932),D(1933,1,Xr,RZ),l.Ne=function(e,n){return Asn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$9$Type",1933),D(1921,1,zi,jZ),l.Kf=function(e,n){C8n(u(e,121),n)},I(ou,"DirectionProcessor",1921),D(1913,1,zi,xZt),l.Kf=function(e,n){WEn(this,u(e,121),n)},I(ou,"FanProcessor",1913),D(1937,1,zi,$Z),l.Kf=function(e,n){d8n(u(e,121),n)},I(ou,"GraphBoundsProcessor",1937),D(1938,1,{},zZ),l.Ye=function(e){return u(e,39).e.a},I(ou,"GraphBoundsProcessor/lambda$0$Type",1938),D(1939,1,{},qZ),l.Ye=function(e){return u(e,39).e.b},I(ou,"GraphBoundsProcessor/lambda$1$Type",1939),D(1940,1,{},HZ),l.Ye=function(e){return Krn(u(e,39))},I(ou,"GraphBoundsProcessor/lambda$2$Type",1940),D(1941,1,{},VZ),l.Ye=function(e){return Grn(u(e,39))},I(ou,"GraphBoundsProcessor/lambda$3$Type",1941),D(262,22,{3:1,34:1,22:1,262:1,196:1},mm),l.dg=function(){switch(this.g){case 0:return new QKt;case 1:return new xZt;case 2:return new XKt;case 3:return new SR;case 4:return new UZ;case 8:return new TR;case 5:return new jZ;case 6:return new AR;case 7:return new FZ;case 9:return new $Z;case 10:return new KZ;default:throw at(new zn(jut+(this.f!=null?this.f:""+this.g)))}};var eLt,nLt,rLt,iLt,sLt,aLt,oLt,cLt,uLt,lLt,O1t,b_n=Lr(ou,$ut,262,Pr,pce,Qon),Uke;D(1920,1,zi,TR),l.Kf=function(e,n){SCn(u(e,121),n)},I(ou,"LevelCoordinatesProcessor",1920),D(1918,1,zi,UZ),l.Kf=function(e,n){K6n(this,u(e,121),n)},l.a=0,I(ou,"LevelHeightProcessor",1918),D(1919,1,F0,CR),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return mn(),yE(),mT},I(ou,"LevelHeightProcessor/1",1919),D(1914,1,zi,XKt),l.Kf=function(e,n){o8n(this,u(e,121),n)},I(ou,"LevelProcessor",1914),D(1915,1,Kr,GZ),l.Mb=function(e){return Ie(Me(X(u(e,39),(ji(),u2))))},I(ou,"LevelProcessor/lambda$0$Type",1915),D(1916,1,zi,SR),l.Kf=function(e,n){V4n(this,u(e,121),n)},l.a=0,I(ou,"NeighborsProcessor",1916),D(1917,1,F0,_R),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return mn(),yE(),mT},I(ou,"NeighborsProcessor/1",1917),D(1922,1,zi,AR),l.Kf=function(e,n){KEn(this,u(e,121),n)},l.a=0,I(ou,"NodePositionProcessor",1922),D(1912,1,zi,QKt),l.Kf=function(e,n){ATn(this,u(e,121),n)},I(ou,"RootProcessor",1912),D(1942,1,zi,KZ),l.Kf=function(e,n){Tmn(u(e,121),n)},I(ou,"Untreeifyer",1942),D(392,22,{3:1,34:1,22:1,392:1},Prt);var dP,N1t,hLt,fLt=Lr(CN,"EdgeRoutingMode",392,Pr,$fn,Jon),Gke,gP,zT,P1t,dLt,gLt,F1t,B1t,pLt,R1t,bLt,j1t,QA,$1t,oK,cK,Xf,P1,qT,JA,ZA,Kp,wLt,Kke,z1t,u2,pP,bP;D(862,1,uf,snt),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,T7t),""),Y2e),"Turns on Tree compaction which decreases the size of the whole tree by placing nodes of multiple levels in one large level"),(Pn(),!1)),(Fp(),oa)),ys),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,C7t),""),"Edge End Texture Length"),"Should be set to the length of the texture at the end of an edge. This value can be used to improve the Edge Routing."),7),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,S7t),""),"Tree Level"),"The index for the tree level the node is in"),he(0)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_7t),""),Y2e),"When set to a positive number this option will force the algorithm to place the node to the specified position within the trees layer if weighting is set to constraint"),he(-1)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,A7t),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),yLt),ts),ILt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,L7t),""),"Edge Routing Mode"),"Chooses an Edge Routing algorithm."),mLt),ts),fLt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,D7t),""),"Search Order"),"Which search order to use when computing a spanning tree."),vLt),ts),NLt),en(_n)))),Rpe((new p6,e))};var Wke,Yke,Xke,mLt,Qke,Jke,vLt,Zke,t8e,yLt;I(CN,"MrTreeMetaDataProvider",862),D(1006,1,uf,p6),l.hf=function(e){Rpe(e)};var e8e,xLt,kLt,Mv,ELt,TLt,q1t,n8e,r8e,i8e,s8e,a8e,o8e,c8e,CLt,SLt,_Lt,u8e,tx,uK,ALt,l8e,LLt,H1t,h8e,f8e,d8e,DLt,g8e,h0,MLt;I(CN,"MrTreeOptions",1006),D(1007,1,{},WZ),l.sf=function(){var e;return e=new kZt,e},l.tf=function(e){},I(CN,"MrTreeOptions/MrtreeFactory",1007),D(353,22,{3:1,34:1,22:1,353:1},H$);var V1t,lK,U1t,G1t,ILt=Lr(CN,"OrderWeighting",353,Pr,W1n,Zon),p8e;D(433,22,{3:1,34:1,22:1,433:1},rmt);var OLt,K1t,NLt=Lr(CN,"TreeifyingOrder",433,Pr,qhn,tcn),b8e;D(1486,1,_o,cnt),l.rg=function(e){return u(e,121),w8e},l.Kf=function(e,n){ipn(this,u(e,121),n)};var w8e;I("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1486),D(1487,1,_o,rE),l.rg=function(e){return u(e,121),m8e},l.Kf=function(e,n){h8n(this,u(e,121),n)};var m8e;I(sT,"NodeOrderer",1487),D(1494,1,{},A2t),l.td=function(e){return Ate(e)},I(sT,"NodeOrderer/0methodref$lambda$6$Type",1494),D(1488,1,Kr,att),l.Mb=function(e){return ak(),Ie(Me(X(u(e,39),(ji(),u2))))},I(sT,"NodeOrderer/lambda$0$Type",1488),D(1489,1,Kr,ott),l.Mb=function(e){return ak(),u(X(u(e,39),(Cc(),tx)),17).a<0},I(sT,"NodeOrderer/lambda$1$Type",1489),D(1490,1,Kr,ZUt),l.Mb=function(e){return Ogn(this.a,u(e,39))},I(sT,"NodeOrderer/lambda$2$Type",1490),D(1491,1,Kr,JUt),l.Mb=function(e){return _1n(this.a,u(e,39))},I(sT,"NodeOrderer/lambda$3$Type",1491),D(1492,1,Xr,ctt),l.Ne=function(e,n){return ngn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(sT,"NodeOrderer/lambda$4$Type",1492),D(1493,1,Kr,utt),l.Mb=function(e){return ak(),u(X(u(e,39),(ji(),B1t)),17).a!=0},I(sT,"NodeOrderer/lambda$5$Type",1493),D(1495,1,_o,ont),l.rg=function(e){return u(e,121),v8e},l.Kf=function(e,n){yEn(this,u(e,121),n)},l.b=0;var v8e;I("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1495),D(1496,1,_o,ant),l.rg=function(e){return u(e,121),y8e},l.Kf=function(e,n){eEn(u(e,121),n)};var y8e,w_n=I(Xl,"EdgeRouter",1496);D(1498,1,Xr,stt),l.Ne=function(e,n){return jc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/0methodref$compare$Type",1498),D(1503,1,{},YZ),l.Ye=function(e){return Rt(Ht(e))},I(Xl,"EdgeRouter/1methodref$doubleValue$Type",1503),D(1505,1,Xr,DR),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/2methodref$compare$Type",1505),D(1507,1,Xr,XZ),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/3methodref$compare$Type",1507),D(1509,1,{},LR),l.Ye=function(e){return Rt(Ht(e))},I(Xl,"EdgeRouter/4methodref$doubleValue$Type",1509),D(1511,1,Xr,QZ),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/5methodref$compare$Type",1511),D(1513,1,Xr,QD),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/6methodref$compare$Type",1513),D(1497,1,{},JZ),l.Kb=function(e){return Sg(),u(X(u(e,39),(Cc(),h0)),17)},I(Xl,"EdgeRouter/lambda$0$Type",1497),D(1508,1,{},ZZ),l.Kb=function(e){return zsn(u(e,39))},I(Xl,"EdgeRouter/lambda$11$Type",1508),D(1510,1,{},PXt),l.Kb=function(e){return pun(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$13$Type",1510),D(1512,1,{},FXt),l.Kb=function(e){return qsn(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$15$Type",1512),D(1514,1,Xr,ttt),l.Ne=function(e,n){return tmn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$17$Type",1514),D(1515,1,Xr,ett),l.Ne=function(e,n){return emn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$18$Type",1515),D(1516,1,Xr,ntt),l.Ne=function(e,n){return rmn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$19$Type",1516),D(1499,1,Kr,tGt),l.Mb=function(e){return ifn(this.a,u(e,39))},l.a=0,I(Xl,"EdgeRouter/lambda$2$Type",1499),D(1517,1,Xr,MR),l.Ne=function(e,n){return nmn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$20$Type",1517),D(1500,1,Xr,rtt),l.Ne=function(e,n){return eun(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$3$Type",1500),D(1501,1,Xr,itt),l.Ne=function(e,n){return nun(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$4$Type",1501),D(1502,1,{},ltt),l.Kb=function(e){return Hsn(u(e,39))},I(Xl,"EdgeRouter/lambda$5$Type",1502),D(1504,1,{},BXt),l.Kb=function(e){return bun(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$7$Type",1504),D(1506,1,{},RXt),l.Kb=function(e){return Vsn(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$9$Type",1506),D(675,1,{675:1},bhe),l.e=0,l.f=!1,l.g=!1,I(Xl,"MultiLevelEdgeNodeNodeGap",675),D(1943,1,Xr,htt),l.Ne=function(e,n){return gfn(u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"MultiLevelEdgeNodeNodeGap/lambda$0$Type",1943),D(1944,1,Xr,ftt),l.Ne=function(e,n){return pfn(u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"MultiLevelEdgeNodeNodeGap/lambda$1$Type",1944);var ex;D(500,22,{3:1,34:1,22:1,500:1,188:1,196:1},imt),l.dg=function(){return nle(this)},l.qg=function(){return nle(this)};var hK,nx,PLt=Lr(M7t,"RadialLayoutPhases",500,Pr,Uhn,ecn),x8e;D(1113,205,mw,KWt),l.rf=function(e,n){var r,s,o,h,d,m;if(r=qde(this,e),n.Ug("Radial layout",r.c.length),Ie(Me(ne(e,(Ub(),GLt))))||sq((s=new by((xy(),new my(e))),s)),m=s3n(e),Mi(e,(Y4(),ex),m),!m)throw at(new zn("The given graph is not a tree!"));for(o=Rt(Ht(ne(e,gK))),o==0&&(o=k1e(e)),Mi(e,gK,o),d=new G(qde(this,e));d.a=3)for(ht=u(Dt(J,0),27),Tt=u(Dt(J,1),27),o=0;o+2=ht.f+Tt.f+T||Tt.f>=tt.f+ht.f+T){At=!0;break}else++o;else At=!0;if(!At){for(P=J.i,d=new Zn(J);d.e!=d.i.gc();)h=u(ar(d),27),Mi(h,(ai(),DP),he(P)),--P;mge(e,new S6),n.Vg();return}for(r=(EI(this.a),E1(this.a,(vH(),mP),u(ne(e,kDt),188)),E1(this.a,pK,u(ne(e,bDt),188)),E1(this.a,sdt,u(ne(e,vDt),188)),kmt(this.a,(Wt=new Fs,ri(Wt,mP,(DH(),cdt)),ri(Wt,pK,odt),Ie(Me(ne(e,dDt)))&&ri(Wt,mP,adt),Wt)),XO(this.a,e)),k=1/r.c.length,U=new G(r);U.a0&&Sue((qn(n-1,e.length),e.charCodeAt(n-1)),g2e);)--n;if(s>=n)throw at(new zn("The given string does not contain any numbers."));if(o=s3((Da(s,n,e.length),e.substr(s,n-s)),`,|;|\r| +`),o.length!=2)throw at(new zn("Exactly two numbers are expected, "+o.length+" were found."));try{this.a=Jy(Zy(o[0])),this.b=Jy(Zy(o[1]))}catch(h){throw h=es(h),Lt(h,130)?(r=h,at(new zn(p2e+r))):at(h)}},l.Ib=function(){return"("+this.a+","+this.b+")"},l.a=0,l.b=0;var la=I(yN,"KVector",8);D(75,67,{3:1,4:1,20:1,31:1,56:1,16:1,67:1,15:1,75:1,423:1},Qu,b$,UJt),l.Pc=function(){return xbn(this)},l.cg=function(e){var n,r,s,o,h,d;s=s3(e,`,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`),nh(this);try{for(r=0,h=0,o=0,d=0;r0&&(h%2==0?o=Jy(s[r]):d=Jy(s[r]),h>0&&h%2!=0&&Zr(this,new ae(o,d)),++h),++r}catch(m){throw m=es(m),Lt(m,130)?(n=m,at(new zn("The given string does not match the expected format for vectors."+n))):at(m)}},l.Ib=function(){var e,n,r;for(e=new eh("("),n=Dr(this,0);n.b!=n.d.c;)r=u(Ar(n),8),ni(e,r.a+","+r.b),n.b!=n.d.c&&(e.a+="; ");return(e.a+=")",e).a};var sMt=I(yN,"KVectorChain",75);D(255,22,{3:1,34:1,22:1,255:1},hS);var _dt,CK,SK,EP,TP,_K,aMt=Lr(Nl,"Alignment",255,Pr,m0n,Ccn),e7e;D(991,1,uf,gnt),l.hf=function(e){ege(e)};var oMt,Adt,n7e,cMt,uMt,r7e,lMt,i7e,s7e,hMt,fMt,a7e;I(Nl,"BoxLayouterOptions",991),D(992,1,{},V8),l.sf=function(){var e;return e=new jtt,e},l.tf=function(e){},I(Nl,"BoxLayouterOptions/BoxFactory",992),D(297,22,{3:1,34:1,22:1,297:1},fS);var cL,Ldt,uL,lL,hL,Ddt,Mdt=Lr(Nl,"ContentAlignment",297,Pr,v0n,Scn),o7e;D(699,1,uf,Oj),l.hf=function(e){Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,bwe),""),"Layout Algorithm"),"Select a specific layout algorithm."),(Fp(),ix)),Pe),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,wwe),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),xd),y_n),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,t7t),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),dMt),ts),aMt),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,Dk),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,dTt),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),xd),sMt),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,QV),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),pMt),Qk),Mdt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,TN),""),"Debug Mode"),"Whether additional debug information shall be generated."),(Pn(),!1)),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,blt),""),N8t),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),bMt),ts),gL),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,EN),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),vMt),ts),Udt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,hTt),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,XV),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),kMt),ts),cIt),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ov),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),MMt),xd),MCt),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Y_),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ZV),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,X_),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Fut),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),FMt),ts),hIt),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,JV),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),xd),la),Hi(Qs,lt(ut(G0,1),te,170,0,[Bw,Wp]))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,gN),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),ac),Ra),Hi(Qs,lt(ut(G0,1),te,170,0,[f0]))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,IV),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,W_),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,h7t),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),EMt),xd),sMt),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,g7t),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,p7t),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,KSn),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),xd),C_n),Hi(_n,lt(ut(G0,1),te,170,0,[Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,w7t),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),TMt),xd),DCt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,JEt),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),oa),ys),Hi(Qs,lt(ut(G0,1),te,170,0,[f0,Bw,Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,mwe),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),Wa),zs),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,vwe),""),"Child Area Width"),"The width of the area occupied by the laid out children of a node."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,ywe),""),"Child Area Height"),"The height of the area occupied by the laid out children of a node."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,pN),""),hwe),"Turns topdown layout on and off. If this option is enabled, hierarchical layout will be computed first for the root node and then for its children recursively. Layouts are then scaled down to fit the area provided by their parents. Graphs must follow a certain structure for topdown layout to work properly. {@link TopdownNodeTypes.PARALLEL_NODE} nodes must have children of type {@link TopdownNodeTypes.HIERARCHICAL_NODE} and must define {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} for their children. Furthermore they need to be laid out using an algorithm that is a {@link TopdownLayoutProvider}. Hierarchical nodes can also be parents of other hierarchical nodes and can optionally use a {@link TopdownSizeApproximator} to dynamically set sizes during topdown layout. In this case {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} should be set on the node itself rather than the parent. The values are then used by the size approximator as base values. Hierarchical nodes require the layout option {@link nodeSize.fixedGraphSize} to be true to prevent the algorithm used there from resizing the hierarchical node. This option is not supported if 'Hierarchy Handling' is set to 'INCLUDE_CHILDREN'"),!1),oa),ys),en(_n)))),Bs(e,pN,cv,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,xwe),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,kwe),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),he(100)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Ewe),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Twe),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),he(4e3)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Cwe),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),he(400)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Swe),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_we),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Awe),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Lwe),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,fTt),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),gMt),ts),xIt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,zEt),bd),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,qEt),bd),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Lut),bd),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,HEt),bd),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Put),bd),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,plt),bd),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,VEt),bd),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,KEt),bd),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,UEt),bd),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,GEt),bd),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,h3),bd),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,WEt),bd),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,YEt),bd),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,XEt),bd),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),xd),W7e),Hi(Qs,lt(ut(G0,1),te,170,0,[f0,Bw,Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,m7t),bd),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),KMt),xd),DCt),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,mlt),Iwe),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),ac),Ra),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Bs(e,mlt,wlt,b7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,wlt),Iwe),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),IMt),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,r7t),Owe),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),SMt),xd),MCt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,nT),Owe),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),_Mt),Qk),Lo),Hi(Qs,lt(ut(G0,1),te,170,0,[Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,a7t),uU),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),NMt),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,o7t),uU),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,c7t),uU),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,u7t),uU),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,l7t),uU),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_5),$lt),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),AMt),Qk),xL),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Mk),$lt),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),DMt),Qk),dIt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Ik),$lt),"Node Size Minimum"),"The minimal size to which a node can be reduced."),LMt),xd),la),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,eT),$lt),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,f7t),glt),"Edge Label Placement"),"Gives a hint on where to put edge labels."),wMt),ts),XMt),en(Wp)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,OV),glt),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),oa),ys),en(Wp)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,WSn),"font"),"Font Name"),"Font name used for a label."),ix),Pe),en(Wp)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,Dwe),"font"),"Font Size"),"Font size used for a label."),ac),Ra),en(Wp)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,b7t),zlt),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),xd),la),en(Bw)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,d7t),zlt),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),ac),Ra),en(Bw)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ZEt),zlt),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),jMt),ts),bo),en(Bw)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,QEt),zlt),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),Wa),zs),en(Bw)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,rT),bTt),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),BMt),Qk),OK),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,i7t),bTt),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,s7t),bTt),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,bN),_N),"Topdown Scale Factor"),"The scaling factor to be applied to the nodes laid out within the node in recursive topdown layout. The difference to 'Scale Factor' is that the node itself is not scaled. This value has to be set on hierarchical nodes."),1),Wa),zs),en(_n)))),Bs(e,bN,cv,T7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,gTt),_N),"Topdown Size Approximator"),"The size approximator to be used to set sizes of hierarchical nodes during topdown layout. The default value is null, which results in nodes keeping whatever size is defined for them e.g. through parent parallel node or by manually setting the size."),null),ts),jK),en(Qs)))),Bs(e,gTt,cv,C7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,wN),_N),"Topdown Hierarchical Node Width"),"The fixed size of a hierarchical node when using topdown layout. If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."),150),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Bs(e,wN,cv,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,mN),_N),"Topdown Hierarchical Node Aspect Ratio"),"The fixed aspect ratio of a hierarchical node when using topdown layout. Default is 1/sqrt(2). If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."),1.414),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Bs(e,mN,cv,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,cv),_N),"Topdown Node Type"),"The different node types used for topdown layout. If the node type is set to {@link TopdownNodeTypes.PARALLEL_NODE} the algorithm must be set to a {@link TopdownLayoutProvider} such as {@link TopdownPacking}. The {@link nodeSize.fixedGraphSize} option is technically only required for hierarchical nodes."),null),ts),pIt),en(Qs)))),Bs(e,cv,eT,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,pTt),_N),"Topdown Scale Cap"),"Determines the upper limit for the topdown scale factor. The default value is 1.0 which ensures that nested children never end up appearing larger than their parents in terms of unit sizes such as the font size. If the limit is larger, nodes will fully utilize the available space, but it is counteriniuitive for inner nodes to have a larger scale than outer nodes."),1),Wa),zs),en(_n)))),Bs(e,pTt,cv,E7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,e7t),Nwe),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,n7t),Nwe),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),oa),ys),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Dut),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),Wa),zs),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Mwe),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),xMt),ts),nIt),en(f0)))),eS(e,new Z6(XC(pE(gE(new fy,Qn),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),eS(e,new Z6(XC(pE(gE(new fy,"org.eclipse.elk.orthogonal"),"Orthogonal"),`Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))),eS(e,new Z6(XC(pE(gE(new fy,Du),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),eS(e,new Z6(XC(pE(gE(new fy,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),eS(e,new Z6(XC(pE(gE(new fy,X2e),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),eS(e,new Z6(XC(pE(gE(new fy,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),eS(e,new Z6(XC(pE(gE(new fy,zh),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),$0e((new pnt,e)),ege((new gnt,e)),g0e((new Nj,e))};var VT,c7e,dMt,sx,u7e,l7e,gMt,ax,ox,h7e,CP,pMt,SP,Rw,bMt,Idt,Odt,wMt,mMt,vMt,yMt,xMt,f7e,cx,kMt,d7e,_P,Ndt,AP,Pdt,Iv,EMt,UT,TMt,CMt,SMt,ux,_Mt,jw,AMt,R3,lx,LMt,l2,DMt,AK,LP,Yp,MMt,g7e,IMt,p7e,b7e,OMt,NMt,Fdt,Bdt,Rdt,jdt,PMt,Pl,fL,FMt,$dt,zdt,j3,BMt,RMt,hx,jMt,Jk,DP,qdt,fx,w7e,Hdt,m7e,v7e,$Mt,y7e,zMt,qMt,Zk,HMt,LK,VMt,UMt,$w,x7e,GMt,KMt,WMt,DK,MP,dL,t8,k7e,E7e,MK,T7e,YMt,C7e;I(Nl,"CoreOptions",699),D(88,22,{3:1,34:1,22:1,88:1},JM);var kd,Uo,tc,Ed,Gh,gL=Lr(Nl,N8t,88,Pr,Edn,_cn),S7e;D(278,22,{3:1,34:1,22:1,278:1},Hrt);var GT,$3,KT,XMt=Lr(Nl,"EdgeLabelPlacement",278,Pr,Xfn,Acn),_7e;D(223,22,{3:1,34:1,22:1,223:1},U$);var WT,IP,e8,Vdt,Udt=Lr(Nl,"EdgeRouting",223,Pr,J1n,Lcn),A7e;D(321,22,{3:1,34:1,22:1,321:1},dS);var QMt,JMt,ZMt,tIt,Gdt,eIt,nIt=Lr(Nl,"EdgeType",321,Pr,w0n,Dcn),L7e;D(989,1,uf,pnt),l.hf=function(e){$0e(e)};var rIt,iIt,sIt,aIt,D7e,oIt,pL;I(Nl,"FixedLayouterOptions",989),D(990,1,{},qR),l.sf=function(){var e;return e=new Utt,e},l.tf=function(e){},I(Nl,"FixedLayouterOptions/FixedFactory",990),D(346,22,{3:1,34:1,22:1,346:1},Vrt);var Xp,IK,bL,cIt=Lr(Nl,"HierarchyHandling",346,Pr,Jfn,Mcn),M7e;D(290,22,{3:1,34:1,22:1,290:1},G$);var K0,h2,OP,NP,I7e=Lr(Nl,"LabelSide",290,Pr,Q1n,Icn),O7e;D(95,22,{3:1,34:1,22:1,95:1},B4);var qg,Qf,pf,Jf,bh,Zf,bf,W0,t1,Lo=Lr(Nl,"NodeLabelPlacement",95,Pr,mgn,Ocn),N7e;D(256,22,{3:1,34:1,22:1,256:1},ZM);var uIt,wL,f2,lIt,PP,mL=Lr(Nl,"PortAlignment",256,Pr,Rdn,Ncn),P7e;D(101,22,{3:1,34:1,22:1,101:1},gS);var zw,hu,Y0,YT,Td,d2,hIt=Lr(Nl,"PortConstraints",101,Pr,b0n,Pcn),F7e;D(279,22,{3:1,34:1,22:1,279:1},pS);var vL,yL,Hg,FP,g2,n8,OK=Lr(Nl,"PortLabelPlacement",279,Pr,p0n,Fcn),B7e;D(64,22,{3:1,34:1,22:1,64:1},tI);var Jn,Hn,Kh,Wh,Uu,Ou,Cd,e1,yl,cl,fu,xl,Gu,Ku,n1,wh,mh,wf,Er,bc,Gn,bo=Lr(Nl,"PortSide",64,Pr,Tdn,Bcn),R7e;D(993,1,uf,Nj),l.hf=function(e){g0e(e)};var j7e,$7e,fIt,z7e,q7e;I(Nl,"RandomLayouterOptions",993),D(994,1,{},HR),l.sf=function(){var e;return e=new qtt,e},l.tf=function(e){},I(Nl,"RandomLayouterOptions/RandomFactory",994),D(386,22,{3:1,34:1,22:1,386:1},K$);var z3,BP,RP,qw,xL=Lr(Nl,"SizeConstraint",386,Pr,X1n,Rcn),H7e;D(264,22,{3:1,34:1,22:1,264:1},R4);var jP,NK,XT,Kdt,$P,kL,PK,FK,BK,dIt=Lr(Nl,"SizeOptions",264,Pr,Dgn,jcn),V7e;D(280,22,{3:1,34:1,22:1,280:1},Urt);var q3,gIt,RK,pIt=Lr(Nl,"TopdownNodeTypes",280,Pr,Qfn,$cn),U7e;D(347,22,wTt);var bIt,wIt,jK=Lr(Nl,"TopdownSizeApproximator",347,Pr,Whn,qcn);D(987,347,wTt,_te),l.Tg=function(e){return rhe(e)},Lr(Nl,"TopdownSizeApproximator/1",987,jK,null,null),D(988,347,wTt,fee),l.Tg=function(e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(n=u(ne(e,(ai(),fx)),143),Ce=(kb(),U=new VC,U),$O(Ce,e),rn=new _r,h=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));h.e!=h.i.gc();)s=u(ar(h),27),At=($=new VC,$),tV(At,Ce),$O(At,s),On=rhe(s),H4(At,b.Math.max(s.g,On.a),b.Math.max(s.f,On.b)),yu(rn.f,s,At);for(o=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));o.e!=o.i.gc();)for(s=u(ar(o),27),A=new Zn((!s.e&&(s.e=new kn(Ts,s,7,4)),s.e));A.e!=A.i.gc();)T=u(ar(A),74),Wt=u(Ko(Eo(rn.f,s)),27),se=u(tr(rn,Dt((!T.c&&(T.c=new kn(vr,T,5,8)),T.c),0)),27),Bt=(P=new sM,P),Or((!Bt.b&&(Bt.b=new kn(vr,Bt,4,7)),Bt.b),Wt),Or((!Bt.c&&(Bt.c=new kn(vr,Bt,5,8)),Bt.c),se),ZH(Bt,Ji(Wt)),$O(Bt,T);tt=u(_I(n.f),205);try{tt.rf(Ce,new UR),Hee(n.f,tt)}catch(Dn){throw Dn=es(Dn),Lt(Dn,103)?(J=Dn,at(J)):at(Dn)}return ad(Ce,ox)||ad(Ce,ax)||r8t(Ce),k=Rt(Ht(ne(Ce,ox))),m=Rt(Ht(ne(Ce,ax))),d=k/m,r=Rt(Ht(ne(Ce,MP)))*b.Math.sqrt((!Ce.a&&(Ce.a=new Jt(bi,Ce,10,11)),Ce.a).i),Ze=u(ne(Ce,Yp),107),Tt=Ze.b+Ze.c+1,ht=Ze.d+Ze.a+1,new ae(b.Math.max(Tt,r),b.Math.max(ht,r/d))},Lr(Nl,"TopdownSizeApproximator/2",988,jK,null,null);var G7e;D(344,1,{871:1},S6),l.Ug=function(e,n){return bfe(this,e,n)},l.Vg=function(){jfe(this)},l.Wg=function(){return this.q},l.Xg=function(){return this.f?ast(this.f):null},l.Yg=function(){return ast(this.a)},l.Zg=function(){return this.p},l.$g=function(){return!1},l._g=function(){return this.n},l.ah=function(){return this.p!=null&&!this.b},l.bh=function(e){var n;this.n&&(n=e,ge(this.f,n))},l.dh=function(e,n){var r,s;this.n&&e&&g1n(this,(r=new Tee,s=lct(r,e),Y9n(r),s),(sH(),Ydt))},l.eh=function(e){var n;return this.b?null:(n=Z0n(this,this.g),Zr(this.a,n),n.i=this,this.d=e,n)},l.fh=function(e){e>0&&!this.b&&x4t(this,e)},l.b=!1,l.c=0,l.d=-1,l.e=null,l.f=null,l.g=-1,l.j=!1,l.k=!1,l.n=!1,l.o=0,l.q=0,l.r=0,I(_c,"BasicProgressMonitor",344),D(717,205,mw,jtt),l.rf=function(e,n){mge(e,n)},I(_c,"BoxLayoutProvider",717),D(983,1,Xr,fGt),l.Ne=function(e,n){return Y6n(this,u(e,27),u(n,27))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},l.a=!1,I(_c,"BoxLayoutProvider/1",983),D(163,1,{163:1},Fq,QJt),l.Ib=function(){return this.c?vkt(this.c):Hb(this.b)},I(_c,"BoxLayoutProvider/Group",163),D(320,22,{3:1,34:1,22:1,320:1},W$);var mIt,vIt,yIt,Wdt,xIt=Lr(_c,"BoxLayoutProvider/PackingMode",320,Pr,Z1n,Hcn),K7e;D(984,1,Xr,U8),l.Ne=function(e,n){return ghn(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(_c,"BoxLayoutProvider/lambda$0$Type",984),D(985,1,Xr,G8),l.Ne=function(e,n){return ahn(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(_c,"BoxLayoutProvider/lambda$1$Type",985),D(986,1,Xr,VR),l.Ne=function(e,n){return ohn(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(_c,"BoxLayoutProvider/lambda$2$Type",986),D(1384,1,{845:1},$tt),l.Mg=function(e,n){return C$(),!Lt(n,167)||JWt((ck(),u(e,167)),n)},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1384),D(1385,1,ir,dGt),l.Cd=function(e){Tbn(this.a,u(e,149))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1385),D(1386,1,ir,Htt),l.Cd=function(e){u(e,96),C$()},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1386),D(1390,1,ir,gGt),l.Cd=function(e){Ggn(this.a,u(e,96))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1390),D(1388,1,Kr,qXt),l.Mb=function(e){return sbn(this.a,this.b,u(e,149))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1388),D(1387,1,Kr,HXt),l.Mb=function(e){return $sn(this.a,this.b,u(e,845))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1387),D(1389,1,ir,VXt),l.Cd=function(e){Zun(this.a,this.b,u(e,149))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1389),D(947,1,{},Vtt),l.Kb=function(e){return jQt(e)},l.Fb=function(e){return this===e},I(_c,"ElkUtil/lambda$0$Type",947),D(948,1,ir,UXt),l.Cd=function(e){J5n(this.a,this.b,u(e,74))},l.a=0,l.b=0,I(_c,"ElkUtil/lambda$1$Type",948),D(949,1,ir,GXt),l.Cd=function(e){Hnn(this.a,this.b,u(e,166))},l.a=0,l.b=0,I(_c,"ElkUtil/lambda$2$Type",949),D(950,1,ir,KXt),l.Cd=function(e){Rin(this.a,this.b,u(e,135))},l.a=0,l.b=0,I(_c,"ElkUtil/lambda$3$Type",950),D(951,1,ir,pGt),l.Cd=function(e){yun(this.a,u(e,377))},I(_c,"ElkUtil/lambda$4$Type",951),D(325,1,{34:1,325:1},vnn),l.Fd=function(e){return dsn(this,u(e,242))},l.Fb=function(e){var n;return Lt(e,325)?(n=u(e,325),this.a==n.a):!1},l.Hb=function(){return Ys(this.a)},l.Ib=function(){return this.a+" (exclusive)"},l.a=0,I(_c,"ExclusiveBounds/ExclusiveLowerBound",325),D(1119,205,mw,Utt),l.rf=function(e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze;for(n.Ug("Fixed Layout",1),h=u(ne(e,(ai(),mMt)),223),P=0,$=0,At=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));At.e!=At.i.gc();){for(ht=u(ar(At),27),Ze=u(ne(ht,(aH(),pL)),8),Ze&&(Ch(ht,Ze.a,Ze.b),u(ne(ht,iIt),181).Hc((Yl(),z3))&&(U=u(ne(ht,aIt),8),U.a>0&&U.b>0&&rv(ht,U.a,U.b,!0,!0))),P=b.Math.max(P,ht.i+ht.g),$=b.Math.max($,ht.j+ht.f),T=new Zn((!ht.n&&(ht.n=new Jt(Po,ht,1,7)),ht.n));T.e!=T.i.gc();)m=u(ar(T),135),Ze=u(ne(m,pL),8),Ze&&Ch(m,Ze.a,Ze.b),P=b.Math.max(P,ht.i+m.i+m.g),$=b.Math.max($,ht.j+m.j+m.f);for(se=new Zn((!ht.c&&(ht.c=new Jt(kl,ht,9,9)),ht.c));se.e!=se.i.gc();)for(Wt=u(ar(se),123),Ze=u(ne(Wt,pL),8),Ze&&Ch(Wt,Ze.a,Ze.b),Ce=ht.i+Wt.i,rn=ht.j+Wt.j,P=b.Math.max(P,Ce+Wt.g),$=b.Math.max($,rn+Wt.f),k=new Zn((!Wt.n&&(Wt.n=new Jt(Po,Wt,1,7)),Wt.n));k.e!=k.i.gc();)m=u(ar(k),135),Ze=u(ne(m,pL),8),Ze&&Ch(m,Ze.a,Ze.b),P=b.Math.max(P,Ce+m.i+m.g),$=b.Math.max($,rn+m.j+m.f);for(o=new rr(sr(Og(ht).a.Kc(),new z));Mr(o);)r=u(dr(o),74),A=Ipe(r),P=b.Math.max(P,A.a),$=b.Math.max($,A.b);for(s=new rr(sr(jO(ht).a.Kc(),new z));Mr(s);)r=u(dr(s),74),Ji(O0(r))!=e&&(A=Ipe(r),P=b.Math.max(P,A.a),$=b.Math.max($,A.b))}if(h==(Lg(),WT))for(Tt=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));Tt.e!=Tt.i.gc();)for(ht=u(ar(Tt),27),s=new rr(sr(Og(ht).a.Kc(),new z));Mr(s);)r=u(dr(s),74),d=t7n(r),d.b==0?Mi(r,Iv,null):Mi(r,Iv,d);Ie(Me(ne(e,(aH(),sIt))))||(Bt=u(ne(e,D7e),107),tt=P+Bt.b+Bt.c,J=$+Bt.d+Bt.a,rv(e,tt,J,!0,!0)),n.Vg()},I(_c,"FixedLayoutProvider",1119),D(385,137,{3:1,423:1,385:1,96:1,137:1},iM,Lae),l.cg=function(e){var n,r,s,o,h,d,m,k,T;if(e)try{for(k=s3(e,";,;"),h=k,d=0,m=h.length;d>16&js|n^s<<16},l.Kc=function(){return new bGt(this)},l.Ib=function(){return this.a==null&&this.b==null?"pair(null,null)":this.a==null?"pair(null,"+rc(this.b)+")":this.b==null?"pair("+rc(this.a)+",null)":"pair("+rc(this.a)+","+rc(this.b)+")"},I(_c,"Pair",42),D(995,1,wa,bGt),l.Nb=function(e){Na(this,e)},l.Ob=function(){return!this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)},l.Pb=function(){if(!this.c&&!this.b&&this.a.a!=null)return this.b=!0,this.a.a;if(!this.c&&this.a.b!=null)return this.c=!0,this.a.b;throw at(new cc)},l.Qb=function(){throw this.c&&this.a.b!=null?this.a.b=null:this.b&&this.a.a!=null&&(this.a.a=null),at(new Xu)},l.b=!1,l.c=!1,I(_c,"Pair/1",995),D(454,1,{454:1},sne),l.Fb=function(e){return Nc(this.a,u(e,454).a)&&Nc(this.c,u(e,454).c)&&Nc(this.d,u(e,454).d)&&Nc(this.b,u(e,454).b)},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[this.a,this.c,this.d,this.b]))},l.Ib=function(){return"("+this.a+ao+this.c+ao+this.d+ao+this.b+")"},I(_c,"Quadruple",454),D(1108,205,mw,qtt),l.rf=function(e,n){var r,s,o,h,d;if(n.Ug("Random Layout",1),(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i==0){n.Vg();return}h=u(ne(e,(Y5t(),z7e)),17),h&&h.a!=0?o=new pq(h.a):o=new Kat,r=MM(Ht(ne(e,j7e))),d=MM(Ht(ne(e,q7e))),s=u(ne(e,$7e),107),mCn(e,o,r,d,s),n.Vg()},I(_c,"RandomLayoutProvider",1108),D(240,1,{240:1},xit),l.Fb=function(e){return Nc(this.a,u(e,240).a)&&Nc(this.b,u(e,240).b)&&Nc(this.c,u(e,240).c)},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[this.a,this.b,this.c]))},l.Ib=function(){return"("+this.a+ao+this.b+ao+this.c+")"},I(_c,"Triple",240);var Q7e;D(562,1,{}),l.Lf=function(){return new ae(this.f.i,this.f.j)},l.of=function(e){return One(e,(ai(),Pl))?ne(this.f,J7e):ne(this.f,e)},l.Mf=function(){return new ae(this.f.g,this.f.f)},l.Nf=function(){return this.g},l.pf=function(e){return ad(this.f,e)},l.Of=function(e){Su(this.f,e.a),_u(this.f,e.b)},l.Pf=function(e){qm(this.f,e.a),zm(this.f,e.b)},l.Qf=function(e){this.g=e},l.g=0;var J7e;I(sA,"ElkGraphAdapters/AbstractElkGraphElementAdapter",562),D(563,1,{853:1},r$),l.Rf=function(){var e,n;if(!this.b)for(this.b=hq(Kz(this.a).i),n=new Zn(Kz(this.a));n.e!=n.i.gc();)e=u(ar(n),135),ge(this.b,new Qnt(e));return this.b},l.b=null,I(sA,"ElkGraphAdapters/ElkEdgeAdapter",563),D(308,562,{},my),l.Sf=function(){return Che(this)},l.a=null,I(sA,"ElkGraphAdapters/ElkGraphAdapter",308),D(640,562,{187:1},Qnt),I(sA,"ElkGraphAdapters/ElkLabelAdapter",640),D(639,562,{695:1},sit),l.Rf=function(){return svn(this)},l.Vf=function(){var e;return e=u(ne(this.f,(ai(),UT)),140),!e&&(e=new HC),e},l.Xf=function(){return avn(this)},l.Zf=function(e){var n;n=new Eit(e),Mi(this.f,(ai(),UT),n)},l.$f=function(e){Mi(this.f,(ai(),Yp),new jvt(e))},l.Tf=function(){return this.d},l.Uf=function(){var e,n;if(!this.a)for(this.a=new fe,n=new rr(sr(jO(u(this.f,27)).a.Kc(),new z));Mr(n);)e=u(dr(n),74),ge(this.a,new r$(e));return this.a},l.Wf=function(){var e,n;if(!this.c)for(this.c=new fe,n=new rr(sr(Og(u(this.f,27)).a.Kc(),new z));Mr(n);)e=u(dr(n),74),ge(this.c,new r$(e));return this.c},l.Yf=function(){return Jz(u(this.f,27)).i!=0||Ie(Me(u(this.f,27).of((ai(),_P))))},l._f=function(){R0n(this,(xy(),Q7e))},l.a=null,l.b=null,l.c=null,l.d=null,l.e=null,I(sA,"ElkGraphAdapters/ElkNodeAdapter",639),D(1284,562,{852:1},wGt),l.Rf=function(){return gvn(this)},l.Uf=function(){var e,n;if(!this.a)for(this.a=C0(u(this.f,123).hh().i),n=new Zn(u(this.f,123).hh());n.e!=n.i.gc();)e=u(ar(n),74),ge(this.a,new r$(e));return this.a},l.Wf=function(){var e,n;if(!this.c)for(this.c=C0(u(this.f,123).ih().i),n=new Zn(u(this.f,123).ih());n.e!=n.i.gc();)e=u(ar(n),74),ge(this.c,new r$(e));return this.c},l.ag=function(){return u(u(this.f,123).of((ai(),hx)),64)},l.bg=function(){var e,n,r,s,o,h,d,m;for(s=ed(u(this.f,123)),r=new Zn(u(this.f,123).ih());r.e!=r.i.gc();)for(e=u(ar(r),74),m=new Zn((!e.c&&(e.c=new kn(vr,e,5,8)),e.c));m.e!=m.i.gc();){if(d=u(ar(m),84),qy(Jo(d),s))return!0;if(Jo(d)==s&&Ie(Me(ne(e,(ai(),Ndt)))))return!0}for(n=new Zn(u(this.f,123).hh());n.e!=n.i.gc();)for(e=u(ar(n),74),h=new Zn((!e.b&&(e.b=new kn(vr,e,4,7)),e.b));h.e!=h.i.gc();)if(o=u(ar(h),84),qy(Jo(o),s))return!0;return!1},l.a=null,l.b=null,l.c=null,I(sA,"ElkGraphAdapters/ElkPortAdapter",1284),D(1285,1,Xr,ztt),l.Ne=function(e,n){return G8n(u(e,123),u(n,123))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(sA,"ElkGraphAdapters/PortComparator",1285);var p2=os(qh,"EObject"),QT=os(D5,Bwe),vh=os(D5,Rwe),zP=os(D5,jwe),qP=os(D5,"ElkShape"),vr=os(D5,$we),Ts=os(D5,mTt),Wi=os(D5,zwe),HP=os(qh,qwe),EL=os(qh,"EFactory"),Z7e,Xdt=os(qh,Hwe),F1=os(qh,"EPackage"),da,tTe,eTe,CIt,$K,nTe,SIt,_It,AIt,X0,rTe,iTe,Po=os(D5,vTt),bi=os(D5,yTt),kl=os(D5,xTt);D(93,1,Vwe),l.th=function(){return this.uh(),null},l.uh=function(){return null},l.vh=function(){return this.uh(),!1},l.wh=function(){return!1},l.xh=function(e){Ei(this,e)},I(Pk,"BasicNotifierImpl",93),D(99,93,Wwe),l.Yh=function(){return Hl(this)},l.yh=function(e,n){return e},l.zh=function(){throw at(new Vr)},l.Ah=function(e){var n;return n=yo(u(En(this.Dh(),this.Fh()),19)),this.Ph().Th(this,n.n,n.f,e)},l.Bh=function(e,n){throw at(new Vr)},l.Ch=function(e,n,r){return hh(this,e,n,r)},l.Dh=function(){var e;return this.zh()&&(e=this.zh().Nk(),e)?e:this.ii()},l.Eh=function(){return Kot(this)},l.Fh=function(){throw at(new Vr)},l.Gh=function(){var e,n;return n=this.$h().Ok(),!n&&this.zh().Tk(n=(rS(),e=Jyt(Qd(this.Dh())),e==null?i0t:new sI(this,e))),n},l.Hh=function(e,n){return e},l.Ih=function(e){var n;return n=e.pk(),n?e.Lj():ns(this.Dh(),e)},l.Jh=function(){var e;return e=this.zh(),e?e.Qk():null},l.Kh=function(){return this.zh()?this.zh().Nk():null},l.Lh=function(e,n,r){return AH(this,e,n,r)},l.Mh=function(e){return UE(this,e)},l.Nh=function(e,n){return Ist(this,e,n)},l.Oh=function(){var e;return e=this.zh(),!!e&&e.Rk()},l.Ph=function(){throw at(new Vr)},l.Qh=function(){return xH(this)},l.Rh=function(e,n,r,s){return gk(this,e,n,s)},l.Sh=function(e,n,r){var s;return s=u(En(this.Dh(),n),69),s.wk().zk(this,this.hi(),n-this.ji(),e,r)},l.Th=function(e,n,r,s){return nq(this,e,n,s)},l.Uh=function(e,n,r){var s;return s=u(En(this.Dh(),n),69),s.wk().Ak(this,this.hi(),n-this.ji(),e,r)},l.Vh=function(){return!!this.zh()&&!!this.zh().Pk()},l.Wh=function(e){return iot(this,e)},l.Xh=function(e){return Kne(this,e)},l.Zh=function(e){return bpe(this,e)},l.$h=function(){throw at(new Vr)},l._h=function(){return this.zh()?this.zh().Pk():null},l.ai=function(){return xH(this)},l.bi=function(e,n){qot(this,e,n)},l.ci=function(e){this.$h().Sk(e)},l.di=function(e){this.$h().Vk(e)},l.ei=function(e){this.$h().Uk(e)},l.fi=function(e,n){var r,s,o,h;return h=this.Jh(),h&&e&&(n=so(h.El(),this,n),h.Il(this)),s=this.Ph(),s&&(oct(this,this.Ph(),this.Fh()).Bb&po?(o=s.Qh(),o&&(e?!h&&o.Il(this):o.Hl(this))):(n=(r=this.Fh(),r>=0?this.Ah(n):this.Ph().Th(this,-1-r,null,n)),n=this.Ch(null,-1,n))),this.di(e),n},l.gi=function(e){var n,r,s,o,h,d,m,k;if(r=this.Dh(),h=ns(r,e),n=this.ji(),h>=n)return u(e,69).wk().Dk(this,this.hi(),h-n);if(h<=-1)if(d=y5((il(),ja),r,e),d){if(vo(),u(d,69).xk()||(d=tk($o(ja,d))),o=(s=this.Ih(d),u(s>=0?this.Lh(s,!0,!0):tv(this,d,!0),160)),k=d.Ik(),k>1||k==-1)return u(u(o,220).Sl(e,!1),79)}else throw at(new zn(Jb+e.xe()+qlt));else if(e.Jk())return s=this.Ih(e),u(s>=0?this.Lh(s,!1,!0):tv(this,e,!1),79);return m=new hQt(this,e),m},l.hi=function(){return r4t(this)},l.ii=function(){return(Lb(),Fn).S},l.ji=function(){return fr(this.ii())},l.ki=function(e){jot(this,e)},l.Ib=function(){return qf(this)},I(Rn,"BasicEObjectImpl",99);var sTe;D(119,99,{110:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1}),l.li=function(e){var n;return n=n4t(this),n[e]},l.mi=function(e,n){var r;r=n4t(this),ls(r,e,n)},l.ni=function(e){var n;n=n4t(this),ls(n,e,null)},l.th=function(){return u(jn(this,4),129)},l.uh=function(){throw at(new Vr)},l.vh=function(){return(this.Db&4)!=0},l.zh=function(){throw at(new Vr)},l.oi=function(e){fk(this,2,e)},l.Bh=function(e,n){this.Db=n<<16|this.Db&255,this.oi(e)},l.Dh=function(){return $u(this)},l.Fh=function(){return this.Db>>16},l.Gh=function(){var e,n;return rS(),n=Jyt(Qd((e=u(jn(this,16),29),e||this.ii()))),n==null?i0t:new sI(this,n)},l.wh=function(){return(this.Db&1)==0},l.Jh=function(){return u(jn(this,128),2034)},l.Kh=function(){return u(jn(this,16),29)},l.Oh=function(){return(this.Db&32)!=0},l.Ph=function(){return u(jn(this,2),54)},l.Vh=function(){return(this.Db&64)!=0},l.$h=function(){throw at(new Vr)},l._h=function(){return u(jn(this,64),288)},l.ci=function(e){fk(this,16,e)},l.di=function(e){fk(this,128,e)},l.ei=function(e){fk(this,64,e)},l.hi=function(){return Au(this)},l.Db=0,I(Rn,"MinimalEObjectImpl",119),D(120,119,{110:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.oi=function(e){this.Cb=e},l.Ph=function(){return this.Cb},I(Rn,"MinimalEObjectImpl/Container",120),D(2083,120,{110:1,342:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return mxt(this,e,n,r)},l.Uh=function(e,n,r){return o6t(this,e,n,r)},l.Wh=function(e){return f3t(this,e)},l.bi=function(e,n){r5t(this,e,n)},l.ii=function(){return zc(),iTe},l.ki=function(e){G4t(this,e)},l.nf=function(){return Ule(this)},l.gh=function(){return!this.o&&(this.o=new nl((zc(),X0),Qp,this,0)),this.o},l.of=function(e){return ne(this,e)},l.pf=function(e){return ad(this,e)},l.qf=function(e,n){return Mi(this,e,n)},I(kw,"EMapPropertyHolderImpl",2083),D(572,120,{110:1,377:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},fC),l.Lh=function(e,n,r){switch(e){case 0:return this.a;case 1:return this.b}return AH(this,e,n,r)},l.Wh=function(e){switch(e){case 0:return this.a!=0;case 1:return this.b!=0}return iot(this,e)},l.bi=function(e,n){switch(e){case 0:Rq(this,Rt(Ht(n)));return;case 1:Bq(this,Rt(Ht(n)));return}qot(this,e,n)},l.ii=function(){return zc(),tTe},l.ki=function(e){switch(e){case 0:Rq(this,0);return;case 1:Bq(this,0);return}jot(this,e)},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new ef(qf(this)),e.a+=" (x: ",O4(e,this.a),e.a+=", y: ",O4(e,this.b),e.a+=")",e.a)},l.a=0,l.b=0,I(kw,"ElkBendPointImpl",572),D(739,2083,{110:1,342:1,167:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return S5t(this,e,n,r)},l.Sh=function(e,n,r){return Iot(this,e,n,r)},l.Uh=function(e,n,r){return pat(this,e,n,r)},l.Wh=function(e){return $4t(this,e)},l.bi=function(e,n){Bxt(this,e,n)},l.ii=function(){return zc(),nTe},l.ki=function(e){w5t(this,e)},l.jh=function(){return this.k},l.kh=function(){return Kz(this)},l.Ib=function(){return zat(this)},l.k=null,I(kw,"ElkGraphElementImpl",739),D(740,739,{110:1,342:1,167:1,422:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return N5t(this,e,n,r)},l.Wh=function(e){return $5t(this,e)},l.bi=function(e,n){Rxt(this,e,n)},l.ii=function(){return zc(),rTe},l.ki=function(e){K5t(this,e)},l.lh=function(){return this.f},l.mh=function(){return this.g},l.nh=function(){return this.i},l.oh=function(){return this.j},l.ph=function(e,n){H4(this,e,n)},l.qh=function(e,n){Ch(this,e,n)},l.rh=function(e){Su(this,e)},l.sh=function(e){_u(this,e)},l.Ib=function(){return Bot(this)},l.f=0,l.g=0,l.i=0,l.j=0,I(kw,"ElkShapeImpl",740),D(741,740,{110:1,342:1,84:1,167:1,422:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return hxt(this,e,n,r)},l.Sh=function(e,n,r){return Mxt(this,e,n,r)},l.Uh=function(e,n,r){return Ixt(this,e,n,r)},l.Wh=function(e){return n5t(this,e)},l.bi=function(e,n){V6t(this,e,n)},l.ii=function(){return zc(),eTe},l.ki=function(e){axt(this,e)},l.hh=function(){return!this.d&&(this.d=new kn(Ts,this,8,5)),this.d},l.ih=function(){return!this.e&&(this.e=new kn(Ts,this,7,4)),this.e},I(kw,"ElkConnectableShapeImpl",741),D(326,739,{110:1,342:1,74:1,167:1,326:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},sM),l.Ah=function(e){return _xt(this,e)},l.Lh=function(e,n,r){switch(e){case 3:return AI(this);case 4:return!this.b&&(this.b=new kn(vr,this,4,7)),this.b;case 5:return!this.c&&(this.c=new kn(vr,this,5,8)),this.c;case 6:return!this.a&&(this.a=new Jt(Wi,this,6,6)),this.a;case 7:return Pn(),!this.b&&(this.b=new kn(vr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i<=1));case 8:return Pn(),!!S_(this);case 9:return Pn(),!!Zm(this);case 10:return Pn(),!this.b&&(this.b=new kn(vr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i!=0)}return S5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 3:return this.Cb&&(r=(s=this.Db>>16,s>=0?_xt(this,r):this.Cb.Th(this,-1-s,null,r))),cvt(this,u(e,27),r);case 4:return!this.b&&(this.b=new kn(vr,this,4,7)),vu(this.b,e,r);case 5:return!this.c&&(this.c=new kn(vr,this,5,8)),vu(this.c,e,r);case 6:return!this.a&&(this.a=new Jt(Wi,this,6,6)),vu(this.a,e,r)}return Iot(this,e,n,r)},l.Uh=function(e,n,r){switch(n){case 3:return cvt(this,null,r);case 4:return!this.b&&(this.b=new kn(vr,this,4,7)),so(this.b,e,r);case 5:return!this.c&&(this.c=new kn(vr,this,5,8)),so(this.c,e,r);case 6:return!this.a&&(this.a=new Jt(Wi,this,6,6)),so(this.a,e,r)}return pat(this,e,n,r)},l.Wh=function(e){switch(e){case 3:return!!AI(this);case 4:return!!this.b&&this.b.i!=0;case 5:return!!this.c&&this.c.i!=0;case 6:return!!this.a&&this.a.i!=0;case 7:return!this.b&&(this.b=new kn(vr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i<=1));case 8:return S_(this);case 9:return Zm(this);case 10:return!this.b&&(this.b=new kn(vr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i!=0)}return $4t(this,e)},l.bi=function(e,n){switch(e){case 3:ZH(this,u(n,27));return;case 4:!this.b&&(this.b=new kn(vr,this,4,7)),Ir(this.b),!this.b&&(this.b=new kn(vr,this,4,7)),gs(this.b,u(n,16));return;case 5:!this.c&&(this.c=new kn(vr,this,5,8)),Ir(this.c),!this.c&&(this.c=new kn(vr,this,5,8)),gs(this.c,u(n,16));return;case 6:!this.a&&(this.a=new Jt(Wi,this,6,6)),Ir(this.a),!this.a&&(this.a=new Jt(Wi,this,6,6)),gs(this.a,u(n,16));return}Bxt(this,e,n)},l.ii=function(){return zc(),CIt},l.ki=function(e){switch(e){case 3:ZH(this,null);return;case 4:!this.b&&(this.b=new kn(vr,this,4,7)),Ir(this.b);return;case 5:!this.c&&(this.c=new kn(vr,this,5,8)),Ir(this.c);return;case 6:!this.a&&(this.a=new Jt(Wi,this,6,6)),Ir(this.a);return}w5t(this,e)},l.Ib=function(){return Nge(this)},I(kw,"ElkEdgeImpl",326),D(451,2083,{110:1,342:1,166:1,451:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},K8),l.Ah=function(e){return Ext(this,e)},l.Lh=function(e,n,r){switch(e){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new Ps(vh,this,5)),this.a;case 6:return Hne(this);case 7:return n?uot(this):this.i;case 8:return n?cot(this):this.f;case 9:return!this.g&&(this.g=new kn(Wi,this,9,10)),this.g;case 10:return!this.e&&(this.e=new kn(Wi,this,10,9)),this.e;case 11:return this.d}return mxt(this,e,n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?Ext(this,r):this.Cb.Th(this,-1-o,null,r))),ovt(this,u(e,74),r);case 9:return!this.g&&(this.g=new kn(Wi,this,9,10)),vu(this.g,e,r);case 10:return!this.e&&(this.e=new kn(Wi,this,10,9)),vu(this.e,e,r)}return h=u(En((s=u(jn(this,16),29),s||(zc(),$K)),n),69),h.wk().zk(this,Au(this),n-fr((zc(),$K)),e,r)},l.Uh=function(e,n,r){switch(n){case 5:return!this.a&&(this.a=new Ps(vh,this,5)),so(this.a,e,r);case 6:return ovt(this,null,r);case 9:return!this.g&&(this.g=new kn(Wi,this,9,10)),so(this.g,e,r);case 10:return!this.e&&(this.e=new kn(Wi,this,10,9)),so(this.e,e,r)}return o6t(this,e,n,r)},l.Wh=function(e){switch(e){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return!!this.a&&this.a.i!=0;case 6:return!!Hne(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&this.g.i!=0;case 10:return!!this.e&&this.e.i!=0;case 11:return this.d!=null}return f3t(this,e)},l.bi=function(e,n){switch(e){case 1:QE(this,Rt(Ht(n)));return;case 2:ZE(this,Rt(Ht(n)));return;case 3:XE(this,Rt(Ht(n)));return;case 4:JE(this,Rt(Ht(n)));return;case 5:!this.a&&(this.a=new Ps(vh,this,5)),Ir(this.a),!this.a&&(this.a=new Ps(vh,this,5)),gs(this.a,u(n,16));return;case 6:Ode(this,u(n,74));return;case 7:Uq(this,u(n,84));return;case 8:Vq(this,u(n,84));return;case 9:!this.g&&(this.g=new kn(Wi,this,9,10)),Ir(this.g),!this.g&&(this.g=new kn(Wi,this,9,10)),gs(this.g,u(n,16));return;case 10:!this.e&&(this.e=new kn(Wi,this,10,9)),Ir(this.e),!this.e&&(this.e=new kn(Wi,this,10,9)),gs(this.e,u(n,16));return;case 11:A4t(this,Gr(n));return}r5t(this,e,n)},l.ii=function(){return zc(),$K},l.ki=function(e){switch(e){case 1:QE(this,0);return;case 2:ZE(this,0);return;case 3:XE(this,0);return;case 4:JE(this,0);return;case 5:!this.a&&(this.a=new Ps(vh,this,5)),Ir(this.a);return;case 6:Ode(this,null);return;case 7:Uq(this,null);return;case 8:Vq(this,null);return;case 9:!this.g&&(this.g=new kn(Wi,this,9,10)),Ir(this.g);return;case 10:!this.e&&(this.e=new kn(Wi,this,10,9)),Ir(this.e);return;case 11:A4t(this,null);return}G4t(this,e)},l.Ib=function(){return K1e(this)},l.b=0,l.c=0,l.d=null,l.j=0,l.k=0,I(kw,"ElkEdgeSectionImpl",451),D(158,120,{110:1,94:1,93:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1}),l.Lh=function(e,n,r){var s;return e==0?(!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab):Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r)):(o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().zk(this,Au(this),n-fr(this.ii()),e,r))},l.Uh=function(e,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r)):(o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r))},l.Wh=function(e){var n;return e==0?!!this.Ab&&this.Ab.i!=0:Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.Zh=function(e){return e8t(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.di=function(e){fk(this,128,e)},l.ii=function(){return wn(),ETe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.pi=function(){this.Bb|=1},l.qi=function(e){return O_(this,e)},l.Bb=0,I(Rn,"EModelElementImpl",158),D(720,158,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1},Fj),l.ri=function(e,n){return upe(this,e,n)},l.si=function(e){var n,r,s,o,h;if(this.a!=sh(e)||e.Bb&256)throw at(new zn(Vlt+e.zb+fv));for(s=Yo(e);Wc(s.a).i!=0;){if(r=u(QO(s,0,(n=u(Dt(Wc(s.a),0),89),h=n.c,Lt(h,90)?u(h,29):(wn(),xf))),29),Jm(r))return o=sh(r).wi().si(r),u(o,54).ci(e),o;s=Yo(r)}return(e.D!=null?e.D:e.B)=="java.util.Map$Entry"?new Cte(e):new Xvt(e)},l.ti=function(e,n){return iv(this,e,n)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.a}return Ih(this,e-fr((wn(),v2)),En((s=u(jn(this,16),29),s||v2),e),n,r)},l.Sh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 1:return this.a&&(r=u(this.a,54).Th(this,4,F1,r)),b5t(this,u(e,241),r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),v2)),n),69),o.wk().zk(this,Au(this),n-fr((wn(),v2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 1:return b5t(this,null,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),v2)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),v2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return!!this.a}return Dh(this,e-fr((wn(),v2)),En((n=u(jn(this,16),29),n||v2),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:Lfe(this,u(n,241));return}Fh(this,e-fr((wn(),v2)),En((r=u(jn(this,16),29),r||v2),e),n)},l.ii=function(){return wn(),v2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lfe(this,null);return}Ph(this,e-fr((wn(),v2)),En((n=u(jn(this,16),29),n||v2),e))};var TL,LIt,aTe;I(Rn,"EFactoryImpl",720),D(1037,720,{110:1,2113:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1},W8),l.ri=function(e,n){switch(e.hk()){case 12:return u(n,149).Pg();case 13:return rc(n);default:throw at(new zn(lT+e.xe()+fv))}},l.si=function(e){var n,r,s,o,h,d,m,k;switch(e.G==-1&&(e.G=(n=sh(e),n?Np(n.vi(),e):-1)),e.G){case 4:return h=new Y8,h;case 6:return d=new VC,d;case 7:return m=new J2t,m;case 8:return s=new sM,s;case 9:return r=new fC,r;case 10:return o=new K8,o;case 11:return k=new GR,k;default:throw at(new zn(Vlt+e.zb+fv))}},l.ti=function(e,n){switch(e.hk()){case 13:case 12:return null;default:throw at(new zn(lT+e.xe()+fv))}},I(kw,"ElkGraphFactoryImpl",1037),D(448,158,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1}),l.Gh=function(){var e,n;return n=(e=u(jn(this,16),29),Jyt(Qd(e||this.ii()))),n==null?(rS(),rS(),i0t):new WJt(this,n)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.xe()}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:this.ui(Gr(n));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),TTe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:this.ui(null);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.xe=function(){return this.zb},l.ui=function(e){mu(this,e)},l.Ib=function(){return u_(this)},l.zb=null,I(Rn,"ENamedElementImpl",448),D(184,448,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1},xne),l.Ah=function(e){return $he(this,e)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new Iy(this,B1,this)),this.rb;case 6:return!this.vb&&(this.vb=new z6(F1,this,6,7)),this.vb;case 7:return n?this.Db>>16==7?u(this.Cb,241):null:Xne(this)}return Ih(this,e-fr((wn(),eb)),En((s=u(jn(this,16),29),s||eb),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 4:return this.sb&&(r=u(this.sb,54).Th(this,1,EL,r)),v5t(this,u(e,479),r);case 5:return!this.rb&&(this.rb=new Iy(this,B1,this)),vu(this.rb,e,r);case 6:return!this.vb&&(this.vb=new z6(F1,this,6,7)),vu(this.vb,e,r);case 7:return this.Cb&&(r=(o=this.Db>>16,o>=0?$he(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,7,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),eb)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),eb)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 4:return v5t(this,null,r);case 5:return!this.rb&&(this.rb=new Iy(this,B1,this)),so(this.rb,e,r);case 6:return!this.vb&&(this.vb=new z6(F1,this,6,7)),so(this.vb,e,r);case 7:return hh(this,null,7,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),eb)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),eb)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return!!this.sb;case 5:return!!this.rb&&this.rb.i!=0;case 6:return!!this.vb&&this.vb.i!=0;case 7:return!!Xne(this)}return Dh(this,e-fr((wn(),eb)),En((n=u(jn(this,16),29),n||eb),e))},l.Zh=function(e){var n;return n=okn(this,e),n||e8t(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:Qq(this,Gr(n));return;case 3:Xq(this,Gr(n));return;case 4:Fot(this,u(n,479));return;case 5:!this.rb&&(this.rb=new Iy(this,B1,this)),Ir(this.rb),!this.rb&&(this.rb=new Iy(this,B1,this)),gs(this.rb,u(n,16));return;case 6:!this.vb&&(this.vb=new z6(F1,this,6,7)),Ir(this.vb),!this.vb&&(this.vb=new z6(F1,this,6,7)),gs(this.vb,u(n,16));return}Fh(this,e-fr((wn(),eb)),En((r=u(jn(this,16),29),r||eb),e),n)},l.ei=function(e){var n,r;if(e&&this.rb)for(r=new Zn(this.rb);r.e!=r.i.gc();)n=ar(r),Lt(n,364)&&(u(n,364).w=null);fk(this,64,e)},l.ii=function(){return wn(),eb},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:Qq(this,null);return;case 3:Xq(this,null);return;case 4:Fot(this,null);return;case 5:!this.rb&&(this.rb=new Iy(this,B1,this)),Ir(this.rb);return;case 6:!this.vb&&(this.vb=new z6(F1,this,6,7)),Ir(this.vb);return}Ph(this,e-fr((wn(),eb)),En((n=u(jn(this,16),29),n||eb),e))},l.pi=function(){kot(this)},l.vi=function(){return!this.rb&&(this.rb=new Iy(this,B1,this)),this.rb},l.wi=function(){return this.sb},l.xi=function(){return this.ub},l.yi=function(){return this.xb},l.zi=function(){return this.yb},l.Ai=function(e){this.ub=e},l.Ib=function(){var e;return this.Db&64?u_(this):(e=new ef(u_(this)),e.a+=" (nsURI: ",Mo(e,this.yb),e.a+=", nsPrefix: ",Mo(e,this.xb),e.a+=")",e.a)},l.xb=null,l.yb=null,I(Rn,"EPackageImpl",184),D(569,184,{110:1,2115:1,569:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1},nde),l.q=!1,l.r=!1;var oTe=!1;I(kw,"ElkGraphPackageImpl",569),D(366,740,{110:1,342:1,167:1,135:1,422:1,366:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},Y8),l.Ah=function(e){return Txt(this,e)},l.Lh=function(e,n,r){switch(e){case 7:return Qne(this);case 8:return this.a}return N5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 7:return this.Cb&&(r=(s=this.Db>>16,s>=0?Txt(this,r):this.Cb.Th(this,-1-s,null,r))),hyt(this,u(e,167),r)}return Iot(this,e,n,r)},l.Uh=function(e,n,r){return n==7?hyt(this,null,r):pat(this,e,n,r)},l.Wh=function(e){switch(e){case 7:return!!Qne(this);case 8:return!hn("",this.a)}return $5t(this,e)},l.bi=function(e,n){switch(e){case 7:rkt(this,u(n,167));return;case 8:E4t(this,Gr(n));return}Rxt(this,e,n)},l.ii=function(){return zc(),SIt},l.ki=function(e){switch(e){case 7:rkt(this,null);return;case 8:E4t(this,"");return}K5t(this,e)},l.Ib=function(){return Hfe(this)},l.a="",I(kw,"ElkLabelImpl",366),D(207,741,{110:1,342:1,84:1,167:1,27:1,422:1,207:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},VC),l.Ah=function(e){return Axt(this,e)},l.Lh=function(e,n,r){switch(e){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),this.c;case 10:return!this.a&&(this.a=new Jt(bi,this,10,11)),this.a;case 11:return Ji(this);case 12:return!this.b&&(this.b=new Jt(Ts,this,12,3)),this.b;case 13:return Pn(),!this.a&&(this.a=new Jt(bi,this,10,11)),this.a.i>0}return hxt(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),vu(this.c,e,r);case 10:return!this.a&&(this.a=new Jt(bi,this,10,11)),vu(this.a,e,r);case 11:return this.Cb&&(r=(s=this.Db>>16,s>=0?Axt(this,r):this.Cb.Th(this,-1-s,null,r))),mvt(this,u(e,27),r);case 12:return!this.b&&(this.b=new Jt(Ts,this,12,3)),vu(this.b,e,r)}return Mxt(this,e,n,r)},l.Uh=function(e,n,r){switch(n){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),so(this.c,e,r);case 10:return!this.a&&(this.a=new Jt(bi,this,10,11)),so(this.a,e,r);case 11:return mvt(this,null,r);case 12:return!this.b&&(this.b=new Jt(Ts,this,12,3)),so(this.b,e,r)}return Ixt(this,e,n,r)},l.Wh=function(e){switch(e){case 9:return!!this.c&&this.c.i!=0;case 10:return!!this.a&&this.a.i!=0;case 11:return!!Ji(this);case 12:return!!this.b&&this.b.i!=0;case 13:return!this.a&&(this.a=new Jt(bi,this,10,11)),this.a.i>0}return n5t(this,e)},l.bi=function(e,n){switch(e){case 9:!this.c&&(this.c=new Jt(kl,this,9,9)),Ir(this.c),!this.c&&(this.c=new Jt(kl,this,9,9)),gs(this.c,u(n,16));return;case 10:!this.a&&(this.a=new Jt(bi,this,10,11)),Ir(this.a),!this.a&&(this.a=new Jt(bi,this,10,11)),gs(this.a,u(n,16));return;case 11:tV(this,u(n,27));return;case 12:!this.b&&(this.b=new Jt(Ts,this,12,3)),Ir(this.b),!this.b&&(this.b=new Jt(Ts,this,12,3)),gs(this.b,u(n,16));return}V6t(this,e,n)},l.ii=function(){return zc(),_It},l.ki=function(e){switch(e){case 9:!this.c&&(this.c=new Jt(kl,this,9,9)),Ir(this.c);return;case 10:!this.a&&(this.a=new Jt(bi,this,10,11)),Ir(this.a);return;case 11:tV(this,null);return;case 12:!this.b&&(this.b=new Jt(Ts,this,12,3)),Ir(this.b);return}axt(this,e)},l.Ib=function(){return vkt(this)},I(kw,"ElkNodeImpl",207),D(193,741,{110:1,342:1,84:1,167:1,123:1,422:1,193:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},J2t),l.Ah=function(e){return Cxt(this,e)},l.Lh=function(e,n,r){return e==9?ed(this):hxt(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 9:return this.Cb&&(r=(s=this.Db>>16,s>=0?Cxt(this,r):this.Cb.Th(this,-1-s,null,r))),uvt(this,u(e,27),r)}return Mxt(this,e,n,r)},l.Uh=function(e,n,r){return n==9?uvt(this,null,r):Ixt(this,e,n,r)},l.Wh=function(e){return e==9?!!ed(this):n5t(this,e)},l.bi=function(e,n){switch(e){case 9:Z6t(this,u(n,27));return}V6t(this,e,n)},l.ii=function(){return zc(),AIt},l.ki=function(e){switch(e){case 9:Z6t(this,null);return}axt(this,e)},l.Ib=function(){return I0e(this)},I(kw,"ElkPortImpl",193);var cTe=os(oo,"BasicEMap/Entry");D(1122,120,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1,119:1,120:1},GR),l.Fb=function(e){return this===e},l.ld=function(){return this.b},l.Hb=function(){return Em(this)},l.Di=function(e){T4t(this,u(e,149))},l.Lh=function(e,n,r){switch(e){case 0:return this.b;case 1:return this.c}return AH(this,e,n,r)},l.Wh=function(e){switch(e){case 0:return!!this.b;case 1:return this.c!=null}return iot(this,e)},l.bi=function(e,n){switch(e){case 0:T4t(this,u(n,149));return;case 1:k4t(this,n);return}qot(this,e,n)},l.ii=function(){return zc(),X0},l.ki=function(e){switch(e){case 0:T4t(this,null);return;case 1:k4t(this,null);return}jot(this,e)},l.Bi=function(){var e;return this.a==-1&&(e=this.b,this.a=e?$i(e):0),this.a},l.md=function(){return this.c},l.Ci=function(e){this.a=e},l.nd=function(e){var n;return n=this.c,k4t(this,e),n},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new yb,ni(ni(ni(e,this.b?this.b.Pg():Vu),But),ES(this.c)),e.a)},l.a=-1,l.c=null;var Qp=I(kw,"ElkPropertyToValueMapEntryImpl",1122);D(996,1,{},WR),I(Ba,"JsonAdapter",996),D(216,63,Pg,Rd),I(Ba,"JsonImportException",216),D(868,1,{},zhe),I(Ba,"JsonImporter",868),D(903,1,{},WXt),I(Ba,"JsonImporter/lambda$0$Type",903),D(904,1,{},YXt),I(Ba,"JsonImporter/lambda$1$Type",904),D(912,1,{},mGt),I(Ba,"JsonImporter/lambda$10$Type",912),D(914,1,{},XXt),I(Ba,"JsonImporter/lambda$11$Type",914),D(915,1,{},QXt),I(Ba,"JsonImporter/lambda$12$Type",915),D(921,1,{},une),I(Ba,"JsonImporter/lambda$13$Type",921),D(920,1,{},lne),I(Ba,"JsonImporter/lambda$14$Type",920),D(916,1,{},JXt),I(Ba,"JsonImporter/lambda$15$Type",916),D(917,1,{},ZXt),I(Ba,"JsonImporter/lambda$16$Type",917),D(918,1,{},tQt),I(Ba,"JsonImporter/lambda$17$Type",918),D(919,1,{},eQt),I(Ba,"JsonImporter/lambda$18$Type",919),D(924,1,{},vGt),I(Ba,"JsonImporter/lambda$19$Type",924),D(905,1,{},yGt),I(Ba,"JsonImporter/lambda$2$Type",905),D(922,1,{},xGt),I(Ba,"JsonImporter/lambda$20$Type",922),D(923,1,{},kGt),I(Ba,"JsonImporter/lambda$21$Type",923),D(927,1,{},EGt),I(Ba,"JsonImporter/lambda$22$Type",927),D(925,1,{},TGt),I(Ba,"JsonImporter/lambda$23$Type",925),D(926,1,{},CGt),I(Ba,"JsonImporter/lambda$24$Type",926),D(929,1,{},SGt),I(Ba,"JsonImporter/lambda$25$Type",929),D(928,1,{},_Gt),I(Ba,"JsonImporter/lambda$26$Type",928),D(930,1,ir,nQt),l.Cd=function(e){x0n(this.b,this.a,Gr(e))},I(Ba,"JsonImporter/lambda$27$Type",930),D(931,1,ir,rQt),l.Cd=function(e){k0n(this.b,this.a,Gr(e))},I(Ba,"JsonImporter/lambda$28$Type",931),D(932,1,{},iQt),I(Ba,"JsonImporter/lambda$29$Type",932),D(908,1,{},AGt),I(Ba,"JsonImporter/lambda$3$Type",908),D(933,1,{},sQt),I(Ba,"JsonImporter/lambda$30$Type",933),D(934,1,{},LGt),I(Ba,"JsonImporter/lambda$31$Type",934),D(935,1,{},DGt),I(Ba,"JsonImporter/lambda$32$Type",935),D(936,1,{},MGt),I(Ba,"JsonImporter/lambda$33$Type",936),D(937,1,{},IGt),I(Ba,"JsonImporter/lambda$34$Type",937),D(870,1,{},OGt),I(Ba,"JsonImporter/lambda$35$Type",870),D(941,1,{},ZZt),I(Ba,"JsonImporter/lambda$36$Type",941),D(938,1,ir,NGt),l.Cd=function(e){_dn(this.a,u(e,377))},I(Ba,"JsonImporter/lambda$37$Type",938),D(939,1,ir,aQt),l.Cd=function(e){cin(this.a,this.b,u(e,166))},I(Ba,"JsonImporter/lambda$38$Type",939),D(940,1,ir,oQt),l.Cd=function(e){uin(this.a,this.b,u(e,166))},I(Ba,"JsonImporter/lambda$39$Type",940),D(906,1,{},PGt),I(Ba,"JsonImporter/lambda$4$Type",906),D(942,1,ir,FGt),l.Cd=function(e){Adn(this.a,u(e,8))},I(Ba,"JsonImporter/lambda$40$Type",942),D(907,1,{},BGt),I(Ba,"JsonImporter/lambda$5$Type",907),D(911,1,{},RGt),I(Ba,"JsonImporter/lambda$6$Type",911),D(909,1,{},jGt),I(Ba,"JsonImporter/lambda$7$Type",909),D(910,1,{},$Gt),I(Ba,"JsonImporter/lambda$8$Type",910),D(913,1,{},zGt),I(Ba,"JsonImporter/lambda$9$Type",913),D(961,1,ir,qGt),l.Cd=function(e){Y6(this.a,new Oy(Gr(e)))},I(Ba,"JsonMetaDataConverter/lambda$0$Type",961),D(962,1,ir,HGt),l.Cd=function(e){vln(this.a,u(e,245))},I(Ba,"JsonMetaDataConverter/lambda$1$Type",962),D(963,1,ir,VGt),l.Cd=function(e){mfn(this.a,u(e,143))},I(Ba,"JsonMetaDataConverter/lambda$2$Type",963),D(964,1,ir,UGt),l.Cd=function(e){yln(this.a,u(e,170))},I(Ba,"JsonMetaDataConverter/lambda$3$Type",964),D(245,22,{3:1,34:1,22:1,245:1},P6);var zK,qK,Qdt,HK,VK,UK,Jdt,Zdt,GK=Lr(fN,"GraphFeature",245,Pr,rgn,Gcn),uTe;D(11,1,{34:1,149:1},Oi,rs,un,_a),l.Fd=function(e){return gsn(this,u(e,149))},l.Fb=function(e){return One(this,e)},l.Sg=function(){return Se(this)},l.Pg=function(){return this.b},l.Hb=function(){return _p(this.b)},l.Ib=function(){return this.b},I(fN,"Property",11),D(671,1,Xr,Fnt),l.Ne=function(e,n){return T2n(this,u(e,96),u(n,96))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(fN,"PropertyHolderComparator",671),D(709,1,wa,O2t),l.Nb=function(e){Na(this,e)},l.Pb=function(){return C0n(this)},l.Qb=function(){zWt()},l.Ob=function(){return!!this.a},I(dU,"ElkGraphUtil/AncestorIterator",709);var DIt=os(oo,"EList");D(70,56,{20:1,31:1,56:1,16:1,15:1,70:1,61:1}),l.bd=function(e,n){h_(this,e,n)},l.Fc=function(e){return Or(this,e)},l.cd=function(e,n){return K4t(this,e,n)},l.Gc=function(e){return gs(this,e)},l.Ii=function(){return new $6(this)},l.Ji=function(){return new aI(this)},l.Ki=function(e){return QI(this,e)},l.Li=function(){return!0},l.Mi=function(e,n){},l.Ni=function(){},l.Oi=function(e,n){Fst(this,e,n)},l.Pi=function(e,n,r){},l.Qi=function(e,n){},l.Ri=function(e,n,r){},l.Fb=function(e){return b0e(this,e)},l.Hb=function(){return H4t(this)},l.Si=function(){return!1},l.Kc=function(){return new Zn(this)},l.ed=function(){return new j6(this)},l.fd=function(e){var n;if(n=this.gc(),e<0||e>n)throw at(new Dy(e,n));return new zit(this,e)},l.Ui=function(e,n){this.Ti(e,this.dd(n))},l.Mc=function(e){return Dq(this,e)},l.Wi=function(e,n){return n},l.hd=function(e,n){return c5(this,e,n)},l.Ib=function(){return B5t(this)},l.Yi=function(){return!0},l.Zi=function(e,n){return d7(this,n)},I(oo,"AbstractEList",70),D(66,70,o0,pb,$m,B4t),l.Ei=function(e,n){return Oot(this,e,n)},l.Fi=function(e){return fhe(this,e)},l.Gi=function(e,n){fO(this,e,n)},l.Hi=function(e){PI(this,e)},l.$i=function(e){return Q3t(this,e)},l.$b=function(){KS(this)},l.Hc=function(e){return L7(this,e)},l.Xb=function(e){return Dt(this,e)},l._i=function(e){var n,r,s;++this.j,r=this.g==null?0:this.g.length,e>r&&(s=this.g,n=r+(r/2|0)+4,n=0?(this.gd(n),!0):!1},l.Xi=function(e,n){return this.Dj(e,this.Zi(e,n))},l.gc=function(){return this.Ej()},l.Pc=function(){return this.Fj()},l.Qc=function(e){return this.Gj(e)},l.Ib=function(){return this.Hj()},I(oo,"DelegatingEList",2093),D(2094,2093,Ime),l.Ei=function(e,n){return Mkt(this,e,n)},l.Fi=function(e){return this.Ei(this.Ej(),e)},l.Gi=function(e,n){rde(this,e,n)},l.Hi=function(e){U1e(this,e)},l.Li=function(){return!this.Mj()},l.$b=function(){j_(this)},l.Ij=function(e,n,r,s,o){return new Ine(this,e,n,r,s,o)},l.Jj=function(e){Ei(this.jj(),e)},l.Kj=function(){return null},l.Lj=function(){return-1},l.jj=function(){return null},l.Mj=function(){return!1},l.Nj=function(e,n){return n},l.Oj=function(e,n){return n},l.Pj=function(){return!1},l.Qj=function(){return!this.Aj()},l.Ti=function(e,n){var r,s;return this.Pj()?(s=this.Qj(),r=i6t(this,e,n),this.Jj(this.Ij(7,he(n),r,e,s)),r):i6t(this,e,n)},l.gd=function(e){var n,r,s,o;return this.Pj()?(r=null,s=this.Qj(),n=this.Ij(4,o=_z(this,e),null,e,s),this.Mj()&&o?(r=this.Oj(o,r),r?(r.nj(n),r.oj()):this.Jj(n)):r?(r.nj(n),r.oj()):this.Jj(n),o):(o=_z(this,e),this.Mj()&&o&&(r=this.Oj(o,null),r&&r.oj()),o)},l.Xi=function(e,n){return lge(this,e,n)},I(Pk,"DelegatingNotifyingListImpl",2094),D(152,1,LN),l.nj=function(e){return Hxt(this,e)},l.oj=function(){Vst(this)},l.gj=function(){return this.d},l.Kj=function(){return null},l.Rj=function(){return null},l.hj=function(e){return-1},l.ij=function(){return Qde(this)},l.jj=function(){return null},l.kj=function(){return ckt(this)},l.lj=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},l.Sj=function(){return!1},l.mj=function(e){var n,r,s,o,h,d,m,k,T,A,P;switch(this.d){case 1:case 2:switch(o=e.gj(),o){case 1:case 2:if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null))return this.g=e.ij(),e.gj()==1&&(this.d=1),!0}case 4:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null))return T=Wkt(this),k=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,d=e.lj(),this.d=6,P=new $m(2),k<=d?(Or(P,this.n),Or(P,e.kj()),this.g=lt(ut(Fr,1),ii,28,15,[this.o=k,d+1])):(Or(P,e.kj()),Or(P,this.n),this.g=lt(ut(Fr,1),ii,28,15,[this.o=d,k])),this.n=P,T||(this.o=-2-this.o-1),!0;break}}break}case 6:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null)){for(T=Wkt(this),d=e.lj(),A=u(this.g,53),s=Vt(Fr,ii,28,A.length+1,15,1),n=0;n>>0,n.toString(16))),s.a+=" (eventType: ",this.d){case 1:{s.a+="SET";break}case 2:{s.a+="UNSET";break}case 3:{s.a+="ADD";break}case 5:{s.a+="ADD_MANY";break}case 4:{s.a+="REMOVE";break}case 6:{s.a+="REMOVE_MANY";break}case 7:{s.a+="MOVE";break}case 8:{s.a+="REMOVING_ADAPTER";break}case 9:{s.a+="RESOLVE";break}default:{art(s,this.d);break}}if(R0e(this)&&(s.a+=", touch: true"),s.a+=", position: ",art(s,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),s.a+=", notifier: ",wS(s,this.jj()),s.a+=", feature: ",wS(s,this.Kj()),s.a+=", oldValue: ",wS(s,ckt(this)),s.a+=", newValue: ",this.d==6&&Lt(this.g,53)){for(r=u(this.g,53),s.a+="[",e=0;e10?((!this.b||this.c.j!=this.a)&&(this.b=new LS(this),this.a=this.j),x1(this.b,e)):L7(this,e)},l.Yi=function(){return!0},l.a=0,I(oo,"AbstractEList/1",966),D(301,77,out,Dy),I(oo,"AbstractEList/BasicIndexOutOfBoundsException",301),D(40,1,wa,Zn),l.Nb=function(e){Na(this,e)},l.Xj=function(){if(this.i.j!=this.f)throw at(new Th)},l.Yj=function(){return ar(this)},l.Ob=function(){return this.e!=this.i.gc()},l.Pb=function(){return this.Yj()},l.Qb=function(){E_(this)},l.e=0,l.f=0,l.g=-1,I(oo,"AbstractEList/EIterator",40),D(286,40,P0,j6,zit),l.Qb=function(){E_(this)},l.Rb=function(e){lle(this,e)},l.Zj=function(){var e;try{return e=this.d.Xb(--this.e),this.Xj(),this.g=this.e,e}catch(n){throw n=es(n),Lt(n,77)?(this.Xj(),at(new cc)):at(n)}},l.$j=function(e){phe(this,e)},l.Sb=function(){return this.e!=0},l.Tb=function(){return this.e},l.Ub=function(){return this.Zj()},l.Vb=function(){return this.e-1},l.Wb=function(e){this.$j(e)},I(oo,"AbstractEList/EListIterator",286),D(355,40,wa,$6),l.Yj=function(){return sot(this)},l.Qb=function(){throw at(new Vr)},I(oo,"AbstractEList/NonResolvingEIterator",355),D(398,286,P0,aI,Cvt),l.Rb=function(e){throw at(new Vr)},l.Yj=function(){var e;try{return e=this.c.Vi(this.e),this.Xj(),this.g=this.e++,e}catch(n){throw n=es(n),Lt(n,77)?(this.Xj(),at(new cc)):at(n)}},l.Zj=function(){var e;try{return e=this.c.Vi(--this.e),this.Xj(),this.g=this.e,e}catch(n){throw n=es(n),Lt(n,77)?(this.Xj(),at(new cc)):at(n)}},l.Qb=function(){throw at(new Vr)},l.Wb=function(e){throw at(new Vr)},I(oo,"AbstractEList/NonResolvingEListIterator",398),D(2080,70,Ome),l.Ei=function(e,n){var r,s,o,h,d,m,k,T,A,P,$;if(o=n.gc(),o!=0){for(T=u(jn(this.a,4),129),A=T==null?0:T.length,$=A+o,s=Aat(this,$),P=A-e,P>0&&Xc(T,e,s,e+o,P),k=n.Kc(),d=0;dr)throw at(new Dy(e,r));return new tne(this,e)},l.$b=function(){var e,n;++this.j,e=u(jn(this.a,4),129),n=e==null?0:e.length,C7(this,null),Fst(this,n,e)},l.Hc=function(e){var n,r,s,o,h;if(n=u(jn(this.a,4),129),n!=null){if(e!=null){for(s=n,o=0,h=s.length;o=r)throw at(new Dy(e,r));return n[e]},l.dd=function(e){var n,r,s;if(n=u(jn(this.a,4),129),n!=null){if(e!=null){for(r=0,s=n.length;rr)throw at(new Dy(e,r));return new Zee(this,e)},l.Ti=function(e,n){var r,s,o;if(r=yle(this),o=r==null?0:r.length,e>=o)throw at(new Bo(Zlt+e+Ew+o));if(n>=o)throw at(new Bo(tht+n+Ew+o));return s=r[n],e!=n&&(e0&&Xc(e,0,n,0,r),n},l.Qc=function(e){var n,r,s;return n=u(jn(this.a,4),129),s=n==null?0:n.length,s>0&&(e.lengths&&ls(e,s,null),e};var lTe;I(oo,"ArrayDelegatingEList",2080),D(1051,40,wa,ese),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},l.Qb=function(){E_(this),this.a=u(jn(this.b.a,4),129)},I(oo,"ArrayDelegatingEList/EIterator",1051),D(722,286,P0,dee,Zee),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},l.$j=function(e){phe(this,e),this.a=u(jn(this.b.a,4),129)},l.Qb=function(){E_(this),this.a=u(jn(this.b.a,4),129)},I(oo,"ArrayDelegatingEList/EListIterator",722),D(1052,355,wa,nse),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},I(oo,"ArrayDelegatingEList/NonResolvingEIterator",1052),D(723,398,P0,gee,tne),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},I(oo,"ArrayDelegatingEList/NonResolvingEListIterator",723),D(615,301,out,Grt),I(oo,"BasicEList/BasicIndexOutOfBoundsException",615),D(710,66,o0,dmt),l.bd=function(e,n){throw at(new Vr)},l.Fc=function(e){throw at(new Vr)},l.cd=function(e,n){throw at(new Vr)},l.Gc=function(e){throw at(new Vr)},l.$b=function(){throw at(new Vr)},l._i=function(e){throw at(new Vr)},l.Kc=function(){return this.Ii()},l.ed=function(){return this.Ji()},l.fd=function(e){return this.Ki(e)},l.Ti=function(e,n){throw at(new Vr)},l.Ui=function(e,n){throw at(new Vr)},l.gd=function(e){throw at(new Vr)},l.Mc=function(e){throw at(new Vr)},l.hd=function(e,n){throw at(new Vr)},I(oo,"BasicEList/UnmodifiableEList",710),D(721,1,{3:1,20:1,16:1,15:1,61:1,597:1}),l.bd=function(e,n){nsn(this,e,u(n,44))},l.Fc=function(e){return Ysn(this,u(e,44))},l.Jc=function(e){Fa(this,e)},l.Xb=function(e){return u(Dt(this.c,e),136)},l.Ti=function(e,n){return u(this.c.Ti(e,n),44)},l.Ui=function(e,n){rsn(this,e,u(n,44))},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return u(this.c.gd(e),44)},l.hd=function(e,n){return mln(this,e,u(n,44))},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.cd=function(e,n){return this.c.cd(e,n)},l.Gc=function(e){return this.c.Gc(e)},l.$b=function(){this.c.$b()},l.Hc=function(e){return this.c.Hc(e)},l.Ic=function(e){return rO(this.c,e)},l._j=function(){var e,n,r;if(this.d==null){for(this.d=Vt(MIt,jTt,66,2*this.f+1,0,1),r=this.e,this.f=0,n=this.c.Kc();n.e!=n.i.gc();)e=u(n.Yj(),136),IH(this,e);this.e=r}},l.Fb=function(e){return zZt(this,e)},l.Hb=function(){return H4t(this.c)},l.dd=function(e){return this.c.dd(e)},l.ak=function(){this.c=new GGt(this)},l.dc=function(){return this.f==0},l.Kc=function(){return this.c.Kc()},l.ed=function(){return this.c.ed()},l.fd=function(e){return this.c.fd(e)},l.bk=function(){return RI(this)},l.ck=function(e,n,r){return new tte(e,n,r)},l.dk=function(){return new XR},l.Mc=function(e){return _oe(this,e)},l.gc=function(){return this.f},l.kd=function(e,n){return new xp(this.c,e,n)},l.Pc=function(){return this.c.Pc()},l.Qc=function(e){return this.c.Qc(e)},l.Ib=function(){return B5t(this.c)},l.e=0,l.f=0,I(oo,"BasicEMap",721),D(1046,66,o0,GGt),l.Mi=function(e,n){Nnn(this,u(n,136))},l.Pi=function(e,n,r){var s;++(s=this,u(n,136),s).a.e},l.Qi=function(e,n){Pnn(this,u(n,136))},l.Ri=function(e,n,r){Nsn(this,u(n,136),u(r,136))},l.Oi=function(e,n){yce(this.a)},I(oo,"BasicEMap/1",1046),D(1047,66,o0,XR),l.aj=function(e){return Vt(k_n,Nme,621,e,0,1)},I(oo,"BasicEMap/2",1047),D(1048,dd,sl,KGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){return Yat(this.a,e)},l.Kc=function(){return this.a.f==0?(_E(),GP.a):new LWt(this.a)},l.Mc=function(e){var n;return n=this.a.f,yH(this.a,e),this.a.f!=n},l.gc=function(){return this.a.f},I(oo,"BasicEMap/3",1048),D(1049,31,o3,WGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){return w0e(this.a,e)},l.Kc=function(){return this.a.f==0?(_E(),GP.a):new DWt(this.a)},l.gc=function(){return this.a.f},I(oo,"BasicEMap/4",1049),D(1050,dd,sl,YGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){var n,r,s,o,h,d,m,k,T;if(this.a.f>0&&Lt(e,44)&&(this.a._j(),k=u(e,44),m=k.ld(),o=m==null?0:$i(m),h=lvt(this.a,o),n=this.a.d[h],n)){for(r=u(n.g,379),T=n.i,d=0;d"+this.c},l.a=0;var k_n=I(oo,"BasicEMap/EntryImpl",621);D(546,1,{},gC),I(oo,"BasicEMap/View",546);var GP;D(783,1,{}),l.Fb=function(e){return U6t((mn(),co),e)},l.Hb=function(){return e5t((mn(),co))},l.Ib=function(){return Hb((mn(),co))},I(oo,"ECollections/BasicEmptyUnmodifiableEList",783),D(1348,1,P0,Qtt),l.Nb=function(e){Na(this,e)},l.Rb=function(e){throw at(new Vr)},l.Ob=function(){return!1},l.Sb=function(){return!1},l.Pb=function(){throw at(new cc)},l.Tb=function(){return 0},l.Ub=function(){throw at(new cc)},l.Vb=function(){return-1},l.Qb=function(){throw at(new Vr)},l.Wb=function(e){throw at(new Vr)},I(oo,"ECollections/BasicEmptyUnmodifiableEList/1",1348),D(1346,783,{20:1,16:1,15:1,61:1},jKt),l.bd=function(e,n){tYt()},l.Fc=function(e){return eYt()},l.cd=function(e,n){return nYt()},l.Gc=function(e){return rYt()},l.$b=function(){iYt()},l.Hc=function(e){return!1},l.Ic=function(e){return!1},l.Jc=function(e){Fa(this,e)},l.Xb=function(e){return bmt((mn(),e)),null},l.dd=function(e){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.ed=function(){return this.a},l.fd=function(e){return this.a},l.Ti=function(e,n){return sYt()},l.Ui=function(e,n){aYt()},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return oYt()},l.Mc=function(e){return cYt()},l.hd=function(e,n){return uYt()},l.gc=function(){return 0},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.kd=function(e,n){return mn(),new xp(co,e,n)},l.Pc=function(){return dyt((mn(),co))},l.Qc=function(e){return mn(),v_(co,e)},I(oo,"ECollections/EmptyUnmodifiableEList",1346),D(1347,783,{20:1,16:1,15:1,61:1,597:1},$Kt),l.bd=function(e,n){tYt()},l.Fc=function(e){return eYt()},l.cd=function(e,n){return nYt()},l.Gc=function(e){return rYt()},l.$b=function(){iYt()},l.Hc=function(e){return!1},l.Ic=function(e){return!1},l.Jc=function(e){Fa(this,e)},l.Xb=function(e){return bmt((mn(),e)),null},l.dd=function(e){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.ed=function(){return this.a},l.fd=function(e){return this.a},l.Ti=function(e,n){return sYt()},l.Ui=function(e,n){aYt()},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return oYt()},l.Mc=function(e){return cYt()},l.hd=function(e,n){return uYt()},l.gc=function(){return 0},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.kd=function(e,n){return mn(),new xp(co,e,n)},l.Pc=function(){return dyt((mn(),co))},l.Qc=function(e){return mn(),v_(co,e)},l.bk=function(){return mn(),mn(),q0},I(oo,"ECollections/EmptyUnmodifiableEMap",1347);var OIt=os(oo,"Enumerator"),KK;D(288,1,{288:1},nct),l.Fb=function(e){var n;return this===e?!0:Lt(e,288)?(n=u(e,288),this.f==n.f&&Nun(this.i,n.i)&&Lit(this.a,this.f&256?n.f&256?n.a:null:n.f&256?null:n.a)&&Lit(this.d,n.d)&&Lit(this.g,n.g)&&Lit(this.e,n.e)&&imn(this,n)):!1},l.Hb=function(){return this.f},l.Ib=function(){return X0e(this)},l.f=0;var hTe=0,fTe=0,dTe=0,gTe=0,NIt=0,PIt=0,FIt=0,BIt=0,RIt=0,pTe,CL=0,SL=0,bTe=0,wTe=0,WK,jIt;I(oo,"URI",288),D(1121,45,E5,zKt),l.zc=function(e,n){return u(jo(this,Gr(e),u(n,288)),288)},I(oo,"URI/URICache",1121),D(505,66,o0,KR,Oz),l.Si=function(){return!0},I(oo,"UniqueEList",505),D(590,63,Pg,_q),I(oo,"WrappedException",590);var ci=os(qh,Bme),H3=os(qh,Rme),Wu=os(qh,jme),V3=os(qh,$me),B1=os(qh,zme),mf=os(qh,"EClass"),n0t=os(qh,"EDataType"),mTe;D(1233,45,E5,qKt),l.xc=function(e){return ba(e)?nu(this,e):Ko(Eo(this.f,e))},I(qh,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1233);var YK=os(qh,"EEnum"),Vg=os(qh,qme),Do=os(qh,Hme),vf=os(qh,Vme),yf,Ov=os(qh,Ume),U3=os(qh,Gme);D(1042,1,{},Ytt),l.Ib=function(){return"NIL"},I(qh,"EStructuralFeature/Internal/DynamicValueHolder/1",1042);var vTe;D(1041,45,E5,HKt),l.xc=function(e){return ba(e)?nu(this,e):Ko(Eo(this.f,e))},I(qh,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1041);var Nu=os(qh,Kme),r8=os(qh,"EValidator/PatternMatcher"),$It,zIt,Fn,Jp,G3,w2,yTe,xTe,kTe,m2,Zp,v2,Nv,Sd,ETe,TTe,xf,tb,CTe,eb,K3,dx,wo,STe,_Te,Pv,XK=os(Yi,"FeatureMap/Entry");D(545,1,{76:1},X$),l.Lk=function(){return this.a},l.md=function(){return this.b},I(Rn,"BasicEObjectImpl/1",545),D(1040,1,aht,hQt),l.Fk=function(e){return Ist(this.a,this.b,e)},l.Qj=function(){return Kne(this.a,this.b)},l.Wb=function(e){e3t(this.a,this.b,e)},l.Gk=function(){Mln(this.a,this.b)},I(Rn,"BasicEObjectImpl/4",1040),D(2081,1,{114:1}),l.Mk=function(e){this.e=e==0?ATe:Vt(aa,Ln,1,e,5,1)},l.li=function(e){return this.e[e]},l.mi=function(e,n){this.e[e]=n},l.ni=function(e){this.e[e]=null},l.Nk=function(){return this.c},l.Ok=function(){throw at(new Vr)},l.Pk=function(){throw at(new Vr)},l.Qk=function(){return this.d},l.Rk=function(){return this.e!=null},l.Sk=function(e){this.c=e},l.Tk=function(e){throw at(new Vr)},l.Uk=function(e){throw at(new Vr)},l.Vk=function(e){this.d=e};var ATe;I(Rn,"BasicEObjectImpl/EPropertiesHolderBaseImpl",2081),D(192,2081,{114:1},Zh),l.Ok=function(){return this.a},l.Pk=function(){return this.b},l.Tk=function(e){this.a=e},l.Uk=function(e){this.b=e},I(Rn,"BasicEObjectImpl/EPropertiesHolderImpl",192),D(516,99,Wwe,E4),l.uh=function(){return this.f},l.zh=function(){return this.k},l.Bh=function(e,n){this.g=e,this.i=n},l.Dh=function(){return this.j&2?this.$h().Nk():this.ii()},l.Fh=function(){return this.i},l.wh=function(){return(this.j&1)!=0},l.Ph=function(){return this.g},l.Vh=function(){return(this.j&4)!=0},l.$h=function(){return!this.k&&(this.k=new Zh),this.k},l.ci=function(e){this.$h().Sk(e),e?this.j|=2:this.j&=-3},l.ei=function(e){this.$h().Uk(e),e?this.j|=4:this.j&=-5},l.ii=function(){return(Lb(),Fn).S},l.i=0,l.j=1,I(Rn,"EObjectImpl",516),D(798,516,{110:1,94:1,93:1,58:1,114:1,54:1,99:1},Xvt),l.li=function(e){return this.e[e]},l.mi=function(e,n){this.e[e]=n},l.ni=function(e){this.e[e]=null},l.Dh=function(){return this.d},l.Ih=function(e){return ns(this.d,e)},l.Kh=function(){return this.d},l.Oh=function(){return this.e!=null},l.$h=function(){return!this.k&&(this.k=new QR),this.k},l.ci=function(e){this.d=e},l.hi=function(){var e;return this.e==null&&(e=fr(this.d),this.e=e==0?LTe:Vt(aa,Ln,1,e,5,1)),this},l.ji=function(){return 0};var LTe;I(Rn,"DynamicEObjectImpl",798),D(1522,798,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1},Cte),l.Fb=function(e){return this===e},l.Hb=function(){return Em(this)},l.ci=function(e){this.d=e,this.b=zO(e,"key"),this.c=zO(e,cA)},l.Bi=function(){var e;return this.a==-1&&(e=Ust(this,this.b),this.a=e==null?0:$i(e)),this.a},l.ld=function(){return Ust(this,this.b)},l.md=function(){return Ust(this,this.c)},l.Ci=function(e){this.a=e},l.Di=function(e){e3t(this,this.b,e)},l.nd=function(e){var n;return n=Ust(this,this.c),e3t(this,this.c,e),n},l.a=0,I(Rn,"DynamicEObjectImpl/BasicEMapEntry",1522),D(1523,1,{114:1},QR),l.Mk=function(e){throw at(new Vr)},l.li=function(e){throw at(new Vr)},l.mi=function(e,n){throw at(new Vr)},l.ni=function(e){throw at(new Vr)},l.Nk=function(){throw at(new Vr)},l.Ok=function(){return this.a},l.Pk=function(){return this.b},l.Qk=function(){return this.c},l.Rk=function(){throw at(new Vr)},l.Sk=function(e){throw at(new Vr)},l.Tk=function(e){this.a=e},l.Uk=function(e){this.b=e},l.Vk=function(e){this.c=e},I(Rn,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1523),D(519,158,{110:1,94:1,93:1,598:1,155:1,58:1,114:1,54:1,99:1,519:1,158:1,119:1,120:1},aM),l.Ah=function(e){return Sxt(this,e)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.d;case 2:return r?(!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),this.b):(!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),RI(this.b));case 3:return Jne(this);case 4:return!this.a&&(this.a=new Ps(p2,this,4)),this.a;case 5:return!this.c&&(this.c=new G4(p2,this,5)),this.c}return Ih(this,e-fr((wn(),Jp)),En((s=u(jn(this,16),29),s||Jp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 3:return this.Cb&&(r=(o=this.Db>>16,o>=0?Sxt(this,r):this.Cb.Th(this,-1-o,null,r))),fyt(this,u(e,155),r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),Jp)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),Jp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 2:return!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),pz(this.b,e,r);case 3:return fyt(this,null,r);case 4:return!this.a&&(this.a=new Ps(p2,this,4)),so(this.a,e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Jp)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Jp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return!!this.b&&this.b.f!=0;case 3:return!!Jne(this);case 4:return!!this.a&&this.a.i!=0;case 5:return!!this.c&&this.c.i!=0}return Dh(this,e-fr((wn(),Jp)),En((n=u(jn(this,16),29),n||Jp),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:xun(this,Gr(n));return;case 2:!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),Jq(this.b,n);return;case 3:Rde(this,u(n,155));return;case 4:!this.a&&(this.a=new Ps(p2,this,4)),Ir(this.a),!this.a&&(this.a=new Ps(p2,this,4)),gs(this.a,u(n,16));return;case 5:!this.c&&(this.c=new G4(p2,this,5)),Ir(this.c),!this.c&&(this.c=new G4(p2,this,5)),gs(this.c,u(n,16));return}Fh(this,e-fr((wn(),Jp)),En((r=u(jn(this,16),29),r||Jp),e),n)},l.ii=function(){return wn(),Jp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:_4t(this,null);return;case 2:!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),this.b.c.$b();return;case 3:Rde(this,null);return;case 4:!this.a&&(this.a=new Ps(p2,this,4)),Ir(this.a);return;case 5:!this.c&&(this.c=new G4(p2,this,5)),Ir(this.c);return}Ph(this,e-fr((wn(),Jp)),En((n=u(jn(this,16),29),n||Jp),e))},l.Ib=function(){return zue(this)},l.d=null,I(Rn,"EAnnotationImpl",519),D(141,721,$Tt,nl),l.Gi=function(e,n){jin(this,e,u(n,44))},l.Wk=function(e,n){return zan(this,u(e,44),n)},l.$i=function(e){return u(u(this.c,71).$i(e),136)},l.Ii=function(){return u(this.c,71).Ii()},l.Ji=function(){return u(this.c,71).Ji()},l.Ki=function(e){return u(this.c,71).Ki(e)},l.Xk=function(e,n){return pz(this,e,n)},l.Fk=function(e){return u(this.c,79).Fk(e)},l.ak=function(){},l.Qj=function(){return u(this.c,79).Qj()},l.ck=function(e,n,r){var s;return s=u(sh(this.b).wi().si(this.b),136),s.Ci(e),s.Di(n),s.nd(r),s},l.dk=function(){return new P2t(this)},l.Wb=function(e){Jq(this,e)},l.Gk=function(){u(this.c,79).Gk()},I(Yi,"EcoreEMap",141),D(165,141,$Tt,Ul),l._j=function(){var e,n,r,s,o,h;if(this.d==null){for(h=Vt(MIt,jTt,66,2*this.f+1,0,1),r=this.c.Kc();r.e!=r.i.gc();)n=u(r.Yj(),136),s=n.Bi(),o=(s&xi)%h.length,e=h[o],!e&&(e=h[o]=new P2t(this)),e.Fc(n);this.d=h}},I(Rn,"EAnnotationImpl/1",165),D(291,448,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,480:1,54:1,99:1,158:1,291:1,119:1,120:1}),l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),!!this.Jk();case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r)}return o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Jk();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0)}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:this.ui(Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:this.Zk(u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),_Te},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:this.ui(null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:this.Zk(1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.pi=function(){of(this),this.Bb|=1},l.Hk=function(){return of(this)},l.Ik=function(){return this.t},l.Jk=function(){var e;return e=this.t,e>1||e==-1},l.Si=function(){return(this.Bb&512)!=0},l.Yk=function(e,n){return y5t(this,e,n)},l.Zk=function(e){Hy(this,e)},l.Ib=function(){return F6t(this)},l.s=0,l.t=1,I(Rn,"ETypedElementImpl",291),D(461,291,{110:1,94:1,93:1,155:1,197:1,58:1,179:1,69:1,114:1,480:1,54:1,99:1,158:1,461:1,291:1,119:1,120:1,692:1}),l.Ah=function(e){return Dhe(this,e)},l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),!!this.Jk();case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return Pn(),!!(this.Bb&Uf);case 11:return Pn(),!!(this.Bb&b3);case 12:return Pn(),!!(this.Bb&u3);case 13:return this.j;case 14:return P7(this);case 15:return Pn(),!!(this.Bb&ol);case 16:return Pn(),!!(this.Bb&Jd);case 17:return Py(this)}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 17:return this.Cb&&(r=(o=this.Db>>16,o>=0?Dhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,17,r)}return h=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),h.wk().zk(this,Au(this),n-fr(this.ii()),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r);case 17:return hh(this,null,17,r)}return o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Jk();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return P7(this)!=null;case 15:return(this.Bb&ol)!=0;case 16:return(this.Bb&Jd)!=0;case 17:return!!Py(this)}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:wst(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:this.Zk(u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 10:m7(this,Ie(Me(n)));return;case 11:x7(this,Ie(Me(n)));return;case 12:v7(this,Ie(Me(n)));return;case 13:fmt(this,Gr(n));return;case 15:y7(this,Ie(Me(n)));return;case 16:k7(this,Ie(Me(n)));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),STe},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),4),mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:this.Zk(1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 10:m7(this,!0);return;case 11:x7(this,!1);return;case 12:v7(this,!1);return;case 13:this.i=null,Gq(this,null);return;case 15:y7(this,!1);return;case 16:k7(this,!1);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.pi=function(){RE($o((il(),ja),this)),of(this),this.Bb|=1},l.pk=function(){return this.f},l.ik=function(){return P7(this)},l.qk=function(){return Py(this)},l.uk=function(){return null},l.$k=function(){return this.k},l.Lj=function(){return this.n},l.vk=function(){return $H(this)},l.wk=function(){var e,n,r,s,o,h,d,m,k;return this.p||(r=Py(this),(r.i==null&&Qd(r),r.i).length,s=this.uk(),s&&fr(Py(s)),o=of(this),d=o.kk(),e=d?d.i&1?d==Fl?ys:d==Fr?Ra:d==Y3?wT:d==ma?zs:d==x2?gv:d==wx?pv:d==ul?Fk:vA:d:null,n=P7(this),m=o.ik(),P2n(this),this.Bb&Jd&&((h=Oxt((il(),ja),r))&&h!=this||(h=tk($o(ja,this))))?this.p=new dQt(this,h):this.Jk()?this.al()?s?this.Bb&ol?e?this.bl()?this.p=new X2(47,e,this,s):this.p=new X2(5,e,this,s):this.bl()?this.p=new ew(46,this,s):this.p=new ew(4,this,s):e?this.bl()?this.p=new X2(49,e,this,s):this.p=new X2(7,e,this,s):this.bl()?this.p=new ew(48,this,s):this.p=new ew(6,this,s):this.Bb&ol?e?e==Sw?this.p=new mp(50,cTe,this):this.bl()?this.p=new mp(43,e,this):this.p=new mp(1,e,this):this.bl()?this.p=new yp(42,this):this.p=new yp(0,this):e?e==Sw?this.p=new mp(41,cTe,this):this.bl()?this.p=new mp(45,e,this):this.p=new mp(3,e,this):this.bl()?this.p=new yp(44,this):this.p=new yp(2,this):Lt(o,156)?e==XK?this.p=new yp(40,this):this.Bb&512?this.Bb&ol?e?this.p=new mp(9,e,this):this.p=new yp(8,this):e?this.p=new mp(11,e,this):this.p=new yp(10,this):this.Bb&ol?e?this.p=new mp(13,e,this):this.p=new yp(12,this):e?this.p=new mp(15,e,this):this.p=new yp(14,this):s?(k=s.t,k>1||k==-1?this.bl()?this.Bb&ol?e?this.p=new X2(25,e,this,s):this.p=new ew(24,this,s):e?this.p=new X2(27,e,this,s):this.p=new ew(26,this,s):this.Bb&ol?e?this.p=new X2(29,e,this,s):this.p=new ew(28,this,s):e?this.p=new X2(31,e,this,s):this.p=new ew(30,this,s):this.bl()?this.Bb&ol?e?this.p=new X2(33,e,this,s):this.p=new ew(32,this,s):e?this.p=new X2(35,e,this,s):this.p=new ew(34,this,s):this.Bb&ol?e?this.p=new X2(37,e,this,s):this.p=new ew(36,this,s):e?this.p=new X2(39,e,this,s):this.p=new ew(38,this,s)):this.bl()?this.Bb&ol?e?this.p=new mp(17,e,this):this.p=new yp(16,this):e?this.p=new mp(19,e,this):this.p=new yp(18,this):this.Bb&ol?e?this.p=new mp(21,e,this):this.p=new yp(20,this):e?this.p=new mp(23,e,this):this.p=new yp(22,this):this._k()?this.bl()?this.p=new ete(u(o,29),this,s):this.p=new Zyt(u(o,29),this,s):Lt(o,156)?e==XK?this.p=new yp(40,this):this.Bb&ol?e?this.p=new tee(n,m,this,(Xat(),d==Fr?WIt:d==Fl?HIt:d==x2?YIt:d==Y3?KIt:d==ma?GIt:d==wx?XIt:d==ul?VIt:d==Yh?UIt:s0t)):this.p=new dne(u(o,156),n,m,this):e?this.p=new Zte(n,m,this,(Xat(),d==Fr?WIt:d==Fl?HIt:d==x2?YIt:d==Y3?KIt:d==ma?GIt:d==wx?XIt:d==ul?VIt:d==Yh?UIt:s0t)):this.p=new fne(u(o,156),n,m,this):this.al()?s?this.Bb&ol?this.bl()?this.p=new rte(u(o,29),this,s):this.p=new Rvt(u(o,29),this,s):this.bl()?this.p=new nte(u(o,29),this,s):this.p=new kit(u(o,29),this,s):this.Bb&ol?this.bl()?this.p=new ZJt(u(o,29),this):this.p=new Jmt(u(o,29),this):this.bl()?this.p=new JJt(u(o,29),this):this.p=new uit(u(o,29),this):this.bl()?s?this.Bb&ol?this.p=new ite(u(o,29),this,s):this.p=new Fvt(u(o,29),this,s):this.Bb&ol?this.p=new tZt(u(o,29),this):this.p=new Zmt(u(o,29),this):s?this.Bb&ol?this.p=new ste(u(o,29),this,s):this.p=new Bvt(u(o,29),this,s):this.Bb&ol?this.p=new eZt(u(o,29),this):this.p=new Iz(u(o,29),this)),this.p},l.rk=function(){return(this.Bb&Uf)!=0},l._k=function(){return!1},l.al=function(){return!1},l.sk=function(){return(this.Bb&Jd)!=0},l.xk=function(){return Gst(this)},l.bl=function(){return!1},l.tk=function(){return(this.Bb&ol)!=0},l.cl=function(e){this.k=e},l.ui=function(e){wst(this,e)},l.Ib=function(){return oV(this)},l.e=!1,l.n=0,I(Rn,"EStructuralFeatureImpl",461),D(331,461,{110:1,94:1,93:1,35:1,155:1,197:1,58:1,179:1,69:1,114:1,480:1,54:1,99:1,331:1,158:1,461:1,291:1,119:1,120:1,692:1},Hnt),l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),!!D6t(this);case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return Pn(),!!(this.Bb&Uf);case 11:return Pn(),!!(this.Bb&b3);case 12:return Pn(),!!(this.Bb&u3);case 13:return this.j;case 14:return P7(this);case 15:return Pn(),!!(this.Bb&ol);case 16:return Pn(),!!(this.Bb&Jd);case 17:return Py(this);case 18:return Pn(),!!(this.Bb&Fc);case 19:return n?bat(this):bse(this)}return Ih(this,e-fr((wn(),G3)),En((s=u(jn(this,16),29),s||G3),e),n,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return D6t(this);case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return P7(this)!=null;case 15:return(this.Bb&ol)!=0;case 16:return(this.Bb&Jd)!=0;case 17:return!!Py(this);case 18:return(this.Bb&Fc)!=0;case 19:return!!bse(this)}return Dh(this,e-fr((wn(),G3)),En((n=u(jn(this,16),29),n||G3),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:wst(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:OWt(this,u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 10:m7(this,Ie(Me(n)));return;case 11:x7(this,Ie(Me(n)));return;case 12:v7(this,Ie(Me(n)));return;case 13:fmt(this,Gr(n));return;case 15:y7(this,Ie(Me(n)));return;case 16:k7(this,Ie(Me(n)));return;case 18:qat(this,Ie(Me(n)));return}Fh(this,e-fr((wn(),G3)),En((r=u(jn(this,16),29),r||G3),e),n)},l.ii=function(){return wn(),G3},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),4),mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:this.b=0,Hy(this,1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 10:m7(this,!0);return;case 11:x7(this,!1);return;case 12:v7(this,!1);return;case 13:this.i=null,Gq(this,null);return;case 15:y7(this,!1);return;case 16:k7(this,!1);return;case 18:qat(this,!1);return}Ph(this,e-fr((wn(),G3)),En((n=u(jn(this,16),29),n||G3),e))},l.pi=function(){bat(this),RE($o((il(),ja),this)),of(this),this.Bb|=1},l.Jk=function(){return D6t(this)},l.Yk=function(e,n){return this.b=0,this.a=null,y5t(this,e,n)},l.Zk=function(e){OWt(this,e)},l.Ib=function(){var e;return this.Db&64?oV(this):(e=new ef(oV(this)),e.a+=" (iD: ",gp(e,(this.Bb&Fc)!=0),e.a+=")",e.a)},l.b=0,I(Rn,"EAttributeImpl",331),D(364,448,{110:1,94:1,93:1,142:1,155:1,197:1,58:1,114:1,54:1,99:1,364:1,158:1,119:1,120:1,691:1}),l.dl=function(e){return e.Dh()==this},l.Ah=function(e){return xot(this,e)},l.Bh=function(e,n){this.w=null,this.Db=n<<16|this.Db&255,this.Cb=e},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jm(this);case 4:return this.ik();case 5:return this.F;case 6:return n?sh(this):zE(this);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),this.A}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?xot(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,6,r)}return h=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),h.wk().zk(this,Au(this),n-fr(this.ii()),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 6:return hh(this,null,6,r);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),so(this.A,e,r)}return o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jm(this);case 4:return this.ik()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!zE(this);case 7:return!!this.A&&this.A.i!=0}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:cq(this,Gr(n));return;case 2:Yrt(this,Gr(n));return;case 5:q7(this,Gr(n));return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A),!this.A&&(this.A=new Ju(Nu,this,7)),gs(this.A,u(n,16));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),yTe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,184)&&(u(this.Cb,184).tb=null),mu(this,null);return;case 2:p7(this,null),t7(this,this.D);return;case 5:q7(this,null);return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.hk=function(){var e;return this.G==-1&&(this.G=(e=sh(this),e?Np(e.vi(),this):-1)),this.G},l.ik=function(){return null},l.jk=function(){return sh(this)},l.el=function(){return this.v},l.kk=function(){return Jm(this)},l.lk=function(){return this.D!=null?this.D:this.B},l.mk=function(){return this.F},l.fk=function(e){return hct(this,e)},l.fl=function(e){this.v=e},l.gl=function(e){tce(this,e)},l.hl=function(e){this.C=e},l.ui=function(e){cq(this,e)},l.Ib=function(){return bH(this)},l.C=null,l.D=null,l.G=-1,I(Rn,"EClassifierImpl",364),D(90,364,{110:1,94:1,93:1,29:1,142:1,155:1,197:1,58:1,114:1,54:1,99:1,90:1,364:1,158:1,481:1,119:1,120:1,691:1},Pj),l.dl=function(e){return Tan(this,e.Dh())},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jm(this);case 4:return null;case 5:return this.F;case 6:return n?sh(this):zE(this);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),this.A;case 8:return Pn(),!!(this.Bb&256);case 9:return Pn(),!!(this.Bb&512);case 10:return Yo(this);case 11:return!this.q&&(this.q=new Jt(vf,this,11,10)),this.q;case 12:return v5(this);case 13:return F_(this);case 14:return F_(this),this.r;case 15:return v5(this),this.k;case 16:return y6t(this);case 17:return pct(this);case 18:return Qd(this);case 19:return JH(this);case 20:return v5(this),this.o;case 21:return!this.s&&(this.s=new Jt(Wu,this,21,17)),this.s;case 22:return Wc(this);case 23:return ect(this)}return Ih(this,e-fr((wn(),w2)),En((s=u(jn(this,16),29),s||w2),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?xot(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,6,r);case 11:return!this.q&&(this.q=new Jt(vf,this,11,10)),vu(this.q,e,r);case 21:return!this.s&&(this.s=new Jt(Wu,this,21,17)),vu(this.s,e,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),w2)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),w2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 6:return hh(this,null,6,r);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),so(this.A,e,r);case 11:return!this.q&&(this.q=new Jt(vf,this,11,10)),so(this.q,e,r);case 21:return!this.s&&(this.s=new Jt(Wu,this,21,17)),so(this.s,e,r);case 22:return so(Wc(this),e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),w2)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),w2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jm(this);case 4:return!1;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!zE(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)!=0;case 9:return(this.Bb&512)!=0;case 10:return!!this.u&&Wc(this.u.a).i!=0&&!(this.n&&lot(this.n));case 11:return!!this.q&&this.q.i!=0;case 12:return v5(this).i!=0;case 13:return F_(this).i!=0;case 14:return F_(this),this.r.i!=0;case 15:return v5(this),this.k.i!=0;case 16:return y6t(this).i!=0;case 17:return pct(this).i!=0;case 18:return Qd(this).i!=0;case 19:return JH(this).i!=0;case 20:return v5(this),!!this.o;case 21:return!!this.s&&this.s.i!=0;case 22:return!!this.n&&lot(this.n);case 23:return ect(this).i!=0}return Dh(this,e-fr((wn(),w2)),En((n=u(jn(this,16),29),n||w2),e))},l.Zh=function(e){var n;return n=this.i==null||this.q&&this.q.i!=0?null:zO(this,e),n||e8t(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:cq(this,Gr(n));return;case 2:Yrt(this,Gr(n));return;case 5:q7(this,Gr(n));return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A),!this.A&&(this.A=new Ju(Nu,this,7)),gs(this.A,u(n,16));return;case 8:x5t(this,Ie(Me(n)));return;case 9:k5t(this,Ie(Me(n)));return;case 10:j_(Yo(this)),gs(Yo(this),u(n,16));return;case 11:!this.q&&(this.q=new Jt(vf,this,11,10)),Ir(this.q),!this.q&&(this.q=new Jt(vf,this,11,10)),gs(this.q,u(n,16));return;case 21:!this.s&&(this.s=new Jt(Wu,this,21,17)),Ir(this.s),!this.s&&(this.s=new Jt(Wu,this,21,17)),gs(this.s,u(n,16));return;case 22:Ir(Wc(this)),gs(Wc(this),u(n,16));return}Fh(this,e-fr((wn(),w2)),En((r=u(jn(this,16),29),r||w2),e),n)},l.ii=function(){return wn(),w2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,184)&&(u(this.Cb,184).tb=null),mu(this,null);return;case 2:p7(this,null),t7(this,this.D);return;case 5:q7(this,null);return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A);return;case 8:x5t(this,!1);return;case 9:k5t(this,!1);return;case 10:this.u&&j_(this.u);return;case 11:!this.q&&(this.q=new Jt(vf,this,11,10)),Ir(this.q);return;case 21:!this.s&&(this.s=new Jt(Wu,this,21,17)),Ir(this.s);return;case 22:this.n&&Ir(this.n);return}Ph(this,e-fr((wn(),w2)),En((n=u(jn(this,16),29),n||w2),e))},l.pi=function(){var e,n;if(v5(this),F_(this),y6t(this),pct(this),Qd(this),JH(this),ect(this),KS(Xcn(_l(this))),this.s)for(e=0,n=this.s.i;e=0;--n)Dt(this,n);return G5t(this,e)},l.Gk=function(){Ir(this)},l.Zi=function(e,n){return koe(this,e,n)},I(Yi,"EcoreEList",632),D(504,632,ic,mI),l.Li=function(){return!1},l.Lj=function(){return this.c},l.Mj=function(){return!1},l.ol=function(){return!0},l.Si=function(){return!0},l.Wi=function(e,n){return n},l.Yi=function(){return!1},l.c=0,I(Yi,"EObjectEList",504),D(83,504,ic,Ps),l.Mj=function(){return!0},l.ml=function(){return!1},l.al=function(){return!0},I(Yi,"EObjectContainmentEList",83),D(555,83,ic,az),l.Ni=function(){this.b=!0},l.Qj=function(){return this.b},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.b,this.b=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.b=!1},l.b=!1,I(Yi,"EObjectContainmentEList/Unsettable",555),D(1161,555,ic,Qte),l.Ti=function(e,n){var r,s;return r=u(f_(this,e,n),89),Hl(this.e)&&hE(this,new jI(this.a,7,(wn(),xTe),he(n),(s=r.c,Lt(s,90)?u(s,29):xf),e)),r},l.Uj=function(e,n){return wwn(this,u(e,89),n)},l.Vj=function(e,n){return bwn(this,u(e,89),n)},l.Wj=function(e,n,r){return yyn(this,u(e,89),u(n,89),r)},l.Ij=function(e,n,r,s,o){switch(e){case 3:return zS(this,e,n,r,s,this.i>1);case 5:return zS(this,e,n,r,s,this.i-u(r,15).gc()>0);default:return new Tg(this.e,e,this.c,n,r,s,!0)}},l.Tj=function(){return!0},l.Qj=function(){return lot(this)},l.Gk=function(){Ir(this)},I(Rn,"EClassImpl/1",1161),D(1175,1174,RTt),l.dj=function(e){var n,r,s,o,h,d,m;if(r=e.gj(),r!=8){if(s=Jwn(e),s==0)switch(r){case 1:case 9:{m=e.kj(),m!=null&&(n=_l(u(m,481)),!n.c&&(n.c=new x0),Dq(n.c,e.jj())),d=e.ij(),d!=null&&(o=u(d,481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Or(n.c,u(e.jj(),29))));break}case 3:{d=e.ij(),d!=null&&(o=u(d,481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Or(n.c,u(e.jj(),29))));break}case 5:{if(d=e.ij(),d!=null)for(h=u(d,16).Kc();h.Ob();)o=u(h.Pb(),481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Or(n.c,u(e.jj(),29)));break}case 4:{m=e.kj(),m!=null&&(o=u(m,481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Dq(n.c,e.jj())));break}case 6:{if(m=e.kj(),m!=null)for(h=u(m,16).Kc();h.Ob();)o=u(h.Pb(),481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Dq(n.c,e.jj()));break}}this.ql(s)}},l.ql=function(e){T0e(this,e)},l.b=63,I(Rn,"ESuperAdapter",1175),D(1176,1175,RTt,QGt),l.ql=function(e){t3(this,e)},I(Rn,"EClassImpl/10",1176),D(1165,710,ic),l.Ei=function(e,n){return Oot(this,e,n)},l.Fi=function(e){return fhe(this,e)},l.Gi=function(e,n){fO(this,e,n)},l.Hi=function(e){PI(this,e)},l.$i=function(e){return Q3t(this,e)},l.Xi=function(e,n){return Kst(this,e,n)},l.Wk=function(e,n){throw at(new Vr)},l.Ii=function(){return new $6(this)},l.Ji=function(){return new aI(this)},l.Ki=function(e){return QI(this,e)},l.Xk=function(e,n){throw at(new Vr)},l.Fk=function(e){return this},l.Qj=function(){return this.i!=0},l.Wb=function(e){throw at(new Vr)},l.Gk=function(){throw at(new Vr)},I(Yi,"EcoreEList/UnmodifiableEList",1165),D(328,1165,ic,$4),l.Yi=function(){return!1},I(Yi,"EcoreEList/UnmodifiableEList/FastCompare",328),D(1168,328,ic,Kce),l.dd=function(e){var n,r,s;if(Lt(e,179)&&(n=u(e,179),r=n.Lj(),r!=-1)){for(s=this.i;r4)if(this.fk(e)){if(this.al()){if(s=u(e,54),r=s.Eh(),m=r==this.b&&(this.ml()?s.yh(s.Fh(),u(En($u(this.b),this.Lj()).Hk(),29).kk())==yo(u(En($u(this.b),this.Lj()),19)).n:-1-s.Fh()==this.Lj()),this.nl()&&!m&&!r&&s.Jh()){for(o=0;o1||s==-1)):!1},l.ml=function(){var e,n,r;return n=En($u(this.b),this.Lj()),Lt(n,102)?(e=u(n,19),r=yo(e),!!r):!1},l.nl=function(){var e,n;return n=En($u(this.b),this.Lj()),Lt(n,102)?(e=u(n,19),(e.Bb&po)!=0):!1},l.dd=function(e){var n,r,s,o;if(s=this.zj(e),s>=0)return s;if(this.ol()){for(r=0,o=this.Ej();r=0;--e)QO(this,e,this.xj(e));return this.Fj()},l.Qc=function(e){var n;if(this.nl())for(n=this.Ej()-1;n>=0;--n)QO(this,n,this.xj(n));return this.Gj(e)},l.Gk=function(){j_(this)},l.Zi=function(e,n){return Zse(this,e,n)},I(Yi,"DelegatingEcoreEList",756),D(1171,756,qTt,dZt),l.qj=function(e,n){Wsn(this,e,u(n,29))},l.rj=function(e){Fin(this,u(e,29))},l.xj=function(e){var n,r;return n=u(Dt(Wc(this.a),e),89),r=n.c,Lt(r,90)?u(r,29):(wn(),xf)},l.Cj=function(e){var n,r;return n=u(r3(Wc(this.a),e),89),r=n.c,Lt(r,90)?u(r,29):(wn(),xf)},l.Dj=function(e,n){return Umn(this,e,u(n,29))},l.Li=function(){return!1},l.Ij=function(e,n,r,s,o){return null},l.sj=function(){return new tKt(this)},l.tj=function(){Ir(Wc(this.a))},l.uj=function(e){return Hue(this,e)},l.vj=function(e){var n,r;for(r=e.Kc();r.Ob();)if(n=r.Pb(),!Hue(this,n))return!1;return!0},l.wj=function(e){var n,r,s;if(Lt(e,15)&&(s=u(e,15),s.gc()==Wc(this.a).i)){for(n=s.Kc(),r=new Zn(this);n.Ob();)if($t(n.Pb())!==$t(ar(r)))return!1;return!0}return!1},l.yj=function(){var e,n,r,s,o;for(r=1,n=new Zn(Wc(this.a));n.e!=n.i.gc();)e=u(ar(n),89),s=(o=e.c,Lt(o,90)?u(o,29):(wn(),xf)),r=31*r+(s?Em(s):0);return r},l.zj=function(e){var n,r,s,o;for(s=0,r=new Zn(Wc(this.a));r.e!=r.i.gc();){if(n=u(ar(r),89),$t(e)===$t((o=n.c,Lt(o,90)?u(o,29):(wn(),xf))))return s;++s}return-1},l.Aj=function(){return Wc(this.a).i==0},l.Bj=function(){return null},l.Ej=function(){return Wc(this.a).i},l.Fj=function(){var e,n,r,s,o,h;for(h=Wc(this.a).i,o=Vt(aa,Ln,1,h,5,1),r=0,n=new Zn(Wc(this.a));n.e!=n.i.gc();)e=u(ar(n),89),o[r++]=(s=e.c,Lt(s,90)?u(s,29):(wn(),xf));return o},l.Gj=function(e){var n,r,s,o,h,d,m;for(m=Wc(this.a).i,e.lengthm&&ls(e,m,null),s=0,r=new Zn(Wc(this.a));r.e!=r.i.gc();)n=u(ar(r),89),h=(d=n.c,Lt(d,90)?u(d,29):(wn(),xf)),ls(e,s++,h);return e},l.Hj=function(){var e,n,r,s,o;for(o=new dp,o.a+="[",e=Wc(this.a),n=0,s=Wc(this.a).i;n>16,o>=0?xot(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,6,r);case 9:return!this.a&&(this.a=new Jt(Vg,this,9,5)),vu(this.a,e,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),m2)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),m2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 6:return hh(this,null,6,r);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),so(this.A,e,r);case 9:return!this.a&&(this.a=new Jt(Vg,this,9,5)),so(this.a,e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),m2)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),m2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jm(this);case 4:return!!u5t(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!zE(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)==0;case 9:return!!this.a&&this.a.i!=0}return Dh(this,e-fr((wn(),m2)),En((n=u(jn(this,16),29),n||m2),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:cq(this,Gr(n));return;case 2:Yrt(this,Gr(n));return;case 5:q7(this,Gr(n));return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A),!this.A&&(this.A=new Ju(Nu,this,7)),gs(this.A,u(n,16));return;case 8:lH(this,Ie(Me(n)));return;case 9:!this.a&&(this.a=new Jt(Vg,this,9,5)),Ir(this.a),!this.a&&(this.a=new Jt(Vg,this,9,5)),gs(this.a,u(n,16));return}Fh(this,e-fr((wn(),m2)),En((r=u(jn(this,16),29),r||m2),e),n)},l.ii=function(){return wn(),m2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,184)&&(u(this.Cb,184).tb=null),mu(this,null);return;case 2:p7(this,null),t7(this,this.D);return;case 5:q7(this,null);return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A);return;case 8:lH(this,!0);return;case 9:!this.a&&(this.a=new Jt(Vg,this,9,5)),Ir(this.a);return}Ph(this,e-fr((wn(),m2)),En((n=u(jn(this,16),29),n||m2),e))},l.pi=function(){var e,n;if(this.a)for(e=0,n=this.a.i;e>16==5?u(this.Cb,685):null}return Ih(this,e-fr((wn(),Zp)),En((s=u(jn(this,16),29),s||Zp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 5:return this.Cb&&(r=(o=this.Db>>16,o>=0?jhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,5,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),Zp)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),Zp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 5:return hh(this,null,5,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Zp)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Zp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return!!this.b;case 4:return this.c!=null;case 5:return!!(this.Db>>16==5&&u(this.Cb,685))}return Dh(this,e-fr((wn(),Zp)),En((n=u(jn(this,16),29),n||Zp),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:Zst(this,u(n,17).a);return;case 3:B1e(this,u(n,2039));return;case 4:eat(this,Gr(n));return}Fh(this,e-fr((wn(),Zp)),En((r=u(jn(this,16),29),r||Zp),e),n)},l.ii=function(){return wn(),Zp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:Zst(this,0);return;case 3:B1e(this,null);return;case 4:eat(this,null);return}Ph(this,e-fr((wn(),Zp)),En((n=u(jn(this,16),29),n||Zp),e))},l.Ib=function(){var e;return e=this.c,e??this.zb},l.b=null,l.c=null,l.d=0,I(Rn,"EEnumLiteralImpl",582);var E_n=os(Rn,"EFactoryImpl/InternalEDateTimeFormat");D(498,1,{2114:1},AM),I(Rn,"EFactoryImpl/1ClientInternalEDateTimeFormat",498),D(248,120,{110:1,94:1,93:1,89:1,58:1,114:1,54:1,99:1,248:1,119:1,120:1},lm),l.Ch=function(e,n,r){var s;return r=hh(this,e,n,r),this.e&&Lt(e,179)&&(s=QH(this,this.e),s!=this.c&&(r=H7(this,s,r))),r},l.Lh=function(e,n,r){var s;switch(e){case 0:return this.f;case 1:return!this.d&&(this.d=new Ps(Do,this,1)),this.d;case 2:return n?lV(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return n?dot(this):this.a}return Ih(this,e-fr((wn(),Nv)),En((s=u(jn(this,16),29),s||Nv),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return Due(this,null,r);case 1:return!this.d&&(this.d=new Ps(Do,this,1)),so(this.d,e,r);case 3:return Mue(this,null,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Nv)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Nv)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.f;case 1:return!!this.d&&this.d.i!=0;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return Dh(this,e-fr((wn(),Nv)),En((n=u(jn(this,16),29),n||Nv),e))},l.bi=function(e,n){var r;switch(e){case 0:ife(this,u(n,89));return;case 1:!this.d&&(this.d=new Ps(Do,this,1)),Ir(this.d),!this.d&&(this.d=new Ps(Do,this,1)),gs(this.d,u(n,16));return;case 3:zxt(this,u(n,89));return;case 4:a6t(this,u(n,850));return;case 5:YE(this,u(n,142));return}Fh(this,e-fr((wn(),Nv)),En((r=u(jn(this,16),29),r||Nv),e),n)},l.ii=function(){return wn(),Nv},l.ki=function(e){var n;switch(e){case 0:ife(this,null);return;case 1:!this.d&&(this.d=new Ps(Do,this,1)),Ir(this.d);return;case 3:zxt(this,null);return;case 4:a6t(this,null);return;case 5:YE(this,null);return}Ph(this,e-fr((wn(),Nv)),En((n=u(jn(this,16),29),n||Nv),e))},l.Ib=function(){var e;return e=new eh(qf(this)),e.a+=" (expression: ",xct(this,e),e.a+=")",e.a};var qIt;I(Rn,"EGenericTypeImpl",248),D(2067,2062,mU),l.Gi=function(e,n){lZt(this,e,n)},l.Wk=function(e,n){return lZt(this,this.gc(),e),n},l.$i=function(e){return jh(this.pj(),e)},l.Ii=function(){return this.Ji()},l.pj=function(){return new iKt(this)},l.Ji=function(){return this.Ki(0)},l.Ki=function(e){return this.pj().fd(e)},l.Xk=function(e,n){return Ky(this,e,!0),n},l.Ti=function(e,n){var r,s;return s=Tot(this,n),r=this.fd(e),r.Rb(s),s},l.Ui=function(e,n){var r;Ky(this,n,!0),r=this.fd(e),r.Rb(n)},I(Yi,"AbstractSequentialInternalEList",2067),D(495,2067,mU,sI),l.$i=function(e){return jh(this.pj(),e)},l.Ii=function(){return this.b==null?(bp(),bp(),KP):this.sl()},l.pj=function(){return new LQt(this.a,this.b)},l.Ji=function(){return this.b==null?(bp(),bp(),KP):this.sl()},l.Ki=function(e){var n,r;if(this.b==null){if(e<0||e>1)throw at(new Bo(uA+e+", size=0"));return bp(),bp(),KP}for(r=this.sl(),n=0;n0;)if(n=this.c[--this.d],(!this.e||n.pk()!=QT||n.Lj()!=0)&&(!this.vl()||this.b.Xh(n))){if(h=this.b.Nh(n,this.ul()),this.f=(vo(),u(n,69).xk()),this.f||n.Jk()){if(this.ul()?(s=u(h,15),this.k=s):(s=u(h,71),this.k=this.j=s),Lt(this.k,59)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j.Ki(this.k.gc()):this.k.fd(this.k.gc()),this.p?Jfe(this,this.p):l1e(this))return o=this.p?this.p.Ub():this.j?this.j.$i(--this.n):this.k.Xb(--this.n),this.f?(e=u(o,76),e.Lk(),r=e.md(),this.i=r):(r=o,this.i=r),this.g=-3,!0}else if(h!=null)return this.k=null,this.p=null,r=h,this.i=r,this.g=-2,!0}return this.k=null,this.p=null,this.g=-1,!1}else return o=this.p?this.p.Ub():this.j?this.j.$i(--this.n):this.k.Xb(--this.n),this.f?(e=u(o,76),e.Lk(),r=e.md(),this.i=r):(r=o,this.i=r),this.g=-3,!0}},l.Pb=function(){return eH(this)},l.Tb=function(){return this.a},l.Ub=function(){var e;if(this.g<-1||this.Sb())return--this.a,this.g=0,e=this.i,this.Sb(),e;throw at(new cc)},l.Vb=function(){return this.a-1},l.Qb=function(){throw at(new Vr)},l.ul=function(){return!1},l.Wb=function(e){throw at(new Vr)},l.vl=function(){return!0},l.a=0,l.d=0,l.f=!1,l.g=0,l.n=0,l.o=0;var KP;I(Yi,"EContentsEList/FeatureIteratorImpl",287),D(711,287,vU,Qmt),l.ul=function(){return!0},I(Yi,"EContentsEList/ResolvingFeatureIteratorImpl",711),D(1178,711,vU,YJt),l.vl=function(){return!1},I(Rn,"ENamedElementImpl/1/1",1178),D(1179,287,vU,XJt),l.vl=function(){return!1},I(Rn,"ENamedElementImpl/1/2",1179),D(38,152,LN,Ry,Tst,ha,jst,Tg,jf,l4t,Lre,h4t,Dre,A3t,Mre,g4t,Ire,L3t,Ore,f4t,Nre,NS,jI,sst,d4t,Pre,D3t,Fre),l.Kj=function(){return K3t(this)},l.Rj=function(){var e;return e=K3t(this),e?e.ik():null},l.hj=function(e){return this.b==-1&&this.a&&(this.b=this.c.Hh(this.a.Lj(),this.a.pk())),this.c.yh(this.b,e)},l.jj=function(){return this.c},l.Sj=function(){var e;return e=K3t(this),e?e.tk():!1},l.b=-1,I(Rn,"ENotificationImpl",38),D(411,291,{110:1,94:1,93:1,155:1,197:1,58:1,62:1,114:1,480:1,54:1,99:1,158:1,411:1,291:1,119:1,120:1},Vnt),l.Ah=function(e){return qhe(this,e)},l.Lh=function(e,n,r){var s,o,h;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),h=this.t,h>1||h==-1;case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,29):null;case 11:return!this.d&&(this.d=new Ju(Nu,this,11)),this.d;case 12:return!this.c&&(this.c=new Jt(Ov,this,12,10)),this.c;case 13:return!this.a&&(this.a=new lI(this,this)),this.a;case 14:return Al(this)}return Ih(this,e-fr((wn(),tb)),En((s=u(jn(this,16),29),s||tb),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?qhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,10,r);case 12:return!this.c&&(this.c=new Jt(Ov,this,12,10)),vu(this.c,e,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),tb)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),tb)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r);case 10:return hh(this,null,10,r);case 11:return!this.d&&(this.d=new Ju(Nu,this,11)),so(this.d,e,r);case 12:return!this.c&&(this.c=new Jt(Ov,this,12,10)),so(this.c,e,r);case 14:return so(Al(this),e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),tb)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),tb)),e,r)},l.Wh=function(e){var n,r,s;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,29));case 11:return!!this.d&&this.d.i!=0;case 12:return!!this.c&&this.c.i!=0;case 13:return!!this.a&&Al(this.a.a).i!=0&&!(this.b&&hot(this.b));case 14:return!!this.b&&hot(this.b)}return Dh(this,e-fr((wn(),tb)),En((n=u(jn(this,16),29),n||tb),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:Hy(this,u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 11:!this.d&&(this.d=new Ju(Nu,this,11)),Ir(this.d),!this.d&&(this.d=new Ju(Nu,this,11)),gs(this.d,u(n,16));return;case 12:!this.c&&(this.c=new Jt(Ov,this,12,10)),Ir(this.c),!this.c&&(this.c=new Jt(Ov,this,12,10)),gs(this.c,u(n,16));return;case 13:!this.a&&(this.a=new lI(this,this)),j_(this.a),!this.a&&(this.a=new lI(this,this)),gs(this.a,u(n,16));return;case 14:Ir(Al(this)),gs(Al(this),u(n,16));return}Fh(this,e-fr((wn(),tb)),En((r=u(jn(this,16),29),r||tb),e),n)},l.ii=function(){return wn(),tb},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:Hy(this,1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 11:!this.d&&(this.d=new Ju(Nu,this,11)),Ir(this.d);return;case 12:!this.c&&(this.c=new Jt(Ov,this,12,10)),Ir(this.c);return;case 13:this.a&&j_(this.a);return;case 14:this.b&&Ir(this.b);return}Ph(this,e-fr((wn(),tb)),En((n=u(jn(this,16),29),n||tb),e))},l.pi=function(){var e,n;if(this.c)for(e=0,n=this.c.i;em&&ls(e,m,null),s=0,r=new Zn(Al(this.a));r.e!=r.i.gc();)n=u(ar(r),89),h=(d=n.c,d||(wn(),Sd)),ls(e,s++,h);return e},l.Hj=function(){var e,n,r,s,o;for(o=new dp,o.a+="[",e=Al(this.a),n=0,s=Al(this.a).i;n1);case 5:return zS(this,e,n,r,s,this.i-u(r,15).gc()>0);default:return new Tg(this.e,e,this.c,n,r,s,!0)}},l.Tj=function(){return!0},l.Qj=function(){return hot(this)},l.Gk=function(){Ir(this)},I(Rn,"EOperationImpl/2",1377),D(507,1,{2037:1,507:1},fQt),I(Rn,"EPackageImpl/1",507),D(14,83,ic,Jt),l.il=function(){return this.d},l.jl=function(){return this.b},l.ml=function(){return!0},l.b=0,I(Yi,"EObjectContainmentWithInverseEList",14),D(365,14,ic,z6),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentWithInverseEList/Resolving",365),D(307,365,ic,Iy),l.Ni=function(){this.a.tb=null},I(Rn,"EPackageImpl/2",307),D(1278,1,{},tet),I(Rn,"EPackageImpl/3",1278),D(733,45,E5,Z2t),l._b=function(e){return ba(e)?ost(this,e):!!Eo(this.f,e)},I(Rn,"EPackageRegistryImpl",733),D(518,291,{110:1,94:1,93:1,155:1,197:1,58:1,2116:1,114:1,480:1,54:1,99:1,158:1,518:1,291:1,119:1,120:1},Unt),l.Ah=function(e){return Hhe(this,e)},l.Lh=function(e,n,r){var s,o,h;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),h=this.t,h>1||h==-1;case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,62):null}return Ih(this,e-fr((wn(),K3)),En((s=u(jn(this,16),29),s||K3),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?Hhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,10,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),K3)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),K3)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r);case 10:return hh(this,null,10,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),K3)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),K3)),e,r)},l.Wh=function(e){var n,r,s;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,62))}return Dh(this,e-fr((wn(),K3)),En((n=u(jn(this,16),29),n||K3),e))},l.ii=function(){return wn(),K3},I(Rn,"EParameterImpl",518),D(102,461,{110:1,94:1,93:1,155:1,197:1,58:1,19:1,179:1,69:1,114:1,480:1,54:1,99:1,158:1,102:1,461:1,291:1,119:1,120:1,692:1},nvt),l.Lh=function(e,n,r){var s,o,h,d;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),d=this.t,d>1||d==-1;case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return Pn(),!!(this.Bb&Uf);case 11:return Pn(),!!(this.Bb&b3);case 12:return Pn(),!!(this.Bb&u3);case 13:return this.j;case 14:return P7(this);case 15:return Pn(),!!(this.Bb&ol);case 16:return Pn(),!!(this.Bb&Jd);case 17:return Py(this);case 18:return Pn(),!!(this.Bb&Fc);case 19:return Pn(),h=yo(this),!!(h&&h.Bb&Fc);case 20:return Pn(),!!(this.Bb&po);case 21:return n?yo(this):this.b;case 22:return n?Z4t(this):ase(this);case 23:return!this.a&&(this.a=new G4(V3,this,23)),this.a}return Ih(this,e-fr((wn(),dx)),En((s=u(jn(this,16),29),s||dx),e),n,r)},l.Wh=function(e){var n,r,s,o;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return o=this.t,o>1||o==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return P7(this)!=null;case 15:return(this.Bb&ol)!=0;case 16:return(this.Bb&Jd)!=0;case 17:return!!Py(this);case 18:return(this.Bb&Fc)!=0;case 19:return s=yo(this),!!s&&(s.Bb&Fc)!=0;case 20:return(this.Bb&po)==0;case 21:return!!this.b;case 22:return!!ase(this);case 23:return!!this.a&&this.a.i!=0}return Dh(this,e-fr((wn(),dx)),En((n=u(jn(this,16),29),n||dx),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:wst(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:Hy(this,u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 10:m7(this,Ie(Me(n)));return;case 11:x7(this,Ie(Me(n)));return;case 12:v7(this,Ie(Me(n)));return;case 13:fmt(this,Gr(n));return;case 15:y7(this,Ie(Me(n)));return;case 16:k7(this,Ie(Me(n)));return;case 18:wfn(this,Ie(Me(n)));return;case 20:M5t(this,Ie(Me(n)));return;case 21:L4t(this,u(n,19));return;case 23:!this.a&&(this.a=new G4(V3,this,23)),Ir(this.a),!this.a&&(this.a=new G4(V3,this,23)),gs(this.a,u(n,16));return}Fh(this,e-fr((wn(),dx)),En((r=u(jn(this,16),29),r||dx),e),n)},l.ii=function(){return wn(),dx},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),4),mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:Hy(this,1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 10:m7(this,!0);return;case 11:x7(this,!1);return;case 12:v7(this,!1);return;case 13:this.i=null,Gq(this,null);return;case 15:y7(this,!1);return;case 16:k7(this,!1);return;case 18:D5t(this,!1),Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),2);return;case 20:M5t(this,!0);return;case 21:L4t(this,null);return;case 23:!this.a&&(this.a=new G4(V3,this,23)),Ir(this.a);return}Ph(this,e-fr((wn(),dx)),En((n=u(jn(this,16),29),n||dx),e))},l.pi=function(){Z4t(this),RE($o((il(),ja),this)),of(this),this.Bb|=1},l.uk=function(){return yo(this)},l._k=function(){var e;return e=yo(this),!!e&&(e.Bb&Fc)!=0},l.al=function(){return(this.Bb&Fc)!=0},l.bl=function(){return(this.Bb&po)!=0},l.Yk=function(e,n){return this.c=null,y5t(this,e,n)},l.Ib=function(){var e;return this.Db&64?oV(this):(e=new ef(oV(this)),e.a+=" (containment: ",gp(e,(this.Bb&Fc)!=0),e.a+=", resolveProxies: ",gp(e,(this.Bb&po)!=0),e.a+=")",e.a)},I(Rn,"EReferenceImpl",102),D(561,120,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1,561:1,119:1,120:1},wC),l.Fb=function(e){return this===e},l.ld=function(){return this.b},l.md=function(){return this.c},l.Hb=function(){return Em(this)},l.Di=function(e){kun(this,Gr(e))},l.nd=function(e){return oun(this,Gr(e))},l.Lh=function(e,n,r){var s;switch(e){case 0:return this.b;case 1:return this.c}return Ih(this,e-fr((wn(),wo)),En((s=u(jn(this,16),29),s||wo),e),n,r)},l.Wh=function(e){var n;switch(e){case 0:return this.b!=null;case 1:return this.c!=null}return Dh(this,e-fr((wn(),wo)),En((n=u(jn(this,16),29),n||wo),e))},l.bi=function(e,n){var r;switch(e){case 0:Eun(this,Gr(n));return;case 1:S4t(this,Gr(n));return}Fh(this,e-fr((wn(),wo)),En((r=u(jn(this,16),29),r||wo),e),n)},l.ii=function(){return wn(),wo},l.ki=function(e){var n;switch(e){case 0:C4t(this,null);return;case 1:S4t(this,null);return}Ph(this,e-fr((wn(),wo)),En((n=u(jn(this,16),29),n||wo),e))},l.Bi=function(){var e;return this.a==-1&&(e=this.b,this.a=e==null?0:_p(e)),this.a},l.Ci=function(e){this.a=e},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new ef(qf(this)),e.a+=" (key: ",Mo(e,this.b),e.a+=", value: ",Mo(e,this.c),e.a+=")",e.a)},l.a=-1,l.b=null,l.c=null;var Mc=I(Rn,"EStringToStringMapEntryImpl",561),MTe=os(Yi,"FeatureMap/Entry/Internal");D(576,1,yU),l.xl=function(e){return this.yl(u(e,54))},l.yl=function(e){return this.xl(e)},l.Fb=function(e){var n,r;return this===e?!0:Lt(e,76)?(n=u(e,76),n.Lk()==this.c?(r=this.md(),r==null?n.md()==null:Ti(r,n.md())):!1):!1},l.Lk=function(){return this.c},l.Hb=function(){var e;return e=this.md(),$i(this.c)^(e==null?0:$i(e))},l.Ib=function(){var e,n;return e=this.c,n=sh(e.qk()).yi(),e.xe(),(n!=null&&n.length!=0?n+":"+e.xe():e.xe())+"="+this.md()},I(Rn,"EStructuralFeatureImpl/BasicFeatureMapEntry",576),D(791,576,yU,hvt),l.yl=function(e){return new hvt(this.c,e)},l.md=function(){return this.a},l.zl=function(e,n,r){return apn(this,e,this.a,n,r)},l.Al=function(e,n,r){return opn(this,e,this.a,n,r)},I(Rn,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",791),D(1350,1,{},dQt),l.yk=function(e,n,r,s,o){var h;return h=u(UE(e,this.b),220),h.Yl(this.a).Fk(s)},l.zk=function(e,n,r,s,o){var h;return h=u(UE(e,this.b),220),h.Pl(this.a,s,o)},l.Ak=function(e,n,r,s,o){var h;return h=u(UE(e,this.b),220),h.Ql(this.a,s,o)},l.Bk=function(e,n,r){var s;return s=u(UE(e,this.b),220),s.Yl(this.a).Qj()},l.Ck=function(e,n,r,s){var o;o=u(UE(e,this.b),220),o.Yl(this.a).Wb(s)},l.Dk=function(e,n,r){return u(UE(e,this.b),220).Yl(this.a)},l.Ek=function(e,n,r){var s;s=u(UE(e,this.b),220),s.Yl(this.a).Gk()},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1350),D(91,1,{},mp,X2,yp,ew),l.yk=function(e,n,r,s,o){var h;if(h=n.li(r),h==null&&n.mi(r,h=vV(this,e)),!o)switch(this.e){case 50:case 41:return u(h,597).bk();case 40:return u(h,220).Vl()}return h},l.zk=function(e,n,r,s,o){var h,d;return d=n.li(r),d==null&&n.mi(r,d=vV(this,e)),h=u(d,71).Wk(s,o),h},l.Ak=function(e,n,r,s,o){var h;return h=n.li(r),h!=null&&(o=u(h,71).Xk(s,o)),o},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null&&u(s,79).Qj()},l.Ck=function(e,n,r,s){var o;o=u(n.li(r),79),!o&&n.mi(r,o=vV(this,e)),o.Wb(s)},l.Dk=function(e,n,r){var s,o;return o=n.li(r),o==null&&n.mi(r,o=vV(this,e)),Lt(o,79)?u(o,79):(s=u(n.li(r),15),new nKt(s))},l.Ek=function(e,n,r){var s;s=u(n.li(r),79),!s&&n.mi(r,s=vV(this,e)),s.Gk()},l.b=0,l.e=0,I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateMany",91),D(512,1,{}),l.zk=function(e,n,r,s,o){throw at(new Vr)},l.Ak=function(e,n,r,s,o){throw at(new Vr)},l.Dk=function(e,n,r){return new hne(this,e,n,r)};var Q0;I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingle",512),D(1367,1,aht,hne),l.Fk=function(e){return this.a.yk(this.c,this.d,this.b,e,!0)},l.Qj=function(){return this.a.Bk(this.c,this.d,this.b)},l.Wb=function(e){this.a.Ck(this.c,this.d,this.b,e)},l.Gk=function(){this.a.Ek(this.c,this.d,this.b)},l.b=0,I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1367),D(784,512,{},Zyt),l.yk=function(e,n,r,s,o){return oct(e,e.Ph(),e.Fh())==this.b?this.bl()&&s?Kot(e):e.Ph():null},l.zk=function(e,n,r,s,o){var h,d;return e.Ph()&&(o=(h=e.Fh(),h>=0?e.Ah(o):e.Ph().Th(e,-1-h,null,o))),d=ns(e.Dh(),this.e),e.Ch(s,d,o)},l.Ak=function(e,n,r,s,o){var h;return h=ns(e.Dh(),this.e),e.Ch(null,h,o)},l.Bk=function(e,n,r){var s;return s=ns(e.Dh(),this.e),!!e.Ph()&&e.Fh()==s},l.Ck=function(e,n,r,s){var o,h,d,m,k;if(s!=null&&!hct(this.a,s))throw at(new fE(xU+(Lt(s,58)?$xt(u(s,58).Dh()):a4t(Wl(s)))+kU+this.a+"'"));if(o=e.Ph(),d=ns(e.Dh(),this.e),$t(s)!==$t(o)||e.Fh()!=d&&s!=null){if(_7(e,u(s,58)))throw at(new zn(oA+e.Ib()));k=null,o&&(k=(h=e.Fh(),h>=0?e.Ah(k):e.Ph().Th(e,-1-h,null,k))),m=u(s,54),m&&(k=m.Rh(e,ns(m.Dh(),this.b),null,k)),k=e.Ch(m,d,k),k&&k.oj()}else e.vh()&&e.wh()&&Ei(e,new ha(e,1,d,s,s))},l.Ek=function(e,n,r){var s,o,h,d;s=e.Ph(),s?(d=(o=e.Fh(),o>=0?e.Ah(null):e.Ph().Th(e,-1-o,null,null)),h=ns(e.Dh(),this.e),d=e.Ch(null,h,d),d&&d.oj()):e.vh()&&e.wh()&&Ei(e,new NS(e,1,this.e,null,null))},l.bl=function(){return!1},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",784),D(1351,784,{},ete),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1351),D(574,512,{}),l.yk=function(e,n,r,s,o){var h;return h=n.li(r),h==null?this.b:$t(h)===$t(Q0)?null:h},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null&&($t(s)===$t(Q0)||!Ti(s,this.b))},l.Ck=function(e,n,r,s){var o,h;e.vh()&&e.wh()?(o=(h=n.li(r),h==null?this.b:$t(h)===$t(Q0)?null:h),s==null?this.c!=null?(n.mi(r,null),s=this.b):this.b!=null?n.mi(r,Q0):n.mi(r,null):(this.Bl(s),n.mi(r,s)),Ei(e,this.d.Cl(e,1,this.e,o,s))):s==null?this.c!=null?n.mi(r,null):this.b!=null?n.mi(r,Q0):n.mi(r,null):(this.Bl(s),n.mi(r,s))},l.Ek=function(e,n,r){var s,o;e.vh()&&e.wh()?(s=(o=n.li(r),o==null?this.b:$t(o)===$t(Q0)?null:o),n.ni(r),Ei(e,this.d.Cl(e,1,this.e,s,this.b))):n.ni(r)},l.Bl=function(e){throw at(new dKt)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",574),D(O5,1,{},mC),l.Cl=function(e,n,r,s,o){return new NS(e,n,r,s,o)},l.Dl=function(e,n,r,s,o,h){return new sst(e,n,r,s,o,h)};var HIt,VIt,UIt,GIt,KIt,WIt,YIt,s0t,XIt;I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",O5),D(1368,O5,{},b1),l.Cl=function(e,n,r,s,o){return new D3t(e,n,r,Ie(Me(s)),Ie(Me(o)))},l.Dl=function(e,n,r,s,o,h){return new Fre(e,n,r,Ie(Me(s)),Ie(Me(o)),h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1368),D(1369,O5,{},uM),l.Cl=function(e,n,r,s,o){return new l4t(e,n,r,u(s,222).a,u(o,222).a)},l.Dl=function(e,n,r,s,o,h){return new Lre(e,n,r,u(s,222).a,u(o,222).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1369),D(1370,O5,{},lM),l.Cl=function(e,n,r,s,o){return new h4t(e,n,r,u(s,180).a,u(o,180).a)},l.Dl=function(e,n,r,s,o,h){return new Dre(e,n,r,u(s,180).a,u(o,180).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1370),D(1371,O5,{},u6),l.Cl=function(e,n,r,s,o){return new A3t(e,n,r,Rt(Ht(s)),Rt(Ht(o)))},l.Dl=function(e,n,r,s,o,h){return new Mre(e,n,r,Rt(Ht(s)),Rt(Ht(o)),h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1371),D(1372,O5,{},eet),l.Cl=function(e,n,r,s,o){return new g4t(e,n,r,u(s,161).a,u(o,161).a)},l.Dl=function(e,n,r,s,o,h){return new Ire(e,n,r,u(s,161).a,u(o,161).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1372),D(1373,O5,{},net),l.Cl=function(e,n,r,s,o){return new L3t(e,n,r,u(s,17).a,u(o,17).a)},l.Dl=function(e,n,r,s,o,h){return new Ore(e,n,r,u(s,17).a,u(o,17).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1373),D(1374,O5,{},ret),l.Cl=function(e,n,r,s,o){return new f4t(e,n,r,u(s,168).a,u(o,168).a)},l.Dl=function(e,n,r,s,o,h){return new Nre(e,n,r,u(s,168).a,u(o,168).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1374),D(1375,O5,{},iet),l.Cl=function(e,n,r,s,o){return new d4t(e,n,r,u(s,191).a,u(o,191).a)},l.Dl=function(e,n,r,s,o,h){return new Pre(e,n,r,u(s,191).a,u(o,191).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1375),D(1353,574,{},fne),l.Bl=function(e){if(!this.a.fk(e))throw at(new fE(xU+Wl(e)+kU+this.a+"'"))},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1353),D(1354,574,{},Zte),l.Bl=function(e){},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1354),D(785,574,{}),l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null},l.Ck=function(e,n,r,s){var o,h;e.vh()&&e.wh()?(o=!0,h=n.li(r),h==null?(o=!1,h=this.b):$t(h)===$t(Q0)&&(h=null),s==null?this.c!=null?(n.mi(r,null),s=this.b):n.mi(r,Q0):(this.Bl(s),n.mi(r,s)),Ei(e,this.d.Dl(e,1,this.e,h,s,!o))):s==null?this.c!=null?n.mi(r,null):n.mi(r,Q0):(this.Bl(s),n.mi(r,s))},l.Ek=function(e,n,r){var s,o;e.vh()&&e.wh()?(s=!0,o=n.li(r),o==null?(s=!1,o=this.b):$t(o)===$t(Q0)&&(o=null),n.ni(r),Ei(e,this.d.Dl(e,2,this.e,o,this.b,s))):n.ni(r)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",785),D(1355,785,{},dne),l.Bl=function(e){if(!this.a.fk(e))throw at(new fE(xU+Wl(e)+kU+this.a+"'"))},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1355),D(1356,785,{},tee),l.Bl=function(e){},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1356),D(410,512,{},Iz),l.yk=function(e,n,r,s,o){var h,d,m,k,T;if(T=n.li(r),this.tk()&&$t(T)===$t(Q0))return null;if(this.bl()&&s&&T!=null){if(m=u(T,54),m.Vh()&&(k=jb(e,m),m!=k)){if(!hct(this.a,k))throw at(new fE(xU+Wl(k)+kU+this.a+"'"));n.mi(r,T=k),this.al()&&(h=u(k,54),d=m.Th(e,this.b?ns(m.Dh(),this.b):-1-ns(e.Dh(),this.e),null,null),!h.Ph()&&(d=h.Rh(e,this.b?ns(h.Dh(),this.b):-1-ns(e.Dh(),this.e),null,d)),d&&d.oj()),e.vh()&&e.wh()&&Ei(e,new NS(e,9,this.e,m,k))}return T}else return T},l.zk=function(e,n,r,s,o){var h,d;return d=n.li(r),$t(d)===$t(Q0)&&(d=null),n.mi(r,s),this.Mj()?$t(d)!==$t(s)&&d!=null&&(h=u(d,54),o=h.Th(e,ns(h.Dh(),this.b),null,o)):this.al()&&d!=null&&(o=u(d,54).Th(e,-1-ns(e.Dh(),this.e),null,o)),e.vh()&&e.wh()&&(!o&&(o=new xb(4)),o.nj(new NS(e,1,this.e,d,s))),o},l.Ak=function(e,n,r,s,o){var h;return h=n.li(r),$t(h)===$t(Q0)&&(h=null),n.ni(r),e.vh()&&e.wh()&&(!o&&(o=new xb(4)),this.tk()?o.nj(new NS(e,2,this.e,h,null)):o.nj(new NS(e,1,this.e,h,null))),o},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null},l.Ck=function(e,n,r,s){var o,h,d,m,k;if(s!=null&&!hct(this.a,s))throw at(new fE(xU+(Lt(s,58)?$xt(u(s,58).Dh()):a4t(Wl(s)))+kU+this.a+"'"));k=n.li(r),m=k!=null,this.tk()&&$t(k)===$t(Q0)&&(k=null),d=null,this.Mj()?$t(k)!==$t(s)&&(k!=null&&(o=u(k,54),d=o.Th(e,ns(o.Dh(),this.b),null,d)),s!=null&&(o=u(s,54),d=o.Rh(e,ns(o.Dh(),this.b),null,d))):this.al()&&$t(k)!==$t(s)&&(k!=null&&(d=u(k,54).Th(e,-1-ns(e.Dh(),this.e),null,d)),s!=null&&(d=u(s,54).Rh(e,-1-ns(e.Dh(),this.e),null,d))),s==null&&this.tk()?n.mi(r,Q0):n.mi(r,s),e.vh()&&e.wh()?(h=new sst(e,1,this.e,k,s,this.tk()&&!m),d?(d.nj(h),d.oj()):Ei(e,h)):d&&d.oj()},l.Ek=function(e,n,r){var s,o,h,d,m;m=n.li(r),d=m!=null,this.tk()&&$t(m)===$t(Q0)&&(m=null),h=null,m!=null&&(this.Mj()?(s=u(m,54),h=s.Th(e,ns(s.Dh(),this.b),null,h)):this.al()&&(h=u(m,54).Th(e,-1-ns(e.Dh(),this.e),null,h))),n.ni(r),e.vh()&&e.wh()?(o=new sst(e,this.tk()?2:1,this.e,m,null,d),h?(h.nj(o),h.oj()):Ei(e,o)):h&&h.oj()},l.Mj=function(){return!1},l.al=function(){return!1},l.bl=function(){return!1},l.tk=function(){return!1},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",410),D(575,410,{},uit),l.al=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",575),D(1359,575,{},JJt),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1359),D(787,575,{},Jmt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",787),D(1361,787,{},ZJt),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1361),D(650,575,{},kit),l.Mj=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",650),D(1360,650,{},nte),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1360),D(788,650,{},Rvt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",788),D(1362,788,{},rte),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1362),D(651,410,{},Zmt),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",651),D(1363,651,{},tZt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1363),D(789,651,{},Fvt),l.Mj=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",789),D(1364,789,{},ite),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1364),D(1357,410,{},eZt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1357),D(786,410,{},Bvt),l.Mj=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",786),D(1358,786,{},ste),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1358),D(790,576,yU,Nyt),l.yl=function(e){return new Nyt(this.a,this.c,e)},l.md=function(){return this.b},l.zl=function(e,n,r){return i0n(this,e,this.b,r)},l.Al=function(e,n,r){return s0n(this,e,this.b,r)},I(Rn,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",790),D(1365,1,aht,nKt),l.Fk=function(e){return this.a},l.Qj=function(){return Lt(this.a,97)?u(this.a,97).Qj():!this.a.dc()},l.Wb=function(e){this.a.$b(),this.a.Gc(u(e,15))},l.Gk=function(){Lt(this.a,97)?u(this.a,97).Gk():this.a.$b()},I(Rn,"EStructuralFeatureImpl/SettingMany",1365),D(1366,576,yU,_ie),l.xl=function(e){return new fit((Ni(),DL),this.b.ri(this.a,e))},l.md=function(){return null},l.zl=function(e,n,r){return r},l.Al=function(e,n,r){return r},I(Rn,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1366),D(652,576,yU,fit),l.xl=function(e){return new fit(this.c,e)},l.md=function(){return this.a},l.zl=function(e,n,r){return r},l.Al=function(e,n,r){return r},I(Rn,"EStructuralFeatureImpl/SimpleFeatureMapEntry",652),D(403,505,o0,x0),l.aj=function(e){return Vt(mf,Ln,29,e,0,1)},l.Yi=function(){return!1},I(Rn,"ESuperAdapter/1",403),D(456,448,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,850:1,54:1,99:1,158:1,456:1,119:1,120:1},vC),l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new DS(this,Do,this)),this.a}return Ih(this,e-fr((wn(),Pv)),En((s=u(jn(this,16),29),s||Pv),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 2:return!this.a&&(this.a=new DS(this,Do,this)),so(this.a,e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Pv)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Pv)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return!!this.a&&this.a.i!=0}return Dh(this,e-fr((wn(),Pv)),En((n=u(jn(this,16),29),n||Pv),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:!this.a&&(this.a=new DS(this,Do,this)),Ir(this.a),!this.a&&(this.a=new DS(this,Do,this)),gs(this.a,u(n,16));return}Fh(this,e-fr((wn(),Pv)),En((r=u(jn(this,16),29),r||Pv),e),n)},l.ii=function(){return wn(),Pv},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:!this.a&&(this.a=new DS(this,Do,this)),Ir(this.a);return}Ph(this,e-fr((wn(),Pv)),En((n=u(jn(this,16),29),n||Pv),e))},I(Rn,"ETypeParameterImpl",456),D(457,83,ic,DS),l.Nj=function(e,n){return v3n(this,u(e,89),n)},l.Oj=function(e,n){return y3n(this,u(e,89),n)},I(Rn,"ETypeParameterImpl/1",457),D(647,45,E5,Gnt),l.ec=function(){return new s$(this)},I(Rn,"ETypeParameterImpl/2",647),D(570,dd,sl,s$),l.Fc=function(e){return _Zt(this,u(e,89))},l.Gc=function(e){var n,r,s;for(s=!1,r=e.Kc();r.Ob();)n=u(r.Pb(),89),hi(this.a,n,"")==null&&(s=!0);return s},l.$b=function(){dl(this.a)},l.Hc=function(e){return Tu(this.a,e)},l.Kc=function(){var e;return e=new sw(new mr(this.a).a),new a$(e)},l.Mc=function(e){return wse(this,e)},l.gc=function(){return QC(this.a)},I(Rn,"ETypeParameterImpl/2/1",570),D(571,1,wa,a$),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(Um(this.a).ld(),89)},l.Ob=function(){return this.a.b},l.Qb=function(){Sae(this.a)},I(Rn,"ETypeParameterImpl/2/1/1",571),D(1329,45,E5,GKt),l._b=function(e){return ba(e)?ost(this,e):!!Eo(this.f,e)},l.xc=function(e){var n,r;return n=ba(e)?nu(this,e):Ko(Eo(this.f,e)),Lt(n,851)?(r=u(n,851),n=r.Kk(),hi(this,u(e,241),n),n):n??(e==null?(hrt(),OTe):null)},I(Rn,"EValidatorRegistryImpl",1329),D(1349,720,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,2040:1,54:1,99:1,158:1,119:1,120:1},l6),l.ri=function(e,n){switch(e.hk()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return n==null?null:rc(n);case 25:return bgn(n);case 27:return D0n(n);case 28:return M0n(n);case 29:return n==null?null:iJt(TL[0],u(n,206));case 41:return n==null?"":V2(u(n,296));case 42:return rc(n);case 50:return Gr(n);default:throw at(new zn(lT+e.xe()+fv))}},l.si=function(e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;switch(e.G==-1&&(e.G=($=sh(e),$?Np($.vi(),e):-1)),e.G){case 0:return r=new Hnt,r;case 1:return n=new aM,n;case 2:return s=new Pj,s;case 4:return o=new o$,o;case 5:return h=new UKt,h;case 6:return d=new bKt,d;case 7:return m=new Fj,m;case 10:return T=new E4,T;case 11:return A=new Vnt,A;case 12:return P=new xne,P;case 13:return U=new Unt,U;case 14:return J=new nvt,J;case 17:return tt=new wC,tt;case 18:return k=new lm,k;case 19:return ht=new vC,ht;default:throw at(new zn(Vlt+e.zb+fv))}},l.ti=function(e,n){switch(e.hk()){case 20:return n==null?null:new Twt(n);case 21:return n==null?null:new Sb(n);case 23:case 22:return n==null?null:Lwn(n);case 26:case 24:return n==null?null:GI(lh(n,-128,127)<<24>>24);case 25:return Wxn(n);case 27:return bvn(n);case 28:return wvn(n);case 29:return $3n(n);case 32:case 31:return n==null?null:Jy(n);case 38:case 37:return n==null?null:new z2t(n);case 40:case 39:return n==null?null:he(lh(n,Ga,xi));case 41:return null;case 42:return n==null,null;case 44:case 43:return n==null?null:Mg(mV(n));case 49:case 48:return n==null?null:w7(lh(n,EU,32767)<<16>>16);case 50:return n;default:throw at(new zn(lT+e.xe()+fv))}},I(Rn,"EcoreFactoryImpl",1349),D(560,184,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,2038:1,54:1,99:1,158:1,184:1,560:1,119:1,120:1,690:1},Uee),l.gb=!1,l.hb=!1;var QIt,ITe=!1;I(Rn,"EcorePackageImpl",560),D(1234,1,{851:1},K1),l.Kk=function(){return wJt(),NTe},I(Rn,"EcorePackageImpl/1",1234),D(1243,1,li,JR),l.fk=function(e){return Lt(e,155)},l.gk=function(e){return Vt(HP,Ln,155,e,0,1)},I(Rn,"EcorePackageImpl/10",1243),D(1244,1,li,ZR),l.fk=function(e){return Lt(e,197)},l.gk=function(e){return Vt(Xdt,Ln,197,e,0,1)},I(Rn,"EcorePackageImpl/11",1244),D(1245,1,li,tj),l.fk=function(e){return Lt(e,58)},l.gk=function(e){return Vt(p2,Ln,58,e,0,1)},I(Rn,"EcorePackageImpl/12",1245),D(1246,1,li,ej),l.fk=function(e){return Lt(e,411)},l.gk=function(e){return Vt(vf,zTt,62,e,0,1)},I(Rn,"EcorePackageImpl/13",1246),D(1247,1,li,nj),l.fk=function(e){return Lt(e,241)},l.gk=function(e){return Vt(F1,Ln,241,e,0,1)},I(Rn,"EcorePackageImpl/14",1247),D(1248,1,li,rj),l.fk=function(e){return Lt(e,518)},l.gk=function(e){return Vt(Ov,Ln,2116,e,0,1)},I(Rn,"EcorePackageImpl/15",1248),D(1249,1,li,w1),l.fk=function(e){return Lt(e,102)},l.gk=function(e){return Vt(U3,I5,19,e,0,1)},I(Rn,"EcorePackageImpl/16",1249),D(1250,1,li,Bu),l.fk=function(e){return Lt(e,179)},l.gk=function(e){return Vt(Wu,I5,179,e,0,1)},I(Rn,"EcorePackageImpl/17",1250),D(1251,1,li,set),l.fk=function(e){return Lt(e,480)},l.gk=function(e){return Vt(H3,Ln,480,e,0,1)},I(Rn,"EcorePackageImpl/18",1251),D(1252,1,li,aet),l.fk=function(e){return Lt(e,561)},l.gk=function(e){return Vt(Mc,Nme,561,e,0,1)},I(Rn,"EcorePackageImpl/19",1252),D(1235,1,li,oet),l.fk=function(e){return Lt(e,331)},l.gk=function(e){return Vt(V3,I5,35,e,0,1)},I(Rn,"EcorePackageImpl/2",1235),D(1253,1,li,Ru),l.fk=function(e){return Lt(e,248)},l.gk=function(e){return Vt(Do,Qme,89,e,0,1)},I(Rn,"EcorePackageImpl/20",1253),D(1254,1,li,yC),l.fk=function(e){return Lt(e,456)},l.gk=function(e){return Vt(Nu,Ln,850,e,0,1)},I(Rn,"EcorePackageImpl/21",1254),D(1255,1,li,ij),l.fk=function(e){return Ty(e)},l.gk=function(e){return Vt(ys,ue,484,e,8,1)},I(Rn,"EcorePackageImpl/22",1255),D(1256,1,li,sj),l.fk=function(e){return Lt(e,195)},l.gk=function(e){return Vt(ul,ue,195,e,0,2)},I(Rn,"EcorePackageImpl/23",1256),D(1257,1,li,h6),l.fk=function(e){return Lt(e,222)},l.gk=function(e){return Vt(Fk,ue,222,e,0,1)},I(Rn,"EcorePackageImpl/24",1257),D(1258,1,li,cet),l.fk=function(e){return Lt(e,180)},l.gk=function(e){return Vt(vA,ue,180,e,0,1)},I(Rn,"EcorePackageImpl/25",1258),D(1259,1,li,X8),l.fk=function(e){return Lt(e,206)},l.gk=function(e){return Vt(OU,ue,206,e,0,1)},I(Rn,"EcorePackageImpl/26",1259),D(1260,1,li,uet),l.fk=function(e){return!1},l.gk=function(e){return Vt(pOt,Ln,2215,e,0,1)},I(Rn,"EcorePackageImpl/27",1260),D(1261,1,li,aj),l.fk=function(e){return Cy(e)},l.gk=function(e){return Vt(zs,ue,345,e,7,1)},I(Rn,"EcorePackageImpl/28",1261),D(1262,1,li,het),l.fk=function(e){return Lt(e,61)},l.gk=function(e){return Vt(DIt,l3,61,e,0,1)},I(Rn,"EcorePackageImpl/29",1262),D(1236,1,li,fet),l.fk=function(e){return Lt(e,519)},l.gk=function(e){return Vt(ci,{3:1,4:1,5:1,2033:1},598,e,0,1)},I(Rn,"EcorePackageImpl/3",1236),D(1263,1,li,xC),l.fk=function(e){return Lt(e,582)},l.gk=function(e){return Vt(OIt,Ln,2039,e,0,1)},I(Rn,"EcorePackageImpl/30",1263),D(1264,1,li,oj),l.fk=function(e){return Lt(e,160)},l.gk=function(e){return Vt(nOt,l3,160,e,0,1)},I(Rn,"EcorePackageImpl/31",1264),D(1265,1,li,hM),l.fk=function(e){return Lt(e,76)},l.gk=function(e){return Vt(XK,ave,76,e,0,1)},I(Rn,"EcorePackageImpl/32",1265),D(1266,1,li,kC),l.fk=function(e){return Lt(e,161)},l.gk=function(e){return Vt(wT,ue,161,e,0,1)},I(Rn,"EcorePackageImpl/33",1266),D(1267,1,li,det),l.fk=function(e){return Lt(e,17)},l.gk=function(e){return Vt(Ra,ue,17,e,0,1)},I(Rn,"EcorePackageImpl/34",1267),D(1268,1,li,get),l.fk=function(e){return Lt(e,296)},l.gk=function(e){return Vt(t9t,Ln,296,e,0,1)},I(Rn,"EcorePackageImpl/35",1268),D(1269,1,li,fM),l.fk=function(e){return Lt(e,168)},l.gk=function(e){return Vt(gv,ue,168,e,0,1)},I(Rn,"EcorePackageImpl/36",1269),D(1270,1,li,EC),l.fk=function(e){return Lt(e,85)},l.gk=function(e){return Vt(e9t,Ln,85,e,0,1)},I(Rn,"EcorePackageImpl/37",1270),D(1271,1,li,W1),l.fk=function(e){return Lt(e,599)},l.gk=function(e){return Vt(JIt,Ln,599,e,0,1)},I(Rn,"EcorePackageImpl/38",1271),D(1272,1,li,Q8),l.fk=function(e){return!1},l.gk=function(e){return Vt(bOt,Ln,2216,e,0,1)},I(Rn,"EcorePackageImpl/39",1272),D(1237,1,li,pet),l.fk=function(e){return Lt(e,90)},l.gk=function(e){return Vt(mf,Ln,29,e,0,1)},I(Rn,"EcorePackageImpl/4",1237),D(1273,1,li,J8),l.fk=function(e){return Lt(e,191)},l.gk=function(e){return Vt(pv,ue,191,e,0,1)},I(Rn,"EcorePackageImpl/40",1273),D(1274,1,li,dM),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I(Rn,"EcorePackageImpl/41",1274),D(1275,1,li,R2),l.fk=function(e){return Lt(e,596)},l.gk=function(e){return Vt(IIt,Ln,596,e,0,1)},I(Rn,"EcorePackageImpl/42",1275),D(1276,1,li,TC),l.fk=function(e){return!1},l.gk=function(e){return Vt(wOt,ue,2217,e,0,1)},I(Rn,"EcorePackageImpl/43",1276),D(1277,1,li,gM),l.fk=function(e){return Lt(e,44)},l.gk=function(e){return Vt(Sw,xV,44,e,0,1)},I(Rn,"EcorePackageImpl/44",1277),D(1238,1,li,m1),l.fk=function(e){return Lt(e,142)},l.gk=function(e){return Vt(B1,Ln,142,e,0,1)},I(Rn,"EcorePackageImpl/5",1238),D(1239,1,li,CC),l.fk=function(e){return Lt(e,156)},l.gk=function(e){return Vt(n0t,Ln,156,e,0,1)},I(Rn,"EcorePackageImpl/6",1239),D(1240,1,li,Y1),l.fk=function(e){return Lt(e,468)},l.gk=function(e){return Vt(YK,Ln,685,e,0,1)},I(Rn,"EcorePackageImpl/7",1240),D(1241,1,li,X1),l.fk=function(e){return Lt(e,582)},l.gk=function(e){return Vt(Vg,Ln,694,e,0,1)},I(Rn,"EcorePackageImpl/8",1241),D(1242,1,li,bet),l.fk=function(e){return Lt(e,479)},l.gk=function(e){return Vt(EL,Ln,479,e,0,1)},I(Rn,"EcorePackageImpl/9",1242),D(1038,2080,Ome,dWt),l.Mi=function(e,n){i2n(this,u(n,424))},l.Qi=function(e,n){o1e(this,e,u(n,424))},I(Rn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1038),D(1039,152,LN,Pee),l.jj=function(){return this.a.a},I(Rn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1039),D(1067,1066,{},YQt),I("org.eclipse.emf.ecore.plugin","EcorePlugin",1067);var JIt=os(ove,"Resource");D(799,1524,cve),l.Hl=function(e){},l.Il=function(e){},l.El=function(){return!this.a&&(this.a=new Bnt(this)),this.a},l.Fl=function(e){var n,r,s,o,h;if(s=e.length,s>0)if(qn(0,e.length),e.charCodeAt(0)==47){for(h=new wu(4),o=1,n=1;n0&&(e=(Da(0,r,e.length),e.substr(0,r))));return O5n(this,e)},l.Gl=function(){return this.c},l.Ib=function(){var e;return V2(this.Rm)+"@"+(e=$i(this)>>>0,e.toString(16))+" uri='"+this.d+"'"},l.b=!1,I(oht,"ResourceImpl",799),D(1525,799,cve,rKt),I(oht,"BinaryResourceImpl",1525),D(1190,708,eht),l.bj=function(e){return Lt(e,58)?Thn(this,u(e,58)):Lt(e,599)?new Zn(u(e,599).El()):$t(e)===$t(this.f)?u(e,16).Kc():(_E(),GP.a)},l.Ob=function(){return O6t(this)},l.a=!1,I(Yi,"EcoreUtil/ContentTreeIterator",1190),D(1526,1190,eht,hee),l.bj=function(e){return $t(e)===$t(this.f)?u(e,15).Kc():new cie(u(e,58))},I(oht,"ResourceImpl/5",1526),D(658,2092,Xme,Bnt),l.Hc=function(e){return this.i<=4?L7(this,e):Lt(e,54)&&u(e,54).Jh()==this.a},l.Mi=function(e,n){e==this.i-1&&(this.a.b||(this.a.b=!0))},l.Oi=function(e,n){e==0?this.a.b||(this.a.b=!0):Fst(this,e,n)},l.Qi=function(e,n){},l.Ri=function(e,n,r){},l.Lj=function(){return 2},l.jj=function(){return this.a},l.Mj=function(){return!0},l.Nj=function(e,n){var r;return r=u(e,54),n=r.fi(this.a,n),n},l.Oj=function(e,n){var r;return r=u(e,54),r.fi(null,n)},l.Pj=function(){return!1},l.Si=function(){return!0},l.aj=function(e){return Vt(p2,Ln,58,e,0,1)},l.Yi=function(){return!1},I(oht,"ResourceImpl/ContentsEList",658),D(970,2062,W7,iKt),l.fd=function(e){return this.a.Ki(e)},l.gc=function(){return this.a.gc()},I(Yi,"AbstractSequentialInternalEList/1",970);var ZIt,tOt,ja,eOt;D(634,1,{},dte);var QK,JK;I(Yi,"BasicExtendedMetaData",634),D(1181,1,{},pQt),l.Jl=function(){return null},l.Kl=function(){return this.a==-2&&Ut(this,O3n(this.d,this.b)),this.a},l.Ll=function(){return null},l.Ml=function(){return mn(),mn(),co},l.xe=function(){return this.c==dT&&de(this,Mle(this.d,this.b)),this.c},l.Nl=function(){return 0},l.a=-2,l.c=dT,I(Yi,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1181),D(1182,1,{},Rre),l.Jl=function(){return this.a==(VE(),QK)&&Te(this,I8n(this.f,this.b)),this.a},l.Kl=function(){return 0},l.Ll=function(){return this.c==(VE(),QK)&&Yt(this,O8n(this.f,this.b)),this.c},l.Ml=function(){return!this.d&&ze(this,w7n(this.f,this.b)),this.d},l.xe=function(){return this.e==dT&&yn(this,Mle(this.f,this.b)),this.e},l.Nl=function(){return this.g==-2&&qe(this,Jyn(this.f,this.b)),this.g},l.e=dT,l.g=-2,I(Yi,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1182),D(1180,1,{},bQt),l.b=!1,l.c=!1,I(Yi,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1180),D(1183,1,{},jre),l.c=-2,l.e=dT,l.f=dT,I(Yi,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1183),D(593,632,ic,kz),l.Lj=function(){return this.c},l.ol=function(){return!1},l.Wi=function(e,n){return n},l.c=0,I(Yi,"EDataTypeEList",593);var nOt=os(Yi,"FeatureMap");D(78,593,{3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,79:1,160:1,220:1,2036:1,71:1,97:1},ps),l.bd=function(e,n){Q6n(this,e,u(n,76))},l.Fc=function(e){return p6n(this,u(e,76))},l.Hi=function(e){xln(this,u(e,76))},l.Nj=function(e,n){return qan(this,u(e,76),n)},l.Oj=function(e,n){return Svt(this,u(e,76),n)},l.Ti=function(e,n){return EEn(this,e,n)},l.Wi=function(e,n){return u9n(this,e,u(n,76))},l.hd=function(e,n){return Rkn(this,e,u(n,76))},l.Uj=function(e,n){return Han(this,u(e,76),n)},l.Vj=function(e,n){return qZt(this,u(e,76),n)},l.Wj=function(e,n,r){return jyn(this,u(e,76),u(n,76),r)},l.Zi=function(e,n){return Dot(this,e,u(n,76))},l.Ol=function(e,n){return Tkt(this,e,n)},l.cd=function(e,n){var r,s,o,h,d,m,k,T,A;for(T=new $m(n.gc()),o=n.Kc();o.Ob();)if(s=u(o.Pb(),76),h=s.Lk(),Ng(this.e,h))(!h.Si()||!dq(this,h,s.md())&&!L7(T,s))&&Or(T,s);else{for(A=Lu(this.e.Dh(),h),r=u(this.g,124),d=!0,m=0;m=0;)if(n=e[this.c],this.k.am(n.Lk()))return this.j=this.f?n:n.md(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},I(Yi,"BasicFeatureMap/FeatureEIterator",420),D(676,420,P0,Krt),l.ul=function(){return!0},I(Yi,"BasicFeatureMap/ResolvingFeatureEIterator",676),D(968,495,mU,sJt),l.pj=function(){return this},I(Yi,"EContentsEList/1",968),D(969,495,mU,LQt),l.ul=function(){return!1},I(Yi,"EContentsEList/2",969),D(967,287,vU,aJt),l.wl=function(e){},l.Ob=function(){return!1},l.Sb=function(){return!1},I(Yi,"EContentsEList/FeatureIteratorImpl/1",967),D(840,593,ic,Omt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EDataTypeEList/Unsettable",840),D(1958,593,ic,dJt),l.Si=function(){return!0},I(Yi,"EDataTypeUniqueEList",1958),D(1959,840,ic,gJt),l.Si=function(){return!0},I(Yi,"EDataTypeUniqueEList/Unsettable",1959),D(147,83,ic,Ju),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentEList/Resolving",147),D(1184,555,ic,pJt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentEList/Unsettable/Resolving",1184),D(766,14,ic,vvt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EObjectContainmentWithInverseEList/Unsettable",766),D(1222,766,ic,AZt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1222),D(757,504,ic,Nmt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EObjectEList/Unsettable",757),D(338,504,ic,G4),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectResolvingEList",338),D(1844,757,ic,bJt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectResolvingEList/Unsettable",1844),D(1527,1,{},wet);var OTe;I(Yi,"EObjectValidator",1527),D(559,504,ic,jz),l.il=function(){return this.d},l.jl=function(){return this.b},l.Mj=function(){return!0},l.ml=function(){return!0},l.b=0,I(Yi,"EObjectWithInverseEList",559),D(1225,559,ic,LZt),l.ll=function(){return!0},I(Yi,"EObjectWithInverseEList/ManyInverse",1225),D(635,559,ic,git),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EObjectWithInverseEList/Unsettable",635),D(1224,635,ic,DZt),l.ll=function(){return!0},I(Yi,"EObjectWithInverseEList/Unsettable/ManyInverse",1224),D(767,559,ic,yvt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectWithInverseResolvingEList",767),D(32,767,ic,kn),l.ll=function(){return!0},I(Yi,"EObjectWithInverseResolvingEList/ManyInverse",32),D(768,635,ic,xvt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectWithInverseResolvingEList/Unsettable",768),D(1223,768,ic,MZt),l.ll=function(){return!0},I(Yi,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1223),D(1185,632,ic),l.Li=function(){return(this.b&1792)==0},l.Ni=function(){this.b|=1},l.kl=function(){return(this.b&4)!=0},l.Mj=function(){return(this.b&40)!=0},l.ll=function(){return(this.b&16)!=0},l.ml=function(){return(this.b&8)!=0},l.nl=function(){return(this.b&b3)!=0},l.al=function(){return(this.b&32)!=0},l.ol=function(){return(this.b&Uf)!=0},l.fk=function(e){return this.d?wie(this.d,e):this.Lk().Hk().fk(e)},l.Qj=function(){return this.b&2?(this.b&1)!=0:this.i!=0},l.Si=function(){return(this.b&128)!=0},l.Gk=function(){var e;Ir(this),this.b&2&&(Hl(this.e)?(e=(this.b&1)!=0,this.b&=-2,hE(this,new jf(this.e,2,ns(this.e.Dh(),this.Lk()),e,!1))):this.b&=-2)},l.Yi=function(){return(this.b&1536)==0},l.b=0,I(Yi,"EcoreEList/Generic",1185),D(1186,1185,ic,Ene),l.Lk=function(){return this.a},I(Yi,"EcoreEList/Dynamic",1186),D(765,66,o0,P2t),l.aj=function(e){return XI(this.a.a,e)},I(Yi,"EcoreEMap/1",765),D(764,83,ic,vyt),l.Mi=function(e,n){IH(this.b,u(n,136))},l.Oi=function(e,n){yce(this.b)},l.Pi=function(e,n,r){var s;++(s=this.b,u(n,136),s).e},l.Qi=function(e,n){jat(this.b,u(n,136))},l.Ri=function(e,n,r){jat(this.b,u(r,136)),$t(r)===$t(n)&&u(r,136).Ci($in(u(n,136).ld())),IH(this.b,u(n,136))},I(Yi,"EcoreEMap/DelegateEObjectContainmentEList",764),D(1220,141,$Tt,Boe),I(Yi,"EcoreEMap/Unsettable",1220),D(1221,764,ic,IZt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1221),D(1189,215,E5,Tee),l.a=!1,l.b=!1,I(Yi,"EcoreUtil/Copier",1189),D(759,1,wa,cie),l.Nb=function(e){Na(this,e)},l.Ob=function(){return ble(this)},l.Pb=function(){var e;return ble(this),e=this.b,this.b=null,e},l.Qb=function(){this.a.Qb()},I(Yi,"EcoreUtil/ProperContentIterator",759),D(1528,1527,{},Bj);var NTe;I(Yi,"EcoreValidator",1528);var PTe;os(Yi,"FeatureMapUtil/Validator"),D(1295,1,{2041:1},T4),l.am=function(e){return!0},I(Yi,"FeatureMapUtil/1",1295),D(773,1,{2041:1},t8t),l.am=function(e){var n;return this.c==e?!0:(n=Me(tr(this.a,e)),n==null?j8n(this,e)?(cse(this.a,e,(Pn(),bT)),!0):(cse(this.a,e,(Pn(),t2)),!1):n==(Pn(),bT))},l.e=!1;var a0t;I(Yi,"FeatureMapUtil/BasicValidator",773),D(774,45,E5,Mmt),I(Yi,"FeatureMapUtil/BasicValidator/Cache",774),D(509,56,{20:1,31:1,56:1,16:1,15:1,61:1,79:1,71:1,97:1},eI),l.bd=function(e,n){Jde(this.c,this.b,e,n)},l.Fc=function(e){return Tkt(this.c,this.b,e)},l.cd=function(e,n){return aTn(this.c,this.b,e,n)},l.Gc=function(e){return xS(this,e)},l.Gi=function(e,n){egn(this.c,this.b,e,n)},l.Wk=function(e,n){return bkt(this.c,this.b,e,n)},l.$i=function(e){return dV(this.c,this.b,e,!1)},l.Ii=function(){return zQt(this.c,this.b)},l.Ji=function(){return _in(this.c,this.b)},l.Ki=function(e){return a0n(this.c,this.b,e)},l.Xk=function(e,n){return hZt(this,e,n)},l.$b=function(){T6(this)},l.Hc=function(e){return dq(this.c,this.b,e)},l.Ic=function(e){return spn(this.c,this.b,e)},l.Xb=function(e){return dV(this.c,this.b,e,!0)},l.Fk=function(e){return this},l.dd=function(e){return ddn(this.c,this.b,e)},l.dc=function(){return Q$(this)},l.Qj=function(){return!wO(this.c,this.b)},l.Kc=function(){return U0n(this.c,this.b)},l.ed=function(){return G0n(this.c,this.b)},l.fd=function(e){return E2n(this.c,this.b,e)},l.Ti=function(e,n){return dge(this.c,this.b,e,n)},l.Ui=function(e,n){u0n(this.c,this.b,e,n)},l.gd=function(e){return Vfe(this.c,this.b,e)},l.Mc=function(e){return cEn(this.c,this.b,e)},l.hd=function(e,n){return kge(this.c,this.b,e,n)},l.Wb=function(e){WH(this.c,this.b),xS(this,u(e,15))},l.gc=function(){return k2n(this.c,this.b)},l.Pc=function(){return p1n(this.c,this.b)},l.Qc=function(e){return gdn(this.c,this.b,e)},l.Ib=function(){var e,n;for(n=new dp,n.a+="[",e=zQt(this.c,this.b);Lat(e);)Mo(n,ES(LH(e))),Lat(e)&&(n.a+=ao);return n.a+="]",n.a},l.Gk=function(){WH(this.c,this.b)},I(Yi,"FeatureMapUtil/FeatureEList",509),D(644,38,LN,Cst),l.hj=function(e){return l_(this,e)},l.mj=function(e){var n,r,s,o,h,d,m;switch(this.d){case 1:case 2:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.g=e.ij(),e.gj()==1&&(this.d=1),!0;break}case 3:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.d=5,n=new $m(2),Or(n,this.g),Or(n,e.ij()),this.g=n,!0;break}}break}case 5:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return r=u(this.g,16),r.Fc(e.ij()),!0;break}}break}case 4:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.d=1,this.g=e.ij(),!0;break}case 4:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.d=6,m=new $m(2),Or(m,this.n),Or(m,e.kj()),this.n=m,d=lt(ut(Fr,1),ii,28,15,[this.o,e.lj()]),this.g=d,!0;break}}break}case 6:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return r=u(this.n,16),r.Fc(e.kj()),d=u(this.g,53),s=Vt(Fr,ii,28,d.length+1,15,1),Xc(d,0,s,0,d.length),s[d.length]=e.lj(),this.g=s,!0;break}}break}}return!1},I(Yi,"FeatureMapUtil/FeatureENotificationImpl",644),D(564,509,{20:1,31:1,56:1,16:1,15:1,61:1,79:1,160:1,220:1,2036:1,71:1,97:1},Sz),l.Ol=function(e,n){return Tkt(this.c,e,n)},l.Pl=function(e,n,r){return bkt(this.c,e,n,r)},l.Ql=function(e,n,r){return qkt(this.c,e,n,r)},l.Rl=function(){return this},l.Sl=function(e,n){return YO(this.c,e,n)},l.Tl=function(e){return u(dV(this.c,this.b,e,!1),76).Lk()},l.Ul=function(e){return u(dV(this.c,this.b,e,!1),76).md()},l.Vl=function(){return this.a},l.Wl=function(e){return!wO(this.c,e)},l.Xl=function(e,n){gV(this.c,e,n)},l.Yl=function(e){return $oe(this.c,e)},l.Zl=function(e){mhe(this.c,e)},I(Yi,"FeatureMapUtil/FeatureFeatureMap",564),D(1294,1,aht,gQt),l.Fk=function(e){return dV(this.b,this.a,-1,e)},l.Qj=function(){return!wO(this.b,this.a)},l.Wb=function(e){gV(this.b,this.a,e)},l.Gk=function(){WH(this.b,this.a)},I(Yi,"FeatureMapUtil/FeatureValue",1294);var i8,o0t,c0t,s8,FTe,WP=os(_U,"AnyType");D(680,63,Pg,trt),I(_U,"InvalidDatatypeValueException",680);var ZK=os(_U,lve),YP=os(_U,hve),rOt=os(_U,fve),BTe,Bc,iOt,Hw,RTe,jTe,$Te,zTe,qTe,HTe,VTe,UTe,GTe,KTe,WTe,gx,YTe,px,AL,XTe,Fv,XP,QP,QTe,LL,DL;D(844,516,{110:1,94:1,93:1,58:1,54:1,99:1,857:1},twt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.c&&(this.c=new ps(this,0)),this.c):(!this.c&&(this.c=new ps(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)):(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Vl();case 2:return r?(!this.b&&(this.b=new ps(this,2)),this.b):(!this.b&&(this.b=new ps(this,2)),this.b.b)}return Ih(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e),n,r)},l.Uh=function(e,n,r){var s;switch(n){case 0:return!this.c&&(this.c=new ps(this,0)),UO(this.c,e,r);case 1:return(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),71)).Xk(e,r);case 2:return!this.b&&(this.b=new ps(this,2)),UO(this.b,e,r)}return s=u(En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),n),69),s.wk().Ak(this,r4t(this),n-fr(this.ii()),e,r)},l.Wh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).dc();case 2:return!!this.b&&this.b.i!=0}return Dh(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e))},l.bi=function(e,n){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),xI(this.c,n);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Wb(n);return;case 2:!this.b&&(this.b=new ps(this,2)),xI(this.b,n);return}Fh(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e),n)},l.ii=function(){return Ni(),iOt},l.ki=function(e){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),Ir(this.c);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).$b();return;case 2:!this.b&&(this.b=new ps(this,2)),Ir(this.b);return}Ph(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new ef(qf(this)),e.a+=" (mixed: ",wS(e,this.c),e.a+=", anyAttribute: ",wS(e,this.b),e.a+=")",e.a)},I($s,"AnyTypeImpl",844),D(681,516,{110:1,94:1,93:1,58:1,54:1,99:1,2119:1,681:1},xet),l.Lh=function(e,n,r){switch(e){case 0:return this.a;case 1:return this.b}return Ih(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e),n,r)},l.Wh=function(e){switch(e){case 0:return this.a!=null;case 1:return this.b!=null}return Dh(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e))},l.bi=function(e,n){switch(e){case 0:lr(this,Gr(n));return;case 1:or(this,Gr(n));return}Fh(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e),n)},l.ii=function(){return Ni(),gx},l.ki=function(e){switch(e){case 0:this.a=null;return;case 1:this.b=null;return}Ph(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new ef(qf(this)),e.a+=" (data: ",Mo(e,this.a),e.a+=", target: ",Mo(e,this.b),e.a+=")",e.a)},l.a=null,l.b=null,I($s,"ProcessingInstructionImpl",681),D(682,844,{110:1,94:1,93:1,58:1,54:1,99:1,857:1,2120:1,682:1},KKt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.c&&(this.c=new ps(this,0)),this.c):(!this.c&&(this.c=new ps(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)):(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Vl();case 2:return r?(!this.b&&(this.b=new ps(this,2)),this.b):(!this.b&&(this.b=new ps(this,2)),this.b.b);case 3:return!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0));case 4:return Evt(this.a,(!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0))));case 5:return this.a}return Ih(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e),n,r)},l.Wh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).dc();case 2:return!!this.b&&this.b.i!=0;case 3:return!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0))!=null;case 4:return Evt(this.a,(!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0))))!=null;case 5:return!!this.a}return Dh(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e))},l.bi=function(e,n){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),xI(this.c,n);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Wb(n);return;case 2:!this.b&&(this.b=new ps(this,2)),xI(this.b,n);return;case 3:h3t(this,Gr(n));return;case 4:h3t(this,kvt(this.a,n));return;case 5:Sn(this,u(n,156));return}Fh(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e),n)},l.ii=function(){return Ni(),px},l.ki=function(e){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),Ir(this.c);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).$b();return;case 2:!this.b&&(this.b=new ps(this,2)),Ir(this.b);return;case 3:!this.c&&(this.c=new ps(this,0)),gV(this.c,(Ni(),AL),null);return;case 4:h3t(this,kvt(this.a,null));return;case 5:this.a=null;return}Ph(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e))},I($s,"SimpleAnyTypeImpl",682),D(683,516,{110:1,94:1,93:1,58:1,54:1,99:1,2121:1,683:1},WKt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.a&&(this.a=new ps(this,0)),this.a):(!this.a&&(this.a=new ps(this,0)),this.a.b);case 1:return r?(!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),this.b):(!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),RI(this.b));case 2:return r?(!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),this.c):(!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),RI(this.c));case 3:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),XP));case 4:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),QP));case 5:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),LL));case 6:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),DL))}return Ih(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e),n,r)},l.Uh=function(e,n,r){var s;switch(n){case 0:return!this.a&&(this.a=new ps(this,0)),UO(this.a,e,r);case 1:return!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),pz(this.b,e,r);case 2:return!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),pz(this.c,e,r);case 5:return!this.a&&(this.a=new ps(this,0)),hZt(ru(this.a,(Ni(),LL)),e,r)}return s=u(En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():(Ni(),Fv),n),69),s.wk().Ak(this,r4t(this),n-fr((Ni(),Fv)),e,r)},l.Wh=function(e){switch(e){case 0:return!!this.a&&this.a.i!=0;case 1:return!!this.b&&this.b.f!=0;case 2:return!!this.c&&this.c.f!=0;case 3:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),XP)));case 4:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),QP)));case 5:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),LL)));case 6:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),DL)))}return Dh(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e))},l.bi=function(e,n){switch(e){case 0:!this.a&&(this.a=new ps(this,0)),xI(this.a,n);return;case 1:!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),Jq(this.b,n);return;case 2:!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),Jq(this.c,n);return;case 3:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),XP))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,XP),u(n,16));return;case 4:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),QP))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,QP),u(n,16));return;case 5:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),LL))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,LL),u(n,16));return;case 6:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),DL))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,DL),u(n,16));return}Fh(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e),n)},l.ii=function(){return Ni(),Fv},l.ki=function(e){switch(e){case 0:!this.a&&(this.a=new ps(this,0)),Ir(this.a);return;case 1:!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),this.b.c.$b();return;case 2:!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),this.c.c.$b();return;case 3:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),XP)));return;case 4:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),QP)));return;case 5:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),LL)));return;case 6:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),DL)));return}Ph(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new ef(qf(this)),e.a+=" (mixed: ",wS(e,this.a),e.a+=")",e.a)},I($s,"XMLTypeDocumentRootImpl",683),D(2028,720,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1,2122:1},Z8),l.ri=function(e,n){switch(e.hk()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return n==null?null:rc(n);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return Gr(n);case 6:return Zsn(u(n,195));case 12:case 47:case 49:case 11:return upe(this,e,n);case 13:return n==null?null:lTn(u(n,247));case 15:case 14:return n==null?null:pln(Rt(Ht(n)));case 17:return sfe((Ni(),n));case 18:return sfe(n);case 21:case 20:return n==null?null:bln(u(n,161).a);case 27:return tan(u(n,195));case 30:return vhe((Ni(),u(n,15)));case 31:return vhe(u(n,15));case 40:return nan((Ni(),n));case 42:return afe((Ni(),n));case 43:return afe(n);case 59:case 48:return ean((Ni(),n));default:throw at(new zn(lT+e.xe()+fv))}},l.si=function(e){var n,r,s,o,h;switch(e.G==-1&&(e.G=(r=sh(e),r?Np(r.vi(),e):-1)),e.G){case 0:return n=new twt,n;case 1:return s=new xet,s;case 2:return o=new KKt,o;case 3:return h=new WKt,h;default:throw at(new zn(Vlt+e.zb+fv))}},l.ti=function(e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;switch(e.hk()){case 5:case 52:case 4:return n;case 6:return cmn(n);case 8:case 7:return n==null?null:Wyn(n);case 9:return n==null?null:GI(lh((s=su(n,!0),s.length>0&&(qn(0,s.length),s.charCodeAt(0)==43)?(qn(1,s.length+1),s.substr(1)):s),-128,127)<<24>>24);case 10:return n==null?null:GI(lh((o=su(n,!0),o.length>0&&(qn(0,o.length),o.charCodeAt(0)==43)?(qn(1,o.length+1),o.substr(1)):o),-128,127)<<24>>24);case 11:return Gr(iv(this,(Ni(),$Te),n));case 12:return Gr(iv(this,(Ni(),zTe),n));case 13:return n==null?null:new Twt(su(n,!0));case 15:case 14:return w6n(n);case 16:return Gr(iv(this,(Ni(),qTe),n));case 17:return xle((Ni(),n));case 18:return xle(n);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return su(n,!0);case 21:case 20:return _6n(n);case 22:return Gr(iv(this,(Ni(),HTe),n));case 23:return Gr(iv(this,(Ni(),VTe),n));case 24:return Gr(iv(this,(Ni(),UTe),n));case 25:return Gr(iv(this,(Ni(),GTe),n));case 26:return Gr(iv(this,(Ni(),KTe),n));case 27:return Xwn(n);case 30:return kle((Ni(),n));case 31:return kle(n);case 32:return n==null?null:he(lh((A=su(n,!0),A.length>0&&(qn(0,A.length),A.charCodeAt(0)==43)?(qn(1,A.length+1),A.substr(1)):A),Ga,xi));case 33:return n==null?null:new Sb((P=su(n,!0),P.length>0&&(qn(0,P.length),P.charCodeAt(0)==43)?(qn(1,P.length+1),P.substr(1)):P));case 34:return n==null?null:he(lh(($=su(n,!0),$.length>0&&(qn(0,$.length),$.charCodeAt(0)==43)?(qn(1,$.length+1),$.substr(1)):$),Ga,xi));case 36:return n==null?null:Mg(mV((U=su(n,!0),U.length>0&&(qn(0,U.length),U.charCodeAt(0)==43)?(qn(1,U.length+1),U.substr(1)):U)));case 37:return n==null?null:Mg(mV((J=su(n,!0),J.length>0&&(qn(0,J.length),J.charCodeAt(0)==43)?(qn(1,J.length+1),J.substr(1)):J)));case 40:return Kmn((Ni(),n));case 42:return Ele((Ni(),n));case 43:return Ele(n);case 44:return n==null?null:new Sb((tt=su(n,!0),tt.length>0&&(qn(0,tt.length),tt.charCodeAt(0)==43)?(qn(1,tt.length+1),tt.substr(1)):tt));case 45:return n==null?null:new Sb((ht=su(n,!0),ht.length>0&&(qn(0,ht.length),ht.charCodeAt(0)==43)?(qn(1,ht.length+1),ht.substr(1)):ht));case 46:return su(n,!1);case 47:return Gr(iv(this,(Ni(),WTe),n));case 59:case 48:return Gmn((Ni(),n));case 49:return Gr(iv(this,(Ni(),YTe),n));case 50:return n==null?null:w7(lh((Tt=su(n,!0),Tt.length>0&&(qn(0,Tt.length),Tt.charCodeAt(0)==43)?(qn(1,Tt.length+1),Tt.substr(1)):Tt),EU,32767)<<16>>16);case 51:return n==null?null:w7(lh((h=su(n,!0),h.length>0&&(qn(0,h.length),h.charCodeAt(0)==43)?(qn(1,h.length+1),h.substr(1)):h),EU,32767)<<16>>16);case 53:return Gr(iv(this,(Ni(),XTe),n));case 55:return n==null?null:w7(lh((d=su(n,!0),d.length>0&&(qn(0,d.length),d.charCodeAt(0)==43)?(qn(1,d.length+1),d.substr(1)):d),EU,32767)<<16>>16);case 56:return n==null?null:w7(lh((m=su(n,!0),m.length>0&&(qn(0,m.length),m.charCodeAt(0)==43)?(qn(1,m.length+1),m.substr(1)):m),EU,32767)<<16>>16);case 57:return n==null?null:Mg(mV((k=su(n,!0),k.length>0&&(qn(0,k.length),k.charCodeAt(0)==43)?(qn(1,k.length+1),k.substr(1)):k)));case 58:return n==null?null:Mg(mV((T=su(n,!0),T.length>0&&(qn(0,T.length),T.charCodeAt(0)==43)?(qn(1,T.length+1),T.substr(1)):T)));case 60:return n==null?null:he(lh((r=su(n,!0),r.length>0&&(qn(0,r.length),r.charCodeAt(0)==43)?(qn(1,r.length+1),r.substr(1)):r),Ga,xi));case 61:return n==null?null:he(lh(su(n,!0),Ga,xi));default:throw at(new zn(lT+e.xe()+fv))}};var JTe,sOt,ZTe,aOt;I($s,"XMLTypeFactoryImpl",2028),D(594,184,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1,2044:1,594:1},Gee),l.N=!1,l.O=!1;var t9e=!1;I($s,"XMLTypePackageImpl",594),D(1961,1,{851:1},tE),l.Kk=function(){return Okt(),u9e},I($s,"XMLTypePackageImpl/1",1961),D(1970,1,li,SC),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/10",1970),D(1971,1,li,met),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/11",1971),D(1972,1,li,vet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/12",1972),D(1973,1,li,f6),l.fk=function(e){return Cy(e)},l.gk=function(e){return Vt(zs,ue,345,e,7,1)},I($s,"XMLTypePackageImpl/13",1973),D(1974,1,li,cj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/14",1974),D(1975,1,li,uj),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/15",1975),D(1976,1,li,yet),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/16",1976),D(1977,1,li,lj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/17",1977),D(1978,1,li,hj),l.fk=function(e){return Lt(e,161)},l.gk=function(e){return Vt(wT,ue,161,e,0,1)},I($s,"XMLTypePackageImpl/18",1978),D(1979,1,li,pM),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/19",1979),D(1962,1,li,ket),l.fk=function(e){return Lt(e,857)},l.gk=function(e){return Vt(WP,Ln,857,e,0,1)},I($s,"XMLTypePackageImpl/2",1962),D(1980,1,li,_C),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/20",1980),D(1981,1,li,Eet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/21",1981),D(1982,1,li,Tet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/22",1982),D(1983,1,li,Cet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/23",1983),D(1984,1,li,_et),l.fk=function(e){return Lt(e,195)},l.gk=function(e){return Vt(ul,ue,195,e,0,2)},I($s,"XMLTypePackageImpl/24",1984),D(1985,1,li,Aet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/25",1985),D(1986,1,li,fj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/26",1986),D(1987,1,li,Let),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/27",1987),D(1988,1,li,Det),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/28",1988),D(1989,1,li,Met),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/29",1989),D(1963,1,li,dj),l.fk=function(e){return Lt(e,681)},l.gk=function(e){return Vt(ZK,Ln,2119,e,0,1)},I($s,"XMLTypePackageImpl/3",1963),D(1990,1,li,Iet),l.fk=function(e){return Lt(e,17)},l.gk=function(e){return Vt(Ra,ue,17,e,0,1)},I($s,"XMLTypePackageImpl/30",1990),D(1991,1,li,Oet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/31",1991),D(1992,1,li,AC),l.fk=function(e){return Lt(e,168)},l.gk=function(e){return Vt(gv,ue,168,e,0,1)},I($s,"XMLTypePackageImpl/32",1992),D(1993,1,li,Net),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/33",1993),D(1994,1,li,Pet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/34",1994),D(1995,1,li,Fet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/35",1995),D(1996,1,li,Bet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/36",1996),D(1997,1,li,Ret),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/37",1997),D(1998,1,li,jet),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/38",1998),D(1999,1,li,gj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/39",1999),D(1964,1,li,$et),l.fk=function(e){return Lt(e,682)},l.gk=function(e){return Vt(YP,Ln,2120,e,0,1)},I($s,"XMLTypePackageImpl/4",1964),D(2e3,1,li,pj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/40",2e3),D(2001,1,li,zet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/41",2001),D(2002,1,li,bM),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/42",2002),D(2003,1,li,qet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/43",2003),D(2004,1,li,bj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/44",2004),D(2005,1,li,Het),l.fk=function(e){return Lt(e,191)},l.gk=function(e){return Vt(pv,ue,191,e,0,1)},I($s,"XMLTypePackageImpl/45",2005),D(2006,1,li,wj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/46",2006),D(2007,1,li,Vet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/47",2007),D(2008,1,li,mj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/48",2008),D(2009,1,li,vj),l.fk=function(e){return Lt(e,191)},l.gk=function(e){return Vt(pv,ue,191,e,0,1)},I($s,"XMLTypePackageImpl/49",2009),D(1965,1,li,yj),l.fk=function(e){return Lt(e,683)},l.gk=function(e){return Vt(rOt,Ln,2121,e,0,1)},I($s,"XMLTypePackageImpl/5",1965),D(2010,1,li,wM),l.fk=function(e){return Lt(e,168)},l.gk=function(e){return Vt(gv,ue,168,e,0,1)},I($s,"XMLTypePackageImpl/50",2010),D(2011,1,li,C4),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/51",2011),D(2012,1,li,LC),l.fk=function(e){return Lt(e,17)},l.gk=function(e){return Vt(Ra,ue,17,e,0,1)},I($s,"XMLTypePackageImpl/52",2012),D(1966,1,li,Q1),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/6",1966),D(1967,1,li,xj),l.fk=function(e){return Lt(e,195)},l.gk=function(e){return Vt(ul,ue,195,e,0,2)},I($s,"XMLTypePackageImpl/7",1967),D(1968,1,li,eE),l.fk=function(e){return Ty(e)},l.gk=function(e){return Vt(ys,ue,484,e,8,1)},I($s,"XMLTypePackageImpl/8",1968),D(1969,1,li,mM),l.fk=function(e){return Lt(e,222)},l.gk=function(e){return Vt(Fk,ue,222,e,0,1)},I($s,"XMLTypePackageImpl/9",1969);var _d,nb,ML,tW,vt;D(55,63,Pg,Yr),I(qp,"RegEx/ParseException",55),D(836,1,{},kj),l.bm=function(e){return er*16)throw at(new Yr(Qr((Ur(),Eme))));r=r*16+o}while(!0);if(this.a!=125)throw at(new Yr(Qr((Ur(),Tme))));if(r>gT)throw at(new Yr(Qr((Ur(),Cme))));e=r}else{if(o=0,this.c!=0||(o=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(r=o,wi(this),this.c!=0||(o=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));r=r*16+o,e=r}break;case 117:if(s=0,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));n=n*16+s,e=n;break;case 118:if(wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,n>gT)throw at(new Yr(Qr((Ur(),"parser.descappe.4"))));e=n;break;case 65:case 90:case 122:throw at(new Yr(Qr((Ur(),Sme))))}return e},l.dm=function(e){var n,r;switch(e){case 100:r=(this.e&32)==32?Gb("Nd",!0):(yi(),eW);break;case 68:r=(this.e&32)==32?Gb("Nd",!1):(yi(),fOt);break;case 119:r=(this.e&32)==32?Gb("IsWord",!0):(yi(),t9);break;case 87:r=(this.e&32)==32?Gb("IsWord",!1):(yi(),gOt);break;case 115:r=(this.e&32)==32?Gb("IsSpace",!0):(yi(),a8);break;case 83:r=(this.e&32)==32?Gb("IsSpace",!1):(yi(),dOt);break;default:throw at(new uc((n=e,Sve+n.toString(16))))}return r},l.em=function(e){var n,r,s,o,h,d,m,k,T,A,P,$;for(this.b=1,wi(this),n=null,this.c==0&&this.a==94?(wi(this),e?A=(yi(),yi(),new ih(5)):(n=(yi(),yi(),new ih(4)),iu(n,0,gT),A=new ih(4))):A=(yi(),yi(),new ih(4)),o=!0;($=this.c)!=1&&!($==0&&this.a==93&&!o);){if(o=!1,r=this.a,s=!1,$==10)switch(r){case 100:case 68:case 119:case 87:case 115:case 83:a3(A,this.dm(r)),s=!0;break;case 105:case 73:case 99:case 67:r=this.um(A,r),r<0&&(s=!0);break;case 112:case 80:if(P=M6t(this,r),!P)throw at(new Yr(Qr((Ur(),rht))));a3(A,P),s=!0;break;default:r=this.cm()}else if($==20){if(d=TE(this.i,58,this.d),d<0)throw at(new Yr(Qr((Ur(),NTt))));if(m=!0,Va(this.i,this.d)==94&&(++this.d,m=!1),h=Lh(this.i,this.d,d),k=Qse(h,m,(this.e&512)==512),!k)throw at(new Yr(Qr((Ur(),mme))));if(a3(A,k),s=!0,d+1>=this.j||Va(this.i,d+1)!=93)throw at(new Yr(Qr((Ur(),NTt))));this.d=d+2}if(wi(this),!s)if(this.c!=0||this.a!=45)iu(A,r,r);else{if(wi(this),($=this.c)==1)throw at(new Yr(Qr((Ur(),bU))));$==0&&this.a==93?(iu(A,r,r),iu(A,45,45)):(T=this.a,$==10&&(T=this.cm()),wi(this),iu(A,r,T))}(this.e&Uf)==Uf&&this.c==0&&this.a==44&&wi(this)}if(this.c==1)throw at(new Yr(Qr((Ur(),bU))));return n&&($_(n,A),A=n),g5(A),R_(A),this.b=0,wi(this),A},l.fm=function(){var e,n,r,s;for(r=this.em(!1);(s=this.c)!=7;)if(e=this.a,s==0&&(e==45||e==38)||s==4){if(wi(this),this.c!=9)throw at(new Yr(Qr((Ur(),yme))));if(n=this.em(!1),s==4)a3(r,n);else if(e==45)$_(r,n);else if(e==38)spe(r,n);else throw at(new uc("ASSERT"))}else throw at(new Yr(Qr((Ur(),xme))));return wi(this),r},l.gm=function(){var e,n;return e=this.a-48,n=(yi(),yi(),new lst(12,null,e)),!this.g&&(this.g=new u$),c$(this.g,new F2t(e)),wi(this),n},l.hm=function(){return wi(this),yi(),r9e},l.im=function(){return wi(this),yi(),n9e},l.jm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.km=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.lm=function(){return wi(this),hbn()},l.mm=function(){return wi(this),yi(),s9e},l.nm=function(){return wi(this),yi(),o9e},l.om=function(){var e;if(this.d>=this.j||((e=Va(this.i,this.d++))&65504)!=64)throw at(new Yr(Qr((Ur(),pme))));return wi(this),yi(),yi(),new _0(0,e-64)},l.pm=function(){return wi(this),g7n()},l.qm=function(){return wi(this),yi(),c9e},l.rm=function(){var e;return e=(yi(),yi(),new _0(0,105)),wi(this),e},l.sm=function(){return wi(this),yi(),a9e},l.tm=function(){return wi(this),yi(),i9e},l.um=function(e,n){return this.cm()},l.vm=function(){return wi(this),yi(),lOt},l.wm=function(){var e,n,r,s,o;if(this.d+1>=this.j)throw at(new Yr(Qr((Ur(),fme))));if(s=-1,n=null,e=Va(this.i,this.d),49<=e&&e<=57){if(s=e-48,!this.g&&(this.g=new u$),c$(this.g,new F2t(s)),++this.d,Va(this.i,this.d)!=41)throw at(new Yr(Qr((Ur(),Tw))));++this.d}else switch(e==63&&--this.d,wi(this),n=i8t(this),n.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));break;default:throw at(new Yr(Qr((Ur(),dme))))}if(wi(this),o=Xm(this),r=null,o.e==2){if(o.Pm()!=2)throw at(new Yr(Qr((Ur(),gme))));r=o.Lm(1),o=o.Lm(0)}if(this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),yi(),yi(),new Iae(s,n,o,r)},l.xm=function(){return wi(this),yi(),hOt},l.ym=function(){var e;if(wi(this),e=$z(24,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.zm=function(){var e;if(wi(this),e=$z(20,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Am=function(){var e;if(wi(this),e=$z(22,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Bm=function(){var e,n,r,s,o;for(e=0,r=0,n=-1;this.d=this.j)throw at(new Yr(Qr((Ur(),ITt))));if(n==45){for(++this.d;this.d=this.j)throw at(new Yr(Qr((Ur(),ITt))))}if(n==58){if(++this.d,wi(this),s=_ee(Xm(this),e,r),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));wi(this)}else if(n==41)++this.d,wi(this),s=_ee(Xm(this),e,r);else throw at(new Yr(Qr((Ur(),hme))));return s},l.Cm=function(){var e;if(wi(this),e=$z(21,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Dm=function(){var e;if(wi(this),e=$z(23,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Em=function(){var e,n;if(wi(this),e=this.f++,n=Rit(Xm(this),e),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),n},l.Fm=function(){var e;if(wi(this),e=Rit(Xm(this),0),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Gm=function(e){return wi(this),this.c==5?(wi(this),Mz(e,(yi(),yi(),new By(9,e)))):Mz(e,(yi(),yi(),new By(3,e)))},l.Hm=function(e){var n;return wi(this),n=(yi(),yi(),new yS(2)),this.c==5?(wi(this),gw(n,OL),gw(n,e)):(gw(n,e),gw(n,OL)),n},l.Im=function(e){return wi(this),this.c==5?(wi(this),yi(),yi(),new By(9,e)):(yi(),yi(),new By(3,e))},l.a=0,l.b=0,l.c=0,l.d=0,l.e=0,l.f=1,l.g=null,l.j=0,I(qp,"RegEx/RegexParser",836),D(1947,836,{},YKt),l.bm=function(e){return!1},l.cm=function(){return fkt(this)},l.dm=function(e){return j7(e)},l.em=function(e){return tbe(this)},l.fm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.gm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.hm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.im=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.jm=function(){return wi(this),j7(67)},l.km=function(){return wi(this),j7(73)},l.lm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.mm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.nm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.om=function(){return wi(this),j7(99)},l.pm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.qm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.rm=function(){return wi(this),j7(105)},l.sm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.tm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.um=function(e,n){return a3(e,j7(n)),-1},l.vm=function(){return wi(this),yi(),yi(),new _0(0,94)},l.wm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.xm=function(){return wi(this),yi(),yi(),new _0(0,36)},l.ym=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.zm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Am=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Bm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Cm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Dm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Em=function(){var e;if(wi(this),e=Rit(Xm(this),0),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Fm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Gm=function(e){return wi(this),Mz(e,(yi(),yi(),new By(3,e)))},l.Hm=function(e){var n;return wi(this),n=(yi(),yi(),new yS(2)),gw(n,e),gw(n,OL),n},l.Im=function(e){return wi(this),yi(),yi(),new By(3,e)};var bx=null,JT=null;I(qp,"RegEx/ParserForXMLSchema",1947),D(122,1,pT,um),l.Jm=function(e){throw at(new uc("Not supported."))},l.Km=function(){return-1},l.Lm=function(e){return null},l.Mm=function(){return null},l.Nm=function(e){},l.Om=function(e){},l.Pm=function(){return 0},l.Ib=function(){return this.Qm(0)},l.Qm=function(e){return this.e==11?".":""},l.e=0;var oOt,ZT,IL,e9e,cOt,W3=null,eW,u0t=null,uOt,OL,l0t=null,lOt,hOt,fOt,dOt,gOt,n9e,a8,r9e,i9e,s9e,a9e,t9,o9e,c9e,T_n=I(qp,"RegEx/Token",122);D(138,122,{3:1,138:1,122:1},ih),l.Qm=function(e){var n,r,s;if(this.e==4)if(this==uOt)r=".";else if(this==eW)r="\\d";else if(this==t9)r="\\w";else if(this==a8)r="\\s";else{for(s=new dp,s.a+="[",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?Mo(s,WO(this.b[n])):(Mo(s,WO(this.b[n])),s.a+="-",Mo(s,WO(this.b[n+1])));s.a+="]",r=s.a}else if(this==fOt)r="\\D";else if(this==gOt)r="\\W";else if(this==dOt)r="\\S";else{for(s=new dp,s.a+="[^",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?Mo(s,WO(this.b[n])):(Mo(s,WO(this.b[n])),s.a+="-",Mo(s,WO(this.b[n+1])));s.a+="]",r=s.a}return r},l.a=!1,l.c=!1,I(qp,"RegEx/RangeToken",138),D(592,1,{592:1},F2t),l.a=0,I(qp,"RegEx/RegexParser/ReferencePosition",592),D(591,1,{3:1,591:1},lYt),l.Fb=function(e){var n;return e==null||!Lt(e,591)?!1:(n=u(e,591),hn(this.b,n.b)&&this.a==n.a)},l.Hb=function(){return _p(this.b+"/"+skt(this.a))},l.Ib=function(){return this.c.Qm(this.a)},l.a=0,I(qp,"RegEx/RegularExpression",591),D(228,122,pT,_0),l.Km=function(){return this.a},l.Qm=function(e){var n,r,s;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:s="\\"+dit(this.a&js);break;case 12:s="\\f";break;case 10:s="\\n";break;case 13:s="\\r";break;case 9:s="\\t";break;case 27:s="\\e";break;default:this.a>=po?(r=(n=this.a>>>0,"0"+n.toString(16)),s="\\v"+Lh(r,r.length-6,r.length)):s=""+dit(this.a&js)}break;case 8:this==lOt||this==hOt?s=""+dit(this.a&js):s="\\"+dit(this.a&js);break;default:s=null}return s},l.a=0,I(qp,"RegEx/Token/CharToken",228),D(318,122,pT,By),l.Lm=function(e){return this.a},l.Nm=function(e){this.b=e},l.Om=function(e){this.c=e},l.Pm=function(){return 1},l.Qm=function(e){var n;if(this.e==3)if(this.c<0&&this.b<0)n=this.a.Qm(e)+"*";else if(this.c==this.b)n=this.a.Qm(e)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)n=this.a.Qm(e)+"{"+this.c+","+this.b+"}";else if(this.c>=0&&this.b<0)n=this.a.Qm(e)+"{"+this.c+",}";else throw at(new uc("Token#toString(): CLOSURE "+this.c+ao+this.b));else if(this.c<0&&this.b<0)n=this.a.Qm(e)+"*?";else if(this.c==this.b)n=this.a.Qm(e)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)n=this.a.Qm(e)+"{"+this.c+","+this.b+"}?";else if(this.c>=0&&this.b<0)n=this.a.Qm(e)+"{"+this.c+",}?";else throw at(new uc("Token#toString(): NONGREEDYCLOSURE "+this.c+ao+this.b));return n},l.b=0,l.c=0,I(qp,"RegEx/Token/ClosureToken",318),D(837,122,pT,Cyt),l.Lm=function(e){return e==0?this.a:this.b},l.Pm=function(){return 2},l.Qm=function(e){var n;return this.b.e==3&&this.b.Lm(0)==this.a?n=this.a.Qm(e)+"+":this.b.e==9&&this.b.Lm(0)==this.a?n=this.a.Qm(e)+"+?":n=this.a.Qm(e)+(""+this.b.Qm(e)),n},I(qp,"RegEx/Token/ConcatToken",837),D(1945,122,pT,Iae),l.Lm=function(e){if(e==0)return this.d;if(e==1)return this.b;throw at(new uc("Internal Error: "+e))},l.Pm=function(){return this.b?2:1},l.Qm=function(e){var n;return this.c>0?n="(?("+this.c+")":this.a.e==8?n="(?("+this.a+")":n="(?"+this.a,this.b?n+=this.d+"|"+this.b+")":n+=this.d+")",n},l.c=0,I(qp,"RegEx/Token/ConditionToken",1945),D(1946,122,pT,kre),l.Lm=function(e){return this.b},l.Pm=function(){return 1},l.Qm=function(e){return"(?"+(this.a==0?"":skt(this.a))+(this.c==0?"":skt(this.c))+":"+this.b.Qm(e)+")"},l.a=0,l.c=0,I(qp,"RegEx/Token/ModifierToken",1946),D(838,122,pT,Pyt),l.Lm=function(e){return this.a},l.Pm=function(){return 1},l.Qm=function(e){var n;switch(n=null,this.e){case 6:this.b==0?n="(?:"+this.a.Qm(e)+")":n="("+this.a.Qm(e)+")";break;case 20:n="(?="+this.a.Qm(e)+")";break;case 21:n="(?!"+this.a.Qm(e)+")";break;case 22:n="(?<="+this.a.Qm(e)+")";break;case 23:n="(?"+this.a.Qm(e)+")"}return n},l.b=0,I(qp,"RegEx/Token/ParenToken",838),D(530,122,{3:1,122:1,530:1},lst),l.Mm=function(){return this.b},l.Qm=function(e){return this.e==12?"\\"+this.a:a6n(this.b)},l.a=0,I(qp,"RegEx/Token/StringToken",530),D(476,122,pT,yS),l.Jm=function(e){gw(this,e)},l.Lm=function(e){return u(Im(this.a,e),122)},l.Pm=function(){return this.a?this.a.a.c.length:0},l.Qm=function(e){var n,r,s,o,h;if(this.e==1){if(this.a.a.c.length==2)n=u(Im(this.a,0),122),r=u(Im(this.a,1),122),r.e==3&&r.Lm(0)==n?o=n.Qm(e)+"+":r.e==9&&r.Lm(0)==n?o=n.Qm(e)+"+?":o=n.Qm(e)+(""+r.Qm(e));else{for(h=new dp,s=0;s=this.c.b:this.a<=this.c.b},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Vb=function(){return this.b-1},l.Qb=function(){throw at(new hp(Ove))},l.a=0,l.b=0,I(ZTt,"ExclusiveRange/RangeIterator",258);var Yh=FE(wU,"C"),Fr=FE(dA,"I"),Fl=FE(kk,"Z"),x2=FE(gA,"J"),ul=FE(lA,"B"),ma=FE(hA,"D"),Y3=FE(fA,"F"),wx=FE(pA,"S"),C_n=os("org.eclipse.elk.core.labels","ILabelManager"),pOt=os(oo,"DiagnosticChain"),bOt=os(ove,"ResourceSet"),wOt=I(oo,"InvocationTargetException",null),l9e=(d$(),jdn),h9e=h9e=Dyn;Ign(Ann),Agn("permProps",[[["locale","default"],[Nve,"gecko1_8"]],[["locale","default"],[Nve,"safari"]]]),h9e(null,"elk",null)}).call(this)}).call(this,typeof Z0<"u"?Z0:typeof self<"u"?self:typeof window<"u"?window:{})},{}],3:[function(f,g,w){function v(M,F){if(!(M instanceof F))throw new TypeError("Cannot call a class as a function")}function b(M,F){if(!M)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return F&&(typeof F=="object"||typeof F=="function")?F:M}function E(M,F){if(typeof F!="function"&&F!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof F);M.prototype=Object.create(F&&F.prototype,{constructor:{value:M,enumerable:!1,writable:!0,configurable:!0}}),F&&(Object.setPrototypeOf?Object.setPrototypeOf(M,F):M.__proto__=F)}var S=f("./elk-api.js").default,_=function(M){E(F,M);function F(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};v(this,F);var B=Object.assign({},R),z=!1;try{f.resolve("web-worker"),z=!0}catch{}if(R.workerUrl)if(z){var Y=f("web-worker");B.workerFactory=function(ft){return new Y(ft)}}else console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`);if(!B.workerFactory){var nt=f("./elk-worker.min.js"),ot=nt.Worker;B.workerFactory=function(ft){return new ot(ft)}}return b(this,(F.__proto__||Object.getPrototypeOf(F)).call(this,B))}return F}(S);Object.defineProperty(g.exports,"__esModule",{value:!0}),g.exports=_,_.default=_},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(f,g,w){g.exports=Worker},{}]},{},[3])(3)})})(THt);var ptn=THt.exports;const btn=e9(ptn),CHt=new btn;let nm={};const wtn={};let Ux={};const mtn=async function(i,a,f,g,w,v,b){const S=f.select(`[id="${a}"]`).insert("g").attr("class","nodes"),_=Object.keys(i);return await Promise.all(_.map(async function(M){const F=i[M];let R="default";F.classes.length>0&&(R=F.classes.join(" ")),R=R+" flowchart-label";const B=C2(F.styles);let z=F.text!==void 0?F.text:F.id;const Y={width:0,height:0},nt=[{id:F.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:F.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:F.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:F.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let ot=0,ft="",wt={};switch(F.type){case"round":ot=5,ft="rect";break;case"square":ft="rect";break;case"diamond":ft="question",wt={portConstraints:"FIXED_SIDE"};break;case"hexagon":ft="hexagon";break;case"odd":ft="rect_left_inv_arrow";break;case"lean_right":ft="lean_right";break;case"lean_left":ft="lean_left";break;case"trapezoid":ft="trapezoid";break;case"inv_trapezoid":ft="inv_trapezoid";break;case"odd_right":ft="rect_left_inv_arrow";break;case"circle":ft="circle";break;case"ellipse":ft="ellipse";break;case"stadium":ft="stadium";break;case"subroutine":ft="subroutine";break;case"cylinder":ft="cylinder";break;case"group":ft="rect";break;case"doublecircle":ft="doublecircle";break;default:ft="rect"}const mt={labelStyle:B.labelStyle,shape:ft,labelText:z,labelType:F.labelType,rx:ot,ry:ot,class:R,style:B.style,id:F.id,link:F.link,linkTarget:F.linkTarget,tooltip:w.db.getTooltip(F.id)||"",domId:w.db.lookUpDomId(F.id),haveCallback:F.haveCallback,width:F.type==="group"?500:void 0,dir:F.dir,type:F.type,props:F.props,padding:o1().flowchart.padding};let ct,rt;if(mt.type!=="group")rt=await nX(S,mt,F.dir),ct=rt.node().getBBox();else{g.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:gt,bbox:Q}=await $1(S,mt,void 0,!0);Y.width=Q.width,Y.wrappingWidth=o1().flowchart.wrappingWidth,Y.height=Q.height,Y.labelNode=gt.node(),mt.labelData=Y}const it={id:F.id,ports:F.type==="diamond"?nt:[],layoutOptions:wt,labelText:z,labelData:Y,domId:w.db.lookUpDomId(F.id),width:ct==null?void 0:ct.width,height:ct==null?void 0:ct.height,type:F.type,el:rt,parent:v.parentById[F.id]};Ux[mt.id]=it})),b},SHt=(i,a,f)=>{const g={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return g.TD=g.TB,g[f][a][i]},_Ht=(i,a,f)=>{if(Kt.info("getNextPort",{node:i,edgeDirection:a,graphDirection:f}),!nm[i])switch(f){case"TB":case"TD":nm[i]={inPosition:"north",outPosition:"south"};break;case"BT":nm[i]={inPosition:"south",outPosition:"north"};break;case"RL":nm[i]={inPosition:"east",outPosition:"west"};break;case"LR":nm[i]={inPosition:"west",outPosition:"east"};break}const g=a==="in"?nm[i].inPosition:nm[i].outPosition;return a==="in"?nm[i].inPosition=SHt(nm[i].inPosition,a,f):nm[i].outPosition=SHt(nm[i].outPosition,a,f),g},vtn=(i,a)=>{let f=i.start,g=i.end;const w=f,v=g,b=Ux[f],E=Ux[g];return!b||!E?{source:f,target:g}:(b.type==="diamond"&&(f=`${f}-${_Ht(f,"out",a)}`),E.type==="diamond"&&(g=`${g}-${_Ht(g,"in",a)}`),{source:f,target:g,sourceId:w,targetId:v})},ytn=function(i,a,f,g){Kt.info("abc78 edges = ",i);const w=g.insert("g").attr("class","edgeLabels");let v={},b=a.db.getDirection(),E,S;if(i.defaultStyle!==void 0){const _=C2(i.defaultStyle);E=_.style,S=_.labelStyle}return i.forEach(function(_){const M="L-"+_.start+"-"+_.end;v[M]===void 0?(v[M]=0,Kt.info("abc78 new entry",M,v[M])):(v[M]++,Kt.info("abc78 new entry",M,v[M]));let F=M+"-"+v[M];Kt.info("abc78 new link id to be used is",M,F,v[M]);const R="LS-"+_.start,B="LE-"+_.end,z={style:"",labelStyle:""};switch(z.minlen=_.length||1,_.type==="arrow_open"?z.arrowhead="none":z.arrowhead="normal",z.arrowTypeStart="arrow_open",z.arrowTypeEnd="arrow_open",_.type){case"double_arrow_cross":z.arrowTypeStart="arrow_cross";case"arrow_cross":z.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":z.arrowTypeStart="arrow_point";case"arrow_point":z.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":z.arrowTypeStart="arrow_circle";case"arrow_circle":z.arrowTypeEnd="arrow_circle";break}let Y="",nt="";switch(_.stroke){case"normal":Y="fill:none;",E!==void 0&&(Y=E),S!==void 0&&(nt=S),z.thickness="normal",z.pattern="solid";break;case"dotted":z.thickness="normal",z.pattern="dotted",z.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":z.thickness="thick",z.pattern="solid",z.style="stroke-width: 3.5px;fill:none;";break}if(_.style!==void 0){const rt=C2(_.style);Y=rt.style,nt=rt.labelStyle}z.style=z.style+=Y,z.labelStyle=z.labelStyle+=nt,_.interpolate!==void 0?z.curve=Xw(_.interpolate,Kg):i.defaultInterpolate!==void 0?z.curve=Xw(i.defaultInterpolate,Kg):z.curve=Xw(wtn.curve,Kg),_.text===void 0?_.style!==void 0&&(z.arrowheadStyle="fill: #333"):(z.arrowheadStyle="fill: #333",z.labelpos="c"),z.labelType=_.labelType,z.label=_.text.replace(ei.lineBreakRegex,` +`),_.style===void 0&&(z.style=z.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),z.labelStyle=z.labelStyle.replace("color:","fill:"),z.id=F,z.classes="flowchart-link "+R+" "+B;const ot=tbt(w,z),{source:ft,target:wt,sourceId:mt,targetId:ct}=vtn(_,b);Kt.debug("abc78 source and target",ft,wt),f.edges.push({id:"e"+_.start+_.end,sources:[ft],targets:[wt],sourceId:mt,targetId:ct,labelEl:ot,labels:[{width:z.width,height:z.height,orgWidth:z.width,orgHeight:z.height,text:z.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:z})}),f},xtn=function(i,a,f,g,w){let v="";g&&(v=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,v=v.replace(/\(/g,"\\("),v=v.replace(/\)/g,"\\)")),uzt(i,a,v,w,f)},ktn=function(i,a){return Kt.info("Extracting classes"),a.db.getClasses()},Etn=function(i){const a={parentById:{},childrenById:{}},f=i.getSubGraphs();return Kt.info("Subgraphs - ",f),f.forEach(function(g){g.nodes.forEach(function(w){a.parentById[w]=g.id,a.childrenById[g.id]===void 0&&(a.childrenById[g.id]=[]),a.childrenById[g.id].push(w)})}),f.forEach(function(g){g.id,a.parentById[g.id]!==void 0&&a.parentById[g.id]}),a},Ttn=function(i,a,f){const g=gtn(i,a,f);if(g===void 0||g==="root")return{x:0,y:0};const w=Ux[g].offset;return{x:w.posX,y:w.posY}},Ctn=function(i,a,f,g,w,v){const b=Ttn(a.sourceId,a.targetId,w),E=a.sections[0].startPoint,S=a.sections[0].endPoint,M=(a.sections[0].bendPoints?a.sections[0].bendPoints:[]).map(wt=>[wt.x+b.x,wt.y+b.y]),F=[[E.x+b.x,E.y+b.y],...M,[S.x+b.x,S.y+b.y]],{x:R,y:B}=czt(a.edgeData),z=Ax().x(R).y(B).curve(Kg),Y=i.insert("path").attr("d",z(F)).attr("class","path "+f.classes).attr("fill","none"),nt=i.insert("g").attr("class","edgeLabel"),ot=Tr(nt.node().appendChild(a.labelEl)),ft=ot.node().firstChild.getBoundingClientRect();ot.attr("width",ft.width),ot.attr("height",ft.height),nt.attr("transform",`translate(${a.labels[0].x+b.x}, ${a.labels[0].y+b.y})`),xtn(Y,f,g.type,g.arrowMarkerAbsolute,v)},AHt=(i,a)=>{i.forEach(f=>{f.children||(f.children=[]);const g=a.childrenById[f.id];g&&g.forEach(w=>{f.children.push(Ux[w])}),AHt(f.children,a)})},Stn=async function(i,a,f,g){var it;g.db.clear(),Ux={},nm={},g.db.setGen("gen-2"),g.parser.parse(i);const w=Tr("body").append("div").attr("style","height:400px").attr("id","cy");let v={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(Kt.info("Drawing flowchart using v3 renderer",CHt),g.db.getDirection()){case"BT":v.layoutOptions["elk.direction"]="UP";break;case"TB":v.layoutOptions["elk.direction"]="DOWN";break;case"LR":v.layoutOptions["elk.direction"]="RIGHT";break;case"RL":v.layoutOptions["elk.direction"]="LEFT";break}const{securityLevel:E,flowchart:S}=o1();let _;E==="sandbox"&&(_=Tr("#i"+a));const M=Tr(E==="sandbox"?_.nodes()[0].contentDocument.body:"body"),F=E==="sandbox"?_.nodes()[0].contentDocument:document,R=M.select(`[id="${a}"]`);jpt(R,["point","circle","cross"],g.type,a);const z=g.db.getVertices();let Y;const nt=g.db.getSubGraphs();Kt.info("Subgraphs - ",nt);for(let gt=nt.length-1;gt>=0;gt--)Y=nt[gt],g.db.addVertex(Y.id,{text:Y.title,type:Y.labelType},"group",void 0,Y.classes,Y.dir);const ot=R.insert("g").attr("class","subgraphs"),ft=Etn(g.db);v=await mtn(z,a,M,F,g,ft,v);const wt=R.insert("g").attr("class","edges edgePath"),mt=g.db.getEdges();v=ytn(mt,g,v,R),Object.keys(Ux).forEach(gt=>{const Q=Ux[gt];Q.parent||v.children.push(Q),ft.childrenById[gt]!==void 0&&(Q.labels=[{text:Q.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:Q.labelData.width,height:Q.labelData.height}],delete Q.x,delete Q.y,delete Q.width,delete Q.height)}),AHt(v.children,ft),Kt.info("after layout",JSON.stringify(v,null,2));const rt=await CHt.layout(v);LHt(0,0,rt.children,R,ot,g,0),Kt.info("after layout",rt),(it=rt.edges)==null||it.map(gt=>{Ctn(wt,gt,gt.edgeData,g,ft,a)}),w8({},R,S.diagramPadding,S.useMaxWidth),w.remove()},LHt=(i,a,f,g,w,v,b)=>{f.forEach(function(E){if(E)if(Ux[E.id].offset={posX:E.x+i,posY:E.y+a,x:i,y:a,depth:b,width:E.width,height:E.height},E.type==="group"){const S=w.insert("g").attr("class","subgraph");S.insert("rect").attr("class","subgraph subgraph-lvl-"+b%5+" node").attr("x",E.x+i).attr("y",E.y+a).attr("width",E.width).attr("height",E.height);const _=S.insert("g").attr("class","label"),M=o1().flowchart.htmlLabels?E.labelData.width/2:0;_.attr("transform",`translate(${E.labels[0].x+i+E.x+M}, ${E.labels[0].y+a+E.y+3})`),_.node().appendChild(E.labelData.labelNode),Kt.info("Id (UGH)= ",E.type,E.labels)}else Kt.info("Id (UGH)= ",E.id),E.el.attr("transform",`translate(${E.x+i+E.width/2}, ${E.y+a+E.height/2})`)}),f.forEach(function(E){E&&E.type==="group"&&LHt(i+E.x,a+E.y,E.children,g,w,v,b+1)})},_tn={getClasses:ktn,draw:Stn},Atn=i=>{let a="";for(let f=0;f<5;f++)a+=` + .subgraph-lvl-${f} { + fill: ${i[`surface${f}`]}; + stroke: ${i[`surfacePeer${f}`]}; + } + `;return a},Ltn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{db:wje,renderer:_tn,parser:spt,styles:i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span { + color: ${i.titleColor}; + } + + .label text,span { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${Atn(i)} +`}},Symbol.toStringTag,{value:"Module"}));var l2t=function(){var i=function(R,B,z,Y){for(z=z||{},Y=R.length;Y--;z[R[Y]]=B);return z},a=[6,8,10,11,12,14,16,17,20,21],f=[1,9],g=[1,10],w=[1,11],v=[1,12],b=[1,13],E=[1,16],S=[1,17],_={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:function(B,z,Y,nt,ot,ft,wt){var mt=ft.length-1;switch(ot){case 1:return ft[mt-1];case 2:this.$=[];break;case 3:ft[mt-1].push(ft[mt]),this.$=ft[mt-1];break;case 4:case 5:this.$=ft[mt];break;case 6:case 7:this.$=[];break;case 8:nt.getCommonDb().setDiagramTitle(ft[mt].substr(6)),this.$=ft[mt].substr(6);break;case 9:this.$=ft[mt].trim(),nt.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=ft[mt].trim(),nt.getCommonDb().setAccDescription(this.$);break;case 12:nt.addSection(ft[mt].substr(8)),this.$=ft[mt].substr(8);break;case 15:nt.addTask(ft[mt],0,""),this.$=ft[mt];break;case 16:nt.addEvent(ft[mt].substr(2)),this.$=ft[mt];break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:f,12:g,14:w,16:v,17:b,18:14,19:15,20:E,21:S},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:18,11:f,12:g,14:w,16:v,17:b,18:14,19:15,20:E,21:S},i(a,[2,5]),i(a,[2,6]),i(a,[2,8]),{13:[1,19]},{15:[1,20]},i(a,[2,11]),i(a,[2,12]),i(a,[2,13]),i(a,[2,14]),i(a,[2,15]),i(a,[2,16]),i(a,[2,4]),i(a,[2,9]),i(a,[2,10])],defaultActions:{},parseError:function(B,z){if(z.recoverable)this.trace(B);else{var Y=new Error(B);throw Y.hash=z,Y}},parse:function(B){var z=this,Y=[0],nt=[],ot=[null],ft=[],wt=this.table,mt="",ct=0,rt=0,it=2,gt=1,Q=ft.slice.call(arguments,1),dt=Object.create(this.lexer),K={yy:{}};for(var yt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,yt)&&(K.yy[yt]=this.yy[yt]);dt.setInput(B,K.yy),K.yy.lexer=dt,K.yy.parser=this,typeof dt.yylloc>"u"&&(dt.yylloc={});var V=dt.yylloc;ft.push(V);var Ot=dt.options&&dt.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function It(){var ye;return ye=nt.pop()||dt.lex()||gt,typeof ye!="number"&&(ye instanceof Array&&(nt=ye,ye=nt.pop()),ye=z.symbols_[ye]||ye),ye}for(var jt,xt,Ft,Ct,kt={},Gt,Fe,Mt,pn;;){if(xt=Y[Y.length-1],this.defaultActions[xt]?Ft=this.defaultActions[xt]:((jt===null||typeof jt>"u")&&(jt=It()),Ft=wt[xt]&&wt[xt][jt]),typeof Ft>"u"||!Ft.length||!Ft[0]){var Ae="";pn=[];for(Gt in wt[xt])this.terminals_[Gt]&&Gt>it&&pn.push("'"+this.terminals_[Gt]+"'");dt.showPosition?Ae="Parse error on line "+(ct+1)+`: +`+dt.showPosition()+` +Expecting `+pn.join(", ")+", got '"+(this.terminals_[jt]||jt)+"'":Ae="Parse error on line "+(ct+1)+": Unexpected "+(jt==gt?"end of input":"'"+(this.terminals_[jt]||jt)+"'"),this.parseError(Ae,{text:dt.match,token:this.terminals_[jt]||jt,line:dt.yylineno,loc:V,expected:pn})}if(Ft[0]instanceof Array&&Ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+xt+", token: "+jt);switch(Ft[0]){case 1:Y.push(jt),ot.push(dt.yytext),ft.push(dt.yylloc),Y.push(Ft[1]),jt=null,rt=dt.yyleng,mt=dt.yytext,ct=dt.yylineno,V=dt.yylloc;break;case 2:if(Fe=this.productions_[Ft[1]][1],kt.$=ot[ot.length-Fe],kt._$={first_line:ft[ft.length-(Fe||1)].first_line,last_line:ft[ft.length-1].last_line,first_column:ft[ft.length-(Fe||1)].first_column,last_column:ft[ft.length-1].last_column},Ot&&(kt._$.range=[ft[ft.length-(Fe||1)].range[0],ft[ft.length-1].range[1]]),Ct=this.performAction.apply(kt,[mt,rt,ct,K.yy,Ft[1],ot,ft].concat(Q)),typeof Ct<"u")return Ct;Fe&&(Y=Y.slice(0,-1*Fe*2),ot=ot.slice(0,-1*Fe),ft=ft.slice(0,-1*Fe)),Y.push(this.productions_[Ft[1]][0]),ot.push(kt.$),ft.push(kt._$),Mt=wt[Y[Y.length-2]][Y[Y.length-1]],Y.push(Mt);break;case 3:return!0}}return!0}},M=function(){var R={EOF:1,parseError:function(z,Y){if(this.yy.parser)this.yy.parser.parseError(z,Y);else throw new Error(z)},setInput:function(B,z){return this.yy=z||this.yy||{},this._input=B,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var B=this._input[0];this.yytext+=B,this.yyleng++,this.offset++,this.match+=B,this.matched+=B;var z=B.match(/(?:\r\n?|\n).*/g);return z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),B},unput:function(B){var z=B.length,Y=B.split(/(?:\r\n?|\n)/g);this._input=B+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-z),this.offset-=z;var nt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Y.length-1&&(this.yylineno-=Y.length-1);var ot=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Y?(Y.length===nt.length?this.yylloc.first_column:0)+nt[nt.length-Y.length].length-Y[0].length:this.yylloc.first_column-z},this.options.ranges&&(this.yylloc.range=[ot[0],ot[0]+this.yyleng-z]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(B){this.unput(this.match.slice(B))},pastInput:function(){var B=this.matched.substr(0,this.matched.length-this.match.length);return(B.length>20?"...":"")+B.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var B=this.match;return B.length<20&&(B+=this._input.substr(0,20-B.length)),(B.substr(0,20)+(B.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var B=this.pastInput(),z=new Array(B.length+1).join("-");return B+this.upcomingInput()+` +`+z+"^"},test_match:function(B,z){var Y,nt,ot;if(this.options.backtrack_lexer&&(ot={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ot.yylloc.range=this.yylloc.range.slice(0))),nt=B[0].match(/(?:\r\n?|\n).*/g),nt&&(this.yylineno+=nt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:nt?nt[nt.length-1].length-nt[nt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+B[0].length},this.yytext+=B[0],this.match+=B[0],this.matches=B,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(B[0].length),this.matched+=B[0],Y=this.performAction.call(this,this.yy,this,z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Y)return Y;if(this._backtrack){for(var ft in ot)this[ft]=ot[ft];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var B,z,Y,nt;this._more||(this.yytext="",this.match="");for(var ot=this._currentRules(),ft=0;ftz[0].length)){if(z=Y,nt=ft,this.options.backtrack_lexer){if(B=this.test_match(Y,ot[ft]),B!==!1)return B;if(this._backtrack){z=!1;continue}else return!1}else if(!this.options.flex)break}return z?(B=this.test_match(z,ot[nt]),B!==!1?B:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var z=this.next();return z||this.lex()},begin:function(z){this.conditionStack.push(z)},popState:function(){var z=this.conditionStack.length-1;return z>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(z){return z=this.conditionStack.length-1-Math.abs(z||0),z>=0?this.conditionStack[z]:"INITIAL"},pushState:function(z){this.begin(z)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(z,Y,nt,ot){switch(nt){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return R}();_.lexer=M;function F(){this.yy={}}return F.prototype=_,_.Parser=F,new F}();l2t.parser=l2t;const Dtn=l2t;let ND="",DHt=0;const h2t=[],IX=[],PD=[],MHt=()=>uBt,IHt=function(){h2t.length=0,IX.length=0,ND="",PD.length=0,ag()},OHt=function(i){ND=i,h2t.push(i)},NHt=function(){return h2t},PHt=function(){let i=jHt();const a=100;let f=0;for(;!i&&ff.id===DHt-1).events.push(i)},RHt=function(i){const a={section:ND,type:ND,description:i,task:i,classes:[]};IX.push(a)},jHt=function(){const i=function(f){return PD[f].processed};let a=!0;for(const[f,g]of PD.entries())i(f),a=a&&g.processed;return a},Mtn=Object.freeze(Object.defineProperty({__proto__:null,addEvent:BHt,addSection:OHt,addTask:FHt,addTaskOrg:RHt,clear:IHt,default:{clear:IHt,getCommonDb:MHt,addSection:OHt,getSections:NHt,getTasks:PHt,addTask:FHt,addTaskOrg:RHt,addEvent:BHt},getCommonDb:MHt,getSections:NHt,getTasks:PHt},Symbol.toStringTag,{value:"Module"})),Itn=12,OX=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},Otn=function(i,a){const g=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function v(S){const _=YL().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const _=YL().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?v(w):a.score<3?b(w):E(w),g},Ntn=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},$Ht=function(i,a){const f=a.text.replace(//gi," "),g=i.append("text");g.attr("x",a.x),g.attr("y",a.y),g.attr("class","legend"),g.style("text-anchor",a.anchor),a.class!==void 0&&g.attr("class",a.class);const w=g.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),g},Ptn=function(i,a){function f(w,v,b,E,S){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-S)+" "+(w+b-S*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");g.attr("points",f(a.x,a.y,50,20,7)),g.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,$Ht(i,a)},Ftn=function(i,a,f){const g=i.append("g"),w=f2t();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width,w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,OX(g,w),qHt(f)(a.text,g,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let zHt=-1;const Btn=function(i,a,f){const g=a.x+f.width/2,w=i.append("g");zHt++;const v=300+5*30;w.append("line").attr("id","task"+zHt).attr("x1",g).attr("y1",a.y).attr("x2",g).attr("y2",v).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Otn(w,{cx:g,cy:300+(5-a.score)*30,score:a.score});const b=f2t();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,OX(w,b),a.x+14,qHt(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},Rtn=function(i,a){OX(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},jtn=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},f2t=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},qHt=function(){function i(w,v,b,E,S,_,M,F){const R=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("font-color",F).style("text-anchor","middle").text(w);g(R,M)}function a(w,v,b,E,S,_,M,F,R){const{taskFontSize:B,taskFontFamily:z}=F,Y=w.split(//gi);for(let nt=0;nt)/).reverse(),w,v=[],b=1.1,E=f.attr("y"),S=parseFloat(f.attr("dy")),_=f.text(null).append("tspan").attr("x",0).attr("y",E).attr("dy",S+"em");for(let M=0;Ma||w==="
    ")&&(v.pop(),_.text(v.join(" ").trim()),w==="
    "?v=[""]:v=[w],_=f.append("tspan").attr("x",0).attr("y",E).attr("dy",b+"em").text(w))})}const ztn=function(i,a,f,g){const w=f%Itn-1,v=i.append("g");a.section=w,v.attr("class",(a.class?a.class+" ":"")+"timeline-node "+("section-"+w));const b=v.append("g"),E=v.append("g"),_=E.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(HHt,a.width).node().getBBox(),M=g.fontSize&&g.fontSize.replace?g.fontSize.replace("px",""):g.fontSize;return a.height=_.height+M*1.1*.5+a.padding,a.height=Math.max(a.height,a.maxHeight),a.width=a.width+2*a.padding,E.attr("transform","translate("+a.width/2+", "+a.padding/2+")"),Htn(b,a,w),a},qtn=function(i,a,f){const g=i.append("g"),v=g.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(HHt,a.width).node().getBBox(),b=f.fontSize&&f.fontSize.replace?f.fontSize.replace("px",""):f.fontSize;return g.remove(),v.height+b*1.1*.5+a.padding},Htn=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+a.type).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},H9={drawRect:OX,drawCircle:Ntn,drawSection:Ftn,drawText:$Ht,drawLabel:Ptn,drawTask:Btn,drawBackgroundRect:Rtn,getTextObj:jtn,getNoteRect:f2t,initGraphics:$tn,drawNode:ztn,getVirtualNodeHeight:qtn},Vtn=function(i,a,f,g){var Q,dt;const w=Re(),v=w.leftMargin??50;Kt.debug("timeline",g.db);const b=w.securityLevel;let E;b==="sandbox"&&(E=Tr("#i"+a));const _=Tr(b==="sandbox"?E.nodes()[0].contentDocument.body:"body").select("#"+a);_.append("g");const M=g.db.getTasks(),F=g.db.getCommonDb().getDiagramTitle();Kt.debug("task",M),H9.initGraphics(_);const R=g.db.getSections();Kt.debug("sections",R);let B=0,z=0,Y=0,nt=0,ot=50+v,ft=50;nt=50;let wt=0,mt=!0;R.forEach(function(K){const yt={number:wt,descr:K,section:wt,width:150,padding:20,maxHeight:B},V=H9.getVirtualNodeHeight(_,yt,w);Kt.debug("sectionHeight before draw",V),B=Math.max(B,V+20)});let ct=0,rt=0;Kt.debug("tasks.length",M.length);for(const[K,yt]of M.entries()){const V={number:K,descr:yt,section:yt.section,width:150,padding:20,maxHeight:z},Ot=H9.getVirtualNodeHeight(_,V,w);Kt.debug("taskHeight before draw",Ot),z=Math.max(z,Ot+20),ct=Math.max(ct,yt.events.length);let It=0;for(let jt=0;jt0?R.forEach(K=>{const yt=M.filter(jt=>jt.section===K),V={number:wt,descr:K,section:wt,width:200*Math.max(yt.length,1)-50,padding:20,maxHeight:B};Kt.debug("sectionNode",V);const Ot=_.append("g"),It=H9.drawNode(Ot,V,wt,w);Kt.debug("sectionNode output",It),Ot.attr("transform",`translate(${ot}, ${nt})`),ft+=B+50,yt.length>0&&VHt(_,yt,wt,ot,ft,z,w,ct,rt,B,!1),ot+=200*Math.max(yt.length,1),ft=nt,wt++}):(mt=!1,VHt(_,M,wt,ot,ft,z,w,ct,rt,B,!0));const it=_.node().getBBox();Kt.debug("bounds",it),F&&_.append("text").text(F).attr("x",it.width/2-v).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),Y=mt?B+z+150:z+100,_.append("g").attr("class","lineWrapper").append("line").attr("x1",v).attr("y1",Y).attr("x2",it.width+3*v).attr("y2",Y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),w8(void 0,_,((Q=w.timeline)==null?void 0:Q.padding)??50,((dt=w.timeline)==null?void 0:dt.useMaxWidth)??!1)},VHt=function(i,a,f,g,w,v,b,E,S,_,M){var F;for(const R of a){const B={descr:R.task,section:f,number:f,width:150,padding:20,maxHeight:v};Kt.debug("taskNode",B);const z=i.append("g").attr("class","taskWrapper"),nt=H9.drawNode(z,B,f,b).height;if(Kt.debug("taskHeight after draw",nt),z.attr("transform",`translate(${g}, ${w})`),v=Math.max(v,nt),R.events){const ot=i.append("g").attr("class","lineWrapper");let ft=v;w+=100,ft=ft+Utn(i,R.events,f,g,w,b),w-=100,ot.append("line").attr("x1",g+190/2).attr("y1",w+v).attr("x2",g+190/2).attr("y2",w+v+(M?v:_)+S+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}g=g+200,M&&!((F=b.timeline)!=null&&F.disableMulticolor)&&f++}w=w-10},Utn=function(i,a,f,g,w,v){let b=0;const E=w;w=w+100;for(const S of a){const _={descr:S,section:f,number:f,width:150,padding:20,maxHeight:50};Kt.debug("eventNode",_);const M=i.append("g").attr("class","eventWrapper"),R=H9.drawNode(M,_,f,v).height;b=b+R,M.attr("transform",`translate(${g}, ${w})`),w=w+10+R}return w=E,b},Gtn={setConf:()=>{},draw:Vtn},Ktn=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${Ktn(i)} + .section-root rect, .section-root path, .section-root circle { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`}},Symbol.toStringTag,{value:"Module"}));var d2t=function(){var i=function(mt,ct,rt,it){for(rt=rt||{},it=mt.length;it--;rt[mt[it]]=ct);return rt},a=[1,4],f=[1,13],g=[1,12],w=[1,15],v=[1,16],b=[1,20],E=[1,19],S=[6,7,8],_=[1,26],M=[1,24],F=[1,25],R=[6,7,11],B=[1,6,13,15,16,19,22],z=[1,33],Y=[1,34],nt=[1,6,7,11,13,15,16,19,22],ot={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(ct,rt,it,gt,Q,dt,K){var yt=dt.length-1;switch(Q){case 6:case 7:return gt;case 8:gt.getLogger().trace("Stop NL ");break;case 9:gt.getLogger().trace("Stop EOF ");break;case 11:gt.getLogger().trace("Stop NL2 ");break;case 12:gt.getLogger().trace("Stop EOF2 ");break;case 15:gt.getLogger().info("Node: ",dt[yt].id),gt.addNode(dt[yt-1].length,dt[yt].id,dt[yt].descr,dt[yt].type);break;case 16:gt.getLogger().trace("Icon: ",dt[yt]),gt.decorateNode({icon:dt[yt]});break;case 17:case 21:gt.decorateNode({class:dt[yt]});break;case 18:gt.getLogger().trace("SPACELIST");break;case 19:gt.getLogger().trace("Node: ",dt[yt].id),gt.addNode(0,dt[yt].id,dt[yt].descr,dt[yt].type);break;case 20:gt.decorateNode({icon:dt[yt]});break;case 25:gt.getLogger().trace("node found ..",dt[yt-2]),this.$={id:dt[yt-1],descr:dt[yt-1],type:gt.getType(dt[yt-2],dt[yt])};break;case 26:this.$={id:dt[yt],descr:dt[yt],type:gt.nodeType.DEFAULT};break;case 27:gt.getLogger().trace("node found ..",dt[yt-3]),this.$={id:dt[yt-3],descr:dt[yt-1],type:gt.getType(dt[yt-2],dt[yt])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:a},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:a},{6:f,7:[1,10],9:9,12:11,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},i(S,[2,3]),{1:[2,2]},i(S,[2,4]),i(S,[2,5]),{1:[2,6],6:f,12:21,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},{6:f,9:22,12:11,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},{6:_,7:M,10:23,11:F},i(R,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:b,22:E}),i(R,[2,18]),i(R,[2,19]),i(R,[2,20]),i(R,[2,21]),i(R,[2,23]),i(R,[2,24]),i(R,[2,26],{19:[1,30]}),{20:[1,31]},{6:_,7:M,10:32,11:F},{1:[2,7],6:f,12:21,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},i(B,[2,14],{7:z,11:Y}),i(nt,[2,8]),i(nt,[2,9]),i(nt,[2,10]),i(R,[2,15]),i(R,[2,16]),i(R,[2,17]),{20:[1,35]},{21:[1,36]},i(B,[2,13],{7:z,11:Y}),i(nt,[2,11]),i(nt,[2,12]),{21:[1,37]},i(R,[2,25]),i(R,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(ct,rt){if(rt.recoverable)this.trace(ct);else{var it=new Error(ct);throw it.hash=rt,it}},parse:function(ct){var rt=this,it=[0],gt=[],Q=[null],dt=[],K=this.table,yt="",V=0,Ot=0,It=2,jt=1,xt=dt.slice.call(arguments,1),Ft=Object.create(this.lexer),Ct={yy:{}};for(var kt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,kt)&&(Ct.yy[kt]=this.yy[kt]);Ft.setInput(ct,Ct.yy),Ct.yy.lexer=Ft,Ct.yy.parser=this,typeof Ft.yylloc>"u"&&(Ft.yylloc={});var Gt=Ft.yylloc;dt.push(Gt);var Fe=Ft.options&&Ft.options.ranges;typeof Ct.yy.parseError=="function"?this.parseError=Ct.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Mt(){var Mn;return Mn=gt.pop()||Ft.lex()||jt,typeof Mn!="number"&&(Mn instanceof Array&&(gt=Mn,Mn=gt.pop()),Mn=rt.symbols_[Mn]||Mn),Mn}for(var pn,Ae,ye,tn,sn={},be,Ne,Xt,_e;;){if(Ae=it[it.length-1],this.defaultActions[Ae]?ye=this.defaultActions[Ae]:((pn===null||typeof pn>"u")&&(pn=Mt()),ye=K[Ae]&&K[Ae][pn]),typeof ye>"u"||!ye.length||!ye[0]){var xe="";_e=[];for(be in K[Ae])this.terminals_[be]&&be>It&&_e.push("'"+this.terminals_[be]+"'");Ft.showPosition?xe="Parse error on line "+(V+1)+`: +`+Ft.showPosition()+` +Expecting `+_e.join(", ")+", got '"+(this.terminals_[pn]||pn)+"'":xe="Parse error on line "+(V+1)+": Unexpected "+(pn==jt?"end of input":"'"+(this.terminals_[pn]||pn)+"'"),this.parseError(xe,{text:Ft.match,token:this.terminals_[pn]||pn,line:Ft.yylineno,loc:Gt,expected:_e})}if(ye[0]instanceof Array&&ye.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ae+", token: "+pn);switch(ye[0]){case 1:it.push(pn),Q.push(Ft.yytext),dt.push(Ft.yylloc),it.push(ye[1]),pn=null,Ot=Ft.yyleng,yt=Ft.yytext,V=Ft.yylineno,Gt=Ft.yylloc;break;case 2:if(Ne=this.productions_[ye[1]][1],sn.$=Q[Q.length-Ne],sn._$={first_line:dt[dt.length-(Ne||1)].first_line,last_line:dt[dt.length-1].last_line,first_column:dt[dt.length-(Ne||1)].first_column,last_column:dt[dt.length-1].last_column},Fe&&(sn._$.range=[dt[dt.length-(Ne||1)].range[0],dt[dt.length-1].range[1]]),tn=this.performAction.apply(sn,[yt,Ot,V,Ct.yy,ye[1],Q,dt].concat(xt)),typeof tn<"u")return tn;Ne&&(it=it.slice(0,-1*Ne*2),Q=Q.slice(0,-1*Ne),dt=dt.slice(0,-1*Ne)),it.push(this.productions_[ye[1]][0]),Q.push(sn.$),dt.push(sn._$),Xt=K[it[it.length-2]][it[it.length-1]],it.push(Xt);break;case 3:return!0}}return!0}},ft=function(){var mt={EOF:1,parseError:function(rt,it){if(this.yy.parser)this.yy.parser.parseError(rt,it);else throw new Error(rt)},setInput:function(ct,rt){return this.yy=rt||this.yy||{},this._input=ct,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ct=this._input[0];this.yytext+=ct,this.yyleng++,this.offset++,this.match+=ct,this.matched+=ct;var rt=ct.match(/(?:\r\n?|\n).*/g);return rt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ct},unput:function(ct){var rt=ct.length,it=ct.split(/(?:\r\n?|\n)/g);this._input=ct+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-rt),this.offset-=rt;var gt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),it.length-1&&(this.yylineno-=it.length-1);var Q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:it?(it.length===gt.length?this.yylloc.first_column:0)+gt[gt.length-it.length].length-it[0].length:this.yylloc.first_column-rt},this.options.ranges&&(this.yylloc.range=[Q[0],Q[0]+this.yyleng-rt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ct){this.unput(this.match.slice(ct))},pastInput:function(){var ct=this.matched.substr(0,this.matched.length-this.match.length);return(ct.length>20?"...":"")+ct.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ct=this.match;return ct.length<20&&(ct+=this._input.substr(0,20-ct.length)),(ct.substr(0,20)+(ct.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ct=this.pastInput(),rt=new Array(ct.length+1).join("-");return ct+this.upcomingInput()+` +`+rt+"^"},test_match:function(ct,rt){var it,gt,Q;if(this.options.backtrack_lexer&&(Q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Q.yylloc.range=this.yylloc.range.slice(0))),gt=ct[0].match(/(?:\r\n?|\n).*/g),gt&&(this.yylineno+=gt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:gt?gt[gt.length-1].length-gt[gt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ct[0].length},this.yytext+=ct[0],this.match+=ct[0],this.matches=ct,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ct[0].length),this.matched+=ct[0],it=this.performAction.call(this,this.yy,this,rt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),it)return it;if(this._backtrack){for(var dt in Q)this[dt]=Q[dt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ct,rt,it,gt;this._more||(this.yytext="",this.match="");for(var Q=this._currentRules(),dt=0;dtrt[0].length)){if(rt=it,gt=dt,this.options.backtrack_lexer){if(ct=this.test_match(it,Q[dt]),ct!==!1)return ct;if(this._backtrack){rt=!1;continue}else return!1}else if(!this.options.flex)break}return rt?(ct=this.test_match(rt,Q[gt]),ct!==!1?ct:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var rt=this.next();return rt||this.lex()},begin:function(rt){this.conditionStack.push(rt)},popState:function(){var rt=this.conditionStack.length-1;return rt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(rt){return rt=this.conditionStack.length-1-Math.abs(rt||0),rt>=0?this.conditionStack[rt]:"INITIAL"},pushState:function(rt){this.begin(rt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(rt,it,gt,Q){switch(gt){case 0:return rt.getLogger().trace("Found comment",it.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:rt.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return rt.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:rt.getLogger().trace("end icon"),this.popState();break;case 10:return rt.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return rt.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return rt.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return rt.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:rt.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return rt.getLogger().trace("description:",it.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),rt.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),rt.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),rt.getLogger().trace("node end ...",it.yytext),"NODE_DEND";case 30:return this.popState(),rt.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),rt.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),rt.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),rt.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),rt.getLogger().trace("node end (("),"NODE_DEND";case 35:return rt.getLogger().trace("Long description:",it.yytext),20;case 36:return rt.getLogger().trace("Long description:",it.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return mt}();ot.lexer=ft;function wt(){this.yy={}}return wt.prototype=ot,ot.Parser=wt,new wt}();d2t.parser=d2t;const Ytn=d2t;let ry=[],UHt=0,g2t={};const Xtn=()=>{ry=[],UHt=0,g2t={}},Qtn=function(i){for(let a=ry.length-1;a>=0;a--)if(ry[a].levelry.length>0?ry[0]:null,Ztn=(i,a,f,g)=>{var S,_;Kt.info("addNode",i,a,f,g);const w=Re();let v=((S=w.mindmap)==null?void 0:S.padding)??Bl.mindmap.padding;switch(g){case V1.ROUNDED_RECT:case V1.RECT:case V1.HEXAGON:v*=2}const b={id:UHt++,nodeId:Ef(a,w),level:i,descr:Ef(f,w),type:g,children:[],width:((_=w.mindmap)==null?void 0:_.maxNodeWidth)??Bl.mindmap.maxNodeWidth,padding:v},E=Qtn(i);if(E)E.children.push(b),ry.push(b);else if(ry.length===0)ry.push(b);else throw new Error('There can be only one root. No parent could be found for ("'+b.descr+'")')},V1={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},ten={clear:Xtn,addNode:Ztn,getMindmap:Jtn,nodeType:V1,getType:(i,a)=>{switch(Kt.debug("In get type",i,a),i){case"[":return V1.RECT;case"(":return a===")"?V1.ROUNDED_RECT:V1.CLOUD;case"((":return V1.CIRCLE;case")":return V1.CLOUD;case"))":return V1.BANG;case"{{":return V1.HEXAGON;default:return V1.DEFAULT}},setElementForId:(i,a)=>{g2t[i]=a},decorateNode:i=>{if(!i)return;const a=Re(),f=ry[ry.length-1];i.icon&&(f.icon=Ef(i.icon,a)),i.class&&(f.class=Ef(i.class,a))},type2Str:i=>{switch(i){case V1.DEFAULT:return"no-border";case V1.RECT:return"rect";case V1.ROUNDED_RECT:return"rounded-rect";case V1.CIRCLE:return"circle";case V1.CLOUD:return"cloud";case V1.BANG:return"bang";case V1.HEXAGON:return"hexgon";default:return"no-border"}},getLogger:()=>Kt,getElementById:i=>g2t[i]};var GHt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){function f(y){"@babel/helpers - typeof";return f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},f(y)}function g(y,p){if(!(y instanceof p))throw new TypeError("Cannot call a class as a function")}function w(y,p){for(var x=0;xy.length)&&(p=y.length);for(var x=0,C=new Array(p);x"u"?null:window,z=B?B.navigator:null;B&&B.document;var Y=f(""),nt=f({}),ot=f(function(){}),ft=typeof HTMLElement>"u"?"undefined":f(HTMLElement),wt=function(p){return p&&p.instanceString&&ct(p.instanceString)?p.instanceString():null},mt=function(p){return p!=null&&f(p)==Y},ct=function(p){return p!=null&&f(p)===ot},rt=function(p){return!yt(p)&&(Array.isArray?Array.isArray(p):p!=null&&p instanceof Array)},it=function(p){return p!=null&&f(p)===nt&&!rt(p)&&p.constructor===Object},gt=function(p){return p!=null&&f(p)===nt},Q=function(p){return p!=null&&f(p)===f(1)&&!isNaN(p)},dt=function(p){return Q(p)&&Math.floor(p)===p},K=function(p){if(ft!=="undefined")return p!=null&&p instanceof HTMLElement},yt=function(p){return V(p)||Ot(p)},V=function(p){return wt(p)==="collection"&&p._private.single},Ot=function(p){return wt(p)==="collection"&&!p._private.single},It=function(p){return wt(p)==="core"},jt=function(p){return wt(p)==="stylesheet"},xt=function(p){return wt(p)==="event"},Ft=function(p){return p==null?!0:!!(p===""||p.match(/^\s+$/))},Ct=function(p){return typeof HTMLElement>"u"?!1:p instanceof HTMLElement},kt=function(p){return it(p)&&Q(p.x1)&&Q(p.x2)&&Q(p.y1)&&Q(p.y2)},Gt=function(p){return gt(p)&&ct(p.then)},Fe=function(){return z&&z.userAgent.match(/msie|trident|edge/i)},Mt=function(p,x){x||(x=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var O=[],N=0;Nx?1:0},Br=function(p,x){return-1*ce(p,x)},we=Object.assign!=null?Object.assign.bind(Object):function(y){for(var p=arguments,x=1;x1&&(St-=1),St<1/6?pt+(_t-pt)*6*St:St<1/2?_t:St<2/3?pt+(_t-pt)*(2/3-St)*6:pt}var Z=new RegExp("^"+Xt+"$").exec(p);if(Z){if(C=parseInt(Z[1]),C<0?C=(360- -1*C%360)%360:C>360&&(C=C%360),C/=360,L=parseFloat(Z[2]),L<0||L>100||(L=L/100,O=parseFloat(Z[3]),O<0||O>100)||(O=O/100,N=Z[4],N!==void 0&&(N=parseFloat(N),N<0||N>1)))return;if(L===0)j=H=q=Math.round(O*255);else{var st=O<.5?O*(1+L):O+L-O*L,bt=2*O-st;j=Math.round(255*W(bt,st,C+1/3)),H=Math.round(255*W(bt,st,C)),q=Math.round(255*W(bt,st,C-1/3))}x=[j,H,q,N]}return x},ga=function(p){var x,C=new RegExp("^"+be+"$").exec(p);if(C){x=[];for(var L=[],O=1;O<=3;O++){var N=C[O];if(N[N.length-1]==="%"&&(L[O]=!0),N=parseFloat(N),L[O]&&(N=N/100*255),N<0||N>255)return;x.push(Math.floor(N))}var j=L[1]||L[2]||L[3],H=L[1]&&L[2]&&L[3];if(j&&!H)return;var q=C[4];if(q!==void 0){if(q=parseFloat(q),q<0||q>1)return;x.push(q)}}return x},Ss=function(p){return br[p.toLowerCase()]},za=function(p){return(rt(p)?p:null)||Ss(p)||Fi(p)||ga(p)||mi(p)},br={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},An=function(p){for(var x=p.map,C=p.keys,L=C.length,O=0;O=p||Ut<0||Z&&de>=O}function Et(){var ee=Ha();if(St(ee))return Nt(ee);j=setTimeout(Et,_t(ee))}function Nt(ee){return j=void 0,st&&C?bt(ee):(C=L=void 0,N)}function Pt(){j!==void 0&&clearTimeout(j),q=0,C=H=L=j=void 0}function qt(){return j===void 0?N:Nt(Ha())}function re(){var ee=Ha(),Ut=St(ee);if(C=arguments,L=this,H=ee,Ut){if(j===void 0)return pt(H);if(Z)return clearTimeout(j),j=setTimeout(Et,p),bt(H)}return j===void 0&&(j=setTimeout(Et,p)),N}return re.cancel=Pt,re.flush=qt,re}var pu=Ci,Le=B?B.performance:null,iy=Le&&Le.now?function(){return Le.now()}:function(){return Date.now()},$e=function(){if(B){if(B.requestAnimationFrame)return function(y){B.requestAnimationFrame(y)};if(B.mozRequestAnimationFrame)return function(y){B.mozRequestAnimationFrame(y)};if(B.webkitRequestAnimationFrame)return function(y){B.webkitRequestAnimationFrame(y)};if(B.msRequestAnimationFrame)return function(y){B.msRequestAnimationFrame(y)}}return function(y){y&&setTimeout(function(){y(iy())},1e3/60)}}(),g1=function(p){return $e(p)},ip=iy,sy=9261,D8=65599,g4=5381,th=function(p){for(var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sy,C=x,L;L=p.next(),!L.done;)C=C*D8+L.value|0;return C},fg=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sy;return x*D8+p|0},O2=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:g4;return(x<<5)+x+p|0},M8=function(p,x){return p*2097152+x},N2=function(p){return p[0]*2097152+p[1]},p4=function(p,x){return[fg(p[0],x[0]),O2(p[1],x[1])]},U1=function(p,x){var C={value:0,done:!1},L=0,O=p.length,N={next:function(){return L=0&&!(p[L]===x&&(p.splice(L,1),C));L--);},G9=function(p){p.splice(0,p.length)},OB=function(p,x){for(var C=0;C"u"?"undefined":f(Set))!==VX?Set:UX,K9=function(p,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(p===void 0||x===void 0||!It(p)){$l("An element must have a core reference and parameters set");return}var L=x.group;if(L==null&&(x.data&&x.data.source!=null&&x.data.target!=null?L="edges":L="nodes"),L!=="nodes"&&L!=="edges"){$l("An element must be of type `nodes` or `edges`; you specified `"+L+"`");return}this.length=1,this[0]=this;var O=this._private={cy:p,single:!0,data:x.data||{},position:x.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:L,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!x.selected,selectable:x.selectable===void 0?!0:!!x.selectable,locked:!!x.locked,grabbed:!1,grabbable:x.grabbable===void 0?!0:!!x.grabbable,pannable:x.pannable===void 0?L==="edges":!!x.pannable,active:!1,classes:new Wx,animation:{current:[],queue:[]},rscratch:{},scratch:x.scratch||{},edges:[],children:[],parent:x.parent&&x.parent.isNode()?x.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(O.position.x==null&&(O.position.x=0),O.position.y==null&&(O.position.y=0),x.renderedPosition){var N=x.renderedPosition,j=p.pan(),H=p.zoom();O.position={x:(N.x-j.x)/H,y:(N.y-j.y)/H}}var q=[];rt(x.classes)?q=x.classes:mt(x.classes)&&(q=x.classes.split(/\s+/));for(var W=0,Z=q.length;WNt?1:0},W=function(Et,Nt,Pt,qt,re){var ee;if(Pt==null&&(Pt=0),re==null&&(re=C),Pt<0)throw new Error("lo must be non-negative");for(qt==null&&(qt=Et.length);PtEe;0<=Ee?Yt++:Yt--)de.push(Yt);return de}).apply(this).reverse(),Ut=[],qt=0,re=ee.length;qtTe;0<=Te?++de:--de)ie.push(N(Et,Pt));return ie},_t=function(Et,Nt,Pt,qt){var re,ee,Ut;for(qt==null&&(qt=C),re=Et[Pt];Pt>Nt;){if(Ut=Pt-1>>1,ee=Et[Ut],qt(re,ee)<0){Et[Pt]=ee,Pt=Ut;continue}break}return Et[Pt]=re},St=function(Et,Nt,Pt){var qt,re,ee,Ut,de;for(Pt==null&&(Pt=C),re=Et.length,de=Nt,ee=Et[Nt],qt=2*Nt+1;qt0;){var ee=Nt.pop(),Ut=St(ee),de=ee.id();if(st[de]=Ut,Ut!==1/0)for(var Yt=ee.neighborhood().intersect(pt),Ee=0;Ee0)for(Tn.unshift(qe);Z[lr];){var Sn=Z[lr];Tn.unshift(Sn.edge),Tn.unshift(Sn.node),Xn=Sn.node,lr=Xn.id()}return j.spawn(Tn)}}}},YX={kruskal:function(p){p=p||function(Pt){return 1};for(var x=this.byGroup(),C=x.nodes,L=x.edges,O=C.length,N=new Array(O),j=C,H=function(qt){for(var re=0;re0;){if(re(),Ut++,qt===W){for(var de=[],Yt=O,Ee=W,Te=Et[Ee];de.unshift(Yt),Te!=null&&de.unshift(Te),Yt=St[Ee],Yt!=null;)Ee=Yt.id(),Te=Et[Ee];return{found:!0,distance:Z[qt],path:this.spawn(de),steps:Ut}}bt[qt]=!0;for(var ie=Pt._private.edges,ze=0;zeTe&&(pt[Ee]=Te,Nt[Ee]=Yt,Pt[Ee]=re),!O){var ie=Yt*W+de;!O&&pt[ie]>Te&&(pt[ie]=Te,Nt[ie]=de,Pt[ie]=re)}}}for(var ze=0;ze1&&arguments[1]!==void 0?arguments[1]:N,eo=Pt(as),Ta=[],pa=eo;;){if(pa==null)return x.spawn();var mo=Nt(pa),Kn=mo.edge,G=mo.pred;if(Ta.unshift(pa[0]),pa.same(Es)&&Ta.length>0)break;Kn!=null&&Ta.unshift(Kn),pa=G}return H.spawn(Ta)},ee=0;ee=0;W--){var Z=q[W],st=Z[1],bt=Z[2];(x[st]===j&&x[bt]===H||x[st]===H&&x[bt]===j)&&q.splice(W,1)}for(var pt=0;ptL;){var O=Math.floor(Math.random()*x.length);x=rQ(O,p,x),C--}return x},iQ={kargerStein:function(){var p=this,x=this.byGroup(),C=x.nodes,L=x.edges;L.unmergeBy(function(Tn){return Tn.isLoop()});var O=C.length,N=L.length,j=Math.ceil(Math.pow(Math.log(O)/Math.LN2,2)),H=Math.floor(O/nQ);if(O<2){$l("At least 2 nodes are required for Karger-Stein algorithm");return}for(var q=[],W=0;W1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=1/0,O=x;O1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=-1/0,O=x;O1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=0,O=0,N=x;N1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,O=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,N=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;L?p=p.slice(x,C):(C0&&p.splice(0,x));for(var j=0,H=p.length-1;H>=0;H--){var q=p[H];N?isFinite(q)||(p[H]=-1/0,j++):p.splice(H,1)}O&&p.sort(function(st,bt){return st-bt});var W=p.length,Z=Math.floor(W/2);return W%2!==0?p[Z+1+j]:(p[Z-1+j]+p[Z+j])/2},lQ=function(p){return Math.PI*p/180},Y9=function(p,x){return Math.atan2(x,p)-Math.PI/2},jD=Math.log2||function(y){return Math.log(y)/Math.log(2)},FB=function(p){return p>0?1:p<0?-1:0},w4=function(p,x){return Math.sqrt(m4(p,x))},m4=function(p,x){var C=x.x-p.x,L=x.y-p.y;return C*C+L*L},hQ=function(p){for(var x=p.length,C=0,L=0;L=p.x1&&p.y2>=p.y1)return{x1:p.x1,y1:p.y1,x2:p.x2,y2:p.y2,w:p.x2-p.x1,h:p.y2-p.y1};if(p.w!=null&&p.h!=null&&p.w>=0&&p.h>=0)return{x1:p.x1,y1:p.y1,x2:p.x1+p.w,y2:p.y1+p.h,w:p.w,h:p.h}}},dQ=function(p){return{x1:p.x1,x2:p.x2,w:p.w,y1:p.y1,y2:p.y2,h:p.h}},gQ=function(p){p.x1=1/0,p.y1=1/0,p.x2=-1/0,p.y2=-1/0,p.w=0,p.h=0},pQ=function(p,x,C){return{x1:p.x1+x,x2:p.x2+x,y1:p.y1+C,y2:p.y2+C,w:p.w,h:p.h}},BB=function(p,x){p.x1=Math.min(p.x1,x.x1),p.x2=Math.max(p.x2,x.x2),p.w=p.x2-p.x1,p.y1=Math.min(p.y1,x.y1),p.y2=Math.max(p.y2,x.y2),p.h=p.y2-p.y1},bQ=function(p,x,C){p.x1=Math.min(p.x1,x),p.x2=Math.max(p.x2,x),p.w=p.x2-p.x1,p.y1=Math.min(p.y1,C),p.y2=Math.max(p.y2,C),p.h=p.y2-p.y1},X9=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return p.x1-=x,p.x2+=x,p.y1-=x,p.y2+=x,p.w=p.x2-p.x1,p.h=p.y2-p.y1,p},Q9=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],C,L,O,N;if(x.length===1)C=L=O=N=x[0];else if(x.length===2)C=O=x[0],N=L=x[1];else if(x.length===4){var j=E(x,4);C=j[0],L=j[1],O=j[2],N=j[3]}return p.x1-=N,p.x2+=L,p.y1-=C,p.y2+=O,p.w=p.x2-p.x1,p.h=p.y2-p.y1,p},RB=function(p,x){p.x1=x.x1,p.y1=x.y1,p.x2=x.x2,p.y2=x.y2,p.w=p.x2-p.x1,p.h=p.y2-p.y1},$D=function(p,x){return!(p.x1>x.x2||x.x1>p.x2||p.x2x.y2||x.y1>p.y2)},Qx=function(p,x,C){return p.x1<=x&&x<=p.x2&&p.y1<=C&&C<=p.y2},wQ=function(p,x){return Qx(p,x.x,x.y)},jB=function(p,x){return Qx(p,x.x1,x.y1)&&Qx(p,x.x2,x.y2)},$B=function(p,x,C,L,O,N,j){var H=R8(O,N),q=O/2,W=N/2,Z;{var st=C-q+H-j,bt=L-W-j,pt=C+q-H+j,_t=bt;if(Z=uy(p,x,C,L,st,bt,pt,_t,!1),Z.length>0)return Z}{var St=C+q+j,Et=L-W+H-j,Nt=St,Pt=L+W-H+j;if(Z=uy(p,x,C,L,St,Et,Nt,Pt,!1),Z.length>0)return Z}{var qt=C-q+H-j,re=L+W+j,ee=C+q-H+j,Ut=re;if(Z=uy(p,x,C,L,qt,re,ee,Ut,!1),Z.length>0)return Z}{var de=C-q-j,Yt=L-W+H-j,Ee=de,Te=L+W-H+j;if(Z=uy(p,x,C,L,de,Yt,Ee,Te,!1),Z.length>0)return Z}var ie;{var ze=C-q+H,me=L-W+H;if(ie=F8(p,x,C,L,ze,me,H+j),ie.length>0&&ie[0]<=ze&&ie[1]<=me)return[ie[0],ie[1]]}{var yn=C+q-H,nn=L-W+H;if(ie=F8(p,x,C,L,yn,nn,H+j),ie.length>0&&ie[0]>=yn&&ie[1]<=nn)return[ie[0],ie[1]]}{var qe=C+q-H,Tn=L+W-H;if(ie=F8(p,x,C,L,qe,Tn,H+j),ie.length>0&&ie[0]>=qe&&ie[1]>=Tn)return[ie[0],ie[1]]}{var Xn=C-q+H,lr=L+W-H;if(ie=F8(p,x,C,L,Xn,lr,H+j),ie.length>0&&ie[0]<=Xn&&ie[1]>=lr)return[ie[0],ie[1]]}return[]},mQ=function(p,x,C,L,O,N,j){var H=j,q=Math.min(C,O),W=Math.max(C,O),Z=Math.min(L,N),st=Math.max(L,N);return q-H<=p&&p<=W+H&&Z-H<=x&&x<=st+H},vQ=function(p,x,C,L,O,N,j,H,q){var W={x1:Math.min(C,j,O)-q,x2:Math.max(C,j,O)+q,y1:Math.min(L,H,N)-q,y2:Math.max(L,H,N)+q};return!(pW.x2||xW.y2)},yQ=function(p,x,C,L){C-=L;var O=x*x-4*p*C;if(O<0)return[];var N=Math.sqrt(O),j=2*p,H=(-x+N)/j,q=(-x-N)/j;return[H,q]},xQ=function(p,x,C,L,O){var N=1e-5;p===0&&(p=N),x/=p,C/=p,L/=p;var j,H,q,W,Z,st,bt,pt;if(H=(3*C-x*x)/9,q=-(27*L)+x*(9*C-2*(x*x)),q/=54,j=H*H*H+q*q,O[1]=0,bt=x/3,j>0){Z=q+Math.sqrt(j),Z=Z<0?-Math.pow(-Z,1/3):Math.pow(Z,1/3),st=q-Math.sqrt(j),st=st<0?-Math.pow(-st,1/3):Math.pow(st,1/3),O[0]=-bt+Z+st,bt+=(Z+st)/2,O[4]=O[2]=-bt,bt=Math.sqrt(3)*(-st+Z)/2,O[3]=bt,O[5]=-bt;return}if(O[5]=O[3]=0,j===0){pt=q<0?-Math.pow(-q,1/3):Math.pow(q,1/3),O[0]=-bt+2*pt,O[4]=O[2]=-(pt+bt);return}H=-H,W=H*H*H,W=Math.acos(q/Math.sqrt(W)),pt=2*Math.sqrt(H),O[0]=-bt+pt*Math.cos(W/3),O[2]=-bt+pt*Math.cos((W+2*Math.PI)/3),O[4]=-bt+pt*Math.cos((W+4*Math.PI)/3)},kQ=function(p,x,C,L,O,N,j,H){var q=1*C*C-4*C*O+2*C*j+4*O*O-4*O*j+j*j+L*L-4*L*N+2*L*H+4*N*N-4*N*H+H*H,W=1*9*C*O-3*C*C-3*C*j-6*O*O+3*O*j+9*L*N-3*L*L-3*L*H-6*N*N+3*N*H,Z=1*3*C*C-6*C*O+C*j-C*p+2*O*O+2*O*p-j*p+3*L*L-6*L*N+L*H-L*x+2*N*N+2*N*x-H*x,st=1*C*O-C*C+C*p-O*p+L*N-L*L+L*x-N*x,bt=[];xQ(q,W,Z,st,bt);for(var pt=1e-7,_t=[],St=0;St<6;St+=2)Math.abs(bt[St+1])=0&&bt[St]<=1&&_t.push(bt[St]);_t.push(1),_t.push(0);for(var Et=-1,Nt,Pt,qt,re=0;re<_t.length;re++)Nt=Math.pow(1-_t[re],2)*C+2*(1-_t[re])*_t[re]*O+_t[re]*_t[re]*j,Pt=Math.pow(1-_t[re],2)*L+2*(1-_t[re])*_t[re]*N+_t[re]*_t[re]*H,qt=Math.pow(Nt-p,2)+Math.pow(Pt-x,2),Et>=0?qtq?(p-O)*(p-O)+(x-N)*(x-N):W-st},y0=function(p,x,C){for(var L,O,N,j,H,q=0,W=0;W=p&&p>=N||L<=p&&p<=N)H=(p-L)/(N-L)*(j-O)+O,H>x&&q++;else continue;return q%2!==0},sm=function(p,x,C,L,O,N,j,H,q){var W=new Array(C.length),Z;H[0]!=null?(Z=Math.atan(H[1]/H[0]),H[0]<0?Z=Z+Math.PI/2:Z=-Z-Math.PI/2):Z=H;for(var st=Math.cos(-Z),bt=Math.sin(-Z),pt=0;pt0){var St=Z9(W,-q);_t=J9(St)}else _t=W;return y0(p,x,_t)},TQ=function(p,x,C,L,O,N,j){for(var H=new Array(C.length),q=N/2,W=j/2,Z=HD(N,j),st=Z*Z,bt=0;bt=0&&St<=1&&Nt.push(St),Et>=0&&Et<=1&&Nt.push(Et),Nt.length===0)return[];var Pt=Nt[0]*H[0]+p,qt=Nt[0]*H[1]+x;if(Nt.length>1){if(Nt[0]==Nt[1])return[Pt,qt];var re=Nt[1]*H[0]+p,ee=Nt[1]*H[1]+x;return[Pt,qt,re,ee]}else return[Pt,qt]},zD=function(p,x,C){return x<=p&&p<=C||C<=p&&p<=x?p:p<=x&&x<=C||C<=x&&x<=p?x:C},uy=function(p,x,C,L,O,N,j,H,q){var W=p-O,Z=C-p,st=j-O,bt=x-N,pt=L-x,_t=H-N,St=st*bt-_t*W,Et=Z*bt-pt*W,Nt=_t*Z-st*pt;if(Nt!==0){var Pt=St/Nt,qt=Et/Nt,re=.001,ee=0-re,Ut=1+re;return ee<=Pt&&Pt<=Ut&&ee<=qt&&qt<=Ut?[p+Pt*Z,x+Pt*pt]:q?[p+Pt*Z,x+Pt*pt]:[]}else return St===0||Et===0?zD(p,C,j)===j?[j,H]:zD(p,C,O)===O?[O,N]:zD(O,j,C)===C?[C,L]:[]:[]},B8=function(p,x,C,L,O,N,j,H){var q=[],W,Z=new Array(C.length),st=!0;N==null&&(st=!1);var bt;if(st){for(var pt=0;pt0){var _t=Z9(Z,-H);bt=J9(_t)}else bt=Z}else bt=C;for(var St,Et,Nt,Pt,qt=0;qt2){for(var nn=[q[0],q[1]],qe=Math.pow(nn[0]-p,2)+Math.pow(nn[1]-x,2),Tn=1;TnW&&(W=qt)},get:function(Pt){return q[Pt]}},st=0;st0?nn=yn.edgesTo(me)[0]:nn=me.edgesTo(yn)[0];var qe=L(nn);me=me.id(),de[me]>de[ie]+qe&&(de[me]=de[ie]+qe,Yt.nodes.indexOf(me)<0?Yt.push(me):Yt.updateItem(me),Ut[me]=0,ee[me]=[]),de[me]==de[ie]+qe&&(Ut[me]=Ut[me]+Ut[ie],ee[me].push(ie))}else for(var Tn=0;Tn0;){for(var or=re.pop(),pr=0;pr0&&j.push(C[H]);j.length!==0&&O.push(L.collection(j))}return O},jQ=function(p,x){for(var C=0;C5&&arguments[5]!==void 0?arguments[5]:qQ,j=L,H,q,W=0;W=2?j8(p,x,C,0,XB,HQ):j8(p,x,C,0,YB)},squaredEuclidean:function(p,x,C){return j8(p,x,C,0,XB)},manhattan:function(p,x,C){return j8(p,x,C,0,YB)},max:function(p,x,C){return j8(p,x,C,-1/0,VQ)}};t6["squared-euclidean"]=t6.squaredEuclidean,t6.squaredeuclidean=t6.squaredEuclidean;function eC(y,p,x,C,L,O){var N;return ct(y)?N=y:N=t6[y]||t6.euclidean,p===0&&ct(y)?N(L,O):N(p,x,C,L,O)}var UQ=p1({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),GD=function(p){return UQ(p)},nC=function(p,x,C,L,O){var N=O!=="kMedoids",j=N?function(Z){return C[Z]}:function(Z){return L[Z](C)},H=function(st){return L[st](x)},q=C,W=x;return eC(p,L.length,j,H,q,W)},KD=function(p,x,C){for(var L=C.length,O=new Array(L),N=new Array(L),j=new Array(x),H=null,q=0;qC)return!1}return!0},WQ=function(p,x,C){for(var L=0;Lj&&(j=x[q][W],H=W);O[H].push(p[q])}for(var Z=0;Z=O.threshold||O.mode==="dendrogram"&&p.length===1)return!1;var pt=x[N],_t=x[L[N]],St;O.mode==="dendrogram"?St={left:pt,right:_t,key:pt.key}:St={value:pt.value.concat(_t.value),key:pt.key},p[pt.index]=St,p.splice(_t.index,1),x[pt.key]=St;for(var Et=0;EtC[_t.key][Nt.key]&&(H=C[_t.key][Nt.key])):O.linkage==="max"?(H=C[pt.key][Nt.key],C[pt.key][Nt.key]0&&L.push(O);return L},iR=function(p,x,C){for(var L=[],O=0;Oj&&(N=q,j=x[O*p+q])}N>0&&L.push(N)}for(var W=0;Wq&&(H=W,q=Z)}C[O]=N[H]}return L=iR(p,x,C),L},sR=function(p){for(var x=this.cy(),C=this.nodes(),L=cJ(p),O={},N=0;N=Te?(ie=Te,Te=me,ze=yn):me>ie&&(ie=me);for(var nn=0;nn0?1:0;Ut[Yt%L.minIterations*j+or]=pr,Sn+=pr}if(Sn>0&&(Yt>=L.minIterations-1||Yt==L.maxIterations-1)){for(var kr=0,wr=0;wr1||ee>1)&&(j=!0),Z[Pt]=[],Nt.outgoers().forEach(function(de){de.isEdge()&&Z[Pt].push(de.id())})}else st[Pt]=[void 0,Nt.target().id()]}):N.forEach(function(Nt){var Pt=Nt.id();if(Nt.isNode()){var qt=Nt.degree(!0);qt%2&&(H?q?j=!0:q=Pt:H=Pt),Z[Pt]=[],Nt.connectedEdges().forEach(function(re){return Z[Pt].push(re.id())})}else st[Pt]=[Nt.source().id(),Nt.target().id()]});var bt={found:!1,trail:void 0};if(j)return bt;if(q&&H)if(O){if(W&&q!=W)return bt;W=q}else{if(W&&q!=W&&H!=W)return bt;W||(W=q)}else W||(W=N[0].id());var pt=function(Pt){for(var qt=Pt,re=[Pt],ee,Ut,de;Z[qt].length;)ee=Z[qt].shift(),Ut=st[ee][0],de=st[ee][1],qt!=de?(Z[de]=Z[de].filter(function(Yt){return Yt!=ee}),qt=de):!O&&qt!=Ut&&(Z[Ut]=Z[Ut].filter(function(Yt){return Yt!=ee}),qt=Ut),re.unshift(ee),re.unshift(qt);return re},_t=[],St=[];for(St=pt(W);St.length!=1;)Z[St[0]].length==0?(_t.unshift(N.getElementById(St.shift())),_t.unshift(N.getElementById(St.shift()))):St=pt(St.shift()).concat(St);_t.unshift(N.getElementById(St.shift()));for(var Et in Z)if(Z[Et].length)return bt;return bt.found=!0,bt.trail=this.spawn(_t,!0),bt}},iC=function(){var p=this,x={},C=0,L=0,O=[],N=[],j={},H=function(st,bt){for(var pt=N.length-1,_t=[],St=p.spawn();N[pt].x!=st||N[pt].y!=bt;)_t.push(N.pop().edge),pt--;_t.push(N.pop().edge),_t.forEach(function(Et){var Nt=Et.connectedNodes().intersection(p);St.merge(Et),Nt.forEach(function(Pt){var qt=Pt.id(),re=Pt.connectedEdges().intersection(p);St.merge(Pt),x[qt].cutVertex?St.merge(re.filter(function(ee){return ee.isLoop()})):St.merge(re)})}),O.push(St)},q=function Z(st,bt,pt){st===pt&&(L+=1),x[bt]={id:C,low:C++,cutVertex:!1};var _t=p.getElementById(bt).connectedEdges().intersection(p);if(_t.size()===0)O.push(p.spawn(p.getElementById(bt)));else{var St,Et,Nt,Pt;_t.forEach(function(qt){St=qt.source().id(),Et=qt.target().id(),Nt=St===bt?Et:St,Nt!==pt&&(Pt=qt.id(),j[Pt]||(j[Pt]=!0,N.push({x:bt,y:Nt,edge:qt})),Nt in x?x[bt].low=Math.min(x[bt].low,x[Nt].id):(Z(st,Nt,bt),x[bt].low=Math.min(x[bt].low,x[Nt].low),x[bt].id<=x[Nt].low&&(x[bt].cutVertex=!0,H(bt,Nt))))})}};p.forEach(function(Z){if(Z.isNode()){var st=Z.id();st in x||(L=0,q(st,st),x[st].cutVertex=L>1)}});var W=Object.keys(x).filter(function(Z){return x[Z].cutVertex}).map(function(Z){return p.getElementById(Z)});return{cut:p.spawn(W),components:O}},bJ={hopcroftTarjanBiconnected:iC,htbc:iC,htb:iC,hopcroftTarjanBiconnectedComponents:iC},sC=function(){var p=this,x={},C=0,L=[],O=[],N=p.spawn(p),j=function H(q){O.push(q),x[q]={index:C,low:C++,explored:!1};var W=p.getElementById(q).connectedEdges().intersection(p);if(W.forEach(function(_t){var St=_t.target().id();St!==q&&(St in x||H(St),x[St].explored||(x[q].low=Math.min(x[q].low,x[St].low)))}),x[q].index===x[q].low){for(var Z=p.spawn();;){var st=O.pop();if(Z.merge(p.getElementById(st)),x[st].low=x[q].index,x[st].explored=!0,st===q)break}var bt=Z.edgesWith(Z),pt=Z.merge(bt);L.push(pt),N=N.difference(pt)}};return p.forEach(function(H){if(H.isNode()){var q=H.id();q in x||j(q)}}),{cut:N,components:L}},wJ={tarjanStronglyConnected:sC,tsc:sC,tscc:sC,tarjanStronglyConnectedComponents:sC},aR={};[O8,WX,YX,QX,ZX,eQ,iQ,LQ,Jx,Zx,UD,zQ,tJ,aJ,dJ,pJ,bJ,wJ].forEach(function(y){we(aR,y)});/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/var oR=0,cR=1,uR=2,am=function y(p){if(!(this instanceof y))return new y(p);this.id="Thenable/1.0.7",this.state=oR,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof p=="function"&&p.call(this,this.fulfill.bind(this),this.reject.bind(this))};am.prototype={fulfill:function(p){return lR(this,cR,"fulfillValue",p)},reject:function(p){return lR(this,uR,"rejectReason",p)},then:function(p,x){var C=this,L=new am;return C.onFulfilled.push(dR(p,L,"fulfill")),C.onRejected.push(dR(x,L,"reject")),hR(C),L.proxy}};var lR=function(p,x,C,L){return p.state===oR&&(p.state=x,p[C]=L,hR(p)),p},hR=function(p){p.state===cR?fR(p,"onFulfilled",p.fulfillValue):p.state===uR&&fR(p,"onRejected",p.rejectReason)},fR=function(p,x,C){if(p[x].length!==0){var L=p[x];p[x]=[];var O=function(){for(var j=0;j0}},clearQueue:function(){return function(){var x=this,C=x.length!==void 0,L=C?x:[x],O=this._private.cy||this;if(!O.styleEnabled())return this;for(var N=0;N-1}var mZ=wZ;function vZ(y,p){var x=this.__data__,C=cC(x,y);return C<0?(++this.size,x.push([y,p])):x[C][1]=p,this}var yZ=vZ;function r6(y){var p=-1,x=y==null?0:y.length;for(this.clear();++p-1&&y%1==0&&y0&&this.spawn(L).updateStyle().emit("class"),x},addClass:function(p){return this.toggleClass(p,!0)},hasClass:function(p){var x=this[0];return x!=null&&x._private.classes.has(p)},toggleClass:function(p,x){rt(p)||(p=p.match(/\S+/g)||[]);for(var C=this,L=x===void 0,O=[],N=0,j=C.length;N0&&this.spawn(O).updateStyle().emit("class"),C},removeClass:function(p){return this.toggleClass(p,!1)},flashClass:function(p,x){var C=this;if(x==null)x=250;else if(x===0)return C;return C.addClass(p),setTimeout(function(){C.removeClass(p)},x),C}};lC.className=lC.classNames=lC.classes;var yc={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:sn,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};yc.variable="(?:[\\w-.]|(?:\\\\"+yc.metaChar+"))+",yc.className="(?:[\\w-]|(?:\\\\"+yc.metaChar+"))+",yc.value=yc.string+"|"+yc.number,yc.id=yc.variable,function(){var y,p,x;for(y=yc.comparatorOp.split("|"),x=0;x=0)&&p!=="="&&(yc.comparatorOp+="|\\!"+p)}();var bu=function(){return{checks:[]}},Xi={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},JD=[{selector:":selected",matches:function(p){return p.selected()}},{selector:":unselected",matches:function(p){return!p.selected()}},{selector:":selectable",matches:function(p){return p.selectable()}},{selector:":unselectable",matches:function(p){return!p.selectable()}},{selector:":locked",matches:function(p){return p.locked()}},{selector:":unlocked",matches:function(p){return!p.locked()}},{selector:":visible",matches:function(p){return p.visible()}},{selector:":hidden",matches:function(p){return!p.visible()}},{selector:":transparent",matches:function(p){return p.transparent()}},{selector:":grabbed",matches:function(p){return p.grabbed()}},{selector:":free",matches:function(p){return!p.grabbed()}},{selector:":removed",matches:function(p){return p.removed()}},{selector:":inside",matches:function(p){return!p.removed()}},{selector:":grabbable",matches:function(p){return p.grabbable()}},{selector:":ungrabbable",matches:function(p){return!p.grabbable()}},{selector:":animated",matches:function(p){return p.animated()}},{selector:":unanimated",matches:function(p){return!p.animated()}},{selector:":parent",matches:function(p){return p.isParent()}},{selector:":childless",matches:function(p){return p.isChildless()}},{selector:":child",matches:function(p){return p.isChild()}},{selector:":orphan",matches:function(p){return p.isOrphan()}},{selector:":nonorphan",matches:function(p){return p.isChild()}},{selector:":compound",matches:function(p){return p.isNode()?p.isParent():p.source().isParent()||p.target().isParent()}},{selector:":loop",matches:function(p){return p.isLoop()}},{selector:":simple",matches:function(p){return p.isSimple()}},{selector:":active",matches:function(p){return p.active()}},{selector:":inactive",matches:function(p){return!p.active()}},{selector:":backgrounding",matches:function(p){return p.backgrounding()}},{selector:":nonbackgrounding",matches:function(p){return!p.backgrounding()}}].sort(function(y,p){return Br(y.selector,p.selector)}),Ett=function(){for(var y={},p,x=0;x0&&W.edgeCount>0)return Gc("The selector `"+p+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(W.edgeCount>1)return Gc("The selector `"+p+"` is invalid because it uses multiple edge selectors"),!1;W.edgeCount===1&&Gc("The selector `"+p+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Att=function(){if(this.toStringCache!=null)return this.toStringCache;for(var p=function(W){return W??""},x=function(W){return mt(W)?'"'+W+'"':p(W)},C=function(W){return" "+W+" "},L=function(W,Z){var st=W.type,bt=W.value;switch(st){case Xi.GROUP:{var pt=p(bt);return pt.substring(0,pt.length-1)}case Xi.DATA_COMPARE:{var _t=W.field,St=W.operator;return"["+_t+C(p(St))+x(bt)+"]"}case Xi.DATA_BOOL:{var Et=W.operator,Nt=W.field;return"["+p(Et)+Nt+"]"}case Xi.DATA_EXIST:{var Pt=W.field;return"["+Pt+"]"}case Xi.META_COMPARE:{var qt=W.operator,re=W.field;return"[["+re+C(p(qt))+x(bt)+"]]"}case Xi.STATE:return bt;case Xi.ID:return"#"+bt;case Xi.CLASS:return"."+bt;case Xi.PARENT:case Xi.CHILD:return O(W.parent,Z)+C(">")+O(W.child,Z);case Xi.ANCESTOR:case Xi.DESCENDANT:return O(W.ancestor,Z)+" "+O(W.descendant,Z);case Xi.COMPOUND_SPLIT:{var ee=O(W.left,Z),Ut=O(W.subject,Z),de=O(W.right,Z);return ee+(ee.length>0?" ":"")+Ut+de}case Xi.TRUE:return""}},O=function(W,Z){return W.checks.reduce(function(st,bt,pt){return st+(Z===W&&pt===0?"$":"")+L(bt,Z)},"")},N="",j=0;j1&&j=0&&(x=x.replace("!",""),Z=!0),x.indexOf("@")>=0&&(x=x.replace("@",""),W=!0),(O||j||W)&&(H=!O&&!N?"":""+p,q=""+C),W&&(p=H=H.toLowerCase(),C=q=q.toLowerCase()),x){case"*=":L=H.indexOf(q)>=0;break;case"$=":L=H.indexOf(q,H.length-q.length)>=0;break;case"^=":L=H.indexOf(q)===0;break;case"=":L=p===C;break;case">":st=!0,L=p>C;break;case">=":st=!0,L=p>=C;break;case"<":st=!0,L=p0;){var W=L.shift();p(W),O.add(W.id()),j&&C(L,O,W)}return y}function NR(y,p,x){if(x.isParent())for(var C=x._private.children,L=0;L1&&arguments[1]!==void 0?arguments[1]:!0;return eM(this,y,p,NR)};function PR(y,p,x){if(x.isChild()){var C=x._private.parent;p.has(C.id())||y.push(C)}}a6.forEachUp=function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return eM(this,y,p,PR)};function Ptt(y,p,x){PR(y,p,x),NR(y,p,x)}a6.forEachUpAndDown=function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return eM(this,y,p,Ptt)},a6.ancestors=a6.parents;var G1,FR;G1=FR={data:Kc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Kc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Kc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Kc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Kc.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Kc.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var p=this[0];if(p)return p._private.data.id}},G1.attr=G1.data,G1.removeAttr=G1.removeData;var fy=FR,q8={};function nM(y){return function(p){var x=this;if(p===void 0&&(p=!0),x.length!==0)if(x.isNode()&&!x.removed()){for(var C=0,L=x[0],O=L._private.edges,N=0;Np}),minIndegree:o6("indegree",function(y,p){return yp}),minOutdegree:o6("outdegree",function(y,p){return yp})}),we(q8,{totalDegree:function(p){for(var x=0,C=this.nodes(),L=0;L0,st=Z;Z&&(W=W[0]);var bt=st?W.position():{x:0,y:0};x!==void 0?q.position(p,x+bt[p]):O!==void 0&&q.position({x:O.x+bt.x,y:O.y+bt.y})}else{var pt=C.position(),_t=j?C.parent():null,St=_t&&_t.length>0,Et=St;St&&(_t=_t[0]);var Nt=Et?_t.position():{x:0,y:0};return O={x:pt.x-Nt.x,y:pt.y-Nt.y},p===void 0?O:O[p]}else if(!N)return;return this}},db.modelPosition=db.point=db.position,db.modelPositions=db.points=db.positions,db.renderedPoint=db.renderedPosition,db.relativePoint=db.relativePosition;var Ftt=BR,c6,dy;c6=dy={},dy.renderedBoundingBox=function(y){var p=this.boundingBox(y),x=this.cy(),C=x.zoom(),L=x.pan(),O=p.x1*C+L.x,N=p.x2*C+L.x,j=p.y1*C+L.y,H=p.y2*C+L.y;return{x1:O,x2:N,y1:j,y2:H,w:N-O,h:H-j}},dy.dirtyCompoundBoundsCache=function(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,p=this.cy();return!p.styleEnabled()||!p.hasCompoundNodes()?this:(this.forEachUp(function(x){if(x.isParent()){var C=x._private;C.compoundBoundsClean=!1,C.bbCache=null,y||x.emitAndNotify("bounds")}}),this)},dy.updateCompoundBounds=function(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,p=this.cy();if(!p.styleEnabled()||!p.hasCompoundNodes())return this;if(!y&&p.batching())return this;function x(N){if(!N.isParent())return;var j=N._private,H=N.children(),q=N.pstyle("compound-sizing-wrt-labels").value==="include",W={width:{val:N.pstyle("min-width").pfValue,left:N.pstyle("min-width-bias-left"),right:N.pstyle("min-width-bias-right")},height:{val:N.pstyle("min-height").pfValue,top:N.pstyle("min-height-bias-top"),bottom:N.pstyle("min-height-bias-bottom")}},Z=H.boundingBox({includeLabels:q,includeOverlays:!1,useCache:!1}),st=j.position;(Z.w===0||Z.h===0)&&(Z={w:N.pstyle("width").pfValue,h:N.pstyle("height").pfValue},Z.x1=st.x-Z.w/2,Z.x2=st.x+Z.w/2,Z.y1=st.y-Z.h/2,Z.y2=st.y+Z.h/2);function bt(Yt,Ee,Te){var ie=0,ze=0,me=Ee+Te;return Yt>0&&me>0&&(ie=Ee/me*Yt,ze=Te/me*Yt),{biasDiff:ie,biasComplementDiff:ze}}function pt(Yt,Ee,Te,ie){if(Te.units==="%")switch(ie){case"width":return Yt>0?Te.pfValue*Yt:0;case"height":return Ee>0?Te.pfValue*Ee:0;case"average":return Yt>0&&Ee>0?Te.pfValue*(Yt+Ee)/2:0;case"min":return Yt>0&&Ee>0?Yt>Ee?Te.pfValue*Ee:Te.pfValue*Yt:0;case"max":return Yt>0&&Ee>0?Yt>Ee?Te.pfValue*Yt:Te.pfValue*Ee:0;default:return 0}else return Te.units==="px"?Te.pfValue:0}var _t=W.width.left.value;W.width.left.units==="px"&&W.width.val>0&&(_t=_t*100/W.width.val);var St=W.width.right.value;W.width.right.units==="px"&&W.width.val>0&&(St=St*100/W.width.val);var Et=W.height.top.value;W.height.top.units==="px"&&W.height.val>0&&(Et=Et*100/W.height.val);var Nt=W.height.bottom.value;W.height.bottom.units==="px"&&W.height.val>0&&(Nt=Nt*100/W.height.val);var Pt=bt(W.width.val-Z.w,_t,St),qt=Pt.biasDiff,re=Pt.biasComplementDiff,ee=bt(W.height.val-Z.h,Et,Nt),Ut=ee.biasDiff,de=ee.biasComplementDiff;j.autoPadding=pt(Z.w,Z.h,N.pstyle("padding"),N.pstyle("padding-relative-to").value),j.autoWidth=Math.max(Z.w,W.width.val),st.x=(-qt+Z.x1+Z.x2+re)/2,j.autoHeight=Math.max(Z.h,W.height.val),st.y=(-Ut+Z.y1+Z.y2+de)/2}for(var C=0;Cp.x2?L:p.x2,p.y1=Cp.y2?O:p.y2,p.w=p.x2-p.x1,p.h=p.y2-p.y1)},k4=function(p,x){return x==null?p:gb(p,x.x1,x.y1,x.x2,x.y2)},H8=function(p,x,C){return fb(p,x,C)},hC=function(p,x,C){if(!x.cy().headless()){var L=x._private,O=L.rstyle,N=O.arrowWidth/2,j=x.pstyle(C+"-arrow-shape").value,H,q;if(j!=="none"){C==="source"?(H=O.srcX,q=O.srcY):C==="target"?(H=O.tgtX,q=O.tgtY):(H=O.midX,q=O.midY);var W=L.arrowBounds=L.arrowBounds||{},Z=W[C]=W[C]||{};Z.x1=H-N,Z.y1=q-N,Z.x2=H+N,Z.y2=q+N,Z.w=Z.x2-Z.x1,Z.h=Z.y2-Z.y1,X9(Z,1),gb(p,Z.x1,Z.y1,Z.x2,Z.y2)}}},rM=function(p,x,C){if(!x.cy().headless()){var L;C?L=C+"-":L="";var O=x._private,N=O.rstyle,j=x.pstyle(L+"label").strValue;if(j){var H=x.pstyle("text-halign"),q=x.pstyle("text-valign"),W=H8(N,"labelWidth",C),Z=H8(N,"labelHeight",C),st=H8(N,"labelX",C),bt=H8(N,"labelY",C),pt=x.pstyle(L+"text-margin-x").pfValue,_t=x.pstyle(L+"text-margin-y").pfValue,St=x.isEdge(),Et=x.pstyle(L+"text-rotation"),Nt=x.pstyle("text-outline-width").pfValue,Pt=x.pstyle("text-border-width").pfValue,qt=Pt/2,re=x.pstyle("text-background-padding").pfValue,ee=2,Ut=Z,de=W,Yt=de/2,Ee=Ut/2,Te,ie,ze,me;if(St)Te=st-Yt,ie=st+Yt,ze=bt-Ee,me=bt+Ee;else{switch(H.value){case"left":Te=st-de,ie=st;break;case"center":Te=st-Yt,ie=st+Yt;break;case"right":Te=st,ie=st+de;break}switch(q.value){case"top":ze=bt-Ut,me=bt;break;case"center":ze=bt-Ee,me=bt+Ee;break;case"bottom":ze=bt,me=bt+Ut;break}}Te+=pt-Math.max(Nt,qt)-re-ee,ie+=pt+Math.max(Nt,qt)+re+ee,ze+=_t-Math.max(Nt,qt)-re-ee,me+=_t+Math.max(Nt,qt)+re+ee;var yn=C||"main",nn=O.labelBounds,qe=nn[yn]=nn[yn]||{};qe.x1=Te,qe.y1=ze,qe.x2=ie,qe.y2=me,qe.w=ie-Te,qe.h=me-ze;var Tn=St&&Et.strValue==="autorotate",Xn=Et.pfValue!=null&&Et.pfValue!==0;if(Tn||Xn){var lr=Tn?H8(O.rstyle,"labelAngle",C):Et.pfValue,Sn=Math.cos(lr),or=Math.sin(lr),pr=(Te+ie)/2,kr=(ze+me)/2;if(!St){switch(H.value){case"left":pr=ie;break;case"right":pr=Te;break}switch(q.value){case"top":kr=me;break;case"bottom":kr=ze;break}}var wr=function(na,vi){return na=na-pr,vi=vi-kr,{x:na*Sn-vi*or+pr,y:na*or+vi*Sn+kr}},Cr=wr(Te,ze),$n=wr(Te,me),cr=wr(ie,ze),mr=wr(ie,me);Te=Math.min(Cr.x,$n.x,cr.x,mr.x),ie=Math.max(Cr.x,$n.x,cr.x,mr.x),ze=Math.min(Cr.y,$n.y,cr.y,mr.y),me=Math.max(Cr.y,$n.y,cr.y,mr.y)}var Sr=yn+"Rot",gi=nn[Sr]=nn[Sr]||{};gi.x1=Te,gi.y1=ze,gi.x2=ie,gi.y2=me,gi.w=ie-Te,gi.h=me-ze,gb(p,Te,ze,ie,me),gb(O.labelBounds.all,Te,ze,ie,me)}return p}},Btt=function(p,x){if(!x.cy().headless()){var C=x.pstyle("outline-opacity").value,L=x.pstyle("outline-width").value;if(C>0&&L>0){var O=x.pstyle("outline-offset").value,N=x.pstyle("shape").value,j=L+O,H=(p.w+j*2)/p.w,q=(p.h+j*2)/p.h,W=0,Z=0;["diamond","pentagon","round-triangle"].includes(N)?(H=(p.w+j*2.4)/p.w,Z=-j/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(N)?H=(p.w+j*2.4)/p.w:N==="star"?(H=(p.w+j*2.8)/p.w,q=(p.h+j*2.6)/p.h,Z=-j/3.8):N==="triangle"?(H=(p.w+j*2.8)/p.w,q=(p.h+j*2.4)/p.h,Z=-j/1.4):N==="vee"&&(H=(p.w+j*4.4)/p.w,q=(p.h+j*3.8)/p.h,Z=-j*.5);var st=p.h*q-p.h,bt=p.w*H-p.w;if(Q9(p,[Math.ceil(st/2),Math.ceil(bt/2)]),W!=0||Z!==0){var pt=pQ(p,W,Z);BB(p,pt)}}}},Rtt=function(p,x){var C=p._private.cy,L=C.styleEnabled(),O=C.headless(),N=v0(),j=p._private,H=p.isNode(),q=p.isEdge(),W,Z,st,bt,pt,_t,St=j.rstyle,Et=H&&L?p.pstyle("bounds-expansion").pfValue:[0],Nt=function(Qi){return Qi.pstyle("display").value!=="none"},Pt=!L||Nt(p)&&(!q||Nt(p.source())&&Nt(p.target()));if(Pt){var qt=0,re=0;L&&x.includeOverlays&&(qt=p.pstyle("overlay-opacity").value,qt!==0&&(re=p.pstyle("overlay-padding").value));var ee=0,Ut=0;L&&x.includeUnderlays&&(ee=p.pstyle("underlay-opacity").value,ee!==0&&(Ut=p.pstyle("underlay-padding").value));var de=Math.max(re,Ut),Yt=0,Ee=0;if(L&&(Yt=p.pstyle("width").pfValue,Ee=Yt/2),H&&x.includeNodes){var Te=p.position();pt=Te.x,_t=Te.y;var ie=p.outerWidth(),ze=ie/2,me=p.outerHeight(),yn=me/2;W=pt-ze,Z=pt+ze,st=_t-yn,bt=_t+yn,gb(N,W,st,Z,bt),L&&x.includeOutlines&&Btt(N,p)}else if(q&&x.includeEdges)if(L&&!O){var nn=p.pstyle("curve-style").strValue;if(W=Math.min(St.srcX,St.midX,St.tgtX),Z=Math.max(St.srcX,St.midX,St.tgtX),st=Math.min(St.srcY,St.midY,St.tgtY),bt=Math.max(St.srcY,St.midY,St.tgtY),W-=Ee,Z+=Ee,st-=Ee,bt+=Ee,gb(N,W,st,Z,bt),nn==="haystack"){var qe=St.haystackPts;if(qe&&qe.length===2){if(W=qe[0].x,st=qe[0].y,Z=qe[1].x,bt=qe[1].y,W>Z){var Tn=W;W=Z,Z=Tn}if(st>bt){var Xn=st;st=bt,bt=Xn}gb(N,W-Ee,st-Ee,Z+Ee,bt+Ee)}}else if(nn==="bezier"||nn==="unbundled-bezier"||nn==="segments"||nn==="taxi"){var lr;switch(nn){case"bezier":case"unbundled-bezier":lr=St.bezierPts;break;case"segments":case"taxi":lr=St.linePts;break}if(lr!=null)for(var Sn=0;SnZ){var $n=W;W=Z,Z=$n}if(st>bt){var cr=st;st=bt,bt=cr}W-=Ee,Z+=Ee,st-=Ee,bt+=Ee,gb(N,W,st,Z,bt)}if(L&&x.includeEdges&&q&&(hC(N,p,"mid-source"),hC(N,p,"mid-target"),hC(N,p,"source"),hC(N,p,"target")),L){var mr=p.pstyle("ghost").value==="yes";if(mr){var Sr=p.pstyle("ghost-offset-x").pfValue,gi=p.pstyle("ghost-offset-y").pfValue;gb(N,N.x1+Sr,N.y1+gi,N.x2+Sr,N.y2+gi)}}var ss=j.bodyBounds=j.bodyBounds||{};RB(ss,N),Q9(ss,Et),X9(ss,1),L&&(W=N.x1,Z=N.x2,st=N.y1,bt=N.y2,gb(N,W-de,st-de,Z+de,bt+de));var na=j.overlayBounds=j.overlayBounds||{};RB(na,N),Q9(na,Et),X9(na,1);var vi=j.labelBounds=j.labelBounds||{};vi.all!=null?gQ(vi.all):vi.all=v0(),L&&x.includeLabels&&(x.includeMainLabels&&rM(N,p,null),q&&(x.includeSourceLabels&&rM(N,p,"source"),x.includeTargetLabels&&rM(N,p,"target")))}return N.x1=op(N.x1),N.y1=op(N.y1),N.x2=op(N.x2),N.y2=op(N.y2),N.w=op(N.x2-N.x1),N.h=op(N.y2-N.y1),N.w>0&&N.h>0&&Pt&&(Q9(N,Et),X9(N,1)),N},$R=function(p){var x=0,C=function(N){return(N?1:0)<0&&arguments[0]!==void 0?arguments[0]:Xtt,p=arguments.length>1?arguments[1]:void 0,x=0;x=0;j--)N(j);return this},pb.removeAllListeners=function(){return this.removeListener("*")},pb.emit=pb.trigger=function(y,p,x){var C=this.listeners,L=C.length;return this.emitting++,rt(p)||(p=[p]),gC(this,function(O,N){x!=null&&(C=[{event:N.event,type:N.type,namespace:N.namespace,callback:x}],L=C.length);for(var j=function(W){var Z=C[W];if(Z.type===N.type&&(!Z.namespace||Z.namespace===N.namespace||Z.namespace===Ytt)&&O.eventMatches(O.context,Z,N)){var st=[N];p!=null&&OB(st,p),O.beforeEmit(O.context,Z,N),Z.conf&&Z.conf.one&&(O.listeners=O.listeners.filter(function(_t){return _t!==Z}));var bt=O.callbackContext(O.context,Z,N),pt=Z.callback.apply(bt,st);O.afterEmit(O.context,Z,N),pt===!1&&(N.stopPropagation(),N.preventDefault())}},H=0;H1&&!N){var j=this.length-1,H=this[j],q=H._private.data.id;this[j]=void 0,this[p]=H,O.set(q,{ele:H,index:p})}return this.length--,this},unmergeOne:function(p){p=p[0];var x=this._private,C=p._private.data.id,L=x.map,O=L.get(C);if(!O)return this;var N=O.index;return this.unmergeAt(N),this},unmerge:function(p){var x=this._private.cy;if(!p)return this;if(p&&mt(p)){var C=p;p=x.mutableElements().filter(C)}for(var L=0;L=0;x--){var C=this[x];p(C)&&this.unmergeAt(x)}return this},map:function(p,x){for(var C=[],L=this,O=0;OC&&(C=H,L=j)}return{value:C,ele:L}},min:function(p,x){for(var C=1/0,L,O=this,N=0;N=0&&O"u"?"undefined":f(Symbol))!=p&&f(Symbol.iterator)!=p;x&&(pC[Symbol.iterator]=function(){var C=this,L={value:void 0,done:!1},O=0,N=this.length;return b({next:function(){return O1&&arguments[1]!==void 0?arguments[1]:!0,C=this[0],L=C.cy();if(L.styleEnabled()&&C){this.cleanStyle();var O=C._private.style[p];return O??(x?L.style().getDefaultProperty(p):null)}},numericStyle:function(p){var x=this[0];if(x.cy().styleEnabled()&&x){var C=x.pstyle(p);return C.pfValue!==void 0?C.pfValue:C.value}},numericStyleUnits:function(p){var x=this[0];if(x.cy().styleEnabled()&&x)return x.pstyle(p).units},renderedStyle:function(p){var x=this.cy();if(!x.styleEnabled())return this;var C=this[0];if(C)return x.style().getRenderedStyle(C,p)},style:function(p,x){var C=this.cy();if(!C.styleEnabled())return this;var L=!1,O=C.style();if(it(p)){var N=p;O.applyBypass(this,N,L),this.emitAndNotify("style")}else if(mt(p))if(x===void 0){var j=this[0];return j?O.getStylePropertyValue(j,p):void 0}else O.applyBypass(this,p,x,L),this.emitAndNotify("style");else if(p===void 0){var H=this[0];return H?O.getRawStyle(H):void 0}return this},removeStyle:function(p){var x=this.cy();if(!x.styleEnabled())return this;var C=!1,L=x.style(),O=this;if(p===void 0)for(var N=0;N0&&p.push(W[0]),p.push(j[0])}return this.spawn(p,!0).filter(y)},"neighborhood"),closedNeighborhood:function(p){return this.neighborhood().add(this).filter(p)},openNeighborhood:function(p){return this.neighborhood(p)}}),K1.neighbourhood=K1.neighborhood,K1.closedNeighbourhood=K1.closedNeighborhood,K1.openNeighbourhood=K1.openNeighborhood,we(K1,{source:ap(function(p){var x=this[0],C;return x&&(C=x._private.source||x.cy().collection()),C&&p?C.filter(p):C},"source"),target:ap(function(p){var x=this[0],C;return x&&(C=x._private.target||x.cy().collection()),C&&p?C.filter(p):C},"target"),sources:ej({attr:"source"}),targets:ej({attr:"target"})});function ej(y){return function(x){for(var C=[],L=0;L0);return N},component:function(){var p=this[0];return p.cy().mutableElements().components(p)[0]}}),K1.componentsOf=K1.components;var w1=function(p,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,L=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(p===void 0){$l("A collection must have a reference to the core");return}var O=new F2,N=!1;if(!x)x=[];else if(x.length>0&&it(x[0])&&!V(x[0])){N=!0;for(var j=[],H=new Wx,q=0,W=x.length;q0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,x=this,C=x.cy(),L=C._private,O=[],N=[],j,H=0,q=x.length;H0){for(var Xn=j.length===x.length?x:new w1(C,j),lr=0;lr0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,x=this,C=[],L={},O=x._private.cy;function N(me){for(var yn=me._private.edges,nn=0;nn0&&(y?Te.emitAndNotify("remove"):p&&Te.emit("remove"));for(var ie=0;ie0?ie=me:Te=me;while(Math.abs(ze)>N&&++yn=O?Nt(Ee,yn):nn===0?yn:qt(Ee,Te,Te+q)}var ee=!1;function Ut(){ee=!0,(y!==p||x!==C)&&Pt()}var de=function(Te){return ee||Ut(),y===p&&x===C?Te:Te===0?0:Te===1?1:St(re(Te),p,C)};de.getControlPoints=function(){return[{x:y,y:p},{x,y:C}]};var Yt="generateBezier("+[y,p,x,C]+")";return de.toString=function(){return Yt},de}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var oet=function(){function y(C){return-C.tension*C.x-C.friction*C.v}function p(C,L,O){var N={x:C.x+O.dx*L,v:C.v+O.dv*L,tension:C.tension,friction:C.friction};return{dx:N.v,dv:y(N)}}function x(C,L){var O={dx:C.v,dv:y(C)},N=p(C,L*.5,O),j=p(C,L*.5,N),H=p(C,L,j),q=1/6*(O.dx+2*(N.dx+j.dx)+H.dx),W=1/6*(O.dv+2*(N.dv+j.dv)+H.dv);return C.x=C.x+q*L,C.v=C.v+W*L,C}return function C(L,O,N){var j={x:-1,v:0,tension:null,friction:null},H=[0],q=0,W=1/1e4,Z=16/1e3,st,bt,pt;for(L=parseFloat(L)||500,O=parseFloat(O)||20,N=N||null,j.tension=L,j.friction=O,st=N!==null,st?(q=C(L,O),bt=q/N*Z):bt=Z;pt=x(pt||j,bt),H.push(1+pt.x),q+=16,Math.abs(pt.x)>W&&Math.abs(pt.v)>W;);return st?function(_t){return H[_t*(H.length-1)|0]}:q}}(),Ru=function(p,x,C,L){var O=aet(p,x,C,L);return function(N,j,H){return N+(j-N)*O(H)}},yC={linear:function(p,x,C){return p+(x-p)*C},ease:Ru(.25,.1,.25,1),"ease-in":Ru(.42,0,1,1),"ease-out":Ru(0,0,.58,1),"ease-in-out":Ru(.42,0,.58,1),"ease-in-sine":Ru(.47,0,.745,.715),"ease-out-sine":Ru(.39,.575,.565,1),"ease-in-out-sine":Ru(.445,.05,.55,.95),"ease-in-quad":Ru(.55,.085,.68,.53),"ease-out-quad":Ru(.25,.46,.45,.94),"ease-in-out-quad":Ru(.455,.03,.515,.955),"ease-in-cubic":Ru(.55,.055,.675,.19),"ease-out-cubic":Ru(.215,.61,.355,1),"ease-in-out-cubic":Ru(.645,.045,.355,1),"ease-in-quart":Ru(.895,.03,.685,.22),"ease-out-quart":Ru(.165,.84,.44,1),"ease-in-out-quart":Ru(.77,0,.175,1),"ease-in-quint":Ru(.755,.05,.855,.06),"ease-out-quint":Ru(.23,1,.32,1),"ease-in-out-quint":Ru(.86,0,.07,1),"ease-in-expo":Ru(.95,.05,.795,.035),"ease-out-expo":Ru(.19,1,.22,1),"ease-in-out-expo":Ru(1,0,0,1),"ease-in-circ":Ru(.6,.04,.98,.335),"ease-out-circ":Ru(.075,.82,.165,1),"ease-in-out-circ":Ru(.785,.135,.15,.86),spring:function(p,x,C){if(C===0)return yC.linear;var L=oet(p,x,C);return function(O,N,j){return O+(N-O)*L(j)}},"cubic-bezier":Ru};function ij(y,p,x,C,L){if(C===1||p===x)return x;var O=L(p,x,C);return y==null||((y.roundValue||y.color)&&(O=Math.round(O)),y.min!==void 0&&(O=Math.max(O,y.min)),y.max!==void 0&&(O=Math.min(O,y.max))),O}function sj(y,p){return y.pfValue!=null||y.value!=null?y.pfValue!=null&&(p==null||p.type.units!=="%")?y.pfValue:y.value:y}function h6(y,p,x,C,L){var O=L!=null?L.type:null;x<0?x=0:x>1&&(x=1);var N=sj(y,L),j=sj(p,L);if(Q(N)&&Q(j))return ij(O,N,j,x,C);if(rt(N)&&rt(j)){for(var H=[],q=0;q0?(bt==="spring"&&pt.push(N.duration),N.easingImpl=yC[bt].apply(null,pt)):N.easingImpl=yC[bt]}var _t=N.easingImpl,St;if(N.duration===0?St=1:St=(x-H)/N.duration,N.applying&&(St=N.progress),St<0?St=0:St>1&&(St=1),N.delay==null){var Et=N.startPosition,Nt=N.position;if(Nt&&L&&!y.locked()){var Pt={};X8(Et.x,Nt.x)&&(Pt.x=h6(Et.x,Nt.x,St,_t)),X8(Et.y,Nt.y)&&(Pt.y=h6(Et.y,Nt.y,St,_t)),y.position(Pt)}var qt=N.startPan,re=N.pan,ee=O.pan,Ut=re!=null&&C;Ut&&(X8(qt.x,re.x)&&(ee.x=h6(qt.x,re.x,St,_t)),X8(qt.y,re.y)&&(ee.y=h6(qt.y,re.y,St,_t)),y.emit("pan"));var de=N.startZoom,Yt=N.zoom,Ee=Yt!=null&&C;Ee&&(X8(de,Yt)&&(O.zoom=P8(O.minZoom,h6(de,Yt,St,_t),O.maxZoom)),y.emit("zoom")),(Ut||Ee)&&y.emit("viewport");var Te=N.style;if(Te&&Te.length>0&&L){for(var ie=0;ie=0;Ut--){var de=ee[Ut];de()}ee.splice(0,ee.length)},Nt=bt.length-1;Nt>=0;Nt--){var Pt=bt[Nt],qt=Pt._private;if(qt.stopped){bt.splice(Nt,1),qt.hooked=!1,qt.playing=!1,qt.started=!1,Et(qt.frames);continue}!qt.playing&&!qt.applying||(qt.playing&&qt.applying&&(qt.applying=!1),qt.started||uet(W,Pt,y),cet(W,Pt,y,Z),qt.applying&&(qt.applying=!1),Et(qt.frames),qt.step!=null&&qt.step(y),Pt.completed()&&(bt.splice(Nt,1),qt.hooked=!1,qt.playing=!1,qt.started=!1,Et(qt.completes)),_t=!0)}return!Z&&bt.length===0&&pt.length===0&&C.push(W),_t}for(var O=!1,N=0;N0?p.notify("draw",x):p.notify("draw")),x.unmerge(C),p.emit("step")}var het={animate:Kc.animate(),animation:Kc.animation(),animated:Kc.animated(),clearQueue:Kc.clearQueue(),delay:Kc.delay(),delayAnimation:Kc.delayAnimation(),stop:Kc.stop(),addToAnimationPool:function(p){var x=this;x.styleEnabled()&&x._private.aniEles.merge(p)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var p=this;if(p._private.animationsRunning=!0,!p.styleEnabled())return;function x(){p._private.animationsRunning&&g1(function(O){aj(O,p),x()})}var C=p.renderer();C&&C.beforeRender?C.beforeRender(function(O,N){aj(N,p)},C.beforeRenderPriorities.animations):x()}},fet={qualifierCompare:function(p,x){return p==null||x==null?p==null&&x==null:p.sameText(x)},eventMatches:function(p,x,C){var L=x.qualifier;return L!=null?p!==C.target&&V(C.target)&&L.matches(C.target):!0},addEventFields:function(p,x){x.cy=p,x.target=p},callbackContext:function(p,x,C){return x.qualifier!=null?C.target:p}},xC=function(p){return mt(p)?new ly(p):p},oj={createEmitter:function(){var p=this._private;return p.emitter||(p.emitter=new dC(fet,this)),this},emitter:function(){return this._private.emitter},on:function(p,x,C){return this.emitter().on(p,xC(x),C),this},removeListener:function(p,x,C){return this.emitter().removeListener(p,xC(x),C),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(p,x,C){return this.emitter().one(p,xC(x),C),this},once:function(p,x,C){return this.emitter().one(p,xC(x),C),this},emit:function(p,x){return this.emitter().emit(p,x),this},emitAndNotify:function(p,x){return this.emit(p),this.notify(p,x),this}};Kc.eventAliasesOn(oj);var hM={png:function(p){var x=this._private.renderer;return p=p||{},x.png(p)},jpg:function(p){var x=this._private.renderer;return p=p||{},p.bg=p.bg||"#fff",x.jpg(p)}};hM.jpeg=hM.jpg;var kC={layout:function(p){var x=this;if(p==null){$l("Layout options must be specified to make a layout");return}if(p.name==null){$l("A `name` must be specified to make a layout");return}var C=p.name,L=x.extension("layout",C);if(L==null){$l("No such layout `"+C+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var O;mt(p.eles)?O=x.$(p.eles):O=p.eles!=null?p.eles:x.$();var N=new L(we({},p,{cy:x,eles:O}));return N}};kC.createLayout=kC.makeLayout=kC.layout;var det={notify:function(p,x){var C=this._private;if(this.batching()){C.batchNotifications=C.batchNotifications||{};var L=C.batchNotifications[p]=C.batchNotifications[p]||this.collection();x!=null&&L.merge(x);return}if(C.notificationsEnabled){var O=this.renderer();this.destroyed()||!O||O.notify(p,x)}},notifications:function(p){var x=this._private;return p===void 0?x.notificationsEnabled:(x.notificationsEnabled=!!p,this)},noNotifications:function(p){this.notifications(!1),p(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var p=this._private;return p.batchCount==null&&(p.batchCount=0),p.batchCount===0&&(p.batchStyleEles=this.collection(),p.batchNotifications={}),p.batchCount++,this},endBatch:function(){var p=this._private;if(p.batchCount===0)return this;if(p.batchCount--,p.batchCount===0){p.batchStyleEles.updateStyle();var x=this.renderer();Object.keys(p.batchNotifications).forEach(function(C){var L=p.batchNotifications[C];L.empty()?x.notify(C):x.notify(C,L)})}return this},batch:function(p){return this.startBatch(),p(),this.endBatch(),this},batchData:function(p){var x=this;return this.batch(function(){for(var C=Object.keys(p),L=0;L0;)x.removeChild(x.childNodes[0]);p._private.renderer=null,p.mutableElements().forEach(function(C){var L=C._private;L.rscratch={},L.rstyle={},L.animation.current=[],L.animation.queue=[]})},onRender:function(p){return this.on("render",p)},offRender:function(p){return this.off("render",p)}};fM.invalidateDimensions=fM.resize;var EC={collection:function(p,x){return mt(p)?this.$(p):yt(p)?p.collection():rt(p)?(x||(x={}),new w1(this,p,x.unique,x.removed)):new w1(this)},nodes:function(p){var x=this.$(function(C){return C.isNode()});return p?x.filter(p):x},edges:function(p){var x=this.$(function(C){return C.isEdge()});return p?x.filter(p):x},$:function(p){var x=this._private.elements;return p?x.filter(p):x.spawnSelf()},mutableElements:function(){return this._private.elements}};EC.elements=EC.filter=EC.$;var W1={},Q8="t",pet="f";W1.apply=function(y){for(var p=this,x=p._private,C=x.cy,L=C.collection(),O=0;O0;if(st||Z&&bt){var pt=void 0;st&&bt||st?pt=q.properties:bt&&(pt=q.mappedProperties);for(var _t=0;_t1&&(qt=1),j.color){var ee=C.valueMin[0],Ut=C.valueMax[0],de=C.valueMin[1],Yt=C.valueMax[1],Ee=C.valueMin[2],Te=C.valueMax[2],ie=C.valueMin[3]==null?1:C.valueMin[3],ze=C.valueMax[3]==null?1:C.valueMax[3],me=[Math.round(ee+(Ut-ee)*qt),Math.round(de+(Yt-de)*qt),Math.round(Ee+(Te-Ee)*qt),Math.round(ie+(ze-ie)*qt)];O={bypass:C.bypass,name:C.name,value:me,strValue:"rgb("+me[0]+", "+me[1]+", "+me[2]+")"}}else if(j.number){var yn=C.valueMin+(C.valueMax-C.valueMin)*qt;O=this.parse(C.name,yn,C.bypass,st)}else return!1;if(!O)return _t(),!1;O.mapping=C,C=O;break}case N.data:{for(var nn=C.field.split("."),qe=Z.data,Tn=0;Tn0&&O>0){for(var j={},H=!1,q=0;q0?y.delayAnimation(N).play().promise().then(Pt):Pt()}).then(function(){return y.animation({style:j,duration:O,easing:y.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){x.removeBypasses(y,L),y.emitAndNotify("style"),C.transitioning=!1})}else C.transitioning&&(this.removeBypasses(y,L),y.emitAndNotify("style"),C.transitioning=!1)},W1.checkTrigger=function(y,p,x,C,L,O){var N=this.properties[p],j=L(N);j!=null&&j(x,C)&&O(N)},W1.checkZOrderTrigger=function(y,p,x,C){var L=this;this.checkTrigger(y,p,x,C,function(O){return O.triggersZOrder},function(){L._private.cy.notify("zorder",y)})},W1.checkBoundsTrigger=function(y,p,x,C){this.checkTrigger(y,p,x,C,function(L){return L.triggersBounds},function(L){y.dirtyCompoundBoundsCache(),y.dirtyBoundingBoxCache(),L.triggersBoundsOfParallelBeziers&&p==="curve-style"&&(x==="bezier"||C==="bezier")&&y.parallelEdges().forEach(function(O){O.isBundledBezier()&&O.dirtyBoundingBoxCache()}),L.triggersBoundsOfConnectedEdges&&p==="display"&&(x==="none"||C==="none")&&y.connectedEdges().forEach(function(O){O.dirtyBoundingBoxCache()})})},W1.checkTriggers=function(y,p,x,C){y.dirtyStyleCache(),this.checkZOrderTrigger(y,p,x,C),this.checkBoundsTrigger(y,p,x,C)};var J8={};J8.applyBypass=function(y,p,x,C){var L=this,O=[],N=!0;if(p==="*"||p==="**"){if(x!==void 0)for(var j=0;jL.length?C=C.substr(L.length):C=""}function H(){O.length>N.length?O=O.substr(N.length):O=""}for(;;){var q=C.match(/^\s*$/);if(q)break;var W=C.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!W){Gc("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+C);break}L=W[0];var Z=W[1];if(Z!=="core"){var st=new ly(Z);if(st.invalid){Gc("Skipping parsing of block: Invalid selector found in string stylesheet: "+Z),j();continue}}var bt=W[2],pt=!1;O=bt;for(var _t=[];;){var St=O.match(/^\s*$/);if(St)break;var Et=O.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!Et){Gc("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+bt),pt=!0;break}N=Et[0];var Nt=Et[1],Pt=Et[2],qt=p.properties[Nt];if(!qt){Gc("Skipping property: Invalid property name in: "+N),H();continue}var re=x.parse(Nt,Pt);if(!re){Gc("Skipping property: Invalid property definition in: "+N),H();continue}_t.push({name:Nt,val:Pt}),H()}if(pt){j();break}x.selector(Z);for(var ee=0;ee<_t.length;ee++){var Ut=_t[ee];x.css(Ut.name,Ut.val)}j()}return x},gM.fromString=function(y){var p=this;return p.resetToDefault(),p.appendFromString(y),p};var m1={};(function(){var y=sn,p=Ne,x=_e,C=xe,L=Mn,O=function(mr){return"^"+mr+"\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"},N=function(mr){var Sr=y+"|\\w+|"+p+"|"+x+"|"+C+"|"+L;return"^"+mr+"\\s*\\(([\\w\\.]+)\\s*\\,\\s*("+y+")\\s*\\,\\s*("+y+")\\s*,\\s*("+Sr+")\\s*\\,\\s*("+Sr+")\\)$"},j=[`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`,"^(none)$","^(.+)$"];m1.types={time:{number:!0,min:0,units:"s|ms",implicitUnits:"ms"},percent:{number:!0,min:0,max:100,units:"%",implicitUnits:"%"},percentages:{number:!0,min:0,max:100,units:"%",implicitUnits:"%",multiple:!0},zeroOneNumber:{number:!0,min:0,max:1,unitless:!0},zeroOneNumbers:{number:!0,min:0,max:1,unitless:!0,multiple:!0},nOneOneNumber:{number:!0,min:-1,max:1,unitless:!0},nonNegativeInt:{number:!0,min:0,integer:!0,unitless:!0},nonNegativeNumber:{number:!0,min:0,unitless:!0},position:{enums:["parent","origin"]},nodeSize:{number:!0,min:0,enums:["label"]},number:{number:!0,unitless:!0},numbers:{number:!0,unitless:!0,multiple:!0},positiveNumber:{number:!0,unitless:!0,min:0,strictMin:!0},size:{number:!0,min:0},bidirectionalSize:{number:!0},bidirectionalSizeMaybePercent:{number:!0,allowPercent:!0},bidirectionalSizes:{number:!0,multiple:!0},sizeMaybePercent:{number:!0,min:0,allowPercent:!0},axisDirection:{enums:["horizontal","leftward","rightward","vertical","upward","downward","auto"]},paddingRelativeTo:{enums:["width","height","average","min","max"]},bgWH:{number:!0,min:0,allowPercent:!0,enums:["auto"],multiple:!0},bgPos:{number:!0,allowPercent:!0,multiple:!0},bgRelativeTo:{enums:["inner","include-padding"],multiple:!0},bgRepeat:{enums:["repeat","repeat-x","repeat-y","no-repeat"],multiple:!0},bgFit:{enums:["none","contain","cover"],multiple:!0},bgCrossOrigin:{enums:["anonymous","use-credentials","null"],multiple:!0},bgClip:{enums:["none","node"],multiple:!0},bgContainment:{enums:["inside","over"],multiple:!0},color:{color:!0},colors:{color:!0,multiple:!0},fill:{enums:["solid","linear-gradient","radial-gradient"]},bool:{enums:["yes","no"]},bools:{enums:["yes","no"],multiple:!0},lineStyle:{enums:["solid","dotted","dashed"]},lineCap:{enums:["butt","round","square"]},borderStyle:{enums:["solid","dotted","dashed","double"]},curveStyle:{enums:["bezier","unbundled-bezier","haystack","segments","straight","straight-triangle","taxi"]},fontFamily:{regex:'^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'},fontStyle:{enums:["italic","normal","oblique"]},fontWeight:{enums:["normal","bold","bolder","lighter","100","200","300","400","500","600","800","900",100,200,300,400,500,600,700,800,900]},textDecoration:{enums:["none","underline","overline","line-through"]},textTransform:{enums:["none","uppercase","lowercase"]},textWrap:{enums:["none","wrap","ellipsis"]},textOverflowWrap:{enums:["whitespace","anywhere"]},textBackgroundShape:{enums:["rectangle","roundrectangle","round-rectangle"]},nodeShape:{enums:["rectangle","roundrectangle","round-rectangle","cutrectangle","cut-rectangle","bottomroundrectangle","bottom-round-rectangle","barrel","ellipse","triangle","round-triangle","square","pentagon","round-pentagon","hexagon","round-hexagon","concavehexagon","concave-hexagon","heptagon","round-heptagon","octagon","round-octagon","tag","round-tag","star","diamond","round-diamond","vee","rhomboid","right-rhomboid","polygon"]},overlayShape:{enums:["roundrectangle","round-rectangle","ellipse"]},compoundIncludeLabels:{enums:["include","exclude"]},arrowShape:{enums:["tee","triangle","triangle-tee","circle-triangle","triangle-cross","triangle-backcurve","vee","square","circle","diamond","chevron","none"]},arrowFill:{enums:["filled","hollow"]},arrowWidth:{number:!0,units:"%|px|em",implicitUnits:"px",enums:["match-line"]},display:{enums:["element","none"]},visibility:{enums:["hidden","visible"]},zCompoundDepth:{enums:["bottom","orphan","auto","top"]},zIndexCompare:{enums:["auto","manual"]},valign:{enums:["top","center","bottom"]},halign:{enums:["left","center","right"]},justification:{enums:["left","center","right","auto"]},text:{string:!0},data:{mapping:!0,regex:O("data")},layoutData:{mapping:!0,regex:O("layoutData")},scratch:{mapping:!0,regex:O("scratch")},mapData:{mapping:!0,regex:N("mapData")},mapLayoutData:{mapping:!0,regex:N("mapLayoutData")},mapScratch:{mapping:!0,regex:N("mapScratch")},fn:{mapping:!0,fn:!0},url:{regexes:j,singleRegexMatchValue:!0},urls:{regexes:j,singleRegexMatchValue:!0,multiple:!0},propList:{propList:!0},angle:{number:!0,units:"deg|rad",implicitUnits:"rad"},textRotation:{number:!0,units:"deg|rad",implicitUnits:"rad",enums:["none","autorotate"]},polygonPointList:{number:!0,multiple:!0,evenMultiple:!0,min:-1,max:1,unitless:!0},edgeDistances:{enums:["intersection","node-position","endpoints"]},edgeEndpoint:{number:!0,multiple:!0,units:"%|px|em|deg|rad",implicitUnits:"px",enums:["inside-to-node","outside-to-node","outside-to-node-or-label","outside-to-line","outside-to-line-or-label"],singleEnum:!0,validate:function(mr,Sr){switch(mr.length){case 2:return Sr[0]!=="deg"&&Sr[0]!=="rad"&&Sr[1]!=="deg"&&Sr[1]!=="rad";case 1:return mt(mr[0])||Sr[0]==="deg"||Sr[0]==="rad";default:return!1}}},easing:{regexes:["^(spring)\\s*\\(\\s*("+y+")\\s*,\\s*("+y+")\\s*\\)$","^(cubic-bezier)\\s*\\(\\s*("+y+")\\s*,\\s*("+y+")\\s*,\\s*("+y+")\\s*,\\s*("+y+")\\s*\\)$"],enums:["linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ"]},gradientDirection:{enums:["to-bottom","to-top","to-left","to-right","to-bottom-right","to-bottom-left","to-top-right","to-top-left","to-right-bottom","to-left-bottom","to-right-top","to-left-top"]},boundsExpansion:{number:!0,multiple:!0,min:0,validate:function(mr){var Sr=mr.length;return Sr===1||Sr===2||Sr===4}}};var H={zeroNonZero:function(mr,Sr){return(mr==null||Sr==null)&&mr!==Sr||mr==0&&Sr!=0?!0:mr!=0&&Sr==0},any:function(mr,Sr){return mr!=Sr},emptyNonEmpty:function(mr,Sr){var gi=Ft(mr),ss=Ft(Sr);return gi&&!ss||!gi&&ss}},q=m1.types,W=[{name:"label",type:q.text,triggersBounds:H.any,triggersZOrder:H.emptyNonEmpty},{name:"text-rotation",type:q.textRotation,triggersBounds:H.any},{name:"text-margin-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"text-margin-y",type:q.bidirectionalSize,triggersBounds:H.any}],Z=[{name:"source-label",type:q.text,triggersBounds:H.any},{name:"source-text-rotation",type:q.textRotation,triggersBounds:H.any},{name:"source-text-margin-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"source-text-margin-y",type:q.bidirectionalSize,triggersBounds:H.any},{name:"source-text-offset",type:q.size,triggersBounds:H.any}],st=[{name:"target-label",type:q.text,triggersBounds:H.any},{name:"target-text-rotation",type:q.textRotation,triggersBounds:H.any},{name:"target-text-margin-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"target-text-margin-y",type:q.bidirectionalSize,triggersBounds:H.any},{name:"target-text-offset",type:q.size,triggersBounds:H.any}],bt=[{name:"font-family",type:q.fontFamily,triggersBounds:H.any},{name:"font-style",type:q.fontStyle,triggersBounds:H.any},{name:"font-weight",type:q.fontWeight,triggersBounds:H.any},{name:"font-size",type:q.size,triggersBounds:H.any},{name:"text-transform",type:q.textTransform,triggersBounds:H.any},{name:"text-wrap",type:q.textWrap,triggersBounds:H.any},{name:"text-overflow-wrap",type:q.textOverflowWrap,triggersBounds:H.any},{name:"text-max-width",type:q.size,triggersBounds:H.any},{name:"text-outline-width",type:q.size,triggersBounds:H.any},{name:"line-height",type:q.positiveNumber,triggersBounds:H.any}],pt=[{name:"text-valign",type:q.valign,triggersBounds:H.any},{name:"text-halign",type:q.halign,triggersBounds:H.any},{name:"color",type:q.color},{name:"text-outline-color",type:q.color},{name:"text-outline-opacity",type:q.zeroOneNumber},{name:"text-background-color",type:q.color},{name:"text-background-opacity",type:q.zeroOneNumber},{name:"text-background-padding",type:q.size,triggersBounds:H.any},{name:"text-border-opacity",type:q.zeroOneNumber},{name:"text-border-color",type:q.color},{name:"text-border-width",type:q.size,triggersBounds:H.any},{name:"text-border-style",type:q.borderStyle,triggersBounds:H.any},{name:"text-background-shape",type:q.textBackgroundShape,triggersBounds:H.any},{name:"text-justification",type:q.justification}],_t=[{name:"events",type:q.bool,triggersZOrder:H.any},{name:"text-events",type:q.bool,triggersZOrder:H.any}],St=[{name:"display",type:q.display,triggersZOrder:H.any,triggersBounds:H.any,triggersBoundsOfConnectedEdges:!0},{name:"visibility",type:q.visibility,triggersZOrder:H.any},{name:"opacity",type:q.zeroOneNumber,triggersZOrder:H.zeroNonZero},{name:"text-opacity",type:q.zeroOneNumber},{name:"min-zoomed-font-size",type:q.size},{name:"z-compound-depth",type:q.zCompoundDepth,triggersZOrder:H.any},{name:"z-index-compare",type:q.zIndexCompare,triggersZOrder:H.any},{name:"z-index",type:q.number,triggersZOrder:H.any}],Et=[{name:"overlay-padding",type:q.size,triggersBounds:H.any},{name:"overlay-color",type:q.color},{name:"overlay-opacity",type:q.zeroOneNumber,triggersBounds:H.zeroNonZero},{name:"overlay-shape",type:q.overlayShape,triggersBounds:H.any}],Nt=[{name:"underlay-padding",type:q.size,triggersBounds:H.any},{name:"underlay-color",type:q.color},{name:"underlay-opacity",type:q.zeroOneNumber,triggersBounds:H.zeroNonZero},{name:"underlay-shape",type:q.overlayShape,triggersBounds:H.any}],Pt=[{name:"transition-property",type:q.propList},{name:"transition-duration",type:q.time},{name:"transition-delay",type:q.time},{name:"transition-timing-function",type:q.easing}],qt=function(mr,Sr){return Sr.value==="label"?-mr.poolIndex():Sr.pfValue},re=[{name:"height",type:q.nodeSize,triggersBounds:H.any,hashOverride:qt},{name:"width",type:q.nodeSize,triggersBounds:H.any,hashOverride:qt},{name:"shape",type:q.nodeShape,triggersBounds:H.any},{name:"shape-polygon-points",type:q.polygonPointList,triggersBounds:H.any},{name:"background-color",type:q.color},{name:"background-fill",type:q.fill},{name:"background-opacity",type:q.zeroOneNumber},{name:"background-blacken",type:q.nOneOneNumber},{name:"background-gradient-stop-colors",type:q.colors},{name:"background-gradient-stop-positions",type:q.percentages},{name:"background-gradient-direction",type:q.gradientDirection},{name:"padding",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"padding-relative-to",type:q.paddingRelativeTo,triggersBounds:H.any},{name:"bounds-expansion",type:q.boundsExpansion,triggersBounds:H.any}],ee=[{name:"border-color",type:q.color},{name:"border-opacity",type:q.zeroOneNumber},{name:"border-width",type:q.size,triggersBounds:H.any},{name:"border-style",type:q.borderStyle}],Ut=[{name:"outline-color",type:q.color},{name:"outline-opacity",type:q.zeroOneNumber},{name:"outline-width",type:q.size,triggersBounds:H.any},{name:"outline-style",type:q.borderStyle},{name:"outline-offset",type:q.size,triggersBounds:H.any}],de=[{name:"background-image",type:q.urls},{name:"background-image-crossorigin",type:q.bgCrossOrigin},{name:"background-image-opacity",type:q.zeroOneNumbers},{name:"background-image-containment",type:q.bgContainment},{name:"background-image-smoothing",type:q.bools},{name:"background-position-x",type:q.bgPos},{name:"background-position-y",type:q.bgPos},{name:"background-width-relative-to",type:q.bgRelativeTo},{name:"background-height-relative-to",type:q.bgRelativeTo},{name:"background-repeat",type:q.bgRepeat},{name:"background-fit",type:q.bgFit},{name:"background-clip",type:q.bgClip},{name:"background-width",type:q.bgWH},{name:"background-height",type:q.bgWH},{name:"background-offset-x",type:q.bgPos},{name:"background-offset-y",type:q.bgPos}],Yt=[{name:"position",type:q.position,triggersBounds:H.any},{name:"compound-sizing-wrt-labels",type:q.compoundIncludeLabels,triggersBounds:H.any},{name:"min-width",type:q.size,triggersBounds:H.any},{name:"min-width-bias-left",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"min-width-bias-right",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"min-height",type:q.size,triggersBounds:H.any},{name:"min-height-bias-top",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"min-height-bias-bottom",type:q.sizeMaybePercent,triggersBounds:H.any}],Ee=[{name:"line-style",type:q.lineStyle},{name:"line-color",type:q.color},{name:"line-fill",type:q.fill},{name:"line-cap",type:q.lineCap},{name:"line-opacity",type:q.zeroOneNumber},{name:"line-dash-pattern",type:q.numbers},{name:"line-dash-offset",type:q.number},{name:"line-gradient-stop-colors",type:q.colors},{name:"line-gradient-stop-positions",type:q.percentages},{name:"curve-style",type:q.curveStyle,triggersBounds:H.any,triggersBoundsOfParallelBeziers:!0},{name:"haystack-radius",type:q.zeroOneNumber,triggersBounds:H.any},{name:"source-endpoint",type:q.edgeEndpoint,triggersBounds:H.any},{name:"target-endpoint",type:q.edgeEndpoint,triggersBounds:H.any},{name:"control-point-step-size",type:q.size,triggersBounds:H.any},{name:"control-point-distances",type:q.bidirectionalSizes,triggersBounds:H.any},{name:"control-point-weights",type:q.numbers,triggersBounds:H.any},{name:"segment-distances",type:q.bidirectionalSizes,triggersBounds:H.any},{name:"segment-weights",type:q.numbers,triggersBounds:H.any},{name:"taxi-turn",type:q.bidirectionalSizeMaybePercent,triggersBounds:H.any},{name:"taxi-turn-min-distance",type:q.size,triggersBounds:H.any},{name:"taxi-direction",type:q.axisDirection,triggersBounds:H.any},{name:"edge-distances",type:q.edgeDistances,triggersBounds:H.any},{name:"arrow-scale",type:q.positiveNumber,triggersBounds:H.any},{name:"loop-direction",type:q.angle,triggersBounds:H.any},{name:"loop-sweep",type:q.angle,triggersBounds:H.any},{name:"source-distance-from-node",type:q.size,triggersBounds:H.any},{name:"target-distance-from-node",type:q.size,triggersBounds:H.any}],Te=[{name:"ghost",type:q.bool,triggersBounds:H.any},{name:"ghost-offset-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"ghost-offset-y",type:q.bidirectionalSize,triggersBounds:H.any},{name:"ghost-opacity",type:q.zeroOneNumber}],ie=[{name:"selection-box-color",type:q.color},{name:"selection-box-opacity",type:q.zeroOneNumber},{name:"selection-box-border-color",type:q.color},{name:"selection-box-border-width",type:q.size},{name:"active-bg-color",type:q.color},{name:"active-bg-opacity",type:q.zeroOneNumber},{name:"active-bg-size",type:q.size},{name:"outside-texture-bg-color",type:q.color},{name:"outside-texture-bg-opacity",type:q.zeroOneNumber}],ze=[];m1.pieBackgroundN=16,ze.push({name:"pie-size",type:q.sizeMaybePercent});for(var me=1;me<=m1.pieBackgroundN;me++)ze.push({name:"pie-"+me+"-background-color",type:q.color}),ze.push({name:"pie-"+me+"-background-size",type:q.percent}),ze.push({name:"pie-"+me+"-background-opacity",type:q.zeroOneNumber});var yn=[],nn=m1.arrowPrefixes=["source","mid-source","target","mid-target"];[{name:"arrow-shape",type:q.arrowShape,triggersBounds:H.any},{name:"arrow-color",type:q.color},{name:"arrow-fill",type:q.arrowFill},{name:"arrow-width",type:q.arrowWidth}].forEach(function(cr){nn.forEach(function(mr){var Sr=mr+"-"+cr.name,gi=cr.type,ss=cr.triggersBounds;yn.push({name:Sr,type:gi,triggersBounds:ss})})},{});var qe=m1.properties=[].concat(_t,Pt,St,Et,Nt,Te,pt,bt,W,Z,st,re,ee,Ut,de,ze,Yt,Ee,yn,ie),Tn=m1.propertyGroups={behavior:_t,transition:Pt,visibility:St,overlay:Et,underlay:Nt,ghost:Te,commonLabel:pt,labelDimensions:bt,mainLabel:W,sourceLabel:Z,targetLabel:st,nodeBody:re,nodeBorder:ee,nodeOutline:Ut,backgroundImage:de,pie:ze,compound:Yt,edgeLine:Ee,edgeArrow:yn,core:ie},Xn=m1.propertyGroupNames={},lr=m1.propertyGroupKeys=Object.keys(Tn);lr.forEach(function(cr){Xn[cr]=Tn[cr].map(function(mr){return mr.name}),Tn[cr].forEach(function(mr){return mr.groupKey=cr})});var Sn=m1.aliases=[{name:"content",pointsTo:"label"},{name:"control-point-distance",pointsTo:"control-point-distances"},{name:"control-point-weight",pointsTo:"control-point-weights"},{name:"edge-text-rotation",pointsTo:"text-rotation"},{name:"padding-left",pointsTo:"padding"},{name:"padding-right",pointsTo:"padding"},{name:"padding-top",pointsTo:"padding"},{name:"padding-bottom",pointsTo:"padding"}];m1.propertyNames=qe.map(function(cr){return cr.name});for(var or=0;or=7&&p[0]==="d"&&(W=new RegExp(j.data.regex).exec(p))){if(x)return!1;var st=j.data;return{name:y,value:W,strValue:""+p,mapped:st,field:W[1],bypass:x}}else if(p.length>=10&&p[0]==="m"&&(Z=new RegExp(j.mapData.regex).exec(p))){if(x||q.multiple)return!1;var bt=j.mapData;if(!(q.color||q.number))return!1;var pt=this.parse(y,Z[4]);if(!pt||pt.mapped)return!1;var _t=this.parse(y,Z[5]);if(!_t||_t.mapped)return!1;if(pt.pfValue===_t.pfValue||pt.strValue===_t.strValue)return Gc("`"+y+": "+p+"` is not a valid mapper because the output range is zero; converting to `"+y+": "+pt.strValue+"`"),this.parse(y,pt.strValue);if(q.color){var St=pt.value,Et=_t.value,Nt=St[0]===Et[0]&&St[1]===Et[1]&&St[2]===Et[2]&&(St[3]===Et[3]||(St[3]==null||St[3]===1)&&(Et[3]==null||Et[3]===1));if(Nt)return!1}return{name:y,value:Z,strValue:""+p,mapped:bt,field:Z[1],fieldMin:parseFloat(Z[2]),fieldMax:parseFloat(Z[3]),valueMin:pt.value,valueMax:_t.value,bypass:x}}}if(q.multiple&&C!=="multiple"){var Pt;if(H?Pt=p.split(/\s+/):rt(p)?Pt=p:Pt=[p],q.evenMultiple&&Pt.length%2!==0)return null;for(var qt=[],re=[],ee=[],Ut="",de=!1,Yt=0;Yt0?" ":"")+Ee.strValue}return q.validate&&!q.validate(qt,re)?null:q.singleEnum&&de?qt.length===1&&mt(qt[0])?{name:y,value:qt[0],strValue:qt[0],bypass:x}:null:{name:y,value:qt,pfValue:ee,strValue:Ut,bypass:x,units:re}}var Te=function(){for(var mr=0;mrq.max||q.strictMax&&p===q.max))return null;var nn={name:y,value:p,strValue:""+p+(ie||""),units:ie,bypass:x};return q.unitless||ie!=="px"&&ie!=="em"?nn.pfValue=p:nn.pfValue=ie==="px"||!ie?p:this.getEmSizeInPixels()*p,(ie==="ms"||ie==="s")&&(nn.pfValue=ie==="ms"?p:1e3*p),(ie==="deg"||ie==="rad")&&(nn.pfValue=ie==="rad"?p:lQ(p)),ie==="%"&&(nn.pfValue=p/100),nn}else if(q.propList){var qe=[],Tn=""+p;if(Tn!=="none"){for(var Xn=Tn.split(/\s*,\s*|\s+/),lr=0;lr0&&j>0&&!isNaN(C.w)&&!isNaN(C.h)&&C.w>0&&C.h>0){H=Math.min((N-2*x)/C.w,(j-2*x)/C.h),H=H>this._private.maxZoom?this._private.maxZoom:H,H=H=C.minZoom&&(C.maxZoom=x),this},minZoom:function(p){return p===void 0?this._private.minZoom:this.zoomRange({min:p})},maxZoom:function(p){return p===void 0?this._private.maxZoom:this.zoomRange({max:p})},getZoomedViewport:function(p){var x=this._private,C=x.pan,L=x.zoom,O,N,j=!1;if(x.zoomingEnabled||(j=!0),Q(p)?N=p:it(p)&&(N=p.level,p.position!=null?O=W9(p.position,L,C):p.renderedPosition!=null&&(O=p.renderedPosition),O!=null&&!x.panningEnabled&&(j=!0)),N=N>x.maxZoom?x.maxZoom:N,N=Nx.maxZoom||!x.zoomingEnabled?N=!0:(x.zoom=H,O.push("zoom"))}if(L&&(!N||!p.cancelOnFailedZoom)&&x.panningEnabled){var q=p.pan;Q(q.x)&&(x.pan.x=q.x,j=!1),Q(q.y)&&(x.pan.y=q.y,j=!1),j||O.push("pan")}return O.length>0&&(O.push("viewport"),this.emit(O.join(" ")),this.notify("viewport")),this},center:function(p){var x=this.getCenterPan(p);return x&&(this._private.pan=x,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(p,x){if(this._private.panningEnabled){if(mt(p)){var C=p;p=this.mutableElements().filter(C)}else yt(p)||(p=this.mutableElements());if(p.length!==0){var L=p.boundingBox(),O=this.width(),N=this.height();x=x===void 0?this._private.zoom:x;var j={x:(O-x*(L.x1+L.x2))/2,y:(N-x*(L.y1+L.y2))/2};return j}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var p=this._private,x=p.container,C=this;return p.sizeCache=p.sizeCache||(x?function(){var L=C.window().getComputedStyle(x),O=function(j){return parseFloat(L.getPropertyValue(j))};return{width:x.clientWidth-O("padding-left")-O("padding-right"),height:x.clientHeight-O("padding-top")-O("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var p=this._private.pan,x=this._private.zoom,C=this.renderedExtent(),L={x1:(C.x1-p.x)/x,x2:(C.x2-p.x)/x,y1:(C.y1-p.y)/x,y2:(C.y2-p.y)/x};return L.w=L.x2-L.x1,L.h=L.y2-L.y1,L},renderedExtent:function(){var p=this.width(),x=this.height();return{x1:0,y1:0,x2:p,y2:x,w:p,h:x}},multiClickDebounceTime:function(p){if(p)this._private.multiClickDebounceTime=p;else return this._private.multiClickDebounceTime;return this}};T4.centre=T4.center,T4.autolockNodes=T4.autolock,T4.autoungrabifyNodes=T4.autoungrabify;var Z8={data:Kc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Kc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Kc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Kc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Z8.attr=Z8.data,Z8.removeAttr=Z8.removeData;var tE=function(p){var x=this;p=we({},p);var C=p.container;C&&!K(C)&&K(C[0])&&(C=C[0]);var L=C?C._cyreg:null;L=L||{},L&&L.cy&&(L.cy.destroy(),L={});var O=L.readies=L.readies||[];C&&(C._cyreg=L),L.cy=x;var N=B!==void 0&&C!==void 0&&!p.headless,j=p;j.layout=we({name:N?"grid":"null"},j.layout),j.renderer=we({name:N?"canvas":"null"},j.renderer);var H=function(pt,_t,St){return _t!==void 0?_t:St!==void 0?St:pt},q=this._private={container:C,ready:!1,options:j,elements:new w1(this),listeners:[],aniEles:new w1(this),data:j.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:H(!0,j.zoomingEnabled),userZoomingEnabled:H(!0,j.userZoomingEnabled),panningEnabled:H(!0,j.panningEnabled),userPanningEnabled:H(!0,j.userPanningEnabled),boxSelectionEnabled:H(!0,j.boxSelectionEnabled),autolock:H(!1,j.autolock,j.autolockNodes),autoungrabify:H(!1,j.autoungrabify,j.autoungrabifyNodes),autounselectify:H(!1,j.autounselectify),styleEnabled:j.styleEnabled===void 0?N:j.styleEnabled,zoom:Q(j.zoom)?j.zoom:1,pan:{x:it(j.pan)&&Q(j.pan.x)?j.pan.x:0,y:it(j.pan)&&Q(j.pan.y)?j.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:H(250,j.multiClickDebounceTime)};this.createEmitter(),this.selectionType(j.selectionType),this.zoomRange({min:j.minZoom,max:j.maxZoom});var W=function(pt,_t){var St=pt.some(Gt);if(St)return e6.all(pt).then(_t);_t(pt)};q.styleEnabled&&x.setStyle([]);var Z=we({},j,j.renderer);x.initRenderer(Z);var st=function(pt,_t,St){x.notifications(!1);var Et=x.mutableElements();Et.length>0&&Et.remove(),pt!=null&&(it(pt)||rt(pt))&&x.add(pt),x.one("layoutready",function(Pt){x.notifications(!0),x.emit(Pt),x.one("load",_t),x.emitAndNotify("load")}).one("layoutstop",function(){x.one("done",St),x.emit("done")});var Nt=we({},x._private.options.layout);Nt.eles=x.elements(),x.layout(Nt).run()};W([j.style,j.elements],function(bt){var pt=bt[0],_t=bt[1];q.styleEnabled&&x.style().append(pt),st(_t,function(){x.startAnimationLoop(),q.ready=!0,ct(j.ready)&&x.on("ready",j.ready);for(var St=0;St0,H=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()}),q;if(yt(p.roots))q=p.roots;else if(rt(p.roots)){for(var W=[],Z=0;Z0;){var yn=me(),nn=Ee(yn,ie);if(nn)yn.outgoers().filter(function(vi){return vi.isNode()&&C.has(vi)}).forEach(ze);else if(nn===null){Gc("Detected double maximal shift for node `"+yn.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}Yt();var qe=0;if(p.avoidOverlap)for(var Tn=0;Tn0&&Et[0].length<=3?pa/2:0),G=2*Math.PI/Et[ks].length*as;return ks===0&&Et[0].length===1&&(Kn=1),{x:gi.x+Kn*Math.cos(G),y:gi.y+Kn*Math.sin(G)}}else{var mo={x:gi.x+(as+1-(Es+1)/2)*eo,y:(ks+1)*Ta};return mo}};return C.nodes().layoutPositions(this,p,na),this};var yet={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function lj(y){this.options=we({},yet,y)}lj.prototype.run=function(){var y=this.options,p=y,x=y.cy,C=p.eles,L=p.counterclockwise!==void 0?!p.counterclockwise:p.clockwise,O=C.nodes().not(":parent");p.sort&&(O=O.sort(p.sort));for(var N=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()}),j={x:N.x1+N.w/2,y:N.y1+N.h/2},H=p.sweep===void 0?2*Math.PI-2*Math.PI/O.length:p.sweep,q=H/Math.max(1,O.length-1),W,Z=0,st=0;st1&&p.avoidOverlap){Z*=1.75;var Et=Math.cos(q)-Math.cos(0),Nt=Math.sin(q)-Math.sin(0),Pt=Math.sqrt(Z*Z/(Et*Et+Nt*Nt));W=Math.max(Pt,W)}var qt=function(ee,Ut){var de=p.startAngle+Ut*q*(L?1:-1),Yt=W*Math.cos(de),Ee=W*Math.sin(de),Te={x:j.x+Yt,y:j.y+Ee};return Te};return C.nodes().layoutPositions(this,p,qt),this};var xet={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(p){return p.degree()},levelWidth:function(p){return p.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function hj(y){this.options=we({},xet,y)}hj.prototype.run=function(){for(var y=this.options,p=y,x=p.counterclockwise!==void 0?!p.counterclockwise:p.clockwise,C=y.cy,L=p.eles,O=L.nodes().not(":parent"),N=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()}),j={x:N.x1+N.w/2,y:N.y1+N.h/2},H=[],q=0,W=0;W0){var re=Math.abs(Nt[0].value-qt.value);re>=St&&(Nt=[],Et.push(Nt))}Nt.push(qt)}var ee=q+p.minNodeSpacing;if(!p.avoidOverlap){var Ut=Et.length>0&&Et[0].length>1,de=Math.min(N.w,N.h)/2-ee,Yt=de/(Et.length+Ut?1:0);ee=Math.min(ee,Yt)}for(var Ee=0,Te=0;Te1&&p.avoidOverlap){var yn=Math.cos(me)-Math.cos(0),nn=Math.sin(me)-Math.sin(0),qe=Math.sqrt(ee*ee/(yn*yn+nn*nn));Ee=Math.max(qe,Ee)}ie.r=Ee,Ee+=ee}if(p.equidistant){for(var Tn=0,Xn=0,lr=0;lr=y.numIter||(Det(C,y),C.temperature=C.temperature*y.coolingFactor,C.temperature=y.animationThreshold&&O(),g1(Z)}};W()}else{for(;q;)q=N(H),H++;gj(C,y),j()}return this},_C.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},_C.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Eet=function(p,x,C){for(var L=C.eles.edges(),O=C.eles.nodes(),N=v0(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:p.width(),h:p.height()}),j={isCompound:p.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:O.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:L.size(),temperature:C.initialTemp,clientWidth:N.w,clientHeight:N.h,boundingBox:N},H=C.eles.components(),q={},W=0;W0){j.graphSet.push(de);for(var W=0;WL.count?0:L.graph},Cet=function y(p,x,C,L){var O=L.graphSet[C];if(-10)var Z=L.nodeOverlap*W,st=Math.sqrt(j*j+H*H),bt=Z*j/st,pt=Z*H/st;else var _t=AC(p,j,H),St=AC(x,-1*j,-1*H),Et=St.x-_t.x,Nt=St.y-_t.y,Pt=Et*Et+Nt*Nt,st=Math.sqrt(Pt),Z=(p.nodeRepulsion+x.nodeRepulsion)/Pt,bt=Z*Et/st,pt=Z*Nt/st;p.isLocked||(p.offsetX-=bt,p.offsetY-=pt),x.isLocked||(x.offsetX+=bt,x.offsetY+=pt)}},Oet=function(p,x,C,L){if(C>0)var O=p.maxX-x.minX;else var O=x.maxX-p.minX;if(L>0)var N=p.maxY-x.minY;else var N=x.maxY-p.minY;return O>=0&&N>=0?Math.sqrt(O*O+N*N):0},AC=function(p,x,C){var L=p.positionX,O=p.positionY,N=p.height||1,j=p.width||1,H=C/x,q=N/j,W={};return x===0&&0C?(W.x=L,W.y=O+N/2,W):0x&&-1*q<=H&&H<=q?(W.x=L-j/2,W.y=O-j*C/2/x,W):0=q)?(W.x=L+N*x/2/C,W.y=O+N/2,W):(0>C&&(H<=-1*q||H>=q)&&(W.x=L-N*x/2/C,W.y=O-N/2),W)},Net=function(p,x){for(var C=0;CC){var St=x.gravity*bt/_t,Et=x.gravity*pt/_t;st.offsetX+=St,st.offsetY+=Et}}}}},Fet=function(p,x){var C=[],L=0,O=-1;for(C.push.apply(C,p.graphSet[0]),O+=p.graphSet[0].length;L<=O;){var N=C[L++],j=p.idToIndex[N],H=p.layoutNodes[j],q=H.children;if(0C)var O={x:C*p/L,y:C*x/L};else var O={x:p,y:x};return O},jet=function y(p,x){var C=p.parentId;if(C!=null){var L=x.layoutNodes[x.idToIndex[C]],O=!1;if((L.maxX==null||p.maxX+L.padRight>L.maxX)&&(L.maxX=p.maxX+L.padRight,O=!0),(L.minX==null||p.minX-L.padLeftL.maxY)&&(L.maxY=p.maxY+L.padBottom,O=!0),(L.minY==null||p.minY-L.padTopEt&&(pt+=St+x.componentSpacing,bt=0,_t=0,St=0)}}},$et={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(p){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function pj(y){this.options=we({},$et,y)}pj.prototype.run=function(){var y=this.options,p=y,x=y.cy,C=p.eles,L=C.nodes().not(":parent");p.sort&&(L=L.sort(p.sort));var O=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()});if(O.h===0||O.w===0)C.nodes().layoutPositions(this,p,function(pr){return{x:O.x1,y:O.y1}});else{var N=L.size(),j=Math.sqrt(N*O.h/O.w),H=Math.round(j),q=Math.round(O.w/O.h*j),W=function(kr){if(kr==null)return Math.min(H,q);var wr=Math.min(H,q);wr==H?H=kr:q=kr},Z=function(kr){if(kr==null)return Math.max(H,q);var wr=Math.max(H,q);wr==H?H=kr:q=kr},st=p.rows,bt=p.cols!=null?p.cols:p.columns;if(st!=null&&bt!=null)H=st,q=bt;else if(st!=null&&bt==null)H=st,q=Math.ceil(N/H);else if(st==null&&bt!=null)q=bt,H=Math.ceil(N/q);else if(q*H>N){var pt=W(),_t=Z();(pt-1)*_t>=N?W(pt-1):(_t-1)*pt>=N&&Z(_t-1)}else for(;q*H=N?Z(Et+1):W(St+1)}var Nt=O.w/q,Pt=O.h/H;if(p.condense&&(Nt=0,Pt=0),p.avoidOverlap)for(var qt=0;qt=q&&(yn=0,me++)},qe={},Tn=0;Tn(yn=EQ(y,p,nn[qe],nn[qe+1],nn[qe+2],nn[qe+3])))return St(Ut,yn),!0}else if(Yt.edgeType==="bezier"||Yt.edgeType==="multibezier"||Yt.edgeType==="self"||Yt.edgeType==="compound"){for(var nn=Yt.allpts,qe=0;qe+5(yn=kQ(y,p,nn[qe],nn[qe+1],nn[qe+2],nn[qe+3],nn[qe+4],nn[qe+5])))return St(Ut,yn),!0}for(var Tn=Tn||de.source,Xn=Xn||de.target,lr=L.getArrowWidth(Ee,Te),Sn=[{name:"source",x:Yt.arrowStartX,y:Yt.arrowStartY,angle:Yt.srcArrowAngle},{name:"target",x:Yt.arrowEndX,y:Yt.arrowEndY,angle:Yt.tgtArrowAngle},{name:"mid-source",x:Yt.midX,y:Yt.midY,angle:Yt.midsrcArrowAngle},{name:"mid-target",x:Yt.midX,y:Yt.midY,angle:Yt.midtgtArrowAngle}],qe=0;qe0&&(Et(Tn),Et(Xn))}function Pt(Ut,de,Yt){return fb(Ut,de,Yt)}function qt(Ut,de){var Yt=Ut._private,Ee=st,Te;de?Te=de+"-":Te="",Ut.boundingBox();var ie=Yt.labelBounds[de||"main"],ze=Ut.pstyle(Te+"label").value,me=Ut.pstyle("text-events").strValue==="yes";if(!(!me||!ze)){var yn=Pt(Yt.rscratch,"labelX",de),nn=Pt(Yt.rscratch,"labelY",de),qe=Pt(Yt.rscratch,"labelAngle",de),Tn=Ut.pstyle(Te+"text-margin-x").pfValue,Xn=Ut.pstyle(Te+"text-margin-y").pfValue,lr=ie.x1-Ee-Tn,Sn=ie.x2+Ee-Tn,or=ie.y1-Ee-Xn,pr=ie.y2+Ee-Xn;if(qe){var kr=Math.cos(qe),wr=Math.sin(qe),Cr=function(na,vi){return na=na-yn,vi=vi-nn,{x:na*kr-vi*wr+yn,y:na*wr+vi*kr+nn}},$n=Cr(lr,or),cr=Cr(lr,pr),mr=Cr(Sn,or),Sr=Cr(Sn,pr),gi=[$n.x+Tn,$n.y+Xn,mr.x+Tn,mr.y+Xn,Sr.x+Tn,Sr.y+Xn,cr.x+Tn,cr.y+Xn];if(y0(y,p,gi))return St(Ut),!0}else if(Qx(ie,y,p))return St(Ut),!0}}for(var re=N.length-1;re>=0;re--){var ee=N[re];ee.isNode()?Et(ee)||qt(ee):Nt(ee)||qt(ee)||qt(ee,"source")||qt(ee,"target")}return j},C4.getAllInBox=function(y,p,x,C){var L=this.getCachedZSortedEles().interactive,O=[],N=Math.min(y,x),j=Math.max(y,x),H=Math.min(p,C),q=Math.max(p,C);y=N,x=j,p=H,C=q;for(var W=v0({x1:y,y1:p,x2:x,y2:C}),Z=0;Z0?Math.max(hr-us,0):Math.min(hr+us,0)},ze=ie(Ee,de),me=ie(Te,Yt),yn=!1;Nt===q?Et=Math.abs(ze)>Math.abs(me)?L:C:Nt===H||Nt===j?(Et=C,yn=!0):(Nt===O||Nt===N)&&(Et=L,yn=!0);var nn=Et===C,qe=nn?me:ze,Tn=nn?Te:Ee,Xn=FB(Tn),lr=!1;!(yn&&(qt||ee))&&(Nt===j&&Tn<0||Nt===H&&Tn>0||Nt===O&&Tn>0||Nt===N&&Tn<0)&&(Xn*=-1,qe=Xn*Math.abs(qe),lr=!0);var Sn;if(qt){var or=re<0?1+re:re;Sn=or*qe}else{var pr=re<0?qe:0;Sn=pr+re*Xn}var kr=function(hr){return Math.abs(hr)=Math.abs(qe)},wr=kr(Sn),Cr=kr(Math.abs(qe)-Math.abs(Sn)),$n=wr||Cr;if($n&&!lr)if(nn){var cr=Math.abs(Tn)<=st/2,mr=Math.abs(Ee)<=bt/2;if(cr){var Sr=(W.x1+W.x2)/2,gi=W.y1,ss=W.y2;x.segpts=[Sr,gi,Sr,ss]}else if(mr){var na=(W.y1+W.y2)/2,vi=W.x1,si=W.x2;x.segpts=[vi,na,si,na]}else x.segpts=[W.x1,W.y2]}else{var Qi=Math.abs(Tn)<=Z/2,ks=Math.abs(Te)<=pt/2;if(Qi){var as=(W.y1+W.y2)/2,Es=W.x1,eo=W.x2;x.segpts=[Es,as,eo,as]}else if(ks){var Ta=(W.x1+W.x2)/2,pa=W.y1,mo=W.y2;x.segpts=[Ta,pa,Ta,mo]}else x.segpts=[W.x2,W.y1]}else if(nn){var Kn=W.y1+Sn+(St?st/2*Xn:0),G=W.x1,Vn=W.x2;x.segpts=[G,Kn,Vn,Kn]}else{var gr=W.x1+Sn+(St?Z/2*Xn:0),nr=W.y1,Be=W.y2;x.segpts=[gr,nr,gr,Be]}},Q1.tryToCorrectInvalidPoints=function(y,p){var x=y._private.rscratch;if(x.edgeType==="bezier"){var C=p.srcPos,L=p.tgtPos,O=p.srcW,N=p.srcH,j=p.tgtW,H=p.tgtH,q=p.srcShape,W=p.tgtShape,Z=!Q(x.startX)||!Q(x.startY),st=!Q(x.arrowStartX)||!Q(x.arrowStartY),bt=!Q(x.endX)||!Q(x.endY),pt=!Q(x.arrowEndX)||!Q(x.arrowEndY),_t=3,St=this.getArrowWidth(y.pstyle("width").pfValue,y.pstyle("arrow-scale").value)*this.arrowShapeWidth,Et=_t*St,Nt=w4({x:x.ctrlpts[0],y:x.ctrlpts[1]},{x:x.startX,y:x.startY}),Pt=Ntme.poolIndex()){var yn=ze;ze=me,me=yn}var nn=Yt.srcPos=ze.position(),qe=Yt.tgtPos=me.position(),Tn=Yt.srcW=ze.outerWidth(),Xn=Yt.srcH=ze.outerHeight(),lr=Yt.tgtW=me.outerWidth(),Sn=Yt.tgtH=me.outerHeight(),or=Yt.srcShape=x.nodeShapes[p.getNodeShape(ze)],pr=Yt.tgtShape=x.nodeShapes[p.getNodeShape(me)];Yt.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var kr=0;kr0){var cr=O,mr=m4(cr,Yx(x)),Sr=m4(cr,Yx($n)),gi=mr;if(Sr2){var ss=m4(cr,{x:$n[2],y:$n[3]});ss0){var G=N,Vn=m4(G,Yx(x)),gr=m4(G,Yx(Kn)),nr=Vn;if(gr2){var Be=m4(G,{x:Kn[2],y:Kn[3]});Be=pt||Ut){St={cp:qt,segment:ee};break}}if(St)break}var de=St.cp,Yt=St.segment,Ee=(pt-Et)/Yt.length,Te=Yt.t1-Yt.t0,ie=bt?Yt.t0+Te*Ee:Yt.t1-Te*Ee;ie=P8(0,ie,1),p=Xx(de.p0,de.p1,de.p2,ie),st=Uet(de.p0,de.p1,de.p2,ie);break}case"straight":case"segments":case"haystack":{for(var ze=0,me,yn,nn,qe,Tn=C.allpts.length,Xn=0;Xn+3=pt));Xn+=2);var lr=pt-yn,Sn=lr/me;Sn=P8(0,Sn,1),p=fQ(nn,qe,Sn),st=DC(nn,qe);break}}N("labelX",Z,p.x),N("labelY",Z,p.y),N("labelAutoAngle",Z,st)}};q("source"),q("target"),this.applyLabelDimensions(y)}},j2.applyLabelDimensions=function(y){this.applyPrefixedLabelDimensions(y),y.isEdge()&&(this.applyPrefixedLabelDimensions(y,"source"),this.applyPrefixedLabelDimensions(y,"target"))},j2.applyPrefixedLabelDimensions=function(y,p){var x=y._private,C=this.getLabelText(y,p),L=this.calculateLabelDimensions(y,C),O=y.pstyle("line-height").pfValue,N=y.pstyle("text-wrap").strValue,j=fb(x.rscratch,"labelWrapCachedLines",p)||[],H=N!=="wrap"?1:Math.max(j.length,1),q=L.height/H,W=q*O,Z=L.width,st=L.height+(H-1)*(O-1)*q;cy(x.rstyle,"labelWidth",p,Z),cy(x.rscratch,"labelWidth",p,Z),cy(x.rstyle,"labelHeight",p,st),cy(x.rscratch,"labelHeight",p,st),cy(x.rscratch,"labelLineHeight",p,W)},j2.getLabelText=function(y,p){var x=y._private,C=p?p+"-":"",L=y.pstyle(C+"label").strValue,O=y.pstyle("text-transform").value,N=function(lr,Sn){return Sn?(cy(x.rscratch,lr,p,Sn),Sn):fb(x.rscratch,lr,p)};if(!L)return"";O=="none"||(O=="uppercase"?L=L.toUpperCase():O=="lowercase"&&(L=L.toLowerCase()));var j=y.pstyle("text-wrap").value;if(j==="wrap"){var H=N("labelKey");if(H!=null&&N("labelWrapKey")===H)return N("labelWrapCachedText");for(var q="​",W=L.split(` +`),Z=y.pstyle("text-max-width").pfValue,st=y.pstyle("text-overflow-wrap").value,bt=st==="anywhere",pt=[],_t=/[\s\u200b]+/,St=bt?"":" ",Et=0;EtZ){for(var ee=Nt.split(_t),Ut="",de=0;deze)break;me+=L[qe],qe===L.length-1&&(nn=!0)}return nn||(me+=yn),me}return L},j2.getLabelJustification=function(y){var p=y.pstyle("text-justification").strValue,x=y.pstyle("text-halign").strValue;if(p==="auto")if(y.isNode())switch(x){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return p},j2.calculateLabelDimensions=function(y,p){var x=this,C=Nd(p,y._private.labelDimsKey),L=x.labelDimCache||(x.labelDimCache=[]),O=L[C];if(O!=null)return O;var N=0,j=y.pstyle("font-style").strValue,H=y.pstyle("font-size").pfValue,q=y.pstyle("font-family").strValue,W=y.pstyle("font-weight").strValue,Z=this.labelCalcCanvas,st=this.labelCalcCanvasContext;if(!Z){Z=this.labelCalcCanvas=document.createElement("canvas"),st=this.labelCalcCanvasContext=Z.getContext("2d");var bt=Z.style;bt.position="absolute",bt.left="-9999px",bt.top="-9999px",bt.zIndex="-1",bt.visibility="hidden",bt.pointerEvents="none"}st.font="".concat(j," ").concat(W," ").concat(H,"px ").concat(q);for(var pt=0,_t=0,St=p.split(` +`),Et=0;Et1&&arguments[1]!==void 0?arguments[1]:!0;if(p.merge(N),j)for(var H=0;H=y.desktopTapThreshold2}var cm=L(G);Sl&&(y.hoverData.tapholdCancelled=!0);var py=function(){var $2=y.hoverData.dragDelta=y.hoverData.dragDelta||[];$2.length===0?($2.push(no[0]),$2.push(no[1])):($2[0]+=no[0],$2[1]+=no[1])};gr=!0,C(Ca,["mousemove","vmousemove","tapdrag"],G,{x:hr[0],y:hr[1]});var y6=function(){y.data.bgActivePosistion=void 0,y.hoverData.selecting||nr.emit({originalEvent:G,type:"boxstart",position:{x:hr[0],y:hr[1]}}),kc[4]=1,y.hoverData.selecting=!0,y.redrawHint("select",!0),y.redraw()};if(y.hoverData.which===3){if(Sl){var _4={originalEvent:G,type:"cxtdrag",position:{x:hr[0],y:hr[1]}};ra?ra.emit(_4):nr.emit(_4),y.hoverData.cxtDragged=!0,(!y.hoverData.cxtOver||Ca!==y.hoverData.cxtOver)&&(y.hoverData.cxtOver&&y.hoverData.cxtOver.emit({originalEvent:G,type:"cxtdragout",position:{x:hr[0],y:hr[1]}}),y.hoverData.cxtOver=Ca,Ca&&Ca.emit({originalEvent:G,type:"cxtdragover",position:{x:hr[0],y:hr[1]}}))}}else if(y.hoverData.dragging){if(gr=!0,nr.panningEnabled()&&nr.userPanningEnabled()){var x6;if(y.hoverData.justStartedPan){var BC=y.hoverData.mdownPos;x6={x:(hr[0]-BC[0])*Be,y:(hr[1]-BC[1])*Be},y.hoverData.justStartedPan=!1}else x6={x:no[0]*Be,y:no[1]*Be};nr.panBy(x6),nr.emit("dragpan"),y.hoverData.dragged=!0}hr=y.projectIntoViewport(G.clientX,G.clientY)}else if(kc[4]==1&&(ra==null||ra.pannable())){if(Sl){if(!y.hoverData.dragging&&nr.boxSelectionEnabled()&&(cm||!nr.panningEnabled()||!nr.userPanningEnabled()))y6();else if(!y.hoverData.selecting&&nr.panningEnabled()&&nr.userPanningEnabled()){var A4=O(ra,y.hoverData.downs);A4&&(y.hoverData.dragging=!0,y.hoverData.justStartedPan=!0,kc[4]=0,y.data.bgActivePosistion=Yx(us),y.redrawHint("select",!0),y.redraw())}ra&&ra.pannable()&&ra.active()&&ra.unactivate()}}else{if(ra&&ra.pannable()&&ra.active()&&ra.unactivate(),(!ra||!ra.grabbed())&&Ca!=oc&&(oc&&C(oc,["mouseout","tapdragout"],G,{x:hr[0],y:hr[1]}),Ca&&C(Ca,["mouseover","tapdragover"],G,{x:hr[0],y:hr[1]}),y.hoverData.last=Ca),ra)if(Sl){if(nr.boxSelectionEnabled()&&cm)ra&&ra.grabbed()&&(St(ql),ra.emit("freeon"),ql.emit("free"),y.dragData.didDrag&&(ra.emit("dragfreeon"),ql.emit("dragfree"))),y6();else if(ra&&ra.grabbed()&&y.nodeIsDraggable(ra)){var k0=!y.dragData.didDrag;k0&&y.redrawHint("eles",!0),y.dragData.didDrag=!0,y.hoverData.draggingEles||pt(ql,{inDragLayer:!0});var J1={x:0,y:0};if(Q(no[0])&&Q(no[1])&&(J1.x+=no[0],J1.y+=no[1],k0)){var E0=y.hoverData.dragDelta;E0&&Q(E0[0])&&Q(E0[1])&&(J1.x+=E0[0],J1.y+=E0[1])}y.hoverData.draggingEles=!0,ql.silentShift(J1).emit("position drag"),y.redrawHint("drag",!0),y.redraw()}}else py();gr=!0}if(kc[2]=hr[0],kc[3]=hr[1],gr)return G.stopPropagation&&G.stopPropagation(),G.preventDefault&&G.preventDefault(),!1}},!1);var Ee,Te,ie;y.registerBinding(p,"mouseup",function(G){var Vn=y.hoverData.capture;if(Vn){y.hoverData.capture=!1;var gr=y.cy,nr=y.projectIntoViewport(G.clientX,G.clientY),Be=y.selection,Ls=y.findNearestElement(nr[0],nr[1],!0,!1),hr=y.dragData.possibleDragElements,us=y.hoverData.down,Ya=L(G);if(y.data.bgActivePosistion&&(y.redrawHint("select",!0),y.redraw()),y.hoverData.tapholdCancelled=!0,y.data.bgActivePosistion=void 0,us&&us.unactivate(),y.hoverData.which===3){var kc={originalEvent:G,type:"cxttapend",position:{x:nr[0],y:nr[1]}};if(us?us.emit(kc):gr.emit(kc),!y.hoverData.cxtDragged){var Ca={originalEvent:G,type:"cxttap",position:{x:nr[0],y:nr[1]}};us?us.emit(Ca):gr.emit(Ca)}y.hoverData.cxtDragged=!1,y.hoverData.which=null}else if(y.hoverData.which===1){if(C(Ls,["mouseup","tapend","vmouseup"],G,{x:nr[0],y:nr[1]}),!y.dragData.didDrag&&!y.hoverData.dragged&&!y.hoverData.selecting&&!y.hoverData.isOverThresholdDrag&&(C(us,["click","tap","vclick"],G,{x:nr[0],y:nr[1]}),Te=!1,G.timeStamp-ie<=gr.multiClickDebounceTime()?(Ee&&clearTimeout(Ee),Te=!0,ie=null,C(us,["dblclick","dbltap","vdblclick"],G,{x:nr[0],y:nr[1]})):(Ee=setTimeout(function(){Te||C(us,["oneclick","onetap","voneclick"],G,{x:nr[0],y:nr[1]})},gr.multiClickDebounceTime()),ie=G.timeStamp)),us==null&&!y.dragData.didDrag&&!y.hoverData.selecting&&!y.hoverData.dragged&&!L(G)&&(gr.$(x).unselect(["tapunselect"]),hr.length>0&&y.redrawHint("eles",!0),y.dragData.possibleDragElements=hr=gr.collection()),Ls==us&&!y.dragData.didDrag&&!y.hoverData.selecting&&Ls!=null&&Ls._private.selectable&&(y.hoverData.dragging||(gr.selectionType()==="additive"||Ya?Ls.selected()?Ls.unselect(["tapunselect"]):Ls.select(["tapselect"]):Ya||(gr.$(x).unmerge(Ls).unselect(["tapunselect"]),Ls.select(["tapselect"]))),y.redrawHint("eles",!0)),y.hoverData.selecting){var oc=gr.collection(y.getAllInBox(Be[0],Be[1],Be[2],Be[3]));y.redrawHint("select",!0),oc.length>0&&y.redrawHint("eles",!0),gr.emit({type:"boxend",originalEvent:G,position:{x:nr[0],y:nr[1]}});var ra=function(Sl){return Sl.selectable()&&!Sl.selected()};gr.selectionType()==="additive"||Ya||gr.$(x).unmerge(oc).unselect(),oc.emit("box").stdFilter(ra).select().emit("boxselect"),y.redraw()}if(y.hoverData.dragging&&(y.hoverData.dragging=!1,y.redrawHint("select",!0),y.redrawHint("eles",!0),y.redraw()),!Be[4]){y.redrawHint("drag",!0),y.redrawHint("eles",!0);var no=us&&us.grabbed();St(hr),no&&(us.emit("freeon"),hr.emit("free"),y.dragData.didDrag&&(us.emit("dragfreeon"),hr.emit("dragfree")))}}Be[4]=0,y.hoverData.down=null,y.hoverData.cxtStarted=!1,y.hoverData.draggingEles=!1,y.hoverData.selecting=!1,y.hoverData.isOverThresholdDrag=!1,y.dragData.didDrag=!1,y.hoverData.dragged=!1,y.hoverData.dragDelta=[],y.hoverData.mdownPos=null,y.hoverData.mdownGPos=null}},!1);var ze=function(G){if(!y.scrollingPage){var Vn=y.cy,gr=Vn.zoom(),nr=Vn.pan(),Be=y.projectIntoViewport(G.clientX,G.clientY),Ls=[Be[0]*gr+nr.x,Be[1]*gr+nr.y];if(y.hoverData.draggingEles||y.hoverData.dragging||y.hoverData.cxtStarted||de()){G.preventDefault();return}if(Vn.panningEnabled()&&Vn.userPanningEnabled()&&Vn.zoomingEnabled()&&Vn.userZoomingEnabled()){G.preventDefault(),y.data.wheelZooming=!0,clearTimeout(y.data.wheelTimeout),y.data.wheelTimeout=setTimeout(function(){y.data.wheelZooming=!1,y.redrawHint("eles",!0),y.redraw()},150);var hr;G.deltaY!=null?hr=G.deltaY/-250:G.wheelDeltaY!=null?hr=G.wheelDeltaY/1e3:hr=G.wheelDelta/1e3,hr=hr*y.wheelSensitivity;var us=G.deltaMode===1;us&&(hr*=33);var Ya=Vn.zoom()*Math.pow(10,hr);G.type==="gesturechange"&&(Ya=y.gestureStartZoom*G.scale),Vn.zoom({level:Ya,renderedPosition:{x:Ls[0],y:Ls[1]}}),Vn.emit(G.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};y.registerBinding(y.container,"wheel",ze,!0),y.registerBinding(p,"scroll",function(G){y.scrollingPage=!0,clearTimeout(y.scrollingPageTimeout),y.scrollingPageTimeout=setTimeout(function(){y.scrollingPage=!1},250)},!0),y.registerBinding(y.container,"gesturestart",function(G){y.gestureStartZoom=y.cy.zoom(),y.hasTouchStarted||G.preventDefault()},!0),y.registerBinding(y.container,"gesturechange",function(Kn){y.hasTouchStarted||ze(Kn)},!0),y.registerBinding(y.container,"mouseout",function(G){var Vn=y.projectIntoViewport(G.clientX,G.clientY);y.cy.emit({originalEvent:G,type:"mouseout",position:{x:Vn[0],y:Vn[1]}})},!1),y.registerBinding(y.container,"mouseover",function(G){var Vn=y.projectIntoViewport(G.clientX,G.clientY);y.cy.emit({originalEvent:G,type:"mouseover",position:{x:Vn[0],y:Vn[1]}})},!1);var me,yn,nn,qe,Tn,Xn,lr,Sn,or,pr,kr,wr,Cr,$n=function(G,Vn,gr,nr){return Math.sqrt((gr-G)*(gr-G)+(nr-Vn)*(nr-Vn))},cr=function(G,Vn,gr,nr){return(gr-G)*(gr-G)+(nr-Vn)*(nr-Vn)},mr;y.registerBinding(y.container,"touchstart",mr=function(G){if(y.hasTouchStarted=!0,!!Yt(G)){Nt(),y.touchData.capture=!0,y.data.bgActivePosistion=void 0;var Vn=y.cy,gr=y.touchData.now,nr=y.touchData.earlier;if(G.touches[0]){var Be=y.projectIntoViewport(G.touches[0].clientX,G.touches[0].clientY);gr[0]=Be[0],gr[1]=Be[1]}if(G.touches[1]){var Be=y.projectIntoViewport(G.touches[1].clientX,G.touches[1].clientY);gr[2]=Be[0],gr[3]=Be[1]}if(G.touches[2]){var Be=y.projectIntoViewport(G.touches[2].clientX,G.touches[2].clientY);gr[4]=Be[0],gr[5]=Be[1]}if(G.touches[1]){y.touchData.singleTouchMoved=!0,St(y.dragData.touchDragEles);var Ls=y.findContainerClientCoords();or=Ls[0],pr=Ls[1],kr=Ls[2],wr=Ls[3],me=G.touches[0].clientX-or,yn=G.touches[0].clientY-pr,nn=G.touches[1].clientX-or,qe=G.touches[1].clientY-pr,Cr=0<=me&&me<=kr&&0<=nn&&nn<=kr&&0<=yn&&yn<=wr&&0<=qe&&qe<=wr;var hr=Vn.pan(),us=Vn.zoom();Tn=$n(me,yn,nn,qe),Xn=cr(me,yn,nn,qe),lr=[(me+nn)/2,(yn+qe)/2],Sn=[(lr[0]-hr.x)/us,(lr[1]-hr.y)/us];var Ya=200,kc=Ya*Ya;if(Xn=1){for(var vb=y.touchData.startPosition=[null,null,null,null,null,null],v1=0;v1=y.touchTapThreshold2}if(Vn&&y.touchData.cxt){G.preventDefault();var vb=G.touches[0].clientX-or,v1=G.touches[0].clientY-pr,up=G.touches[1].clientX-or,Bd=G.touches[1].clientY-pr,cm=cr(vb,v1,up,Bd),py=cm/Xn,y6=150,_4=y6*y6,x6=1.5,BC=x6*x6;if(py>=BC||cm>=_4){y.touchData.cxt=!1,y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var A4={originalEvent:G,type:"cxttapend",position:{x:Be[0],y:Be[1]}};y.touchData.start?(y.touchData.start.unactivate().emit(A4),y.touchData.start=null):nr.emit(A4)}}if(Vn&&y.touchData.cxt){var A4={originalEvent:G,type:"cxtdrag",position:{x:Be[0],y:Be[1]}};y.data.bgActivePosistion=void 0,y.redrawHint("select",!0),y.touchData.start?y.touchData.start.emit(A4):nr.emit(A4),y.touchData.start&&(y.touchData.start._private.grabbed=!1),y.touchData.cxtDragged=!0;var k0=y.findNearestElement(Be[0],Be[1],!0,!0);(!y.touchData.cxtOver||k0!==y.touchData.cxtOver)&&(y.touchData.cxtOver&&y.touchData.cxtOver.emit({originalEvent:G,type:"cxtdragout",position:{x:Be[0],y:Be[1]}}),y.touchData.cxtOver=k0,k0&&k0.emit({originalEvent:G,type:"cxtdragover",position:{x:Be[0],y:Be[1]}}))}else if(Vn&&G.touches[2]&&nr.boxSelectionEnabled())G.preventDefault(),y.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,y.touchData.selecting||nr.emit({originalEvent:G,type:"boxstart",position:{x:Be[0],y:Be[1]}}),y.touchData.selecting=!0,y.touchData.didSelect=!0,gr[4]=1,!gr||gr.length===0||gr[0]===void 0?(gr[0]=(Be[0]+Be[2]+Be[4])/3,gr[1]=(Be[1]+Be[3]+Be[5])/3,gr[2]=(Be[0]+Be[2]+Be[4])/3+1,gr[3]=(Be[1]+Be[3]+Be[5])/3+1):(gr[2]=(Be[0]+Be[2]+Be[4])/3,gr[3]=(Be[1]+Be[3]+Be[5])/3),y.redrawHint("select",!0),y.redraw();else if(Vn&&G.touches[1]&&!y.touchData.didSelect&&nr.zoomingEnabled()&&nr.panningEnabled()&&nr.userZoomingEnabled()&&nr.userPanningEnabled()){G.preventDefault(),y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var J1=y.dragData.touchDragEles;if(J1){y.redrawHint("drag",!0);for(var E0=0;E00&&!y.hoverData.draggingEles&&!y.swipePanning&&y.data.bgActivePosistion!=null&&(y.data.bgActivePosistion=void 0,y.redrawHint("select",!0),y.redraw())}},!1);var gi;y.registerBinding(p,"touchcancel",gi=function(G){var Vn=y.touchData.start;y.touchData.capture=!1,Vn&&Vn.unactivate()});var ss,na,vi,si;if(y.registerBinding(p,"touchend",ss=function(G){var Vn=y.touchData.start,gr=y.touchData.capture;if(gr)G.touches.length===0&&(y.touchData.capture=!1),G.preventDefault();else return;var nr=y.selection;y.swipePanning=!1,y.hoverData.draggingEles=!1;var Be=y.cy,Ls=Be.zoom(),hr=y.touchData.now,us=y.touchData.earlier;if(G.touches[0]){var Ya=y.projectIntoViewport(G.touches[0].clientX,G.touches[0].clientY);hr[0]=Ya[0],hr[1]=Ya[1]}if(G.touches[1]){var Ya=y.projectIntoViewport(G.touches[1].clientX,G.touches[1].clientY);hr[2]=Ya[0],hr[3]=Ya[1]}if(G.touches[2]){var Ya=y.projectIntoViewport(G.touches[2].clientX,G.touches[2].clientY);hr[4]=Ya[0],hr[5]=Ya[1]}Vn&&Vn.unactivate();var kc;if(y.touchData.cxt){if(kc={originalEvent:G,type:"cxttapend",position:{x:hr[0],y:hr[1]}},Vn?Vn.emit(kc):Be.emit(kc),!y.touchData.cxtDragged){var Ca={originalEvent:G,type:"cxttap",position:{x:hr[0],y:hr[1]}};Vn?Vn.emit(Ca):Be.emit(Ca)}y.touchData.start&&(y.touchData.start._private.grabbed=!1),y.touchData.cxt=!1,y.touchData.start=null,y.redraw();return}if(!G.touches[2]&&Be.boxSelectionEnabled()&&y.touchData.selecting){y.touchData.selecting=!1;var oc=Be.collection(y.getAllInBox(nr[0],nr[1],nr[2],nr[3]));nr[0]=void 0,nr[1]=void 0,nr[2]=void 0,nr[3]=void 0,nr[4]=0,y.redrawHint("select",!0),Be.emit({type:"boxend",originalEvent:G,position:{x:hr[0],y:hr[1]}});var ra=function(_4){return _4.selectable()&&!_4.selected()};oc.emit("box").stdFilter(ra).select().emit("boxselect"),oc.nonempty()&&y.redrawHint("eles",!0),y.redraw()}if(Vn!=null&&Vn.unactivate(),G.touches[2])y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);else if(!G.touches[1]){if(!G.touches[0]){if(!G.touches[0]){y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var no=y.dragData.touchDragEles;if(Vn!=null){var ql=Vn._private.grabbed;St(no),y.redrawHint("drag",!0),y.redrawHint("eles",!0),ql&&(Vn.emit("freeon"),no.emit("free"),y.dragData.didDrag&&(Vn.emit("dragfreeon"),no.emit("dragfree"))),C(Vn,["touchend","tapend","vmouseup","tapdragout"],G,{x:hr[0],y:hr[1]}),Vn.unactivate(),y.touchData.start=null}else{var Sl=y.findNearestElement(hr[0],hr[1],!0,!0);C(Sl,["touchend","tapend","vmouseup","tapdragout"],G,{x:hr[0],y:hr[1]})}var mb=y.touchData.startPosition[0]-hr[0],vb=mb*mb,v1=y.touchData.startPosition[1]-hr[1],up=v1*v1,Bd=vb+up,cm=Bd*Ls*Ls;y.touchData.singleTouchMoved||(Vn||Be.$(":selected").unselect(["tapunselect"]),C(Vn,["tap","vclick"],G,{x:hr[0],y:hr[1]}),na=!1,G.timeStamp-si<=Be.multiClickDebounceTime()?(vi&&clearTimeout(vi),na=!0,si=null,C(Vn,["dbltap","vdblclick"],G,{x:hr[0],y:hr[1]})):(vi=setTimeout(function(){na||C(Vn,["onetap","voneclick"],G,{x:hr[0],y:hr[1]})},Be.multiClickDebounceTime()),si=G.timeStamp)),Vn!=null&&!y.dragData.didDrag&&Vn._private.selectable&&cm"u"){var Qi=[],ks=function(G){return{clientX:G.clientX,clientY:G.clientY,force:1,identifier:G.pointerId,pageX:G.pageX,pageY:G.pageY,radiusX:G.width/2,radiusY:G.height/2,screenX:G.screenX,screenY:G.screenY,target:G.target}},as=function(G){return{event:G,touch:ks(G)}},Es=function(G){Qi.push(as(G))},eo=function(G){for(var Vn=0;Vn0)return Sn[0]}return null},bt=Object.keys(Z),pt=0;pt0?st:$B(O,N,p,x,C,L,j)},checkPoint:function(p,x,C,L,O,N,j){var H=R8(L,O),q=2*H;if(sm(p,x,this.points,N,j,L,O-q,[0,-1],C)||sm(p,x,this.points,N,j,L-q,O,[0,-1],C))return!0;var W=L/2+2*C,Z=O/2+2*C,st=[N-W,j-Z,N-W,j,N+W,j,N+W,j-Z];return!!(y0(p,x,st)||v4(p,x,q,q,N+L/2-H,j+O/2-H,C)||v4(p,x,q,q,N-L/2+H,j+O/2-H,C))}}},om.registerNodeShapes=function(){var y=this.nodeShapes={},p=this;this.generateEllipse(),this.generatePolygon("triangle",Fd(3,0)),this.generateRoundPolygon("round-triangle",Fd(3,0)),this.generatePolygon("rectangle",Fd(4,0)),y.square=y.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var x=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",x),this.generateRoundPolygon("round-diamond",x)}this.generatePolygon("pentagon",Fd(5,0)),this.generateRoundPolygon("round-pentagon",Fd(5,0)),this.generatePolygon("hexagon",Fd(6,0)),this.generateRoundPolygon("round-hexagon",Fd(6,0)),this.generatePolygon("heptagon",Fd(7,0)),this.generateRoundPolygon("round-heptagon",Fd(7,0)),this.generatePolygon("octagon",Fd(8,0)),this.generateRoundPolygon("round-octagon",Fd(8,0));var C=new Array(20);{var L=qD(5,0),O=qD(5,Math.PI/5),N=.5*(3-Math.sqrt(5));N*=1.57;for(var j=0;j=p.deqFastCost*qt)break}else if(q){if(Nt>=p.deqCost*bt||Nt>=p.deqAvgCost*st)break}else if(Pt>=p.deqNoDrawCost*vM)break;var re=p.deq(C,St,_t);if(re.length>0)for(var ee=0;ee0&&(p.onDeqd(C,pt),!q&&p.shouldRedraw(C,pt,St,_t)&&O())},j=p.priority||BD;L.beforeRender(N,j(C))}}}},Ket=function(){function y(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ay;g(this,y),this.idsByKey=new F2,this.keyForId=new F2,this.cachesByLvl=new F2,this.lvls=[],this.getKey=p,this.doesEleInvalidateKey=x}return v(y,[{key:"getIdsFor",value:function(x){x==null&&$l("Can not get id list for null key");var C=this.idsByKey,L=this.idsByKey.get(x);return L||(L=new Wx,C.set(x,L)),L}},{key:"addIdForKey",value:function(x,C){x!=null&&this.getIdsFor(x).add(C)}},{key:"deleteIdForKey",value:function(x,C){x!=null&&this.getIdsFor(x).delete(C)}},{key:"getNumberOfIdsForKey",value:function(x){return x==null?0:this.getIdsFor(x).size}},{key:"updateKeyMappingFor",value:function(x){var C=x.id(),L=this.keyForId.get(C),O=this.getKey(x);this.deleteIdForKey(L,C),this.addIdForKey(O,C),this.keyForId.set(C,O)}},{key:"deleteKeyMappingFor",value:function(x){var C=x.id(),L=this.keyForId.get(C);this.deleteIdForKey(L,C),this.keyForId.delete(C)}},{key:"keyHasChangedFor",value:function(x){var C=x.id(),L=this.keyForId.get(C),O=this.getKey(x);return L!==O}},{key:"isInvalid",value:function(x){return this.keyHasChangedFor(x)||this.doesEleInvalidateKey(x)}},{key:"getCachesAt",value:function(x){var C=this.cachesByLvl,L=this.lvls,O=C.get(x);return O||(O=new F2,C.set(x,O),L.push(x)),O}},{key:"getCache",value:function(x,C){return this.getCachesAt(C).get(x)}},{key:"get",value:function(x,C){var L=this.getKey(x),O=this.getCache(L,C);return O!=null&&this.updateKeyMappingFor(x),O}},{key:"getForCachedKey",value:function(x,C){var L=this.keyForId.get(x.id()),O=this.getCache(L,C);return O}},{key:"hasCache",value:function(x,C){return this.getCachesAt(C).has(x)}},{key:"has",value:function(x,C){var L=this.getKey(x);return this.hasCache(L,C)}},{key:"setCache",value:function(x,C,L){L.key=x,this.getCachesAt(C).set(x,L)}},{key:"set",value:function(x,C,L){var O=this.getKey(x);this.setCache(O,C,L),this.updateKeyMappingFor(x)}},{key:"deleteCache",value:function(x,C){this.getCachesAt(C).delete(x)}},{key:"delete",value:function(x,C){var L=this.getKey(x);this.deleteCache(L,C)}},{key:"invalidateKey",value:function(x){var C=this;this.lvls.forEach(function(L){return C.deleteCache(x,L)})}},{key:"invalidate",value:function(x){var C=x.id(),L=this.keyForId.get(C);this.deleteKeyMappingFor(x);var O=this.doesEleInvalidateKey(x);return O&&this.invalidateKey(L),O||this.getNumberOfIdsForKey(L)===0}}]),y}(),Ij=25,OC=50,NC=-4,yM=3,Wet=7.99,Yet=8,Xet=1024,Qet=1024,Jet=1024,Zet=.2,tnt=.8,ent=10,nnt=.15,rnt=.1,int=.9,snt=.9,ant=100,ont=1,p6={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},cnt=p1({getKey:null,doesEleInvalidateKey:ay,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:b4,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),rE=function(p,x){var C=this;C.renderer=p,C.onDequeues=[];var L=cnt(x);we(C,L),C.lookup=new Ket(L.getKey,L.doesEleInvalidateKey),C.setupDequeueing()},Jh=rE.prototype;Jh.reasons=p6,Jh.getTextureQueue=function(y){var p=this;return p.eleImgCaches=p.eleImgCaches||{},p.eleImgCaches[y]=p.eleImgCaches[y]||[]},Jh.getRetiredTextureQueue=function(y){var p=this,x=p.eleImgCaches.retired=p.eleImgCaches.retired||{},C=x[y]=x[y]||[];return C},Jh.getElementQueue=function(){var y=this,p=y.eleCacheQueue=y.eleCacheQueue||new N8(function(x,C){return C.reqs-x.reqs});return p},Jh.getElementKeyToQueue=function(){var y=this,p=y.eleKeyToCacheQueue=y.eleKeyToCacheQueue||{};return p},Jh.getElement=function(y,p,x,C,L){var O=this,N=this.renderer,j=N.cy.zoom(),H=this.lookup;if(!p||p.w===0||p.h===0||isNaN(p.w)||isNaN(p.h)||!y.visible()||y.removed()||!O.allowEdgeTxrCaching&&y.isEdge()||!O.allowParentTxrCaching&&y.isParent())return null;if(C==null&&(C=Math.ceil(jD(j*x))),C=Wet||C>yM)return null;var q=Math.pow(2,C),W=p.h*q,Z=p.w*q,st=N.eleTextBiggerThanMin(y,q);if(!this.isVisible(y,st))return null;var bt=H.get(y,C);if(bt&&bt.invalidated&&(bt.invalidated=!1,bt.texture.invalidatedWidth-=bt.width),bt)return bt;var pt;if(W<=Ij?pt=Ij:W<=OC?pt=OC:pt=Math.ceil(W/OC)*OC,W>Jet||Z>Qet)return null;var _t=O.getTextureQueue(pt),St=_t[_t.length-2],Et=function(){return O.recycleTexture(pt,Z)||O.addTexture(pt,Z)};St||(St=_t[_t.length-1]),St||(St=Et()),St.width-St.usedWidthC;Te--)Yt=O.getElement(y,p,x,Te,p6.downscale);Ee()}else return O.queueElement(y,ee.level-1),ee;else{var ie;if(!Pt&&!qt&&!re)for(var ze=C-1;ze>=NC;ze--){var me=H.get(y,ze);if(me){ie=me;break}}if(Nt(ie))return O.queueElement(y,C),ie;St.context.translate(St.usedWidth,0),St.context.scale(q,q),this.drawElement(St.context,y,p,st,!1),St.context.scale(1/q,1/q),St.context.translate(-St.usedWidth,0)}return bt={x:St.usedWidth,texture:St,level:C,scale:q,width:Z,height:W,scaledLabelShown:st},St.usedWidth+=Math.ceil(Z+Yet),St.eleCaches.push(bt),H.set(y,C,bt),O.checkTextureFullness(St),bt},Jh.invalidateElements=function(y){for(var p=0;p=Zet*y.width&&this.retireTexture(y)},Jh.checkTextureFullness=function(y){var p=this,x=p.getTextureQueue(y.height);y.usedWidth/y.width>tnt&&y.fullnessChecks>=ent?oy(x,y):y.fullnessChecks++},Jh.retireTexture=function(y){var p=this,x=y.height,C=p.getTextureQueue(x),L=this.lookup;oy(C,y),y.retired=!0;for(var O=y.eleCaches,N=0;N=p)return N.retired=!1,N.usedWidth=0,N.invalidatedWidth=0,N.fullnessChecks=0,G9(N.eleCaches),N.context.setTransform(1,0,0,1,0,0),N.context.clearRect(0,0,N.width,N.height),oy(L,N),C.push(N),N}},Jh.queueElement=function(y,p){var x=this,C=x.getElementQueue(),L=x.getElementKeyToQueue(),O=this.getKey(y),N=L[O];if(N)N.level=Math.max(N.level,p),N.eles.merge(y),N.reqs++,C.updateItem(N);else{var j={eles:y.spawn().merge(y),level:p,reqs:1,key:O};C.push(j),L[O]=j}},Jh.dequeue=function(y){for(var p=this,x=p.getElementQueue(),C=p.getElementKeyToQueue(),L=[],O=p.lookup,N=0;N0;N++){var j=x.pop(),H=j.key,q=j.eles[0],W=O.hasCache(q,j.level);if(C[H]=null,W)continue;L.push(j);var Z=p.getBoundingBox(q);p.getElement(q,Z,y,j.level,p6.dequeue)}return L},Jh.removeFromQueue=function(y){var p=this,x=p.getElementQueue(),C=p.getElementKeyToQueue(),L=this.getKey(y),O=C[L];O!=null&&(O.eles.length===1?(O.reqs=Kx,x.updateItem(O),x.pop(),C[L]=null):O.eles.unmerge(y))},Jh.onDequeue=function(y){this.onDequeues.push(y)},Jh.offDequeue=function(y){oy(this.onDequeues,y)},Jh.setupDequeueing=Mj.setupDequeueing({deqRedrawThreshold:ant,deqCost:nnt,deqAvgCost:rnt,deqNoDrawCost:int,deqFastCost:snt,deq:function(p,x,C){return p.dequeue(x,C)},onDeqd:function(p,x){for(var C=0;C=lnt||x>PC)return null}C.validateLayersElesOrdering(x,y);var H=C.layersByLevel,q=Math.pow(2,x),W=H[x]=H[x]||[],Z,st=C.levelIsComplete(x,y),bt,pt=function(){var Ee=function(yn){if(C.validateLayersElesOrdering(yn,y),C.levelIsComplete(yn,y))return bt=H[yn],!0},Te=function(yn){if(!bt)for(var nn=x+yn;iE<=nn&&nn<=PC&&!Ee(nn);nn+=yn);};Te(1),Te(-1);for(var ie=W.length-1;ie>=0;ie--){var ze=W[ie];ze.invalid&&oy(W,ze)}};if(!st)pt();else return W;var _t=function(){if(!Z){Z=v0();for(var Ee=0;EePj)return null;var ze=C.makeLayer(Z,x);if(Te!=null){var me=W.indexOf(Te)+1;W.splice(me,0,ze)}else(Ee.insert===void 0||Ee.insert)&&W.unshift(ze);return ze};if(C.skipping&&!j)return null;for(var Et=null,Nt=y.length/unt,Pt=!j,qt=0;qt=Nt||!jB(Et.bb,re.boundingBox()))&&(Et=St({insert:!0,after:Et}),!Et))return null;bt||Pt?C.queueLayer(Et,re):C.drawEleInLayer(Et,re,x,p),Et.eles.push(re),Ut[x]=Et}return bt||(Pt?null:W)},Df.getEleLevelForLayerLevel=function(y,p){return y},Df.drawEleInLayer=function(y,p,x,C){var L=this,O=this.renderer,N=y.context,j=p.boundingBox();j.w===0||j.h===0||!p.visible()||(x=L.getEleLevelForLayerLevel(x,C),O.setImgSmoothing(N,!1),O.drawCachedElement(N,p,null,null,x,Fj),O.setImgSmoothing(N,!0))},Df.levelIsComplete=function(y,p){var x=this,C=x.layersByLevel[y];if(!C||C.length===0)return!1;for(var L=0,O=0;O0||N.invalid)return!1;L+=N.eles.length}return L===p.length},Df.validateLayersElesOrdering=function(y,p){var x=this.layersByLevel[y];if(x)for(var C=0;C0){p=!0;break}}return p},Df.invalidateElements=function(y){var p=this;y.length!==0&&(p.lastInvalidationTime=ip(),!(y.length===0||!p.haveLayers())&&p.updateElementsInLayers(y,function(C,L,O){p.invalidateLayer(C)}))},Df.invalidateLayer=function(y){if(this.lastInvalidationTime=ip(),!y.invalid){var p=y.level,x=y.eles,C=this.layersByLevel[p];oy(C,y),y.elesQueue=[],y.invalid=!0,y.replacement&&(y.replacement.invalid=!0);for(var L=0;L3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,N=this,j=p._private.rscratch;if(!(O&&!p.visible())&&!(j.badLine||j.allpts==null||isNaN(j.allpts[0]))){var H;x&&(H=x,y.translate(-H.x1,-H.y1));var q=O?p.pstyle("opacity").value:1,W=O?p.pstyle("line-opacity").value:1,Z=p.pstyle("curve-style").value,st=p.pstyle("line-style").value,bt=p.pstyle("width").pfValue,pt=p.pstyle("line-cap").value,_t=q*W,St=q*W,Et=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_t;Z==="straight-triangle"?(N.eleStrokeStyle(y,p,ie),N.drawEdgeTrianglePath(p,y,j.allpts)):(y.lineWidth=bt,y.lineCap=pt,N.eleStrokeStyle(y,p,ie),N.drawEdgePath(p,y,j.allpts,st),y.lineCap="butt")},Nt=function(){L&&N.drawEdgeOverlay(y,p)},Pt=function(){L&&N.drawEdgeUnderlay(y,p)},qt=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:St;N.drawArrowheads(y,p,ie)},re=function(){N.drawElementText(y,p,null,C)};y.lineJoin="round";var ee=p.pstyle("ghost").value==="yes";if(ee){var Ut=p.pstyle("ghost-offset-x").pfValue,de=p.pstyle("ghost-offset-y").pfValue,Yt=p.pstyle("ghost-opacity").value,Ee=_t*Yt;y.translate(Ut,de),Et(Ee),qt(Ee),y.translate(-Ut,-de)}Pt(),Et(),qt(),Nt(),re(),x&&y.translate(H.x1,H.y1)}};var Hj=function(p){if(!["overlay","underlay"].includes(p))throw new Error("Invalid state");return function(x,C){if(C.visible()){var L=C.pstyle("".concat(p,"-opacity")).value;if(L!==0){var O=this,N=O.usePaths(),j=C._private.rscratch,H=C.pstyle("".concat(p,"-padding")).pfValue,q=2*H,W=C.pstyle("".concat(p,"-color")).value;x.lineWidth=q,j.edgeType==="self"&&!N?x.lineCap="butt":x.lineCap="round",O.colorStrokeStyle(x,W[0],W[1],W[2],L),O.drawEdgePath(C,x,j.allpts,"solid")}}}};wb.drawEdgeOverlay=Hj("overlay"),wb.drawEdgeUnderlay=Hj("underlay"),wb.drawEdgePath=function(y,p,x,C){var L=y._private.rscratch,O=p,N,j=!1,H=this.usePaths(),q=y.pstyle("line-dash-pattern").pfValue,W=y.pstyle("line-dash-offset").pfValue;if(H){var Z=x.join("$"),st=L.pathCacheKey&&L.pathCacheKey===Z;st?(N=p=L.pathCache,j=!0):(N=p=new Path2D,L.pathCacheKey=Z,L.pathCache=N)}if(O.setLineDash)switch(C){case"dotted":O.setLineDash([1,1]);break;case"dashed":O.setLineDash(q),O.lineDashOffset=W;break;case"solid":O.setLineDash([]);break}if(!j&&!L.badLine)switch(p.beginPath&&p.beginPath(),p.moveTo(x[0],x[1]),L.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var bt=2;bt+35&&arguments[5]!==void 0?arguments[5]:!0,N=this;if(C==null){if(O&&!N.eleTextBiggerThanMin(p))return}else if(C===!1)return;if(p.isNode()){var j=p.pstyle("label");if(!j||!j.value)return;var H=N.getLabelJustification(p);y.textAlign=H,y.textBaseline="bottom"}else{var q=p.element()._private.rscratch.badLine,W=p.pstyle("label"),Z=p.pstyle("source-label"),st=p.pstyle("target-label");if(q||(!W||!W.value)&&(!Z||!Z.value)&&(!st||!st.value))return;y.textAlign="center",y.textBaseline="bottom"}var bt=!x,pt;x&&(pt=x,y.translate(-pt.x1,-pt.y1)),L==null?(N.drawText(y,p,null,bt,O),p.isEdge()&&(N.drawText(y,p,"source",bt,O),N.drawText(y,p,"target",bt,O))):N.drawText(y,p,L,bt,O),x&&y.translate(pt.x1,pt.y1)},S4.getFontCache=function(y){var p;this.fontCaches=this.fontCaches||[];for(var x=0;x2&&arguments[2]!==void 0?arguments[2]:!0,C=p.pstyle("font-style").strValue,L=p.pstyle("font-size").pfValue+"px",O=p.pstyle("font-family").strValue,N=p.pstyle("font-weight").strValue,j=x?p.effectiveOpacity()*p.pstyle("text-opacity").value:1,H=p.pstyle("text-outline-opacity").value*j,q=p.pstyle("color").value,W=p.pstyle("text-outline-color").value;y.font=C+" "+N+" "+L+" "+O,y.lineJoin="round",this.colorFillStyle(y,q[0],q[1],q[2],j),this.colorStrokeStyle(y,W[0],W[1],W[2],H)};function kM(y,p,x,C,L){var O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,N=arguments.length>6?arguments[6]:void 0;y.beginPath(),y.moveTo(p+O,x),y.lineTo(p+C-O,x),y.quadraticCurveTo(p+C,x,p+C,x+O),y.lineTo(p+C,x+L-O),y.quadraticCurveTo(p+C,x+L,p+C-O,x+L),y.lineTo(p+O,x+L),y.quadraticCurveTo(p,x+L,p,x+L-O),y.lineTo(p,x+O),y.quadraticCurveTo(p,x,p+O,x),y.closePath(),N?y.stroke():y.fill()}S4.getTextAngle=function(y,p){var x,C=y._private,L=C.rscratch,O=p?p+"-":"",N=y.pstyle(O+"text-rotation"),j=fb(L,"labelAngle",p);return N.strValue==="autorotate"?x=y.isEdge()?j:0:N.strValue==="none"?x=0:x=N.pfValue,x},S4.drawText=function(y,p,x){var C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=p._private,N=O.rscratch,j=L?p.effectiveOpacity():1;if(!(L&&(j===0||p.pstyle("text-opacity").value===0))){x==="main"&&(x=null);var H=fb(N,"labelX",x),q=fb(N,"labelY",x),W,Z,st=this.getLabelText(p,x);if(st!=null&&st!==""&&!isNaN(H)&&!isNaN(q)){this.setupTextStyle(y,p,L);var bt=x?x+"-":"",pt=fb(N,"labelWidth",x),_t=fb(N,"labelHeight",x),St=p.pstyle(bt+"text-margin-x").pfValue,Et=p.pstyle(bt+"text-margin-y").pfValue,Nt=p.isEdge(),Pt=p.pstyle("text-halign").value,qt=p.pstyle("text-valign").value;Nt&&(Pt="center",qt="center"),H+=St,q+=Et;var re;switch(C?re=this.getTextAngle(p,x):re=0,re!==0&&(W=H,Z=q,y.translate(W,Z),y.rotate(re),H=0,q=0),qt){case"top":break;case"center":q+=_t/2;break;case"bottom":q+=_t;break}var ee=p.pstyle("text-background-opacity").value,Ut=p.pstyle("text-border-opacity").value,de=p.pstyle("text-border-width").pfValue,Yt=p.pstyle("text-background-padding").pfValue,Ee=p.pstyle("text-background-shape").strValue,Te=Ee.indexOf("round")===0,ie=2;if(ee>0||de>0&&Ut>0){var ze=H-Yt;switch(Pt){case"left":ze-=pt;break;case"center":ze-=pt/2;break}var me=q-_t-Yt,yn=pt+2*Yt,nn=_t+2*Yt;if(ee>0){var qe=y.fillStyle,Tn=p.pstyle("text-background-color").value;y.fillStyle="rgba("+Tn[0]+","+Tn[1]+","+Tn[2]+","+ee*j+")",Te?kM(y,ze,me,yn,nn,ie):y.fillRect(ze,me,yn,nn),y.fillStyle=qe}if(de>0&&Ut>0){var Xn=y.strokeStyle,lr=y.lineWidth,Sn=p.pstyle("text-border-color").value,or=p.pstyle("text-border-style").value;if(y.strokeStyle="rgba("+Sn[0]+","+Sn[1]+","+Sn[2]+","+Ut*j+")",y.lineWidth=de,y.setLineDash)switch(or){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"double":y.lineWidth=de/4,y.setLineDash([]);break;case"solid":y.setLineDash([]);break}if(Te?kM(y,ze,me,yn,nn,ie,"stroke"):y.strokeRect(ze,me,yn,nn),or==="double"){var pr=de/2;Te?kM(y,ze+pr,me+pr,yn-pr*2,nn-pr*2,ie,"stroke"):y.strokeRect(ze+pr,me+pr,yn-pr*2,nn-pr*2)}y.setLineDash&&y.setLineDash([]),y.lineWidth=lr,y.strokeStyle=Xn}}var kr=2*p.pstyle("text-outline-width").pfValue;if(kr>0&&(y.lineWidth=kr),p.pstyle("text-wrap").value==="wrap"){var wr=fb(N,"labelWrapCachedLines",x),Cr=fb(N,"labelLineHeight",x),$n=pt/2,cr=this.getLabelJustification(p);switch(cr==="auto"||(Pt==="left"?cr==="left"?H+=-pt:cr==="center"&&(H+=-$n):Pt==="center"?cr==="left"?H+=-$n:cr==="right"&&(H+=$n):Pt==="right"&&(cr==="center"?H+=$n:cr==="right"&&(H+=pt))),qt){case"top":q-=(wr.length-1)*Cr;break;case"center":case"bottom":q-=(wr.length-1)*Cr;break}for(var mr=0;mr0&&y.strokeText(wr[mr],H,q),y.fillText(wr[mr],H,q),q+=Cr}else kr>0&&y.strokeText(st,H,q),y.fillText(st,H,q);re!==0&&(y.rotate(-re),y.translate(-W,-Z))}}};var b6={};b6.drawNode=function(y,p,x){var C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,N=this,j,H,q=p._private,W=q.rscratch,Z=p.position();if(!(!Q(Z.x)||!Q(Z.y))&&!(O&&!p.visible())){var st=O?p.effectiveOpacity():1,bt=N.usePaths(),pt,_t=!1,St=p.padding();j=p.width()+2*St,H=p.height()+2*St;var Et;x&&(Et=x,y.translate(-Et.x1,-Et.y1));for(var Nt=p.pstyle("background-image"),Pt=Nt.value,qt=new Array(Pt.length),re=new Array(Pt.length),ee=0,Ut=0;Ut0&&arguments[0]!==void 0?arguments[0]:ze;N.eleFillStyle(y,p,Kn)},pr=function(){var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:nn;N.colorStrokeStyle(y,me[0],me[1],me[2],Kn)},kr=function(){var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:lr;N.colorStrokeStyle(y,Tn[0],Tn[1],Tn[2],Kn)},wr=function(Kn,G,Vn,gr){var nr=N.nodePathCache=N.nodePathCache||[],Be=Pd(Vn==="polygon"?Vn+","+gr.join(","):Vn,""+G,""+Kn),Ls=nr[Be],hr,us=!1;return Ls!=null?(hr=Ls,us=!0,W.pathCache=hr):(hr=new Path2D,nr[Be]=W.pathCache=hr),{path:hr,cacheHit:us}},Cr=p.pstyle("shape").strValue,$n=p.pstyle("shape-polygon-points").pfValue;if(bt){y.translate(Z.x,Z.y);var cr=wr(j,H,Cr,$n);pt=cr.path,_t=cr.cacheHit}var mr=function(){if(!_t){var Kn=Z;bt&&(Kn={x:0,y:0}),N.nodeShapes[N.getNodeShape(p)].draw(pt||y,Kn.x,Kn.y,j,H)}bt?y.fill(pt):y.fill()},Sr=function(){for(var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:st,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,Vn=q.backgrounding,gr=0,nr=0;nr0&&arguments[0]!==void 0?arguments[0]:!1,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:st;N.hasPie(p)&&(N.drawPie(y,p,G),Kn&&(bt||N.nodeShapes[N.getNodeShape(p)].draw(y,Z.x,Z.y,j,H)))},ss=function(){var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:st,G=(Te>0?Te:-Te)*Kn,Vn=Te>0?0:255;Te!==0&&(N.colorFillStyle(y,Vn,Vn,Vn,G),bt?y.fill(pt):y.fill())},na=function(){if(ie>0){if(y.lineWidth=ie,y.lineCap="butt",y.setLineDash)switch(yn){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"solid":case"double":y.setLineDash([]);break}if(bt?y.stroke(pt):y.stroke(),yn==="double"){y.lineWidth=ie/3;var Kn=y.globalCompositeOperation;y.globalCompositeOperation="destination-out",bt?y.stroke(pt):y.stroke(),y.globalCompositeOperation=Kn}y.setLineDash&&y.setLineDash([])}},vi=function(){if(qe>0){if(y.lineWidth=qe,y.lineCap="butt",y.setLineDash)switch(Xn){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"solid":case"double":y.setLineDash([]);break}var Kn=Z;bt&&(Kn={x:0,y:0});var G=N.getNodeShape(p),Vn=(j+ie+(qe+Sn))/j,gr=(H+ie+(qe+Sn))/H,nr=j*Vn,Be=H*gr,Ls=N.nodeShapes[G].points,hr;if(bt){var us=wr(nr,Be,G,Ls);hr=us.path}if(G==="ellipse")N.drawEllipsePath(hr||y,Kn.x,Kn.y,nr,Be);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(G)){var Ya=0,kc=0,Ca=0;G==="round-diamond"?Ya=(ie+Sn+qe)*1.4:G==="round-heptagon"?(Ya=(ie+Sn+qe)*1.075,Ca=-(ie/2+Sn+qe)/35):G==="round-hexagon"?Ya=(ie+Sn+qe)*1.12:G==="round-pentagon"?(Ya=(ie+Sn+qe)*1.13,Ca=-(ie/2+Sn+qe)/15):G==="round-tag"?(Ya=(ie+Sn+qe)*1.12,kc=(ie/2+qe+Sn)*.07):G==="round-triangle"&&(Ya=(ie+Sn+qe)*(Math.PI/2),Ca=-(ie+Sn/2+qe)/Math.PI),Ya!==0&&(Vn=(j+Ya)/j,gr=(H+Ya)/H),N.drawRoundPolygonPath(hr||y,Kn.x+kc,Kn.y+Ca,j*Vn,H*gr,Ls)}else if(["roundrectangle","round-rectangle"].includes(G))N.drawRoundRectanglePath(hr||y,Kn.x,Kn.y,nr,Be);else if(["cutrectangle","cut-rectangle"].includes(G))N.drawCutRectanglePath(hr||y,Kn.x,Kn.y,nr,Be);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(G))N.drawBottomRoundRectanglePath(hr||y,Kn.x,Kn.y,nr,Be);else if(G==="barrel")N.drawBarrelPath(hr||y,Kn.x,Kn.y,nr,Be);else if(G.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(G)){var oc=(ie+qe+Sn)/j;Ls=J9(Z9(Ls,oc)),N.drawPolygonPath(hr||y,Kn.x,Kn.y,j,H,Ls)}else{var ra=(ie+qe+Sn)/j;Ls=J9(Z9(Ls,-ra)),N.drawPolygonPath(hr||y,Kn.x,Kn.y,j,H,Ls)}if(bt?y.stroke(hr):y.stroke(),Xn==="double"){y.lineWidth=ie/3;var no=y.globalCompositeOperation;y.globalCompositeOperation="destination-out",bt?y.stroke(hr):y.stroke(),y.globalCompositeOperation=no}y.setLineDash&&y.setLineDash([])}},si=function(){L&&N.drawNodeOverlay(y,p,Z,j,H)},Qi=function(){L&&N.drawNodeUnderlay(y,p,Z,j,H)},ks=function(){N.drawElementText(y,p,null,C)},as=p.pstyle("ghost").value==="yes";if(as){var Es=p.pstyle("ghost-offset-x").pfValue,eo=p.pstyle("ghost-offset-y").pfValue,Ta=p.pstyle("ghost-opacity").value,pa=Ta*st;y.translate(Es,eo),kr(),vi(),or(Ta*ze),mr(),Sr(pa,!0),pr(Ta*nn),na(),gi(Te!==0||ie!==0),Sr(pa,!1),ss(pa),y.translate(-Es,-eo)}bt&&y.translate(-Z.x,-Z.y),Qi(),bt&&y.translate(Z.x,Z.y),kr(),vi(),or(),mr(),Sr(st,!0),pr(),na(),gi(Te!==0||ie!==0),Sr(st,!1),ss(),bt&&y.translate(-Z.x,-Z.y),ks(),si(),x&&y.translate(Et.x1,Et.y1)}};var EM=function(p){if(!["overlay","underlay"].includes(p))throw new Error("Invalid state");return function(x,C,L,O,N){var j=this;if(C.visible()){var H=C.pstyle("".concat(p,"-padding")).pfValue,q=C.pstyle("".concat(p,"-opacity")).value,W=C.pstyle("".concat(p,"-color")).value,Z=C.pstyle("".concat(p,"-shape")).value;if(q>0){if(L=L||C.position(),O==null||N==null){var st=C.padding();O=C.width()+2*st,N=C.height()+2*st}j.colorFillStyle(x,W[0],W[1],W[2],q),j.nodeShapes[Z].draw(x,L.x,L.y,O+H*2,N+H*2),x.fill()}}}};b6.drawNodeOverlay=EM("overlay"),b6.drawNodeUnderlay=EM("underlay"),b6.hasPie=function(y){return y=y[0],y._private.hasPie},b6.drawPie=function(y,p,x,C){p=p[0],C=C||p.position();var L=p.cy().style(),O=p.pstyle("pie-size"),N=C.x,j=C.y,H=p.width(),q=p.height(),W=Math.min(H,q)/2,Z=0,st=this.usePaths();st&&(N=0,j=0),O.units==="%"?W=W*O.pfValue:O.pfValue!==void 0&&(W=O.pfValue/2);for(var bt=1;bt<=L.pieBackgroundN;bt++){var pt=p.pstyle("pie-"+bt+"-background-size").value,_t=p.pstyle("pie-"+bt+"-background-color").value,St=p.pstyle("pie-"+bt+"-background-opacity").value*x,Et=pt/100;Et+Z>1&&(Et=1-Z);var Nt=1.5*Math.PI+2*Math.PI*Z,Pt=2*Math.PI*Et,qt=Nt+Pt;pt===0||Z>=1||Z+Et>1||(y.beginPath(),y.moveTo(N,j),y.arc(N,j,W,Nt,qt),y.closePath(),this.colorFillStyle(y,_t[0],_t[1],_t[2],St),y.fill(),Z+=Et)}};var dg={},Ent=100;dg.getPixelRatio=function(){var y=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var p=y.backingStorePixelRatio||y.webkitBackingStorePixelRatio||y.mozBackingStorePixelRatio||y.msBackingStorePixelRatio||y.oBackingStorePixelRatio||y.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/p},dg.paintCache=function(y){for(var p=this.paintCaches=this.paintCaches||[],x=!0,C,L=0;LN.minMbLowQualFrames&&(N.motionBlurPxRatio=N.mbPxRBlurry)),N.clearingMotionBlur&&(N.motionBlurPxRatio=1),N.textureDrawLastFrame&&!Z&&(W[N.NODE]=!0,W[N.SELECT_BOX]=!0);var Nt=H.style(),Pt=H.zoom(),qt=L!==void 0?L:Pt,re=H.pan(),ee={x:re.x,y:re.y},Ut={zoom:Pt,pan:{x:re.x,y:re.y}},de=N.prevViewport,Yt=de===void 0||Ut.zoom!==de.zoom||Ut.pan.x!==de.pan.x||Ut.pan.y!==de.pan.y;!Yt&&!(_t&&!pt)&&(N.motionBlurPxRatio=1),O&&(ee=O),qt*=j,ee.x*=j,ee.y*=j;var Ee=N.getCachedZSortedEles();function Te(vi,si,Qi,ks,as){var Es=vi.globalCompositeOperation;vi.globalCompositeOperation="destination-out",N.colorFillStyle(vi,255,255,255,N.motionBlurTransparency),vi.fillRect(si,Qi,ks,as),vi.globalCompositeOperation=Es}function ie(vi,si){var Qi,ks,as,Es;!N.clearingMotionBlur&&(vi===q.bufferContexts[N.MOTIONBLUR_BUFFER_NODE]||vi===q.bufferContexts[N.MOTIONBLUR_BUFFER_DRAG])?(Qi={x:re.x*bt,y:re.y*bt},ks=Pt*bt,as=N.canvasWidth*bt,Es=N.canvasHeight*bt):(Qi=ee,ks=qt,as=N.canvasWidth,Es=N.canvasHeight),vi.setTransform(1,0,0,1,0,0),si==="motionBlur"?Te(vi,0,0,as,Es):!p&&(si===void 0||si)&&vi.clearRect(0,0,as,Es),x||(vi.translate(Qi.x,Qi.y),vi.scale(ks,ks)),O&&vi.translate(O.x,O.y),L&&vi.scale(L,L)}if(Z||(N.textureDrawLastFrame=!1),Z){if(N.textureDrawLastFrame=!0,!N.textureCache){N.textureCache={},N.textureCache.bb=H.mutableElements().boundingBox(),N.textureCache.texture=N.data.bufferCanvases[N.TEXTURE_BUFFER];var ze=N.data.bufferContexts[N.TEXTURE_BUFFER];ze.setTransform(1,0,0,1,0,0),ze.clearRect(0,0,N.canvasWidth*N.textureMult,N.canvasHeight*N.textureMult),N.render({forcedContext:ze,drawOnlyNodeLayer:!0,forcedPxRatio:j*N.textureMult});var Ut=N.textureCache.viewport={zoom:H.zoom(),pan:H.pan(),width:N.canvasWidth,height:N.canvasHeight};Ut.mpan={x:(0-Ut.pan.x)/Ut.zoom,y:(0-Ut.pan.y)/Ut.zoom}}W[N.DRAG]=!1,W[N.NODE]=!1;var me=q.contexts[N.NODE],yn=N.textureCache.texture,Ut=N.textureCache.viewport;me.setTransform(1,0,0,1,0,0),st?Te(me,0,0,Ut.width,Ut.height):me.clearRect(0,0,Ut.width,Ut.height);var nn=Nt.core("outside-texture-bg-color").value,qe=Nt.core("outside-texture-bg-opacity").value;N.colorFillStyle(me,nn[0],nn[1],nn[2],qe),me.fillRect(0,0,Ut.width,Ut.height);var Pt=H.zoom();ie(me,!1),me.clearRect(Ut.mpan.x,Ut.mpan.y,Ut.width/Ut.zoom/j,Ut.height/Ut.zoom/j),me.drawImage(yn,Ut.mpan.x,Ut.mpan.y,Ut.width/Ut.zoom/j,Ut.height/Ut.zoom/j)}else N.textureOnViewport&&!p&&(N.textureCache=null);var Tn=H.extent(),Xn=N.pinching||N.hoverData.dragging||N.swipePanning||N.data.wheelZooming||N.hoverData.draggingEles||N.cy.animated(),lr=N.hideEdgesOnViewport&&Xn,Sn=[];if(Sn[N.NODE]=!W[N.NODE]&&st&&!N.clearedForMotionBlur[N.NODE]||N.clearingMotionBlur,Sn[N.NODE]&&(N.clearedForMotionBlur[N.NODE]=!0),Sn[N.DRAG]=!W[N.DRAG]&&st&&!N.clearedForMotionBlur[N.DRAG]||N.clearingMotionBlur,Sn[N.DRAG]&&(N.clearedForMotionBlur[N.DRAG]=!0),W[N.NODE]||x||C||Sn[N.NODE]){var or=st&&!Sn[N.NODE]&&bt!==1,me=p||(or?N.data.bufferContexts[N.MOTIONBLUR_BUFFER_NODE]:q.contexts[N.NODE]),pr=st&&!or?"motionBlur":void 0;ie(me,pr),lr?N.drawCachedNodes(me,Ee.nondrag,j,Tn):N.drawLayeredElements(me,Ee.nondrag,j,Tn),N.debug&&N.drawDebugPoints(me,Ee.nondrag),!x&&!st&&(W[N.NODE]=!1)}if(!C&&(W[N.DRAG]||x||Sn[N.DRAG])){var or=st&&!Sn[N.DRAG]&&bt!==1,me=p||(or?N.data.bufferContexts[N.MOTIONBLUR_BUFFER_DRAG]:q.contexts[N.DRAG]);ie(me,st&&!or?"motionBlur":void 0),lr?N.drawCachedNodes(me,Ee.drag,j,Tn):N.drawCachedElements(me,Ee.drag,j,Tn),N.debug&&N.drawDebugPoints(me,Ee.drag),!x&&!st&&(W[N.DRAG]=!1)}if(N.showFps||!C&&W[N.SELECT_BOX]&&!x){var me=p||q.contexts[N.SELECT_BOX];if(ie(me),N.selection[4]==1&&(N.hoverData.selecting||N.touchData.selecting)){var Pt=N.cy.zoom(),kr=Nt.core("selection-box-border-width").value/Pt;me.lineWidth=kr,me.fillStyle="rgba("+Nt.core("selection-box-color").value[0]+","+Nt.core("selection-box-color").value[1]+","+Nt.core("selection-box-color").value[2]+","+Nt.core("selection-box-opacity").value+")",me.fillRect(N.selection[0],N.selection[1],N.selection[2]-N.selection[0],N.selection[3]-N.selection[1]),kr>0&&(me.strokeStyle="rgba("+Nt.core("selection-box-border-color").value[0]+","+Nt.core("selection-box-border-color").value[1]+","+Nt.core("selection-box-border-color").value[2]+","+Nt.core("selection-box-opacity").value+")",me.strokeRect(N.selection[0],N.selection[1],N.selection[2]-N.selection[0],N.selection[3]-N.selection[1]))}if(q.bgActivePosistion&&!N.hoverData.selecting){var Pt=N.cy.zoom(),wr=q.bgActivePosistion;me.fillStyle="rgba("+Nt.core("active-bg-color").value[0]+","+Nt.core("active-bg-color").value[1]+","+Nt.core("active-bg-color").value[2]+","+Nt.core("active-bg-opacity").value+")",me.beginPath(),me.arc(wr.x,wr.y,Nt.core("active-bg-size").pfValue/Pt,0,2*Math.PI),me.fill()}var Cr=N.lastRedrawTime;if(N.showFps&&Cr){Cr=Math.round(Cr);var $n=Math.round(1e3/Cr);me.setTransform(1,0,0,1,0,0),me.fillStyle="rgba(255, 0, 0, 0.75)",me.strokeStyle="rgba(255, 0, 0, 0.75)",me.lineWidth=1,me.fillText("1 frame = "+Cr+" ms = "+$n+" fps",0,20);var cr=60;me.strokeRect(0,30,250,20),me.fillRect(0,30,250*Math.min($n/cr,1),20)}x||(W[N.SELECT_BOX]=!1)}if(st&&bt!==1){var mr=q.contexts[N.NODE],Sr=N.data.bufferCanvases[N.MOTIONBLUR_BUFFER_NODE],gi=q.contexts[N.DRAG],ss=N.data.bufferCanvases[N.MOTIONBLUR_BUFFER_DRAG],na=function(si,Qi,ks){si.setTransform(1,0,0,1,0,0),ks||!Et?si.clearRect(0,0,N.canvasWidth,N.canvasHeight):Te(si,0,0,N.canvasWidth,N.canvasHeight);var as=bt;si.drawImage(Qi,0,0,N.canvasWidth*as,N.canvasHeight*as,0,0,N.canvasWidth,N.canvasHeight)};(W[N.NODE]||Sn[N.NODE])&&(na(mr,Sr,Sn[N.NODE]),W[N.NODE]=!1),(W[N.DRAG]||Sn[N.DRAG])&&(na(gi,ss,Sn[N.DRAG]),W[N.DRAG]=!1)}N.prevViewport=Ut,N.clearingMotionBlur&&(N.clearingMotionBlur=!1,N.motionBlurCleared=!0,N.motionBlur=!0),st&&(N.motionBlurTimeout=setTimeout(function(){N.motionBlurTimeout=null,N.clearedForMotionBlur[N.NODE]=!1,N.clearedForMotionBlur[N.DRAG]=!1,N.motionBlur=!1,N.clearingMotionBlur=!Z,N.mbFrames=0,W[N.NODE]=!0,W[N.DRAG]=!0,N.redraw()},Ent)),p||H.emit("render")};var gy={};gy.drawPolygonPath=function(y,p,x,C,L,O){var N=C/2,j=L/2;y.beginPath&&y.beginPath(),y.moveTo(p+N*O[0],x+j*O[1]);for(var H=1;H0&&N>0){bt.clearRect(0,0,O,N),bt.globalCompositeOperation="source-over";var pt=this.getCachedZSortedEles();if(y.full)bt.translate(-C.x1*q,-C.y1*q),bt.scale(q,q),this.drawElements(bt,pt),bt.scale(1/q,1/q),bt.translate(C.x1*q,C.y1*q);else{var _t=p.pan(),St={x:_t.x*q,y:_t.y*q};q*=p.zoom(),bt.translate(St.x,St.y),bt.scale(q,q),this.drawElements(bt,pt),bt.scale(1/q,1/q),bt.translate(-St.x,-St.y)}y.bg&&(bt.globalCompositeOperation="destination-over",bt.fillStyle=y.bg,bt.rect(0,0,O,N),bt.fill())}return st};function Tnt(y,p){for(var x=atob(y),C=new ArrayBuffer(x.length),L=new Uint8Array(C),O=0;O"u"?"undefined":f(OffscreenCanvas))!=="undefined"?x=new OffscreenCanvas(y,p):(x=document.createElement("canvas"),x.width=y,x.height=p),x},[jj,bb,wb,aE,S4,b6,dg,gy,oE,Yj].forEach(function(y){we(xc,y)});var cp=[{name:"null",impl:mj},{name:"base",impl:Dj},{name:"canvas",impl:Xj}],Cnt=[{type:"layout",extensions:Vet},{type:"renderer",extensions:cp}],Snt={},_nt={};function Ant(y,p,x){var C=x,L=function(de){Gc("Can not register `"+p+"` for `"+y+"` since `"+de+"` already exists in the prototype and can not be overridden")};if(y==="core"){if(tE.prototype[p])return L(p);tE.prototype[p]=x}else if(y==="collection"){if(w1.prototype[p])return L(p);w1.prototype[p]=x}else if(y==="layout"){for(var O=function(de){this.options=de,x.call(this,de),it(this._private)||(this._private={}),this._private.cy=de.cy,this._private.listeners=[],this.createEmitter()},N=O.prototype=Object.create(x.prototype),j=[],H=0;Hz&&(this.rect.x-=(this.labelWidth-z)/2,this.setWidth(this.labelWidth)),this.labelHeight>Y&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-Y)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-Y),this.setHeight(this.labelHeight))}}},F.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==b.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},F.prototype.transform=function(B){var z=this.rect.x;z>S.WORLD_BOUNDARY?z=S.WORLD_BOUNDARY:z<-S.WORLD_BOUNDARY&&(z=-S.WORLD_BOUNDARY);var Y=this.rect.y;Y>S.WORLD_BOUNDARY?Y=S.WORLD_BOUNDARY:Y<-S.WORLD_BOUNDARY&&(Y=-S.WORLD_BOUNDARY);var nt=new M(z,Y),ot=B.inverseTransformPoint(nt);this.setLocation(ot.x,ot.y)},F.prototype.getLeft=function(){return this.rect.x},F.prototype.getRight=function(){return this.rect.x+this.rect.width},F.prototype.getTop=function(){return this.rect.y},F.prototype.getBottom=function(){return this.rect.y+this.rect.height},F.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},f.exports=F},function(f,g,w){function v(b,E){b==null&&E==null?(this.x=0,this.y=0):(this.x=b,this.y=E)}v.prototype.getX=function(){return this.x},v.prototype.getY=function(){return this.y},v.prototype.setX=function(b){this.x=b},v.prototype.setY=function(b){this.y=b},v.prototype.getDifference=function(b){return new DimensionD(this.x-b.x,this.y-b.y)},v.prototype.getCopy=function(){return new v(this.x,this.y)},v.prototype.translate=function(b){return this.x+=b.width,this.y+=b.height,this},f.exports=v},function(f,g,w){var v=w(2),b=w(10),E=w(0),S=w(6),_=w(3),M=w(1),F=w(13),R=w(12),B=w(11);function z(nt,ot,ft){v.call(this,ft),this.estimatedSize=b.MIN_VALUE,this.margin=E.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=nt,ot!=null&&ot instanceof S?this.graphManager=ot:ot!=null&&ot instanceof Layout&&(this.graphManager=ot.graphManager)}z.prototype=Object.create(v.prototype);for(var Y in v)z[Y]=v[Y];z.prototype.getNodes=function(){return this.nodes},z.prototype.getEdges=function(){return this.edges},z.prototype.getGraphManager=function(){return this.graphManager},z.prototype.getParent=function(){return this.parent},z.prototype.getLeft=function(){return this.left},z.prototype.getRight=function(){return this.right},z.prototype.getTop=function(){return this.top},z.prototype.getBottom=function(){return this.bottom},z.prototype.isConnected=function(){return this.isConnected},z.prototype.add=function(nt,ot,ft){if(ot==null&&ft==null){var wt=nt;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(wt)>-1)throw"Node already in graph!";return wt.owner=this,this.getNodes().push(wt),wt}else{var mt=nt;if(!(this.getNodes().indexOf(ot)>-1&&this.getNodes().indexOf(ft)>-1))throw"Source or target not in graph!";if(!(ot.owner==ft.owner&&ot.owner==this))throw"Both owners must be this graph!";return ot.owner!=ft.owner?null:(mt.source=ot,mt.target=ft,mt.isInterGraph=!1,this.getEdges().push(mt),ot.edges.push(mt),ft!=ot&&ft.edges.push(mt),mt)}},z.prototype.remove=function(nt){var ot=nt;if(nt instanceof _){if(ot==null)throw"Node is null!";if(!(ot.owner!=null&&ot.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var ft=ot.edges.slice(),wt,mt=ft.length,ct=0;ct-1&>>-1))throw"Source and/or target doesn't know this edge!";wt.source.edges.splice(it,1),wt.target!=wt.source&&wt.target.edges.splice(gt,1);var rt=wt.source.owner.getEdges().indexOf(wt);if(rt==-1)throw"Not in owner's edge list!";wt.source.owner.getEdges().splice(rt,1)}},z.prototype.updateLeftTop=function(){for(var nt=b.MAX_VALUE,ot=b.MAX_VALUE,ft,wt,mt,ct=this.getNodes(),rt=ct.length,it=0;itft&&(nt=ft),ot>wt&&(ot=wt)}return nt==b.MAX_VALUE?null:(ct[0].getParent().paddingLeft!=null?mt=ct[0].getParent().paddingLeft:mt=this.margin,this.left=ot-mt,this.top=nt-mt,new R(this.left,this.top))},z.prototype.updateBounds=function(nt){for(var ot=b.MAX_VALUE,ft=-b.MAX_VALUE,wt=b.MAX_VALUE,mt=-b.MAX_VALUE,ct,rt,it,gt,Q,dt=this.nodes,K=dt.length,yt=0;ytct&&(ot=ct),ftit&&(wt=it),mtct&&(ot=ct),ftit&&(wt=it),mt=this.nodes.length){var K=0;ft.forEach(function(yt){yt.owner==nt&&K++}),K==this.nodes.length&&(this.isConnected=!0)}},f.exports=z},function(f,g,w){var v,b=w(1);function E(S){v=w(5),this.layout=S,this.graphs=[],this.edges=[]}E.prototype.addRoot=function(){var S=this.layout.newGraph(),_=this.layout.newNode(null),M=this.add(S,_);return this.setRootGraph(M),this.rootGraph},E.prototype.add=function(S,_,M,F,R){if(M==null&&F==null&&R==null){if(S==null)throw"Graph is null!";if(_==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(_.child!=null)throw"Already has a child!";return S.parent=_,_.child=S,S}else{R=M,F=_,M=S;var B=F.getOwner(),z=R.getOwner();if(!(B!=null&&B.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(z!=null&&z.getGraphManager()==this))throw"Target not in this graph mgr!";if(B==z)return M.isInterGraph=!1,B.add(M,F,R);if(M.isInterGraph=!0,M.source=F,M.target=R,this.edges.indexOf(M)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(M),!(M.source!=null&&M.target!=null))throw"Edge source and/or target is null!";if(!(M.source.edges.indexOf(M)==-1&&M.target.edges.indexOf(M)==-1))throw"Edge already in source and/or target incidency list!";return M.source.edges.push(M),M.target.edges.push(M),M}},E.prototype.remove=function(S){if(S instanceof v){var _=S;if(_.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(_==this.rootGraph||_.parent!=null&&_.parent.graphManager==this))throw"Invalid parent node!";var M=[];M=M.concat(_.getEdges());for(var F,R=M.length,B=0;B=S.getRight()?_[0]+=Math.min(S.getX()-E.getX(),E.getRight()-S.getRight()):S.getX()<=E.getX()&&S.getRight()>=E.getRight()&&(_[0]+=Math.min(E.getX()-S.getX(),S.getRight()-E.getRight())),E.getY()<=S.getY()&&E.getBottom()>=S.getBottom()?_[1]+=Math.min(S.getY()-E.getY(),E.getBottom()-S.getBottom()):S.getY()<=E.getY()&&S.getBottom()>=E.getBottom()&&(_[1]+=Math.min(E.getY()-S.getY(),S.getBottom()-E.getBottom()));var R=Math.abs((S.getCenterY()-E.getCenterY())/(S.getCenterX()-E.getCenterX()));S.getCenterY()===E.getCenterY()&&S.getCenterX()===E.getCenterX()&&(R=1);var B=R*_[0],z=_[1]/R;_[0]B)return _[0]=M,_[1]=Y,_[2]=R,_[3]=dt,!1;if(FR)return _[0]=z,_[1]=F,_[2]=gt,_[3]=B,!1;if(MR?(_[0]=ot,_[1]=ft,Ot=!0):(_[0]=nt,_[1]=Y,Ot=!0):jt===Ft&&(M>R?(_[0]=z,_[1]=Y,Ot=!0):(_[0]=wt,_[1]=ft,Ot=!0)),-xt===Ft?R>M?(_[2]=Q,_[3]=dt,It=!0):(_[2]=gt,_[3]=it,It=!0):xt===Ft&&(R>M?(_[2]=rt,_[3]=it,It=!0):(_[2]=K,_[3]=dt,It=!0)),Ot&&It)return!1;if(M>R?F>B?(Ct=this.getCardinalDirection(jt,Ft,4),kt=this.getCardinalDirection(xt,Ft,2)):(Ct=this.getCardinalDirection(-jt,Ft,3),kt=this.getCardinalDirection(-xt,Ft,1)):F>B?(Ct=this.getCardinalDirection(-jt,Ft,1),kt=this.getCardinalDirection(-xt,Ft,3)):(Ct=this.getCardinalDirection(jt,Ft,2),kt=this.getCardinalDirection(xt,Ft,4)),!Ot)switch(Ct){case 1:Fe=Y,Gt=M+-ct/Ft,_[0]=Gt,_[1]=Fe;break;case 2:Gt=wt,Fe=F+mt*Ft,_[0]=Gt,_[1]=Fe;break;case 3:Fe=ft,Gt=M+ct/Ft,_[0]=Gt,_[1]=Fe;break;case 4:Gt=ot,Fe=F+-mt*Ft,_[0]=Gt,_[1]=Fe;break}if(!It)switch(kt){case 1:pn=it,Mt=R+-V/Ft,_[2]=Mt,_[3]=pn;break;case 2:Mt=K,pn=B+yt*Ft,_[2]=Mt,_[3]=pn;break;case 3:pn=dt,Mt=R+V/Ft,_[2]=Mt,_[3]=pn;break;case 4:Mt=Q,pn=B+-yt*Ft,_[2]=Mt,_[3]=pn;break}}return!1},b.getCardinalDirection=function(E,S,_){return E>S?_:1+_%4},b.getIntersection=function(E,S,_,M){if(M==null)return this.getIntersection2(E,S,_);var F=E.x,R=E.y,B=S.x,z=S.y,Y=_.x,nt=_.y,ot=M.x,ft=M.y,wt=void 0,mt=void 0,ct=void 0,rt=void 0,it=void 0,gt=void 0,Q=void 0,dt=void 0,K=void 0;return ct=z-R,it=F-B,Q=B*R-F*z,rt=ft-nt,gt=Y-ot,dt=ot*nt-Y*ft,K=ct*gt-rt*it,K===0?null:(wt=(it*dt-gt*Q)/K,mt=(rt*Q-ct*dt)/K,new v(wt,mt))},b.angleOfVector=function(E,S,_,M){var F=void 0;return E!==_?(F=Math.atan((M-S)/(_-E)),_0?1:b<0?-1:0},v.floor=function(b){return b<0?Math.ceil(b):Math.floor(b)},v.ceil=function(b){return b<0?Math.floor(b):Math.ceil(b)},f.exports=v},function(f,g,w){function v(){}v.MAX_VALUE=2147483647,v.MIN_VALUE=-2147483648,f.exports=v},function(f,g,w){var v=function(){function F(R,B){for(var z=0;z"u"?"undefined":v(E);return E==null||S!="object"&&S!="function"},f.exports=b},function(f,g,w){function v(Y){if(Array.isArray(Y)){for(var nt=0,ot=Array(Y.length);nt0&&nt;){for(ct.push(it[0]);ct.length>0&&nt;){var gt=ct[0];ct.splice(0,1),mt.add(gt);for(var Q=gt.getEdges(),wt=0;wt-1&&it.splice(V,1)}mt=new Set,rt=new Map}}return Y},z.prototype.createDummyNodesForBendpoints=function(Y){for(var nt=[],ot=Y.source,ft=this.graphManager.calcLowestCommonAncestor(Y.source,Y.target),wt=0;wt0){for(var ft=this.edgeToDummyNodes.get(ot),wt=0;wt=0&&nt.splice(dt,1);var K=rt.getNeighborsList();K.forEach(function(Ot){if(ot.indexOf(Ot)<0){var It=ft.get(Ot),jt=It-1;jt==1&>.push(Ot),ft.set(Ot,jt)}})}ot=ot.concat(gt),(nt.length==1||nt.length==2)&&(wt=!0,mt=nt[0])}return mt},z.prototype.setGraphManager=function(Y){this.graphManager=Y},f.exports=z},function(f,g,w){function v(){}v.seed=1,v.x=0,v.nextDouble=function(){return v.x=Math.sin(v.seed++)*1e4,v.x-Math.floor(v.x)},f.exports=v},function(f,g,w){var v=w(4);function b(E,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}b.prototype.getWorldOrgX=function(){return this.lworldOrgX},b.prototype.setWorldOrgX=function(E){this.lworldOrgX=E},b.prototype.getWorldOrgY=function(){return this.lworldOrgY},b.prototype.setWorldOrgY=function(E){this.lworldOrgY=E},b.prototype.getWorldExtX=function(){return this.lworldExtX},b.prototype.setWorldExtX=function(E){this.lworldExtX=E},b.prototype.getWorldExtY=function(){return this.lworldExtY},b.prototype.setWorldExtY=function(E){this.lworldExtY=E},b.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},b.prototype.setDeviceOrgX=function(E){this.ldeviceOrgX=E},b.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},b.prototype.setDeviceOrgY=function(E){this.ldeviceOrgY=E},b.prototype.getDeviceExtX=function(){return this.ldeviceExtX},b.prototype.setDeviceExtX=function(E){this.ldeviceExtX=E},b.prototype.getDeviceExtY=function(){return this.ldeviceExtY},b.prototype.setDeviceExtY=function(E){this.ldeviceExtY=E},b.prototype.transformX=function(E){var S=0,_=this.lworldExtX;return _!=0&&(S=this.ldeviceOrgX+(E-this.lworldOrgX)*this.ldeviceExtX/_),S},b.prototype.transformY=function(E){var S=0,_=this.lworldExtY;return _!=0&&(S=this.ldeviceOrgY+(E-this.lworldOrgY)*this.ldeviceExtY/_),S},b.prototype.inverseTransformX=function(E){var S=0,_=this.ldeviceExtX;return _!=0&&(S=this.lworldOrgX+(E-this.ldeviceOrgX)*this.lworldExtX/_),S},b.prototype.inverseTransformY=function(E){var S=0,_=this.ldeviceExtY;return _!=0&&(S=this.lworldOrgY+(E-this.ldeviceOrgY)*this.lworldExtY/_),S},b.prototype.inverseTransformPoint=function(E){var S=new v(this.inverseTransformX(E.x),this.inverseTransformY(E.y));return S},f.exports=b},function(f,g,w){function v(B){if(Array.isArray(B)){for(var z=0,Y=Array(B.length);zE.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*E.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(B-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-E.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT_INCREMENTAL):(B>E.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(E.COOLING_ADAPTATION_FACTOR,1-(B-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*(1-E.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},F.prototype.calcSpringForces=function(){for(var B=this.getAllEdges(),z,Y=0;Y0&&arguments[0]!==void 0?arguments[0]:!0,z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,Y,nt,ot,ft,wt=this.getAllNodes(),mt;if(this.useFRGridVariant)for(this.totalIterations%E.GRID_CALCULATION_CHECK_PERIOD==1&&B&&this.updateGrid(),mt=new Set,Y=0;Yct||mt>ct)&&(B.gravitationForceX=-this.gravityConstant*ot,B.gravitationForceY=-this.gravityConstant*ft)):(ct=z.getEstimatedSize()*this.compoundGravityRangeFactor,(wt>ct||mt>ct)&&(B.gravitationForceX=-this.gravityConstant*ot*this.compoundGravityConstant,B.gravitationForceY=-this.gravityConstant*ft*this.compoundGravityConstant))},F.prototype.isConverged=function(){var B,z=!1;return this.totalIterations>this.maxIterations/3&&(z=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),B=this.totalDisplacement=wt.length||ct>=wt[0].length)){for(var rt=0;rtF}}]),_}();f.exports=S},function(f,g,w){var v=function(){function S(_,M){for(var F=0;F2&&arguments[2]!==void 0?arguments[2]:1,R=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,B=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;b(this,S),this.sequence1=_,this.sequence2=M,this.match_score=F,this.mismatch_penalty=R,this.gap_penalty=B,this.iMax=_.length+1,this.jMax=M.length+1,this.grid=new Array(this.iMax);for(var z=0;z=0;_--){var M=this.listeners[_];M.event===E&&M.callback===S&&this.listeners.splice(_,1)}},b.emit=function(E,S){for(var _=0;_M.coolingFactor*M.maxNodeDisplacement&&(this.displacementX=M.coolingFactor*M.maxNodeDisplacement*E.sign(this.displacementX)),Math.abs(this.displacementY)>M.coolingFactor*M.maxNodeDisplacement&&(this.displacementY=M.coolingFactor*M.maxNodeDisplacement*E.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),M.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(M,F){for(var R=this.getChild().getNodes(),B,z=0;z0)this.positionNodesRadially(it);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var gt=new Set(this.getAllNodes()),Q=this.nodesWithGravity.filter(function(dt){return gt.has(dt)});this.graphManager.setAllNodesToApplyGravitation(Q),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},ct.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%R.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var it=new Set(this.getAllNodes()),gt=this.nodesWithGravity.filter(function(K){return it.has(K)});this.graphManager.setAllNodesToApplyGravitation(gt),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=R.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=R.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var Q=!this.isTreeGrowing&&!this.isGrowthFinished,dt=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(Q,dt),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},ct.prototype.getPositionsData=function(){for(var it=this.graphManager.getAllNodes(),gt={},Q=0;Q1){var Ot;for(Ot=0;Otdt&&(dt=Math.floor(V.y)),yt=Math.floor(V.x+F.DEFAULT_COMPONENT_SEPERATION)}this.transform(new Y(B.WORLD_CENTER_X-V.x/2,B.WORLD_CENTER_Y-V.y/2))},ct.radialLayout=function(it,gt,Q){var dt=Math.max(this.maxDiagonalInTree(it),F.DEFAULT_RADIAL_SEPARATION);ct.branchRadialLayout(gt,null,0,359,0,dt);var K=wt.calculateBounds(it),yt=new mt;yt.setDeviceOrgX(K.getMinX()),yt.setDeviceOrgY(K.getMinY()),yt.setWorldOrgX(Q.x),yt.setWorldOrgY(Q.y);for(var V=0;V1;){var pn=Mt[0];Mt.splice(0,1);var Ae=Ft.indexOf(pn);Ae>=0&&Ft.splice(Ae,1),Gt--,Ct--}gt!=null?Fe=(Ft.indexOf(Mt[0])+1)%Gt:Fe=0;for(var ye=Math.abs(dt-Q)/Ct,tn=Fe;kt!=Ct;tn=++tn%Gt){var sn=Ft[tn].getOtherEnd(it);if(sn!=gt){var be=(Q+kt*ye)%360,Ne=(be+ye)%360;ct.branchRadialLayout(sn,it,be,Ne,K+yt,yt),kt++}}},ct.maxDiagonalInTree=function(it){for(var gt=ot.MIN_VALUE,Q=0;Qgt&&(gt=K)}return gt},ct.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},ct.prototype.groupZeroDegreeMembers=function(){var it=this,gt={};this.memberGroups={},this.idToDummyNode={};for(var Q=[],dt=this.graphManager.getAllNodes(),K=0;K"u"&&(gt[Ot]=[]),gt[Ot]=gt[Ot].concat(yt)}Object.keys(gt).forEach(function(It){if(gt[It].length>1){var jt="DummyCompound_"+It;it.memberGroups[jt]=gt[It];var xt=gt[It][0].getParent(),Ft=new _(it.graphManager);Ft.id=jt,Ft.paddingLeft=xt.paddingLeft||0,Ft.paddingRight=xt.paddingRight||0,Ft.paddingBottom=xt.paddingBottom||0,Ft.paddingTop=xt.paddingTop||0,it.idToDummyNode[jt]=Ft;var Ct=it.getGraphManager().add(it.newGraph(),Ft),kt=xt.getChild();kt.add(Ft);for(var Gt=0;Gt=0;it--){var gt=this.compoundOrder[it],Q=gt.id,dt=gt.paddingLeft,K=gt.paddingTop;this.adjustLocations(this.tiledMemberPack[Q],gt.rect.x,gt.rect.y,dt,K)}},ct.prototype.repopulateZeroDegreeMembers=function(){var it=this,gt=this.tiledZeroDegreePack;Object.keys(gt).forEach(function(Q){var dt=it.idToDummyNode[Q],K=dt.paddingLeft,yt=dt.paddingTop;it.adjustLocations(gt[Q],dt.rect.x,dt.rect.y,K,yt)})},ct.prototype.getToBeTiled=function(it){var gt=it.id;if(this.toBeTiled[gt]!=null)return this.toBeTiled[gt];var Q=it.getChild();if(Q==null)return this.toBeTiled[gt]=!1,!1;for(var dt=Q.getNodes(),K=0;K0)return this.toBeTiled[gt]=!1,!1;if(yt.getChild()==null){this.toBeTiled[yt.id]=!1;continue}if(!this.getToBeTiled(yt))return this.toBeTiled[gt]=!1,!1}return this.toBeTiled[gt]=!0,!0},ct.prototype.getNodeDegree=function(it){it.id;for(var gt=it.getEdges(),Q=0,dt=0;dtIt&&(It=xt.rect.height)}Q+=It+it.verticalPadding}},ct.prototype.tileCompoundMembers=function(it,gt){var Q=this;this.tiledMemberPack=[],Object.keys(it).forEach(function(dt){var K=gt[dt];Q.tiledMemberPack[dt]=Q.tileNodes(it[dt],K.paddingLeft+K.paddingRight),K.rect.width=Q.tiledMemberPack[dt].width,K.rect.height=Q.tiledMemberPack[dt].height})},ct.prototype.tileNodes=function(it,gt){var Q=F.TILING_PADDING_VERTICAL,dt=F.TILING_PADDING_HORIZONTAL,K={rows:[],rowWidth:[],rowHeight:[],width:0,height:gt,verticalPadding:Q,horizontalPadding:dt};it.sort(function(Ot,It){return Ot.rect.width*Ot.rect.height>It.rect.width*It.rect.height?-1:Ot.rect.width*Ot.rect.height0&&(V+=it.horizontalPadding),it.rowWidth[Q]=V,it.width0&&(Ot+=it.verticalPadding);var It=0;Ot>it.rowHeight[Q]&&(It=it.rowHeight[Q],it.rowHeight[Q]=Ot,It=it.rowHeight[Q]-It),it.height+=It,it.rows[Q].push(gt)},ct.prototype.getShortestRowIndex=function(it){for(var gt=-1,Q=Number.MAX_VALUE,dt=0;dtQ&&(gt=dt,Q=it.rowWidth[dt]);return gt},ct.prototype.canAddHorizontal=function(it,gt,Q){var dt=this.getShortestRowIndex(it);if(dt<0)return!0;var K=it.rowWidth[dt];if(K+it.horizontalPadding+gt<=it.width)return!0;var yt=0;it.rowHeight[dt]0&&(yt=Q+it.verticalPadding-it.rowHeight[dt]);var V;it.width-K>=gt+it.horizontalPadding?V=(it.height+yt)/(K+gt+it.horizontalPadding):V=(it.height+yt)/it.width,yt=Q+it.verticalPadding;var Ot;return it.widthyt&>!=Q){dt.splice(-1,1),it.rows[Q].push(K),it.rowWidth[gt]=it.rowWidth[gt]-yt,it.rowWidth[Q]=it.rowWidth[Q]+yt,it.width=it.rowWidth[instance.getLongestRowIndex(it)];for(var V=Number.MIN_VALUE,Ot=0;OtV&&(V=dt[Ot].height);gt>0&&(V+=it.verticalPadding);var It=it.rowHeight[gt]+it.rowHeight[Q];it.rowHeight[gt]=V,it.rowHeight[Q]0)for(var kt=K;kt<=yt;kt++)Ct[0]+=this.grid[kt][V-1].length+this.grid[kt][V].length-1;if(yt0)for(var kt=V;kt<=Ot;kt++)Ct[3]+=this.grid[K-1][kt].length+this.grid[K][kt].length-1;for(var Gt=ot.MAX_VALUE,Fe,Mt,pn=0;pn0){var Ot;Ot=mt.getGraphManager().add(mt.newGraph(),Q),this.processChildrenList(Ot,gt,mt)}}},Y.prototype.stop=function(){return this.stopped=!0,this};var ot=function(wt){wt("layout","cose-bilkent",Y)};typeof cytoscape<"u"&&ot(cytoscape),g.exports=ot}])})})(WHt);var ien=WHt.exports;const sen=e9(ien),aen=12,oen=function(i,a,f,g){a.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("d",`M0 ${f.height-5} v${-f.height+2*5} q0,-5 5,-5 h${f.width-2*5} q5,0 5,5 v${f.height-5} H0 Z`),a.append("line").attr("class","node-line-"+g).attr("x1",0).attr("y1",f.height).attr("x2",f.width).attr("y2",f.height)},cen=function(i,a,f){a.append("rect").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("height",f.height).attr("width",f.width)},uen=function(i,a,f){const g=f.width,w=f.height,v=.15*g,b=.25*g,E=.35*g,S=.2*g;a.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("d",`M0 0 a${v},${v} 0 0,1 ${g*.25},${-1*g*.1} + a${E},${E} 1 0,1 ${g*.4},${-1*g*.1} + a${b},${b} 1 0,1 ${g*.35},${1*g*.2} + + a${v},${v} 1 0,1 ${g*.15},${1*w*.35} + a${S},${S} 1 0,1 ${-1*g*.15},${1*w*.65} + + a${b},${v} 1 0,1 ${-1*g*.25},${g*.15} + a${E},${E} 1 0,1 ${-1*g*.5},0 + a${v},${v} 1 0,1 ${-1*g*.25},${-1*g*.15} + + a${v},${v} 1 0,1 ${-1*g*.1},${-1*w*.35} + a${S},${S} 1 0,1 ${g*.1},${-1*w*.65} + + H0 V0 Z`)},len=function(i,a,f){const g=f.width,w=f.height,v=.15*g;a.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("d",`M0 0 a${v},${v} 1 0,0 ${g*.25},${-1*w*.1} + a${v},${v} 1 0,0 ${g*.25},0 + a${v},${v} 1 0,0 ${g*.25},0 + a${v},${v} 1 0,0 ${g*.25},${1*w*.1} + + a${v},${v} 1 0,0 ${g*.15},${1*w*.33} + a${v*.8},${v*.8} 1 0,0 0,${1*w*.34} + a${v},${v} 1 0,0 ${-1*g*.15},${1*w*.33} + + a${v},${v} 1 0,0 ${-1*g*.25},${w*.15} + a${v},${v} 1 0,0 ${-1*g*.25},0 + a${v},${v} 1 0,0 ${-1*g*.25},0 + a${v},${v} 1 0,0 ${-1*g*.25},${-1*w*.15} + + a${v},${v} 1 0,0 ${-1*g*.1},${-1*w*.33} + a${v*.8},${v*.8} 1 0,0 0,${-1*w*.34} + a${v},${v} 1 0,0 ${g*.1},${-1*w*.33} + + H0 V0 Z`)},hen=function(i,a,f){a.append("circle").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("r",f.width/2)};function fen(i,a,f,g,w){return i.insert("polygon",":first-child").attr("points",g.map(function(v){return v.x+","+v.y}).join(" ")).attr("transform","translate("+(w.width-a)/2+", "+f+")")}const den=function(i,a,f){const g=f.height,v=g/4,b=f.width-f.padding+2*v,E=[{x:v,y:0},{x:b-v,y:0},{x:b,y:-g/2},{x:b-v,y:-g},{x:v,y:-g},{x:0,y:-g/2}];fen(a,b,g,E,f)},gen=function(i,a,f){a.append("rect").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("height",f.height).attr("rx",f.padding).attr("ry",f.padding).attr("width",f.width)},pen=function(i,a,f,g,w){const v=w.htmlLabels,b=g%(aen-1),E=a.append("g");f.section=b;let S="section-"+b;b<0&&(S+=" section-root"),E.attr("class",(f.class?f.class+" ":"")+"mindmap-node "+S);const _=E.append("g"),M=E.append("g"),F=f.descr.replace(/()/g,` +`);ZY(M,F,{useHtmlLabels:v,width:f.width,classes:"mindmap-node-label"}),v||M.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const R=M.node().getBBox(),[B]=k9(w.fontSize);if(f.height=R.height+B*1.1*.5+f.padding,f.width=R.width+2*f.padding,f.icon)if(f.type===i.nodeType.CIRCLE)f.height+=50,f.width+=50,E.append("foreignObject").attr("height","50px").attr("width",f.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+b+" "+f.icon),M.attr("transform","translate("+f.width/2+", "+(f.height/2-1.5*f.padding)+")");else{f.width+=50;const z=f.height;f.height=Math.max(z,60);const Y=Math.abs(f.height-z);E.append("foreignObject").attr("width","60px").attr("height",f.height).attr("style","text-align: center;margin-top:"+Y/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+b+" "+f.icon),M.attr("transform","translate("+(25+f.width/2)+", "+(Y/2+f.padding/2)+")")}else if(v){const z=(f.width-R.width)/2,Y=(f.height-R.height)/2;M.attr("transform","translate("+z+", "+Y+")")}else{const z=f.width/2,Y=f.padding/2;M.attr("transform","translate("+z+", "+Y+")")}switch(f.type){case i.nodeType.DEFAULT:oen(i,_,f,b);break;case i.nodeType.ROUNDED_RECT:gen(i,_,f);break;case i.nodeType.RECT:cen(i,_,f);break;case i.nodeType.CIRCLE:_.attr("transform","translate("+f.width/2+", "+ +f.height/2+")"),hen(i,_,f);break;case i.nodeType.CLOUD:uen(i,_,f);break;case i.nodeType.BANG:len(i,_,f);break;case i.nodeType.HEXAGON:den(i,_,f);break}return i.setElementForId(f.id,E),f.height},ben=function(i,a){const f=i.getElementById(a.id),g=a.x||0,w=a.y||0;f.attr("transform","translate("+g+","+w+")")};KHt.use(sen);function QHt(i,a,f,g,w){pen(i,a,f,g,w),f.children&&f.children.forEach((v,b)=>{QHt(i,a,v,g<0?b:g,w)})}function wen(i,a){a.edges().map((f,g)=>{const w=f.data();if(f[0]._private.bodyBounds){const v=f[0]._private.rscratch;Kt.trace("Edge: ",g,w),i.insert("path").attr("d",`M ${v.startX},${v.startY} L ${v.midX},${v.midY} L${v.endX},${v.endY} `).attr("class","edge section-edge-"+w.section+" edge-depth-"+w.depth)}})}function JHt(i,a,f,g){a.add({group:"nodes",data:{id:i.id.toString(),labelText:i.descr,height:i.height,width:i.width,level:g,nodeId:i.id,padding:i.padding,type:i.type},position:{x:i.x,y:i.y}}),i.children&&i.children.forEach(w=>{JHt(w,a,f,g+1),a.add({group:"edges",data:{id:`${i.id}_${w.id}`,source:i.id,target:w.id,depth:g,section:w.section}})})}function men(i,a){return new Promise(f=>{const g=Tr("body").append("div").attr("id","cy").attr("style","display:none"),w=KHt({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});g.remove(),JHt(i,w,a,0),w.nodes().forEach(function(v){v.layoutDimensions=()=>{const b=v.data();return{w:b.width,h:b.height}}}),w.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),w.ready(v=>{Kt.info("Ready",v),f(w)})})}function ven(i,a){a.nodes().map((f,g)=>{const w=f.data();w.x=f.position().x,w.y=f.position().y,ben(i,w);const v=i.getElementById(w.nodeId);Kt.info("Id:",g,"Position: (",f.position().x,", ",f.position().y,")",w),v.attr("transform",`translate(${f.position().x-w.width/2}, ${f.position().y-w.height/2})`),v.attr("attr",`apa-${g})`)})}const yen={draw:async(i,a,f,g)=>{var F,R;Kt.debug(`Rendering mindmap diagram +`+i);const w=g.db,v=w.getMindmap();if(!v)return;const b=Re();b.htmlLabels=!1;const E=FF(a),S=E.append("g");S.attr("class","mindmap-edges");const _=E.append("g");_.attr("class","mindmap-nodes"),QHt(w,_,v,-1,b);const M=await men(v,b);wen(S,M),ven(w,M),w8(void 0,E,((F=b.mindmap)==null?void 0:F.padding)??Bl.mindmap.padding,((R=b.mindmap)==null?void 0:R.useMaxWidth)??Bl.mindmap.useMaxWidth)}},xen=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${xen(i)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`}},Symbol.toStringTag,{value:"Module"}));var w2t=function(){var i=function(E,S,_,M){for(_=_||{},M=E.length;M--;_[E[M]]=S);return _},a=[1,9],f=[1,10],g=[1,5,10,12],w={trace:function(){},yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:function(S,_,M,F,R,B,z){var Y=B.length-1;switch(R){case 7:const nt=F.findOrCreateNode(B[Y-4].trim().replaceAll('""','"')),ot=F.findOrCreateNode(B[Y-2].trim().replaceAll('""','"')),ft=parseFloat(B[Y].trim());F.addLink(nt,ot,ft);break;case 8:case 9:case 11:this.$=B[Y];break;case 10:this.$=B[Y-1];break}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:a,20:f},{1:[2,6],7:11,10:[1,12]},i(f,[2,4],{9:13,5:[1,14]}),{12:[1,15]},i(g,[2,8]),i(g,[2,9]),{19:[1,16]},i(g,[2,11]),{1:[2,1]},{1:[2,5]},i(f,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:a,20:f},{15:18,16:7,17:8,18:a,20:f},{18:[1,19]},i(f,[2,3]),{12:[1,20]},i(g,[2,10]),{15:21,16:7,17:8,18:a,20:f},i([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(S,_){if(_.recoverable)this.trace(S);else{var M=new Error(S);throw M.hash=_,M}},parse:function(S){var _=this,M=[0],F=[],R=[null],B=[],z=this.table,Y="",nt=0,ot=0,ft=2,wt=1,mt=B.slice.call(arguments,1),ct=Object.create(this.lexer),rt={yy:{}};for(var it in this.yy)Object.prototype.hasOwnProperty.call(this.yy,it)&&(rt.yy[it]=this.yy[it]);ct.setInput(S,rt.yy),rt.yy.lexer=ct,rt.yy.parser=this,typeof ct.yylloc>"u"&&(ct.yylloc={});var gt=ct.yylloc;B.push(gt);var Q=ct.options&&ct.options.ranges;typeof rt.yy.parseError=="function"?this.parseError=rt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(){var Gt;return Gt=F.pop()||ct.lex()||wt,typeof Gt!="number"&&(Gt instanceof Array&&(F=Gt,Gt=F.pop()),Gt=_.symbols_[Gt]||Gt),Gt}for(var K,yt,V,Ot,It={},jt,xt,Ft,Ct;;){if(yt=M[M.length-1],this.defaultActions[yt]?V=this.defaultActions[yt]:((K===null||typeof K>"u")&&(K=dt()),V=z[yt]&&z[yt][K]),typeof V>"u"||!V.length||!V[0]){var kt="";Ct=[];for(jt in z[yt])this.terminals_[jt]&&jt>ft&&Ct.push("'"+this.terminals_[jt]+"'");ct.showPosition?kt="Parse error on line "+(nt+1)+`: +`+ct.showPosition()+` +Expecting `+Ct.join(", ")+", got '"+(this.terminals_[K]||K)+"'":kt="Parse error on line "+(nt+1)+": Unexpected "+(K==wt?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(kt,{text:ct.match,token:this.terminals_[K]||K,line:ct.yylineno,loc:gt,expected:Ct})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+K);switch(V[0]){case 1:M.push(K),R.push(ct.yytext),B.push(ct.yylloc),M.push(V[1]),K=null,ot=ct.yyleng,Y=ct.yytext,nt=ct.yylineno,gt=ct.yylloc;break;case 2:if(xt=this.productions_[V[1]][1],It.$=R[R.length-xt],It._$={first_line:B[B.length-(xt||1)].first_line,last_line:B[B.length-1].last_line,first_column:B[B.length-(xt||1)].first_column,last_column:B[B.length-1].last_column},Q&&(It._$.range=[B[B.length-(xt||1)].range[0],B[B.length-1].range[1]]),Ot=this.performAction.apply(It,[Y,ot,nt,rt.yy,V[1],R,B].concat(mt)),typeof Ot<"u")return Ot;xt&&(M=M.slice(0,-1*xt*2),R=R.slice(0,-1*xt),B=B.slice(0,-1*xt)),M.push(this.productions_[V[1]][0]),R.push(It.$),B.push(It._$),Ft=z[M[M.length-2]][M[M.length-1]],M.push(Ft);break;case 3:return!0}}return!0}},v=function(){var E={EOF:1,parseError:function(_,M){if(this.yy.parser)this.yy.parser.parseError(_,M);else throw new Error(_)},setInput:function(S,_){return this.yy=_||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var _=S.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},unput:function(S){var _=S.length,M=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var F=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),M.length-1&&(this.yylineno-=M.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:M?(M.length===F.length?this.yylloc.first_column:0)+F[F.length-M.length].length-M[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(S){this.unput(this.match.slice(S))},pastInput:function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var S=this.pastInput(),_=new Array(S.length+1).join("-");return S+this.upcomingInput()+` +`+_+"^"},test_match:function(S,_){var M,F,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),F=S[0].match(/(?:\r\n?|\n).*/g),F&&(this.yylineno+=F.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:F?F[F.length-1].length-F[F.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],M=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var B in R)this[B]=R[B];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,_,M,F;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),B=0;B_[0].length)){if(_=M,F=B,this.options.backtrack_lexer){if(S=this.test_match(M,R[B]),S!==!1)return S;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(S=this.test_match(_,R[F]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var _=this.next();return _||this.lex()},begin:function(_){this.conditionStack.push(_)},popState:function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},pushState:function(_){this.begin(_)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(_,M,F,R){switch(F){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return E}();w.lexer=v;function b(){this.yy={}}return b.prototype=w,w.Parser=b,new b}();w2t.parser=w2t;const NX=w2t;let PX=[],FX=[],FD={};const Een=()=>{PX=[],FX=[],FD={},ag()};class Ten{constructor(a,f,g=0){this.source=a,this.target=f,this.value=g}}const Cen=(i,a,f)=>{PX.push(new Ten(i,a,f))};class Sen{constructor(a){this.ID=a}}const _en={nodesMap:FD,getConfig:()=>Re().sankey,getNodes:()=>FX,getLinks:()=>PX,getGraph:()=>({nodes:FX.map(i=>({id:i.ID})),links:PX.map(i=>({source:i.source.ID,target:i.target.ID,value:i.value}))}),addLink:Cen,findOrCreateNode:i=>(i=ei.sanitizeText(i,Re()),FD[i]||(FD[i]=new Sen(i),FX.push(FD[i])),FD[i]),getAccTitle:Xg,setAccTitle:og,getAccDescription:Jg,setAccDescription:Qg,getDiagramTitle:Zg,setDiagramTitle:S2,clear:Een};function ZHt(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f=w)&&(f=w)}return f}function tVt(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f>g||f===void 0&&g>=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function m2t(i,a){let f=0;if(a===void 0)for(let g of i)(g=+g)&&(f+=g);else{let g=-1;for(let w of i)(w=+a(w,++g,i))&&(f+=w)}return f}function Aen(i){return i.target.depth}function Len(i){return i.depth}function Den(i,a){return a-1-i.height}function eVt(i,a){return i.sourceLinks.length?i.depth:a-1}function Men(i){return i.targetLinks.length?i.depth:i.sourceLinks.length?tVt(i.sourceLinks,Aen)-1:0}function BX(i){return function(){return i}}function nVt(i,a){return RX(i.source,a.source)||i.index-a.index}function rVt(i,a){return RX(i.target,a.target)||i.index-a.index}function RX(i,a){return i.y0-a.y0}function v2t(i){return i.value}function Ien(i){return i.index}function Oen(i){return i.nodes}function Nen(i){return i.links}function iVt(i,a){const f=i.get(a);if(!f)throw new Error("missing: "+a);return f}function sVt({nodes:i}){for(const a of i){let f=a.y0,g=f;for(const w of a.sourceLinks)w.y0=f+w.width/2,f+=w.width;for(const w of a.targetLinks)w.y1=g+w.width/2,g+=w.width}}function Pen(){let i=0,a=0,f=1,g=1,w=24,v=8,b,E=Ien,S=eVt,_,M,F=Oen,R=Nen,B=6;function z(){const It={nodes:F.apply(null,arguments),links:R.apply(null,arguments)};return Y(It),nt(It),ot(It),ft(It),ct(It),sVt(It),It}z.update=function(It){return sVt(It),It},z.nodeId=function(It){return arguments.length?(E=typeof It=="function"?It:BX(It),z):E},z.nodeAlign=function(It){return arguments.length?(S=typeof It=="function"?It:BX(It),z):S},z.nodeSort=function(It){return arguments.length?(_=It,z):_},z.nodeWidth=function(It){return arguments.length?(w=+It,z):w},z.nodePadding=function(It){return arguments.length?(v=b=+It,z):v},z.nodes=function(It){return arguments.length?(F=typeof It=="function"?It:BX(It),z):F},z.links=function(It){return arguments.length?(R=typeof It=="function"?It:BX(It),z):R},z.linkSort=function(It){return arguments.length?(M=It,z):M},z.size=function(It){return arguments.length?(i=a=0,f=+It[0],g=+It[1],z):[f-i,g-a]},z.extent=function(It){return arguments.length?(i=+It[0][0],f=+It[1][0],a=+It[0][1],g=+It[1][1],z):[[i,a],[f,g]]},z.iterations=function(It){return arguments.length?(B=+It,z):B};function Y({nodes:It,links:jt}){for(const[Ft,Ct]of It.entries())Ct.index=Ft,Ct.sourceLinks=[],Ct.targetLinks=[];const xt=new Map(It.map((Ft,Ct)=>[E(Ft,Ct,It),Ft]));for(const[Ft,Ct]of jt.entries()){Ct.index=Ft;let{source:kt,target:Gt}=Ct;typeof kt!="object"&&(kt=Ct.source=iVt(xt,kt)),typeof Gt!="object"&&(Gt=Ct.target=iVt(xt,Gt)),kt.sourceLinks.push(Ct),Gt.targetLinks.push(Ct)}if(M!=null)for(const{sourceLinks:Ft,targetLinks:Ct}of It)Ft.sort(M),Ct.sort(M)}function nt({nodes:It}){for(const jt of It)jt.value=jt.fixedValue===void 0?Math.max(m2t(jt.sourceLinks,v2t),m2t(jt.targetLinks,v2t)):jt.fixedValue}function ot({nodes:It}){const jt=It.length;let xt=new Set(It),Ft=new Set,Ct=0;for(;xt.size;){for(const kt of xt){kt.depth=Ct;for(const{target:Gt}of kt.sourceLinks)Ft.add(Gt)}if(++Ct>jt)throw new Error("circular link");xt=Ft,Ft=new Set}}function ft({nodes:It}){const jt=It.length;let xt=new Set(It),Ft=new Set,Ct=0;for(;xt.size;){for(const kt of xt){kt.height=Ct;for(const{source:Gt}of kt.targetLinks)Ft.add(Gt)}if(++Ct>jt)throw new Error("circular link");xt=Ft,Ft=new Set}}function wt({nodes:It}){const jt=ZHt(It,Ct=>Ct.depth)+1,xt=(f-i-w)/(jt-1),Ft=new Array(jt);for(const Ct of It){const kt=Math.max(0,Math.min(jt-1,Math.floor(S.call(null,Ct,jt))));Ct.layer=kt,Ct.x0=i+kt*xt,Ct.x1=Ct.x0+w,Ft[kt]?Ft[kt].push(Ct):Ft[kt]=[Ct]}if(_)for(const Ct of Ft)Ct.sort(_);return Ft}function mt(It){const jt=tVt(It,xt=>(g-a-(xt.length-1)*b)/m2t(xt,v2t));for(const xt of It){let Ft=a;for(const Ct of xt){Ct.y0=Ft,Ct.y1=Ft+Ct.value*jt,Ft=Ct.y1+b;for(const kt of Ct.sourceLinks)kt.width=kt.value*jt}Ft=(g-Ft+b)/(xt.length+1);for(let Ct=0;Ctxt.length)-1)),mt(jt);for(let xt=0;xt0))continue;let pn=(Fe/Mt-Gt.y0)*jt;Gt.y0+=pn,Gt.y1+=pn,K(Gt)}_===void 0&&kt.sort(RX),gt(kt,xt)}}function it(It,jt,xt){for(let Ft=It.length,Ct=Ft-2;Ct>=0;--Ct){const kt=It[Ct];for(const Gt of kt){let Fe=0,Mt=0;for(const{target:Ae,value:ye}of Gt.sourceLinks){let tn=ye*(Ae.layer-Gt.layer);Fe+=Ot(Gt,Ae)*tn,Mt+=tn}if(!(Mt>0))continue;let pn=(Fe/Mt-Gt.y0)*jt;Gt.y0+=pn,Gt.y1+=pn,K(Gt)}_===void 0&&kt.sort(RX),gt(kt,xt)}}function gt(It,jt){const xt=It.length>>1,Ft=It[xt];dt(It,Ft.y0-b,xt-1,jt),Q(It,Ft.y1+b,xt+1,jt),dt(It,g,It.length-1,jt),Q(It,a,0,jt)}function Q(It,jt,xt,Ft){for(;xt1e-6&&(Ct.y0+=kt,Ct.y1+=kt),jt=Ct.y1+b}}function dt(It,jt,xt,Ft){for(;xt>=0;--xt){const Ct=It[xt],kt=(Ct.y1-jt)*Ft;kt>1e-6&&(Ct.y0-=kt,Ct.y1-=kt),jt=Ct.y0-b}}function K({sourceLinks:It,targetLinks:jt}){if(M===void 0){for(const{source:{sourceLinks:xt}}of jt)xt.sort(rVt);for(const{target:{targetLinks:xt}}of It)xt.sort(nVt)}}function yt(It){if(M===void 0)for(const{sourceLinks:jt,targetLinks:xt}of It)jt.sort(rVt),xt.sort(nVt)}function V(It,jt){let xt=It.y0-(It.sourceLinks.length-1)*b/2;for(const{target:Ft,width:Ct}of It.sourceLinks){if(Ft===jt)break;xt+=Ct+b}for(const{source:Ft,width:Ct}of jt.targetLinks){if(Ft===It)break;xt-=Ct}return xt}function Ot(It,jt){let xt=jt.y0-(jt.targetLinks.length-1)*b/2;for(const{source:Ft,width:Ct}of jt.targetLinks){if(Ft===It)break;xt+=Ct+b}for(const{target:Ft,width:Ct}of It.sourceLinks){if(Ft===jt)break;xt-=Ct}return xt}return z}var y2t=Math.PI,x2t=2*y2t,V9=1e-6,Fen=x2t-V9;function k2t(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function aVt(){return new k2t}k2t.prototype=aVt.prototype={constructor:k2t,moveTo:function(i,a){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(i,a){this._+="L"+(this._x1=+i)+","+(this._y1=+a)},quadraticCurveTo:function(i,a,f,g){this._+="Q"+ +i+","+ +a+","+(this._x1=+f)+","+(this._y1=+g)},bezierCurveTo:function(i,a,f,g,w,v){this._+="C"+ +i+","+ +a+","+ +f+","+ +g+","+(this._x1=+w)+","+(this._y1=+v)},arcTo:function(i,a,f,g,w){i=+i,a=+a,f=+f,g=+g,w=+w;var v=this._x1,b=this._y1,E=f-i,S=g-a,_=v-i,M=b-a,F=_*_+M*M;if(w<0)throw new Error("negative radius: "+w);if(this._x1===null)this._+="M"+(this._x1=i)+","+(this._y1=a);else if(F>V9)if(!(Math.abs(M*E-S*_)>V9)||!w)this._+="L"+(this._x1=i)+","+(this._y1=a);else{var R=f-v,B=g-b,z=E*E+S*S,Y=R*R+B*B,nt=Math.sqrt(z),ot=Math.sqrt(F),ft=w*Math.tan((y2t-Math.acos((z+F-Y)/(2*nt*ot)))/2),wt=ft/ot,mt=ft/nt;Math.abs(wt-1)>V9&&(this._+="L"+(i+wt*_)+","+(a+wt*M)),this._+="A"+w+","+w+",0,0,"+ +(M*R>_*B)+","+(this._x1=i+mt*E)+","+(this._y1=a+mt*S)}},arc:function(i,a,f,g,w,v){i=+i,a=+a,f=+f,v=!!v;var b=f*Math.cos(g),E=f*Math.sin(g),S=i+b,_=a+E,M=1^v,F=v?g-w:w-g;if(f<0)throw new Error("negative radius: "+f);this._x1===null?this._+="M"+S+","+_:(Math.abs(this._x1-S)>V9||Math.abs(this._y1-_)>V9)&&(this._+="L"+S+","+_),f&&(F<0&&(F=F%x2t+x2t),F>Fen?this._+="A"+f+","+f+",0,1,"+M+","+(i-b)+","+(a-E)+"A"+f+","+f+",0,1,"+M+","+(this._x1=S)+","+(this._y1=_):F>V9&&(this._+="A"+f+","+f+",0,"+ +(F>=y2t)+","+M+","+(this._x1=i+f*Math.cos(w))+","+(this._y1=a+f*Math.sin(w))))},rect:function(i,a,f,g){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)+"h"+ +f+"v"+ +g+"h"+-f+"Z"},toString:function(){return this._}};function oVt(i){return function(){return i}}function Ben(i){return i[0]}function Ren(i){return i[1]}var jen=Array.prototype.slice;function $en(i){return i.source}function zen(i){return i.target}function qen(i){var a=$en,f=zen,g=Ben,w=Ren,v=null;function b(){var E,S=jen.call(arguments),_=a.apply(this,S),M=f.apply(this,S);if(v||(v=E=aVt()),i(v,+g.apply(this,(S[0]=_,S)),+w.apply(this,S),+g.apply(this,(S[0]=M,S)),+w.apply(this,S)),E)return v=null,E+""||null}return b.source=function(E){return arguments.length?(a=E,b):a},b.target=function(E){return arguments.length?(f=E,b):f},b.x=function(E){return arguments.length?(g=typeof E=="function"?E:oVt(+E),b):g},b.y=function(E){return arguments.length?(w=typeof E=="function"?E:oVt(+E),b):w},b.context=function(E){return arguments.length?(v=E??null,b):v},b}function Hen(i,a,f,g,w){i.moveTo(a,f),i.bezierCurveTo(a=(a+g)/2,f,a,w,g,w)}function Ven(){return qen(Hen)}function Uen(i){return[i.source.x1,i.y0]}function Gen(i){return[i.target.x0,i.y1]}function Ken(){return Ven().source(Uen).target(Gen)}const cVt=class vOt{static next(a){return new vOt(a+ ++vOt.count)}constructor(a){this.id=a,this.href=`#${a}`}toString(){return"url("+this.href+")"}};cVt.count=0;let uVt=cVt;const Wen={left:Len,right:Den,center:Men,justify:eVt},Yen={draw:function(i,a,f,g){const{securityLevel:w,sankey:v}=Re(),b=lBt.sankey;let E;w==="sandbox"&&(E=Tr("#i"+a));const S=Tr(w==="sandbox"?E.nodes()[0].contentDocument.body:"body"),_=w==="sandbox"?S.select(`[id="${a}"]`):Tr(`[id="${a}"]`),M=(v==null?void 0:v.width)??b.width,F=(v==null?void 0:v.height)??b.width,R=(v==null?void 0:v.useMaxWidth)??b.useMaxWidth,B=(v==null?void 0:v.nodeAlignment)??b.nodeAlignment,z=(v==null?void 0:v.prefix)??b.prefix,Y=(v==null?void 0:v.suffix)??b.suffix,nt=(v==null?void 0:v.showValues)??b.showValues,ot=g.db.getGraph(),ft=Wen[B],wt=10;Pen().nodeId(dt=>dt.id).nodeWidth(wt).nodePadding(10+(nt?15:0)).nodeAlign(ft).extent([[0,0],[M,F]])(ot);const ct=oF(tPt);_.append("g").attr("class","nodes").selectAll(".node").data(ot.nodes).join("g").attr("class","node").attr("id",dt=>(dt.uid=uVt.next("node-")).id).attr("transform",function(dt){return"translate("+dt.x0+","+dt.y0+")"}).attr("x",dt=>dt.x0).attr("y",dt=>dt.y0).append("rect").attr("height",dt=>dt.y1-dt.y0).attr("width",dt=>dt.x1-dt.x0).attr("fill",dt=>ct(dt.id));const rt=({id:dt,value:K})=>nt?`${dt} +${z}${Math.round(K*100)/100}${Y}`:dt;_.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(ot.nodes).join("text").attr("x",dt=>dt.x0(dt.y1+dt.y0)/2).attr("dy",`${nt?"0":"0.35"}em`).attr("text-anchor",dt=>dt.x0(K.uid=uVt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",K=>K.source.x1).attr("x2",K=>K.target.x0);dt.append("stop").attr("offset","0%").attr("stop-color",K=>ct(K.source.id)),dt.append("stop").attr("offset","100%").attr("stop-color",K=>ct(K.target.id))}let Q;switch(gt){case"gradient":Q=dt=>dt.uid;break;case"source":Q=dt=>ct(dt.source.id);break;case"target":Q=dt=>ct(dt.target.id);break;default:Q=gt}it.append("path").attr("d",Ken()).attr("stroke",Q).attr("stroke-width",dt=>Math.max(1,dt.width)),w8(void 0,_,0,R)}},Xen=i=>i.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),Qen=NX.parse.bind(NX);NX.parse=i=>Qen(Xen(i));const Jen=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:NX,db:_en,renderer:Yen}},Symbol.toStringTag,{value:"Module"}));var E2t=function(){var i=function(wt,mt,ct,rt){for(ct=ct||{},rt=wt.length;rt--;ct[wt[rt]]=mt);return ct},a=[1,7],f=[1,13],g=[1,14],w=[1,15],v=[1,19],b=[1,16],E=[1,17],S=[1,18],_=[8,30],M=[8,21,28,29,30,31,32,40,44,47],F=[1,23],R=[1,24],B=[8,15,16,21,28,29,30,31,32,40,44,47],z=[8,15,16,21,27,28,29,30,31,32,40,44,47],Y=[1,49],nt={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,seperator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(mt,ct,rt,it,gt,Q,dt){var K=Q.length-1;switch(gt){case 4:it.getLogger().debug("Rule: seperator (NL) ");break;case 5:it.getLogger().debug("Rule: seperator (Space) ");break;case 6:it.getLogger().debug("Rule: seperator (EOF) ");break;case 7:it.getLogger().debug("Rule: hierarchy: ",Q[K-1]),it.setHierarchy(Q[K-1]);break;case 8:it.getLogger().debug("Stop NL ");break;case 9:it.getLogger().debug("Stop EOF ");break;case 10:it.getLogger().debug("Stop NL2 ");break;case 11:it.getLogger().debug("Stop EOF2 ");break;case 12:it.getLogger().debug("Rule: statement: ",Q[K]),typeof Q[K].length=="number"?this.$=Q[K]:this.$=[Q[K]];break;case 13:it.getLogger().debug("Rule: statement #2: ",Q[K-1]),this.$=[Q[K-1]].concat(Q[K]);break;case 14:it.getLogger().debug("Rule: link: ",Q[K],mt),this.$={edgeTypeStr:Q[K],label:""};break;case 15:it.getLogger().debug("Rule: LABEL link: ",Q[K-3],Q[K-1],Q[K]),this.$={edgeTypeStr:Q[K],label:Q[K-1]};break;case 18:const yt=parseInt(Q[K]),V=it.generateId();this.$={id:V,type:"space",label:"",width:yt,children:[]};break;case 23:it.getLogger().debug("Rule: (nodeStatement link node) ",Q[K-2],Q[K-1],Q[K]," typestr: ",Q[K-1].edgeTypeStr);const Ot=it.edgeStrToEdgeData(Q[K-1].edgeTypeStr);this.$=[{id:Q[K-2].id,label:Q[K-2].label,type:Q[K-2].type,directions:Q[K-2].directions},{id:Q[K-2].id+"-"+Q[K].id,start:Q[K-2].id,end:Q[K].id,label:Q[K-1].label,type:"edge",directions:Q[K].directions,arrowTypeEnd:Ot,arrowTypeStart:"arrow_open"},{id:Q[K].id,label:Q[K].label,type:it.typeStr2Type(Q[K].typeStr),directions:Q[K].directions}];break;case 24:it.getLogger().debug("Rule: nodeStatement (abc88 node size) ",Q[K-1],Q[K]),this.$={id:Q[K-1].id,label:Q[K-1].label,type:it.typeStr2Type(Q[K-1].typeStr),directions:Q[K-1].directions,widthInColumns:parseInt(Q[K],10)};break;case 25:it.getLogger().debug("Rule: nodeStatement (node) ",Q[K]),this.$={id:Q[K].id,label:Q[K].label,type:it.typeStr2Type(Q[K].typeStr),directions:Q[K].directions,widthInColumns:1};break;case 26:it.getLogger().debug("APA123",this?this:"na"),it.getLogger().debug("COLUMNS: ",Q[K]),this.$={type:"column-setting",columns:Q[K]==="auto"?-1:parseInt(Q[K])};break;case 27:it.getLogger().debug("Rule: id-block statement : ",Q[K-2],Q[K-1]),it.generateId(),this.$={...Q[K-2],type:"composite",children:Q[K-1]};break;case 28:it.getLogger().debug("Rule: blockStatement : ",Q[K-2],Q[K-1],Q[K]);const It=it.generateId();this.$={id:It,type:"composite",label:"",children:Q[K-1]};break;case 29:it.getLogger().debug("Rule: node (NODE_ID seperator): ",Q[K]),this.$={id:Q[K]};break;case 30:it.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel seperator): ",Q[K-1],Q[K]),this.$={id:Q[K-1],label:Q[K].label,typeStr:Q[K].typeStr,directions:Q[K].directions};break;case 31:it.getLogger().debug("Rule: dirList: ",Q[K]),this.$=[Q[K]];break;case 32:it.getLogger().debug("Rule: dirList: ",Q[K-1],Q[K]),this.$=[Q[K-1]].concat(Q[K]);break;case 33:it.getLogger().debug("Rule: nodeShapeNLabel: ",Q[K-2],Q[K-1],Q[K]),this.$={typeStr:Q[K-2]+Q[K],label:Q[K-1]};break;case 34:it.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",Q[K-3],Q[K-2]," #3:",Q[K-1],Q[K]),this.$={typeStr:Q[K-3]+Q[K],label:Q[K-2],directions:Q[K-1]};break;case 35:case 36:this.$={type:"classDef",id:Q[K-1].trim(),css:Q[K].trim()};break;case 37:this.$={type:"applyClass",id:Q[K-1].trim(),styleClass:Q[K].trim()};break;case 38:this.$={type:"applyStyles",id:Q[K-1].trim(),stylesStr:Q[K].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:f,29:g,31:w,32:v,40:b,44:E,47:S},{8:[1,20]},i(_,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:f,29:g,31:w,32:v,40:b,44:E,47:S}),i(M,[2,16],{14:22,15:F,16:R}),i(M,[2,17]),i(M,[2,18]),i(M,[2,19]),i(M,[2,20]),i(M,[2,21]),i(M,[2,22]),i(B,[2,25],{27:[1,25]}),i(M,[2,26]),{19:26,26:12,32:v},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:f,29:g,31:w,32:v,40:b,44:E,47:S},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},i(z,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},i(_,[2,13]),{26:35,32:v},{32:[2,14]},{17:[1,36]},i(B,[2,24]),{11:37,13:4,14:22,15:F,16:R,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:f,29:g,31:w,32:v,40:b,44:E,47:S},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},i(z,[2,30]),{18:[1,43]},{18:[1,44]},i(B,[2,23]),{18:[1,45]},{30:[1,46]},i(M,[2,28]),i(M,[2,35]),i(M,[2,36]),i(M,[2,37]),i(M,[2,38]),{37:[1,47]},{34:48,35:Y},{15:[1,50]},i(M,[2,27]),i(z,[2,33]),{39:[1,51]},{34:52,35:Y,39:[2,31]},{32:[2,15]},i(z,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(mt,ct){if(ct.recoverable)this.trace(mt);else{var rt=new Error(mt);throw rt.hash=ct,rt}},parse:function(mt){var ct=this,rt=[0],it=[],gt=[null],Q=[],dt=this.table,K="",yt=0,V=0,Ot=2,It=1,jt=Q.slice.call(arguments,1),xt=Object.create(this.lexer),Ft={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(Ft.yy[Ct]=this.yy[Ct]);xt.setInput(mt,Ft.yy),Ft.yy.lexer=xt,Ft.yy.parser=this,typeof xt.yylloc>"u"&&(xt.yylloc={});var kt=xt.yylloc;Q.push(kt);var Gt=xt.options&&xt.options.ranges;typeof Ft.yy.parseError=="function"?this.parseError=Ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(){var xe;return xe=it.pop()||xt.lex()||It,typeof xe!="number"&&(xe instanceof Array&&(it=xe,xe=it.pop()),xe=ct.symbols_[xe]||xe),xe}for(var Mt,pn,Ae,ye,tn={},sn,be,Ne,Xt;;){if(pn=rt[rt.length-1],this.defaultActions[pn]?Ae=this.defaultActions[pn]:((Mt===null||typeof Mt>"u")&&(Mt=Fe()),Ae=dt[pn]&&dt[pn][Mt]),typeof Ae>"u"||!Ae.length||!Ae[0]){var _e="";Xt=[];for(sn in dt[pn])this.terminals_[sn]&&sn>Ot&&Xt.push("'"+this.terminals_[sn]+"'");xt.showPosition?_e="Parse error on line "+(yt+1)+`: +`+xt.showPosition()+` +Expecting `+Xt.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_e="Parse error on line "+(yt+1)+": Unexpected "+(Mt==It?"end of input":"'"+(this.terminals_[Mt]||Mt)+"'"),this.parseError(_e,{text:xt.match,token:this.terminals_[Mt]||Mt,line:xt.yylineno,loc:kt,expected:Xt})}if(Ae[0]instanceof Array&&Ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+pn+", token: "+Mt);switch(Ae[0]){case 1:rt.push(Mt),gt.push(xt.yytext),Q.push(xt.yylloc),rt.push(Ae[1]),Mt=null,V=xt.yyleng,K=xt.yytext,yt=xt.yylineno,kt=xt.yylloc;break;case 2:if(be=this.productions_[Ae[1]][1],tn.$=gt[gt.length-be],tn._$={first_line:Q[Q.length-(be||1)].first_line,last_line:Q[Q.length-1].last_line,first_column:Q[Q.length-(be||1)].first_column,last_column:Q[Q.length-1].last_column},Gt&&(tn._$.range=[Q[Q.length-(be||1)].range[0],Q[Q.length-1].range[1]]),ye=this.performAction.apply(tn,[K,V,yt,Ft.yy,Ae[1],gt,Q].concat(jt)),typeof ye<"u")return ye;be&&(rt=rt.slice(0,-1*be*2),gt=gt.slice(0,-1*be),Q=Q.slice(0,-1*be)),rt.push(this.productions_[Ae[1]][0]),gt.push(tn.$),Q.push(tn._$),Ne=dt[rt[rt.length-2]][rt[rt.length-1]],rt.push(Ne);break;case 3:return!0}}return!0}},ot=function(){var wt={EOF:1,parseError:function(ct,rt){if(this.yy.parser)this.yy.parser.parseError(ct,rt);else throw new Error(ct)},setInput:function(mt,ct){return this.yy=ct||this.yy||{},this._input=mt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var mt=this._input[0];this.yytext+=mt,this.yyleng++,this.offset++,this.match+=mt,this.matched+=mt;var ct=mt.match(/(?:\r\n?|\n).*/g);return ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),mt},unput:function(mt){var ct=mt.length,rt=mt.split(/(?:\r\n?|\n)/g);this._input=mt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ct),this.offset-=ct;var it=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),rt.length-1&&(this.yylineno-=rt.length-1);var gt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:rt?(rt.length===it.length?this.yylloc.first_column:0)+it[it.length-rt.length].length-rt[0].length:this.yylloc.first_column-ct},this.options.ranges&&(this.yylloc.range=[gt[0],gt[0]+this.yyleng-ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(mt){this.unput(this.match.slice(mt))},pastInput:function(){var mt=this.matched.substr(0,this.matched.length-this.match.length);return(mt.length>20?"...":"")+mt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var mt=this.match;return mt.length<20&&(mt+=this._input.substr(0,20-mt.length)),(mt.substr(0,20)+(mt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var mt=this.pastInput(),ct=new Array(mt.length+1).join("-");return mt+this.upcomingInput()+` +`+ct+"^"},test_match:function(mt,ct){var rt,it,gt;if(this.options.backtrack_lexer&&(gt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gt.yylloc.range=this.yylloc.range.slice(0))),it=mt[0].match(/(?:\r\n?|\n).*/g),it&&(this.yylineno+=it.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:it?it[it.length-1].length-it[it.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+mt[0].length},this.yytext+=mt[0],this.match+=mt[0],this.matches=mt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(mt[0].length),this.matched+=mt[0],rt=this.performAction.call(this,this.yy,this,ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),rt)return rt;if(this._backtrack){for(var Q in gt)this[Q]=gt[Q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var mt,ct,rt,it;this._more||(this.yytext="",this.match="");for(var gt=this._currentRules(),Q=0;Qct[0].length)){if(ct=rt,it=Q,this.options.backtrack_lexer){if(mt=this.test_match(rt,gt[Q]),mt!==!1)return mt;if(this._backtrack){ct=!1;continue}else return!1}else if(!this.options.flex)break}return ct?(mt=this.test_match(ct,gt[it]),mt!==!1?mt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ct=this.next();return ct||this.lex()},begin:function(ct){this.conditionStack.push(ct)},popState:function(){var ct=this.conditionStack.length-1;return ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ct){return ct=this.conditionStack.length-1-Math.abs(ct||0),ct>=0?this.conditionStack[ct]:"INITIAL"},pushState:function(ct){this.begin(ct)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(ct,rt,it,gt){switch(it){case 0:return 10;case 1:return ct.getLogger().debug("Found space-block"),31;case 2:return ct.getLogger().debug("Found nl-block"),31;case 3:return ct.getLogger().debug("Found space-block"),29;case 4:ct.getLogger().debug(".",rt.yytext);break;case 5:ct.getLogger().debug("_",rt.yytext);break;case 6:return 5;case 7:return rt.yytext=-1,28;case 8:return rt.yytext=rt.yytext.replace(/columns\s+/,""),ct.getLogger().debug("COLUMNS (LEX)",rt.yytext),28;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:ct.getLogger().debug("LEX: POPPING STR:",rt.yytext),this.popState();break;case 14:return ct.getLogger().debug("LEX: STR end:",rt.yytext),"STR";case 15:return rt.yytext=rt.yytext.replace(/space\:/,""),ct.getLogger().debug("SPACE NUM (LEX)",rt.yytext),21;case 16:return rt.yytext="1",ct.getLogger().debug("COLUMNS (LEX)",rt.yytext),21;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 22:return this.popState(),this.pushState("CLASSDEFID"),41;case 23:return this.popState(),42;case 24:return this.pushState("CLASS"),44;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;case 26:return this.popState(),46;case 27:return this.pushState("STYLE_STMNT"),47;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;case 29:return this.popState(),49;case 30:return this.pushState("acc_title"),"acc_title";case 31:return this.popState(),"acc_title_value";case 32:return this.pushState("acc_descr"),"acc_descr";case 33:return this.popState(),"acc_descr_value";case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 40:return this.popState(),ct.getLogger().debug("Lex: ))"),"NODE_DEND";case 41:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 42:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 43:return this.popState(),ct.getLogger().debug("Lex: (-"),"NODE_DEND";case 44:return this.popState(),ct.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 46:return this.popState(),ct.getLogger().debug("Lex: ]]"),"NODE_DEND";case 47:return this.popState(),ct.getLogger().debug("Lex: ("),"NODE_DEND";case 48:return this.popState(),ct.getLogger().debug("Lex: ])"),"NODE_DEND";case 49:return this.popState(),ct.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),ct.getLogger().debug("Lex: /]"),"NODE_DEND";case 51:return this.popState(),ct.getLogger().debug("Lex: )]"),"NODE_DEND";case 52:return this.popState(),ct.getLogger().debug("Lex: )"),"NODE_DEND";case 53:return this.popState(),ct.getLogger().debug("Lex: ]>"),"NODE_DEND";case 54:return this.popState(),ct.getLogger().debug("Lex: ]"),"NODE_DEND";case 55:return ct.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;case 56:return ct.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;case 57:return ct.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;case 58:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 59:return ct.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;case 60:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 61:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 62:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 63:return ct.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;case 64:return ct.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;case 65:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 66:return this.pushState("NODE"),36;case 67:return this.pushState("NODE"),36;case 68:return this.pushState("NODE"),36;case 69:return this.pushState("NODE"),36;case 70:return this.pushState("NODE"),36;case 71:return this.pushState("NODE"),36;case 72:return this.pushState("NODE"),36;case 73:return ct.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;case 74:return this.pushState("BLOCK_ARROW"),ct.getLogger().debug("LEX ARR START"),38;case 75:return ct.getLogger().debug("Lex: NODE_ID",rt.yytext),32;case 76:return ct.getLogger().debug("Lex: EOF",rt.yytext),8;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:ct.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:ct.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return ct.getLogger().debug("LEX: NODE_DESCR:",rt.yytext),"NODE_DESCR";case 84:ct.getLogger().debug("LEX POPPING"),this.popState();break;case 85:ct.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (right): dir:",rt.yytext),"DIR";case 87:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (left):",rt.yytext),"DIR";case 88:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (x):",rt.yytext),"DIR";case 89:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (y):",rt.yytext),"DIR";case 90:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (up):",rt.yytext),"DIR";case 91:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (down):",rt.yytext),"DIR";case 92:return rt.yytext="]>",ct.getLogger().debug("Lex (ARROW_DIR end):",rt.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 93:return ct.getLogger().debug("Lex: LINK","#"+rt.yytext+"#"),15;case 94:return ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 95:return ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 96:return ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 97:return ct.getLogger().debug("Lex: START_LINK",rt.yytext),this.pushState("LLABEL"),16;case 98:return ct.getLogger().debug("Lex: START_LINK",rt.yytext),this.pushState("LLABEL"),16;case 99:return ct.getLogger().debug("Lex: START_LINK",rt.yytext),this.pushState("LLABEL"),16;case 100:this.pushState("md_string");break;case 101:return ct.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 102:return this.popState(),ct.getLogger().debug("Lex: LINK","#"+rt.yytext+"#"),15;case 103:return this.popState(),ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 104:return this.popState(),ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 105:return ct.getLogger().debug("Lex: COLON",rt.yytext),rt.yytext=rt.yytext.slice(1),27}},rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return wt}();nt.lexer=ot;function ft(){this.yy={}}return ft.prototype=nt,nt.Parser=ft,new ft}();E2t.parser=E2t;const Zen=E2t;let lb={},T2t=[],AB={};const lVt="color",hVt="fill",tnn="bgFill",fVt=",";let LB={};const enn=function(i,a=""){LB[i]===void 0&&(LB[i]={id:i,styles:[],textStyles:[]});const f=LB[i];a!=null&&a.split(fVt).forEach(g=>{const w=g.replace(/([^;]*);/,"$1").trim();if(g.match(lVt)){const b=w.replace(hVt,tnn).replace(lVt,hVt);f.textStyles.push(b)}f.styles.push(w)})},nnn=function(i,a=""){const f=lb[i];a!=null&&(f.styles=a.split(fVt))},rnn=function(i,a){i.split(",").forEach(function(f){let g=lb[f];if(g===void 0){const w=f.trim();lb[w]={id:w,type:"na",children:[]},g=lb[w]}g.classes||(g.classes=[]),g.classes.push(a)})},dVt=(i,a)=>{const f=i.flat(),g=[];for(const w of f){if(w.type==="classDef"){enn(w.id,w.css);continue}if(w.type==="applyClass"){rnn(w.id,(w==null?void 0:w.styleClass)||"");continue}if(w.type==="applyStyles"){w!=null&&w.stylesStr&&nnn(w.id,w==null?void 0:w.stylesStr);continue}if(w.type==="column-setting")a.columns=w.columns||-1;else if(w.type==="edge")AB[w.id]?AB[w.id]++:AB[w.id]=1,w.id=AB[w.id]+"-"+w.id,T2t.push(w);else{w.label||(w.type==="composite"?w.label="":w.label=w.id);const v=!lb[w.id];if(v?lb[w.id]=w:(w.type!=="na"&&(lb[w.id].type=w.type),w.label!==w.id&&(lb[w.id].label=w.label)),w.children&&dVt(w.children,w),w.type==="space"){const b=w.width||1;for(let E=0;E{Kt.debug("Clear called"),ag(),DB={id:"root",type:"composite",children:[],columns:-1},lb={root:DB},C2t=[],LB={},T2t=[],AB={}};function snn(i){switch(Kt.debug("typeStr2Type",i),i){case"[]":return"square";case"()":return Kt.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function ann(i){switch(Kt.debug("typeStr2Type",i),i){case"==":return"thick";default:return"normal"}}function onn(i){switch(i.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}let gVt=0;const cnn={getConfig:()=>o1().block,typeStr2Type:snn,edgeTypeStr2Type:ann,edgeStrToEdgeData:onn,getLogger:()=>console,getBlocksFlat:()=>[...Object.values(lb)],getBlocks:()=>C2t||[],getEdges:()=>T2t,setHierarchy:i=>{DB.children=i,dVt(i,DB),C2t=DB.children},getBlock:i=>lb[i],setBlock:i=>{lb[i.id]=i},getColumns:i=>{const a=lb[i];return a?a.columns?a.columns:a.children?a.children.length:-1:-1},getClasses:function(){return LB},clear:inn,generateId:()=>(gVt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+gVt)},jX=(i,a)=>{const f=jPt,g=f(i,"r"),w=f(i,"g"),v=f(i,"b");return g9(g,w,v,a)},unn=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${jX(i.edgeLabelBackground,.5)}; + // background-color: + } + + .node .cluster { + // fill: ${jX(i.mainBkg,.5)}; + fill: ${jX(i.clusterBkg,.5)}; + stroke: ${jX(i.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`;function pVt(i,a,f=!1){var R,B,z;const g=i;let w="default";(((R=g==null?void 0:g.classes)==null?void 0:R.length)||0)>0&&(w=((g==null?void 0:g.classes)||[]).join(" ")),w=w+" flowchart-label";let v=0,b="",E;switch(g.type){case"round":v=5,b="rect";break;case"composite":v=0,b="composite",E=0;break;case"square":b="rect";break;case"diamond":b="question";break;case"hexagon":b="hexagon";break;case"block_arrow":b="block_arrow";break;case"odd":b="rect_left_inv_arrow";break;case"lean_right":b="lean_right";break;case"lean_left":b="lean_left";break;case"trapezoid":b="trapezoid";break;case"inv_trapezoid":b="inv_trapezoid";break;case"rect_left_inv_arrow":b="rect_left_inv_arrow";break;case"circle":b="circle";break;case"ellipse":b="ellipse";break;case"stadium":b="stadium";break;case"subroutine":b="subroutine";break;case"cylinder":b="cylinder";break;case"group":b="rect";break;case"doublecircle":b="doublecircle";break;default:b="rect"}const S=C2((g==null?void 0:g.styles)||[]),_=g.label,M=g.size||{width:0,height:0,x:0,y:0};return{labelStyle:S.labelStyle,shape:b,labelText:_,rx:v,ry:v,class:w,style:S.style,id:g.id,directions:g.directions,width:M.width,height:M.height,x:M.x,y:M.y,positioned:f,intersect:void 0,type:g.type,padding:E??(((z=(B=o1())==null?void 0:B.block)==null?void 0:z.padding)||0)}}async function lnn(i,a,f){const g=pVt(a,f,!1);if(g.type==="group")return;const w=await nX(i,g),v=w.node().getBBox(),b=f.getBlock(g.id);b.size={width:v.width,height:v.height,x:0,y:0,node:w},f.setBlock(b),w.remove()}async function hnn(i,a,f){const g=pVt(a,f,!0);f.getBlock(g.id).type!=="space"&&(await nX(i,g),a.intersect=g==null?void 0:g.intersect,Zpt(g))}async function S2t(i,a,f,g){for(const w of a)await g(i,w,f),w.children&&await S2t(i,w.children,f,g)}async function fnn(i,a,f){await S2t(i,a,f,lnn)}async function dnn(i,a,f){await S2t(i,a,f,hnn)}async function gnn(i,a,f,g,w){const v=new l1({multigraph:!0,compound:!0});v.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const b of f)b.size&&v.setNode(b.id,{width:b.size.width,height:b.size.height,intersect:b.intersect});for(const b of a)if(b.start&&b.end){const E=g.getBlock(b.start),S=g.getBlock(b.end);if(E!=null&&E.size&&(S!=null&&S.size)){const _=E.size,M=S.size,F=[{x:_.x,y:_.y},{x:_.x+(M.x-_.x)/2,y:_.y+(M.y-_.y)/2},{x:M.x,y:M.y}];await dzt(i,{v:b.start,w:b.end,name:b.id},{...b,arrowTypeEnd:b.arrowTypeEnd,arrowTypeStart:b.arrowTypeStart,points:F,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",v,w),b.label&&(await tbt(i,{...b,label:b.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:b.arrowTypeEnd,arrowTypeStart:b.arrowTypeStart,points:F,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),await hzt({...b,x:F[1].x,y:F[1].y},{originalPath:F}))}}}const Af=((vVt=(mVt=Re())==null?void 0:mVt.block)==null?void 0:vVt.padding)||8;function pnn(i,a){if(i===0||!Number.isInteger(i))throw new Error("Columns must be an integer !== 0.");if(a<0||!Number.isInteger(a))throw new Error("Position must be a non-negative integer."+a);if(i<0)return{px:a,py:0};if(i===1)return{px:0,py:a};const f=a%i,g=Math.floor(a/i);return{px:f,py:g}}const bnn=i=>{let a=0,f=0;for(const g of i.children){const{width:w,height:v,x:b,y:E}=g.size||{width:0,height:0,x:0,y:0};Kt.debug("getMaxChildSize abc95 child:",g.id,"width:",w,"height:",v,"x:",b,"y:",E,g.type),g.type!=="space"&&(w>a&&(a=w/(i.widthInColumns||1)),v>f&&(f=v))}return{width:a,height:f}};function _2t(i,a,f=0,g=0){var b,E,S,_,M,F,R,B,z,Y,nt;Kt.debug("setBlockSizes abc95 (start)",i.id,(b=i==null?void 0:i.size)==null?void 0:b.x,"block width =",i==null?void 0:i.size,"sieblingWidth",f),(E=i==null?void 0:i.size)!=null&&E.width||(i.size={width:f,height:g,x:0,y:0});let w=0,v=0;if(((S=i.children)==null?void 0:S.length)>0){for(const gt of i.children)_2t(gt,a);const ot=bnn(i);w=ot.width,v=ot.height,Kt.debug("setBlockSizes abc95 maxWidth of",i.id,":s children is ",w,v);for(const gt of i.children)gt.size&&(Kt.debug(`abc95 Setting size of children of ${i.id} id=${gt.id} ${w} ${v} ${gt.size}`),gt.size.width=w*(gt.widthInColumns||1)+Af*((gt.widthInColumns||1)-1),gt.size.height=v,gt.size.x=0,gt.size.y=0,Kt.debug(`abc95 updating size of ${i.id} children child:${gt.id} maxWidth:${w} maxHeight:${v}`));for(const gt of i.children)_2t(gt,a,w,v);const ft=i.columns||-1;let wt=0;for(const gt of i.children)wt+=gt.widthInColumns||1;let mt=i.children.length;ft>0&&ft0?Math.min(i.children.length,ft):i.children.length;if(gt>0){const Q=(rt-gt*Af-Af)/gt;Kt.debug("abc95 (growing to fit) width",i.id,rt,(R=i.size)==null?void 0:R.width,Q);for(const dt of i.children)dt.size&&(dt.size.width=Q)}}i.size={width:rt,height:it,x:0,y:0}}Kt.debug("setBlockSizes abc94 (done)",i.id,(B=i==null?void 0:i.size)==null?void 0:B.x,(z=i==null?void 0:i.size)==null?void 0:z.width,(Y=i==null?void 0:i.size)==null?void 0:Y.y,(nt=i==null?void 0:i.size)==null?void 0:nt.height)}function bVt(i,a){var g,w,v,b,E,S,_,M,F,R,B,z,Y,nt,ot,ft,wt;Kt.debug(`abc85 layout blocks (=>layoutBlocks) ${i.id} x: ${(g=i==null?void 0:i.size)==null?void 0:g.x} y: ${(w=i==null?void 0:i.size)==null?void 0:w.y} width: ${(v=i==null?void 0:i.size)==null?void 0:v.width}`);const f=i.columns||-1;if(Kt.debug("layoutBlocks columns abc95",i.id,"=>",f,i),i.children&&i.children.length>0){const mt=((E=(b=i==null?void 0:i.children[0])==null?void 0:b.size)==null?void 0:E.width)||0,ct=i.children.length*mt+(i.children.length-1)*Af;Kt.debug("widthOfChildren 88",ct,"posX");let rt=0;Kt.debug("abc91 block?.size?.x",i.id,(S=i==null?void 0:i.size)==null?void 0:S.x);let it=(_=i==null?void 0:i.size)!=null&&_.x?((M=i==null?void 0:i.size)==null?void 0:M.x)+(-((F=i==null?void 0:i.size)==null?void 0:F.width)/2||0):-Af,gt=0;for(const Q of i.children){const dt=i;if(!Q.size)continue;const{width:K,height:yt}=Q.size,{px:V,py:Ot}=pnn(f,rt);if(Ot!=gt&&(gt=Ot,it=(R=i==null?void 0:i.size)!=null&&R.x?((B=i==null?void 0:i.size)==null?void 0:B.x)+(-((z=i==null?void 0:i.size)==null?void 0:z.width)/2||0):-Af,Kt.debug("New row in layout for block",i.id," and child ",Q.id,gt)),Kt.debug(`abc89 layout blocks (child) id: ${Q.id} Pos: ${rt} (px, py) ${V},${Ot} (${(Y=dt==null?void 0:dt.size)==null?void 0:Y.x},${(nt=dt==null?void 0:dt.size)==null?void 0:nt.y}) parent: ${dt.id} width: ${K}${Af}`),dt.size){const It=K/2;Q.size.x=it+Af+It,Kt.debug(`abc91 layout blocks (calc) px, pyid:${Q.id} startingPos=X${it} new startingPosX${Q.size.x} ${It} padding=${Af} width=${K} halfWidth=${It} => x:${Q.size.x} y:${Q.size.y} ${Q.widthInColumns} (width * (child?.w || 1)) / 2 ${K*((Q==null?void 0:Q.widthInColumns)||1)/2}`),it=Q.size.x+It,Q.size.y=dt.size.y-dt.size.height/2+Ot*(yt+Af)+yt/2+Af,Kt.debug(`abc88 layout blocks (calc) px, pyid:${Q.id}startingPosX${it}${Af}${It}=>x:${Q.size.x}y:${Q.size.y}${Q.widthInColumns}(width * (child?.w || 1)) / 2${K*((Q==null?void 0:Q.widthInColumns)||1)/2}`)}Q.children&&bVt(Q),rt+=(Q==null?void 0:Q.widthInColumns)||1,Kt.debug("abc88 columnsPos",Q,rt)}}Kt.debug(`layout blocks (<==layoutBlocks) ${i.id} x: ${(ot=i==null?void 0:i.size)==null?void 0:ot.x} y: ${(ft=i==null?void 0:i.size)==null?void 0:ft.y} width: ${(wt=i==null?void 0:i.size)==null?void 0:wt.width}`)}function wVt(i,{minX:a,minY:f,maxX:g,maxY:w}={minX:0,minY:0,maxX:0,maxY:0}){if(i.size&&i.id!=="root"){const{x:v,y:b,width:E,height:S}=i.size;v-E/2g&&(g=v+E/2),b+S/2>w&&(w=b+S/2)}if(i.children)for(const v of i.children)({minX:a,minY:f,maxX:g,maxY:w}=wVt(v,{minX:a,minY:f,maxX:g,maxY:w}));return{minX:a,minY:f,maxX:g,maxY:w}}function wnn(i){const a=i.getBlock("root");if(!a)return;_2t(a,i,0,0),bVt(a),Kt.debug("getBlocks",JSON.stringify(a,null,2));const{minX:f,minY:g,maxX:w,maxY:v}=wVt(a),b=v-g,E=w-f;return{x:f,y:g,width:E,height:b}}const mnn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Zen,db:cnn,renderer:{draw:async function(i,a,f,g){const{securityLevel:w,block:v}=o1(),b=g.db;let E;w==="sandbox"&&(E=Tr("#i"+a));const S=Tr(w==="sandbox"?E.nodes()[0].contentDocument.body:"body"),_=w==="sandbox"?S.select(`[id="${a}"]`):Tr(`[id="${a}"]`);jpt(_,["point","circle","cross"],g.type,a);const F=b.getBlocks(),R=b.getBlocksFlat(),B=b.getEdges(),z=_.insert("g").attr("class","block");await fnn(z,F,b);const Y=wnn(b);if(await dnn(z,F,b),await gnn(z,B,R,b,a),Y){const nt=Y,ot=Math.max(1,Math.round(.125*(nt.width/nt.height))),ft=nt.height+ot+10,wt=nt.width+10,{useMaxWidth:mt}=v;sg(_,ft,wt,!!mt),Kt.debug("Here Bounds",Y,nt),_.attr("viewBox",`${nt.x-5} ${nt.y-5} ${nt.width+10} ${nt.height+10}`)}oF(tPt)},getClasses:function(i,a){return a.db.getClasses()}},styles:unn}},Symbol.toStringTag,{value:"Module"}));return _2}); \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..3c4b9071 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://toruniina.github.io/toml11/en/sitemap.xmlhttps://toruniina.github.io/toml11/ja/sitemap.xml \ No newline at end of file diff --git a/svg/calendar.svg b/svg/calendar.svg new file mode 100644 index 00000000..f8481120 --- /dev/null +++ b/svg/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/edit.svg b/svg/edit.svg new file mode 100644 index 00000000..5b54e693 --- /dev/null +++ b/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/menu.svg b/svg/menu.svg new file mode 100644 index 00000000..770b1923 --- /dev/null +++ b/svg/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/toc.svg b/svg/toc.svg new file mode 100644 index 00000000..1889904e --- /dev/null +++ b/svg/toc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/translate.svg b/svg/translate.svg new file mode 100644 index 00000000..a1bbe166 --- /dev/null +++ b/svg/translate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 00000000..fa13a3f8 --- /dev/null +++ b/tags/index.html @@ -0,0 +1,9 @@ +Tags | toml11 + +
    Tags +
    \ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml new file mode 100644 index 00000000..1725b38a --- /dev/null +++ b/tags/index.xml @@ -0,0 +1 @@ +Tags on toml11https://toruniina.github.io/toml11/tags/Recent content in Tags on toml11Hugoen \ No newline at end of file diff --git a/tags/page/1/index.html b/tags/page/1/index.html new file mode 100644 index 00000000..09099097 --- /dev/null +++ b/tags/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/tags/ + \ No newline at end of file
  • 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 KZW7Lh*Zl{xmaf16 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Math-BoldItalic.woff b/katex/fonts/KaTeX_Math-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..87d4f223eaad873324b3e0d42a9a0cf211929ed6 GIT binary patch literal 22324 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 S)VDhlcw(sl0RRF2{{RnpDA*?e literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/katex/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..83b49962aa8353a7eb7cdea57fe843af4dc06f88 GIT binary patch literal 19720 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 bXssLhNj(c?!93G5;NEIzo9EzaliuzI?ubzb literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Math-Italic.ttf b/katex/fonts/KaTeX_Math-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9c38359cca652bf7fc7e7f9581df11e3267a375a GIT binary patch literal 40992 zcmb@v2bf&fbtd@keK}Nmm2(c=)w#N>I-ncXKsUO9MkZ1NAOR2r31*0yG%1-PDOnON ziKZl4`fN!ndp(xJO7@Dfm25eU{dr}3$I`6j@yx8fwrt7vIP7?2f1YJy|8rke2M`do z^Q{_G16B9Es=DW#|NJN2l9(h(e(47#S-N=Sw$X{@_pFad(hvP49=&+^!AsY^{$rmy zB1!L2B#Hg*jWU$TN@qsU*GYb9k(M6%Xh+{$qH(AH=^aS08-r zssC%$xgXDCJ^RoD4`06Yo!88tlBAcujpx7i;H9Uou}7T;@$cWkzY7mtdhp8Ori?#j!O^zmJ|{!gwwa^>3d|NQ93B!S=V$e8i`MAdzwx1 zIv&>J6N9?W75~11#x8KxbVFJu!_{53smiiyySF9p$T}L66|O|umh*R|3R6bHvaDI5 z1L2hj`@CHsppui$-SM-V;?nH)h(nrw1JE|qE}>~Wp;x7{klV{vcab=?zy4hht2Q)k&~AtGf@F3@@kaVUEo-6<%2`jTusX%g#+sVZr(3XNZrILwAU1XEJZsZ3FZ z)*v$ZoFvP`(EPQ}4nbJATwL2++z^Y$vAA^OotY#v`NHN4)FcSEal<0KGK^kE2sl@{x52+NzHX)@y?$T~9;8BoRnSm<+5+NUGiPjE7_knUQcw_!AI*j$_RNhe3)Z zQ5c}GJ^sG^OH&IE%y<0k;Ml&}@Z3dLQGHRK_~6-c`JR`<`r7b|N9V>X+O7fam`qOS z!5|N4{z8RofuPD@9e;M)h2+SCmtHWUk4%(8iH8<_iouQb_eaeq&Sfi4y>0ovl*_CJ z4>~C=7~%n4dFg#jl~p+y!QK~PQe{}vxU?oc+_fAAX>CKK_%{1dciPV&c6saR+S=yR z!fv9%Ze-Za_Q$b}X5-$*T>FZqr?%Ni&rD*mc;7k#9QHBg?cp}_AhXg+WFI^l5&Mo^ zW%*5WC_%`o!hh@EG$Kdta5C#xp7;Oy!|Tvl#R&Jz;FE{<@kBXSPB5R!-ydH*W?fjU zj5PX+ugiWYH)E>%&Px+xZ##cA${F;6aVH3{BbEQ)fm1pb7|I*4FvbFlm5U$8uH}L4 z{}2CZ>0#+dJv5)k_SzD+uSqt;pNF7XvZBe?B)mgeeF&E*8dENtKqzZnvaHIQ!Bka0 zC+T`shjz}r#q}1hxIK`_Kb-U%7ZkV>w=JBnLZn2R?yKwxR=HNr>wyp0B^8>{y>YPc)keD-YJ%;$#SjkIg%nU4r`#= z{EJ$)T72rHqRVVPo-`L{f|`j<GD!j^;P*vW*8-@SzyRxpRf5df-P>Uq`Um(%@q}M!& zb|iQ~t}EBD;at%kk_?lX2D=6rF%8XxssoJI0a}$c3-3ZY2f<5KLYk>tT`A)ly!7S% zEw-*}N|0g}V07vH+2cnKtn8YdoTycD*+k4|OZO>P9X-v) z5@M~9?chfzWI5R_SB0CSrGA4ntyZ7JRT|s##K+#!Gm&Sz z>q(bKMxWK%XG3x#JyP{V-nc8Z8t{W%Kq7_~i5jvZ2Q*nzfUsPK#>i$~Rg~fbu@67@ zJsnsAzHjh1-s47R2G8ju72|?xD4-%Ch@Tm<12g~?k!8c@n~6E8kZaqz3VkeFcrah< z*|_`^{NGPVU+P+CnZph;yn!A)sY{LoZmM4P`)txa>6{gSUIC~9<#?N$)ZAl}w^&}= zu^d!A-L2Anyqh`_yWD@7?YAXLzuv7f>7yU{@T>3pp?5s}=mS?SoH(|&w0pkO8fjJt z2XyHt*vEsAJDZ4s)a&I^&p8VB*n(tx)>|f=00@x51M~Yp0nYC!z|LhmSKY{EJ>`fC zSlD_!QV~7UYIQ(*rY1+Ypufa`5OF}84$TARpBoA(&Xo2db5 z1D&pE=`#Kv$rpW^yjm*h)^I_HJXpOed5(E|sWU$Knc);mz(oUveF24Yt{WD9%kah< zfBEwJ3~Y2yIApUkh$f!K9=4@Vzdk_Dqi3!;NddYl>NRX^Kj;H?%I7!32-?UuuM+4j zR(bIQ1sj?Ey(H|b1Qv|=&$|@uc)9FXZ%<-F6)iMyZ~Ac1CQ76S%ppyg-OZxU9+^KhP#RW? zDML?<*Y*dMC;8hPRSyvU^_;5T_t*cz=FiNJms>;G2GCE>?j3X3fAsi`O#Aq<^y6Ls zumknH=dKEz>1IBnpaG6)D?zClB51#3%eroy^I4{B7*&HjBW>xFrOv4f&aKXV*_hM{1#y>Dm)l0)n>oF{mFW^!*dIO7IzZ0!a?g z77ybDtQC#ZURp)((rHx zhM*{!HgN42V-G9-WDr>be{e0)js!qZ<>1=9!+)2VW-Yh|5%{Z7VFq@i^Q3D5U0@{E z#N6!CQanzmr|GI4It`FQK4g<}$?x43qPT=NhH6F#cDTCn>#U&o%>cJ~k^^X%Y$!?K z>4?ET&SJ5%jbG3>w>%q?LAryEA}7_C-#ayR`+0$GCJ*|-iMNOt;v8s50Sx%v(2(1t z7hXp|w;8u1Wrs|RB5$`e`WWgt7(i9sO0V3wjG(Kxtchhvuk==In%VZ}p%vD2J2_bW zr7K?4-PeQK4n+{@E#Z%do6sMTD1rSDuEF8OBJ{AX6>iM9Y?Eg%ks>?o{r*WO(2N7v z;GNXkvZMQV1uLfMPOR;&HO3Q&5FDR2FhX2q1LE19Wa*2D(kEe14*)rK+pi*89RK^p zS1T2;2rCvp)QuR3B_DYQgikJOTS5i9jx3>)#;!jj{m3u9?cp$qx`%Mt?Owt%;GMup zOx=c&QkdacwOK*B8AN!nZd=OW}NAqMoaU9cwDnH!BPXdMy&G9H9=TGX>tira-3*=b~0*)uVB zO4DTuLwTK3fGXUL#%%v`dNq`Q7iT=O8d6@sN4Ex(7D%L~T|SbO*=k~7YIb&Nz;O`# zX%{boStvy^N%?)7Hg%$qKNi?#Q+##bnfrdr%*pbK_HJ#DMNq2{*1-e8k~F2FaUX1j zk_uJ?5u@_PzvryFc-!r_pID59DT0LbWUTaP#5ZIZJMSBl9Q0BKEXxw?eLu7D+a}oO z#Karlv5KnU50d+*7*p`inQWbKL|F-4gls zC7_#ION78d9l)KL?y&q3UXCRXWo{7`%GEc1QRn>Z8~>~ndma+tCNh(M!M`fSr7`IlFUpT1MJ$~| zrVvpe(twma9%lU@aPvu!hTfA6@gzljE8FigZiBpa=A_L zc(X%hcMlEd`$Lr&r4q{}cIoJ^7e_8%AtqKHzZY zYGpD{W@zt!7cie$we-FLsMN&u1x`9TDIJwAF}3Tv?eMg$8(D=*az9iZmt<%b`0ugxY&) z*vPim>kjv?0PbnPXrw-S?{(|St@T8p6UUFWr`As&yL9~0-o>e-?W48wXtQSP$)<`_ z=G0DG5uS!zjjqE`NJj*RCQ9v@RZWI#>JTXq87_D+SR1*c7JL~BD|M)s;C*-^8et!h z10%Kj`nL77u(zLj8{$-EX7aTKQv(R=1N)N6k;-IcRP`OY5MWF7$+3yEPX$;zp|0p7 zLrf_;fI_C2k=#+cr7McPWr8-D<-5K!X{ZcvRnLtU{H7Lvx@^y}(&U&q_2s9m;^Py! zwm-lD{S=v=>;ZrEs0su1qPJsc@D@Hxi?w6 zCRvgyTdK%4_o`t?d1+p*c~eNkn-+ZQ3(33mE^KaI*bo=?l%n^F45==Q47~T!x45i3 zwD}%yyaJyOx!Ma`7b2|>5PvKHtJXGo0i?61AUk%dw=N{ z4Tx@Rp>2I~LH3jane4aDiKsQG$z~P8gA%CJwlYMIO!A-mIsduQsuF*8NYnSKsz2dZ zYC%RBu+&ryxuC`twfi0JE<_BhV5BCoLVdg zV||?Idq3_QZ;V@!^-f5wtvZuq`Er&ACjFY@)`x7qJD9M2K_g|&1Sb+YXYYKG6Iju8vWHHd8c;d{I8u_Fi9_AQML*Q$kFGF~$Ds8`s7@eB0WR33pdsD#5ciKfr1qjbG&R#`ttz^Gb#M;c(l?{|A`q6bbl~hle#qcuCD=Tf%B3?ukl`IWpH~d| z+c5P&GPT&{_TiQh@5Wh~`_?8W?#~X{tlMS&Z)qk{tVKvN3Y`8b|DTbGzW;Oc*vI`I z^FdYvR99iwHiIx!&A}Uya5muaiEpB0-diJ4;E0Uv|j*2YKcm24`2 zET?oqyTjZJ9m*oZgf(@<3RpN;lKK z3CUoWRHjGT$#^b^0thhwjjtafZ1Fk!Y$NTn^)RF$i z{a`bkSJt4~!c}{yOx+4Q7Qjq;3q15CUmnMm;wGr2U*7(7H?#8@MUhVTo|hC+RIu-U zvRSXbHwG)nG&@vUrHmjlDz_x~5P`4=Xg-W$fzx9AT}0e;IWbxyXPY@<@Gk8~=ckW9 zm%MX3(+?a-r@i z`O~@e_ntqXh2pOHd;ives=`KYNY?T{__K(=hi?$c&r18HcXR_K#-%7Mj~^I9Eos#= zkQkU10)B)CkSi4ez;uSSer$jMkrVgA3bZv43u@pwkX>lYqx2juJS{Hd=e%VS$L4p@ z-GtX%NhMC^qoKNq{(`W;5=s>!2kT`vKwKm4CVLS$ge~?~2;NK5zO}jM}vW~@j*>>T_mI`HKq;Q z{5f4Q5-6mKGzLm>e8a~cfBf&zoD)Y~PBiG~itCrI$0VXcJ8S5OvuST_W?92le{*lLq$ZX$ zu%uhTVs1U^T}#{Cy9+9d7rRRU(=?Cw>>(1NHpF4GEt@^}J^_7Sp{Rp({ z*l(e`APD`P$EITET|o~$d+4+&48!*KgIz5iaib`s!ySm)8W{v?>Li`s8jww@Fu)-o zvjO5tQ3(A59abo+&FVg9aMl{Kebor>i7Fco@FM%MBZ#E5N(Nhsu7ONxK6@k>f-xs1 zEtwTKH~rC6Ir_X(kD;Ch@K7MVwa}h08mDA^cS&cT{%NMU0Yxr4vHS9C6{bbPe2DR2 zo+KOd0dRU5D)2UaV^C+2_f`kt0}ww)a7QFUlr%XYS#dVz99a&;DF{$dWA) zVq=x9CAd6lvyE?Ve3QWf*k9>x^^2VscQcd#_|wcp2NiSy)erdubm4jF$GYwV2OCvb z!&49!FmM->dq$Siy?loT2u8xgwhX*U>727O<*{QGG-3NHk@d*X^>izM^W__#hSepX zfA-18@4j;3%x%Y(_Rh^rBYb$gUJd#Xjki4WA}DLuA)tEM^I4wIy)Y9#hk^-Of!qk7 z4}b3&ENKPI)%!szGDd!CXKaeg=-R1LUHCEtA*3v{21-#Ymj;9IV!>16);HLLs@Vp7 zDY;g1)mkD`T1~RYBU`~B{QlTCNdqG6TfuYF<{EUL*pj&MLBhP_a4P+l_AQ& z!F=wxmrVv6jD*<8DEksKvdm(Tspf=_Mh@GG=Qq!n9Q(|*+#M@7{D*x;EzA?2i&m28nZMTB!_e$ z2WkIz=)fK5-SeH9gsw;{!;n%R3o@pG$0*08S;%Wv)}SNEej#r{O^{xt^@cUItu>;& zni7|a`#`rYZ{EPGsixulPVHOTy)Zx18gJB!>1Y@g^gEREHaLp3!>mP30CwCHUJ1hK zr9DY}9k@Hlo+u$$9~pZOGD=Z`YKkemBpIz}w9=bp#Ejk>kP9S{%!;Xci$Zu~j!6wVH1pR;^sP{y+Xq|9%i8p>8=}KlU?GNUXmaT03EA<43sQkO^U)dL=j&xXh zd)Gn@Uq6UQgcLjlmR1FqM#GAvVn>zw8s50j?m9{%s_ONhP~d~^L^P+M+;?qj{mqwx za#Ip_*X-y>qgE*;sX?g2Iz+jvy?$Q;BY2xywC2GQ{at7!wr?Vi|DfW?%=gn`E!AtT zqrLQUCAc0PsO+y0LCCR!FKh&NQ(Bqxu~99&rKE_DkjUJQ zQfH3P*9JehxI1y6mPYW9Y=+6s32spL{ElM;Gmo~Eyn+g zl#v(ut+Nj>r(}dxMJo+DDQ9xw$IoX|hqZ|o4@Gn(N@^p^|2hw9g{BBuE^{prOcYDW ze8}ZLYrF3%t-4`Z%YX_wC%V`ES6}&U*$n&I*ZjJyhW)57ee5W+=TVhlKWycbV~JoP zzISC6pRD%HH$0@`vD<(o#Mgl}qLOA801kq(M`Q^?6=qhJK8!NTR` z*pz2i`P|g3VOIEOVU>pd#xGb_--Zn3Cgyhgxr1SC5CyNVs}9r)O;cgcH(op9*_cup zTD2>$0P3ZBPt%5^d1K9Lm)|Hc&ZP?yFq9QXe=_BjE1o92wFU z-~es5T~e# zOn^8^=X#6RklETV{R{O8Dk>f`39lWI=!Pp+m8%l91DaQ<#e>+$5GDlxUm{w^r^j&0 zdC4%wMNltaDcg*2OR^H)S_{l*uQCF(LpKM<09=(G{} zfc`tAG^&5!Qmi&vt<>xBqJ<_4ifDjzZPa^vs0TC%Mk{&9Xu9Gzl*Vh?#!DL6K<5jaX zQ(YaS=RTzk7TMm{h*G)%Bvcr`XkDlld83$Z3|2#`R?A)4gS-sU%x8YJ@mjmkDCP$6 z3~8!$y~X|%m^dk|O8@+Nk?9(t2#IhAE);%Ty6SmcO%oD?Z@^fKm0`)v3G%lJK z$W0H6Yrr3SZu%`RBB77LXKSG9EgGz?)$m~srIe+Cz9YyTHZS|jof9Wkc&qx zLz-lhHp2T3jv#IV-tT~$i0Is!sKw$9 zOq%#ALym88Ejw~*WME`~bAQGcc|;CBdEn8gT4BeHKp_qnH<-^PLklxgMr9@Dro+1I z*u#l%bIi!u{M_>H*^ABC7?@$*utT&^MJ+S*L=F@$floBa{EU#=zHWFz4w;`K3pUJda?tPp_Fg3I|eIW>{a zHzrj!JgkQN_E1t*{U*A_!z=tuyq0idjl>(D9jS*j)Zc=UM7%f;v_dP2eX0~4sry3w z>8E2>Qj4B&kj+vRbLIpP>iR!jpJcC!U0jvE(DkEPQyKu)?E+L$w+BHLilkiQRI>xy z)b8H4slC#uh#0nE6^UYG+eJ{X?V`BpRaAA`d=+s4B!M9Ba=%`?<3*s}cC0eAZ@OF& z>0ykKU=z`(2w2gDPD5L@2r6P_L6%FM4OBB|tf3+ar}WTHOSNQUDD6|TZ>+xbF_pGeiCp>#d^ zyIIAY9h9MDhHtf&hR-mA!4AvvWUJerOi6n@~G`|91xy7$&m>;_g< zreve{kh?Roc@M=e6BFTtKfNo_sN~9}d^lN(>yA?z3D>jr(a>1Xw9{@N8R4!U^^o*n zGBMK8G+(9YPQ#=L&9T#H<-UC+WAx&yP61aKN$H&?~R>;~)s61_ZJov$oXgj$s&x zY9$AdHjt5`f~dHV3MJ+R?qhu=opk+Do3$}x)Qk(92)ApKBMRVQi{g+Yr0t8xu*YJb z32vdcy7r#oHv2)ORDu7dYRL)en^WWu$j*;&=2wDBCPp!?;OP0dNPT ziAa4kK*K{e_#37nK_)RgOPGp51j9jc4B;J<9)9rR9j8tlSY7PynjJ$1AfJsWpsM^c`a_=`wp3S7OZ^YN$xU9`iE)dj7mM9j8_AMi(NbvbF; zi9{by{gFf>yE|zknmu|c!i?&8zVK#0m0EI>wRFNi=z5mO}_2Ho^1FMWOGzn>#pXgsTS&nVjoZ**o^iS^&#rkk)d%yDl`Bj+VX@@ zC>_(97#*hh95)Dlc9b0@G5|fCbo+Y<+XjCYiI^R-fJ}r8;Ic?aJ@Pfy1Cd$Hsn*?dNn#20gTB?=n3SO#Xiyw z&O9*|Ppyv9td;+!`v-17xrqOWd{-3uSnHPaG=+h^>cxX_CD=QP5s}qu3@2{rcSGQ? z85zpGkvpeV*Rv@4<)xE) z&JP$|r;ef=`i~}P)(#atLSsNUXbQlbk_uZ&;hAW4d(H`96a~%;b?CIS;B=`(b}ecR zkBOX9IC~5iyBdlND*HJBx|C-QIy%R!28Q~Xt+7A! ztL8w@AV>RotMsneeM-U}fF&GWr6{ckIeZOrn8g_gd%N8|703bFLSYhFl3*U2yH1o6 zp_DWr9aNitP;!%59c_dprhS!-S(Qu zuAIg&fRfpk+?-6P3B%m@+l{|a5M79ABd*<;aS>jD{V&*|dFjE|$0-N~H6&tE#5n}$ z(Z7mKL}>XCjr#P_hh~Ln@~~U-)*$O}%SB=+XmVn>S+8VL;UM~b=h-|B1qp2OVEiV2 zA|8u*3f^Ph@F1kY*gx7r4M21>Wp8Sh-_y~0GDaFw9n&J!k#aVioR0aU;bP9RvL)3= z;IrV?H!)mjTsY)v%owoPV5QKEx#Iz!6&wqe9(&nL!(&ce|1SFp?9CzR@vhZCnPM+; zz7!kM29>GvNRh9iw-kzVH@KNlBp7lpdT!9n0nKG%m4q%AL3$s$>ALl9n3C$9siDDY zIp~)Tu|vrIHajBlfO=^fF)z|ML9#|v55+u>3hfi9?&VVjyP(zh0kC_T*?uA%4+oKy zLS-h99X*&26wLuOs{3?P8yFZleksCp$zUXh*(W72TyF=gff4^Gn#M!p@4i2yS3enZ zLj`mW;*%MH@np0R)Gz?f5V9%Rsp;X#CDorPyTM{WQDZ}8*KcAND>|-4O4Yj;0+IY6 z_A(6IKENN5_DTE)Yl5I0E$I@BllU%-RdhC#cdWw# zTB=I&UE5Z9?G1aSZoLtU%tYE-?G3P3Fc0!?!rvj>!TccoRb-UyfMsxW+9~#UvN~94nY>(PE%rPr zD(D7hM~`V47W6s$Ljx8(0V?6IeArNtGBsC%QD7gp3X9=PHD`p~mw%WNImFd?9h!Ga z`d}BWJDOTbp%Y59Fi_TR2%LapxEO}VFiGb9yKQjo9)xU z9YHegAQYNzfBsFbfa;OCRUsvrxxg4K0ME&Q9FrQYn5jWA&$9&DJb8){NEp!Ey z)9mF&VYC_lUfMN~ZmH}+fyl|86AU2w43 z>EUJ}2VY@Ji)@js*NXz$h=Fc^xo!JE)Qft8VcDK-i@au!lKo?Mjbn&Q3+rYpwfU(N z6X|k&0`0=G>YGSM7Y2;FuNqIJBH`?AdvUiL9J@T`29vUT$@_rLk$QBf5;FDbb5rS1 zGdS>}j5}0z0`cl_zI^o1%=3Nz`HT3hSESE&&D&26hLEK1=QC?WK+%7PZttF!am*rf zUcW)j);>$Bd8^fLQpy3`4&!4~ne5#k+UVW+hP7VC>)iU$Bm4HwVZO9cO(p$~bcJ2% z>!VjF1LWPfkzSiVxePMrURdhw_05!1=(FI%y^;w^zBtVQ>iKK_$QTjA#tl{p z*5YXC8w^L>@!K@t@RC0^T-ke!Yj4(4%dE~~qH@d~QfifE5$2jHC_d6s-(QC8L^f+X z&+M8|t%;m394|9_cj2~!qt6C0MV!rbcc*cL$xeOExoZJFT8WH4G45*&&zo^nX`Xma zCx2B2YFI#xE7bFs0+o^v&vKlQ(DPVR$T0x8t~w0mCYzEBVA=)_mcaQwchi)5pNg8W z8tuH^Pc(GA>+EZ9z7Q=rsCwMu%Jpsx8M-SHP6oN{ShZ5C4Av{vx{uNgHL9hH-Hv;| z`gK7nVQo5kAp|@Rl<|TTc(WeH^z;9IUfwhyN?nMKD6G-Svzn3~UGeMXIiF9ijt#WH z2oe*vg?5sfD^GGc6CYf1C}qh*Q=^mnD%oK(G@Gz0nI;OSV21(6UrE^+&95^x6(8Q? zCflxd*h>`&k zZ)k2&huv%O>71N)5}D;;lWNFO)DivxGP_&)v#$RrkbV>+8EGu193AnDNtlPBY6h?# z)m?sd(+WjHJ?MsEh+qL@6Ub7W2SAN)&InCyzZL=gmI;5)i@Vd?9meL1(+##f#!X+> zGu88F4<95`9c~tL;SkaTceA^DrYb4{eOf{a0Kt+B$#%(jA?>Njp1Ho28v%5ZWqVrE zGgO%B@B1Tn>cN%K_UOU16^_P-JaNiyFo-^k+LCKyerUM0=jKi&I#_~J;VdBBN_-$1 zw8Cah7;I|eiSYPsiPV@sRSJiDLd6^4_R;AgN~CgnZ1^S)W?#K9G7#ok_2Ef!F^PDD z)eo0H(zjUl4M_jAbgFyXG6SnZ*pEZkIK&OEY#`B%_C&5obY_cXYS!gV2L#EZmGYcp zbJJ{?2VrTr$%*5K4pd6brAobAYLcbJdjUUL8*xD|2I;q)k@xO{W~q#1uKJB4y7H{85jy<*xRp0W#6ufqXtqwe?Dfap)>~aZJ%aFGQ*dS zW}QH++zK~#n`j=3@W7EN%?@Rfs3!S`%4*0)GQi9=$IkD|1Z_JUFlgYoKCN-b_UE`U zj1Dob1PjHf(<=psnZA0?R4isp9>ZKqJgTa@4A@d0p~}C*89Mvue2p6L87xt>dXXJr z6dyhm{pOefp*$N$xsoD2ie^G$o|Tf@h5jn6@s8ICqE%++I;y?B)!n}5f;gR)AR?og z&d5-?m`+8*I4)ry>*9bCF$pQa(Q{_hu-#@CVBM=LE&up&O7n0pL;ml2#h7?ldrORvXixC~H6<%S@X*QE@NDBXCQ z?(aPwyy0=$R-w?v0xSW8`<>2&*r=F` zrb3NJ3RCr3O^!fWHeTKM5L5;v#L%@60+gTn%KXI(zry}SH%bOR9N>?C5q^ObgTJxL zjxgy5pWnF7c_IHkeB^D@os-ffR_Z$IYsfb2ouaxtHh?}*6GLb?umVxFjvBhI+}VG_ zK{4qR-W>Bx3J9^RwnC}xuL@Y1xv#TVI+ti*Y)C5QhRR>wS=SB5cc-) z-NPvHq>i=#6yN9x!lNFSh8LlLPM8fgYz|*z565X4_ny4;xK%iQmxCh^&g{MS zJ?^KuZ81NNXTgysi%T3GkX!%mE}=c0cpJ>-C0Vbx)q1>Uj#WOts%3CVc*>~ zopSxK9E|rP8NX#b^lb2^&yvR7`dX6u&7KwJgeSQC$j+DS85ItIk-EDl#+qmbh(&Pv zhbk>A%O-%UC9;efP>B-$gkI7Veqli0g#cr5FWx2>)bDJiF~}Oal2Lk~Tp5u(?H~M0 z@p&hNnK50qx&_YG^(dOqBbZ2HMmeebeEHj=Cn7=Q#zQlK0LET8yN=Bo#fSmOHG)G> zH@`LpfTyO6jbGXLqJmaOin?)2>Q;6C@4094g^iA?7%4jU6CJ6tGzAkjF{LzsT%uTL0OiOgPzU2)PxWR1i28chm-of{M2hxMN8}49UqYv?Y-r|4!>bT>Xe&WQ5 z6K_B9+~bcvaL@U(ky?3bq|<1Y`~ZRQWT!Y0kM^@NS{Wq@^nupO&=Xj(UoO!jlkIQ` zBU!?}g&KL*?ok#21!$h^6v^ymS`GE1WdtCghp~w{4k|-2$L19{UGP6+VBu-TFuKp_ zyf_>w%Jl4S{rpD3HL1_M(q|OjR{Is5hW{J{ou3_&t;c`7i4^ zv_0SkREZ0hN*})Gu7<2Tw&rv6Veo!=<8S$oVORCDGBo%yBVv1ciczQM+JB3@?z#kfPtY7U6_S;l#F;Z@DNgj)yaA!^@pD5Pv#M73`Cs8^jdH zuS7L8Um#{cC$f-$Ff*Vz8Kzb)B94=$X!eNAw^;Nl-f-Uh&lS@*IFNn$o$9-Q??);h zW6iP8$Ie$KYZ}HeqNf;77r(XfEf~)1kBj`5%rYz^1H+YoW3b=0nno>=j-l<(+V~cn zBXixA;`@**%nY1!b({SqjTRwoZ6lqvhOrVCCZp+p3|W)c%>cf?j6Tfs(vw}Qgt>ze z^au5sS_#eo+zDrVp-4wN zGj-`aJ7+=d!zG&IC08kQJVN^;AdYwuaTpo^5g85q-Q)N>^j=&n94$4ucnL&!SID9~ zjPrU@bGNtByRa?XOmt5a%VDcHsH<+24dthYS8zJg*0Gq6X0OI=9Hd}Ims~?Pz=*xkm` zT1@Zc^XD!c^$!e8C1)CW3;B8pXOw_w(M-;R=tV$&8~yy!wFi%&4o180MPVSW63#xw zybewTqrImvOi{#GM@Y0yl6L2a;LO&bA$(?@?B;S) zCqon_D@QjEH{BAZdK;=714kUwawgAA82t3cQA#&q5_x7%D~UGo$!EUAo%Y<3u@R9~ zhNM3SNxxnCcGp_NQQXvf)|YV;q|eZF;~D}xy1 zpSHJ-Sodg&8=01&<`9-%k}g7Fjv zIs@AldUI=a`{qyETF!4b29*KJmZwuPjxzI21?uIVaveRfuxg=tjsTC&8uK-$m@`_R zN#lT*33af5QWJ3$EfI|e5>Ky}Et$t|scG@ok{_*)$K6qdn*o~{^LDZ});O8*%bCoB zli$Fo-%d4CM}O`cioZ5@PdakQrj{er4`oYBrDx8+J!bGz@=eg=6ma?|IE{-FY3`Rk z*0pf@Bg77i=uz_mTCkwGXtt*2PlN%%HTn$dc~l2gbqgtqVjT{Hryl8>FYLa>8V@gU zngQO)edpE>9@x8Qrae$Uoiw!=z5$_5NDc`Tmg5IF0a);Q;@~E|=RBzI@flJJWY}7C z5&h7GgbY3X5Rdi2Ux?kKL0b7V1%em~iy}wCd@PW)#uY7}MdOlc&epmI=BDr2H!wOK zKeU($ha*mzg>BVNVzY7Db+sbP>+1kXI~5vhq*_P!uI;-JhLRMxfEE9ojo_ z@$jBQt$nXLjgjT!m1wPDku7oR-r?tv@0^xSP+!dQWCa7*QZ_;ucYw}P+Yb!KI3dZ2 zYECFpXqq552(0i91x!RZ8qtm(o}U|SmI~=aI3!K8Y08{2uS|gR7Xit%t?-Qksmn+& z)P(`nyx_D=ZKE_95|7d{)~`jjJDvJuZE8gAam{^ECA;57Kq+hfgi0k|%^pnYOL2Kh zJFvEL8nutW2hYg?WzT5@q~j??-RO=Cqzcnhx(}=Y|I?jlF}6IJ3`N*`4B7YaC4b@= z&^heWWm9uv`Bl9v4|=^sXFp)E{fpUJ_P}|+y7BkTmf>%xNLHI>IaC{*FO~xPt6g*# zNpYOfG!N!d!tBBGUH|f8HG;F=+j%Mp_dI9~RdJDJ6PPNauSJ%TUZR;lO5lLVa2};L z=^7a#fAo7VXLQm=1!;<x&Is}!giY;D*0?FC=!=soWb@MY}{jSecU zUosP}+EV-v-xl2XS5pm6FMi;vHe2@Rbsba?r{-U8@H{%pW~FwwWdl=YrV}8LXprpB zq>3$s8WYYy9~C949Gn;jlZ_QsN;6Uy6+Uh6<6uM^CJi0y*UAaiH*H^7y7<_;d7GX8 z(XnGe7_~p5#_pVT(%RSpTFz9x+KMvn_i662DR3z_8Bx>_!-=en-F1CxkcQPli)S(M zcIwQoq+$mz++D|vfy`>3_-M$tyn5A?GnTgS{;*4PZxwX2{09F$^t7%>Kl4j_n>BQ% z^fMgDoXZ$z#M}@ytDy0iGEVq_;-kXedWnpiEQ5aSSVn23n=IRTHwqS+{0KG{Ia@He zN4DLA{HryGY3ccRiFTDy>o*V-KcqXvn|hl_R*e`0nu8w^j6f6dcaX7otY^~1t!hv~ zM9sgEj@pVpT8t=0E?`_P7n=3iY+4^I)kc{bKG&G%hFsOyXw?XW?snXbpC21aM^m+c z6S2;hBm5&_*q578S=6?No*r85+<9Ux?{~uoCo;(^Yx$@W(hpCm_CN>6M8*{3jc<-l zM^pDsl@@Y?O5wRB(y;XPzeYdXZ%T{OA9n5Cac-dA;}s}~-Aqxg77e@9jE@X7DnQJ@ zU5!t+qVq>v14`TxMhBvv#wyw!^mZ1anouPsQkyD;CGY>hVu z>eXVt<`!|17|wB_;LlTVAu+*(fT!ZOXAGVwH^oTqFo(DX16>f&(o2sNW!taBE_U11 zLZjeIT1GsYx;PzJ#_*=k^i?KKju$b-ZssT4aNLT9?kHK^Yx{R;_?{7Cs1@-~*PBD3 zsBR|nrBr!L%?C0uGhK}2!yyyr;4;l;$1KyQH%S&ln2z`(u!Y z6M8t7@^RCh&c_{d`bx|_U_Lh%lmn?T!%fEmWiUJ42D{6r{K=|1w-~zMkH7bTsqq)) zgPNR-s(#{5aO!a60o#vW8qLvauN<72yuG9jhR2;?sxTfv7kWfBY*P-{JR2#yXrwhq zo}K92{^cPxgzbu6Z?J!ck6)A)x^sElOtdmXIx#6omlrs07kDMC9MRpHKOI%6Z% za<4^jku8!t|K2TvKvmkAO+W<<*C)f+BT_Fh_jL0vLD3g3`jwTLS;bfIyX@(m&E9Wr z6WnT1PW-38(bFNEtMHdQI=E%@UVNARK74Wt8RWJ!fIb-DD4NK#-)NJGfZ*lx_Mv~zXtn=YLj%E$Gg?37h~ zWd7|_#qvZsGCp=m_4&ut-(dNK?KXx+QL|8o=I%}hUwUlizL-Bh{R3lDzw?g0&)?nL z{rGM;J9Yp5KMLv3&M&2$#bvUOF?^nbkYba%pOC|#)O?x6NR@(_GoLQ2Y1glnf8ugJ7PMQL9QZ4}>v8bQLA>je(vj}LLJn`W z=0n;IJ{;9HfGbU{3!erqgq}X)Lc)2Q);*(tq)gFYiKL}9gdAQ((ybl->0I3BI0DPkacIFLh}SQ?1CV^Z+r0o$Ki_EZQppVw{;sgM7L7$ol7-1F4dNBnqYqt+@(VE|AcjJ9B?yMXVL7^;?Y88?WQ$5pmUvftVA2&r$0ls*yq z9mOvw02wghklWJ~{2Mq0JqO8y(f$nvDA?BQ{f_f3taf*D!1hHABk1}g>{Zcey1@C~ zkULURahSL0855n2z2hn%#{StBmSVNzLsQ4ohCk%9_$vBM13u@U0(Rn<7HaDsc)#dp z9=^T-BK<{F=vTW|6!wgeaq~pQ2mp)Dc)bSZE5Rr@4-r9l^TTnJb3cC|G3*JN7(XPe zdoE3wgwS?xC&avocf3VeB-PpnXb5Zs)j2c|-1W(vujY%YjlXyeMjm8ZbI6 zT~oMzJ&Oz%wNVj4s^Ao0M3!Jv9xhYW4)LW%Q-~;^;xk97kD%ONMvuJhW^3{3>5DE- zpFE5sK4@MPN#c9iz2vY|vTqLoyksoYeiQp}q6~R+VyKiP@*-2fc@&K|01f)SE8+oO zh9^eQ0&0ZTC@*sLn1N?a8Vlu50bCg&U6#$z!LSE_Ce*%v4PPn&UrAp)5MBdiB!@9ot2G(}cpvFzRrrFw#HY}i z2teQ-M2JrEjtCHStp|f7WPy+H`krfNpUFl87+GX`LcJ5hl=t|Yd>m3*D;b4GK86Su z=Vw{Vd-VVCNhMOyc6VhbuUA7k!x`FJahC6lfUE|x&c^k4CZyVS=Hrhhv|u1*$d(ek z7m~oqkucOI)Z{Y`8u+Ff!2Mkzf0Y>{7)gY|vuC>+F`sqQmpB7VDE zi=~r*K6buTEboi@6Cq=$P^;9U-^^L;Lt1C@6pFIWsm1kA$JIpo+NG4?XaDWM$lOT& z@=|%AQpU6os-M?C%sz}yvrF3B?UpUD^EQM=6OQ2J99*6VI?b|B%&A;}NAo_W46i>s zJvoujrjijCS?XOneXt4Ps-bzCy61^YBX=e~6ImsF-y#W-KD6-fwCGPmF_*uW&p9~% z>Fvj&iLqh~{>m;CS0A-llmDnfr!U2ET3RSN>O-s-TZy{}_z$zvGQQBmw|3R9glxYZ zV0!#?N3kYzI2#ImIXqcxbm7f?7|1k8etGbnUC`HzG%Pi{4N9W3b&wj+8_NHX&;+L$ zs26e(cm@geGf!xJbAk?fF9rzR6Q_P+N<^4i=k)jc`A zKmLi6^8@v$(X6+J2V%B;c4=y68b`*-%yIKLAh9-j?c_ARHnMoMIdHL>7#tsMu8%@W z?)CqQbl+$2j;Fg*Fd|+M%o6X_W0r`vyb(Up4izEcG^)8wG>o@D%!cXhhf7nK0TnS+ z&xG)HOF&C#92f?MHUP4{PodSL%xp!YW`rKtpLUxWocBjMH*vkj?}L@iNC%|@-IcvK&L@tn6M-Z; zB5)iD>`J5>z1~V}L+^xk&@7R3WYWH+g)Ar8phj)KKhz;kvG?aaZXJL+)u#ls8X;FZIx_>!rAlR%Ih^80=U zI>I6sS0kBs>@gH;`u0pL8R%p}EF3%4xqqnklg+WCE2XtzKIXckGh+Hbd3}B3Tq9%tN~N!o*mfzMfZnyUjZS1RQ^Dk3hRhB=nD9;P zznB-^o^luM!gv-|C_DfpSMO0`q2j$_r~sFxh>__YEZM$f8f@?X#6+gc`7=+O#d;~` zPhlu3O5eFy3I_xB@qBi`RQ@wm3tv9No_SiYRgxjyug4t5E?9~?HyFsb??`Ha2MxZw=@L~@AHC^ybZ%G^hJJ9G5VuG#iva{wUbNSD|p3QfXZ0;DgIFa;hEiOfaRu?ZGn zojX7W;0_lJs}h}7-wS{Kr^dJoN}Y(tTpvGnf}thy*l{iDb{~%DgeA3T624eZFRov( zaKxJH(?)dt6HKq(42#$o#>$b==jwwA7pc!R{BYewhu$x9HT>k>RB(_m#!Qrl3-QLH zdt~wS?RU^@h59*}Mc?k%D_7oxQjlQ)KJYy7_^347?Nq5*ez7$GTSuu-mH|pc;*qZ) zsnL)!JKu{|_btuM;7p?iP#Nht+90Bu0(gMQ{oj3b2Fy?=5q|n^QS_5}+l_}er%?Lv z{P(rkIJYv>XWjTwoZ>h#6$wUTqd~=vPWmm!@uQ_-pUnmvjy6`oyoi<7&Af~{yqz4c zmnUL+F$k;yP#>|~gGWD>)emvKR=g@ixAi0Yz(4MER) zkOAZd-czvysp9iz5%H|;U7YEp6BTSiGfa_64{s^9A(-|QsmB6=0kq~e^tzL*|-Ag9B;M1!&`f^nRp_TjC1rq%;)At8xx8hvd4xn^$*8u;rkuY;iFhl zJM!>!WAKL+9#6h$E;v8b`KwkklgxAH9zPn0&cwf(U(Lpcr%vFznprYAw!AVkLWR7C z4$aOubQU5M(sSM{q2)^%!N^v_@P^&dAl2IcOPh!eM zT#1q#>Lin`d^QnB`4`_N(4OPH$eX5V@TW(_Jx#_Y)AmA0JvjjzAU(KBeE&eJ(-EMo zYgI8+P^NBbG|FQQ7JO7O44h@J2hg5k>^zrusZGxd>k6AK3a(w9Mo{S!Z&hGvJa ze^>5+O-@T^rQ_Wr^xci@K$aP7zl2k%QPKe&(UEL;2$Qe9P*DQ5=zR{nJ7Z~nzw~L{YDT+|0bd-(zL~1hay;u*mQc5NOWDaqk1-i zZ4^8k6cx>K!fd$F?#Rm0on}0w?(;_{v}hwx4)2+swN~a(A$k~Rz(nsHnOa>k?NE7J$d~kyGmE5i`5#(M z!7ok}a{8e|ndI?U=7B{WriG2s<+=I;`;TBp_u|Y1iV3Hs1JZpSLn&hqQ3RFIH`t@J zg4OjxLxdVAgyLNE|F^Yk4{qZ)@4I&ZAK?3`2lQC*_{ISQ_>d@)rbvJQEmMw2QL+I! zvTy_-5f)z|Axrij9XFYF9OhxS?j&xVNnEG#*nh-bNRcYrX-96_X`75P<4)7ond!Kb zPC9Ap#LbL7o@v=(f8QQJkrHLOo*oJ8x4Yl&_uSpvyBkg1K!q28+8dh7l{R2j$>X2?m$IR+Y zGtA#k6g5n>(Yyj{BBka2Lzn8xG^`~;EhR2j?frkH=A5pY>Ne5R+S>41XTR?sx;Lhr zkIE|k05*K@Deh=+yDCcR%Nokdv0jPe$WHzvnuG2f9Bppzrb#HKDmdr<8}P?&n%&^F z4>X-FtUTE(P8Rf~Ufhj)ty}$TeSPnt)@GbkaeEIcQSGjkRzEAny^71$_vp)hYx-=%RB5@JWO4-*{3bush z|E}}j)y`n(`laK?&UcG<6u(|_x^%(SQMSMA-SXLrVC8Vth3Zo^4K+WneYWmv_0Kn? z8cQ4B*fF@{rJYMVf41u{cfaah+0(e^r+dG*Z{NQ6_W$PozZ1`UIy`^Ubh_yS<65)X zQq}Trt-ok{rtO*ba!-n$_k9zL)(oT@MGI3?{nu?$>(u^}O5roxbCJH!%x+ z_F(YfSNiw&f9cTaLvo;f;F-aa!I{B79|{ep);X* zB`f4zJsJL;GgU($vNHV_B;!9`{(UqcJH#)@wBo&tH=&8VC6Mu7@G4yVK?O7ISIp2p z!skb-I|vj(x;IADiit-nV}ni|C@DdpJyI@2f~j~ zF3ozi`&k2a>J4e*tXG$;2legNB5WVh2DBRH;ooKLJja@}62O1U+W5cYSD*ihxwH`$ zz=}fy{|25LlmhN#t(d_yXfdSyoHg-}*5BcOhB7}u{3ooBXIPy!r1Bc*j2K`8bv5v} znF0Bjb`JcHvVh|88f5!d)d`2dkXv+9>l7i<)Bq8Ih&HsO6oe?`v$?pxik)Ai@qUS9k5+8?fc zYweqB-&lKL?GM(TTl@0b7uOco=Bm?qeo*DTE_9L`$Vw|)G=tKR$L<_HrY5XF;DC&) zth}PKs=B7Ot{y}3&Rx6Rd-mFe_U#v*CZoBfwXMCQ(`)+tU4dYCPcKe}d`zXEAZr>p z;mvscnRZdOFqUlpH+3S|=@x)oNdNL-p7VCBF3}MNnG2`}l zB#TQHHpVVPL*YcoC%Gv_;;c_3u5ct7IsQn@g9E3lF(D@>V;(sY zcMI81P=7owayF8clI=*!$Ak<}etqUM8Iw*UB#Vp?*pEw|@JR=b!5SWs$~k93f^ux)^eweS zBq{Yy57NV8Rji`!T)^1^v8G~)Nw;-89y8*|9hr_H%S}S%Df^_;l*M81WptxTHARRT zApo{5Rp~GB10%mF*j*b3OAT6a4Gc`!y2pyW zBXqgUrAJ~Ox8aF*dVI3N%xPLgrmQiatTZ8j5VAb{0LcZw2*qUu#f~FZftXKLp_*!? z5&;b)!M3anC&X$($Vw>9C#%hg6S15lH5PA{6=~y=Pu7?dQ?ZF@JJIbydYwwIHFK;g zd@`1+stQYPg=CeNoD{Ab%9Ybs1->M2ge7!r)XtITLRq0zn3u?QdJGgRz-~LAioo|N zHx5b0!T)#yM%-emyBIKsC%y($9F}bOGUr@*L!HTTOpBa|$toixBC-rl=`!GNA&~(2 ztJT$gQ@JnjdN`%t$4j}&^q zBZW=ikwODJQrHY0DQp3c6t;p#3fsUVh3(*xLemsOstNc^sHQq0!mv+*>}esCCi$D+ zls>QYp(S;}iO1n>+cqV`>Nltx`&bOPl1~OU%)=XHS7#1e?;DX3gB0-EE3K z#cvPrc;wC&jgDel_9&e-eoyt-W5Y&&uA4VNqF%@khPN$}fMZ+zKG|pbcMSRDfqS9C z36nrS2$QhJ7U37;)OexFBde?9#yC2Q7`k`kxw z4IzeBQP-hc*}`wvAswg_SVAVKy^l=Au4qCR?kifWzB?YGKClG6Dd>Ts5k>2RHMce; zw0rKgJ9{mhNEuQOTPbuyTG(;}PQ=l6Z!cqkC3MV2)arK|pb&*z2ox36w+#_6LY<`p z9RPIighQcgzl{^rXrXY6Vglb7X{eXGMGGD=Kspeh?rhELz!-vR234{wK?4^eYK#*x zveuAN83~ZrC_54Jiy@4S#Bn|mmEBT#Q43;6khL-T+J?H*xe`X+GT_lC@5^%#E|?}k z!}IMT7EC#88p2Oni=ty5iu-eZUXKQNcq19syp=q%k*u%_MYrILnzG+p$k|e9$dre? ztMDOmmQ^&%I|#!pe(4AOuu>N}U_ra&Tn1W&AC1K3aSWXX`tS`;Ey#OsR~+BYF+Pp= zk>03(88Z6ao=x`l#Pd8xNErpCMoE4TX`Wcj%dsKyI7Du+8z)A4w8J{T>_uC=|1RlA z(C6~{I@t%D2TXYo!31e70=YKDZ(KjZOVZSHJ_!397ggv1sw)7tNaPcBZy>7 zIkgP;(-v;V3MHK3af(SLMAVR%h zUcqU_!p&32D@)Q+Z=SqV7;><~3^(I{eH=F`{Hy4h?c49A94iW4>2hnVlc1|jC3q2D zi4B`YIB`XAN$Aaz8~P30fR-ZW3cblj@TX!r8_PBGr>Ah6`E)F&r^a%v6nmrODLi!= zc{+)EEui3TI)1ge1n>DQ@4U{}e@i;Pf`MZ!=S+>MQR*&VF|74Bvu5oEW}R>GKVJV3 z`{S^VtlhwSLEqwU7UICN@i3RvuJPBAKCJNG0^T+L2I4&w$JNLyX%42YDSX>7XD&9C zhc(PFv87UB=*)u|qzyZ8&iwOv*vTr`b9uOEQ+fsOW-sQ`E7@+$j_F5ixV6EUk^RScc#u|x@U$iN`LQCoRv3gZ! zCF^xQn}@46)n7yPhZmQgSk9cA&5HJ9hv*Ij4*9wR!GIV`uVl_Gi0Nb|y^u_s;>beM z@46j1*h|R$Vq(@>5Ti*em7afM!a9+Toq5p8&K}8HbD3mxaUmOBTt1f;-Tr_W5V!Ju zHo_eV52cq^GK&i$;1BqFZzq}O&)k+l(LQwX;zj>Fh(Bgs@`LJd$0uSsU+_HSuxv5x z!lvtDCOa#Rr&rR;kEc_Dgb|;y=F^+R@Vi_mW-}{x-t^+x>_uxiEsy}=(+evobzvcu zUKZKew3t3}R2*AMFWAUOZ3I&kBo6w6e!H@KSz$eHW#+7zxwKG>SRy()C9Ld#Yc`u* z8tCd;NiJuWvMc_T%p7stbu4=H?m3v(FXHLg6L{jEa}aNrDb(DLk`thAp){?|Bmt#R z<2*Q<0E}}CXvt^rTeTKAoCTFEpgGV^vM3~2K%By5$dE=2-OR7J9Z>b&S>Cs$hV3Y9 z#drv{E-Sf-7Omb={eDPrFDbX`k2Lg2HAr?C!YVQS`JoA0^2ZQfLfn>h7mD@sp~<2!|vf@K8W-e*Aqvdnh6CU0@U#t{%rH15dQr48Do#Esa=;;wVNC!p!3AoeP|0@wWuH3x6xnEw#KQq^*D! zwXC@f>vno}^8H%LifQW7wxK1y7iUHBUmL52Mw_ zu`2rr`z$+64~p3<*mjENRM?DC!b|ba)H3!hUXF9VmAr~q^BP{u>#+U4fj6?R{XeaF}xQL-DyN_N%%0-&iD AJpcdz literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Math-Italic.woff b/katex/fonts/KaTeX_Math-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..959746ef56fb302f4f8381cd199acb54ab7db0ed GIT binary patch literal 22844 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 Ocw(sl0RRF2{{RmnPtGy` literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_Math-Italic.woff2 b/katex/fonts/KaTeX_Math-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3ea522a6a2da7b5bfcde8aa4cc4825593e3f857 GIT binary patch literal 20096 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_SansSerif-Bold.woff b/katex/fonts/KaTeX_SansSerif-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..f0d6ea739b8405ce37eab96c71feb4b0091503f4 GIT binary patch literal 18516 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 literal 0 HcmV?d00001 diff --git a/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/katex/fonts/KaTeX_SansSerif-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4cf8f146967e1243ebfd1eab7ff9c596be939f2a GIT binary patch literal 15732 zcmV-)J&VG3Pew8T0RR9106la74gdfE0E83(06iH10RR9100000000000000000000 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