@decaf-ts/integrations 0.3.8 → 0.3.10

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 (1167) hide show
  1. package/dist/integrations.cjs +2 -1649
  2. package/dist/integrations.cjs.map +1 -0
  3. package/dist/integrations.js +2 -1885
  4. package/dist/integrations.js.map +1 -0
  5. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  6. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
  7. package/lib/cjs/blob/azure/index.cjs +2 -2
  8. package/lib/cjs/blob/azure/index.cjs.map +1 -0
  9. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
  11. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  12. package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
  13. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  14. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
  15. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  16. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
  17. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  18. package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
  19. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  20. package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
  21. package/lib/cjs/blob/core/index.cjs +2 -2
  22. package/lib/cjs/blob/core/index.cjs.map +1 -0
  23. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
  25. package/lib/cjs/blob/gcp/index.cjs +2 -2
  26. package/lib/cjs/blob/gcp/index.cjs.map +1 -0
  27. package/lib/cjs/blob/index.cjs +2 -2
  28. package/lib/cjs/blob/index.cjs.map +1 -0
  29. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  30. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +1 -0
  31. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  32. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +1 -0
  33. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  34. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +1 -0
  35. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  36. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +1 -0
  37. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  38. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +1 -0
  39. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  40. package/lib/cjs/blob/ipfs/index.cjs.map +1 -0
  41. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  42. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
  43. package/lib/cjs/blob/local/index.cjs +2 -2
  44. package/lib/cjs/blob/local/index.cjs.map +1 -0
  45. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  46. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
  47. package/lib/cjs/blob/memory/index.cjs +2 -2
  48. package/lib/cjs/blob/memory/index.cjs.map +1 -0
  49. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  50. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
  51. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  52. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
  53. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  54. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
  55. package/lib/cjs/blob/s3/index.cjs +2 -2
  56. package/lib/cjs/blob/s3/index.cjs.map +1 -0
  57. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  58. package/lib/cjs/docker/DockerComposeService.cjs.map +1 -0
  59. package/lib/cjs/docker/index.cjs +2 -2
  60. package/lib/cjs/docker/index.cjs.map +1 -0
  61. package/lib/cjs/graph/engine/constants.cjs +58 -0
  62. package/lib/cjs/graph/engine/constants.cjs.map +1 -0
  63. package/lib/cjs/graph/engine/decorators.cjs +4 -0
  64. package/lib/cjs/graph/engine/decorators.cjs.map +1 -0
  65. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +20 -0
  66. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +1 -0
  67. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +27 -0
  68. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +1 -0
  69. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +20 -0
  70. package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +1 -0
  71. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +20 -0
  72. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +1 -0
  73. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +20 -0
  74. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +1 -0
  75. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +20 -0
  76. package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +1 -0
  77. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +20 -0
  78. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +1 -0
  79. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +20 -0
  80. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +1 -0
  81. package/lib/cjs/graph/engine/errors/index.cjs +31 -0
  82. package/lib/cjs/graph/engine/errors/index.cjs.map +1 -0
  83. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +4 -0
  84. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +1 -0
  85. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +40 -0
  86. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +1 -0
  87. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +37 -0
  88. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +1 -0
  89. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +4 -0
  90. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +1 -0
  91. package/lib/cjs/graph/engine/events/index.cjs +27 -0
  92. package/lib/cjs/graph/engine/events/index.cjs.map +1 -0
  93. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +4 -0
  94. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +1 -0
  95. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +79 -0
  96. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +1 -0
  97. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +413 -0
  98. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +1 -0
  99. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +32 -0
  100. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +1 -0
  101. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +30 -0
  102. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +1 -0
  103. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +4 -0
  104. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +1 -0
  105. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +103 -0
  106. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +1 -0
  107. package/lib/cjs/graph/engine/execution/index.cjs +30 -0
  108. package/lib/cjs/graph/engine/execution/index.cjs.map +1 -0
  109. package/lib/cjs/graph/engine/index.cjs +84 -0
  110. package/lib/cjs/graph/engine/index.cjs.map +1 -0
  111. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +87 -0
  112. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +1 -0
  113. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +85 -0
  114. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +1 -0
  115. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +85 -0
  116. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +1 -0
  117. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +16 -0
  118. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +1 -0
  119. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +77 -0
  120. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +1 -0
  121. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +78 -0
  122. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +1 -0
  123. package/lib/cjs/graph/engine/loops/index.cjs +29 -0
  124. package/lib/cjs/graph/engine/loops/index.cjs.map +1 -0
  125. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +28 -0
  126. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +1 -0
  127. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +20 -0
  128. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +1 -0
  129. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +34 -0
  130. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +1 -0
  131. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +191 -0
  132. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +1 -0
  133. package/lib/cjs/graph/engine/pinning/index.cjs +27 -0
  134. package/lib/cjs/graph/engine/pinning/index.cjs.map +1 -0
  135. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +4 -0
  136. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +1 -0
  137. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +4 -0
  138. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +1 -0
  139. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +4 -0
  140. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +1 -0
  141. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +4 -0
  142. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +1 -0
  143. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +197 -0
  144. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +1 -0
  145. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +172 -0
  146. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +1 -0
  147. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +57 -0
  148. package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +1 -0
  149. package/lib/cjs/graph/engine/planning/index.cjs +30 -0
  150. package/lib/cjs/graph/engine/planning/index.cjs.map +1 -0
  151. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +44 -0
  152. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +1 -0
  153. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +27 -0
  154. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +1 -0
  155. package/lib/cjs/graph/engine/registry/index.cjs +25 -0
  156. package/lib/cjs/graph/engine/registry/index.cjs.map +1 -0
  157. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +53 -0
  158. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +1 -0
  159. package/lib/cjs/graph/engine/snapshots/index.cjs +24 -0
  160. package/lib/cjs/graph/engine/snapshots/index.cjs.map +1 -0
  161. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +4 -0
  162. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +1 -0
  163. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +4 -0
  164. package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +1 -0
  165. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +76 -0
  166. package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +1 -0
  167. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +4 -0
  168. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +1 -0
  169. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +69 -0
  170. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +1 -0
  171. package/lib/cjs/graph/engine/store/index.cjs +28 -0
  172. package/lib/cjs/graph/engine/store/index.cjs.map +1 -0
  173. package/lib/cjs/graph/engine/types.cjs +4 -0
  174. package/lib/cjs/graph/engine/types.cjs.map +1 -0
  175. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +33 -0
  176. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +1 -0
  177. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +58 -0
  178. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +1 -0
  179. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +52 -0
  180. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +1 -0
  181. package/lib/cjs/graph/engine/validation/index.cjs +26 -0
  182. package/lib/cjs/graph/engine/validation/index.cjs.map +1 -0
  183. package/lib/cjs/graph/index.cjs +10 -60
  184. package/lib/cjs/graph/index.cjs.map +1 -0
  185. package/lib/cjs/graph/shared/constants.cjs +44 -0
  186. package/lib/cjs/graph/shared/constants.cjs.map +1 -0
  187. package/lib/cjs/graph/shared/index.cjs +38 -0
  188. package/lib/cjs/graph/shared/index.cjs.map +1 -0
  189. package/lib/cjs/graph/shared/nodes/agent.cjs +110 -0
  190. package/lib/cjs/graph/shared/nodes/agent.cjs.map +1 -0
  191. package/lib/cjs/graph/shared/nodes/base.cjs +36 -0
  192. package/lib/cjs/graph/shared/nodes/base.cjs.map +1 -0
  193. package/lib/cjs/graph/shared/nodes/category-styles.cjs +38 -0
  194. package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +1 -0
  195. package/lib/cjs/graph/shared/nodes/flow-control.cjs +464 -0
  196. package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +1 -0
  197. package/lib/cjs/graph/shared/nodes/index.cjs +35 -0
  198. package/lib/cjs/graph/shared/nodes/index.cjs.map +1 -0
  199. package/lib/cjs/graph/shared/nodes/triggers.cjs +250 -0
  200. package/lib/cjs/graph/shared/nodes/triggers.cjs.map +1 -0
  201. package/lib/cjs/graph/shared/types.cjs +4 -0
  202. package/lib/cjs/graph/shared/types.cjs.map +1 -0
  203. package/lib/cjs/index.cjs +5 -5
  204. package/lib/cjs/index.cjs.map +1 -0
  205. package/lib/cjs/keycloak/index.cjs +2 -2
  206. package/lib/cjs/keycloak/index.cjs.map +1 -0
  207. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  208. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -0
  209. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  210. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -0
  211. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  212. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -0
  213. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  214. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -0
  215. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  216. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -0
  217. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  218. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -0
  219. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  220. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -0
  221. package/lib/cjs/keycloak/services/index.cjs +2 -2
  222. package/lib/cjs/keycloak/services/index.cjs.map +1 -0
  223. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  224. package/lib/cjs/keycloak/services/runtime.cjs.map +1 -0
  225. package/lib/cjs/keycloak/types.cjs +2 -2
  226. package/lib/cjs/keycloak/types.cjs.map +1 -0
  227. package/lib/cjs/kibana/helpers.cjs +2 -2
  228. package/lib/cjs/kibana/helpers.cjs.map +1 -0
  229. package/lib/cjs/kibana/index.cjs +2 -2
  230. package/lib/cjs/kibana/index.cjs.map +1 -0
  231. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  232. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -0
  233. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  234. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -0
  235. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  236. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -0
  237. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  238. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -0
  239. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  240. package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -0
  241. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  242. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -0
  243. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  244. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -0
  245. package/lib/cjs/kibana/services/index.cjs +2 -2
  246. package/lib/cjs/kibana/services/index.cjs.map +1 -0
  247. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  248. package/lib/cjs/kibana/services/runtime.cjs.map +1 -0
  249. package/lib/cjs/kibana/types.cjs +2 -2
  250. package/lib/cjs/kibana/types.cjs.map +1 -0
  251. package/lib/cjs/namespaces/index.cjs +2 -2
  252. package/lib/cjs/namespaces/index.cjs.map +1 -0
  253. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  254. package/lib/cjs/namespaces/models/authorization-model.cjs.map +1 -0
  255. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  256. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -0
  257. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  258. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -0
  259. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  260. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -0
  261. package/lib/cjs/namespaces/models/index.cjs +2 -2
  262. package/lib/cjs/namespaces/models/index.cjs.map +1 -0
  263. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  264. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -0
  265. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  266. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -0
  267. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  268. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -0
  269. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  270. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -0
  271. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  272. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -0
  273. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  274. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -0
  275. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  276. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -0
  277. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  278. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -0
  279. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  280. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -0
  281. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  282. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -0
  283. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  284. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -0
  285. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  286. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -0
  287. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  288. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -0
  289. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  290. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -0
  291. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  292. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -0
  293. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  294. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -0
  295. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  296. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -0
  297. package/lib/cjs/namespaces/org-based-authorization-system.cjs +10 -4
  298. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +1 -0
  299. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  300. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +1 -0
  301. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +19 -10
  302. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +1 -0
  303. package/lib/cjs/namespaces/services/authz.service.cjs +39 -13
  304. package/lib/cjs/namespaces/services/authz.service.cjs.map +1 -0
  305. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  306. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +1 -0
  307. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  308. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +1 -0
  309. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  310. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +1 -0
  311. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  312. package/lib/cjs/namespaces/services/group.service.cjs.map +1 -0
  313. package/lib/cjs/namespaces/services/index.cjs +2 -2
  314. package/lib/cjs/namespaces/services/index.cjs.map +1 -0
  315. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +6 -4
  316. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +1 -0
  317. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +16 -7
  318. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +1 -0
  319. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  320. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +1 -0
  321. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  322. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +1 -0
  323. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  324. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +1 -0
  325. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  326. package/lib/cjs/namespaces/services/permission.service.cjs.map +1 -0
  327. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  328. package/lib/cjs/namespaces/services/principal.service.cjs.map +1 -0
  329. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  330. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +1 -0
  331. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  332. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +1 -0
  333. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  334. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +1 -0
  335. package/lib/cjs/namespaces/services/role-assignment.service.cjs +4 -3
  336. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +1 -0
  337. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  338. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +1 -0
  339. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  340. package/lib/cjs/namespaces/services/role.service.cjs.map +1 -0
  341. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  342. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +1 -0
  343. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  344. package/lib/cjs/namespaces/services/system-management.service.cjs.map +1 -0
  345. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  346. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +1 -0
  347. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  348. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +1 -0
  349. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  350. package/lib/cjs/namespaces/services/tenant.service.cjs.map +1 -0
  351. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  352. package/lib/cjs/namespaces/services/user.service.cjs.map +1 -0
  353. package/lib/cjs/namespaces/types.cjs +2 -2
  354. package/lib/cjs/namespaces/types.cjs.map +1 -0
  355. package/lib/cjs/namespaces/utils.cjs +13 -5
  356. package/lib/cjs/namespaces/utils.cjs.map +1 -0
  357. package/lib/cjs/nest/authService.cjs +2 -2
  358. package/lib/cjs/nest/authService.cjs.map +1 -0
  359. package/lib/cjs/nest/graph/GraphExecutionController.cjs +2 -2
  360. package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +1 -0
  361. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +6 -4
  362. package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +1 -0
  363. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -2
  364. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +1 -0
  365. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +2 -2
  366. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs.map +1 -0
  367. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +97 -11
  368. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +1 -0
  369. package/lib/cjs/nest/graph/index.cjs +2 -2
  370. package/lib/cjs/nest/graph/index.cjs.map +1 -0
  371. package/lib/cjs/nest/graph/main.cjs +30 -0
  372. package/lib/cjs/nest/graph/main.cjs.map +1 -0
  373. package/lib/cjs/nest/index.cjs +2 -2
  374. package/lib/cjs/nest/index.cjs.map +1 -0
  375. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  376. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -0
  377. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  378. package/lib/cjs/nest/keycloakModule.cjs.map +1 -0
  379. package/lib/cjs/nest/logging.cjs +2 -2
  380. package/lib/cjs/nest/logging.cjs.map +1 -0
  381. package/lib/cjs/nest/types.cjs +2 -2
  382. package/lib/cjs/nest/types.cjs.map +1 -0
  383. package/lib/cjs/nest/utils.cjs +2 -2
  384. package/lib/cjs/nest/utils.cjs.map +1 -0
  385. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  386. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -0
  387. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  388. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +1 -0
  389. package/lib/cjs/secrets/aws/index.cjs +2 -2
  390. package/lib/cjs/secrets/aws/index.cjs.map +1 -0
  391. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  392. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -0
  393. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  394. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +1 -0
  395. package/lib/cjs/secrets/azure/index.cjs +2 -2
  396. package/lib/cjs/secrets/azure/index.cjs.map +1 -0
  397. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  398. package/lib/cjs/secrets/core/SecretErrors.cjs.map +1 -0
  399. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  400. package/lib/cjs/secrets/core/SecretName.cjs.map +1 -0
  401. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  402. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -0
  403. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  404. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +1 -0
  405. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  406. package/lib/cjs/secrets/core/SecretService.cjs.map +1 -0
  407. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  408. package/lib/cjs/secrets/core/SecretTypes.cjs.map +1 -0
  409. package/lib/cjs/secrets/core/index.cjs +2 -2
  410. package/lib/cjs/secrets/core/index.cjs.map +1 -0
  411. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  412. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -0
  413. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  414. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +1 -0
  415. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  416. package/lib/cjs/secrets/gcp/index.cjs.map +1 -0
  417. package/lib/cjs/secrets/index.cjs +2 -2
  418. package/lib/cjs/secrets/index.cjs.map +1 -0
  419. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  420. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +1 -0
  421. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  422. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -0
  423. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  424. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +1 -0
  425. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  426. package/lib/cjs/secrets/model/Secret.cjs.map +1 -0
  427. package/lib/cjs/secrets/model/index.cjs +2 -2
  428. package/lib/cjs/secrets/model/index.cjs.map +1 -0
  429. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  430. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -0
  431. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  432. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +1 -0
  433. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  434. package/lib/cjs/secrets/onepassword/index.cjs.map +1 -0
  435. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  436. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -0
  437. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  438. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +1 -0
  439. package/lib/cjs/secrets/vault/index.cjs +2 -2
  440. package/lib/cjs/secrets/vault/index.cjs.map +1 -0
  441. package/lib/cjs/shared/runtime.cjs +2 -2
  442. package/lib/cjs/shared/runtime.cjs.map +1 -0
  443. package/lib/cjs/utils.cjs +2 -2
  444. package/lib/cjs/utils.cjs.map +1 -0
  445. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  446. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
  447. package/lib/esm/blob/azure/index.js +1 -1
  448. package/lib/esm/blob/azure/index.js.map +1 -0
  449. package/lib/esm/blob/core/BlobErrors.js +1 -1
  450. package/lib/esm/blob/core/BlobErrors.js.map +1 -0
  451. package/lib/esm/blob/core/BlobKey.js +1 -1
  452. package/lib/esm/blob/core/BlobKey.js.map +1 -0
  453. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  454. package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
  455. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  456. package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
  457. package/lib/esm/blob/core/BlobTypes.js +1 -1
  458. package/lib/esm/blob/core/BlobTypes.js.map +1 -0
  459. package/lib/esm/blob/core/BlobValue.js +1 -1
  460. package/lib/esm/blob/core/BlobValue.js.map +1 -0
  461. package/lib/esm/blob/core/index.js +1 -1
  462. package/lib/esm/blob/core/index.js.map +1 -0
  463. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  464. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
  465. package/lib/esm/blob/gcp/index.js +1 -1
  466. package/lib/esm/blob/gcp/index.js.map +1 -0
  467. package/lib/esm/blob/index.js +1 -1
  468. package/lib/esm/blob/index.js.map +1 -0
  469. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  470. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +1 -0
  471. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  472. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +1 -0
  473. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  474. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +1 -0
  475. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  476. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +1 -0
  477. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  478. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +1 -0
  479. package/lib/esm/blob/ipfs/index.js +1 -1
  480. package/lib/esm/blob/ipfs/index.js.map +1 -0
  481. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  482. package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
  483. package/lib/esm/blob/local/index.js +1 -1
  484. package/lib/esm/blob/local/index.js.map +1 -0
  485. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  486. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
  487. package/lib/esm/blob/memory/index.js +1 -1
  488. package/lib/esm/blob/memory/index.js.map +1 -0
  489. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  490. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
  491. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  492. package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
  493. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  494. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
  495. package/lib/esm/blob/s3/index.js +1 -1
  496. package/lib/esm/blob/s3/index.js.map +1 -0
  497. package/lib/esm/docker/DockerComposeService.js +1 -1
  498. package/lib/esm/docker/DockerComposeService.js.map +1 -0
  499. package/lib/esm/docker/index.js +1 -1
  500. package/lib/esm/docker/index.js.map +1 -0
  501. package/lib/esm/graph/engine/constants.js +62 -0
  502. package/lib/esm/graph/engine/constants.js.map +1 -0
  503. package/lib/esm/graph/engine/decorators.js +2 -0
  504. package/lib/esm/graph/engine/decorators.js.map +1 -0
  505. package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
  506. package/lib/esm/graph/engine/errors/GraphCycleError.js.map +1 -0
  507. package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
  508. package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +1 -0
  509. package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
  510. package/lib/esm/graph/engine/errors/GraphInputError.js.map +1 -0
  511. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
  512. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +1 -0
  513. package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
  514. package/lib/esm/graph/engine/errors/GraphPinningError.js.map +1 -0
  515. package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
  516. package/lib/esm/graph/engine/errors/GraphPortError.js.map +1 -0
  517. package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
  518. package/lib/esm/graph/engine/errors/GraphStoreError.js.map +1 -0
  519. package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
  520. package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +1 -0
  521. package/lib/esm/graph/engine/errors/index.js +14 -0
  522. package/lib/esm/graph/engine/errors/index.js.map +1 -0
  523. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
  524. package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +1 -0
  525. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
  526. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +1 -0
  527. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
  528. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +1 -0
  529. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
  530. package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +1 -0
  531. package/lib/esm/graph/engine/events/index.js +10 -0
  532. package/lib/esm/graph/engine/events/index.js.map +1 -0
  533. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
  534. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +1 -0
  535. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
  536. package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +1 -0
  537. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +408 -0
  538. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +1 -0
  539. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
  540. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +1 -0
  541. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
  542. package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +1 -0
  543. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
  544. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +1 -0
  545. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
  546. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +1 -0
  547. package/lib/esm/graph/engine/execution/index.js +13 -0
  548. package/lib/esm/graph/engine/execution/index.js.map +1 -0
  549. package/lib/esm/graph/engine/index.js +67 -0
  550. package/lib/esm/graph/engine/index.js.map +1 -0
  551. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
  552. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +1 -0
  553. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
  554. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +1 -0
  555. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
  556. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +1 -0
  557. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
  558. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +1 -0
  559. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
  560. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +1 -0
  561. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
  562. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +1 -0
  563. package/lib/esm/graph/engine/loops/index.js +12 -0
  564. package/lib/esm/graph/engine/loops/index.js.map +1 -0
  565. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
  566. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +1 -0
  567. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
  568. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +1 -0
  569. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
  570. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +1 -0
  571. package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
  572. package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +1 -0
  573. package/lib/esm/graph/engine/pinning/index.js +10 -0
  574. package/lib/esm/graph/engine/pinning/index.js.map +1 -0
  575. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
  576. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +1 -0
  577. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
  578. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +1 -0
  579. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
  580. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +1 -0
  581. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
  582. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +1 -0
  583. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
  584. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +1 -0
  585. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
  586. package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +1 -0
  587. package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
  588. package/lib/esm/graph/engine/planning/GraphTopology.js.map +1 -0
  589. package/lib/esm/graph/engine/planning/index.js +13 -0
  590. package/lib/esm/graph/engine/planning/index.js.map +1 -0
  591. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
  592. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +1 -0
  593. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
  594. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +1 -0
  595. package/lib/esm/graph/engine/registry/index.js +8 -0
  596. package/lib/esm/graph/engine/registry/index.js.map +1 -0
  597. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
  598. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +1 -0
  599. package/lib/esm/graph/engine/snapshots/index.js +7 -0
  600. package/lib/esm/graph/engine/snapshots/index.js.map +1 -0
  601. package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
  602. package/lib/esm/graph/engine/store/GraphCachedValue.js.map +1 -0
  603. package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
  604. package/lib/esm/graph/engine/store/GraphValueKey.js.map +1 -0
  605. package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
  606. package/lib/esm/graph/engine/store/GraphValueStore.js.map +1 -0
  607. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
  608. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +1 -0
  609. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
  610. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +1 -0
  611. package/lib/esm/graph/engine/store/index.js +11 -0
  612. package/lib/esm/graph/engine/store/index.js.map +1 -0
  613. package/lib/esm/graph/engine/types.js +2 -0
  614. package/lib/esm/graph/engine/types.js.map +1 -0
  615. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
  616. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +1 -0
  617. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
  618. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +1 -0
  619. package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
  620. package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +1 -0
  621. package/lib/esm/graph/engine/validation/index.js +9 -0
  622. package/lib/esm/graph/engine/validation/index.js.map +1 -0
  623. package/lib/esm/graph/index.js +9 -59
  624. package/lib/esm/graph/index.js.map +1 -0
  625. package/lib/esm/graph/shared/constants.js +56 -0
  626. package/lib/esm/graph/shared/constants.js.map +1 -0
  627. package/lib/esm/graph/shared/index.js +19 -0
  628. package/lib/esm/graph/shared/index.js.map +1 -0
  629. package/lib/esm/graph/shared/nodes/agent.js +101 -0
  630. package/lib/esm/graph/shared/nodes/agent.js.map +1 -0
  631. package/lib/esm/graph/shared/nodes/base.js +31 -0
  632. package/lib/esm/graph/shared/nodes/base.js.map +1 -0
  633. package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
  634. package/lib/esm/graph/shared/nodes/category-styles.js.map +1 -0
  635. package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
  636. package/lib/esm/graph/shared/nodes/flow-control.js.map +1 -0
  637. package/lib/esm/graph/shared/nodes/index.js +18 -0
  638. package/lib/esm/graph/shared/nodes/index.js.map +1 -0
  639. package/lib/esm/graph/shared/nodes/triggers.js +241 -0
  640. package/lib/esm/graph/shared/nodes/triggers.js.map +1 -0
  641. package/lib/esm/graph/shared/types.js +2 -0
  642. package/lib/esm/graph/shared/types.js.map +1 -0
  643. package/lib/esm/index.js +4 -4
  644. package/lib/esm/index.js.map +1 -0
  645. package/lib/esm/keycloak/index.js +1 -1
  646. package/lib/esm/keycloak/index.js.map +1 -0
  647. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  648. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -0
  649. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  650. package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -0
  651. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  652. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -0
  653. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  654. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -0
  655. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  656. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -0
  657. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  658. package/lib/esm/keycloak/services/KeycloakService.js.map +1 -0
  659. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  660. package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -0
  661. package/lib/esm/keycloak/services/index.js +1 -1
  662. package/lib/esm/keycloak/services/index.js.map +1 -0
  663. package/lib/esm/keycloak/services/runtime.js +1 -1
  664. package/lib/esm/keycloak/services/runtime.js.map +1 -0
  665. package/lib/esm/keycloak/types.js +1 -1
  666. package/lib/esm/keycloak/types.js.map +1 -0
  667. package/lib/esm/kibana/helpers.js +1 -1
  668. package/lib/esm/kibana/helpers.js.map +1 -0
  669. package/lib/esm/kibana/index.js +1 -1
  670. package/lib/esm/kibana/index.js.map +1 -0
  671. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  672. package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -0
  673. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  674. package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -0
  675. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  676. package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -0
  677. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  678. package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -0
  679. package/lib/esm/kibana/services/KibanaService.js +1 -1
  680. package/lib/esm/kibana/services/KibanaService.js.map +1 -0
  681. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  682. package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -0
  683. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  684. package/lib/esm/kibana/services/KibanaUserService.js.map +1 -0
  685. package/lib/esm/kibana/services/index.js +1 -1
  686. package/lib/esm/kibana/services/index.js.map +1 -0
  687. package/lib/esm/kibana/services/runtime.js +1 -1
  688. package/lib/esm/kibana/services/runtime.js.map +1 -0
  689. package/lib/esm/kibana/types.js +1 -1
  690. package/lib/esm/kibana/types.js.map +1 -0
  691. package/lib/esm/namespaces/index.js +1 -1
  692. package/lib/esm/namespaces/index.js.map +1 -0
  693. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  694. package/lib/esm/namespaces/models/authorization-model.js.map +1 -0
  695. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  696. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -0
  697. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  698. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -0
  699. package/lib/esm/namespaces/models/group.model.js +1 -1
  700. package/lib/esm/namespaces/models/group.model.js.map +1 -0
  701. package/lib/esm/namespaces/models/index.js +1 -1
  702. package/lib/esm/namespaces/models/index.js.map +1 -0
  703. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  704. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -0
  705. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  706. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -0
  707. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  708. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -0
  709. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  710. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -0
  711. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  712. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -0
  713. package/lib/esm/namespaces/models/permission.model.js +1 -1
  714. package/lib/esm/namespaces/models/permission.model.js.map +1 -0
  715. package/lib/esm/namespaces/models/principal.model.js +1 -1
  716. package/lib/esm/namespaces/models/principal.model.js.map +1 -0
  717. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  718. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -0
  719. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  720. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -0
  721. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  722. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -0
  723. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  724. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -0
  725. package/lib/esm/namespaces/models/role.model.js +1 -1
  726. package/lib/esm/namespaces/models/role.model.js.map +1 -0
  727. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  728. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -0
  729. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  730. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -0
  731. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  732. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -0
  733. package/lib/esm/namespaces/models/tenant.model.js +3 -3
  734. package/lib/esm/namespaces/models/tenant.model.js.map +1 -0
  735. package/lib/esm/namespaces/models/user.model.js +1 -1
  736. package/lib/esm/namespaces/models/user.model.js.map +1 -0
  737. package/lib/esm/namespaces/org-based-authorization-system.js +10 -4
  738. package/lib/esm/namespaces/org-based-authorization-system.js.map +1 -0
  739. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  740. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +1 -0
  741. package/lib/esm/namespaces/org-based-authorization-system.services.js +18 -9
  742. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +1 -0
  743. package/lib/esm/namespaces/services/authz.service.js +40 -14
  744. package/lib/esm/namespaces/services/authz.service.js.map +1 -0
  745. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  746. package/lib/esm/namespaces/services/bootstrap.service.js.map +1 -0
  747. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  748. package/lib/esm/namespaces/services/effective-permission.service.js.map +1 -0
  749. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  750. package/lib/esm/namespaces/services/group-membership.service.js.map +1 -0
  751. package/lib/esm/namespaces/services/group.service.js +1 -1
  752. package/lib/esm/namespaces/services/group.service.js.map +1 -0
  753. package/lib/esm/namespaces/services/index.js +1 -1
  754. package/lib/esm/namespaces/services/index.js.map +1 -0
  755. package/lib/esm/namespaces/services/inheritance-block.service.js +5 -3
  756. package/lib/esm/namespaces/services/inheritance-block.service.js.map +1 -0
  757. package/lib/esm/namespaces/services/org-unit-closure.service.js +16 -7
  758. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +1 -0
  759. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  760. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +1 -0
  761. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  762. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +1 -0
  763. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  764. package/lib/esm/namespaces/services/org-unit.service.js.map +1 -0
  765. package/lib/esm/namespaces/services/permission.service.js +1 -1
  766. package/lib/esm/namespaces/services/permission.service.js.map +1 -0
  767. package/lib/esm/namespaces/services/principal.service.js +1 -1
  768. package/lib/esm/namespaces/services/principal.service.js.map +1 -0
  769. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  770. package/lib/esm/namespaces/services/protected-resource.service.js.map +1 -0
  771. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  772. package/lib/esm/namespaces/services/resource-grant.service.js.map +1 -0
  773. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  774. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +1 -0
  775. package/lib/esm/namespaces/services/role-assignment.service.js +3 -2
  776. package/lib/esm/namespaces/services/role-assignment.service.js.map +1 -0
  777. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  778. package/lib/esm/namespaces/services/role-permission.service.js.map +1 -0
  779. package/lib/esm/namespaces/services/role.service.js +1 -1
  780. package/lib/esm/namespaces/services/role.service.js.map +1 -0
  781. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  782. package/lib/esm/namespaces/services/storage-binding.service.js.map +1 -0
  783. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  784. package/lib/esm/namespaces/services/system-management.service.js.map +1 -0
  785. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  786. package/lib/esm/namespaces/services/tenant-membership.service.js.map +1 -0
  787. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  788. package/lib/esm/namespaces/services/tenant-profile.service.js.map +1 -0
  789. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  790. package/lib/esm/namespaces/services/tenant.service.js.map +1 -0
  791. package/lib/esm/namespaces/services/user.service.js +1 -1
  792. package/lib/esm/namespaces/services/user.service.js.map +1 -0
  793. package/lib/esm/namespaces/types.js +1 -1
  794. package/lib/esm/namespaces/types.js.map +1 -0
  795. package/lib/esm/namespaces/utils.js +12 -4
  796. package/lib/esm/namespaces/utils.js.map +1 -0
  797. package/lib/esm/nest/authService.js +1 -1
  798. package/lib/esm/nest/authService.js.map +1 -0
  799. package/lib/esm/nest/graph/GraphExecutionController.js +1 -1
  800. package/lib/esm/nest/graph/GraphExecutionController.js.map +1 -0
  801. package/lib/esm/nest/graph/GraphExecutionModule.js +6 -4
  802. package/lib/esm/nest/graph/GraphExecutionModule.js.map +1 -0
  803. package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -1
  804. package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +1 -0
  805. package/lib/esm/nest/graph/GraphExecutionResultRepository.js +1 -1
  806. package/lib/esm/nest/graph/GraphExecutionResultRepository.js.map +1 -0
  807. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +96 -11
  808. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +1 -0
  809. package/lib/esm/nest/graph/index.js +1 -1
  810. package/lib/esm/nest/graph/index.js.map +1 -0
  811. package/lib/esm/nest/graph/main.js +27 -0
  812. package/lib/esm/nest/graph/main.js.map +1 -0
  813. package/lib/esm/nest/index.js +1 -1
  814. package/lib/esm/nest/index.js.map +1 -0
  815. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  816. package/lib/esm/nest/keycloakAuthHandler.js.map +1 -0
  817. package/lib/esm/nest/keycloakModule.js +1 -1
  818. package/lib/esm/nest/keycloakModule.js.map +1 -0
  819. package/lib/esm/nest/logging.js +1 -1
  820. package/lib/esm/nest/logging.js.map +1 -0
  821. package/lib/esm/nest/types.js +1 -1
  822. package/lib/esm/nest/types.js.map +1 -0
  823. package/lib/esm/nest/utils.js +1 -1
  824. package/lib/esm/nest/utils.js.map +1 -0
  825. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  826. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -0
  827. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  828. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +1 -0
  829. package/lib/esm/secrets/aws/index.js +1 -1
  830. package/lib/esm/secrets/aws/index.js.map +1 -0
  831. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  832. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -0
  833. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  834. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +1 -0
  835. package/lib/esm/secrets/azure/index.js +1 -1
  836. package/lib/esm/secrets/azure/index.js.map +1 -0
  837. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  838. package/lib/esm/secrets/core/SecretErrors.js.map +1 -0
  839. package/lib/esm/secrets/core/SecretName.js +1 -1
  840. package/lib/esm/secrets/core/SecretName.js.map +1 -0
  841. package/lib/esm/secrets/core/SecretReference.js +1 -1
  842. package/lib/esm/secrets/core/SecretReference.js.map +1 -0
  843. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  844. package/lib/esm/secrets/core/SecretSerialization.js.map +1 -0
  845. package/lib/esm/secrets/core/SecretService.js +1 -1
  846. package/lib/esm/secrets/core/SecretService.js.map +1 -0
  847. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  848. package/lib/esm/secrets/core/SecretTypes.js.map +1 -0
  849. package/lib/esm/secrets/core/index.js +1 -1
  850. package/lib/esm/secrets/core/index.js.map +1 -0
  851. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  852. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -0
  853. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  854. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +1 -0
  855. package/lib/esm/secrets/gcp/index.js +1 -1
  856. package/lib/esm/secrets/gcp/index.js.map +1 -0
  857. package/lib/esm/secrets/index.js +1 -1
  858. package/lib/esm/secrets/index.js.map +1 -0
  859. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  860. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +1 -0
  861. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  862. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -0
  863. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  864. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +1 -0
  865. package/lib/esm/secrets/model/Secret.js +1 -1
  866. package/lib/esm/secrets/model/Secret.js.map +1 -0
  867. package/lib/esm/secrets/model/index.js +1 -1
  868. package/lib/esm/secrets/model/index.js.map +1 -0
  869. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  870. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -0
  871. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  872. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +1 -0
  873. package/lib/esm/secrets/onepassword/index.js +1 -1
  874. package/lib/esm/secrets/onepassword/index.js.map +1 -0
  875. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  876. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -0
  877. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  878. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +1 -0
  879. package/lib/esm/secrets/vault/index.js +1 -1
  880. package/lib/esm/secrets/vault/index.js.map +1 -0
  881. package/lib/esm/shared/runtime.js +1 -1
  882. package/lib/esm/shared/runtime.js.map +1 -0
  883. package/lib/esm/utils.js +1 -1
  884. package/lib/esm/utils.js.map +1 -0
  885. package/lib/types/graph/engine/constants.d.cts +59 -0
  886. package/lib/types/graph/engine/constants.d.mts +59 -0
  887. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
  888. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
  889. package/lib/types/graph/engine/index.d.cts +61 -0
  890. package/lib/types/graph/engine/index.d.mts +61 -0
  891. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
  892. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
  893. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
  894. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
  895. package/lib/types/graph/{types.d.cts → engine/types.d.cts} +12 -148
  896. package/lib/types/graph/{types.d.mts → engine/types.d.mts} +12 -148
  897. package/lib/types/graph/index.d.cts +8 -53
  898. package/lib/types/graph/index.d.mts +8 -53
  899. package/lib/types/graph/shared/constants.d.cts +53 -0
  900. package/lib/types/graph/shared/constants.d.mts +53 -0
  901. package/lib/types/graph/shared/index.d.cts +18 -0
  902. package/lib/types/graph/shared/index.d.mts +18 -0
  903. package/lib/types/graph/shared/types.d.cts +162 -0
  904. package/lib/types/graph/shared/types.d.mts +162 -0
  905. package/lib/types/index.d.cts +2 -2
  906. package/lib/types/index.d.mts +2 -2
  907. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +33 -5
  908. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +33 -5
  909. package/lib/types/nest/graph/main.d.cts +1 -0
  910. package/lib/types/nest/graph/main.d.mts +1 -0
  911. package/package.json +19 -8
  912. package/lib/cjs/graph/constants.cjs +0 -94
  913. package/lib/cjs/graph/decorators.cjs +0 -4
  914. package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
  915. package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
  916. package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
  917. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
  918. package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
  919. package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
  920. package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
  921. package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
  922. package/lib/cjs/graph/errors/index.cjs +0 -31
  923. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
  924. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
  925. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
  926. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
  927. package/lib/cjs/graph/events/index.cjs +0 -27
  928. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
  929. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
  930. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
  931. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
  932. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
  933. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
  934. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
  935. package/lib/cjs/graph/execution/index.cjs +0 -30
  936. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
  937. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
  938. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
  939. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
  940. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
  941. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
  942. package/lib/cjs/graph/loops/index.cjs +0 -29
  943. package/lib/cjs/graph/nodes/agent.cjs +0 -110
  944. package/lib/cjs/graph/nodes/base.cjs +0 -35
  945. package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
  946. package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
  947. package/lib/cjs/graph/nodes/index.cjs +0 -35
  948. package/lib/cjs/graph/nodes/triggers.cjs +0 -250
  949. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
  950. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
  951. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
  952. package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
  953. package/lib/cjs/graph/pinning/index.cjs +0 -27
  954. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
  955. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
  956. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
  957. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
  958. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
  959. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
  960. package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
  961. package/lib/cjs/graph/planning/index.cjs +0 -30
  962. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
  963. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
  964. package/lib/cjs/graph/registry/index.cjs +0 -25
  965. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
  966. package/lib/cjs/graph/snapshots/index.cjs +0 -24
  967. package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
  968. package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
  969. package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
  970. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
  971. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
  972. package/lib/cjs/graph/store/index.cjs +0 -28
  973. package/lib/cjs/graph/types.cjs +0 -4
  974. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
  975. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
  976. package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
  977. package/lib/cjs/graph/validation/index.cjs +0 -26
  978. package/lib/esm/graph/constants.js +0 -106
  979. package/lib/esm/graph/decorators.js +0 -2
  980. package/lib/esm/graph/errors/GraphCycleError.js +0 -15
  981. package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
  982. package/lib/esm/graph/errors/GraphInputError.js +0 -15
  983. package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
  984. package/lib/esm/graph/errors/GraphPinningError.js +0 -15
  985. package/lib/esm/graph/errors/GraphPortError.js +0 -15
  986. package/lib/esm/graph/errors/GraphStoreError.js +0 -15
  987. package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
  988. package/lib/esm/graph/errors/index.js +0 -14
  989. package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
  990. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
  991. package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
  992. package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
  993. package/lib/esm/graph/events/index.js +0 -10
  994. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
  995. package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
  996. package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
  997. package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
  998. package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
  999. package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
  1000. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
  1001. package/lib/esm/graph/execution/index.js +0 -13
  1002. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
  1003. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
  1004. package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
  1005. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
  1006. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
  1007. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
  1008. package/lib/esm/graph/loops/index.js +0 -12
  1009. package/lib/esm/graph/nodes/agent.js +0 -101
  1010. package/lib/esm/graph/nodes/base.js +0 -30
  1011. package/lib/esm/graph/nodes/category-styles.js +0 -34
  1012. package/lib/esm/graph/nodes/flow-control.js +0 -455
  1013. package/lib/esm/graph/nodes/index.js +0 -18
  1014. package/lib/esm/graph/nodes/triggers.js +0 -241
  1015. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
  1016. package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
  1017. package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
  1018. package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
  1019. package/lib/esm/graph/pinning/index.js +0 -10
  1020. package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
  1021. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
  1022. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
  1023. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
  1024. package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
  1025. package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
  1026. package/lib/esm/graph/planning/GraphTopology.js +0 -52
  1027. package/lib/esm/graph/planning/index.js +0 -13
  1028. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
  1029. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
  1030. package/lib/esm/graph/registry/index.js +0 -8
  1031. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
  1032. package/lib/esm/graph/snapshots/index.js +0 -7
  1033. package/lib/esm/graph/store/GraphCachedValue.js +0 -2
  1034. package/lib/esm/graph/store/GraphValueKey.js +0 -7
  1035. package/lib/esm/graph/store/GraphValueStore.js +0 -71
  1036. package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
  1037. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
  1038. package/lib/esm/graph/store/index.js +0 -11
  1039. package/lib/esm/graph/types.js +0 -2
  1040. package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
  1041. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
  1042. package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
  1043. package/lib/esm/graph/validation/index.js +0 -9
  1044. package/lib/types/graph/constants.d.cts +0 -101
  1045. package/lib/types/graph/constants.d.mts +0 -101
  1046. /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
  1047. /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
  1048. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
  1049. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
  1050. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
  1051. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
  1052. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
  1053. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
  1054. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
  1055. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
  1056. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
  1057. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
  1058. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
  1059. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
  1060. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
  1061. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
  1062. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
  1063. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
  1064. /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
  1065. /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
  1066. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
  1067. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
  1068. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
  1069. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
  1070. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
  1071. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
  1072. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
  1073. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
  1074. /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
  1075. /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
  1076. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
  1077. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
  1078. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
  1079. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
  1080. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
  1081. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
  1082. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
  1083. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
  1084. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
  1085. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
  1086. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
  1087. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
  1088. /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
  1089. /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
  1090. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
  1091. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
  1092. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
  1093. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
  1094. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
  1095. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
  1096. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
  1097. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
  1098. /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
  1099. /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
  1100. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
  1101. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
  1102. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
  1103. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
  1104. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
  1105. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
  1106. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
  1107. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
  1108. /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
  1109. /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
  1110. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
  1111. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
  1112. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
  1113. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
  1114. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
  1115. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
  1116. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
  1117. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
  1118. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
  1119. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
  1120. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
  1121. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
  1122. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
  1123. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
  1124. /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
  1125. /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
  1126. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
  1127. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
  1128. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
  1129. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
  1130. /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
  1131. /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
  1132. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
  1133. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
  1134. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
  1135. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
  1136. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
  1137. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
  1138. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
  1139. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
  1140. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
  1141. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
  1142. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
  1143. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
  1144. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
  1145. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
  1146. /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
  1147. /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
  1148. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
  1149. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
  1150. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
  1151. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
  1152. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
  1153. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
  1154. /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
  1155. /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
  1156. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
  1157. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
  1158. /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
  1159. /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
  1160. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
  1161. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
  1162. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
  1163. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
  1164. /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
  1165. /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
  1166. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
  1167. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
@@ -9,10 +9,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { BaseModelService, IsolationTier, MembershipStatus, PrincipalKind, ScopeKind, StorageBindingKind, id, relationId, transactional, } from "./org-based-authorization-system.js";
11
11
  import { EffectivePermission, Group, GroupMembership, InheritanceBlock, OrgUnit, OrgUnitClosure, OrgUnitMembership, OrgUnitProfile, Permission, ProtectedResource, Principal, ResourceGrant, Role, RoleAssignment, RolePermission, StorageBinding, Tenant, TenantMembership, TenantProfile, User, } from "./org-based-authorization-system.models";
12
- const nowIso = () => new Date();
13
- const asArray = (value) => value ?? [];
12
+ //
13
+ // const nowIso = () => new Date();
14
+ // const asArray = <T>(value: T[] | undefined): T[] => value ?? [];
14
15
  const sameTenant = (rowTenant, tenantId) => relationId(rowTenant) === tenantId;
15
- const relationMatch = (value, target) => (target ? relationId(value) === target : false);
16
+ const relationMatch = (value, target) => target ? relationId(value) === target : false;
16
17
  const lowerSlug = (value) => value
17
18
  .trim()
18
19
  .toLowerCase()
@@ -130,7 +131,8 @@ export class InheritanceBlockService extends BaseModelService {
130
131
  await this.deleteById(blockId, ...args);
131
132
  }
132
133
  async listForOrgUnit(tenantId, orgUnitId, ...args) {
133
- return (await this.listAll(...args)).filter((block) => sameTenant(block.tenant, tenantId) && relationMatch(block.orgUnit, orgUnitId));
134
+ return (await this.listAll(...args)).filter((block) => sameTenant(block.tenant, tenantId) &&
135
+ relationMatch(block.orgUnit, orgUnitId));
134
136
  }
135
137
  async categoryBlockedForAncestor(tenantId, orgUnitId, ancestorOrgUnitId, category, ...args) {
136
138
  return (await this.listForOrgUnit(tenantId, orgUnitId, ...args)).some((block) => block.permissionCategory === category &&
@@ -172,7 +174,9 @@ export class OrgUnitService extends BaseModelService {
172
174
  }
173
175
  orgUnitPath(parentPath, name) {
174
176
  const segment = lowerSlug(name);
175
- return parentPath ? `${parentPath.replace(/\/+$/, "")}/${segment}` : `/${segment}`;
177
+ return parentPath
178
+ ? `${parentPath.replace(/\/+$/, "")}/${segment}`
179
+ : `/${segment}`;
176
180
  }
177
181
  async createProfileIfNeeded(orgUnitId, profileKey, profileMetadata, ...args) {
178
182
  if (!profileKey)
@@ -238,7 +242,9 @@ export class OrgUnitService extends BaseModelService {
238
242
  async renameOrgUnit(orgUnitId, name, ...args) {
239
243
  const existing = await this.getById(orgUnitId, ...args);
240
244
  return this.updateOne(orgUnitId, { name, path: this.orgUnitPath(undefined, name) }, ...args).then(async (updated) => {
241
- updated.path = existing.parent ? this.orgUnitPath(undefined, name) : this.orgUnitPath(undefined, name);
245
+ updated.path = existing.parent
246
+ ? this.orgUnitPath(undefined, name)
247
+ : this.orgUnitPath(undefined, name);
242
248
  return updated;
243
249
  });
244
250
  }
@@ -525,7 +531,9 @@ export class RoleService extends BaseModelService {
525
531
  return this.updateOne(roleId, { metadata }, ...args);
526
532
  }
527
533
  async listTenantRoles(tenantId, includeSystem = false, ...args) {
528
- return (await this.listAll(...args)).filter((role) => includeSystem ? !role.tenant || sameTenant(role.tenant, tenantId) : sameTenant(role.tenant, tenantId));
534
+ return (await this.listAll(...args)).filter((role) => includeSystem
535
+ ? !role.tenant || sameTenant(role.tenant, tenantId)
536
+ : sameTenant(role.tenant, tenantId));
529
537
  }
530
538
  }
531
539
  export class RolePermissionService extends BaseModelService {
@@ -801,7 +809,8 @@ export class ResourceGrantService extends BaseModelService {
801
809
  return (await this.listAll(...args)).filter((grant) => relationMatch(grant.resource, protectedResourceId));
802
810
  }
803
811
  async listPrincipalGrants(tenantId, principalId, ...args) {
804
- return (await this.listAll(...args)).filter((grant) => sameTenant(grant.tenant, tenantId) && relationMatch(grant.principal, principalId));
812
+ return (await this.listAll(...args)).filter((grant) => sameTenant(grant.tenant, tenantId) &&
813
+ relationMatch(grant.principal, principalId));
805
814
  }
806
815
  async hasGrant(tenantId, principalId, protectedResourceId, permissionKey, at, ...args) {
807
816
  return (await this.listPrincipalGrants(tenantId, principalId, ...args)).some((grant) => relationMatch(grant.resource, protectedResourceId) &&
@@ -1011,4 +1020,4 @@ __decorate([
1011
1020
  __metadata("design:paramtypes", [String, String, String, Object]),
1012
1021
  __metadata("design:returntype", Promise)
1013
1022
  ], SystemManagementService.prototype, "reactivateUserInTenant", null);
1014
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLnNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLnNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUVoQixhQUFhLEVBRWIsU0FBUyxFQUNULGtCQUFrQixFQUVsQixFQUFFLEVBQ0YsVUFBVSxFQUNWLGFBQWEsR0FDZCw0Q0FBeUM7QUFnQjFDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsS0FBSyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixJQUFJLEVBQ0osY0FBYyxFQUNkLGNBQWMsRUFDZCxjQUFjLEVBQ2QsTUFBTSxFQUNOLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsSUFBSSxHQUNMLE1BQU0seUNBQXlDLENBQUM7QUFFakQsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNoQyxNQUFNLE9BQU8sR0FBRyxDQUFJLEtBQXNCLEVBQU8sRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDaEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFrQixFQUFFLFFBQWdCLEVBQVcsRUFBRSxDQUNuRSxVQUFVLENBQUMsU0FBb0MsQ0FBQyxLQUFLLFFBQVEsQ0FBQztBQUNoRSxNQUFNLGFBQWEsR0FBRyxDQUNwQixLQUFjLEVBQ2QsTUFBMEIsRUFDakIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBZ0MsQ0FBQyxLQUFLLE1BQU0sQ0FB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QUFXO1FBRWQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUNwQyxrQkFBa0IsRUFDbEIsZ0JBQWdCLENBQUMsU0FBUyxFQUMxQixHQUFHLElBQUksQ0FDUixDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFHSyxBQUFOLEtBQUssQ0FBQyxzQkFBc0IsQ0FDMUIsa0JBQTBCLEVBQzFCLFFBQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLEdBQUcsSUFBVztRQUVkLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3RixNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUYsQ0FBQztDQUNGO0FBM0ZPO0lBREwsYUFBYSxFQUFFOzs7OzRFQStCZjtBQUdLO0lBREwsYUFBYSxFQUFFOzs7O2dFQWdDZjtBQUdLO0lBREwsYUFBYSxFQUFFOzs7O2tFQWFmO0FBR0s7SUFETCxhQUFhLEVBQUU7Ozs7cUVBU2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlTW9kZWxTZXJ2aWNlLFxuICBJc29sYXRpb25UaWVyLFxuICBNZW1iZXJzaGlwU3RhdHVzLFxuICBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gIFByaW5jaXBhbEtpbmQsXG4gIFJlc291cmNlVmlzaWJpbGl0eSxcbiAgU2NvcGVLaW5kLFxuICBTdG9yYWdlQmluZGluZ0tpbmQsXG4gIFN0b3JhZ2VLaW5kLFxuICBpZCxcbiAgcmVsYXRpb25JZCxcbiAgdHJhbnNhY3Rpb25hbCxcbn0gZnJvbSBcIi4vb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2lnblJvbGVJbnB1dCxcbiAgQm9vdHN0cmFwT3JnVW5pdCxcbiAgQm9vdHN0cmFwVGVtcGxhdGUsXG4gIENhbkFjY2Vzc0lucHV0LFxuICBDcmVhdGVPcmdVbml0SW5wdXQsXG4gIENyZWF0ZVBlcm1pc3Npb25JbnB1dCxcbiAgQ3JlYXRlUm9sZUlucHV0LFxuICBDcmVhdGVTdG9yYWdlQmluZGluZ0lucHV0LFxuICBDcmVhdGVUZW5hbnRJbnB1dCxcbiAgQ3JlYXRlVXNlcklucHV0LFxuICBFZmZlY3RpdmVQZXJtaXNzaW9uU25hcHNob3QsXG4gIEdyYW50UmVzb3VyY2VJbnB1dCxcbiAgUmVnaXN0ZXJSZXNvdXJjZUlucHV0LFxufSBmcm9tIFwiLi9vcmctYmFzZWQtYXV0aG9yaXphdGlvbi1zeXN0ZW1cIjtcbmltcG9ydCB7XG4gIEVmZmVjdGl2ZVBlcm1pc3Npb24sXG4gIEdyb3VwLFxuICBHcm91cE1lbWJlcnNoaXAsXG4gIEluaGVyaXRhbmNlQmxvY2ssXG4gIE9yZ1VuaXQsXG4gIE9yZ1VuaXRDbG9zdXJlLFxuICBPcmdVbml0TWVtYmVyc2hpcCxcbiAgT3JnVW5pdFByb2ZpbGUsXG4gIFBlcm1pc3Npb24sXG4gIFByb3RlY3RlZFJlc291cmNlLFxuICBQcmluY2lwYWwsXG4gIFJlc291cmNlR3JhbnQsXG4gIFJvbGUsXG4gIFJvbGVBc3NpZ25tZW50LFxuICBSb2xlUGVybWlzc2lvbixcbiAgU3RvcmFnZUJpbmRpbmcsXG4gIFRlbmFudCxcbiAgVGVuYW50TWVtYmVyc2hpcCxcbiAgVGVuYW50UHJvZmlsZSxcbiAgVXNlcixcbn0gZnJvbSBcIi4vb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLm1vZGVsc1wiO1xuXG5jb25zdCBub3dJc28gPSAoKSA9PiBuZXcgRGF0ZSgpO1xuY29uc3QgYXNBcnJheSA9IDxUPih2YWx1ZTogVFtdIHwgdW5kZWZpbmVkKTogVFtdID0+IHZhbHVlID8/IFtdO1xuY29uc3Qgc2FtZVRlbmFudCA9IChyb3dUZW5hbnQ6IHVua25vd24sIHRlbmFudElkOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIHJlbGF0aW9uSWQocm93VGVuYW50IGFzIHsgaWQ6IHN0cmluZyB9IHwgc3RyaW5nKSA9PT0gdGVuYW50SWQ7XG5jb25zdCByZWxhdGlvbk1hdGNoID0gKFxuICB2YWx1ZTogdW5rbm93bixcbiAgdGFyZ2V0OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gPT4gKHRhcmdldCA/IHJlbGF0aW9uSWQodmFsdWUgYXMgeyBpZDogc3RyaW5nIH0gfCBzdHJpbmcpID09PSB0YXJnZXQgOiBmYWxzZSk7XG5jb25zdCBsb3dlclNsdWcgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICB2YWx1ZVxuICAgIC50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csIFwiLVwiKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csIFwiXCIpIHx8IFwiaXRlbVwiO1xuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVNYW55QnlJZChcbiAgc2VydmljZTogQmFzZU1vZGVsU2VydmljZTxhbnk+LFxuICByb3dzOiBBcnJheTx7IGlkOiBzdHJpbmcgfT4sXG4gIC4uLmFyZ3M6IGFueVtdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgIGF3YWl0IHNlcnZpY2UuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRQcm9maWxlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8VGVuYW50UHJvZmlsZT4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihUZW5hbnRQcm9maWxlKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVByb2ZpbGUoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcm9maWxlS2V5OiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFRlbmFudFByb2ZpbGU+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBwcm9maWxlS2V5LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JUZW5hbnQodGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFRlbmFudFByb2ZpbGVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByb2ZpbGUpID0+XG4gICAgICByZWxhdGlvbk1hdGNoKHByb2ZpbGUudGVuYW50LCB0ZW5hbnRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9yVGVuYW50KHRlbmFudElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZGVsZXRlTWFueUJ5SWQodGhpcywgYXdhaXQgdGhpcy5saXN0Rm9yVGVuYW50KHRlbmFudElkLCAuLi5hcmdzKSwgLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRQcm9maWxlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdFByb2ZpbGU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdFByb2ZpbGUpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUHJvZmlsZShcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBwcm9maWxlS2V5OiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRQcm9maWxlPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICBwcm9maWxlS2V5LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JPcmdVbml0KG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdFByb2ZpbGVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByb2ZpbGUpID0+XG4gICAgICByZWxhdGlvbk1hdGNoKHByb2ZpbGUub3JnVW5pdCwgb3JnVW5pdElkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRDbG9zdXJlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdENsb3N1cmU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdENsb3N1cmUpO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFuY2VzdG9ycyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdENsb3N1cmVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHJvdykgPT5cbiAgICAgICAgICBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICAgIHJlbGF0aW9uTWF0Y2gocm93LmRlc2NlbmRhbnQsIG9yZ1VuaXRJZClcbiAgICAgIClcbiAgICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5kZXB0aCAtIHJpZ2h0LmRlcHRoKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3REZXNjZW5kYW50cyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdENsb3N1cmVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHJvdykgPT5cbiAgICAgICAgICBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICAgIHJlbGF0aW9uTWF0Y2gocm93LmFuY2VzdG9yLCBvcmdVbml0SWQpXG4gICAgICApXG4gICAgICAuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQuZGVwdGggLSByaWdodC5kZXB0aCk7XG4gIH1cblxuICBhc3luYyBpc0FuY2VzdG9yT2YoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBhbmNlc3Rvck9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGRlc2NlbmRhbnRPcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFuY2VzdG9ycyh0ZW5hbnRJZCwgZGVzY2VuZGFudE9yZ1VuaXRJZCwgLi4uYXJncykpLnNvbWUoXG4gICAgICAocm93KSA9PiByZWxhdGlvbk1hdGNoKHJvdy5hbmNlc3RvciwgYW5jZXN0b3JPcmdVbml0SWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlbGZMaW5rKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0Q2xvc3VyZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIGFuY2VzdG9yOiBvcmdVbml0SWQsXG4gICAgICAgIGRlc2NlbmRhbnQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgZGVwdGg6IDAsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBpbnNlcnRBbmNlc3RvckxpbmtzRm9yTmV3Q2hpbGQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwYXJlbnRPcmdVbml0SWQ6IHN0cmluZyxcbiAgICBjaGlsZE9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFuY2VzdG9yTGlua3MgPSBhd2FpdCB0aGlzLmxpc3RBbmNlc3RvcnModGVuYW50SWQsIHBhcmVudE9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBhbmNlc3RvckxpbmtzLm1hcCgobGluaykgPT5cbiAgICAgICAgdGhpcy5jcmVhdGVPbmUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgYW5jZXN0b3I6IGxpbmsuYW5jZXN0b3IsXG4gICAgICAgICAgICBkZXNjZW5kYW50OiBjaGlsZE9yZ1VuaXRJZCxcbiAgICAgICAgICAgIGRlcHRoOiBsaW5rLmRlcHRoICsgMSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVMaW5rc0ZvclN1YnRyZWUoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWJ0cmVlID0gYXdhaXQgdGhpcy5saXN0RGVzY2VuZGFudHModGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgZGVzY2VuZGFudElkcyA9IG5ldyBTZXQoW1xuICAgICAgb3JnVW5pdElkLFxuICAgICAgLi4uc3VidHJlZS5tYXAoKHJvdykgPT4gcmVsYXRpb25JZChyb3cuZGVzY2VuZGFudCkpLFxuICAgIF0pO1xuICAgIGNvbnN0IGFuY2VzdG9ySWRzID0gbmV3IFNldChbXG4gICAgICBvcmdVbml0SWQsXG4gICAgICAuLi5zdWJ0cmVlLm1hcCgocm93KSA9PiByZWxhdGlvbklkKHJvdy5hbmNlc3RvcikpLFxuICAgIF0pO1xuICAgIGNvbnN0IHJvd3MgPSAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocm93KSA9PlxuICAgICAgICBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICAoZGVzY2VuZGFudElkcy5oYXMocmVsYXRpb25JZChyb3cuZGVzY2VuZGFudCkpIHx8XG4gICAgICAgICAgYW5jZXN0b3JJZHMuaGFzKHJlbGF0aW9uSWQocm93LmFuY2VzdG9yKSkpXG4gICAgKTtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZCh0aGlzLCByb3dzLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPEluaGVyaXRhbmNlQmxvY2s+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoSW5oZXJpdGFuY2VCbG9jayk7XG4gIH1cblxuICBhc3luYyBibG9ja0NhdGVnb3J5KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbkNhdGVnb3J5OiBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgYmxvY2tlZEZyb21BbmNlc3RvcklkPzogc3RyaW5nLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEluaGVyaXRhbmNlQmxvY2s+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgIGJsb2NrZWRGcm9tQW5jZXN0b3I6IGJsb2NrZWRGcm9tQW5jZXN0b3JJZCxcbiAgICAgICAgcGVybWlzc2lvbkNhdGVnb3J5LFxuICAgICAgICByZWFzb24sXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmJsb2NrQ2F0ZWdvcnkoYmxvY2tJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChibG9ja0lkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JPcmdVbml0KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxJbmhlcml0YW5jZUJsb2NrW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKGJsb2NrKSA9PlxuICAgICAgICBzYW1lVGVuYW50KGJsb2NrLnRlbmFudCwgdGVuYW50SWQpICYmIHJlbGF0aW9uTWF0Y2goYmxvY2sub3JnVW5pdCwgb3JnVW5pdElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBjYXRlZ29yeUJsb2NrZWRGb3JBbmNlc3RvcihcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGFuY2VzdG9yT3JnVW5pdElkOiBzdHJpbmcsXG4gICAgY2F0ZWdvcnk6IFBlcm1pc3Npb25DYXRlZ29yeSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEZvck9yZ1VuaXQodGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncykpLnNvbWUoXG4gICAgICAoYmxvY2spID0+XG4gICAgICAgIGJsb2NrLnBlcm1pc3Npb25DYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgKCFibG9jay5ibG9ja2VkRnJvbUFuY2VzdG9yIHx8XG4gICAgICAgICAgcmVsYXRpb25NYXRjaChibG9jay5ibG9ja2VkRnJvbUFuY2VzdG9yLCBhbmNlc3Rvck9yZ1VuaXRJZCkpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVuYW50U2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8VGVuYW50PiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFRlbmFudCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVUZW5hbnQoaW5wdXQ6IENyZWF0ZVRlbmFudElucHV0LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VGVuYW50PiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgc2x1ZzogaW5wdXQuc2x1ZyxcbiAgICAgICAgbmFtZTogaW5wdXQubmFtZSxcbiAgICAgICAgaXNvbGF0aW9uVGllcjogaW5wdXQuaXNvbGF0aW9uVGllciA/PyBJc29sYXRpb25UaWVyLlBvb2xlZCxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJ5U2x1ZyhzbHVnOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxUZW5hbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5maW5kT25lQnkoXCJzbHVnXCIsIHNsdWcgYXMgbmV2ZXIsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lVGVuYW50KHRlbmFudElkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFRlbmFudD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZSh0ZW5hbnRJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgY2hhbmdlU2x1Zyh0ZW5hbnRJZDogc3RyaW5nLCBzbHVnOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxUZW5hbnQ+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUodGVuYW50SWQsIHsgc2x1ZyB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHNldElzb2xhdGlvblRpZXIoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBpc29sYXRpb25UaWVyOiBJc29sYXRpb25UaWVyLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8VGVuYW50PiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHRlbmFudElkLCB7IGlzb2xhdGlvblRpZXIgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBkZWxldGVUZW5hbnRDb250cm9sbGVkKHRlbmFudElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKHRlbmFudElkLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JnVW5pdFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPE9yZ1VuaXQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdCk7XG4gIH1cblxuICBwcml2YXRlIG9yZ1VuaXRQYXRoKHBhcmVudFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWdtZW50ID0gbG93ZXJTbHVnKG5hbWUpO1xuICAgIHJldHVybiBwYXJlbnRQYXRoID8gYCR7cGFyZW50UGF0aC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfS8ke3NlZ21lbnR9YCA6IGAvJHtzZWdtZW50fWA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVByb2ZpbGVJZk5lZWRlZChcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBwcm9maWxlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcHJvZmlsZU1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXByb2ZpbGVLZXkpIHJldHVybjtcbiAgICBjb25zdCBwcm9maWxlU2VydmljZSA9IG5ldyBPcmdVbml0UHJvZmlsZVNlcnZpY2UoKTtcbiAgICBhd2FpdCBwcm9maWxlU2VydmljZS5jcmVhdGVQcm9maWxlKG9yZ1VuaXRJZCwgcHJvZmlsZUtleSwgcHJvZmlsZU1ldGFkYXRhLCAuLi5hcmdzKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgY3JlYXRlUm9vdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHByb2ZpbGVLZXk/OiBzdHJpbmcsXG4gICAgcHJvZmlsZU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0PiB7XG4gICAgY29uc3Qgb3JnVW5pdCA9IGF3YWl0IHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aCh1bmRlZmluZWQsIG5hbWUpLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVByb2ZpbGVJZk5lZWRlZChvcmdVbml0LmlkLCBwcm9maWxlS2V5LCBwcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmNyZWF0ZVNlbGZMaW5rKHRlbmFudElkLCBvcmdVbml0LmlkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gb3JnVW5pdDtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgY3JlYXRlQ2hpbGQoaW5wdXQ6IENyZWF0ZU9yZ1VuaXRJbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE9yZ1VuaXQ+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBpbnB1dC5wYXJlbnRPcmdVbml0SWRcbiAgICAgID8gYXdhaXQgdGhpcy5nZXRCeUlkKGlucHV0LnBhcmVudE9yZ1VuaXRJZCwgLi4uYXJncylcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9yZ1VuaXQgPSBhd2FpdCB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogaW5wdXQudGVuYW50SWQsXG4gICAgICAgIHBhcmVudDogcGFyZW50Py5pZCA/PyBpbnB1dC5wYXJlbnRPcmdVbml0SWQsXG4gICAgICAgIG5hbWU6IGlucHV0Lm5hbWUsXG4gICAgICAgIHBhdGg6IHRoaXMub3JnVW5pdFBhdGgocGFyZW50Py5wYXRoLCBpbnB1dC5uYW1lKSxcbiAgICAgICAgbWV0YWRhdGE6IGlucHV0Lm1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlUHJvZmlsZUlmTmVlZGVkKFxuICAgICAgb3JnVW5pdC5pZCxcbiAgICAgIGlucHV0LnByb2ZpbGVLZXksXG4gICAgICBpbnB1dC5wcm9maWxlTWV0YWRhdGEsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBjbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5jcmVhdGVTZWxmTGluayhpbnB1dC50ZW5hbnRJZCwgb3JnVW5pdC5pZCwgLi4uYXJncyk7XG4gICAgaWYgKGlucHV0LnBhcmVudE9yZ1VuaXRJZCkge1xuICAgICAgYXdhaXQgY2xvc3VyZVNlcnZpY2UuaW5zZXJ0QW5jZXN0b3JMaW5rc0Zvck5ld0NoaWxkKFxuICAgICAgICBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgaW5wdXQucGFyZW50T3JnVW5pdElkLFxuICAgICAgICBvcmdVbml0LmlkLFxuICAgICAgICAuLi5hcmdzXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb3JnVW5pdDtcbiAgfVxuXG4gIGFzeW5jIGxpc3RDaGlsZHJlbihwYXJlbnRPcmdVbml0SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE9yZ1VuaXRbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG9yZ1VuaXQpID0+XG4gICAgICByZWxhdGlvbk1hdGNoKG9yZ1VuaXQucGFyZW50LCBwYXJlbnRPcmdVbml0SWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT5cbiAgICAgIHNhbWVUZW5hbnQob3JnVW5pdC50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0RGVzY2VuZGFudE9yZ1VuaXRzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgaW5jbHVkZVNlbGYgPSBmYWxzZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRbXT4ge1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gYXdhaXQgY2xvc3VyZVNlcnZpY2UubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQoZGVzY2VuZGFudHMubWFwKChyb3cpID0+IHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpKSk7XG4gICAgaWYgKGluY2x1ZGVTZWxmKSBpZHMuYWRkKG9yZ1VuaXRJZCk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT5cbiAgICAgIGlkcy5oYXMob3JnVW5pdC5pZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFuY2VzdG9yT3JnVW5pdHMoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBpbmNsdWRlU2VsZiA9IGZhbHNlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdFtdPiB7XG4gICAgY29uc3QgY2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gYXdhaXQgY2xvc3VyZVNlcnZpY2UubGlzdEFuY2VzdG9ycyh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KGFuY2VzdG9ycy5tYXAoKHJvdykgPT4gcmVsYXRpb25JZChyb3cuYW5jZXN0b3IpKSk7XG4gICAgaWYgKGluY2x1ZGVTZWxmKSBpZHMuYWRkKG9yZ1VuaXRJZCk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT5cbiAgICAgIGlkcy5oYXMob3JnVW5pdC5pZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lT3JnVW5pdChvcmdVbml0SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5nZXRCeUlkKG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKG9yZ1VuaXRJZCwgeyBuYW1lLCBwYXRoOiB0aGlzLm9yZ1VuaXRQYXRoKHVuZGVmaW5lZCwgbmFtZSkgfSwgLi4uYXJncykudGhlbihcbiAgICAgIGFzeW5jICh1cGRhdGVkKSA9PiB7XG4gICAgICAgIHVwZGF0ZWQucGF0aCA9IGV4aXN0aW5nLnBhcmVudCA/IHRoaXMub3JnVW5pdFBhdGgodW5kZWZpbmVkLCBuYW1lKSA6IHRoaXMub3JnVW5pdFBhdGgodW5kZWZpbmVkLCBuYW1lKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgbW92ZU9yZ1VuaXQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBuZXdQYXJlbnRPcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXQ+IHtcbiAgICBjb25zdCBuZXdQYXJlbnQgPSBhd2FpdCB0aGlzLmdldEJ5SWQobmV3UGFyZW50T3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuZ2V0QnlJZChvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLnVwZGF0ZU9uZShcbiAgICAgIG9yZ1VuaXRJZCxcbiAgICAgIHtcbiAgICAgICAgcGFyZW50OiBuZXdQYXJlbnQuaWQsXG4gICAgICAgIHBhdGg6IHRoaXMub3JnVW5pdFBhdGgobmV3UGFyZW50LnBhdGgsIGV4aXN0aW5nLm5hbWUpLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IHRoaXMucmVidWlsZFRlbmFudENsb3N1cmUodGVuYW50SWQsIC4uLmFyZ3MpO1xuICAgIHJldHVybiB1cGRhdGVkO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyByZWJ1aWxkVGVuYW50Q2xvc3VyZSh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGNvbnN0IGV4aXN0aW5nTGlua3MgPSBhd2FpdCBjbG9zdXJlU2VydmljZS5saXN0QWxsKC4uLmFyZ3MpO1xuICAgIGF3YWl0IGRlbGV0ZU1hbnlCeUlkKFxuICAgICAgY2xvc3VyZVNlcnZpY2UsXG4gICAgICBleGlzdGluZ0xpbmtzLmZpbHRlcigocm93KSA9PiBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcblxuICAgIGNvbnN0IG9yZ1VuaXRzID0gKGF3YWl0IHRoaXMubGlzdFRlbmFudE9yZ1VuaXRzKHRlbmFudElkLCAuLi5hcmdzKSkuc29ydCgobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgIGNvbnN0IGxlZnREZXB0aCA9IGxlZnQucGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtcbiAgICAgIGNvbnN0IHJpZ2h0RGVwdGggPSByaWdodC5wYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlZnREZXB0aCAtIHJpZ2h0RGVwdGg7XG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IG9yZ1VuaXQgb2Ygb3JnVW5pdHMpIHtcbiAgICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmNyZWF0ZVNlbGZMaW5rKHRlbmFudElkLCBvcmdVbml0LmlkLCAuLi5hcmdzKTtcbiAgICAgIGlmIChvcmdVbml0LnBhcmVudCkge1xuICAgICAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5pbnNlcnRBbmNlc3RvckxpbmtzRm9yTmV3Q2hpbGQoXG4gICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgcmVsYXRpb25JZChvcmdVbml0LnBhcmVudCksXG4gICAgICAgICAgb3JnVW5pdC5pZCxcbiAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyBkZWxldGVPcmdVbml0VHJlZSh0ZW5hbnRJZDogc3RyaW5nLCBvcmdVbml0SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICBjb25zdCBkZXNjZW5kYW50cyA9IGF3YWl0IHRoaXMubGlzdERlc2NlbmRhbnRPcmdVbml0cyh0ZW5hbnRJZCwgb3JnVW5pdElkLCB0cnVlLCAuLi5hcmdzKTtcbiAgICBjb25zdCBkZXNjZW5kYW50SWRzID0gbmV3IFNldChkZXNjZW5kYW50cy5tYXAoKG9yZ1VuaXQpID0+IG9yZ1VuaXQuaWQpKTtcbiAgICBjb25zdCBvcmdVbml0cyA9IChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT5cbiAgICAgIGRlc2NlbmRhbnRJZHMuaGFzKG9yZ1VuaXQuaWQpXG4gICAgKTtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZCh0aGlzLCBvcmdVbml0cywgLi4uYXJncyk7XG4gICAgYXdhaXQgY2xvc3VyZVNlcnZpY2UuZGVsZXRlTGlua3NGb3JTdWJ0cmVlKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8VXNlcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihVc2VyKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVVzZXIoaW5wdXQ6IENyZWF0ZVVzZXJJbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFVzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICBlbWFpbDogaW5wdXQuZW1haWwsXG4gICAgICAgIHBob25lOiBpbnB1dC5waG9uZSxcbiAgICAgICAgZGlzcGxheU5hbWU6IGlucHV0LmRpc3BsYXlOYW1lLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlFbWFpbChlbWFpbDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maW5kKCh1c2VyKSA9PiB1c2VyLmVtYWlsID09PSBlbWFpbCkgYXMgVXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURpc3BsYXlOYW1lKHVzZXJJZDogc3RyaW5nLCBkaXNwbGF5TmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZSh1c2VySWQsIHsgZGlzcGxheU5hbWUgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVFbWFpbChcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICBlbWFpbDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZSh1c2VySWQsIHsgZW1haWwgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVQaG9uZShcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICBwaG9uZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZSh1c2VySWQsIHsgcGhvbmUgfSwgLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByaW5jaXBhbFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFByaW5jaXBhbD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihQcmluY2lwYWwpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUHJpbmNpcGFsKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAga2luZDogUHJpbmNpcGFsS2luZCxcbiAgICBzdWJqZWN0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByaW5jaXBhbD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIHN1YmplY3RJZCxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZvclN1YmplY3QoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBraW5kOiBQcmluY2lwYWxLaW5kLFxuICAgIHN1YmplY3RJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJpbmNpcGFsIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbmQoXG4gICAgICAocHJpbmNpcGFsKSA9PlxuICAgICAgICBzYW1lVGVuYW50KHByaW5jaXBhbC50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICBwcmluY2lwYWwua2luZCA9PT0ga2luZCAmJlxuICAgICAgICBwcmluY2lwYWwuc3ViamVjdElkID09PSBzdWJqZWN0SWRcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0T3JDcmVhdGVGb3JTdWJqZWN0KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAga2luZDogUHJpbmNpcGFsS2luZCxcbiAgICBzdWJqZWN0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByaW5jaXBhbD4ge1xuICAgIHJldHVybiAoXG4gICAgICAoYXdhaXQgdGhpcy5nZXRGb3JTdWJqZWN0KHRlbmFudElkLCBraW5kLCBzdWJqZWN0SWQsIC4uLmFyZ3MpKSA/P1xuICAgICAgKGF3YWl0IHRoaXMuY3JlYXRlUHJpbmNpcGFsKHRlbmFudElkLCBraW5kLCBzdWJqZWN0SWQsIC4uLmFyZ3MpKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRVc2VyUHJpbmNpcGFsKHRlbmFudElkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8UHJpbmNpcGFsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3JDcmVhdGVGb3JTdWJqZWN0KHRlbmFudElkLCBQcmluY2lwYWxLaW5kLlVzZXIsIHVzZXJJZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBnZXRHcm91cFByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxQcmluY2lwYWw+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRPckNyZWF0ZUZvclN1YmplY3QodGVuYW50SWQsIFByaW5jaXBhbEtpbmQuR3JvdXAsIGdyb3VwSWQsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRNZW1iZXJzaGlwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8VGVuYW50TWVtYmVyc2hpcD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihUZW5hbnRNZW1iZXJzaGlwKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFVzZXJUb1RlbmFudChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyA9IE1lbWJlcnNoaXBTdGF0dXMuQWN0aXZlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8VGVuYW50TWVtYmVyc2hpcD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIHVzZXI6IHVzZXJJZCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2V0U3RhdHVzKFxuICAgIG1lbWJlcnNoaXBJZDogc3RyaW5nLFxuICAgIHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFRlbmFudE1lbWJlcnNoaXA+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUobWVtYmVyc2hpcElkLCB7IHN0YXR1cyB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RVc2VyVGVuYW50cyh1c2VySWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFRlbmFudE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+XG4gICAgICByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAudXNlciwgdXNlcklkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0VGVuYW50VXNlcnModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFRlbmFudE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+XG4gICAgICBzYW1lVGVuYW50KG1lbWJlcnNoaXAudGVuYW50LCB0ZW5hbnRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlVXNlckZyb21UZW5hbnQobWVtYmVyc2hpcElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKG1lbWJlcnNoaXBJZCwgLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRNZW1iZXJzaGlwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdE1lbWJlcnNoaXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdE1lbWJlcnNoaXApO1xuICB9XG5cbiAgYXN5bmMgYWRkVXNlclRvT3JnVW5pdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyA9IE1lbWJlcnNoaXBTdGF0dXMuQWN0aXZlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdE1lbWJlcnNoaXA+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgIHVzZXI6IHVzZXJJZCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2V0U3RhdHVzKFxuICAgIG1lbWJlcnNoaXBJZDogc3RyaW5nLFxuICAgIHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKG1lbWJlcnNoaXBJZCwgeyBzdGF0dXMgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBsaXN0VXNlck9yZ1VuaXRzKHVzZXJJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+XG4gICAgICByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAudXNlciwgdXNlcklkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0T3JnVW5pdFVzZXJzKG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+XG4gICAgICByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAub3JnVW5pdCwgb3JnVW5pdElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyByZW1vdmVVc2VyRnJvbU9yZ1VuaXQobWVtYmVyc2hpcElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKG1lbWJlcnNoaXBJZCwgLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8R3JvdXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR3JvdXApO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlR3JvdXAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkPzogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIG9yZ1VuaXQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyByZW5hbWVHcm91cChncm91cElkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKGdyb3VwSWQsIHsgbmFtZSB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVHcm91cFRvT3JnVW5pdChcbiAgICBncm91cElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShncm91cElkLCB7IG9yZ1VuaXQ6IG9yZ1VuaXRJZCB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRHcm91cHModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncm91cCkgPT4gc2FtZVRlbmFudChncm91cC50ZW5hbnQsIHRlbmFudElkKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPEdyb3VwTWVtYmVyc2hpcD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihHcm91cE1lbWJlcnNoaXApO1xuICB9XG5cbiAgYXN5bmMgYWRkUHJpbmNpcGFsVG9Hcm91cChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIGdyb3VwSWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cE1lbWJlcnNoaXA+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBncm91cDogZ3JvdXBJZCxcbiAgICAgICAgcHJpbmNpcGFsOiBwcmluY2lwYWxJZCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0R3JvdXBNZW1iZXJzKGdyb3VwSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwTWVtYmVyc2hpcFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC5ncm91cCwgZ3JvdXBJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8R3JvdXBNZW1iZXJzaGlwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVByaW5jaXBhbEZyb21Hcm91cChtZW1iZXJzaGlwSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQobWVtYmVyc2hpcElkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmVHcm91cFByaW5jaXBhbElkc0ZvclByaW5jaXBhbChcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgICBjb25zdCBtZW1iZXJzaGlwcyA9IGF3YWl0IHRoaXMubGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgcHJpbmNpcGFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWVtYmVyc2hpcHMubWFwKGFzeW5jIChtZW1iZXJzaGlwKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlbmFudElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLnRlbmFudCk7XG4gICAgICAgIGNvbnN0IGdyb3VwSWQgPSByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApO1xuICAgICAgICBjb25zdCBwcmluY2lwYWwgPSBhd2FpdCBwcmluY2lwYWxTZXJ2aWNlLmdldEdyb3VwUHJpbmNpcGFsKHRlbmFudElkLCBncm91cElkLCAuLi5hcmdzKTtcbiAgICAgICAgcmV0dXJuIHByaW5jaXBhbC5pZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcHJpbmNpcGFscztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFBlcm1pc3Npb24+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUGVybWlzc2lvbik7XG4gIH1cblxuICBhc3luYyBjcmVhdGVQZXJtaXNzaW9uKFxuICAgIGlucHV0OiBDcmVhdGVQZXJtaXNzaW9uSW5wdXQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQZXJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAga2V5OiBpbnB1dC5rZXksXG4gICAgICAgIGNhdGVnb3J5OiBpbnB1dC5jYXRlZ29yeSxcbiAgICAgICAgZGVzY3JpcHRpb246IGlucHV0LmRlc2NyaXB0aW9uLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlLZXkoa2V5OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxQZXJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbmQoKHBlcm1pc3Npb24pID0+IHBlcm1pc3Npb24ua2V5ID09PSBrZXkpIGFzIFBlcm1pc3Npb247XG4gIH1cblxuICBhc3luYyBsaXN0QnlDYXRlZ29yeShjYXRlZ29yeTogUGVybWlzc2lvbkNhdGVnb3J5LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8UGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGVzY3JpcHRpb24oXG4gICAgcGVybWlzc2lvbklkOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFBlcm1pc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUocGVybWlzc2lvbklkLCB7IGRlc2NyaXB0aW9uIH0sIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb2xlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8Um9sZT4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihSb2xlKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJvbGUoaW5wdXQ6IENyZWF0ZVJvbGVJbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFJvbGU+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IGlucHV0LnRlbmFudElkLFxuICAgICAgICBrZXk6IGlucHV0LmtleSxcbiAgICAgICAgbmFtZTogaW5wdXQubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGlucHV0LmRlc2NyaXB0aW9uLFxuICAgICAgICBtZXRhZGF0YTogaW5wdXQubWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRTeXN0ZW1Sb2xlQnlLZXkoa2V5OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgY29uc3Qgcm9sZSA9IChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbmQoXG4gICAgICAoY2FuZGlkYXRlKSA9PiAhY2FuZGlkYXRlLnRlbmFudCAmJiBjYW5kaWRhdGUua2V5ID09PSBrZXlcbiAgICApO1xuICAgIGlmICghcm9sZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb2xlIFwiJHtrZXl9XCIgbm90IGZvdW5kYCk7XG4gICAgfVxuICAgIHJldHVybiByb2xlO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVuYW50Um9sZUJ5S2V5KHRlbmFudElkOiBzdHJpbmcsIGtleTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGUgPSAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maW5kKFxuICAgICAgKGNhbmRpZGF0ZSkgPT4gc2FtZVRlbmFudChjYW5kaWRhdGUudGVuYW50LCB0ZW5hbnRJZCkgJiYgY2FuZGlkYXRlLmtleSA9PT0ga2V5XG4gICAgKTtcbiAgICBpZiAoIXJvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm9sZSBcIiR7a2V5fVwiIG5vdCBmb3VuZCBmb3IgdGVuYW50ICR7dGVuYW50SWR9YCk7XG4gICAgfVxuICAgIHJldHVybiByb2xlO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lUm9sZShyb2xlSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Um9sZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShyb2xlSWQsIHsgbmFtZSB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVJvbGVNZXRhZGF0YShcbiAgICByb2xlSWQ6IHN0cmluZyxcbiAgICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHJvbGVJZCwgeyBtZXRhZGF0YSB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRSb2xlcyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIGluY2x1ZGVTeXN0ZW0gPSBmYWxzZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHJvbGUpID0+XG4gICAgICBpbmNsdWRlU3lzdGVtID8gIXJvbGUudGVuYW50IHx8IHNhbWVUZW5hbnQocm9sZS50ZW5hbnQsIHRlbmFudElkKSA6IHNhbWVUZW5hbnQocm9sZS50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvbGVQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8Um9sZVBlcm1pc3Npb24+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUm9sZVBlcm1pc3Npb24pO1xuICB9XG5cbiAgYXN5bmMgYWRkUGVybWlzc2lvblRvUm9sZShcbiAgICByb2xlSWQ6IHN0cmluZyxcbiAgICBwZXJtaXNzaW9uSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVQZXJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgcm9sZTogcm9sZUlkLFxuICAgICAgICBwZXJtaXNzaW9uOiBwZXJtaXNzaW9uSWQsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBhZGRQZXJtaXNzaW9uS2V5VG9Sb2xlKFxuICAgIHJvbGVJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25LZXk6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVQZXJtaXNzaW9uPiB7XG4gICAgY29uc3QgcGVybWlzc2lvbiA9IGF3YWl0IG5ldyBQZXJtaXNzaW9uU2VydmljZSgpLmdldEJ5S2V5KHBlcm1pc3Npb25LZXksIC4uLmFyZ3MpO1xuICAgIHJldHVybiB0aGlzLmFkZFBlcm1pc3Npb25Ub1JvbGUocm9sZUlkLCBwZXJtaXNzaW9uLmlkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVBlcm1pc3Npb25Gcm9tUm9sZShyb2xlUGVybWlzc2lvbklkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKHJvbGVQZXJtaXNzaW9uSWQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbGlzdFJvbGVQZXJtaXNzaW9ucyhyb2xlSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFJvbGVQZXJtaXNzaW9uW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChyb2xlUGVybWlzc2lvbikgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2gocm9sZVBlcm1pc3Npb24ucm9sZSwgcm9sZUlkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0UGVybWlzc2lvblJvbGVzKHBlcm1pc3Npb25JZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Um9sZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHJvbGVQZXJtaXNzaW9uKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChyb2xlUGVybWlzc2lvbi5wZXJtaXNzaW9uLCBwZXJtaXNzaW9uSWQpXG4gICAgKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVwbGFjZVJvbGVQZXJtaXNzaW9ucyhcbiAgICByb2xlSWQ6IHN0cmluZyxcbiAgICBwZXJtaXNzaW9uSWRzOiBzdHJpbmdbXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVQZXJtaXNzaW9uW10+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMubGlzdFJvbGVQZXJtaXNzaW9ucyhyb2xlSWQsIC4uLmFyZ3MpO1xuICAgIGF3YWl0IGRlbGV0ZU1hbnlCeUlkKHRoaXMsIGV4aXN0aW5nLCAuLi5hcmdzKTtcbiAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwZXJtaXNzaW9uSWRzLm1hcCgocGVybWlzc2lvbklkKSA9PlxuICAgICAgICB0aGlzLmFkZFBlcm1pc3Npb25Ub1JvbGUocm9sZUlkLCBwZXJtaXNzaW9uSWQsIC4uLmFyZ3MpXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlZDtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgY3JlYXRlUm9sZVdpdGhQZXJtaXNzaW9ucyhcbiAgICBpbnB1dDogQ3JlYXRlUm9sZUlucHV0LFxuICAgIHBlcm1pc3Npb25LZXlzOiBzdHJpbmdbXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGU+IHtcbiAgICBjb25zdCByb2xlID0gYXdhaXQgbmV3IFJvbGVTZXJ2aWNlKCkuY3JlYXRlUm9sZShpbnB1dCwgLi4uYXJncyk7XG4gICAgZm9yIChjb25zdCBwZXJtaXNzaW9uS2V5IG9mIHBlcm1pc3Npb25LZXlzKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkZFBlcm1pc3Npb25LZXlUb1JvbGUocm9sZS5pZCwgcGVybWlzc2lvbktleSwgLi4uYXJncyk7XG4gICAgfVxuICAgIHJldHVybiByb2xlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb2xlQXNzaWdubWVudFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFJvbGVBc3NpZ25tZW50PiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFJvbGVBc3NpZ25tZW50KTtcbiAgfVxuXG4gIGFzeW5jIGFzc2lnblJvbGUoaW5wdXQ6IEFzc2lnblJvbGVJbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFJvbGVBc3NpZ25tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgcHJpbmNpcGFsOiBpbnB1dC5wcmluY2lwYWxJZCxcbiAgICAgICAgcm9sZTogaW5wdXQucm9sZUlkLFxuICAgICAgICBzY29wZUtpbmQ6IGlucHV0LnNjb3BlS2luZCxcbiAgICAgICAgc2NvcGVJZDogaW5wdXQuc2NvcGVJZCxcbiAgICAgICAgaW5oZXJpdERvd246IGlucHV0LmluaGVyaXREb3duID8/IGZhbHNlLFxuICAgICAgICBzdGFydHNBdDogaW5wdXQuc3RhcnRzQXQsXG4gICAgICAgIGV4cGlyZXNBdDogaW5wdXQuZXhwaXJlc0F0LFxuICAgICAgICBjb25kaXRpb25zOiBpbnB1dC5jb25kaXRpb25zLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmV2b2tlQXNzaWdubWVudChhc3NpZ25tZW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQoYXNzaWdubWVudElkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSb2xlQXNzaWdubWVudFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChhc3NpZ25tZW50KSA9PlxuICAgICAgICBzYW1lVGVuYW50KGFzc2lnbm1lbnQudGVuYW50LCB0ZW5hbnRJZCkgJiZcbiAgICAgICAgcmVsYXRpb25NYXRjaChhc3NpZ25tZW50LnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RSb2xlQXNzaWdubWVudHMocm9sZUlkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSb2xlQXNzaWdubWVudFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigoYXNzaWdubWVudCkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2goYXNzaWdubWVudC5yb2xlLCByb2xlSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRBc3NpZ25tZW50cyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZUFzc2lnbm1lbnRbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKGFzc2lnbm1lbnQpID0+XG4gICAgICBzYW1lVGVuYW50KGFzc2lnbm1lbnQudGVuYW50LCB0ZW5hbnRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQXNzaWdubWVudFdpbmRvdyhcbiAgICBhc3NpZ25tZW50SWQ6IHN0cmluZyxcbiAgICBzdGFydHNBdDogRGF0ZSB8IHVuZGVmaW5lZCxcbiAgICBleHBpcmVzQXQ6IERhdGUgfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSb2xlQXNzaWdubWVudD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShhc3NpZ25tZW50SWQsIHsgc3RhcnRzQXQsIGV4cGlyZXNBdCB9LCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPEVmZmVjdGl2ZVBlcm1pc3Npb24+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoRWZmZWN0aXZlUGVybWlzc2lvbik7XG4gIH1cblxuICBhc3luYyBsaXN0Rm9yUHJpbmNpcGFsKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocGVybWlzc2lvbikgPT5cbiAgICAgICAgc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmXG4gICAgICAgIHJlbGF0aW9uTWF0Y2gocGVybWlzc2lvbi5wcmluY2lwYWwsIHByaW5jaXBhbElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0Rm9yU2NvcGUoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBzY29wZUtpbmQ6IFNjb3BlS2luZCxcbiAgICBzY29wZUlkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxFZmZlY3RpdmVQZXJtaXNzaW9uW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKHBlcm1pc3Npb24pID0+XG4gICAgICAgIHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICBwZXJtaXNzaW9uLnNjb3BlS2luZCA9PT0gc2NvcGVLaW5kICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVJZCA9PT0gc2NvcGVJZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBoYXNQZXJtaXNzaW9uKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBwZXJtaXNzaW9uS2V5OiBzdHJpbmcsXG4gICAgc2NvcGVLaW5kOiBTY29wZUtpbmQsXG4gICAgc2NvcGVJZDogc3RyaW5nLFxuICAgIGF0PzogRGF0ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpKS5zb21lKFxuICAgICAgKHBlcm1pc3Npb24pID0+XG4gICAgICAgIHBlcm1pc3Npb24ucGVybWlzc2lvbktleSA9PT0gcGVybWlzc2lvbktleSAmJlxuICAgICAgICBwZXJtaXNzaW9uLnNjb3BlS2luZCA9PT0gc2NvcGVLaW5kICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVJZCA9PT0gc2NvcGVJZCAmJlxuICAgICAgICAoIXBlcm1pc3Npb24uc3RhcnRzQXQgfHwgIWF0IHx8IHBlcm1pc3Npb24uc3RhcnRzQXQgPD0gYXQpICYmXG4gICAgICAgICghcGVybWlzc2lvbi5leHBpcmVzQXQgfHwgIWF0IHx8IHBlcm1pc3Npb24uZXhwaXJlc0F0ID49IGF0KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGb3JQcmluY2lwYWwodGVuYW50SWQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZCh0aGlzLCBhd2FpdCB0aGlzLmxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGb3JUZW5hbnQodGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZChcbiAgICAgIHRoaXMsXG4gICAgICAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZEZvclByaW5jaXBhbChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxFZmZlY3RpdmVQZXJtaXNzaW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuXG4gICAgY29uc3Qgcm9sZUFzc2lnbm1lbnRTZXJ2aWNlID0gbmV3IFJvbGVBc3NpZ25tZW50U2VydmljZSgpO1xuICAgIGNvbnN0IHJvbGVQZXJtaXNzaW9uU2VydmljZSA9IG5ldyBSb2xlUGVybWlzc2lvblNlcnZpY2UoKTtcbiAgICBjb25zdCBwZXJtaXNzaW9uU2VydmljZSA9IG5ldyBQZXJtaXNzaW9uU2VydmljZSgpO1xuICAgIGNvbnN0IGdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgPSBuZXcgR3JvdXBNZW1iZXJzaGlwU2VydmljZSgpO1xuICAgIGNvbnN0IHByaW5jaXBhbFNlcnZpY2UgPSBuZXcgUHJpbmNpcGFsU2VydmljZSgpO1xuICAgIGNvbnN0IG9yZ1VuaXRDbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICBjb25zdCBpbmhlcml0YW5jZUJsb2NrU2VydmljZSA9IG5ldyBJbmhlcml0YW5jZUJsb2NrU2VydmljZSgpO1xuXG4gICAgY29uc3QgbWF0ZXJpYWxpemVkOiBFZmZlY3RpdmVQZXJtaXNzaW9uU25hcHNob3RbXSA9IFtdO1xuICAgIGNvbnN0IHNvdXJjZUFzc2lnbm1lbnRzID0gYXdhaXQgcm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyhcbiAgICAgIHRlbmFudElkLFxuICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBncm91cE1lbWJlcnNoaXBzID0gYXdhaXQgZ3JvdXBNZW1iZXJzaGlwU2VydmljZS5saXN0UHJpbmNpcGFsR3JvdXBzKFxuICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBncm91cEFzc2lnbm1lbnRzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGdyb3VwTWVtYmVyc2hpcHMubWFwKGFzeW5jIChtZW1iZXJzaGlwKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBQcmluY2lwYWwgPSBhd2FpdCBwcmluY2lwYWxTZXJ2aWNlLmdldEdyb3VwUHJpbmNpcGFsKFxuICAgICAgICAgICAgcmVsYXRpb25JZChtZW1iZXJzaGlwLnRlbmFudCksXG4gICAgICAgICAgICByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApLFxuICAgICAgICAgICAgLi4uYXJnc1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHJvbGVBc3NpZ25tZW50U2VydmljZS5saXN0UHJpbmNpcGFsQXNzaWdubWVudHMoXG4gICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgIGdyb3VwUHJpbmNpcGFsLmlkLFxuICAgICAgICAgICAgLi4uYXJnc1xuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKS5mbGF0KCk7XG5cbiAgICBjb25zdCBhc3NpZ25tZW50cyA9IFsuLi5zb3VyY2VBc3NpZ25tZW50cywgLi4uZ3JvdXBBc3NpZ25tZW50c107XG4gICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIGFzc2lnbm1lbnRzKSB7XG4gICAgICBjb25zdCByb2xlUGVybWlzc2lvbnMgPSBhd2FpdCByb2xlUGVybWlzc2lvblNlcnZpY2UubGlzdFJvbGVQZXJtaXNzaW9ucyhcbiAgICAgICAgcmVsYXRpb25JZChhc3NpZ25tZW50LnJvbGUpLFxuICAgICAgICAuLi5hcmdzXG4gICAgICApO1xuICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcm9sZVBlcm1pc3Npb25zLm1hcChhc3luYyAocm9sZVBlcm1pc3Npb24pID0+IHtcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uID0gYXdhaXQgcGVybWlzc2lvblNlcnZpY2UuZmluZE9uZUJ5KFxuICAgICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgICAgcmVsYXRpb25JZChyb2xlUGVybWlzc2lvbi5wZXJtaXNzaW9uKSBhcyBuZXZlcixcbiAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBwZXJtaXNzaW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgcGVybWlzc2lvbiBvZiBwZXJtaXNzaW9ucykge1xuICAgICAgICBpZiAoIXBlcm1pc3Npb24pIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBzY29wZUtpbmQgPSBhc3NpZ25tZW50LnNjb3BlS2luZDtcbiAgICAgICAgY29uc3Qgc2NvcGVJZCA9IGFzc2lnbm1lbnQuc2NvcGVJZDtcbiAgICAgICAgY29uc3Qgc2NvcGVzOiBBcnJheTx7IHNjb3BlS2luZDogU2NvcGVLaW5kOyBzY29wZUlkOiBzdHJpbmcgfT4gPSBbXTtcbiAgICAgICAgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLlRlbmFudCkge1xuICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkOiB0ZW5hbnRJZCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5SZXNvdXJjZSkge1xuICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLk9yZ1VuaXQgJiYgIWFzc2lnbm1lbnQuaW5oZXJpdERvd24pIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmIGFzc2lnbm1lbnQuaW5oZXJpdERvd24pIHtcbiAgICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IGF3YWl0IG9yZ1VuaXRDbG9zdXJlU2VydmljZS5saXN0RGVzY2VuZGFudHMoXG4gICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgIHNjb3BlSWQsXG4gICAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzY29wZXMucHVzaCguLi5kZXNjZW5kYW50cy5tYXAoKHJvdykgPT4gKHtcbiAgICAgICAgICAgIHNjb3BlS2luZCxcbiAgICAgICAgICAgIHNjb3BlSWQ6IHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpLFxuICAgICAgICAgIH0pKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHNjb3BlZCBvZiBzY29wZXMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmXG4gICAgICAgICAgICBhc3NpZ25tZW50LmluaGVyaXREb3duICYmXG4gICAgICAgICAgICBzY29wZWQuc2NvcGVJZCAhPT0gc2NvcGVJZCAmJlxuICAgICAgICAgICAgKGF3YWl0IGluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlLmNhdGVnb3J5QmxvY2tlZEZvckFuY2VzdG9yKFxuICAgICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgICAgc2NvcGVkLnNjb3BlSWQsXG4gICAgICAgICAgICAgIHNjb3BlSWQsXG4gICAgICAgICAgICAgIHBlcm1pc3Npb24uY2F0ZWdvcnksXG4gICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWF0ZXJpYWxpemVkLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgIHByaW5jaXBhbElkLFxuICAgICAgICAgICAgcGVybWlzc2lvbktleTogcGVybWlzc2lvbi5rZXksXG4gICAgICAgICAgICBzY29wZUtpbmQ6IHNjb3BlZC5zY29wZUtpbmQsXG4gICAgICAgICAgICBzY29wZUlkOiBzY29wZWQuc2NvcGVJZCxcbiAgICAgICAgICAgIHNvdXJjZUtpbmQ6IFwicm9sZV9hc3NpZ25tZW50XCIsXG4gICAgICAgICAgICBzb3VyY2VJZDogYXNzaWdubWVudC5pZCxcbiAgICAgICAgICAgIHN0YXJ0c0F0OiBhc3NpZ25tZW50LnN0YXJ0c0F0LFxuICAgICAgICAgICAgZXhwaXJlc0F0OiBhc3NpZ25tZW50LmV4cGlyZXNBdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hdGVyaWFsaXplZC5tYXAoKHBlcm1pc3Npb24pID0+XG4gICAgICAgIHRoaXMuY3JlYXRlT25lKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBwZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgdGVuYW50OiBwZXJtaXNzaW9uLnRlbmFudElkLFxuICAgICAgICAgICAgcHJpbmNpcGFsOiBwZXJtaXNzaW9uLnByaW5jaXBhbElkLFxuICAgICAgICAgICAgcGVybWlzc2lvbktleTogcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5LFxuICAgICAgICAgICAgc2NvcGVLaW5kOiBwZXJtaXNzaW9uLnNjb3BlS2luZCxcbiAgICAgICAgICAgIHNjb3BlSWQ6IHBlcm1pc3Npb24uc2NvcGVJZCxcbiAgICAgICAgICAgIHNvdXJjZUtpbmQ6IHBlcm1pc3Npb24uc291cmNlS2luZCxcbiAgICAgICAgICAgIHNvdXJjZUlkOiBwZXJtaXNzaW9uLnNvdXJjZUlkLFxuICAgICAgICAgICAgc3RhcnRzQXQ6IHBlcm1pc3Npb24uc3RhcnRzQXQsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHBlcm1pc3Npb24uZXhwaXJlc0F0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uYXJnc1xuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlZDtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZEZvclRlbmFudCh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByaW5jaXBhbHMgPSAoYXdhaXQgbmV3IFByaW5jaXBhbFNlcnZpY2UoKS5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByaW5jaXBhbCkgPT5cbiAgICAgIHNhbWVUZW5hbnQocHJpbmNpcGFsLnRlbmFudCwgdGVuYW50SWQpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHByaW5jaXBhbCBvZiBwcmluY2lwYWxzKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlYnVpbGRGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbC5pZCwgLi4uYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm90ZWN0ZWRSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFByb3RlY3RlZFJlc291cmNlPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFByb3RlY3RlZFJlc291cmNlKTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyUmVzb3VyY2UoXG4gICAgaW5wdXQ6IFJlZ2lzdGVyUmVzb3VyY2VJbnB1dCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByb3RlY3RlZFJlc291cmNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgb3JnVW5pdDogaW5wdXQub3JnVW5pdElkLFxuICAgICAgICByZXNvdXJjZVR5cGU6IGlucHV0LnJlc291cmNlVHlwZSxcbiAgICAgICAgcmVzb3VyY2VJZDogaW5wdXQucmVzb3VyY2VJZCxcbiAgICAgICAgdmlzaWJpbGl0eTogaW5wdXQudmlzaWJpbGl0eSxcbiAgICAgICAgb3duZXI6IGlucHV0Lm93bmVyUHJpbmNpcGFsSWQsXG4gICAgICAgIHNlbnNpdGl2aXR5OiBpbnB1dC5zZW5zaXRpdml0eSxcbiAgICAgICAgbWV0YWRhdGE6IGlucHV0Lm1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlEb21haW5SZXNvdXJjZShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByb3RlY3RlZFJlc291cmNlIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbmQoXG4gICAgICAocmVzb3VyY2UpID0+XG4gICAgICAgIHNhbWVUZW5hbnQocmVzb3VyY2UudGVuYW50LCB0ZW5hbnRJZCkgJiZcbiAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VUeXBlID09PSByZXNvdXJjZVR5cGUgJiZcbiAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VJZCA9PT0gcmVzb3VyY2VJZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBtb3ZlUmVzb3VyY2VUb09yZ1VuaXQoXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJvdGVjdGVkUmVzb3VyY2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUocHJvdGVjdGVkUmVzb3VyY2VJZCwgeyBvcmdVbml0OiBvcmdVbml0SWQgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBzZXRWaXNpYmlsaXR5KFxuICAgIHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZyxcbiAgICB2aXNpYmlsaXR5OiBSZXNvdXJjZVZpc2liaWxpdHksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQcm90ZWN0ZWRSZXNvdXJjZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShwcm90ZWN0ZWRSZXNvdXJjZUlkLCB7IHZpc2liaWxpdHkgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2Zlck93bmVyc2hpcChcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgb3duZXJQcmluY2lwYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJvdGVjdGVkUmVzb3VyY2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUocHJvdGVjdGVkUmVzb3VyY2VJZCwgeyBvd25lcjogb3duZXJQcmluY2lwYWxJZCB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RPcmdVbml0UmVzb3VyY2VzKG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8UHJvdGVjdGVkUmVzb3VyY2VbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHJlc291cmNlKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChyZXNvdXJjZS5vcmdVbml0LCBvcmdVbml0SWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRSZXNvdXJjZXModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFByb3RlY3RlZFJlc291cmNlW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChyZXNvdXJjZSkgPT4gc2FtZVRlbmFudChyZXNvdXJjZS50ZW5hbnQsIHRlbmFudElkKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlR3JhbnRTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxSZXNvdXJjZUdyYW50PiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFJlc291cmNlR3JhbnQpO1xuICB9XG5cbiAgYXN5bmMgZ3JhbnRSZXNvdXJjZShpbnB1dDogR3JhbnRSZXNvdXJjZUlucHV0LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8UmVzb3VyY2VHcmFudD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogaW5wdXQudGVuYW50SWQsXG4gICAgICAgIHJlc291cmNlOiBpbnB1dC5yZXNvdXJjZUlkLFxuICAgICAgICBwcmluY2lwYWw6IGlucHV0LnByaW5jaXBhbElkLFxuICAgICAgICBwZXJtaXNzaW9uS2V5OiBpbnB1dC5wZXJtaXNzaW9uS2V5LFxuICAgICAgICBzdGFydHNBdDogaW5wdXQuc3RhcnRzQXQsXG4gICAgICAgIGV4cGlyZXNBdDogaW5wdXQuZXhwaXJlc0F0LFxuICAgICAgICBjb25kaXRpb25zOiBpbnB1dC5jb25kaXRpb25zLFxuICAgICAgICBjcmVhdGVkQnk6IGlucHV0LmNyZWF0ZWRCeVByaW5jaXBhbElkLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmV2b2tlR3JhbnQoZ3JhbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChncmFudElkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RSZXNvdXJjZUdyYW50cyhwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSZXNvdXJjZUdyYW50W10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncmFudCkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2goZ3JhbnQucmVzb3VyY2UsIHByb3RlY3RlZFJlc291cmNlSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQcmluY2lwYWxHcmFudHMoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVzb3VyY2VHcmFudFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChncmFudCkgPT4gc2FtZVRlbmFudChncmFudC50ZW5hbnQsIHRlbmFudElkKSAmJiByZWxhdGlvbk1hdGNoKGdyYW50LnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGhhc0dyYW50KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbktleTogc3RyaW5nLFxuICAgIGF0PzogRGF0ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdFByaW5jaXBhbEdyYW50cyh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpKS5zb21lKFxuICAgICAgKGdyYW50KSA9PlxuICAgICAgICByZWxhdGlvbk1hdGNoKGdyYW50LnJlc291cmNlLCBwcm90ZWN0ZWRSZXNvdXJjZUlkKSAmJlxuICAgICAgICBncmFudC5wZXJtaXNzaW9uS2V5ID09PSBwZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgICghZ3JhbnQuc3RhcnRzQXQgfHwgIWF0IHx8IGdyYW50LnN0YXJ0c0F0IDw9IGF0KSAmJlxuICAgICAgICAoIWdyYW50LmV4cGlyZXNBdCB8fCAhYXQgfHwgZ3JhbnQuZXhwaXJlc0F0ID49IGF0KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGxGb3JSZXNvdXJjZShcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZGVsZXRlTWFueUJ5SWQoXG4gICAgICB0aGlzLFxuICAgICAgYXdhaXQgdGhpcy5saXN0UmVzb3VyY2VHcmFudHMocHJvdGVjdGVkUmVzb3VyY2VJZCwgLi4uYXJncyksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VMaWZlY3ljbGVTZXJ2aWNlIHtcbiAgYXN5bmMgdW5yZWdpc3RlclJlc291cmNlKHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBuZXcgUmVzb3VyY2VHcmFudFNlcnZpY2UoKS5kZWxldGVBbGxGb3JSZXNvdXJjZShwcm90ZWN0ZWRSZXNvdXJjZUlkLCAuLi5hcmdzKTtcbiAgICBhd2FpdCBuZXcgUHJvdGVjdGVkUmVzb3VyY2VTZXJ2aWNlKCkuZGVsZXRlQnlJZChwcm90ZWN0ZWRSZXNvdXJjZUlkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmVSZXNvdXJjZVNjb3BlKFxuICAgIHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHtcbiAgICB0ZW5hbnRJZDogc3RyaW5nO1xuICAgIG9yZ1VuaXRJZDogc3RyaW5nO1xuICAgIHZpc2liaWxpdHk6IFJlc291cmNlVmlzaWJpbGl0eTtcbiAgICBvd25lclByaW5jaXBhbElkPzogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBhd2FpdCBuZXcgUHJvdGVjdGVkUmVzb3VyY2VTZXJ2aWNlKCkuZ2V0QnlJZChwcm90ZWN0ZWRSZXNvdXJjZUlkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGVuYW50SWQ6IHJlbGF0aW9uSWQocmVzb3VyY2UudGVuYW50KSxcbiAgICAgIG9yZ1VuaXRJZDogcmVsYXRpb25JZChyZXNvdXJjZS5vcmdVbml0KSxcbiAgICAgIHZpc2liaWxpdHk6IHJlc291cmNlLnZpc2liaWxpdHksXG4gICAgICBvd25lclByaW5jaXBhbElkOiByZXNvdXJjZS5vd25lciA/IHJlbGF0aW9uSWQocmVzb3VyY2Uub3duZXIpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VCaW5kaW5nU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8U3RvcmFnZUJpbmRpbmc+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoU3RvcmFnZUJpbmRpbmcpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQmluZGluZyhpbnB1dDogQ3JlYXRlU3RvcmFnZUJpbmRpbmdJbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFN0b3JhZ2VCaW5kaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgc3RvcmFnZUtpbmQ6IGlucHV0LnN0b3JhZ2VLaW5kLFxuICAgICAgICBiaW5kaW5nS2luZDogaW5wdXQuYmluZGluZ0tpbmQsXG4gICAgICAgIGJpbmRpbmdLZXk6IGlucHV0LmJpbmRpbmdLZXksXG4gICAgICAgIHJlZ2lvbjogaW5wdXQucmVnaW9uLFxuICAgICAgICBjb25maWc6IGlucHV0LmNvbmZpZyxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRCaW5kaW5ncyh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8U3RvcmFnZUJpbmRpbmdbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKGJpbmRpbmcpID0+IHNhbWVUZW5hbnQoYmluZGluZy50ZW5hbnQsIHRlbmFudElkKSk7XG4gIH1cblxuICBhc3luYyBnZXRCaW5kaW5nKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgc3RvcmFnZUtpbmQ6IFN0b3JhZ2VLaW5kLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8U3RvcmFnZUJpbmRpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdFRlbmFudEJpbmRpbmdzKHRlbmFudElkLCAuLi5hcmdzKSkuZmluZChcbiAgICAgIChiaW5kaW5nKSA9PiBiaW5kaW5nLnN0b3JhZ2VLaW5kID09PSBzdG9yYWdlS2luZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBzZXRCaW5kaW5nQ29uZmlnKFxuICAgIGJpbmRpbmdJZDogc3RyaW5nLFxuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxTdG9yYWdlQmluZGluZz4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShiaW5kaW5nSWQsIHsgY29uZmlnIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgcHJvbW90ZVRvRGVkaWNhdGVkKFxuICAgIGJpbmRpbmdJZDogc3RyaW5nLFxuICAgIGJpbmRpbmdLZXk6IHN0cmluZyxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFN0b3JhZ2VCaW5kaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKFxuICAgICAgYmluZGluZ0lkLFxuICAgICAgeyBiaW5kaW5nS2luZDogU3RvcmFnZUJpbmRpbmdLaW5kLkRlZGljYXRlZCwgYmluZGluZ0tleSwgcmVnaW9uLCBjb25maWcgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2V0U2hhcmVkKFxuICAgIGJpbmRpbmdJZDogc3RyaW5nLFxuICAgIGJpbmRpbmdLZXk6IHN0cmluZyxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFN0b3JhZ2VCaW5kaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKFxuICAgICAgYmluZGluZ0lkLFxuICAgICAgeyBiaW5kaW5nS2luZDogU3RvcmFnZUJpbmRpbmdLaW5kLlNoYXJlZCwgYmluZGluZ0tleSwgcmVnaW9uLCBjb25maWcgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb290c3RyYXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlID0gbmV3IFRlbmFudFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSB0ZW5hbnRQcm9maWxlU2VydmljZSA9IG5ldyBUZW5hbnRQcm9maWxlU2VydmljZSgpO1xuICBwcml2YXRlIG9yZ1VuaXRTZXJ2aWNlID0gbmV3IE9yZ1VuaXRTZXJ2aWNlKCk7XG4gIHByaXZhdGUgb3JnVW5pdFByb2ZpbGVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRQcm9maWxlU2VydmljZSgpO1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gbmV3IFVzZXJTZXJ2aWNlKCk7XG4gIHByaXZhdGUgbWVtYmVyc2hpcFNlcnZpY2UgPSBuZXcgVGVuYW50TWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZSA9IG5ldyBQZXJtaXNzaW9uU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVTZXJ2aWNlID0gbmV3IFJvbGVTZXJ2aWNlKCk7XG4gIHByaXZhdGUgcm9sZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFJvbGVQZXJtaXNzaW9uU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBlZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSA9IG5ldyBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSgpO1xuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgYm9vdHN0cmFwVGVuYW50RnJvbVRlbXBsYXRlKFxuICAgIHRlbXBsYXRlOiBCb290c3RyYXBUZW1wbGF0ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHtcbiAgICB0ZW5hbnRJZDogc3RyaW5nO1xuICAgIHJvb3RPcmdVbml0SWQ6IHN0cmluZztcbiAgICBvd25lclVzZXJJZDogc3RyaW5nO1xuICAgIG93bmVyUHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHRlbmFudCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5jcmVhdGVUZW5hbnQodGVtcGxhdGUudGVuYW50LCAuLi5hcmdzKTtcbiAgICBpZiAodGVtcGxhdGUudGVuYW50LnByb2ZpbGVLZXkpIHtcbiAgICAgIGF3YWl0IHRoaXMudGVuYW50UHJvZmlsZVNlcnZpY2UuY3JlYXRlUHJvZmlsZShcbiAgICAgICAgdGVuYW50LmlkLFxuICAgICAgICB0ZW1wbGF0ZS50ZW5hbnQucHJvZmlsZUtleSxcbiAgICAgICAgdGVtcGxhdGUudGVuYW50LnByb2ZpbGVNZXRhZGF0YSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVPcmdUcmVlID0gYXN5bmMgKFxuICAgICAgcGFyZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIG9yZ1VuaXQ6IEJvb3RzdHJhcE9yZ1VuaXRcbiAgICApOiBQcm9taXNlPE9yZ1VuaXQ+ID0+IHtcbiAgICAgIGNvbnN0IGNyZWF0ZWQgPVxuICAgICAgICBwYXJlbnRJZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBhd2FpdCB0aGlzLm9yZ1VuaXRTZXJ2aWNlLmNyZWF0ZVJvb3QoXG4gICAgICAgICAgICAgIHRlbmFudC5pZCxcbiAgICAgICAgICAgICAgb3JnVW5pdC5uYW1lLFxuICAgICAgICAgICAgICBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICBvcmdVbml0LnByb2ZpbGVLZXksXG4gICAgICAgICAgICAgIG9yZ1VuaXQubWV0YWRhdGEsXG4gICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGF3YWl0IHRoaXMub3JnVW5pdFNlcnZpY2UuY3JlYXRlQ2hpbGQoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICAgICAgICAgIHBhcmVudE9yZ1VuaXRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgbmFtZTogb3JnVW5pdC5uYW1lLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVLZXk6IG9yZ1VuaXQucHJvZmlsZUtleSxcbiAgICAgICAgICAgICAgICBwcm9maWxlTWV0YWRhdGE6IG9yZ1VuaXQubWV0YWRhdGEsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG9yZ1VuaXQuY2hpbGRyZW4gPz8gW10pIHtcbiAgICAgICAgYXdhaXQgY3JlYXRlT3JnVHJlZShjcmVhdGVkLmlkLCBjaGlsZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICB9O1xuXG4gICAgY29uc3Qgcm9vdE9yZ1VuaXQgPSBhd2FpdCBjcmVhdGVPcmdUcmVlKHVuZGVmaW5lZCwgdGVtcGxhdGUucm9vdE9yZ1VuaXQpO1xuICAgIGNvbnN0IG93bmVyID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5jcmVhdGVVc2VyKHRlbXBsYXRlLm93bmVyVXNlciwgLi4uYXJncyk7XG4gICAgYXdhaXQgdGhpcy5tZW1iZXJzaGlwU2VydmljZS5hZGRVc2VyVG9UZW5hbnQodGVuYW50LmlkLCBvd25lci5pZCwgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IG93bmVyUHJpbmNpcGFsID0gYXdhaXQgdGhpcy5wcmluY2lwYWxTZXJ2aWNlLmdldFVzZXJQcmluY2lwYWwodGVuYW50LmlkLCBvd25lci5pZCwgLi4uYXJncyk7XG5cbiAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgdGVtcGxhdGUucGVybWlzc2lvbnMpIHtcbiAgICAgIGF3YWl0IHRoaXMucGVybWlzc2lvblNlcnZpY2UuY3JlYXRlUGVybWlzc2lvbihwZXJtaXNzaW9uLCAuLi5hcmdzKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJvbGUgb2YgdGVtcGxhdGUucm9sZXMpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZWRSb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5jcmVhdGVSb2xlKFxuICAgICAgICB7XG4gICAgICAgICAgdGVuYW50SWQ6IHRlbmFudC5pZCxcbiAgICAgICAgICBrZXk6IHJvbGUua2V5LFxuICAgICAgICAgIG5hbWU6IHJvbGUubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcm9sZS5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgcGVybWlzc2lvbktleSBvZiByb2xlLnBlcm1pc3Npb25LZXlzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucm9sZVBlcm1pc3Npb25TZXJ2aWNlLmFkZFBlcm1pc3Npb25LZXlUb1JvbGUoXG4gICAgICAgICAgY3JlYXRlZFJvbGUuaWQsXG4gICAgICAgICAgcGVybWlzc2lvbktleSxcbiAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3duZXJSb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5nZXRUZW5hbnRSb2xlQnlLZXkoXG4gICAgICB0ZW5hbnQuaWQsXG4gICAgICB0ZW1wbGF0ZS5vd25lclJvbGVLZXksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnJvbGVBc3NpZ25tZW50U2VydmljZS5hc3NpZ25Sb2xlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICBwcmluY2lwYWxJZDogb3duZXJQcmluY2lwYWwuaWQsXG4gICAgICAgIHJvbGVJZDogb3duZXJSb2xlLmlkLFxuICAgICAgICBzY29wZUtpbmQ6IFNjb3BlS2luZC5PcmdVbml0LFxuICAgICAgICBzY29wZUlkOiByb290T3JnVW5pdC5pZCxcbiAgICAgICAgaW5oZXJpdERvd246IHRydWUsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5yZWJ1aWxkRm9yUHJpbmNpcGFsKHRlbmFudC5pZCwgb3duZXJQcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbmFudElkOiB0ZW5hbnQuaWQsXG4gICAgICByb290T3JnVW5pdElkOiByb290T3JnVW5pdC5pZCxcbiAgICAgIG93bmVyVXNlcklkOiBvd25lci5pZCxcbiAgICAgIG93bmVyUHJpbmNpcGFsSWQ6IG93bmVyUHJpbmNpcGFsLmlkLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtZW1iZXJzaGlwU2VydmljZSA9IG5ldyBUZW5hbnRNZW1iZXJzaGlwU2VydmljZSgpO1xuICBwcml2YXRlIG9yZ01lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IE9yZ1VuaXRNZW1iZXJzaGlwU2VydmljZSgpO1xuICBwcml2YXRlIHByaW5jaXBhbFNlcnZpY2UgPSBuZXcgUHJpbmNpcGFsU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVTZXJ2aWNlID0gbmV3IFJvbGVTZXJ2aWNlKCk7XG4gIHByaXZhdGUgcm9sZUFzc2lnbm1lbnRTZXJ2aWNlID0gbmV3IFJvbGVBc3NpZ25tZW50U2VydmljZSgpO1xuICBwcml2YXRlIGVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyBvbmJvYXJkVXNlclRvVGVuYW50QW5kT3JnVW5pdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHJvbGVLZXk6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHsgcHJpbmNpcGFsSWQ6IHN0cmluZyB9PiB7XG4gICAgYXdhaXQgdGhpcy5tZW1iZXJzaGlwU2VydmljZS5hZGRVc2VyVG9UZW5hbnQodGVuYW50SWQsIHVzZXJJZCwgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsIC4uLmFyZ3MpO1xuICAgIGF3YWl0IHRoaXMub3JnTWVtYmVyc2hpcFNlcnZpY2UuYWRkVXNlclRvT3JnVW5pdChcbiAgICAgIHRlbmFudElkLFxuICAgICAgb3JnVW5pdElkLFxuICAgICAgdXNlcklkLFxuICAgICAgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBwcmluY2lwYWwgPSBhd2FpdCB0aGlzLnByaW5jaXBhbFNlcnZpY2UuZ2V0VXNlclByaW5jaXBhbCh0ZW5hbnRJZCwgdXNlcklkLCAuLi5hcmdzKTtcbiAgICBjb25zdCByb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5nZXRUZW5hbnRSb2xlQnlLZXkodGVuYW50SWQsIHJvbGVLZXksIC4uLmFyZ3MpO1xuICAgIGF3YWl0IHRoaXMucm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmFzc2lnblJvbGUoXG4gICAgICB7XG4gICAgICAgIHRlbmFudElkLFxuICAgICAgICBwcmluY2lwYWxJZDogcHJpbmNpcGFsLmlkLFxuICAgICAgICByb2xlSWQ6IHJvbGUuaWQsXG4gICAgICAgIHNjb3BlS2luZDogU2NvcGVLaW5kLk9yZ1VuaXQsXG4gICAgICAgIHNjb3BlSWQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgaW5oZXJpdERvd246IHRydWUsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5yZWJ1aWxkRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgIHJldHVybiB7IHByaW5jaXBhbElkOiBwcmluY2lwYWwuaWQgfTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgY2hhbmdlVXNlck9yZ1JvbGUoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHJvbGVLZXk6IHN0cmluZyxcbiAgICBpbmhlcml0RG93bjogYm9vbGVhbixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5nZXRUZW5hbnRSb2xlQnlLZXkodGVuYW50SWQsIHJvbGVLZXksIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGN1cnJlbnRBc3NpZ25tZW50cyA9IGF3YWl0IHRoaXMucm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyhcbiAgICAgIHRlbmFudElkLFxuICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGFzc2lnbm1lbnQgb2YgY3VycmVudEFzc2lnbm1lbnRzLmZpbHRlcihcbiAgICAgIChyb3cpID0+IHJvdy5zY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmIHJvdy5zY29wZUlkID09PSBvcmdVbml0SWRcbiAgICApKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvbGVBc3NpZ25tZW50U2VydmljZS5yZXZva2VBc3NpZ25tZW50KGFzc2lnbm1lbnQuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJvbGVBc3NpZ25tZW50U2VydmljZS5hc3NpZ25Sb2xlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgIHJvbGVJZDogcm9sZS5pZCxcbiAgICAgICAgc2NvcGVLaW5kOiBTY29wZUtpbmQuT3JnVW5pdCxcbiAgICAgICAgc2NvcGVJZDogb3JnVW5pdElkLFxuICAgICAgICBpbmhlcml0RG93bixcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlLnJlYnVpbGRGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgc3VzcGVuZFVzZXJJblRlbmFudChcbiAgICB0ZW5hbnRNZW1iZXJzaGlwSWQ6IHN0cmluZyxcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5tZW1iZXJzaGlwU2VydmljZS5zZXRTdGF0dXMoXG4gICAgICB0ZW5hbnRNZW1iZXJzaGlwSWQsXG4gICAgICBNZW1iZXJzaGlwU3RhdHVzLlN1c3BlbmRlZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UuZGVsZXRlRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIHJlYWN0aXZhdGVVc2VySW5UZW5hbnQoXG4gICAgdGVuYW50TWVtYmVyc2hpcElkOiBzdHJpbmcsXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubWVtYmVyc2hpcFNlcnZpY2Uuc2V0U3RhdHVzKHRlbmFudE1lbWJlcnNoaXBJZCwgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsIC4uLmFyZ3MpO1xuICAgIGF3YWl0IHRoaXMuZWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UucmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICB9XG59XG4iXX0=
1023
+ //# sourceMappingURL=org-based-authorization-system.services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-based-authorization-system.services.js","sourceRoot":"","sources":["../../../src/namespaces/org-based-authorization-system.services.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { AuthorizationError } from "@decaf-ts/core";
2
- import { ResourceVisibility, ScopeKind } from "./../types.js";
3
- import { asArray, buildAccessContext, buildArangoContext, buildQdrantFilter, isTimeValid } from "./../utils.js";
2
+ import { ResourceVisibility, ScopeKind, } from "./../types.js";
3
+ import { asArray, buildAccessContext, buildArangoContext, buildQdrantFilter, isTimeValid, } from "./../utils.js";
4
4
  function scopeKey(scopeKind, scopeId) {
5
5
  return `${scopeKind}:${scopeId}`;
6
6
  }
@@ -8,11 +8,13 @@ export class AuthzService {
8
8
  constructor(dataSources = {}) {
9
9
  this.dataSources = dataSources;
10
10
  }
11
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
12
  async canAccess(input, ...args) {
12
13
  const at = input.at ?? new Date();
13
14
  if (input.scopeKind && input.scopeId) {
14
15
  const permissions = await this.dataSources.listEffectivePermissionsForScope?.(input.tenantId, input.scopeKind, input.scopeId);
15
- return asArray(permissions).some((permission) => permission.permissionKey === input.permissionKey && isTimeValid(at, permission.startsAt, permission.expiresAt));
16
+ return asArray(permissions).some((permission) => permission.permissionKey === input.permissionKey &&
17
+ isTimeValid(at, permission.startsAt, permission.expiresAt));
16
18
  }
17
19
  if (!input.resourceProtectedId)
18
20
  return false;
@@ -23,20 +25,26 @@ export class AuthzService {
23
25
  return false;
24
26
  if (resource.ownerPrincipalId === input.principalId)
25
27
  return true;
26
- const grants = asArray(await this.dataSources.listResourceGrants?.(input.tenantId, input.resourceProtectedId)).filter((grant) => grant.principalId === input.principalId && grant.permissionKey === input.permissionKey && isTimeValid(at, grant.startsAt, grant.expiresAt));
28
+ const grants = asArray(await this.dataSources.listResourceGrants?.(input.tenantId, input.resourceProtectedId)).filter((grant) => grant.principalId === input.principalId &&
29
+ grant.permissionKey === input.permissionKey &&
30
+ isTimeValid(at, grant.startsAt, grant.expiresAt));
27
31
  if (grants.length > 0)
28
32
  return true;
29
33
  const visibility = resource.visibility;
30
- if (visibility === ResourceVisibility.Private || visibility === ResourceVisibility.ResourceAcl) {
34
+ if (visibility === ResourceVisibility.Private ||
35
+ visibility === ResourceVisibility.ResourceAcl) {
31
36
  return false;
32
37
  }
33
- if (visibility === ResourceVisibility.OrgUnit || visibility === ResourceVisibility.OrgSubtree) {
38
+ if (visibility === ResourceVisibility.OrgUnit ||
39
+ visibility === ResourceVisibility.OrgSubtree) {
34
40
  const effectivePermissions = asArray(await this.dataSources.listEffectivePermissionsForScope?.(input.tenantId, ScopeKind.OrgUnit, resource.orgUnitId));
35
- return effectivePermissions.some((permission) => permission.permissionKey === input.permissionKey && isTimeValid(at, permission.startsAt, permission.expiresAt));
41
+ return effectivePermissions.some((permission) => permission.permissionKey === input.permissionKey &&
42
+ isTimeValid(at, permission.startsAt, permission.expiresAt));
36
43
  }
37
44
  if (visibility === ResourceVisibility.Tenant) {
38
45
  const effectivePermissions = asArray(await this.dataSources.listEffectivePermissionsForScope?.(input.tenantId, ScopeKind.Tenant, input.tenantId));
39
- return effectivePermissions.some((permission) => permission.permissionKey === input.permissionKey && isTimeValid(at, permission.startsAt, permission.expiresAt));
46
+ return effectivePermissions.some((permission) => permission.permissionKey === input.permissionKey &&
47
+ isTimeValid(at, permission.startsAt, permission.expiresAt));
40
48
  }
41
49
  return false;
42
50
  }
@@ -45,7 +53,9 @@ export class AuthzService {
45
53
  throw new AuthorizationError(`Access denied for ${input.permissionKey} on ${input.resourceProtectedId ?? scopeKey(input.scopeKind ?? ScopeKind.Resource, input.scopeId ?? "")}`);
46
54
  }
47
55
  }
48
- async buildAccessContext(tenantId, principalId, ...args) {
56
+ async buildAccessContext(tenantId, principalId,
57
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
58
+ ...args) {
49
59
  const permissions = asArray(await this.dataSources.listEffectivePermissions?.(tenantId, principalId));
50
60
  const grants = asArray(await this.dataSources.listPrincipalGrants?.(tenantId, principalId));
51
61
  return buildAccessContext({
@@ -58,14 +68,30 @@ export class AuthzService {
58
68
  async buildArangoContext(tenantId, principalId, permissionKey, ...args) {
59
69
  const access = await this.buildAccessContext(tenantId, principalId, ...args);
60
70
  const allowedOrgUnitIds = access.allowedOrgUnitIdsByPermission[permissionKey] ?? [];
61
- const allowedResourceIds = access.resourceGrants.filter((grant) => grant.permissionKey === permissionKey).map((grant) => grant.resourceId);
62
- return buildArangoContext({ tenantId, principalId, permissionKey, allowedOrgUnitIds, allowedResourceIds });
71
+ const allowedResourceIds = access.resourceGrants
72
+ .filter((grant) => grant.permissionKey === permissionKey)
73
+ .map((grant) => grant.resourceId);
74
+ return buildArangoContext({
75
+ tenantId,
76
+ principalId,
77
+ permissionKey,
78
+ allowedOrgUnitIds,
79
+ allowedResourceIds,
80
+ });
63
81
  }
64
82
  async buildQdrantFilter(tenantId, principalId, permissionKey, ...args) {
65
83
  const access = await this.buildAccessContext(tenantId, principalId, ...args);
66
84
  const allowedOrgUnitIds = access.allowedOrgUnitIdsByPermission[permissionKey] ?? [];
67
- const allowedResourceIds = access.resourceGrants.filter((grant) => grant.permissionKey === permissionKey).map((grant) => grant.resourceId);
68
- return buildQdrantFilter({ tenantId, principalId, permissionKey, allowedOrgUnitIds, allowedResourceIds });
85
+ const allowedResourceIds = access.resourceGrants
86
+ .filter((grant) => grant.permissionKey === permissionKey)
87
+ .map((grant) => grant.resourceId);
88
+ return buildQdrantFilter({
89
+ tenantId,
90
+ principalId,
91
+ permissionKey,
92
+ allowedOrgUnitIds,
93
+ allowedResourceIds,
94
+ });
69
95
  }
70
96
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aHouc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2F1dGh6LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFvQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsc0JBQWlCO0FBQzNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFjLHNCQUFpQjtBQUV2SCxTQUFTLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWU7SUFDckQsT0FBTyxHQUFHLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBWSxjQUFnQyxFQUFFO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQXFCLEVBQUUsR0FBRyxJQUFXO1FBQ25ELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVsQyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUgsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUM5QixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsYUFBYSxJQUFJLFdBQVcs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QUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzSSxPQUFPLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxXQUFtQixFQUFFLGFBQXFCLEVBQUUsR0FBRyxJQUFXO1FBQ2xHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3RSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEYsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzSSxPQUFPLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhvcml6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQXV0aHpEYXRhU291cmNlcywgQ2FuQWNjZXNzSW5wdXQsIFJlc291cmNlVmlzaWJpbGl0eSwgU2NvcGVLaW5kIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBhc0FycmF5LCBidWlsZEFjY2Vzc0NvbnRleHQsIGJ1aWxkQXJhbmdvQ29udGV4dCwgYnVpbGRRZHJhbnRGaWx0ZXIsIGlzVGltZVZhbGlkLCByZWxhdGlvbklkIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmZ1bmN0aW9uIHNjb3BlS2V5KHNjb3BlS2luZDogU2NvcGVLaW5kLCBzY29wZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2NvcGVLaW5kfToke3Njb3BlSWR9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dGh6U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZXM6IEF1dGh6RGF0YVNvdXJjZXM7XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZXM6IEF1dGh6RGF0YVNvdXJjZXMgPSB7fSkge1xuICAgIHRoaXMuZGF0YVNvdXJjZXMgPSBkYXRhU291cmNlcztcbiAgfVxuXG4gIGFzeW5jIGNhbkFjY2VzcyhpbnB1dDogQ2FuQWNjZXNzSW5wdXQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXQgPSBpbnB1dC5hdCA/PyBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKGlucHV0LnNjb3BlS2luZCAmJiBpbnB1dC5zY29wZUlkKSB7XG4gICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zRm9yU2NvcGU/LihpbnB1dC50ZW5hbnRJZCwgaW5wdXQuc2NvcGVLaW5kLCBpbnB1dC5zY29wZUlkKTtcbiAgICAgIHJldHVybiBhc0FycmF5KHBlcm1pc3Npb25zKS5zb21lKFxuICAgICAgICAocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5ID09PSBpbnB1dC5wZXJtaXNzaW9uS2V5ICYmIGlzVGltZVZhbGlkKGF0LCBwZXJtaXNzaW9uLnN0YXJ0c0F0LCBwZXJtaXNzaW9uLmV4cGlyZXNBdClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpbnB1dC5yZXNvdXJjZVByb3RlY3RlZElkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubG9hZFJlc291cmNlPy4oaW5wdXQudGVuYW50SWQsIGlucHV0LnJlc291cmNlUHJvdGVjdGVkSWQpO1xuICAgIGlmICghcmVzb3VyY2UpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocmVzb3VyY2UudGVuYW50SWQgIT09IGlucHV0LnRlbmFudElkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAocmVzb3VyY2Uub3duZXJQcmluY2lwYWxJZCA9PT0gaW5wdXQucHJpbmNpcGFsSWQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZ3JhbnRzID0gYXNBcnJheShhd2FpdCB0aGlzLmRhdGFTb3VyY2VzLmxpc3RSZXNvdXJjZUdyYW50cz8uKGlucHV0LnRlbmFudElkLCBpbnB1dC5yZXNvdXJjZVByb3RlY3RlZElkKSkuZmlsdGVyKFxuICAgICAgKGdyYW50KSA9PiBncmFudC5wcmluY2lwYWxJZCA9PT0gaW5wdXQucHJpbmNpcGFsSWQgJiYgZ3JhbnQucGVybWlzc2lvbktleSA9PT0gaW5wdXQucGVybWlzc2lvbktleSAmJiBpc1RpbWVWYWxpZChhdCwgZ3JhbnQuc3RhcnRzQXQsIGdyYW50LmV4cGlyZXNBdClcbiAgICApO1xuICAgIGlmIChncmFudHMubGVuZ3RoID4gMCkgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCB2aXNpYmlsaXR5ID0gcmVzb3VyY2UudmlzaWJpbGl0eTtcbiAgICBpZiAodmlzaWJpbGl0eSA9PT0gUmVzb3VyY2VWaXNpYmlsaXR5LlByaXZhdGUgfHwgdmlzaWJpbGl0eSA9PT0gUmVzb3VyY2VWaXNpYmlsaXR5LlJlc291cmNlQWNsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHZpc2liaWxpdHkgPT09IFJlc291cmNlVmlzaWJpbGl0eS5PcmdVbml0IHx8IHZpc2liaWxpdHkgPT09IFJlc291cmNlVmlzaWJpbGl0eS5PcmdTdWJ0cmVlKSB7XG4gICAgICBjb25zdCBlZmZlY3RpdmVQZXJtaXNzaW9ucyA9IGFzQXJyYXkoXG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zRm9yU2NvcGU/LihpbnB1dC50ZW5hbnRJZCwgU2NvcGVLaW5kLk9yZ1VuaXQsIHJlc291cmNlLm9yZ1VuaXRJZClcbiAgICAgICk7XG4gICAgICByZXR1cm4gZWZmZWN0aXZlUGVybWlzc2lvbnMuc29tZShcbiAgICAgICAgKHBlcm1pc3Npb24pID0+IHBlcm1pc3Npb24ucGVybWlzc2lvbktleSA9PT0gaW5wdXQucGVybWlzc2lvbktleSAmJiBpc1RpbWVWYWxpZChhdCwgcGVybWlzc2lvbi5zdGFydHNBdCwgcGVybWlzc2lvbi5leHBpcmVzQXQpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh2aXNpYmlsaXR5ID09PSBSZXNvdXJjZVZpc2liaWxpdHkuVGVuYW50KSB7XG4gICAgICBjb25zdCBlZmZlY3RpdmVQZXJtaXNzaW9ucyA9IGFzQXJyYXkoXG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zRm9yU2NvcGU/LihpbnB1dC50ZW5hbnRJZCwgU2NvcGVLaW5kLlRlbmFudCwgaW5wdXQudGVuYW50SWQpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGVmZmVjdGl2ZVBlcm1pc3Npb25zLnNvbWUoXG4gICAgICAgIChwZXJtaXNzaW9uKSA9PiBwZXJtaXNzaW9uLnBlcm1pc3Npb25LZXkgPT09IGlucHV0LnBlcm1pc3Npb25LZXkgJiYgaXNUaW1lVmFsaWQoYXQsIHBlcm1pc3Npb24uc3RhcnRzQXQsIHBlcm1pc3Npb24uZXhwaXJlc0F0KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZXF1aXJlQWNjZXNzKGlucHV0OiBDYW5BY2Nlc3NJbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmNhbkFjY2VzcyhpbnB1dCwgLi4uYXJncykpKSB7XG4gICAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgICBgQWNjZXNzIGRlbmllZCBmb3IgJHtpbnB1dC5wZXJtaXNzaW9uS2V5fSBvbiAke2lucHV0LnJlc291cmNlUHJvdGVjdGVkSWQgPz8gc2NvcGVLZXkoaW5wdXQuc2NvcGVLaW5kID8/IFNjb3BlS2luZC5SZXNvdXJjZSwgaW5wdXQuc2NvcGVJZCA/PyBcIlwiKX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGJ1aWxkQWNjZXNzQ29udGV4dCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8aW1wb3J0KFwiLi4vdHlwZXNcIikuQWNjZXNzQ29udGV4dD4ge1xuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXNBcnJheShhd2FpdCB0aGlzLmRhdGFTb3VyY2VzLmxpc3RFZmZlY3RpdmVQZXJtaXNzaW9ucz8uKHRlbmFudElkLCBwcmluY2lwYWxJZCkpO1xuICAgIGNvbnN0IGdyYW50cyA9IGFzQXJyYXkoYXdhaXQgdGhpcy5kYXRhU291cmNlcy5saXN0UHJpbmNpcGFsR3JhbnRzPy4odGVuYW50SWQsIHByaW5jaXBhbElkKSk7XG4gICAgcmV0dXJuIGJ1aWxkQWNjZXNzQ29udGV4dCh7XG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgcGVybWlzc2lvbnMsXG4gICAgICBncmFudHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBidWlsZEFyYW5nb0NvbnRleHQodGVuYW50SWQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgcGVybWlzc2lvbktleTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGFjY2VzcyA9IGF3YWl0IHRoaXMuYnVpbGRBY2Nlc3NDb250ZXh0KHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgYWxsb3dlZE9yZ1VuaXRJZHMgPSBhY2Nlc3MuYWxsb3dlZE9yZ1VuaXRJZHNCeVBlcm1pc3Npb25bcGVybWlzc2lvbktleV0gPz8gW107XG4gICAgY29uc3QgYWxsb3dlZFJlc291cmNlSWRzID0gYWNjZXNzLnJlc291cmNlR3JhbnRzLmZpbHRlcigoZ3JhbnQpID0+IGdyYW50LnBlcm1pc3Npb25LZXkgPT09IHBlcm1pc3Npb25LZXkpLm1hcCgoZ3JhbnQpID0+IGdyYW50LnJlc291cmNlSWQpO1xuICAgIHJldHVybiBidWlsZEFyYW5nb0NvbnRleHQoeyB0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIHBlcm1pc3Npb25LZXksIGFsbG93ZWRPcmdVbml0SWRzLCBhbGxvd2VkUmVzb3VyY2VJZHMgfSk7XG4gIH1cblxuICBhc3luYyBidWlsZFFkcmFudEZpbHRlcih0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCBwZXJtaXNzaW9uS2V5OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc3QgYWNjZXNzID0gYXdhaXQgdGhpcy5idWlsZEFjY2Vzc0NvbnRleHQodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBhbGxvd2VkT3JnVW5pdElkcyA9IGFjY2Vzcy5hbGxvd2VkT3JnVW5pdElkc0J5UGVybWlzc2lvbltwZXJtaXNzaW9uS2V5XSA/PyBbXTtcbiAgICBjb25zdCBhbGxvd2VkUmVzb3VyY2VJZHMgPSBhY2Nlc3MucmVzb3VyY2VHcmFudHMuZmlsdGVyKChncmFudCkgPT4gZ3JhbnQucGVybWlzc2lvbktleSA9PT0gcGVybWlzc2lvbktleSkubWFwKChncmFudCkgPT4gZ3JhbnQucmVzb3VyY2VJZCk7XG4gICAgcmV0dXJuIGJ1aWxkUWRyYW50RmlsdGVyKHsgdGVuYW50SWQsIHByaW5jaXBhbElkLCBwZXJtaXNzaW9uS2V5LCBhbGxvd2VkT3JnVW5pdElkcywgYWxsb3dlZFJlc291cmNlSWRzIH0pO1xuICB9XG59XG4iXX0=
97
+ //# sourceMappingURL=authz.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz.service.js","sourceRoot":"","sources":["../../../../src/namespaces/services/authz.service.ts"],"names":[],"mappings":"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"}