sparkforensics-cli 0.1.0 → 0.2.0

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 (360) hide show
  1. package/README.md +6 -0
  2. package/bin/sparkforensics-analyze.mjs +113 -48
  3. package/export-template/docs/404.html +25 -0
  4. package/export-template/docs/assets/app.CndaAS6v.js +1 -0
  5. package/export-template/docs/assets/aqe-loop.IwQSATHw.svg +1 -0
  6. package/export-template/docs/assets/aqe-loop.dark.DGbaxqJE.svg +1 -0
  7. package/export-template/docs/assets/broadcast-vs-shuffle.Db4WY1XK.svg +1 -0
  8. package/export-template/docs/assets/broadcast-vs-shuffle.dark.C7Bxs0mG.svg +1 -0
  9. package/export-template/docs/assets/cache-lifecycle.dark.B-hS7AgU.svg +1 -0
  10. package/export-template/docs/assets/cache-lifecycle.rEOVYQNU.svg +1 -0
  11. package/export-template/docs/assets/chunks/@localSearchIndexroot.DNY8bVcl.js +1 -0
  12. package/export-template/docs/assets/chunks/VPLocalSearchBox.yJbZbsEo.js +9 -0
  13. package/export-template/docs/assets/chunks/duplicate-plan-subtree.dark.Cdp70QhV.js +1 -0
  14. package/export-template/docs/assets/chunks/framework.DSg0KOwT.js +20 -0
  15. package/export-template/docs/assets/chunks/retry-escalation-ladder.dark.DHipdJgZ.js +1 -0
  16. package/export-template/docs/assets/chunks/theme.Df2VAG9w.js +2 -0
  17. package/export-template/docs/assets/cold-start-timeline.DxC_Sc7w.svg +1 -0
  18. package/export-template/docs/assets/cold-start-timeline.dark.CZ17YcAG.svg +1 -0
  19. package/export-template/docs/assets/columnar-layout.PghGeOEA.svg +1 -0
  20. package/export-template/docs/assets/columnar-layout.dark.BVNlz0ff.svg +1 -0
  21. package/export-template/docs/assets/container-memory.DIO0AnIm.svg +1 -0
  22. package/export-template/docs/assets/container-memory.dark.CP-5zuCl.svg +1 -0
  23. package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.js +1 -0
  24. package/export-template/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.lean.js +1 -0
  25. package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.js +1 -0
  26. package/export-template/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.lean.js +1 -0
  27. package/export-template/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.js +1 -0
  28. package/export-template/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.lean.js +1 -0
  29. package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.DYCDPgkh.js +1 -0
  30. package/export-template/docs/assets/contributor-guide_architecture_impact-estimation.md.DYCDPgkh.lean.js +1 -0
  31. package/export-template/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.js +1 -0
  32. package/export-template/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.lean.js +1 -0
  33. package/export-template/docs/assets/contributor-guide_architecture_overview.md.CehiRmGn.js +1 -0
  34. package/export-template/docs/assets/contributor-guide_architecture_overview.md.CehiRmGn.lean.js +1 -0
  35. package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.js +1 -0
  36. package/export-template/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.lean.js +1 -0
  37. package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.js +1 -0
  38. package/export-template/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.lean.js +1 -0
  39. package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.B93qJ_tT.js +6 -0
  40. package/export-template/docs/assets/contributor-guide_architecture_worker-protocol.md.B93qJ_tT.lean.js +1 -0
  41. package/export-template/docs/assets/contributor-guide_contributing.md.CvRsdr6J.js +1 -0
  42. package/export-template/docs/assets/contributor-guide_contributing.md.CvRsdr6J.lean.js +1 -0
  43. package/export-template/docs/assets/contributor-guide_development-setup.md.DvAN_9mK.js +12 -0
  44. package/export-template/docs/assets/contributor-guide_development-setup.md.DvAN_9mK.lean.js +1 -0
  45. package/export-template/docs/assets/contributor-guide_testing.md.6rIKqSyY.js +1 -0
  46. package/export-template/docs/assets/contributor-guide_testing.md.6rIKqSyY.lean.js +1 -0
  47. package/export-template/docs/assets/dag-stages.DSz_S937.svg +1 -0
  48. package/export-template/docs/assets/dag-stages.dark.F72UzxH4.svg +1 -0
  49. package/export-template/docs/assets/driver-executor.D5pQ7YN1.svg +1 -0
  50. package/export-template/docs/assets/driver-executor.dark.BmX9cPvh.svg +1 -0
  51. package/export-template/docs/assets/duplicate-plan-subtree.B4cvN6fj.svg +1 -0
  52. package/export-template/docs/assets/duplicate-plan-subtree.dark.Dw8wS0Ag.svg +1 -0
  53. package/export-template/docs/assets/index.md.CHJVslga.js +1 -0
  54. package/export-template/docs/assets/index.md.CHJVslga.lean.js +1 -0
  55. package/export-template/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  56. package/export-template/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  57. package/export-template/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  58. package/export-template/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  59. package/export-template/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  60. package/export-template/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  61. package/export-template/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  62. package/export-template/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  63. package/export-template/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  64. package/export-template/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  65. package/export-template/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  66. package/export-template/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  67. package/export-template/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  68. package/export-template/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  69. package/export-template/docs/assets/join-strategy.C_FvrCEo.svg +1 -0
  70. package/export-template/docs/assets/join-strategy.dark.ChMLnNII.svg +1 -0
  71. package/export-template/docs/assets/memory-borrowing.BqQRJg0u.svg +1 -0
  72. package/export-template/docs/assets/memory-borrowing.dark.Yhh20O9C.svg +1 -0
  73. package/export-template/docs/assets/memory-regions.XHvO7jHG.svg +1 -0
  74. package/export-template/docs/assets/memory-regions.dark.D4TP9_08.svg +1 -0
  75. package/export-template/docs/assets/repartition-vs-coalesce.BovLRrpj.svg +1 -0
  76. package/export-template/docs/assets/repartition-vs-coalesce.dark.BhAczKZQ.svg +1 -0
  77. package/export-template/docs/assets/retry-escalation-ladder.DyTKJJmZ.svg +1 -0
  78. package/export-template/docs/assets/retry-escalation-ladder.dark.BdsabtU3.svg +1 -0
  79. package/export-template/docs/assets/shuffle-map-reduce.KuOEZVmg.svg +1 -0
  80. package/export-template/docs/assets/shuffle-map-reduce.dark.BgQZnFSb.svg +1 -0
  81. package/export-template/docs/assets/spill-classification.BU2euYDO.svg +1 -0
  82. package/export-template/docs/assets/spill-classification.dark.D7i1M40d.svg +1 -0
  83. package/export-template/docs/assets/style.DXOMCXxn.css +1 -0
  84. package/export-template/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.js +1 -0
  85. package/export-template/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.lean.js +1 -0
  86. package/export-template/docs/assets/tuning-reference_aqe.md.BIsCtLzm.js +1 -0
  87. package/export-template/docs/assets/tuning-reference_aqe.md.BIsCtLzm.lean.js +1 -0
  88. package/export-template/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.js +1 -0
  89. package/export-template/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.lean.js +1 -0
  90. package/export-template/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.js +7 -0
  91. package/export-template/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.lean.js +1 -0
  92. package/export-template/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.js +1 -0
  93. package/export-template/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.lean.js +1 -0
  94. package/export-template/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.js +6 -0
  95. package/export-template/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.lean.js +1 -0
  96. package/export-template/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.js +6 -0
  97. package/export-template/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.lean.js +1 -0
  98. package/export-template/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.js +8 -0
  99. package/export-template/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.lean.js +1 -0
  100. package/export-template/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.js +7 -0
  101. package/export-template/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.lean.js +1 -0
  102. package/export-template/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.js +1 -0
  103. package/export-template/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.lean.js +1 -0
  104. package/export-template/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.js +12 -0
  105. package/export-template/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.lean.js +1 -0
  106. package/export-template/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.js +14 -0
  107. package/export-template/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.lean.js +1 -0
  108. package/export-template/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.js +7 -0
  109. package/export-template/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.lean.js +1 -0
  110. package/export-template/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.js +5 -0
  111. package/export-template/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.lean.js +1 -0
  112. package/export-template/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.js +6 -0
  113. package/export-template/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.lean.js +1 -0
  114. package/export-template/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.js +7 -0
  115. package/export-template/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.lean.js +1 -0
  116. package/export-template/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.js +8 -0
  117. package/export-template/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.lean.js +1 -0
  118. package/export-template/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.js +5 -0
  119. package/export-template/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.lean.js +1 -0
  120. package/export-template/docs/assets/tuning-reference_caching.md.B7aQ8asB.js +1 -0
  121. package/export-template/docs/assets/tuning-reference_caching.md.B7aQ8asB.lean.js +1 -0
  122. package/export-template/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.js +1 -0
  123. package/export-template/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.lean.js +1 -0
  124. package/export-template/docs/assets/tuning-reference_config.md.UvveiWG3.js +1 -0
  125. package/export-template/docs/assets/tuning-reference_config.md.UvveiWG3.lean.js +1 -0
  126. package/export-template/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.js +1 -0
  127. package/export-template/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.lean.js +1 -0
  128. package/export-template/docs/assets/tuning-reference_index.md.BQ_NooMV.js +1 -0
  129. package/export-template/docs/assets/tuning-reference_index.md.BQ_NooMV.lean.js +1 -0
  130. package/export-template/docs/assets/tuning-reference_intro.md.CobD-lGB.js +1 -0
  131. package/export-template/docs/assets/tuning-reference_intro.md.CobD-lGB.lean.js +1 -0
  132. package/export-template/docs/assets/tuning-reference_joins.md.BtKs_CuW.js +1 -0
  133. package/export-template/docs/assets/tuning-reference_joins.md.BtKs_CuW.lean.js +1 -0
  134. package/export-template/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.js +1 -0
  135. package/export-template/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.lean.js +1 -0
  136. package/export-template/docs/assets/tuning-reference_metrics.md.mLOh7Apj.js +1 -0
  137. package/export-template/docs/assets/tuning-reference_metrics.md.mLOh7Apj.lean.js +1 -0
  138. package/export-template/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.js +1 -0
  139. package/export-template/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.lean.js +1 -0
  140. package/export-template/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.js +6 -0
  141. package/export-template/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.lean.js +1 -0
  142. package/export-template/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.js +1 -0
  143. package/export-template/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.lean.js +1 -0
  144. package/export-template/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.js +1 -0
  145. package/export-template/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.lean.js +1 -0
  146. package/export-template/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.js +1 -0
  147. package/export-template/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.lean.js +1 -0
  148. package/export-template/docs/assets/udf-execution-models.BUFDICuG.svg +1 -0
  149. package/export-template/docs/assets/udf-execution-models.dark.YTNS6GDq.svg +1 -0
  150. package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.js +1 -0
  151. package/export-template/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.lean.js +1 -0
  152. package/export-template/docs/assets/user-guide_getting-started.md.DtEM37MK.js +3 -0
  153. package/export-template/docs/assets/user-guide_getting-started.md.DtEM37MK.lean.js +1 -0
  154. package/export-template/docs/assets/user-guide_mcp-tools.md.C8MiIu7F.js +125 -0
  155. package/export-template/docs/assets/user-guide_mcp-tools.md.C8MiIu7F.lean.js +1 -0
  156. package/export-template/docs/assets/user-guide_run-comparison.md.S0TWWmLY.js +1 -0
  157. package/export-template/docs/assets/user-guide_run-comparison.md.S0TWWmLY.lean.js +1 -0
  158. package/export-template/docs/assets/user-guide_understanding-findings.md.D0R_Y-R2.js +1 -0
  159. package/export-template/docs/assets/user-guide_understanding-findings.md.D0R_Y-R2.lean.js +1 -0
  160. package/export-template/docs/contributor-guide/architecture/board-widgets.html +25 -0
  161. package/export-template/docs/contributor-guide/architecture/detector-contract.html +25 -0
  162. package/export-template/docs/contributor-guide/architecture/drill-down.html +25 -0
  163. package/export-template/docs/contributor-guide/architecture/impact-estimation.html +25 -0
  164. package/export-template/docs/contributor-guide/architecture/index.html +25 -0
  165. package/export-template/docs/contributor-guide/architecture/overview.html +25 -0
  166. package/export-template/docs/contributor-guide/architecture/state-and-history.html +25 -0
  167. package/export-template/docs/contributor-guide/architecture/widget-rendering.html +25 -0
  168. package/export-template/docs/contributor-guide/architecture/worker-protocol.html +30 -0
  169. package/export-template/docs/contributor-guide/contributing.html +25 -0
  170. package/export-template/docs/contributor-guide/development-setup.html +36 -0
  171. package/export-template/docs/contributor-guide/testing.html +25 -0
  172. package/export-template/docs/favicon.svg +4 -0
  173. package/export-template/docs/hashmap.json +1 -0
  174. package/export-template/docs/index.html +25 -0
  175. package/export-template/docs/package.json +1 -0
  176. package/export-template/docs/tuning-reference/anti-patterns.html +25 -0
  177. package/export-template/docs/tuning-reference/aqe.html +25 -0
  178. package/export-template/docs/tuning-reference/bottleneck-broadcast-sizing.html +25 -0
  179. package/export-template/docs/tuning-reference/bottleneck-cold-start.html +31 -0
  180. package/export-template/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +25 -0
  181. package/export-template/docs/tuning-reference/bottleneck-failures.html +30 -0
  182. package/export-template/docs/tuning-reference/bottleneck-gc.html +30 -0
  183. package/export-template/docs/tuning-reference/bottleneck-job-failure-rate.html +32 -0
  184. package/export-template/docs/tuning-reference/bottleneck-memory-utilization.html +31 -0
  185. package/export-template/docs/tuning-reference/bottleneck-retry-waste.html +25 -0
  186. package/export-template/docs/tuning-reference/bottleneck-shuffle.html +36 -0
  187. package/export-template/docs/tuning-reference/bottleneck-skew.html +38 -0
  188. package/export-template/docs/tuning-reference/bottleneck-slow-host.html +31 -0
  189. package/export-template/docs/tuning-reference/bottleneck-small-files.html +29 -0
  190. package/export-template/docs/tuning-reference/bottleneck-spill.html +30 -0
  191. package/export-template/docs/tuning-reference/bottleneck-straggler.html +31 -0
  192. package/export-template/docs/tuning-reference/bottleneck-tiny-tasks.html +32 -0
  193. package/export-template/docs/tuning-reference/bottleneck-utilization.html +29 -0
  194. package/export-template/docs/tuning-reference/caching.html +25 -0
  195. package/export-template/docs/tuning-reference/cluster-config.html +25 -0
  196. package/export-template/docs/tuning-reference/config.html +25 -0
  197. package/export-template/docs/tuning-reference/data-formats.html +25 -0
  198. package/export-template/docs/tuning-reference/index.html +25 -0
  199. package/export-template/docs/tuning-reference/intro.html +25 -0
  200. package/export-template/docs/tuning-reference/joins.html +25 -0
  201. package/export-template/docs/tuning-reference/memory-model.html +25 -0
  202. package/export-template/docs/tuning-reference/metrics.html +25 -0
  203. package/export-template/docs/tuning-reference/partitioning.html +25 -0
  204. package/export-template/docs/tuning-reference/pyspark.html +30 -0
  205. package/export-template/docs/tuning-reference/shuffle.html +25 -0
  206. package/export-template/docs/tuning-reference/spark-architecture.html +25 -0
  207. package/export-template/docs/tuning-reference/table-formats.html +25 -0
  208. package/export-template/docs/user-guide/alternative-log-retrieval.html +25 -0
  209. package/export-template/docs/user-guide/getting-started.html +27 -0
  210. package/export-template/docs/user-guide/mcp-tools.html +149 -0
  211. package/export-template/docs/user-guide/run-comparison.html +25 -0
  212. package/export-template/docs/user-guide/understanding-findings.html +25 -0
  213. package/export-template/docs/vp-icons.css +0 -0
  214. package/export-template/favicon.svg +4 -0
  215. package/export-template/index.html +115 -0
  216. package/export-template/parser-worker-QqyEE4m9.js +64 -0
  217. package/package.json +16 -3
  218. package/vendor-core/analyzer.js +74 -74
  219. package/vendor-core/cli/budgets.js +13 -27
  220. package/vendor-core/cli/collect-run.js +43 -19
  221. package/vendor-core/core-count.js +25 -27
  222. package/vendor-core/core-locality-ratio.js +4 -11
  223. package/vendor-core/core-time-series.js +6 -12
  224. package/vendor-core/core-usage-locality.js +3 -4
  225. package/vendor-core/detectors.js +256 -375
  226. package/vendor-core/docs-config.js +69 -21
  227. package/vendor-core/docs-content/chapters/01-intro.md +32 -0
  228. package/vendor-core/docs-content/chapters/02-spark-architecture.md +76 -0
  229. package/vendor-core/docs-content/chapters/03-memory-model.md +73 -0
  230. package/vendor-core/docs-content/chapters/04-partitioning.md +65 -0
  231. package/vendor-core/docs-content/chapters/05-joins.md +62 -0
  232. package/vendor-core/docs-content/chapters/06-shuffle.md +59 -0
  233. package/vendor-core/docs-content/chapters/07-data-formats.md +81 -0
  234. package/vendor-core/docs-content/chapters/07b-table-formats.md +56 -0
  235. package/vendor-core/docs-content/chapters/08-caching.md +58 -0
  236. package/vendor-core/docs-content/chapters/09-pyspark.md +78 -0
  237. package/vendor-core/docs-content/chapters/10-aqe.md +167 -0
  238. package/vendor-core/docs-content/chapters/11-cluster-config.md +170 -0
  239. package/vendor-core/docs-content/chapters/12-anti-patterns.md +171 -0
  240. package/vendor-core/docs-content/chapters/14-metrics.md +87 -0
  241. package/vendor-core/docs-content/chapters/15-config.md +93 -0
  242. package/vendor-core/docs-content/chapters/nav-index.json +370 -0
  243. package/vendor-core/docs-content/detection/cache.md +6 -0
  244. package/vendor-core/docs-content/detection/cfg.md +15 -0
  245. package/vendor-core/docs-content/detection/chrn.md +7 -0
  246. package/vendor-core/docs-content/detection/cold.md +4 -0
  247. package/vendor-core/docs-content/detection/cstor.md +4 -0
  248. package/vendor-core/docs-content/detection/fail.md +5 -0
  249. package/vendor-core/docs-content/detection/gc.md +4 -0
  250. package/vendor-core/docs-content/detection/host.md +5 -0
  251. package/vendor-core/docs-content/detection/incmp.md +6 -0
  252. package/vendor-core/docs-content/detection/jobs.md +4 -0
  253. package/vendor-core/docs-content/detection/local.md +7 -0
  254. package/vendor-core/docs-content/detection/mem.md +10 -0
  255. package/vendor-core/docs-content/detection/part.md +5 -0
  256. package/vendor-core/docs-content/detection/plan.md +14 -0
  257. package/vendor-core/docs-content/detection/retry.md +4 -0
  258. package/vendor-core/docs-content/detection/sfail.md +5 -0
  259. package/vendor-core/docs-content/detection/shape.md +5 -0
  260. package/vendor-core/docs-content/detection/shfl.md +4 -0
  261. package/vendor-core/docs-content/detection/skew.md +6 -0
  262. package/vendor-core/docs-content/detection/slow.md +6 -0
  263. package/vendor-core/docs-content/detection/spec.md +7 -0
  264. package/vendor-core/docs-content/detection/spill.md +7 -0
  265. package/vendor-core/docs-content/detection/strag.md +5 -0
  266. package/vendor-core/docs-content/detection/tiny.md +4 -0
  267. package/vendor-core/docs-content/detection/util.md +4 -0
  268. package/vendor-core/docs-content/diagrams/aqe-loop.dark.svg +1 -0
  269. package/vendor-core/docs-content/diagrams/aqe-loop.svg +1 -0
  270. package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.dark.svg +1 -0
  271. package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.svg +1 -0
  272. package/vendor-core/docs-content/diagrams/cache-lifecycle.dark.svg +1 -0
  273. package/vendor-core/docs-content/diagrams/cache-lifecycle.svg +1 -0
  274. package/vendor-core/docs-content/diagrams/cold-start-timeline.dark.svg +1 -0
  275. package/vendor-core/docs-content/diagrams/cold-start-timeline.svg +1 -0
  276. package/vendor-core/docs-content/diagrams/columnar-layout.dark.svg +1 -0
  277. package/vendor-core/docs-content/diagrams/columnar-layout.svg +1 -0
  278. package/vendor-core/docs-content/diagrams/container-memory.dark.svg +1 -0
  279. package/vendor-core/docs-content/diagrams/container-memory.svg +1 -0
  280. package/vendor-core/docs-content/diagrams/dag-stages.dark.svg +1 -0
  281. package/vendor-core/docs-content/diagrams/dag-stages.svg +1 -0
  282. package/vendor-core/docs-content/diagrams/driver-executor.dark.svg +1 -0
  283. package/vendor-core/docs-content/diagrams/driver-executor.svg +1 -0
  284. package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.dark.svg +1 -0
  285. package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.svg +1 -0
  286. package/vendor-core/docs-content/diagrams/join-strategy.dark.svg +1 -0
  287. package/vendor-core/docs-content/diagrams/join-strategy.svg +1 -0
  288. package/vendor-core/docs-content/diagrams/memory-borrowing.dark.svg +1 -0
  289. package/vendor-core/docs-content/diagrams/memory-borrowing.svg +1 -0
  290. package/vendor-core/docs-content/diagrams/memory-regions.dark.svg +1 -0
  291. package/vendor-core/docs-content/diagrams/memory-regions.svg +1 -0
  292. package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.dark.svg +1 -0
  293. package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.svg +1 -0
  294. package/vendor-core/docs-content/diagrams/retry-escalation-ladder.dark.svg +1 -0
  295. package/vendor-core/docs-content/diagrams/retry-escalation-ladder.svg +1 -0
  296. package/vendor-core/docs-content/diagrams/shuffle-map-reduce.dark.svg +1 -0
  297. package/vendor-core/docs-content/diagrams/shuffle-map-reduce.svg +1 -0
  298. package/vendor-core/docs-content/diagrams/spill-classification.dark.svg +1 -0
  299. package/vendor-core/docs-content/diagrams/spill-classification.svg +1 -0
  300. package/vendor-core/docs-content/diagrams/udf-execution-models.dark.svg +1 -0
  301. package/vendor-core/docs-content/diagrams/udf-execution-models.svg +1 -0
  302. package/vendor-core/docs-content/tuning/broadcast-sizing.md +78 -0
  303. package/vendor-core/docs-content/tuning/cold-start.md +81 -0
  304. package/vendor-core/docs-content/tuning/duplicate-plan-subtree.md +45 -0
  305. package/vendor-core/docs-content/tuning/failures.md +124 -0
  306. package/vendor-core/docs-content/tuning/gc.md +110 -0
  307. package/vendor-core/docs-content/tuning/job-failure-rate.md +101 -0
  308. package/vendor-core/docs-content/tuning/memory-utilization.md +58 -0
  309. package/vendor-core/docs-content/tuning/retry-waste.md +90 -0
  310. package/vendor-core/docs-content/tuning/shuffle.md +154 -0
  311. package/vendor-core/docs-content/tuning/skew.md +123 -0
  312. package/vendor-core/docs-content/tuning/slow-host.md +117 -0
  313. package/vendor-core/docs-content/tuning/small-files.md +99 -0
  314. package/vendor-core/docs-content/tuning/spill.md +114 -0
  315. package/vendor-core/docs-content/tuning/straggler.md +103 -0
  316. package/vendor-core/docs-content/tuning/tiny-tasks.md +94 -0
  317. package/vendor-core/docs-content/tuning/utilization.md +90 -0
  318. package/vendor-core/docs-site-config.js +10 -17
  319. package/vendor-core/efficiency-model.js +7 -13
  320. package/vendor-core/etl-phases.js +3 -5
  321. package/vendor-core/event-handlers.js +232 -134
  322. package/vendor-core/event-schemas.js +48 -114
  323. package/vendor-core/evidence-availability.js +5 -10
  324. package/vendor-core/evidence-report.js +72 -122
  325. package/vendor-core/export-data.js +48 -0
  326. package/vendor-core/finding-action-label.js +4 -10
  327. package/vendor-core/finding-filter-predicate.js +3 -7
  328. package/vendor-core/finding-generic-recommendation.js +112 -0
  329. package/vendor-core/finding-names.js +51 -0
  330. package/vendor-core/format-utils.js +112 -38
  331. package/vendor-core/impact-band.js +18 -24
  332. package/vendor-core/impact-estimator.js +38 -74
  333. package/vendor-core/ingest.js +7 -13
  334. package/vendor-core/job-groups.js +3 -6
  335. package/vendor-core/list-runs.js +278 -0
  336. package/vendor-core/load-vendored.js +6 -12
  337. package/vendor-core/log-header-peek.js +81 -0
  338. package/vendor-core/lz4-block.js +4 -6
  339. package/vendor-core/mcp-server-factory.js +38 -8
  340. package/vendor-core/mcp-tools.js +105 -76
  341. package/vendor-core/model-assembler.js +8 -16
  342. package/vendor-core/occupancy.js +5 -9
  343. package/vendor-core/parser-worker.js +18 -27
  344. package/vendor-core/plan-dot.js +2 -5
  345. package/vendor-core/plan-duration-attribution.js +78 -29
  346. package/vendor-core/plan-graph-model.js +126 -69
  347. package/vendor-core/plan-node-detail.js +31 -17
  348. package/vendor-core/plan-summary.js +19 -8
  349. package/vendor-core/recommendation-rollup.js +35 -39
  350. package/vendor-core/redact.js +72 -16
  351. package/vendor-core/rolling-log-reassembly.js +4 -6
  352. package/vendor-core/run-comparison.js +65 -70
  353. package/vendor-core/scaling-sim.js +5 -7
  354. package/vendor-core/session-snapshot.js +1 -1
  355. package/vendor-core/shs-fetch.js +4 -6
  356. package/vendor-core/shs-load.js +9 -13
  357. package/vendor-core/shs-request.js +1 -1
  358. package/vendor-core/stage-quantiles.js +14 -0
  359. package/vendor-core/types.js +78 -18
  360. package/vendor-core/wasted-core-hours.js +7 -12
@@ -0,0 +1 @@
1
+ <svg id="gd12" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 1232.421875 904.5421875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 1232.421875px;"><style>#gd12{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#f4f4f5;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd12 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd12 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd12 .error-icon{fill:#1a232f;}#gd12 .error-text{fill:#e5dcd0;stroke:#e5dcd0;}#gd12 .edge-thickness-normal{stroke-width:1px;}#gd12 .edge-thickness-thick{stroke-width:3.5px;}#gd12 .edge-pattern-solid{stroke-dasharray:0;}#gd12 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd12 .edge-pattern-dashed{stroke-dasharray:3;}#gd12 .edge-pattern-dotted{stroke-dasharray:2;}#gd12 .marker{fill:#a9b5b4;stroke:#a9b5b4;}#gd12 .marker.cross{stroke:#a9b5b4;}#gd12 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd12 p{margin:0;}#gd12 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f4f4f5;}#gd12 .cluster-label text{fill:#f4f4f5;}#gd12 .cluster-label span{color:#f4f4f5;}#gd12 .cluster-label span p{background-color:transparent;}#gd12 .label text,#gd12 span{fill:#f4f4f5;color:#f4f4f5;}#gd12 .node rect,#gd12 .node circle,#gd12 .node ellipse,#gd12 .node polygon,#gd12 .node path{fill:#17202c;stroke:#3a4a52;stroke-width:1px;}#gd12 .rough-node .label text,#gd12 .node .label text,#gd12 .image-shape .label,#gd12 .icon-shape .label{text-anchor:middle;}#gd12 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd12 .rough-node .label,#gd12 .node .label,#gd12 .image-shape .label,#gd12 .icon-shape .label{text-align:center;}#gd12 .node.clickable{cursor:pointer;}#gd12 .root .anchor path{fill:#a9b5b4!important;stroke-width:0;stroke:#a9b5b4;}#gd12 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd12 .edgePath .path{stroke:#a9b5b4;stroke-width:1px;}#gd12 .flowchart-link{stroke:#a9b5b4;fill:none;}#gd12 .edgeLabel{background-color:#11171a;text-align:center;}#gd12 .edgeLabel p{background-color:#11171a;}#gd12 .edgeLabel rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd12 .labelBkg{background-color:rgba(17, 23, 26, 0.5);}#gd12 .cluster rect{fill:#11171a;stroke:#233035;stroke-width:1px;}#gd12 .cluster text{fill:#f4f4f5;}#gd12 .cluster span{color:#f4f4f5;}#gd12 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#1a232f;border:1px solid hsl(214.2857142857, 0%, 4.3137254902%);border-radius:2px;pointer-events:none;z-index:100;}#gd12 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#f4f4f5;}#gd12 rect.text{fill:none;stroke-width:0;}#gd12 .icon-shape,#gd12 .image-shape{background-color:#11171a;text-align:center;}#gd12 .icon-shape p,#gd12 .image-shape p{background-color:#11171a;padding:2px;}#gd12 .icon-shape .label rect,#gd12 .image-shape .label rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd12 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd12 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd12 .node .neo-node{stroke:#3a4a52;}#gd12 [data-look=&quot;neo&quot;].node rect,#gd12 [data-look=&quot;neo&quot;].cluster rect,#gd12 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd12-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd12 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd12 [data-look=&quot;neo&quot;].node path{stroke:url(#gd12-gradient);stroke-width:1px;}#gd12 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd12 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#3a4a52;filter:none;}#gd12 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd12-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd12 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd12 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd12-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd12 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd12-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd12 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd12_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd12_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd12_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd12_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd12_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd12_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd12_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd12_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd12_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd12_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd12_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd12_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd12-CONTAINER" data-look="classic"><rect x="8" y="8" width="1208.421875" height="116.225"></rect><g class="cluster-label " transform="translate(470.10546875, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Requested</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> container</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> pod</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> memory</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M169.66,99.225L169.66,103.392C169.66,107.558,169.66,115.892,169.66,124.225C169.66,132.558,169.66,140.892,214.197,151.139C258.734,161.386,347.808,173.546,392.345,179.627L436.882,185.707" id="gd12-L_HEAP_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_HEAP_SUM_0" data-points="W3sieCI6MTY5LjY2MDE1NjI1LCJ5Ijo5OS4yMjV9LHsieCI6MTY5LjY2MDE1NjI1LCJ5IjoxMjQuMjI1fSx7IngiOjE2OS42NjAxNTYyNSwieSI6MTQ5LjIyNX0seyJ4Ijo0NDAuODQ1NzAzMTI1LCJ5IjoxODYuMjQ3OTU3MjgzOTE4ODh9XQ==" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M448.961,99.225L448.961,103.392C448.961,107.558,448.961,115.892,448.961,124.225C448.961,132.558,448.961,140.892,458.835,148.979C468.71,157.066,488.459,164.908,498.333,168.828L508.208,172.749" id="gd12-L_OVER_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_OVER_SUM_0" data-points="W3sieCI6NDQ4Ljk2MDkzNzUsInkiOjk5LjIyNX0seyJ4Ijo0NDguOTYwOTM3NSwieSI6MTI0LjIyNX0seyJ4Ijo0NDguOTYwOTM3NSwieSI6MTQ5LjIyNX0seyJ4Ijo1MTEuOTI1NTg3MTU1ODM5OTMsInkiOjE3NC4yMjQ5OTk5OTk5OTk5N31d" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M741.684,99.225L741.684,103.392C741.684,107.558,741.684,115.892,741.684,124.225C741.684,132.558,741.684,140.892,731.809,148.979C721.935,157.066,702.186,164.908,692.311,168.828L682.437,172.749" id="gd12-L_OFF_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_OFF_SUM_0" data-points="W3sieCI6NzQxLjY4MzU5Mzc1LCJ5Ijo5OS4yMjV9LHsieCI6NzQxLjY4MzU5Mzc1LCJ5IjoxMjQuMjI1fSx7IngiOjc0MS42ODM1OTM3NSwieSI6MTQ5LjIyNX0seyJ4Ijo2NzguNzE4OTQ0MDk0MTYwMSwieSI6MTc0LjIyNDk5OTk5OTk5OTk3fV0=" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M1056.594,99.225L1056.594,103.392C1056.594,107.558,1056.594,115.892,1056.594,124.225C1056.594,132.558,1056.594,140.892,1006.123,151.417C955.652,161.942,854.71,174.659,804.239,181.018L753.767,187.376" id="gd12-L_PY_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_PY_SUM_0" data-points="W3sieCI6MTA1Ni41OTM3NSwieSI6OTkuMjI1fSx7IngiOjEwNTYuNTkzNzUsInkiOjEyNC4yMjV9LHsieCI6MTA1Ni41OTM3NSwieSI6MTQ5LjIyNX0seyJ4Ijo3NDkuNzk4ODI4MTI1LCJ5IjoxODcuODc2MDM0MTU1MzM2NTh9XQ==" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M595.322,240.45L595.322,244.617C595.322,248.783,595.322,257.117,595.322,264.783C595.322,272.45,595.322,279.45,595.322,282.95L595.322,286.45" id="gd12-L_SUM_GRANT_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SUM_GRANT_0" data-points="W3sieCI6NTk1LjMyMjI2NTYyNSwieSI6MjQwLjQ1fSx7IngiOjU5NS4zMjIyNjU2MjUsInkiOjI2NS40NX0seyJ4Ijo1OTUuMzIyMjY1NjI1LCJ5IjoyOTAuNDV9XQ==" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M595.322,374.275L595.322,378.442C595.322,382.608,595.322,390.942,595.322,398.608C595.322,406.275,595.322,413.275,595.322,416.775L595.322,420.275" id="gd12-L_GRANT_CHK_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_GRANT_CHK_0" data-points="W3sieCI6NTk1LjMyMjI2NTYyNSwieSI6Mzc0LjI3NTAwMDAwMDAwMDAzfSx7IngiOjU5NS4zMjIyNjU2MjUsInkiOjM5OS4yNzV9LHsieCI6NTk1LjMyMjI2NTYyNTAwMDEsInkiOjQyNC4yNzQ5OTk5OTk5OTk5fV0=" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M524.286,669.343L509.68,687.235C495.074,705.126,465.862,740.909,451.256,764.186C436.65,787.463,436.65,798.234,436.65,803.619L436.65,809.005" id="gd12-L_CHK_OOM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_CHK_OOM_0" data-points="W3sieCI6NTI0LjI4NTg1MzgzMjYxNTksInkiOjY2OS4zNDMyNzU3MDc2MTYyfSx7IngiOjQzNi42NTAzOTA2MjUsInkiOjc3Ni42OTIxODc1fSx7IngiOjQzNi42NTAzOTA2MjUsInkiOjgxMy4wMDQ2ODc1fV0=" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path><path d="M666.359,669.343L680.965,687.235C695.57,705.126,724.782,740.909,739.388,765.653C753.994,790.396,753.994,804.101,753.994,810.953L753.994,817.805" id="gd12-L_CHK_OK_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_CHK_OK_0" data-points="W3sieCI6NjY2LjM1ODY3NzQxNzM4NDEsInkiOjY2OS4zNDMyNzU3MDc2MTY0fSx7IngiOjc1My45OTQxNDA2MjUsInkiOjc3Ni42OTIxODc1fSx7IngiOjc1My45OTQxNDA2MjUsInkiOjgyMS44MDQ2ODc1fV0=" data-look="classic" marker-end="url(#gd12_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_HEAP_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_OVER_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_OFF_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_PY_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_SUM_GRANT_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_GRANT_CHK_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(436.650390625, 776.6921875)"><g class="label" data-id="L_CHK_OOM_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-15.9765625" y="-0.8515625" width="31.953125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Yes</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(753.994140625, 776.6921875)"><g class="label" data-id="L_CHK_OK_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-12.87890625" y="-0.8515625" width="25.7578125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">No</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd12-flowchart-HEAP-0" data-look="classic" transform="translate(169.66015625, 66.1125)"><rect class="basic label-container" x="-126.66015625" y="-33.1125" width="253.3203125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">executorMemory</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (heap)</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">8192</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-OVER-1" data-look="classic" transform="translate(448.9609375, 66.1125)"><rect class="basic label-container" x="-102.640625" y="-33.1125" width="205.28125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">memoryOverhead</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">819</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-OFF-2" data-look="classic" transform="translate(741.68359375, 66.1125)"><rect class="basic label-container" x="-140.08203125" y="-33.1125" width="280.1640625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">spark.memory.offHeap.size</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">1024</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-PY-3" data-look="classic" transform="translate(1056.59375, 66.1125)"><rect class="basic label-container" x="-124.828125" y="-33.1125" width="249.65625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">pyspark.memory</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">512</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (only</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> when</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> set)</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-SUM-5" data-look="classic" transform="translate(595.322265625, 207.33749999999998)"><rect class="basic label-container" x="-154.4765625" y="-33.1125" width="308.953125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Sum</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> terms</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> =</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> requested</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> size</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">=</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 10,547</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-GRANT-13" data-look="classic" transform="translate(595.322265625, 332.3625)"><rect class="basic label-container" x="-141.35546875" y="-41.9125" width="282.7109375" height="83.825"></rect><g class="label" transform="translate(0, -26.9125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Resource</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> manager</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> grants</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> a</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">container</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> that</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> size</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(YARN</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Kubernetes)</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-CHK-15" data-look="classic" transform="translate(595.322265625, 582.32734375)"><polygon points="158.05234375,0 316.1046875,-158.05234375 158.05234375,-316.1046875 0,-158.05234375" class="label-container" transform="translate(-157.55234375, 158.05234375)"></polygon><g class="label" transform="translate(0, -35.712500000000006)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Actual</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runtime</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> footprint</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">&gt;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> container</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> limit?</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(native</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Python</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> use</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spills</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="3.2em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">past</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> overhead</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> budget)</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-OOM-17" data-look="classic" transform="translate(436.650390625, 846.1171875)"><rect class="basic label-container" x="-159.76171875" y="-33.1125" width="319.5234375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">OOMKilled</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> by</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> resource</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> manager</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(YARN</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Kubernetes</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> kubelet)</tspan></tspan></text></g></g></g><g class="node default " id="gd12-flowchart-OK-19" data-look="classic" transform="translate(753.994140625, 846.1171875)"><rect class="basic label-container" x="-107.58203125" y="-24.3125" width="215.1640625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Runs</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> within</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> budget</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd12-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd12-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd12-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#3a4a52" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(200, 0%, 0%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd11" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 1232.421875 904.5421875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 1232.421875px;"><style>#gd11{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#151b1e;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd11 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd11 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd11 .error-icon{fill:#eef1f6;}#gd11 .error-text{fill:#110e09;stroke:#110e09;}#gd11 .edge-thickness-normal{stroke-width:1px;}#gd11 .edge-thickness-thick{stroke-width:3.5px;}#gd11 .edge-pattern-solid{stroke-dasharray:0;}#gd11 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd11 .edge-pattern-dashed{stroke-dasharray:3;}#gd11 .edge-pattern-dotted{stroke-dasharray:2;}#gd11 .marker{fill:#4f5f60;stroke:#4f5f60;}#gd11 .marker.cross{stroke:#4f5f60;}#gd11 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd11 p{margin:0;}#gd11 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#151b1e;}#gd11 .cluster-label text{fill:#151b1e;}#gd11 .cluster-label span{color:#151b1e;}#gd11 .cluster-label span p{background-color:transparent;}#gd11 .label text,#gd11 span{fill:#151b1e;color:#151b1e;}#gd11 .node rect,#gd11 .node circle,#gd11 .node ellipse,#gd11 .node polygon,#gd11 .node path{fill:#ffffff;stroke:#9aa8a3;stroke-width:1px;}#gd11 .rough-node .label text,#gd11 .node .label text,#gd11 .image-shape .label,#gd11 .icon-shape .label{text-anchor:middle;}#gd11 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd11 .rough-node .label,#gd11 .node .label,#gd11 .image-shape .label,#gd11 .icon-shape .label{text-align:center;}#gd11 .node.clickable{cursor:pointer;}#gd11 .root .anchor path{fill:#4f5f60!important;stroke-width:0;stroke:#4f5f60;}#gd11 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd11 .edgePath .path{stroke:#4f5f60;stroke-width:1px;}#gd11 .flowchart-link{stroke:#4f5f60;fill:none;}#gd11 .edgeLabel{background-color:#eef1f6;text-align:center;}#gd11 .edgeLabel p{background-color:#eef1f6;}#gd11 .edgeLabel rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd11 .labelBkg{background-color:rgba(238, 241, 246, 0.5);}#gd11 .cluster rect{fill:#f2f5f9;stroke:#dbe2df;stroke-width:1px;}#gd11 .cluster text{fill:#151b1e;}#gd11 .cluster span{color:#151b1e;}#gd11 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#eef1f6;border:1px solid hsl(217.5, 0%, 84.9019607843%);border-radius:2px;pointer-events:none;z-index:100;}#gd11 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#151b1e;}#gd11 rect.text{fill:none;stroke-width:0;}#gd11 .icon-shape,#gd11 .image-shape{background-color:#eef1f6;text-align:center;}#gd11 .icon-shape p,#gd11 .image-shape p{background-color:#eef1f6;padding:2px;}#gd11 .icon-shape .label rect,#gd11 .image-shape .label rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd11 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd11 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd11 .node .neo-node{stroke:#9aa8a3;}#gd11 [data-look=&quot;neo&quot;].node rect,#gd11 [data-look=&quot;neo&quot;].cluster rect,#gd11 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd11-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd11 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd11 [data-look=&quot;neo&quot;].node path{stroke:url(#gd11-gradient);stroke-width:1px;}#gd11 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd11 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9aa8a3;filter:none;}#gd11 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd11-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd11 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd11 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd11-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd11 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd11-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd11 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd11_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd11_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd11_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd11_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd11_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd11_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd11_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd11_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd11_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd11_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd11_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd11_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd11-CONTAINER" data-look="classic"><rect x="8" y="8" width="1208.421875" height="116.225"></rect><g class="cluster-label " transform="translate(470.10546875, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Requested</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> container</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> pod</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> memory</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M169.66,99.225L169.66,103.392C169.66,107.558,169.66,115.892,169.66,124.225C169.66,132.558,169.66,140.892,214.197,151.139C258.734,161.386,347.808,173.546,392.345,179.627L436.882,185.707" id="gd11-L_HEAP_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_HEAP_SUM_0" data-points="W3sieCI6MTY5LjY2MDE1NjI1LCJ5Ijo5OS4yMjV9LHsieCI6MTY5LjY2MDE1NjI1LCJ5IjoxMjQuMjI1fSx7IngiOjE2OS42NjAxNTYyNSwieSI6MTQ5LjIyNX0seyJ4Ijo0NDAuODQ1NzAzMTI1LCJ5IjoxODYuMjQ3OTU3MjgzOTE4ODh9XQ==" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M448.961,99.225L448.961,103.392C448.961,107.558,448.961,115.892,448.961,124.225C448.961,132.558,448.961,140.892,458.835,148.979C468.71,157.066,488.459,164.908,498.333,168.828L508.208,172.749" id="gd11-L_OVER_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_OVER_SUM_0" data-points="W3sieCI6NDQ4Ljk2MDkzNzUsInkiOjk5LjIyNX0seyJ4Ijo0NDguOTYwOTM3NSwieSI6MTI0LjIyNX0seyJ4Ijo0NDguOTYwOTM3NSwieSI6MTQ5LjIyNX0seyJ4Ijo1MTEuOTI1NTg3MTU1ODM5OTMsInkiOjE3NC4yMjQ5OTk5OTk5OTk5N31d" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M741.684,99.225L741.684,103.392C741.684,107.558,741.684,115.892,741.684,124.225C741.684,132.558,741.684,140.892,731.809,148.979C721.935,157.066,702.186,164.908,692.311,168.828L682.437,172.749" id="gd11-L_OFF_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_OFF_SUM_0" data-points="W3sieCI6NzQxLjY4MzU5Mzc1LCJ5Ijo5OS4yMjV9LHsieCI6NzQxLjY4MzU5Mzc1LCJ5IjoxMjQuMjI1fSx7IngiOjc0MS42ODM1OTM3NSwieSI6MTQ5LjIyNX0seyJ4Ijo2NzguNzE4OTQ0MDk0MTYwMSwieSI6MTc0LjIyNDk5OTk5OTk5OTk3fV0=" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M1056.594,99.225L1056.594,103.392C1056.594,107.558,1056.594,115.892,1056.594,124.225C1056.594,132.558,1056.594,140.892,1006.123,151.417C955.652,161.942,854.71,174.659,804.239,181.018L753.767,187.376" id="gd11-L_PY_SUM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_PY_SUM_0" data-points="W3sieCI6MTA1Ni41OTM3NSwieSI6OTkuMjI1fSx7IngiOjEwNTYuNTkzNzUsInkiOjEyNC4yMjV9LHsieCI6MTA1Ni41OTM3NSwieSI6MTQ5LjIyNX0seyJ4Ijo3NDkuNzk4ODI4MTI1LCJ5IjoxODcuODc2MDM0MTU1MzM2NTh9XQ==" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M595.322,240.45L595.322,244.617C595.322,248.783,595.322,257.117,595.322,264.783C595.322,272.45,595.322,279.45,595.322,282.95L595.322,286.45" id="gd11-L_SUM_GRANT_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SUM_GRANT_0" data-points="W3sieCI6NTk1LjMyMjI2NTYyNSwieSI6MjQwLjQ1fSx7IngiOjU5NS4zMjIyNjU2MjUsInkiOjI2NS40NX0seyJ4Ijo1OTUuMzIyMjY1NjI1LCJ5IjoyOTAuNDV9XQ==" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M595.322,374.275L595.322,378.442C595.322,382.608,595.322,390.942,595.322,398.608C595.322,406.275,595.322,413.275,595.322,416.775L595.322,420.275" id="gd11-L_GRANT_CHK_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_GRANT_CHK_0" data-points="W3sieCI6NTk1LjMyMjI2NTYyNSwieSI6Mzc0LjI3NTAwMDAwMDAwMDAzfSx7IngiOjU5NS4zMjIyNjU2MjUsInkiOjM5OS4yNzV9LHsieCI6NTk1LjMyMjI2NTYyNTAwMDEsInkiOjQyNC4yNzQ5OTk5OTk5OTk5fV0=" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M524.286,669.343L509.68,687.235C495.074,705.126,465.862,740.909,451.256,764.186C436.65,787.463,436.65,798.234,436.65,803.619L436.65,809.005" id="gd11-L_CHK_OOM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_CHK_OOM_0" data-points="W3sieCI6NTI0LjI4NTg1MzgzMjYxNTksInkiOjY2OS4zNDMyNzU3MDc2MTYyfSx7IngiOjQzNi42NTAzOTA2MjUsInkiOjc3Ni42OTIxODc1fSx7IngiOjQzNi42NTAzOTA2MjUsInkiOjgxMy4wMDQ2ODc1fV0=" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path><path d="M666.359,669.343L680.965,687.235C695.57,705.126,724.782,740.909,739.388,765.653C753.994,790.396,753.994,804.101,753.994,810.953L753.994,817.805" id="gd11-L_CHK_OK_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_CHK_OK_0" data-points="W3sieCI6NjY2LjM1ODY3NzQxNzM4NDEsInkiOjY2OS4zNDMyNzU3MDc2MTY0fSx7IngiOjc1My45OTQxNDA2MjUsInkiOjc3Ni42OTIxODc1fSx7IngiOjc1My45OTQxNDA2MjUsInkiOjgyMS44MDQ2ODc1fV0=" data-look="classic" marker-end="url(#gd11_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_HEAP_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_OVER_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_OFF_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_PY_SUM_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_SUM_GRANT_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_GRANT_CHK_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(436.650390625, 776.6921875)"><g class="label" data-id="L_CHK_OOM_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-15.9765625" y="-0.8515625" width="31.953125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Yes</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(753.994140625, 776.6921875)"><g class="label" data-id="L_CHK_OK_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-12.87890625" y="-0.8515625" width="25.7578125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">No</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd11-flowchart-HEAP-0" data-look="classic" transform="translate(169.66015625, 66.1125)"><rect class="basic label-container" x="-126.66015625" y="-33.1125" width="253.3203125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">executorMemory</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (heap)</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">8192</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-OVER-1" data-look="classic" transform="translate(448.9609375, 66.1125)"><rect class="basic label-container" x="-102.640625" y="-33.1125" width="205.28125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">memoryOverhead</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">819</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-OFF-2" data-look="classic" transform="translate(741.68359375, 66.1125)"><rect class="basic label-container" x="-140.08203125" y="-33.1125" width="280.1640625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">spark.memory.offHeap.size</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">1024</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-PY-3" data-look="classic" transform="translate(1056.59375, 66.1125)"><rect class="basic label-container" x="-124.828125" y="-33.1125" width="249.65625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">pyspark.memory</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">512</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (only</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> when</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> set)</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-SUM-5" data-look="classic" transform="translate(595.322265625, 207.33749999999998)"><rect class="basic label-container" x="-154.4765625" y="-33.1125" width="308.953125" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Sum</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> terms</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> =</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> requested</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> size</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">=</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 10,547</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MB</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-GRANT-13" data-look="classic" transform="translate(595.322265625, 332.3625)"><rect class="basic label-container" x="-141.35546875" y="-41.9125" width="282.7109375" height="83.825"></rect><g class="label" transform="translate(0, -26.9125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Resource</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> manager</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> grants</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> a</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">container</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> of</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> that</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> size</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(YARN</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Kubernetes)</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-CHK-15" data-look="classic" transform="translate(595.322265625, 582.32734375)"><polygon points="158.05234375,0 316.1046875,-158.05234375 158.05234375,-316.1046875 0,-158.05234375" class="label-container" transform="translate(-157.55234375, 158.05234375)"></polygon><g class="label" transform="translate(0, -35.712500000000006)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Actual</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runtime</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> footprint</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">&gt;</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> container</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> limit?</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(native</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Python</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> use</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> spills</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="3.2em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">past</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> overhead</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> budget)</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-OOM-17" data-look="classic" transform="translate(436.650390625, 846.1171875)"><rect class="basic label-container" x="-159.76171875" y="-33.1125" width="319.5234375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">OOMKilled</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> by</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> resource</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> manager</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(YARN</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Kubernetes</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> kubelet)</tspan></tspan></text></g></g></g><g class="node default " id="gd11-flowchart-OK-19" data-look="classic" transform="translate(753.994140625, 846.1171875)"><rect class="basic label-container" x="-107.58203125" y="-24.3125" width="215.1640625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Runs</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> within</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> budget</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd11-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd11-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd11-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9aa8a3" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(214.2857142857, 0%, 86.2745098039%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd14" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 597.09375 608.2625" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 597.09375px;"><style>#gd14{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#f4f4f5;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd14 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd14 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd14 .error-icon{fill:#1a232f;}#gd14 .error-text{fill:#e5dcd0;stroke:#e5dcd0;}#gd14 .edge-thickness-normal{stroke-width:1px;}#gd14 .edge-thickness-thick{stroke-width:3.5px;}#gd14 .edge-pattern-solid{stroke-dasharray:0;}#gd14 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd14 .edge-pattern-dashed{stroke-dasharray:3;}#gd14 .edge-pattern-dotted{stroke-dasharray:2;}#gd14 .marker{fill:#a9b5b4;stroke:#a9b5b4;}#gd14 .marker.cross{stroke:#a9b5b4;}#gd14 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd14 p{margin:0;}#gd14 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f4f4f5;}#gd14 .cluster-label text{fill:#f4f4f5;}#gd14 .cluster-label span{color:#f4f4f5;}#gd14 .cluster-label span p{background-color:transparent;}#gd14 .label text,#gd14 span{fill:#f4f4f5;color:#f4f4f5;}#gd14 .node rect,#gd14 .node circle,#gd14 .node ellipse,#gd14 .node polygon,#gd14 .node path{fill:#17202c;stroke:#3a4a52;stroke-width:1px;}#gd14 .rough-node .label text,#gd14 .node .label text,#gd14 .image-shape .label,#gd14 .icon-shape .label{text-anchor:middle;}#gd14 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd14 .rough-node .label,#gd14 .node .label,#gd14 .image-shape .label,#gd14 .icon-shape .label{text-align:center;}#gd14 .node.clickable{cursor:pointer;}#gd14 .root .anchor path{fill:#a9b5b4!important;stroke-width:0;stroke:#a9b5b4;}#gd14 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd14 .edgePath .path{stroke:#a9b5b4;stroke-width:1px;}#gd14 .flowchart-link{stroke:#a9b5b4;fill:none;}#gd14 .edgeLabel{background-color:#11171a;text-align:center;}#gd14 .edgeLabel p{background-color:#11171a;}#gd14 .edgeLabel rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd14 .labelBkg{background-color:rgba(17, 23, 26, 0.5);}#gd14 .cluster rect{fill:#11171a;stroke:#233035;stroke-width:1px;}#gd14 .cluster text{fill:#f4f4f5;}#gd14 .cluster span{color:#f4f4f5;}#gd14 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#1a232f;border:1px solid hsl(214.2857142857, 0%, 4.3137254902%);border-radius:2px;pointer-events:none;z-index:100;}#gd14 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#f4f4f5;}#gd14 rect.text{fill:none;stroke-width:0;}#gd14 .icon-shape,#gd14 .image-shape{background-color:#11171a;text-align:center;}#gd14 .icon-shape p,#gd14 .image-shape p{background-color:#11171a;padding:2px;}#gd14 .icon-shape .label rect,#gd14 .image-shape .label rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd14 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd14 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd14 .node .neo-node{stroke:#3a4a52;}#gd14 [data-look=&quot;neo&quot;].node rect,#gd14 [data-look=&quot;neo&quot;].cluster rect,#gd14 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd14-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd14 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd14 [data-look=&quot;neo&quot;].node path{stroke:url(#gd14-gradient);stroke-width:1px;}#gd14 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd14 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#3a4a52;filter:none;}#gd14 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd14-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd14 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd14 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd14-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd14 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd14-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd14 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd14_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd14_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd14_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd14_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd14_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd14_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd14_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd14_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd14_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd14_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd14_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd14_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd14-S3" data-look="classic"><rect x="8" y="484.32500000000005" width="175.140625" height="98.625"></rect><g class="cluster-label " transform="translate(64.8203125, 484.32500000000005)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 3</tspan></tspan></text></g></g></g><g class="cluster " id="gd14-S2" data-look="classic"><rect x="12.796875" y="295.475" width="165.546875" height="98.625"></rect><g class="cluster-label " transform="translate(64.8203125, 295.475)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g><g class="cluster " id="gd14-S1" data-look="classic"><rect x="11.9609375" y="8" width="167.21875" height="197.25"></rect><g class="cluster-label " transform="translate(64.8203125, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M95.57,81.625L95.57,85.792C95.57,89.958,95.57,98.292,95.57,105.958C95.57,113.625,95.57,120.625,95.57,124.125L95.57,127.625" id="gd14-L_F_M1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_F_M1_0" data-points="W3sieCI6OTUuNTcwMzEyNSwieSI6ODEuNjI1fSx7IngiOjk1LjU3MDMxMjUsInkiOjEwNi42MjV9LHsieCI6OTUuNTcwMzEyNSwieSI6MTMxLjYyNX1d" data-look="classic" marker-end="url(#gd14_flowchart-v2-pointEnd)" style=";"></path><path d="M95.57,180.25L95.57,184.417C95.57,188.583,95.57,196.917,95.57,208.602C95.57,220.288,95.57,235.325,95.57,250.363C95.57,265.4,95.57,280.438,95.57,291.456C95.57,302.475,95.57,309.475,95.57,312.975L95.57,316.475" id="gd14-L_M1_M2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_M1_M2_0" data-points="W3sieCI6OTUuNTcwMzEyNSwieSI6MTgwLjI1fSx7IngiOjk1LjU3MDMxMjUsInkiOjIwNS4yNX0seyJ4Ijo5NS41NzAzMTI1LCJ5IjoyNTAuMzYyNX0seyJ4Ijo5NS41NzAzMTI1LCJ5IjoyOTUuNDc1fSx7IngiOjk1LjU3MDMxMjUsInkiOjMyMC40NzV9XQ==" data-look="classic" marker-end="url(#gd14_flowchart-v2-pointEnd)" style=";"></path><path d="M95.57,369.1L95.57,373.267C95.57,377.433,95.57,385.767,95.57,397.452C95.57,409.138,95.57,424.175,95.57,439.213C95.57,454.25,95.57,469.288,95.57,480.306C95.57,491.325,95.57,498.325,95.57,501.825L95.57,505.325" id="gd14-L_M2_C_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_M2_C_0" data-points="W3sieCI6OTUuNTcwMzEyNSwieSI6MzY5LjF9LHsieCI6OTUuNTcwMzEyNSwieSI6Mzk0LjF9LHsieCI6OTUuNTcwMzEyNSwieSI6NDM5LjIxMjUwMDAwMDAwMDAzfSx7IngiOjk1LjU3MDMxMjUsInkiOjQ4NC4zMjUwMDAwMDAwMDAwNX0seyJ4Ijo5NS41NzAzMTI1LCJ5Ijo1MDkuMzI1MDAwMDAwMDAwMDV9XQ==" data-look="classic" marker-end="url(#gd14_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_F_M1_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(95.5703125, 250.3625)"><g class="label" data-id="L_M1_M2_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-56.63671875" y="-0.8515625" width="113.2734375" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">groupByKey</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(wide</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shuffle)</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(95.5703125, 439.21250000000003)"><g class="label" data-id="L_M2_C_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-56.63671875" y="-0.8515625" width="113.2734375" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">sortByKey</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(wide</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shuffle)</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd14-flowchart-F-0" data-look="classic" transform="translate(95.5703125, 57.3125)"><rect class="basic label-container" x="-48.609375" y="-24.3125" width="97.21875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">filter</tspan></tspan></text></g></g></g><g class="node default " id="gd14-flowchart-M1-1" data-look="classic" transform="translate(95.5703125, 155.9375)"><rect class="basic label-container" x="-47.7734375" y="-24.3125" width="95.546875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">map</tspan></tspan></text></g></g></g><g class="node default " id="gd14-flowchart-M2-2" data-look="classic" transform="translate(95.5703125, 344.7875)"><rect class="basic label-container" x="-47.7734375" y="-24.3125" width="95.546875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">map</tspan></tspan></text></g></g></g><g class="node default " id="gd14-flowchart-C-3" data-look="classic" transform="translate(95.5703125, 533.6375)"><rect class="basic label-container" x="-52.5703125" y="-24.3125" width="105.140625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">count</tspan></tspan></text></g></g></g><g class="node default " id="gd14-flowchart-N-8" data-look="classic" transform="translate(397.63671875, 57.3125)"><rect class="basic label-container" x="-183.45703125" y="-24.3125" width="366.9140625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Each</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runs</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> one</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> per</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partition</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd14-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd14-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd14-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#3a4a52" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(200, 0%, 0%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd13" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 597.09375 608.2625" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 597.09375px;"><style>#gd13{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#151b1e;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd13 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd13 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd13 .error-icon{fill:#eef1f6;}#gd13 .error-text{fill:#110e09;stroke:#110e09;}#gd13 .edge-thickness-normal{stroke-width:1px;}#gd13 .edge-thickness-thick{stroke-width:3.5px;}#gd13 .edge-pattern-solid{stroke-dasharray:0;}#gd13 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd13 .edge-pattern-dashed{stroke-dasharray:3;}#gd13 .edge-pattern-dotted{stroke-dasharray:2;}#gd13 .marker{fill:#4f5f60;stroke:#4f5f60;}#gd13 .marker.cross{stroke:#4f5f60;}#gd13 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd13 p{margin:0;}#gd13 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#151b1e;}#gd13 .cluster-label text{fill:#151b1e;}#gd13 .cluster-label span{color:#151b1e;}#gd13 .cluster-label span p{background-color:transparent;}#gd13 .label text,#gd13 span{fill:#151b1e;color:#151b1e;}#gd13 .node rect,#gd13 .node circle,#gd13 .node ellipse,#gd13 .node polygon,#gd13 .node path{fill:#ffffff;stroke:#9aa8a3;stroke-width:1px;}#gd13 .rough-node .label text,#gd13 .node .label text,#gd13 .image-shape .label,#gd13 .icon-shape .label{text-anchor:middle;}#gd13 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd13 .rough-node .label,#gd13 .node .label,#gd13 .image-shape .label,#gd13 .icon-shape .label{text-align:center;}#gd13 .node.clickable{cursor:pointer;}#gd13 .root .anchor path{fill:#4f5f60!important;stroke-width:0;stroke:#4f5f60;}#gd13 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd13 .edgePath .path{stroke:#4f5f60;stroke-width:1px;}#gd13 .flowchart-link{stroke:#4f5f60;fill:none;}#gd13 .edgeLabel{background-color:#eef1f6;text-align:center;}#gd13 .edgeLabel p{background-color:#eef1f6;}#gd13 .edgeLabel rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd13 .labelBkg{background-color:rgba(238, 241, 246, 0.5);}#gd13 .cluster rect{fill:#f2f5f9;stroke:#dbe2df;stroke-width:1px;}#gd13 .cluster text{fill:#151b1e;}#gd13 .cluster span{color:#151b1e;}#gd13 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#eef1f6;border:1px solid hsl(217.5, 0%, 84.9019607843%);border-radius:2px;pointer-events:none;z-index:100;}#gd13 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#151b1e;}#gd13 rect.text{fill:none;stroke-width:0;}#gd13 .icon-shape,#gd13 .image-shape{background-color:#eef1f6;text-align:center;}#gd13 .icon-shape p,#gd13 .image-shape p{background-color:#eef1f6;padding:2px;}#gd13 .icon-shape .label rect,#gd13 .image-shape .label rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd13 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd13 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd13 .node .neo-node{stroke:#9aa8a3;}#gd13 [data-look=&quot;neo&quot;].node rect,#gd13 [data-look=&quot;neo&quot;].cluster rect,#gd13 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd13-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd13 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd13 [data-look=&quot;neo&quot;].node path{stroke:url(#gd13-gradient);stroke-width:1px;}#gd13 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd13 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9aa8a3;filter:none;}#gd13 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd13-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd13 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd13 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd13-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd13 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd13-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd13 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd13_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd13_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd13_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd13_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd13_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd13_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd13_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd13_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd13_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd13_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd13_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd13_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd13-S3" data-look="classic"><rect x="8" y="484.32500000000005" width="175.140625" height="98.625"></rect><g class="cluster-label " transform="translate(64.8203125, 484.32500000000005)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 3</tspan></tspan></text></g></g></g><g class="cluster " id="gd13-S2" data-look="classic"><rect x="12.796875" y="295.475" width="165.546875" height="98.625"></rect><g class="cluster-label " transform="translate(64.8203125, 295.475)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g><g class="cluster " id="gd13-S1" data-look="classic"><rect x="11.9609375" y="8" width="167.21875" height="197.25"></rect><g class="cluster-label " transform="translate(64.8203125, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M95.57,81.625L95.57,85.792C95.57,89.958,95.57,98.292,95.57,105.958C95.57,113.625,95.57,120.625,95.57,124.125L95.57,127.625" id="gd13-L_F_M1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_F_M1_0" data-points="W3sieCI6OTUuNTcwMzEyNSwieSI6ODEuNjI1fSx7IngiOjk1LjU3MDMxMjUsInkiOjEwNi42MjV9LHsieCI6OTUuNTcwMzEyNSwieSI6MTMxLjYyNX1d" data-look="classic" marker-end="url(#gd13_flowchart-v2-pointEnd)" style=";"></path><path d="M95.57,180.25L95.57,184.417C95.57,188.583,95.57,196.917,95.57,208.602C95.57,220.288,95.57,235.325,95.57,250.363C95.57,265.4,95.57,280.438,95.57,291.456C95.57,302.475,95.57,309.475,95.57,312.975L95.57,316.475" id="gd13-L_M1_M2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_M1_M2_0" data-points="W3sieCI6OTUuNTcwMzEyNSwieSI6MTgwLjI1fSx7IngiOjk1LjU3MDMxMjUsInkiOjIwNS4yNX0seyJ4Ijo5NS41NzAzMTI1LCJ5IjoyNTAuMzYyNX0seyJ4Ijo5NS41NzAzMTI1LCJ5IjoyOTUuNDc1fSx7IngiOjk1LjU3MDMxMjUsInkiOjMyMC40NzV9XQ==" data-look="classic" marker-end="url(#gd13_flowchart-v2-pointEnd)" style=";"></path><path d="M95.57,369.1L95.57,373.267C95.57,377.433,95.57,385.767,95.57,397.452C95.57,409.138,95.57,424.175,95.57,439.213C95.57,454.25,95.57,469.288,95.57,480.306C95.57,491.325,95.57,498.325,95.57,501.825L95.57,505.325" id="gd13-L_M2_C_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_M2_C_0" data-points="W3sieCI6OTUuNTcwMzEyNSwieSI6MzY5LjF9LHsieCI6OTUuNTcwMzEyNSwieSI6Mzk0LjF9LHsieCI6OTUuNTcwMzEyNSwieSI6NDM5LjIxMjUwMDAwMDAwMDAzfSx7IngiOjk1LjU3MDMxMjUsInkiOjQ4NC4zMjUwMDAwMDAwMDAwNX0seyJ4Ijo5NS41NzAzMTI1LCJ5Ijo1MDkuMzI1MDAwMDAwMDAwMDV9XQ==" data-look="classic" marker-end="url(#gd13_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_F_M1_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(95.5703125, 250.3625)"><g class="label" data-id="L_M1_M2_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-56.63671875" y="-0.8515625" width="113.2734375" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">groupByKey</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(wide</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shuffle)</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(95.5703125, 439.21250000000003)"><g class="label" data-id="L_M2_C_0" transform="translate(0, -19.2609375)"><g><rect class="background" x="-56.63671875" y="-0.8515625" width="113.2734375" height="40.225"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">sortByKey</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(wide</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shuffle)</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd13-flowchart-F-0" data-look="classic" transform="translate(95.5703125, 57.3125)"><rect class="basic label-container" x="-48.609375" y="-24.3125" width="97.21875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">filter</tspan></tspan></text></g></g></g><g class="node default " id="gd13-flowchart-M1-1" data-look="classic" transform="translate(95.5703125, 155.9375)"><rect class="basic label-container" x="-47.7734375" y="-24.3125" width="95.546875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">map</tspan></tspan></text></g></g></g><g class="node default " id="gd13-flowchart-M2-2" data-look="classic" transform="translate(95.5703125, 344.7875)"><rect class="basic label-container" x="-47.7734375" y="-24.3125" width="95.546875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">map</tspan></tspan></text></g></g></g><g class="node default " id="gd13-flowchart-C-3" data-look="classic" transform="translate(95.5703125, 533.6375)"><rect class="basic label-container" x="-52.5703125" y="-24.3125" width="105.140625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">count</tspan></tspan></text></g></g></g><g class="node default " id="gd13-flowchart-N-8" data-look="classic" transform="translate(397.63671875, 57.3125)"><rect class="basic label-container" x="-183.45703125" y="-24.3125" width="366.9140625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Each</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> stage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runs</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> one</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> task</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> per</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partition</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd13-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd13-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd13-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9aa8a3" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(214.2857142857, 0%, 86.2745098039%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd16" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 945.12109375 616.0875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 945.12109375px;"><style>#gd16{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#f4f4f5;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd16 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd16 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd16 .error-icon{fill:#1a232f;}#gd16 .error-text{fill:#e5dcd0;stroke:#e5dcd0;}#gd16 .edge-thickness-normal{stroke-width:1px;}#gd16 .edge-thickness-thick{stroke-width:3.5px;}#gd16 .edge-pattern-solid{stroke-dasharray:0;}#gd16 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd16 .edge-pattern-dashed{stroke-dasharray:3;}#gd16 .edge-pattern-dotted{stroke-dasharray:2;}#gd16 .marker{fill:#a9b5b4;stroke:#a9b5b4;}#gd16 .marker.cross{stroke:#a9b5b4;}#gd16 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd16 p{margin:0;}#gd16 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f4f4f5;}#gd16 .cluster-label text{fill:#f4f4f5;}#gd16 .cluster-label span{color:#f4f4f5;}#gd16 .cluster-label span p{background-color:transparent;}#gd16 .label text,#gd16 span{fill:#f4f4f5;color:#f4f4f5;}#gd16 .node rect,#gd16 .node circle,#gd16 .node ellipse,#gd16 .node polygon,#gd16 .node path{fill:#17202c;stroke:#3a4a52;stroke-width:1px;}#gd16 .rough-node .label text,#gd16 .node .label text,#gd16 .image-shape .label,#gd16 .icon-shape .label{text-anchor:middle;}#gd16 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd16 .rough-node .label,#gd16 .node .label,#gd16 .image-shape .label,#gd16 .icon-shape .label{text-align:center;}#gd16 .node.clickable{cursor:pointer;}#gd16 .root .anchor path{fill:#a9b5b4!important;stroke-width:0;stroke:#a9b5b4;}#gd16 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd16 .edgePath .path{stroke:#a9b5b4;stroke-width:1px;}#gd16 .flowchart-link{stroke:#a9b5b4;fill:none;}#gd16 .edgeLabel{background-color:#11171a;text-align:center;}#gd16 .edgeLabel p{background-color:#11171a;}#gd16 .edgeLabel rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd16 .labelBkg{background-color:rgba(17, 23, 26, 0.5);}#gd16 .cluster rect{fill:#11171a;stroke:#233035;stroke-width:1px;}#gd16 .cluster text{fill:#f4f4f5;}#gd16 .cluster span{color:#f4f4f5;}#gd16 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#1a232f;border:1px solid hsl(214.2857142857, 0%, 4.3137254902%);border-radius:2px;pointer-events:none;z-index:100;}#gd16 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#f4f4f5;}#gd16 rect.text{fill:none;stroke-width:0;}#gd16 .icon-shape,#gd16 .image-shape{background-color:#11171a;text-align:center;}#gd16 .icon-shape p,#gd16 .image-shape p{background-color:#11171a;padding:2px;}#gd16 .icon-shape .label rect,#gd16 .image-shape .label rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd16 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd16 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd16 .node .neo-node{stroke:#3a4a52;}#gd16 [data-look=&quot;neo&quot;].node rect,#gd16 [data-look=&quot;neo&quot;].cluster rect,#gd16 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd16-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd16 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd16 [data-look=&quot;neo&quot;].node path{stroke:url(#gd16-gradient);stroke-width:1px;}#gd16 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd16 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#3a4a52;filter:none;}#gd16 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd16-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd16 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd16 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd16-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd16 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd16-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd16 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd16_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd16_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd16_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd16_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd16_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd16_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd16_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd16_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd16_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd16_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd16_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd16_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd16-CM" data-look="classic"><rect x="8" y="171.85000000000002" width="343.98828125" height="418.92499999999995"></rect><g class="cluster-label " transform="translate(113.099609375, 171.85000000000002)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Cluster</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> manager</tspan></tspan></text></g></g></g><g class="cluster " id="gd16-Driver" data-look="classic"><rect x="371.98828125" y="8" width="557.1328125" height="418.92499999999995"></rect><g class="cluster-label " transform="translate(625.9375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Driver</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M511.531,254.275L511.531,261.794C511.531,269.313,511.531,284.35,511.531,297.254C511.531,310.158,511.531,320.929,511.531,326.315L511.531,331.7" id="gd16-L_DAG_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_DAG_TS_0" data-points="W3sieCI6NTExLjUzMTI1LCJ5IjoyNTQuMjc0OTk5OTk5OTk5OTh9LHsieCI6NTExLjUzMTI1LCJ5IjoyOTkuMzg3NX0seyJ4Ijo1MTEuNTMxMjUsInkiOjMzNS43fV0=" data-look="classic" marker-end="url(#gd16_flowchart-v2-pointEnd)" style=";"></path><path d="M406.988,340.919L381.046,333.997C355.104,327.075,303.219,313.231,271.608,300.725C239.997,288.219,228.66,277.051,222.992,271.466L217.323,265.882" id="gd16-L_TS_E1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_TS_E1_0" data-points="W3sieCI6NDA2Ljk4ODI4MTI1LCJ5IjozNDAuOTE4NjgwMzMxOTI5NjR9LHsieCI6MjUxLjMzMzk4NDM3NSwieSI6Mjk5LjM4NzV9LHsieCI6MjE0LjQ3MzUxMTQ4OTQ2NzA2LCJ5IjoyNjMuMDc1fV0=" data-look="classic" marker-end="url(#gd16_flowchart-v2-pointEnd)" style=";"></path><path d="M483.171,401.925L479.603,406.092C476.034,410.258,468.897,418.592,406.477,428.81C344.058,439.029,226.356,451.133,173.174,462.77C119.991,474.406,131.328,485.574,136.997,491.159L142.665,496.743" id="gd16-L_TS_E2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_TS_E2_0" data-points="W3sieCI6NDgzLjE3MTQ2MDM0NDI5NDUsInkiOjQwMS45MjV9LHsieCI6NDYxLjc1OTc2NTYyNSwieSI6NDI2LjkyNDk5OTk5OTk5OTk1fSx7IngiOjEwOC42NTQyOTY4NzUsInkiOjQ2My4yMzc0OTk5OTk5OTk5NX0seyJ4IjoxNDUuNTE0NzY5NzYwNTMyOTQsInkiOjQ5OS41NDk5OTk5OTk5OTk5fV0=" data-look="classic" marker-end="url(#gd16_flowchart-v2-pointEnd)" style=";"></path><path d="M147.249,263.075L141.106,269.127C134.962,275.179,122.675,287.283,165.308,301.777C207.941,316.271,305.494,333.154,354.271,341.596L403.047,350.037" id="gd16-L_E1_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_E1_TS_0" data-points="W3sieCI6MTQ3LjI0OTE0NDc2MDUzMjk0LCJ5IjoyNjMuMDc1fSx7IngiOjExMC4zODg2NzE4NzUsInkiOjI5OS4zODc1fSx7IngiOjQwNi45ODgyODEyNSwieSI6MzUwLjcxOTQ0MjgxNDcxMzgzfV0=" data-look="classic" marker-end="url(#gd16_flowchart-v2-pointEnd)" style=";"></path><path d="M212.739,499.55L218.883,493.498C225.026,487.446,237.313,475.342,320.244,463.237C403.175,451.133,556.751,439.029,618.47,428.572C680.189,418.115,650.051,409.305,634.982,404.9L619.914,400.495" id="gd16-L_E2_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_E2_TS_0" data-points="W3sieCI6MjEyLjczOTEzNjQ4OTQ2NzA2LCJ5Ijo0OTkuNTQ5OTk5OTk5OTk5OX0seyJ4IjoyNDkuNTk5NjA5Mzc1LCJ5Ijo0NjMuMjM3NDk5OTk5OTk5OTV9LHsieCI6NzEwLjMyNjE3MTg3NSwieSI6NDI2LjkyNDk5OTk5OTk5OTk1fSx7IngiOjYxNi4wNzQyMTg3NSwieSI6Mzk5LjM3MjkwNDczMzU5OTl9XQ==" data-look="classic" marker-end="url(#gd16_flowchart-v2-pointEnd)" style=";"></path><path d="M650.555,99.225L650.555,105.277C650.555,111.329,650.555,123.433,650.555,135.538C650.555,147.642,650.555,159.746,601.46,167.515C552.365,175.285,454.175,178.72,405.081,180.438L355.986,182.155" id="gd16-L_SC_CM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SC_CM_0" data-points="W3sieCI6NjUwLjU1NDY4NzUsInkiOjk5LjIyNX0seyJ4Ijo2NTAuNTU0Njg3NSwieSI6MTM1LjUzNzV9LHsieCI6NjUwLjU1NDY4NzUsInkiOjE3MS44NX0seyJ4IjoyNjcuNTY0NDUzMTI1LCJ5IjoyMTkuMjM1MjEzMjQ3OTIxODh9XQ==" data-look="classic" marker-end="url(#gd16_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_DAG_TS_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(304.16433, 313.48352)"><g class="label" data-id="L_TS_E1_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-59.60546875" y="-0.8515625" width="119.2109375" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">dispatch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(108.654296875, 463.23749999999995)"><g class="label" data-id="L_TS_E2_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-59.60546875" y="-0.8515625" width="119.2109375" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">dispatch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(233.19616, 320.64156)"><g class="label" data-id="L_E1_TS_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-61.33984375" y="-0.8515625" width="122.6796875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">status</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> results</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(503.11804, 443.25626)"><g class="label" data-id="L_E2_TS_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-61.33984375" y="-0.8515625" width="122.6796875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">status</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> results</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(537.56178, 175.80303)"><g class="label" data-id="L_SC_CM_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-74.6640625" y="-0.8515625" width="149.328125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">request</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> executors</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd16-flowchart-SC-0" data-look="classic" transform="translate(650.5546875, 66.1125)"><rect class="basic label-container" x="-89.69921875" y="-33.1125" width="179.3984375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">SparkContext</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">SparkSession</tspan></tspan></text></g></g></g><g class="node default " id="gd16-flowchart-DAG-1" data-look="classic" transform="translate(511.53125, 229.96249999999998)"><rect class="basic label-container" x="-87.8828125" y="-24.3125" width="175.765625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">DAGScheduler</tspan></tspan></text></g></g></g><g class="node default " id="gd16-flowchart-TS-2" data-look="classic" transform="translate(511.53125, 368.8125)"><rect class="basic label-container" x="-104.54296875" y="-33.1125" width="209.0859375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TaskScheduler</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">SchedulerBackend</tspan></tspan></text></g></g></g><g class="node default " id="gd16-flowchart-BMM-3" data-look="classic" transform="translate(780.09765625, 368.8125)"><rect class="basic label-container" x="-114.0234375" y="-24.3125" width="228.046875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">BlockManagerMaster</tspan></tspan></text></g></g></g><g class="node default " id="gd16-flowchart-E1-6" data-look="classic" transform="translate(180.861328125, 229.96249999999998)"><rect class="basic label-container" x="-86.703125" y="-33.1125" width="173.40625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Executor</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">BlockManager</tspan></tspan></text></g></g></g><g class="node default " id="gd16-flowchart-E2-7" data-look="classic" transform="translate(179.126953125, 532.6624999999999)"><rect class="basic label-container" x="-86.703125" y="-33.1125" width="173.40625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Executor</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">BlockManager</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd16-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd16-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd16-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#3a4a52" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(200, 0%, 0%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd15" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 945.12109375 616.0875" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 945.12109375px;"><style>#gd15{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#151b1e;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd15 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd15 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd15 .error-icon{fill:#eef1f6;}#gd15 .error-text{fill:#110e09;stroke:#110e09;}#gd15 .edge-thickness-normal{stroke-width:1px;}#gd15 .edge-thickness-thick{stroke-width:3.5px;}#gd15 .edge-pattern-solid{stroke-dasharray:0;}#gd15 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd15 .edge-pattern-dashed{stroke-dasharray:3;}#gd15 .edge-pattern-dotted{stroke-dasharray:2;}#gd15 .marker{fill:#4f5f60;stroke:#4f5f60;}#gd15 .marker.cross{stroke:#4f5f60;}#gd15 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd15 p{margin:0;}#gd15 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#151b1e;}#gd15 .cluster-label text{fill:#151b1e;}#gd15 .cluster-label span{color:#151b1e;}#gd15 .cluster-label span p{background-color:transparent;}#gd15 .label text,#gd15 span{fill:#151b1e;color:#151b1e;}#gd15 .node rect,#gd15 .node circle,#gd15 .node ellipse,#gd15 .node polygon,#gd15 .node path{fill:#ffffff;stroke:#9aa8a3;stroke-width:1px;}#gd15 .rough-node .label text,#gd15 .node .label text,#gd15 .image-shape .label,#gd15 .icon-shape .label{text-anchor:middle;}#gd15 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd15 .rough-node .label,#gd15 .node .label,#gd15 .image-shape .label,#gd15 .icon-shape .label{text-align:center;}#gd15 .node.clickable{cursor:pointer;}#gd15 .root .anchor path{fill:#4f5f60!important;stroke-width:0;stroke:#4f5f60;}#gd15 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd15 .edgePath .path{stroke:#4f5f60;stroke-width:1px;}#gd15 .flowchart-link{stroke:#4f5f60;fill:none;}#gd15 .edgeLabel{background-color:#eef1f6;text-align:center;}#gd15 .edgeLabel p{background-color:#eef1f6;}#gd15 .edgeLabel rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd15 .labelBkg{background-color:rgba(238, 241, 246, 0.5);}#gd15 .cluster rect{fill:#f2f5f9;stroke:#dbe2df;stroke-width:1px;}#gd15 .cluster text{fill:#151b1e;}#gd15 .cluster span{color:#151b1e;}#gd15 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#eef1f6;border:1px solid hsl(217.5, 0%, 84.9019607843%);border-radius:2px;pointer-events:none;z-index:100;}#gd15 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#151b1e;}#gd15 rect.text{fill:none;stroke-width:0;}#gd15 .icon-shape,#gd15 .image-shape{background-color:#eef1f6;text-align:center;}#gd15 .icon-shape p,#gd15 .image-shape p{background-color:#eef1f6;padding:2px;}#gd15 .icon-shape .label rect,#gd15 .image-shape .label rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd15 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd15 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd15 .node .neo-node{stroke:#9aa8a3;}#gd15 [data-look=&quot;neo&quot;].node rect,#gd15 [data-look=&quot;neo&quot;].cluster rect,#gd15 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd15-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd15 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd15 [data-look=&quot;neo&quot;].node path{stroke:url(#gd15-gradient);stroke-width:1px;}#gd15 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd15 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9aa8a3;filter:none;}#gd15 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd15-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd15 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd15 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd15-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd15 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd15-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd15 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd15_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd15_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd15_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd15_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd15_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd15_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd15_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd15_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd15_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd15_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd15_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd15_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"><g class="cluster " id="gd15-CM" data-look="classic"><rect x="8" y="171.85000000000002" width="343.98828125" height="418.92499999999995"></rect><g class="cluster-label " transform="translate(113.099609375, 171.85000000000002)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Cluster</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> manager</tspan></tspan></text></g></g></g><g class="cluster " id="gd15-Driver" data-look="classic"><rect x="371.98828125" y="8" width="557.1328125" height="418.92499999999995"></rect><g class="cluster-label " transform="translate(625.9375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Driver</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M511.531,254.275L511.531,261.794C511.531,269.313,511.531,284.35,511.531,297.254C511.531,310.158,511.531,320.929,511.531,326.315L511.531,331.7" id="gd15-L_DAG_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_DAG_TS_0" data-points="W3sieCI6NTExLjUzMTI1LCJ5IjoyNTQuMjc0OTk5OTk5OTk5OTh9LHsieCI6NTExLjUzMTI1LCJ5IjoyOTkuMzg3NX0seyJ4Ijo1MTEuNTMxMjUsInkiOjMzNS43fV0=" data-look="classic" marker-end="url(#gd15_flowchart-v2-pointEnd)" style=";"></path><path d="M406.988,340.919L381.046,333.997C355.104,327.075,303.219,313.231,271.608,300.725C239.997,288.219,228.66,277.051,222.992,271.466L217.323,265.882" id="gd15-L_TS_E1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_TS_E1_0" data-points="W3sieCI6NDA2Ljk4ODI4MTI1LCJ5IjozNDAuOTE4NjgwMzMxOTI5NjR9LHsieCI6MjUxLjMzMzk4NDM3NSwieSI6Mjk5LjM4NzV9LHsieCI6MjE0LjQ3MzUxMTQ4OTQ2NzA2LCJ5IjoyNjMuMDc1fV0=" data-look="classic" marker-end="url(#gd15_flowchart-v2-pointEnd)" style=";"></path><path d="M483.171,401.925L479.603,406.092C476.034,410.258,468.897,418.592,406.477,428.81C344.058,439.029,226.356,451.133,173.174,462.77C119.991,474.406,131.328,485.574,136.997,491.159L142.665,496.743" id="gd15-L_TS_E2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_TS_E2_0" data-points="W3sieCI6NDgzLjE3MTQ2MDM0NDI5NDUsInkiOjQwMS45MjV9LHsieCI6NDYxLjc1OTc2NTYyNSwieSI6NDI2LjkyNDk5OTk5OTk5OTk1fSx7IngiOjEwOC42NTQyOTY4NzUsInkiOjQ2My4yMzc0OTk5OTk5OTk5NX0seyJ4IjoxNDUuNTE0NzY5NzYwNTMyOTQsInkiOjQ5OS41NDk5OTk5OTk5OTk5fV0=" data-look="classic" marker-end="url(#gd15_flowchart-v2-pointEnd)" style=";"></path><path d="M147.249,263.075L141.106,269.127C134.962,275.179,122.675,287.283,165.308,301.777C207.941,316.271,305.494,333.154,354.271,341.596L403.047,350.037" id="gd15-L_E1_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_E1_TS_0" data-points="W3sieCI6MTQ3LjI0OTE0NDc2MDUzMjk0LCJ5IjoyNjMuMDc1fSx7IngiOjExMC4zODg2NzE4NzUsInkiOjI5OS4zODc1fSx7IngiOjQwNi45ODgyODEyNSwieSI6MzUwLjcxOTQ0MjgxNDcxMzgzfV0=" data-look="classic" marker-end="url(#gd15_flowchart-v2-pointEnd)" style=";"></path><path d="M212.739,499.55L218.883,493.498C225.026,487.446,237.313,475.342,320.244,463.237C403.175,451.133,556.751,439.029,618.47,428.572C680.189,418.115,650.051,409.305,634.982,404.9L619.914,400.495" id="gd15-L_E2_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_E2_TS_0" data-points="W3sieCI6MjEyLjczOTEzNjQ4OTQ2NzA2LCJ5Ijo0OTkuNTQ5OTk5OTk5OTk5OX0seyJ4IjoyNDkuNTk5NjA5Mzc1LCJ5Ijo0NjMuMjM3NDk5OTk5OTk5OTV9LHsieCI6NzEwLjMyNjE3MTg3NSwieSI6NDI2LjkyNDk5OTk5OTk5OTk1fSx7IngiOjYxNi4wNzQyMTg3NSwieSI6Mzk5LjM3MjkwNDczMzU5OTl9XQ==" data-look="classic" marker-end="url(#gd15_flowchart-v2-pointEnd)" style=";"></path><path d="M650.555,99.225L650.555,105.277C650.555,111.329,650.555,123.433,650.555,135.538C650.555,147.642,650.555,159.746,601.46,167.515C552.365,175.285,454.175,178.72,405.081,180.438L355.986,182.155" id="gd15-L_SC_CM_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SC_CM_0" data-points="W3sieCI6NjUwLjU1NDY4NzUsInkiOjk5LjIyNX0seyJ4Ijo2NTAuNTU0Njg3NSwieSI6MTM1LjUzNzV9LHsieCI6NjUwLjU1NDY4NzUsInkiOjE3MS44NX0seyJ4IjoyNjcuNTY0NDUzMTI1LCJ5IjoyMTkuMjM1MjEzMjQ3OTIxODh9XQ==" data-look="classic" marker-end="url(#gd15_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_DAG_TS_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(304.16433, 313.48352)"><g class="label" data-id="L_TS_E1_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-59.60546875" y="-0.8515625" width="119.2109375" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">dispatch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(108.654296875, 463.23749999999995)"><g class="label" data-id="L_TS_E2_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-59.60546875" y="-0.8515625" width="119.2109375" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">dispatch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tasks</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(233.19616, 320.64156)"><g class="label" data-id="L_E1_TS_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-61.33984375" y="-0.8515625" width="122.6796875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">status</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> results</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(503.11804, 443.25626)"><g class="label" data-id="L_E2_TS_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-61.33984375" y="-0.8515625" width="122.6796875" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">status</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> results</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(537.56178, 175.80303)"><g class="label" data-id="L_SC_CM_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-74.6640625" y="-0.8515625" width="149.328125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">request</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> executors</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd15-flowchart-SC-0" data-look="classic" transform="translate(650.5546875, 66.1125)"><rect class="basic label-container" x="-89.69921875" y="-33.1125" width="179.3984375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">SparkContext</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">SparkSession</tspan></tspan></text></g></g></g><g class="node default " id="gd15-flowchart-DAG-1" data-look="classic" transform="translate(511.53125, 229.96249999999998)"><rect class="basic label-container" x="-87.8828125" y="-24.3125" width="175.765625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">DAGScheduler</tspan></tspan></text></g></g></g><g class="node default " id="gd15-flowchart-TS-2" data-look="classic" transform="translate(511.53125, 368.8125)"><rect class="basic label-container" x="-104.54296875" y="-33.1125" width="209.0859375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TaskScheduler</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">SchedulerBackend</tspan></tspan></text></g></g></g><g class="node default " id="gd15-flowchart-BMM-3" data-look="classic" transform="translate(780.09765625, 368.8125)"><rect class="basic label-container" x="-114.0234375" y="-24.3125" width="228.046875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">BlockManagerMaster</tspan></tspan></text></g></g></g><g class="node default " id="gd15-flowchart-E1-6" data-look="classic" transform="translate(180.861328125, 229.96249999999998)"><rect class="basic label-container" x="-86.703125" y="-33.1125" width="173.40625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Executor</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">BlockManager</tspan></tspan></text></g></g></g><g class="node default " id="gd15-flowchart-E2-7" data-look="classic" transform="translate(179.126953125, 532.6624999999999)"><rect class="basic label-container" x="-86.703125" y="-33.1125" width="173.40625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Executor</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">BlockManager</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd15-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd15-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd15-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9aa8a3" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(214.2857142857, 0%, 86.2745098039%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd18" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 1268.84375 268.1625" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 1268.84375px;"><style>#gd18{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#f4f4f5;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd18 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd18 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd18 .error-icon{fill:#1a232f;}#gd18 .error-text{fill:#e5dcd0;stroke:#e5dcd0;}#gd18 .edge-thickness-normal{stroke-width:1px;}#gd18 .edge-thickness-thick{stroke-width:3.5px;}#gd18 .edge-pattern-solid{stroke-dasharray:0;}#gd18 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd18 .edge-pattern-dashed{stroke-dasharray:3;}#gd18 .edge-pattern-dotted{stroke-dasharray:2;}#gd18 .marker{fill:#a9b5b4;stroke:#a9b5b4;}#gd18 .marker.cross{stroke:#a9b5b4;}#gd18 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd18 p{margin:0;}#gd18 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f4f4f5;}#gd18 .cluster-label text{fill:#f4f4f5;}#gd18 .cluster-label span{color:#f4f4f5;}#gd18 .cluster-label span p{background-color:transparent;}#gd18 .label text,#gd18 span{fill:#f4f4f5;color:#f4f4f5;}#gd18 .node rect,#gd18 .node circle,#gd18 .node ellipse,#gd18 .node polygon,#gd18 .node path{fill:#17202c;stroke:#3a4a52;stroke-width:1px;}#gd18 .rough-node .label text,#gd18 .node .label text,#gd18 .image-shape .label,#gd18 .icon-shape .label{text-anchor:middle;}#gd18 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd18 .rough-node .label,#gd18 .node .label,#gd18 .image-shape .label,#gd18 .icon-shape .label{text-align:center;}#gd18 .node.clickable{cursor:pointer;}#gd18 .root .anchor path{fill:#a9b5b4!important;stroke-width:0;stroke:#a9b5b4;}#gd18 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd18 .edgePath .path{stroke:#a9b5b4;stroke-width:1px;}#gd18 .flowchart-link{stroke:#a9b5b4;fill:none;}#gd18 .edgeLabel{background-color:#11171a;text-align:center;}#gd18 .edgeLabel p{background-color:#11171a;}#gd18 .edgeLabel rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd18 .labelBkg{background-color:rgba(17, 23, 26, 0.5);}#gd18 .cluster rect{fill:#11171a;stroke:#233035;stroke-width:1px;}#gd18 .cluster text{fill:#f4f4f5;}#gd18 .cluster span{color:#f4f4f5;}#gd18 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#1a232f;border:1px solid hsl(214.2857142857, 0%, 4.3137254902%);border-radius:2px;pointer-events:none;z-index:100;}#gd18 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#f4f4f5;}#gd18 rect.text{fill:none;stroke-width:0;}#gd18 .icon-shape,#gd18 .image-shape{background-color:#11171a;text-align:center;}#gd18 .icon-shape p,#gd18 .image-shape p{background-color:#11171a;padding:2px;}#gd18 .icon-shape .label rect,#gd18 .image-shape .label rect{opacity:0.5;background-color:#11171a;fill:#11171a;}#gd18 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd18 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd18 .node .neo-node{stroke:#3a4a52;}#gd18 [data-look=&quot;neo&quot;].node rect,#gd18 [data-look=&quot;neo&quot;].cluster rect,#gd18 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd18-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd18 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd18 [data-look=&quot;neo&quot;].node path{stroke:url(#gd18-gradient);stroke-width:1px;}#gd18 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd18 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#3a4a52;filter:none;}#gd18 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd18-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd18 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd18 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd18-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd18 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd18-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd18 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd18_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd18_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd18_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd18_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd18_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd18_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd18_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd18_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd18_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd18_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd18_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd18_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"></g><g class="edgeLabels"></g><g class="nodes"><g class="root" transform="translate(0, 4.400000000000006)"><g class="clusters"><g class="cluster " id="gd18-AFTER" data-look="classic"><rect x="8" y="8" width="615.4921875" height="226.05"></rect><g class="cluster-label " transform="translate(208.484375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">After:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> subtree</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shared</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> once</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M349.642,87.913L360.833,85.213C372.024,82.513,394.407,77.113,411.181,74.413C427.956,71.713,439.122,71.713,444.706,71.712L450.289,71.713" id="gd18-L_SH_C1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SH_C1_0" data-points="W3sieCI6MzQ5LjY0MTk2MTczOTU0MzcsInkiOjg3LjkxMjUwMDAwMDAwMDAxfSx7IngiOjQxNi43ODkwNjI1LCJ5Ijo3MS43MTI1fSx7IngiOjQ1NC4yODkwNjI1LCJ5Ijo3MS43MTI1fV0=" data-look="classic" marker-end="url(#gd18_flowchart-v2-pointEnd)" style=";"></path><path d="M349.642,154.138L360.833,156.838C372.024,159.538,394.407,164.938,411.181,167.638C427.956,170.338,439.122,170.338,444.706,170.338L450.289,170.338" id="gd18-L_SH_C2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SH_C2_0" data-points="W3sieCI6MzQ5LjY0MTk2MTczOTU0MzcsInkiOjE1NC4xMzc1fSx7IngiOjQxNi43ODkwNjI1LCJ5IjoxNzAuMzM3NX0seyJ4Ijo0NTQuMjg5MDYyNSwieSI6MTcwLjMzNzV9XQ==" data-look="classic" marker-end="url(#gd18_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_SH_C1_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_SH_C2_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g></g><g class="nodes"><g class="node default " id="gd18-flowchart-SH-4" data-look="classic" transform="translate(212.39453125, 121.025)"><rect class="basic label-container" x="-166.89453125" y="-33.1125" width="333.7890625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Scan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> operators</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(exchange</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> reuse</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> cache/persist)</tspan></tspan></text></g></g></g><g class="node default " id="gd18-flowchart-C1-5" data-look="classic" transform="translate(520.140625, 71.7125)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g><g class="node default " id="gd18-flowchart-C2-7" data-look="classic" transform="translate(520.140625, 170.3375)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g></g></g><g class="root" transform="translate(673.4921875, 0)"><g class="clusters"><g class="cluster " id="gd18-BEFORE" data-look="classic"><rect x="8" y="8" width="571.3515625" height="234.85000000000002"></rect><g class="cluster-label " transform="translate(164.83984375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Before:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> subtree</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> computed</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> twice</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M290.137,67.313L303.889,67.313C317.641,67.313,345.145,67.313,364.48,67.313C383.815,67.313,394.982,67.313,400.565,67.313L406.148,67.313" id="gd18-L_SA_B1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SA_B1_0" data-points="W3sieCI6MjkwLjEzNjcxODc1LCJ5Ijo2Ny4zMTI1fSx7IngiOjM3Mi42NDg0Mzc1LCJ5Ijo2Ny4zMTI1fSx7IngiOjQxMC4xNDg0Mzc1LCJ5Ijo2Ny4zMTI1fV0=" data-look="classic" marker-end="url(#gd18_flowchart-v2-pointEnd)" style=";"></path><path d="M335.148,174.738L341.398,174.737C347.648,174.738,360.148,174.738,371.982,174.737C383.815,174.738,394.982,174.738,400.565,174.737L406.148,174.738" id="gd18-L_SB_B2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SB_B2_0" data-points="W3sieCI6MzM1LjE0ODQzNzUsInkiOjE3NC43Mzc1fSx7IngiOjM3Mi42NDg0Mzc1LCJ5IjoxNzQuNzM3NX0seyJ4Ijo0MTAuMTQ4NDM3NSwieSI6MTc0LjczNzV9XQ==" data-look="classic" marker-end="url(#gd18_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_SA_B1_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_SB_B2_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g></g><g class="nodes"><g class="node default " id="gd18-flowchart-SA-0" data-look="classic" transform="translate(190.32421875, 67.3125)"><rect class="basic label-container" x="-99.8125" y="-24.3125" width="199.625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Scan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> operators</tspan></tspan></text></g></g></g><g class="node default " id="gd18-flowchart-B1-1" data-look="classic" transform="translate(476, 67.3125)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g><g class="node default " id="gd18-flowchart-SB-2" data-look="classic" transform="translate(190.32421875, 174.7375)"><rect class="basic label-container" x="-144.82421875" y="-33.1125" width="289.6484375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Scan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> operators</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(same</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> subtree,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> recomputed)</tspan></tspan></text></g></g></g><g class="node default " id="gd18-flowchart-B2-3" data-look="classic" transform="translate(476, 174.7375)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g></g></g></g></g></g><defs><filter id="gd18-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd18-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd18-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#3a4a52" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(200, 0%, 0%)" stop-opacity="1"></stop></linearGradient></svg>
@@ -0,0 +1 @@
1
+ <svg id="gd17" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 1268.84375 268.1625" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 1268.84375px;"><style>#gd17{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#151b1e;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd17 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd17 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd17 .error-icon{fill:#eef1f6;}#gd17 .error-text{fill:#110e09;stroke:#110e09;}#gd17 .edge-thickness-normal{stroke-width:1px;}#gd17 .edge-thickness-thick{stroke-width:3.5px;}#gd17 .edge-pattern-solid{stroke-dasharray:0;}#gd17 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd17 .edge-pattern-dashed{stroke-dasharray:3;}#gd17 .edge-pattern-dotted{stroke-dasharray:2;}#gd17 .marker{fill:#4f5f60;stroke:#4f5f60;}#gd17 .marker.cross{stroke:#4f5f60;}#gd17 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd17 p{margin:0;}#gd17 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#151b1e;}#gd17 .cluster-label text{fill:#151b1e;}#gd17 .cluster-label span{color:#151b1e;}#gd17 .cluster-label span p{background-color:transparent;}#gd17 .label text,#gd17 span{fill:#151b1e;color:#151b1e;}#gd17 .node rect,#gd17 .node circle,#gd17 .node ellipse,#gd17 .node polygon,#gd17 .node path{fill:#ffffff;stroke:#9aa8a3;stroke-width:1px;}#gd17 .rough-node .label text,#gd17 .node .label text,#gd17 .image-shape .label,#gd17 .icon-shape .label{text-anchor:middle;}#gd17 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd17 .rough-node .label,#gd17 .node .label,#gd17 .image-shape .label,#gd17 .icon-shape .label{text-align:center;}#gd17 .node.clickable{cursor:pointer;}#gd17 .root .anchor path{fill:#4f5f60!important;stroke-width:0;stroke:#4f5f60;}#gd17 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd17 .edgePath .path{stroke:#4f5f60;stroke-width:1px;}#gd17 .flowchart-link{stroke:#4f5f60;fill:none;}#gd17 .edgeLabel{background-color:#eef1f6;text-align:center;}#gd17 .edgeLabel p{background-color:#eef1f6;}#gd17 .edgeLabel rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd17 .labelBkg{background-color:rgba(238, 241, 246, 0.5);}#gd17 .cluster rect{fill:#f2f5f9;stroke:#dbe2df;stroke-width:1px;}#gd17 .cluster text{fill:#151b1e;}#gd17 .cluster span{color:#151b1e;}#gd17 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#eef1f6;border:1px solid hsl(217.5, 0%, 84.9019607843%);border-radius:2px;pointer-events:none;z-index:100;}#gd17 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#151b1e;}#gd17 rect.text{fill:none;stroke-width:0;}#gd17 .icon-shape,#gd17 .image-shape{background-color:#eef1f6;text-align:center;}#gd17 .icon-shape p,#gd17 .image-shape p{background-color:#eef1f6;padding:2px;}#gd17 .icon-shape .label rect,#gd17 .image-shape .label rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd17 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd17 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd17 .node .neo-node{stroke:#9aa8a3;}#gd17 [data-look=&quot;neo&quot;].node rect,#gd17 [data-look=&quot;neo&quot;].cluster rect,#gd17 [data-look=&quot;neo&quot;].node polygon{stroke:url(#gd17-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd17 [data-look=&quot;neo&quot;].swimlane.cluster rect{filter:none;}#gd17 [data-look=&quot;neo&quot;].node path{stroke:url(#gd17-gradient);stroke-width:1px;}#gd17 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd17 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9aa8a3;filter:none;}#gd17 [data-look=&quot;neo&quot;].node circle{stroke:url(#gd17-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd17 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#gd17 [data-look=&quot;neo&quot;].icon-shape .icon{fill:url(#gd17-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd17 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:url(#gd17-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd17 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd17_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd17_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd17_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd17_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd17_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd17_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd17_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd17_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd17_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd17_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd17_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd17_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"></g><g class="edgeLabels"></g><g class="nodes"><g class="root" transform="translate(0, 4.400000000000006)"><g class="clusters"><g class="cluster " id="gd17-AFTER" data-look="classic"><rect x="8" y="8" width="615.4921875" height="226.05"></rect><g class="cluster-label " transform="translate(208.484375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">After:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> subtree</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shared</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> once</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M349.642,87.913L360.833,85.213C372.024,82.513,394.407,77.113,411.181,74.413C427.956,71.713,439.122,71.713,444.706,71.712L450.289,71.713" id="gd17-L_SH_C1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SH_C1_0" data-points="W3sieCI6MzQ5LjY0MTk2MTczOTU0MzcsInkiOjg3LjkxMjUwMDAwMDAwMDAxfSx7IngiOjQxNi43ODkwNjI1LCJ5Ijo3MS43MTI1fSx7IngiOjQ1NC4yODkwNjI1LCJ5Ijo3MS43MTI1fV0=" data-look="classic" marker-end="url(#gd17_flowchart-v2-pointEnd)" style=";"></path><path d="M349.642,154.138L360.833,156.838C372.024,159.538,394.407,164.938,411.181,167.638C427.956,170.338,439.122,170.338,444.706,170.338L450.289,170.338" id="gd17-L_SH_C2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SH_C2_0" data-points="W3sieCI6MzQ5LjY0MTk2MTczOTU0MzcsInkiOjE1NC4xMzc1fSx7IngiOjQxNi43ODkwNjI1LCJ5IjoxNzAuMzM3NX0seyJ4Ijo0NTQuMjg5MDYyNSwieSI6MTcwLjMzNzV9XQ==" data-look="classic" marker-end="url(#gd17_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_SH_C1_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_SH_C2_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g></g><g class="nodes"><g class="node default " id="gd17-flowchart-SH-4" data-look="classic" transform="translate(212.39453125, 121.025)"><rect class="basic label-container" x="-166.89453125" y="-33.1125" width="333.7890625" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Scan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> operators</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(exchange</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> reuse</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> cache/persist)</tspan></tspan></text></g></g></g><g class="node default " id="gd17-flowchart-C1-5" data-look="classic" transform="translate(520.140625, 71.7125)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g><g class="node default " id="gd17-flowchart-C2-7" data-look="classic" transform="translate(520.140625, 170.3375)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g></g></g><g class="root" transform="translate(673.4921875, 0)"><g class="clusters"><g class="cluster " id="gd17-BEFORE" data-look="classic"><rect x="8" y="8" width="571.3515625" height="234.85000000000002"></rect><g class="cluster-label " transform="translate(164.83984375, 8)"><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Before:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> subtree</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> computed</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> twice</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M290.137,67.313L303.889,67.313C317.641,67.313,345.145,67.313,364.48,67.313C383.815,67.313,394.982,67.313,400.565,67.313L406.148,67.313" id="gd17-L_SA_B1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SA_B1_0" data-points="W3sieCI6MjkwLjEzNjcxODc1LCJ5Ijo2Ny4zMTI1fSx7IngiOjM3Mi42NDg0Mzc1LCJ5Ijo2Ny4zMTI1fSx7IngiOjQxMC4xNDg0Mzc1LCJ5Ijo2Ny4zMTI1fV0=" data-look="classic" marker-end="url(#gd17_flowchart-v2-pointEnd)" style=";"></path><path d="M335.148,174.738L341.398,174.737C347.648,174.738,360.148,174.738,371.982,174.737C383.815,174.738,394.982,174.738,400.565,174.737L406.148,174.738" id="gd17-L_SB_B2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_SB_B2_0" data-points="W3sieCI6MzM1LjE0ODQzNzUsInkiOjE3NC43Mzc1fSx7IngiOjM3Mi42NDg0Mzc1LCJ5IjoxNzQuNzM3NX0seyJ4Ijo0MTAuMTQ4NDM3NSwieSI6MTc0LjczNzV9XQ==" data-look="classic" marker-end="url(#gd17_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_SA_B1_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_SB_B2_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g></g><g class="nodes"><g class="node default " id="gd17-flowchart-SA-0" data-look="classic" transform="translate(190.32421875, 67.3125)"><rect class="basic label-container" x="-99.8125" y="-24.3125" width="199.625" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Scan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> operators</tspan></tspan></text></g></g></g><g class="node default " id="gd17-flowchart-B1-1" data-look="classic" transform="translate(476, 67.3125)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 1</tspan></tspan></text></g></g></g><g class="node default " id="gd17-flowchart-SB-2" data-look="classic" transform="translate(190.32421875, 174.7375)"><rect class="basic label-container" x="-144.82421875" y="-33.1125" width="289.6484375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Scan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> operators</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(same</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> subtree,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> recomputed)</tspan></tspan></text></g></g></g><g class="node default " id="gd17-flowchart-B2-3" data-look="classic" transform="translate(476, 174.7375)"><rect class="basic label-container" x="-65.8515625" y="-24.3125" width="131.703125" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Branch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> 2</tspan></tspan></text></g></g></g></g></g></g></g></g><defs><filter id="gd17-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd17-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd17-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9aa8a3" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(214.2857142857, 0%, 86.2745098039%)" stop-opacity="1"></stop></linearGradient></svg>