@decaf-ts/integrations 0.4.0 → 0.4.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1068) hide show
  1. package/README.md +11 -3
  2. package/dist/integrations.cjs +2087 -2
  3. package/dist/integrations.js +2356 -2
  4. package/jest.config.cjs +1 -1
  5. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  6. package/lib/cjs/blob/azure/index.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  11. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  12. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  13. package/lib/cjs/blob/core/index.cjs +2 -2
  14. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  15. package/lib/cjs/blob/gcp/index.cjs +2 -2
  16. package/lib/cjs/blob/index.cjs +2 -2
  17. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  18. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  19. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  20. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  21. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  22. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  23. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/local/index.cjs +2 -2
  25. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  26. package/lib/cjs/blob/memory/index.cjs +2 -2
  27. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  28. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  29. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  30. package/lib/cjs/blob/s3/index.cjs +2 -2
  31. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  32. package/lib/cjs/docker/index.cjs +2 -2
  33. package/lib/cjs/feature-flags/constants.cjs +16 -0
  34. package/lib/cjs/feature-flags/decorators.cjs +65 -0
  35. package/lib/cjs/feature-flags/environment.cjs +26 -0
  36. package/lib/cjs/feature-flags/index.cjs +31 -0
  37. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +81 -0
  38. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +78 -0
  39. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +25 -0
  40. package/lib/cjs/feature-flags/readers/index.cjs +19 -0
  41. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +259 -0
  42. package/lib/cjs/feature-flags/types.cjs +4 -0
  43. package/lib/cjs/feature-flags/utils.cjs +141 -0
  44. package/lib/cjs/graph/engine/constants.cjs +2 -2
  45. package/lib/cjs/graph/engine/decorators.cjs +2 -2
  46. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +2 -2
  47. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +2 -2
  48. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +2 -2
  49. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +2 -2
  50. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +2 -2
  51. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +2 -2
  52. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +2 -2
  53. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +2 -2
  54. package/lib/cjs/graph/engine/errors/index.cjs +2 -2
  55. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +2 -2
  56. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +2 -2
  57. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +2 -2
  58. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +2 -2
  59. package/lib/cjs/graph/engine/events/index.cjs +2 -2
  60. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +2 -2
  61. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +2 -2
  62. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +2 -2
  63. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +2 -2
  64. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +2 -2
  65. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +2 -2
  66. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +2 -2
  67. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +2 -2
  68. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +2 -2
  69. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +2 -2
  70. package/lib/cjs/graph/engine/execution/index.cjs +2 -2
  71. package/lib/cjs/graph/engine/index.cjs +2 -2
  72. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +2 -2
  73. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +2 -2
  74. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +2 -2
  75. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +2 -2
  76. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +2 -2
  77. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +2 -2
  78. package/lib/cjs/graph/engine/loops/index.cjs +2 -2
  79. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +2 -2
  80. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +2 -2
  81. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +2 -2
  82. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +2 -2
  83. package/lib/cjs/graph/engine/pinning/index.cjs +2 -2
  84. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +2 -2
  85. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +2 -2
  86. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +2 -2
  87. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +2 -2
  88. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +2 -2
  89. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +2 -2
  90. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +2 -2
  91. package/lib/cjs/graph/engine/planning/index.cjs +2 -2
  92. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +2 -2
  93. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +2 -2
  94. package/lib/cjs/graph/engine/registry/index.cjs +2 -2
  95. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  96. package/lib/cjs/graph/engine/snapshots/index.cjs +2 -2
  97. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +2 -2
  98. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +2 -2
  99. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +2 -2
  100. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +2 -2
  101. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  102. package/lib/cjs/graph/engine/store/index.cjs +2 -2
  103. package/lib/cjs/graph/engine/types.cjs +2 -2
  104. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +2 -2
  105. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +2 -2
  106. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +2 -2
  107. package/lib/cjs/graph/engine/validation/index.cjs +2 -2
  108. package/lib/cjs/graph/index.cjs +2 -2
  109. package/lib/cjs/graph/shared/constants.cjs +2 -2
  110. package/lib/cjs/graph/shared/index.cjs +2 -2
  111. package/lib/cjs/graph/shared/nodes/agent.cjs +2 -2
  112. package/lib/cjs/graph/shared/nodes/base.cjs +2 -2
  113. package/lib/cjs/graph/shared/nodes/category-styles.cjs +2 -2
  114. package/lib/cjs/graph/shared/nodes/flow-control.cjs +2 -2
  115. package/lib/cjs/graph/shared/nodes/index.cjs +2 -2
  116. package/lib/cjs/graph/shared/nodes/triggers.cjs +2 -2
  117. package/lib/cjs/graph/shared/types.cjs +2 -2
  118. package/lib/cjs/index.cjs +6 -5
  119. package/lib/cjs/keycloak/index.cjs +2 -2
  120. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  121. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  122. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  123. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  124. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  125. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  126. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  127. package/lib/cjs/keycloak/services/index.cjs +2 -2
  128. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  129. package/lib/cjs/keycloak/types.cjs +2 -2
  130. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +329 -0
  131. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +37 -0
  132. package/lib/cjs/kibana/builders/index.cjs +20 -0
  133. package/lib/cjs/kibana/helpers.cjs +20 -16
  134. package/lib/cjs/kibana/index.cjs +3 -2
  135. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  136. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  137. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  138. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  139. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  140. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  141. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  142. package/lib/cjs/kibana/services/index.cjs +2 -2
  143. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  144. package/lib/cjs/kibana/types.cjs +11 -2
  145. package/lib/cjs/loader/ObjectLoader.cjs +154 -0
  146. package/lib/cjs/loader/families.cjs +78 -0
  147. package/lib/cjs/loader/index.cjs +28 -0
  148. package/lib/cjs/loader/types.cjs +4 -0
  149. package/lib/cjs/namespaces/index.cjs +2 -2
  150. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  151. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  152. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  153. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  154. package/lib/cjs/namespaces/models/index.cjs +2 -2
  155. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  156. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  157. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  158. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  159. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  160. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  161. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  162. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  163. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  164. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  165. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  166. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  167. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  168. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  169. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  170. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  171. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  172. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  173. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  174. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
  175. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  176. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  177. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  178. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  179. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  180. package/lib/cjs/namespaces/services/index.cjs +2 -2
  181. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
  182. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
  183. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  184. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  185. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  186. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  187. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  188. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  189. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  190. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  191. package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
  192. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  193. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  194. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  195. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  196. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  197. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  198. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  199. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  200. package/lib/cjs/namespaces/types.cjs +2 -2
  201. package/lib/cjs/namespaces/utils.cjs +2 -2
  202. package/lib/cjs/nest/decorators.cjs +17 -0
  203. package/lib/cjs/nest/graph/GraphExecutionController.cjs +2 -2
  204. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +2 -2
  205. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -2
  206. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +2 -2
  207. package/lib/cjs/nest/graph/GraphResultService.cjs +2 -2
  208. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +2 -2
  209. package/lib/cjs/nest/graph/GraphWorkflowService.cjs +2 -2
  210. package/lib/cjs/nest/graph/index.cjs +2 -2
  211. package/lib/cjs/nest/graph/main.cjs +2 -2
  212. package/lib/cjs/nest/index.cjs +3 -3
  213. package/lib/cjs/nest/keycloakAuthHandler.cjs +74 -35
  214. package/lib/cjs/nest/keycloakModule.cjs +7 -10
  215. package/lib/cjs/nest/logging.cjs +2 -2
  216. package/lib/cjs/nest/types.cjs +2 -2
  217. package/lib/cjs/nest/utils.cjs +58 -50
  218. package/lib/cjs/plugins/contract.cjs +76 -0
  219. package/lib/cjs/plugins/index.cjs +35 -0
  220. package/lib/cjs/plugins/kibana/host.cjs +24 -0
  221. package/lib/cjs/plugins/kibana/index.cjs +38 -0
  222. package/lib/cjs/plugins/kibana/installer.cjs +180 -0
  223. package/lib/cjs/plugins/kibana/manifest.cjs +33 -0
  224. package/lib/cjs/plugins/kibana/templates.cjs +503 -0
  225. package/lib/cjs/plugins/kibana/types.cjs +33 -0
  226. package/lib/cjs/plugins/superset/host.cjs +26 -0
  227. package/lib/cjs/plugins/superset/index.cjs +40 -0
  228. package/lib/cjs/plugins/superset/installer.cjs +232 -0
  229. package/lib/cjs/plugins/superset/manifest.cjs +35 -0
  230. package/lib/cjs/plugins/superset/templates.cjs +844 -0
  231. package/lib/cjs/plugins/superset/types.cjs +39 -0
  232. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  233. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  234. package/lib/cjs/secrets/aws/index.cjs +2 -2
  235. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  236. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  237. package/lib/cjs/secrets/azure/index.cjs +2 -2
  238. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  239. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  240. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  241. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  242. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  243. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  244. package/lib/cjs/secrets/core/index.cjs +2 -2
  245. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  246. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  247. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  248. package/lib/cjs/secrets/index.cjs +2 -2
  249. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  250. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  251. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  252. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  253. package/lib/cjs/secrets/model/index.cjs +2 -2
  254. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  255. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  256. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  257. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  258. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  259. package/lib/cjs/secrets/vault/index.cjs +2 -2
  260. package/lib/cjs/shared/runtime.cjs +2 -2
  261. package/lib/cjs/utils.cjs +2 -2
  262. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  263. package/lib/esm/blob/azure/index.js +1 -1
  264. package/lib/esm/blob/core/BlobErrors.js +1 -1
  265. package/lib/esm/blob/core/BlobKey.js +1 -1
  266. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  267. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  268. package/lib/esm/blob/core/BlobTypes.js +1 -1
  269. package/lib/esm/blob/core/BlobValue.js +1 -1
  270. package/lib/esm/blob/core/index.js +1 -1
  271. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  272. package/lib/esm/blob/gcp/index.js +1 -1
  273. package/lib/esm/blob/index.js +1 -1
  274. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  275. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  276. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  277. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  278. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  279. package/lib/esm/blob/ipfs/index.js +1 -1
  280. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  281. package/lib/esm/blob/local/index.js +1 -1
  282. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  283. package/lib/esm/blob/memory/index.js +1 -1
  284. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  285. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  286. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  287. package/lib/esm/blob/s3/index.js +1 -1
  288. package/lib/esm/docker/DockerComposeService.js +1 -1
  289. package/lib/esm/docker/index.js +1 -1
  290. package/lib/esm/feature-flags/constants.js +12 -0
  291. package/lib/esm/feature-flags/decorators.js +49 -0
  292. package/lib/esm/feature-flags/environment.js +18 -0
  293. package/lib/esm/feature-flags/index.js +14 -0
  294. package/lib/esm/feature-flags/models/FeatureFlag.model.js +72 -0
  295. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +69 -0
  296. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +19 -0
  297. package/lib/esm/feature-flags/readers/index.js +2 -0
  298. package/lib/esm/feature-flags/services/FeatureFlag.service.js +250 -0
  299. package/lib/esm/feature-flags/types.js +2 -0
  300. package/lib/esm/feature-flags/utils.js +126 -0
  301. package/lib/esm/graph/engine/constants.js +1 -1
  302. package/lib/esm/graph/engine/decorators.js +1 -1
  303. package/lib/esm/graph/engine/errors/GraphCycleError.js +1 -1
  304. package/lib/esm/graph/engine/errors/GraphExecutionError.js +1 -1
  305. package/lib/esm/graph/engine/errors/GraphInputError.js +1 -1
  306. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +1 -1
  307. package/lib/esm/graph/engine/errors/GraphPinningError.js +1 -1
  308. package/lib/esm/graph/engine/errors/GraphPortError.js +1 -1
  309. package/lib/esm/graph/engine/errors/GraphStoreError.js +1 -1
  310. package/lib/esm/graph/engine/errors/GraphTopologyError.js +1 -1
  311. package/lib/esm/graph/engine/errors/index.js +1 -1
  312. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +1 -1
  313. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +1 -1
  314. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +1 -1
  315. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +1 -1
  316. package/lib/esm/graph/engine/events/index.js +1 -1
  317. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +1 -1
  318. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +1 -1
  319. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +1 -1
  320. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +1 -1
  321. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +1 -1
  322. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +1 -1
  323. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +1 -1
  324. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +1 -1
  325. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +1 -1
  326. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +1 -1
  327. package/lib/esm/graph/engine/execution/index.js +1 -1
  328. package/lib/esm/graph/engine/index.js +1 -1
  329. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +1 -1
  330. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +1 -1
  331. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +1 -1
  332. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +1 -1
  333. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +1 -1
  334. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +1 -1
  335. package/lib/esm/graph/engine/loops/index.js +1 -1
  336. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +1 -1
  337. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +1 -1
  338. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +1 -1
  339. package/lib/esm/graph/engine/pinning/GraphPinningService.js +1 -1
  340. package/lib/esm/graph/engine/pinning/index.js +1 -1
  341. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +1 -1
  342. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +1 -1
  343. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +1 -1
  344. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +1 -1
  345. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +1 -1
  346. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +1 -1
  347. package/lib/esm/graph/engine/planning/GraphTopology.js +1 -1
  348. package/lib/esm/graph/engine/planning/index.js +1 -1
  349. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +1 -1
  350. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +1 -1
  351. package/lib/esm/graph/engine/registry/index.js +1 -1
  352. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  353. package/lib/esm/graph/engine/snapshots/index.js +1 -1
  354. package/lib/esm/graph/engine/store/GraphCachedValue.js +1 -1
  355. package/lib/esm/graph/engine/store/GraphValueKey.js +1 -1
  356. package/lib/esm/graph/engine/store/GraphValueStore.js +1 -1
  357. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +1 -1
  358. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +1 -1
  359. package/lib/esm/graph/engine/store/index.js +1 -1
  360. package/lib/esm/graph/engine/types.js +1 -1
  361. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +1 -1
  362. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +1 -1
  363. package/lib/esm/graph/engine/validation/GraphValueValidator.js +1 -1
  364. package/lib/esm/graph/engine/validation/index.js +1 -1
  365. package/lib/esm/graph/index.js +1 -1
  366. package/lib/esm/graph/shared/constants.js +1 -1
  367. package/lib/esm/graph/shared/index.js +1 -1
  368. package/lib/esm/graph/shared/nodes/agent.js +1 -1
  369. package/lib/esm/graph/shared/nodes/base.js +1 -1
  370. package/lib/esm/graph/shared/nodes/category-styles.js +1 -1
  371. package/lib/esm/graph/shared/nodes/flow-control.js +1 -1
  372. package/lib/esm/graph/shared/nodes/index.js +1 -1
  373. package/lib/esm/graph/shared/nodes/triggers.js +1 -1
  374. package/lib/esm/graph/shared/types.js +1 -1
  375. package/lib/esm/index.js +5 -4
  376. package/lib/esm/keycloak/index.js +1 -1
  377. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  378. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  379. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  380. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  381. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  382. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  383. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  384. package/lib/esm/keycloak/services/index.js +1 -1
  385. package/lib/esm/keycloak/services/runtime.js +1 -1
  386. package/lib/esm/keycloak/types.js +1 -1
  387. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +319 -0
  388. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +32 -0
  389. package/lib/esm/kibana/builders/index.js +3 -0
  390. package/lib/esm/kibana/helpers.js +19 -15
  391. package/lib/esm/kibana/index.js +2 -1
  392. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  393. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  394. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  395. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  396. package/lib/esm/kibana/services/KibanaService.js +1 -1
  397. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  398. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  399. package/lib/esm/kibana/services/index.js +1 -1
  400. package/lib/esm/kibana/services/runtime.js +1 -1
  401. package/lib/esm/kibana/types.js +13 -2
  402. package/lib/esm/loader/ObjectLoader.js +115 -0
  403. package/lib/esm/loader/families.js +66 -0
  404. package/lib/esm/loader/index.js +11 -0
  405. package/lib/esm/loader/types.js +2 -0
  406. package/lib/esm/namespaces/index.js +1 -1
  407. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  408. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  409. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  410. package/lib/esm/namespaces/models/group.model.js +1 -1
  411. package/lib/esm/namespaces/models/index.js +1 -1
  412. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  413. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  414. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  415. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  416. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  417. package/lib/esm/namespaces/models/permission.model.js +1 -1
  418. package/lib/esm/namespaces/models/principal.model.js +1 -1
  419. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  420. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  421. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  422. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  423. package/lib/esm/namespaces/models/role.model.js +1 -1
  424. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  425. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  426. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  427. package/lib/esm/namespaces/models/tenant.model.js +1 -1
  428. package/lib/esm/namespaces/models/user.model.js +1 -1
  429. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  430. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  431. package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
  432. package/lib/esm/namespaces/services/authz.service.js +1 -1
  433. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  434. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  435. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  436. package/lib/esm/namespaces/services/group.service.js +1 -1
  437. package/lib/esm/namespaces/services/index.js +1 -1
  438. package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
  439. package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
  440. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  441. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  442. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  443. package/lib/esm/namespaces/services/permission.service.js +1 -1
  444. package/lib/esm/namespaces/services/principal.service.js +1 -1
  445. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  446. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  447. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  448. package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
  449. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  450. package/lib/esm/namespaces/services/role.service.js +1 -1
  451. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  452. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  453. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  454. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  455. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  456. package/lib/esm/namespaces/services/user.service.js +1 -1
  457. package/lib/esm/namespaces/types.js +1 -1
  458. package/lib/esm/namespaces/utils.js +1 -1
  459. package/lib/esm/nest/decorators.js +12 -0
  460. package/lib/esm/nest/graph/GraphExecutionController.js +1 -1
  461. package/lib/esm/nest/graph/GraphExecutionModule.js +1 -1
  462. package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -1
  463. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +1 -1
  464. package/lib/esm/nest/graph/GraphResultService.js +1 -1
  465. package/lib/esm/nest/graph/GraphWorkflowModel.js +1 -1
  466. package/lib/esm/nest/graph/GraphWorkflowService.js +1 -1
  467. package/lib/esm/nest/graph/index.js +1 -1
  468. package/lib/esm/nest/graph/main.js +1 -1
  469. package/lib/esm/nest/index.js +2 -2
  470. package/lib/esm/nest/keycloakAuthHandler.js +67 -35
  471. package/lib/esm/nest/keycloakModule.js +7 -10
  472. package/lib/esm/nest/logging.js +1 -1
  473. package/lib/esm/nest/types.js +1 -1
  474. package/lib/esm/nest/utils.js +55 -46
  475. package/lib/esm/plugins/contract.js +68 -0
  476. package/lib/esm/plugins/index.js +18 -0
  477. package/lib/esm/plugins/kibana/host.js +19 -0
  478. package/lib/esm/plugins/kibana/index.js +14 -0
  479. package/lib/esm/plugins/kibana/installer.js +140 -0
  480. package/lib/esm/plugins/kibana/manifest.js +32 -0
  481. package/lib/esm/plugins/kibana/templates.js +499 -0
  482. package/lib/esm/plugins/kibana/types.js +10 -0
  483. package/lib/esm/plugins/superset/host.js +21 -0
  484. package/lib/esm/plugins/superset/index.js +16 -0
  485. package/lib/esm/plugins/superset/installer.js +192 -0
  486. package/lib/esm/plugins/superset/manifest.js +30 -0
  487. package/lib/esm/plugins/superset/templates.js +840 -0
  488. package/lib/esm/plugins/superset/types.js +11 -0
  489. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  490. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  491. package/lib/esm/secrets/aws/index.js +1 -1
  492. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  493. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  494. package/lib/esm/secrets/azure/index.js +1 -1
  495. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  496. package/lib/esm/secrets/core/SecretName.js +1 -1
  497. package/lib/esm/secrets/core/SecretReference.js +1 -1
  498. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  499. package/lib/esm/secrets/core/SecretService.js +1 -1
  500. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  501. package/lib/esm/secrets/core/index.js +1 -1
  502. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  503. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  504. package/lib/esm/secrets/gcp/index.js +1 -1
  505. package/lib/esm/secrets/index.js +1 -1
  506. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  507. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  508. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  509. package/lib/esm/secrets/model/Secret.js +1 -1
  510. package/lib/esm/secrets/model/index.js +1 -1
  511. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  512. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  513. package/lib/esm/secrets/onepassword/index.js +1 -1
  514. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  515. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  516. package/lib/esm/secrets/vault/index.js +1 -1
  517. package/lib/esm/shared/runtime.js +1 -1
  518. package/lib/esm/utils.js +1 -1
  519. package/lib/types/feature-flags/constants.d.cts +11 -0
  520. package/lib/types/feature-flags/constants.d.mts +11 -0
  521. package/lib/types/feature-flags/decorators.d.cts +11 -0
  522. package/lib/types/feature-flags/decorators.d.mts +11 -0
  523. package/lib/types/feature-flags/environment.d.cts +11 -0
  524. package/lib/types/feature-flags/environment.d.mts +11 -0
  525. package/lib/types/feature-flags/index.d.cts +13 -0
  526. package/lib/types/feature-flags/index.d.mts +13 -0
  527. package/lib/types/feature-flags/models/FeatureFlag.model.d.cts +16 -0
  528. package/lib/types/feature-flags/models/FeatureFlag.model.d.mts +16 -0
  529. package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.cts +15 -0
  530. package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.mts +15 -0
  531. package/lib/types/feature-flags/readers/FeatureFlagReader.d.cts +10 -0
  532. package/lib/types/feature-flags/readers/FeatureFlagReader.d.mts +10 -0
  533. package/lib/types/feature-flags/readers/index.d.cts +1 -0
  534. package/lib/types/feature-flags/readers/index.d.mts +1 -0
  535. package/lib/types/feature-flags/services/FeatureFlag.service.d.cts +43 -0
  536. package/lib/types/feature-flags/services/FeatureFlag.service.d.mts +43 -0
  537. package/lib/types/feature-flags/types.d.cts +39 -0
  538. package/lib/types/feature-flags/types.d.mts +39 -0
  539. package/lib/types/feature-flags/utils.d.cts +13 -0
  540. package/lib/types/feature-flags/utils.d.mts +13 -0
  541. package/lib/types/index.d.cts +3 -2
  542. package/lib/types/index.d.mts +3 -2
  543. package/lib/types/kibana/builders/KibanaIndexBuilder.d.cts +67 -0
  544. package/lib/types/kibana/builders/KibanaIndexBuilder.d.mts +67 -0
  545. package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.cts +17 -0
  546. package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.mts +17 -0
  547. package/lib/types/kibana/builders/index.d.cts +2 -0
  548. package/lib/types/kibana/builders/index.d.mts +2 -0
  549. package/lib/types/kibana/index.d.cts +1 -0
  550. package/lib/types/kibana/index.d.mts +1 -0
  551. package/lib/types/kibana/types.d.cts +11 -0
  552. package/lib/types/kibana/types.d.mts +11 -0
  553. package/lib/types/loader/ObjectLoader.d.cts +27 -0
  554. package/lib/types/loader/ObjectLoader.d.mts +27 -0
  555. package/lib/types/loader/families.d.cts +34 -0
  556. package/lib/types/loader/families.d.mts +34 -0
  557. package/lib/types/loader/index.d.cts +10 -0
  558. package/lib/types/loader/index.d.mts +10 -0
  559. package/lib/types/loader/types.d.cts +24 -0
  560. package/lib/types/loader/types.d.mts +24 -0
  561. package/lib/types/nest/decorators.d.cts +8 -0
  562. package/lib/types/nest/decorators.d.mts +8 -0
  563. package/lib/types/nest/index.d.cts +1 -1
  564. package/lib/types/nest/index.d.mts +1 -1
  565. package/lib/types/nest/keycloakAuthHandler.d.cts +19 -42
  566. package/lib/types/nest/keycloakAuthHandler.d.mts +19 -42
  567. package/lib/types/nest/keycloakModule.d.cts +3 -5
  568. package/lib/types/nest/keycloakModule.d.mts +3 -5
  569. package/lib/types/nest/types.d.cts +2 -0
  570. package/lib/types/nest/types.d.mts +2 -0
  571. package/lib/types/nest/utils.d.cts +3 -4
  572. package/lib/types/nest/utils.d.mts +3 -4
  573. package/lib/types/plugins/contract.d.cts +180 -0
  574. package/lib/types/plugins/contract.d.mts +180 -0
  575. package/lib/types/plugins/index.d.cts +17 -0
  576. package/lib/types/plugins/index.d.mts +17 -0
  577. package/lib/types/plugins/kibana/host.d.cts +18 -0
  578. package/lib/types/plugins/kibana/host.d.mts +18 -0
  579. package/lib/types/plugins/kibana/index.d.cts +13 -0
  580. package/lib/types/plugins/kibana/index.d.mts +13 -0
  581. package/lib/types/plugins/kibana/installer.d.cts +45 -0
  582. package/lib/types/plugins/kibana/installer.d.mts +45 -0
  583. package/lib/types/plugins/kibana/manifest.d.cts +31 -0
  584. package/lib/types/plugins/kibana/manifest.d.mts +31 -0
  585. package/lib/types/plugins/kibana/templates.d.cts +12 -0
  586. package/lib/types/plugins/kibana/templates.d.mts +12 -0
  587. package/lib/types/plugins/kibana/types.d.cts +9 -0
  588. package/lib/types/plugins/kibana/types.d.mts +9 -0
  589. package/lib/types/plugins/superset/host.d.cts +20 -0
  590. package/lib/types/plugins/superset/host.d.mts +20 -0
  591. package/lib/types/plugins/superset/index.d.cts +15 -0
  592. package/lib/types/plugins/superset/index.d.mts +15 -0
  593. package/lib/types/plugins/superset/installer.d.cts +70 -0
  594. package/lib/types/plugins/superset/installer.d.mts +70 -0
  595. package/lib/types/plugins/superset/manifest.d.cts +28 -0
  596. package/lib/types/plugins/superset/manifest.d.mts +28 -0
  597. package/lib/types/plugins/superset/templates.d.cts +12 -0
  598. package/lib/types/plugins/superset/templates.d.mts +12 -0
  599. package/lib/types/plugins/superset/types.d.cts +10 -0
  600. package/lib/types/plugins/superset/types.d.mts +10 -0
  601. package/package.json +62 -3
  602. package/plugins/kibana/.gitignore +16 -0
  603. package/plugins/kibana/Dockerfile +19 -0
  604. package/plugins/kibana/docker-compose.yml +50 -0
  605. package/plugins/kibana/host/index.html +101 -0
  606. package/plugins/kibana/setup-dashboards.sh +84 -0
  607. package/plugins/superset/.gitignore +17 -0
  608. package/plugins/superset/Dockerfile +79 -0
  609. package/plugins/superset/docker-compose.yml +62 -0
  610. package/plugins/superset/host/index.html +168 -0
  611. package/plugins/superset/setup-dashboards.sh +106 -0
  612. package/plugins/superset/superset_config.py +49 -0
  613. package/dist/integrations.cjs.map +0 -1
  614. package/dist/integrations.js.map +0 -1
  615. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  616. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  617. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  618. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  619. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  620. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  621. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  622. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  623. package/lib/cjs/blob/core/index.cjs.map +0 -1
  624. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  625. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  626. package/lib/cjs/blob/index.cjs.map +0 -1
  627. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
  628. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
  629. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
  630. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
  631. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
  632. package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
  633. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  634. package/lib/cjs/blob/local/index.cjs.map +0 -1
  635. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  636. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  637. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  638. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  639. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  640. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  641. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  642. package/lib/cjs/docker/index.cjs.map +0 -1
  643. package/lib/cjs/graph/engine/constants.cjs.map +0 -1
  644. package/lib/cjs/graph/engine/decorators.cjs.map +0 -1
  645. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +0 -1
  646. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +0 -1
  647. package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +0 -1
  648. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +0 -1
  649. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +0 -1
  650. package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +0 -1
  651. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +0 -1
  652. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +0 -1
  653. package/lib/cjs/graph/engine/errors/index.cjs.map +0 -1
  654. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +0 -1
  655. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +0 -1
  656. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +0 -1
  657. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +0 -1
  658. package/lib/cjs/graph/engine/events/index.cjs.map +0 -1
  659. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +0 -1
  660. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +0 -1
  661. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +0 -1
  662. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +0 -1
  663. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +0 -1
  664. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +0 -1
  665. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +0 -1
  666. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs.map +0 -1
  667. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs.map +0 -1
  668. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
  669. package/lib/cjs/graph/engine/execution/index.cjs.map +0 -1
  670. package/lib/cjs/graph/engine/index.cjs.map +0 -1
  671. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +0 -1
  672. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  673. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +0 -1
  674. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +0 -1
  675. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  676. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  677. package/lib/cjs/graph/engine/loops/index.cjs.map +0 -1
  678. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
  679. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +0 -1
  680. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +0 -1
  681. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +0 -1
  682. package/lib/cjs/graph/engine/pinning/index.cjs.map +0 -1
  683. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +0 -1
  684. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +0 -1
  685. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +0 -1
  686. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +0 -1
  687. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +0 -1
  688. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +0 -1
  689. package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +0 -1
  690. package/lib/cjs/graph/engine/planning/index.cjs.map +0 -1
  691. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
  692. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +0 -1
  693. package/lib/cjs/graph/engine/registry/index.cjs.map +0 -1
  694. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
  695. package/lib/cjs/graph/engine/snapshots/index.cjs.map +0 -1
  696. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +0 -1
  697. package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +0 -1
  698. package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +0 -1
  699. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +0 -1
  700. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
  701. package/lib/cjs/graph/engine/store/index.cjs.map +0 -1
  702. package/lib/cjs/graph/engine/types.cjs.map +0 -1
  703. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +0 -1
  704. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +0 -1
  705. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +0 -1
  706. package/lib/cjs/graph/engine/validation/index.cjs.map +0 -1
  707. package/lib/cjs/graph/index.cjs.map +0 -1
  708. package/lib/cjs/graph/shared/constants.cjs.map +0 -1
  709. package/lib/cjs/graph/shared/index.cjs.map +0 -1
  710. package/lib/cjs/graph/shared/nodes/agent.cjs.map +0 -1
  711. package/lib/cjs/graph/shared/nodes/base.cjs.map +0 -1
  712. package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +0 -1
  713. package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +0 -1
  714. package/lib/cjs/graph/shared/nodes/index.cjs.map +0 -1
  715. package/lib/cjs/graph/shared/nodes/triggers.cjs.map +0 -1
  716. package/lib/cjs/graph/shared/types.cjs.map +0 -1
  717. package/lib/cjs/index.cjs.map +0 -1
  718. package/lib/cjs/keycloak/index.cjs.map +0 -1
  719. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  720. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  721. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  722. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  723. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  724. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  725. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  726. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  727. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  728. package/lib/cjs/keycloak/types.cjs.map +0 -1
  729. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  730. package/lib/cjs/kibana/index.cjs.map +0 -1
  731. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  732. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  733. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  734. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  735. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  736. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  737. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  738. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  739. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  740. package/lib/cjs/kibana/types.cjs.map +0 -1
  741. package/lib/cjs/namespaces/index.cjs.map +0 -1
  742. package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
  743. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
  744. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
  745. package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
  746. package/lib/cjs/namespaces/models/index.cjs.map +0 -1
  747. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
  748. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
  749. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
  750. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
  751. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
  752. package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
  753. package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
  754. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
  755. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
  756. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
  757. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
  758. package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
  759. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
  760. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
  761. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
  762. package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
  763. package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
  764. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
  765. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
  766. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
  767. package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
  768. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
  769. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
  770. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
  771. package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
  772. package/lib/cjs/namespaces/services/index.cjs.map +0 -1
  773. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
  774. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
  775. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
  776. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
  777. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
  778. package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
  779. package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
  780. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
  781. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
  782. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
  783. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
  784. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
  785. package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
  786. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
  787. package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
  788. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
  789. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
  790. package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
  791. package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
  792. package/lib/cjs/namespaces/types.cjs.map +0 -1
  793. package/lib/cjs/namespaces/utils.cjs.map +0 -1
  794. package/lib/cjs/nest/authService.cjs +0 -91
  795. package/lib/cjs/nest/authService.cjs.map +0 -1
  796. package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +0 -1
  797. package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +0 -1
  798. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +0 -1
  799. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +0 -1
  800. package/lib/cjs/nest/graph/GraphResultService.cjs.map +0 -1
  801. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs.map +0 -1
  802. package/lib/cjs/nest/graph/GraphWorkflowService.cjs.map +0 -1
  803. package/lib/cjs/nest/graph/index.cjs.map +0 -1
  804. package/lib/cjs/nest/graph/main.cjs.map +0 -1
  805. package/lib/cjs/nest/index.cjs.map +0 -1
  806. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  807. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  808. package/lib/cjs/nest/logging.cjs.map +0 -1
  809. package/lib/cjs/nest/types.cjs.map +0 -1
  810. package/lib/cjs/nest/utils.cjs.map +0 -1
  811. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  812. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  813. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  814. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  815. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  816. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  817. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  818. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  819. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  820. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  821. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  822. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  823. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  824. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  825. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  826. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  827. package/lib/cjs/secrets/index.cjs.map +0 -1
  828. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  829. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  830. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  831. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  832. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  833. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  834. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  835. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  836. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  837. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  838. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  839. package/lib/cjs/shared/runtime.cjs.map +0 -1
  840. package/lib/cjs/utils.cjs.map +0 -1
  841. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  842. package/lib/esm/blob/azure/index.js.map +0 -1
  843. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  844. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  845. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  846. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  847. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  848. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  849. package/lib/esm/blob/core/index.js.map +0 -1
  850. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  851. package/lib/esm/blob/gcp/index.js.map +0 -1
  852. package/lib/esm/blob/index.js.map +0 -1
  853. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
  854. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
  855. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
  856. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
  857. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
  858. package/lib/esm/blob/ipfs/index.js.map +0 -1
  859. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  860. package/lib/esm/blob/local/index.js.map +0 -1
  861. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  862. package/lib/esm/blob/memory/index.js.map +0 -1
  863. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  864. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  865. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  866. package/lib/esm/blob/s3/index.js.map +0 -1
  867. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  868. package/lib/esm/docker/index.js.map +0 -1
  869. package/lib/esm/graph/engine/constants.js.map +0 -1
  870. package/lib/esm/graph/engine/decorators.js.map +0 -1
  871. package/lib/esm/graph/engine/errors/GraphCycleError.js.map +0 -1
  872. package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +0 -1
  873. package/lib/esm/graph/engine/errors/GraphInputError.js.map +0 -1
  874. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +0 -1
  875. package/lib/esm/graph/engine/errors/GraphPinningError.js.map +0 -1
  876. package/lib/esm/graph/engine/errors/GraphPortError.js.map +0 -1
  877. package/lib/esm/graph/engine/errors/GraphStoreError.js.map +0 -1
  878. package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +0 -1
  879. package/lib/esm/graph/engine/errors/index.js.map +0 -1
  880. package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +0 -1
  881. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +0 -1
  882. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +0 -1
  883. package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +0 -1
  884. package/lib/esm/graph/engine/events/index.js.map +0 -1
  885. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +0 -1
  886. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +0 -1
  887. package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +0 -1
  888. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +0 -1
  889. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +0 -1
  890. package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +0 -1
  891. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +0 -1
  892. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js.map +0 -1
  893. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js.map +0 -1
  894. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +0 -1
  895. package/lib/esm/graph/engine/execution/index.js.map +0 -1
  896. package/lib/esm/graph/engine/index.js.map +0 -1
  897. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +0 -1
  898. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +0 -1
  899. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +0 -1
  900. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +0 -1
  901. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +0 -1
  902. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +0 -1
  903. package/lib/esm/graph/engine/loops/index.js.map +0 -1
  904. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +0 -1
  905. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +0 -1
  906. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +0 -1
  907. package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +0 -1
  908. package/lib/esm/graph/engine/pinning/index.js.map +0 -1
  909. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +0 -1
  910. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +0 -1
  911. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +0 -1
  912. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +0 -1
  913. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +0 -1
  914. package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +0 -1
  915. package/lib/esm/graph/engine/planning/GraphTopology.js.map +0 -1
  916. package/lib/esm/graph/engine/planning/index.js.map +0 -1
  917. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +0 -1
  918. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +0 -1
  919. package/lib/esm/graph/engine/registry/index.js.map +0 -1
  920. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
  921. package/lib/esm/graph/engine/snapshots/index.js.map +0 -1
  922. package/lib/esm/graph/engine/store/GraphCachedValue.js.map +0 -1
  923. package/lib/esm/graph/engine/store/GraphValueKey.js.map +0 -1
  924. package/lib/esm/graph/engine/store/GraphValueStore.js.map +0 -1
  925. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +0 -1
  926. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
  927. package/lib/esm/graph/engine/store/index.js.map +0 -1
  928. package/lib/esm/graph/engine/types.js.map +0 -1
  929. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +0 -1
  930. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +0 -1
  931. package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +0 -1
  932. package/lib/esm/graph/engine/validation/index.js.map +0 -1
  933. package/lib/esm/graph/index.js.map +0 -1
  934. package/lib/esm/graph/shared/constants.js.map +0 -1
  935. package/lib/esm/graph/shared/index.js.map +0 -1
  936. package/lib/esm/graph/shared/nodes/agent.js.map +0 -1
  937. package/lib/esm/graph/shared/nodes/base.js.map +0 -1
  938. package/lib/esm/graph/shared/nodes/category-styles.js.map +0 -1
  939. package/lib/esm/graph/shared/nodes/flow-control.js.map +0 -1
  940. package/lib/esm/graph/shared/nodes/index.js.map +0 -1
  941. package/lib/esm/graph/shared/nodes/triggers.js.map +0 -1
  942. package/lib/esm/graph/shared/types.js.map +0 -1
  943. package/lib/esm/index.js.map +0 -1
  944. package/lib/esm/keycloak/index.js.map +0 -1
  945. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  946. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  947. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  948. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  949. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  950. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  951. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  952. package/lib/esm/keycloak/services/index.js.map +0 -1
  953. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  954. package/lib/esm/keycloak/types.js.map +0 -1
  955. package/lib/esm/kibana/helpers.js.map +0 -1
  956. package/lib/esm/kibana/index.js.map +0 -1
  957. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  958. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  959. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  960. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  961. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  962. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  963. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  964. package/lib/esm/kibana/services/index.js.map +0 -1
  965. package/lib/esm/kibana/services/runtime.js.map +0 -1
  966. package/lib/esm/kibana/types.js.map +0 -1
  967. package/lib/esm/namespaces/index.js.map +0 -1
  968. package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
  969. package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
  970. package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
  971. package/lib/esm/namespaces/models/group.model.js.map +0 -1
  972. package/lib/esm/namespaces/models/index.js.map +0 -1
  973. package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
  974. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
  975. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
  976. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
  977. package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
  978. package/lib/esm/namespaces/models/permission.model.js.map +0 -1
  979. package/lib/esm/namespaces/models/principal.model.js.map +0 -1
  980. package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
  981. package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
  982. package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
  983. package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
  984. package/lib/esm/namespaces/models/role.model.js.map +0 -1
  985. package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
  986. package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
  987. package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
  988. package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
  989. package/lib/esm/namespaces/models/user.model.js.map +0 -1
  990. package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
  991. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
  992. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
  993. package/lib/esm/namespaces/services/authz.service.js.map +0 -1
  994. package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
  995. package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
  996. package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
  997. package/lib/esm/namespaces/services/group.service.js.map +0 -1
  998. package/lib/esm/namespaces/services/index.js.map +0 -1
  999. package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
  1000. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
  1001. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
  1002. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
  1003. package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
  1004. package/lib/esm/namespaces/services/permission.service.js.map +0 -1
  1005. package/lib/esm/namespaces/services/principal.service.js.map +0 -1
  1006. package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
  1007. package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
  1008. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
  1009. package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
  1010. package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
  1011. package/lib/esm/namespaces/services/role.service.js.map +0 -1
  1012. package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
  1013. package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
  1014. package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
  1015. package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
  1016. package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
  1017. package/lib/esm/namespaces/services/user.service.js.map +0 -1
  1018. package/lib/esm/namespaces/types.js.map +0 -1
  1019. package/lib/esm/namespaces/utils.js.map +0 -1
  1020. package/lib/esm/nest/authService.js +0 -86
  1021. package/lib/esm/nest/authService.js.map +0 -1
  1022. package/lib/esm/nest/graph/GraphExecutionController.js.map +0 -1
  1023. package/lib/esm/nest/graph/GraphExecutionModule.js.map +0 -1
  1024. package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +0 -1
  1025. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +0 -1
  1026. package/lib/esm/nest/graph/GraphResultService.js.map +0 -1
  1027. package/lib/esm/nest/graph/GraphWorkflowModel.js.map +0 -1
  1028. package/lib/esm/nest/graph/GraphWorkflowService.js.map +0 -1
  1029. package/lib/esm/nest/graph/index.js.map +0 -1
  1030. package/lib/esm/nest/graph/main.js.map +0 -1
  1031. package/lib/esm/nest/index.js.map +0 -1
  1032. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  1033. package/lib/esm/nest/keycloakModule.js.map +0 -1
  1034. package/lib/esm/nest/logging.js.map +0 -1
  1035. package/lib/esm/nest/types.js.map +0 -1
  1036. package/lib/esm/nest/utils.js.map +0 -1
  1037. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  1038. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  1039. package/lib/esm/secrets/aws/index.js.map +0 -1
  1040. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  1041. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  1042. package/lib/esm/secrets/azure/index.js.map +0 -1
  1043. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  1044. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  1045. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  1046. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  1047. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  1048. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  1049. package/lib/esm/secrets/core/index.js.map +0 -1
  1050. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  1051. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  1052. package/lib/esm/secrets/gcp/index.js.map +0 -1
  1053. package/lib/esm/secrets/index.js.map +0 -1
  1054. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  1055. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  1056. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  1057. package/lib/esm/secrets/model/Secret.js.map +0 -1
  1058. package/lib/esm/secrets/model/index.js.map +0 -1
  1059. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  1060. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  1061. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  1062. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  1063. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  1064. package/lib/esm/secrets/vault/index.js.map +0 -1
  1065. package/lib/esm/shared/runtime.js.map +0 -1
  1066. package/lib/esm/utils.js.map +0 -1
  1067. package/lib/types/nest/authService.d.cts +0 -63
  1068. package/lib/types/nest/authService.d.mts +0 -63
@@ -398,5 +398,5 @@ class OnePasswordSecretService extends core_1.ClientBasedService {
398
398
  }
399
399
  }
400
400
  exports.OnePasswordSecretService = OnePasswordSecretService;
401
- //# sourceMappingURL=OnePasswordSecretService.js.map
402
- //# sourceMappingURL=OnePasswordSecretService.cjs.map
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3JldHMvb25lcGFzc3dvcmQvT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWtCLDJCQUEyQjtBQU9qRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsMkJBQTJCO0FBQzdFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEdBRXpCLDJCQUEyQjtBQUM1QixPQUFPLEVBQ0wsa0JBQWtCLEdBR25CLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsa0JBRzdDO0lBSEQ7O1FBSVcsYUFBUSxHQUFtQixXQUFXLENBQUM7SUFvaUJsRCxDQUFDO0lBbGlCQyxLQUFLLENBQUMsVUFBVSxDQUNkLEdBQUcsSUFBeUI7UUFFNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBbUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxhQUFhLENBQ3JCLHNEQUFzRCxDQUN2RCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUNULElBQWdCLEVBQ2hCLEtBQVEsRUFDUixHQUFHLElBQTZCO1FBRWhDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFL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QUFlLENBQzNCLEtBQWEsRUFDYixPQUFlO1FBRWYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsT0FBTyxRQUFRLENBQUMsQ0FBQztZQUN0RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQWMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWNyZXRFcnJvciwgU2VjcmV0UHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vc2VjcmV0cy9jb3JlXCI7XG5pbXBvcnQge1xuICBTZWNyZXROYW1lLFxuICBTZWNyZXRQYXlsb2FkLFxuICBTZWNyZXRSZWZlcmVuY2UsXG4gIFNlY3JldE1ldGFkYXRhLFxufSBmcm9tIFwiLi4vLi4vc2VjcmV0cy9jb3JlXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVNlY3JldE5hbWUsIG5vcm1hbGl6ZVNlY3JldE5hbWUgfSBmcm9tIFwiLi4vLi4vc2VjcmV0cy9jb3JlXCI7XG5pbXBvcnQge1xuICBzZXJpYWxpemVTZWNyZXRQYXlsb2FkLFxuICBkZXNlcmlhbGl6ZVNlY3JldFBheWxvYWQsXG4gIHR5cGUgU2VyaWFsaXplZFNlY3JldFBheWxvYWQsXG59IGZyb20gXCIuLi8uLi9zZWNyZXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIENsaWVudEJhc2VkU2VydmljZSxcbiAgdHlwZSBDb250ZXh0dWFsQXJncyxcbiAgdHlwZSBNYXliZUNvbnRleHR1YWxBcmcsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnIH0gZnJvbSBcIi4vT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBPbmVQYXNzd29yZFNlY3JldFNlcnZpY2UgZXh0ZW5kcyBDbGllbnRCYXNlZFNlcnZpY2U8XG4gIHVua25vd24sXG4gIE9uZVBhc3N3b3JkU2VjcmV0U2VydmljZUNvbmZpZ1xuPiB7XG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBTZWNyZXRQcm92aWRlciA9IFwiMXBhc3N3b3JkXCI7XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+XG4gICk6IFByb21pc2U8eyBjb25maWc6IE9uZVBhc3N3b3JkU2VjcmV0U2VydmljZUNvbmZpZzsgY2xpZW50OiB1bmtub3duIH0+IHtcbiAgICBjb25zdCBjb25maWcgPSBhcmdzWzBdIGFzIE9uZVBhc3N3b3JkU2VjcmV0U2VydmljZUNvbmZpZztcbiAgICBpZiAoIWNvbmZpZy5jb25uZWN0SG9zdCkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiMVBhc3N3b3JkIHNlcnZpY2UgcmVxdWlyZXMgY29ubmVjdEhvc3QgY29uZmlndXJhdGlvblwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4geyBjb25maWcsIGNsaWVudDoge30gfTtcbiAgfVxuXG4gIGFzeW5jIHN0b3JlPFQgZXh0ZW5kcyBTZWNyZXRQYXlsb2FkID0gU2VjcmV0UGF5bG9hZD4oXG4gICAgbmFtZTogU2VjcmV0TmFtZSxcbiAgICB2YWx1ZTogVCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPFNlY3JldFJlZmVyZW5jZT4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJzdG9yZVwiLCB0cnVlKSkuZm9yKHRoaXMuc3RvcmUpO1xuICAgIGxvZy52ZXJib3NlKGBTdG9yaW5nIHNlY3JldCAke25hbWV9YCk7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlU2VjcmV0TmFtZShuYW1lKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVNlY3JldFBheWxvYWQodmFsdWUpO1xuICAgIGNvbnN0IHZhdWx0SWQgPSB0aGlzLmNvbmZpZy52YXVsdElkO1xuXG4gICAgaWYgKCF2YXVsdElkKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCIxUGFzc3dvcmQgcHJvdmlkZXIgcmVxdWlyZXMgYSB2YXVsdCBJRCBpbiBjb25maWd1cmF0aW9uXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IHtcbiAgICAgIHRpdGxlOiBub3JtYWxpemVkTmFtZSxcbiAgICAgIGNhdGVnb3J5OiBcImxvZ2luXCIsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBcInNlY3JldFwiLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVkLnZhbHVlLFxuICAgICAgICAgIHB1cnBvc2U6IFwicGFzc3dvcmRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBub3RlczogYENyZWF0ZWQgYnkgREVDQUYgU2VjcmV0IFNlcnZpY2UgYXQgJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5wb3N0UmVxdWVzdChcbiAgICAgICAgYC92MS92YXVsdHMvJHt2YXVsdElkfS9pdGVtc2AsXG4gICAgICAgIGl0ZW1cbiAgICAgICk7XG5cbiAgICAgIGlmICghcmVzcG9uc2UuaWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNlY3JldEVycm9yKFxuICAgICAgICAgIFwiU0VDUkVUX1BST1ZJREVSX0NPTkZMSUNUXCIsXG4gICAgICAgICAgXCJGYWlsZWQgdG8gc3RvcmUgc2VjcmV0OiBObyBpdGVtIElEIHJldHVybmVkXCJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICAgIG5hbWU6IG5vcm1hbGl6ZWROYW1lLFxuICAgICAgICB2ZXJzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgaWQ6IHJlc3BvbnNlLmlkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXRyaWV2ZTxUIGV4dGVuZHMgU2VjcmV0UGF5bG9hZCA9IFNlY3JldFBheWxvYWQ+KFxuICAgIG5hbWVPclJlZjogU2VjcmV0TmFtZSB8IFNlY3JldFJlZmVyZW5jZSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwicmV0cmlldmVcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMucmV0cmlldmVcbiAgICApO1xuICAgIGNvbnN0IG5hbWVTdHIgPSB0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiID8gbmFtZU9yUmVmIDogbmFtZU9yUmVmLm5hbWU7XG4gICAgbG9nLnZlcmJvc2UoYFJldHJpZXZpbmcgc2VjcmV0ICR7bmFtZVN0cn1gKTtcblxuICAgIGxldCBuYW1lOiBzdHJpbmc7XG5cbiAgICBpZiAodHlwZW9mIG5hbWVPclJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbmFtZSA9IG5hbWVPclJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWVPclJlZi5uYW1lO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvciBhcyBFcnJvcik7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVTZWNyZXROYW1lKG5hbWUpO1xuICAgIGNvbnN0IHZhdWx0SWQgPSB0aGlzLmNvbmZpZy52YXVsdElkO1xuXG4gICAgaWYgKCF2YXVsdElkKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCIxUGFzc3dvcmQgcHJvdmlkZXIgcmVxdWlyZXMgYSB2YXVsdCBJRCBpbiBjb25maWd1cmF0aW9uXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUgJiZcbiAgICAgIHRoaXMuY29uZmlnLml0ZW1JZFRlbXBsYXRlLmluY2x1ZGVzKFwiJHtuYW1lfVwiKVxuICAgICkge1xuICAgICAgaXRlbUlkID0gdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUucmVwbGFjZShcIiR7bmFtZX1cIiwgbm9ybWFsaXplZE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMuZ2V0SXRlbXNCeVRpdGxlKG5vcm1hbGl6ZWROYW1lLCB2YXVsdElkKTtcbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgICAgYFNlY3JldCBcIiR7bm9ybWFsaXplZE5hbWV9XCIgbm90IGZvdW5kIGluIHZhdWx0YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaXRlbUlkID0gaXRlbXNbMF0uaWQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLmdldFJlcXVlc3QoXG4gICAgICAgIGAvdjEvdmF1bHRzLyR7dmF1bHRJZH0vaXRlbXMvJHtpdGVtSWR9YFxuICAgICAgKTtcblxuICAgICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICAgIGlmIChpdGVtLmZpZWxkcyAmJiBBcnJheS5pc0FycmF5KGl0ZW0uZmllbGRzKSkge1xuICAgICAgICBjb25zdCBzZWNyZXRGaWVsZCA9IGl0ZW0uZmllbGRzLmZpbmQoXG4gICAgICAgICAgKGY6IGFueSkgPT4gZi5wdXJwb3NlID09PSBcInBhc3N3b3JkXCIgfHwgZi5sYWJlbCA9PT0gXCJzZWNyZXRcIlxuICAgICAgICApO1xuICAgICAgICBpZiAoc2VjcmV0RmllbGQgJiYgc2VjcmV0RmllbGQudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlID0gc2VjcmV0RmllbGQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWx1ZSAmJiBpdGVtLmRldGFpbHMgJiYgaXRlbS5kZXRhaWxzLmZpZWxkcykge1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBBcnJheS5pc0FycmF5KGl0ZW0uZGV0YWlscy5maWVsZHMpXG4gICAgICAgICAgPyBpdGVtLmRldGFpbHMuZmllbGRzXG4gICAgICAgICAgOiBbXTtcbiAgICAgICAgY29uc3Qgc2VjcmV0RmllbGQgPSBmaWVsZHMuZmluZChcbiAgICAgICAgICAoZjogYW55KSA9PiBmLnB1cnBvc2UgPT09IFwicGFzc3dvcmRcIiB8fCBmLmxhYmVsID09PSBcInNlY3JldFwiXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzZWNyZXRGaWVsZCAmJiBzZWNyZXRGaWVsZC52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWUgPSBzZWNyZXRGaWVsZC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRocm93IG5ldyBTZWNyZXRFcnJvcihcbiAgICAgICAgICBcIlNFQ1JFVF9OT1RfRk9VTkRcIixcbiAgICAgICAgICBgTm8gc2VjcmV0IHZhbHVlIGZvdW5kIGZvciBpdGVtIFwiJHtpdGVtSWR9XCJgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBheWxvYWQ6IFNlcmlhbGl6ZWRTZWNyZXRQYXlsb2FkID0ge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGRlc2VyaWFsaXplU2VjcmV0UGF5bG9hZChwYXlsb2FkKSBhcyBUO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZXJyb3IgYXMgRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShcbiAgICBuYW1lT3JSZWY6IFNlY3JldE5hbWUgfCBTZWNyZXRSZWZlcmVuY2UsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImRlbGV0ZVwiLCB0cnVlKSkuZm9yKHRoaXMuZGVsZXRlKTtcbiAgICBjb25zdCBuYW1lU3RyID0gdHlwZW9mIG5hbWVPclJlZiA9PT0gXCJzdHJpbmdcIiA/IG5hbWVPclJlZiA6IG5hbWVPclJlZi5uYW1lO1xuICAgIGxvZy52ZXJib3NlKGBEZWxldGluZyBzZWNyZXQgJHtuYW1lU3RyfWApO1xuXG4gICAgbGV0IG5hbWU6IHN0cmluZztcblxuICAgIGlmICh0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBuYW1lID0gbmFtZU9yUmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lID0gbmFtZU9yUmVmLm5hbWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlU2VjcmV0TmFtZShuYW1lKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgY29uc3QgdmF1bHRJZCA9IHRoaXMuY29uZmlnLnZhdWx0SWQ7XG5cbiAgICBpZiAoIXZhdWx0SWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIjFQYXNzd29yZCBwcm92aWRlciByZXF1aXJlcyBhIHZhdWx0IElEIGluIGNvbmZpZ3VyYXRpb25cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZSAmJlxuICAgICAgdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUuaW5jbHVkZXMoXCIke25hbWV9XCIpXG4gICAgKSB7XG4gICAgICBpdGVtSWQgPSB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZS5yZXBsYWNlKFwiJHtuYW1lfVwiLCBub3JtYWxpemVkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgdGhpcy5nZXRJdGVtc0J5VGl0bGUobm9ybWFsaXplZE5hbWUsIHZhdWx0SWQpO1xuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpdGVtSWQgPSBpdGVtc1swXS5pZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVSZXF1ZXN0KGAvdjEvdmF1bHRzLyR7dmF1bHRJZH0vaXRlbXMvJHtpdGVtSWR9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvciBhcyBFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhpc3RzKFxuICAgIG5hbWVPclJlZjogU2VjcmV0TmFtZSB8IFNlY3JldFJlZmVyZW5jZSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiZXhpc3RzXCIsIHRydWUpKS5mb3IodGhpcy5leGlzdHMpO1xuICAgIGNvbnN0IG5hbWVTdHIgPSB0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiID8gbmFtZU9yUmVmIDogbmFtZU9yUmVmLm5hbWU7XG4gICAgbG9nLnZlcmJvc2UoYENoZWNraW5nIGlmIHNlY3JldCAke25hbWVTdHJ9IGV4aXN0c2ApO1xuXG4gICAgbGV0IG5hbWU6IHN0cmluZztcblxuICAgIGlmICh0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBuYW1lID0gbmFtZU9yUmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lID0gbmFtZU9yUmVmLm5hbWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlU2VjcmV0TmFtZShuYW1lKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgY29uc3QgdmF1bHRJZCA9IHRoaXMuY29uZmlnLnZhdWx0SWQ7XG5cbiAgICBpZiAoIXZhdWx0SWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIjFQYXNzd29yZCBwcm92aWRlciByZXF1aXJlcyBhIHZhdWx0IElEIGluIGNvbmZpZ3VyYXRpb25cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZSAmJlxuICAgICAgdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUuaW5jbHVkZXMoXCIke25hbWV9XCIpXG4gICAgKSB7XG4gICAgICBpdGVtSWQgPSB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZS5yZXBsYWNlKFwiJHtuYW1lfVwiLCBub3JtYWxpemVkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgdGhpcy5nZXRJdGVtc0J5VGl0bGUobm9ybWFsaXplZE5hbWUsIHZhdWx0SWQpO1xuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpdGVtSWQgPSBpdGVtc1swXS5pZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRSZXF1ZXN0KGAvdjEvdmF1bHRzLyR7dmF1bHRJZH0vaXRlbXMvJHtpdGVtSWR9YCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgRXJyb3I7XG4gICAgICBpZiAoXG4gICAgICAgIGVyci5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJub3QgZm91bmRcIikgfHxcbiAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoXCI0MDRcIilcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsaXN0KC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+KTogUHJvbWlzZTxTZWNyZXRNZXRhZGF0YVtdPiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImxpc3RcIiwgdHJ1ZSkpLmZvcih0aGlzLmxpc3QpO1xuICAgIGxvZy52ZXJib3NlKFwiTGlzdGluZyBzZWNyZXRzXCIpO1xuICAgIGNvbnN0IHJlc3VsdDogU2VjcmV0TWV0YWRhdGFbXSA9IFtdO1xuICAgIGNvbnN0IHZhdWx0SWQgPSB0aGlzLmNvbmZpZy52YXVsdElkO1xuXG4gICAgaWYgKCF2YXVsdElkKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMuZ2V0UmVxdWVzdChgL3YxL3ZhdWx0cy8ke3ZhdWx0SWR9L2l0ZW1zYCk7XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBBcnJheS5pc0FycmF5KGl0ZW1zKSA/IGl0ZW1zIDogW2l0ZW1zXSkge1xuICAgICAgICBpZiAoaXRlbS5pZCAmJiBpdGVtLnRpdGxlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICAgICAgICBuYW1lOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgdmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBpdGVtLmNyZWF0ZWRBdCA/IG5ldyBEYXRlKGl0ZW0uY3JlYXRlZEF0KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVwZGF0ZWRBdDogaXRlbS51cGRhdGVkQXQgPyBuZXcgRGF0ZShpdGVtLnVwZGF0ZWRBdCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgZXh0ZXJuYWxJZDogaXRlbS5pZCxcbiAgICAgICAgICAgIHRhZ3M6IGl0ZW0uY2F0ZWdvcnkgPyB7IGNhdGVnb3J5OiBpdGVtLmNhdGVnb3J5IH0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtZXRhZGF0YShcbiAgICBuYW1lT3JSZWY6IFNlY3JldE5hbWUgfCBTZWNyZXRSZWZlcmVuY2UsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxTZWNyZXRNZXRhZGF0YSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJtZXRhZGF0YVwiLCB0cnVlKSkuZm9yKFxuICAgICAgdGhpcy5tZXRhZGF0YVxuICAgICk7XG4gICAgY29uc3QgbmFtZVN0ciA9IHR5cGVvZiBuYW1lT3JSZWYgPT09IFwic3RyaW5nXCIgPyBuYW1lT3JSZWYgOiBuYW1lT3JSZWYubmFtZTtcbiAgICBsb2cudmVyYm9zZShgR2V0dGluZyBtZXRhZGF0YSBmb3Igc2VjcmV0ICR7bmFtZVN0cn1gKTtcblxuICAgIGxldCBuYW1lOiBzdHJpbmc7XG5cbiAgICBpZiAodHlwZW9mIG5hbWVPclJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbmFtZSA9IG5hbWVPclJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWVPclJlZi5uYW1lO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvciBhcyBFcnJvcik7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVTZWNyZXROYW1lKG5hbWUpO1xuICAgIGNvbnN0IHZhdWx0SWQgPSB0aGlzLmNvbmZpZy52YXVsdElkO1xuXG4gICAgaWYgKCF2YXVsdElkKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCIxUGFzc3dvcmQgcHJvdmlkZXIgcmVxdWlyZXMgYSB2YXVsdCBJRCBpbiBjb25maWd1cmF0aW9uXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGl0ZW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUgJiZcbiAgICAgIHRoaXMuY29uZmlnLml0ZW1JZFRlbXBsYXRlLmluY2x1ZGVzKFwiJHtuYW1lfVwiKVxuICAgICkge1xuICAgICAgaXRlbUlkID0gdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUucmVwbGFjZShcIiR7bmFtZX1cIiwgbm9ybWFsaXplZE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMuZ2V0SXRlbXNCeVRpdGxlKG5vcm1hbGl6ZWROYW1lLCB2YXVsdElkKTtcbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGl0ZW1JZCA9IGl0ZW1zWzBdLmlkO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVtID0gYXdhaXQgdGhpcy5nZXRSZXF1ZXN0KFxuICAgICAgICBgL3YxL3ZhdWx0cy8ke3ZhdWx0SWR9L2l0ZW1zLyR7aXRlbUlkfWBcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG1ldGE6IFNlY3JldE1ldGFkYXRhID0ge1xuICAgICAgICBwcm92aWRlcjogdGhpcy5wcm92aWRlcixcbiAgICAgICAgbmFtZTogaXRlbS50aXRsZSB8fCBub3JtYWxpemVkTmFtZSxcbiAgICAgICAgdmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBjcmVhdGVkQXQ6IGl0ZW0uY3JlYXRlZEF0ID8gbmV3IERhdGUoaXRlbS5jcmVhdGVkQXQpIDogdW5kZWZpbmVkLFxuICAgICAgICB1cGRhdGVkQXQ6IGl0ZW0udXBkYXRlZEF0ID8gbmV3IERhdGUoaXRlbS51cGRhdGVkQXQpIDogdW5kZWZpbmVkLFxuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBleHRlcm5hbElkOiBpdGVtLmlkLFxuICAgICAgICB0YWdzOiBpdGVtLmNhdGVnb3J5ID8geyBjYXRlZ29yeTogaXRlbS5jYXRlZ29yeSB9IDogdW5kZWZpbmVkLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGVyciA9IGVycm9yIGFzIEVycm9yO1xuICAgICAgaWYgKFxuICAgICAgICBlcnIubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpIHx8XG4gICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKFwiNDA0XCIpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUVycm9yKGVycm9yOiB1bmtub3duKTogU2VjcmV0RXJyb3Ige1xuICAgIGNvbnN0IGVyciA9IGVycm9yIGFzIEVycm9yO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIubWVzc2FnZSB8fCBlcnIubmFtZSB8fCBcIlVua25vd24gZXJyb3JcIjtcbiAgICBjb25zdCBsb3dlck1lc3NhZ2UgPSBtZXNzYWdlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwNFwiKSkge1xuICAgICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcbiAgICAgICAgXCJTRUNSRVRfTk9UX0ZPVU5EXCIsXG4gICAgICAgIGBTZWNyZXQgbm90IGZvdW5kOiAke21lc3NhZ2V9YCxcbiAgICAgICAgZXJyXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImFscmVhZHkgZXhpc3RzXCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJjb25mbGljdFwiKSB8fFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDA5XCIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV3IFNlY3JldEVycm9yKFxuICAgICAgICBcIlNFQ1JFVF9BTFJFQURZX0VYSVNUU1wiLFxuICAgICAgICBgU2VjcmV0IGFscmVhZHkgZXhpc3RzOiAke21lc3NhZ2V9YCxcbiAgICAgICAgZXJyXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJ1bmF1dGhvcml6ZWRcIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAxXCIpKSB7XG4gICAgICByZXR1cm4gbmV3IFNlY3JldEVycm9yKFxuICAgICAgICBcIlNFQ1JFVF9QUk9WSURFUl9BVVRIX0ZBSUxFRFwiLFxuICAgICAgICBgQXV0aGVudGljYXRpb24gZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgZXJyXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJwZXJtaXNzaW9uXCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwM1wiKSkge1xuICAgICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcbiAgICAgICAgXCJTRUNSRVRfUFJPVklERVJfUEVSTUlTU0lPTl9ERU5JRURcIixcbiAgICAgICAgYFBlcm1pc3Npb24gZGVuaWVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgZXJyXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJyYXRlIGxpbWl0XCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQyOVwiKSkge1xuICAgICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcbiAgICAgICAgXCJTRUNSRVRfUFJPVklERVJfUkFURV9MSU1JVEVEXCIsXG4gICAgICAgIGBSYXRlIGxpbWl0ZWQ6ICR7bWVzc2FnZX1gLFxuICAgICAgICBlcnJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwicHJvdmlkZXJcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcInVuYXZhaWxhYmxlXCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJjb25uZWN0aW9uXCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJ0aW1lb3V0XCIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV3IFNlY3JldEVycm9yKFxuICAgICAgICBcIlNFQ1JFVF9QUk9WSURFUl9VTkFWQUlMQUJMRVwiLFxuICAgICAgICBgUHJvdmlkZXIgdW5hdmFpbGFibGU6ICR7bWVzc2FnZX1gLFxuICAgICAgICBlcnJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcbiAgICAgIFwiU0VDUkVUX1BST1ZJREVSX0NPTkZMSUNUXCIsXG4gICAgICBgUHJvdmlkZXIgZXJyb3I6ICR7bWVzc2FnZX1gLFxuICAgICAgZXJyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVxdWVzdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29uZmlnLmNvbm5lY3RIb3N0fSR7cGF0aH1gO1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICB9O1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb25uZWN0VG9rZW4pIHtcbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke3RoaXMuY29uZmlnLmNvbm5lY3RUb2tlbn1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgZXJyb3JCb2R5ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpLmNhdGNoKCgpID0+IFwiXCIpO1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGAxUGFzc3dvcmQgQVBJIGVycm9yICgke3Jlc3BvbnNlLnN0YXR1c30pOiAke2Vycm9yQm9keSB8fCByZXNwb25zZS5zdGF0dXNUZXh0fWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcG9zdFJlcXVlc3QocGF0aDogc3RyaW5nLCBib2R5OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29uZmlnLmNvbm5lY3RIb3N0fSR7cGF0aH1gO1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICB9O1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb25uZWN0VG9rZW4pIHtcbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke3RoaXMuY29uZmlnLmNvbm5lY3RUb2tlbn1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgZXJyb3JCb2R5ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpLmNhdGNoKCgpID0+IFwiXCIpO1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGAxUGFzc3dvcmQgQVBJIGVycm9yICgke3Jlc3BvbnNlLnN0YXR1c30pOiAke2Vycm9yQm9keSB8fCByZXNwb25zZS5zdGF0dXNUZXh0fWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlUmVxdWVzdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5jb25uZWN0SG9zdH0ke3BhdGh9YDtcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfTtcbiAgICBpZiAodGhpcy5jb25maWcuY29ubmVjdFRva2VuKSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0aGlzLmNvbmZpZy5jb25uZWN0VG9rZW59YDtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGVycm9yQm9keSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKS5jYXRjaCgoKSA9PiBcIlwiKTtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgMVBhc3N3b3JkIEFQSSBlcnJvciAoJHtyZXNwb25zZS5zdGF0dXN9KTogJHtlcnJvckJvZHkgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0SXRlbXNCeVRpdGxlKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdmF1bHRJZDogc3RyaW5nXG4gICk6IFByb21pc2U8YW55W10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWxsSXRlbXMgPSBhd2FpdCB0aGlzLmdldFJlcXVlc3QoYC92MS92YXVsdHMvJHt2YXVsdElkfS9pdGVtc2ApO1xuICAgICAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KGFsbEl0ZW1zKSA/IGFsbEl0ZW1zIDogW2FsbEl0ZW1zXTtcbiAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udGl0bGUgPT09IHRpdGxlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFpRDtBQUNqRCxpREFBNkU7QUFDN0UsaURBQXVGO0FBQ3ZGLHlDQUFxRDtBQUNyRCwyREFBdUU7QUFDdkUsTUFBYSx3QkFBeUIsU0FBUSx5QkFBa0I7SUFDNUQ7UUFDSSxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUk7UUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLDZCQUFhLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUk7UUFDNUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDO1lBQ0QsSUFBQSw2QkFBa0IsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFB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QUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBdFlELDREQXNZQztBQUNELHNreENBQXNreEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWNyZXRFcnJvciB9IGZyb20gXCIuLy4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7IHZhbGlkYXRlU2VjcmV0TmFtZSwgbm9ybWFsaXplU2VjcmV0TmFtZSB9IGZyb20gXCIuLy4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZVNlY3JldFBheWxvYWQsIGRlc2VyaWFsaXplU2VjcmV0UGF5bG9hZCwgfSBmcm9tIFwiLi8uLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBDbGllbnRCYXNlZFNlcnZpY2UsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5leHBvcnQgY2xhc3MgT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlIGV4dGVuZHMgQ2xpZW50QmFzZWRTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5wcm92aWRlciA9IFwiMXBhc3N3b3JkXCI7XG4gICAgfVxuICAgIGFzeW5jIGluaXRpYWxpemUoLi4uYXJncykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhcmdzWzBdO1xuICAgICAgICBpZiAoIWNvbmZpZy5jb25uZWN0SG9zdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCIxUGFzc3dvcmQgc2VydmljZSByZXF1aXJlcyBjb25uZWN0SG9zdCBjb25maWd1cmF0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvbmZpZywgY2xpZW50OiB7fSB9O1xuICAgIH1cbiAgICBhc3luYyBzdG9yZShuYW1lLCB2YWx1ZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwic3RvcmVcIiwgdHJ1ZSkpLmZvcih0aGlzLnN0b3JlKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYFN0b3Jpbmcgc2VjcmV0ICR7bmFtZX1gKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbGlkYXRlU2VjcmV0TmFtZShuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVTZWNyZXROYW1lKG5hbWUpO1xuICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gc2VyaWFsaXplU2VjcmV0UGF5bG9hZCh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhdWx0SWQgPSB0aGlzLmNvbmZpZy52YXVsdElkO1xuICAgICAgICBpZiAoIXZhdWx0SWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiMVBhc3N3b3JkIHByb3ZpZGVyIHJlcXVpcmVzIGEgdmF1bHQgSUQgaW4gY29uZmlndXJhdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICAgICAgdGl0bGU6IG5vcm1hbGl6ZWROYW1lLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IFwibG9naW5cIixcbiAgICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwic2VjcmV0XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBwdXJwb3NlOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBub3RlczogYENyZWF0ZWQgYnkgREVDQUYgU2VjcmV0IFNlcnZpY2UgYXQgJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCxcbiAgICAgICAgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5wb3N0UmVxdWVzdChgL3YxL3ZhdWx0cy8ke3ZhdWx0SWR9L2l0ZW1zYCwgaXRlbSk7XG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3JldEVycm9yKFwiU0VDUkVUX1BST1ZJREVSX0NPTkZMSUNUXCIsIFwiRmFpbGVkIHRvIHN0b3JlIHNlY3JldDogTm8gaXRlbSBJRCByZXR1cm5lZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgbmFtZTogbm9ybWFsaXplZE5hbWUsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXNwb25zZS5pZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcmV0cmlldmUobmFtZU9yUmVmLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJyZXRyaWV2ZVwiLCB0cnVlKSkuZm9yKHRoaXMucmV0cmlldmUpO1xuICAgICAgICBjb25zdCBuYW1lU3RyID0gdHlwZW9mIG5hbWVPclJlZiA9PT0gXCJzdHJpbmdcIiA/IG5hbWVPclJlZiA6IG5hbWVPclJlZi5uYW1lO1xuICAgICAgICBsb2cudmVyYm9zZShgUmV0cmlldmluZyBzZWNyZXQgJHtuYW1lU3RyfWApO1xuICAgICAgICBsZXQgbmFtZTtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lT3JSZWYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lT3JSZWY7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZU9yUmVmLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbGlkYXRlU2VjcmV0TmFtZShuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVTZWNyZXROYW1lKG5hbWUpO1xuICAgICAgICBjb25zdCB2YXVsdElkID0gdGhpcy5jb25maWcudmF1bHRJZDtcbiAgICAgICAgaWYgKCF2YXVsdElkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIjFQYXNzd29yZCBwcm92aWRlciByZXF1aXJlcyBhIHZhdWx0IElEIGluIGNvbmZpZ3VyYXRpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGl0ZW1JZDtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLml0ZW1JZFRlbXBsYXRlICYmXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZS5pbmNsdWRlcyhcIiR7bmFtZX1cIikpIHtcbiAgICAgICAgICAgIGl0ZW1JZCA9IHRoaXMuY29uZmlnLml0ZW1JZFRlbXBsYXRlLnJlcGxhY2UoXCIke25hbWV9XCIsIG5vcm1hbGl6ZWROYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgdGhpcy5nZXRJdGVtc0J5VGl0bGUobm9ybWFsaXplZE5hbWUsIHZhdWx0SWQpO1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBTZWNyZXQgXCIke25vcm1hbGl6ZWROYW1lfVwiIG5vdCBmb3VuZCBpbiB2YXVsdGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbUlkID0gaXRlbXNbMF0uaWQ7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLmdldFJlcXVlc3QoYC92MS92YXVsdHMvJHt2YXVsdElkfS9pdGVtcy8ke2l0ZW1JZH1gKTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoaXRlbS5maWVsZHMgJiYgQXJyYXkuaXNBcnJheShpdGVtLmZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNyZXRGaWVsZCA9IGl0ZW0uZmllbGRzLmZpbmQoKGYpID0+IGYucHVycG9zZSA9PT0gXCJwYXNzd29yZFwiIHx8IGYubGFiZWwgPT09IFwic2VjcmV0XCIpO1xuICAgICAgICAgICAgICAgIGlmIChzZWNyZXRGaWVsZCAmJiBzZWNyZXRGaWVsZC52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2VjcmV0RmllbGQudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiBpdGVtLmRldGFpbHMgJiYgaXRlbS5kZXRhaWxzLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IEFycmF5LmlzQXJyYXkoaXRlbS5kZXRhaWxzLmZpZWxkcylcbiAgICAgICAgICAgICAgICAgICAgPyBpdGVtLmRldGFpbHMuZmllbGRzXG4gICAgICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VjcmV0RmllbGQgPSBmaWVsZHMuZmluZCgoZikgPT4gZi5wdXJwb3NlID09PSBcInBhc3N3b3JkXCIgfHwgZi5sYWJlbCA9PT0gXCJzZWNyZXRcIik7XG4gICAgICAgICAgICAgICAgaWYgKHNlY3JldEZpZWxkICYmIHNlY3JldEZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWNyZXRGaWVsZC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3JldEVycm9yKFwiU0VDUkVUX05PVF9GT1VORFwiLCBgTm8gc2VjcmV0IHZhbHVlIGZvdW5kIGZvciBpdGVtIFwiJHtpdGVtSWR9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBkZXNlcmlhbGl6ZVNlY3JldFBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGRlbGV0ZShuYW1lT3JSZWYsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2cgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImRlbGV0ZVwiLCB0cnVlKSkuZm9yKHRoaXMuZGVsZXRlKTtcbiAgICAgICAgY29uc3QgbmFtZVN0ciA9IHR5cGVvZiBuYW1lT3JSZWYgPT09IFwic3RyaW5nXCIgPyBuYW1lT3JSZWYgOiBuYW1lT3JSZWYubmFtZTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYERlbGV0aW5nIHNlY3JldCAke25hbWVTdHJ9YCk7XG4gICAgICAgIGxldCBuYW1lO1xuICAgICAgICBpZiAodHlwZW9mIG5hbWVPclJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbmFtZSA9IG5hbWVPclJlZjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lT3JSZWYubmFtZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsaWRhdGVTZWNyZXROYW1lKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgICAgIGNvbnN0IHZhdWx0SWQgPSB0aGlzLmNvbmZpZy52YXVsdElkO1xuICAgICAgICBpZiAoIXZhdWx0SWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiMVBhc3N3b3JkIHByb3ZpZGVyIHJlcXVpcmVzIGEgdmF1bHQgSUQgaW4gY29uZmlndXJhdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbUlkO1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUgJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLml0ZW1JZFRlbXBsYXRlLmluY2x1ZGVzKFwiJHtuYW1lfVwiKSkge1xuICAgICAgICAgICAgaXRlbUlkID0gdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUucmVwbGFjZShcIiR7bmFtZX1cIiwgbm9ybWFsaXplZE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCB0aGlzLmdldEl0ZW1zQnlUaXRsZShub3JtYWxpemVkTmFtZSwgdmF1bHRJZCk7XG4gICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbUlkID0gaXRlbXNbMF0uaWQ7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlUmVxdWVzdChgL3YxL3ZhdWx0cy8ke3ZhdWx0SWR9L2l0ZW1zLyR7aXRlbUlkfWApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBleGlzdHMobmFtZU9yUmVmLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJleGlzdHNcIiwgdHJ1ZSkpLmZvcih0aGlzLmV4aXN0cyk7XG4gICAgICAgIGNvbnN0IG5hbWVTdHIgPSB0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiID8gbmFtZU9yUmVmIDogbmFtZU9yUmVmLm5hbWU7XG4gICAgICAgIGxvZy52ZXJib3NlKGBDaGVja2luZyBpZiBzZWNyZXQgJHtuYW1lU3RyfSBleGlzdHNgKTtcbiAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZU9yUmVmO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmFtZSA9IG5hbWVPclJlZi5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWxpZGF0ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplU2VjcmV0TmFtZShuYW1lKTtcbiAgICAgICAgY29uc3QgdmF1bHRJZCA9IHRoaXMuY29uZmlnLnZhdWx0SWQ7XG4gICAgICAgIGlmICghdmF1bHRJZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCIxUGFzc3dvcmQgcHJvdmlkZXIgcmVxdWlyZXMgYSB2YXVsdCBJRCBpbiBjb25maWd1cmF0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpdGVtSWQ7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUuaW5jbHVkZXMoXCIke25hbWV9XCIpKSB7XG4gICAgICAgICAgICBpdGVtSWQgPSB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZS5yZXBsYWNlKFwiJHtuYW1lfVwiLCBub3JtYWxpemVkTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMuZ2V0SXRlbXNCeVRpdGxlKG5vcm1hbGl6ZWROYW1lLCB2YXVsdElkKTtcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtSWQgPSBpdGVtc1swXS5pZDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRSZXF1ZXN0KGAvdjEvdmF1bHRzLyR7dmF1bHRJZH0vaXRlbXMvJHtpdGVtSWR9YCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJub3QgZm91bmRcIikgfHxcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcyhcIjQwNFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGxpc3QoLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwibGlzdFwiLCB0cnVlKSkuZm9yKHRoaXMubGlzdCk7XG4gICAgICAgIGxvZy52ZXJib3NlKFwiTGlzdGluZyBzZWNyZXRzXCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgY29uc3QgdmF1bHRJZCA9IHRoaXMuY29uZmlnLnZhdWx0SWQ7XG4gICAgICAgIGlmICghdmF1bHRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCB0aGlzLmdldFJlcXVlc3QoYC92MS92YXVsdHMvJHt2YXVsdElkfS9pdGVtc2ApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIEFycmF5LmlzQXJyYXkoaXRlbXMpID8gaXRlbXMgOiBbaXRlbXNdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgJiYgaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcjogdGhpcy5wcm92aWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IGl0ZW0uY3JlYXRlZEF0ID8gbmV3IERhdGUoaXRlbS5jcmVhdGVkQXQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0OiBpdGVtLnVwZGF0ZWRBdCA/IG5ldyBEYXRlKGl0ZW0udXBkYXRlZEF0KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbElkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogaXRlbS5jYXRlZ29yeSA/IHsgY2F0ZWdvcnk6IGl0ZW0uY2F0ZWdvcnkgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgbWV0YWRhdGEobmFtZU9yUmVmLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJtZXRhZGF0YVwiLCB0cnVlKSkuZm9yKHRoaXMubWV0YWRhdGEpO1xuICAgICAgICBjb25zdCBuYW1lU3RyID0gdHlwZW9mIG5hbWVPclJlZiA9PT0gXCJzdHJpbmdcIiA/IG5hbWVPclJlZiA6IG5hbWVPclJlZi5uYW1lO1xuICAgICAgICBsb2cudmVyYm9zZShgR2V0dGluZyBtZXRhZGF0YSBmb3Igc2VjcmV0ICR7bmFtZVN0cn1gKTtcbiAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZU9yUmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZU9yUmVmO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmFtZSA9IG5hbWVPclJlZi5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWxpZGF0ZVNlY3JldE5hbWUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplU2VjcmV0TmFtZShuYW1lKTtcbiAgICAgICAgY29uc3QgdmF1bHRJZCA9IHRoaXMuY29uZmlnLnZhdWx0SWQ7XG4gICAgICAgIGlmICghdmF1bHRJZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCIxUGFzc3dvcmQgcHJvdmlkZXIgcmVxdWlyZXMgYSB2YXVsdCBJRCBpbiBjb25maWd1cmF0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpdGVtSWQ7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcuaXRlbUlkVGVtcGxhdGUuaW5jbHVkZXMoXCIke25hbWV9XCIpKSB7XG4gICAgICAgICAgICBpdGVtSWQgPSB0aGlzLmNvbmZpZy5pdGVtSWRUZW1wbGF0ZS5yZXBsYWNlKFwiJHtuYW1lfVwiLCBub3JtYWxpemVkTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMuZ2V0SXRlbXNCeVRpdGxlKG5vcm1hbGl6ZWROYW1lLCB2YXVsdElkKTtcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbUlkID0gaXRlbXNbMF0uaWQ7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLmdldFJlcXVlc3QoYC92MS92YXVsdHMvJHt2YXVsdElkfS9pdGVtcy8ke2l0ZW1JZH1gKTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS50aXRsZSB8fCBub3JtYWxpemVkTmFtZSxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0OiBpdGVtLmNyZWF0ZWRBdCA/IG5ldyBEYXRlKGl0ZW0uY3JlYXRlZEF0KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IGl0ZW0udXBkYXRlZEF0ID8gbmV3IERhdGUoaXRlbS51cGRhdGVkQXQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxJZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICB0YWdzOiBpdGVtLmNhdGVnb3J5ID8geyBjYXRlZ29yeTogaXRlbS5jYXRlZ29yeSB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBtZXRhO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZXJyID0gZXJyb3I7XG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm5vdCBmb3VuZFwiKSB8fFxuICAgICAgICAgICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKFwiNDA0XCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHBhcnNlRXJyb3IoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyID0gZXJyb3I7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIubWVzc2FnZSB8fCBlcnIubmFtZSB8fCBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgY29uc3QgbG93ZXJNZXNzYWdlID0gbWVzc2FnZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwNFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcIlNFQ1JFVF9OT1RfRk9VTkRcIiwgYFNlY3JldCBub3QgZm91bmQ6ICR7bWVzc2FnZX1gLCBlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJhbHJlYWR5IGV4aXN0c1wiKSB8fFxuICAgICAgICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiY29uZmxpY3RcIikgfHxcbiAgICAgICAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwOVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcIlNFQ1JFVF9BTFJFQURZX0VYSVNUU1wiLCBgU2VjcmV0IGFscmVhZHkgZXhpc3RzOiAke21lc3NhZ2V9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwidW5hdXRob3JpemVkXCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwMVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTZWNyZXRFcnJvcihcIlNFQ1JFVF9QUk9WSURFUl9BVVRIX0ZBSUxFRFwiLCBgQXV0aGVudGljYXRpb24gZmFpbGVkOiAke21lc3NhZ2V9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwicGVybWlzc2lvblwiKSB8fCBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDNcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VjcmV0RXJyb3IoXCJTRUNSRVRfUFJPVklERVJfUEVSTUlTU0lPTl9ERU5JRURcIiwgYFBlcm1pc3Npb24gZGVuaWVkOiAke21lc3NhZ2V9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwicmF0ZSBsaW1pdFwiKSB8fCBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MjlcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VjcmV0RXJyb3IoXCJTRUNSRVRfUFJPVklERVJfUkFURV9MSU1JVEVEXCIsIGBSYXRlIGxpbWl0ZWQ6ICR7bWVzc2FnZX1gLCBlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJwcm92aWRlclwiKSB8fFxuICAgICAgICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwidW5hdmFpbGFibGVcIikgfHxcbiAgICAgICAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImNvbm5lY3Rpb25cIikgfHxcbiAgICAgICAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcInRpbWVvdXRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VjcmV0RXJyb3IoXCJTRUNSRVRfUFJPVklERVJfVU5BVkFJTEFCTEVcIiwgYFByb3ZpZGVyIHVuYXZhaWxhYmxlOiAke21lc3NhZ2V9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNlY3JldEVycm9yKFwiU0VDUkVUX1BST1ZJREVSX0NPTkZMSUNUXCIsIGBQcm92aWRlciBlcnJvcjogJHttZXNzYWdlfWAsIGVycik7XG4gICAgfVxuICAgIGFzeW5jIGdldFJlcXVlc3QocGF0aCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5jb25uZWN0SG9zdH0ke3BhdGh9YDtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5jb25maWcuY29ubmVjdFRva2VuKSB7XG4gICAgICAgICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0aGlzLmNvbmZpZy5jb25uZWN0VG9rZW59YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yQm9keSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKS5jYXRjaCgoKSA9PiBcIlwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGAxUGFzc3dvcmQgQVBJIGVycm9yICgke3Jlc3BvbnNlLnN0YXR1c30pOiAke2Vycm9yQm9keSB8fCByZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gICAgfVxuICAgIGFzeW5jIHBvc3RSZXF1ZXN0KHBhdGgsIGJvZHkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWcuY29ubmVjdEhvc3R9JHtwYXRofWA7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbm5lY3RUb2tlbikge1xuICAgICAgICAgICAgaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQmVhcmVyICR7dGhpcy5jb25maWcuY29ubmVjdFRva2VufWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvckJvZHkgPSBhd2FpdCByZXNwb25zZS50ZXh0KCkuY2F0Y2goKCkgPT4gXCJcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgMVBhc3N3b3JkIEFQSSBlcnJvciAoJHtyZXNwb25zZS5zdGF0dXN9KTogJHtlcnJvckJvZHkgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xuICAgIH1cbiAgICBhc3luYyBkZWxldGVSZXF1ZXN0KHBhdGgpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWcuY29ubmVjdEhvc3R9JHtwYXRofWA7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbm5lY3RUb2tlbikge1xuICAgICAgICAgICAgaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQmVhcmVyICR7dGhpcy5jb25maWcuY29ubmVjdFRva2VufWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJERUxFVEVcIixcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvckJvZHkgPSBhd2FpdCByZXNwb25zZS50ZXh0KCkuY2F0Y2goKCkgPT4gXCJcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgMVBhc3N3b3JkIEFQSSBlcnJvciAoJHtyZXNwb25zZS5zdGF0dXN9KTogJHtlcnJvckJvZHkgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRJdGVtc0J5VGl0bGUodGl0bGUsIHZhdWx0SWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFsbEl0ZW1zID0gYXdhaXQgdGhpcy5nZXRSZXF1ZXN0KGAvdjEvdmF1bHRzLyR7dmF1bHRJZH0vaXRlbXNgKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheShhbGxJdGVtcykgPyBhbGxJdGVtcyA6IFthbGxJdGVtc107XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnRpdGxlID09PSB0aXRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVDI1bFVHRnpjM2R2Y21SVFpXTnlaWFJUWlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDNObFkzSmxkSE12YjI1bGNHRnpjM2R2Y21RdlQyNWxVR0Z6YzNkdmNtUlRaV055WlhSVFpYSjJhV05sTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1JVRkJSU3hYUVVGWExFVkJRV3RDTERKQ1FVRXlRanRCUVU5cVJTeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYlVKQlFXMUNMRVZCUVVVc01rSkJRVEpDTzBGQlF6ZEZMRTlCUVU4c1JVRkRUQ3h6UWtGQmMwSXNSVUZEZEVJc2QwSkJRWGRDTEVkQlJYcENMREpDUVVFeVFqdEJRVU0xUWl4UFFVRlBMRVZCUTB3c2EwSkJRV3RDTEVkQlIyNUNMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGZUVJc1QwRkJUeXhGUVVGRkxHRkJRV0VzUlVGQlJTeGhRVUZoTEVWQlFVVXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVVYyUlN4TlFVRk5MRTlCUVU4c2QwSkJRWGxDTEZOQlFWRXNhMEpCUnpkRE8wbEJTRVE3TzFGQlNWY3NZVUZCVVN4SFFVRnRRaXhYUVVGWExFTkJRVU03U1VGdmFVSnNSQ3hEUVVGRE8wbEJiR2xDUXl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVOa0xFZEJRVWNzU1VGQmVVSTdVVUZGTlVJc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCYlVNc1EwRkJRenRSUVVONlJDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8xbEJRM2hDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xITkVRVUZ6UkN4RFFVTjJSQ3hEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVU5FTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETzBsQlEyaERMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVU5VTEVsQlFXZENMRVZCUTJoQ0xFdEJRVkVzUlVGRFVpeEhRVUZITEVsQlFUWkNPMUZCUldoRExFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVONlJTeEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMR3RDUVVGclFpeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNSRExFbEJRVWtzUTBGQlF6dFpRVU5JTEd0Q1FVRnJRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNN1VVRkJReXhQUVVGUExFdEJRVXNzUlVGQlJTeERRVUZETzFsQlEyWXNUVUZCVFN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRV01zUTBGQlF5eERRVUZETzFGQlEzaERMRU5CUVVNN1VVRkZSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5xUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXh6UWtGQmMwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF6dFJRVVZ3UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03V1VGRFlpeE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVTnlRaXg1UkVGQmVVUXNRMEZETVVRc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRlJDeE5RVUZOTEVsQlFVa3NSMEZCUnp0WlFVTllMRXRCUVVzc1JVRkJSU3hqUVVGak8xbEJRM0pDTEZGQlFWRXNSVUZCUlN4UFFVRlBPMWxCUTJwQ0xFMUJRVTBzUlVGQlJUdG5Ra0ZEVGp0dlFrRkRSU3hMUVVGTExFVkJRVVVzVVVGQlVUdHZRa0ZEWml4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFdEJRVXM3YjBKQlEzWkNMRTlCUVU4c1JVRkJSU3hWUVVGVk8ybENRVU53UWp0aFFVTkdPMWxCUTBRc1MwRkJTeXhGUVVGRkxITkRRVUZ6UXl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExGZEJRVmNzUlVGQlJTeEZRVUZGTzFOQlEzaEZMRU5CUVVNN1VVRkZSaXhKUVVGSkxFTkJRVU03V1VGRFNDeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRM0pETEdOQlFXTXNUMEZCVHl4UlFVRlJMRVZCUXpkQ0xFbEJRVWtzUTBGRFRDeERRVUZETzFsQlJVWXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dG5Ra0ZEYWtJc1RVRkJUU3hKUVVGSkxGZEJRVmNzUTBGRGJrSXNNRUpCUVRCQ0xFVkJRekZDTERaRFFVRTJReXhEUVVNNVF5eERRVUZETzFsQlEwb3NRMEZCUXp0WlFVVkVMRTlCUVU4N1owSkJRMHdzVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJPMmRDUVVOMlFpeEpRVUZKTEVWQlFVVXNZMEZCWXp0blFrRkRjRUlzVDBGQlR5eEZRVUZGTEZOQlFWTTdaMEpCUTJ4Q0xGRkJRVkVzUlVGQlJUdHZRa0ZEVWl4RlFVRkZMRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVVU3YVVKQlEyaENPMkZCUTBZc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGQlF5eFBRVUZQTEV0QlFVc3NSVUZCUlN4RFFVRkRPMWxCUTJZc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFXTXNRMEZCUXl4RFFVRkRPMUZCUTNoRExFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkRXaXhUUVVGMVF5eEZRVU4yUXl4SFFVRkhMRWxCUVRaQ08xRkJSV2hETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVTTNSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVU5rTEVOQlFVTTdVVUZEUml4TlFVRk5MRTlCUVU4c1IwRkJSeXhQUVVGUExGTkJRVk1zUzBGQlN5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXp0UlFVTXpSU3hIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEhGQ1FVRnhRaXhQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJUVkRMRWxCUVVrc1NVRkJXU3hEUVVGRE8xRkJSV3BDTEVsQlFVa3NUMEZCVHl4VFFVRlRMRXRCUVVzc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRGJFTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenRSUVVOdVFpeERRVUZETzJGQlFVMHNRMEZCUXp0WlFVTk9MRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETzFGQlEzaENMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFTkJRVU03V1VGRFNDeHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU16UWl4RFFVRkRPMUZCUVVNc1QwRkJUeXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5tTEUxQlFVMHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGakxFTkJRVU1zUTBGQlF6dFJRVU40UXl4RFFVRkRPMUZCUlVRc1RVRkJUU3hqUVVGakxFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZGY0VNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzFsQlEySXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzZVVSQlFYbEVMRU5CUXpGRUxFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNTVUZCU1N4TlFVRXdRaXhEUVVGRE8xRkJSUzlDTEVsQlEwVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhqUVVGak8xbEJRekZDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZET1VNc1EwRkJRenRaUVVORUxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eEZRVUZGTEdOQlFXTXNRMEZCUXl4RFFVRkRPMUZCUTNwRkxFTkJRVU03WVVGQlRTeERRVUZETzFsQlEwNHNUVUZCVFN4TFFVRkxMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEdOQlFXTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVOc1JTeEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEzWkNMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEZkQlFWY3NZMEZCWXl4elFrRkJjMElzUTBGRGFFUXNRMEZCUXp0WlFVTktMRU5CUVVNN1dVRkRSQ3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVOMlFpeERRVUZETzFGQlJVUXNTVUZCU1N4RFFVRkRPMWxCUTBnc1RVRkJUU3hKUVVGSkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVTm9ReXhqUVVGakxFOUJRVThzVlVGQlZTeE5RVUZOTEVWQlFVVXNRMEZEZUVNc1EwRkJRenRaUVVWR0xFbEJRVWtzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTm1MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETzJkQ1FVTTVReXhOUVVGTkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkRiRU1zUTBGQlF5eERRVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEpRVUZKTEVOQlFVTXNRMEZCUXl4TFFVRkxMRXRCUVVzc1VVRkJVU3hEUVVNM1JDeERRVUZETzJkQ1FVTkdMRWxCUVVrc1YwRkJWeXhKUVVGSkxGZEJRVmNzUTBGQlF5eExRVUZMTEV0QlFVc3NVMEZCVXl4RlFVRkZMRU5CUVVNN2IwSkJRMjVFTEV0QlFVc3NSMEZCUnl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU0xUWl4RFFVRkRPMWxCUTBnc1EwRkJRenRaUVVWRUxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMmRDUVVOc1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMjlDUVVNdlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTk8yOUNRVU55UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yZENRVU5RTEUxQlFVMHNWMEZCVnl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRemRDTEVOQlFVTXNRMEZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eExRVUZMTEZWQlFWVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhMUVVGTExGRkJRVkVzUTBGRE4wUXNRMEZCUXp0blFrRkRSaXhKUVVGSkxGZEJRVmNzU1VGQlNTeFhRVUZYTEVOQlFVTXNTMEZCU3l4TFFVRkxMRk5CUVZNc1JVRkJSU3hEUVVGRE8yOUNRVU51UkN4TFFVRkxMRWRCUVVjc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF6dG5Ra0ZETlVJc1EwRkJRenRaUVVOSUxFTkJRVU03V1VGRlJDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1owSkJRMWdzVFVGQlRTeEpRVUZKTEZkQlFWY3NRMEZEYmtJc2EwSkJRV3RDTEVWQlEyeENMRzFEUVVGdFF5eE5RVUZOTEVkQlFVY3NRMEZETjBNc1EwRkJRenRaUVVOS0xFTkJRVU03V1VGRlJDeE5RVUZOTEU5QlFVOHNSMEZCTkVJN1owSkJRM1pETEZGQlFWRXNSVUZCUlN4TlFVRk5PMmRDUVVOb1FpeExRVUZMTzJGQlEwNHNRMEZCUXp0WlFVVkdMRTlCUVU4c2QwSkJRWGRDTEVOQlFVTXNUMEZCVHl4RFFVRk5MRU5CUVVNN1VVRkRhRVFzUTBGQlF6dFJRVUZETEU5QlFVOHNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRaaXhOUVVGTkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCWXl4RFFVRkRMRU5CUVVNN1VVRkRlRU1zUTBGQlF6dEpRVU5JTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVOV0xGTkJRWFZETEVWQlEzWkRMRWRCUVVjc1NVRkJOa0k3VVVGRmFFTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6TkZMRTFCUVUwc1QwRkJUeXhIUVVGSExFOUJRVThzVTBGQlV5eExRVUZMTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUXpORkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVUpCUVcxQ0xFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZGTVVNc1NVRkJTU3hKUVVGWkxFTkJRVU03VVVGRmFrSXNTVUZCU1N4UFFVRlBMRk5CUVZNc1MwRkJTeXhSUVVGUkxFVkJRVVVzUTBGQlF6dFpRVU5zUXl4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRE8xRkJRMjVDTEVOQlFVTTdZVUZCVFN4RFFVRkRPMWxCUTA0c1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZEZUVJc1EwRkJRenRSUVVWRUxFbEJRVWtzUTBGQlF6dFpRVU5JTEd0Q1FVRnJRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNN1VVRkJReXhQUVVGUExFdEJRVXNzUlVGQlJTeERRVUZETzFsQlEyWXNUVUZCVFN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRV01zUTBGQlF5eERRVUZETzFGQlEzaERMRU5CUVVNN1VVRkZSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5xUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVVndReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdXVUZEWWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeDVSRUZCZVVRc1EwRkRNVVFzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZGUkN4SlFVRkpMRTFCUVRCQ0xFTkJRVU03VVVGRkwwSXNTVUZEUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHTkJRV003V1VGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVTTVReXhEUVVGRE8xbEJRMFFzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVWQlFVVXNZMEZCWXl4RFFVRkRMRU5CUVVNN1VVRkRla1VzUTBGQlF6dGhRVUZOTEVOQlFVTTdXVUZEVGl4TlFVRk5MRXRCUVVzc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNZMEZCWXl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRMnhGTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1QwRkJUenRaUVVOVUxFTkJRVU03V1VGRFJDeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4RFFVRkRPMUZCUlVRc1NVRkJTU3hEUVVGRE8xbEJRMGdzVFVGQlRTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMR05CUVdNc1QwRkJUeXhWUVVGVkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY0VVc1EwRkJRenRSUVVGRExFOUJRVThzUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEWml4TlFVRk5MRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQll5eERRVUZETEVOQlFVTTdVVUZEZUVNc1EwRkJRenRKUVVOSUxFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVTldMRk5CUVhWRExFVkJRM1pETEVkQlFVY3NTVUZCTmtJN1VVRkZhRU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRek5GTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTlCUVU4c1UwRkJVeXhMUVVGTExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETzFGQlF6TkZMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zYzBKQlFYTkNMRTlCUVU4c1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRmNFUXNTVUZCU1N4SlFVRlpMRU5CUVVNN1VVRkZha0lzU1VGQlNTeFBRVUZQTEZOQlFWTXNTMEZCU3l4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOc1F5eEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUTI1Q0xFTkJRVU03WVVGQlRTeERRVUZETzFsQlEwNHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU03VVVGRGVFSXNRMEZCUXp0UlFVVkVMRWxCUVVrc1EwRkJRenRaUVVOSUxHdENRVUZyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRek5DTEVOQlFVTTdVVUZCUXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJRMllzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVdNc1EwRkJReXhEUVVGRE8xRkJRM2hETEVOQlFVTTdVVUZGUkN4TlFVRk5MR05CUVdNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF6dFJRVVZ3UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03V1VGRFlpeE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVTnlRaXg1UkVGQmVVUXNRMEZETVVRc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRlJDeEpRVUZKTEUxQlFUQkNMRU5CUVVNN1VVRkZMMElzU1VGRFJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNN1dVRkRNVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eEZRVU01UXl4RFFVRkRPMWxCUTBRc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzWTBGQll5eERRVUZETEVOQlFVTTdVVUZEZWtVc1EwRkJRenRoUVVGTkxFTkJRVU03V1VGRFRpeE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zWTBGQll5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJRenRuUWtGRGRrSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1dVRkRaaXhEUVVGRE8xbEJRMFFzVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGRrSXNRMEZCUXp0UlFVVkVMRWxCUVVrc1EwRkJRenRaUVVOSUxFMUJRVTBzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4alFVRmpMRTlCUVU4c1ZVRkJWU3hOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlF5OUVMRTlCUVU4c1NVRkJTU3hEUVVGRE8xRkJRMlFzUTBGQlF6dFJRVUZETEU5QlFVOHNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRaaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZqTEVOQlFVTTdXVUZETTBJc1NVRkRSU3hIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU03WjBKQlF5OURMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVTXpRaXhEUVVGRE8yZENRVU5FTEU5QlFVOHNTMEZCU3l4RFFVRkRPMWxCUTJZc1EwRkJRenRaUVVORUxFMUJRVTBzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNM1FpeERRVUZETzBsQlEwZ3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUUyUWp0UlFVTjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRka1VzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFGQlF5OUNMRTFCUVUwc1RVRkJUU3hIUVVGeFFpeEZRVUZGTEVOQlFVTTdVVUZEY0VNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkZjRU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTJJc1QwRkJUeXhOUVVGTkxFTkJRVU03VVVGRGFFSXNRMEZCUXp0UlFVVkVMRWxCUVVrc1EwRkJRenRaUVVOSUxFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhqUVVGakxFOUJRVThzVVVGQlVTeERRVUZETEVOQlFVTTdXVUZGYmtVc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZETVVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenR2UWtGRE1VSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRFZpeFJRVUZSTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFN2QwSkJRM1pDTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTenQzUWtGRGFFSXNUMEZCVHl4RlFVRkZMRk5CUVZNN2QwSkJRMnhDTEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTTdkMEpCUTJoRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk03ZDBKQlEyaEZMRTlCUVU4c1JVRkJSU3hKUVVGSk8zZENRVU5pTEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSVHQzUWtGRGJrSXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXp0eFFrRkRPVVFzUTBGQlF5eERRVUZETzJkQ1FVTk1MRU5CUVVNN1dVRkRTQ3hEUVVGRE8xbEJSVVFzVDBGQlR5eE5RVUZOTEVOQlFVTTdVVUZEYUVJc1EwRkJRenRSUVVGRExFOUJRVThzUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEWml4TlFVRk5MRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQll5eERRVUZETEVOQlFVTTdVVUZEZUVNc1EwRkJRenRKUVVOSUxFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVTmFMRk5CUVhWRExFVkJRM1pETEVkQlFVY3NTVUZCTmtJN1VVRkZhRU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlF6ZEVMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRMlFzUTBGQlF6dFJRVU5HTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTlCUVU4c1UwRkJVeXhMUVVGTExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETzFGQlF6TkZMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zSzBKQlFTdENMRTlCUVU4c1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRmRFUXNTVUZCU1N4SlFVRlpMRU5CUVVNN1VVRkZha0lzU1VGQlNTeFBRVUZQTEZOQlFWTXNTMEZCU3l4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOc1F5eEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUTI1Q0xFTkJRVU03WVVGQlRTeERRVUZETzFsQlEwNHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU03VVVGRGVFSXNRMEZCUXp0UlFVVkVMRWxCUVVrc1EwRkJRenRaUVVOSUxHdENRVUZyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRek5DTEVOQlFVTTdVVUZCUXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJRMllzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVdNc1EwRkJReXhEUVVGRE8xRkJRM2hETEVOQlFVTTdVVUZGUkN4TlFVRk5MR05CUVdNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF6dFJRVVZ3UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03V1VGRFlpeE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVTnlRaXg1UkVGQmVVUXNRMEZETVVRc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRlJDeEpRVUZKTEUxQlFUQkNMRU5CUVVNN1VVRkZMMElzU1VGRFJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNN1dVRkRNVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eEZRVU01UXl4RFFVRkRPMWxCUTBRc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzWTBGQll5eERRVUZETEVOQlFVTTdVVUZEZWtVc1EwRkJRenRoUVVGTkxFTkJRVU03V1VGRFRpeE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zWTBGQll5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJRenRuUWtGRGRrSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1dVRkRia0lzUTBGQlF6dFpRVU5FTEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFGQlEzWkNMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFTkJRVU03V1VGRFNDeE5RVUZOTEVsQlFVa3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRMmhETEdOQlFXTXNUMEZCVHl4VlFVRlZMRTFCUVUwc1JVRkJSU3hEUVVONFF5eERRVUZETzFsQlJVWXNUVUZCVFN4SlFVRkpMRWRCUVcxQ08yZENRVU16UWl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkU3WjBKQlEzWkNMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEpRVUZKTEdOQlFXTTdaMEpCUTJ4RExFOUJRVThzUlVGQlJTeFRRVUZUTzJkQ1FVTnNRaXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVE8yZENRVU5vUlN4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRPMmRDUVVOb1JTeFBRVUZQTEVWQlFVVXNTVUZCU1R0blFrRkRZaXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTI1Q0xFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk03WVVGRE9VUXNRMEZCUXp0WlFVVkdMRTlCUVU4c1NVRkJTU3hEUVVGRE8xRkJRMlFzUTBGQlF6dFJRVUZETEU5QlFVOHNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRaaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZqTEVOQlFVTTdXVUZETTBJc1NVRkRSU3hIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU03WjBKQlF5OURMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVTXpRaXhEUVVGRE8yZENRVU5FTEU5QlFVOHNVMEZCVXl4RFFVRkRPMWxCUTI1Q0xFTkJRVU03V1VGRFJDeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE4wSXNRMEZCUXp0SlFVTklMRU5CUVVNN1NVRkZVeXhWUVVGVkxFTkJRVU1zUzBGQll6dFJRVU5xUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhMUVVGakxFTkJRVU03VVVGRE0wSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1IwRkJSeXhEUVVGRExFOUJRVThzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCU1N4SlFVRkpMR1ZCUVdVc1EwRkJRenRSUVVNelJDeE5RVUZOTEZsQlFWa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRk0wTXNTVUZCU1N4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU4yUlN4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVOd1FpeHJRa0ZCYTBJc1JVRkRiRUlzY1VKQlFYRkNMRTlCUVU4c1JVRkJSU3hGUVVNNVFpeEhRVUZITEVOQlEwb3NRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkZSQ3hKUVVORkxGbEJRVmtzUTBGQlF5eFJRVUZSTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03V1VGRGRrTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRGFrTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGRE5VSXNRMEZCUXp0WlFVTkVMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRM0JDTEhWQ1FVRjFRaXhGUVVOMlFpd3dRa0ZCTUVJc1QwRkJUeXhGUVVGRkxFVkJRMjVETEVkQlFVY3NRMEZEU2l4RFFVRkRPMUZCUTBvc1EwRkJRenRSUVVWRUxFbEJRVWtzV1VGQldTeERRVUZETEZGQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3haUVVGWkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNVVVzVDBGQlR5eEpRVUZKTEZkQlFWY3NRMEZEY0VJc05rSkJRVFpDTEVWQlF6ZENMREJDUVVFd1FpeFBRVUZQTEVWQlFVVXNSVUZEYmtNc1IwRkJSeXhEUVVOS0xFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNTVUZCU1N4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU40UlN4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVOd1FpeHRRMEZCYlVNc1JVRkRia01zYzBKQlFYTkNMRTlCUVU4c1JVRkJSU3hGUVVNdlFpeEhRVUZITEVOQlEwb3NRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkZSQ3hKUVVGSkxGbEJRVmtzUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1dVRkJXU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNoRkxFOUJRVThzU1VGQlNTeFhRVUZYTEVOQlEzQkNMRGhDUVVFNFFpeEZRVU01UWl4cFFrRkJhVUlzVDBGQlR5eEZRVUZGTEVWQlF6RkNMRWRCUVVjc1EwRkRTaXhEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVVZFTEVsQlEwVXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRGFrTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU03V1VGRGNFTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGRGJrTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGRGFFTXNRMEZCUXp0WlFVTkVMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRM0JDTERaQ1FVRTJRaXhGUVVNM1FpeDVRa0ZCZVVJc1QwRkJUeXhGUVVGRkxFVkJRMnhETEVkQlFVY3NRMEZEU2l4RFFVRkRPMUZCUTBvc1EwRkJRenRSUVVWRUxFOUJRVThzU1VGQlNTeFhRVUZYTEVOQlEzQkNMREJDUVVFd1FpeEZRVU14UWl4dFFrRkJiVUlzVDBGQlR5eEZRVUZGTEVWQlF6VkNMRWRCUVVjc1EwRkRTaXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZQTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJXVHRSUVVOdVF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRPMUZCUTJoRUxFMUJRVTBzVDBGQlR5eEhRVUV5UWp0WlFVTjBReXhqUVVGakxFVkJRVVVzYTBKQlFXdENPMU5CUTI1RExFTkJRVU03VVVGRFJpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03V1VGRE4wSXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhIUVVGSExGVkJRVlVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVOc1JTeERRVUZETzFGQlJVUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hMUVVGTExFTkJRVU1zUjBGQlJ5eEZRVUZGTzFsQlEyaERMRTFCUVUwc1JVRkJSU3hMUVVGTE8xbEJRMklzVDBGQlR6dFRRVU5TTEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZEYWtJc1RVRkJUU3hUUVVGVExFZEJRVWNzVFVGQlRTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTNoRUxFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlEzSkNMSGRDUVVGM1FpeFJRVUZSTEVOQlFVTXNUVUZCVFN4TlFVRk5MRk5CUVZNc1NVRkJTU3hSUVVGUkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlEyaEdMRU5CUVVNN1VVRkRTaXhEUVVGRE8xRkJSVVFzVDBGQlR5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVVZQTEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJXU3hGUVVGRkxFbEJRVk03VVVGREwwTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOb1JDeE5RVUZOTEU5QlFVOHNSMEZCTWtJN1dVRkRkRU1zWTBGQll5eEZRVUZGTEd0Q1FVRnJRanRUUVVOdVF5eERRVUZETzFGQlEwWXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzFsQlF6ZENMRTlCUVU4c1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03VVVGRGJFVXNRMEZCUXp0UlFVVkVMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTm9ReXhOUVVGTkxFVkJRVVVzVFVGQlRUdFpRVU5rTEU5QlFVODdXVUZEVUN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTTdVMEZETTBJc1EwRkJReXhEUVVGRE8xRkJSVWdzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRaUVVOcVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4TlFVRk5MRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03V1VGRGVFUXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzZDBKQlFYZENMRkZCUVZFc1EwRkJReXhOUVVGTkxFMUJRVTBzVTBGQlV5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkRhRVlzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZGUkN4UFFVRlBMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUlU4c1MwRkJTeXhEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZaTzFGQlEzUkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRGFFUXNUVUZCVFN4UFFVRlBMRWRCUVRKQ08xbEJRM1JETEdOQlFXTXNSVUZCUlN4clFrRkJhMEk3VTBGRGJrTXNRMEZCUXp0UlFVTkdMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0WlFVTTNRaXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NWVUZCVlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzFGQlEyeEZMRU5CUVVNN1VVRkZSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVN1dVRkRhRU1zVFVGQlRTeEZRVUZGTEZGQlFWRTdXVUZEYUVJc1QwRkJUenRUUVVOU0xFTkJRVU1zUTBGQlF6dFJRVVZJTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrSXNUVUZCVFN4VFFVRlRMRWRCUVVjc1RVRkJUU3hSUVVGUkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEzaEVMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEhkQ1FVRjNRaXhSUVVGUkxFTkJRVU1zVFVGQlRTeE5RVUZOTEZOQlFWTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRMmhHTEVOQlFVTTdVVUZEU2l4RFFVRkRPMGxCUTBnc1EwRkJRenRKUVVWUExFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlF6TkNMRXRCUVdFc1JVRkRZaXhQUVVGbE8xRkJSV1lzU1VGQlNTeERRVUZETzFsQlEwZ3NUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEdOQlFXTXNUMEZCVHl4UlFVRlJMRU5CUVVNc1EwRkJRenRaUVVOMFJTeE5RVUZOTEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdXVUZET1VRc1QwRkJUeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eExRVUZMTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTNSRUxFTkJRVU03VVVGQlF5eFBRVUZQTEV0QlFVc3NSVUZCUlN4RFFVRkRPMWxCUTJZc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFXTXNRMEZCUXl4RFFVRkRPMUZCUTNoRExFTkJRVU03U1VGRFNDeERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJUWldOeVpYUkZjbkp2Y2l3Z1UyVmpjbVYwVUhKdmRtbGtaWElnZlNCbWNtOXRJRndpTGk0dkxpNHZjMlZqY21WMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JUWldOeVpYUk9ZVzFsTEZ4dUlDQlRaV055WlhSUVlYbHNiMkZrTEZ4dUlDQlRaV055WlhSU1pXWmxjbVZ1WTJVc1hHNGdJRk5sWTNKbGRFMWxkR0ZrWVhSaExGeHVmU0JtY205dElGd2lMaTR2TGk0dmMyVmpjbVYwY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZXlCMllXeHBaR0YwWlZObFkzSmxkRTVoYldVc0lHNXZjbTFoYkdsNlpWTmxZM0psZEU1aGJXVWdmU0JtY205dElGd2lMaTR2TGk0dmMyVmpjbVYwY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQnpaWEpwWVd4cGVtVlRaV055WlhSUVlYbHNiMkZrTEZ4dUlDQmtaWE5sY21saGJHbDZaVk5sWTNKbGRGQmhlV3h2WVdRc1hHNGdJSFI1Y0dVZ1UyVnlhV0ZzYVhwbFpGTmxZM0psZEZCaGVXeHZZV1FzWEc1OUlHWnliMjBnWENJdUxpOHVMaTl6WldOeVpYUnpMMk52Y21WY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUVOc2FXVnVkRUpoYzJWa1UyVnlkbWxqWlN4Y2JpQWdkSGx3WlNCRGIyNTBaWGgwZFdGc1FYSm5jeXhjYmlBZ2RIbHdaU0JOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWNzWEc1OUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUhzZ1QyNWxVR0Z6YzNkdmNtUlRaV055WlhSVFpYSjJhV05sUTI5dVptbG5JSDBnWm5KdmJTQmNJaTR2VDI1bFVHRnpjM2R2Y21SVFpXTnlaWFJUWlhKMmFXTmxRMjl1Wm1sblhDSTdYRzVwYlhCdmNuUWdleUJKYm5SbGNtNWhiRVZ5Y205eUxDQk9iM1JHYjNWdVpFVnljbTl5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1lpMWtaV052Y21GMGIzSnpYQ0k3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJQYm1WUVlYTnpkMjl5WkZObFkzSmxkRk5sY25acFkyVWdaWGgwWlc1a2N5QkRiR2xsYm5SQ1lYTmxaRk5sY25acFkyVThYRzRnSUhWdWEyNXZkMjRzWEc0Z0lFOXVaVkJoYzNOM2IzSmtVMlZqY21WMFUyVnlkbWxqWlVOdmJtWnBaMXh1UGlCN1hHNGdJSEpsWVdSdmJteDVJSEJ5YjNacFpHVnlPaUJUWldOeVpYUlFjbTkyYVdSbGNpQTlJRndpTVhCaGMzTjNiM0prWENJN1hHNWNiaUFnWVhONWJtTWdhVzVwZEdsaGJHbDZaU2hjYmlBZ0lDQXVMaTVoY21kek9pQkRiMjUwWlhoMGRXRnNRWEpuY3p4aGJuaytYRzRnSUNrNklGQnliMjFwYzJVOGV5QmpiMjVtYVdjNklFOXVaVkJoYzNOM2IzSmtVMlZqY21WMFUyVnlkbWxqWlVOdmJtWnBaenNnWTJ4cFpXNTBPaUIxYm10dWIzZHVJSDArSUh0Y2JpQWdJQ0JqYjI1emRDQmpiMjVtYVdjZ1BTQmhjbWR6V3pCZElHRnpJRTl1WlZCaGMzTjNiM0prVTJWamNtVjBVMlZ5ZG1salpVTnZibVpwWnp0Y2JpQWdJQ0JwWmlBb0lXTnZibVpwWnk1amIyNXVaV04wU0c5emRDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lGd2lNVkJoYzNOM2IzSmtJSE5sY25acFkyVWdjbVZ4ZFdseVpYTWdZMjl1Ym1WamRFaHZjM1FnWTI5dVptbG5kWEpoZEdsdmJsd2lYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZXlCamIyNW1hV2NzSUdOc2FXVnVkRG9nZTMwZ2ZUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklITjBiM0psUEZRZ1pYaDBaVzVrY3lCVFpXTnlaWFJRWVhsc2IyRmtJRDBnVTJWamNtVjBVR0Y1Ykc5aFpENG9YRzRnSUNBZ2JtRnRaVG9nVTJWamNtVjBUbUZ0WlN4Y2JpQWdJQ0IyWVd4MVpUb2dWQ3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhZVzU1UGx4dUlDQXBPaUJRY205dGFYTmxQRk5sWTNKbGRGSmxabVZ5Wlc1alpUNGdlMXh1SUNBZ0lHTnZibk4wSUhzZ2JHOW5JSDBnUFNBb1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnWENKemRHOXlaVndpTENCMGNuVmxLU2t1Wm05eUtIUm9hWE11YzNSdmNtVXBPMXh1SUNBZ0lHeHZaeTUyWlhKaWIzTmxLR0JUZEc5eWFXNW5JSE5sWTNKbGRDQWtlMjVoYldWOVlDazdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJSFpoYkdsa1lYUmxVMlZqY21WMFRtRnRaU2h1WVcxbEtUdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dkR2hwY3k1d1lYSnpaVVZ5Y205eUtHVnljbTl5SUdGeklFVnljbTl5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnViM0p0WVd4cGVtVmtUbUZ0WlNBOUlHNXZjbTFoYkdsNlpWTmxZM0psZEU1aGJXVW9ibUZ0WlNrN1hHNGdJQ0FnWTI5dWMzUWdjMlZ5YVdGc2FYcGxaQ0E5SUhObGNtbGhiR2w2WlZObFkzSmxkRkJoZVd4dllXUW9kbUZzZFdVcE8xeHVJQ0FnSUdOdmJuTjBJSFpoZFd4MFNXUWdQU0IwYUdsekxtTnZibVpwWnk1MllYVnNkRWxrTzF4dVhHNGdJQ0FnYVdZZ0tDRjJZWFZzZEVsa0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1hDSXhVR0Z6YzNkdmNtUWdjSEp2ZG1sa1pYSWdjbVZ4ZFdseVpYTWdZU0IyWVhWc2RDQkpSQ0JwYmlCamIyNW1hV2QxY21GMGFXOXVYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2FYUmxiU0E5SUh0Y2JpQWdJQ0FnSUhScGRHeGxPaUJ1YjNKdFlXeHBlbVZrVG1GdFpTeGNiaUFnSUNBZ0lHTmhkR1ZuYjNKNU9pQmNJbXh2WjJsdVhDSXNYRzRnSUNBZ0lDQm1hV1ZzWkhNNklGdGNiaUFnSUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0FnSUd4aFltVnNPaUJjSW5ObFkzSmxkRndpTEZ4dUlDQWdJQ0FnSUNBZ0lIWmhiSFZsT2lCelpYSnBZV3hwZW1Wa0xuWmhiSFZsTEZ4dUlDQWdJQ0FnSUNBZ0lIQjFjbkJ2YzJVNklGd2ljR0Z6YzNkdmNtUmNJaXhjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUYwc1hHNGdJQ0FnSUNCdWIzUmxjem9nWUVOeVpXRjBaV1FnWW5rZ1JFVkRRVVlnVTJWamNtVjBJRk5sY25acFkyVWdZWFFnSkh0dVpYY2dSR0YwWlNncExuUnZTVk5QVTNSeWFXNW5LQ2w5WUN4Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lHTnZibk4wSUhKbGMzQnZibk5sSUQwZ1lYZGhhWFFnZEdocGN5NXdiM04wVW1WeGRXVnpkQ2hjYmlBZ0lDQWdJQ0FnWUM5Mk1TOTJZWFZzZEhNdkpIdDJZWFZzZEVsa2ZTOXBkR1Z0YzJBc1hHNGdJQ0FnSUNBZ0lHbDBaVzFjYmlBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUdsbUlDZ2hjbVZ6Y0c5dWMyVXVhV1FwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGTmxZM0psZEVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUZ3aVUwVkRVa1ZVWDFCU1QxWkpSRVZTWDBOUFRrWk1TVU5VWENJc1hHNGdJQ0FnSUNBZ0lDQWdYQ0pHWVdsc1pXUWdkRzhnYzNSdmNtVWdjMlZqY21WME9pQk9ieUJwZEdWdElFbEVJSEpsZEhWeWJtVmtYQ0pjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ2NISnZkbWxrWlhJNklIUm9hWE11Y0hKdmRtbGtaWElzWEc0Z0lDQWdJQ0FnSUc1aGJXVTZJRzV2Y20xaGJHbDZaV1JPWVcxbExGeHVJQ0FnSUNBZ0lDQjJaWEp6YVc5dU9pQjFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQWdJRzFsZEdGa1lYUmhPaUI3WEc0Z0lDQWdJQ0FnSUNBZ2FXUTZJSEpsYzNCdmJuTmxMbWxrTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dkR2hwY3k1d1lYSnpaVVZ5Y205eUtHVnljbTl5SUdGeklFVnljbTl5S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJ5WlhSeWFXVjJaVHhVSUdWNGRHVnVaSE1nVTJWamNtVjBVR0Y1Ykc5aFpDQTlJRk5sWTNKbGRGQmhlV3h2WVdRK0tGeHVJQ0FnSUc1aGJXVlBjbEpsWmpvZ1UyVmpjbVYwVG1GdFpTQjhJRk5sWTNKbGRGSmxabVZ5Wlc1alpTeGNiaUFnSUNBdUxpNWhjbWR6T2lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFlXNTVQbHh1SUNBcE9pQlFjbTl0YVhObFBGUStJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHeHZaeUI5SUQwZ0tHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUZ3aWNtVjBjbWxsZG1WY0lpd2dkSEoxWlNrcExtWnZjaWhjYmlBZ0lDQWdJSFJvYVhNdWNtVjBjbWxsZG1WY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElHNWhiV1ZUZEhJZ1BTQjBlWEJsYjJZZ2JtRnRaVTl5VW1WbUlEMDlQU0JjSW5OMGNtbHVaMXdpSUQ4Z2JtRnRaVTl5VW1WbUlEb2dibUZ0WlU5eVVtVm1MbTVoYldVN1hHNGdJQ0FnYkc5bkxuWmxjbUp2YzJVb1lGSmxkSEpwWlhacGJtY2djMlZqY21WMElDUjdibUZ0WlZOMGNuMWdLVHRjYmx4dUlDQWdJR3hsZENCdVlXMWxPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JRzVoYldWUGNsSmxaaUE5UFQwZ1hDSnpkSEpwYm1kY0lpa2dlMXh1SUNBZ0lDQWdibUZ0WlNBOUlHNWhiV1ZQY2xKbFpqdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYm1GdFpTQTlJRzVoYldWUGNsSmxaaTV1WVcxbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQjJZV3hwWkdGMFpWTmxZM0psZEU1aGJXVW9ibUZ0WlNrN1hHNGdJQ0FnZlNCallYUmphQ0FvWlhKeWIzSXBJSHRjYmlBZ0lDQWdJSFJvY205M0lIUm9hWE11Y0dGeWMyVkZjbkp2Y2lobGNuSnZjaUJoY3lCRmNuSnZjaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2JtOXliV0ZzYVhwbFpFNWhiV1VnUFNCdWIzSnRZV3hwZW1WVFpXTnlaWFJPWVcxbEtHNWhiV1VwTzF4dUlDQWdJR052Ym5OMElIWmhkV3gwU1dRZ1BTQjBhR2x6TG1OdmJtWnBaeTUyWVhWc2RFbGtPMXh1WEc0Z0lDQWdhV1lnS0NGMllYVnNkRWxrS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWENJeFVHRnpjM2R2Y21RZ2NISnZkbWxrWlhJZ2NtVnhkV2x5WlhNZ1lTQjJZWFZzZENCSlJDQnBiaUJqYjI1bWFXZDFjbUYwYVc5dVhDSmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJR2wwWlcxSlpEb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdhV1lnS0Z4dUlDQWdJQ0FnZEdocGN5NWpiMjVtYVdjdWFYUmxiVWxrVkdWdGNHeGhkR1VnSmlaY2JpQWdJQ0FnSUhSb2FYTXVZMjl1Wm1sbkxtbDBaVzFKWkZSbGJYQnNZWFJsTG1sdVkyeDFaR1Z6S0Z3aUpIdHVZVzFsZlZ3aUtWeHVJQ0FnSUNrZ2UxeHVJQ0FnSUNBZ2FYUmxiVWxrSUQwZ2RHaHBjeTVqYjI1bWFXY3VhWFJsYlVsa1ZHVnRjR3hoZEdVdWNtVndiR0ZqWlNoY0lpUjdibUZ0WlgxY0lpd2dibTl5YldGc2FYcGxaRTVoYldVcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnBkR1Z0Y3lBOUlHRjNZV2wwSUhSb2FYTXVaMlYwU1hSbGJYTkNlVlJwZEd4bEtHNXZjbTFoYkdsNlpXUk9ZVzFsTENCMllYVnNkRWxrS1R0Y2JpQWdJQ0FnSUdsbUlDaHBkR1Z0Y3k1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUU1dmRFWnZkVzVrUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnWUZObFkzSmxkQ0JjSWlSN2JtOXliV0ZzYVhwbFpFNWhiV1Y5WENJZ2JtOTBJR1p2ZFc1a0lHbHVJSFpoZFd4MFlGeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhWFJsYlVsa0lEMGdhWFJsYlhOYk1GMHVhV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2wwWlcwZ1BTQmhkMkZwZENCMGFHbHpMbWRsZEZKbGNYVmxjM1FvWEc0Z0lDQWdJQ0FnSUdBdmRqRXZkbUYxYkhSekx5UjdkbUYxYkhSSlpIMHZhWFJsYlhNdkpIdHBkR1Z0U1dSOVlGeHVJQ0FnSUNBZ0tUdGNibHh1SUNBZ0lDQWdiR1YwSUhaaGJIVmxJRDBnWENKY0lqdGNiaUFnSUNBZ0lHbG1JQ2hwZEdWdExtWnBaV3hrY3lBbUppQkJjbkpoZVM1cGMwRnljbUY1S0dsMFpXMHVabWxsYkdSektTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpaV055WlhSR2FXVnNaQ0E5SUdsMFpXMHVabWxsYkdSekxtWnBibVFvWEc0Z0lDQWdJQ0FnSUNBZ0tHWTZJR0Z1ZVNrZ1BUNGdaaTV3ZFhKd2IzTmxJRDA5UFNCY0luQmhjM04zYjNKa1hDSWdmSHdnWmk1c1lXSmxiQ0E5UFQwZ1hDSnpaV055WlhSY0lseHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2MyVmpjbVYwUm1sbGJHUWdKaVlnYzJWamNtVjBSbWxsYkdRdWRtRnNkV1VnSVQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxJRDBnYzJWamNtVjBSbWxsYkdRdWRtRnNkV1U3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLQ0YyWVd4MVpTQW1KaUJwZEdWdExtUmxkR0ZwYkhNZ0ppWWdhWFJsYlM1a1pYUmhhV3h6TG1acFpXeGtjeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JtYVdWc1pITWdQU0JCY25KaGVTNXBjMEZ5Y21GNUtHbDBaVzB1WkdWMFlXbHNjeTVtYVdWc1pITXBYRzRnSUNBZ0lDQWdJQ0FnUHlCcGRHVnRMbVJsZEdGcGJITXVabWxsYkdSelhHNGdJQ0FnSUNBZ0lDQWdPaUJiWFR0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWamNtVjBSbWxsYkdRZ1BTQm1hV1ZzWkhNdVptbHVaQ2hjYmlBZ0lDQWdJQ0FnSUNBb1pqb2dZVzU1S1NBOVBpQm1MbkIxY25CdmMyVWdQVDA5SUZ3aWNHRnpjM2R2Y21SY0lpQjhmQ0JtTG14aFltVnNJRDA5UFNCY0luTmxZM0psZEZ3aVhHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJR2xtSUNoelpXTnlaWFJHYVdWc1pDQW1KaUJ6WldOeVpYUkdhV1ZzWkM1MllXeDFaU0FoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0J6WldOeVpYUkdhV1ZzWkM1MllXeDFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9JWFpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJUWldOeVpYUkZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQmNJbE5GUTFKRlZGOU9UMVJmUms5VlRrUmNJaXhjYmlBZ0lDQWdJQ0FnSUNCZ1RtOGdjMlZqY21WMElIWmhiSFZsSUdadmRXNWtJR1p2Y2lCcGRHVnRJRndpSkh0cGRHVnRTV1I5WENKZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElIQmhlV3h2WVdRNklGTmxjbWxoYkdsNlpXUlRaV055WlhSUVlYbHNiMkZrSUQwZ2UxeHVJQ0FnSUNBZ0lDQmxibU52WkdsdVp6b2dYQ0oxZEdZNFhDSXNYRzRnSUNBZ0lDQWdJSFpoYkhWbExGeHVJQ0FnSUNBZ2ZUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHUmxjMlZ5YVdGc2FYcGxVMlZqY21WMFVHRjViRzloWkNod1lYbHNiMkZrS1NCaGN5QlVPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVnljbTl5S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUIwYUdsekxuQmhjbk5sUlhKeWIzSW9aWEp5YjNJZ1lYTWdSWEp5YjNJcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdSbGJHVjBaU2hjYmlBZ0lDQnVZVzFsVDNKU1pXWTZJRk5sWTNKbGRFNWhiV1VnZkNCVFpXTnlaWFJTWldabGNtVnVZMlVzWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY2dmU0E5SUNoaGQyRnBkQ0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0JjSW1SbGJHVjBaVndpTENCMGNuVmxLU2t1Wm05eUtIUm9hWE11WkdWc1pYUmxLVHRjYmlBZ0lDQmpiMjV6ZENCdVlXMWxVM1J5SUQwZ2RIbHdaVzltSUc1aGJXVlBjbEpsWmlBOVBUMGdYQ0p6ZEhKcGJtZGNJaUEvSUc1aGJXVlBjbEpsWmlBNklHNWhiV1ZQY2xKbFppNXVZVzFsTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0dCRVpXeGxkR2x1WnlCelpXTnlaWFFnSkh0dVlXMWxVM1J5ZldBcE8xeHVYRzRnSUNBZ2JHVjBJRzVoYldVNklITjBjbWx1Wnp0Y2JseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2JtRnRaVTl5VW1WbUlEMDlQU0JjSW5OMGNtbHVaMXdpS1NCN1hHNGdJQ0FnSUNCdVlXMWxJRDBnYm1GdFpVOXlVbVZtTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnVZVzFsSUQwZ2JtRnRaVTl5VW1WbUxtNWhiV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUhaaGJHbGtZWFJsVTJWamNtVjBUbUZ0WlNodVlXMWxLVHRjYmlBZ0lDQjlJR05oZEdOb0lDaGxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnZEdocGN5NXdZWEp6WlVWeWNtOXlLR1Z5Y205eUlHRnpJRVZ5Y205eUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J1YjNKdFlXeHBlbVZrVG1GdFpTQTlJRzV2Y20xaGJHbDZaVk5sWTNKbGRFNWhiV1VvYm1GdFpTazdYRzRnSUNBZ1kyOXVjM1FnZG1GMWJIUkpaQ0E5SUhSb2FYTXVZMjl1Wm1sbkxuWmhkV3gwU1dRN1hHNWNiaUFnSUNCcFppQW9JWFpoZFd4MFNXUXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJKYm5SbGNtNWhiRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmNJakZRWVhOemQyOXlaQ0J3Y205MmFXUmxjaUJ5WlhGMWFYSmxjeUJoSUhaaGRXeDBJRWxFSUdsdUlHTnZibVpwWjNWeVlYUnBiMjVjSWx4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2FYUmxiVWxrT2lCemRISnBibWNnZkNCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCcFppQW9YRzRnSUNBZ0lDQjBhR2x6TG1OdmJtWnBaeTVwZEdWdFNXUlVaVzF3YkdGMFpTQW1KbHh1SUNBZ0lDQWdkR2hwY3k1amIyNW1hV2N1YVhSbGJVbGtWR1Z0Y0d4aGRHVXVhVzVqYkhWa1pYTW9YQ0lrZTI1aGJXVjlYQ0lwWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0JwZEdWdFNXUWdQU0IwYUdsekxtTnZibVpwWnk1cGRHVnRTV1JVWlcxd2JHRjBaUzV5WlhCc1lXTmxLRndpSkh0dVlXMWxmVndpTENCdWIzSnRZV3hwZW1Wa1RtRnRaU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHTnZibk4wSUdsMFpXMXpJRDBnWVhkaGFYUWdkR2hwY3k1blpYUkpkR1Z0YzBKNVZHbDBiR1VvYm05eWJXRnNhWHBsWkU1aGJXVXNJSFpoZFd4MFNXUXBPMXh1SUNBZ0lDQWdhV1lnS0dsMFpXMXpMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcGRHVnRTV1FnUFNCcGRHVnRjMXN3WFM1cFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVrWld4bGRHVlNaWEYxWlhOMEtHQXZkakV2ZG1GMWJIUnpMeVI3ZG1GMWJIUkpaSDB2YVhSbGJYTXZKSHRwZEdWdFNXUjlZQ2s3WEc0Z0lDQWdmU0JqWVhSamFDQW9aWEp5YjNJcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUhSb2FYTXVjR0Z5YzJWRmNuSnZjaWhsY25KdmNpQmhjeUJGY25KdmNpazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ1pYaHBjM1J6S0Z4dUlDQWdJRzVoYldWUGNsSmxaam9nVTJWamNtVjBUbUZ0WlNCOElGTmxZM0psZEZKbFptVnlaVzVqWlN4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJOWVhsaVpVTnZiblJsZUhSMVlXeEJjbWM4WVc1NVBseHVJQ0FwT2lCUWNtOXRhWE5sUEdKdmIyeGxZVzQrSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR3h2WnlCOUlEMGdLR0YzWVdsMElIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lGd2laWGhwYzNSelhDSXNJSFJ5ZFdVcEtTNW1iM0lvZEdocGN5NWxlR2x6ZEhNcE8xeHVJQ0FnSUdOdmJuTjBJRzVoYldWVGRISWdQU0IwZVhCbGIyWWdibUZ0WlU5eVVtVm1JRDA5UFNCY0luTjBjbWx1WjF3aUlEOGdibUZ0WlU5eVVtVm1JRG9nYm1GdFpVOXlVbVZtTG01aGJXVTdYRzRnSUNBZ2JHOW5MblpsY21KdmMyVW9ZRU5vWldOcmFXNW5JR2xtSUhObFkzSmxkQ0FrZTI1aGJXVlRkSEo5SUdWNGFYTjBjMkFwTzF4dVhHNGdJQ0FnYkdWMElHNWhiV1U2SUhOMGNtbHVaenRjYmx4dUlDQWdJR2xtSUNoMGVYQmxiMllnYm1GdFpVOXlVbVZtSUQwOVBTQmNJbk4wY21sdVoxd2lLU0I3WEc0Z0lDQWdJQ0J1WVcxbElEMGdibUZ0WlU5eVVtVm1PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCdVlXMWxJRDBnYm1GdFpVOXlVbVZtTG01aGJXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJSFpoYkdsa1lYUmxVMlZqY21WMFRtRnRaU2h1WVcxbEtUdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dkR2hwY3k1d1lYSnpaVVZ5Y205eUtHVnljbTl5SUdGeklFVnljbTl5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnViM0p0WVd4cGVtVmtUbUZ0WlNBOUlHNXZjbTFoYkdsNlpWTmxZM0psZEU1aGJXVW9ibUZ0WlNrN1hHNGdJQ0FnWTI5dWMzUWdkbUYxYkhSSlpDQTlJSFJvYVhNdVkyOXVabWxuTG5aaGRXeDBTV1E3WEc1Y2JpQWdJQ0JwWmlBb0lYWmhkV3gwU1dRcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblJsY201aGJFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lqRlFZWE56ZDI5eVpDQndjbTkyYVdSbGNpQnlaWEYxYVhKbGN5QmhJSFpoZFd4MElFbEVJR2x1SUdOdmJtWnBaM1Z5WVhScGIyNWNJbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnYVhSbGJVbGtPaUJ6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNCMGFHbHpMbU52Ym1acFp5NXBkR1Z0U1dSVVpXMXdiR0YwWlNBbUpseHVJQ0FnSUNBZ2RHaHBjeTVqYjI1bWFXY3VhWFJsYlVsa1ZHVnRjR3hoZEdVdWFXNWpiSFZrWlhNb1hDSWtlMjVoYldWOVhDSXBYRzRnSUNBZ0tTQjdYRzRnSUNBZ0lDQnBkR1Z0U1dRZ1BTQjBhR2x6TG1OdmJtWnBaeTVwZEdWdFNXUlVaVzF3YkdGMFpTNXlaWEJzWVdObEtGd2lKSHR1WVcxbGZWd2lMQ0J1YjNKdFlXeHBlbVZrVG1GdFpTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2wwWlcxeklEMGdZWGRoYVhRZ2RHaHBjeTVuWlhSSmRHVnRjMEo1VkdsMGJHVW9ibTl5YldGc2FYcGxaRTVoYldVc0lIWmhkV3gwU1dRcE8xeHVJQ0FnSUNBZ2FXWWdLR2wwWlcxekxteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBkR1Z0U1dRZ1BTQnBkR1Z0YzFzd1hTNXBaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1blpYUlNaWEYxWlhOMEtHQXZkakV2ZG1GMWJIUnpMeVI3ZG1GMWJIUkpaSDB2YVhSbGJYTXZKSHRwZEdWdFNXUjlZQ2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1pYSnlJRDBnWlhKeWIzSWdZWE1nUlhKeWIzSTdYRzRnSUNBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0FnSUdWeWNpNXRaWE56WVdkbExuUnZURzkzWlhKRFlYTmxLQ2t1YVc1amJIVmtaWE1vWENKdWIzUWdabTkxYm1SY0lpa2dmSHhjYmlBZ0lDQWdJQ0FnWlhKeUxtMWxjM05oWjJVdWFXNWpiSFZrWlhNb1hDSTBNRFJjSWlsY2JpQWdJQ0FnSUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IwYUhKdmR5QjBhR2x6TG5CaGNuTmxSWEp5YjNJb1pYSnlLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnNhWE4wS0M0dUxtRnlaM002SUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5Wnp4aGJuaytLVG9nVUhKdmJXbHpaVHhUWldOeVpYUk5aWFJoWkdGMFlWdGRQaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNnZlNBOUlDaGhkMkZwZENCMGFHbHpMbXh2WjBOMGVDaGhjbWR6TENCY0lteHBjM1JjSWl3Z2RISjFaU2twTG1admNpaDBhR2x6TG14cGMzUXBPMXh1SUNBZ0lHeHZaeTUyWlhKaWIzTmxLRndpVEdsemRHbHVaeUJ6WldOeVpYUnpYQ0lwTzF4dUlDQWdJR052Ym5OMElISmxjM1ZzZERvZ1UyVmpjbVYwVFdWMFlXUmhkR0ZiWFNBOUlGdGRPMXh1SUNBZ0lHTnZibk4wSUhaaGRXeDBTV1FnUFNCMGFHbHpMbU52Ym1acFp5NTJZWFZzZEVsa08xeHVYRzRnSUNBZ2FXWWdLQ0YyWVhWc2RFbGtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcGRHVnRjeUE5SUdGM1lXbDBJSFJvYVhNdVoyVjBVbVZ4ZFdWemRDaGdMM1l4TDNaaGRXeDBjeThrZTNaaGRXeDBTV1I5TDJsMFpXMXpZQ2s3WEc1Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FYUmxiU0J2WmlCQmNuSmhlUzVwYzBGeWNtRjVLR2wwWlcxektTQS9JR2wwWlcxeklEb2dXMmwwWlcxelhTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYUmxiUzVwWkNBbUppQnBkR1Z0TG5ScGRHeGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVnpkV3gwTG5CMWMyZ29lMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZkbWxrWlhJNklIUm9hWE11Y0hKdmRtbGtaWElzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnVZVzFsT2lCcGRHVnRMblJwZEd4bExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1WeWMybHZiam9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZM0psWVhSbFpFRjBPaUJwZEdWdExtTnlaV0YwWldSQmRDQS9JRzVsZHlCRVlYUmxLR2wwWlcwdVkzSmxZWFJsWkVGMEtTQTZJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIVndaR0YwWldSQmREb2dhWFJsYlM1MWNHUmhkR1ZrUVhRZ1B5QnVaWGNnUkdGMFpTaHBkR1Z0TG5Wd1pHRjBaV1JCZENrZ09pQjFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJtRmliR1ZrT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pYaDBaWEp1WVd4SlpEb2dhWFJsYlM1cFpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhSaFozTTZJR2wwWlcwdVkyRjBaV2R2Y25rZ1B5QjdJR05oZEdWbmIzSjVPaUJwZEdWdExtTmhkR1ZuYjNKNUlIMGdPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dkR2hwY3k1d1lYSnpaVVZ5Y205eUtHVnljbTl5SUdGeklFVnljbTl5S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJ0WlhSaFpHRjBZU2hjYmlBZ0lDQnVZVzFsVDNKU1pXWTZJRk5sWTNKbGRFNWhiV1VnZkNCVFpXTnlaWFJTWldabGNtVnVZMlVzWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHhUWldOeVpYUk5aWFJoWkdGMFlTQjhJSFZ1WkdWbWFXNWxaRDRnZTF4dUlDQWdJR052Ym5OMElIc2diRzluSUgwZ1BTQW9ZWGRoYVhRZ2RHaHBjeTVzYjJkRGRIZ29ZWEpuY3l3Z1hDSnRaWFJoWkdGMFlWd2lMQ0IwY25WbEtTa3VabTl5S0Z4dUlDQWdJQ0FnZEdocGN5NXRaWFJoWkdGMFlWeHVJQ0FnSUNrN1hHNGdJQ0FnWTI5dWMzUWdibUZ0WlZOMGNpQTlJSFI1Y0dWdlppQnVZVzFsVDNKU1pXWWdQVDA5SUZ3aWMzUnlhVzVuWENJZ1B5QnVZVzFsVDNKU1pXWWdPaUJ1WVcxbFQzSlNaV1l1Ym1GdFpUdGNiaUFnSUNCc2IyY3VkbVZ5WW05elpTaGdSMlYwZEdsdVp5QnRaWFJoWkdGMFlTQm1iM0lnYzJWamNtVjBJQ1I3Ym1GdFpWTjBjbjFnS1R0Y2JseHVJQ0FnSUd4bGRDQnVZVzFsT2lCemRISnBibWM3WEc1Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc1aGJXVlBjbEpsWmlBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4dUlDQWdJQ0FnYm1GdFpTQTlJRzVoYldWUGNsSmxaanRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2JtRnRaU0E5SUc1aGJXVlBjbEpsWmk1dVlXMWxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0IyWVd4cFpHRjBaVk5sWTNKbGRFNWhiV1VvYm1GdFpTazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pYSnliM0lwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJSFJvYVhNdWNHRnljMlZGY25KdmNpaGxjbkp2Y2lCaGN5QkZjbkp2Y2lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdibTl5YldGc2FYcGxaRTVoYldVZ1BTQnViM0p0WVd4cGVtVlRaV055WlhST1lXMWxLRzVoYldVcE8xeHVJQ0FnSUdOdmJuTjBJSFpoZFd4MFNXUWdQU0IwYUdsekxtTnZibVpwWnk1MllYVnNkRWxrTzF4dVhHNGdJQ0FnYVdZZ0tDRjJZWFZzZEVsa0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1hDSXhVR0Z6YzNkdmNtUWdjSEp2ZG1sa1pYSWdjbVZ4ZFdseVpYTWdZU0IyWVhWc2RDQkpSQ0JwYmlCamIyNW1hV2QxY21GMGFXOXVYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUdsMFpXMUpaRG9nYzNSeWFXNW5JSHdnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ2RHaHBjeTVqYjI1bWFXY3VhWFJsYlVsa1ZHVnRjR3hoZEdVZ0ppWmNiaUFnSUNBZ0lIUm9hWE11WTI5dVptbG5MbWwwWlcxSlpGUmxiWEJzWVhSbExtbHVZMngxWkdWektGd2lKSHR1WVcxbGZWd2lLVnh1SUNBZ0lDa2dlMXh1SUNBZ0lDQWdhWFJsYlVsa0lEMGdkR2hwY3k1amIyNW1hV2N1YVhSbGJVbGtWR1Z0Y0d4aGRHVXVjbVZ3YkdGalpTaGNJaVI3Ym1GdFpYMWNJaXdnYm05eWJXRnNhWHBsWkU1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwZEdWdGN5QTlJR0YzWVdsMElIUm9hWE11WjJWMFNYUmxiWE5DZVZScGRHeGxLRzV2Y20xaGJHbDZaV1JPWVcxbExDQjJZWFZzZEVsa0tUdGNiaUFnSUNBZ0lHbG1JQ2hwZEdWdGN5NXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsMFpXMUpaQ0E5SUdsMFpXMXpXekJkTG1sa08xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcGRHVnRJRDBnWVhkaGFYUWdkR2hwY3k1blpYUlNaWEYxWlhOMEtGeHVJQ0FnSUNBZ0lDQmdMM1l4TDNaaGRXeDBjeThrZTNaaGRXeDBTV1I5TDJsMFpXMXpMeVI3YVhSbGJVbGtmV0JjYmlBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJRzFsZEdFNklGTmxZM0psZEUxbGRHRmtZWFJoSUQwZ2UxeHVJQ0FnSUNBZ0lDQndjbTkyYVdSbGNqb2dkR2hwY3k1d2NtOTJhV1JsY2l4Y2JpQWdJQ0FnSUNBZ2JtRnRaVG9nYVhSbGJTNTBhWFJzWlNCOGZDQnViM0p0WVd4cGVtVmtUbUZ0WlN4Y2JpQWdJQ0FnSUNBZ2RtVnljMmx2YmpvZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUNBZ0lDQmpjbVZoZEdWa1FYUTZJR2wwWlcwdVkzSmxZWFJsWkVGMElEOGdibVYzSUVSaGRHVW9hWFJsYlM1amNtVmhkR1ZrUVhRcElEb2dkVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdJQ0IxY0dSaGRHVmtRWFE2SUdsMFpXMHVkWEJrWVhSbFpFRjBJRDhnYm1WM0lFUmhkR1VvYVhSbGJTNTFjR1JoZEdWa1FYUXBJRG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnSUNCbGJtRmliR1ZrT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0JsZUhSbGNtNWhiRWxrT2lCcGRHVnRMbWxrTEZ4dUlDQWdJQ0FnSUNCMFlXZHpPaUJwZEdWdExtTmhkR1ZuYjNKNUlEOGdleUJqWVhSbFoyOXllVG9nYVhSbGJTNWpZWFJsWjI5eWVTQjlJRG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnZlR0Y2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUcxbGRHRTdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pYSnliM0lwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1Z5Y2lBOUlHVnljbTl5SUdGeklFVnljbTl5TzF4dUlDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQmxjbkl1YldWemMyRm5aUzUwYjB4dmQyVnlRMkZ6WlNncExtbHVZMngxWkdWektGd2libTkwSUdadmRXNWtYQ0lwSUh4OFhHNGdJQ0FnSUNBZ0lHVnljaTV0WlhOellXZGxMbWx1WTJ4MVpHVnpLRndpTkRBMFhDSXBYRzRnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFJvY205M0lIUm9hWE11Y0dGeWMyVkZjbkp2Y2lobGNuSXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0J3WVhKelpVVnljbTl5S0dWeWNtOXlPaUIxYm10dWIzZHVLVG9nVTJWamNtVjBSWEp5YjNJZ2UxeHVJQ0FnSUdOdmJuTjBJR1Z5Y2lBOUlHVnljbTl5SUdGeklFVnljbTl5TzF4dUlDQWdJR052Ym5OMElHMWxjM05oWjJVZ1BTQmxjbkl1YldWemMyRm5aU0I4ZkNCbGNuSXVibUZ0WlNCOGZDQmNJbFZ1YTI1dmQyNGdaWEp5YjNKY0lqdGNiaUFnSUNCamIyNXpkQ0JzYjNkbGNrMWxjM05oWjJVZ1BTQnRaWE56WVdkbExuUnZURzkzWlhKRFlYTmxLQ2s3WEc1Y2JpQWdJQ0JwWmlBb2JHOTNaWEpOWlhOellXZGxMbWx1WTJ4MVpHVnpLRndpYm05MElHWnZkVzVrWENJcElIeDhJR3h2ZDJWeVRXVnpjMkZuWlM1cGJtTnNkV1JsY3loY0lqUXdORndpS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QlRaV055WlhSRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWENKVFJVTlNSVlJmVGs5VVgwWlBWVTVFWENJc1hHNGdJQ0FnSUNBZ0lHQlRaV055WlhRZ2JtOTBJR1p2ZFc1a09pQWtlMjFsYzNOaFoyVjlZQ3hjYmlBZ0lDQWdJQ0FnWlhKeVhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lHeHZkMlZ5VFdWemMyRm5aUzVwYm1Oc2RXUmxjeWhjSW1Gc2NtVmhaSGtnWlhocGMzUnpYQ0lwSUh4OFhHNGdJQ0FnSUNCc2IzZGxjazFsYzNOaFoyVXVhVzVqYkhWa1pYTW9YQ0pqYjI1bWJHbGpkRndpS1NCOGZGeHVJQ0FnSUNBZ2JHOTNaWEpOWlhOellXZGxMbWx1WTJ4MVpHVnpLRndpTkRBNVhDSXBYRzRnSUNBZ0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRk5sWTNKbGRFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lsTkZRMUpGVkY5QlRGSkZRVVJaWDBWWVNWTlVVMXdpTEZ4dUlDQWdJQ0FnSUNCZ1UyVmpjbVYwSUdGc2NtVmhaSGtnWlhocGMzUnpPaUFrZTIxbGMzTmhaMlY5WUN4Y2JpQWdJQ0FnSUNBZ1pYSnlYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hzYjNkbGNrMWxjM05oWjJVdWFXNWpiSFZrWlhNb1hDSjFibUYxZEdodmNtbDZaV1JjSWlrZ2ZId2diRzkzWlhKTlpYTnpZV2RsTG1sdVkyeDFaR1Z6S0Z3aU5EQXhYQ0lwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lGTmxZM0psZEVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JjSWxORlExSkZWRjlRVWs5V1NVUkZVbDlCVlZSSVgwWkJTVXhGUkZ3aUxGeHVJQ0FnSUNBZ0lDQmdRWFYwYUdWdWRHbGpZWFJwYjI0Z1ptRnBiR1ZrT2lBa2UyMWxjM05oWjJWOVlDeGNiaUFnSUNBZ0lDQWdaWEp5WEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoc2IzZGxjazFsYzNOaFoyVXVhVzVqYkhWa1pYTW9YQ0p3WlhKdGFYTnphVzl1WENJcElIeDhJR3h2ZDJWeVRXVnpjMkZuWlM1cGJtTnNkV1JsY3loY0lqUXdNMXdpS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QlRaV055WlhSRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWENKVFJVTlNSVlJmVUZKUFZrbEVSVkpmVUVWU1RVbFRVMGxQVGw5RVJVNUpSVVJjSWl4Y2JpQWdJQ0FnSUNBZ1lGQmxjbTFwYzNOcGIyNGdaR1Z1YVdWa09pQWtlMjFsYzNOaFoyVjlZQ3hjYmlBZ0lDQWdJQ0FnWlhKeVhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHNiM2RsY2sxbGMzTmhaMlV1YVc1amJIVmtaWE1vWENKeVlYUmxJR3hwYldsMFhDSXBJSHg4SUd4dmQyVnlUV1Z6YzJGblpTNXBibU5zZFdSbGN5aGNJalF5T1Z3aUtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJUWldOeVpYUkZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1hDSlRSVU5TUlZSZlVGSlBWa2xFUlZKZlVrRlVSVjlNU1UxSlZFVkVYQ0lzWEc0Z0lDQWdJQ0FnSUdCU1lYUmxJR3hwYldsMFpXUTZJQ1I3YldWemMyRm5aWDFnTEZ4dUlDQWdJQ0FnSUNCbGNuSmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdiRzkzWlhKTlpYTnpZV2RsTG1sdVkyeDFaR1Z6S0Z3aWNISnZkbWxrWlhKY0lpa2dmSHhjYmlBZ0lDQWdJR3h2ZDJWeVRXVnpjMkZuWlM1cGJtTnNkV1JsY3loY0luVnVZWFpoYVd4aFlteGxYQ0lwSUh4OFhHNGdJQ0FnSUNCc2IzZGxjazFsYzNOaFoyVXVhVzVqYkhWa1pYTW9YQ0pqYjI1dVpXTjBhVzl1WENJcElIeDhYRzRnSUNBZ0lDQnNiM2RsY2sxbGMzTmhaMlV1YVc1amJIVmtaWE1vWENKMGFXMWxiM1YwWENJcFhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lGTmxZM0psZEVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JjSWxORlExSkZWRjlRVWs5V1NVUkZVbDlWVGtGV1FVbE1RVUpNUlZ3aUxGeHVJQ0FnSUNBZ0lDQmdVSEp2ZG1sa1pYSWdkVzVoZG1GcGJHRmliR1U2SUNSN2JXVnpjMkZuWlgxZ0xGeHVJQ0FnSUNBZ0lDQmxjbkpjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJUWldOeVpYUkZjbkp2Y2loY2JpQWdJQ0FnSUZ3aVUwVkRVa1ZVWDFCU1QxWkpSRVZTWDBOUFRrWk1TVU5VWENJc1hHNGdJQ0FnSUNCZ1VISnZkbWxrWlhJZ1pYSnliM0k2SUNSN2JXVnpjMkZuWlgxZ0xGeHVJQ0FnSUNBZ1pYSnlYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1oyVjBVbVZ4ZFdWemRDaHdZWFJvT2lCemRISnBibWNwT2lCUWNtOXRhWE5sUEdGdWVUNGdlMXh1SUNBZ0lHTnZibk4wSUhWeWJDQTlJR0FrZTNSb2FYTXVZMjl1Wm1sbkxtTnZibTVsWTNSSWIzTjBmU1I3Y0dGMGFIMWdPMXh1SUNBZ0lHTnZibk4wSUdobFlXUmxjbk02SUZKbFkyOXlaRHh6ZEhKcGJtY3NJSE4wY21sdVp6NGdQU0I3WEc0Z0lDQWdJQ0JjSWtOdmJuUmxiblF0Vkhsd1pWd2lPaUJjSW1Gd2NHeHBZMkYwYVc5dUwycHpiMjVjSWl4Y2JpQWdJQ0I5TzF4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ym1acFp5NWpiMjV1WldOMFZHOXJaVzRwSUh0Y2JpQWdJQ0FnSUdobFlXUmxjbk5iWENKQmRYUm9iM0pwZW1GMGFXOXVYQ0pkSUQwZ1lFSmxZWEpsY2lBa2UzUm9hWE11WTI5dVptbG5MbU52Ym01bFkzUlViMnRsYm4xZ08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSEpsYzNCdmJuTmxJRDBnWVhkaGFYUWdabVYwWTJnb2RYSnNMQ0I3WEc0Z0lDQWdJQ0J0WlhSb2IyUTZJRndpUjBWVVhDSXNYRzRnSUNBZ0lDQm9aV0ZrWlhKekxGeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2FXWWdLQ0Z5WlhOd2IyNXpaUzV2YXlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWlhKeWIzSkNiMlI1SUQwZ1lYZGhhWFFnY21WemNHOXVjMlV1ZEdWNGRDZ3BMbU5oZEdOb0tDZ3BJRDArSUZ3aVhDSXBPMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lHQXhVR0Z6YzNkdmNtUWdRVkJKSUdWeWNtOXlJQ2drZTNKbGMzQnZibk5sTG5OMFlYUjFjMzBwT2lBa2UyVnljbTl5UW05a2VTQjhmQ0J5WlhOd2IyNXpaUzV6ZEdGMGRYTlVaWGgwZldCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNCdmJuTmxMbXB6YjI0b0tUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ2NHOXpkRkpsY1hWbGMzUW9jR0YwYURvZ2MzUnlhVzVuTENCaWIyUjVPaUJoYm5rcE9pQlFjbTl0YVhObFBHRnVlVDRnZTF4dUlDQWdJR052Ym5OMElIVnliQ0E5SUdBa2UzUm9hWE11WTI5dVptbG5MbU52Ym01bFkzUkliM04wZlNSN2NHRjBhSDFnTzF4dUlDQWdJR052Ym5OMElHaGxZV1JsY25NNklGSmxZMjl5WkR4emRISnBibWNzSUhOMGNtbHVaejRnUFNCN1hHNGdJQ0FnSUNCY0lrTnZiblJsYm5RdFZIbHdaVndpT2lCY0ltRndjR3hwWTJGMGFXOXVMMnB6YjI1Y0lpeGNiaUFnSUNCOU8xeHVJQ0FnSUdsbUlDaDBhR2x6TG1OdmJtWnBaeTVqYjI1dVpXTjBWRzlyWlc0cElIdGNiaUFnSUNBZ0lHaGxZV1JsY25OYlhDSkJkWFJvYjNKcGVtRjBhVzl1WENKZElEMGdZRUpsWVhKbGNpQWtlM1JvYVhNdVkyOXVabWxuTG1OdmJtNWxZM1JVYjJ0bGJuMWdPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhKbGMzQnZibk5sSUQwZ1lYZGhhWFFnWm1WMFkyZ29kWEpzTENCN1hHNGdJQ0FnSUNCdFpYUm9iMlE2SUZ3aVVFOVRWRndpTEZ4dUlDQWdJQ0FnYUdWaFpHVnljeXhjYmlBZ0lDQWdJR0p2WkhrNklFcFRUMDR1YzNSeWFXNW5hV1o1S0dKdlpIa3BMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdhV1lnS0NGeVpYTndiMjV6WlM1dmF5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1pYSnliM0pDYjJSNUlEMGdZWGRoYVhRZ2NtVnpjRzl1YzJVdWRHVjRkQ2dwTG1OaGRHTm9LQ2dwSUQwK0lGd2lYQ0lwTzF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0F4VUdGemMzZHZjbVFnUVZCSklHVnljbTl5SUNna2UzSmxjM0J2Ym5ObExuTjBZWFIxYzMwcE9pQWtlMlZ5Y205eVFtOWtlU0I4ZkNCeVpYTndiMjV6WlM1emRHRjBkWE5VWlhoMGZXQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzQnZibk5sTG1wemIyNG9LVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdaR1ZzWlhSbFVtVnhkV1Z6ZENod1lYUm9PaUJ6ZEhKcGJtY3BPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCamIyNXpkQ0IxY213Z1BTQmdKSHQwYUdsekxtTnZibVpwWnk1amIyNXVaV04wU0c5emRIMGtlM0JoZEdoOVlEdGNiaUFnSUNCamIyNXpkQ0JvWldGa1pYSnpPaUJTWldOdmNtUThjM1J5YVc1bkxDQnpkSEpwYm1jK0lEMGdlMXh1SUNBZ0lDQWdYQ0pEYjI1MFpXNTBMVlI1Y0dWY0lqb2dYQ0poY0hCc2FXTmhkR2x2Ymk5cWMyOXVYQ0lzWEc0Z0lDQWdmVHRjYmlBZ0lDQnBaaUFvZEdocGN5NWpiMjVtYVdjdVkyOXVibVZqZEZSdmEyVnVLU0I3WEc0Z0lDQWdJQ0JvWldGa1pYSnpXMXdpUVhWMGFHOXlhWHBoZEdsdmJsd2lYU0E5SUdCQ1pXRnlaWElnSkh0MGFHbHpMbU52Ym1acFp5NWpiMjV1WldOMFZHOXJaVzU5WUR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnlaWE53YjI1elpTQTlJR0YzWVdsMElHWmxkR05vS0hWeWJDd2dlMXh1SUNBZ0lDQWdiV1YwYUc5a09pQmNJa1JGVEVWVVJWd2lMRnh1SUNBZ0lDQWdhR1ZoWkdWeWN5eGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lHbG1JQ2doY21WemNHOXVjMlV1YjJzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdWeWNtOXlRbTlrZVNBOUlHRjNZV2wwSUhKbGMzQnZibk5sTG5SbGVIUW9LUzVqWVhSamFDZ29LU0E5UGlCY0lsd2lLVHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJKYm5SbGNtNWhiRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmdNVkJoYzNOM2IzSmtJRUZRU1NCbGNuSnZjaUFvSkh0eVpYTndiMjV6WlM1emRHRjBkWE45S1RvZ0pIdGxjbkp2Y2tKdlpIa2dmSHdnY21WemNHOXVjMlV1YzNSaGRIVnpWR1Y0ZEgxZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1lYTjVibU1nWjJWMFNYUmxiWE5DZVZScGRHeGxLRnh1SUNBZ0lIUnBkR3hsT2lCemRISnBibWNzWEc0Z0lDQWdkbUYxYkhSSlpEb2djM1J5YVc1blhHNGdJQ2s2SUZCeWIyMXBjMlU4WVc1NVcxMCtJSHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZV3hzU1hSbGJYTWdQU0JoZDJGcGRDQjBhR2x6TG1kbGRGSmxjWFZsYzNRb1lDOTJNUzkyWVhWc2RITXZKSHQyWVhWc2RFbGtmUzlwZEdWdGMyQXBPMXh1SUNBZ0lDQWdZMjl1YzNRZ2FYUmxiWE1nUFNCQmNuSmhlUzVwYzBGeWNtRjVLR0ZzYkVsMFpXMXpLU0EvSUdGc2JFbDBaVzF6SURvZ1cyRnNiRWwwWlcxelhUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCcGRHVnRjeTVtYVd4MFpYSW9LR2wwWlcwcElEMCtJR2wwWlcwdWRHbDBiR1VnUFQwOUlIUnBkR3hsS1R0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2RHaHBjeTV3WVhKelpVVnljbTl5S0dWeWNtOXlJR0Z6SUVWeWNtOXlLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=OnePasswordSecretServiceConfig.js.map
4
- //# sourceMappingURL=OnePasswordSecretServiceConfig.cjs.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3JldHMvb25lcGFzc3dvcmQvT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3NlY3JldHMvb25lcGFzc3dvcmQvY29uZmlnXG4gKiBAc3VtbWFyeSAxUGFzc3dvcmQgc2VjcmV0IHNlcnZpY2UgY29uZmlndXJhdGlvbi5cbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIHNjaGVtYSBmb3IgdGhlIDFQYXNzd29yZCBDb25uZWN0IGludGVncmF0aW9uLlxuICovXG5pbXBvcnQgeyBTZWNyZXRTZXJ2aWNlQ29uZmlnIH0gZnJvbSBcIi4uLy4uL3NlY3JldHMvY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9uZVBhc3N3b3JkU2VjcmV0U2VydmljZUNvbmZpZyBleHRlbmRzIFNlY3JldFNlcnZpY2VDb25maWcge1xuICBwcm92aWRlcjogXCIxcGFzc3dvcmRcIjtcbiAgY29ubmVjdEhvc3Q6IHN0cmluZztcbiAgY29ubmVjdFRva2VuPzogc3RyaW5nO1xuICB2YXVsdElkPzogc3RyaW5nO1xuICBpdGVtSWRUZW1wbGF0ZT86IHN0cmluZztcbn1cbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsODZCQUE4NkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lUMjVsVUdGemMzZHZjbVJUWldOeVpYUlRaWEoyYVdObFEyOXVabWxuTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzTmxZM0psZEhNdmIyNWxjR0Z6YzNkdmNtUXZUMjVsVUdGemMzZHZjbVJUWldOeVpYUlRaWEoyYVdObFEyOXVabWxuTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM05sWTNKbGRITXZiMjVsY0dGemMzZHZjbVF2WTI5dVptbG5YRzRnS2lCQWMzVnRiV0Z5ZVNBeFVHRnpjM2R2Y21RZ2MyVmpjbVYwSUhObGNuWnBZMlVnWTI5dVptbG5kWEpoZEdsdmJpNWNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQkRiMjVtYVdkMWNtRjBhVzl1SUhOamFHVnRZU0JtYjNJZ2RHaGxJREZRWVhOemQyOXlaQ0JEYjI1dVpXTjBJR2x1ZEdWbmNtRjBhVzl1TGx4dUlDb3ZYRzVwYlhCdmNuUWdleUJUWldOeVpYUlRaWEoyYVdObFEyOXVabWxuSUgwZ1puSnZiU0JjSWk0dUx5NHVMM05sWTNKbGRITXZZMjl5WlZ3aU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRTl1WlZCaGMzTjNiM0prVTJWamNtVjBVMlZ5ZG1salpVTnZibVpwWnlCbGVIUmxibVJ6SUZObFkzSmxkRk5sY25acFkyVkRiMjVtYVdjZ2UxeHVJQ0J3Y205MmFXUmxjam9nWENJeGNHRnpjM2R2Y21SY0lqdGNiaUFnWTI5dWJtVmpkRWh2YzNRNklITjBjbWx1Wnp0Y2JpQWdZMjl1Ym1WamRGUnZhMlZ1UHpvZ2MzUnlhVzVuTzF4dUlDQjJZWFZzZEVsa1B6b2djM1J5YVc1bk8xeHVJQ0JwZEdWdFNXUlVaVzF3YkdGMFpUODZJSE4wY21sdVp6dGNibjFjYmlKZGZRPT0iXX0=
@@ -21,5 +21,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  */
22
22
  __exportStar(require("./OnePasswordSecretService.cjs"), exports);
23
23
  __exportStar(require("./OnePasswordSecretServiceConfig.cjs"), exports);
24
- //# sourceMappingURL=index.js.map
25
- //# sourceMappingURL=index.cjs.map
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VjcmV0cy9vbmVwYXNzd29yZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsOENBQTJDO0FBQzNDLG9EQUFpRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvc2VjcmV0cy9vbmVwYXNzd29yZFxuICogQHN1bW1hcnkgMVBhc3N3b3JkIHNlY3JldCBzZXJ2aWNlIGV4cG9ydHMuXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgMVBhc3N3b3JkIHNlY3JldCBzZXJ2aWNlIGFuZCBpdHMgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PbmVQYXNzd29yZFNlY3JldFNlcnZpY2VDb25maWdcIjtcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7R0FJRztBQUNILGdFQUE4QztBQUM5QyxzRUFBb0Q7QUFDcEQsMHFCQUEwcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3NlY3JldHMvb25lcGFzc3dvcmRcbiAqIEBzdW1tYXJ5IDFQYXNzd29yZCBzZWNyZXQgc2VydmljZSBleHBvcnRzLlxuICogQGRlc2NyaXB0aW9uIFJlLWV4cG9ydHMgdGhlIDFQYXNzd29yZCBzZWNyZXQgc2VydmljZSBhbmQgaXRzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL09uZVBhc3N3b3JkU2VjcmV0U2VydmljZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vT25lUGFzc3dvcmRTZWNyZXRTZXJ2aWNlQ29uZmlnLmpzXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk5emNtTXZjMlZqY21WMGN5OXZibVZ3WVhOemQyOXlaQzlwYm1SbGVDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096dEhRVWxITzBGQlEwZ3NPRU5CUVRKRE8wRkJRek5ETEc5RVFVRnBSQ0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUcxdlpIVnNaU0JwYm5SbFozSmhkR2x2Ym5NdmMyVmpjbVYwY3k5dmJtVndZWE56ZDI5eVpGeHVJQ29nUUhOMWJXMWhjbmtnTVZCaGMzTjNiM0prSUhObFkzSmxkQ0J6WlhKMmFXTmxJR1Y0Y0c5eWRITXVYRzRnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVV0Wlhod2IzSjBjeUIwYUdVZ01WQmhjM04zYjNKa0lITmxZM0psZENCelpYSjJhV05sSUdGdVpDQnBkSE1nWTI5dVptbG5kWEpoZEdsdmJpNWNiaUFxTDF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dlQyNWxVR0Z6YzNkdmNtUlRaV055WlhSVFpYSjJhV05sWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOVBibVZRWVhOemQyOXlaRk5sWTNKbGRGTmxjblpwWTJWRGIyNW1hV2RjSWp0Y2JpSmRmUT09Il19