@pipeline-builder/pipeline-data 4.3.3 → 4.3.4

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 (47) hide show
  1. package/lib/api/crud-service.d.ts +7 -0
  2. package/lib/api/crud-service.js +14 -3
  3. package/lib/api/pipeline-step-resolution.d.ts +111 -0
  4. package/lib/api/pipeline-step-resolution.js +163 -0
  5. package/lib/api/plugin-consumption-policy.d.ts +8 -2
  6. package/lib/api/plugin-consumption-policy.js +20 -3
  7. package/lib/api/plugin-resolution.d.ts +26 -9
  8. package/lib/api/plugin-resolution.js +51 -33
  9. package/lib/api/reporting/analytics-queries.d.ts +6 -4
  10. package/lib/api/reporting/analytics-queries.js +11 -11
  11. package/lib/api/reporting/deploy-rollup.d.ts +2 -0
  12. package/lib/api/reporting/deploy-rollup.js +5 -1
  13. package/lib/api/reporting/failure-classifier.d.ts +2 -6
  14. package/lib/api/reporting/failure-classifier.js +22 -1
  15. package/lib/api/reporting/ingest.js +73 -16
  16. package/lib/api/reporting/plugin-exposure.d.ts +261 -15
  17. package/lib/api/reporting/plugin-exposure.js +423 -38
  18. package/lib/api/reporting/stakeholder/compose.d.ts +1 -1
  19. package/lib/api/reporting/stakeholder/compose.js +30 -1
  20. package/lib/api/reporting/stakeholder/store.d.ts +16 -2
  21. package/lib/api/reporting/stakeholder/store.js +17 -6
  22. package/lib/api/reporting/types.d.ts +80 -1
  23. package/lib/api/reporting/types.js +1 -1
  24. package/lib/api/reporting-service.d.ts +11 -4
  25. package/lib/api/reporting-service.js +106 -43
  26. package/lib/api/soft-delete-sweep.d.ts +8 -18
  27. package/lib/api/soft-delete-sweep.js +35 -5
  28. package/lib/api/version-references.d.ts +80 -0
  29. package/lib/api/version-references.js +135 -0
  30. package/lib/core/query-filters.d.ts +3 -3
  31. package/lib/core/query-filters.js +1 -1
  32. package/lib/database/drizzle-schema.d.ts +1238 -143
  33. package/lib/database/drizzle-schema.js +6 -3
  34. package/lib/database/index.d.ts +1 -1
  35. package/lib/database/index.js +2 -2
  36. package/lib/database/schema/ecosystem.d.ts +53 -0
  37. package/lib/database/schema/ecosystem.js +14 -3
  38. package/lib/database/schema/pipeline.d.ts +38 -0
  39. package/lib/database/schema/pipeline.js +20 -2
  40. package/lib/database/schema/plugin.d.ts +265 -0
  41. package/lib/database/schema/plugin.js +34 -3
  42. package/lib/database/schema/reporting-analytics.d.ts +786 -4
  43. package/lib/database/schema/reporting-analytics.js +111 -5
  44. package/lib/index.d.ts +5 -3
  45. package/lib/index.js +5 -3
  46. package/lib/testing/exports.json +24 -0
  47. package/package.json +4 -3
@@ -74,9 +74,12 @@ export const EXPOSURE_SOURCES = ['declared', 'deployed'];
74
74
  * What an org decided about an exposure. `open` until someone looks;
75
75
  * `accepted` is a time-boxed decision with a reason and an owner, never a
76
76
  * permanent mute; `false_positive` is a scanner disagreement worth recording so
77
- * the same finding stops being re-raised as news.
77
+ * the same finding stops being re-raised as news. `fixed` = the pipeline moved
78
+ * to another version of the plugin; `removed` = the step (or the pipeline, or
79
+ * its deploy) is gone — the triage fields are KEPT, so a step re-added before
80
+ * an acceptance's deadline gets the acceptance back.
78
81
  */
79
- export const EXPOSURE_TRIAGE_STATES = ['open', 'accepted', 'false_positive', 'fixed'];
82
+ export const EXPOSURE_TRIAGE_STATES = ['open', 'accepted', 'false_positive', 'fixed', 'removed'];
80
83
  /**
81
84
  * One deployment: an execution that reached an environment.
82
85
  *
@@ -114,6 +117,12 @@ export const doraDeployment = pgTable('dora_deployments', {
114
117
  restoredAt: timestamp('restored_at', { withTimezone: true }),
115
118
  /** How the incident→deploy link was judged. NULL when nothing was correlated. */
116
119
  correlationConfidence: varchar('correlation_confidence', { length: 10 }).$type(),
120
+ /**
121
+ * The EventBridge event id of the deploy STAGE event that last wrote this row,
122
+ * so a DORA number traces back to the exact `pipeline_events` row (and AWS
123
+ * event) behind it. NULL for a deploy from a producer without one.
124
+ */
125
+ sourceEventId: varchar('source_event_id', { length: 128 }),
117
126
  createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
118
127
  updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
119
128
  }, (table) => ({
@@ -186,12 +195,27 @@ export const pipelinePluginResolution = pgTable('pipeline_plugin_resolution', {
186
195
  declaredVersion: varchar('declared_version', { length: 50 }),
187
196
  /** What that resolves to today. NULL when nothing satisfies it. */
188
197
  resolvedVersion: varchar('resolved_version', { length: 50 }),
198
+ /** The resolved record: a `plugins` row id or a listing version id. */
199
+ resolvedPluginId: varchar('resolved_plugin_id', { length: 255 }),
200
+ /**
201
+ * The image digest the resolved version is pinned to. A version string alone
202
+ * cannot say whether a pipeline is on the rebuilt, patched image or the old
203
+ * one — the rescan and the advisory search match on this.
204
+ */
205
+ resolvedDigest: varchar('resolved_digest', { length: 71 }),
189
206
  /** The newest version the org is entitled to install, for the "gap" column. */
190
207
  latestVersion: varchar('latest_version', { length: 50 }),
191
208
  /** `major` / `minor` / `patch` / `none`, from resolved → latest. */
192
209
  versionGap: varchar('version_gap', { length: 10 }),
193
210
  /** False when the resolved version is outside the org's consumption policy. */
194
211
  withinPolicy: boolean('within_policy').default(true).notNull(),
212
+ /**
213
+ * The root org of a TEAM's pipeline (null for a root org's). A team resolves
214
+ * through its root's installs, policy and shared plugins, and the plugin
215
+ * service re-resolving a pipeline after a publish / flag / yank has no request
216
+ * to read the hierarchy from — so the write that knew it records it.
217
+ */
218
+ rootOrgId: varchar('root_org_id', { length: 255 }),
195
219
  computedAt: timestamp('computed_at', { withTimezone: true }).defaultNow().notNull(),
196
220
  }, (table) => ({
197
221
  pk: primaryKey({ columns: [table.pipelineId, table.stageName, table.stepName] }),
@@ -199,6 +223,9 @@ export const pipelinePluginResolution = pgTable('pipeline_plugin_resolution', {
199
223
  pluginIdx: index('pipeline_plugin_resolution_plugin_idx').on(table.pluginPublisher, table.pluginName),
200
224
  // "Which pipelines are behind?" — the outdated section's driving scan.
201
225
  gapIdx: index('pipeline_plugin_resolution_gap_idx').on(table.orgId, table.versionGap),
226
+ // "Which pipelines declare this version / image?" — rescan fan-out, advisory search.
227
+ versionIdx: index('pipeline_plugin_resolution_version_idx')
228
+ .on(table.pluginName, table.resolvedVersion, table.resolvedDigest),
202
229
  }));
203
230
  /**
204
231
  * One pipeline's exposure to one vulnerable plugin version.
@@ -228,6 +255,16 @@ export const pluginVulnExposure = pgTable('plugin_vuln_exposure', {
228
255
  highCount: integer('high_count').default(0).notNull(),
229
256
  /** The findings themselves: CVE id, package, fixed-in version. Capped by the writer. */
230
257
  topFindings: jsonb('top_findings').$type().default([]).notNull(),
258
+ /**
259
+ * EVERY Critical/High finding of the version at its last refresh, as finding
260
+ * keys (`id|package|packageVersion`) — uncapped, unlike `top_findings`, because
261
+ * an acceptance is checked against it: what was accepted must be provable.
262
+ */
263
+ findingKeys: text('finding_keys').array().$type().default([]).notNull(),
264
+ /** The finding keys an `accepted` triage covered, frozen at the decision. */
265
+ acceptedFindingKeys: text('accepted_finding_keys').array().$type().default([]).notNull(),
266
+ /** The acceptance explicitly covered KEV-listed findings (never implied). */
267
+ acceptedKev: boolean('accepted_kev').default(false).notNull(),
231
268
  flaggedAt: timestamp('flagged_at', { withTimezone: true }).defaultNow().notNull(),
232
269
  /** Set when a deploy moved the pipeline onto a version without the findings. */
233
270
  fixedAt: timestamp('fixed_at', { withTimezone: true }),
@@ -240,11 +277,80 @@ export const pluginVulnExposure = pgTable('plugin_vuln_exposure', {
240
277
  updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
241
278
  }, (table) => ({
242
279
  // One live exposure per (pipeline, plugin version, digest, source): a nightly
243
- // rescan refreshes counts rather than opening a new row every night.
280
+ // rescan refreshes counts rather than opening a new row every night, and a
281
+ // version rebuilt on a patched base (same string, new digest) gets its own row.
282
+ // postgres-init.sql creates it NULLS NOT DISTINCT (drizzle's uniqueIndex can't
283
+ // say so) so an image-less version still has exactly one row to refresh.
244
284
  exposureUnique: uniqueIndex('plugin_vuln_exposure_unique')
245
- .on(table.pipelineId, table.pluginName, table.pluginVersion, table.source),
285
+ .on(table.pipelineId, table.pluginName, table.pluginVersion, table.imageDigest, table.source),
246
286
  orgOpenIdx: index('plugin_vuln_exposure_org_open_idx').on(table.orgId, table.triageState)
247
287
  .where(sql `fixed_at IS NULL`),
248
288
  digestIdx: index('plugin_vuln_exposure_digest_idx').on(table.imageDigest),
249
289
  }));
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLWFuYWx5dGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9zY2hlbWEvcmVwb3J0aW5nLWFuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQVUsQ0FBQztBQUc1Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQVUsQ0FBQztBQUcxRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQVUsQ0FBQztBQUc5Rjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCO0lBQ3pFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYTtJQUNoRixlQUFlLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE9BQU87Q0FD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RUFBdUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzNHLG1GQUFtRjtJQUNuRixhQUFhLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2xFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ25DLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYiw4RUFBOEU7SUFDOUUscUVBQXFFO0lBQ3JFLGNBQWMsRUFBRSxXQUFXLENBQUMsNkJBQTZCLENBQUM7U0FDdkQsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDNUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUM7U0FDdEYsS0FBSyxDQUFDLEdBQUcsQ0FBQSxrQkFBa0IsQ0FBQztJQUMvQixTQUFTLEVBQUUsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Q0FDMUUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgYW5hbHl0aWNzIGxheWVyIGV2ZXJ5IHJlcG9ydCBzZWN0aW9uIGFuZCBkYXNoYm9hcmQgcmVhZHMgaW5zdGVhZCBvZiByYXdcbiAqIGV2ZW50cy5cbiAqXG4gKiBSZXBvcnRpbmcgaGFzIGJlZW4gc2Nhbm5pbmcgYHBpcGVsaW5lX2V2ZW50c2AgZGlyZWN0bHkuIFRoYXQgd29ya2VkIHdoaWxlIHRoZVxuICogb25seSBjb25zdW1lciB3YXMgb25lIGRhc2hib2FyZCBvdmVyIGEgMzAtZGF5IHdpbmRvdywgYW5kIHN0b3BzIHdvcmtpbmcgZm9yXG4gKiB0aGlzIGZlYXR1cmU6IGEgcXVhcnRlcmx5IHJlcG9ydCBvdmVyIGEgOTAtZGF5IHdpbmRvdywgZm9yIGFuIG9yZyB3aXRoIGFcbiAqIHRob3VzYW5kIGV4ZWN1dGlvbnMgYSBkYXksIHJlLWRlcml2ZXMgdGhlIHNhbWUgYWdncmVnYXRlcyBvbiBldmVyeSByZWFkLCBhbmRcbiAqIHRoZSByZXRlbnRpb24gc3dlZXAgdGhlbiBkZWxldGVzIHRoZSByb3dzIHRoZSBudW1iZXJzIGNhbWUgZnJvbS4gVHdvIHRhYmxlcyBmaXhcbiAqIGJvdGggcHJvYmxlbXM6XG4gKlxuICogIC0gYGRvcmFfZGVwbG95bWVudHNgIOKAlCBPTkUgUk9XIFBFUiBERVBMT1ksIHdyaXR0ZW4gYXQgaW5nZXN0LiBMZWFkIHRpbWUgaXNcbiAqICAgIHN0b3JlZCBwZXIgZXhlY3V0aW9uIGhlcmUsIG5ldmVyIHJlY29tcHV0ZWQgcGVyIGV2ZW50LCBiZWNhdXNlIHRoZVxuICogICAgcGVyLWV2ZW50IGZvcm0gZG91YmxlLWNvdW50czogYSBkZXBsb3kgc3RhZ2UgZW1pdHMgYSBTVEFHRSBldmVudCBhbmQgYW5cbiAqICAgIEFDVElPTiBldmVudCwgYW5kIGJvdGggY2FycnkgdGhlIHNhbWUgY29tbWl0IHJhbmdlLlxuICogIC0gYGV4ZWN1dGlvbl9kYWlseV9yb2xsdXBzYCDigJQgb25lIHJvdyBwZXIgb3JnLCBwaXBlbGluZSwgc3RhZ2UgYW5kIGRheS4gRXZlcnlcbiAqICAgIHNlY3Rpb24gdGhhdCBzYXlzIFwicnVuc1wiLCBcInN1Y2Nlc3MgcmF0ZVwiLCBcInA5NVwiIG9yIFwiYnVpbGQgbWludXRlc1wiIHJlYWRzXG4gKiAgICB0aGVzZSwgc28gYSByZXBvcnQgY29zdHMgYSBmZXcgaHVuZHJlZCByb3dzIGluc3RlYWQgb2YgYSBmZXcgaHVuZHJlZFxuICogICAgdGhvdXNhbmQuXG4gKlxuICogQm90aCBhcmUgREVSSVZFRDogdGhleSBjYW4gYmUgcmVidWlsdCBmcm9tIGV2ZW50cyB3aGlsZSB0aGUgZXZlbnRzIGV4aXN0LCBhbmRcbiAqIHRoZXkgb3V0bGl2ZSB0aGVtIGFmdGVyd2FyZHMuIFRoYXQgaXMgdGhlIHBvaW50IOKAlCB0aGV5IGFyZSB0aGUgcmV0YWluZWQgZm9ybS5cbiAqXG4gKiBUaGUgb3RoZXIgdHdvIHRhYmxlcyBoZXJlIGFuc3dlciBcIndoYXQgaXMgYWN0dWFsbHkgcnVubmluZ1wiLCB3aGljaCB0aGUgcmVwb3J0J3NcbiAqIHBsdWdpbiBzZWN0aW9ucyBuZWVkIGFuZCBubyBleGlzdGluZyB0YWJsZSBjYW4gYW5zd2VyOlxuICpcbiAqICAtIGBwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbmAg4oCUIHdoYXQgYSBwaXBlbGluZSdzIERFQ0xBUkVEIHBsdWdpbiB2ZXJzaW9uc1xuICogICAgcmVzb2x2ZSB0bywgcmVjb21wdXRlZCBvbiB3cml0ZSByYXRoZXIgdGhhbiByZXNvbHZlZCBwZXIgcmVhZC5cbiAqICAtIGBwbHVnaW5fdnVsbl9leHBvc3VyZWAg4oCUIHdoaWNoIHBpcGVsaW5lcyBhcmUgZXhwb3NlZCB0byB3aGljaCB2dWxuZXJhYmxlXG4gKiAgICBwbHVnaW4gdmVyc2lvbiwgb3BlbmVkIGJ5IGEgcmVzY2FuIGFuZCBjbG9zZWQgYnkgYSBmaXhpbmcgZGVwbG95LlxuICovXG5cbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGJvb2xlYW4sIGluZGV4LCBpbnRlZ2VyLCBqc29uYiwgcGdUYWJsZSwgcHJpbWFyeUtleSwgdGV4dCwgdGltZXN0YW1wLCB1bmlxdWVJbmRleCwgdmFyY2hhciB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnO1xuXG4vKipcbiAqIFdoeSBhIGRlcGxveSdzIGxlYWQgdGltZSBjb3VsZCBub3QgYmUgbWVhc3VyZWQuIFJlY29yZGVkIHJhdGhlciB0aGFuIGxlZnQgTlVMTFxuICogd2l0aCBubyBleHBsYW5hdGlvbiwgYmVjYXVzZSB0aGUgdGhyZWUgY2F1c2VzIG5lZWQgZGlmZmVyZW50IGZpeGVzIGFuZCB0aGVcbiAqIHJlcG9ydCBzaG93cyB0aGUgcmVhc29uOiBubyBTQ00gdG9rZW4gZm9yIHRoZSBzb3VyY2UsIHRoZSBwcm92aWRlciByYXRlLWxpbWl0ZWRcbiAqIHRoZSByYW5nZSB3YWxrLCBvciB0aGUgc291cmNlIHR5cGUgaGFzIG5vIHJhbmdlIEFQSSBhdCBhbGwuXG4gKi9cbmV4cG9ydCBjb25zdCBMRUFEX1RJTUVfR0FQUyA9IFsnbm9fdG9rZW4nLCAncmF0ZV9saW1pdGVkJywgJ3Vuc3VwcG9ydGVkX3NvdXJjZScsICdub19jb21taXRfZGF0YSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGVhZFRpbWVHYXAgPSAodHlwZW9mIExFQURfVElNRV9HQVBTKVtudW1iZXJdO1xuXG4vKipcbiAqIEhvdyBjb25maWRlbnRseSBhbiBpbmNpZGVudCB3YXMgYXR0cmlidXRlZCB0byBhIGRlcGxveS4gU2hvd24gYmVzaWRlIGNoYW5nZVxuICogZmFpbHVyZSByYXRlIGFuZCB0aW1lIHRvIHJlc3RvcmUsIGJlY2F1c2UgXCJ0aGlzIGRlcGxveSBicm9rZSBwcm9kdWN0aW9uXCIgYW5kXG4gKiBcImFuIGluY2lkZW50IG9wZW5lZCBzb21lIGhvdXJzIGFmdGVyIHRoaXMgZGVwbG95XCIgYXJlIGRpZmZlcmVudCBjbGFpbXMgYW5kIGFcbiAqIG1hbmFnZXIgYWN0cyBkaWZmZXJlbnRseSBvbiBlYWNoLlxuICovXG5leHBvcnQgY29uc3QgQ09SUkVMQVRJT05fQ09ORklERU5DRVMgPSBbJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQ29ycmVsYXRpb25Db25maWRlbmNlID0gKHR5cGVvZiBDT1JSRUxBVElPTl9DT05GSURFTkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBIb3cgYSBwaXBlbGluZSBjYW1lIHRvIGV4aXN0LiBGb3IgdGhlIGFkb3B0aW9uIHNlY3Rpb246IGFuIG9yZyB3aG9zZSBwaXBlbGluZXNcbiAqIGFyZSBhbGwgaGFuZC1idWlsdCBpcyBhIGRpZmZlcmVudCBhZG9wdGlvbiBzdG9yeSBmcm9tIG9uZSB0ZW1wbGF0aW5nIHRoZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBQSVBFTElORV9DUkVBVElPTl9TT1VSQ0VTID0gWydtYW51YWwnLCAndGVtcGxhdGUnLCAnYWknLCAnYnVsaycsICdjZGsnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lQ3JlYXRpb25Tb3VyY2UgPSAodHlwZW9mIFBJUEVMSU5FX0NSRUFUSU9OX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogV2hhdCBraW5kIG9mIHRoaW5nIGJyb2tlLiBBc3NpZ25lZCBhdCBpbmdlc3QgYnkgdGhlIGNsYXNzaWZpZXJcbiAqIChgYXBpL3JlcG9ydGluZy9zcmMvc2VydmljZXMvZmFpbHVyZS1jbGFzc2lmaWVyLnRzYCksIHdoaWNoIGlzIHJ1bGVzIG92ZXIgdGhlXG4gKiBhY3Rpb24ncyB0eXBlIGFuZCBlcnJvciB0ZXh0IOKAlCBkZWxpYmVyYXRlbHkgZGF0YSwgbm90IGNvZGUsIHNvIHRoZSB0YXhvbm9teSBjYW5cbiAqIGdyb3cgd2l0aG91dCBhIGRlcGxveS5cbiAqXG4gKiBUaGUgY2F0ZWdvcmllcyBvdmVybGFwIHRoZSBwbHVnaW4tYnVpbGQgdGF4b25vbXkgb24gcHVycG9zZTogYSBkZXBlbmRlbmN5XG4gKiBmYWlsdXJlIGlzIGEgZGVwZW5kZW5jeSBmYWlsdXJlIHdoZXRoZXIgaXQgaGFwcGVuZWQgYnVpbGRpbmcgYSBwbHVnaW4gb3JcbiAqIHJ1bm5pbmcgb25lLCBhbmQgdHdvIHZvY2FidWxhcmllcyBmb3IgdGhlIHNhbWUgdGhpbmcgd291bGQgbWFrZSB0aGUgcmVwb3J0IGFuZFxuICogdGhlIGJ1aWxkIHF1ZXVlIGRpc2FncmVlLlxuICovXG5leHBvcnQgY29uc3QgRkFJTFVSRV9DQVRFR09SSUVTID0gW1xuICAnc291cmNlX2NoZWNrb3V0JywgJ2RlcGVuZGVuY3knLCAnYnVpbGQnLCAndW5pdF90ZXN0JywgJ2ludGVncmF0aW9uX3Rlc3QnLFxuICAnc2VjdXJpdHlfc2NhbicsICdpbmZyYXN0cnVjdHVyZScsICdkZXBsb3ltZW50JywgJ2F1dGhlbnRpY2F0aW9uJywgJ3Blcm1pc3Npb25zJyxcbiAgJ2NvbmZpZ3VyYXRpb24nLCAndGltZW91dCcsICdyZXNvdXJjZV9leGhhdXN0aW9uJywgJ2V4dGVybmFsX3NlcnZpY2UnLCAnb3RoZXInLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEZhaWx1cmVDYXRlZ29yeSA9ICh0eXBlb2YgRkFJTFVSRV9DQVRFR09SSUVTKVtudW1iZXJdO1xuXG4vKiogV2hlcmUgYSBwbHVnaW4tdmVyc2lvbiBleHBvc3VyZSB3YXMgb2JzZXJ2ZWQuICovXG5leHBvcnQgY29uc3QgRVhQT1NVUkVfU09VUkNFUyA9IFsnZGVjbGFyZWQnLCAnZGVwbG95ZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEV4cG9zdXJlU291cmNlID0gKHR5cGVvZiBFWFBPU1VSRV9TT1VSQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoYXQgYW4gb3JnIGRlY2lkZWQgYWJvdXQgYW4gZXhwb3N1cmUuIGBvcGVuYCB1bnRpbCBzb21lb25lIGxvb2tzO1xuICogYGFjY2VwdGVkYCBpcyBhIHRpbWUtYm94ZWQgZGVjaXNpb24gd2l0aCBhIHJlYXNvbiBhbmQgYW4gb3duZXIsIG5ldmVyIGFcbiAqIHBlcm1hbmVudCBtdXRlOyBgZmFsc2VfcG9zaXRpdmVgIGlzIGEgc2Nhbm5lciBkaXNhZ3JlZW1lbnQgd29ydGggcmVjb3JkaW5nIHNvXG4gKiB0aGUgc2FtZSBmaW5kaW5nIHN0b3BzIGJlaW5nIHJlLXJhaXNlZCBhcyBuZXdzLlxuICovXG5leHBvcnQgY29uc3QgRVhQT1NVUkVfVFJJQUdFX1NUQVRFUyA9IFsnb3BlbicsICdhY2NlcHRlZCcsICdmYWxzZV9wb3NpdGl2ZScsICdmaXhlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRXhwb3N1cmVUcmlhZ2VTdGF0ZSA9ICh0eXBlb2YgRVhQT1NVUkVfVFJJQUdFX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBPbmUgZGVwbG95bWVudDogYW4gZXhlY3V0aW9uIHRoYXQgcmVhY2hlZCBhbiBlbnZpcm9ubWVudC5cbiAqXG4gKiBXcml0dGVuIGF0IGluZ2VzdCwgb25lIHJvdyBwZXIgKGV4ZWN1dGlvbiwgZW52aXJvbm1lbnQpLiBFdmVyeXRoaW5nIERPUkFcbiAqIHJlcG9ydHMgaXMgaGVyZSwgc28gYC9kb3JhYCwgdGhlIHRyZW5kIGFuZCB0aGUgcmVwb3J0IHNlY3Rpb25zIHN0b3Agc2Nhbm5pbmdcbiAqIHJhdyBldmVudHMg4oCUIGFuZCBrZWVwIHdvcmtpbmcgYWZ0ZXIgdGhlIGV2ZW50cyBhcmUgc3dlcHQuXG4gKlxuICogQHRhYmxlIGRvcmFfZGVwbG95bWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IGRvcmFEZXBsb3ltZW50ID0gcGdUYWJsZSgnZG9yYV9kZXBsb3ltZW50cycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBleGVjdXRpb25JZDogdmFyY2hhcignZXhlY3V0aW9uX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGVudmlyb25tZW50OiB2YXJjaGFyKCdlbnZpcm9ubWVudCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8qKiBXaGVuIHRoZSBkZXBsb3kgc3RhZ2UgY29tcGxldGVkLiBUaGUgZGVwbG95J3Mgb3duIHRpbWVzdGFtcCwgbm90IHRoZSBydW4ncy4gKi9cbiAgZGVwbG95ZWRBdDogdGltZXN0YW1wKCdkZXBsb3llZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgc3VjY2VlZGVkOiBib29sZWFuKCdzdWNjZWVkZWQnKS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBUaGUgT0xERVNUIHVuc2hpcHBlZCBjb21taXQgaW4gdGhpcyBkZXBsb3kncyByYW5nZS4gTGVhZCB0aW1lIGlzXG4gICAqIGBkZXBsb3llZEF0IC0gZWFybGllc3RDb21taXRBdGAsIGNvbXB1dGVkIG9uY2UgYW5kIHN0b3JlZCwgYmVjYXVzZSB0aGVcbiAgICogcGVyLWV2ZW50IGZvcm0gZG91YmxlLWNvdW50cyBhIGRlcGxveSB0aGF0IGVtaXRzIGJvdGggYSBTVEFHRSBhbmQgYW4gQUNUSU9OXG4gICAqIGV2ZW50IGNhcnJ5aW5nIHRoZSBzYW1lIHJhbmdlLlxuICAgKi9cbiAgZWFybGllc3RDb21taXRBdDogdGltZXN0YW1wKCdlYXJsaWVzdF9jb21taXRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgbGVhZFRpbWVTZWNvbmRzOiBpbnRlZ2VyKCdsZWFkX3RpbWVfc2Vjb25kcycpLFxuICBjb21taXRDb3VudDogaW50ZWdlcignY29tbWl0X2NvdW50JyksXG4gIGNvbW1pdFNoYTogdmFyY2hhcignY29tbWl0X3NoYScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8qKiBXaHkgbGVhZCB0aW1lIGlzIGFic2VudCwgd2hlbiBpdCBpcy4gTlVMTCB3aGVuIGl0IHdhcyBtZWFzdXJlZC4gKi9cbiAgbGVhZFRpbWVHYXA6IHZhcmNoYXIoJ2xlYWRfdGltZV9nYXAnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8TGVhZFRpbWVHYXA+KCksXG4gIC8qKlxuICAgKiBQb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlcnMsIGRlbm9ybWFsaXplZCBvbnRvIHRoZSBkZXBsb3kgc28gY2hhbmdlLWZhaWx1cmVcbiAgICogcmF0ZSBhbmQgdGltZS10by1yZXN0b3JlIGFyZSBvbmUgc2NhbiByYXRoZXIgdGhhbiBhIGpvaW4gcGVyIHdpbmRvdy5cbiAgICovXG4gIGZhaWxlZEF0OiB0aW1lc3RhbXAoJ2ZhaWxlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICByZXN0b3JlZEF0OiB0aW1lc3RhbXAoJ3Jlc3RvcmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBIb3cgdGhlIGluY2lkZW504oaSZGVwbG95IGxpbmsgd2FzIGp1ZGdlZC4gTlVMTCB3aGVuIG5vdGhpbmcgd2FzIGNvcnJlbGF0ZWQuICovXG4gIGNvcnJlbGF0aW9uQ29uZmlkZW5jZTogdmFyY2hhcignY29ycmVsYXRpb25fY29uZmlkZW5jZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxDb3JyZWxhdGlvbkNvbmZpZGVuY2U+KCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBPbmUgcm93IHBlciBleGVjdXRpb24gcGVyIGVudmlyb25tZW50OiBhIHJlZGVsaXZlcmVkIGV2ZW50IHVwc2VydHMgcmF0aGVyXG4gIC8vIHRoYW4gaW5zZXJ0aW5nIGEgc2Vjb25kIGRlcGxveSAoRXZlbnRCcmlkZ2Ug4oaSIFNRUyBpcyBhdC1sZWFzdC1vbmNlKS5cbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUuZXhlY3V0aW9uSWQsIHRhYmxlLmVudmlyb25tZW50XSB9KSxcbiAgLy8gVGhlIHdpbmRvdyBzY2FuIGV2ZXJ5IERPUkEgcmVhZCBkb2VzLlxuICBvcmdFbnZEZXBsb3llZElkeDogaW5kZXgoJ2RvcmFfZGVwbG95bWVudF9vcmdfZW52X2RlcGxveWVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5lbnZpcm9ubWVudCwgdGFibGUuZGVwbG95ZWRBdCksXG4gIG9yZ0RlcGxveWVkSWR4OiBpbmRleCgnZG9yYV9kZXBsb3ltZW50X29yZ19kZXBsb3llZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuZGVwbG95ZWRBdCksXG4gIHBpcGVsaW5lSWR4OiBpbmRleCgnZG9yYV9kZXBsb3ltZW50X3BpcGVsaW5lX2lkeCcpLm9uKHRhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLmRlcGxveWVkQXQpLFxuICAvLyBUaGUgcHJvbW90aW9uIHZpZXc6IG9uZSBjb21taXQncyBwYXRoIGFjcm9zcyBlbnZpcm9ubWVudHMuXG4gIGNvbW1pdElkeDogaW5kZXgoJ2RvcmFfZGVwbG95bWVudF9jb21taXRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNvbW1pdFNoYSlcbiAgICAud2hlcmUoc3FsYGNvbW1pdF9zaGEgSVMgTk9UIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBQcmUtYWdncmVnYXRlZCBleGVjdXRpb24gY291bnRzIGFuZCB0aW1pbmdzLCBvbmUgcm93IHBlciBvcmcsIHBpcGVsaW5lLCBzdGFnZVxuICogYW5kIFVUQyBkYXkuXG4gKlxuICogUmVidWlsdCBmb3IgYSBkYXkgd2hlbiBsYXRlIGV2ZW50cyBhcnJpdmUsIHNvIHRoZSByb2xsdXAgYW5kIHRoZSBldmVudHMgYWdyZWVcbiAqIHdoaWxlIGJvdGggZXhpc3QuIGBmYWlsdXJlc0J5Q2F0ZWdvcnlgIGlzIGEgSlNPTiBtYXAgcmF0aGVyIHRoYW4gYSBjb2x1bW4gcGVyXG4gKiBjYXRlZ29yeSBiZWNhdXNlIHRoZSB0YXhvbm9teSBncm93cy5cbiAqXG4gKiBAdGFibGUgZXhlY3V0aW9uX2RhaWx5X3JvbGx1cHNcbiAqL1xuZXhwb3J0IGNvbnN0IGV4ZWN1dGlvbkRhaWx5Um9sbHVwID0gcGdUYWJsZSgnZXhlY3V0aW9uX2RhaWx5X3JvbGx1cHMnLCB7XG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgLyoqIFRoZSBVVEMgZGF0ZSB0aGlzIHJvdyBhZ2dyZWdhdGVzLiBSZXBvcnQgcGVyaW9kcyByZS1idWNrZXQgaW4gdGhlIHJlcG9ydCdzXG4gICAqICBvd24gdGltZXpvbmUgYnkgc3VtbWluZyBkYXlzIOKAlCB3aGljaCBpcyB3aHkgdGhlIGdyYWluIGlzIGEgREFZLiAqL1xuICBkYXk6IHRpbWVzdGFtcCgnZGF5JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogYCcnYCBmb3IgdGhlIHBpcGVsaW5lLWxldmVsIHJvdzsgYSBzdGFnZSBuYW1lIGZvciBhIHN0YWdlLWxldmVsIHJvdy4gKi9cbiAgc3RhZ2VOYW1lOiB2YXJjaGFyKCdzdGFnZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5kZWZhdWx0KCcnKS5ub3ROdWxsKCksXG4gIHJ1bnM6IGludGVnZXIoJ3J1bnMnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgc3VjY2VlZGVkOiBpbnRlZ2VyKCdzdWNjZWVkZWQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgZmFpbGVkOiBpbnRlZ2VyKCdmYWlsZWQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgLyoqIGNhdGVnb3J5IOKGkiBjb3VudC4gRmVlZHMgdGhlIGZhaWx1cmUtYW5hbHlzaXMgc2VjdGlvbi4gKi9cbiAgZmFpbHVyZXNCeUNhdGVnb3J5OiBqc29uYignZmFpbHVyZXNfYnlfY2F0ZWdvcnknKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgcDUwTXM6IGludGVnZXIoJ3A1MF9tcycpLFxuICBwOTBNczogaW50ZWdlcigncDkwX21zJyksXG4gIHA5NU1zOiBpbnRlZ2VyKCdwOTVfbXMnKSxcbiAgLyoqIFN1bW1lZCBleGVjdXRpb24gZHVyYXRpb24sIGluIHNlY29uZHMuIFRoZSByZXNvdXJjZS1jb25zdW1wdGlvbiBzZWN0aW9uJ3NcbiAgICogIG9ubHkgaW5wdXQ7IGRlbGliZXJhdGVseSBOT1QgY29udmVydGVkIHRvIG1vbmV5IGFueXdoZXJlLiAqL1xuICBidWlsZFNlY29uZHM6IGludGVnZXIoJ2J1aWxkX3NlY29uZHMnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgLyoqIFdoZW4gdGhpcyByb3cgd2FzIGxhc3QgcmVidWlsdCwgc28gYSBsYXRlLWV2ZW50IHJlYnVpbGQgaXMgdmlzaWJsZS4gKi9cbiAgY29tcHV0ZWRBdDogdGltZXN0YW1wKCdjb21wdXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLm9yZ0lkLCB0YWJsZS5kYXksIHRhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLnN0YWdlTmFtZV0gfSksXG4gIG9yZ0RheUlkeDogaW5kZXgoJ2V4ZWN1dGlvbl9yb2xsdXBfb3JnX2RheV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuZGF5KSxcbiAgcGlwZWxpbmVEYXlJZHg6IGluZGV4KCdleGVjdXRpb25fcm9sbHVwX3BpcGVsaW5lX2RheV9pZHgnKS5vbih0YWJsZS5waXBlbGluZUlkLCB0YWJsZS5kYXkpLFxufSkpO1xuXG4vKipcbiAqIFdoYXQgYSBwaXBlbGluZSdzIGRlY2xhcmVkIHBsdWdpbiBzdGVwcyByZXNvbHZlIHRvLlxuICpcbiAqIFJlY29tcHV0ZWQgb24gcGlwZWxpbmUgd3JpdGUgYW5kIG9uIHBsdWdpbiBwdWJsaXNoLCByYXRoZXIgdGhhbiByZXNvbHZlZCBhdFxuICogcmVhZCB0aW1lOiB0aGUgb3V0ZGF0ZWQtcGx1Z2luIHNlY3Rpb24gY29tcGFyZXMgXCJpbiB1c2VcIiBhZ2FpbnN0IFwibGF0ZXN0XG4gKiBhdmFpbGFibGVcIiBmb3IgZXZlcnkgc3RlcCBvZiBldmVyeSBwaXBlbGluZSwgYW5kIGRvaW5nIHRoYXQgcmVzb2x1dGlvbiBwZXIgcmVhZFxuICogbWFkZSBpdCBhIHF1ZXJ5IG5vYm9keSBjb3VsZCBhZmZvcmQgdG8gcHV0IGluIGEgcmVwb3J0LlxuICpcbiAqIEB0YWJsZSBwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvblxuICovXG5leHBvcnQgY29uc3QgcGlwZWxpbmVQbHVnaW5SZXNvbHV0aW9uID0gcGdUYWJsZSgncGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb24nLCB7XG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGlwZWxpbmVJZDogdmFyY2hhcigncGlwZWxpbmVfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgc3RhZ2VOYW1lOiB2YXJjaGFyKCdzdGFnZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHN0ZXBOYW1lOiB2YXJjaGFyKCdzdGVwX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luUHVibGlzaGVyOiB2YXJjaGFyKCdwbHVnaW5fcHVibGlzaGVyJywgeyBsZW5ndGg6IDM5IH0pLFxuICBwbHVnaW5OYW1lOiB2YXJjaGFyKCdwbHVnaW5fbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogV2hhdCB0aGUgY29uZmlnIGFza2VkIGZvciDigJQgYSByYW5nZSwgYSBwaW4sIG9yIG5vdGhpbmcuICovXG4gIGRlY2xhcmVkVmVyc2lvbjogdmFyY2hhcignZGVjbGFyZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIFdoYXQgdGhhdCByZXNvbHZlcyB0byB0b2RheS4gTlVMTCB3aGVuIG5vdGhpbmcgc2F0aXNmaWVzIGl0LiAqL1xuICByZXNvbHZlZFZlcnNpb246IHZhcmNoYXIoJ3Jlc29sdmVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIC8qKiBUaGUgbmV3ZXN0IHZlcnNpb24gdGhlIG9yZyBpcyBlbnRpdGxlZCB0byBpbnN0YWxsLCBmb3IgdGhlIFwiZ2FwXCIgY29sdW1uLiAqL1xuICBsYXRlc3RWZXJzaW9uOiB2YXJjaGFyKCdsYXRlc3RfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIGBtYWpvcmAgLyBgbWlub3JgIC8gYHBhdGNoYCAvIGBub25lYCwgZnJvbSByZXNvbHZlZCDihpIgbGF0ZXN0LiAqL1xuICB2ZXJzaW9uR2FwOiB2YXJjaGFyKCd2ZXJzaW9uX2dhcCcsIHsgbGVuZ3RoOiAxMCB9KSxcbiAgLyoqIEZhbHNlIHdoZW4gdGhlIHJlc29sdmVkIHZlcnNpb24gaXMgb3V0c2lkZSB0aGUgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5LiAqL1xuICB3aXRoaW5Qb2xpY3k6IGJvb2xlYW4oJ3dpdGhpbl9wb2xpY3knKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgY29tcHV0ZWRBdDogdGltZXN0YW1wKCdjb21wdXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLnN0YWdlTmFtZSwgdGFibGUuc3RlcE5hbWVdIH0pLFxuICBvcmdJZHg6IGluZGV4KCdwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbl9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxuICBwbHVnaW5JZHg6IGluZGV4KCdwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbl9wbHVnaW5faWR4Jykub24odGFibGUucGx1Z2luUHVibGlzaGVyLCB0YWJsZS5wbHVnaW5OYW1lKSxcbiAgLy8gXCJXaGljaCBwaXBlbGluZXMgYXJlIGJlaGluZD9cIiDigJQgdGhlIG91dGRhdGVkIHNlY3Rpb24ncyBkcml2aW5nIHNjYW4uXG4gIGdhcElkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX2dhcF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUudmVyc2lvbkdhcCksXG59KSk7XG5cbi8qKlxuICogT25lIHBpcGVsaW5lJ3MgZXhwb3N1cmUgdG8gb25lIHZ1bG5lcmFibGUgcGx1Z2luIHZlcnNpb24uXG4gKlxuICogT3BlbmVkIGJ5IHRoZSBuaWdodGx5IHJlc2NhbiB3aGVuIGEgdmVyc2lvbiBpbiB1c2UgaGFzIGZpeGFibGUgQ3JpdGljYWwvSGlnaFxuICogZmluZGluZ3MsIGFuZCBDTE9TRUQgYnkgYSBkZXBsb3kgdGhhdCBtb3ZlcyB0aGUgcGlwZWxpbmUgb2ZmIGl0LiBJdCBpcyBhXG4gKiBwZXItcGlwZWxpbmUgcm93IHJhdGhlciB0aGFuIGEgcGVyLXZlcnNpb24gb25lIGJlY2F1c2UgdGhlIHF1ZXN0aW9uIGEgbWFuYWdlclxuICogYXNrcyBpcyBcIndoaWNoIG9mIG91ciBwaXBlbGluZXMgaXMgZXhwb3NlZFwiLCBhbmQgYW5zd2VyaW5nIHRoYXQgZnJvbSBhXG4gKiB2ZXJzaW9uLWxldmVsIHRhYmxlIG1lYW5zIHJlLWRlcml2aW5nIHRoZSBwaXBlbGluZSBzZXQgb24gZXZlcnkgcmVhZC5cbiAqXG4gKiBLZXllZCBieSBJTUFHRSBESUdFU1QsIG5vdCB2ZXJzaW9uIHN0cmluZzogYSB2ZXJzaW9uIHJlYnVpbHQgb24gYSBwYXRjaGVkIGJhc2VcbiAqIGltYWdlIGlzIGEgZGlmZmVyZW50IGFydGlmYWN0IHdpdGggZGlmZmVyZW50IGZpbmRpbmdzLCBhbmQga2V5aW5nIG9uIHRoZSBzdHJpbmdcbiAqIHdvdWxkIHJlcG9ydCB0aGUgb2xkIG9uZSBmb3JldmVyLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fdnVsbl9leHBvc3VyZVxuICovXG5leHBvcnQgY29uc3QgcGx1Z2luVnVsbkV4cG9zdXJlID0gcGdUYWJsZSgncGx1Z2luX3Z1bG5fZXhwb3N1cmUnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblB1Ymxpc2hlcjogdmFyY2hhcigncGx1Z2luX3B1Ymxpc2hlcicsIHsgbGVuZ3RoOiAzOSB9KSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVmVyc2lvbjogdmFyY2hhcigncGx1Z2luX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBzb3VyY2U6IHZhcmNoYXIoJ3NvdXJjZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxFeHBvc3VyZVNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIGNyaXRpY2FsQ291bnQ6IGludGVnZXIoJ2NyaXRpY2FsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGhpZ2hDb3VudDogaW50ZWdlcignaGlnaF9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogVGhlIGZpbmRpbmdzIHRoZW1zZWx2ZXM6IENWRSBpZCwgcGFja2FnZSwgZml4ZWQtaW4gdmVyc2lvbi4gQ2FwcGVkIGJ5IHRoZSB3cml0ZXIuICovXG4gIHRvcEZpbmRpbmdzOiBqc29uYigndG9wX2ZpbmRpbmdzJykuJHR5cGU8QXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgZmxhZ2dlZEF0OiB0aW1lc3RhbXAoJ2ZsYWdnZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICAvKiogU2V0IHdoZW4gYSBkZXBsb3kgbW92ZWQgdGhlIHBpcGVsaW5lIG9udG8gYSB2ZXJzaW9uIHdpdGhvdXQgdGhlIGZpbmRpbmdzLiAqL1xuICBmaXhlZEF0OiB0aW1lc3RhbXAoJ2ZpeGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHRyaWFnZVN0YXRlOiB2YXJjaGFyKCd0cmlhZ2Vfc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8RXhwb3N1cmVUcmlhZ2VTdGF0ZT4oKS5kZWZhdWx0KCdvcGVuJykubm90TnVsbCgpLFxuICAvKiogQW4gYWNjZXB0YW5jZSBpcyB0aW1lLWJveGVkOiBhIHBlcm1hbmVudCBtdXRlIGlzIGhvdyBhIGZpbmRpbmcgaXMgZm9yZ290dGVuLiAqL1xuICBhY2NlcHRlZFVudGlsOiB0aW1lc3RhbXAoJ2FjY2VwdGVkX3VudGlsJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHRyaWFnZVJlYXNvbjogdGV4dCgndHJpYWdlX3JlYXNvbicpLFxuICB0cmlhZ2VkQnk6IHRleHQoJ3RyaWFnZWRfYnknKSxcbiAgdHJpYWdlZEF0OiB0aW1lc3RhbXAoJ3RyaWFnZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBPbmUgbGl2ZSBleHBvc3VyZSBwZXIgKHBpcGVsaW5lLCBwbHVnaW4gdmVyc2lvbiwgZGlnZXN0LCBzb3VyY2UpOiBhIG5pZ2h0bHlcbiAgLy8gcmVzY2FuIHJlZnJlc2hlcyBjb3VudHMgcmF0aGVyIHRoYW4gb3BlbmluZyBhIG5ldyByb3cgZXZlcnkgbmlnaHQuXG4gIGV4cG9zdXJlVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3Z1bG5fZXhwb3N1cmVfdW5pcXVlJylcbiAgICAub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUucGx1Z2luTmFtZSwgdGFibGUucGx1Z2luVmVyc2lvbiwgdGFibGUuc291cmNlKSxcbiAgb3JnT3BlbklkeDogaW5kZXgoJ3BsdWdpbl92dWxuX2V4cG9zdXJlX29yZ19vcGVuX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS50cmlhZ2VTdGF0ZSlcbiAgICAud2hlcmUoc3FsYGZpeGVkX2F0IElTIE5VTExgKSxcbiAgZGlnZXN0SWR4OiBpbmRleCgncGx1Z2luX3Z1bG5fZXhwb3N1cmVfZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmltYWdlRGlnZXN0KSxcbn0pKTtcblxuZXhwb3J0IHR5cGUgRG9yYURlcGxveW1lbnQgPSB0eXBlb2YgZG9yYURlcGxveW1lbnQuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRG9yYURlcGxveW1lbnRJbnNlcnQgPSB0eXBlb2YgZG9yYURlcGxveW1lbnQuJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgRXhlY3V0aW9uRGFpbHlSb2xsdXAgPSB0eXBlb2YgZXhlY3V0aW9uRGFpbHlSb2xsdXAuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRXhlY3V0aW9uRGFpbHlSb2xsdXBJbnNlcnQgPSB0eXBlb2YgZXhlY3V0aW9uRGFpbHlSb2xsdXAuJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVQbHVnaW5SZXNvbHV0aW9uID0gdHlwZW9mIHBpcGVsaW5lUGx1Z2luUmVzb2x1dGlvbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZVBsdWdpblJlc29sdXRpb25JbnNlcnQgPSB0eXBlb2YgcGlwZWxpbmVQbHVnaW5SZXNvbHV0aW9uLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFBsdWdpblZ1bG5FeHBvc3VyZSA9IHR5cGVvZiBwbHVnaW5WdWxuRXhwb3N1cmUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luVnVsbkV4cG9zdXJlSW5zZXJ0ID0gdHlwZW9mIHBsdWdpblZ1bG5FeHBvc3VyZS4kaW5mZXJJbnNlcnQ7XG4iXX0=
290
+ /**
291
+ * The last `/plugins/lookup` outcome per pipeline STEP, when synth (CLI or the
292
+ * CodeBuild Lambda) sends the step's context. The DECLARED side
293
+ * (`pipeline_plugin_resolution`) says what the config resolves to when it was
294
+ * saved; this says what synth was actually told — the version, the image, every
295
+ * warning, and the refusal — which is what a "why did my deploy stop" page needs.
296
+ *
297
+ * @table pipeline_step_lookups
298
+ */
299
+ export const pipelineStepLookup = pgTable('pipeline_step_lookups', {
300
+ orgId: varchar('org_id', { length: 255 }).notNull(),
301
+ pipelineId: varchar('pipeline_id', { length: 255 }).notNull(),
302
+ /** The step's contract label: `synth` or `<stageName>/<alias ?? name>`. */
303
+ stepKey: varchar('step_key', { length: 512 }).notNull(),
304
+ pluginPublisher: varchar('plugin_publisher', { length: 39 }),
305
+ pluginName: varchar('plugin_name', { length: 255 }).notNull(),
306
+ /** What the reference asked for (a range, a pin, or nothing). */
307
+ requestedVersion: varchar('requested_version', { length: 50 }),
308
+ /** NULL when the lookup was refused. */
309
+ resolvedVersion: varchar('resolved_version', { length: 50 }),
310
+ resolvedPluginId: varchar('resolved_plugin_id', { length: 255 }),
311
+ imageDigest: varchar('image_digest', { length: 71 }),
312
+ /** `[{ code, message, severity }]` — every warning the answer carried. */
313
+ warnings: jsonb('warnings').$type().default([]).notNull(),
314
+ /**
315
+ * `{ code, reason, message }` when the lookup was refused — never for
316
+ * vulnerability state (that only grades), but for a deleted / not-installed /
317
+ * policy-blocked plugin or a failed image signature.
318
+ */
319
+ refusal: jsonb('refusal').$type(),
320
+ lookedUpAt: timestamp('looked_up_at', { withTimezone: true }).defaultNow().notNull(),
321
+ }, (table) => ({
322
+ pk: primaryKey({ columns: [table.pipelineId, table.stepKey] }),
323
+ orgIdx: index('pipeline_step_lookups_org_idx').on(table.orgId),
324
+ }));
325
+ /**
326
+ * The latest security-scanner report a pipeline RUN uploaded, per (pipeline,
327
+ * tool, stage) — what the pipeline's own scan steps found in what it builds,
328
+ * next to what the platform's rescan found in the plugin images it runs.
329
+ * Counts are stored so a report section reads them without unpacking findings.
330
+ *
331
+ * @table pipeline_security_reports
332
+ */
333
+ export const pipelineSecurityReport = pgTable('pipeline_security_reports', {
334
+ id: varchar('id', { length: 255 }).primaryKey(),
335
+ orgId: varchar('org_id', { length: 255 }).notNull(),
336
+ pipelineId: varchar('pipeline_id', { length: 255 }).notNull(),
337
+ tool: varchar('tool', { length: 64 }).notNull(),
338
+ format: varchar('format', { length: 16 }).notNull(),
339
+ stage: varchar('stage', { length: 255 }).default('').notNull(),
340
+ executionId: varchar('execution_id', { length: 255 }),
341
+ criticalCount: integer('critical_count').default(0).notNull(),
342
+ highCount: integer('high_count').default(0).notNull(),
343
+ mediumCount: integer('medium_count').default(0).notNull(),
344
+ lowCount: integer('low_count').default(0).notNull(),
345
+ kevCount: integer('kev_count').default(0).notNull(),
346
+ criticalFixable: integer('critical_fixable').default(0).notNull(),
347
+ highFixable: integer('high_fixable').default(0).notNull(),
348
+ findings: jsonb('findings').$type().default([]).notNull(),
349
+ truncated: boolean('truncated').default(false).notNull(),
350
+ submittedBy: text('submitted_by'),
351
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
352
+ }, (table) => ({
353
+ latestUnique: uniqueIndex('pipeline_security_reports_unique').on(table.pipelineId, table.tool, table.stage),
354
+ orgIdx: index('pipeline_security_reports_org_idx').on(table.orgId),
355
+ }));
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLWFuYWx5dGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9zY2hlbWEvcmVwb3J0aW5nLWFuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQVUsQ0FBQztBQUc1Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQVUsQ0FBQztBQUcxRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQVUsQ0FBQztBQUc5Rjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCO0lBQ3pFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYTtJQUNoRixlQUFlLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE9BQU87Q0FDdEUsQ0FBQztBQUdYLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQVUsQ0FBQztBQUdsRTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFVLENBQUM7QUFHMUc7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFO0lBQ3hELEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQy9ELFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzlELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ25ELGtGQUFrRjtJQUNsRixVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN0RSxTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6Qzs7Ozs7T0FLRztJQUNILGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6RSxlQUFlLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0lBQzdDLFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pELHNFQUFzRTtJQUN0RSxXQUFXLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBZTtJQUMxRTs7O09BR0c7SUFDSCxRQUFRLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RCxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1RCxpRkFBaUY7SUFDakYscUJBQXFCLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUF5QjtJQUN2Rzs7OztPQUlHO0lBQ0gsYUFBYSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUNuRSx3Q0FBd0M7SUFDeEMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLHNDQUFzQyxDQUFDO1NBQzdELEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUN2RCxjQUFjLEVBQUUsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMzRixXQUFXLEVBQUUsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUN6Riw2REFBNkQ7SUFDN0QsU0FBUyxFQUFFLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDNUUsS0FBSyxDQUFDLEdBQUcsQ0FBQSx3QkFBd0IsQ0FBQztDQUN0QyxDQUFDLENBQUMsQ0FBQztBQUVKOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRTtJQUNyRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRDswRUFDc0U7SUFDdEUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDN0QsMkVBQTJFO0lBQzNFLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2RSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDMUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3BELE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM5Qyw0REFBNEQ7SUFDNUQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsS0FBSyxFQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDeEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDeEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDeEI7b0VBQ2dFO0lBQ2hFLFlBQVksRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMzRCwwRUFBMEU7SUFDMUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDcEYsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUN4RixTQUFTLEVBQUUsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUMzRSxjQUFjLEVBQUUsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQztDQUMzRixDQUFDLENBQUMsQ0FBQztBQUVKOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRTtJQUM1RSxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM3RCxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMzRCxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6RCxlQUFlLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzdELDhEQUE4RDtJQUM5RCxlQUFlLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVELG1FQUFtRTtJQUNuRSxlQUFlLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVELHVFQUF1RTtJQUN2RSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEU7Ozs7T0FJRztJQUNILGNBQWMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUQsK0VBQStFO0lBQy9FLGFBQWEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEQsb0VBQW9FO0lBQ3BFLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELCtFQUErRTtJQUMvRSxZQUFZLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDOUQ7Ozs7O09BS0c7SUFDSCxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNsRCxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNwRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNoRixNQUFNLEVBQUUsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDbkUsU0FBUyxFQUFFLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDckcsdUVBQXVFO0lBQ3ZFLE1BQU0sRUFBRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQ3JGLHFGQUFxRjtJQUNyRixVQUFVLEVBQUUsS0FBSyxDQUFDLHdDQUF3QyxDQUFDO1NBQ3hELEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQztDQUNyRSxDQUFDLENBQUMsQ0FBQztBQUVKOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixFQUFFO0lBQ2hFLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQy9DLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzdELGVBQWUsRUFBRSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDNUQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDN0QsYUFBYSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNsRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBa0IsQ0FBQyxPQUFPLEVBQUU7SUFDM0UsYUFBYSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDN0QsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3JELHdGQUF3RjtJQUN4RixXQUFXLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssRUFBa0MsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2hHOzs7O09BSUc7SUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDakYsNkVBQTZFO0lBQzdFLG1CQUFtQixFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEcsNkVBQTZFO0lBQzdFLFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM3RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixnRkFBZ0Y7SUFDaEYsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdEQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQXVCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMzRyxtRkFBbUY7SUFDbkYsYUFBYSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSxnRkFBZ0Y7SUFDaEYsK0VBQStFO0lBQy9FLHlFQUF5RTtJQUN6RSxjQUFjLEVBQUUsV0FBVyxDQUFDLDZCQUE2QixDQUFDO1NBQ3ZELEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDL0YsVUFBVSxFQUFFLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUM7U0FDdEYsS0FBSyxDQUFDLEdBQUcsQ0FBQSxrQkFBa0IsQ0FBQztJQUMvQixTQUFTLEVBQUUsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Q0FDMUUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtJQUNqRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM3RCwyRUFBMkU7SUFDM0UsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkQsZUFBZSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1RCxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM3RCxpRUFBaUU7SUFDakUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzlELHdDQUF3QztJQUN4QyxlQUFlLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCwwRUFBMEU7SUFDMUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQStELENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN0SDs7OztPQUlHO0lBQ0gsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQTREO0lBQzNGLFVBQVUsRUFBRSxTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ3JGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxNQUFNLEVBQUUsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Q0FDL0QsQ0FBQyxDQUFDLENBQUM7QUFFSjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixFQUFFO0lBQ3pFLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBQy9DLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzdELElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQy9DLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM5RCxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyRCxhQUFhLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM3RCxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pELFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsZUFBZSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDakUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pELFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFrQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekYsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3hELFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2pDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixZQUFZLEVBQUUsV0FBVyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNHLE1BQU0sRUFBRSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztDQUNuRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBhbmFseXRpY3MgbGF5ZXIgZXZlcnkgcmVwb3J0IHNlY3Rpb24gYW5kIGRhc2hib2FyZCByZWFkcyBpbnN0ZWFkIG9mIHJhd1xuICogZXZlbnRzLlxuICpcbiAqIFJlcG9ydGluZyBoYXMgYmVlbiBzY2FubmluZyBgcGlwZWxpbmVfZXZlbnRzYCBkaXJlY3RseS4gVGhhdCB3b3JrZWQgd2hpbGUgdGhlXG4gKiBvbmx5IGNvbnN1bWVyIHdhcyBvbmUgZGFzaGJvYXJkIG92ZXIgYSAzMC1kYXkgd2luZG93LCBhbmQgc3RvcHMgd29ya2luZyBmb3JcbiAqIHRoaXMgZmVhdHVyZTogYSBxdWFydGVybHkgcmVwb3J0IG92ZXIgYSA5MC1kYXkgd2luZG93LCBmb3IgYW4gb3JnIHdpdGggYVxuICogdGhvdXNhbmQgZXhlY3V0aW9ucyBhIGRheSwgcmUtZGVyaXZlcyB0aGUgc2FtZSBhZ2dyZWdhdGVzIG9uIGV2ZXJ5IHJlYWQsIGFuZFxuICogdGhlIHJldGVudGlvbiBzd2VlcCB0aGVuIGRlbGV0ZXMgdGhlIHJvd3MgdGhlIG51bWJlcnMgY2FtZSBmcm9tLiBUd28gdGFibGVzIGZpeFxuICogYm90aCBwcm9ibGVtczpcbiAqXG4gKiAgLSBgZG9yYV9kZXBsb3ltZW50c2Ag4oCUIE9ORSBST1cgUEVSIERFUExPWSwgd3JpdHRlbiBhdCBpbmdlc3QuIExlYWQgdGltZSBpc1xuICogICAgc3RvcmVkIHBlciBleGVjdXRpb24gaGVyZSwgbmV2ZXIgcmVjb21wdXRlZCBwZXIgZXZlbnQsIGJlY2F1c2UgdGhlXG4gKiAgICBwZXItZXZlbnQgZm9ybSBkb3VibGUtY291bnRzOiBhIGRlcGxveSBzdGFnZSBlbWl0cyBhIFNUQUdFIGV2ZW50IGFuZCBhblxuICogICAgQUNUSU9OIGV2ZW50LCBhbmQgYm90aCBjYXJyeSB0aGUgc2FtZSBjb21taXQgcmFuZ2UuXG4gKiAgLSBgZXhlY3V0aW9uX2RhaWx5X3JvbGx1cHNgIOKAlCBvbmUgcm93IHBlciBvcmcsIHBpcGVsaW5lLCBzdGFnZSBhbmQgZGF5LiBFdmVyeVxuICogICAgc2VjdGlvbiB0aGF0IHNheXMgXCJydW5zXCIsIFwic3VjY2VzcyByYXRlXCIsIFwicDk1XCIgb3IgXCJidWlsZCBtaW51dGVzXCIgcmVhZHNcbiAqICAgIHRoZXNlLCBzbyBhIHJlcG9ydCBjb3N0cyBhIGZldyBodW5kcmVkIHJvd3MgaW5zdGVhZCBvZiBhIGZldyBodW5kcmVkXG4gKiAgICB0aG91c2FuZC5cbiAqXG4gKiBCb3RoIGFyZSBERVJJVkVEOiB0aGV5IGNhbiBiZSByZWJ1aWx0IGZyb20gZXZlbnRzIHdoaWxlIHRoZSBldmVudHMgZXhpc3QsIGFuZFxuICogdGhleSBvdXRsaXZlIHRoZW0gYWZ0ZXJ3YXJkcy4gVGhhdCBpcyB0aGUgcG9pbnQg4oCUIHRoZXkgYXJlIHRoZSByZXRhaW5lZCBmb3JtLlxuICpcbiAqIFRoZSBvdGhlciB0d28gdGFibGVzIGhlcmUgYW5zd2VyIFwid2hhdCBpcyBhY3R1YWxseSBydW5uaW5nXCIsIHdoaWNoIHRoZSByZXBvcnQnc1xuICogcGx1Z2luIHNlY3Rpb25zIG5lZWQgYW5kIG5vIGV4aXN0aW5nIHRhYmxlIGNhbiBhbnN3ZXI6XG4gKlxuICogIC0gYHBpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uYCDigJQgd2hhdCBhIHBpcGVsaW5lJ3MgREVDTEFSRUQgcGx1Z2luIHZlcnNpb25zXG4gKiAgICByZXNvbHZlIHRvLCByZWNvbXB1dGVkIG9uIHdyaXRlIHJhdGhlciB0aGFuIHJlc29sdmVkIHBlciByZWFkLlxuICogIC0gYHBsdWdpbl92dWxuX2V4cG9zdXJlYCDigJQgd2hpY2ggcGlwZWxpbmVzIGFyZSBleHBvc2VkIHRvIHdoaWNoIHZ1bG5lcmFibGVcbiAqICAgIHBsdWdpbiB2ZXJzaW9uLCBvcGVuZWQgYnkgYSByZXNjYW4gYW5kIGNsb3NlZCBieSBhIGZpeGluZyBkZXBsb3kuXG4gKi9cblxuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgYm9vbGVhbiwgaW5kZXgsIGludGVnZXIsIGpzb25iLCBwZ1RhYmxlLCBwcmltYXJ5S2V5LCB0ZXh0LCB0aW1lc3RhbXAsIHVuaXF1ZUluZGV4LCB2YXJjaGFyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKlxuICogV2h5IGEgZGVwbG95J3MgbGVhZCB0aW1lIGNvdWxkIG5vdCBiZSBtZWFzdXJlZC4gUmVjb3JkZWQgcmF0aGVyIHRoYW4gbGVmdCBOVUxMXG4gKiB3aXRoIG5vIGV4cGxhbmF0aW9uLCBiZWNhdXNlIHRoZSB0aHJlZSBjYXVzZXMgbmVlZCBkaWZmZXJlbnQgZml4ZXMgYW5kIHRoZVxuICogcmVwb3J0IHNob3dzIHRoZSByZWFzb246IG5vIFNDTSB0b2tlbiBmb3IgdGhlIHNvdXJjZSwgdGhlIHByb3ZpZGVyIHJhdGUtbGltaXRlZFxuICogdGhlIHJhbmdlIHdhbGssIG9yIHRoZSBzb3VyY2UgdHlwZSBoYXMgbm8gcmFuZ2UgQVBJIGF0IGFsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IExFQURfVElNRV9HQVBTID0gWydub190b2tlbicsICdyYXRlX2xpbWl0ZWQnLCAndW5zdXBwb3J0ZWRfc291cmNlJywgJ25vX2NvbW1pdF9kYXRhJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBMZWFkVGltZUdhcCA9ICh0eXBlb2YgTEVBRF9USU1FX0dBUFMpW251bWJlcl07XG5cbi8qKlxuICogSG93IGNvbmZpZGVudGx5IGFuIGluY2lkZW50IHdhcyBhdHRyaWJ1dGVkIHRvIGEgZGVwbG95LiBTaG93biBiZXNpZGUgY2hhbmdlXG4gKiBmYWlsdXJlIHJhdGUgYW5kIHRpbWUgdG8gcmVzdG9yZSwgYmVjYXVzZSBcInRoaXMgZGVwbG95IGJyb2tlIHByb2R1Y3Rpb25cIiBhbmRcbiAqIFwiYW4gaW5jaWRlbnQgb3BlbmVkIHNvbWUgaG91cnMgYWZ0ZXIgdGhpcyBkZXBsb3lcIiBhcmUgZGlmZmVyZW50IGNsYWltcyBhbmQgYVxuICogbWFuYWdlciBhY3RzIGRpZmZlcmVudGx5IG9uIGVhY2guXG4gKi9cbmV4cG9ydCBjb25zdCBDT1JSRUxBVElPTl9DT05GSURFTkNFUyA9IFsnaGlnaCcsICdtZWRpdW0nLCAnbG93J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb3JyZWxhdGlvbkNvbmZpZGVuY2UgPSAodHlwZW9mIENPUlJFTEFUSU9OX0NPTkZJREVOQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIEhvdyBhIHBpcGVsaW5lIGNhbWUgdG8gZXhpc3QuIEZvciB0aGUgYWRvcHRpb24gc2VjdGlvbjogYW4gb3JnIHdob3NlIHBpcGVsaW5lc1xuICogYXJlIGFsbCBoYW5kLWJ1aWx0IGlzIGEgZGlmZmVyZW50IGFkb3B0aW9uIHN0b3J5IGZyb20gb25lIHRlbXBsYXRpbmcgdGhlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBJUEVMSU5FX0NSRUFUSU9OX1NPVVJDRVMgPSBbJ21hbnVhbCcsICd0ZW1wbGF0ZScsICdhaScsICdidWxrJywgJ2NkayddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVDcmVhdGlvblNvdXJjZSA9ICh0eXBlb2YgUElQRUxJTkVfQ1JFQVRJT05fU09VUkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGF0IGtpbmQgb2YgdGhpbmcgYnJva2UuIEFzc2lnbmVkIGF0IGluZ2VzdCBieSB0aGUgY2xhc3NpZmllclxuICogKGBhcGkvcmVwb3J0aW5nL3NyYy9zZXJ2aWNlcy9mYWlsdXJlLWNsYXNzaWZpZXIudHNgKSwgd2hpY2ggaXMgcnVsZXMgb3ZlciB0aGVcbiAqIGFjdGlvbidzIHR5cGUgYW5kIGVycm9yIHRleHQg4oCUIGRlbGliZXJhdGVseSBkYXRhLCBub3QgY29kZSwgc28gdGhlIHRheG9ub215IGNhblxuICogZ3JvdyB3aXRob3V0IGEgZGVwbG95LlxuICpcbiAqIFRoZSBjYXRlZ29yaWVzIG92ZXJsYXAgdGhlIHBsdWdpbi1idWlsZCB0YXhvbm9teSBvbiBwdXJwb3NlOiBhIGRlcGVuZGVuY3lcbiAqIGZhaWx1cmUgaXMgYSBkZXBlbmRlbmN5IGZhaWx1cmUgd2hldGhlciBpdCBoYXBwZW5lZCBidWlsZGluZyBhIHBsdWdpbiBvclxuICogcnVubmluZyBvbmUsIGFuZCB0d28gdm9jYWJ1bGFyaWVzIGZvciB0aGUgc2FtZSB0aGluZyB3b3VsZCBtYWtlIHRoZSByZXBvcnQgYW5kXG4gKiB0aGUgYnVpbGQgcXVldWUgZGlzYWdyZWUuXG4gKi9cbmV4cG9ydCBjb25zdCBGQUlMVVJFX0NBVEVHT1JJRVMgPSBbXG4gICdzb3VyY2VfY2hlY2tvdXQnLCAnZGVwZW5kZW5jeScsICdidWlsZCcsICd1bml0X3Rlc3QnLCAnaW50ZWdyYXRpb25fdGVzdCcsXG4gICdzZWN1cml0eV9zY2FuJywgJ2luZnJhc3RydWN0dXJlJywgJ2RlcGxveW1lbnQnLCAnYXV0aGVudGljYXRpb24nLCAncGVybWlzc2lvbnMnLFxuICAnY29uZmlndXJhdGlvbicsICd0aW1lb3V0JywgJ3Jlc291cmNlX2V4aGF1c3Rpb24nLCAnZXh0ZXJuYWxfc2VydmljZScsICdvdGhlcicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRmFpbHVyZUNhdGVnb3J5ID0gKHR5cGVvZiBGQUlMVVJFX0NBVEVHT1JJRVMpW251bWJlcl07XG5cbi8qKiBXaGVyZSBhIHBsdWdpbi12ZXJzaW9uIGV4cG9zdXJlIHdhcyBvYnNlcnZlZC4gKi9cbmV4cG9ydCBjb25zdCBFWFBPU1VSRV9TT1VSQ0VTID0gWydkZWNsYXJlZCcsICdkZXBsb3llZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRXhwb3N1cmVTb3VyY2UgPSAodHlwZW9mIEVYUE9TVVJFX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogV2hhdCBhbiBvcmcgZGVjaWRlZCBhYm91dCBhbiBleHBvc3VyZS4gYG9wZW5gIHVudGlsIHNvbWVvbmUgbG9va3M7XG4gKiBgYWNjZXB0ZWRgIGlzIGEgdGltZS1ib3hlZCBkZWNpc2lvbiB3aXRoIGEgcmVhc29uIGFuZCBhbiBvd25lciwgbmV2ZXIgYVxuICogcGVybWFuZW50IG11dGU7IGBmYWxzZV9wb3NpdGl2ZWAgaXMgYSBzY2FubmVyIGRpc2FncmVlbWVudCB3b3J0aCByZWNvcmRpbmcgc29cbiAqIHRoZSBzYW1lIGZpbmRpbmcgc3RvcHMgYmVpbmcgcmUtcmFpc2VkIGFzIG5ld3MuIGBmaXhlZGAgPSB0aGUgcGlwZWxpbmUgbW92ZWRcbiAqIHRvIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUgcGx1Z2luOyBgcmVtb3ZlZGAgPSB0aGUgc3RlcCAob3IgdGhlIHBpcGVsaW5lLCBvclxuICogaXRzIGRlcGxveSkgaXMgZ29uZSDigJQgdGhlIHRyaWFnZSBmaWVsZHMgYXJlIEtFUFQsIHNvIGEgc3RlcCByZS1hZGRlZCBiZWZvcmVcbiAqIGFuIGFjY2VwdGFuY2UncyBkZWFkbGluZSBnZXRzIHRoZSBhY2NlcHRhbmNlIGJhY2suXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPU1VSRV9UUklBR0VfU1RBVEVTID0gWydvcGVuJywgJ2FjY2VwdGVkJywgJ2ZhbHNlX3Bvc2l0aXZlJywgJ2ZpeGVkJywgJ3JlbW92ZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEV4cG9zdXJlVHJpYWdlU3RhdGUgPSAodHlwZW9mIEVYUE9TVVJFX1RSSUFHRV9TVEFURVMpW251bWJlcl07XG5cbi8qKlxuICogT25lIGRlcGxveW1lbnQ6IGFuIGV4ZWN1dGlvbiB0aGF0IHJlYWNoZWQgYW4gZW52aXJvbm1lbnQuXG4gKlxuICogV3JpdHRlbiBhdCBpbmdlc3QsIG9uZSByb3cgcGVyIChleGVjdXRpb24sIGVudmlyb25tZW50KS4gRXZlcnl0aGluZyBET1JBXG4gKiByZXBvcnRzIGlzIGhlcmUsIHNvIGAvZG9yYWAsIHRoZSB0cmVuZCBhbmQgdGhlIHJlcG9ydCBzZWN0aW9ucyBzdG9wIHNjYW5uaW5nXG4gKiByYXcgZXZlbnRzIOKAlCBhbmQga2VlcCB3b3JraW5nIGFmdGVyIHRoZSBldmVudHMgYXJlIHN3ZXB0LlxuICpcbiAqIEB0YWJsZSBkb3JhX2RlcGxveW1lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBkb3JhRGVwbG95bWVudCA9IHBnVGFibGUoJ2RvcmFfZGVwbG95bWVudHMnLCB7XG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZXhlY3V0aW9uSWQ6IHZhcmNoYXIoJ2V4ZWN1dGlvbl9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBlbnZpcm9ubWVudDogdmFyY2hhcignZW52aXJvbm1lbnQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGlwZWxpbmVJZDogdmFyY2hhcigncGlwZWxpbmVfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICAvKiogV2hlbiB0aGUgZGVwbG95IHN0YWdlIGNvbXBsZXRlZC4gVGhlIGRlcGxveSdzIG93biB0aW1lc3RhbXAsIG5vdCB0aGUgcnVuJ3MuICovXG4gIGRlcGxveWVkQXQ6IHRpbWVzdGFtcCgnZGVwbG95ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHN1Y2NlZWRlZDogYm9vbGVhbignc3VjY2VlZGVkJykubm90TnVsbCgpLFxuICAvKipcbiAgICogVGhlIE9MREVTVCB1bnNoaXBwZWQgY29tbWl0IGluIHRoaXMgZGVwbG95J3MgcmFuZ2UuIExlYWQgdGltZSBpc1xuICAgKiBgZGVwbG95ZWRBdCAtIGVhcmxpZXN0Q29tbWl0QXRgLCBjb21wdXRlZCBvbmNlIGFuZCBzdG9yZWQsIGJlY2F1c2UgdGhlXG4gICAqIHBlci1ldmVudCBmb3JtIGRvdWJsZS1jb3VudHMgYSBkZXBsb3kgdGhhdCBlbWl0cyBib3RoIGEgU1RBR0UgYW5kIGFuIEFDVElPTlxuICAgKiBldmVudCBjYXJyeWluZyB0aGUgc2FtZSByYW5nZS5cbiAgICovXG4gIGVhcmxpZXN0Q29tbWl0QXQ6IHRpbWVzdGFtcCgnZWFybGllc3RfY29tbWl0X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGxlYWRUaW1lU2Vjb25kczogaW50ZWdlcignbGVhZF90aW1lX3NlY29uZHMnKSxcbiAgY29tbWl0Q291bnQ6IGludGVnZXIoJ2NvbW1pdF9jb3VudCcpLFxuICBjb21taXRTaGE6IHZhcmNoYXIoJ2NvbW1pdF9zaGEnLCB7IGxlbmd0aDogMjU1IH0pLFxuICAvKiogV2h5IGxlYWQgdGltZSBpcyBhYnNlbnQsIHdoZW4gaXQgaXMuIE5VTEwgd2hlbiBpdCB3YXMgbWVhc3VyZWQuICovXG4gIGxlYWRUaW1lR2FwOiB2YXJjaGFyKCdsZWFkX3RpbWVfZ2FwJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPExlYWRUaW1lR2FwPigpLFxuICAvKipcbiAgICogUG9zdC1kZXBsb3kgb3V0Y29tZSBtYXJrZXJzLCBkZW5vcm1hbGl6ZWQgb250byB0aGUgZGVwbG95IHNvIGNoYW5nZS1mYWlsdXJlXG4gICAqIHJhdGUgYW5kIHRpbWUtdG8tcmVzdG9yZSBhcmUgb25lIHNjYW4gcmF0aGVyIHRoYW4gYSBqb2luIHBlciB3aW5kb3cuXG4gICAqL1xuICBmYWlsZWRBdDogdGltZXN0YW1wKCdmYWlsZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmVzdG9yZWRBdDogdGltZXN0YW1wKCdyZXN0b3JlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvKiogSG93IHRoZSBpbmNpZGVudOKGkmRlcGxveSBsaW5rIHdhcyBqdWRnZWQuIE5VTEwgd2hlbiBub3RoaW5nIHdhcyBjb3JyZWxhdGVkLiAqL1xuICBjb3JyZWxhdGlvbkNvbmZpZGVuY2U6IHZhcmNoYXIoJ2NvcnJlbGF0aW9uX2NvbmZpZGVuY2UnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8Q29ycmVsYXRpb25Db25maWRlbmNlPigpLFxuICAvKipcbiAgICogVGhlIEV2ZW50QnJpZGdlIGV2ZW50IGlkIG9mIHRoZSBkZXBsb3kgU1RBR0UgZXZlbnQgdGhhdCBsYXN0IHdyb3RlIHRoaXMgcm93LFxuICAgKiBzbyBhIERPUkEgbnVtYmVyIHRyYWNlcyBiYWNrIHRvIHRoZSBleGFjdCBgcGlwZWxpbmVfZXZlbnRzYCByb3cgKGFuZCBBV1NcbiAgICogZXZlbnQpIGJlaGluZCBpdC4gTlVMTCBmb3IgYSBkZXBsb3kgZnJvbSBhIHByb2R1Y2VyIHdpdGhvdXQgb25lLlxuICAgKi9cbiAgc291cmNlRXZlbnRJZDogdmFyY2hhcignc291cmNlX2V2ZW50X2lkJywgeyBsZW5ndGg6IDEyOCB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIE9uZSByb3cgcGVyIGV4ZWN1dGlvbiBwZXIgZW52aXJvbm1lbnQ6IGEgcmVkZWxpdmVyZWQgZXZlbnQgdXBzZXJ0cyByYXRoZXJcbiAgLy8gdGhhbiBpbnNlcnRpbmcgYSBzZWNvbmQgZGVwbG95IChFdmVudEJyaWRnZSDihpIgU1FTIGlzIGF0LWxlYXN0LW9uY2UpLlxuICBwazogcHJpbWFyeUtleSh7IGNvbHVtbnM6IFt0YWJsZS5leGVjdXRpb25JZCwgdGFibGUuZW52aXJvbm1lbnRdIH0pLFxuICAvLyBUaGUgd2luZG93IHNjYW4gZXZlcnkgRE9SQSByZWFkIGRvZXMuXG4gIG9yZ0VudkRlcGxveWVkSWR4OiBpbmRleCgnZG9yYV9kZXBsb3ltZW50X29yZ19lbnZfZGVwbG95ZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmVudmlyb25tZW50LCB0YWJsZS5kZXBsb3llZEF0KSxcbiAgb3JnRGVwbG95ZWRJZHg6IGluZGV4KCdkb3JhX2RlcGxveW1lbnRfb3JnX2RlcGxveWVkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5kZXBsb3llZEF0KSxcbiAgcGlwZWxpbmVJZHg6IGluZGV4KCdkb3JhX2RlcGxveW1lbnRfcGlwZWxpbmVfaWR4Jykub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUuZGVwbG95ZWRBdCksXG4gIC8vIFRoZSBwcm9tb3Rpb24gdmlldzogb25lIGNvbW1pdCdzIHBhdGggYWNyb3NzIGVudmlyb25tZW50cy5cbiAgY29tbWl0SWR4OiBpbmRleCgnZG9yYV9kZXBsb3ltZW50X2NvbW1pdF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY29tbWl0U2hhKVxuICAgIC53aGVyZShzcWxgY29tbWl0X3NoYSBJUyBOT1QgTlVMTGApLFxufSkpO1xuXG4vKipcbiAqIFByZS1hZ2dyZWdhdGVkIGV4ZWN1dGlvbiBjb3VudHMgYW5kIHRpbWluZ3MsIG9uZSByb3cgcGVyIG9yZywgcGlwZWxpbmUsIHN0YWdlXG4gKiBhbmQgVVRDIGRheS5cbiAqXG4gKiBSZWJ1aWx0IGZvciBhIGRheSB3aGVuIGxhdGUgZXZlbnRzIGFycml2ZSwgc28gdGhlIHJvbGx1cCBhbmQgdGhlIGV2ZW50cyBhZ3JlZVxuICogd2hpbGUgYm90aCBleGlzdC4gYGZhaWx1cmVzQnlDYXRlZ29yeWAgaXMgYSBKU09OIG1hcCByYXRoZXIgdGhhbiBhIGNvbHVtbiBwZXJcbiAqIGNhdGVnb3J5IGJlY2F1c2UgdGhlIHRheG9ub215IGdyb3dzLlxuICpcbiAqIEB0YWJsZSBleGVjdXRpb25fZGFpbHlfcm9sbHVwc1xuICovXG5leHBvcnQgY29uc3QgZXhlY3V0aW9uRGFpbHlSb2xsdXAgPSBwZ1RhYmxlKCdleGVjdXRpb25fZGFpbHlfcm9sbHVwcycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogVGhlIFVUQyBkYXRlIHRoaXMgcm93IGFnZ3JlZ2F0ZXMuIFJlcG9ydCBwZXJpb2RzIHJlLWJ1Y2tldCBpbiB0aGUgcmVwb3J0J3NcbiAgICogIG93biB0aW1lem9uZSBieSBzdW1taW5nIGRheXMg4oCUIHdoaWNoIGlzIHdoeSB0aGUgZ3JhaW4gaXMgYSBEQVkuICovXG4gIGRheTogdGltZXN0YW1wKCdkYXknLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBgJydgIGZvciB0aGUgcGlwZWxpbmUtbGV2ZWwgcm93OyBhIHN0YWdlIG5hbWUgZm9yIGEgc3RhZ2UtbGV2ZWwgcm93LiAqL1xuICBzdGFnZU5hbWU6IHZhcmNoYXIoJ3N0YWdlX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLmRlZmF1bHQoJycpLm5vdE51bGwoKSxcbiAgcnVuczogaW50ZWdlcigncnVucycpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBzdWNjZWVkZWQ6IGludGVnZXIoJ3N1Y2NlZWRlZCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBmYWlsZWQ6IGludGVnZXIoJ2ZhaWxlZCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogY2F0ZWdvcnkg4oaSIGNvdW50LiBGZWVkcyB0aGUgZmFpbHVyZS1hbmFseXNpcyBzZWN0aW9uLiAqL1xuICBmYWlsdXJlc0J5Q2F0ZWdvcnk6IGpzb25iKCdmYWlsdXJlc19ieV9jYXRlZ29yeScpLiR0eXBlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBwNTBNczogaW50ZWdlcigncDUwX21zJyksXG4gIHA5ME1zOiBpbnRlZ2VyKCdwOTBfbXMnKSxcbiAgcDk1TXM6IGludGVnZXIoJ3A5NV9tcycpLFxuICAvKiogU3VtbWVkIGV4ZWN1dGlvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcy4gVGhlIHJlc291cmNlLWNvbnN1bXB0aW9uIHNlY3Rpb24nc1xuICAgKiAgb25seSBpbnB1dDsgZGVsaWJlcmF0ZWx5IE5PVCBjb252ZXJ0ZWQgdG8gbW9uZXkgYW55d2hlcmUuICovXG4gIGJ1aWxkU2Vjb25kczogaW50ZWdlcignYnVpbGRfc2Vjb25kcycpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogV2hlbiB0aGlzIHJvdyB3YXMgbGFzdCByZWJ1aWx0LCBzbyBhIGxhdGUtZXZlbnQgcmVidWlsZCBpcyB2aXNpYmxlLiAqL1xuICBjb21wdXRlZEF0OiB0aW1lc3RhbXAoJ2NvbXB1dGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUub3JnSWQsIHRhYmxlLmRheSwgdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RhZ2VOYW1lXSB9KSxcbiAgb3JnRGF5SWR4OiBpbmRleCgnZXhlY3V0aW9uX3JvbGx1cF9vcmdfZGF5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5kYXkpLFxuICBwaXBlbGluZURheUlkeDogaW5kZXgoJ2V4ZWN1dGlvbl9yb2xsdXBfcGlwZWxpbmVfZGF5X2lkeCcpLm9uKHRhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLmRheSksXG59KSk7XG5cbi8qKlxuICogV2hhdCBhIHBpcGVsaW5lJ3MgZGVjbGFyZWQgcGx1Z2luIHN0ZXBzIHJlc29sdmUgdG8uXG4gKlxuICogUmVjb21wdXRlZCBvbiBwaXBlbGluZSB3cml0ZSBhbmQgb24gcGx1Z2luIHB1Ymxpc2gsIHJhdGhlciB0aGFuIHJlc29sdmVkIGF0XG4gKiByZWFkIHRpbWU6IHRoZSBvdXRkYXRlZC1wbHVnaW4gc2VjdGlvbiBjb21wYXJlcyBcImluIHVzZVwiIGFnYWluc3QgXCJsYXRlc3RcbiAqIGF2YWlsYWJsZVwiIGZvciBldmVyeSBzdGVwIG9mIGV2ZXJ5IHBpcGVsaW5lLCBhbmQgZG9pbmcgdGhhdCByZXNvbHV0aW9uIHBlciByZWFkXG4gKiBtYWRlIGl0IGEgcXVlcnkgbm9ib2R5IGNvdWxkIGFmZm9yZCB0byBwdXQgaW4gYSByZXBvcnQuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVBsdWdpblJlc29sdXRpb24gPSBwZ1RhYmxlKCdwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbicsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBzdGFnZU5hbWU6IHZhcmNoYXIoJ3N0YWdlX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgc3RlcE5hbWU6IHZhcmNoYXIoJ3N0ZXBfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwbHVnaW5QdWJsaXNoZXI6IHZhcmNoYXIoJ3BsdWdpbl9wdWJsaXNoZXInLCB7IGxlbmd0aDogMzkgfSksXG4gIHBsdWdpbk5hbWU6IHZhcmNoYXIoJ3BsdWdpbl9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIC8qKiBXaGF0IHRoZSBjb25maWcgYXNrZWQgZm9yIOKAlCBhIHJhbmdlLCBhIHBpbiwgb3Igbm90aGluZy4gKi9cbiAgZGVjbGFyZWRWZXJzaW9uOiB2YXJjaGFyKCdkZWNsYXJlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICAvKiogV2hhdCB0aGF0IHJlc29sdmVzIHRvIHRvZGF5LiBOVUxMIHdoZW4gbm90aGluZyBzYXRpc2ZpZXMgaXQuICovXG4gIHJlc29sdmVkVmVyc2lvbjogdmFyY2hhcigncmVzb2x2ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIFRoZSByZXNvbHZlZCByZWNvcmQ6IGEgYHBsdWdpbnNgIHJvdyBpZCBvciBhIGxpc3RpbmcgdmVyc2lvbiBpZC4gKi9cbiAgcmVzb2x2ZWRQbHVnaW5JZDogdmFyY2hhcigncmVzb2x2ZWRfcGx1Z2luX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgLyoqXG4gICAqIFRoZSBpbWFnZSBkaWdlc3QgdGhlIHJlc29sdmVkIHZlcnNpb24gaXMgcGlubmVkIHRvLiBBIHZlcnNpb24gc3RyaW5nIGFsb25lXG4gICAqIGNhbm5vdCBzYXkgd2hldGhlciBhIHBpcGVsaW5lIGlzIG9uIHRoZSByZWJ1aWx0LCBwYXRjaGVkIGltYWdlIG9yIHRoZSBvbGRcbiAgICogb25lIOKAlCB0aGUgcmVzY2FuIGFuZCB0aGUgYWR2aXNvcnkgc2VhcmNoIG1hdGNoIG9uIHRoaXMuXG4gICAqL1xuICByZXNvbHZlZERpZ2VzdDogdmFyY2hhcigncmVzb2x2ZWRfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICAvKiogVGhlIG5ld2VzdCB2ZXJzaW9uIHRoZSBvcmcgaXMgZW50aXRsZWQgdG8gaW5zdGFsbCwgZm9yIHRoZSBcImdhcFwiIGNvbHVtbi4gKi9cbiAgbGF0ZXN0VmVyc2lvbjogdmFyY2hhcignbGF0ZXN0X3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIC8qKiBgbWFqb3JgIC8gYG1pbm9yYCAvIGBwYXRjaGAgLyBgbm9uZWAsIGZyb20gcmVzb2x2ZWQg4oaSIGxhdGVzdC4gKi9cbiAgdmVyc2lvbkdhcDogdmFyY2hhcigndmVyc2lvbl9nYXAnLCB7IGxlbmd0aDogMTAgfSksXG4gIC8qKiBGYWxzZSB3aGVuIHRoZSByZXNvbHZlZCB2ZXJzaW9uIGlzIG91dHNpZGUgdGhlIG9yZydzIGNvbnN1bXB0aW9uIHBvbGljeS4gKi9cbiAgd2l0aGluUG9saWN5OiBib29sZWFuKCd3aXRoaW5fcG9saWN5JykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBvcmcgb2YgYSBURUFNJ3MgcGlwZWxpbmUgKG51bGwgZm9yIGEgcm9vdCBvcmcncykuIEEgdGVhbSByZXNvbHZlc1xuICAgKiB0aHJvdWdoIGl0cyByb290J3MgaW5zdGFsbHMsIHBvbGljeSBhbmQgc2hhcmVkIHBsdWdpbnMsIGFuZCB0aGUgcGx1Z2luXG4gICAqIHNlcnZpY2UgcmUtcmVzb2x2aW5nIGEgcGlwZWxpbmUgYWZ0ZXIgYSBwdWJsaXNoIC8gZmxhZyAvIHlhbmsgaGFzIG5vIHJlcXVlc3RcbiAgICogdG8gcmVhZCB0aGUgaGllcmFyY2h5IGZyb20g4oCUIHNvIHRoZSB3cml0ZSB0aGF0IGtuZXcgaXQgcmVjb3JkcyBpdC5cbiAgICovXG4gIHJvb3RPcmdJZDogdmFyY2hhcigncm9vdF9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBjb21wdXRlZEF0OiB0aW1lc3RhbXAoJ2NvbXB1dGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RhZ2VOYW1lLCB0YWJsZS5zdGVwTmFtZV0gfSksXG4gIG9yZ0lkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG4gIHBsdWdpbklkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX3BsdWdpbl9pZHgnKS5vbih0YWJsZS5wbHVnaW5QdWJsaXNoZXIsIHRhYmxlLnBsdWdpbk5hbWUpLFxuICAvLyBcIldoaWNoIHBpcGVsaW5lcyBhcmUgYmVoaW5kP1wiIOKAlCB0aGUgb3V0ZGF0ZWQgc2VjdGlvbidzIGRyaXZpbmcgc2Nhbi5cbiAgZ2FwSWR4OiBpbmRleCgncGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25fZ2FwX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS52ZXJzaW9uR2FwKSxcbiAgLy8gXCJXaGljaCBwaXBlbGluZXMgZGVjbGFyZSB0aGlzIHZlcnNpb24gLyBpbWFnZT9cIiDigJQgcmVzY2FuIGZhbi1vdXQsIGFkdmlzb3J5IHNlYXJjaC5cbiAgdmVyc2lvbklkeDogaW5kZXgoJ3BpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uX3ZlcnNpb25faWR4JylcbiAgICAub24odGFibGUucGx1Z2luTmFtZSwgdGFibGUucmVzb2x2ZWRWZXJzaW9uLCB0YWJsZS5yZXNvbHZlZERpZ2VzdCksXG59KSk7XG5cbi8qKlxuICogT25lIHBpcGVsaW5lJ3MgZXhwb3N1cmUgdG8gb25lIHZ1bG5lcmFibGUgcGx1Z2luIHZlcnNpb24uXG4gKlxuICogT3BlbmVkIGJ5IHRoZSBuaWdodGx5IHJlc2NhbiB3aGVuIGEgdmVyc2lvbiBpbiB1c2UgaGFzIGZpeGFibGUgQ3JpdGljYWwvSGlnaFxuICogZmluZGluZ3MsIGFuZCBDTE9TRUQgYnkgYSBkZXBsb3kgdGhhdCBtb3ZlcyB0aGUgcGlwZWxpbmUgb2ZmIGl0LiBJdCBpcyBhXG4gKiBwZXItcGlwZWxpbmUgcm93IHJhdGhlciB0aGFuIGEgcGVyLXZlcnNpb24gb25lIGJlY2F1c2UgdGhlIHF1ZXN0aW9uIGEgbWFuYWdlclxuICogYXNrcyBpcyBcIndoaWNoIG9mIG91ciBwaXBlbGluZXMgaXMgZXhwb3NlZFwiLCBhbmQgYW5zd2VyaW5nIHRoYXQgZnJvbSBhXG4gKiB2ZXJzaW9uLWxldmVsIHRhYmxlIG1lYW5zIHJlLWRlcml2aW5nIHRoZSBwaXBlbGluZSBzZXQgb24gZXZlcnkgcmVhZC5cbiAqXG4gKiBLZXllZCBieSBJTUFHRSBESUdFU1QsIG5vdCB2ZXJzaW9uIHN0cmluZzogYSB2ZXJzaW9uIHJlYnVpbHQgb24gYSBwYXRjaGVkIGJhc2VcbiAqIGltYWdlIGlzIGEgZGlmZmVyZW50IGFydGlmYWN0IHdpdGggZGlmZmVyZW50IGZpbmRpbmdzLCBhbmQga2V5aW5nIG9uIHRoZSBzdHJpbmdcbiAqIHdvdWxkIHJlcG9ydCB0aGUgb2xkIG9uZSBmb3JldmVyLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fdnVsbl9leHBvc3VyZVxuICovXG5leHBvcnQgY29uc3QgcGx1Z2luVnVsbkV4cG9zdXJlID0gcGdUYWJsZSgncGx1Z2luX3Z1bG5fZXhwb3N1cmUnLCB7XG4gIGlkOiB2YXJjaGFyKCdpZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lSWQ6IHZhcmNoYXIoJ3BpcGVsaW5lX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblB1Ymxpc2hlcjogdmFyY2hhcigncGx1Z2luX3B1Ymxpc2hlcicsIHsgbGVuZ3RoOiAzOSB9KSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVmVyc2lvbjogdmFyY2hhcigncGx1Z2luX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBzb3VyY2U6IHZhcmNoYXIoJ3NvdXJjZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxFeHBvc3VyZVNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIGNyaXRpY2FsQ291bnQ6IGludGVnZXIoJ2NyaXRpY2FsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGhpZ2hDb3VudDogaW50ZWdlcignaGlnaF9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvKiogVGhlIGZpbmRpbmdzIHRoZW1zZWx2ZXM6IENWRSBpZCwgcGFja2FnZSwgZml4ZWQtaW4gdmVyc2lvbi4gQ2FwcGVkIGJ5IHRoZSB3cml0ZXIuICovXG4gIHRvcEZpbmRpbmdzOiBqc29uYigndG9wX2ZpbmRpbmdzJykuJHR5cGU8QXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIEVWRVJZIENyaXRpY2FsL0hpZ2ggZmluZGluZyBvZiB0aGUgdmVyc2lvbiBhdCBpdHMgbGFzdCByZWZyZXNoLCBhcyBmaW5kaW5nXG4gICAqIGtleXMgKGBpZHxwYWNrYWdlfHBhY2thZ2VWZXJzaW9uYCkg4oCUIHVuY2FwcGVkLCB1bmxpa2UgYHRvcF9maW5kaW5nc2AsIGJlY2F1c2VcbiAgICogYW4gYWNjZXB0YW5jZSBpcyBjaGVja2VkIGFnYWluc3QgaXQ6IHdoYXQgd2FzIGFjY2VwdGVkIG11c3QgYmUgcHJvdmFibGUuXG4gICAqL1xuICBmaW5kaW5nS2V5czogdGV4dCgnZmluZGluZ19rZXlzJykuYXJyYXkoKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIC8qKiBUaGUgZmluZGluZyBrZXlzIGFuIGBhY2NlcHRlZGAgdHJpYWdlIGNvdmVyZWQsIGZyb3plbiBhdCB0aGUgZGVjaXNpb24uICovXG4gIGFjY2VwdGVkRmluZGluZ0tleXM6IHRleHQoJ2FjY2VwdGVkX2ZpbmRpbmdfa2V5cycpLmFycmF5KCkuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICAvKiogVGhlIGFjY2VwdGFuY2UgZXhwbGljaXRseSBjb3ZlcmVkIEtFVi1saXN0ZWQgZmluZGluZ3MgKG5ldmVyIGltcGxpZWQpLiAqL1xuICBhY2NlcHRlZEtldjogYm9vbGVhbignYWNjZXB0ZWRfa2V2JykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBmbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnZmxhZ2dlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIC8qKiBTZXQgd2hlbiBhIGRlcGxveSBtb3ZlZCB0aGUgcGlwZWxpbmUgb250byBhIHZlcnNpb24gd2l0aG91dCB0aGUgZmluZGluZ3MuICovXG4gIGZpeGVkQXQ6IHRpbWVzdGFtcCgnZml4ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdHJpYWdlU3RhdGU6IHZhcmNoYXIoJ3RyaWFnZV9zdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxFeHBvc3VyZVRyaWFnZVN0YXRlPigpLmRlZmF1bHQoJ29wZW4nKS5ub3ROdWxsKCksXG4gIC8qKiBBbiBhY2NlcHRhbmNlIGlzIHRpbWUtYm94ZWQ6IGEgcGVybWFuZW50IG11dGUgaXMgaG93IGEgZmluZGluZyBpcyBmb3Jnb3R0ZW4uICovXG4gIGFjY2VwdGVkVW50aWw6IHRpbWVzdGFtcCgnYWNjZXB0ZWRfdW50aWwnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdHJpYWdlUmVhc29uOiB0ZXh0KCd0cmlhZ2VfcmVhc29uJyksXG4gIHRyaWFnZWRCeTogdGV4dCgndHJpYWdlZF9ieScpLFxuICB0cmlhZ2VkQXQ6IHRpbWVzdGFtcCgndHJpYWdlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIE9uZSBsaXZlIGV4cG9zdXJlIHBlciAocGlwZWxpbmUsIHBsdWdpbiB2ZXJzaW9uLCBkaWdlc3QsIHNvdXJjZSk6IGEgbmlnaHRseVxuICAvLyByZXNjYW4gcmVmcmVzaGVzIGNvdW50cyByYXRoZXIgdGhhbiBvcGVuaW5nIGEgbmV3IHJvdyBldmVyeSBuaWdodCwgYW5kIGFcbiAgLy8gdmVyc2lvbiByZWJ1aWx0IG9uIGEgcGF0Y2hlZCBiYXNlIChzYW1lIHN0cmluZywgbmV3IGRpZ2VzdCkgZ2V0cyBpdHMgb3duIHJvdy5cbiAgLy8gcG9zdGdyZXMtaW5pdC5zcWwgY3JlYXRlcyBpdCBOVUxMUyBOT1QgRElTVElOQ1QgKGRyaXp6bGUncyB1bmlxdWVJbmRleCBjYW4ndFxuICAvLyBzYXkgc28pIHNvIGFuIGltYWdlLWxlc3MgdmVyc2lvbiBzdGlsbCBoYXMgZXhhY3RseSBvbmUgcm93IHRvIHJlZnJlc2guXG4gIGV4cG9zdXJlVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3Z1bG5fZXhwb3N1cmVfdW5pcXVlJylcbiAgICAub24odGFibGUucGlwZWxpbmVJZCwgdGFibGUucGx1Z2luTmFtZSwgdGFibGUucGx1Z2luVmVyc2lvbiwgdGFibGUuaW1hZ2VEaWdlc3QsIHRhYmxlLnNvdXJjZSksXG4gIG9yZ09wZW5JZHg6IGluZGV4KCdwbHVnaW5fdnVsbl9leHBvc3VyZV9vcmdfb3Blbl9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUudHJpYWdlU3RhdGUpXG4gICAgLndoZXJlKHNxbGBmaXhlZF9hdCBJUyBOVUxMYCksXG4gIGRpZ2VzdElkeDogaW5kZXgoJ3BsdWdpbl92dWxuX2V4cG9zdXJlX2RpZ2VzdF9pZHgnKS5vbih0YWJsZS5pbWFnZURpZ2VzdCksXG59KSk7XG5cbi8qKlxuICogVGhlIGxhc3QgYC9wbHVnaW5zL2xvb2t1cGAgb3V0Y29tZSBwZXIgcGlwZWxpbmUgU1RFUCwgd2hlbiBzeW50aCAoQ0xJIG9yIHRoZVxuICogQ29kZUJ1aWxkIExhbWJkYSkgc2VuZHMgdGhlIHN0ZXAncyBjb250ZXh0LiBUaGUgREVDTEFSRUQgc2lkZVxuICogKGBwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbmApIHNheXMgd2hhdCB0aGUgY29uZmlnIHJlc29sdmVzIHRvIHdoZW4gaXQgd2FzXG4gKiBzYXZlZDsgdGhpcyBzYXlzIHdoYXQgc3ludGggd2FzIGFjdHVhbGx5IHRvbGQg4oCUIHRoZSB2ZXJzaW9uLCB0aGUgaW1hZ2UsIGV2ZXJ5XG4gKiB3YXJuaW5nLCBhbmQgdGhlIHJlZnVzYWwg4oCUIHdoaWNoIGlzIHdoYXQgYSBcIndoeSBkaWQgbXkgZGVwbG95IHN0b3BcIiBwYWdlIG5lZWRzLlxuICpcbiAqIEB0YWJsZSBwaXBlbGluZV9zdGVwX2xvb2t1cHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lU3RlcExvb2t1cCA9IHBnVGFibGUoJ3BpcGVsaW5lX3N0ZXBfbG9va3VwcycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogVGhlIHN0ZXAncyBjb250cmFjdCBsYWJlbDogYHN5bnRoYCBvciBgPHN0YWdlTmFtZT4vPGFsaWFzID8/IG5hbWU+YC4gKi9cbiAgc3RlcEtleTogdmFyY2hhcignc3RlcF9rZXknLCB7IGxlbmd0aDogNTEyIH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luUHVibGlzaGVyOiB2YXJjaGFyKCdwbHVnaW5fcHVibGlzaGVyJywgeyBsZW5ndGg6IDM5IH0pLFxuICBwbHVnaW5OYW1lOiB2YXJjaGFyKCdwbHVnaW5fbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICAvKiogV2hhdCB0aGUgcmVmZXJlbmNlIGFza2VkIGZvciAoYSByYW5nZSwgYSBwaW4sIG9yIG5vdGhpbmcpLiAqL1xuICByZXF1ZXN0ZWRWZXJzaW9uOiB2YXJjaGFyKCdyZXF1ZXN0ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLyoqIE5VTEwgd2hlbiB0aGUgbG9va3VwIHdhcyByZWZ1c2VkLiAqL1xuICByZXNvbHZlZFZlcnNpb246IHZhcmNoYXIoJ3Jlc29sdmVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJlc29sdmVkUGx1Z2luSWQ6IHZhcmNoYXIoJ3Jlc29sdmVkX3BsdWdpbl9pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGltYWdlRGlnZXN0OiB2YXJjaGFyKCdpbWFnZV9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIC8qKiBgW3sgY29kZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfV1gIOKAlCBldmVyeSB3YXJuaW5nIHRoZSBhbnN3ZXIgY2FycmllZC4gKi9cbiAgd2FybmluZ3M6IGpzb25iKCd3YXJuaW5ncycpLiR0eXBlPEFycmF5PHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHNldmVyaXR5Pzogc3RyaW5nIH0+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIGB7IGNvZGUsIHJlYXNvbiwgbWVzc2FnZSB9YCB3aGVuIHRoZSBsb29rdXAgd2FzIHJlZnVzZWQg4oCUIG5ldmVyIGZvclxuICAgKiB2dWxuZXJhYmlsaXR5IHN0YXRlICh0aGF0IG9ubHkgZ3JhZGVzKSwgYnV0IGZvciBhIGRlbGV0ZWQgLyBub3QtaW5zdGFsbGVkIC9cbiAgICogcG9saWN5LWJsb2NrZWQgcGx1Z2luIG9yIGEgZmFpbGVkIGltYWdlIHNpZ25hdHVyZS5cbiAgICovXG4gIHJlZnVzYWw6IGpzb25iKCdyZWZ1c2FsJykuJHR5cGU8eyBjb2RlOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGw+KCksXG4gIGxvb2tlZFVwQXQ6IHRpbWVzdGFtcCgnbG9va2VkX3VwX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RlcEtleV0gfSksXG4gIG9yZ0lkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbG9va3Vwc19vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxufSkpO1xuXG4vKipcbiAqIFRoZSBsYXRlc3Qgc2VjdXJpdHktc2Nhbm5lciByZXBvcnQgYSBwaXBlbGluZSBSVU4gdXBsb2FkZWQsIHBlciAocGlwZWxpbmUsXG4gKiB0b29sLCBzdGFnZSkg4oCUIHdoYXQgdGhlIHBpcGVsaW5lJ3Mgb3duIHNjYW4gc3RlcHMgZm91bmQgaW4gd2hhdCBpdCBidWlsZHMsXG4gKiBuZXh0IHRvIHdoYXQgdGhlIHBsYXRmb3JtJ3MgcmVzY2FuIGZvdW5kIGluIHRoZSBwbHVnaW4gaW1hZ2VzIGl0IHJ1bnMuXG4gKiBDb3VudHMgYXJlIHN0b3JlZCBzbyBhIHJlcG9ydCBzZWN0aW9uIHJlYWRzIHRoZW0gd2l0aG91dCB1bnBhY2tpbmcgZmluZGluZ3MuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3NlY3VyaXR5X3JlcG9ydHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lU2VjdXJpdHlSZXBvcnQgPSBwZ1RhYmxlKCdwaXBlbGluZV9zZWN1cml0eV9yZXBvcnRzJywge1xuICBpZDogdmFyY2hhcignaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwaXBlbGluZUlkOiB2YXJjaGFyKCdwaXBlbGluZV9pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB0b29sOiB2YXJjaGFyKCd0b29sJywgeyBsZW5ndGg6IDY0IH0pLm5vdE51bGwoKSxcbiAgZm9ybWF0OiB2YXJjaGFyKCdmb3JtYXQnLCB7IGxlbmd0aDogMTYgfSkubm90TnVsbCgpLFxuICBzdGFnZTogdmFyY2hhcignc3RhZ2UnLCB7IGxlbmd0aDogMjU1IH0pLmRlZmF1bHQoJycpLm5vdE51bGwoKSxcbiAgZXhlY3V0aW9uSWQ6IHZhcmNoYXIoJ2V4ZWN1dGlvbl9pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGNyaXRpY2FsQ291bnQ6IGludGVnZXIoJ2NyaXRpY2FsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGhpZ2hDb3VudDogaW50ZWdlcignaGlnaF9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBtZWRpdW1Db3VudDogaW50ZWdlcignbWVkaXVtX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGxvd0NvdW50OiBpbnRlZ2VyKCdsb3dfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAga2V2Q291bnQ6IGludGVnZXIoJ2tldl9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBjcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ2NyaXRpY2FsX2ZpeGFibGUnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgaGlnaEZpeGFibGU6IGludGVnZXIoJ2hpZ2hfZml4YWJsZScpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBmaW5kaW5nczoganNvbmIoJ2ZpbmRpbmdzJykuJHR5cGU8QXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgdHJ1bmNhdGVkOiBib29sZWFuKCd0cnVuY2F0ZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZEJ5OiB0ZXh0KCdzdWJtaXR0ZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsYXRlc3RVbmlxdWU6IHVuaXF1ZUluZGV4KCdwaXBlbGluZV9zZWN1cml0eV9yZXBvcnRzX3VuaXF1ZScpLm9uKHRhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLnRvb2wsIHRhYmxlLnN0YWdlKSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfc2VjdXJpdHlfcmVwb3J0c19vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxufSkpO1xuXG5leHBvcnQgdHlwZSBEb3JhRGVwbG95bWVudCA9IHR5cGVvZiBkb3JhRGVwbG95bWVudC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBEb3JhRGVwbG95bWVudEluc2VydCA9IHR5cGVvZiBkb3JhRGVwbG95bWVudC4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBFeGVjdXRpb25EYWlseVJvbGx1cCA9IHR5cGVvZiBleGVjdXRpb25EYWlseVJvbGx1cC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFeGVjdXRpb25EYWlseVJvbGx1cEluc2VydCA9IHR5cGVvZiBleGVjdXRpb25EYWlseVJvbGx1cC4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBQaXBlbGluZVBsdWdpblJlc29sdXRpb24gPSB0eXBlb2YgcGlwZWxpbmVQbHVnaW5SZXNvbHV0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lUGx1Z2luUmVzb2x1dGlvbkluc2VydCA9IHR5cGVvZiBwaXBlbGluZVBsdWdpblJlc29sdXRpb24uJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgUGx1Z2luVnVsbkV4cG9zdXJlID0gdHlwZW9mIHBsdWdpblZ1bG5FeHBvc3VyZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5WdWxuRXhwb3N1cmVJbnNlcnQgPSB0eXBlb2YgcGx1Z2luVnVsbkV4cG9zdXJlLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lU3RlcExvb2t1cCA9IHR5cGVvZiBwaXBlbGluZVN0ZXBMb29rdXAuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTZWN1cml0eVJlcG9ydCA9IHR5cGVvZiBwaXBlbGluZVNlY3VyaXR5UmVwb3J0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lU3RlcExvb2t1cEluc2VydCA9IHR5cGVvZiBwaXBlbGluZVN0ZXBMb29rdXAuJGluZmVySW5zZXJ0O1xuIl19
package/lib/index.d.ts CHANGED
@@ -34,15 +34,17 @@ export { anonymizeReviewsByAuthor } from './api/ecosystem-privacy.js';
34
34
  export { openSupportCase, findCaseByThread, listQueue, listOrgCases, stampFirstResponse, setCaseStatus, setCaseSeverity, assignCase, assignCases, closeCases, transferCaseToContact, openCasesForContact, SUPPORT_CASE_STATUSES, QUEUE_STATUSES, type SupportCaseStatus, type OpenCaseInput, countActiveSupportContacts, listActiveSupportContacts, isSupportContact, designateSupportContact, revokeSupportContact, countPremiumSupportContacts, isPremiumSupportContact, setSupportContactPremium, countCasesInWindow, rateCase, addCaseNote, listCaseNotes, deleteCaseNote, type SupportCaseNote, listCannedResponses, createCannedResponse, updateCannedResponse, deleteCannedResponse, type CannedResponse, listCasesDueForPage, } from './api/support-cases.js';
35
35
  export { policyOf, effectiveConsumptionPolicy, applyPolicyUpdate, type ConsumptionPolicy, DEFAULT_CONSUMPTION_POLICY, } from './api/plugin-consumption-policy.js';
36
36
  export { advisoryRangeCovers, advisoryRangeProblem, advisoriesCovering, blockingAdvisories, } from './api/plugin-advisories.js';
37
- export { listingBlock, implicitInstallRange, installAdmits, scopeOrgIds, installModeFor, drizzleListingSource, resolveListingReference, listedVersionWarnings, listedPluginRecord, loadOrgInstallContext, orgListingStates, resolvableListings, type ResolutionRefusal, type ResolutionScope, type ListingDataSource, type ListingResolved, type OrgListingState, } from './api/plugin-resolution.js';
37
+ export { listingBlock, implicitInstallRange, installAdmits, scopeOrgIds, installModeFor, drizzleListingSource, resolveListingReference, listedVersionWarnings, listedPluginRecord, loadOrgInstallContext, orgListingStates, resolvableListings, type ResolutionRefusal, type ResolutionScope, type ListingDataSource, type ListingResolved, type OrgListingState, vulnUpgradeAvailableWarning, type VulnUpgradeAvailableWarning, } from './api/plugin-resolution.js';
38
+ export { findVersionReferences, distinctPipelines, versionReferencedPredicate, orgImageDigestsInUse, type VersionReferenceTarget, type VersionReference, } from './api/version-references.js';
39
+ export { declaredResolution, recordStepLookup, pipelineStepLookups, declaredPipelinesForPlugin, stageAndStep, stepLabelOf, type DeclaredStepInput, type DeclaredStepPlugin, type DeclaredStepResolution, type StepLookupRecord, type DeclaredPipelineRef, } from './api/pipeline-step-resolution.js';
38
40
  export { runSoftDeletePurge, createSoftDeletePurgeScheduler, type PurgeableEntity, } from './api/soft-delete-sweep.js';
39
- export { type BuildHealth, type DoraLevel, type DoraMetrics, type DoraOptions, type DoraTrendPoint, type IncidentListItem, type ReportingSettings, type IncidentTestResult, type IngestCaller, type IngestMetric, type LastDeployedCommit, } from './api/reporting-service.js';
41
+ export { type BuildHealth, type DoraLevel, type DoraMetrics, type DoraOptions, type DoraTrendPoint, type DeploymentOutcomeWrite, type IncidentListItem, type IncidentState, type IncidentWrite, type ReportingSettings, type IncidentTestResult, type IngestCaller, type IngestMetric, type LastDeployedCommit, } from './api/reporting-service.js';
40
42
  export { upsertDeployments, applyDeployOutcome, correlateIncident, isDeployEvent, leadTimeGapOf, type DeployCandidate, } from './api/reporting/deploy-rollup.js';
41
43
  export { rebuildDay, runRollupPass, rollupSettleHours, rollupBatchDays, utcDayStart, } from './api/reporting/daily-rollup.js';
42
44
  export { classifyFailure, isTeamActionable, FAILURE_CATEGORY_LABELS, } from './api/reporting/failure-classifier.js';
43
45
  export { getPipelineBreakdown, getFailureAnalysis, getStagePerformance, getResourceConsumption, getPromotionView, getOutdatedPlugins, getPluginVulnerabilities, getAdoption, type AnalyticsScope, type PipelineBreakdownRow, type FailureCategoryRow, type StagePerformanceRow, type ResourceRow, type PromotionRow, type OutdatedPluginRow, type VulnerabilityRow, type AdoptionSummary, } from './api/reporting/analytics-queries.js';
44
46
  export { evaluateNeedsAttention, thresholdsFrom, DEFAULT_THRESHOLDS, type NeedsAttentionThresholds, type AttentionFinding, type AttentionItem, type AttentionInput, type AttentionRuleId, } from './api/reporting/needs-attention.js';
45
- export { replacePipelineResolution, refreshLatestForPlugin, upsertExposures, closeFixedExposures, openExposures, triageExposure, lapsedAcceptances, versionGap, type ResolvedStep, type ExposureInput, type VersionGap, } from './api/reporting/plugin-exposure.js';
47
+ export { replacePipelineResolution, refreshLatestForPlugin, upsertExposures, closeFixedExposures, closePipelineExposures, closeVersionExposures, reconcilePipelineExposures, syncVersionExposures, pipelinesOnVersion, exposureFromScan, liveExposurePredicate, openExposures, triageExposure, lapsedAcceptances, pipelineExposures, exposureById, activeAcceptances, acceptanceKey, reopenLapsedAcceptances, versionGap, type PipelineExposure, type TriageDecision, type PipelineAcceptances, type LapsedAcceptance, type ResolvedStep, type ExposureInput, type ExposureStep, type ExposureCounts, type LiveVersion, type PipelineOnVersion, type PluginVersionRef, type ScanState, type VersionGap, } from './api/reporting/plugin-exposure.js';
46
48
  export { resolvePeriod, resolvePeriodByLabel, rejectUnreportablePeriod, nextPeriodBoundary, completePeriodsSince, registerSection, getSection, allSections, sectionIds, REPORT_TEMPLATE_SPECS, getTemplate, composeSnapshot, LOW_SAMPLE_THRESHOLD, REPORT_FEATURE_SUBSTITUTES, renderReportHtml, reportFileName, trendSentence, type ReportHtmlInput, type ResolvedPeriod, type PeriodRejection, type SectionSpec, type SectionContext, type SectionDataSource, type TemplateSpec, type ReportSnapshot, type ComposedSection, type DataQualityNote, type ComposeOptions, type TrendDirection, StakeholderReportStore, stakeholderReportStore, hashToken, mintToken, DEFAULT_SHARE_LINK_TTL_DAYS, MAX_SHARE_LINK_TTL_DAYS, MAX_BOUNCES, VERIFICATION_TTL_MS, type CreateDefinitionInput, type UpdateDefinitionInput, type MintedShareLink, type ResolvedShareLink, } from './api/reporting/stakeholder/index.js';
47
49
  export { type PluginRuntimeFilter, type PluginRuntimeStats, ReportingService, reportingService, } from './api/reporting-service.js';
48
50
  export { type PluginFilter, type PipelineFilter, type PipelineTemplateFilter, type MessageFilter, type CompliancePolicyFilter, type ComplianceRuleFilter, type ComplianceExemptionFilter, type ComplianceAuditFilter, type ComplianceScanFilter, } from './core/query-filters.js';
package/lib/index.js CHANGED
@@ -42,7 +42,9 @@ export { openSupportCase, findCaseByThread, listQueue, listOrgCases, stampFirstR
42
42
  countPremiumSupportContacts, isPremiumSupportContact, setSupportContactPremium, countCasesInWindow, rateCase, addCaseNote, listCaseNotes, deleteCaseNote, listCannedResponses, createCannedResponse, updateCannedResponse, deleteCannedResponse, listCasesDueForPage, } from './api/support-cases.js';
43
43
  export { policyOf, effectiveConsumptionPolicy, applyPolicyUpdate, DEFAULT_CONSUMPTION_POLICY, } from './api/plugin-consumption-policy.js';
44
44
  export { advisoryRangeCovers, advisoryRangeProblem, advisoriesCovering, blockingAdvisories, } from './api/plugin-advisories.js';
45
- export { listingBlock, implicitInstallRange, installAdmits, scopeOrgIds, installModeFor, drizzleListingSource, resolveListingReference, listedVersionWarnings, listedPluginRecord, loadOrgInstallContext, orgListingStates, resolvableListings, } from './api/plugin-resolution.js';
45
+ export { listingBlock, implicitInstallRange, installAdmits, scopeOrgIds, installModeFor, drizzleListingSource, resolveListingReference, listedVersionWarnings, listedPluginRecord, loadOrgInstallContext, orgListingStates, resolvableListings, vulnUpgradeAvailableWarning, } from './api/plugin-resolution.js';
46
+ export { findVersionReferences, distinctPipelines, versionReferencedPredicate, orgImageDigestsInUse, } from './api/version-references.js';
47
+ export { declaredResolution, recordStepLookup, pipelineStepLookups, declaredPipelinesForPlugin, stageAndStep, stepLabelOf, } from './api/pipeline-step-resolution.js';
46
48
  // `isSoftDeletePurgeEnabled` is the module's own env gate — `runSoftDeletePurge`
47
49
  // and the scheduler already apply it, so callers never ask separately.
48
50
  export { runSoftDeletePurge, createSoftDeletePurgeScheduler, } from './api/soft-delete-sweep.js';
@@ -55,11 +57,11 @@ export { rebuildDay, runRollupPass, rollupSettleHours, rollupBatchDays, utcDaySt
55
57
  export { classifyFailure, isTeamActionable, FAILURE_CATEGORY_LABELS, } from './api/reporting/failure-classifier.js';
56
58
  export { getPipelineBreakdown, getFailureAnalysis, getStagePerformance, getResourceConsumption, getPromotionView, getOutdatedPlugins, getPluginVulnerabilities, getAdoption, } from './api/reporting/analytics-queries.js';
57
59
  export { evaluateNeedsAttention, thresholdsFrom, DEFAULT_THRESHOLDS, } from './api/reporting/needs-attention.js';
58
- export { replacePipelineResolution, refreshLatestForPlugin, upsertExposures, closeFixedExposures, openExposures, triageExposure, lapsedAcceptances, versionGap, } from './api/reporting/plugin-exposure.js';
60
+ export { replacePipelineResolution, refreshLatestForPlugin, upsertExposures, closeFixedExposures, closePipelineExposures, closeVersionExposures, reconcilePipelineExposures, syncVersionExposures, pipelinesOnVersion, exposureFromScan, liveExposurePredicate, openExposures, triageExposure, lapsedAcceptances, pipelineExposures, exposureById, activeAcceptances, acceptanceKey, reopenLapsedAcceptances, versionGap, } from './api/reporting/plugin-exposure.js';
59
61
  // The stakeholder-report engine: period resolution, section registry, templates
60
62
  // and the composer that freezes a period into a snapshot.
61
63
  export { resolvePeriod, resolvePeriodByLabel, rejectUnreportablePeriod, nextPeriodBoundary, completePeriodsSince, registerSection, getSection, allSections, sectionIds, REPORT_TEMPLATE_SPECS, getTemplate, composeSnapshot, LOW_SAMPLE_THRESHOLD, REPORT_FEATURE_SUBSTITUTES, renderReportHtml, reportFileName, trendSentence, StakeholderReportStore, stakeholderReportStore, hashToken, mintToken, DEFAULT_SHARE_LINK_TTL_DAYS, MAX_SHARE_LINK_TTL_DAYS, MAX_BOUNCES, VERIFICATION_TTL_MS, } from './api/reporting/stakeholder/index.js';
62
64
  export { ReportingService, reportingService, } from './api/reporting-service.js';
63
65
  // Filters
64
66
  export {} from './core/query-filters.js';
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxXQUFXO0FBQ1gsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyw4QkFBOEI7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGFBQWEsR0FDZCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFHNUIsZUFBZSxFQUNmLGVBQWUsRUFHZixZQUFZLEdBRWIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsNEJBQTRCLEdBRTdCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixjQUFjLEVBR2QsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQjtBQUNwQiwyRUFBMkU7QUFDM0UsMkVBQTJFO0FBQzNFLHNCQUFzQjtBQUN0QiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxhQUFhLEVBQ2IsY0FBYyxFQUVkLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUVwQixtQkFBbUIsR0FDcEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLDBCQUEwQixFQUMxQixpQkFBaUIsRUFFakIsMEJBQTBCLEdBQzNCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQU1uQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLGlGQUFpRjtBQUNqRix1RUFBdUU7QUFDdkUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQiw4QkFBOEIsR0FFL0IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBWU4sTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLG9GQUFvRjtBQUNwRixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGFBQWEsR0FFZCxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsV0FBVyxHQUNaLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsdUJBQXVCLEdBQ3hCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixXQUFXLEdBVVosTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxrQkFBa0IsR0FNbkIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFVBQVUsR0FJWCxNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFDMUQsT0FBTyxFQUNMLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsZUFBZSxFQUNmLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxhQUFhLEVBYWIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsU0FBUyxFQUNULDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLG1CQUFtQixHQUtwQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFHTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsVUFBVTtBQUNWLE9BQU8sRUFVTixNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQG1vZHVsZSBAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhXG4gKlxuICogRGF0YWJhc2UgbGF5ZXI6IERyaXp6bGUgT1JNIHNjaGVtYXMsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCwgYW5kIHF1ZXJ5IGluZnJhc3RydWN0dXJlLlxuICpcbiAqICoqRGF0YWJhc2UqKlxuICogLSBkYiDigJQgc2hhcmVkIERyaXp6bGUgZGF0YWJhc2UgaW5zdGFuY2VcbiAqIC0gZ2V0Q29ubmVjdGlvbiwgY2xvc2VDb25uZWN0aW9uIOKAlCBQb3N0Z3JlU1FMIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIHdpdGggcmV0cnkgbG9naWNcbiAqIC0gc2NoZW1hIOKAlCBEcml6emxlIHRhYmxlIGRlZmluaXRpb25zIChwbHVnaW5zLCBwaXBlbGluZXMsIG1lc3NhZ2VzLCBjb21wbGlhbmNlLCBldGMuKVxuICpcbiAqICoqU2VydmljZXMqKlxuICogLSBDcnVkU2VydmljZSDigJQgZ2VuZXJpYyBiYXNlIGNsYXNzIGZvciBtdWx0aS10ZW5hbnQgQ1JVRCB3aXRoIGFjY2VzcyBjb250cm9sIGFuZCBwYWdpbmF0aW9uXG4gKiAtIFJlcG9ydGluZ1NlcnZpY2Ug4oCUIGFnZ3JlZ2F0ZSBxdWVyeSBhbmQgcmVwb3J0aW5nIGJhc2UgY2xhc3NcbiAqXG4gKiAqKlF1ZXJ5IEJ1aWxkZXJzKipcbiAqIC0gYnVpbGRQbHVnaW5Db25kaXRpb25zLCBidWlsZFBpcGVsaW5lQ29uZGl0aW9ucywgYnVpbGRNZXNzYWdlQ29uZGl0aW9ucyDigJQgZmlsdGVyLXRvLVNRTCBjb25kaXRpb24gYnVpbGRlcnNcbiAqIC0gYnVpbGRDb21wbGlhbmNlUG9saWN5Q29uZGl0aW9ucywgYnVpbGRDb21wbGlhbmNlUnVsZUNvbmRpdGlvbnMsIGV0Yy4g4oCUIGNvbXBsaWFuY2UgcXVlcnkgYnVpbGRlcnNcbiAqIC0gQWNjZXNzQ29udHJvbEJ1aWxkZXIg4oCUIHJvdy1sZXZlbCBhY2Nlc3MgY29udHJvbCBjb25kaXRpb24gYnVpbGRlclxuICpcbiAqICoqRmlsdGVycyoqXG4gKiAtIFBsdWdpbkZpbHRlciwgUGlwZWxpbmVGaWx0ZXIsIE1lc3NhZ2VGaWx0ZXIg4oCUIHR5cGVkIGZpbHRlciBpbnRlcmZhY2VzXG4gKiAtIENvbXBsaWFuY2VQb2xpY3lGaWx0ZXIsIENvbXBsaWFuY2VSdWxlRmlsdGVyLCBldGMuIOKAlCBjb21wbGlhbmNlIGZpbHRlciBpbnRlcmZhY2VzXG4gKiAtIGRyaXp6bGVSb3dzLCBkcml6emxlQ291bnQg4oCUIERyaXp6bGUgcmVzdWx0IHR5cGUgaGVscGVyc1xuICovXG5cbi8vIERhdGFiYXNlXG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlL2luZGV4LmpzJztcblxuLy8gUXVlcnkgYnVpbGRlcnMgYW5kIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2FwaS9xdWVyeS1idWlsZGVycy5qcyc7XG5leHBvcnQge1xuICB0eXBlIEJhc2VBY2Nlc3NGaWx0ZXIsXG4gIEFjY2Vzc0NvbnRyb2xRdWVyeUJ1aWxkZXIsXG59IGZyb20gJy4vYXBpL2FjY2Vzcy1jb250cm9sLWJ1aWxkZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGkvdmlld2VyLWNvbnRleHQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGkvY3J1ZC1zZXJ2aWNlLmpzJztcbmV4cG9ydCB7XG4gIHBhcnNlU2VtdmVyLFxuICBjb21wYXJlU2VtdmVyUGFydHMsXG4gIGNvbXBhcmVTZW12ZXIsXG4gIGlzVmVyc2lvblJhbmdlLFxuICBzYXRpc2ZpZXNWZXJzaW9uU3BlYyxcbiAgc2VtdmVyT3JkZXJCeSxcbn0gZnJvbSAnLi9hcGkvc2VtdmVyLXJhbmdlLmpzJztcbmV4cG9ydCB7XG4gIG5vcm1hbGl6ZVF1ZXJ5LFxuICBzZWFyY2hQdWJsaWNMaXN0aW5ncyxcbiAgbGlzdFB1YmxpY0NhdGVnb3JpZXMsXG4gIGdldFB1YmxpY0xpc3RpbmcsXG4gIGdldFB1YmxpY0xpc3RlZFZlcnNpb24sXG4gIGxpc3RQdWJsaWNSZXZpZXdzLFxuICBsaXN0UHVibGljTGlzdGluZ3NGb3JTaXRlbWFwLFxuICB0eXBlIERpcmVjdG9yeVRydXN0VGllcixcbiAgdHlwZSBEaXJlY3RvcnlTb3J0LFxuICBESVJFQ1RPUllfU09SVFMsXG4gIERJUkVDVE9SWV9USUVSUyxcbiAgdHlwZSBEaXJlY3RvcnlTZWFyY2hQYXJhbXMsXG4gIHR5cGUgUmV2aWV3U29ydCxcbiAgUkVWSUVXX1NPUlRTLFxuICB0eXBlIFB1YmxpY0xpc3RpbmdSb3csXG59IGZyb20gJy4vYXBpL3B1YmxpYy1kaXJlY3RvcnkuanMnO1xuZXhwb3J0IHtcbiAgbGlzdEVuYWJsZWRBbGVydERlc3RpbmF0aW9ucyxcbiAgdHlwZSBOb3RpZmljYXRpb25EZXN0aW5hdGlvbixcbn0gZnJvbSAnLi9hcGkvYWxlcnQtZGVzdGluYXRpb25zLmpzJztcbmV4cG9ydCB7IGFub255bWl6ZVJldmlld3NCeUF1dGhvciB9IGZyb20gJy4vYXBpL2Vjb3N5c3RlbS1wcml2YWN5LmpzJztcbmV4cG9ydCB7XG4gIG9wZW5TdXBwb3J0Q2FzZSxcbiAgZmluZENhc2VCeVRocmVhZCxcbiAgbGlzdFF1ZXVlLFxuICBsaXN0T3JnQ2FzZXMsXG4gIHN0YW1wRmlyc3RSZXNwb25zZSxcbiAgc2V0Q2FzZVN0YXR1cyxcbiAgc2V0Q2FzZVNldmVyaXR5LFxuICBhc3NpZ25DYXNlLFxuICBhc3NpZ25DYXNlcyxcbiAgY2xvc2VDYXNlcyxcbiAgdHJhbnNmZXJDYXNlVG9Db250YWN0LFxuICBvcGVuQ2FzZXNGb3JDb250YWN0LFxuICBTVVBQT1JUX0NBU0VfU1RBVFVTRVMsXG4gIFFVRVVFX1NUQVRVU0VTLFxuICB0eXBlIFN1cHBvcnRDYXNlU3RhdHVzLFxuICB0eXBlIE9wZW5DYXNlSW5wdXQsXG4gIGNvdW50QWN0aXZlU3VwcG9ydENvbnRhY3RzLFxuICBsaXN0QWN0aXZlU3VwcG9ydENvbnRhY3RzLFxuICBpc1N1cHBvcnRDb250YWN0LFxuICBkZXNpZ25hdGVTdXBwb3J0Q29udGFjdCxcbiAgcmV2b2tlU3VwcG9ydENvbnRhY3QsXG4gIC8vIFRoZSBwcmVtaXVtIFVQR1JBREUgc3Vic2V0LiBTZXBhcmF0ZSBmcm9tIHRoZSBiYXNlbGluZSBjb250YWN0IGZ1bmN0aW9uc1xuICAvLyBiZWNhdXNlIHRoZSB0d28gYW5zd2VyIHRvIHNlcGFyYXRlIGNhcHM6IGFuIGFjY291bnQgaG9sZHMgTiBjb250YWN0cyBhbmRcbiAgLy8gdXBncmFkZXMgTSBvZiB0aGVtLlxuICBjb3VudFByZW1pdW1TdXBwb3J0Q29udGFjdHMsXG4gIGlzUHJlbWl1bVN1cHBvcnRDb250YWN0LFxuICBzZXRTdXBwb3J0Q29udGFjdFByZW1pdW0sXG4gIGNvdW50Q2FzZXNJbldpbmRvdyxcbiAgcmF0ZUNhc2UsXG4gIGFkZENhc2VOb3RlLFxuICBsaXN0Q2FzZU5vdGVzLFxuICBkZWxldGVDYXNlTm90ZSxcbiAgdHlwZSBTdXBwb3J0Q2FzZU5vdGUsXG4gIGxpc3RDYW5uZWRSZXNwb25zZXMsXG4gIGNyZWF0ZUNhbm5lZFJlc3BvbnNlLFxuICB1cGRhdGVDYW5uZWRSZXNwb25zZSxcbiAgZGVsZXRlQ2FubmVkUmVzcG9uc2UsXG4gIHR5cGUgQ2FubmVkUmVzcG9uc2UsXG4gIGxpc3RDYXNlc0R1ZUZvclBhZ2UsXG59IGZyb20gJy4vYXBpL3N1cHBvcnQtY2FzZXMuanMnO1xuZXhwb3J0IHtcbiAgcG9saWN5T2YsXG4gIGVmZmVjdGl2ZUNvbnN1bXB0aW9uUG9saWN5LFxuICBhcHBseVBvbGljeVVwZGF0ZSxcbiAgdHlwZSBDb25zdW1wdGlvblBvbGljeSxcbiAgREVGQVVMVF9DT05TVU1QVElPTl9QT0xJQ1ksXG59IGZyb20gJy4vYXBpL3BsdWdpbi1jb25zdW1wdGlvbi1wb2xpY3kuanMnO1xuZXhwb3J0IHtcbiAgYWR2aXNvcnlSYW5nZUNvdmVycyxcbiAgYWR2aXNvcnlSYW5nZVByb2JsZW0sXG4gIGFkdmlzb3JpZXNDb3ZlcmluZyxcbiAgYmxvY2tpbmdBZHZpc29yaWVzLFxufSBmcm9tICcuL2FwaS9wbHVnaW4tYWR2aXNvcmllcy5qcyc7XG5leHBvcnQge1xuICBsaXN0aW5nQmxvY2ssXG4gIGltcGxpY2l0SW5zdGFsbFJhbmdlLFxuICBpbnN0YWxsQWRtaXRzLFxuICBzY29wZU9yZ0lkcyxcbiAgaW5zdGFsbE1vZGVGb3IsXG4gIGRyaXp6bGVMaXN0aW5nU291cmNlLFxuICByZXNvbHZlTGlzdGluZ1JlZmVyZW5jZSxcbiAgbGlzdGVkVmVyc2lvbldhcm5pbmdzLFxuICBsaXN0ZWRQbHVnaW5SZWNvcmQsXG4gIGxvYWRPcmdJbnN0YWxsQ29udGV4dCxcbiAgb3JnTGlzdGluZ1N0YXRlcyxcbiAgcmVzb2x2YWJsZUxpc3RpbmdzLFxuICB0eXBlIFJlc29sdXRpb25SZWZ1c2FsLFxuICB0eXBlIFJlc29sdXRpb25TY29wZSxcbiAgdHlwZSBMaXN0aW5nRGF0YVNvdXJjZSxcbiAgdHlwZSBMaXN0aW5nUmVzb2x2ZWQsXG4gIHR5cGUgT3JnTGlzdGluZ1N0YXRlLFxufSBmcm9tICcuL2FwaS9wbHVnaW4tcmVzb2x1dGlvbi5qcyc7XG4vLyBgaXNTb2Z0RGVsZXRlUHVyZ2VFbmFibGVkYCBpcyB0aGUgbW9kdWxlJ3Mgb3duIGVudiBnYXRlIOKAlCBgcnVuU29mdERlbGV0ZVB1cmdlYFxuLy8gYW5kIHRoZSBzY2hlZHVsZXIgYWxyZWFkeSBhcHBseSBpdCwgc28gY2FsbGVycyBuZXZlciBhc2sgc2VwYXJhdGVseS5cbmV4cG9ydCB7XG4gIHJ1blNvZnREZWxldGVQdXJnZSxcbiAgY3JlYXRlU29mdERlbGV0ZVB1cmdlU2NoZWR1bGVyLFxuICB0eXBlIFB1cmdlYWJsZUVudGl0eSxcbn0gZnJvbSAnLi9hcGkvc29mdC1kZWxldGUtc3dlZXAuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBCdWlsZEhlYWx0aCxcbiAgdHlwZSBEb3JhTGV2ZWwsXG4gIHR5cGUgRG9yYU1ldHJpY3MsXG4gIHR5cGUgRG9yYU9wdGlvbnMsXG4gIHR5cGUgRG9yYVRyZW5kUG9pbnQsXG4gIHR5cGUgSW5jaWRlbnRMaXN0SXRlbSxcbiAgdHlwZSBSZXBvcnRpbmdTZXR0aW5ncyxcbiAgdHlwZSBJbmNpZGVudFRlc3RSZXN1bHQsXG4gIHR5cGUgSW5nZXN0Q2FsbGVyLFxuICB0eXBlIEluZ2VzdE1ldHJpYyxcbiAgdHlwZSBMYXN0RGVwbG95ZWRDb21taXQsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy1zZXJ2aWNlLmpzJztcblxuLy8gVGhlIHJlcG9ydGluZyBBTkFMWVRJQ1MgbGF5ZXI6IHRoZSBwZXItZGVwbG95IHJvbGx1cCB3cml0dGVuIGF0IGluZ2VzdCwgdGhlXG4vLyBkYWlseSByb2xsdXAgZXZlcnkgc2VjdGlvbiByZWFkcywgYW5kIHRoZSBmYWlsdXJlIGNsYXNzaWZpZXIgdGhhdCBsYWJlbHMgd2hhdFxuLy8gYnJva2UgKHNlZSB0aGUgbW9kdWxlcycgb3duIGhlYWRlcnMgZm9yIHdoeSBlYWNoIGlzIHdyaXR0ZW4gcmF0aGVyIHRoYW4gZGVyaXZlZCkuXG5leHBvcnQge1xuICB1cHNlcnREZXBsb3ltZW50cyxcbiAgYXBwbHlEZXBsb3lPdXRjb21lLFxuICBjb3JyZWxhdGVJbmNpZGVudCxcbiAgaXNEZXBsb3lFdmVudCxcbiAgbGVhZFRpbWVHYXBPZixcbiAgdHlwZSBEZXBsb3lDYW5kaWRhdGUsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9kZXBsb3ktcm9sbHVwLmpzJztcbmV4cG9ydCB7XG4gIHJlYnVpbGREYXksXG4gIHJ1blJvbGx1cFBhc3MsXG4gIHJvbGx1cFNldHRsZUhvdXJzLFxuICByb2xsdXBCYXRjaERheXMsXG4gIHV0Y0RheVN0YXJ0LFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvZGFpbHktcm9sbHVwLmpzJztcbmV4cG9ydCB7XG4gIGNsYXNzaWZ5RmFpbHVyZSxcbiAgaXNUZWFtQWN0aW9uYWJsZSxcbiAgRkFJTFVSRV9DQVRFR09SWV9MQUJFTFMsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9mYWlsdXJlLWNsYXNzaWZpZXIuanMnO1xuZXhwb3J0IHtcbiAgZ2V0UGlwZWxpbmVCcmVha2Rvd24sXG4gIGdldEZhaWx1cmVBbmFseXNpcyxcbiAgZ2V0U3RhZ2VQZXJmb3JtYW5jZSxcbiAgZ2V0UmVzb3VyY2VDb25zdW1wdGlvbixcbiAgZ2V0UHJvbW90aW9uVmlldyxcbiAgZ2V0T3V0ZGF0ZWRQbHVnaW5zLFxuICBnZXRQbHVnaW5WdWxuZXJhYmlsaXRpZXMsXG4gIGdldEFkb3B0aW9uLFxuICB0eXBlIEFuYWx5dGljc1Njb3BlLFxuICB0eXBlIFBpcGVsaW5lQnJlYWtkb3duUm93LFxuICB0eXBlIEZhaWx1cmVDYXRlZ29yeVJvdyxcbiAgdHlwZSBTdGFnZVBlcmZvcm1hbmNlUm93LFxuICB0eXBlIFJlc291cmNlUm93LFxuICB0eXBlIFByb21vdGlvblJvdyxcbiAgdHlwZSBPdXRkYXRlZFBsdWdpblJvdyxcbiAgdHlwZSBWdWxuZXJhYmlsaXR5Um93LFxuICB0eXBlIEFkb3B0aW9uU3VtbWFyeSxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL2FuYWx5dGljcy1xdWVyaWVzLmpzJztcbmV4cG9ydCB7XG4gIGV2YWx1YXRlTmVlZHNBdHRlbnRpb24sXG4gIHRocmVzaG9sZHNGcm9tLFxuICBERUZBVUxUX1RIUkVTSE9MRFMsXG4gIHR5cGUgTmVlZHNBdHRlbnRpb25UaHJlc2hvbGRzLFxuICB0eXBlIEF0dGVudGlvbkZpbmRpbmcsXG4gIHR5cGUgQXR0ZW50aW9uSXRlbSxcbiAgdHlwZSBBdHRlbnRpb25JbnB1dCxcbiAgdHlwZSBBdHRlbnRpb25SdWxlSWQsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9uZWVkcy1hdHRlbnRpb24uanMnO1xuZXhwb3J0IHtcbiAgcmVwbGFjZVBpcGVsaW5lUmVzb2x1dGlvbixcbiAgcmVmcmVzaExhdGVzdEZvclBsdWdpbixcbiAgdXBzZXJ0RXhwb3N1cmVzLFxuICBjbG9zZUZpeGVkRXhwb3N1cmVzLFxuICBvcGVuRXhwb3N1cmVzLFxuICB0cmlhZ2VFeHBvc3VyZSxcbiAgbGFwc2VkQWNjZXB0YW5jZXMsXG4gIHZlcnNpb25HYXAsXG4gIHR5cGUgUmVzb2x2ZWRTdGVwLFxuICB0eXBlIEV4cG9zdXJlSW5wdXQsXG4gIHR5cGUgVmVyc2lvbkdhcCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL3BsdWdpbi1leHBvc3VyZS5qcyc7XG5cbi8vIFRoZSBzdGFrZWhvbGRlci1yZXBvcnQgZW5naW5lOiBwZXJpb2QgcmVzb2x1dGlvbiwgc2VjdGlvbiByZWdpc3RyeSwgdGVtcGxhdGVzXG4vLyBhbmQgdGhlIGNvbXBvc2VyIHRoYXQgZnJlZXplcyBhIHBlcmlvZCBpbnRvIGEgc25hcHNob3QuXG5leHBvcnQge1xuICByZXNvbHZlUGVyaW9kLFxuICByZXNvbHZlUGVyaW9kQnlMYWJlbCxcbiAgcmVqZWN0VW5yZXBvcnRhYmxlUGVyaW9kLFxuICBuZXh0UGVyaW9kQm91bmRhcnksXG4gIGNvbXBsZXRlUGVyaW9kc1NpbmNlLFxuICByZWdpc3RlclNlY3Rpb24sXG4gIGdldFNlY3Rpb24sXG4gIGFsbFNlY3Rpb25zLFxuICBzZWN0aW9uSWRzLFxuICBSRVBPUlRfVEVNUExBVEVfU1BFQ1MsXG4gIGdldFRlbXBsYXRlLFxuICBjb21wb3NlU25hcHNob3QsXG4gIExPV19TQU1QTEVfVEhSRVNIT0xELFxuICBSRVBPUlRfRkVBVFVSRV9TVUJTVElUVVRFUyxcbiAgcmVuZGVyUmVwb3J0SHRtbCxcbiAgcmVwb3J0RmlsZU5hbWUsXG4gIHRyZW5kU2VudGVuY2UsXG4gIHR5cGUgUmVwb3J0SHRtbElucHV0LFxuICB0eXBlIFJlc29sdmVkUGVyaW9kLFxuICB0eXBlIFBlcmlvZFJlamVjdGlvbixcbiAgdHlwZSBTZWN0aW9uU3BlYyxcbiAgdHlwZSBTZWN0aW9uQ29udGV4dCxcbiAgdHlwZSBTZWN0aW9uRGF0YVNvdXJjZSxcbiAgdHlwZSBUZW1wbGF0ZVNwZWMsXG4gIHR5cGUgUmVwb3J0U25hcHNob3QsXG4gIHR5cGUgQ29tcG9zZWRTZWN0aW9uLFxuICB0eXBlIERhdGFRdWFsaXR5Tm90ZSxcbiAgdHlwZSBDb21wb3NlT3B0aW9ucyxcbiAgdHlwZSBUcmVuZERpcmVjdGlvbixcbiAgU3Rha2Vob2xkZXJSZXBvcnRTdG9yZSxcbiAgc3Rha2Vob2xkZXJSZXBvcnRTdG9yZSxcbiAgaGFzaFRva2VuLFxuICBtaW50VG9rZW4sXG4gIERFRkFVTFRfU0hBUkVfTElOS19UVExfREFZUyxcbiAgTUFYX1NIQVJFX0xJTktfVFRMX0RBWVMsXG4gIE1BWF9CT1VOQ0VTLFxuICBWRVJJRklDQVRJT05fVFRMX01TLFxuICB0eXBlIENyZWF0ZURlZmluaXRpb25JbnB1dCxcbiAgdHlwZSBVcGRhdGVEZWZpbml0aW9uSW5wdXQsXG4gIHR5cGUgTWludGVkU2hhcmVMaW5rLFxuICB0eXBlIFJlc29sdmVkU2hhcmVMaW5rLFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvc3Rha2Vob2xkZXIvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBQbHVnaW5SdW50aW1lRmlsdGVyLFxuICB0eXBlIFBsdWdpblJ1bnRpbWVTdGF0cyxcbiAgUmVwb3J0aW5nU2VydmljZSxcbiAgcmVwb3J0aW5nU2VydmljZSxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nLXNlcnZpY2UuanMnO1xuXG4vLyBGaWx0ZXJzXG5leHBvcnQge1xuICB0eXBlIFBsdWdpbkZpbHRlcixcbiAgdHlwZSBQaXBlbGluZUZpbHRlcixcbiAgdHlwZSBQaXBlbGluZVRlbXBsYXRlRmlsdGVyLFxuICB0eXBlIE1lc3NhZ2VGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVBvbGljeUZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlUnVsZUZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uRmlsdGVyLFxuICB0eXBlIENvbXBsaWFuY2VBdWRpdEZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlU2NhbkZpbHRlcixcbn0gZnJvbSAnLi9jb3JlL3F1ZXJ5LWZpbHRlcnMuanMnO1xuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxXQUFXO0FBQ1gsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyw4QkFBOEI7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGFBQWEsR0FDZCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFHNUIsZUFBZSxFQUNmLGVBQWUsRUFHZixZQUFZLEdBRWIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsNEJBQTRCLEdBRTdCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixjQUFjLEVBR2QsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQjtBQUNwQiwyRUFB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RUFDWCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGFBQWEsRUFhYixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsbUJBQW1CLEdBS3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxVQUFVO0FBQ1YsT0FBTyxFQVVOLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBAbW9kdWxlIEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGFcbiAqXG4gKiBEYXRhYmFzZSBsYXllcjogRHJpenpsZSBPUk0gc2NoZW1hcywgY29ubmVjdGlvbiBtYW5hZ2VtZW50LCBhbmQgcXVlcnkgaW5mcmFzdHJ1Y3R1cmUuXG4gKlxuICogKipEYXRhYmFzZSoqXG4gKiAtIGRiIOKAlCBzaGFyZWQgRHJpenpsZSBkYXRhYmFzZSBpbnN0YW5jZVxuICogLSBnZXRDb25uZWN0aW9uLCBjbG9zZUNvbm5lY3Rpb24g4oCUIFBvc3RncmVTUUwgY29ubmVjdGlvbiBsaWZlY3ljbGUgd2l0aCByZXRyeSBsb2dpY1xuICogLSBzY2hlbWEg4oCUIERyaXp6bGUgdGFibGUgZGVmaW5pdGlvbnMgKHBsdWdpbnMsIHBpcGVsaW5lcywgbWVzc2FnZXMsIGNvbXBsaWFuY2UsIGV0Yy4pXG4gKlxuICogKipTZXJ2aWNlcyoqXG4gKiAtIENydWRTZXJ2aWNlIOKAlCBnZW5lcmljIGJhc2UgY2xhc3MgZm9yIG11bHRpLXRlbmFudCBDUlVEIHdpdGggYWNjZXNzIGNvbnRyb2wgYW5kIHBhZ2luYXRpb25cbiAqIC0gUmVwb3J0aW5nU2VydmljZSDigJQgYWdncmVnYXRlIHF1ZXJ5IGFuZCByZXBvcnRpbmcgYmFzZSBjbGFzc1xuICpcbiAqICoqUXVlcnkgQnVpbGRlcnMqKlxuICogLSBidWlsZFBsdWdpbkNvbmRpdGlvbnMsIGJ1aWxkUGlwZWxpbmVDb25kaXRpb25zLCBidWlsZE1lc3NhZ2VDb25kaXRpb25zIOKAlCBmaWx0ZXItdG8tU1FMIGNvbmRpdGlvbiBidWlsZGVyc1xuICogLSBidWlsZENvbXBsaWFuY2VQb2xpY3lDb25kaXRpb25zLCBidWlsZENvbXBsaWFuY2VSdWxlQ29uZGl0aW9ucywgZXRjLiDigJQgY29tcGxpYW5jZSBxdWVyeSBidWlsZGVyc1xuICogLSBBY2Nlc3NDb250cm9sQnVpbGRlciDigJQgcm93LWxldmVsIGFjY2VzcyBjb250cm9sIGNvbmRpdGlvbiBidWlsZGVyXG4gKlxuICogKipGaWx0ZXJzKipcbiAqIC0gUGx1Z2luRmlsdGVyLCBQaXBlbGluZUZpbHRlciwgTWVzc2FnZUZpbHRlciDigJQgdHlwZWQgZmlsdGVyIGludGVyZmFjZXNcbiAqIC0gQ29tcGxpYW5jZVBvbGljeUZpbHRlciwgQ29tcGxpYW5jZVJ1bGVGaWx0ZXIsIGV0Yy4g4oCUIGNvbXBsaWFuY2UgZmlsdGVyIGludGVyZmFjZXNcbiAqIC0gZHJpenpsZVJvd3MsIGRyaXp6bGVDb3VudCDigJQgRHJpenpsZSByZXN1bHQgdHlwZSBoZWxwZXJzXG4gKi9cblxuLy8gRGF0YWJhc2VcbmV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2UvaW5kZXguanMnO1xuXG4vLyBRdWVyeSBidWlsZGVycyBhbmQgc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vYXBpL3F1ZXJ5LWJ1aWxkZXJzLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgQmFzZUFjY2Vzc0ZpbHRlcixcbiAgQWNjZXNzQ29udHJvbFF1ZXJ5QnVpbGRlcixcbn0gZnJvbSAnLi9hcGkvYWNjZXNzLWNvbnRyb2wtYnVpbGRlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS92aWV3ZXItY29udGV4dC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS9jcnVkLXNlcnZpY2UuanMnO1xuZXhwb3J0IHtcbiAgcGFyc2VTZW12ZXIsXG4gIGNvbXBhcmVTZW12ZXJQYXJ0cyxcbiAgY29tcGFyZVNlbXZlcixcbiAgaXNWZXJzaW9uUmFuZ2UsXG4gIHNhdGlzZmllc1ZlcnNpb25TcGVjLFxuICBzZW12ZXJPcmRlckJ5LFxufSBmcm9tICcuL2FwaS9zZW12ZXItcmFuZ2UuanMnO1xuZXhwb3J0IHtcbiAgbm9ybWFsaXplUXVlcnksXG4gIHNlYXJjaFB1YmxpY0xpc3RpbmdzLFxuICBsaXN0UHVibGljQ2F0ZWdvcmllcyxcbiAgZ2V0UHVibGljTGlzdGluZyxcbiAgZ2V0UHVibGljTGlzdGVkVmVyc2lvbixcbiAgbGlzdFB1YmxpY1Jldmlld3MsXG4gIGxpc3RQdWJsaWNMaXN0aW5nc0ZvclNpdGVtYXAsXG4gIHR5cGUgRGlyZWN0b3J5VHJ1c3RUaWVyLFxuICB0eXBlIERpcmVjdG9yeVNvcnQsXG4gIERJUkVDVE9SWV9TT1JUUyxcbiAgRElSRUNUT1JZX1RJRVJTLFxuICB0eXBlIERpcmVjdG9yeVNlYXJjaFBhcmFtcyxcbiAgdHlwZSBSZXZpZXdTb3J0LFxuICBSRVZJRVdfU09SVFMsXG4gIHR5cGUgUHVibGljTGlzdGluZ1Jvdyxcbn0gZnJvbSAnLi9hcGkvcHVibGljLWRpcmVjdG9yeS5qcyc7XG5leHBvcnQge1xuICBsaXN0RW5hYmxlZEFsZXJ0RGVzdGluYXRpb25zLFxuICB0eXBlIE5vdGlmaWNhdGlvbkRlc3RpbmF0aW9uLFxufSBmcm9tICcuL2FwaS9hbGVydC1kZXN0aW5hdGlvbnMuanMnO1xuZXhwb3J0IHsgYW5vbnltaXplUmV2aWV3c0J5QXV0aG9yIH0gZnJvbSAnLi9hcGkvZWNvc3lzdGVtLXByaXZhY3kuanMnO1xuZXhwb3J0IHtcbiAgb3BlblN1cHBvcnRDYXNlLFxuICBmaW5kQ2FzZUJ5VGhyZWFkLFxuICBsaXN0UXVldWUsXG4gIGxpc3RPcmdDYXNlcyxcbiAgc3RhbXBGaXJzdFJlc3BvbnNlLFxuICBzZXRDYXNlU3RhdHVzLFxuICBzZXRDYXNlU2V2ZXJpdHksXG4gIGFzc2lnbkNhc2UsXG4gIGFzc2lnbkNhc2VzLFxuICBjbG9zZUNhc2VzLFxuICB0cmFuc2ZlckNhc2VUb0NvbnRhY3QsXG4gIG9wZW5DYXNlc0ZvckNvbnRhY3QsXG4gIFNVUFBPUlRfQ0FTRV9TVEFUVVNFUyxcbiAgUVVFVUVfU1RBVFVTRVMsXG4gIHR5cGUgU3VwcG9ydENhc2VTdGF0dXMsXG4gIHR5cGUgT3BlbkNhc2VJbnB1dCxcbiAgY291bnRBY3RpdmVTdXBwb3J0Q29udGFjdHMsXG4gIGxpc3RBY3RpdmVTdXBwb3J0Q29udGFjdHMsXG4gIGlzU3VwcG9ydENvbnRhY3QsXG4gIGRlc2lnbmF0ZVN1cHBvcnRDb250YWN0LFxuICByZXZva2VTdXBwb3J0Q29udGFjdCxcbiAgLy8gVGhlIHByZW1pdW0gVVBHUkFERSBzdWJzZXQuIFNlcGFyYXRlIGZyb20gdGhlIGJhc2VsaW5lIGNvbnRhY3QgZnVuY3Rpb25zXG4gIC8vIGJlY2F1c2UgdGhlIHR3byBhbnN3ZXIgdG8gc2VwYXJhdGUgY2FwczogYW4gYWNjb3VudCBob2xkcyBOIGNvbnRhY3RzIGFuZFxuICAvLyB1cGdyYWRlcyBNIG9mIHRoZW0uXG4gIGNvdW50UHJlbWl1bVN1cHBvcnRDb250YWN0cyxcbiAgaXNQcmVtaXVtU3VwcG9ydENvbnRhY3QsXG4gIHNldFN1cHBvcnRDb250YWN0UHJlbWl1bSxcbiAgY291bnRDYXNlc0luV2luZG93LFxuICByYXRlQ2FzZSxcbiAgYWRkQ2FzZU5vdGUsXG4gIGxpc3RDYXNlTm90ZXMsXG4gIGRlbGV0ZUNhc2VOb3RlLFxuICB0eXBlIFN1cHBvcnRDYXNlTm90ZSxcbiAgbGlzdENhbm5lZFJlc3BvbnNlcyxcbiAgY3JlYXRlQ2FubmVkUmVzcG9uc2UsXG4gIHVwZGF0ZUNhbm5lZFJlc3BvbnNlLFxuICBkZWxldGVDYW5uZWRSZXNwb25zZSxcbiAgdHlwZSBDYW5uZWRSZXNwb25zZSxcbiAgbGlzdENhc2VzRHVlRm9yUGFnZSxcbn0gZnJvbSAnLi9hcGkvc3VwcG9ydC1jYXNlcy5qcyc7XG5leHBvcnQge1xuICBwb2xpY3lPZixcbiAgZWZmZWN0aXZlQ29uc3VtcHRpb25Qb2xpY3ksXG4gIGFwcGx5UG9saWN5VXBkYXRlLFxuICB0eXBlIENvbnN1bXB0aW9uUG9saWN5LFxuICBERUZBVUxUX0NPTlNVTVBUSU9OX1BPTElDWSxcbn0gZnJvbSAnLi9hcGkvcGx1Z2luLWNvbnN1bXB0aW9uLXBvbGljeS5qcyc7XG5leHBvcnQge1xuICBhZHZpc29yeVJhbmdlQ292ZXJzLFxuICBhZHZpc29yeVJhbmdlUHJvYmxlbSxcbiAgYWR2aXNvcmllc0NvdmVyaW5nLFxuICBibG9ja2luZ0Fkdmlzb3JpZXMsXG59IGZyb20gJy4vYXBpL3BsdWdpbi1hZHZpc29yaWVzLmpzJztcbmV4cG9ydCB7XG4gIGxpc3RpbmdCbG9jayxcbiAgaW1wbGljaXRJbnN0YWxsUmFuZ2UsXG4gIGluc3RhbGxBZG1pdHMsXG4gIHNjb3BlT3JnSWRzLFxuICBpbnN0YWxsTW9kZUZvcixcbiAgZHJpenpsZUxpc3RpbmdTb3VyY2UsXG4gIHJlc29sdmVMaXN0aW5nUmVmZXJlbmNlLFxuICBsaXN0ZWRWZXJzaW9uV2FybmluZ3MsXG4gIGxpc3RlZFBsdWdpblJlY29yZCxcbiAgbG9hZE9yZ0luc3RhbGxDb250ZXh0LFxuICBvcmdMaXN0aW5nU3RhdGVzLFxuICByZXNvbHZhYmxlTGlzdGluZ3MsXG4gIHR5cGUgUmVzb2x1dGlvblJlZnVzYWwsXG4gIHR5cGUgUmVzb2x1dGlvblNjb3BlLFxuICB0eXBlIExpc3RpbmdEYXRhU291cmNlLFxuICB0eXBlIExpc3RpbmdSZXNvbHZlZCxcbiAgdHlwZSBPcmdMaXN0aW5nU3RhdGUsXG4gIHZ1bG5VcGdyYWRlQXZhaWxhYmxlV2FybmluZyxcbiAgdHlwZSBWdWxuVXBncmFkZUF2YWlsYWJsZVdhcm5pbmcsXG59IGZyb20gJy4vYXBpL3BsdWdpbi1yZXNvbHV0aW9uLmpzJztcbmV4cG9ydCB7XG4gIGZpbmRWZXJzaW9uUmVmZXJlbmNlcyxcbiAgZGlzdGluY3RQaXBlbGluZXMsXG4gIHZlcnNpb25SZWZlcmVuY2VkUHJlZGljYXRlLFxuICBvcmdJbWFnZURpZ2VzdHNJblVzZSxcbiAgdHlwZSBWZXJzaW9uUmVmZXJlbmNlVGFyZ2V0LFxuICB0eXBlIFZlcnNpb25SZWZlcmVuY2UsXG59IGZyb20gJy4vYXBpL3ZlcnNpb24tcmVmZXJlbmNlcy5qcyc7XG5leHBvcnQge1xuICBkZWNsYXJlZFJlc29sdXRpb24sXG4gIHJlY29yZFN0ZXBMb29rdXAsXG4gIHBpcGVsaW5lU3RlcExvb2t1cHMsXG4gIGRlY2xhcmVkUGlwZWxpbmVzRm9yUGx1Z2luLFxuICBzdGFnZUFuZFN0ZXAsXG4gIHN0ZXBMYWJlbE9mLFxuICB0eXBlIERlY2xhcmVkU3RlcElucHV0LFxuICB0eXBlIERlY2xhcmVkU3RlcFBsdWdpbixcbiAgdHlwZSBEZWNsYXJlZFN0ZXBSZXNvbHV0aW9uLFxuICB0eXBlIFN0ZXBMb29rdXBSZWNvcmQsXG4gIHR5cGUgRGVjbGFyZWRQaXBlbGluZVJlZixcbn0gZnJvbSAnLi9hcGkvcGlwZWxpbmUtc3RlcC1yZXNvbHV0aW9uLmpzJztcbi8vIGBpc1NvZnREZWxldGVQdXJnZUVuYWJsZWRgIGlzIHRoZSBtb2R1bGUncyBvd24gZW52IGdhdGUg4oCUIGBydW5Tb2Z0RGVsZXRlUHVyZ2VgXG4vLyBhbmQgdGhlIHNjaGVkdWxlciBhbHJlYWR5IGFwcGx5IGl0LCBzbyBjYWxsZXJzIG5ldmVyIGFzayBzZXBhcmF0ZWx5LlxuZXhwb3J0IHtcbiAgcnVuU29mdERlbGV0ZVB1cmdlLFxuICBjcmVhdGVTb2Z0RGVsZXRlUHVyZ2VTY2hlZHVsZXIsXG4gIHR5cGUgUHVyZ2VhYmxlRW50aXR5LFxufSBmcm9tICcuL2FwaS9zb2Z0LWRlbGV0ZS1zd2VlcC5qcyc7XG5leHBvcnQge1xuICB0eXBlIEJ1aWxkSGVhbHRoLFxuICB0eXBlIERvcmFMZXZlbCxcbiAgdHlwZSBEb3JhTWV0cmljcyxcbiAgdHlwZSBEb3JhT3B0aW9ucyxcbiAgdHlwZSBEb3JhVHJlbmRQb2ludCxcbiAgdHlwZSBEZXBsb3ltZW50T3V0Y29tZVdyaXRlLFxuICB0eXBlIEluY2lkZW50TGlzdEl0ZW0sXG4gIHR5cGUgSW5jaWRlbnRTdGF0ZSxcbiAgdHlwZSBJbmNpZGVudFdyaXRlLFxuICB0eXBlIFJlcG9ydGluZ1NldHRpbmdzLFxuICB0eXBlIEluY2lkZW50VGVzdFJlc3VsdCxcbiAgdHlwZSBJbmdlc3RDYWxsZXIsXG4gIHR5cGUgSW5nZXN0TWV0cmljLFxuICB0eXBlIExhc3REZXBsb3llZENvbW1pdCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nLXNlcnZpY2UuanMnO1xuXG4vLyBUaGUgcmVwb3J0aW5nIEFOQUxZVElDUyBsYXllcjogdGhlIHBlci1kZXBsb3kgcm9sbHVwIHdyaXR0ZW4gYXQgaW5nZXN0LCB0aGVcbi8vIGRhaWx5IHJvbGx1cCBldmVyeSBzZWN0aW9uIHJlYWRzLCBhbmQgdGhlIGZhaWx1cmUgY2xhc3NpZmllciB0aGF0IGxhYmVscyB3aGF0XG4vLyBicm9rZSAoc2VlIHRoZSBtb2R1bGVzJyBvd24gaGVhZGVycyBmb3Igd2h5IGVhY2ggaXMgd3JpdHRlbiByYXRoZXIgdGhhbiBkZXJpdmVkKS5cbmV4cG9ydCB7XG4gIHVwc2VydERlcGxveW1lbnRzLFxuICBhcHBseURlcGxveU91dGNvbWUsXG4gIGNvcnJlbGF0ZUluY2lkZW50LFxuICBpc0RlcGxveUV2ZW50LFxuICBsZWFkVGltZUdhcE9mLFxuICB0eXBlIERlcGxveUNhbmRpZGF0ZSxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL2RlcGxveS1yb2xsdXAuanMnO1xuZXhwb3J0IHtcbiAgcmVidWlsZERheSxcbiAgcnVuUm9sbHVwUGFzcyxcbiAgcm9sbHVwU2V0dGxlSG91cnMsXG4gIHJvbGx1cEJhdGNoRGF5cyxcbiAgdXRjRGF5U3RhcnQsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9kYWlseS1yb2xsdXAuanMnO1xuZXhwb3J0IHtcbiAgY2xhc3NpZnlGYWlsdXJlLFxuICBpc1RlYW1BY3Rpb25hYmxlLFxuICBGQUlMVVJFX0NBVEVHT1JZX0xBQkVMUyxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL2ZhaWx1cmUtY2xhc3NpZmllci5qcyc7XG5leHBvcnQge1xuICBnZXRQaXBlbGluZUJyZWFrZG93bixcbiAgZ2V0RmFpbHVyZUFuYWx5c2lzLFxuICBnZXRTdGFnZVBlcmZvcm1hbmNlLFxuICBnZXRSZXNvdXJjZUNvbnN1bXB0aW9uLFxuICBnZXRQcm9tb3Rpb25WaWV3LFxuICBnZXRPdXRkYXRlZFBsdWdpbnMsXG4gIGdldFBsdWdpblZ1bG5lcmFiaWxpdGllcyxcbiAgZ2V0QWRvcHRpb24sXG4gIHR5cGUgQW5hbHl0aWNzU2NvcGUsXG4gIHR5cGUgUGlwZWxpbmVCcmVha2Rvd25Sb3csXG4gIHR5cGUgRmFpbHVyZUNhdGVnb3J5Um93LFxuICB0eXBlIFN0YWdlUGVyZm9ybWFuY2VSb3csXG4gIHR5cGUgUmVzb3VyY2VSb3csXG4gIHR5cGUgUHJvbW90aW9uUm93LFxuICB0eXBlIE91dGRhdGVkUGx1Z2luUm93LFxuICB0eXBlIFZ1bG5lcmFiaWxpdHlSb3csXG4gIHR5cGUgQWRvcHRpb25TdW1tYXJ5LFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvYW5hbHl0aWNzLXF1ZXJpZXMuanMnO1xuZXhwb3J0IHtcbiAgZXZhbHVhdGVOZWVkc0F0dGVudGlvbixcbiAgdGhyZXNob2xkc0Zyb20sXG4gIERFRkFVTFRfVEhSRVNIT0xEUyxcbiAgdHlwZSBOZWVkc0F0dGVudGlvblRocmVzaG9sZHMsXG4gIHR5cGUgQXR0ZW50aW9uRmluZGluZyxcbiAgdHlwZSBBdHRlbnRpb25JdGVtLFxuICB0eXBlIEF0dGVudGlvbklucHV0LFxuICB0eXBlIEF0dGVudGlvblJ1bGVJZCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL25lZWRzLWF0dGVudGlvbi5qcyc7XG5leHBvcnQge1xuICByZXBsYWNlUGlwZWxpbmVSZXNvbHV0aW9uLFxuICByZWZyZXNoTGF0ZXN0Rm9yUGx1Z2luLFxuICB1cHNlcnRFeHBvc3VyZXMsXG4gIGNsb3NlRml4ZWRFeHBvc3VyZXMsXG4gIGNsb3NlUGlwZWxpbmVFeHBvc3VyZXMsXG4gIGNsb3NlVmVyc2lvbkV4cG9zdXJlcyxcbiAgcmVjb25jaWxlUGlwZWxpbmVFeHBvc3VyZXMsXG4gIHN5bmNWZXJzaW9uRXhwb3N1cmVzLFxuICBwaXBlbGluZXNPblZlcnNpb24sXG4gIGV4cG9zdXJlRnJvbVNjYW4sXG4gIGxpdmVFeHBvc3VyZVByZWRpY2F0ZSxcbiAgb3BlbkV4cG9zdXJlcyxcbiAgdHJpYWdlRXhwb3N1cmUsXG4gIGxhcHNlZEFjY2VwdGFuY2VzLFxuICBwaXBlbGluZUV4cG9zdXJlcyxcbiAgZXhwb3N1cmVCeUlkLFxuICBhY3RpdmVBY2NlcHRhbmNlcyxcbiAgYWNjZXB0YW5jZUtleSxcbiAgcmVvcGVuTGFwc2VkQWNjZXB0YW5jZXMsXG4gIHZlcnNpb25HYXAsXG4gIHR5cGUgUGlwZWxpbmVFeHBvc3VyZSxcbiAgdHlwZSBUcmlhZ2VEZWNpc2lvbixcbiAgdHlwZSBQaXBlbGluZUFjY2VwdGFuY2VzLFxuICB0eXBlIExhcHNlZEFjY2VwdGFuY2UsXG4gIHR5cGUgUmVzb2x2ZWRTdGVwLFxuICB0eXBlIEV4cG9zdXJlSW5wdXQsXG4gIHR5cGUgRXhwb3N1cmVTdGVwLFxuICB0eXBlIEV4cG9zdXJlQ291bnRzLFxuICB0eXBlIExpdmVWZXJzaW9uLFxuICB0eXBlIFBpcGVsaW5lT25WZXJzaW9uLFxuICB0eXBlIFBsdWdpblZlcnNpb25SZWYsXG4gIHR5cGUgU2NhblN0YXRlLFxuICB0eXBlIFZlcnNpb25HYXAsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9wbHVnaW4tZXhwb3N1cmUuanMnO1xuXG4vLyBUaGUgc3Rha2Vob2xkZXItcmVwb3J0IGVuZ2luZTogcGVyaW9kIHJlc29sdXRpb24sIHNlY3Rpb24gcmVnaXN0cnksIHRlbXBsYXRlc1xuLy8gYW5kIHRoZSBjb21wb3NlciB0aGF0IGZyZWV6ZXMgYSBwZXJpb2QgaW50byBhIHNuYXBzaG90LlxuZXhwb3J0IHtcbiAgcmVzb2x2ZVBlcmlvZCxcbiAgcmVzb2x2ZVBlcmlvZEJ5TGFiZWwsXG4gIHJlamVjdFVucmVwb3J0YWJsZVBlcmlvZCxcbiAgbmV4dFBlcmlvZEJvdW5kYXJ5LFxuICBjb21wbGV0ZVBlcmlvZHNTaW5jZSxcbiAgcmVnaXN0ZXJTZWN0aW9uLFxuICBnZXRTZWN0aW9uLFxuICBhbGxTZWN0aW9ucyxcbiAgc2VjdGlvbklkcyxcbiAgUkVQT1JUX1RFTVBMQVRFX1NQRUNTLFxuICBnZXRUZW1wbGF0ZSxcbiAgY29tcG9zZVNuYXBzaG90LFxuICBMT1dfU0FNUExFX1RIUkVTSE9MRCxcbiAgUkVQT1JUX0ZFQVRVUkVfU1VCU1RJVFVURVMsXG4gIHJlbmRlclJlcG9ydEh0bWwsXG4gIHJlcG9ydEZpbGVOYW1lLFxuICB0cmVuZFNlbnRlbmNlLFxuICB0eXBlIFJlcG9ydEh0bWxJbnB1dCxcbiAgdHlwZSBSZXNvbHZlZFBlcmlvZCxcbiAgdHlwZSBQZXJpb2RSZWplY3Rpb24sXG4gIHR5cGUgU2VjdGlvblNwZWMsXG4gIHR5cGUgU2VjdGlvbkNvbnRleHQsXG4gIHR5cGUgU2VjdGlvbkRhdGFTb3VyY2UsXG4gIHR5cGUgVGVtcGxhdGVTcGVjLFxuICB0eXBlIFJlcG9ydFNuYXBzaG90LFxuICB0eXBlIENvbXBvc2VkU2VjdGlvbixcbiAgdHlwZSBEYXRhUXVhbGl0eU5vdGUsXG4gIHR5cGUgQ29tcG9zZU9wdGlvbnMsXG4gIHR5cGUgVHJlbmREaXJlY3Rpb24sXG4gIFN0YWtlaG9sZGVyUmVwb3J0U3RvcmUsXG4gIHN0YWtlaG9sZGVyUmVwb3J0U3RvcmUsXG4gIGhhc2hUb2tlbixcbiAgbWludFRva2VuLFxuICBERUZBVUxUX1NIQVJFX0xJTktfVFRMX0RBWVMsXG4gIE1BWF9TSEFSRV9MSU5LX1RUTF9EQVlTLFxuICBNQVhfQk9VTkNFUyxcbiAgVkVSSUZJQ0FUSU9OX1RUTF9NUyxcbiAgdHlwZSBDcmVhdGVEZWZpbml0aW9uSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGVmaW5pdGlvbklucHV0LFxuICB0eXBlIE1pbnRlZFNoYXJlTGluayxcbiAgdHlwZSBSZXNvbHZlZFNoYXJlTGluayxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL3N0YWtlaG9sZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgUGx1Z2luUnVudGltZUZpbHRlcixcbiAgdHlwZSBQbHVnaW5SdW50aW1lU3RhdHMsXG4gIFJlcG9ydGluZ1NlcnZpY2UsXG4gIHJlcG9ydGluZ1NlcnZpY2UsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy1zZXJ2aWNlLmpzJztcblxuLy8gRmlsdGVyc1xuZXhwb3J0IHtcbiAgdHlwZSBQbHVnaW5GaWx0ZXIsXG4gIHR5cGUgUGlwZWxpbmVGaWx0ZXIsXG4gIHR5cGUgUGlwZWxpbmVUZW1wbGF0ZUZpbHRlcixcbiAgdHlwZSBNZXNzYWdlRmlsdGVyLFxuICB0eXBlIENvbXBsaWFuY2VQb2xpY3lGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVJ1bGVGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbkZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlQXVkaXRGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVNjYW5GaWx0ZXIsXG59IGZyb20gJy4vY29yZS9xdWVyeS1maWx0ZXJzLmpzJztcbiJdfQ==
@@ -2,7 +2,9 @@
2
2
  "package": "@pipeline-builder/pipeline-data",
3
3
  "entries": {
4
4
  ".": {
5
+ "acceptanceKey": "function",
5
6
  "AccessControlQueryBuilder": "class",
7
+ "activeAcceptances": "function",
6
8
  "addCaseNote": "function",
7
9
  "advisoriesCovering": "function",
8
10
  "advisoryRangeCovers": "function",
@@ -29,8 +31,10 @@
29
31
  "closeCases": "function",
30
32
  "closeConnection": "function",
31
33
  "closeFixedExposures": "function",
34
+ "closePipelineExposures": "function",
32
35
  "closePublicReader": "function",
33
36
  "closeReadConnection": "function",
37
+ "closeVersionExposures": "function",
34
38
  "COMMUNITY_PUBLISHER_HANDLE": "value",
35
39
  "compareSemver": "function",
36
40
  "compareSemverParts": "function",
@@ -59,6 +63,8 @@
59
63
  "dashboard": "value",
60
64
  "dashboardPanel": "value",
61
65
  "db": "value",
66
+ "declaredPipelinesForPlugin": "function",
67
+ "declaredResolution": "function",
62
68
  "DEFAULT_CONSUMPTION_POLICY": "value",
63
69
  "DEFAULT_SHARE_LINK_TTL_DAYS": "value",
64
70
  "DEFAULT_THRESHOLDS": "value",
@@ -68,6 +74,7 @@
68
74
  "designateSupportContact": "function",
69
75
  "DIRECTORY_SORTS": "value",
70
76
  "DIRECTORY_TIERS": "value",
77
+ "distinctPipelines": "function",
71
78
  "doraSettings": "value",
72
79
  "drizzleCount": "function",
73
80
  "drizzleListingSource": "function",
@@ -80,8 +87,11 @@
80
87
  "effectiveConsumptionPolicy": "function",
81
88
  "evaluateNeedsAttention": "function",
82
89
  "executeRows": "function",
90
+ "exposureById": "function",
91
+ "exposureFromScan": "function",
83
92
  "FAILURE_CATEGORY_LABELS": "value",
84
93
  "findCaseByThread": "function",
94
+ "findVersionReferences": "function",
85
95
  "getAdoption": "function",
86
96
  "getConnection": "function",
87
97
  "getFailureAnalysis": "function",
@@ -130,6 +140,7 @@
130
140
  "listPublicListingsForSitemap": "function",
131
141
  "listPublicReviews": "function",
132
142
  "listQueue": "function",
143
+ "liveExposurePredicate": "function",
133
144
  "loadOrgInstallContext": "function",
134
145
  "LOW_SAMPLE_THRESHOLD": "value",
135
146
  "MAX_BOUNCES": "value",
@@ -147,11 +158,15 @@
147
158
  "openSupportCase": "function",
148
159
  "orgAlertDestination": "value",
149
160
  "orgAlertRule": "value",
161
+ "orgImageDigestsInUse": "function",
150
162
  "orgListingStates": "function",
151
163
  "parseSemver": "function",
152
164
  "pipeline": "value",
153
165
  "pipelineEvent": "value",
166
+ "pipelineExposures": "function",
154
167
  "pipelineRegistry": "value",
168
+ "pipelinesOnVersion": "function",
169
+ "pipelineStepLookups": "function",
155
170
  "pipelineStepManifest": "value",
156
171
  "pipelineTemplate": "value",
157
172
  "plugin": "value",
@@ -159,6 +174,7 @@
159
174
  "pluginAdvisoryDelivery": "value",
160
175
  "pluginInstall": "value",
161
176
  "pluginInstallPolicy": "value",
177
+ "pluginKeptSetupImage": "value",
162
178
  "pluginListing": "value",
163
179
  "pluginListingVersion": "value",
164
180
  "pluginPublishRequest": "value",
@@ -182,10 +198,13 @@
182
198
  "QUEUE_STATUSES": "value",
183
199
  "rateCase": "function",
184
200
  "rebuildDay": "function",
201
+ "reconcilePipelineExposures": "function",
202
+ "recordStepLookup": "function",
185
203
  "refreshLatestForPlugin": "function",
186
204
  "registerSection": "function",
187
205
  "rejectUnreportablePeriod": "function",
188
206
  "renderReportHtml": "function",
207
+ "reopenLapsedAcceptances": "function",
189
208
  "replacePipelineResolution": "function",
190
209
  "REPORT_CADENCES": "value",
191
210
  "REPORT_FEATURE_SUBSTITUTES": "value",
@@ -227,10 +246,13 @@
227
246
  "setLagSampleForTests": "function",
228
247
  "setSupportContactPremium": "function",
229
248
  "softDeleteRetentionMs": "function",
249
+ "stageAndStep": "function",
230
250
  "stakeholderReportStore": "value",
231
251
  "StakeholderReportStore": "class",
232
252
  "stampFirstResponse": "function",
253
+ "stepLabelOf": "function",
233
254
  "SUPPORT_CASE_STATUSES": "value",
255
+ "syncVersionExposures": "function",
234
256
  "tenantContext": "value",
235
257
  "testConnection": "function",
236
258
  "thresholdsFrom": "function",
@@ -243,7 +265,9 @@
243
265
  "utcDayStart": "function",
244
266
  "VERIFICATION_TTL_MS": "value",
245
267
  "versionGap": "function",
268
+ "versionReferencedPredicate": "function",
246
269
  "viewerCacheSegment": "function",
270
+ "vulnUpgradeAvailableWarning": "function",
247
271
  "withTenantTx": "function",
248
272
  "withTenantTxRead": "function",
249
273
  "withViewerContext": "function"
package/package.json CHANGED
@@ -24,7 +24,7 @@
24
24
  "typescript": "npm:@typescript/typescript6@^6.0.2"
25
25
  },
26
26
  "dependencies": {
27
- "@pipeline-builder/api-core": "5.2.3",
27
+ "@pipeline-builder/api-core": "5.2.4",
28
28
  "drizzle-orm": "0.45.4",
29
29
  "pg": "8.23.1"
30
30
  },
@@ -83,9 +83,10 @@
83
83
  "homepage": "https://mwashburn160.github.io/pipeline-builder/",
84
84
  "publishConfig": {
85
85
  "access": "public",
86
- "registry": "https://registry.npmjs.org/"
86
+ "registry": "https://registry.npmjs.org/",
87
+ "provenance": true
87
88
  },
88
- "version": "4.3.3",
89
+ "version": "4.3.4",
89
90
  "bugs": {
90
91
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
91
92
  },