retold-data-service 2.1.2 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/BUILDING-AND-PUBLISHING.md +2 -2
  2. package/Dockerfile +1 -1
  3. package/README.md +12 -27
  4. package/build-all.js +66 -0
  5. package/diagrams/architecture.excalidraw +2966 -0
  6. package/diagrams/architecture.mmd +17 -0
  7. package/diagrams/architecture.svg +2 -0
  8. package/docs/README.md +12 -12
  9. package/docs/_brand.json +18 -0
  10. package/docs/_cover.md +1 -1
  11. package/docs/_topbar.md +1 -1
  12. package/docs/_version.json +3 -3
  13. package/docs/api/reference.md +8 -8
  14. package/docs/architecture.md +6 -84
  15. package/docs/diagrams/component-diagram.excalidraw +2807 -0
  16. package/docs/diagrams/component-diagram.mmd +14 -0
  17. package/docs/diagrams/component-diagram.svg +2 -0
  18. package/docs/diagrams/component-stack.excalidraw +1169 -0
  19. package/docs/diagrams/component-stack.mmd +6 -0
  20. package/docs/diagrams/component-stack.svg +2 -0
  21. package/docs/diagrams/hook-execution-order.excalidraw +3230 -0
  22. package/docs/diagrams/hook-execution-order.mmd +19 -0
  23. package/docs/diagrams/hook-execution-order.svg +2 -0
  24. package/docs/diagrams/initialization-flow.excalidraw +1800 -0
  25. package/docs/diagrams/initialization-flow.mmd +22 -0
  26. package/docs/diagrams/initialization-flow.svg +2 -0
  27. package/docs/index.html +6 -7
  28. package/docs/lifecycle-hooks.md +2 -21
  29. package/docs/retold-catalog.json +141 -141
  30. package/docs/retold-keyword-index.json +6818 -1608
  31. package/package.json +130 -96
  32. package/source/services/RetoldDataService-Brand.js +13 -0
  33. package/source/services/comprehension-loader/pict-app/Pict-Application-ComprehensionLoader.js +65 -15
  34. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Layout.js +28 -74
  35. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Load.js +17 -17
  36. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-SettingsPanel.js +62 -0
  37. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-Shell.js +142 -0
  38. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-StatusBar.js +125 -0
  39. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-StatusDetail.js +89 -0
  40. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-TopBar-Nav.js +42 -0
  41. package/source/services/comprehension-loader/pict-app/views/PictView-ComprehensionLoader-TopBar-User.js +48 -0
  42. package/source/services/comprehension-loader/web/comprehension-loader.js +5415 -6183
  43. package/source/services/comprehension-loader/web/comprehension-loader.js.map +1 -1
  44. package/source/services/comprehension-loader/web/comprehension-loader.min.js +75 -1
  45. package/source/services/comprehension-loader/web/comprehension-loader.min.js.map +1 -1
  46. package/source/services/comprehension-loader/web/favicons/favicon-dark.svg +13 -0
  47. package/source/services/comprehension-loader/web/favicons/favicon-light.svg +13 -0
  48. package/source/services/comprehension-loader/web/favicons/favicon.svg +13 -0
  49. package/source/services/comprehension-loader/web/index.html +3 -0
  50. package/source/services/comprehension-loader/web/pict.min.js +12 -0
  51. package/source/services/data-cloner/DataCloner-Command-Headless.js +2 -1
  52. package/source/services/data-cloner/DataCloner-Command-Sync.js +110 -75
  53. package/source/services/data-cloner/pict-app/Pict-Application-DataCloner.js +70 -47
  54. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Export.js +3 -3
  55. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Layout.js +40 -86
  56. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-SettingsPanel.js +61 -0
  57. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Shell.js +136 -0
  58. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-StatusBar.js +117 -0
  59. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-StatusDetail.js +81 -0
  60. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Sync.js +18 -18
  61. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-TopBar-Nav.js +42 -0
  62. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-TopBar-User.js +48 -0
  63. package/source/services/data-cloner/pict-app/views/PictView-DataCloner-ViewData.js +2 -2
  64. package/source/services/data-cloner/web/data-cloner.js +5772 -7986
  65. package/source/services/data-cloner/web/data-cloner.js.map +1 -1
  66. package/source/services/data-cloner/web/data-cloner.min.js +75 -1
  67. package/source/services/data-cloner/web/data-cloner.min.js.map +1 -1
  68. package/source/services/data-cloner/web/favicons/favicon-dark.svg +13 -0
  69. package/source/services/data-cloner/web/favicons/favicon-light.svg +13 -0
  70. package/source/services/data-cloner/web/favicons/favicon.svg +13 -0
  71. package/source/services/data-cloner/web/favicons/favicons/favicon-dark.svg +13 -0
  72. package/source/services/data-cloner/web/favicons/favicons/favicon-light.svg +13 -0
  73. package/source/services/data-cloner/web/favicons/favicons/favicon.svg +13 -0
  74. package/source/services/data-cloner/web/index.html +3 -0
  75. package/source/services/data-cloner/web/pict.min.js +12 -0
  76. package/test/Bundles_smoke_tests.js +43 -0
  77. package/test/ComprehensionLoader_smoke_tests.js +95 -0
  78. package/test/DataCloner-RuntimeOverrides_tests.js +344 -0
  79. package/test/DataCloner_smoke_tests.js +87 -0
  80. package/docs/css/docuserve.css +0 -327
@@ -0,0 +1,22 @@
1
+ sequenceDiagram
2
+ participant App as Application
3
+ participant RDS as RetoldDataService
4
+ participant O as Orator
5
+ participant PE as PersistenceEngine
6
+ participant M as Meadow
7
+ participant ME as MeadowEndpoints
8
+
9
+ App->>RDS: initializeService()
10
+ RDS->>RDS: onBeforeInitialize()
11
+ RDS->>O: startWebServer()
12
+ RDS->>PE: initializePersistenceEngine()
13
+ RDS->>RDS: onInitialize()
14
+ RDS->>M: Load Stricture model
15
+ loop Each Entity
16
+ RDS->>M: loadFromPackageObject(schema)
17
+ M-->>RDS: DAL instance
18
+ RDS->>ME: new MeadowEndpoints(DAL)
19
+ ME->>O: connectRoutes()
20
+ end
21
+ RDS->>RDS: onAfterInitialize()
22
+ RDS-->>App: callback()
@@ -0,0 +1,2 @@
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1764 1034" width="1764" height="1034"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2dW3PbuFx1MDAxNcff8yk03pd0JvHifsmbndjdtPE6jXebtjt5oCVYZkOTKkXHSTP57lx1MDAwYtK2XGKSkFx1MDAwNZhSXGY5zO5kXCJexCPw/PnDOThcdTAwMDC/Plx1MDAxOY12ii8ztfNitKM+j6MknuTR1c6zcvsnlc/jLNW7UPV5nl3m4+rI86KYvfj5Z4j4LtD/wVx1MDAxN0RyKK/PUom6UGkx18f9oT+PRl+rv/WeeFKeO1f/e57EZ+r53mxWnVHtu7UhiVNVb/2sN0HJXHUwMDE2n7+Un1H9+SqeXHUwMDE053pcdTAwMWJYbDlX8fS80JskXHUwMDE1i41ROk1U47B5kWdcdTAwMWbVyyzJ8vKqP4k9fshRfeHTaPxxmmeX6WRxTJFH6XxcdTAwMTbl+rfVx53FSXJSfKm+XbePbr2d1jXe35hcYndpa8/ivEk0P1fGifq60/NUzcsmhIut2SxcdTAwMWHHRdVcdTAwMDKg/iGlkbPXk6q1P9Rm5dGFel02d3qZJOZcdTAwMTenk5svbuyYKzVpfXHr5pvbfs3SylxyICBcdTAwMTJcdTAwMTDOcf3L4vkrff+L6tvOomSu6lx1MDAxNi2vfWD4Rm3t5WxcdTAwMTJdn1x1MDAwMrlcdTAwMDCEIMYo4HKxX/vEx7bFSTb+aLnKLItN1yv/1P9cdTAwMWHVXHUwMDBlUH1Y/PvDs9VHa3+qj3/SOm8niebFy+ziXCIu9Fx1MDAwZnlbXHUwMDFh0WniXCLKi/04ncTptL1PpZMle6qz9vI8uzpXUed+6vOW70tOsytLXHUwMDBi6euoUlY7XHUwMDEx2DGaLfkyrW52dXC1+duzO9X77tWJi3opqGU4qHej6sW8o9S71Cuh4JJhMoh3XHUwMDFixVx1MDAwYnuJ99hFulx1MDAwMtWOOkh3o9LlyFx1MDAwZrxYMMCBlLXMXHUwMDA27W6PdlEv7b49cOo1Q1xcu8+g3o2qV4i6zVx1MDAxY9SLXHUwMDExo5SR2sRBu9ujXdxLu0dO0iWEXGbS/T7ShcRcdTAwMGK8jFx1MDAxM1x1MDAxZPLyXHUwMDAxu9soXdJPum7Y5XTIVo2+j3ZcdTAwMTH2indcdTAwMTGRSIc0XHUwMDAzd7dSvPS+4j0tXHUwMDFi/znoijdX4+JaalxyXHUwMDA1XHUwMDEz3kxYMVB71K2AITayWlx1MDAwYlxyI1ZcdTAwMWZcdTAwMTmEhoNS8NeFQ97eXHUwMDAxfLPlW1vYXHUwMDEy1s9MXHUwMDA3YXOCKIKY8WCEXbst23FxzyQ6VYnNR1x1MDAwYvW5aLmnYC337PJcdTAwMDVcIoks7lx0tsM7W2c9XHUwMDE4XrRP+XkhXHUwMDEz2lx1MDAwYnE4Xlg5T9lLybLZ6I+DaHw+OkhcdTAwMGLdalx1MDAxZoz7laXFSfz/KqnEXHUwMDFhW1x1MDAwZqOLOClcdTAwMWKYNr5wL4mnafWt6sy477oxinhcdTAwMWMli91FZlxm7o3190W6r5R370KWx9M4jZLfXHUwMDFjjI0ui+ydml+bW+SXymxcdTAwMTX1y62jw11k5LRcdTAwMTdS5KukXHUwMDE4jYsst49KLmFcdTAwMDWETTHy2lx1MDAxNVx1MDAxN1pklt6e0UdcXC1FuFx1MDAwZlx1MDAwZlx1MDAxMe4pxXPdoJe5WiZG1Nr+oGL0IFx1MDAwNTLutINGXHSnXHUwMDEy03t1XHUwMDAwXHUwMDE3NtXWdZ3n+jluelDDiypBLnZ86/TLNkIg4eT2XcvvYFx1MDAxMETN/ISgRrSwcHwjiVEziH5vx99uXHUwMDA2IeTVXHUwMDEzQlx1MDAxMFDMKME4OFxiaddKNCCK8lx1MDAxN9joY/ROXFzoM9ZGq/xcdTAwMGX+XFzEk4n5uG5cImjZ875NI6vVXHJcZjV/rVx1MDAwYoekXHUwMDFih6zj60s4hGUz12/hkFx1MDAxOSxcdTAwMGZcdTAwMWNaN4c8x+8oXHUwMDE3jFxuLDdNXCLTh1x1MDAxYX70ICTa8yCR1fst0ZBxn5eSXGJcdTAwMTm9tIFE91x1MDAxZaH2ioakxFx1MDAwMlx1MDAxMVx1MDAxNE5tyS2H3qlcIksmr6JcIjpR+ad4rMKiUcPv2zS6w/aeTNp3Y5KlbGRcdJE4qy+zLDKCQ2S0wVx1MDAxY1x1MDAxYfVKjkNJXHUwMDA1oFx1MDAxMG5cdTAwMWNJx1x1MDAwMVx1MDAwMemlXHUwMDA3kCyu38VcdTAwMTHnuOH1Vlx1MDAxY8khLupNI0mxj3cjgFx1MDAwNUdEivB4dJxH2sfCgtDxclx1MDAwNLXN7cmdV27csZU8LUvJgdU5uSFcdTAwMTbaJHk8y5A5XHUwMDEwQHIm7pU391x1MDAwMI/hQ1xyP3pcdTAwMTDyXHUwMDFjeJDH5vyWnFx1MDAxY3BJylxyodBa6uy94Fx1MDAwM1x1MDAxMcZcdTAwMWNwXHUwMDA2wqlcdTAwMWG6hc/b0tJ5obShXHUwMDA36bRRzFx1MDAxMlx1MDAwModMz2+D6Fx1MDAwZdN7MunQjUmWUr5lSMKivktDMPRcdTAwMDBIYpKb7rhymFxiXHUwMDAzSeHmXHUwMDA3io5cdTAwMDJcItJfPYhkcX1cdTAwMGKQsNHoQzC0QVx1MDAxZTHpVX5cdTAwMGUlYoBIKsNcdTAwMWIkOlLRJLtcblx1MDAwYkJHy1x1MDAxOdQ2tyd4fnFcdTAwMDSPRzDE6OqBIVsp20CeNZFHXG7PiV1cdTAwMTjo/1x1MDAwNb5XX9FcdTAwMDc9IUVDr33Y41x1MDAxNlxyMeYwMFx1MDAwNK1lclx1MDAwM338UnHCa2BcYkpGXHUwMDAwRlx1MDAwMY5cZl0/zVx1MDAwZtLJTVl2WFx1MDAxNLojXHUwMDE0Wmp4T1x1MDAxZf1tlSwv5lNb0WpUVnm39CibXHUwMDExXHUwMDEwNG7VrVx1MDAxYTGw5CZ8alY3L8bAKYSWUYhAv8EgKjiikINweohrnSpheFrr+Fx1MDAwZe+CmCqh3TZu9e5WT5j4u4N6PerOdcyw21rJw+hbLogq0K4toqtFXHUwMDEwgoyDZyqBXlx1MDAxOUZcXFb9IcjCSzDGaVxcxFGiXHR0U7Hw9C/rqD1fydX7Vp/faW+/8vM3LjSFTjRtr6mDjElcdTAwMDe3SiRcdTAwMTaYXHUwMDFhXHUwMDE1uSHIcFtpKjxpKimTXHUwMDAyU1x1MDAxZU6Xd600Jctg6nI4IauOXHUwMDA3y1x1MDAwZX9ErD5yZrXlXHUwMDAx0WU1Zc2hQESEc/Q7kNpv6Vx1MDAwZj9SI0AwIYCBcCYh36I6S/fVWZar11x1MDAwYlx1MDAwNK6H1Vx1MDAxYpondre5/VD9q1x1MDAwYqqRXHUwMDFiqmF9p8tGwqSL6iHw3Vxc4GtcdTAwMTRFONWiIIyBfKzrWf5cdTAwMTBx77EzSy1cbrawVPDd5lx1MDAxOFxuRpbhe4p3bZU1XHUwMDAzTf3iXr/pnFxiYMkkXHUwMDAzNLw515Wfv1enZVx1MDAxOKnywKPe5cb24+hbXHUwMDE3juJ7cZSAboeWQctI5sDRtYS8xIujXHUwMDE4XHUwMDBiwLEkjzR/bDha6/hHxNF/OHPUouAuR5lo54+xsdDOolx1MDAxOIGLIX+8hqiUeHGUYFx0XHUwMDE4JFx1MDAwMVx1MDAwNqV1PrZT71x1MDAxOThTXHUwMDFkLe9cdTAwMDfYdy6AJW6AbeWUXHSrXHUwMDFm3kNOeeOA5dgrj0Qg44xSXHUwMDFhzojPkFJcdTAwMGVcdTAwMGLfJ874tjxcdTAwMWZWp5RcdCe2lDImXHUwMDAzvtcw11x1MDAxZXv1tlx1MDAxOSaCgFx1MDAwMCuqsnRrksmbSCP/5kJn6kbnVvhLeZfOXHUwMDEyW6aQXGbh71rSyMIvL1x1MDAwNVx1MDAxMWVCcFx1MDAxNE5eaq14NjytdfwjXHUwMDAy6O/OXHUwMDAwtUi4XHUwMDBiUGFcdTAwMTSCV1xuJpZ1O4dcdTAwMTHZNeSQhd+SaYBg3Y9G4fSkb+n5Josmo1x1MDAxM+264+IyV6OLbKKSoEPeu1xy7sfSf7qwlN2LpYzVn1x1MDAwN5ZunKXSbyEpXGI4Ylx1MDAxNFx1MDAxM1x1MDAxOU73dmCpL0vfO7PUXCJhXHUwMDBiSzFr5ZKZXHUwMDExMVxyueT1zu9Bfst5XGKGXHUwMDAwguH0fOtVsKPJYZ5dvNW3MJqq49P/qnHxdD4+V1x1MDAxN1HYqWRHy/tcdTAwMDH2Xy6A5W6TfVxiaVx1MDAxMpbD7myfbSZsIO9PWIpY7Pf+XHUwMDA0wpHQ0er9ln5cdTAwMGKfsM9/XGLE/ttcdTAwMTmxXHUwMDE2XHUwMDExd1x1MDAxMSuhXHTPXG6x0jLdXHUwMDA30l0ozT9cdTAwMDNv+/JcdTAwMTZDr7VKIIJcdTAwMTBiylx1MDAwM5z882rvzShOteunS1ZZXHJcdTAwMDWwdkP78fQ/LjxcdTAwMTX3XG5YOe/WXHUwMDEwQ0QsuaMt4WnoXHUwMDExq+dcdTAwMWFcdTAwMGVcXHBMqXisXHUwMDExq+lqrVx1MDAxM1x1MDAxZVx1MDAxMU8jZ55aRGxbnlx1MDAwZrZjVk5tK1OCXWzy1PaasVx1MDAwMahcdTAwMWJdoILi8lx1MDAxNVx1MDAxYTK8XGI2VVej1lpcdTAwMGZPNbrCXHUwMDBlXldcdTAwMWLdj7OnLpyVbnErp63lm3G3xGGb49bAOWtezyXThCTnXHUwMDEw4CFs3WLMjp0xa9Gw7c1UrdWfXHUwMDA16Fx1MDAxNlx1MDAxOdvfTDVQ1YuqXHUwMDEw+FGVaaFSiVx1MDAwMpyqo2GWqnHxLrss1DzwquKltvaD6MRpbVxut6We2oXEXHUwMDEydJO/QyFxKDN1IEVcdTAwMWNhIVx1MDAwM3p57lBJXHUwMDFjXHUwMDE2opX74lx1MDAxNE4rSbVLiSVcdTAwMDK2UuJhJalcdTAwMDeYXHSEXHUwMDA1XHUwMDAz+nHAwkld1bXEe2eaqVtTUHyHtf1YfebEateFpJpv6dKduse1LmPoI7XIb/lcdTAwMTiCMMfmaPpDq3O9XHUwMDEx71x1MDAwZrE+xdRcdTAwMWSnTos9YdDCqWWcVlx1MDAwZWtT9CYpgn5cdTAwMWRrXHUwMDAwOabMfFHZQ4t1XHUwMDEx8EZJUt7A0GNdi5n90Hl+I70nN0+SnWg2Oyl08y5cdTAwMWXa2mXiSWut5+tthZrVbVBtOsom6iCNTpN2U+98itXVflchP1x1MDAxZO5cdTAwMWbyg9uFnG/u0tFlUsQn2i/G5UumK3yU9lWPh1I+6mbTtz9cdTAwMDHYSUztIn0=<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"seqgraph","mermaid":"sequenceDiagram\n participant App as Application\n participant RDS as RetoldDataService\n participant O as Orator\n participant PE as PersistenceEngine\n participant M as Meadow\n participant ME as MeadowEndpoints\n\n App->>RDS: initializeService()\n RDS->>RDS: onBeforeInitialize()\n RDS->>O: startWebServer()\n RDS->>PE: initializePersistenceEngine()\n RDS->>RDS: onInitialize()\n RDS->>M: Load Stricture model\n loop Each Entity\n RDS->>M: loadFromPackageObject(schema)\n M-->>RDS: DAL instance\n RDS->>ME: new MeadowEndpoints(DAL)\n ME->>O: connectRoutes()\n end\n RDS->>RDS: onAfterInitialize()\n RDS-->>App: callback()\n","style":"notebook"}]]></pict-renderer-graph:source></metadata><defs><style class="style-fonts">
2
+ @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,d09GMgABAAAAABxAAA4AAAAAMKQAABvqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbizAcegZgAIEcEQgKyiy3GAtaAAE2AiQDgTAEIAWDGAcgG8Mlo6K0so0n+8sD7lD5wg1QqZnVIS54CuHQlUS+siOTShqLhS7+lDfb/3SXfnDwL2aEJLPD83Prvf+3v25YUy2RiyJHxohIC+5EbBC7zgb0jMI6LsoojLoKq4HI3d/9HtuSKMEkgSCKMB4+b+/+vsxkQgMrDgqCBtR5EASEge7/0mnSVXP9M6NCSZEQ4LbFxNlSOoItJ+++Pe59j+GKrxo1DGkSori9BAenlD7SWLVci00u5Wip6p4BhMfbV+qi/PwPBzjUWdl/XdLSMVRPWHGFyeab5otebkftjMayHDaElpMcEEn2/621eoPXs4RKiWYlUcoyp/8Gs7lFKnvpEG1mSSVEHiGZSRNvXhot0HgkYraQKBnbcvnDObwPHhYO0hAiqZQb/rLgWno3k4bxW1oAAUAFQNgbDhPE4QHePxgyXzFw3RyfBsRHV3MtEJ/NZTVAPByt9UAMBwBAj1RXWXM9IKpkBwBC8ocVIgJRw4HFi/fl3PAIgal/Qi1O/fh2bU491CYD+nAzeI/ea8gz3thf1ZHDwoA8WpbzSPiGoEgb3UfBj3IDLz+6IE3Hdxw+bynU9tTN+FbkH4HYCdeQqwKpw4yl28qA01gx9jMAubuYBXwRPCJMh4yKho6BiYOLT6BUQrp6U1BSceHKjUCAJmIk0gGwRKQuEYyA0VM+jBwOD744FgRfEBl74yjYmAocUhruQANhtHxioZgkDZdClU/GIpQwYuBwAlAMYFHIBhAHuElojOMQ1chG5GoWeVzBygCSEEhZwnobcOQjqATqZEfx8OEJhE8g4uMo+HhqTFIEWCrclrAJDYglSkWw2l2ijEdVhQNBiuBCCAEO4uO8pSPphNA9IWEiDjiqwPmYscJBhRhvvAEAcdvOwA34eweeoSGNiyURjJPrLu2fQFkq2C4HYONL5NEJkTcmgBpwHwK3LM5A2doNJhSdnBs9M5sEdqky5crXqEP3pMC50jF2tvGSpFg4NOt6rWzSeeeMO+22W65bW9mzayfACZwS8eyiLIsQgLrH0O/SqnhTVuISEXBeHnImXSsm+R0V8y1rg3Sens8xOLUklISXytxCFQ3JTbacAK5WEBRBr0VTMwxiKV8Tzy4NIid3RuOYG2dJsulMHDvOkcuEyDlaaKkfXURJCIitheTJC7DFluUhfTMcszHe7Bdw5IA3kf2O71O+/NzYFq1Copw4KD3dUccI0hStXmbZm85uxnzR/oCo5YY6SwJdKY2Ym4kCpIJXrgA+AZB7K52H7gqL3fPnjeAkmdtNOVZbeCqA4SkuEZIJYwyTC3g8uswk6ocB4N9ynmJrU9o842/4yGHBAdk6tCAn2XBCRnaO5Bd/VHutIM9Fmen5CjjPYxoc6htL3SrN7mZZzWHIm+hi93LDHd60mqf308u7RiHZvbwCq5hhAe7LDZkk9Kn73s3WVn7siTi2k+VogdM5upDgCxdy1OgStRPlsj8QJTWljUbh7OgGSVxPsft3XM8VMRjRyD34muGRxVd//rlTKl+nLB8e5Nc+LKRCWGeqo4tpVUCtnRGEpK70ToeF4auB3CtzmtIVlfP0MeX7c8SNL+vEGPYwJuoaFEB+ADWbylE1FcKW83QfX1e1iReUJ1Yz4YAXFJSuio10g+YClaQQEJbcxDt3AGekPSNKVvKB5cF3V8XaS6V0jiSWV1UKALM2tMCgWwWh5omixL8Quv5EypC00j4gh4SbcACV82Bz3tBEZ7l8ppNTI4yyrBSYKagAyUrqup1b1ZzylOa4yqnvM1xNt1WMY9ftdhUwAc6iAq4U8wKeCjTBcDmTCUsYpgCSJsAXqCyrlfPxnXXIwd6LeXarPFoptS+MoOORPr2KpGazAw4Y9IEaKZJ2+SA/YQmmhDHJC83/cUiynTMkynWV6wGJlHCPw2T1RkvtnCOfWVig67pd14PsrciYf8ZiVxhGGAZJnI41YrjeFpgF3W+r3pTKBNdpjCnD+oTmSDcxjf6BvFVo6f5UzYVFmfXcdsS2dFQ0rdW0IufpnM4vP79tlOWt/N21Au/jSEriA/UWYOAGmA7rq+Pa1LkhR+trHLcyMjOi60hisgilyNGRQhbA4vg1bi6PPaoiYBCqgyVy3QBu/ZULm1M/TSl3iJoMh2SdV2DoAm4Ccq0q/wNy49NZXn8jkRH1KDduN+T9+dyen6u8kLUCTeqzULKkDHcL4RWy1EetUqI2T1Pa3DPMY2uKH9ck/pKQI2XbEgVl++QhmXHwpjjNrHq9LqVLU030A8B/rGTkhhxN6dUa1a5/ITNh39WjnBSyntSjo+Y9OUc8TS+PlI/POfrtWwoDaVGBoaLiGBIOturpixl23C3EfPUZk3pDyU2j1wpKPVmVfHPd4qVP6HBX07hOtMkrZcYYhlbB35YkL5Y8jdjYXtkvj9uff96QRuDTI4ykRZrA8eKOumjaKPKtG2pYxYoiWb0xO3I48KA1qaIbr2MlU8BckuTLJ3FFfDbmbT570jDlsV5URm9FR3mKv+58/bgVm0kla4ILCJ52XMm9W940W2M7farqkdlWdRVRs1Z1jas0yOWOEaKkIvIEYCZyUo8Mxo6gVTunV3FqkRoeskXRtIYkDZ41YQEVgGVFmVuGXddQqSqxk+R15UWcUYf2xfX3mN5F0qGEQT3FlIvqTVxneugx5aNGpBG1rNWS9svDw0Jw0pa7eLK1OFmarj+SgikKHSOOssWvBMlizFXL+drTkPxmlRX03qhqpayYW8mR43t0MbITDF89fhyBWfcCKc5b7f7tj+6KRn5xXNOhGgLEHukRdQGWLxbFZoj1N2lmd2gsieNLB+qKRLnhl66zyrTmic4JPts7SY2QjU0XsT7cEs2Qq96hT/V2hjWgApU7rXtV+3wk8VUkaak4VIqr1ZH4rNRmjh/bh4f880SBb8+H0jD7avXdhfyrXPNurZ61cyuFpohYsrGB8uuG+fY8HIyqB9tpEqCxRUDFSRSiqcX7dKPX7v82f4/ntL3CxEIswgDCipqQbBVisuZNW6qvMut5i0YZEZuT9Z6R6R304kwTbvzvC8mGE71nz6ttjptjS9L8vDBF5SOs6MsbeWks3ruJ5CcChAJEfZkdbFUR0GU4CzhFUjw3ykU1Xao3uly1iPcWFyauQ2Ur14t68mTEYXEcFVhWchB1fNoXZ3J9nB89o3zfZwwpTMNBZIdKzZGs3c4Ou6xwZYy/cPiIZAPDXLbIZ1glpg9oE/5L6jOi8pxEhmmQJvrhaSw2A0mQIsvJjaPb8Ygds/BGYXdi9D98u25lO4axlWPaxi4kjXFOojzX1RRfL7rPcPHaXzeFzZf9tLLFbgP6icbwKkruk68dyc7xtDk5VoiakECpuFyNzaW+VeZeT+aBfGCQC52t/E2RZZqW2uQ0tadiEJ2Rx6I8EkcMkjXBcJukAeeSzvp9jQCdpa4i2e8hOcaHwsMPC3P9ppUueXNhbNur2q4T9vsYCmOS6SoaeGfkSMGRzwxqP9Rw5EIyJEr2FQ8scN1ZEinKapDqiQKXd5KrYeUn3wga6EoOplhqWhKbEu/uUp5O6XyNk22mOdMWfUkDxs6Tv0s7pY7q0Jvtm0hmn7ihBc7ie20pRFlFkTchRRAgARzBNRWDvkTbOP0DXc/zSCFB3hGNQPjr75Lv+B3fI+ZfLvMPK4JLllqd/CVXSpnd+/xaU79zvZH+tf/e3a+erqaSgIkCQ1JZVi8uALdgoFHoBqKlwDV9o8eVGsbmBBOThNPhHn28o/395D6SNvdIlpMc6Scivff+LFUmG6Vk57pVuOPO4hgwwNezmjOi+ch5d72+rqtzA6OomFJEEoAZocys1Un6/dWvmv68MdUow+fy+2njy1Vh8qNQw2rNCjKJJUpsBtD5DI3FTDs0gMXoydc4W4fhkKjIy6RQi5rRxLtGojORkFn2vaM8pbyPIjpSbSENlihhSC6UeqJvXatDzBI8LQiIT2TFbhUd8Mjs1nKRjz7tGZ5WOLf5quZ4SIdjTJSv+7v+tEdNeX+BLUIGpSrkt2o0FwC6mm7XgfgrWd+KzpzRDweRvFmv42f6UGPsebpIiKe7tGnOyyq+kiwMQ7ypkXZhflsY/DZ/xH5Cp4U/jR0+UN6I9btkS/Z320aU71kK1G+0os5ZYfSRxFMVqwNHX7U4nfZ2yaHhnu/T2nzRpx+3MJCQQ8zfQNcN1NBsZ7Lye/SmWLgyl1UT78zIjbKh7DP05VwIOy3Ww8XkBQc8OAB0GZLzx3Z5o/0EUxU5VFA524VKC2bdNsFCwBQZtu/ZecMQM6a1oZlUKkb431+DYl1m6f25Xbame6u/QhcyM1HwceKE/tZv1hWv0slxrP7okymJK3UaDaugLxKN5FozjK2FtceiTAtIelqRcfvLg8xz8d8zV1z8fB61FzRMEF5iHCK0zIfqDdUPd0k2E/Sstc4ZTRnzTxk/AFa/f0wEsPoq2DAZkC8z1ipKRCtIWTKfvSNpFUC0aIf/brVRL0nJK9LhMuMAfzWXQn2M+R8vLd3J3KXi2K8UZL5q2/xig5fJ8JabB/tgQ+NB7glAqGKonDAIkWLxajrCHjo/VwMp8IvffAMSWDY8MY2z5pvt2EusUa5vuXGo1NcbZHq/VRju+GY3rgcGoI+JN2IEEz5G0dYY/+2ZCD5pYRd6jj5OQRcBM66+1Jl3lYyyiQ+GLhi88AHIPV0ctPs307pyOBbnl7VpmPEzW57Oiall6dnHQ9LWHm006vF2GrOgd6nrf2p/HtNQzu3qsKBK0loRc02IlFuK9sS+7kWGU3wvpIii5/LMbblh76JbSRQrcgvYFE+Jx/pLr44iB+1NKWNjGJ7V9i6ngmxGyALiOQvpAgSqI7C7jIbelVC2vjHIB7T0geR0c4pZFXOs8JblweVbRRcf6ZxLWQsZ6g7zvz0byeVR/mxzOgGf7BebWdKfWy8lGKedhLoomIPTc2z1sVpS6kmwicqdYrENWxRJyCYaiITs9MKAR/gYo5b0JdNyiffnrkPD5/b3izdppq1YuepHfHTwxBY/zUgDzizYZuAf+lhGqGgsd/NEC6RGxkHywXHD+R8qpk2mzMTdaBMkSTQpqqO9VtxVR1MM4mzHmKVtGD4RTWNc/SOqe+fgYsalom+yt86uSwZtzC3xXCyfevZ9LHZmuyK2PYUgvzzGEG4X9GSGX78wenRnmr2f9qO5ZDHSt/r76IRSUhGniITUyVRGAkU0TeT3z+9F9KbJfoUGLWIRfk3HCr4jSPbtAtmi4OlDFaI0r12sYyZGk/VXOtFIbqWzDiUEEgM9HLPieYD5Gkc2eG5O8/t58IHQdi/lWoVm9AnGQcX+KNPARKER9sn/biTGYDjka3stjQWXngvaTXCd75hs5uJ9UV88r9h5BXCPN53UTx8pIw5Zcd7/2nzVOUGdvFg/jwJPIlYI/1zpReFspcXu+CfrhVu+lEPKrv9LrYA5WOamlAUpMwBrls8koTXe4Fvrpcffxdpfh+zmOFZ7ETJaAcENnW0UmArrW7KUumk+YZDEyJDYIzYrzeC44hv0un8Rr3dF1+bEOFUqkWfMM3CGTz+mEK5ZBr5Cpqs1Ub+gzbudM3NXYln8Rj7ANQ9tZm4zHSHFQDDSR6gJ3sjH4S3hIJz84UJmgku/R5rMWtzZ5w7z+bOHs/lSzGD0joHexOUqUZzSWp6f4JXiHJtF15p+dDzsFPj9KDFe8shMHOwS+zZqa+COLzIOJnjy1kcnaH22VXTNHn8Oyjn5XlBPzomVLI7/DUl1PdYVEhIkph1OX5eOrcPqOMXqJR7mAt5YHMg0v3n8jbC0Qa9eFCCMDxcAecOi44YQMDLAbmE9jnl5vl0wB1CAOTniAEu91GcrTvcwSPUAUMXFCFkCpkPitaA7v1Wm21vize84ioufViouh/DkP3+ibdbs9pnhfsczUMfmPA3LopLqcdsRfFyQXM7hPUf3OMhtxAOI5QQ0KrmMlnTd/zg3R8Dh8ji8XWXH96pyvNItQbekjL1jb/8a8KdM6vG9WFZ/lN0SaVzNhlBePhvPdDOVAZEtSKJy5+5cFdP7oXalH9z9QhsDY0l/Da5MNfml17n0RDBurD/YZPeFPejRBwtmW0Dz0nf6s8uL+2Mo+MF+JA/aOZW++6cHHk6QkrGza+OcWwaDohPnFLzURdSVgRUUTdQCG0cWXIUr4+dXOXm8KjYaA9++otcGieyBZnnRbpvmc19z6pHMRRuHhOwF351WsSrifdvJT/6Itrz5/YI6aRUNgQEQA48+Cni01iCi61D5+GIXkVViDrGq4oJJj39+ZcgsTjb2DGgdibi5viGx8Yv+++47MG+iZJ4W5/Y4wLf368z/yt38xa+J6FYaRwRxmT0+jI7gwSvnBAm4TaOfY6PJLTm1i8/pk6joIHMoBaGT88nxbGwGQ4DaWAnplF2bhza7WmKiWMB+4Zk6h1Z991JgBix5bPbGfjOylwspVTi7gPvEt8yB4r+ugHPOjH6LyzRuT72iewxNzeTks7+MP6y9oyFPwydxvSgtpFaGCM2XiZCuAVn1PA9u48XRwaebaNAPghUAgQgfnMMe64TaRdU3k9J57tDddMyzVDlkZSQRWFVrQr7Py10sSBQoc4WL6Em49wDvUbzLfF4d+AVf52JoStPns27A6WVWtJMQGIsLGM4aa8RViQGZUmpxi/Um5cHUGViahPcfjVd9h7WSLH2CZ8yVMhai9tnqP5ysa5y97cqQxnkr4wP9sjOYE91fT6SxLC/+2uCpTiKdMd9L/46VA/Jo4+LkZyXM2+8wc/2SPn6hyx8xE4ryS9GaiXH08svQy8v/HHrqGngC0Ydve+7/PgGO1uCbAwnCznywg+33zeT+t1hyJIGU9Fl3IvVhrGsUSkC7CJgvvzSRzSxAIo4+SZGsDAR2DbVG7ZygjnH4ZEolMbFOfwcRuHX/ierrGRbb+YnAbY2HFYLXmZ6Ry3mbEQsprSwAuLwL6vLqqOR44bOS8abkaC0uORvl8wJq731D31kc/xmnd+K2oVmj5D7qt/OTk3B6N6Mq568OfMtLHVmGpP4SsLiJx/3Ov2IzGCEPvZnb59bNYxtmd+/M5s1SOTMHw8ZgDV+UPF8YONYy3GxHenZ8tvs1G1/rN/Lgf8cF9aZU2O4bFtRMSyRaL39lm855fWVllAd4PiQG3iatQNROxBNDpLMohDsJgPs55uCcurUxokSHgH3CuPS1EgWTfaSEAjYuGVk8zS98bpiVHJRV+Tox2ALwFF8KvuNLk/3jsxqz0hgebttdfpx1Wy3Xcwudie3r0Z39aiDZ65Kcq+gd8tK1dzz/AE8HUXvVo1nAMPxxwq0m0FZJo16nCAaUAMXRfAJ8kTg2movw6R/cOPgQ/VDRQQimfsSLZ+GeRxMc5pzGlAA+X2HlOmdtlGa5w2C2qQksOfvorUxO3tHn4LDsKctjBvy7VV0wlJXJmiv8fhugySQEOyGLIJb9qb34E6+u4YoXUekDER+3arB/g87s4Ve4ws53DkjT7R4XqifqWoXMPmjguF1ISPTPTrQmH+PT52TRoHGav/PhBS6v6AG0PLp1L/3NgzUBPteF/KS/c8BOya0S00Kd7287qCysAsXMb8612s9/Bv6ZiCzKscnO7bs000TXTyLtLo5SpftRiBAxJN/vuqdpYu4ntMaVTewiyILQWmgmL/b9Uo1HkrAqTa4KbrGCXo5g4h6cIaQRyJSvxQjlR88uvtQZmYVHLWSaF+0YYbkNoib5ga207gnQDbYVqTcgz8P41KHcwqB17x9nuR19yQ1u4USmPrx5YFnsODEbZp6RrdVSO86lTdUv5ntNR0pIfqnGTtb6pPUB8f8OI3eiMyktiB+YdgIKF4AxhCxil1ewdXna/VaBEiMqdMFBKRzvxKbNxpPONspyGT4BJTENT+Tnqz3owdAwek2V0aCajFFsrR6sGXWypLOT0bNQ/Je8EtzBuVedtr3HVVW7V+3Xua6Kjh2Inggw74uumyF9WdboK49zzeDbQswU3aYKqEzz9nS+eJyVNmQkunhQILnuyWgNWNfc2DiZcYrlYiHvJIJyMUzJIxlnPfmGY6IRhtucfK0fqTP/q49STqYErseRkH4FoTqsdOnqaStOR0h4Nqs5bb/mFSWOsXEGvRssUQ3TjVz8iJIqCFDS4NZNgu0Lc/sKuXiSeJGVS91lmTGPzNHMB8182sLQ8O0PL0XSURvKR4xAZ+Jc04T4/y3bNhJDkX47HNTutSFBny7WBZmLL0uwut/z1Kl4RIE+9Rsztlt5KXPwyU8Otb2/cXXO6//H0p9mBesLHhFYTYqZMwF3X8rVXP5SQ+nRcq0ZhnM3SbKR4tsPDKGcLOp4SMXRSv42bxe0sVzjNzmiu7R9D+h1vDYzRwT5ZkYIOemA+FNZoO9z+5juc1NH1XQLro27f/zS3eSYop7gBHuTfCaYpGKEMN28P2aVCVOQqJ4uZ/m20f6ggF1DQmiipNMw71ccpV+vBZV7I2pNmE/KT8Wu50myk7Hl0ljXkB/2EVBc0Va6wsdDG4KLpFmefWBng3sE1vlj34Tki+wHOgSyXqBEAdT3JfBPg6hm7tyjG54//qAUZm5aL76ee/W3VGzViBw3Hs8gPAjRdRrTTPkLg+/qdrBKFQZfHUYAX9FROeWK/mHlyjkNAeFwHYJpaSwPJStzNqGdlZYvm2HGL3c3ZMbpmssfaVGbQRGHebBlF73L1vmljob+AjemP3XEDO63NAXGKvVR5h8f8jokKWGV4F6LfLlGQS0IXbw3cunlm+ZQhajkmiS3VucgWwWzXVmvZ1swjydoEd3T8nP36gc3Mj+EJlXgjBGLUqcLpcqE7qimwP+QME2j8GDUPv/gMFKUSkwGOsGLAFLYSHBD/8D7yh3k1eXS3h/Tn6Q5LN/rB8+ig7sLae2UF78Nw4hXXn0m3T+r8iWfTDYUCt5v4zQ7PWFqs4VhBdfMpAuoHLmCytFfoojP2eDUXe4GK6h+H9NgGTmM33JoCNYSvaOLnQ9bCGoayRe/6EAfZgKDzV+V2rHU/0N+HuEkDz4YeyEGCITLA/wh6+y6QkbESyIF/QMAAB52uRsBAODRlr97pj7/1IP7CxcKACACRCBtjQzFsxujjx/ybgM8zZ5ZDExwEAB4DHiyFLi6DQDkLaCgVEBDzgN/lwM3FcBJZ0BDPgGuU9geBzrkAYhF6gEJZYMIboJpPAUuxgCtHiCIN0Bu/p/jFQEJT6fe6gE8DAZB8SKYWKd2IDzgFQ9BoCtBhHQQahbwVQSCWQf8dAauugGIqGtmNEBDDgMv2cDfCKBgxdSnMYRY4wYMAAmAsAUgBshOkAMFs5a41mVbiOu0LYLuoC3KXb8tjlqxLV4UNWBYPQAmnUo41KpSrkG9Vl5SlKnQprYNFjJezAMtLR6llvPjzXdOw1l6rkujysV8ogDwT3BV5N90MDd1Z+S51bSNUlkkrvxFuUf5PwVD0kZdDVSNSKUncB2AW1J/vgGBhxbrOrmkUDrmHDp4g+rUsqRcTlrOoCxRGbQjVSlvKPg39UkBAAA=); }</style></defs><g stroke-linecap="round"><g transform="translate(90 66) rotate(0 -0.17985870467555287 479)"><path d="M0 0 C-0.08 191.39, -0.77 383.39, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(402 66) rotate(0 0.38813303356411666 479)"><path d="M0 0 C1.37 193.43, 0.63 385.88, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(714 66) rotate(0 -0.8700193441812871 479)"><path d="M0 0 C-2.43 194.7, -2.21 389.2, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1026 66) rotate(0 -0.1866900489485488 479)"><path d="M0 0 C-0.23 196.2, -0.71 390.41, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1338 66) rotate(0 1.119367145346473 479)"><path d="M0 0 C2.31 192.58, 3.59 384.74, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1650 66) rotate(0 0.7088389026064306 479)"><path d="M0 0 C2.1 193.25, 1.67 385.14, 0 958" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round" transform="translate(372 542) rotate(0 654 131)"><path d="M32 0 C285.62 -2.78, 540.29 -3.37, 1276 0 M1276 0 C1298.26 1.17, 1307.07 12.05, 1308 32 M1308 32 C1309.43 101.69, 1306.86 174.6, 1308 230 M1308 230 C1308.27 252.39, 1296.09 263.16, 1276 262 M1276 262 C987.9 261.52, 698.74 262.08, 32 262 M32 262 C8.71 261.04, -0.26 253, 0 230 M0 230 C0.63 182.13, 2.69 129.06, 0 32 M0 32 C0.51 10.7, 10.07 -0.69, 32 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.5" fill="none" stroke-dasharray="8 9"/></g><g transform="translate(380 546) rotate(0 646 10)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-deemphasis, #8A7F72)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">loop [Each Entity]</text></g><g stroke-linecap="round" transform="translate(10 10) rotate(0 80 28)"><path d="M14 0 C41.42 1.41, 67.12 2.24, 146 0 M14 0 C66.75 -1.91, 119.87 -1.82, 146 0 M146 0 C155.43 -0.93, 161.75 2.83, 160 14 M146 0 C154.04 2.08, 158.66 3.25, 160 14 M160 14 C161.79 21.84, 159.29 33.74, 160 42 M160 14 C160.03 21.68, 160.66 26.62, 160 42 M160 42 C161.95 51.66, 156.25 56.95, 146 56 M160 42 C161.73 51.67, 154.29 54.29, 146 56 M146 56 C103.81 56.75, 59.7 57.34, 14 56 M146 56 C99.14 57.6, 51.73 56.55, 14 56 M14 56 C4.12 55.32, 0.46 50.05, 0 42 M14 56 C2.56 56.64, -1.69 49.99, 0 42 M0 42 C2.06 33.37, -0.13 23.52, 0 14 M0 42 C0.25 30.45, 0.35 20.64, 0 14 M0 14 C-1.92 5.87, 3.58 1.73, 14 0 M0 14 C-1.57 3.26, 2.75 0.71, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(18 25.5) rotate(0 72 12.5)"><text x="72" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Application</text></g><g stroke-linecap="round" transform="translate(286 10) rotate(0 116 28)"><path d="M14 0 C54.77 -1.67, 96.72 -2.12, 218 0 M14 0 C62.27 1.92, 110.67 1.12, 218 0 M218 0 C227.25 -0.98, 230.81 6.39, 232 14 M218 0 C225.5 1.61, 230 2.43, 232 14 M232 14 C232.58 18.05, 233.37 25.08, 232 42 M232 14 C232.12 20.61, 231.74 27.87, 232 42 M232 42 C230.66 50.38, 225.86 55.43, 218 56 M232 42 C232.47 52.86, 227.22 57.42, 218 56 M218 56 C160.04 54.95, 101.97 53.79, 14 56 M218 56 C138.07 55.84, 58.89 55.7, 14 56 M14 56 C4.13 55.03, -0.54 53.23, 0 42 M14 56 C4.81 54.84, -2.2 49.33, 0 42 M0 42 C-0.7 32.87, 1.88 26.61, 0 14 M0 42 C0.87 35.96, 0.02 30.49, 0 14 M0 14 C-0.14 4.11, 5.57 0.33, 14 0 M0 14 C1.87 6.16, 5.43 0.88, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(294 25.5) rotate(0 108 12.5)"><text x="108" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">RetoldDataService</text></g><g stroke-linecap="round" transform="translate(659 10) rotate(0 55 28)"><path d="M14 0 C28.87 -0.32, 49.1 1.4, 96 0 M14 0 C41.48 0.89, 69.12 0.61, 96 0 M96 0 C104.27 1.8, 108.72 3.95, 110 14 M96 0 C103.6 -1.58, 111.11 3.93, 110 14 M110 14 C110.79 21.88, 110 29.89, 110 42 M110 14 C109.18 20.43, 110.68 27.05, 110 42 M110 42 C110.78 51.52, 104.16 56.34, 96 56 M110 42 C109.58 49.04, 106.13 56.77, 96 56 M96 56 C70.01 55.44, 42.46 54.87, 14 56 M96 56 C75.52 54.99, 52.51 55.27, 14 56 M14 56 C6.38 56.33, -1.31 51.64, 0 42 M14 56 C6.32 55.36, 2.02 53.26, 0 42 M0 42 C0.01 33.25, -1.72 27.4, 0 14 M0 42 C0.72 32.29, 0.5 23.26, 0 14 M0 14 C0.99 3.28, 5.62 0.9, 14 0 M0 14 C0.56 4.05, 6.01 -0.91, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(667 25.5) rotate(0 47 12.5)"><text x="47" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Orator</text></g><g stroke-linecap="round" transform="translate(910 10) rotate(0 116 28)"><path d="M14 0 C55.95 -0.2, 95.44 -1.87, 218 0 M14 0 C91.84 1.49, 169.8 0.75, 218 0 M218 0 C226.73 -1.14, 232.95 4.06, 232 14 M218 0 C225.35 -0.51, 229.93 2.48, 232 14 M232 14 C233.44 21.91, 230.58 31.06, 232 42 M232 14 C231.25 21.89, 232.05 30.11, 232 42 M232 42 C231.47 50.67, 225.41 54.07, 218 56 M232 42 C231.52 49.4, 228.16 56.08, 218 56 M218 56 C172.51 52.94, 125.27 52.57, 14 56 M218 56 C159.78 56.52, 102.38 56.68, 14 56 M14 56 C4.76 55.06, 0.62 49.61, 0 42 M14 56 C2.56 56.36, 0.67 52.64, 0 42 M0 42 C1.66 35.09, -1.27 27.03, 0 14 M0 42 C0.53 35.85, -0.27 30.12, 0 14 M0 14 C0.16 5.34, 5.5 -0.53, 14 0 M0 14 C1.54 4.71, 6.86 1.26, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(918 25.5) rotate(0 108 12.5)"><text x="108" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">PersistenceEngine</text></g><g stroke-linecap="round" transform="translate(1283 10) rotate(0 55 28)"><path d="M14 0 C32.17 0.44, 48.45 -0.66, 96 0 M14 0 C45.86 0.29, 77.15 1.37, 96 0 M96 0 C105.09 0.85, 110.6 2.96, 110 14 M96 0 C105.83 0.2, 108.8 6.31, 110 14 M110 14 C109.13 25.82, 111.99 37.84, 110 42 M110 14 C109.08 22.03, 109.46 30.76, 110 42 M110 42 C108.96 53.15, 106.73 57, 96 56 M110 42 C110.23 49.12, 104.4 54.88, 96 56 M96 56 C71.26 54.83, 41.12 57.06, 14 56 M96 56 C76.78 55.11, 59.57 55.78, 14 56 M14 56 C5.53 55.64, 1.5 51.1, 0 42 M14 56 C6.41 57.54, 1.03 49.41, 0 42 M0 42 C1.78 33.25, -1.2 23.58, 0 14 M0 42 C-0.52 35.1, 0.6 26.58, 0 14 M0 14 C-0.17 4.19, 3.26 0.41, 14 0 M0 14 C0.04 5.49, 2.82 1.51, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1291 25.5) rotate(0 47 12.5)"><text x="47" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Meadow</text></g><g stroke-linecap="round" transform="translate(1546 10) rotate(0 104 28)"><path d="M14 0 C48.91 -0.68, 88.23 2.62, 194 0 M14 0 C76.95 0, 140.7 -0.17, 194 0 M194 0 C201.95 0.61, 207.33 5.52, 208 14 M194 0 C202.56 0.34, 208.54 6.41, 208 14 M208 14 C208.11 23.42, 207.07 33.38, 208 42 M208 14 C206.74 22.56, 207.22 32.48, 208 42 M208 42 C209.45 50.76, 203.72 56.17, 194 56 M208 42 C206.28 50.8, 202.73 56.46, 194 56 M194 56 C131.12 57.68, 64.57 57.69, 14 56 M194 56 C138.57 58.5, 85.25 56.72, 14 56 M14 56 C5.55 56.29, 1.77 50.42, 0 42 M14 56 C2.38 54.87, -1.91 51.35, 0 42 M0 42 C-0.25 32.51, 1.49 26.89, 0 14 M0 42 C0.24 33.84, 0.14 25.81, 0 14 M0 14 C1.2 3.18, 6.18 0.28, 14 0 M0 14 C1.59 5.86, 6.8 -1.68, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1554 25.5) rotate(0 96 12.5)"><text x="96" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">MeadowEndpoints</text></g><g stroke-linecap="round"><g transform="translate(93 119) rotate(0 152.4590061571682 -0.9189003353286438)"><path d="M0.59 -0.48 C51.7 -0.47, 254.45 -1.05, 305.47 -1.04 M-0.55 -1.78 C50.45 -1.56, 253.1 -0.45, 304.25 -0.05" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(93 119) rotate(0 152.4590061571682 -0.9189003353286438)"><path d="M302.9 0.26 L291.23 5.76 L292.29 -7.09 L306.09 -0.35" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M304.25 -0.05 C300.83 0.62, 297.38 3.46, 290.61 6.2 M304.25 -0.05 C300.58 2.24, 297.86 3.8, 290.61 6.2 M290.61 6.2 C290.94 3.46, 290.07 -0.92, 290.69 -6.48 M290.61 6.2 C291.36 3.18, 291.15 0.32, 290.69 -6.48 M290.69 -6.48 C294.52 -4.54, 301.17 -1.16, 304.25 -0.05 M290.69 -6.48 C294.66 -4.33, 297.88 -2.98, 304.25 -0.05 M304.25 -0.05 C304.25 -0.05, 304.25 -0.05, 304.25 -0.05 M304.25 -0.05 C304.25 -0.05, 304.25 -0.05, 304.25 -0.05" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(154.8 92) rotate(0 91.20000000000002 10.5)"><text x="91.2" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">initializeService()</text></g><g stroke-linecap="round"><g transform="translate(402 177) rotate(0 25.87470651799154 21.76871693387649)"><path d="M-0.24 -0.52 C7.54 -0.52, 38.55 -7.83, 46.19 -0.45 C53.82 6.93, 53.23 36.29, 45.59 43.77 C37.94 51.26, 7.88 44.37, 0.3 44.44 M0.63 0.4 C8.41 0.5, 38.17 -7.29, 45.85 0.02 C53.53 7.33, 54.24 37.01, 46.69 44.26 C39.14 51.51, 8.43 43.46, 0.57 43.5" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(402 177) rotate(0 25.87470651799154 21.76871693387649)"><path d="M1.07 43.44 L15.79 39.21 L12.91 50.72 L-0.14 44.3" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M0.57 43.5 C2.79 42.85, 5.8 41.1, 14.85 38.92 M0.57 43.5 C4.37 42.4, 7.82 40.9, 14.85 38.92 M14.85 38.92 C14.15 42.51, 13.26 47.01, 13.27 51.5 M14.85 38.92 C14.35 43.34, 13.99 46.92, 13.27 51.5 M13.27 51.5 C8.52 48.8, 4.7 46.44, 0.57 43.5 M13.27 51.5 C10.29 49.97, 7.93 47.7, 0.57 43.5 M0.57 43.5 C0.57 43.5, 0.57 43.5, 0.57 43.5 M0.57 43.5 C0.57 43.5, 0.57 43.5, 0.57 43.5" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(458 188.5) rotate(0 96 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">onBeforeInitialize()</text></g><g stroke-linecap="round"><g transform="translate(405 287) rotate(0 153.8733589945827 -0.028683043124345886)"><path d="M1.11 0.89 C52.18 0.91, 254.48 -0.85, 305.21 -0.95 M0.24 0.31 C51.79 0.54, 256.8 -0.15, 307.51 0.1" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 287) rotate(0 153.8733589945827 -0.028683043124345886)"><path d="M308.47 -0.84 L295.89 6.55 L293.4 -4.53 L308.45 -0.39" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M307.51 0.1 C305.82 0.52, 300.78 2.17, 293.91 6.43 M307.51 0.1 C303.23 1.91, 298.83 4.36, 293.91 6.43 M293.91 6.43 C294.03 2.2, 294.61 0.08, 293.92 -6.25 M293.91 6.43 C293.84 2.88, 294.09 -1.69, 293.92 -6.25 M293.92 -6.25 C297.47 -3.3, 303.1 -1.85, 307.51 0.1 M293.92 -6.25 C298.28 -3.84, 302.96 -1.44, 307.51 0.1 M307.51 0.1 C307.51 0.1, 307.51 0.1, 307.51 0.1 M307.51 0.1 C307.51 0.1, 307.51 0.1, 307.51 0.1" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(481.20000000000005 260) rotate(0 76.80000000000001 10.5)"><text x="76.8" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">startWebServer()</text></g><g stroke-linecap="round"><g transform="translate(405 345) rotate(0 308.164502820843 0.880436417573037)"><path d="M0.05 0.92 C103.19 0.82, 514.75 0.1, 617.71 0.08 M-1.38 0.35 C101.68 0.42, 513.55 1.91, 616.61 1.65" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 345) rotate(0 308.164502820843 0.880436417573037)"><path d="M618.43 0.86 L604.51 7.36 L604.69 -5.37 L618.13 2.75" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M616.61 1.65 C615.02 2.59, 611.2 4.03, 603.01 7.98 M616.61 1.65 C612.16 3.37, 607.04 5.78, 603.01 7.98 M603.01 7.98 C602.67 4.67, 604.19 0.51, 603.02 -4.7 M603.01 7.98 C602.62 3.38, 603.4 -0.11, 603.02 -4.7 M603.02 -4.7 C607.08 -2.57, 612.06 0.28, 616.61 1.65 M603.02 -4.7 C606.94 -3.38, 611.29 -0.56, 616.61 1.65 M616.61 1.65 C616.61 1.65, 616.61 1.65, 616.61 1.65 M616.61 1.65 C616.61 1.65, 616.61 1.65, 616.61 1.65" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(574.8 318) rotate(0 139.2 10.5)"><text x="139.2" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">initializePersistenceEngine()</text></g><g stroke-linecap="round"><g transform="translate(402 403) rotate(0 25.929566058667945 21.92263988808159)"><path d="M0.3 0.1 C7.99 0.21, 37.95 -6.94, 45.6 0.45 C53.24 7.83, 53.78 37.21, 46.17 44.39 C38.56 51.57, 7.66 43.64, -0.06 43.53 M-0.21 -0.32 C7.7 -0.34, 38.94 -7.6, 46.62 -0.29 C54.31 7.02, 53.67 36.18, 45.9 43.53 C38.14 50.88, 7.54 43.75, 0.02 43.79" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(402 403) rotate(0 25.929566058667945 21.92263988808159)"><path d="M0.25 43.69 L14.71 39.65 L12.42 50.98 L-0.56 44.19" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M0.02 43.79 C3.06 42.23, 6.42 42.03, 14.24 39 M0.02 43.79 C5.23 41.89, 10.84 40.46, 14.24 39 M14.24 39 C14.02 43.02, 13.79 48.27, 12.83 51.6 M14.24 39 C13.54 42.29, 13.67 46.33, 12.83 51.6 M12.83 51.6 C7.57 48.14, 3.12 46.13, 0.02 43.79 M12.83 51.6 C7.65 48.42, 2.8 45.58, 0.02 43.79 M0.02 43.79 C0.02 43.79, 0.02 43.79, 0.02 43.79 M0.02 43.79 C0.02 43.79, 0.02 43.79, 0.02 43.79" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(458 414.5) rotate(0 67.19999999999999 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">onInitialize()</text></g><g stroke-linecap="round"><g transform="translate(405 513) rotate(0 464.3795183248725 -0.48033242302454937)"><path d="M0.35 -0.14 C155.49 0.06, 774.73 0.49, 929.69 0.55 M-0.93 -1.25 C154.13 -1.36, 773.53 -1.76, 928.58 -1.28" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 513) rotate(0 464.3795183248725 -0.48033242302454937)"><path d="M926.62 -2.26 L915.86 5.63 L913.75 -7.73 L928.63 -0.7" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M928.58 -1.28 C925.63 -0.35, 923.74 1.42, 914.98 5.05 M928.58 -1.28 C923.65 1.08, 919.45 2.21, 914.98 5.05 M914.98 5.05 C915.76 1.88, 915.39 -0.38, 914.99 -7.63 M914.98 5.05 C915.4 2.78, 914.85 -0.01, 914.99 -7.63 M914.99 -7.63 C918.35 -6.76, 925.15 -2.4, 928.58 -1.28 M914.99 -7.63 C917.83 -5.52, 921.41 -5.18, 928.58 -1.28 M928.58 -1.28 C928.58 -1.28, 928.58 -1.28, 928.58 -1.28 M928.58 -1.28 C928.58 -1.28, 928.58 -1.28, 928.58 -1.28" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(774 486) rotate(0 96 10.5)"><text x="96" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Load Stricture model</text></g><g stroke-linecap="round"><g transform="translate(405 601) rotate(0 464.7833992169146 0.14661664062896307)"><path d="M0.78 0.92 C155.94 1.15, 775.04 1.05, 929.84 0.9 M-0.28 0.36 C154.82 0.3, 774 -0.92, 928.81 -0.74" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 601) rotate(0 464.7833992169146 0.14661664062896307)"><path d="M928.12 -1.91 L913.43 4.85 L913.35 -5.12 L926.9 1.17" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M928.81 -0.74 C927.17 0.44, 924.37 1.4, 915.22 5.6 M928.81 -0.74 C925.11 1.01, 920.25 2.93, 915.22 5.6 M915.22 5.6 C914.52 0.52, 916.2 -4.14, 915.21 -7.07 M915.22 5.6 C915.25 2.41, 915.44 -0.31, 915.21 -7.07 M915.21 -7.07 C920.57 -5.4, 926.24 -2.77, 928.81 -0.74 M915.21 -7.07 C919.68 -5.43, 922.46 -4.18, 928.81 -0.74 M928.81 -0.74 C928.81 -0.74, 928.81 -0.74, 928.81 -0.74 M928.81 -0.74 C928.81 -0.74, 928.81 -0.74, 928.81 -0.74" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(730.8 574) rotate(0 139.19999999999993 10.5)"><text x="139.2" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">loadFromPackageObject(schema)</text></g><g stroke-linecap="round"><g transform="translate(1335 659) rotate(0 -466.00006720572713 0.5470600797717111)"><path d="M-1.15 0.54 C-156.1 0.48, -776.2 0.56, -930.85 0.57" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(1335 659) rotate(0 -466.00006720572713 0.5470600797717111)"><path d="M-932.09 0.35 L-917.74 -4.35 L-917.97 5.17 L-929.9 1.12" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-930.85 0.57 C-927.48 -1.63, -924.7 -0.68, -917.25 -5.77 M-917.25 -5.77 C-916.05 -0.73, -916.21 2.38, -917.25 6.91 M-917.25 6.91 C-921.21 5.43, -925.34 2.47, -930.85 0.57 M-930.85 0.57 C-930.85 0.57, -930.85 0.57, -930.85 0.57" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none"/></g></g><mask/><g transform="translate(812.4 632) rotate(0 57.599999999999966 10.5)"><text x="57.599999999999994" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">DAL instance</text></g><g stroke-linecap="round"><g transform="translate(405 717) rotate(0 621.4806821391592 -0.3216494647878676)"><path d="M-0.48 -1.13 C206.58 -1, 1033.89 0.09, 1241.16 0.38 M1.47 0.89 C209.01 0.69, 1036.52 -1.16, 1243.44 -1.54" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(405 717) rotate(0 621.4806821391592 -0.3216494647878676)"><path d="M1244.77 -3.2 L1230.74 5.12 L1231.6 -8.76 L1241.45 -2.52" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M1243.44 -1.54 C1239.23 -1.33, 1238.34 2.44, 1229.86 4.83 M1243.44 -1.54 C1238.01 0.92, 1233.23 3.05, 1229.86 4.83 M1229.86 4.83 C1230.35 1.48, 1229.99 -0.73, 1229.83 -7.85 M1229.86 4.83 C1230.12 0.06, 1229.63 -5.04, 1229.83 -7.85 M1229.83 -7.85 C1234.25 -7.4, 1236.46 -4.9, 1243.44 -1.54 M1229.83 -7.85 C1233.98 -5.91, 1237.24 -4.31, 1243.44 -1.54 M1243.44 -1.54 C1243.44 -1.54, 1243.44 -1.54, 1243.44 -1.54 M1243.44 -1.54 C1243.44 -1.54, 1243.44 -1.54, 1243.44 -1.54" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(910.8 690) rotate(0 115.19999999999993 10.5)"><text x="115.19999999999999" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">new MeadowEndpoints(DAL)</text></g><g stroke-linecap="round"><g transform="translate(1647 775) rotate(0 -465.0549636554857 -0.7335389741310792)"><path d="M-0.88 -0.16 C-155.84 -0.36, -775.95 -1.41, -930.97 -1.19 M0.86 -1.3 C-153.63 -1.39, -773.85 -0.4, -928.76 -0.27" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1647 775) rotate(0 -465.0549636554857 -0.7335389741310792)"><path d="M-930.18 0.62 L-913.86 -5.37 L-914.73 4.82 L-927.58 0.2" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-928.76 -0.27 C-926.24 -2.65, -924.8 -3.98, -915.18 -6.63 M-928.76 -0.27 C-922.9 -2.45, -917.81 -5.13, -915.18 -6.63 M-915.18 -6.63 C-914.77 -3.11, -915.99 2.54, -915.16 6.05 M-915.18 -6.63 C-915.23 -2.57, -915.4 1.66, -915.16 6.05 M-915.16 6.05 C-919.18 3.26, -925.66 2.46, -928.76 -0.27 M-915.16 6.05 C-919.76 4.83, -923.46 2.05, -928.76 -0.27 M-928.76 -0.27 C-928.76 -0.27, -928.76 -0.27, -928.76 -0.27 M-928.76 -0.27 C-928.76 -0.27, -928.76 -0.27, -928.76 -0.27" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(1110 748) rotate(0 72 10.5)"><text x="72" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">connectRoutes()</text></g><g stroke-linecap="round"><g transform="translate(402 849) rotate(0 25.386127106754287 22.21517659049698)"><path d="M0.02 0.42 C7.76 0.38, 38.22 -7.29, 45.87 0.04 C53.52 7.36, 53.49 37.01, 45.92 44.35 C38.36 51.68, 8.08 44.19, 0.48 44.06 M-0.63 0.16 C7.07 0.19, 37.67 -6.46, 45.37 0.75 C53.06 7.97, 53.23 36.15, 45.53 43.46 C37.83 50.76, 6.79 44.58, -0.83 44.59" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(402 849) rotate(0 25.386127106754287 22.21517659049698)"><path d="M0.08 44.19 L14.05 39.25 L12.94 51.85 L-0.07 45.14" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-0.83 44.59 C2.61 43.38, 4.97 42.43, 13.3 39.56 M-0.83 44.59 C4.49 42.46, 9.53 40.7, 13.3 39.56 M13.3 39.56 C12.87 42.7, 13.33 45.41, 12.11 52.18 M13.3 39.56 C12.79 43.66, 12.78 48.32, 12.11 52.18 M12.11 52.18 C7.84 49.91, 4.08 47.92, -0.83 44.59 M12.11 52.18 C7.59 49.37, 3.3 47.26, -0.83 44.59 M-0.83 44.59 C-0.83 44.59, -0.83 44.59, -0.83 44.59 M-0.83 44.59 C-0.83 44.59, -0.83 44.59, -0.83 44.59" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(458 860.5) rotate(0 91.19999999999999 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">onAfterInitialize()</text></g><g stroke-linecap="round"><g transform="translate(399 959) rotate(0 -153.10827314816416 -0.453135031834222)"><path d="M-1 -0.84 C-51.67 -0.7, -254.36 -0.27, -305.22 -0.06" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(399 959) rotate(0 -153.10827314816416 -0.453135031834222)"><path d="M-307.17 1.3 L-293.13 -6.26 L-292.77 7.6 L-307.11 0.21" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-305.22 -0.06 C-303.49 -0.25, -299.79 -2.7, -291.64 -6.44 M-291.64 -6.44 C-291.93 -1.59, -292.44 1.99, -291.6 6.23 M-291.6 6.23 C-296.51 5, -299.37 3.18, -305.22 -0.06 M-305.22 -0.06 C-305.22 -0.06, -305.22 -0.06, -305.22 -0.06" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none"/></g></g><mask/><g transform="translate(198 932) rotate(0 48 10.5)"><text x="48" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">callback()</text></g></svg>
package/docs/index.html CHANGED
@@ -4,12 +4,10 @@
4
4
  <meta charset="utf-8">
5
5
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
- <meta name="description" content="Retold Data Service v2.0.33 Documentation — Serve up a whole model!">
7
+ <meta name="description" content="Retold Data Service v2.1.4 Documentation — Serve up a whole model!">
8
8
 
9
- <title>Retold Data Service v2.0.33 Documentation</title>
9
+ <title>Retold Data Service v2.1.4 Documentation</title>
10
10
 
11
- <!-- Application Stylesheet -->
12
- <link href="css/docuserve.css" rel="stylesheet">
13
11
  <!-- KaTeX stylesheet for LaTeX equation rendering -->
14
12
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css">
15
13
  <!-- PICT Dynamic View CSS Container -->
@@ -28,12 +26,13 @@
28
26
  <!-- The root container for the Pict application -->
29
27
  <div id="Docuserve-Application-Container"></div>
30
28
 
31
- <!-- Mermaid diagram rendering -->
29
+ <!-- Mermaid diagram rendering. pict-section-content (v0.1.8+) drives
30
+ initialization with theme: 'base' + themeVariables sourced
31
+ from --theme-color-* so diagrams follow the active theme. -->
32
32
  <script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
33
- <script>mermaid.initialize({ startOnLoad: false, theme: 'default' });</script>
34
33
  <!-- KaTeX for LaTeX equation rendering -->
35
34
  <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js"></script>
36
35
  <!-- Load the Docuserve PICT Application Bundle from jsDelivr CDN -->
37
- <script src="https://cdn.jsdelivr.net/npm/pict-docuserve@0/dist/pict-docuserve.min.js" type="text/javascript"></script>
36
+ <script src="https://cdn.jsdelivr.net/npm/pict-docuserve@1/dist/pict-docuserve.min.js" type="text/javascript"></script>
38
37
  </body>
39
38
  </html>
@@ -46,27 +46,8 @@ class MyDataService extends libRetoldDataService
46
46
 
47
47
  ## Hook Execution Order
48
48
 
49
- ```
50
- initializeService() called
51
-
52
- ├── onBeforeInitialize()
53
-
54
- ├── Start Orator (if AutoStartOrator)
55
-
56
- ├── initializePersistenceEngine()
57
-
58
- ├── onInitialize()
59
-
60
- ├── initializeDataEndpoints()
61
- │ ├── Load schema model
62
- │ ├── Create DAL for each entity
63
- │ ├── Create Endpoints for each entity
64
- │ └── Connect routes to Orator
65
-
66
- ├── onAfterInitialize()
67
-
68
- └── callback(error)
69
- ```
49
+ <!-- bespoke diagram: edit diagrams/hook-execution-order.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/retold-data-service/docs -->
50
+ ![Hook Execution Order](diagrams/hook-execution-order.svg)
70
51
 
71
52
  ## Error Handling
72
53
 
@@ -1,144 +1,144 @@
1
1
  {
2
- "Generated": "2026-04-10T17:22:17.521Z",
3
- "GitHubOrg": "stevenvelozo",
2
+ "Generated": "2026-06-01T03:44:33.668Z",
3
+ "Mode": "module",
4
+ "GitHubOrg": "fable-retold",
4
5
  "DefaultBranch": "master",
5
- "Groups": [
6
- {
7
- "Name": ".config",
8
- "Key": ".config",
9
- "Description": "",
10
- "Modules": [
11
- {
12
- "Name": "code-server",
13
- "Repo": "code-server",
14
- "Group": ".config",
15
- "Branch": "master",
16
- "HasDocs": false,
17
- "HasCover": false,
18
- "Sidebar": [],
19
- "DocFiles": []
20
- },
21
- {
22
- "Name": "configstore",
23
- "Repo": "configstore",
24
- "Group": ".config",
25
- "Branch": "master",
26
- "HasDocs": false,
27
- "HasCover": false,
28
- "Sidebar": [],
29
- "DocFiles": []
30
- },
31
- {
32
- "Name": "luxury-extras",
33
- "Repo": "luxury-extras",
34
- "Group": ".config",
35
- "Branch": "master",
36
- "HasDocs": false,
37
- "HasCover": false,
38
- "Sidebar": [],
39
- "DocFiles": []
40
- },
41
- {
42
- "Name": "vscode-sqltools",
43
- "Repo": "vscode-sqltools",
44
- "Group": ".config",
45
- "Branch": "master",
46
- "HasDocs": false,
47
- "HasCover": false,
48
- "Sidebar": [],
49
- "DocFiles": []
50
- }
51
- ]
52
- },
53
- {
54
- "Name": "Dist",
55
- "Key": "dist",
56
- "Description": "",
57
- "Modules": [
58
- {
59
- "Name": "indoctrinate_content_staging",
60
- "Repo": "indoctrinate_content_staging",
61
- "Group": "dist",
62
- "Branch": "master",
63
- "HasDocs": false,
64
- "HasCover": false,
65
- "Sidebar": [],
66
- "DocFiles": []
67
- }
68
- ]
69
- },
70
- {
71
- "Name": "Docs",
72
- "Key": "docs",
73
- "Description": "",
74
- "Modules": [
75
- {
76
- "Name": "api",
77
- "Repo": "api",
78
- "Group": "docs",
79
- "Branch": "master",
80
- "HasDocs": true,
81
- "HasCover": false,
82
- "Sidebar": [],
83
- "DocFiles": [
84
- "api/constructor.md",
85
- "api/initializeDataEndpoints.md",
86
- "api/initializePersistenceEngine.md",
87
- "api/initializeService.md",
88
- "api/onAfterInitialize.md",
89
- "api/onBeforeInitialize.md",
90
- "api/onInitialize.md",
91
- "api/reference.md",
92
- "api/stopService.md"
93
- ]
94
- },
95
- {
96
- "Name": "css",
97
- "Repo": "css",
98
- "Group": "docs",
99
- "Branch": "master",
100
- "HasDocs": true,
101
- "HasCover": false,
102
- "Sidebar": [],
103
- "DocFiles": [
104
- "css/docuserve.css"
105
- ]
106
- }
107
- ]
108
- },
109
- {
110
- "Name": "Source",
111
- "Key": "source",
112
- "Description": "",
113
- "Modules": [
114
- {
115
- "Name": "services",
116
- "Repo": "services",
117
- "Group": "source",
118
- "Branch": "master",
119
- "HasDocs": false,
120
- "HasCover": false,
121
- "Sidebar": [],
122
- "DocFiles": []
123
- }
124
- ]
125
- },
126
- {
127
- "Name": "Test",
128
- "Key": "test",
129
- "Description": "",
130
- "Modules": [
131
- {
132
- "Name": "model",
133
- "Repo": "model",
134
- "Group": "test",
135
- "Branch": "master",
136
- "HasDocs": false,
137
- "HasCover": false,
138
- "Sidebar": [],
139
- "DocFiles": []
140
- }
141
- ]
142
- }
143
- ]
6
+ "Module": {
7
+ "Name": "retold-data-service",
8
+ "Repo": "retold-data-service",
9
+ "Group": "",
10
+ "Branch": "master",
11
+ "HasDocs": true,
12
+ "HasCover": true,
13
+ "Sidebar": [
14
+ {
15
+ "Title": "Getting Started",
16
+ "Children": [
17
+ {
18
+ "Title": "Overview",
19
+ "Path": "README.md"
20
+ },
21
+ {
22
+ "Title": "Quick Start",
23
+ "Path": "quick-start.md"
24
+ },
25
+ {
26
+ "Title": "Configuration",
27
+ "Path": "configuration.md"
28
+ }
29
+ ]
30
+ },
31
+ {
32
+ "Title": "Architecture",
33
+ "Children": [
34
+ {
35
+ "Title": "System Design",
36
+ "Path": "architecture.md"
37
+ },
38
+ {
39
+ "Title": "Initialization",
40
+ "Path": "initialization.md"
41
+ },
42
+ {
43
+ "Title": "Schema Definition",
44
+ "Path": "schema-definition.md"
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "Title": "Usage",
50
+ "Children": [
51
+ {
52
+ "Title": "REST Endpoints",
53
+ "Path": "endpoints.md"
54
+ },
55
+ {
56
+ "Title": "DAL Access",
57
+ "Path": "dal-access.md"
58
+ },
59
+ {
60
+ "Title": "Behavior Injection",
61
+ "Path": "behavior-injection.md"
62
+ },
63
+ {
64
+ "Title": "Lifecycle Hooks",
65
+ "Path": "lifecycle-hooks.md"
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ "Title": "API Reference",
71
+ "Children": [
72
+ {
73
+ "Title": "Overview",
74
+ "Path": "api/reference.md"
75
+ },
76
+ {
77
+ "Title": "constructor",
78
+ "Path": "api/constructor.md"
79
+ },
80
+ {
81
+ "Title": "initializeService",
82
+ "Path": "api/initializeService.md"
83
+ },
84
+ {
85
+ "Title": "stopService",
86
+ "Path": "api/stopService.md"
87
+ },
88
+ {
89
+ "Title": "initializePersistenceEngine",
90
+ "Path": "api/initializePersistenceEngine.md"
91
+ },
92
+ {
93
+ "Title": "initializeDataEndpoints",
94
+ "Path": "api/initializeDataEndpoints.md"
95
+ },
96
+ {
97
+ "Title": "onBeforeInitialize",
98
+ "Path": "api/onBeforeInitialize.md"
99
+ },
100
+ {
101
+ "Title": "onInitialize",
102
+ "Path": "api/onInitialize.md"
103
+ },
104
+ {
105
+ "Title": "onAfterInitialize",
106
+ "Path": "api/onAfterInitialize.md"
107
+ }
108
+ ]
109
+ }
110
+ ],
111
+ "DocFiles": [
112
+ ".nojekyll",
113
+ "README.md",
114
+ "_brand.json",
115
+ "_cover.md",
116
+ "_sidebar.md",
117
+ "_topbar.md",
118
+ "_version.json",
119
+ "api/constructor.md",
120
+ "api/initializeDataEndpoints.md",
121
+ "api/initializePersistenceEngine.md",
122
+ "api/initializeService.md",
123
+ "api/onAfterInitialize.md",
124
+ "api/onBeforeInitialize.md",
125
+ "api/onInitialize.md",
126
+ "api/reference.md",
127
+ "api/stopService.md",
128
+ "architecture.md",
129
+ "behavior-injection.md",
130
+ "configuration.md",
131
+ "dal-access.md",
132
+ "endpoints.md",
133
+ "index.html",
134
+ "initialization.md",
135
+ "lifecycle-hooks.md",
136
+ "quick-start.md",
137
+ "retold-catalog.json",
138
+ "retold-keyword-index.json",
139
+ "schema-definition.md",
140
+ "storage-providers.md"
141
+ ]
142
+ },
143
+ "Groups": []
144
144
  }