@pipeline-builder/api-core 5.2.11 → 5.2.12

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 (41) hide show
  1. package/lib/helpers/org-hierarchy-http.d.ts +3 -2
  2. package/lib/helpers/org-hierarchy-http.js +11 -5
  3. package/lib/middleware/index.d.ts +1 -1
  4. package/lib/middleware/index.js +2 -2
  5. package/lib/middleware/step-up.d.ts +4 -3
  6. package/lib/middleware/step-up.js +1 -1
  7. package/lib/services/index.d.ts +2 -2
  8. package/lib/services/index.js +2 -2
  9. package/lib/services/quota.d.ts +1 -2
  10. package/lib/services/quota.js +1 -1
  11. package/lib/services/version-vuln-policy.d.ts +1 -3
  12. package/lib/services/version-vuln-policy.js +2 -3
  13. package/lib/types/common.d.ts +13 -22
  14. package/lib/types/common.js +44 -5
  15. package/lib/types/ecosystem-notifications.d.ts +215 -24
  16. package/lib/types/ecosystem-notifications.js +18 -9
  17. package/lib/types/ecosystem.d.ts +1 -0
  18. package/lib/types/ecosystem.js +33 -23
  19. package/lib/types/feature-flags.d.ts +11 -4
  20. package/lib/types/feature-flags.js +51 -11
  21. package/lib/types/index.d.ts +1 -1
  22. package/lib/types/index.js +2 -2
  23. package/lib/types/permissions.d.ts +353 -22
  24. package/lib/types/permissions.js +257 -128
  25. package/lib/types/plugin-catalog.d.ts +25 -1
  26. package/lib/types/plugin-catalog.js +21 -2
  27. package/lib/types/quota-tiers.d.ts +6 -24
  28. package/lib/types/quota-tiers.js +6 -28
  29. package/lib/types/remote-audit-actions.d.ts +1 -1
  30. package/lib/types/remote-audit-actions.js +10 -1
  31. package/lib/types/tier-limits.d.ts +19 -0
  32. package/lib/types/tier-limits.js +27 -1
  33. package/lib/types/usage-projection.d.ts +0 -16
  34. package/lib/types/usage-projection.js +1 -20
  35. package/lib/types/wire-vocabulary.d.ts +81 -2
  36. package/lib/types/wire-vocabulary.js +89 -3
  37. package/lib/validation/index.d.ts +1 -1
  38. package/lib/validation/index.js +2 -2
  39. package/lib/validation/plugin-spec-schema.d.ts +0 -9
  40. package/lib/validation/plugin-spec-schema.js +2 -11
  41. package/package.json +8 -1
@@ -1,21 +1,65 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- /** All valid feature flags (order determines display order). */
4
- export const ALL_FEATURE_FLAGS = [
3
+ // Feature flag identifiers
4
+ /**
5
+ * Support level, one per response-time rung. Sold ONLY as per-contact add-on
6
+ * bundles and included in NO tier — not even enterprise, which is why
7
+ * `TIER_FEATURES` cannot simply spread `ALL_FEATURE_FLAGS` for it any more.
8
+ * These REPLACE the former `priority_support` tier perk, which marketed "faster
9
+ * response times" while no support product existed to be faster. Mutually
10
+ * exclusive: an account holds at most one (enforced in `effectiveEntitlements`).
11
+ *
12
+ * Its own type, and spelled ONCE — `FEATURE_FLAGS` spreads it rather than
13
+ * listing the three names again. A surface that must name EVERY level keys a
14
+ * `Record<SupportFeatureFlag, …>` off it (the frontend's level labels were a
15
+ * `Record<string, string>` that happened to carry three entries, so a fourth
16
+ * level would have rendered as the raw flag id), while the ladder list below
17
+ * stays `FeatureFlag[]` so it can be tested against the full catalog.
18
+ */
19
+ const SUPPORT_LEVELS = ['support_standard', 'support_priority', 'support_premium'];
20
+ /**
21
+ * Every feature flag, in display order. The {@link FeatureFlag} union is derived
22
+ * from this list, so a flag is added in exactly one place.
23
+ */
24
+ const FEATURE_FLAGS = [
5
25
  'ai_generation',
6
26
  'bulk_operations',
27
+ // `custom_integrations` is an ENTERPRISE-EXCLUSIVE marketing/entitlement flag:
28
+ // granted only by the enterprise tier (no add-on bundle sells it to a lower
29
+ // tier — intentional, it anchors the Enterprise plan) and not currently
30
+ // `requireFeature`-gated on any route. This is by design, not dead code — do
31
+ // not "fix" by wiring a bundle without a pricing decision. Contrast
32
+ // `sso`/`advanced_reporting`, which ARE sold as add-on bundles and gated (see
33
+ // billing-config `loadBundles` + `requireFeature`).
7
34
  'custom_integrations',
8
35
  'sso',
36
+ // DORA / advanced delivery analytics (paid tiers only).
9
37
  'advanced_reporting',
38
+ // Per-team usage breakdown across the org→team subtree. INCLUDED in Enterprise;
39
+ // sold as an add-on bundle to Pro/Team (see billing-config `team_usage_analytics`).
10
40
  'team_usage_analytics',
41
+ // Curated compliance rule libraries sold as add-on bundles. `compliance_standard`
42
+ // = CI/CD best-practice set; `compliance_advanced` = SOC2/PCI/CIS framework
43
+ // libraries (requires Standard). These gate SUBSCRIBING to the set's system-org
44
+ // published rules; INCLUDED in Enterprise/Unlimited (via ALL_FEATURE_FLAGS),
45
+ // sold to Developer/Pro/Team (see billing-config `compliance_standard/advanced`).
11
46
  'compliance_standard',
12
47
  'compliance_advanced',
48
+ // Scheduled, manager-facing reports: saved definitions, frozen snapshots,
49
+ // review-and-publish, PDF/email delivery and share links. INCLUDED in
50
+ // Enterprise/Unlimited; sold as an add-on bundle to Pro/Team (see
51
+ // billing-config `stakeholder_reports`). On-demand dashboards stay FREE under
52
+ // `reports:read` — this gates saving, scheduling and publishing, not looking.
13
53
  'stakeholder_reports',
54
+ // Plugin ecosystem: the org's publisher is ELIGIBLE to apply for Verified
55
+ // status (docs/plugin-publishing.md). Eligibility only — the badge
56
+ // is awarded (and withdrawn) by system-org review, never bought. Team and up;
57
+ // no add-on bundle sells it.
14
58
  'verified_publisher',
15
- 'support_standard',
16
- 'support_priority',
17
- 'support_premium',
59
+ ...SUPPORT_LEVELS,
18
60
  ];
61
+ /** All valid feature flags (order determines display order). */
62
+ export const ALL_FEATURE_FLAGS = FEATURE_FLAGS;
19
63
  /**
20
64
  * The support-level flags, which are add-on-ONLY at every tier.
21
65
  *
@@ -24,11 +68,7 @@ export const ALL_FEATURE_FLAGS = [
24
68
  * silently grant enterprise the support product it is supposed to buy, which is
25
69
  * exactly the "included in no tier" decision it would break.
26
70
  */
27
- export const SUPPORT_FEATURE_FLAGS = [
28
- 'support_standard',
29
- 'support_priority',
30
- 'support_premium',
31
- ];
71
+ export const SUPPORT_FEATURE_FLAGS = SUPPORT_LEVELS;
32
72
  /**
33
73
  * The FIRST-RESPONSE TARGET sold at each support level — the canonical wording.
34
74
  *
@@ -285,4 +325,4 @@ export function complianceFeatureForTags(tags) {
285
325
  }
286
326
  return null;
287
327
  }
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2ZlYXR1cmUtZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTZEdEMsZ0VBQWdFO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUEyQjtJQUN2RCxlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixLQUFLO0lBQ0wsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixpQkFBaUI7Q0FDbEIsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBMkI7SUFDM0Qsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixpQkFBaUI7Q0FDbEIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFDO0lBQ3hFLGdCQUFnQixFQUFFLGlCQUFpQjtJQUNuQyxnQkFBZ0IsRUFBRSxtQkFBbUI7SUFDckMsZUFBZSxFQUFFLGtCQUFrQjtDQUNwQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRWxGOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFNBQWlCLEVBQ2pCLEtBQW9CO0lBRXBCLElBQUksU0FBUyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNoRyxJQUFLLHNCQUE0QyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENB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R0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFBRSxPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcblxuLy8gRmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzXG5cbi8qKlxuICogU3VwcG9ydCBsZXZlbCwgb25lIHBlciByZXNwb25zZS10aW1lIHJ1bmcuIFNvbGQgT05MWSBhcyBwZXItY29udGFjdCBhZGQtb25cbiAqIGJ1bmRsZXMgYW5kIGluY2x1ZGVkIGluIE5PIHRpZXIg4oCUIG5vdCBldmVuIGVudGVycHJpc2UsIHdoaWNoIGlzIHdoeVxuICogYFRJRVJfRkVBVFVSRVNgIGNhbm5vdCBzaW1wbHkgc3ByZWFkIGBBTExfRkVBVFVSRV9GTEFHU2AgZm9yIGl0IGFueSBtb3JlLlxuICogVGhlc2UgUkVQTEFDRSB0aGUgZm9ybWVyIGBwcmlvcml0eV9zdXBwb3J0YCB0aWVyIHBlcmssIHdoaWNoIG1hcmtldGVkIFwiZmFzdGVyXG4gKiByZXNwb25zZSB0aW1lc1wiIHdoaWxlIG5vIHN1cHBvcnQgcHJvZHVjdCBleGlzdGVkIHRvIGJlIGZhc3Rlci4gTXV0dWFsbHlcbiAqIGV4Y2x1c2l2ZTogYW4gYWNjb3VudCBob2xkcyBhdCBtb3N0IG9uZSAoZW5mb3JjZWQgaW4gYGVmZmVjdGl2ZUVudGl0bGVtZW50c2ApLlxuICpcbiAqIEl0cyBvd24gdHlwZSwgYW5kIHNwZWxsZWQgT05DRSDigJQgYEZlYXR1cmVGbGFnYCBpbmNsdWRlcyBpdCByYXRoZXIgdGhhbiBsaXN0aW5nXG4gKiB0aGUgdGhyZWUgbmFtZXMgYWdhaW4uIEEgc3VyZmFjZSB0aGF0IG11c3QgbmFtZSBFVkVSWSBsZXZlbCBrZXlzIGFcbiAqIGBSZWNvcmQ8U3VwcG9ydEZlYXR1cmVGbGFnLCDigKY+YCBvZmYgaXQgKHRoZSBmcm9udGVuZCdzIGxldmVsIGxhYmVscyB3ZXJlIGFcbiAqIGBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+YCB0aGF0IGhhcHBlbmVkIHRvIGNhcnJ5IHRocmVlIGVudHJpZXMsIHNvIGEgZm91cnRoXG4gKiBsZXZlbCB3b3VsZCBoYXZlIHJlbmRlcmVkIGFzIHRoZSByYXcgZmxhZyBpZCksIHdoaWxlIHRoZSBsYWRkZXIgbGlzdCBiZWxvd1xuICogc3RheXMgYEZlYXR1cmVGbGFnW11gIHNvIGl0IGNhbiBiZSB0ZXN0ZWQgYWdhaW5zdCB0aGUgZnVsbCBjYXRhbG9nLlxuICovXG5leHBvcnQgdHlwZSBTdXBwb3J0RmVhdHVyZUZsYWcgPSAnc3VwcG9ydF9zdGFuZGFyZCcgfCAnc3VwcG9ydF9wcmlvcml0eScgfCAnc3VwcG9ydF9wcmVtaXVtJztcblxuLyoqIENhbm9uaWNhbCBmZWF0dXJlIGZsYWcgaWRlbnRpZmllcnMuICovXG5leHBvcnQgdHlwZSBGZWF0dXJlRmxhZyA9XG4gIC8vIGBjdXN0b21faW50ZWdyYXRpb25zYCBpcyBhbiBFTlRFUlBSSVNFLUVYQ0xVU0lWRSBtYXJrZXRpbmcvZW50aXRsZW1lbnQgZmxhZzpcbiAgLy8gZ3JhbnRlZCBvbmx5IGJ5IHRoZSBlbnRlcnByaXNlIHRpZXIgKG5vIGFkZC1vbiBidW5kbGUgc2VsbHMgaXQgdG8gYSBsb3dlclxuICAvLyB0aWVyIOKAlCBpbnRlbnRpb25hbCwgaXQgYW5jaG9ycyB0aGUgRW50ZXJwcmlzZSBwbGFuKSBhbmQgbm90IGN1cnJlbnRseVxuICAvLyBgcmVxdWlyZUZlYXR1cmVgLWdhdGVkIG9uIGFueSByb3V0ZS4gVGhpcyBpcyBieSBkZXNpZ24sIG5vdCBkZWFkIGNvZGUg4oCUIGRvXG4gIC8vIG5vdCBcImZpeFwiIGJ5IHdpcmluZyBhIGJ1bmRsZSB3aXRob3V0IGEgcHJpY2luZyBkZWNpc2lvbi4gQ29udHJhc3RcbiAgLy8gYHNzb2AvYGFkdmFuY2VkX3JlcG9ydGluZ2AsIHdoaWNoIEFSRSBzb2xkIGFzIGFkZC1vbiBidW5kbGVzIGFuZCBnYXRlZCAoc2VlXG4gIC8vIGJpbGxpbmctY29uZmlnIGBsb2FkQnVuZGxlc2AgKyBgcmVxdWlyZUZlYXR1cmVgKS5cbiAgfCAnY3VzdG9tX2ludGVncmF0aW9ucydcbiAgfCBTdXBwb3J0RmVhdHVyZUZsYWdcbiAgfCAnYWlfZ2VuZXJhdGlvbidcbiAgfCAnYnVsa19vcGVyYXRpb25zJ1xuICB8ICdzc28nXG4gIC8vIERPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MgKHBhaWQgdGllcnMgb25seSkuXG4gIHwgJ2FkdmFuY2VkX3JlcG9ydGluZydcbiAgLy8gUGVyLXRlYW0gdXNhZ2UgYnJlYWtkb3duIGFjcm9zcyB0aGUgb3Jn4oaSdGVhbSBzdWJ0cmVlLiBJTkNMVURFRCBpbiBFbnRlcnByaXNlO1xuICAvLyBzb2xkIGFzIGFuIGFkZC1vbiBidW5kbGUgdG8gUHJvL1RlYW0gKHNlZSBiaWxsaW5nLWNvbmZpZyBgdGVhbV91c2FnZV9hbmFseXRpY3NgKS5cbiAgfCAndGVhbV91c2FnZV9hbmFseXRpY3MnXG4gIC8vIEN1cmF0ZWQgY29tcGxpYW5jZSBydWxlIGxpYnJhcmllcyBzb2xkIGFzIGFkZC1vbiBidW5kbGVzLiBgY29tcGxpYW5jZV9zdGFuZGFyZGBcbiAgLy8gPSBDSS9DRCBiZXN0LXByYWN0aWNlIHNldDsgYGNvbXBsaWFuY2VfYWR2YW5jZWRgID0gU09DMi9QQ0kvQ0lTIGZyYW1ld29ya1xuICAvLyBsaWJyYXJpZXMgKHJlcXVpcmVzIFN0YW5kYXJkKS4gVGhlc2UgZ2F0ZSBTVUJTQ1JJQklORyB0byB0aGUgc2V0J3Mgc3lzdGVtLW9yZ1xuICAvLyBwdWJsaXNoZWQgcnVsZXM7IElOQ0xVREVEIGluIEVudGVycHJpc2UvVW5saW1pdGVkICh2aWEgQUxMX0ZFQVRVUkVfRkxBR1MpLFxuICAvLyBzb2xkIHRvIERldmVsb3Blci9Qcm8vVGVhbSAoc2VlIGJpbGxpbmctY29uZmlnIGBjb21wbGlhbmNlX3N0YW5kYXJkL2FkdmFuY2VkYCkuXG4gIHwgJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnXG4gIHwgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnXG4gIC8vIFNjaGVkdWxlZCwgbWFuYWdlci1mYWNpbmcgcmVwb3J0czogc2F2ZWQgZGVmaW5pdGlvbnMsIGZyb3plbiBzbmFwc2hvdHMsXG4gIC8vIHJldmlldy1hbmQtcHVibGlzaCwgUERGL2VtYWlsIGRlbGl2ZXJ5IGFuZCBzaGFyZSBsaW5rcy4gSU5DTFVERUQgaW5cbiAgLy8gRW50ZXJwcmlzZS9VbmxpbWl0ZWQ7IHNvbGQgYXMgYW4gYWRkLW9uIGJ1bmRsZSB0byBQcm8vVGVhbSAoc2VlXG4gIC8vIGJpbGxpbmctY29uZmlnIGBzdGFrZWhvbGRlcl9yZXBvcnRzYCkuIE9uLWRlbWFuZCBkYXNoYm9hcmRzIHN0YXkgRlJFRSB1bmRlclxuICAvLyBgcmVwb3J0czpyZWFkYCDigJQgdGhpcyBnYXRlcyBzYXZpbmcsIHNjaGVkdWxpbmcgYW5kIHB1Ymxpc2hpbmcsIG5vdCBsb29raW5nLlxuICB8ICdzdGFrZWhvbGRlcl9yZXBvcnRzJ1xuICAvLyBQbHVnaW4gZWNvc3lzdGVtOiB0aGUgb3JnJ3MgcHVibGlzaGVyIGlzIEVMSUdJQkxFIHRvIGFwcGx5IGZvciBWZXJpZmllZFxuICAvLyBzdGF0dXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBFbGlnaWJpbGl0eSBvbmx5IOKAlCB0aGUgYmFkZ2VcbiAgLy8gaXMgYXdhcmRlZCAoYW5kIHdpdGhkcmF3bikgYnkgc3lzdGVtLW9yZyByZXZpZXcsIG5ldmVyIGJvdWdodC4gVGVhbSBhbmQgdXA7XG4gIC8vIG5vIGFkZC1vbiBidW5kbGUgc2VsbHMgaXQuXG4gIHwgJ3ZlcmlmaWVkX3B1Ymxpc2hlcic7XG5cbi8qKiBBbGwgdmFsaWQgZmVhdHVyZSBmbGFncyAob3JkZXIgZGV0ZXJtaW5lcyBkaXNwbGF5IG9yZGVyKS4gKi9cbmV4cG9ydCBjb25zdCBBTExfRkVBVFVSRV9GTEFHUzogcmVhZG9ubHkgRmVhdHVyZUZsYWdbXSA9IFtcbiAgJ2FpX2dlbmVyYXRpb24nLFxuICAnYnVsa19vcGVyYXRpb25zJyxcbiAgJ2N1c3RvbV9pbnRlZ3JhdGlvbnMnLFxuICAnc3NvJyxcbiAgJ2FkdmFuY2VkX3JlcG9ydGluZycsXG4gICd0ZWFtX3VzYWdlX2FuYWx5dGljcycsXG4gICdjb21wbGlhbmNlX3N0YW5kYXJkJyxcbiAgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnLFxuICAnc3Rha2Vob2xkZXJfcmVwb3J0cycsXG4gICd2ZXJpZmllZF9wdWJsaXNoZXInLFxuICAnc3VwcG9ydF9zdGFuZGFyZCcsXG4gICdzdXBwb3J0X3ByaW9yaXR5JyxcbiAgJ3N1cHBvcnRfcHJlbWl1bScsXG5dO1xuXG4vKipcbiAqIFRoZSBzdXBwb3J0LWxldmVsIGZsYWdzLCB3aGljaCBhcmUgYWRkLW9uLU9OTFkgYXQgZXZlcnkgdGllci5cbiAqXG4gKiBOZWVkZWQgYXMgaXRzIG93biBsaXN0IGJlY2F1c2UgYFRJRVJfRkVBVFVSRVMuZW50ZXJwcmlzZWAgc3ByZWFkc1xuICogYEFMTF9GRUFUVVJFX0ZMQUdTYDogd2l0aG91dCBleGNsdWRpbmcgdGhlc2UsIGFkZGluZyBhIHN1cHBvcnQgZmxhZyB3b3VsZFxuICogc2lsZW50bHkgZ3JhbnQgZW50ZXJwcmlzZSB0aGUgc3VwcG9ydCBwcm9kdWN0IGl0IGlzIHN1cHBvc2VkIHRvIGJ1eSwgd2hpY2ggaXNcbiAqIGV4YWN0bHkgdGhlIFwiaW5jbHVkZWQgaW4gbm8gdGllclwiIGRlY2lzaW9uIGl0IHdvdWxkIGJyZWFrLlxuICovXG5leHBvcnQgY29uc3QgU1VQUE9SVF9GRUFUVVJFX0ZMQUdTOiByZWFkb25seSBGZWF0dXJlRmxhZ1tdID0gW1xuICAnc3VwcG9ydF9zdGFuZGFyZCcsXG4gICdzdXBwb3J0X3ByaW9yaXR5JyxcbiAgJ3N1cHBvcnRfcHJlbWl1bScsXG5dO1xuXG4vKipcbiAqIFRoZSBGSVJTVC1SRVNQT05TRSBUQVJHRVQgc29sZCBhdCBlYWNoIHN1cHBvcnQgbGV2ZWwg4oCUIHRoZSBjYW5vbmljYWwgd29yZGluZy5cbiAqXG4gKiBPbmUgcGxhY2UsIGJlY2F1c2UgdGhpcyBzdHJpbmcgaXMgYSBjb21taXRtZW50OiBpdCBpcyBzaG93biBvbiB0aGUgY2FzZSwgaW5cbiAqIHRoZSBhZGQtb24gY2F0YWxvZywgb24gdGhlIHByaWNpbmcgcGFnZSBhbmQgaW4gdGhlIGFsZXJ0IHRoYXQgZmlyZXMgd2hlbiB0aGVcbiAqIGRlc2sgbWlzc2VzIGl0LCBhbmQgdGhvc2UgZm91ciBtdXN0IG5ldmVyIGRpc2FncmVlLiBBIGxldmVsIGFic2VudCBmcm9tIHRoaXNcbiAqIG1hcCBoYXMgbm8gc3RhdGVkIHRhcmdldCBhbmQgY2FsbGVycyBtdXN0IG9taXQgdGhlIHBocmFzZSByYXRoZXIgdGhhbiBib3Jyb3dcbiAqIGFub3RoZXIgbGV2ZWwncyBwcm9taXNlLlxuICpcbiAqIFdIWSBUSEVTRSBVTklUUy4gQW4gZWFybGllciBsYWRkZXIgcmVhZCBcIjQ4IGJ1c2luZXNzIGhvdXJzIC8gMjQgYnVzaW5lc3NcbiAqIGhvdXJzIC8gbm8gc3RhdGVkIG51bWJlclwiLCB3aGljaCB3YXMgd3JvbmcgdHdpY2Ugb3Zlci4gVGhlIGJ1c2luZXNzLWhvdXJzXG4gKiB1bml0IGZsYXR0ZXJlZCB0aGUgdGFyZ2V0cyBieSByb3VnaGx5IHRocmVlIHRpbWVzIOKAlCA0OCBidXNpbmVzcyBob3VycyBpcyBzaXhcbiAqIHdvcmtpbmcgZGF5cywgc28gYSBjYXNlIHJhaXNlZCBvbiBhIEZyaWRheSBldmVuaW5nIGhhZCBpdHMgdGFyZ2V0IGV4cGlyZSB0aGVcbiAqICpmb2xsb3dpbmcgTW9uZGF5KiDigJQgYW5kIHRoZSB0b3AgbGV2ZWwsIHRoZSBvbmUgdGhhdCBjb3N0cyB0aGUgbW9zdCwgd2FzIHRoZVxuICogb25seSBvbmUgd2l0aCBubyBudW1iZXIgYXQgYWxsLCBzbyB0aGUgbGFkZGVyIHdlbnQgYmxhbmsgb24gdGhlIHNpbmdsZSBheGlzIGFcbiAqIGJ1eWVyIGNvbXBhcmVzLiBUaGUgdGFyZ2V0cyBiZWxvdyBhcmUgc3RhdGVkIGluIHVuaXRzIHRoZSBjdXN0b21lciBhY3R1YWxseVxuICogZXhwZXJpZW5jZXMgYW5kIGltcHJvdmUgbW9ub3RvbmljYWxseSBvbiBvbmUgY2xvY2s6IHR3byBidXNpbmVzcyBkYXlzLCB0aGVuXG4gKiBvbmUsIHRoZW4gZWlnaHQgaG91cnMgb24gYSBjbG9jayB0aGF0IGRvZXMgbm90IHN0b3AgZm9yIG5pZ2h0cyBvciB3ZWVrZW5kcy5cbiAqXG4gKiBQcmVtaXVtJ3MgXCJhbnkgZGF5XCIgaXMgdGhlIHdob2xlIG9mIGl0cyAyNMOXNyBjb3ZlcmFnZSBjbGFpbSwgYW5kIGl0IGlzXG4gKiBkZWxpYmVyYXRlbHkgTk9UIGEgc2V2ZXJpdHktZGVwZW5kZW50IG9uZS1ob3VyIHByb21pc2UuIEVpZ2h0IGhvdXJzIGlzIHdoYXQgYVxuICogcm90YSBjYW4gYmUgaGVsZCB0bzogaXQgbGVhdmVzIHJvb20gZm9yIHRoZSBwZXItY2FzZSBzd2VlcCB0byBwYWdlIHR3byBob3Vyc1xuICogYWhlYWQgb2YgdGhlIGRlYWRsaW5lIChzZWUgZG9jcy9vbmNhbGwtcGFnaW5nLm1kKSBhbmQgZm9yIGEgd29rZW4gaHVtYW4gdG9cbiAqIHJlYWQgdGhlIGNhc2UgYW5kIGFuc3dlciBpdC4gQW4gaG91ci1zY2FsZSBjb21taXRtZW50IHdvdWxkIHNwZW5kIHRoYXQgbWFyZ2luXG4gKiBiZWZvcmUgYW55b25lIHBpY2tlZCB1cCB0aGUgcGhvbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JUX1JFU1BPTlNFX1RBUkdFVFM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBzdXBwb3J0X3N0YW5kYXJkOiAnMiBidXNpbmVzcyBkYXlzJyxcbiAgc3VwcG9ydF9wcmlvcml0eTogJ25leHQgYnVzaW5lc3MgZGF5JyxcbiAgc3VwcG9ydF9wcmVtaXVtOiAnOCBob3VycywgYW55IGRheScsXG59O1xuXG4vKipcbiAqIFN1cHBvcnQgbGV2ZWxzIHdob3NlIGNvbnRhY3RzIG1heSBkZWNsYXJlIGB1cmdlbnRgIHNldmVyaXR5IHdoZW4gb3BlbmluZy5cbiAqXG4gKiBQcmVtaXVtIG9ubHksIGFuZCB0aGlzIGlzIGEgUFJJQ0lORyBkZWNpc2lvbiByYXRoZXIgdGhhbiBhIHBlcm1pc3Npb24gZGV0YWlsLlxuICogVGhlIHRlbmFudCBjaG9vc2VzIHNldmVyaXR5IGF0IG9wZW4gYW5kIHNldmVyaXR5IGRlY2lkZXMgd2hpY2ggdGFyZ2V0IGFwcGxpZXMsXG4gKiBzbyBhIGxldmVsIHRoYXQgY2FuIGRlY2xhcmUgYHVyZ2VudGAgaXMgYSBsZXZlbCB0aGF0IGNhbiBoZWxwIGl0c2VsZiB0byB0aGVcbiAqIGZhc3Rlc3QgcmVzcG9uc2Ugb24gb2ZmZXIuIEFkbWl0dGluZyBpdCBvbmx5IGF0IHByZW1pdW0gaXMgd2hhdCBtYWtlcyB0aGUgdG9wXG4gKiBydW5nIGEgY2FwYWJpbGl0eSDigJQgXCJ5b3UgY2FuIGRlY2xhcmUgYW4gZW1lcmdlbmN5XCIg4oCUIGluc3RlYWQgb2Ygbm90aGluZyBidXQgYVxuICogZmFzdGVyIGNsb2NrLCB3aGljaCBpcyB0aGUgd2hvbGUgcmVhc29uIHRoZSBwcmlvcml0eS10by1wcmVtaXVtIHN0ZXAgaXMgd29ydGhcbiAqIGl0cyBwcmljZS5cbiAqXG4gKiBTdGFmZiByZS1yYW5raW5nIChgc3VwcG9ydC5jYXNlLnNldmVyaXR5YCwgc3lzdGVtLWFkbWluIG9ubHkpIHN0YXlzIHRoZSBlc2NhcGVcbiAqIGhhdGNoOiBhIGdlbnVpbmUgZW1lcmdlbmN5IHJhaXNlZCBvbiBhIGxvd2VyIGxldmVsIGlzIE9VUlMgdG8gcHJvbW90ZSwgd2hpY2hcbiAqIGlzIHRoZSBzYW1lIGdvdmVybmFuY2Ugc3BsaXQgdGhhdCBrZWVwcyB0aGUgdGVuYW50IGZyb20gcmUtcmFua2luZyBhZnRlciBvcGVuLlxuICovXG5leHBvcnQgY29uc3QgVVJHRU5UX1NFVkVSSVRZX0xFVkVMUzogcmVhZG9ubHkgRmVhdHVyZUZsYWdbXSA9IFsnc3VwcG9ydF9wcmVtaXVtJ107XG5cbi8qKlxuICogVGhlIHNldmVyaXR5IGEgY2FzZSBtYXkgYWN0dWFsbHkgYmUgb3BlbmVkIGF0LlxuICpcbiAqIFJldHVybnMgdGhlIHJlcXVlc3RlZCBzZXZlcml0eSB1bmNoYW5nZWQsIG9yIHRoZSBoaWdoZXN0IG9uZSB0aGUgbGV2ZWwgYWRtaXRzLlxuICogYHVyZ2VudGAgYXNrZWQgZm9yIGJlbG93IHByZW1pdW0gYmVjb21lcyBgaGlnaGAg4oCUIGEgRE9XTkdSQURFLCBuZXZlciBhXG4gKiByZWZ1c2FsOiBkZWNsaW5pbmcgdG8gc2VuZCBhIHN1cHBvcnQgbWVzc2FnZSBiZWNhdXNlIHRoZSBzZW5kZXIgb3Zlci1zdGF0ZWRcbiAqIGl0cyBzZXZlcml0eSB3b3VsZCBkZW55IHN1cHBvcnQgb3ZlciBhIGxhYmVsLCBhbmQgdGhlIG1lc3NhZ2UgaXRzZWxmIGlzIG5ldmVyXG4gKiB0aGUgdGhpbmcgYmVpbmcgZ2F0ZWQuIFRoZSBjYWxsZXIgdGVsbHMgdGhlIHNlbmRlciBpdCBoYXBwZW5lZC5cbiAqXG4gKiBBIG51bGwgYGxldmVsYCBtZWFucyBubyBjYXNlIGlzIGJlaW5nIG9wZW5lZCAobm8gZW50aXRsZW1lbnQsIG9yIHRoZVxuICogZW50aXRsZW1lbnQgcmVhZCB3YXMgdW5hdmFpbGFibGUpLCBhbmQgdGhlbiB0aGVyZSBpcyBubyBjb21taXRtZW50IHRvIHByb3RlY3QsXG4gKiBzbyB0aGUgcmVxdWVzdGVkIHZhbHVlIHBhc3NlcyB0aHJvdWdoIHVudG91Y2hlZCByYXRoZXIgdGhhbiBiZWluZyBkZW1vdGVkIGZvclxuICogbm8gcmVhc29uIGR1cmluZyBhbiBvdXRhZ2Ugb2Ygb3Vycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkbWl0Q2FzZVNldmVyaXR5KFxuICByZXF1ZXN0ZWQ6IHN0cmluZyxcbiAgbGV2ZWw6IHN0cmluZyB8IG51bGwsXG4pOiB7IHNldmVyaXR5OiBzdHJpbmc7IGRvd25ncmFkZWQ6IGJvb2xlYW4gfSB7XG4gIGlmIChyZXF1ZXN0ZWQgIT09ICd1cmdlbnQnIHx8IGxldmVsID09PSBudWxsKSByZXR1cm4geyBzZXZlcml0eTogcmVxdWVzdGVkLCBkb3duZ3JhZGVkOiBmYWxzZSB9O1xuICBpZiAoKFVSR0VOVF9TRVZFUklUWV9MRVZFTFMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKGxldmVsKSkge1xuICAgIHJldHVybiB7IHNldmVyaXR5OiByZXF1ZXN0ZWQsIGRvd25ncmFkZWQ6IGZhbHNlIH07XG4gIH1cbiAgcmV0dXJuIHsgc2V2ZXJpdHk6ICdoaWdoJywgZG93bmdyYWRlZDogdHJ1ZSB9O1xufVxuXG4vKiogQ2hlY2sgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEZlYXR1cmVGbGFnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRGZWF0dXJlRmxhZyh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRmVhdHVyZUZsYWcge1xuICByZXR1cm4gKEFMTF9GRUFUVVJFX0ZMQUdTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh2YWx1ZSk7XG59XG5cbi8vIFRpZXItdG8tZmVhdHVyZSBtYXBwaW5nXG5cbi8qKiBGZWF0dXJlcyBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIGVhY2ggdGllci4gKi9cbmV4cG9ydCBjb25zdCBUSUVSX0ZFQVRVUkVTOiBSZWNvcmQ8UXVvdGFUaWVyLCByZWFkb25seSBGZWF0dXJlRmxhZ1tdPiA9IHtcbiAgLy8gRGV2ZWxvcGVyIGdldHMgYGFpX2dlbmVyYXRpb25gIGFzIGEgVFJJQUw6IHRoZSB0aWVyJ3MgMjAgYGFpQ2FsbHNgIHBlclxuICAvLyBwZXJpb2QgKFFVT1RBX1RJRVJTLmRldmVsb3BlcikgaXMgdGhlIHRyaWFsJ3MgY2FwLCBzbyB0aGUgQUkgc3VyZmFjZXMgYXJlXG4gIC8vIHVzYWJsZSDigJQgbm90IGp1c3QgcHJldmlld2VkIOKAlCBiZWZvcmUgYW4gdXBncmFkZS4gQSBCWU9LIGtleSBzcGVuZHMgbm8gc2xvdC5cbiAgZGV2ZWxvcGVyOiBbJ2FpX2dlbmVyYXRpb24nXSxcbiAgcHJvOiBbJ2FpX2dlbmVyYXRpb24nLCAnYnVsa19vcGVyYXRpb25zJ10sXG4gIC8vIFRlYW0gYWRkcyBzc28gKFNTTy9JZFAgaXMgSU5DTFVERUQgaW4gVGVhbSwgbm90IGFuIGFkZC1vbikuIGFkdmFuY2VkX3JlcG9ydGluZ1xuICAvLyAoRE9SQSkgaXMgTk9UIGEgVGVhbSB0aWVyIGZlYXR1cmUg4oCUIGl0J3MgSU5DTFVERUQgb25seSBpbiBFbnRlcnByaXNlIGFuZCBzb2xkXG4gIC8vIGFzIGFuIGFkZC1vbiBidW5kbGUgdG8gZXZlcnkgb3RoZXIgdGllciAoc2VlIGJpbGxpbmctY29uZmlnXG4gIC8vIGBhZHZhbmNlZF9yZXBvcnRpbmdgKS4gRW50ZXJwcmlzZSB1bmxvY2tzIGFsbC5cbiAgLy8gYHZlcmlmaWVkX3B1Ymxpc2hlcmAgKGVsaWdpYmlsaXR5IHRvIGFwcGx5IGZvciBWZXJpZmllZCkgc3RhcnRzIGF0IFRlYW0uXG4gIHRlYW06IFsnYWlfZ2VuZXJhdGlvbicsICdidWxrX29wZXJhdGlvbnMnLCAnc3NvJywgJ3ZlcmlmaWVkX3B1Ymxpc2hlciddLFxuICAvLyBCdXNpbmVzcyBpcyBUZWFtIHBsdXMgYWR2YW5jZWRfcmVwb3J0aW5nIChET1JBKTogdGhlIGFuYWx5dGljcyBzdXJmYWNlIGlzXG4gIC8vIHdoYXQgYSA4LXNlYXQgb3JnIGlzIHVzdWFsbHkgYnV5aW5nLCBhbmQgYnVuZGxpbmcgaXQgaXMgbW9zdCBvZiB3aHkgdGhlIHRpZXJcbiAgLy8gaXMgd29ydGggJDI0OSBvdmVyIFRlYW0gKyB0aGUgYWRkLW9uLiBFbnRlcnByaXNlIGtlZXBzIGN1c3RvbV9pbnRlZ3JhdGlvbnMsXG4gIC8vIHRlYW1fdXNhZ2VfYW5hbHl0aWNzLCB0aGUgY29tcGxpYW5jZSBsaWJyYXJpZXMgYW5kIHN0YWtlaG9sZGVyX3JlcG9ydHMgYXNcbiAgLy8gaXRzIG93biBkaWZmZXJlbnRpYXRvcnMuXG4gIGJ1c2luZXNzOiBbJ2FpX2dlbmVyYXRpb24nLCAnYnVsa19vcGVyYXRpb25zJywgJ3NzbycsICd2ZXJpZmllZF9wdWJsaXNoZXInLCAnYWR2YW5jZWRfcmVwb3J0aW5nJ10sXG4gIC8vIEVudGVycHJpc2UgaXMgYW4gRVhQTElDSVQgbGlzdCwgZGVsaWJlcmF0ZWx5IG5vdCBgWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXWAuXG4gIC8vXG4gIC8vIFNwcmVhZGluZyBldmVyeSBmbGFnIGhlcmUgaXMgaG93IGEgbmV3IHBhaWQgYWRkLW9uIHNpbGVudGx5IGJlY29tZXMgYW5cbiAgLy8gRW50ZXJwcmlzZSBpbmNsdXNpb246IGFkZGluZyBgc3VwcG9ydF9wcmVtaXVtYCB0byB0aGUgY2F0YWxvZyB3b3VsZCBoYXZlXG4gIC8vIGdyYW50ZWQgZW50ZXJwcmlzZSB0aGUgMjTDlzcgc3VwcG9ydCBpdCBpcyBzdXBwb3NlZCB0byBCVVksIHdpdGggbm90aGluZ1xuICAvLyBmYWlsaW5nLiBMaXN0aW5nIHRoZSBmbGFncyBmb3JjZXMgdGhlIHF1ZXN0aW9uIFwiZG9lcyBFbnRlcnByaXNlIGluY2x1ZGVcbiAgLy8gdGhpcz9cIiB0byBiZSBhbnN3ZXJlZCBwZXIgZmxhZywgd2hpY2ggaXMgdGhlIGRlY2lzaW9uIHRoaXMgcmVjb3JkIGV4aXN0cyB0b1xuICAvLyBjYXJyeS4gQSBmaWx0ZXIgZXhwcmVzc2lvbiB3b3VsZCBkbyB0aGUgc2FtZSBqb2IgYnV0IGNhbm5vdCBiZSByZWFkIGJ5IHRoZVxuICAvLyBzb3VyY2UtcGFyc2luZyBwYXJpdHkgdGVzdHMgKGBmcm9udGVuZC90ZXN0L2ZlYXR1cmUtZ2F0ZS11cHNlbGwudGVzdC50c2BcbiAgLy8gZXh0cmFjdHMgYW4gYXJyYXkgbGl0ZXJhbCksIHNvIGFuIGV4cGxpY2l0IGxpc3QgaXQgaXMuXG4gIC8vXG4gIC8vIFN1cHBvcnQgaXMgYWJzZW50IG9uIHB1cnBvc2U6IGl0IGlzIGFuIGFkZC1vbiBhdCBFVkVSWSB0aWVyLCBpbmNsdWRlZCBpbiBub25lLlxuICBlbnRlcnByaXNlOiBbXG4gICAgJ2FpX2dlbmVyYXRpb24nLFxuICAgICdidWxrX29wZXJhdGlvbnMnLFxuICAgICdjdXN0b21faW50ZWdyYXRpb25zJyxcbiAgICAnc3NvJyxcbiAgICAnYWR2YW5jZWRfcmVwb3J0aW5nJyxcbiAgICAndGVhbV91c2FnZV9hbmFseXRpY3MnLFxuICAgICdjb21wbGlhbmNlX3N0YW5kYXJkJyxcbiAgICAnY29tcGxpYW5jZV9hZHZhbmNlZCcsXG4gICAgJ3N0YWtlaG9sZGVyX3JlcG9ydHMnLFxuICAgICd2ZXJpZmllZF9wdWJsaXNoZXInLFxuICBdLFxuICAvLyBVbmxpbWl0ZWQgaW5jbHVkZXMgZXZlcnkgZmVhdHVyZSAvIGFkZC1vbiBidW5kbGUgKGJpbGxpbmctZGlzYWJsZWQgZGVmYXVsdCkuXG4gIC8vIFN1cHBvcnQgaW5jbHVkZWQgaGVyZSBvbiBwdXJwb3NlOiBgdW5saW1pdGVkYCBpcyB0aGUgYmlsbGluZy1PRkYgdGllciwgd2hlcmVcbiAgLy8gbm90aGluZyBpcyBwdXJjaGFzYWJsZSwgYW5kIGl0cyBgc3VwcG9ydENvbnRhY3RzYCBsaW1pdCBpcyAtMSB0byBtYXRjaC5cbiAgdW5saW1pdGVkOiBbLi4uQUxMX0ZFQVRVUkVfRkxBR1NdLFxufTtcblxuLy8gRmVhdHVyZSBtZXRhZGF0YSAoZm9yIGRpc3BsYXkpXG5cbi8qKiBIdW1hbi1yZWFkYWJsZSBtZXRhZGF0YSBmb3IgZWFjaCBmZWF0dXJlIGZsYWcuICovXG5leHBvcnQgY29uc3QgRkVBVFVSRV9NRVRBREFUQTogUmVjb3JkPEZlYXR1cmVGbGFnLCB7IGxhYmVsOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfT4gPSB7XG4gIGFpX2dlbmVyYXRpb246IHtcbiAgICBsYWJlbDogJ0FJIEdlbmVyYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnQUktcG93ZXJlZCBwaXBlbGluZSBhbmQgcGx1Z2luIGdlbmVyYXRpb24nLFxuICB9LFxuICBidWxrX29wZXJhdGlvbnM6IHtcbiAgICBsYWJlbDogJ0J1bGsgT3BlcmF0aW9ucycsXG4gICAgZGVzY3JpcHRpb246ICdCYXRjaCBjcmVhdGUsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBmb3IgcGlwZWxpbmVzIGFuZCBwbHVnaW5zJyxcbiAgfSxcbiAgY3VzdG9tX2ludGVncmF0aW9uczoge1xuICAgIGxhYmVsOiAnQ3VzdG9tIEludGVncmF0aW9ucycsXG4gICAgZGVzY3JpcHRpb246ICdDb25uZWN0IHRvIGV4dGVybmFsIHNlcnZpY2VzIGFuZCBjdXN0b20gd2ViaG9vayBlbmRwb2ludHMnLFxuICB9LFxuICBzc286IHtcbiAgICBsYWJlbDogJ1NTTyAvIElkUCcsXG4gICAgZGVzY3JpcHRpb246ICdTaW5nbGUgc2lnbi1vbiBhbmQgZXh0ZXJuYWwgaWRlbnRpdHktcHJvdmlkZXIgY29uZmlndXJhdGlvbnMnLFxuICB9LFxuICBhZHZhbmNlZF9yZXBvcnRpbmc6IHtcbiAgICBsYWJlbDogJ0FkdmFuY2VkIFJlcG9ydGluZycsXG4gICAgZGVzY3JpcHRpb246ICdET1JBIC8gYWR2YW5jZWQgZGVsaXZlcnkgYW5hbHl0aWNzJyxcbiAgfSxcbiAgdGVhbV91c2FnZV9hbmFseXRpY3M6IHtcbiAgICBsYWJlbDogJ1RlYW0gVXNhZ2UgQW5hbHl0aWNzJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Blci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlJyxcbiAgfSxcbiAgY29tcGxpYW5jZV9zdGFuZGFyZDoge1xuICAgIGxhYmVsOiAnU3RhbmRhcmQgQ29tcGxpYW5jZScsXG4gICAgZGVzY3JpcHRpb246ICdDdXJhdGVkIENJL0NEIGJlc3QtcHJhY3RpY2UgY29tcGxpYW5jZSBydWxlIGxpYnJhcnknLFxuICB9LFxuICBjb21wbGlhbmNlX2FkdmFuY2VkOiB7XG4gICAgbGFiZWw6ICdBZHZhbmNlZCBDb21wbGlhbmNlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0N1cmF0ZWQgZnJhbWV3b3JrIGNvbXBsaWFuY2UgbGlicmFyaWVzIChTT0MyIC8gUENJLURTUyAvIENJUyknLFxuICB9LFxuICBzdGFrZWhvbGRlcl9yZXBvcnRzOiB7XG4gICAgbGFiZWw6ICdTdGFrZWhvbGRlciBSZXBvcnRzJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlZCB0ZWFtIHJlcG9ydHMgZm9yIG1hbmFnZXJzIOKAlCBzbmFwc2hvdHMsIHJldmlldyBhbmQgcHVibGlzaCwgUERGL2VtYWlsIGRlbGl2ZXJ5IGFuZCBzaGFyZSBsaW5rcycsXG4gIH0sXG4gIHN1cHBvcnRfc3RhbmRhcmQ6IHtcbiAgICBsYWJlbDogJ1N0YW5kYXJkIFN1cHBvcnQnLFxuICAgIGRlc2NyaXB0aW9uOiBgU3VwcG9ydCBjYXNlcyB3aXRoIGEgZmlyc3QgcmVzcG9uc2Ugd2l0aGluICR7U1VQUE9SVF9SRVNQT05TRV9UQVJHRVRTLnN1cHBvcnRfc3RhbmRhcmR9LCBidXNpbmVzcyBob3Vyc2AsXG4gIH0sXG4gIHN1cHBvcnRfcHJpb3JpdHk6IHtcbiAgICBsYWJlbDogJ1ByaW9yaXR5IFN1cHBvcnQnLFxuICAgIGRlc2NyaXB0aW9uOiBgU3VwcG9ydCBjYXNlcyB3aXRoIGEgZmlyc3QgcmVzcG9uc2UgYnkgdGhlICR7U1VQUE9SVF9SRVNQT05TRV9UQVJHRVRTLnN1cHBvcnRfcHJpb3JpdHl9LCBidXNpbmVzcyBob3Vyc2AsXG4gIH0sXG4gIHN1cHBvcnRfcHJlbWl1bToge1xuICAgIGxhYmVsOiAnUHJlbWl1bSBTdXBwb3J0JyxcbiAgICBkZXNjcmlwdGlvbjogYDI0w5c3IHN1cHBvcnQgY2FzZXMg4oCUIGZpcnN0IHJlc3BvbnNlIHdpdGhpbiAke1NVUFBPUlRfUkVTUE9OU0VfVEFSR0VUUy5zdXBwb3J0X3ByZW1pdW19IG9mIHRoZSB3ZWVrLCBhbmQgdGhlIG9ubHkgbGV2ZWwgdGhhdCBtYXkgZGVjbGFyZSB1cmdlbnQgc2V2ZXJpdHlgLFxuICB9LFxuICB2ZXJpZmllZF9wdWJsaXNoZXI6IHtcbiAgICBsYWJlbDogJ1ZlcmlmaWVkIFB1Ymxpc2hlciBFbGlnaWJpbGl0eScsXG4gICAgZGVzY3JpcHRpb246ICdBcHBseSBmb3IgdGhlIFZlcmlmaWVkIGJhZGdlIG9uIHlvdXIgcGx1Z2luLWVjb3N5c3RlbSBwdWJsaXNoZXIgKGF3YXJkZWQgYnkgc3lzdGVtLW9yZyByZXZpZXcpJyxcbiAgfSxcbn07XG5cbi8vIFJlc29sdXRpb24gbG9naWNcblxuLyoqXG4gKiBSZXNvbHZlIGEgdXNlcidzIGVmZmVjdGl2ZSBmZWF0dXJlIHNldC5cbiAqXG4gKiAxLiBTeXNhZG1pbnMgKGlzU3VwZXJBZG1pbikgYWx3YXlzIGdldCBBTEwgZmVhdHVyZXMuXG4gKiAyLiBTdGFydCB3aXRoIHRoZSB0aWVyJ3MgZGVmYXVsdCBmZWF0dXJlcy5cbiAqIDMuIEFwcGx5IHBlci11c2VyIG92ZXJyaWRlczogYHRydWVgIGFkZHMgYSBmZWF0dXJlLCBgZmFsc2VgIHJlbW92ZXMgaXQuXG4gKiA0LiBJbnZhbGlkIG92ZXJyaWRlIGtleXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gKlxuICogQHBhcmFtIHRpZXIgLSBUaGUgb3JnYW5pemF0aW9uJ3MgcXVvdGEgdGllclxuICogQHBhcmFtIG9wdHMgLSBSZXNvbHV0aW9uIG9wdGlvbnM6XG4gKiAgIC0gYG92ZXJyaWRlc2A6IHBlci11c2VyIG92ZXJyaWRlcyAoa2V5ID0gZmVhdHVyZSBmbGFnLCB2YWx1ZSA9IGVuYWJsZWQpXG4gKiAgIC0gYGlzU3VwZXJBZG1pbmA6IHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRoZSBnbG9iYWwgc3VwZXItYWRtaW4gZmxhZ1xuICogICAtIGBhY2NvdW50RmVhdHVyZXNgOiBhY2NvdW50LWxldmVsIGVudGl0bGVtZW50cyAoZS5nLiBwdXJjaGFzZWQgYWRkLW9uXG4gKiAgICAgYnVuZGxlcykuIEEgTkFNRUQgZmllbGQgc28gaXQgY2FuIG5ldmVyIGJlIHNpbGVudGx5IGRyb3BwZWQgYnkgYSBjYWxsZXJcbiAqICAgICB0aGF0IG9taXRzIGEgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmcuXG4gKiBAcmV0dXJucyBTb3J0ZWQgYXJyYXkgb2YgZW5hYmxlZCBmZWF0dXJlIGZsYWdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXNlckZlYXR1cmVzKFxuICB0aWVyOiBRdW90YVRpZXIsXG4gIG9wdHM/OiB7XG4gICAgb3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gfCBudWxsO1xuICAgIGlzU3VwZXJBZG1pbj86IGJvb2xlYW47XG4gICAgYWNjb3VudEZlYXR1cmVzPzogcmVhZG9ubHkgc3RyaW5nW10gfCBudWxsO1xuICB9LFxuKTogRmVhdHVyZUZsYWdbXSB7XG4gIGNvbnN0IHsgb3ZlcnJpZGVzOiBmZWF0dXJlT3ZlcnJpZGVzLCBpc1N1cGVyQWRtaW4sIGFjY291bnRGZWF0dXJlcyB9ID0gb3B0cyA/PyB7fTtcblxuICAvLyBTeXNhZG1pbnMgZ2V0IGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiB0aWVyLlxuICBpZiAoaXNTdXBlckFkbWluKSByZXR1cm4gWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXTtcblxuICAvLyBTdGFydCB3aXRoIHRpZXIgZGVmYXVsdHNcbiAgY29uc3QgZmVhdHVyZXMgPSBuZXcgU2V0PEZlYXR1cmVGbGFnPihUSUVSX0ZFQVRVUkVTW3RpZXJdID8/IFtdKTtcblxuICAvLyBBY2NvdW50LWxldmVsIGVudGl0bGVtZW50cyAocHVyY2hhc2VkIGZlYXR1cmUgYnVuZGxlcyDigJQgZS5nLiBhdWRpdF9sb2csIHNzbyxcbiAgLy8gYWR2YW5jZWRfcmVwb3J0aW5nLCB0ZWFtX3VzYWdlX2FuYWx5dGljcywgY29tcGxpYW5jZV9zdGFuZGFyZC9hZHZhbmNlZCkuXG4gIC8vIEFwcGxpZWQgYmVmb3JlIHBlci11c2VyIG92ZXJyaWRlcyBzbyBhbiBleHBsaWNpdCB1c2VyIG92ZXJyaWRlIHN0aWxsIHdpbnMuXG4gIGlmIChhY2NvdW50RmVhdHVyZXMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBhY2NvdW50RmVhdHVyZXMpIHtcbiAgICAgIGlmIChpc1ZhbGlkRmVhdHVyZUZsYWcoa2V5KSkgZmVhdHVyZXMuYWRkKGtleSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXBwbHkgcGVyLXVzZXIgb3ZlcnJpZGVzXG4gIGlmIChmZWF0dXJlT3ZlcnJpZGVzKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBlbmFibGVkXSBvZiBPYmplY3QuZW50cmllcyhmZWF0dXJlT3ZlcnJpZGVzKSkge1xuICAgICAgaWYgKCFpc1ZhbGlkRmVhdHVyZUZsYWcoa2V5KSkgY29udGludWU7XG4gICAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgICBmZWF0dXJlcy5hZGQoa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZlYXR1cmVzLmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiBpbiBjYW5vbmljYWwgb3JkZXJcbiAgcmV0dXJuIEFMTF9GRUFUVVJFX0ZMQUdTLmZpbHRlcihmID0+IGZlYXR1cmVzLmhhcyhmKSk7XG59XG5cbi8qKlxuICogQ3VyYXRlZCBjb21wbGlhbmNlIGNvbnRlbnQgc2V0cyBhbmQgdGhlIGZlYXR1cmUgZmxhZyBlYWNoIG9uZSBpcyBzb2xkIHVuZGVyLlxuICogQSBzZXQgYHhgIGlzIHRoZSBwdWJsaXNoZWQgcnVsZXMgdGFnZ2VkIGBzZXQ6PHg+YDsgYW4gb3JnIGhvbGRpbmcgdGhlIGZsYWcgaXNcbiAqIGVudGl0bGVkIHRvIHRoZW0uIE9yZGVyZWQgZnJvbSB0aGUgbG93ZXN0IGVudGl0bGVtZW50IHRvIHRoZSBoaWdoZXN0LlxuICovXG5leHBvcnQgY29uc3QgQ09NUExJQU5DRV9TRVRfRkVBVFVSRVMgPSB7XG4gIHN0YW5kYXJkOiAnY29tcGxpYW5jZV9zdGFuZGFyZCcsXG4gIGFkdmFuY2VkOiAnY29tcGxpYW5jZV9hZHZhbmNlZCcsXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBGZWF0dXJlRmxhZz47XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VDb250ZW50U2V0ID0ga2V5b2YgdHlwZW9mIENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTO1xuXG4vKiogRXZlcnkgY3VyYXRlZCBzZXQgbmFtZSwgbG93ZXN0IGVudGl0bGVtZW50IGZpcnN0LiAqL1xuZXhwb3J0IGNvbnN0IENPTVBMSUFOQ0VfQ09OVEVOVF9TRVRTID0gT2JqZWN0LmtleXMoQ09NUExJQU5DRV9TRVRfRkVBVFVSRVMpIGFzIENvbXBsaWFuY2VDb250ZW50U2V0W107XG5cbi8qKiBUaGUgY3VyYXRlZCBzZXRzIGFuIGVmZmVjdGl2ZSBmZWF0dXJlIHNldCBlbnRpdGxlcyAoc3RhYmxlIG9yZGVyKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGlhbmNlU2V0c0ZvckZlYXR1cmVzKGZlYXR1cmVzOiByZWFkb25seSBzdHJpbmdbXSk6IENvbXBsaWFuY2VDb250ZW50U2V0W10ge1xuICByZXR1cm4gQ09NUExJQU5DRV9DT05URU5UX1NFVFMuZmlsdGVyKChzZXQpID0+IGZlYXR1cmVzLmluY2x1ZGVzKENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTW3NldF0pKTtcbn1cblxuLyoqXG4gKiBUaGUgZmVhdHVyZSBhIHB1Ymxpc2hlZCBydWxlJ3MgYHNldDo8eD5gIHRhZ3MgcmVxdWlyZSwgb3IgYG51bGxgIGZvciBhblxuICogdW50YWdnZWQgKGJhc2VsaW5lKSBydWxlLiBUaGUgaGlnaGVzdCBlbnRpdGxlbWVudCB3aW5zIHdoZW4gYSBydWxlIGNhcnJpZXNcbiAqIHNldmVyYWwuIEFjY2VwdHMgYSByYXcganNvbmIgYHRhZ3NgIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGxpYW5jZUZlYXR1cmVGb3JUYWdzKHRhZ3M6IHVua25vd24pOiBGZWF0dXJlRmxhZyB8IG51bGwge1xuICBjb25zdCB0ID0gQXJyYXkuaXNBcnJheSh0YWdzKSA/IHRhZ3MgOiBbXTtcbiAgZm9yIChjb25zdCBzZXQgb2YgWy4uLkNPTVBMSUFOQ0VfQ09OVEVOVF9TRVRTXS5yZXZlcnNlKCkpIHtcbiAgICBpZiAodC5pbmNsdWRlcyhgc2V0OiR7c2V0fWApKSByZXR1cm4gQ09NUExJQU5DRV9TRVRfRkVBVFVSRVNbc2V0XTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2ZlYXR1cmUtZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUl0QywyQkFBMkI7QUFFM0I7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFVLENBQUM7QUFHNUY7OztHQUdHO0FBQ0gsTUFBTSxhQUFhLEdBQUc7SUFDcEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQiwrRUFBK0U7SUFDL0UsNEVBQTRFO0lBQzVFLHdFQUF3RTtJQUN4RSw2RUFBNkU7SUFDN0Usb0VBQW9FO0lBQ3BFLDhFQUE4RTtJQUM5RSxvREFBb0Q7SUFDcEQscUJBQXFCO0lBQ3JCLEtBQUs7SUFDTCx3REFBd0Q7SUFDeEQsb0JBQW9CO0lBQ3BCLGdGQUFnRjtJQUNoRixvRkFBb0Y7SUFDcEYsc0JBQXNCO0lBQ3RCLGtGQUFrRjtJQUNsRiw0RUFBNEU7SUFDNUUsZ0ZBQWdGO0lBQ2hGLDZFQUE2RTtJQUM3RSxrRkFBa0Y7SUFDbEYscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQiwwRUFBMEU7SUFDMUUsc0VBQXNFO0lBQ3RFLGtFQUFrRTtJQUNsRSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLHFCQUFxQjtJQUNyQiwwRUFBMEU7SUFDMUUsbUVBQW1FO0lBQ25FLDhFQUE4RTtJQUM5RSw2QkFBNkI7SUFDN0Isb0JBQW9CO0lBQ3BCLEdBQUcsY0FBYztDQUNULENBQUM7QUFLWCxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCLGFBQWEsQ0FBQztBQUV2RTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQTJCLGNBQWMsQ0FBQztBQUU1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFxQztJQUN4RSxnQkFBZ0IsRUFBRSxpQkFBaUI7SUFDbkMsZ0JBQWdCLEVBQUUsbUJBQW1CO0lBQ3JDLGVBQWUsRUFBRSxrQkFBa0I7Q0FDcEMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQTJCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFpQixFQUNqQixLQUFvQjtJQUVwQixJQUFJLFNBQVMsS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUk7UUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDaEcsSUFBSyxzQkFBNEMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNoRCxDQUFDO0FBRUQscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFhO0lBQzlDLE9BQVEsaUJBQXVDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCwwQkFBMEI7QUFFMUIsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBOEM7SUFDdEUseUVBQXlFO0lBQ3pFLDRFQUE0RTtJQUM1RSw4RUFBOEU7SUFDOUUsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO0lBQzVCLEdBQUcsRUFBRSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztJQUN6QyxpRkFBaUY7SUFDakYsZ0ZBQWdGO0lBQ2hGLDhEQUE4RDtJQUM5RCxpREFBaUQ7SUFDakQsMkVBQTJFO0lBQzNFLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUM7SUFDdkUsNEVBQTRFO0lBQzVFLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLDJCQUEyQjtJQUMzQixRQUFRLEVBQUUsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO0lBQ2pHLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YseUVBQXlFO0lBQ3pFLDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsMEVBQTBFO0lBQzFFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsMkVBQTJFO0lBQzNFLHlEQUF5RDtJQUN6RCxFQUFFO0lBQ0YsaUZBQWlGO0lBQ2pGLFVBQVUsRUFBRTtRQUNWLGVBQWU7UUFDZixpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLEtBQUs7UUFDTCxvQkFBb0I7UUFDcEIsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIscUJBQXFCO1FBQ3JCLG9CQUFvQjtLQUNyQjtJQUNELCtFQUErRTtJQUMvRSwrRUFBK0U7SUFDL0UsMEVBQTBFO0lBQzFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7Q0FDbEMsQ0FBQztBQUVGLGlDQUFpQztBQUVqQyxxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWdFO0lBQzNGLGFBQWEsRUFBRTtRQUNiLEtBQUssRUFBRSxlQUFlO1FBQ3RCLFdBQVcsRUFBRSwyQ0FBMkM7S0FDekQ7SUFDRCxlQUFlLEVBQUU7UUFDZixLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLFdBQVcsRUFBRSw0REFBNEQ7S0FDMUU7SUFDRCxtQkFBbUIsRUFBRTtRQUNuQixLQUFLLEVBQUUscUJBQXFCO1FBQzVCLFdBQVcsRUFBRSwyREFBMkQ7S0FDekU7SUFDRCxHQUFHLEVBQUU7UUFDSCxLQUFLLEVBQUUsV0FBVztRQUNsQixXQUFXLEVBQUUsOERBQThEO0tBQzVFO0lBQ0Qsa0JBQWtCLEVBQUU7UUFDbEIsS0FBSyxFQUFFLG9CQUFvQjtRQUMzQixXQUFXLEVBQUUsb0NBQW9DO0tBQ2xEO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixXQUFXLEVBQUUsd0RBQXdEO0tBQ3RFO0lBQ0QsbUJBQW1CLEVBQUU7UUFDbkIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUscURBQXFEO0tBQ25FO0lBQ0QsbUJBQW1CLEVBQUU7UUFDbkIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsK0RBQStEO0tBQzdFO0lBQ0QsbUJBQW1CLEVBQUU7UUFDbkIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUseUdBQXlHO0tBQ3ZIO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsS0FBSyxFQUFFLGtCQUFrQjtRQUN6QixXQUFXLEVBQUUsOENBQThDLHdCQUF3QixDQUFDLGdCQUFnQixrQkFBa0I7S0FDdkg7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixLQUFLLEVBQUUsa0JBQWtCO1FBQ3pCLFdBQVcsRUFBRSw4Q0FBOEMsd0JBQXdCLENBQUMsZ0JBQWdCLGtCQUFrQjtLQUN2SDtJQUNELGVBQWUsRUFBRTtRQUNmLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsV0FBVyxFQUFFLDhDQUE4Qyx3QkFBd0IsQ0FBQyxlQUFlLG1FQUFtRTtLQUN2SztJQUNELGtCQUFrQixFQUFFO1FBQ2xCLEtBQUssRUFBRSxnQ0FBZ0M7UUFDdkMsV0FBVyxFQUFFLGdHQUFnRztLQUM5RztDQUNGLENBQUM7QUFFRixtQkFBbUI7QUFFbkI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLElBQWUsRUFDZixJQUlDO0lBRUQsTUFBTSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUVsRiwrQ0FBK0M7SUFDL0MsSUFBSSxZQUFZO1FBQUUsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztJQUVoRCwyQkFBMkI7SUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWpFLCtFQUErRTtJQUMvRSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNsQyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFTO1lBQ3ZDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxRQUFRLEVBQUUscUJBQXFCO0lBQy9CLFFBQVEsRUFBRSxxQkFBcUI7Q0FDZSxDQUFDO0FBSWpELHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUEyQixDQUFDO0FBRXRHLHlFQUF5RTtBQUN6RSxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBMkI7SUFDbkUsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQWE7SUFDcEQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQUUsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUXVvdGFUaWVyIH0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5cbi8vIEZlYXR1cmUgZmxhZyBpZGVudGlmaWVyc1xuXG4vKipcbiAqIFN1cHBvcnQgbGV2ZWwsIG9uZSBwZXIgcmVzcG9uc2UtdGltZSBydW5nLiBTb2xkIE9OTFkgYXMgcGVyLWNvbnRhY3QgYWRkLW9uXG4gKiBidW5kbGVzIGFuZCBpbmNsdWRlZCBpbiBOTyB0aWVyIOKAlCBub3QgZXZlbiBlbnRlcnByaXNlLCB3aGljaCBpcyB3aHlcbiAqIGBUSUVSX0ZFQVRVUkVTYCBjYW5ub3Qgc2ltcGx5IHNwcmVhZCBgQUxMX0ZFQVRVUkVfRkxBR1NgIGZvciBpdCBhbnkgbW9yZS5cbiAqIFRoZXNlIFJFUExBQ0UgdGhlIGZvcm1lciBgcHJpb3JpdHlfc3VwcG9ydGAgdGllciBwZXJrLCB3aGljaCBtYXJrZXRlZCBcImZhc3RlclxuICogcmVzcG9uc2UgdGltZXNcIiB3aGlsZSBubyBzdXBwb3J0IHByb2R1Y3QgZXhpc3RlZCB0byBiZSBmYXN0ZXIuIE11dHVhbGx5XG4gKiBleGNsdXNpdmU6IGFuIGFjY291bnQgaG9sZHMgYXQgbW9zdCBvbmUgKGVuZm9yY2VkIGluIGBlZmZlY3RpdmVFbnRpdGxlbWVudHNgKS5cbiAqXG4gKiBJdHMgb3duIHR5cGUsIGFuZCBzcGVsbGVkIE9OQ0Ug4oCUIGBGRUFUVVJFX0ZMQUdTYCBzcHJlYWRzIGl0IHJhdGhlciB0aGFuXG4gKiBsaXN0aW5nIHRoZSB0aHJlZSBuYW1lcyBhZ2Fpbi4gQSBzdXJmYWNlIHRoYXQgbXVzdCBuYW1lIEVWRVJZIGxldmVsIGtleXMgYVxuICogYFJlY29yZDxTdXBwb3J0RmVhdHVyZUZsYWcsIOKApj5gIG9mZiBpdCAodGhlIGZyb250ZW5kJ3MgbGV2ZWwgbGFiZWxzIHdlcmUgYVxuICogYFJlY29yZDxzdHJpbmcsIHN0cmluZz5gIHRoYXQgaGFwcGVuZWQgdG8gY2FycnkgdGhyZWUgZW50cmllcywgc28gYSBmb3VydGhcbiAqIGxldmVsIHdvdWxkIGhhdmUgcmVuZGVyZWQgYXMgdGhlIHJhdyBmbGFnIGlkKSwgd2hpbGUgdGhlIGxhZGRlciBsaXN0IGJlbG93XG4gKiBzdGF5cyBgRmVhdHVyZUZsYWdbXWAgc28gaXQgY2FuIGJlIHRlc3RlZCBhZ2FpbnN0IHRoZSBmdWxsIGNhdGFsb2cuXG4gKi9cbmNvbnN0IFNVUFBPUlRfTEVWRUxTID0gWydzdXBwb3J0X3N0YW5kYXJkJywgJ3N1cHBvcnRfcHJpb3JpdHknLCAnc3VwcG9ydF9wcmVtaXVtJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdXBwb3J0RmVhdHVyZUZsYWcgPSB0eXBlb2YgU1VQUE9SVF9MRVZFTFNbbnVtYmVyXTtcblxuLyoqXG4gKiBFdmVyeSBmZWF0dXJlIGZsYWcsIGluIGRpc3BsYXkgb3JkZXIuIFRoZSB7QGxpbmsgRmVhdHVyZUZsYWd9IHVuaW9uIGlzIGRlcml2ZWRcbiAqIGZyb20gdGhpcyBsaXN0LCBzbyBhIGZsYWcgaXMgYWRkZWQgaW4gZXhhY3RseSBvbmUgcGxhY2UuXG4gKi9cbmNvbnN0IEZFQVRVUkVfRkxBR1MgPSBbXG4gICdhaV9nZW5lcmF0aW9uJyxcbiAgJ2J1bGtfb3BlcmF0aW9ucycsXG4gIC8vIGBjdXN0b21faW50ZWdyYXRpb25zYCBpcyBhbiBFTlRFUlBSSVNFLUVYQ0xVU0lWRSBtYXJrZXRpbmcvZW50aXRsZW1lbnQgZmxhZzpcbiAgLy8gZ3JhbnRlZCBvbmx5IGJ5IHRoZSBlbnRlcnByaXNlIHRpZXIgKG5vIGFkZC1vbiBidW5kbGUgc2VsbHMgaXQgdG8gYSBsb3dlclxuICAvLyB0aWVyIOKAlCBpbnRlbnRpb25hbCwgaXQgYW5jaG9ycyB0aGUgRW50ZXJwcmlzZSBwbGFuKSBhbmQgbm90IGN1cnJlbnRseVxuICAvLyBgcmVxdWlyZUZlYXR1cmVgLWdhdGVkIG9uIGFueSByb3V0ZS4gVGhpcyBpcyBieSBkZXNpZ24sIG5vdCBkZWFkIGNvZGUg4oCUIGRvXG4gIC8vIG5vdCBcImZpeFwiIGJ5IHdpcmluZyBhIGJ1bmRsZSB3aXRob3V0IGEgcHJpY2luZyBkZWNpc2lvbi4gQ29udHJhc3RcbiAgLy8gYHNzb2AvYGFkdmFuY2VkX3JlcG9ydGluZ2AsIHdoaWNoIEFSRSBzb2xkIGFzIGFkZC1vbiBidW5kbGVzIGFuZCBnYXRlZCAoc2VlXG4gIC8vIGJpbGxpbmctY29uZmlnIGBsb2FkQnVuZGxlc2AgKyBgcmVxdWlyZUZlYXR1cmVgKS5cbiAgJ2N1c3RvbV9pbnRlZ3JhdGlvbnMnLFxuICAnc3NvJyxcbiAgLy8gRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcyAocGFpZCB0aWVycyBvbmx5KS5cbiAgJ2FkdmFuY2VkX3JlcG9ydGluZycsXG4gIC8vIFBlci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZ+KGknRlYW0gc3VidHJlZS4gSU5DTFVERUQgaW4gRW50ZXJwcmlzZTtcbiAgLy8gc29sZCBhcyBhbiBhZGQtb24gYnVuZGxlIHRvIFByby9UZWFtIChzZWUgYmlsbGluZy1jb25maWcgYHRlYW1fdXNhZ2VfYW5hbHl0aWNzYCkuXG4gICd0ZWFtX3VzYWdlX2FuYWx5dGljcycsXG4gIC8vIEN1cmF0ZWQgY29tcGxpYW5jZSBydWxlIGxpYnJhcmllcyBzb2xkIGFzIGFkZC1vbiBidW5kbGVzLiBgY29tcGxpYW5jZV9zdGFuZGFyZGBcbiAgLy8gPSBDSS9DRCBiZXN0LXByYWN0aWNlIHNldDsgYGNvbXBsaWFuY2VfYWR2YW5jZWRgID0gU09DMi9QQ0kvQ0lTIGZyYW1ld29ya1xuICAvLyBsaWJyYXJpZXMgKHJlcXVpcmVzIFN0YW5kYXJkKS4gVGhlc2UgZ2F0ZSBTVUJTQ1JJQklORyB0byB0aGUgc2V0J3Mgc3lzdGVtLW9yZ1xuICAvLyBwdWJsaXNoZWQgcnVsZXM7IElOQ0xVREVEIGluIEVudGVycHJpc2UvVW5saW1pdGVkICh2aWEgQUxMX0ZFQVRVUkVfRkxBR1MpLFxuICAvLyBzb2xkIHRvIERldmVsb3Blci9Qcm8vVGVhbSAoc2VlIGJpbGxpbmctY29uZmlnIGBjb21wbGlhbmNlX3N0YW5kYXJkL2FkdmFuY2VkYCkuXG4gICdjb21wbGlhbmNlX3N0YW5kYXJkJyxcbiAgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnLFxuICAvLyBTY2hlZHVsZWQsIG1hbmFnZXItZmFjaW5nIHJlcG9ydHM6IHNhdmVkIGRlZmluaXRpb25zLCBmcm96ZW4gc25hcHNob3RzLFxuICAvLyByZXZpZXctYW5kLXB1Ymxpc2gsIFBERi9lbWFpbCBkZWxpdmVyeSBhbmQgc2hhcmUgbGlua3MuIElOQ0xVREVEIGluXG4gIC8vIEVudGVycHJpc2UvVW5saW1pdGVkOyBzb2xkIGFzIGFuIGFkZC1vbiBidW5kbGUgdG8gUHJvL1RlYW0gKHNlZVxuICAvLyBiaWxsaW5nLWNvbmZpZyBgc3Rha2Vob2xkZXJfcmVwb3J0c2ApLiBPbi1kZW1hbmQgZGFzaGJvYXJkcyBzdGF5IEZSRUUgdW5kZXJcbiAgLy8gYHJlcG9ydHM6cmVhZGAg4oCUIHRoaXMgZ2F0ZXMgc2F2aW5nLCBzY2hlZHVsaW5nIGFuZCBwdWJsaXNoaW5nLCBub3QgbG9va2luZy5cbiAgJ3N0YWtlaG9sZGVyX3JlcG9ydHMnLFxuICAvLyBQbHVnaW4gZWNvc3lzdGVtOiB0aGUgb3JnJ3MgcHVibGlzaGVyIGlzIEVMSUdJQkxFIHRvIGFwcGx5IGZvciBWZXJpZmllZFxuICAvLyBzdGF0dXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBFbGlnaWJpbGl0eSBvbmx5IOKAlCB0aGUgYmFkZ2VcbiAgLy8gaXMgYXdhcmRlZCAoYW5kIHdpdGhkcmF3bikgYnkgc3lzdGVtLW9yZyByZXZpZXcsIG5ldmVyIGJvdWdodC4gVGVhbSBhbmQgdXA7XG4gIC8vIG5vIGFkZC1vbiBidW5kbGUgc2VsbHMgaXQuXG4gICd2ZXJpZmllZF9wdWJsaXNoZXInLFxuICAuLi5TVVBQT1JUX0xFVkVMUyxcbl0gYXMgY29uc3Q7XG5cbi8qKiBDYW5vbmljYWwgZmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWcgPSB0eXBlb2YgRkVBVFVSRV9GTEFHU1tudW1iZXJdO1xuXG4vKiogQWxsIHZhbGlkIGZlYXR1cmUgZmxhZ3MgKG9yZGVyIGRldGVybWluZXMgZGlzcGxheSBvcmRlcikuICovXG5leHBvcnQgY29uc3QgQUxMX0ZFQVRVUkVfRkxBR1M6IHJlYWRvbmx5IEZlYXR1cmVGbGFnW10gPSBGRUFUVVJFX0ZMQUdTO1xuXG4vKipcbiAqIFRoZSBzdXBwb3J0LWxldmVsIGZsYWdzLCB3aGljaCBhcmUgYWRkLW9uLU9OTFkgYXQgZXZlcnkgdGllci5cbiAqXG4gKiBOZWVkZWQgYXMgaXRzIG93biBsaXN0IGJlY2F1c2UgYFRJRVJfRkVBVFVSRVMuZW50ZXJwcmlzZWAgc3ByZWFkc1xuICogYEFMTF9GRUFUVVJFX0ZMQUdTYDogd2l0aG91dCBleGNsdWRpbmcgdGhlc2UsIGFkZGluZyBhIHN1cHBvcnQgZmxhZyB3b3VsZFxuICogc2lsZW50bHkgZ3JhbnQgZW50ZXJwcmlzZSB0aGUgc3VwcG9ydCBwcm9kdWN0IGl0IGlzIHN1cHBvc2VkIHRvIGJ1eSwgd2hpY2ggaXNcbiAqIGV4YWN0bHkgdGhlIFwiaW5jbHVkZWQgaW4gbm8gdGllclwiIGRlY2lzaW9uIGl0IHdvdWxkIGJyZWFrLlxuICovXG5leHBvcnQgY29uc3QgU1VQUE9SVF9GRUFUVVJFX0ZMQUdTOiByZWFkb25seSBGZWF0dXJlRmxhZ1tdID0gU1VQUE9SVF9MRVZFTFM7XG5cbi8qKlxuICogVGhlIEZJUlNULVJFU1BPTlNFIFRBUkdFVCBzb2xkIGF0IGVhY2ggc3VwcG9ydCBsZXZlbCDigJQgdGhlIGNhbm9uaWNhbCB3b3JkaW5nLlxuICpcbiAqIE9uZSBwbGFjZSwgYmVjYXVzZSB0aGlzIHN0cmluZyBpcyBhIGNvbW1pdG1lbnQ6IGl0IGlzIHNob3duIG9uIHRoZSBjYXNlLCBpblxuICogdGhlIGFkZC1vbiBjYXRhbG9nLCBvbiB0aGUgcHJpY2luZyBwYWdlIGFuZCBpbiB0aGUgYWxlcnQgdGhhdCBmaXJlcyB3aGVuIHRoZVxuICogZGVzayBtaXNzZXMgaXQsIGFuZCB0aG9zZSBmb3VyIG11c3QgbmV2ZXIgZGlzYWdyZWUuIEEgbGV2ZWwgYWJzZW50IGZyb20gdGhpc1xuICogbWFwIGhhcyBubyBzdGF0ZWQgdGFyZ2V0IGFuZCBjYWxsZXJzIG11c3Qgb21pdCB0aGUgcGhyYXNlIHJhdGhlciB0aGFuIGJvcnJvd1xuICogYW5vdGhlciBsZXZlbCdzIHByb21pc2UuXG4gKlxuICogV0hZIFRIRVNFIFVOSVRTLiBBbiBlYXJsaWVyIGxhZGRlciByZWFkIFwiNDggYnVzaW5lc3MgaG91cnMgLyAyNCBidXNpbmVzc1xuICogaG91cnMgLyBubyBzdGF0ZWQgbnVtYmVyXCIsIHdoaWNoIHdhcyB3cm9uZyB0d2ljZSBvdmVyLiBUaGUgYnVzaW5lc3MtaG91cnNcbiAqIHVuaXQgZmxhdHRlcmVkIHRoZSB0YXJnZXRzIGJ5IHJvdWdobHkgdGhyZWUgdGltZXMg4oCUIDQ4IGJ1c2luZXNzIGhvdXJzIGlzIHNpeFxuICogd29ya2luZyBkYXlzLCBzbyBhIGNhc2UgcmFpc2VkIG9uIGEgRnJpZGF5IGV2ZW5pbmcgaGFkIGl0cyB0YXJnZXQgZXhwaXJlIHRoZVxuICogKmZvbGxvd2luZyBNb25kYXkqIOKAlCBhbmQgdGhlIHRvcCBsZXZlbCwgdGhlIG9uZSB0aGF0IGNvc3RzIHRoZSBtb3N0LCB3YXMgdGhlXG4gKiBvbmx5IG9uZSB3aXRoIG5vIG51bWJlciBhdCBhbGwsIHNvIHRoZSBsYWRkZXIgd2VudCBibGFuayBvbiB0aGUgc2luZ2xlIGF4aXMgYVxuICogYnV5ZXIgY29tcGFyZXMuIFRoZSB0YXJnZXRzIGJlbG93IGFyZSBzdGF0ZWQgaW4gdW5pdHMgdGhlIGN1c3RvbWVyIGFjdHVhbGx5XG4gKiBleHBlcmllbmNlcyBhbmQgaW1wcm92ZSBtb25vdG9uaWNhbGx5IG9uIG9uZSBjbG9jazogdHdvIGJ1c2luZXNzIGRheXMsIHRoZW5cbiAqIG9uZSwgdGhlbiBlaWdodCBob3VycyBvbiBhIGNsb2NrIHRoYXQgZG9lcyBub3Qgc3RvcCBmb3IgbmlnaHRzIG9yIHdlZWtlbmRzLlxuICpcbiAqIFByZW1pdW0ncyBcImFueSBkYXlcIiBpcyB0aGUgd2hvbGUgb2YgaXRzIDI0w5c3IGNvdmVyYWdlIGNsYWltLCBhbmQgaXQgaXNcbiAqIGRlbGliZXJhdGVseSBOT1QgYSBzZXZlcml0eS1kZXBlbmRlbnQgb25lLWhvdXIgcHJvbWlzZS4gRWlnaHQgaG91cnMgaXMgd2hhdCBhXG4gKiByb3RhIGNhbiBiZSBoZWxkIHRvOiBpdCBsZWF2ZXMgcm9vbSBmb3IgdGhlIHBlci1jYXNlIHN3ZWVwIHRvIHBhZ2UgdHdvIGhvdXJzXG4gKiBhaGVhZCBvZiB0aGUgZGVhZGxpbmUgKHNlZSBkb2NzL29uY2FsbC1wYWdpbmcubWQpIGFuZCBmb3IgYSB3b2tlbiBodW1hbiB0b1xuICogcmVhZCB0aGUgY2FzZSBhbmQgYW5zd2VyIGl0LiBBbiBob3VyLXNjYWxlIGNvbW1pdG1lbnQgd291bGQgc3BlbmQgdGhhdCBtYXJnaW5cbiAqIGJlZm9yZSBhbnlvbmUgcGlja2VkIHVwIHRoZSBwaG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRfUkVTUE9OU0VfVEFSR0VUUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIHN1cHBvcnRfc3RhbmRhcmQ6ICcyIGJ1c2luZXNzIGRheXMnLFxuICBzdXBwb3J0X3ByaW9yaXR5OiAnbmV4dCBidXNpbmVzcyBkYXknLFxuICBzdXBwb3J0X3ByZW1pdW06ICc4IGhvdXJzLCBhbnkgZGF5Jyxcbn07XG5cbi8qKlxuICogU3VwcG9ydCBsZXZlbHMgd2hvc2UgY29udGFjdHMgbWF5IGRlY2xhcmUgYHVyZ2VudGAgc2V2ZXJpdHkgd2hlbiBvcGVuaW5nLlxuICpcbiAqIFByZW1pdW0gb25seSwgYW5kIHRoaXMgaXMgYSBQUklDSU5HIGRlY2lzaW9uIHJhdGhlciB0aGFuIGEgcGVybWlzc2lvbiBkZXRhaWwuXG4gKiBUaGUgdGVuYW50IGNob29zZXMgc2V2ZXJpdHkgYXQgb3BlbiBhbmQgc2V2ZXJpdHkgZGVjaWRlcyB3aGljaCB0YXJnZXQgYXBwbGllcyxcbiAqIHNvIGEgbGV2ZWwgdGhhdCBjYW4gZGVjbGFyZSBgdXJnZW50YCBpcyBhIGxldmVsIHRoYXQgY2FuIGhlbHAgaXRzZWxmIHRvIHRoZVxuICogZmFzdGVzdCByZXNwb25zZSBvbiBvZmZlci4gQWRtaXR0aW5nIGl0IG9ubHkgYXQgcHJlbWl1bSBpcyB3aGF0IG1ha2VzIHRoZSB0b3BcbiAqIHJ1bmcgYSBjYXBhYmlsaXR5IOKAlCBcInlvdSBjYW4gZGVjbGFyZSBhbiBlbWVyZ2VuY3lcIiDigJQgaW5zdGVhZCBvZiBub3RoaW5nIGJ1dCBhXG4gKiBmYXN0ZXIgY2xvY2ssIHdoaWNoIGlzIHRoZSB3aG9sZSByZWFzb24gdGhlIHByaW9yaXR5LXRvLXByZW1pdW0gc3RlcCBpcyB3b3J0aFxuICogaXRzIHByaWNlLlxuICpcbiAqIFN0YWZmIHJlLXJhbmtpbmcgKGBzdXBwb3J0LmNhc2Uuc2V2ZXJpdHlgLCBzeXN0ZW0tYWRtaW4gb25seSkgc3RheXMgdGhlIGVzY2FwZVxuICogaGF0Y2g6IGEgZ2VudWluZSBlbWVyZ2VuY3kgcmFpc2VkIG9uIGEgbG93ZXIgbGV2ZWwgaXMgT1VSUyB0byBwcm9tb3RlLCB3aGljaFxuICogaXMgdGhlIHNhbWUgZ292ZXJuYW5jZSBzcGxpdCB0aGF0IGtlZXBzIHRoZSB0ZW5hbnQgZnJvbSByZS1yYW5raW5nIGFmdGVyIG9wZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBVUkdFTlRfU0VWRVJJVFlfTEVWRUxTOiByZWFkb25seSBGZWF0dXJlRmxhZ1tdID0gWydzdXBwb3J0X3ByZW1pdW0nXTtcblxuLyoqXG4gKiBUaGUgc2V2ZXJpdHkgYSBjYXNlIG1heSBhY3R1YWxseSBiZSBvcGVuZWQgYXQuXG4gKlxuICogUmV0dXJucyB0aGUgcmVxdWVzdGVkIHNldmVyaXR5IHVuY2hhbmdlZCwgb3IgdGhlIGhpZ2hlc3Qgb25lIHRoZSBsZXZlbCBhZG1pdHMuXG4gKiBgdXJnZW50YCBhc2tlZCBmb3IgYmVsb3cgcHJlbWl1bSBiZWNvbWVzIGBoaWdoYCDigJQgYSBET1dOR1JBREUsIG5ldmVyIGFcbiAqIHJlZnVzYWw6IGRlY2xpbmluZyB0byBzZW5kIGEgc3VwcG9ydCBtZXNzYWdlIGJlY2F1c2UgdGhlIHNlbmRlciBvdmVyLXN0YXRlZFxuICogaXRzIHNldmVyaXR5IHdvdWxkIGRlbnkgc3VwcG9ydCBvdmVyIGEgbGFiZWwsIGFuZCB0aGUgbWVzc2FnZSBpdHNlbGYgaXMgbmV2ZXJcbiAqIHRoZSB0aGluZyBiZWluZyBnYXRlZC4gVGhlIGNhbGxlciB0ZWxscyB0aGUgc2VuZGVyIGl0IGhhcHBlbmVkLlxuICpcbiAqIEEgbnVsbCBgbGV2ZWxgIG1lYW5zIG5vIGNhc2UgaXMgYmVpbmcgb3BlbmVkIChubyBlbnRpdGxlbWVudCwgb3IgdGhlXG4gKiBlbnRpdGxlbWVudCByZWFkIHdhcyB1bmF2YWlsYWJsZSksIGFuZCB0aGVuIHRoZXJlIGlzIG5vIGNvbW1pdG1lbnQgdG8gcHJvdGVjdCxcbiAqIHNvIHRoZSByZXF1ZXN0ZWQgdmFsdWUgcGFzc2VzIHRocm91Z2ggdW50b3VjaGVkIHJhdGhlciB0aGFuIGJlaW5nIGRlbW90ZWQgZm9yXG4gKiBubyByZWFzb24gZHVyaW5nIGFuIG91dGFnZSBvZiBvdXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRtaXRDYXNlU2V2ZXJpdHkoXG4gIHJlcXVlc3RlZDogc3RyaW5nLFxuICBsZXZlbDogc3RyaW5nIHwgbnVsbCxcbik6IHsgc2V2ZXJpdHk6IHN0cmluZzsgZG93bmdyYWRlZDogYm9vbGVhbiB9IHtcbiAgaWYgKHJlcXVlc3RlZCAhPT0gJ3VyZ2VudCcgfHwgbGV2ZWwgPT09IG51bGwpIHJldHVybiB7IHNldmVyaXR5OiByZXF1ZXN0ZWQsIGRvd25ncmFkZWQ6IGZhbHNlIH07XG4gIGlmICgoVVJHRU5UX1NFVkVSSVRZX0xFVkVMUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMobGV2ZWwpKSB7XG4gICAgcmV0dXJuIHsgc2V2ZXJpdHk6IHJlcXVlc3RlZCwgZG93bmdyYWRlZDogZmFsc2UgfTtcbiAgfVxuICByZXR1cm4geyBzZXZlcml0eTogJ2hpZ2gnLCBkb3duZ3JhZGVkOiB0cnVlIH07XG59XG5cbi8qKiBDaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgRmVhdHVyZUZsYWcuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZlYXR1cmVGbGFnKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiAoQUxMX0ZFQVRVUkVfRkxBR1MgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuLy8gVGllci10by1mZWF0dXJlIG1hcHBpbmdcblxuLyoqIEZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgZWFjaCB0aWVyLiAqL1xuZXhwb3J0IGNvbnN0IFRJRVJfRkVBVFVSRVM6IFJlY29yZDxRdW90YVRpZXIsIHJlYWRvbmx5IEZlYXR1cmVGbGFnW10+ID0ge1xuICAvLyBEZXZlbG9wZXIgZ2V0cyBgYWlfZ2VuZXJhdGlvbmAgYXMgYSBUUklBTDogdGhlIHRpZXIncyAyMCBgYWlDYWxsc2AgcGVyXG4gIC8vIHBlcmlvZCAoUVVPVEFfVElFUlMuZGV2ZWxvcGVyKSBpcyB0aGUgdHJpYWwncyBjYXAsIHNvIHRoZSBBSSBzdXJmYWNlcyBhcmVcbiAgLy8gdXNhYmxlIOKAlCBub3QganVzdCBwcmV2aWV3ZWQg4oCUIGJlZm9yZSBhbiB1cGdyYWRlLiBBIEJZT0sga2V5IHNwZW5kcyBubyBzbG90LlxuICBkZXZlbG9wZXI6IFsnYWlfZ2VuZXJhdGlvbiddLFxuICBwcm86IFsnYWlfZ2VuZXJhdGlvbicsICdidWxrX29wZXJhdGlvbnMnXSxcbiAgLy8gVGVhbSBhZGRzIHNzbyAoU1NPL0lkUCBpcyBJTkNMVURFRCBpbiBUZWFtLCBub3QgYW4gYWRkLW9uKS4gYWR2YW5jZWRfcmVwb3J0aW5nXG4gIC8vIChET1JBKSBpcyBOT1QgYSBUZWFtIHRpZXIgZmVhdHVyZSDigJQgaXQncyBJTkNMVURFRCBvbmx5IGluIEVudGVycHJpc2UgYW5kIHNvbGRcbiAgLy8gYXMgYW4gYWRkLW9uIGJ1bmRsZSB0byBldmVyeSBvdGhlciB0aWVyIChzZWUgYmlsbGluZy1jb25maWdcbiAgLy8gYGFkdmFuY2VkX3JlcG9ydGluZ2ApLiBFbnRlcnByaXNlIHVubG9ja3MgYWxsLlxuICAvLyBgdmVyaWZpZWRfcHVibGlzaGVyYCAoZWxpZ2liaWxpdHkgdG8gYXBwbHkgZm9yIFZlcmlmaWVkKSBzdGFydHMgYXQgVGVhbS5cbiAgdGVhbTogWydhaV9nZW5lcmF0aW9uJywgJ2J1bGtfb3BlcmF0aW9ucycsICdzc28nLCAndmVyaWZpZWRfcHVibGlzaGVyJ10sXG4gIC8vIEJ1c2luZXNzIGlzIFRlYW0gcGx1cyBhZHZhbmNlZF9yZXBvcnRpbmcgKERPUkEpOiB0aGUgYW5hbHl0aWNzIHN1cmZhY2UgaXNcbiAgLy8gd2hhdCBhIDgtc2VhdCBvcmcgaXMgdXN1YWxseSBidXlpbmcsIGFuZCBidW5kbGluZyBpdCBpcyBtb3N0IG9mIHdoeSB0aGUgdGllclxuICAvLyBpcyB3b3J0aCAkMjQ5IG92ZXIgVGVhbSArIHRoZSBhZGQtb24uIEVudGVycHJpc2Uga2VlcHMgY3VzdG9tX2ludGVncmF0aW9ucyxcbiAgLy8gdGVhbV91c2FnZV9hbmFseXRpY3MsIHRoZSBjb21wbGlhbmNlIGxpYnJhcmllcyBhbmQgc3Rha2Vob2xkZXJfcmVwb3J0cyBhc1xuICAvLyBpdHMgb3duIGRpZmZlcmVudGlhdG9ycy5cbiAgYnVzaW5lc3M6IFsnYWlfZ2VuZXJhdGlvbicsICdidWxrX29wZXJhdGlvbnMnLCAnc3NvJywgJ3ZlcmlmaWVkX3B1Ymxpc2hlcicsICdhZHZhbmNlZF9yZXBvcnRpbmcnXSxcbiAgLy8gRW50ZXJwcmlzZSBpcyBhbiBFWFBMSUNJVCBsaXN0LCBkZWxpYmVyYXRlbHkgbm90IGBbLi4uQUxMX0ZFQVRVUkVfRkxBR1NdYC5cbiAgLy9cbiAgLy8gU3ByZWFkaW5nIGV2ZXJ5IGZsYWcgaGVyZSBpcyBob3cgYSBuZXcgcGFpZCBhZGQtb24gc2lsZW50bHkgYmVjb21lcyBhblxuICAvLyBFbnRlcnByaXNlIGluY2x1c2lvbjogYWRkaW5nIGBzdXBwb3J0X3ByZW1pdW1gIHRvIHRoZSBjYXRhbG9nIHdvdWxkIGhhdmVcbiAgLy8gZ3JhbnRlZCBlbnRlcnByaXNlIHRoZSAyNMOXNyBzdXBwb3J0IGl0IGlzIHN1cHBvc2VkIHRvIEJVWSwgd2l0aCBub3RoaW5nXG4gIC8vIGZhaWxpbmcuIExpc3RpbmcgdGhlIGZsYWdzIGZvcmNlcyB0aGUgcXVlc3Rpb24gXCJkb2VzIEVudGVycHJpc2UgaW5jbHVkZVxuICAvLyB0aGlzP1wiIHRvIGJlIGFuc3dlcmVkIHBlciBmbGFnLCB3aGljaCBpcyB0aGUgZGVjaXNpb24gdGhpcyByZWNvcmQgZXhpc3RzIHRvXG4gIC8vIGNhcnJ5LiBBIGZpbHRlciBleHByZXNzaW9uIHdvdWxkIGRvIHRoZSBzYW1lIGpvYiBidXQgY2Fubm90IGJlIHJlYWQgYnkgdGhlXG4gIC8vIHNvdXJjZS1wYXJzaW5nIHBhcml0eSB0ZXN0cyAoYGZyb250ZW5kL3Rlc3QvZmVhdHVyZS1nYXRlLXVwc2VsbC50ZXN0LnRzYFxuICAvLyBleHRyYWN0cyBhbiBhcnJheSBsaXRlcmFsKSwgc28gYW4gZXhwbGljaXQgbGlzdCBpdCBpcy5cbiAgLy9cbiAgLy8gU3VwcG9ydCBpcyBhYnNlbnQgb24gcHVycG9zZTogaXQgaXMgYW4gYWRkLW9uIGF0IEVWRVJZIHRpZXIsIGluY2x1ZGVkIGluIG5vbmUuXG4gIGVudGVycHJpc2U6IFtcbiAgICAnYWlfZ2VuZXJhdGlvbicsXG4gICAgJ2J1bGtfb3BlcmF0aW9ucycsXG4gICAgJ2N1c3RvbV9pbnRlZ3JhdGlvbnMnLFxuICAgICdzc28nLFxuICAgICdhZHZhbmNlZF9yZXBvcnRpbmcnLFxuICAgICd0ZWFtX3VzYWdlX2FuYWx5dGljcycsXG4gICAgJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnLFxuICAgICdjb21wbGlhbmNlX2FkdmFuY2VkJyxcbiAgICAnc3Rha2Vob2xkZXJfcmVwb3J0cycsXG4gICAgJ3ZlcmlmaWVkX3B1Ymxpc2hlcicsXG4gIF0sXG4gIC8vIFVubGltaXRlZCBpbmNsdWRlcyBldmVyeSBmZWF0dXJlIC8gYWRkLW9uIGJ1bmRsZSAoYmlsbGluZy1kaXNhYmxlZCBkZWZhdWx0KS5cbiAgLy8gU3VwcG9ydCBpbmNsdWRlZCBoZXJlIG9uIHB1cnBvc2U6IGB1bmxpbWl0ZWRgIGlzIHRoZSBiaWxsaW5nLU9GRiB0aWVyLCB3aGVyZVxuICAvLyBub3RoaW5nIGlzIHB1cmNoYXNhYmxlLCBhbmQgaXRzIGBzdXBwb3J0Q29udGFjdHNgIGxpbWl0IGlzIC0xIHRvIG1hdGNoLlxuICB1bmxpbWl0ZWQ6IFsuLi5BTExfRkVBVFVSRV9GTEFHU10sXG59O1xuXG4vLyBGZWF0dXJlIG1ldGFkYXRhIChmb3IgZGlzcGxheSlcblxuLyoqIEh1bWFuLXJlYWRhYmxlIG1ldGFkYXRhIGZvciBlYWNoIGZlYXR1cmUgZmxhZy4gKi9cbmV4cG9ydCBjb25zdCBGRUFUVVJFX01FVEFEQVRBOiBSZWNvcmQ8RmVhdHVyZUZsYWcsIHsgbGFiZWw6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9PiA9IHtcbiAgYWlfZ2VuZXJhdGlvbjoge1xuICAgIGxhYmVsOiAnQUkgR2VuZXJhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdBSS1wb3dlcmVkIHBpcGVsaW5lIGFuZCBwbHVnaW4gZ2VuZXJhdGlvbicsXG4gIH0sXG4gIGJ1bGtfb3BlcmF0aW9uczoge1xuICAgIGxhYmVsOiAnQnVsayBPcGVyYXRpb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0JhdGNoIGNyZWF0ZSwgdXBkYXRlLCBhbmQgZGVsZXRlIGZvciBwaXBlbGluZXMgYW5kIHBsdWdpbnMnLFxuICB9LFxuICBjdXN0b21faW50ZWdyYXRpb25zOiB7XG4gICAgbGFiZWw6ICdDdXN0b20gSW50ZWdyYXRpb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nvbm5lY3QgdG8gZXh0ZXJuYWwgc2VydmljZXMgYW5kIGN1c3RvbSB3ZWJob29rIGVuZHBvaW50cycsXG4gIH0sXG4gIHNzbzoge1xuICAgIGxhYmVsOiAnU1NPIC8gSWRQJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NpbmdsZSBzaWduLW9uIGFuZCBleHRlcm5hbCBpZGVudGl0eS1wcm92aWRlciBjb25maWd1cmF0aW9ucycsXG4gIH0sXG4gIGFkdmFuY2VkX3JlcG9ydGluZzoge1xuICAgIGxhYmVsOiAnQWR2YW5jZWQgUmVwb3J0aW5nJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MnLFxuICB9LFxuICB0ZWFtX3VzYWdlX2FuYWx5dGljczoge1xuICAgIGxhYmVsOiAnVGVhbSBVc2FnZSBBbmFseXRpY3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnUGVyLXRlYW0gdXNhZ2UgYnJlYWtkb3duIGFjcm9zcyB0aGUgb3JnIOKGkiB0ZWFtIHN1YnRyZWUnLFxuICB9LFxuICBjb21wbGlhbmNlX3N0YW5kYXJkOiB7XG4gICAgbGFiZWw6ICdTdGFuZGFyZCBDb21wbGlhbmNlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0N1cmF0ZWQgQ0kvQ0QgYmVzdC1wcmFjdGljZSBjb21wbGlhbmNlIHJ1bGUgbGlicmFyeScsXG4gIH0sXG4gIGNvbXBsaWFuY2VfYWR2YW5jZWQ6IHtcbiAgICBsYWJlbDogJ0FkdmFuY2VkIENvbXBsaWFuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3VyYXRlZCBmcmFtZXdvcmsgY29tcGxpYW5jZSBsaWJyYXJpZXMgKFNPQzIgLyBQQ0ktRFNTIC8gQ0lTKScsXG4gIH0sXG4gIHN0YWtlaG9sZGVyX3JlcG9ydHM6IHtcbiAgICBsYWJlbDogJ1N0YWtlaG9sZGVyIFJlcG9ydHMnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2NoZWR1bGVkIHRlYW0gcmVwb3J0cyBmb3IgbWFuYWdlcnMg4oCUIHNuYXBzaG90cywgcmV2aWV3IGFuZCBwdWJsaXNoLCBQREYvZW1haWwgZGVsaXZlcnkgYW5kIHNoYXJlIGxpbmtzJyxcbiAgfSxcbiAgc3VwcG9ydF9zdGFuZGFyZDoge1xuICAgIGxhYmVsOiAnU3RhbmRhcmQgU3VwcG9ydCcsXG4gICAgZGVzY3JpcHRpb246IGBTdXBwb3J0IGNhc2VzIHdpdGggYSBmaXJzdCByZXNwb25zZSB3aXRoaW4gJHtTVVBQT1JUX1JFU1BPTlNFX1RBUkdFVFMuc3VwcG9ydF9zdGFuZGFyZH0sIGJ1c2luZXNzIGhvdXJzYCxcbiAgfSxcbiAgc3VwcG9ydF9wcmlvcml0eToge1xuICAgIGxhYmVsOiAnUHJpb3JpdHkgU3VwcG9ydCcsXG4gICAgZGVzY3JpcHRpb246IGBTdXBwb3J0IGNhc2VzIHdpdGggYSBmaXJzdCByZXNwb25zZSBieSB0aGUgJHtTVVBQT1JUX1JFU1BPTlNFX1RBUkdFVFMuc3VwcG9ydF9wcmlvcml0eX0sIGJ1c2luZXNzIGhvdXJzYCxcbiAgfSxcbiAgc3VwcG9ydF9wcmVtaXVtOiB7XG4gICAgbGFiZWw6ICdQcmVtaXVtIFN1cHBvcnQnLFxuICAgIGRlc2NyaXB0aW9uOiBgMjTDlzcgc3VwcG9ydCBjYXNlcyDigJQgZmlyc3QgcmVzcG9uc2Ugd2l0aGluICR7U1VQUE9SVF9SRVNQT05TRV9UQVJHRVRTLnN1cHBvcnRfcHJlbWl1bX0gb2YgdGhlIHdlZWssIGFuZCB0aGUgb25seSBsZXZlbCB0aGF0IG1heSBkZWNsYXJlIHVyZ2VudCBzZXZlcml0eWAsXG4gIH0sXG4gIHZlcmlmaWVkX3B1Ymxpc2hlcjoge1xuICAgIGxhYmVsOiAnVmVyaWZpZWQgUHVibGlzaGVyIEVsaWdpYmlsaXR5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGx5IGZvciB0aGUgVmVyaWZpZWQgYmFkZ2Ugb24geW91ciBwbHVnaW4tZWNvc3lzdGVtIHB1Ymxpc2hlciAoYXdhcmRlZCBieSBzeXN0ZW0tb3JnIHJldmlldyknLFxuICB9LFxufTtcblxuLy8gUmVzb2x1dGlvbiBsb2dpY1xuXG4vKipcbiAqIFJlc29sdmUgYSB1c2VyJ3MgZWZmZWN0aXZlIGZlYXR1cmUgc2V0LlxuICpcbiAqIDEuIFN5c2FkbWlucyAoaXNTdXBlckFkbWluKSBhbHdheXMgZ2V0IEFMTCBmZWF0dXJlcy5cbiAqIDIuIFN0YXJ0IHdpdGggdGhlIHRpZXIncyBkZWZhdWx0IGZlYXR1cmVzLlxuICogMy4gQXBwbHkgcGVyLXVzZXIgb3ZlcnJpZGVzOiBgdHJ1ZWAgYWRkcyBhIGZlYXR1cmUsIGBmYWxzZWAgcmVtb3ZlcyBpdC5cbiAqIDQuIEludmFsaWQgb3ZlcnJpZGUga2V5cyBhcmUgc2lsZW50bHkgaWdub3JlZC5cbiAqXG4gKiBAcGFyYW0gdGllciAtIFRoZSBvcmdhbml6YXRpb24ncyBxdW90YSB0aWVyXG4gKiBAcGFyYW0gb3B0cyAtIFJlc29sdXRpb24gb3B0aW9uczpcbiAqICAgLSBgb3ZlcnJpZGVzYDogcGVyLXVzZXIgb3ZlcnJpZGVzIChrZXkgPSBmZWF0dXJlIGZsYWcsIHZhbHVlID0gZW5hYmxlZClcbiAqICAgLSBgaXNTdXBlckFkbWluYDogd2hldGhlciB0aGUgdXNlciBoYXMgdGhlIGdsb2JhbCBzdXBlci1hZG1pbiBmbGFnXG4gKiAgIC0gYGFjY291bnRGZWF0dXJlc2A6IGFjY291bnQtbGV2ZWwgZW50aXRsZW1lbnRzIChlLmcuIHB1cmNoYXNlZCBhZGQtb25cbiAqICAgICBidW5kbGVzKS4gQSBOQU1FRCBmaWVsZCBzbyBpdCBjYW4gbmV2ZXIgYmUgc2lsZW50bHkgZHJvcHBlZCBieSBhIGNhbGxlclxuICogICAgIHRoYXQgb21pdHMgYSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZy5cbiAqIEByZXR1cm5zIFNvcnRlZCBhcnJheSBvZiBlbmFibGVkIGZlYXR1cmUgZmxhZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVVc2VyRmVhdHVyZXMoXG4gIHRpZXI6IFF1b3RhVGllcixcbiAgb3B0cz86IHtcbiAgICBvdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB8IG51bGw7XG4gICAgaXNTdXBlckFkbWluPzogYm9vbGVhbjtcbiAgICBhY2NvdW50RmVhdHVyZXM/OiByZWFkb25seSBzdHJpbmdbXSB8IG51bGw7XG4gIH0sXG4pOiBGZWF0dXJlRmxhZ1tdIHtcbiAgY29uc3QgeyBvdmVycmlkZXM6IGZlYXR1cmVPdmVycmlkZXMsIGlzU3VwZXJBZG1pbiwgYWNjb3VudEZlYXR1cmVzIH0gPSBvcHRzID8/IHt9O1xuXG4gIC8vIFN5c2FkbWlucyBnZXQgZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIHRpZXIuXG4gIGlmIChpc1N1cGVyQWRtaW4pIHJldHVybiBbLi4uQUxMX0ZFQVRVUkVfRkxBR1NdO1xuXG4gIC8vIFN0YXJ0IHdpdGggdGllciBkZWZhdWx0c1xuICBjb25zdCBmZWF0dXJlcyA9IG5ldyBTZXQ8RmVhdHVyZUZsYWc+KFRJRVJfRkVBVFVSRVNbdGllcl0gPz8gW10pO1xuXG4gIC8vIEFjY291bnQtbGV2ZWwgZW50aXRsZW1lbnRzIChwdXJjaGFzZWQgZmVhdHVyZSBidW5kbGVzIOKAlCBlLmcuIGF1ZGl0X2xvZywgc3NvLFxuICAvLyBhZHZhbmNlZF9yZXBvcnRpbmcsIHRlYW1fdXNhZ2VfYW5hbHl0aWNzLCBjb21wbGlhbmNlX3N0YW5kYXJkL2FkdmFuY2VkKS5cbiAgLy8gQXBwbGllZCBiZWZvcmUgcGVyLXVzZXIgb3ZlcnJpZGVzIHNvIGFuIGV4cGxpY2l0IHVzZXIgb3ZlcnJpZGUgc3RpbGwgd2lucy5cbiAgaWYgKGFjY291bnRGZWF0dXJlcykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGFjY291bnRGZWF0dXJlcykge1xuICAgICAgaWYgKGlzVmFsaWRGZWF0dXJlRmxhZyhrZXkpKSBmZWF0dXJlcy5hZGQoa2V5KTtcbiAgICB9XG4gIH1cblxuICAvLyBBcHBseSBwZXItdXNlciBvdmVycmlkZXNcbiAgaWYgKGZlYXR1cmVPdmVycmlkZXMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGVuYWJsZWRdIG9mIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVPdmVycmlkZXMpKSB7XG4gICAgICBpZiAoIWlzVmFsaWRGZWF0dXJlRmxhZyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgIGZlYXR1cmVzLmFkZChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmVhdHVyZXMuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJuIGluIGNhbm9uaWNhbCBvcmRlclxuICByZXR1cm4gQUxMX0ZFQVRVUkVfRkxBR1MuZmlsdGVyKGYgPT4gZmVhdHVyZXMuaGFzKGYpKTtcbn1cblxuLyoqXG4gKiBDdXJhdGVkIGNvbXBsaWFuY2UgY29udGVudCBzZXRzIGFuZCB0aGUgZmVhdHVyZSBmbGFnIGVhY2ggb25lIGlzIHNvbGQgdW5kZXIuXG4gKiBBIHNldCBgeGAgaXMgdGhlIHB1Ymxpc2hlZCBydWxlcyB0YWdnZWQgYHNldDo8eD5gOyBhbiBvcmcgaG9sZGluZyB0aGUgZmxhZyBpc1xuICogZW50aXRsZWQgdG8gdGhlbS4gT3JkZXJlZCBmcm9tIHRoZSBsb3dlc3QgZW50aXRsZW1lbnQgdG8gdGhlIGhpZ2hlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QTElBTkNFX1NFVF9GRUFUVVJFUyA9IHtcbiAgc3RhbmRhcmQ6ICdjb21wbGlhbmNlX3N0YW5kYXJkJyxcbiAgYWR2YW5jZWQ6ICdjb21wbGlhbmNlX2FkdmFuY2VkJyxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIEZlYXR1cmVGbGFnPjtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUNvbnRlbnRTZXQgPSBrZXlvZiB0eXBlb2YgQ09NUExJQU5DRV9TRVRfRkVBVFVSRVM7XG5cbi8qKiBFdmVyeSBjdXJhdGVkIHNldCBuYW1lLCBsb3dlc3QgZW50aXRsZW1lbnQgZmlyc3QuICovXG5leHBvcnQgY29uc3QgQ09NUExJQU5DRV9DT05URU5UX1NFVFMgPSBPYmplY3Qua2V5cyhDT01QTElBTkNFX1NFVF9GRUFUVVJFUykgYXMgQ29tcGxpYW5jZUNvbnRlbnRTZXRbXTtcblxuLyoqIFRoZSBjdXJhdGVkIHNldHMgYW4gZWZmZWN0aXZlIGZlYXR1cmUgc2V0IGVudGl0bGVzIChzdGFibGUgb3JkZXIpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsaWFuY2VTZXRzRm9yRmVhdHVyZXMoZmVhdHVyZXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogQ29tcGxpYW5jZUNvbnRlbnRTZXRbXSB7XG4gIHJldHVybiBDT01QTElBTkNFX0NPTlRFTlRfU0VUUy5maWx0ZXIoKHNldCkgPT4gZmVhdHVyZXMuaW5jbHVkZXMoQ09NUExJQU5DRV9TRVRfRkVBVFVSRVNbc2V0XSkpO1xufVxuXG4vKipcbiAqIFRoZSBmZWF0dXJlIGEgcHVibGlzaGVkIHJ1bGUncyBgc2V0Ojx4PmAgdGFncyByZXF1aXJlLCBvciBgbnVsbGAgZm9yIGFuXG4gKiB1bnRhZ2dlZCAoYmFzZWxpbmUpIHJ1bGUuIFRoZSBoaWdoZXN0IGVudGl0bGVtZW50IHdpbnMgd2hlbiBhIHJ1bGUgY2Fycmllc1xuICogc2V2ZXJhbC4gQWNjZXB0cyBhIHJhdyBqc29uYiBgdGFnc2AgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGlhbmNlRmVhdHVyZUZvclRhZ3ModGFnczogdW5rbm93bik6IEZlYXR1cmVGbGFnIHwgbnVsbCB7XG4gIGNvbnN0IHQgPSBBcnJheS5pc0FycmF5KHRhZ3MpID8gdGFncyA6IFtdO1xuICBmb3IgKGNvbnN0IHNldCBvZiBbLi4uQ09NUExJQU5DRV9DT05URU5UX1NFVFNdLnJldmVyc2UoKSkge1xuICAgIGlmICh0LmluY2x1ZGVzKGBzZXQ6JHtzZXR9YCkpIHJldHVybiBDT01QTElBTkNFX1NFVF9GRUFUVVJFU1tzZXRdO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
@@ -8,7 +8,7 @@ export * from './reserved-tags.js';
8
8
  export * from './quota-catalog.js';
9
9
  export * from './wire-vocabulary.js';
10
10
  export { type ComplianceExemptionRequest } from './compliance-exemption.js';
11
- export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, type PluginCatalogCategory, PLUGIN_CATALOG_FIELDS, type PluginCatalogField, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, type MetadataSource, type MetadataSources, MANAGED_TOOLCHAIN_PLUGINS, type ManagedToolchainPlugin, isManagedToolchainPlugin, managedToolchainRefName, managedRefPinsVersion, toolchainReleasePin, BUILD_IMAGE_STEP_KEY, BUILD_IMAGE_MANIFEST_STAGE, BUILD_IMAGE_MANIFEST_ACTION, } from './plugin-catalog.js';
11
+ export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, type PluginCatalogCategory, PLUGIN_CATALOG_FIELDS, type PluginCatalogField, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, type MetadataSource, type MetadataSources, MANAGED_TOOLCHAIN, TOOLCHAIN_RESOLVED_VIA, type ToolchainResolvedVia, TOOLCHAIN_RELEASE_STATUSES, type ToolchainReleaseStatus, TOOLCHAIN_METADATA_PREFIX, MANAGED_TOOLCHAIN_PLUGINS, type ManagedToolchainPlugin, isManagedToolchainPlugin, managedToolchainRefName, managedRefPinsVersion, toolchainReleasePin, BUILD_IMAGE_STEP_KEY, BUILD_IMAGE_MANIFEST_STAGE, BUILD_IMAGE_MANIFEST_ACTION, } from './plugin-catalog.js';
12
12
  export { type HttpRequest, } from './http.js';
13
13
  export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, type QuotaTier, type QuotaTierLimits, QUOTA_TIERS, VALID_TIERS, STANDARD_TIERS, TEAM_CAPABLE_TIERS, SEAT_PACK_TIERS, seatRemedy, type SeatRemedy, DEFAULT_TIER, QUOTA_RESET_DAYS, CPU_CREDITS_PERIOD_DAYS, quotaPeriodDays, nextQuotaResetDate, AUTOMATION_CALLS_SIZING, automationCallsFor, quotaGracePct, enforcedQuotaLimit, } from './quota-tiers.js';
14
14
  export * from './build-catalog.js';
@@ -12,7 +12,7 @@ export * from './reserved-tags.js';
12
12
  export * from './quota-catalog.js';
13
13
  export * from './wire-vocabulary.js';
14
14
  export {} from './compliance-exemption.js';
15
- export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, PLUGIN_CATALOG_FIELDS, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, MANAGED_TOOLCHAIN_PLUGINS, isManagedToolchainPlugin, managedToolchainRefName, managedRefPinsVersion, toolchainReleasePin, BUILD_IMAGE_STEP_KEY, BUILD_IMAGE_MANIFEST_STAGE, BUILD_IMAGE_MANIFEST_ACTION, } from './plugin-catalog.js';
15
+ export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, PLUGIN_CATALOG_FIELDS, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, MANAGED_TOOLCHAIN, TOOLCHAIN_RESOLVED_VIA, TOOLCHAIN_RELEASE_STATUSES, TOOLCHAIN_METADATA_PREFIX, MANAGED_TOOLCHAIN_PLUGINS, isManagedToolchainPlugin, managedToolchainRefName, managedRefPinsVersion, toolchainReleasePin, BUILD_IMAGE_STEP_KEY, BUILD_IMAGE_MANIFEST_STAGE, BUILD_IMAGE_MANIFEST_ACTION, } from './plugin-catalog.js';
16
16
  export {} from './http.js';
17
17
  export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, QUOTA_TIERS, VALID_TIERS, STANDARD_TIERS, TEAM_CAPABLE_TIERS, SEAT_PACK_TIERS, seatRemedy, DEFAULT_TIER, QUOTA_RESET_DAYS, CPU_CREDITS_PERIOD_DAYS, quotaPeriodDays, nextQuotaResetDate, AUTOMATION_CALLS_SIZING, automationCallsFor, quotaGracePct, enforcedQuotaLimit, } from './quota-tiers.js';
18
18
  // The build class/size catalog: ids, labels, credit multipliers, tier floors
@@ -33,4 +33,4 @@ export { isEcosystemNotificationEvent, parseEcosystemNotifyRequest, nextEcosyste
33
33
  export { publisherTermsVersion, publisherHandleProblem, isOfficialAutoApprovalEnabled, isPluginPublishingEnabled, isAnonymousSubmissionsEnabled, isPluginReviewsEnabled, OFFICIAL_CATALOG_LOADER_ACCOUNT, DEFAULT_PUBLISHER_TERMS_VERSION, BUILTIN_RESERVED_HANDLES, TENANT_REQUEST_KINDS, PUBLISH_PERMISSION_REQUEST_KINDS, VERIFY_REQUEST_KINDS, STEP_UP_REQUEST_KINDS, REQUEST_SLA_HOURS, } from './ecosystem.js';
34
34
  export { ageScore, vulnScore, computeHealthScore, publisherHealthScore, publisherSuccessRate, healthBand, HEALTH_COMPONENTS, HEALTH_WEIGHTS, } from './plugin-health.js';
35
35
  export { applyVulnWaivers, asScanFlag, describeFindings, describeFix, atOrAboveFailOn, exceedsVulnFloor, failOnLabel, gatedFindingCount, summaryContradicts, summaryDescribes, gatedFixableCount, isGatedFinding, newScanFindings, parseVulnWaivers, parseVulnWaiversVerbose, pluginVulnFailOn, pluginVulnGateKev, pluginVulnMaxFindings, SCAN_FLAG_TOP_FINDINGS, SCAN_SUMMARY_MAX_BINARIES, SCAN_SUMMARY_MAX_FINDINGS, scanFindingKey, vulnFlaggedMessage, vulnFlaggedWarning, vulnWaiverLabels, } from './plugin-scan.js';
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFlBQVksRUFFWixlQUFlLEVBS2YsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixrQkFBa0IsR0FNbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsY0FBYyxlQUFlLENBQUM7QUFDOUIsT0FBTyxFQU1OLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVOLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGlGQUFpRjtBQUNqRixnRkFBZ0Y7QUFDaEYsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFBbUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUVyQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBR2hCLHlCQUF5QixFQUV6Qix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQiwyQkFBMkIsR0FDNUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRU4sTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGFBQWEsRUFHYixXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFFVixZQUFZ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QUNkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGdCQUFnQixHQVVqQixNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7IEVycm9yQ29kZSwgZ2V0U3RhdHVzRm9yRXJyb3JDb2RlIH0gZnJvbSAnLi9lcnJvci1jb2Rlcy5qcyc7XG5leHBvcnQge1xuICBpc1ZhbGlkUXVvdGFUeXBlLFxuICB0eXBlIFRva2VuU2NvcGUsXG4gIFRPS0VOX1NDT1BFUyxcbiAgdHlwZSBQcmluY2lwYWxUeXBlLFxuICBQUklOQ0lQQUxfVFlQRVMsXG4gIHR5cGUgVG9rZW5Vc2UsXG4gIHR5cGUgQXV0aE1ldGhvZCxcbiAgdHlwZSBBc3N1cmFuY2VMZXZlbCxcbiAgdHlwZSBRdW90YVR5cGUsXG4gIFZBTElEX1FVT1RBX1RZUEVTLFxuICBRVU9UQV9UWVBFX0xBQkVMUyxcbiAgUVVPVEFfVVBHUkFERV9QQVRILFxuICB0eXBlIFF1b3RhQ2hlY2tSZXN1bHQsXG4gIHR5cGUgUXVvdGFJbmZvLFxuICB0eXBlIEFwaVJlc3BvbnNlLFxuICB0eXBlIEp3dFBheWxvYWQsXG4gIHR5cGUgSGVhbHRoQ2hlY2tSZXNwb25zZSxcbn0gZnJvbSAnLi9jb21tb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS5qcyc7XG5leHBvcnQge1xuICB0eXBlIExpZmVjeWNsZSxcbiAgdHlwZSBDcml0aWNhbGl0eSxcbiAgdHlwZSBPd25lclR5cGUsXG4gIHR5cGUgRW50aXR5TGluayxcbiAgdHlwZSBFbnRpdHlMYWJlbHMsXG59IGZyb20gJy4vY2F0YWxvZy1tZXRhZGF0YS5qcyc7XG5leHBvcnQge1xuICB0eXBlIFRlbXBsYXRlSW5wdXQsXG59IGZyb20gJy4vcGlwZWxpbmUtdGVtcGxhdGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi92aXNpYmlsaXR5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzZXJ2ZWQtdGFncy5qcyc7XG4vLyBXaGF0IGVhY2ggcXVvdGEgdHlwZSBpcyBjYWxsZWQgYW5kIGhvdyBpdHMgbnVtYmVyIHJlbmRlcnMg4oCUIHRoZSBvbmUgc291cmNlIHRoZVxuLy8gYnJvd3NlciBhbHNvIGltcG9ydHMgZGlyZWN0bHkgdmlhIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZS9xdW90YS1jYXRhbG9nYC5cbmV4cG9ydCAqIGZyb20gJy4vcXVvdGEtY2F0YWxvZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpcmUtdm9jYWJ1bGFyeS5qcyc7XG5leHBvcnQgeyB0eXBlIENvbXBsaWFuY2VFeGVtcHRpb25SZXF1ZXN0IH0gZnJvbSAnLi9jb21wbGlhbmNlLWV4ZW1wdGlvbi5qcyc7XG5leHBvcnQge1xuICBQTFVHSU5fU1VNTUFSWV9NQVgsXG4gIFBMVUdJTl9SRUFETUVfTUFYX0JZVEVTLFxuICBQTFVHSU5fQ0hBTkdFTE9HX01BWF9CWVRFUyxcbiAgUExVR0lOX0NBVEVHT1JJRVMsXG4gIHR5cGUgUGx1Z2luQ2F0YWxvZ0NhdGVnb3J5LFxuICBQTFVHSU5fQ0FUQUxPR19GSUVMRFMsXG4gIHR5cGUgUGx1Z2luQ2F0YWxvZ0ZpZWxkLFxuICBQTFVHSU5fQ0FUQUxPR19MSU5LX0ZJRUxEUyxcbiAgTUVUQURBVEFfU09VUkNFUyxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZSxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZXMsXG4gIE1BTkFHRURfVE9PTENIQUlOX1BMVUdJTlMsXG4gIHR5cGUgTWFuYWdlZFRvb2xjaGFpblBsdWdpbixcbiAgaXNNYW5hZ2VkVG9vbGNoYWluUGx1Z2luLFxuICBtYW5hZ2VkVG9vbGNoYWluUmVmTmFtZSxcbiAgbWFuYWdlZFJlZlBpbnNWZXJzaW9uLFxuICB0b29sY2hhaW5SZWxlYXNlUGluLFxuICBCVUlMRF9JTUFHRV9TVEVQX0tFWSxcbiAgQlVJTERfSU1BR0VfTUFOSUZFU1RfU1RBR0UsXG4gIEJVSUxEX0lNQUdFX01BTklGRVNUX0FDVElPTixcbn0gZnJvbSAnLi9wbHVnaW4tY2F0YWxvZy5qcyc7XG5leHBvcnQge1xuICB0eXBlIEh0dHBSZXF1ZXN0LFxufSBmcm9tICcuL2h0dHAuanMnO1xuZXhwb3J0IHtcbiAgdGllckFsbG93c1RlYW1zLFxuICBpc0JpbGxpbmdFbmFibGVkLFxuICBpc1ZhbGlkVGllcixcbiAgZ2V0VGllckxpbWl0cyxcbiAgdHlwZSBRdW90YVRpZXIsXG4gIHR5cGUgUXVvdGFUaWVyTGltaXRzLFxuICBRVU9UQV9USUVSUyxcbiAgVkFMSURfVElFUlMsXG4gIFNUQU5EQVJEX1RJRVJTLFxuICBURUFNX0NBUEFCTEVfVElFUlMsXG4gIFNFQVRfUEFDS19USUVSUyxcbiAgc2VhdFJlbWVkeSxcbiAgdHlwZSBTZWF0UmVtZWR5LFxuICBERUZBVUxUX1RJRVIsXG4gIFFVT1RBX1JFU0VUX0RBWVMsXG4gIENQVV9DUkVESVRTX1BFUklPRF9EQVlTLFxuICBxdW90YVBlcmlvZERheXMsXG4gIG5leHRRdW90YVJlc2V0RGF0ZSxcbiAgQVVUT01BVElPTl9DQUxMU19TSVpJTkcsXG4gIGF1dG9tYXRpb25DYWxsc0ZvcixcbiAgcXVvdGFHcmFjZVBjdCxcbiAgZW5mb3JjZWRRdW90YUxpbWl0LFxufSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcbi8vIFRoZSBidWlsZCBjbGFzcy9zaXplIGNhdGFsb2c6IGlkcywgbGFiZWxzLCBjcmVkaXQgbXVsdGlwbGllcnMsIHRpZXIgZmxvb3JzXG4vLyBhbmQgcGVyLWNsYXNzIHNsb3QgZGVmYXVsdHMuIERlcGVuZGVuY3ktZnJlZSwgc28gdGhlIGJyb3dzZXIgaW1wb3J0cyBpdFxuLy8gdGhyb3VnaCB0aGUgYC4vYnVpbGQtY2F0YWxvZ2Agc3VicGF0aCBpbnN0ZWFkIG9mIG1pcnJvcmluZyBpdC5cbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQtY2F0YWxvZy5qcyc7XG4vLyBXaGVyZSBhIHF1b3RhIGNvdW50ZXIgaXMgSEVBREVELiBEZXBlbmRlbmN5LWZyZWUgYW5kIGJyb3dzZXItaW1wb3J0ZWRcbi8vIHRocm91Z2ggYC4vdXNhZ2UtcHJvamVjdGlvbmAsIHNvIHRoZSBxdW90YSBjYXJkJ3MgZm9yZWNhc3QsIHRoZSB0aHJlc2hvbGRcbi8vIG5vdGljZSBhbmQgdGhlIHVzYWdlIHByb2ZpbGUncyB0cmFqZWN0b3J5IHNpZ25hbCBzaGFyZSBPTkUgZm9ybXVsYS5cbmV4cG9ydCAqIGZyb20gJy4vdXNhZ2UtcHJvamVjdGlvbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtZmxhZ3MuanMnO1xuZXhwb3J0IHtcbiAgcGVybWlzc2lvbkxhYmVsLFxuICBpc1ZhbGlkUGVybWlzc2lvbixcbiAgaXNTeXN0ZW1PcmdPbmx5UGVybWlzc2lvbixcbiAgaXNPcmdBc3NpZ25hYmxlUGVybWlzc2lvbixcbiAgbm9ybWFsaXplUGVybWlzc2lvblN1YnNldCxcbiAgaW50ZXJzZWN0UGVybWlzc2lvbnMsXG4gIHJlc29sdmVVc2VyUGVybWlzc2lvbnMsXG4gIGNvbmZpbmVQZXJtaXNzaW9uc1RvT3JnLFxuICBoYXNQZXJtaXNzaW9uLFxuICB0eXBlIFBlcm1pc3Npb24sXG4gIEFMTF9QRVJNSVNTSU9OUyxcbiAgUk9MRV9URU1QTEFURVMsXG4gIHR5cGUgUm9sZVRlbXBsYXRlLFxuICBQRVJNSVNTSU9OX0FDVElPTlMsXG4gIFBFUk1JU1NJT05fSURfU0hBUEUsXG4gIFBFUk1JU1NJT05fR0FURVMsXG4gIFBFUk1JU1NJT05fQ0FUQUxPRyxcbiAgU1VQRVJBRE1JTl9PTkxZX1BFUk1JU1NJT05TLFxuICBTWVNURU1fT1JHX09OTFlfUEVSTUlTU0lPTlMsXG4gIE9SR19BU1NJR05BQkxFX1BFUk1JU1NJT05TLFxuICBPUkdfQVNTSUdOQUJMRV9DQVRFR09SSUVTLFxuICBSRUFEX09OTFlfUEVSTUlTU0lPTlMsXG4gIFJPTEVfUEVSTUlTU0lPTlMsXG4gIEVDT1NZU1RFTV9NQU5BR0VSX1BFUk1JU1NJT05TLFxuICBQVUJMSVNIRVJfVkVSSUZJRVJfUEVSTUlTU0lPTlMsXG4gIFBMQVRGT1JNX09QRVJBVE9SX1BFUk1JU1NJT05TLFxuICBBQ0NPVU5UX01BTkFHRVJfUEVSTUlTU0lPTlMsXG4gIENPTlNPTEVfQURNSU5fUEVSTUlTU0lPTlMsXG4gIFBMQVRGT1JNX09CU0VSVkVSX1BFUk1JU1NJT05TLFxuICBTVVBQT1JUX0FHRU5UX1BFUk1JU1NJT05TLFxuICBTVVBQT1JUX0xFQURfUEVSTUlTU0lPTlMsXG4gIFNFRURfQlVORExFUyxcbiAgU0VFRF9CVU5ETEVfSURTLFxuICBTWVNURU1fT1JHX0pPQl9CVU5ETEVTLFxuICBPUkdfQVVUT01BVElPTl9CVU5ETEVTLFxuICBBVVRPTUFUSU9OX0FDQ09VTlRfQlVORExFUyxcbiAgdHlwZSBTZWVkQnVuZGxlSWQsXG4gIFJFR0lTVFJZX09QRVJBVE9SX1BFUk1JU1NJT05TLFxuICBURUFNX0xFQURfUEVSTUlTU0lPTlMsXG4gIFBJUEVMSU5FX0FVVE9NQVRJT05fUEVSTUlTU0lPTlMsXG4gIFBJUEVMSU5FX1JFR0lTVFJBVElPTl9QRVJNSVNTSU9OUyxcbn0gZnJvbSAnLi9wZXJtaXNzaW9ucy5qcyc7XG5leHBvcnQge1xuICBNRVRBREFUQV9LRVlfQ0FUQUxPRyxcbiAgTWV0YWRhdGFLZXlzLFxuICB0eXBlIE1ldGFkYXRhS2V5LFxuICB0eXBlIE1ldGFkYXRhS2V5T3B0aW9uLFxuICBNRVRBREFUQV9LRVlfR1JPVVBTLFxufSBmcm9tICcuL21ldGFkYXRhLWtleXMuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBBdWRpdEV2ZW50LFxufSBmcm9tICcuL2F1ZGl0LWV2ZW50cy5qcyc7XG5leHBvcnQge1xuICBSRU1PVEVfQVVESVRfQUNUSU9OUyxcbiAgaXNSZW1vdGVBdWRpdEFjdGlvbixcbiAgdHlwZSBSZW1vdGVBdWRpdEFjdGlvbixcbn0gZnJvbSAnLi9yZW1vdGUtYXVkaXQtYWN0aW9ucy5qcyc7XG5leHBvcnQge1xuICBBU0tfQUdFTlRfUFJPUE9TRVIsXG4gIEFTS19QUk9QT1NFRF9CWV9IRUFERVIsXG4gIFBST1BPU0VEX0JZX0RFVEFJTF9LRVksXG4gIGFza1Byb3Bvc2FsQXVkaXREZXRhaWxzLFxuICByZWFkUHJvcG9zZXJDbGFpbSxcbiAgd2l0aFByb3Bvc2FsUHJvdmVuYW5jZSxcbiAgQVNLX1BST1BPU0FMX1BFUk1JU1NJT04sXG4gIE9SR19TRVRUSU5HX1BST1BPU0FMX0FMTE9XTElTVCxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfRVhDTFVTSU9OUyxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfS0VZUyxcbiAgaXNQcm9wb3NhYmxlT3JnU2V0dGluZyxcbiAgaXNWYWxpZE9yZ1NldHRpbmdWYWx1ZSxcbiAgb3JnU2V0dGluZ1NwZWMsXG4gIHBpY2tBbGxvd2VkLFxuICBkaWZmT3JnU2V0dGluZ3MsXG4gIG9yZ1NldHRpbmdSZXF1ZXN0cyxcbiAgdHlwZSBBc2tQcm9wb3NhbEtpbmQsXG4gIHR5cGUgQXNrUHJvcG9zYWxQcm92ZW5hbmNlLFxuICB0eXBlIFByb3Bvc2VyQ2xhaW0sXG4gIHR5cGUgT3JnU2V0dGluZ0NoYW5nZSxcbiAgdHlwZSBPcmdTZXR0aW5nS2V5LFxuICB0eXBlIE9yZ1NldHRpbmdQYXRjaCxcbiAgdHlwZSBPcmdTZXR0aW5nUmVxdWVzdCxcbiAgdHlwZSBPcmdTZXR0aW5nU2hhcGUsXG4gIHR5cGUgT3JnU2V0dGluZ1NwZWMsXG4gIHR5cGUgT3JnU2V0dGluZ1N1cmZhY2UsXG4gIHR5cGUgT3JnU2V0dGluZ1ZhbHVlLFxuICB0eXBlIFBpY2tBbGxvd2VkUmVzdWx0LFxufSBmcm9tICcuL2Fzay1wcm9wb3NhbHMuanMnO1xuZXhwb3J0IHtcbiAgaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCxcbiAgcGFyc2VFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0LFxuICBuZXh0RWNvc3lzdGVtRGlnZXN0VGltZSxcbiAgcmVuZGVyRWNvc3lzdGVtTWFuYWdlckNoYW5nZSxcbiAgcmVuZGVyRWNvc3lzdGVtRGlnZXN0LFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCxcbiAgRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTLFxuICB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkLFxuICBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRF9OQU1FUyxcbiAgRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFMsXG4gIHR5cGUgRWNvc3lzdGVtUmVjaXBpZW50U3BlYyxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0LFxufSBmcm9tICcuL2Vjb3N5c3RlbS1ub3RpZmljYXRpb25zLmpzJztcbmV4cG9ydCB7XG4gIHB1Ymxpc2hlclRlcm1zVmVyc2lvbixcbiAgcHVibGlzaGVySGFuZGxlUHJvYmxlbSxcbiAgaXNPZmZpY2lhbEF1dG9BcHByb3ZhbEVuYWJsZWQsXG4gIGlzUGx1Z2luUHVibGlzaGluZ0VuYWJsZWQsXG4gIGlzQW5vbnltb3VzU3VibWlzc2lvbnNFbmFibGVkLFxuICBpc1BsdWdpblJldmlld3NFbmFibGVkLFxuICBPRkZJQ0lBTF9DQVRBTE9HX0xPQURFUl9BQ0NPVU5ULFxuICBERUZBVUxUX1BVQkxJU0hFUl9URVJNU19WRVJTSU9OLFxuICBCVUlMVElOX1JFU0VSVkVEX0hBTkRMRVMsXG4gIFRFTkFOVF9SRVFVRVNUX0tJTkRTLFxuICBQVUJMSVNIX1BFUk1JU1NJT05fUkVRVUVTVF9LSU5EUyxcbiAgVkVSSUZZX1JFUVVFU1RfS0lORFMsXG4gIFNURVBfVVBfUkVRVUVTVF9LSU5EUyxcbiAgUkVRVUVTVF9TTEFfSE9VUlMsXG59IGZyb20gJy4vZWNvc3lzdGVtLmpzJztcbmV4cG9ydCB7XG4gIGFnZVNjb3JlLFxuICB2dWxuU2NvcmUsXG4gIGNvbXB1dGVIZWFsdGhTY29yZSxcbiAgcHVibGlzaGVySGVhbHRoU2NvcmUsXG4gIHB1Ymxpc2hlclN1Y2Nlc3NSYXRlLFxuICBoZWFsdGhCYW5kLFxuICBIRUFMVEhfQ09NUE9ORU5UUyxcbiAgSEVBTFRIX1dFSUdIVFMsXG4gIHR5cGUgSGVhbHRoQnJlYWtkb3duLFxuICB0eXBlIEhlYWx0aENvbXBvbmVudFNjb3JlLFxuICB0eXBlIEhlYWx0aFJlc3VsdCxcbiAgdHlwZSBIZWFsdGhJbnB1dHMsXG4gIHR5cGUgSGVhbHRoQmFuZCxcbn0gZnJvbSAnLi9wbHVnaW4taGVhbHRoLmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5VnVsbldhaXZlcnMsXG4gIGFzU2NhbkZsYWcsXG4gIGRlc2NyaWJlRmluZGluZ3MsXG4gIGRlc2NyaWJlRml4LFxuICBhdE9yQWJvdmVGYWlsT24sXG4gIGV4Y2VlZHNWdWxuRmxvb3IsXG4gIGZhaWxPbkxhYmVsLFxuICBnYXRlZEZpbmRpbmdDb3VudCxcbiAgc3VtbWFyeUNvbnRyYWRpY3RzLFxuICBzdW1tYXJ5RGVzY3JpYmVzLFxuICBnYXRlZEZpeGFibGVDb3VudCxcbiAgaXNHYXRlZEZpbmRpbmcsXG4gIG5ld1NjYW5GaW5kaW5ncyxcbiAgcGFyc2VWdWxuV2FpdmVycyxcbiAgcGFyc2VWdWxuV2FpdmVyc1ZlcmJvc2UsXG4gIHBsdWdpblZ1bG5GYWlsT24sXG4gIHBsdWdpblZ1bG5HYXRlS2V2LFxuICBwbHVnaW5WdWxuTWF4RmluZGluZ3MsXG4gIFNDQU5fRkxBR19UT1BfRklORElOR1MsXG4gIFNDQU5fU1VNTUFSWV9NQVhfQklOQVJJRVMsXG4gIFNDQU5fU1VNTUFSWV9NQVhfRklORElOR1MsXG4gIHNjYW5GaW5kaW5nS2V5LFxuICB2dWxuRmxhZ2dlZE1lc3NhZ2UsXG4gIHZ1bG5GbGFnZ2VkV2FybmluZyxcbiAgdnVsbldhaXZlckxhYmVscyxcbiAgdHlwZSBQbHVnaW5TY2FuRmluZGluZyxcbiAgdHlwZSBQbHVnaW5TY2FuRmxhZyxcbiAgdHlwZSBQbHVnaW5WdWxuRmFpbE9uLFxuICB0eXBlIFBsdWdpblNjYW5TdW1tYXJ5LFxuICB0eXBlIFZ1bG5GbGFnZ2VkV2FybmluZyxcbiAgdHlwZSBWdWxuV2FpdmVyLFxuICB0eXBlIFZ1bG5XYWl2ZXJQYXJzZSxcbiAgdHlwZSBWdWxuV2FpdmVyUHJvYmxlbSxcbiAgdHlwZSBXYWl2ZXJPdXRjb21lLFxufSBmcm9tICcuL3BsdWdpbi1zY2FuLmpzJztcbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFlBQVksRUFFWixlQUFlLEVBS2YsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixrQkFBa0IsR0FNbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsY0FBYyxlQUFlLENBQUM7QUFDOUIsT0FBTyxFQU1OLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVOLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGlGQUFpRjtBQUNqRixnRkFBZ0Y7QUFDaEYsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFBbUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUVyQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBR2hCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFFdEIsMEJBQTBCLEVBRTFCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFFekIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsMkJBQTJCLEdBQzVCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVOLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxhQUFhLEVBR2IsV0FBVyxFQUNYLFdBQVcs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LEVBQ2pCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FVakIsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgeyBFcnJvckNvZGUsIGdldFN0YXR1c0ZvckVycm9yQ29kZSB9IGZyb20gJy4vZXJyb3ItY29kZXMuanMnO1xuZXhwb3J0IHtcbiAgaXNWYWxpZFF1b3RhVHlwZSxcbiAgdHlwZSBUb2tlblNjb3BlLFxuICBUT0tFTl9TQ09QRVMsXG4gIHR5cGUgUHJpbmNpcGFsVHlwZSxcbiAgUFJJTkNJUEFMX1RZUEVTLFxuICB0eXBlIFRva2VuVXNlLFxuICB0eXBlIEF1dGhNZXRob2QsXG4gIHR5cGUgQXNzdXJhbmNlTGV2ZWwsXG4gIHR5cGUgUXVvdGFUeXBlLFxuICBWQUxJRF9RVU9UQV9UWVBFUyxcbiAgUVVPVEFfVFlQRV9MQUJFTFMsXG4gIFFVT1RBX1VQR1JBREVfUEFUSCxcbiAgdHlwZSBRdW90YUNoZWNrUmVzdWx0LFxuICB0eXBlIFF1b3RhSW5mbyxcbiAgdHlwZSBBcGlSZXNwb25zZSxcbiAgdHlwZSBKd3RQYXlsb2FkLFxuICB0eXBlIEhlYWx0aENoZWNrUmVzcG9uc2UsXG59IGZyb20gJy4vY29tbW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBMaWZlY3ljbGUsXG4gIHR5cGUgQ3JpdGljYWxpdHksXG4gIHR5cGUgT3duZXJUeXBlLFxuICB0eXBlIEVudGl0eUxpbmssXG4gIHR5cGUgRW50aXR5TGFiZWxzLFxufSBmcm9tICcuL2NhdGFsb2ctbWV0YWRhdGEuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBUZW1wbGF0ZUlucHV0LFxufSBmcm9tICcuL3BpcGVsaW5lLXRlbXBsYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2VydmVkLXRhZ3MuanMnO1xuLy8gV2hhdCBlYWNoIHF1b3RhIHR5cGUgaXMgY2FsbGVkIGFuZCBob3cgaXRzIG51bWJlciByZW5kZXJzIOKAlCB0aGUgb25lIHNvdXJjZSB0aGVcbi8vIGJyb3dzZXIgYWxzbyBpbXBvcnRzIGRpcmVjdGx5IHZpYSBgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUvcXVvdGEtY2F0YWxvZ2AuXG5leHBvcnQgKiBmcm9tICcuL3F1b3RhLWNhdGFsb2cuanMnO1xuZXhwb3J0ICogZnJvbSAnLi93aXJlLXZvY2FidWxhcnkuanMnO1xuZXhwb3J0IHsgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uUmVxdWVzdCB9IGZyb20gJy4vY29tcGxpYW5jZS1leGVtcHRpb24uanMnO1xuZXhwb3J0IHtcbiAgUExVR0lOX1NVTU1BUllfTUFYLFxuICBQTFVHSU5fUkVBRE1FX01BWF9CWVRFUyxcbiAgUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsXG4gIFBMVUdJTl9DQVRFR09SSUVTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dDYXRlZ29yeSxcbiAgUExVR0lOX0NBVEFMT0dfRklFTERTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dGaWVsZCxcbiAgUExVR0lOX0NBVEFMT0dfTElOS19GSUVMRFMsXG4gIE1FVEFEQVRBX1NPVVJDRVMsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2UsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2VzLFxuICBNQU5BR0VEX1RPT0xDSEFJTixcbiAgVE9PTENIQUlOX1JFU09MVkVEX1ZJQSxcbiAgdHlwZSBUb29sY2hhaW5SZXNvbHZlZFZpYSxcbiAgVE9PTENIQUlOX1JFTEVBU0VfU1RBVFVTRVMsXG4gIHR5cGUgVG9vbGNoYWluUmVsZWFzZVN0YXR1cyxcbiAgVE9PTENIQUlOX01FVEFEQVRBX1BSRUZJWCxcbiAgTUFOQUdFRF9UT09MQ0hBSU5fUExVR0lOUyxcbiAgdHlwZSBNYW5hZ2VkVG9vbGNoYWluUGx1Z2luLFxuICBpc01hbmFnZWRUb29sY2hhaW5QbHVnaW4sXG4gIG1hbmFnZWRUb29sY2hhaW5SZWZOYW1lLFxuICBtYW5hZ2VkUmVmUGluc1ZlcnNpb24sXG4gIHRvb2xjaGFpblJlbGVhc2VQaW4sXG4gIEJVSUxEX0lNQUdFX1NURVBfS0VZLFxuICBCVUlMRF9JTUFHRV9NQU5JRkVTVF9TVEFHRSxcbiAgQlVJTERfSU1BR0VfTUFOSUZFU1RfQUNUSU9OLFxufSBmcm9tICcuL3BsdWdpbi1jYXRhbG9nLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgSHR0cFJlcXVlc3QsXG59IGZyb20gJy4vaHR0cC5qcyc7XG5leHBvcnQge1xuICB0aWVyQWxsb3dzVGVhbXMsXG4gIGlzQmlsbGluZ0VuYWJsZWQsXG4gIGlzVmFsaWRUaWVyLFxuICBnZXRUaWVyTGltaXRzLFxuICB0eXBlIFF1b3RhVGllcixcbiAgdHlwZSBRdW90YVRpZXJMaW1pdHMsXG4gIFFVT1RBX1RJRVJTLFxuICBWQUxJRF9USUVSUyxcbiAgU1RBTkRBUkRfVElFUlMsXG4gIFRFQU1fQ0FQQUJMRV9USUVSUyxcbiAgU0VBVF9QQUNLX1RJRVJTLFxuICBzZWF0UmVtZWR5LFxuICB0eXBlIFNlYXRSZW1lZHksXG4gIERFRkFVTFRfVElFUixcbiAgUVVPVEFfUkVTRVRfREFZUyxcbiAgQ1BVX0NSRURJVFNfUEVSSU9EX0RBWVMsXG4gIHF1b3RhUGVyaW9kRGF5cyxcbiAgbmV4dFF1b3RhUmVzZXREYXRlLFxuICBBVVRPTUFUSU9OX0NBTExTX1NJWklORyxcbiAgYXV0b21hdGlvbkNhbGxzRm9yLFxuICBxdW90YUdyYWNlUGN0LFxuICBlbmZvcmNlZFF1b3RhTGltaXQsXG59IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuLy8gVGhlIGJ1aWxkIGNsYXNzL3NpemUgY2F0YWxvZzogaWRzLCBsYWJlbHMsIGNyZWRpdCBtdWx0aXBsaWVycywgdGllciBmbG9vcnNcbi8vIGFuZCBwZXItY2xhc3Mgc2xvdCBkZWZhdWx0cy4gRGVwZW5kZW5jeS1mcmVlLCBzbyB0aGUgYnJvd3NlciBpbXBvcnRzIGl0XG4vLyB0aHJvdWdoIHRoZSBgLi9idWlsZC1jYXRhbG9nYCBzdWJwYXRoIGluc3RlYWQgb2YgbWlycm9yaW5nIGl0LlxuZXhwb3J0ICogZnJvbSAnLi9idWlsZC1jYXRhbG9nLmpzJztcbi8vIFdoZXJlIGEgcXVvdGEgY291bnRlciBpcyBIRUFERUQuIERlcGVuZGVuY3ktZnJlZSBhbmQgYnJvd3Nlci1pbXBvcnRlZFxuLy8gdGhyb3VnaCBgLi91c2FnZS1wcm9qZWN0aW9uYCwgc28gdGhlIHF1b3RhIGNhcmQncyBmb3JlY2FzdCwgdGhlIHRocmVzaG9sZFxuLy8gbm90aWNlIGFuZCB0aGUgdXNhZ2UgcHJvZmlsZSdzIHRyYWplY3Rvcnkgc2lnbmFsIHNoYXJlIE9ORSBmb3JtdWxhLlxuZXhwb3J0ICogZnJvbSAnLi91c2FnZS1wcm9qZWN0aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZS1mbGFncy5qcyc7XG5leHBvcnQge1xuICBwZXJtaXNzaW9uTGFiZWwsXG4gIGlzVmFsaWRQZXJtaXNzaW9uLFxuICBpc1N5c3RlbU9yZ09ubHlQZXJtaXNzaW9uLFxuICBpc09yZ0Fzc2lnbmFibGVQZXJtaXNzaW9uLFxuICBub3JtYWxpemVQZXJtaXNzaW9uU3Vic2V0LFxuICBpbnRlcnNlY3RQZXJtaXNzaW9ucyxcbiAgcmVzb2x2ZVVzZXJQZXJtaXNzaW9ucyxcbiAgY29uZmluZVBlcm1pc3Npb25zVG9PcmcsXG4gIGhhc1Blcm1pc3Npb24sXG4gIHR5cGUgUGVybWlzc2lvbixcbiAgQUxMX1BFUk1JU1NJT05TLFxuICBST0xFX1RFTVBMQVRFUyxcbiAgdHlwZSBSb2xlVGVtcGxhdGUsXG4gIFBFUk1JU1NJT05fQUNUSU9OUyxcbiAgUEVSTUlTU0lPTl9JRF9TSEFQRSxcbiAgUEVSTUlTU0lPTl9HQVRFUyxcbiAgUEVSTUlTU0lPTl9DQVRBTE9HLFxuICBTVVBFUkFETUlOX09OTFlfUEVSTUlTU0lPTlMsXG4gIFNZU1RFTV9PUkdfT05MWV9QRVJNSVNTSU9OUyxcbiAgT1JHX0FTU0lHTkFCTEVfUEVSTUlTU0lPTlMsXG4gIE9SR19BU1NJR05BQkxFX0NBVEVHT1JJRVMsXG4gIFJFQURfT05MWV9QRVJNSVNTSU9OUyxcbiAgUk9MRV9QRVJNSVNTSU9OUyxcbiAgRUNPU1lTVEVNX01BTkFHRVJfUEVSTUlTU0lPTlMsXG4gIFBVQkxJU0hFUl9WRVJJRklFUl9QRVJNSVNTSU9OUyxcbiAgUExBVEZPUk1fT1BFUkFUT1JfUEVSTUlTU0lPTlMsXG4gIEFDQ09VTlRfTUFOQUdFUl9QRVJNSVNTSU9OUyxcbiAgQ09OU09MRV9BRE1JTl9QRVJNSVNTSU9OUyxcbiAgUExBVEZPUk1fT0JTRVJWRVJfUEVSTUlTU0lPTlMsXG4gIFNVUFBPUlRfQUdFTlRfUEVSTUlTU0lPTlMsXG4gIFNVUFBPUlRfTEVBRF9QRVJNSVNTSU9OUyxcbiAgU0VFRF9CVU5ETEVTLFxuICBTRUVEX0JVTkRMRV9JRFMsXG4gIFNZU1RFTV9PUkdfSk9CX0JVTkRMRVMsXG4gIE9SR19BVVRPTUFUSU9OX0JVTkRMRVMsXG4gIEFVVE9NQVRJT05fQUNDT1VOVF9CVU5ETEVTLFxuICB0eXBlIFNlZWRCdW5kbGVJZCxcbiAgUkVHSVNUUllfT1BFUkFUT1JfUEVSTUlTU0lPTlMsXG4gIFRFQU1fTEVBRF9QRVJNSVNTSU9OUyxcbiAgUElQRUxJTkVfQVVUT01BVElPTl9QRVJNSVNTSU9OUyxcbiAgUElQRUxJTkVfUkVHSVNUUkFUSU9OX1BFUk1JU1NJT05TLFxufSBmcm9tICcuL3Blcm1pc3Npb25zLmpzJztcbmV4cG9ydCB7XG4gIE1FVEFEQVRBX0tFWV9DQVRBTE9HLFxuICBNZXRhZGF0YUtleXMsXG4gIHR5cGUgTWV0YWRhdGFLZXksXG4gIHR5cGUgTWV0YWRhdGFLZXlPcHRpb24sXG4gIE1FVEFEQVRBX0tFWV9HUk9VUFMsXG59IGZyb20gJy4vbWV0YWRhdGEta2V5cy5qcyc7XG5leHBvcnQge1xuICB0eXBlIEF1ZGl0RXZlbnQsXG59IGZyb20gJy4vYXVkaXQtZXZlbnRzLmpzJztcbmV4cG9ydCB7XG4gIFJFTU9URV9BVURJVF9BQ1RJT05TLFxuICBpc1JlbW90ZUF1ZGl0QWN0aW9uLFxuICB0eXBlIFJlbW90ZUF1ZGl0QWN0aW9uLFxufSBmcm9tICcuL3JlbW90ZS1hdWRpdC1hY3Rpb25zLmpzJztcbmV4cG9ydCB7XG4gIEFTS19BR0VOVF9QUk9QT1NFUixcbiAgQVNLX1BST1BPU0VEX0JZX0hFQURFUixcbiAgUFJPUE9TRURfQllfREVUQUlMX0tFWSxcbiAgYXNrUHJvcG9zYWxBdWRpdERldGFpbHMsXG4gIHJlYWRQcm9wb3NlckNsYWltLFxuICB3aXRoUHJvcG9zYWxQcm92ZW5hbmNlLFxuICBBU0tfUFJPUE9TQUxfUEVSTUlTU0lPTixcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfQUxMT1dMSVNULFxuICBPUkdfU0VUVElOR19QUk9QT1NBTF9FWENMVVNJT05TLFxuICBPUkdfU0VUVElOR19QUk9QT1NBTF9LRVlTLFxuICBpc1Byb3Bvc2FibGVPcmdTZXR0aW5nLFxuICBpc1ZhbGlkT3JnU2V0dGluZ1ZhbHVlLFxuICBvcmdTZXR0aW5nU3BlYyxcbiAgcGlja0FsbG93ZWQsXG4gIGRpZmZPcmdTZXR0aW5ncyxcbiAgb3JnU2V0dGluZ1JlcXVlc3RzLFxuICB0eXBlIEFza1Byb3Bvc2FsS2luZCxcbiAgdHlwZSBBc2tQcm9wb3NhbFByb3ZlbmFuY2UsXG4gIHR5cGUgUHJvcG9zZXJDbGFpbSxcbiAgdHlwZSBPcmdTZXR0aW5nQ2hhbmdlLFxuICB0eXBlIE9yZ1NldHRpbmdLZXksXG4gIHR5cGUgT3JnU2V0dGluZ1BhdGNoLFxuICB0eXBlIE9yZ1NldHRpbmdSZXF1ZXN0LFxuICB0eXBlIE9yZ1NldHRpbmdTaGFwZSxcbiAgdHlwZSBPcmdTZXR0aW5nU3BlYyxcbiAgdHlwZSBPcmdTZXR0aW5nU3VyZmFjZSxcbiAgdHlwZSBPcmdTZXR0aW5nVmFsdWUsXG4gIHR5cGUgUGlja0FsbG93ZWRSZXN1bHQsXG59IGZyb20gJy4vYXNrLXByb3Bvc2Fscy5qcyc7XG5leHBvcnQge1xuICBpc0Vjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50LFxuICBwYXJzZUVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG4gIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lLFxuICByZW5kZXJFY29zeXN0ZW1NYW5hZ2VyQ2hhbmdlLFxuICByZW5kZXJFY29zeXN0ZW1EaWdlc3QsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsLFxuICBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFMsXG4gIHR5cGUgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGQsXG4gIEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEX05BTUVTLFxuICBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UUyxcbiAgdHlwZSBFY29zeXN0ZW1SZWNpcGllbnRTcGVjLFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG59IGZyb20gJy4vZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMnO1xuZXhwb3J0IHtcbiAgcHVibGlzaGVyVGVybXNWZXJzaW9uLFxuICBwdWJsaXNoZXJIYW5kbGVQcm9ibGVtLFxuICBpc09mZmljaWFsQXV0b0FwcHJvdmFsRW5hYmxlZCxcbiAgaXNQbHVnaW5QdWJsaXNoaW5nRW5hYmxlZCxcbiAgaXNBbm9ueW1vdXNTdWJtaXNzaW9uc0VuYWJsZWQsXG4gIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQsXG4gIE9GRklDSUFMX0NBVEFMT0dfTE9BREVSX0FDQ09VTlQsXG4gIERFRkFVTFRfUFVCTElTSEVSX1RFUk1TX1ZFUlNJT04sXG4gIEJVSUxUSU5fUkVTRVJWRURfSEFORExFUyxcbiAgVEVOQU5UX1JFUVVFU1RfS0lORFMsXG4gIFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTLFxuICBWRVJJRllfUkVRVUVTVF9LSU5EUyxcbiAgU1RFUF9VUF9SRVFVRVNUX0tJTkRTLFxuICBSRVFVRVNUX1NMQV9IT1VSUyxcbn0gZnJvbSAnLi9lY29zeXN0ZW0uanMnO1xuZXhwb3J0IHtcbiAgYWdlU2NvcmUsXG4gIHZ1bG5TY29yZSxcbiAgY29tcHV0ZUhlYWx0aFNjb3JlLFxuICBwdWJsaXNoZXJIZWFsdGhTY29yZSxcbiAgcHVibGlzaGVyU3VjY2Vzc1JhdGUsXG4gIGhlYWx0aEJhbmQsXG4gIEhFQUxUSF9DT01QT05FTlRTLFxuICBIRUFMVEhfV0VJR0hUUyxcbiAgdHlwZSBIZWFsdGhCcmVha2Rvd24sXG4gIHR5cGUgSGVhbHRoQ29tcG9uZW50U2NvcmUsXG4gIHR5cGUgSGVhbHRoUmVzdWx0LFxuICB0eXBlIEhlYWx0aElucHV0cyxcbiAgdHlwZSBIZWFsdGhCYW5kLFxufSBmcm9tICcuL3BsdWdpbi1oZWFsdGguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlWdWxuV2FpdmVycyxcbiAgYXNTY2FuRmxhZyxcbiAgZGVzY3JpYmVGaW5kaW5ncyxcbiAgZGVzY3JpYmVGaXgsXG4gIGF0T3JBYm92ZUZhaWxPbixcbiAgZXhjZWVkc1Z1bG5GbG9vcixcbiAgZmFpbE9uTGFiZWwsXG4gIGdhdGVkRmluZGluZ0NvdW50LFxuICBzdW1tYXJ5Q29udHJhZGljdHMsXG4gIHN1bW1hcnlEZXNjcmliZXMsXG4gIGdhdGVkRml4YWJsZUNvdW50LFxuICBpc0dhdGVkRmluZGluZyxcbiAgbmV3U2NhbkZpbmRpbmdzLFxuICBwYXJzZVZ1bG5XYWl2ZXJzLFxuICBwYXJzZVZ1bG5XYWl2ZXJzVmVyYm9zZSxcbiAgcGx1Z2luVnVsbkZhaWxPbixcbiAgcGx1Z2luVnVsbkdhdGVLZXYsXG4gIHBsdWdpblZ1bG5NYXhGaW5kaW5ncyxcbiAgU0NBTl9GTEFHX1RPUF9GSU5ESU5HUyxcbiAgU0NBTl9TVU1NQVJZX01BWF9CSU5BUklFUyxcbiAgU0NBTl9TVU1NQVJZX01BWF9GSU5ESU5HUyxcbiAgc2NhbkZpbmRpbmdLZXksXG4gIHZ1bG5GbGFnZ2VkTWVzc2FnZSxcbiAgdnVsbkZsYWdnZWRXYXJuaW5nLFxuICB2dWxuV2FpdmVyTGFiZWxzLFxuICB0eXBlIFBsdWdpblNjYW5GaW5kaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GbGFnLFxuICB0eXBlIFBsdWdpblZ1bG5GYWlsT24sXG4gIHR5cGUgUGx1Z2luU2NhblN1bW1hcnksXG4gIHR5cGUgVnVsbkZsYWdnZWRXYXJuaW5nLFxuICB0eXBlIFZ1bG5XYWl2ZXIsXG4gIHR5cGUgVnVsbldhaXZlclBhcnNlLFxuICB0eXBlIFZ1bG5XYWl2ZXJQcm9ibGVtLFxuICB0eXBlIFdhaXZlck91dGNvbWUsXG59IGZyb20gJy4vcGx1Z2luLXNjYW4uanMnO1xuIl19