@pipeline-builder/pipeline-core 4.1.8 → 4.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config/billing-config.js +20 -8
- package/lib/config/config-types.d.ts +1 -5
- package/lib/config/config-types.js +1 -1
- package/lib/config/server-config.js +1 -3
- package/lib/core/pipeline-types.d.ts +4 -87
- package/lib/core/pipeline-types.js +5 -98
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -3
- package/lib/template/index.d.ts +1 -1
- package/lib/template/index.js +1 -1
- package/lib/template/validate.d.ts +2 -2
- package/lib/template/validate.js +1 -1
- package/package.json +16 -4
|
@@ -23,9 +23,11 @@ import { QUOTA_TIERS, TIER_FEATURES, FEATURE_METADATA, VALID_TIERS, STANDARD_TIE
|
|
|
23
23
|
// (TIER_FEATURES) via FEATURE_METADATA labels — so an advertised base
|
|
24
24
|
// feature is always one `requireFeature` actually grants for that tier.
|
|
25
25
|
// Only genuinely non-gated marketing copy (support level, dashboards, RBAC) is
|
|
26
|
-
// hand-authored, passed as `perks`. Purchasable feature add-ons
|
|
27
|
-
// advanced_reporting,
|
|
28
|
-
// bundles (see loadBundles()).
|
|
26
|
+
// hand-authored, passed as `perks`. Purchasable feature add-ons
|
|
27
|
+
// (advanced_reporting, team_usage_analytics, compliance_*) are NOT listed as
|
|
28
|
+
// base perks here — they are sold as bundles (see loadBundles()). `sso` is the
|
|
29
|
+
// other way round: a TIER feature only (Team+), never a bundle, so it DOES
|
|
30
|
+
// appear as a derived base perk on the tiers that include it.
|
|
29
31
|
/** "Up to N plugins" / "Unlimited plugins" from an effective limit (-1 = unlimited). */
|
|
30
32
|
function limitLine(limit, singular, plural) {
|
|
31
33
|
if (limit === -1)
|
|
@@ -421,12 +423,22 @@ function loadBundles() {
|
|
|
421
423
|
b('api_pack', 'API Pack (+100k)', '100,000 additional API calls / period', { apiCalls: 100_000 }, 1999, ALL, 3),
|
|
422
424
|
b('ai_pack', 'AI Pack (+2.5k)', '2,500 additional AI calls / period', { aiCalls: 2500 }, 1999, ALL, 4),
|
|
423
425
|
b('storage_pack', 'Storage Pack (+10 GB)', '10 GB additional registry storage', { storageBytes: 10 * BUNDLE_GB }, 1999, ALL, 5),
|
|
424
|
-
//
|
|
425
|
-
//
|
|
426
|
-
|
|
426
|
+
// NOTE: `sso` is NOT sold as an add-on. It is a TIER feature from Team up
|
|
427
|
+
// (TIER_FEATURES.team) and nothing below Team can buy it. The bundle that
|
|
428
|
+
// used to exist here was $40/mo on Pro only — Pro ($39) + the add-on came to
|
|
429
|
+
// exactly Team ($79), which already includes SSO *and* teams *and* domain
|
|
430
|
+
// registration, so it was strictly dominated. It was also functionally
|
|
431
|
+
// broken below Team: SSO refuses an identity whose email domain the org has
|
|
432
|
+
// not DNS-verified (`assertSsoIdentityTrusted`, which exempts only
|
|
433
|
+
// Google-issued identities), and registering a domain to verify is ITSELF a
|
|
434
|
+
// hard Team/Enterprise tier check (platform `org-domain-service`). So a Pro
|
|
435
|
+
// buyer's Okta / Entra / generic-OIDC / SAML connection failed at callback
|
|
436
|
+
// with OIDC_EMAIL_DOMAIN_NOT_VERIFIED, with no way to fix it on Pro. Selling
|
|
437
|
+
// SSO below Team would mean giving away domain registration too, and that is
|
|
438
|
+
// the Team differentiator.
|
|
427
439
|
// DORA / advanced delivery analytics. INCLUDED in Enterprise (TIER_FEATURES),
|
|
428
440
|
// so the add-on is offered to every other tier (developer/pro/team). Priced
|
|
429
|
-
//
|
|
441
|
+
// as an analytics surface, not an enterprise identity gate.
|
|
430
442
|
// Lead time is MEASURED commit → deploy (reporting's deploy events), not a proxy.
|
|
431
443
|
b('advanced_reporting', 'Advanced Reporting (DORA)', 'DORA delivery metrics — deployment frequency, lead time (commit → deploy), change failure rate, MTTR, performance bands + trend', {}, 3000, ['developer', 'pro', 'team'], 8, { features: ['advanced_reporting'], stackable: false }),
|
|
432
444
|
// Per-team usage breakdown across the org → team subtree. INCLUDED in
|
|
@@ -519,4 +531,4 @@ export function assertBundleRequiresValid(bundles) {
|
|
|
519
531
|
visit(bundle, []);
|
|
520
532
|
}
|
|
521
533
|
}
|
|
522
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2JpbGxpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQXdDLE1BQU0sNEJBQTRCLENBQUM7QUFPOUwsZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSxrREFBa0Q7QUFDbEQsa0ZBQWtGO0FBQ2xGLGlEQUFpRDtBQUNqRCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0Usc0VBQXNFO0FBQ3RFLDhFQUE4RTtBQUM5RSwrQkFBK0I7QUFFL0Isd0ZBQXdGO0FBQ3hGLFNBQVMsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFnQixFQUFFLE1BQWM7SUFDaEUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQUUsT0FBTyxhQUFhLE1BQU0sRUFBRSxDQUFDO0lBQy9DLE9BQU8sU0FBUyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDckYsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQWUsRUFBRSxLQUFlO0lBQ3ZELE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsT0FBTztRQUNMLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDbkMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztR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LFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTG9hZCBiaWxsaW5nIHBsYW4gY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBQZXItcGxhbiBwcmljZXMgYXJlIHRoZSBtb3N0IGxpa2VseSB0byB2YXJ5IGJldHdlZW4gZW52aXJvbm1lbnRzOlxuICogICBCSUxMSU5HX1BMQU5fe1RJRVJ9X01PTlRITFkgLyBCSUxMSU5HX1BMQU5fe1RJRVJ9X0FOTlVBTCAgKGluIGNlbnRzKVxuICpcbiAqIE9wdGlvbmFsIG92ZXJyaWRlcyBmb3IgZGVzY3JpcHRpb25zIGFuZCBmZWF0dXJlczpcbiAqICAgQklMTElOR19QTEFOX3tUSUVSfV9OQU1FICAgICAgICAgIChwbGFpbiBzdHJpbmcsIGRpc3BsYXkgbmFtZSlcbiAqICAgQklMTElOR19QTEFOX3tUSUVSfV9ERVNDUklQVElPTiAgIChwbGFpbiBzdHJpbmcpXG4gKiAgIEJJTExJTkdfUExBTl97VElFUn1fRkVBVFVSRVMgICAgICAoSlNPTiBzdHJpbmcgYXJyYXkpXG4gKlxuICogQWxsIGRlZmF1bHRzIG1hdGNoIHRoZSBvcmlnaW5hbCBoYXJkY29kZWQgc2VlZCBkYXRhLlxuICovXG5pbXBvcnQgeyBRVU9UQV9USUVSUywgVElFUl9GRUFUVVJFUywgRkVBVFVSRV9NRVRBREFUQSwgVkFMSURfVElFUlMsIFNUQU5EQVJEX1RJRVJTLCBpc1ZhbGlkRmVhdHVyZUZsYWcsIGlzVmFsaWRUaWVyLCB0eXBlIFF1b3RhVGllciwgdHlwZSBRdW90YVRpZXJMaW1pdHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJpbGxpbmdDb25maWcsIEJpbGxpbmdQbGFuQ29uZmlnLCBCdW5kbGVDb25maWcsIENvbWJvRGlzY291bnRDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcy5qcyc7XG5cbi8qKiBQZXItdW5pdCBxdW90YSBkZWx0YXMgZm9yIGEgYnVuZGxlIOKAlCBrZXlzIGNvbnN0cmFpbmVkIHRvIHJlYWwgcXVvdGEgZmllbGRzXG4gKiAgKG1hdGNoZXMgYEJ1bmRsZUNvbmZpZy5ncmFudHNgKSwgc28gYSB0eXBvJ2QgZGltZW5zaW9uIGZhaWxzIHRvIGNvbXBpbGUuICovXG50eXBlIEdyYW50TWFwID0gUGFydGlhbDxSZWNvcmQ8a2V5b2YgUXVvdGFUaWVyTGltaXRzLCBudW1iZXI+PjtcblxuLy8gLS0gRGVmYXVsdCBmZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBtYXJrZXRlZCBmZWF0dXJlIGxpc3QgaXMgYnVpbHQgZnJvbSB0d28gZGVyaXZlZCBzb3VyY2VzIHNvIGl0IGNhbiBuZXZlclxuLy8gZHJpZnQgZnJvbSB3aGF0IHRoZSBwbGF0Zm9ybSBhY3R1YWxseSBlbmZvcmNlczpcbi8vICAgMS4gTElNSVQgbGluZXMgZGVyaXZlZCBmcm9tIGVhY2ggdGllcidzIEVGRkVDVElWRSBxdW90YSBsaW1pdHMgKFFVT1RBX1RJRVJTKSxcbi8vICAgICAgc28gdGhleSB0cmFjayBRVU9UQV9USUVSXyogZW52IG92ZXJyaWRlcy5cbi8vICAgMi4gSU5DTFVERUQtRkVBVFVSRSBsaW5lcyBkZXJpdmVkIGZyb20gdGhlIGVuZm9yY2VkIGVudGl0bGVtZW50IHNldFxuLy8gICAgICAoVElFUl9GRUFUVVJFUykgdmlhIEZFQVRVUkVfTUVUQURBVEEgbGFiZWxzIOKAlCBzbyBhbiBhZHZlcnRpc2VkIGJhc2Vcbi8vICAgICAgZmVhdHVyZSBpcyBhbHdheXMgb25lIGByZXF1aXJlRmVhdHVyZWAgYWN0dWFsbHkgZ3JhbnRzIGZvciB0aGF0IHRpZXIuXG4vLyBPbmx5IGdlbnVpbmVseSBub24tZ2F0ZWQgbWFya2V0aW5nIGNvcHkgKHN1cHBvcnQgbGV2ZWwsIGRhc2hib2FyZHMsIFJCQUMpIGlzXG4vLyBoYW5kLWF1dGhvcmVkLCBwYXNzZWQgYXMgYHBlcmtzYC4gUHVyY2hhc2FibGUgZmVhdHVyZSBhZGQtb25zIChzc28sXG4vLyBhZHZhbmNlZF9yZXBvcnRpbmcsIOKApikgYXJlIE5PVCBsaXN0ZWQgYXMgYmFzZSBwZXJrcyBoZXJlIOKAlCB0aGV5IGFyZSBzb2xkIGFzXG4vLyBidW5kbGVzIChzZWUgbG9hZEJ1bmRsZXMoKSkuXG5cbi8qKiBcIlVwIHRvIE4gcGx1Z2luc1wiIC8gXCJVbmxpbWl0ZWQgcGx1Z2luc1wiIGZyb20gYW4gZWZmZWN0aXZlIGxpbWl0ICgtMSA9IHVubGltaXRlZCkuICovXG5mdW5jdGlvbiBsaW1pdExpbmUobGltaXQ6IG51bWJlciwgc2luZ3VsYXI6IHN0cmluZywgcGx1cmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAobGltaXQgPT09IC0xKSByZXR1cm4gYFVubGltaXRlZCAke3BsdXJhbH1gO1xuICByZXR1cm4gYFVwIHRvICR7bGltaXQudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyl9ICR7bGltaXQgPT09IDEgPyBzaW5ndWxhciA6IHBsdXJhbH1gO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0RmVhdHVyZXModGllcjogUXVvdGFUaWVyLCBwZXJrczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGwgPSBRVU9UQV9USUVSU1t0aWVyXS5saW1pdHM7XG4gIHJldHVybiBbXG4gICAgbGltaXRMaW5lKGwuc2VhdHMsICdzZWF0JywgJ3NlYXRzJyksXG4gICAgbGltaXRMaW5lKGwucGx1Z2lucywgJ3BsdWdpbicsICdwbHVnaW5zJyksXG4gICAgbGltaXRMaW5lKGwucGlwZWxpbmVzLCAncGlwZWxpbmUnLCAncGlwZWxpbmVzJyksXG4gICAgbGltaXRMaW5lKGwuYXBpQ2FsbHMsICdBUEkgY2FsbCcsICdBUEkgY2FsbHMnKSxcbiAgICBsaW1pdExpbmUobC5haUNhbGxzLCAnQUkgY2FsbCcsICdBSSBjYWxscycpLFxuICAgIC8vIEVuZm9yY2VkIGVudGl0bGVtZW50cyDihpIgY3VzdG9tZXItZmFjaW5nIGxhYmVscyAoc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCkuXG4gICAgLi4uVElFUl9GRUFUVVJFU1t0aWVyXS5tYXAoKGYpID0+IEZFQVRVUkVfTUVUQURBVEFbZl0ubGFiZWwpLFxuICAgIC4uLnBlcmtzLFxuICBdO1xufVxuXG4vLyBOb3RlOiBgcGVya3NgIGFyZSBub24tZ2F0ZWQgbWFya2V0aW5nIGxpbmVzIG9ubHkuIEVuZm9yY2VkIGZlYXR1cmVzIChpbmNsLlxuLy8gUHJpb3JpdHkgU3VwcG9ydCBmb3IgcHJvL3RlYW0vZW50ZXJwcmlzZSkgY29tZSBmcm9tIFRJRVJfRkVBVFVSRVMgYWJvdmUuXG4vLyBUaGUgcmVwb3J0aW5nIGRhc2hib2FyZCBpcyBvcGVuIHRvIGV2ZXJ5IHRpZXIgKG9ubHkgdGhlIERPUkEvc2NvcmVjYXJkIHZpZXdzXG4vLyBhcmUgZW50aXRsZW1lbnQtZ2F0ZWQpLCBzbyBpdCdzIGxpc3RlZCBvbiBlYWNoIHBsYW4gcmF0aGVyIHRoYW4gaW1wbHlpbmcgYVxuLy8gbG93ZXIgdGllciBsYWNrcyBpdC5cbmNvbnN0IERFRkFVTFRfREVWRUxPUEVSX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCdkZXZlbG9wZXInLCBbJ0NvbW11bml0eSBzdXBwb3J0JywgJ1JlcG9ydGluZyBkYXNoYm9hcmQnXSk7XG5jb25zdCBERUZBVUxUX1BST19GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygncHJvJywgWydSZXBvcnRpbmcgZGFzaGJvYXJkJ10pO1xuY29uc3QgREVGQVVMVF9URUFNX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCd0ZWFtJywgWydSQkFDICYgdGVhbSByb2xlcycsICdSZXBvcnRpbmcgZGFzaGJvYXJkJ10pO1xuY29uc3QgREVGQVVMVF9FTlRFUlBSSVNFX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCdlbnRlcnByaXNlJywgW1xuICAnUkJBQyAmIHRlYW0gcm9sZXMnLCAnUmVwb3J0aW5nIGRhc2hib2FyZCcsXG5dKTtcbi8vIFVubGltaXRlZCBpbmNsdWRlcyBldmVyeSBmZWF0dXJlIChUSUVSX0ZFQVRVUkVTLnVubGltaXRlZCA9IGFsbCkuXG5jb25zdCBERUZBVUxUX1VOTElNSVRFRF9GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygndW5saW1pdGVkJywgW1xuICAnVW5saW1pdGVkIGV2ZXJ5dGhpbmcnLCAnUkJBQyAmIHRlYW0gcm9sZXMnLCAnUmVwb3J0aW5nIGRhc2hib2FyZCcsXG5dKTtcblxuLyoqXG4gKiBQYXJzZSBhIHByaWNlIChpbiBjZW50cykgZnJvbSBhbiBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgd2hlblxuICogdW5zZXQgT1IgbWFsZm9ybWVkLiBBIE5hTiAoZS5nLiBgQklMTElOR19QTEFOX1BST19NT05USExZPWFiY2ApIG11c3QgbmV2ZXJcbiAqIGZsb3cgaW50byB0aGUgcmV0dXJuZWQgY29uZmlnIGFzIGEgcHJpY2UuXG4gKi9cbmZ1bmN0aW9uIGVudkNlbnRzKGVudlZhcjogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGVudlZhciA9PT0gdW5kZWZpbmVkIHx8IGVudlZhciA9PT0gJycpIHJldHVybiBmYWxsYmFjaztcbiAgLy8gYHBhcnNlSW50YCBpcyB0b28gbGVuaWVudCBoZXJlOiAnNDkuOTkn4oaSNDksICc0OWFiYyfihpI0OSwgJy0xMDAn4oaSLTEwMCB3b3VsZCBhbGxcbiAgLy8gZmxvdyB0aHJvdWdoIGFzIGEgXCJwcmljZVwiLiBSZXF1aXJlIGEgY2xlYW4sIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIChjZW50cyksXG4gIC8vIG1hdGNoaW5nIGBhcHBseUdyYW50T3ZlcnJpZGVgJ3Mgcmlnb3Ig4oCUIGFueXRoaW5nIGVsc2UgZmFsbHMgYmFjay5cbiAgY29uc3QgbiA9IE51bWJlcihlbnZWYXIpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID49IDAgPyBuIDogZmFsbGJhY2s7XG59XG5cbi8qKlxuICogUGFyc2UgYSBKU09OIGFycmF5IGZyb20gYW4gZW52IHZhciwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmVhdHVyZXMoZW52VmFyOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgaWYgKCFlbnZWYXIpIHJldHVybiBmYWxsYmFjaztcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGVudlZhcik7XG4gICAgLy8gQXJyYXktb2Ytc3RyaW5ncyBvbmx5IOKAlCBhIEpTT04gYXJyYXkgb2Ygbm9uLXN0cmluZ3MgKGUuZy4gYFsxLDJdYCkgbXVzdCBub3RcbiAgICAvLyBzaGlwIG51bWJlcnMgYXMgZmVhdHVyZSBsYWJlbHMuIEZpbHRlciB0byBzdHJpbmdzIChtaXJyb3JzIGFwcGx5VGllcnNPdmVycmlkZSkuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHJldHVybiBmYWxsYmFjaztcbiAgICBjb25zdCBzdHJpbmdzID0gcGFyc2VkLmZpbHRlcigoeCk6IHggaXMgc3RyaW5nID0+IHR5cGVvZiB4ID09PSAnc3RyaW5nJyk7XG4gICAgcmV0dXJuIHN0cmluZ3MubGVuZ3RoID09PSBwYXJzZWQubGVuZ3RoID8gc3RyaW5ncyA6IGZhbGxiYWNrO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIGJpbGxpbmcgcGxhbiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEJpbGxpbmdDb25maWcoKTogQmlsbGluZ0NvbmZpZyB7XG4gIC8vIEtleWVkIGJ5IFF1b3RhVGllciBzbyB0aGUgY29tcGlsZXIgZm9yY2VzIGEgcGxhbiBmb3IgRVZFUlkgdGllciDigJQgYWRkaW5nIGFcbiAgLy8gNXRoIFF1b3RhVGllciB3aXRob3V0IGEgcGxhbiBoZXJlIGlzIG5vdyBhIGNvbXBpbGUgZXJyb3IgKHdhcyBhIGhhbmQta2VwdFxuICAvLyA0LWVsZW1lbnQgYXJyYXkgdGhhdCBzaWxlbnRseSBzaGlwcGVkIG5vIHBsYW4vcHJpY2UgZm9yIGEgbmV3IHRpZXIpLiBUaGVcbiAgLy8gcHVibGljIGBjb25maWcucGxhbnNgIHNoYXBlIHN0YXlzIGFuIGFycmF5LCBkZXJpdmVkIGJlbG93IGluIFZBTElEX1RJRVJTXG4gIC8vIG9yZGVyIChkZXZlbG9wZXIsIHBybywgdGVhbSwgZW50ZXJwcmlzZSwgdW5saW1pdGVkKSB0byBwcmVzZXJ2ZSBjb25zdW1lciBvcmRlcmluZy5cbiAgY29uc3QgcGxhbkJ5VGllcjogUmVjb3JkPFF1b3RhVGllciwgQmlsbGluZ1BsYW5Db25maWc+ID0ge1xuICAgIGRldmVsb3Blcjoge1xuICAgICAgaWQ6ICdkZXZlbG9wZXInLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9OQU1FIHx8ICdEZXZlbG9wZXInLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ0ZyZWUgc3RhcnRlciB0aWVyIGZvciBpbmRpdmlkdWFsIGRldmVsb3BlcnMnLFxuICAgICAgdGllcjogJ2RldmVsb3BlcicsXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9NT05USExZLCAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fREVWRUxPUEVSX0FOTlVBTCwgMCksXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHBhcnNlRmVhdHVyZXMoXG4gICAgICAgIHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfREVWRUxPUEVSX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgc29ydE9yZGVyOiAwLFxuICAgIH0sXG4gICAgcHJvOiB7XG4gICAgICBpZDogJ3BybycsXG4gICAgICBuYW1lOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fUFJPX05BTUUgfHwgJ1BybycsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19ERVNDUklQVElPTlxuICAgICAgICB8fCAnRm9yIGluZGl2aWR1YWwgcG93ZXIgdXNlcnMgYW5kIHByb2R1Y3Rpb24gd29ya2xvYWRzJyxcbiAgICAgIHRpZXI6ICdwcm8nLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9QUk9fTU9OVEhMWSwgMzkwMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19BTk5VQUwsIDM5MDAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9QUk9fRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiAxLFxuICAgIH0sXG4gICAgdGVhbToge1xuICAgICAgaWQ6ICd0ZWFtJyxcbiAgICAgIG5hbWU6IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX05BTUUgfHwgJ1RlYW0nLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX0RFU0NSSVBUSU9OXG4gICAgICAgIHx8ICdGb3IgdGVhbXMgY29sbGFib3JhdGluZyBvbiBzaGFyZWQgcGlwZWxpbmVzJyxcbiAgICAgIHRpZXI6ICd0ZWFtJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9NT05USExZLCA3OTAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9BTk5VQUwsIDc5MDAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1RFQU1fRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfVEVBTV9GRUFUVVJFUyxcbiAgICAgICksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBzb3J0T3JkZXI6IDIsXG4gICAgfSxcbiAgICBlbnRlcnByaXNlOiB7XG4gICAgICBpZDogJ2VudGVycHJpc2UnLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfTkFNRSB8fCAnRW50ZXJwcmlzZScsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ09yZy13aWRlIHNjYWxlIHdpdGggYSBoaWdoIHNlYXQgYmFzZWxpbmUgKGV4cGFuZGFibGUgdmlhIE1lbWJlciBTZWF0IGFkZC1vbnMpIGFuZCBwcmlvcml0eSBzdXBwb3J0JyxcbiAgICAgIHRpZXI6ICdlbnRlcnByaXNlJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9NT05USExZLCA1OTkwMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfQU5OVUFMLCA1OTkwMDApLFxuICAgICAgfSxcbiAgICAgIGZlYXR1cmVzOiBwYXJzZUZlYXR1cmVzKFxuICAgICAgICBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9FTlRFUlBSSVNFX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIHNvcnRPcmRlcjogMyxcbiAgICB9LFxuICAgIC8vIFRoZSBiaWxsaW5nLURJU0FCTEVEIGRlZmF1bHQgcGxhbjogZXZlcnl0aGluZyB1bmNhcHBlZCwgYWxsIGZlYXR1cmVzLCBmcmVlLlxuICAgIC8vIFNlZWRlZCBzbyB0aGUgdGllcuKGknBsYW4gbWFwcGluZyByZXNvbHZlcywgYnV0IG5ldmVyIG9mZmVyZWQgZm9yIHNhbGUg4oCUIHRoZVxuICAgIC8vIHJlYWQtcGxhbnMgcm91dGUgZmlsdGVycyBpdCBvdXQgKHNlZSBjcmVhdGVSZWFkUGxhblJvdXRlcyksIHNvIGl0J3MgaGlkZGVuXG4gICAgLy8gd2hlbmV2ZXIgYmlsbGluZyBpcyBlbmFibGVkICh0aGUgb25seSB0aW1lIC9wbGFucyBpcyBzZXJ2ZWQpLlxuICAgIHVubGltaXRlZDoge1xuICAgICAgaWQ6ICd1bmxpbWl0ZWQnLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9OQU1FIHx8ICdVbmxpbWl0ZWQnLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ0V2ZXJ5dGhpbmcgdW5jYXBwZWQg4oCUIHRoZSBkZWZhdWx0IHdoZW4gYmlsbGluZyBpcyBkaXNhYmxlZCcsXG4gICAgICB0aWVyOiAndW5saW1pdGVkJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVU5MSU1JVEVEX01PTlRITFksIDApLFxuICAgICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfQU5OVUFMLCAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9VTkxJTUlURURfRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiA0LFxuICAgIH0sXG4gIH07XG5cbiAgLy8gRGVyaXZlIHRoZSBhcnJheSBjb25zdW1lcnMgcmVhZCAoYGNvbmZpZy5wbGFuc2ApIGluIGNhbm9uaWNhbCB0aWVyIG9yZGVyLlxuICBjb25zdCBwbGFuczogQmlsbGluZ1BsYW5Db25maWdbXSA9IFZBTElEX1RJRVJTLm1hcCgodGllcikgPT4gcGxhbkJ5VGllclt0aWVyXSk7XG5cbiAgLy8gQnVpbGQgYnVuZGxlcyBPTkNFIGFuZCB0aHJlYWQgdGhlbSBpbnRvIHRoZSBjb21ibyBsb2FkZXIgKHdoaWNoIG5lZWRzIHRoZWlyXG4gIC8vIGVudi1lZmZlY3RpdmUgcHJpY2VzKSDigJQgYXZvaWRzIHBhcnNpbmcgdGhlIHdob2xlIGJ1bmRsZSBjYXRhbG9nIHR3aWNlIHBlciBsb2FkLlxuICBjb25zdCBidW5kbGVzID0gbG9hZEJ1bmRsZXMoKTtcbiAgcmV0dXJuIHsgcGxhbnMsIGJ1bmRsZXMsIGNvbWJvRGlzY291bnRzOiBsb2FkQ29tYm9EaXNjb3VudHMoYnVuZGxlcykgfTtcbn1cblxuLyoqXG4gKiBDb21ibyBkaXNjb3VudHMgKGRvY3MvYmlsbGluZy1idW5kbGVzLm1kIMKnQ29tYm8gcHJpY2luZykuIFdoZW4gYW4gYWNjb3VudCBvd25zXG4gKiBldmVyeSBtZW1iZXIgYnVuZGxlIChlYWNoIGF0IOKJpSBpdHMgbWluaW11bSBxdWFudGl0eSksIHRoZSBzZXQgaXMgYmlsbGVkIGF0IHRoZVxuICogY29tYmluZWQgcHJpY2UgaW5zdGVhZCBvZiB0aGUgc3VtIG9mIHRoZSBtZW1iZXJzIOKAlCByZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZVxuICogY3JlZGl0IGZvciB0aGUgZGlmZmVyZW5jZS4gT3ZlcmxhcHBpbmcgY29tYm9zIGFyZSByZXNvbHZlZCBieSBtYXgtd2VpZ2h0IHBhY2tpbmdcbiAqIChhIHNoYXJlZCBhZGQtb24gaXMgbmV2ZXIgZGlzY291bnRlZCB0d2ljZSk7IGBzb3J0T3JkZXJgIGJyZWFrcyBlcXVhbC10b3RhbCB0aWVzLlxuICpcbiAqIERlZmF1bHRzOlxuICogIC0gXCJBbmFseXRpY3MgU3VpdGVcIiDigJQgQWR2YW5jZWQgUmVwb3J0aW5nIChET1JBKSArIFRlYW0gVXNhZ2UgQW5hbHl0aWNzLCBlYWNoXG4gKiAgICAkMzAvbW8sIHRvZ2V0aGVyICQ0Mi9tbyAoJDQyMC95cikg4oaSIGEgJDE4L21vIGNyZWRpdCAofjMwJSBvZmYpLlxuICogIC0gXCJUZWFtIEdyb3d0aCBCdW5kbGVcIiDigJQg4omlNSBTZWF0cyAoJDE5Ljk5IGVhKSArIFRlYW0gVXNhZ2UgQW5hbHl0aWNzICgkMzApLFxuICogICAgYmFza2V0ICQxMjkuOTUvbW8g4oaSIHRvZ2V0aGVyICQ5MC45OS9tbyAoJDkwOS45MC95cikg4oaSIGEgfiQzOC45Ni9tbyBjcmVkaXQgKH4zMCUgb2ZmKS5cbiAqICAtIFwiU2NhbGUgQnVuZGxlXCIg4oCUIEFQSSBQYWNrICgkMTkuOTkpICsgU3RvcmFnZSBQYWNrICgkMTkuOTkpLCBiYXNrZXQgJDM5Ljk4L21vXG4gKiAgICDihpIgdG9nZXRoZXIgJDI3Ljk5L21vICgkMjc5LjkwL3lyKSDihpIgYSB+JDExLjk5L21vIGNyZWRpdCAofjMwJSBvZmYpLlxuICogUHJpY2VzIGVudi1vdmVycmlkYWJsZSB2aWEgYEJJTExJTkdfQ09NQk9fPElEPl9NT05USExZYCAvIGBfQU5OVUFMYC5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbWJvRGlzY291bnRzKGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogQ29tYm9EaXNjb3VudENvbmZpZ1tdIHtcbiAgY29uc3QgYyA9IChcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBidW5kbGVJZHM6IHN0cmluZ1tdLFxuICAgIG1vbnRobHk6IG51bWJlcixcbiAgICBhbm51YWw6IG51bWJlcixcbiAgICBzb3J0T3JkZXI6IG51bWJlcixcbiAgICBtaW5RdWFudGl0aWVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgKTogQ29tYm9EaXNjb3VudENvbmZpZyA9PiAoe1xuICAgIGlkLFxuICAgIG5hbWUsXG4gICAgYnVuZGxlSWRzLFxuICAgIC4uLihtaW5RdWFudGl0aWVzID8geyBtaW5RdWFudGl0aWVzIH0gOiB7fSksXG4gICAgcHJpY2VzOiB7XG4gICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudltgQklMTElOR19DT01CT18ke2lkLnRvVXBwZXJDYXNlKCl9X01PTlRITFlgXSwgbW9udGhseSksXG4gICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52W2BCSUxMSU5HX0NPTUJPXyR7aWQudG9VcHBlckNhc2UoKX1fQU5OVUFMYF0sIGFubnVhbCksXG4gICAgfSxcbiAgICBzb3J0T3JkZXIsXG4gICAgaXNBY3RpdmU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbWJvcyA9IFtcbiAgICBjKCdhbmFseXRpY3Nfc3VpdGUnLCAnQW5hbHl0aWNzIFN1aXRlJywgWydhZHZhbmNlZF9yZXBvcnRpbmcnLCAndGVhbV91c2FnZV9hbmFseXRpY3MnXSwgNDIwMCwgNDIwMDAsIDApLFxuICAgIC8vIFRlYW0gR3Jvd3RoIOKAlCDiiaU1IFNlYXRzICgkMTkuOTkgZWEpICsgVGVhbSBVc2FnZSBBbmFseXRpY3MgKCQzMCkuIEJhc2tldFxuICAgIC8vIDXDlyQxOS45OSArICQzMCA9ICQxMjkuOTUvbW8g4oaSIGJ1bmRsZWQgJDkwLjk5L21vICh+MzAlIG9mZiwgfiQzOC45NiBjcmVkaXQpLlxuICAgIGMoJ3RlYW1fZ3Jvd3RoJywgJ1RlYW0gR3Jvd3RoIEJ1bmRsZScsIFsnc2VhdCcsICd0ZWFtX3VzYWdlX2FuYWx5dGljcyddLCA5MDk5LCA5MDk5MCwgMSwgeyBzZWF0OiA1IH0pLFxuICAgIC8vIENvbXBsaWFuY2UgU3VpdGUg4oCUIFN0YW5kYXJkICsgQWR2YW5jZWQgYXQgMzAlIG9mZiAoJDkwOC42MC95ciB2cyAkMSwyOTggbGlzdCkuXG4gICAgYygnY29tcGxpYW5jZV9zdWl0ZScsICdDb21wbGlhbmNlIFN1aXRlJywgWydjb21wbGlhbmNlX3N0YW5kYXJkJywgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnXSwgOTA4NiwgOTA4NjAsIDIpLFxuICAgIC8vIFNjYWxlIEJ1bmRsZSDigJQgQVBJIFBhY2sgKCQxOS45OSkgKyBTdG9yYWdlIFBhY2sgKCQxOS45OSkuIEJhc2tldCAkMzkuOTgvbW8g4oaSXG4gICAgLy8gYnVuZGxlZCAkMjcuOTkvbW8gKH4zMCUgb2ZmLCB+JDExLjk5IGNyZWRpdCkuIEJvdGggbWVtYmVycyBhbGwtdGllci5cbiAgICBjKCdzY2FsZV9idW5kbGUnLCAnU2NhbGUgQnVuZGxlJywgWydhcGlfcGFjaycsICdzdG9yYWdlX3BhY2snXSwgMjc5OSwgMjc5OTAsIDMpLFxuICBdO1xuICBhc3NlcnRDb21ib3NWYWxpZChjb21ib3MsIGJ1bmRsZXMpO1xuICB3YXJuT25Ob25EaXNjb3VudENvbWJvcyhjb21ib3MsIGJ1bmRsZXMpO1xuICByZXR1cm4gY29tYm9zO1xufVxuXG4vKipcbiAqIENvbmZpZy1sb2FkIGd1YXJkcmFpbCBmb3IgY29tYm9zOiBldmVyeSBgYnVuZGxlSWRgIG11c3QgcmVzb2x2ZSB0byBhbiBBQ1RJVkVcbiAqIGJ1bmRsZSBhbmQgZXZlcnkgYG1pblF1YW50aXRpZXNgIGtleSBtdXN0IGJlIG9uZSBvZiB0aGUgY29tYm8ncyBgYnVuZGxlSWRzYC5cbiAqIEEgdHlwbydkIG1lbWJlciBvciBzdHJheSBtaW5RdWFudGl0eSBrZXkgb3RoZXJ3aXNlIHNoaXBzIGEgcGVybWFuZW50bHktaW5lcnRcbiAqIGNvbWJvIChtaXNzaW5nIGJ1bmRsZSB0cmVhdGVkIGFzIHVuaXQgcHJpY2UgMCwgb3IgYSBtaW4gbmV2ZXIgc2F0aXNmaWFibGUpLFxuICogc2lsZW50bHkgbmV2ZXIgYXBwbHlpbmcuIFRocm93cyBzbyBtaXNjb25maWcgZmFpbHMgZmFzdCBhdCBib290LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Q29tYm9zVmFsaWQoY29tYm9zOiBDb21ib0Rpc2NvdW50Q29uZmlnW10sIGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogdm9pZCB7XG4gIGNvbnN0IGFjdGl2ZUlkcyA9IG5ldyBTZXQoYnVuZGxlcy5maWx0ZXIoKGIpID0+IGIuaXNBY3RpdmUpLm1hcCgoYikgPT4gYi5pZCkpO1xuICBmb3IgKGNvbnN0IGNvbWJvIG9mIGNvbWJvcykge1xuICAgIGZvciAoY29uc3QgaWQgb2YgY29tYm8uYnVuZGxlSWRzKSB7XG4gICAgICBpZiAoIWFjdGl2ZUlkcy5oYXMoaWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tYm8gXCIke2NvbWJvLmlkfVwiIHJlZmVyZW5jZXMgYnVuZGxlIFwiJHtpZH1cIiwgd2hpY2ggaXMgbm90IGFuIGFjdGl2ZSBidW5kbGUuYCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbWJvLm1pblF1YW50aXRpZXMgPz8ge30pKSB7XG4gICAgICBpZiAoIWNvbWJvLmJ1bmRsZUlkcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tYm8gXCIke2NvbWJvLmlkfVwiIG1pblF1YW50aXRpZXMga2V5IFwiJHtrZXl9XCIgaXMgbm90IG9uZSBvZiBpdHMgYnVuZGxlSWRzLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiogVGhlIHZvbHVtZS1kaXNjb3VudCBwZXJjZW50IGFwcGx5aW5nIHRvIGBxdWFudGl0eWAgdW5pdHMgb2YgYSBidW5kbGUg4oCUIHRoZVxuICogIGhpZ2hlc3QgYHZvbHVtZVRpZXJzYCBlbnRyeSB3aG9zZSBgbWluUXVhbnRpdHkg4omkIHF1YW50aXR5YCwgZWxzZSAwLiBNaXJyb3JzXG4gKiAgYHZvbHVtZURpc2NvdW50UGN0YCBpbiBhcGkvYmlsbGluZydzIGNvbWJvLXByaWNpbmcgKHdoaWNoIGNhbid0IGJlIGltcG9ydGVkIHRoZVxuICogIG90aGVyIHdheSk7IHRoZSBjb21ibyBjcmVkaXQgbWF0aCBhbmQgdGhpcyBndWFyZHJhaWwgTVVTVCB1c2UgdGhlIHNhbWUgYmFzaXMuICovXG5mdW5jdGlvbiB2b2x1bWVEaXNjb3VudFBjdEF0KGJ1bmRsZTogQnVuZGxlQ29uZmlnIHwgdW5kZWZpbmVkLCBxdWFudGl0eTogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHBjdCA9IDA7XG4gIGZvciAoY29uc3QgdCBvZiBidW5kbGU/LnZvbHVtZVRpZXJzID8/IFtdKSBpZiAocXVhbnRpdHkgPj0gdC5taW5RdWFudGl0eSkgcGN0ID0gdC5kaXNjb3VudFBlcmNlbnQ7XG4gIHJldHVybiBwY3Q7XG59XG5cbi8qKlxuICogR3VhcmRyYWlsOiBhIGNvbWJvIHdob3NlIGNvbWJpbmVkIHByaWNlIGlzIOKJpSBpdHMgbWluaW11bS1jb21wb3NpdGlvbiBiYXNrZXQgZ3JhbnRzXG4gKiBubyBjcmVkaXQgKHRoZSBjcmVkaXQgY2xhbXBzIHRvICQwKSBhbmQgaXMgc2lsZW50bHkgaW5lcnQuIFdhcm4gbG91ZGx5IGluc3RlYWQgc28gYVxuICogbWlzY29uZmlndXJlZCBgQklMTElOR19DT01CT18qYCBvdmVycmlkZSBpcyBjYXVnaHQuIE5vbi1mYXRhbC5cbiAqL1xuZnVuY3Rpb24gd2Fybk9uTm9uRGlzY291bnRDb21ib3MoY29tYm9zOiBDb21ib0Rpc2NvdW50Q29uZmlnW10sIGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogdm9pZCB7XG4gIC8vIENvbWJvIG1lbWJlcnMgYXJlIGFsd2F5cyBidW5kbGVzOyByZXNvbHZlIHRoZWlyIChlbnYtZWZmZWN0aXZlKSB1bml0IHByaWNlcyBvbmNlLlxuICBjb25zdCBieUlkID0gbmV3IE1hcChidW5kbGVzLm1hcCgoYikgPT4gW2IuaWQsIGJdKSk7XG4gIGZvciAoY29uc3QgY29tYm8gb2YgY29tYm9zKSB7XG4gICAgZm9yIChjb25zdCBpbnRlcnZhbCBvZiBbJ21vbnRobHknLCAnYW5udWFsJ10gYXMgY29uc3QpIHtcbiAgICAgIC8vIFBvc3Qtdm9sdW1lIGJhc2lzIChtaXJyb3JzIGBjb21ib0Jhc2lzQ2VudHNgKTogYSBtZW1iZXIgd2l0aCB2b2x1bWUgdGllcnMgaXNcbiAgICAgIC8vIGJhc2lzZWQgb24gaXRzIERJU0NPVU5URUQgdW5pdCBhdCB0aGUgY29tYm8ncyBtaW5RdHksIHNvIHRoaXMgZ3VhcmRyYWlsIGNhbid0XG4gICAgICAvLyBzaWxlbnRseSBtaXNzIGEgY29tYm8gdGhhdCBncmFudHMgbm8gcmVhbCBjcmVkaXQgb25jZSB2b2x1bWUgaXMgYXBwbGllZC5cbiAgICAgIGNvbnN0IGJhc2tldCA9IGNvbWJvLmJ1bmRsZUlkcy5yZWR1Y2UoKHMsIGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IGIgPSBieUlkLmdldChpZCk7XG4gICAgICAgIGNvbnN0IHF0eSA9IGNvbWJvLm1pblF1YW50aXRpZXM/LltpZF0gPz8gMTtcbiAgICAgICAgY29uc3QgcmF3VW5pdCA9IGI/LnByaWNlc1tpbnRlcnZhbF0gPz8gMDtcbiAgICAgICAgY29uc3QgdW5pdCA9IE1hdGgucm91bmQoKHJhd1VuaXQgKiAoMTAwIC0gdm9sdW1lRGlzY291bnRQY3RBdChiLCBxdHkpKSkgLyAxMDApO1xuICAgICAgICByZXR1cm4gcyArIHVuaXQgKiBxdHk7XG4gICAgICB9LCAwKTtcbiAgICAgIGlmIChjb21iby5wcmljZXNbaW50ZXJ2YWxdID49IGJhc2tldCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oYFtiaWxsaW5nLWNvbmZpZ10gQ29tYm8gXCIke2NvbWJvLmlkfVwiICR7aW50ZXJ2YWx9IHByaWNlICR7Y29tYm8ucHJpY2VzW2ludGVydmFsXX0g4omlIG1lbWJlciBiYXNrZXQgJHtiYXNrZXR9OyBpdCBncmFudHMgbm8gZGlzY291bnQuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IEJVTkRMRV9HQiA9IDEwMjQgKiAxMDI0ICogMTAyNDtcblxuLyoqXG4gKiBBcHBseSBhIHBlci1idW5kbGUgZ3JhbnQgb3ZlcnJpZGUuIEVhY2ggc3RhY2thYmxlIHBhY2sgZ3JhbnRzIGV4YWN0bHkgb25lXG4gKiBxdW90YSBkaW1lbnNpb24sIHNvIGBCSUxMSU5HX0JVTkRMRV88SUQ+X0dSQU5UYCByZXR1bmVzIHRoYXQgYW1vdW50IChlLmcuIG1ha2VcbiAqIHRoZSBQbHVnaW4gUGFjayBncmFudCArNTAgaW5zdGVhZCBvZiArMjUpIOKAlCBwYXJhbGxlbCB0byB0aGUgcHJpY2Ugb3ZlcnJpZGVzLlxuICogSWdub3JlZCBmb3IgbXVsdGktZGltZW5zaW9uIG9yIGZlYXR1cmUtb25seSAoZW1wdHktZ3JhbnQpIGJ1bmRsZXMsIGFuZCBmb3IgYVxuICogbWFsZm9ybWVkL25lZ2F0aXZlIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcHBseUdyYW50T3ZlcnJpZGUoaWQ6IHN0cmluZywgZ3JhbnRzOiBHcmFudE1hcCk6IEdyYW50TWFwIHtcbiAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnZbYEJJTExJTkdfQlVORExFXyR7aWQudG9VcHBlckNhc2UoKX1fR1JBTlRgXTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGdyYW50cyk7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCB8fCByYXcgPT09ICcnIHx8IGtleXMubGVuZ3RoICE9PSAxKSByZXR1cm4gZ3JhbnRzO1xuICBjb25zdCBuID0gcGFyc2VJbnQocmF3LCAxMCk7XG4gIGlmIChOdW1iZXIuaXNOYU4obikgfHwgbiA8IDApIHJldHVybiBncmFudHM7XG4gIC8vIGBrZXlzYCBjYW1lIGZyb20gYSBHcmFudE1hcCwgc28gaXRzIHNvbGUga2V5IGlzIGEgUXVvdGFUaWVyTGltaXRzIGZpZWxkLlxuICByZXR1cm4geyBba2V5c1swXSBhcyBrZXlvZiBRdW90YVRpZXJMaW1pdHNdOiBuIH07XG59XG5cbi8qKlxuICogQXBwbHkgYSBwZXItYnVuZGxlIHRpZXItYXZhaWxhYmlsaXR5IG92ZXJyaWRlLiBgQklMTElOR19CVU5ETEVfPElEPl9USUVSU2AgaXMgYVxuICogSlNPTiBhcnJheSBvZiB0aWVyIElEcyB0aGF0IG1heSBwdXJjaGFzZSB0aGUgYnVuZGxlIChlLmcuIGBbXCJkZXZlbG9wZXJcIixcInByb1wiXWApXG4gKiDigJQgcGFyYWxsZWwgdG8gdGhlIHByaWNlL2dyYW50IG92ZXJyaWRlcy4gRmFsbHMgYmFjayB0byBgZGVmYXVsdFRpZXJzYCB3aGVuXG4gKiB1bnNldCwgbWFsZm9ybWVkLCBlbXB0eSwgb3IgY29udGFpbmluZyBhbiB1bmtub3duIHRpZXIuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5VGllcnNPdmVycmlkZShpZDogc3RyaW5nLCBkZWZhdWx0VGllcnM6IFF1b3RhVGllcltdKTogUXVvdGFUaWVyW10ge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltgQklMTElOR19CVU5ETEVfJHtpZC50b1VwcGVyQ2FzZSgpfV9USUVSU2BdO1xuICBpZiAoIXJhdykgcmV0dXJuIGRlZmF1bHRUaWVycztcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkgfHwgcGFyc2VkLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGRlZmF1bHRUaWVycztcbiAgICBjb25zdCB2YWxpZCA9IHBhcnNlZC5maWx0ZXIoKHQpOiB0IGlzIFF1b3RhVGllciA9PiB0eXBlb2YgdCA9PT0gJ3N0cmluZycgJiYgaXNWYWxpZFRpZXIodCkpO1xuICAgIHJldHVybiB2YWxpZC5sZW5ndGggPT09IHBhcnNlZC5sZW5ndGggPyB2YWxpZCA6IGRlZmF1bHRUaWVycztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGRlZmF1bHRUaWVycztcbiAgfVxufVxuXG50eXBlIFZvbHVtZVRpZXIgPSB7IG1pblF1YW50aXR5OiBudW1iZXI7IGRpc2NvdW50UGVyY2VudDogbnVtYmVyIH07XG5cbi8qKlxuICogQXBwbHkgYSBwZXItYnVuZGxlIHZvbHVtZS10aWVyIG92ZXJyaWRlLiBgQklMTElOR19CVU5ETEVfPElEPl9WT0xVTUVfVElFUlNgIGlzIGFcbiAqIEpTT04gYXJyYXkgb2YgYHsgbWluUXVhbnRpdHksIGRpc2NvdW50UGVyY2VudCB9YCAoZS5nLlxuICogYFt7XCJtaW5RdWFudGl0eVwiOjUsXCJkaXNjb3VudFBlcmNlbnRcIjoxMH1dYCkg4oCUIHBhcmFsbGVsIHRvIHRoZSBwcmljZS9ncmFudC90aWVyXG4gKiBvdmVycmlkZXMuIEZhbGxzIGJhY2sgdG8gYGRlZmF1bHRUaWVyc2Agd2hlbiB1bnNldCwgbWFsZm9ybWVkLCBvciBjb250YWluaW5nIGFuXG4gKiBpbnZhbGlkIGVudHJ5IChtaW5RdWFudGl0eSDiiaUgMSwgMCA8IGRpc2NvdW50UGVyY2VudCDiiaQgMTAwKS4gU29ydGVkIGFzY2VuZGluZyBieVxuICogbWluUXVhbnRpdHkgc28gdGhlIFwiaGlnaGVzdCBtYXRjaGluZyB0aWVyIHdpbnNcIiBsb29rdXAgaXMgZGV0ZXJtaW5pc3RpYy5cbiAqL1xuZnVuY3Rpb24gYXBwbHlWb2x1bWVUaWVyc092ZXJyaWRlKGlkOiBzdHJpbmcsIGRlZmF1bHRUaWVycz86IFZvbHVtZVRpZXJbXSk6IFZvbHVtZVRpZXJbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52W2BCSUxMSU5HX0JVTkRMRV8ke2lkLnRvVXBwZXJDYXNlKCl9X1ZPTFVNRV9USUVSU2BdO1xuICBjb25zdCBzb3J0QXNjID0gKHQ6IFZvbHVtZVRpZXJbXSkgPT4gWy4uLnRdLnNvcnQoKGEsIGIpID0+IGEubWluUXVhbnRpdHkgLSBiLm1pblF1YW50aXR5KTtcbiAgY29uc3QgZmFsbGJhY2sgPSAoKSA9PiAoZGVmYXVsdFRpZXJzID8gc29ydEFzYyhkZWZhdWx0VGllcnMpIDogdW5kZWZpbmVkKTtcbiAgaWYgKCFyYXcpIHJldHVybiBmYWxsYmFjaygpO1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSB8fCBwYXJzZWQubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICAvLyBFYWNoIGVudHJ5OiBpbnRlZ2VyIG1pblF1YW50aXR5IOKJpSAxLCAwIDwgZGlzY291bnRQZXJjZW50IOKJpCAxMDAuXG4gICAgY29uc3QgdmFsaWQgPSBwYXJzZWQuZmlsdGVyKCh0KTogdCBpcyBWb2x1bWVUaWVyID0+XG4gICAgICB0ICYmIHR5cGVvZiB0Lm1pblF1YW50aXR5ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHQubWluUXVhbnRpdHkpICYmIHQubWluUXVhbnRpdHkgPj0gMVxuICAgICAgJiYgdHlwZW9mIHQuZGlzY291bnRQZXJjZW50ID09PSAnbnVtYmVyJyAmJiB0LmRpc2NvdW50UGVyY2VudCA+IDAgJiYgdC5kaXNjb3VudFBlcmNlbnQgPD0gMTAwKTtcbiAgICBpZiAodmFsaWQubGVuZ3RoICE9PSBwYXJzZWQubGVuZ3RoKSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBzb3J0QXNjKHZhbGlkKTtcbiAgICAvLyBSZWplY3QgYSBub24tbW9ub3RvbmljIGN1cnZlOiBidXlpbmcgTU9SRSBtdXN0IG5ldmVyIGVhcm4gYSBTTUFMTEVSIGRpc2NvdW50LFxuICAgIC8vIGFuZCBkdXBsaWNhdGUgdGhyZXNob2xkcyBhcmUgYW1iaWd1b3VzLiAoYHZvbHVtZURpc2NvdW50UGN0YCBwaWNrcyB0aGUgbGFzdFxuICAgIC8vIHF1YWxpZnlpbmcgdGllciwgc28gYSBkZXNjZW5kaW5nIHBlcmNlbnQgd291bGQgcGVuYWxpemUgaGlnaGVyIHF1YW50aXRpZXMuKVxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc29ydGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoc29ydGVkW2ldLm1pblF1YW50aXR5ID09PSBzb3J0ZWRbaSAtIDFdLm1pblF1YW50aXR5KSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICAgIGlmIChzb3J0ZWRbaV0uZGlzY291bnRQZXJjZW50IDw9IHNvcnRlZFtpIC0gMV0uZGlzY291bnRQZXJjZW50KSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvcnRlZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbGxiYWNrKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXJjaGFzYWJsZSBhZGQtb24gYnVuZGxlcyAoZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQgwqczKS4gR3JhbnRzIGFyZSBwZXItdW5pdFxuICogZGVsdGFzIG9uIFF1b3RhVGllckxpbWl0czsgcHJpY2VzIChjZW50cywgYEJJTExJTkdfQlVORExFXzxJRD5fTU9OVEhMWWAgL1xuICogYF9BTk5VQUxgKSwgdGhlIHNpbmdsZS1kaW1lbnNpb24gZ3JhbnQgYW1vdW50IChgQklMTElOR19CVU5ETEVfPElEPl9HUkFOVGApLFxuICogYW5kIHRoZSBwdXJjaGFzYWJsZS10aWVyIGxpc3QgKGBCSUxMSU5HX0JVTkRMRV88SUQ+X1RJRVJTYCkgYXJlIGFsbFxuICogZW52LW92ZXJyaWRhYmxlLiBBbm51YWwg4omIIDEww5cgbW9udGhseS5cbiAqL1xuZnVuY3Rpb24gbG9hZEJ1bmRsZXMoKTogQnVuZGxlQ29uZmlnW10ge1xuICBjb25zdCBiID0gKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZ3JhbnRzOiBHcmFudE1hcCxcbiAgICBtb250aGx5OiBudW1iZXIsXG4gICAgYXZhaWxhYmxlRm9yVGllcnM6IFF1b3RhVGllcltdLFxuICAgIHNvcnRPcmRlcjogbnVtYmVyLFxuICAgIGV4dHJhOiB7IGZlYXR1cmVzPzogc3RyaW5nW107IHN0YWNrYWJsZT86IGJvb2xlYW47IG1heFF1YW50aXR5PzogbnVtYmVyOyByZXF1aXJlcz86IHN0cmluZ1tdOyByZXF1aXJlc0ZlYXR1cmVzPzogc3RyaW5nW107IHZvbHVtZVRpZXJzPzogVm9sdW1lVGllcltdIH0gPSB7fSxcbiAgKTogQnVuZGxlQ29uZmlnID0+IHtcbiAgICAvLyBSZXNvbHZlIG1vbnRobHkgZmlyc3Qgc28gdGhlIGFubnVhbCBmYWxsYmFjayB0cmFja3MgYSBgX01PTlRITFlgIG92ZXJyaWRlXG4gICAgLy8gKGFubnVhbCDiiYggMTDDlyB0aGUgKmVmZmVjdGl2ZSogbW9udGhseSwgbm90IHRoZSBoYXJkY29kZWQgZGVmYXVsdCkuXG4gICAgY29uc3QgcmVzb2x2ZWRNb250aGx5ID0gZW52Q2VudHMocHJvY2Vzcy5lbnZbYEJJTExJTkdfQlVORExFXyR7aWQudG9VcHBlckNhc2UoKX1fTU9OVEhMWWBdLCBtb250aGx5KTtcbiAgICBjb25zdCB2b2x1bWVUaWVycyA9IGFwcGx5Vm9sdW1lVGllcnNPdmVycmlkZShpZCwgZXh0cmEudm9sdW1lVGllcnMpO1xuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGdyYW50czogYXBwbHlHcmFudE92ZXJyaWRlKGlkLCBncmFudHMpLFxuICAgICAgLi4uKGV4dHJhLmZlYXR1cmVzID8geyBmZWF0dXJlczogZXh0cmEuZmVhdHVyZXMgfSA6IHt9KSxcbiAgICAgIC4uLihleHRyYS5tYXhRdWFudGl0eSAhPT0gdW5kZWZpbmVkID8geyBtYXhRdWFudGl0eTogZXh0cmEubWF4UXVhbnRpdHkgfSA6IHt9KSxcbiAgICAgIC4uLihleHRyYS5yZXF1aXJlcyA/IHsgcmVxdWlyZXM6IGV4dHJhLnJlcXVpcmVzIH0gOiB7fSksXG4gICAgICAuLi4oZXh0cmEucmVxdWlyZXNGZWF0dXJlcyA/IHsgcmVxdWlyZXNGZWF0dXJlczogZXh0cmEucmVxdWlyZXNGZWF0dXJlcyB9IDoge30pLFxuICAgICAgLi4uKHZvbHVtZVRpZXJzID8geyB2b2x1bWVUaWVycyB9IDoge30pLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IHJlc29sdmVkTW9udGhseSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudltgQklMTElOR19CVU5ETEVfJHtpZC50b1VwcGVyQ2FzZSgpfV9BTk5VQUxgXSwgcmVzb2x2ZWRNb250aGx5ICogMTApLFxuICAgICAgfSxcbiAgICAgIHN0YWNrYWJsZTogZXh0cmEuc3RhY2thYmxlID8/IHRydWUsXG4gICAgICBhdmFpbGFibGVGb3JUaWVyczogYXBwbHlUaWVyc092ZXJyaWRlKGlkLCBhdmFpbGFibGVGb3JUaWVycyksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIHNvcnRPcmRlcixcbiAgICB9O1xuICB9O1xuXG4gIC8vIEJ1bmRsZXMgYXJlIHB1cmNoYXNhYmxlIG9uIGV2ZXJ5IFNFTEVDVEFCTEUgdGllciAoZXhjbHVkZXMgYHVubGltaXRlZGAsIHdoaWNoXG4gIC8vIGlzIHRoZSBiaWxsaW5nLW9mZiB0aWVyIGFuZCBidXlzIG5vdGhpbmcpIOKAlCBzbyB0aGlzIGlzIGV4YWN0bHkgU1RBTkRBUkRfVElFUlMuXG4gIGNvbnN0IEFMTDogUXVvdGFUaWVyW10gPSBbLi4uU1RBTkRBUkRfVElFUlNdO1xuICBjb25zdCBidW5kbGVzOiBCdW5kbGVDb25maWdbXSA9IFtcbiAgICAvLyBgc2VhdGAgYW5kIGBwaXBlbGluZV9wYWNrYCBhcmUgdGhlIHRpZXIgZGlmZmVyZW50aWF0b3JzLCBzbyBib3RoIGFyZSBUZWFtK1xuICAgIC8vIE9OTFkg4oCUIGEgc2luZ2xlLXNlYXQgRGV2ZWxvcGVyL1BybyBjYW4ndCBjaGVhcGx5IHN0YWNrIHNlYXRzL3BpcGVsaW5lcyB0b1xuICAgIC8vIHVuZGVyY3V0IFRlYW0gKDMgc2VhdHMgLyA2IHBpcGVsaW5lcyk7IHRoZXkgbXVzdCB1cGdyYWRlLiBgc2VhdGAgaXMgZ3JhbnVsYXJcbiAgICAvLyAocGVyLXNlYXQpIHdpdGggdm9sdW1lIHRpZXJzICg1LzE1LzQwIOKGkiAxMC8yMC8zMCUpLiBUaGUgb3RoZXIgY2FwYWNpdHkgcGFja3NcbiAgICAvLyAocGx1Z2luL2FwaS9haS9zdG9yYWdlKSBhcmUgTk9UIGRpZmZlcmVudGlhdG9ycywgc28gdGhleSBzdGF5IGFsbC10aWVyLlxuICAgIGIoJ3NlYXQnLCAnTWVtYmVyIFNlYXQnLCAnMSBhZGRpdGlvbmFsIG1lbWJlciBzZWF0JywgeyBzZWF0czogMSB9LCAxOTk5LCBbJ3RlYW0nLCAnZW50ZXJwcmlzZSddLCAwLFxuICAgICAgeyB2b2x1bWVUaWVyczogW3sgbWluUXVhbnRpdHk6IDUsIGRpc2NvdW50UGVyY2VudDogMTAgfSwgeyBtaW5RdWFudGl0eTogMTUsIGRpc2NvdW50UGVyY2VudDogMjAgfSwgeyBtaW5RdWFudGl0eTogNDAsIGRpc2NvdW50UGVyY2VudDogMzAgfV0gfSksXG4gICAgYigncGlwZWxpbmVfcGFjaycsICdQaXBlbGluZSBQYWNrICgrNSknLCAnNSBhZGRpdGlvbmFsIHBpcGVsaW5lcycsIHsgcGlwZWxpbmVzOiA1IH0sIDE1MDAsIFsndGVhbScsICdlbnRlcnByaXNlJ10sIDEpLFxuICAgIGIoJ3BsdWdpbl9wYWNrJywgJ1BsdWdpbiBQYWNrICgrMjUpJywgJzI1IGFkZGl0aW9uYWwgcGx1Z2lucycsIHsgcGx1Z2luczogMjUgfSwgMTAwMCwgQUxMLCAyKSxcbiAgICBiKCdhcGlfcGFjaycsICdBUEkgUGFjayAoKzEwMGspJywgJzEwMCwwMDAgYWRkaXRpb25hbCBBUEkgY2FsbHMgLyBwZXJpb2QnLCB7IGFwaUNhbGxzOiAxMDBfMDAwIH0sIDE5OTksIEFMTCwgMyksXG4gICAgYignYWlfcGFjaycsICdBSSBQYWNrICgrMi41ayknLCAnMiw1MDAgYWRkaXRpb25hbCBBSSBjYWxscyAvIHBlcmlvZCcsIHsgYWlDYWxsczogMjUwMCB9LCAxOTk5LCBBTEwsIDQpLFxuICAgIGIoJ3N0b3JhZ2VfcGFjaycsICdTdG9yYWdlIFBhY2sgKCsxMCBHQiknLCAnMTAgR0IgYWRkaXRpb25hbCByZWdpc3RyeSBzdG9yYWdlJywgeyBzdG9yYWdlQnl0ZXM6IDEwICogQlVORExFX0dCIH0sIDE5OTksIEFMTCwgNSksXG4gICAgLy8gU1NPIGlzIElOQ0xVREVEIGluIFRlYW0gKHNlZSBUSUVSX0ZFQVRVUkVTLnRlYW0pLCBzbyB0aGUgYWRkLW9uIGlzIFByby1vbmx5LlxuICAgIC8vIFRoZSBncmFudCBpcyBBRERJVElWRSBvbiBQcm8ncyBvd24gaWRwQ29uZmlncyBiYXNlbGluZSwgaGVuY2UgXCJhZGRpdGlvbmFsXCIuXG4gICAgYignc3NvJywgJ1NTTyAvIElkUCcsICdTaW5nbGUgc2lnbi1vbiArIDUgYWRkaXRpb25hbCBJZFAgY29uZmlncycsIHsgaWRwQ29uZmlnczogNSB9LCA0MDAwLCBbJ3BybyddLCA3LCB7IGZlYXR1cmVzOiBbJ3NzbyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIERPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MuIElOQ0xVREVEIGluIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpLFxuICAgIC8vIHNvIHRoZSBhZGQtb24gaXMgb2ZmZXJlZCB0byBldmVyeSBvdGhlciB0aWVyIChkZXZlbG9wZXIvcHJvL3RlYW0pLiBQcmljZWRcbiAgICAvLyBiZWxvdyBTU08gKCQ0MCkg4oCUIGFuIGFuYWx5dGljcyBzdXJmYWNlLCBub3QgdGhlIGVudGVycHJpc2UgaWRlbnRpdHkgZ2F0ZS5cbiAgICAvLyBMZWFkIHRpbWUgaXMgTUVBU1VSRUQgY29tbWl0IOKGkiBkZXBsb3kgKHJlcG9ydGluZydzIGRlcGxveSBldmVudHMpLCBub3QgYSBwcm94eS5cbiAgICBiKCdhZHZhbmNlZF9yZXBvcnRpbmcnLCAnQWR2YW5jZWQgUmVwb3J0aW5nIChET1JBKScsICdET1JBIGRlbGl2ZXJ5IG1ldHJpY3Mg4oCUIGRlcGxveW1lbnQgZnJlcXVlbmN5LCBsZWFkIHRpbWUgKGNvbW1pdCDihpIgZGVwbG95KSwgY2hhbmdlIGZhaWx1cmUgcmF0ZSwgTVRUUiwgcGVyZm9ybWFuY2UgYmFuZHMgKyB0cmVuZCcsIHt9LCAzMDAwLCBbJ2RldmVsb3BlcicsICdwcm8nLCAndGVhbSddLCA4LCB7IGZlYXR1cmVzOiBbJ2FkdmFuY2VkX3JlcG9ydGluZyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIFBlci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlLiBJTkNMVURFRCBpblxuICAgIC8vIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpOyB0aGUgYWRkLW9uIGlzIG9mZmVyZWQgdG8gVGVhbSBvbmx5IOKAlCBEZXZlbG9wZXJcbiAgICAvLyBhbmQgUHJvIGNhbid0IG5lc3QgdGVhbXMgKFRFQU1fQ0FQQUJMRV9USUVSUyksIHNvIHRoZXJlJ2QgYmUgbm90aGluZyB0b1xuICAgIC8vIGJyZWFrIGRvd24uIFByaWNlZCBhdCAkMzAvbW8gKCQzMDAveXIpIOKAlCBwYXJpdHkgd2l0aCBET1JBLCBpdHMgYW5hbHl0aWNzXG4gICAgLy8gc2libGluZy4gT3ZlcnJpZGFibGUgdmlhIEJJTExJTkdfQlVORExFX1RFQU1fVVNBR0VfQU5BTFlUSUNTX01PTlRITFkvX0FOTlVBTC5cbiAgICBiKCd0ZWFtX3VzYWdlX2FuYWx5dGljcycsICdUZWFtIFVzYWdlIEFuYWx5dGljcycsICdQZXItdGVhbSB1c2FnZSBicmVha2Rvd24gYWNyb3NzIHRoZSBvcmcg4oaSIHRlYW0gc3VidHJlZSAoYWxsIHF1b3RhIGRpbWVuc2lvbnMpJywge30sIDMwMDAsIFsndGVhbSddLCA5LCB7IGZlYXR1cmVzOiBbJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gICAgLy8gUmV0ZW50aW9uIHBhY2tzIChkb2NzL2JpbGxpbmctYnVuZGxlcy5tZCkuIFN0YWNrYWJsZSBjYXBhY2l0eSBwYWNrcyB0aGF0XG4gICAgLy8gcmFpc2UgdGhlIHJlcG9ydGluZyByZXRlbnRpb24gZW50aXRsZW1lbnQgYmlsbGluZyBzeW5jcyB0byByZXBvcnRpbmcnc1xuICAgIC8vIGBkb3JhX3NldHRpbmdzYC4gTk9UIHF1b3RhLW1ldGVyZWQgZmxvdyDigJQgYGV2ZW50UmV0ZW50aW9uRGF5c2AvYGRvcmFSZXRlbnRpb25EYXlzYFxuICAgIC8vIGFyZSBhYnNlbnQgZnJvbSBWQUxJRF9RVU9UQV9UWVBFUywgc28gdGhleSBuZXZlciByaWRlIHRoZSBxdW90YS1zZXJ2aWNlIGxlZy5cbiAgICAvLyBTdGFuZGFyZCBSZXRlbnRpb24gUGFjazogKzkwZCBzdGFuZGFyZC1ldmVudCByZXRlbnRpb24gKGJhc2UgMzAg4oaSIDEyMCDihpIgMjEw4oCmKS5cbiAgICAvLyBDYXBwZWQgYXQgNyAoMzAgKyA3w5c5MCA9IDY2MCDiiaQgdGhlIDczMC1kYXkgcmV0ZW50aW9uIGNlaWxpbmcpLlxuICAgIGIoJ3JldGVudGlvbl9wYWNrJywgJ1N0YW5kYXJkIFJldGVudGlvbiBQYWNrICgrOTBkKScsICc5MCBhZGRpdGlvbmFsIGRheXMgb2Ygc3RhbmRhcmQgcGlwZWxpbmUtZXZlbnQgcmV0ZW50aW9uJywgeyBldmVudFJldGVudGlvbkRheXM6IDkwIH0sIDE1MDAsIEFMTCwgMTAsIHsgbWF4UXVhbnRpdHk6IDcgfSksXG4gICAgLy8gRE9SQSBIaXN0b3J5IFBhY2s6ICszNjVkIERPUkEgcmV0ZW50aW9uIEFORCBwZXItb3JnIHJlcG9ydC1xdWVyeSB3aW5kb3cgKHRoZVxuICAgIC8vIHdpbmRvdyBjYXAgdHJhY2tzIGRvcmFSZXRlbnRpb25EYXlzKS4gT25seSBtZWFuaW5nZnVsIHdpdGggQWR2YW5jZWQgUmVwb3J0aW5nXG4gICAgLy8g4oCUIElOQ0xVREVEIGluIEVudGVycHJpc2UsIGFuIGFkZC1vbiBvbiBkZXZlbG9wZXIvcHJvL3RlYW0g4oCUIHNvIGl0XG4gICAgLy8gYHJlcXVpcmVzRmVhdHVyZXNgIGl0ICh0aGUgdGllciBPUiBhIGhlbGQgYnVuZGxlIHNhdGlzZmllcyBpdCkuIENhcHBlZCBhdCAxXG4gICAgLy8gKDE4MCArIDM2NSA9IDU0NSDiiaQgdGhlIDczMC1kYXkgcmV0ZW50aW9uIGNlaWxpbmcpLlxuICAgIGIoJ2RvcmFfaGlzdG9yeV9wYWNrJywgJ0RPUkEgSGlzdG9yeSBQYWNrICgrMzY1ZCknLCAnMzY1IGFkZGl0aW9uYWwgZGF5cyBvZiBET1JBIGhpc3RvcnkgKyByZXBvcnQtcXVlcnkgd2luZG93IChyZXF1aXJlcyBBZHZhbmNlZCBSZXBvcnRpbmcpJywgeyBkb3JhUmV0ZW50aW9uRGF5czogMzY1IH0sIDMwMDAsIEFMTCwgMTEsIHsgbWF4UXVhbnRpdHk6IDEsIHJlcXVpcmVzRmVhdHVyZXM6IFsnYWR2YW5jZWRfcmVwb3J0aW5nJ10gfSksXG4gICAgLy8gQ29tcGxpYW5jZSBjb250ZW50IGFkZC1vbnMgKGRvY3MvcGxhbnMvY29tcGxpYW5jZS1hZGRvbnMubWQpLiBGZWF0dXJlIGJ1bmRsZXNcbiAgICAvLyBnYXRpbmcgYWNjZXNzIHRvIGN1cmF0ZWQgc3lzdGVtLW9yZyBwdWJsaXNoZWQgcnVsZSBzZXRzLiBJTkNMVURFRCBpblxuICAgIC8vIEVudGVycHJpc2UvVW5saW1pdGVkICh2aWEgQUxMX0ZFQVRVUkVfRkxBR1MpOyBzb2xkIHRvIERldmVsb3Blci9Qcm8vVGVhbS5cbiAgICAvLyBTdGFuZGFyZCA9IH4yMCBDSS9DRCBiZXN0LXByYWN0aWNlIHJ1bGVzLiBBZHZhbmNlZCA9IFNPQzIvUENJL0NJUyBmcmFtZXdvcmtcbiAgICAvLyBsaWJyYXJpZXM7IFJFUVVJUkVTIFN0YW5kYXJkIChvciBidXkgdGhlIFN1aXRlIGNvbWJvIGZvciBib3RoIGF0IDMwJSBvZmYpLlxuICAgIGIoJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnLCAnU3RhbmRhcmQgQ29tcGxpYW5jZScsICdDdXJhdGVkIENJL0NEIGJlc3QtcHJhY3RpY2UgY29tcGxpYW5jZSBydWxlcycsIHt9LCAyOTkwLCBbJ2RldmVsb3BlcicsICdwcm8nLCAndGVhbSddLCAxMiwgeyBmZWF0dXJlczogWydjb21wbGlhbmNlX3N0YW5kYXJkJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gICAgYignY29tcGxpYW5jZV9hZHZhbmNlZCcsICdBZHZhbmNlZCBDb21wbGlhbmNlJywgJ0N1cmF0ZWQgZnJhbWV3b3JrIGNvbXBsaWFuY2UgbGlicmFyaWVzIChTT0MyIC8gUENJLURTUyAvIENJUyknLCB7fSwgOTk5MCwgWydkZXZlbG9wZXInLCAncHJvJywgJ3RlYW0nXSwgMTMsIHsgZmVhdHVyZXM6IFsnY29tcGxpYW5jZV9hZHZhbmNlZCddLCBzdGFja2FibGU6IGZhbHNlLCByZXF1aXJlczogWydjb21wbGlhbmNlX3N0YW5kYXJkJ10gfSksXG4gIF07XG4gIGFzc2VydEJ1bmRsZVJlcXVpcmVzVmFsaWQoYnVuZGxlcyk7XG4gIHJldHVybiBidW5kbGVzO1xufVxuXG4vKipcbiAqIENvbmZpZy1sb2FkIGd1YXJkcmFpbCBmb3IgdGhlIGByZXF1aXJlc2AgLyBgcmVxdWlyZXNGZWF0dXJlc2AgcHJlcmVxdWlzaXRlcy4gQVxuICogYHJlcXVpcmVzYCBlbnRyeSB0aGF0IGRvZXNuJ3QgcmVzb2x2ZSB0byBhbiBBQ1RJVkUgYnVuZGxlIOKAlCBvciB0aGF0IHBhcnRpY2lwYXRlc1xuICogaW4gYSBjeWNsZSDigJQgc2lsZW50bHkgbWFrZXMgdGhlIHJlZmVyZW5jaW5nIGJ1bmRsZSB1bnB1cmNoYXNhYmxlICh0aGUgYWRkb25cbiAqIHJvdXRlIHJlamVjdHMgd2l0aCA0MDAgZm9yZXZlciBiZWNhdXNlIHRoZSBwcmVyZXF1aXNpdGUgY2FuIG5ldmVyIGJlXG4gKiBzYXRpc2ZpZWQpLiBDYXRjaCBpdCBhdCBsb2FkIHdpdGggYSBjbGVhciBlcnJvciByYXRoZXIgdGhhbiBzaGlwcGluZyBhIGRlYWQgU0tVLlxuICpcbiAqICAtIEV2ZXJ5IGlkIGluIGEgYnVuZGxlJ3MgYHJlcXVpcmVzYCBNVVNUIG5hbWUgYW4gYWN0aXZlIGJ1bmRsZSBpbiB0aGUgY2F0YWxvZy5cbiAqICAtIFRoZSBgcmVxdWlyZXNgIGdyYXBoIE1VU1QgYmUgYWN5Y2xpYyAoYSDihpIgYiDihpIgYSBjYW4gbmV2ZXIgYmUgc2F0aXNmaWVkKS5cbiAqICAtIEV2ZXJ5IGByZXF1aXJlc0ZlYXR1cmVzYCBlbnRyeSBNVVNUIGJlIGEgcmVhbCBmZWF0dXJlIGZsYWcsIGF0dGFpbmFibGUgb25cbiAqICAgIEVWRVJZIHRpZXIgdGhlIGJ1bmRsZSBpcyBzb2xkIHRvIOKAlCBlaXRoZXIgdGllci1pbmNsdWRlZCAoYFRJRVJfRkVBVFVSRVNgKSBvclxuICogICAgZ3JhbnRlZCBieSBhbiBhY3RpdmUgYnVuZGxlIG9mZmVyZWQgb24gdGhhdCBzYW1lIHRpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRCdW5kbGVSZXF1aXJlc1ZhbGlkKGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogdm9pZCB7XG4gIGNvbnN0IGFjdGl2ZSA9IG5ldyBNYXAoYnVuZGxlcy5maWx0ZXIoKGIpID0+IGIuaXNBY3RpdmUpLm1hcCgoYikgPT4gW2IuaWQsIGJdKSk7XG5cbiAgLy8gMS4gVmFsaWRpdHk6IGV2ZXJ5IHJlcXVpcmVzIGlkIHJlc29sdmVzIHRvIGFuIGFjdGl2ZSBidW5kbGUuXG4gIGZvciAoY29uc3QgYnVuZGxlIG9mIGJ1bmRsZXMpIHtcbiAgICBmb3IgKGNvbnN0IHJlcUlkIG9mIGJ1bmRsZS5yZXF1aXJlcyA/PyBbXSkge1xuICAgICAgaWYgKCFhY3RpdmUuaGFzKHJlcUlkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtiaWxsaW5nLWNvbmZpZ10gQnVuZGxlIFwiJHtidW5kbGUuaWR9XCIgcmVxdWlyZXMgXCIke3JlcUlkfVwiLCB3aGljaCBpcyBub3QgYW4gYWN0aXZlIGJ1bmRsZSBpbiB0aGUgY2F0YWxvZyDigJQgaXQgd291bGQgYmUgcGVybWFuZW50bHkgdW5wdXJjaGFzYWJsZS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIDFiLiBGZWF0dXJlIHByZXJlcXVpc2l0ZXM6IGEgcmVhbCBmbGFnLCBhdHRhaW5hYmxlIG9uIGV2ZXJ5IHNvbGQtdG8gdGllci5cbiAgZm9yIChjb25zdCBidW5kbGUgb2YgYnVuZGxlcykge1xuICAgIGZvciAoY29uc3QgZmxhZyBvZiBidW5kbGUucmVxdWlyZXNGZWF0dXJlcyA/PyBbXSkge1xuICAgICAgaWYgKCFpc1ZhbGlkRmVhdHVyZUZsYWcoZmxhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYmlsbGluZy1jb25maWddIEJ1bmRsZSBcIiR7YnVuZGxlLmlkfVwiIHJlcXVpcmVzRmVhdHVyZXMgXCIke2ZsYWd9XCIsIHdoaWNoIGlzIG5vdCBhIGZlYXR1cmUgZmxhZy5gKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgdGllciBvZiBidW5kbGUuYXZhaWxhYmxlRm9yVGllcnMpIHtcbiAgICAgICAgY29uc3QgdGllckluY2x1ZGVzID0gKFRJRVJfRkVBVFVSRVNbdGllcl0gPz8gW10pLmluY2x1ZGVzKGZsYWcpO1xuICAgICAgICBjb25zdCBidXlhYmxlID0gWy4uLmFjdGl2ZS52YWx1ZXMoKV0uc29tZSgobykgPT4gby5hdmFpbGFibGVGb3JUaWVycy5pbmNsdWRlcyh0aWVyKSAmJiAoby5mZWF0dXJlcyA/PyBbXSkuaW5jbHVkZXMoZmxhZykpO1xuICAgICAgICBpZiAoIXRpZXJJbmNsdWRlcyAmJiAhYnV5YWJsZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbYmlsbGluZy1jb25maWddIEJ1bmRsZSBcIiR7YnVuZGxlLmlkfVwiIHJlcXVpcmVzIGZlYXR1cmUgXCIke2ZsYWd9XCIsIHdoaWNoIHRoZSAke3RpZXJ9IHRpZXIgbmVpdGhlciBpbmNsdWRlcyBub3IgY2FuIGJ1eSDigJQgaXQgd291bGQgYmUgcGVybWFuZW50bHkgdW5wdXJjaGFzYWJsZSB0aGVyZS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAyLiBBY3ljbGljaXR5OiBERlMgb3ZlciB0aGUgcmVxdWlyZXMgZWRnZXMsIHRyYWNraW5nIHRoZSBjdXJyZW50IHBhdGguXG4gIGNvbnN0IFZJU0lUSU5HID0gMTtcbiAgY29uc3QgRE9ORSA9IDI7XG4gIGNvbnN0IHN0YXRlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICBjb25zdCB2aXNpdCA9IChpZDogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHMgPSBzdGF0ZS5nZXQoaWQpO1xuICAgIGlmIChzID09PSBET05FKSByZXR1cm47XG4gICAgaWYgKHMgPT09IFZJU0lUSU5HKSB7XG4gICAgICBjb25zdCBjeWNsZSA9IFsuLi5wYXRoLnNsaWNlKHBhdGguaW5kZXhPZihpZCkpLCBpZF0uam9pbignIC0+ICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYmlsbGluZy1jb25maWddIEJ1bmRsZSBcInJlcXVpcmVzXCIgY3ljbGUgZGV0ZWN0ZWQ6ICR7Y3ljbGV9LmApO1xuICAgIH1cbiAgICBzdGF0ZS5zZXQoaWQsIFZJU0lUSU5HKTtcbiAgICBmb3IgKGNvbnN0IHJlcUlkIG9mIGFjdGl2ZS5nZXQoaWQpPy5yZXF1aXJlcyA/PyBbXSkge1xuICAgICAgdmlzaXQocmVxSWQsIFsuLi5wYXRoLCBpZF0pO1xuICAgIH1cbiAgICBzdGF0ZS5zZXQoaWQsIERPTkUpO1xuICB9O1xuXG4gIGZvciAoY29uc3QgYnVuZGxlIG9mIGFjdGl2ZS5rZXlzKCkpIHtcbiAgICB2aXNpdChidW5kbGUsIFtdKTtcbiAgfVxufVxuIl19
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2JpbGxpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQXdDLE1BQU0sNEJBQTRCLENBQUM7QUFPOUwsZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSxrREFBa0Q7QUFDbEQsa0ZBQWtGO0FBQ2xGLGlEQUFpRDtBQUNqRCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsZ0VBQWdFO0FBQ2hFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsMkVBQTJFO0FBQzNFLDhEQUE4RDtBQUU5RCx3RkFBd0Y7QUFDeEYsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsTUFBYztJQUNoRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLGFBQWEsTUFBTSxFQUFFLENBQUM7SUFDL0MsT0FBTyxTQUFTLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNyRixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBZSxFQUFFLEtBQWU7SUFDdkQsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxPQUFPO1FBQ0wsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8s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SSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTG9hZCBiaWxsaW5nIHBsYW4gY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBQZXItcGxhbiBwcmljZXMgYXJlIHRoZSBtb3N0IGxpa2VseSB0byB2YXJ5IGJldHdlZW4gZW52aXJvbm1lbnRzOlxuICogICBCSUxMSU5HX1BMQU5fe1RJRVJ9X01PTlRITFkgLyBCSUxMSU5HX1BMQU5fe1RJRVJ9X0FOTlVBTCAgKGluIGNlbnRzKVxuICpcbiAqIE9wdGlvbmFsIG92ZXJyaWRlcyBmb3IgZGVzY3JpcHRpb25zIGFuZCBmZWF0dXJlczpcbiAqICAgQklMTElOR19QTEFOX3tUSUVSfV9OQU1FICAgICAgICAgIChwbGFpbiBzdHJpbmcsIGRpc3BsYXkgbmFtZSlcbiAqICAgQklMTElOR19QTEFOX3tUSUVSfV9ERVNDUklQVElPTiAgIChwbGFpbiBzdHJpbmcpXG4gKiAgIEJJTExJTkdfUExBTl97VElFUn1fRkVBVFVSRVMgICAgICAoSlNPTiBzdHJpbmcgYXJyYXkpXG4gKlxuICogQWxsIGRlZmF1bHRzIG1hdGNoIHRoZSBvcmlnaW5hbCBoYXJkY29kZWQgc2VlZCBkYXRhLlxuICovXG5pbXBvcnQgeyBRVU9UQV9USUVSUywgVElFUl9GRUFUVVJFUywgRkVBVFVSRV9NRVRBREFUQSwgVkFMSURfVElFUlMsIFNUQU5EQVJEX1RJRVJTLCBpc1ZhbGlkRmVhdHVyZUZsYWcsIGlzVmFsaWRUaWVyLCB0eXBlIFF1b3RhVGllciwgdHlwZSBRdW90YVRpZXJMaW1pdHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJpbGxpbmdDb25maWcsIEJpbGxpbmdQbGFuQ29uZmlnLCBCdW5kbGVDb25maWcsIENvbWJvRGlzY291bnRDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcy5qcyc7XG5cbi8qKiBQZXItdW5pdCBxdW90YSBkZWx0YXMgZm9yIGEgYnVuZGxlIOKAlCBrZXlzIGNvbnN0cmFpbmVkIHRvIHJlYWwgcXVvdGEgZmllbGRzXG4gKiAgKG1hdGNoZXMgYEJ1bmRsZUNvbmZpZy5ncmFudHNgKSwgc28gYSB0eXBvJ2QgZGltZW5zaW9uIGZhaWxzIHRvIGNvbXBpbGUuICovXG50eXBlIEdyYW50TWFwID0gUGFydGlhbDxSZWNvcmQ8a2V5b2YgUXVvdGFUaWVyTGltaXRzLCBudW1iZXI+PjtcblxuLy8gLS0gRGVmYXVsdCBmZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBtYXJrZXRlZCBmZWF0dXJlIGxpc3QgaXMgYnVpbHQgZnJvbSB0d28gZGVyaXZlZCBzb3VyY2VzIHNvIGl0IGNhbiBuZXZlclxuLy8gZHJpZnQgZnJvbSB3aGF0IHRoZSBwbGF0Zm9ybSBhY3R1YWxseSBlbmZvcmNlczpcbi8vICAgMS4gTElNSVQgbGluZXMgZGVyaXZlZCBmcm9tIGVhY2ggdGllcidzIEVGRkVDVElWRSBxdW90YSBsaW1pdHMgKFFVT1RBX1RJRVJTKSxcbi8vICAgICAgc28gdGhleSB0cmFjayBRVU9UQV9USUVSXyogZW52IG92ZXJyaWRlcy5cbi8vICAgMi4gSU5DTFVERUQtRkVBVFVSRSBsaW5lcyBkZXJpdmVkIGZyb20gdGhlIGVuZm9yY2VkIGVudGl0bGVtZW50IHNldFxuLy8gICAgICAoVElFUl9GRUFUVVJFUykgdmlhIEZFQVRVUkVfTUVUQURBVEEgbGFiZWxzIOKAlCBzbyBhbiBhZHZlcnRpc2VkIGJhc2Vcbi8vICAgICAgZmVhdHVyZSBpcyBhbHdheXMgb25lIGByZXF1aXJlRmVhdHVyZWAgYWN0dWFsbHkgZ3JhbnRzIGZvciB0aGF0IHRpZXIuXG4vLyBPbmx5IGdlbnVpbmVseSBub24tZ2F0ZWQgbWFya2V0aW5nIGNvcHkgKHN1cHBvcnQgbGV2ZWwsIGRhc2hib2FyZHMsIFJCQUMpIGlzXG4vLyBoYW5kLWF1dGhvcmVkLCBwYXNzZWQgYXMgYHBlcmtzYC4gUHVyY2hhc2FibGUgZmVhdHVyZSBhZGQtb25zXG4vLyAoYWR2YW5jZWRfcmVwb3J0aW5nLCB0ZWFtX3VzYWdlX2FuYWx5dGljcywgY29tcGxpYW5jZV8qKSBhcmUgTk9UIGxpc3RlZCBhc1xuLy8gYmFzZSBwZXJrcyBoZXJlIOKAlCB0aGV5IGFyZSBzb2xkIGFzIGJ1bmRsZXMgKHNlZSBsb2FkQnVuZGxlcygpKS4gYHNzb2AgaXMgdGhlXG4vLyBvdGhlciB3YXkgcm91bmQ6IGEgVElFUiBmZWF0dXJlIG9ubHkgKFRlYW0rKSwgbmV2ZXIgYSBidW5kbGUsIHNvIGl0IERPRVNcbi8vIGFwcGVhciBhcyBhIGRlcml2ZWQgYmFzZSBwZXJrIG9uIHRoZSB0aWVycyB0aGF0IGluY2x1ZGUgaXQuXG5cbi8qKiBcIlVwIHRvIE4gcGx1Z2luc1wiIC8gXCJVbmxpbWl0ZWQgcGx1Z2luc1wiIGZyb20gYW4gZWZmZWN0aXZlIGxpbWl0ICgtMSA9IHVubGltaXRlZCkuICovXG5mdW5jdGlvbiBsaW1pdExpbmUobGltaXQ6IG51bWJlciwgc2luZ3VsYXI6IHN0cmluZywgcGx1cmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAobGltaXQgPT09IC0xKSByZXR1cm4gYFVubGltaXRlZCAke3BsdXJhbH1gO1xuICByZXR1cm4gYFVwIHRvICR7bGltaXQudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyl9ICR7bGltaXQgPT09IDEgPyBzaW5ndWxhciA6IHBsdXJhbH1gO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0RmVhdHVyZXModGllcjogUXVvdGFUaWVyLCBwZXJrczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGwgPSBRVU9UQV9USUVSU1t0aWVyXS5saW1pdHM7XG4gIHJldHVybiBbXG4gICAgbGltaXRMaW5lKGwuc2VhdHMsICdzZWF0JywgJ3NlYXRzJyksXG4gICAgbGltaXRMaW5lKGwucGx1Z2lucywgJ3BsdWdpbicsICdwbHVnaW5zJyksXG4gICAgbGltaXRMaW5lKGwucGlwZWxpbmVzLCAncGlwZWxpbmUnLCAncGlwZWxpbmVzJyksXG4gICAgbGltaXRMaW5lKGwuYXBpQ2FsbHMsICdBUEkgY2FsbCcsICdBUEkgY2FsbHMnKSxcbiAgICBsaW1pdExpbmUobC5haUNhbGxzLCAnQUkgY2FsbCcsICdBSSBjYWxscycpLFxuICAgIC8vIEVuZm9yY2VkIGVudGl0bGVtZW50cyDihpIgY3VzdG9tZXItZmFjaW5nIGxhYmVscyAoc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCkuXG4gICAgLi4uVElFUl9GRUFUVVJFU1t0aWVyXS5tYXAoKGYpID0+IEZFQVRVUkVfTUVUQURBVEFbZl0ubGFiZWwpLFxuICAgIC4uLnBlcmtzLFxuICBdO1xufVxuXG4vLyBOb3RlOiBgcGVya3NgIGFyZSBub24tZ2F0ZWQgbWFya2V0aW5nIGxpbmVzIG9ubHkuIEVuZm9yY2VkIGZlYXR1cmVzIChpbmNsLlxuLy8gUHJpb3JpdHkgU3VwcG9ydCBmb3IgcHJvL3RlYW0vZW50ZXJwcmlzZSkgY29tZSBmcm9tIFRJRVJfRkVBVFVSRVMgYWJvdmUuXG4vLyBUaGUgcmVwb3J0aW5nIGRhc2hib2FyZCBpcyBvcGVuIHRvIGV2ZXJ5IHRpZXIgKG9ubHkgdGhlIERPUkEvc2NvcmVjYXJkIHZpZXdzXG4vLyBhcmUgZW50aXRsZW1lbnQtZ2F0ZWQpLCBzbyBpdCdzIGxpc3RlZCBvbiBlYWNoIHBsYW4gcmF0aGVyIHRoYW4gaW1wbHlpbmcgYVxuLy8gbG93ZXIgdGllciBsYWNrcyBpdC5cbmNvbnN0IERFRkFVTFRfREVWRUxPUEVSX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCdkZXZlbG9wZXInLCBbJ0NvbW11bml0eSBzdXBwb3J0JywgJ1JlcG9ydGluZyBkYXNoYm9hcmQnXSk7XG5jb25zdCBERUZBVUxUX1BST19GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygncHJvJywgWydSZXBvcnRpbmcgZGFzaGJvYXJkJ10pO1xuY29uc3QgREVGQVVMVF9URUFNX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCd0ZWFtJywgWydSQkFDICYgdGVhbSByb2xlcycsICdSZXBvcnRpbmcgZGFzaGJvYXJkJ10pO1xuY29uc3QgREVGQVVMVF9FTlRFUlBSSVNFX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCdlbnRlcnByaXNlJywgW1xuICAnUkJBQyAmIHRlYW0gcm9sZXMnLCAnUmVwb3J0aW5nIGRhc2hib2FyZCcsXG5dKTtcbi8vIFVubGltaXRlZCBpbmNsdWRlcyBldmVyeSBmZWF0dXJlIChUSUVSX0ZFQVRVUkVTLnVubGltaXRlZCA9IGFsbCkuXG5jb25zdCBERUZBVUxUX1VOTElNSVRFRF9GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygndW5saW1pdGVkJywgW1xuICAnVW5saW1pdGVkIGV2ZXJ5dGhpbmcnLCAnUkJBQyAmIHRlYW0gcm9sZXMnLCAnUmVwb3J0aW5nIGRhc2hib2FyZCcsXG5dKTtcblxuLyoqXG4gKiBQYXJzZSBhIHByaWNlIChpbiBjZW50cykgZnJvbSBhbiBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgd2hlblxuICogdW5zZXQgT1IgbWFsZm9ybWVkLiBBIE5hTiAoZS5nLiBgQklMTElOR19QTEFOX1BST19NT05USExZPWFiY2ApIG11c3QgbmV2ZXJcbiAqIGZsb3cgaW50byB0aGUgcmV0dXJuZWQgY29uZmlnIGFzIGEgcHJpY2UuXG4gKi9cbmZ1bmN0aW9uIGVudkNlbnRzKGVudlZhcjogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGVudlZhciA9PT0gdW5kZWZpbmVkIHx8IGVudlZhciA9PT0gJycpIHJldHVybiBmYWxsYmFjaztcbiAgLy8gYHBhcnNlSW50YCBpcyB0b28gbGVuaWVudCBoZXJlOiAnNDkuOTkn4oaSNDksICc0OWFiYyfihpI0OSwgJy0xMDAn4oaSLTEwMCB3b3VsZCBhbGxcbiAgLy8gZmxvdyB0aHJvdWdoIGFzIGEgXCJwcmljZVwiLiBSZXF1aXJlIGEgY2xlYW4sIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIChjZW50cyksXG4gIC8vIG1hdGNoaW5nIGBhcHBseUdyYW50T3ZlcnJpZGVgJ3Mgcmlnb3Ig4oCUIGFueXRoaW5nIGVsc2UgZmFsbHMgYmFjay5cbiAgY29uc3QgbiA9IE51bWJlcihlbnZWYXIpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID49IDAgPyBuIDogZmFsbGJhY2s7XG59XG5cbi8qKlxuICogUGFyc2UgYSBKU09OIGFycmF5IGZyb20gYW4gZW52IHZhciwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmVhdHVyZXMoZW52VmFyOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgaWYgKCFlbnZWYXIpIHJldHVybiBmYWxsYmFjaztcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGVudlZhcik7XG4gICAgLy8gQXJyYXktb2Ytc3RyaW5ncyBvbmx5IOKAlCBhIEpTT04gYXJyYXkgb2Ygbm9uLXN0cmluZ3MgKGUuZy4gYFsxLDJdYCkgbXVzdCBub3RcbiAgICAvLyBzaGlwIG51bWJlcnMgYXMgZmVhdHVyZSBsYWJlbHMuIEZpbHRlciB0byBzdHJpbmdzIChtaXJyb3JzIGFwcGx5VGllcnNPdmVycmlkZSkuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHJldHVybiBmYWxsYmFjaztcbiAgICBjb25zdCBzdHJpbmdzID0gcGFyc2VkLmZpbHRlcigoeCk6IHggaXMgc3RyaW5nID0+IHR5cGVvZiB4ID09PSAnc3RyaW5nJyk7XG4gICAgcmV0dXJuIHN0cmluZ3MubGVuZ3RoID09PSBwYXJzZWQubGVuZ3RoID8gc3RyaW5ncyA6IGZhbGxiYWNrO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIGJpbGxpbmcgcGxhbiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEJpbGxpbmdDb25maWcoKTogQmlsbGluZ0NvbmZpZyB7XG4gIC8vIEtleWVkIGJ5IFF1b3RhVGllciBzbyB0aGUgY29tcGlsZXIgZm9yY2VzIGEgcGxhbiBmb3IgRVZFUlkgdGllciDigJQgYWRkaW5nIGFcbiAgLy8gNXRoIFF1b3RhVGllciB3aXRob3V0IGEgcGxhbiBoZXJlIGlzIG5vdyBhIGNvbXBpbGUgZXJyb3IgKHdhcyBhIGhhbmQta2VwdFxuICAvLyA0LWVsZW1lbnQgYXJyYXkgdGhhdCBzaWxlbnRseSBzaGlwcGVkIG5vIHBsYW4vcHJpY2UgZm9yIGEgbmV3IHRpZXIpLiBUaGVcbiAgLy8gcHVibGljIGBjb25maWcucGxhbnNgIHNoYXBlIHN0YXlzIGFuIGFycmF5LCBkZXJpdmVkIGJlbG93IGluIFZBTElEX1RJRVJTXG4gIC8vIG9yZGVyIChkZXZlbG9wZXIsIHBybywgdGVhbSwgZW50ZXJwcmlzZSwgdW5saW1pdGVkKSB0byBwcmVzZXJ2ZSBjb25zdW1lciBvcmRlcmluZy5cbiAgY29uc3QgcGxhbkJ5VGllcjogUmVjb3JkPFF1b3RhVGllciwgQmlsbGluZ1BsYW5Db25maWc+ID0ge1xuICAgIGRldmVsb3Blcjoge1xuICAgICAgaWQ6ICdkZXZlbG9wZXInLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9OQU1FIHx8ICdEZXZlbG9wZXInLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ0ZyZWUgc3RhcnRlciB0aWVyIGZvciBpbmRpdmlkdWFsIGRldmVsb3BlcnMnLFxuICAgICAgdGllcjogJ2RldmVsb3BlcicsXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9NT05USExZLCAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fREVWRUxPUEVSX0FOTlVBTCwgMCksXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHBhcnNlRmVhdHVyZXMoXG4gICAgICAgIHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfREVWRUxPUEVSX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgc29ydE9yZGVyOiAwLFxuICAgIH0sXG4gICAgcHJvOiB7XG4gICAgICBpZDogJ3BybycsXG4gICAgICBuYW1lOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fUFJPX05BTUUgfHwgJ1BybycsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19ERVNDUklQVElPTlxuICAgICAgICB8fCAnRm9yIGluZGl2aWR1YWwgcG93ZXIgdXNlcnMgYW5kIHByb2R1Y3Rpb24gd29ya2xvYWRzJyxcbiAgICAgIHRpZXI6ICdwcm8nLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9QUk9fTU9OVEhMWSwgMzkwMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19BTk5VQUwsIDM5MDAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9QUk9fRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiAxLFxuICAgIH0sXG4gICAgdGVhbToge1xuICAgICAgaWQ6ICd0ZWFtJyxcbiAgICAgIG5hbWU6IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX05BTUUgfHwgJ1RlYW0nLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX0RFU0NSSVBUSU9OXG4gICAgICAgIHx8ICdGb3IgdGVhbXMgY29sbGFib3JhdGluZyBvbiBzaGFyZWQgcGlwZWxpbmVzJyxcbiAgICAgIHRpZXI6ICd0ZWFtJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9NT05USExZLCA3OTAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9BTk5VQUwsIDc5MDAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1RFQU1fRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfVEVBTV9GRUFUVVJFUyxcbiAgICAgICksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBzb3J0T3JkZXI6IDIsXG4gICAgfSxcbiAgICBlbnRlcnByaXNlOiB7XG4gICAgICBpZDogJ2VudGVycHJpc2UnLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfTkFNRSB8fCAnRW50ZXJwcmlzZScsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ09yZy13aWRlIHNjYWxlIHdpdGggYSBoaWdoIHNlYXQgYmFzZWxpbmUgKGV4cGFuZGFibGUgdmlhIE1lbWJlciBTZWF0IGFkZC1vbnMpIGFuZCBwcmlvcml0eSBzdXBwb3J0JyxcbiAgICAgIHRpZXI6ICdlbnRlcnByaXNlJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9NT05USExZLCA1OTkwMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfQU5OVUFMLCA1OTkwMDApLFxuICAgICAgfSxcbiAgICAgIGZlYXR1cmVzOiBwYXJzZUZlYXR1cmVzKFxuICAgICAgICBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9FTlRFUlBSSVNFX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIHNvcnRPcmRlcjogMyxcbiAgICB9LFxuICAgIC8vIFRoZSBiaWxsaW5nLURJU0FCTEVEIGRlZmF1bHQgcGxhbjogZXZlcnl0aGluZyB1bmNhcHBlZCwgYWxsIGZlYXR1cmVzLCBmcmVlLlxuICAgIC8vIFNlZWRlZCBzbyB0aGUgdGllcuKGknBsYW4gbWFwcGluZyByZXNvbHZlcywgYnV0IG5ldmVyIG9mZmVyZWQgZm9yIHNhbGUg4oCUIHRoZVxuICAgIC8vIHJlYWQtcGxhbnMgcm91dGUgZmlsdGVycyBpdCBvdXQgKHNlZSBjcmVhdGVSZWFkUGxhblJvdXRlcyksIHNvIGl0J3MgaGlkZGVuXG4gICAgLy8gd2hlbmV2ZXIgYmlsbGluZyBpcyBlbmFibGVkICh0aGUgb25seSB0aW1lIC9wbGFucyBpcyBzZXJ2ZWQpLlxuICAgIHVubGltaXRlZDoge1xuICAgICAgaWQ6ICd1bmxpbWl0ZWQnLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9OQU1FIHx8ICdVbmxpbWl0ZWQnLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ0V2ZXJ5dGhpbmcgdW5jYXBwZWQg4oCUIHRoZSBkZWZhdWx0IHdoZW4gYmlsbGluZyBpcyBkaXNhYmxlZCcsXG4gICAgICB0aWVyOiAndW5saW1pdGVkJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVU5MSU1JVEVEX01PTlRITFksIDApLFxuICAgICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfQU5OVUFMLCAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9VTkxJTUlURURfRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiA0LFxuICAgIH0sXG4gIH07XG5cbiAgLy8gRGVyaXZlIHRoZSBhcnJheSBjb25zdW1lcnMgcmVhZCAoYGNvbmZpZy5wbGFuc2ApIGluIGNhbm9uaWNhbCB0aWVyIG9yZGVyLlxuICBjb25zdCBwbGFuczogQmlsbGluZ1BsYW5Db25maWdbXSA9IFZBTElEX1RJRVJTLm1hcCgodGllcikgPT4gcGxhbkJ5VGllclt0aWVyXSk7XG5cbiAgLy8gQnVpbGQgYnVuZGxlcyBPTkNFIGFuZCB0aHJlYWQgdGhlbSBpbnRvIHRoZSBjb21ibyBsb2FkZXIgKHdoaWNoIG5lZWRzIHRoZWlyXG4gIC8vIGVudi1lZmZlY3RpdmUgcHJpY2VzKSDigJQgYXZvaWRzIHBhcnNpbmcgdGhlIHdob2xlIGJ1bmRsZSBjYXRhbG9nIHR3aWNlIHBlciBsb2FkLlxuICBjb25zdCBidW5kbGVzID0gbG9hZEJ1bmRsZXMoKTtcbiAgcmV0dXJuIHsgcGxhbnMsIGJ1bmRsZXMsIGNvbWJvRGlzY291bnRzOiBsb2FkQ29tYm9EaXNjb3VudHMoYnVuZGxlcykgfTtcbn1cblxuLyoqXG4gKiBDb21ibyBkaXNjb3VudHMgKGRvY3MvYmlsbGluZy1idW5kbGVzLm1kIMKnQ29tYm8gcHJpY2luZykuIFdoZW4gYW4gYWNjb3VudCBvd25zXG4gKiBldmVyeSBtZW1iZXIgYnVuZGxlIChlYWNoIGF0IOKJpSBpdHMgbWluaW11bSBxdWFudGl0eSksIHRoZSBzZXQgaXMgYmlsbGVkIGF0IHRoZVxuICogY29tYmluZWQgcHJpY2UgaW5zdGVhZCBvZiB0aGUgc3VtIG9mIHRoZSBtZW1iZXJzIOKAlCByZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZVxuICogY3JlZGl0IGZvciB0aGUgZGlmZmVyZW5jZS4gT3ZlcmxhcHBpbmcgY29tYm9zIGFyZSByZXNvbHZlZCBieSBtYXgtd2VpZ2h0IHBhY2tpbmdcbiAqIChhIHNoYXJlZCBhZGQtb24gaXMgbmV2ZXIgZGlzY291bnRlZCB0d2ljZSk7IGBzb3J0T3JkZXJgIGJyZWFrcyBlcXVhbC10b3RhbCB0aWVzLlxuICpcbiAqIERlZmF1bHRzOlxuICogIC0gXCJBbmFseXRpY3MgU3VpdGVcIiDigJQgQWR2YW5jZWQgUmVwb3J0aW5nIChET1JBKSArIFRlYW0gVXNhZ2UgQW5hbHl0aWNzLCBlYWNoXG4gKiAgICAkMzAvbW8sIHRvZ2V0aGVyICQ0Mi9tbyAoJDQyMC95cikg4oaSIGEgJDE4L21vIGNyZWRpdCAofjMwJSBvZmYpLlxuICogIC0gXCJUZWFtIEdyb3d0aCBCdW5kbGVcIiDigJQg4omlNSBTZWF0cyAoJDE5Ljk5IGVhKSArIFRlYW0gVXNhZ2UgQW5hbHl0aWNzICgkMzApLFxuICogICAgYmFza2V0ICQxMjkuOTUvbW8g4oaSIHRvZ2V0aGVyICQ5MC45OS9tbyAoJDkwOS45MC95cikg4oaSIGEgfiQzOC45Ni9tbyBjcmVkaXQgKH4zMCUgb2ZmKS5cbiAqICAtIFwiU2NhbGUgQnVuZGxlXCIg4oCUIEFQSSBQYWNrICgkMTkuOTkpICsgU3RvcmFnZSBQYWNrICgkMTkuOTkpLCBiYXNrZXQgJDM5Ljk4L21vXG4gKiAgICDihpIgdG9nZXRoZXIgJDI3Ljk5L21vICgkMjc5LjkwL3lyKSDihpIgYSB+JDExLjk5L21vIGNyZWRpdCAofjMwJSBvZmYpLlxuICogUHJpY2VzIGVudi1vdmVycmlkYWJsZSB2aWEgYEJJTExJTkdfQ09NQk9fPElEPl9NT05USExZYCAvIGBfQU5OVUFMYC5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbWJvRGlzY291bnRzKGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogQ29tYm9EaXNjb3VudENvbmZpZ1tdIHtcbiAgY29uc3QgYyA9IChcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBidW5kbGVJZHM6IHN0cmluZ1tdLFxuICAgIG1vbnRobHk6IG51bWJlcixcbiAgICBhbm51YWw6IG51bWJlcixcbiAgICBzb3J0T3JkZXI6IG51bWJlcixcbiAgICBtaW5RdWFudGl0aWVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgKTogQ29tYm9EaXNjb3VudENvbmZpZyA9PiAoe1xuICAgIGlkLFxuICAgIG5hbWUsXG4gICAgYnVuZGxlSWRzLFxuICAgIC4uLihtaW5RdWFudGl0aWVzID8geyBtaW5RdWFudGl0aWVzIH0gOiB7fSksXG4gICAgcHJpY2VzOiB7XG4gICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudltgQklMTElOR19DT01CT18ke2lkLnRvVXBwZXJDYXNlKCl9X01PTlRITFlgXSwgbW9udGhseSksXG4gICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52W2BCSUxMSU5HX0NPTUJPXyR7aWQudG9VcHBlckNhc2UoKX1fQU5OVUFMYF0sIGFubnVhbCksXG4gICAgfSxcbiAgICBzb3J0T3JkZXIsXG4gICAgaXNBY3RpdmU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbWJvcyA9IFtcbiAgICBjKCdhbmFseXRpY3Nfc3VpdGUnLCAnQW5hbHl0aWNzIFN1aXRlJywgWydhZHZhbmNlZF9yZXBvcnRpbmcnLCAndGVhbV91c2FnZV9hbmFseXRpY3MnXSwgNDIwMCwgNDIwMDAsIDApLFxuICAgIC8vIFRlYW0gR3Jvd3RoIOKAlCDiiaU1IFNlYXRzICgkMTkuOTkgZWEpICsgVGVhbSBVc2FnZSBBbmFseXRpY3MgKCQzMCkuIEJhc2tldFxuICAgIC8vIDXDlyQxOS45OSArICQzMCA9ICQxMjkuOTUvbW8g4oaSIGJ1bmRsZWQgJDkwLjk5L21vICh+MzAlIG9mZiwgfiQzOC45NiBjcmVkaXQpLlxuICAgIGMoJ3RlYW1fZ3Jvd3RoJywgJ1RlYW0gR3Jvd3RoIEJ1bmRsZScsIFsnc2VhdCcsICd0ZWFtX3VzYWdlX2FuYWx5dGljcyddLCA5MDk5LCA5MDk5MCwgMSwgeyBzZWF0OiA1IH0pLFxuICAgIC8vIENvbXBsaWFuY2UgU3VpdGUg4oCUIFN0YW5kYXJkICsgQWR2YW5jZWQgYXQgMzAlIG9mZiAoJDkwOC42MC95ciB2cyAkMSwyOTggbGlzdCkuXG4gICAgYygnY29tcGxpYW5jZV9zdWl0ZScsICdDb21wbGlhbmNlIFN1aXRlJywgWydjb21wbGlhbmNlX3N0YW5kYXJkJywgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnXSwgOTA4NiwgOTA4NjAsIDIpLFxuICAgIC8vIFNjYWxlIEJ1bmRsZSDigJQgQVBJIFBhY2sgKCQxOS45OSkgKyBTdG9yYWdlIFBhY2sgKCQxOS45OSkuIEJhc2tldCAkMzkuOTgvbW8g4oaSXG4gICAgLy8gYnVuZGxlZCAkMjcuOTkvbW8gKH4zMCUgb2ZmLCB+JDExLjk5IGNyZWRpdCkuIEJvdGggbWVtYmVycyBhbGwtdGllci5cbiAgICBjKCdzY2FsZV9idW5kbGUnLCAnU2NhbGUgQnVuZGxlJywgWydhcGlfcGFjaycsICdzdG9yYWdlX3BhY2snXSwgMjc5OSwgMjc5OTAsIDMpLFxuICBdO1xuICBhc3NlcnRDb21ib3NWYWxpZChjb21ib3MsIGJ1bmRsZXMpO1xuICB3YXJuT25Ob25EaXNjb3VudENvbWJvcyhjb21ib3MsIGJ1bmRsZXMpO1xuICByZXR1cm4gY29tYm9zO1xufVxuXG4vKipcbiAqIENvbmZpZy1sb2FkIGd1YXJkcmFpbCBmb3IgY29tYm9zOiBldmVyeSBgYnVuZGxlSWRgIG11c3QgcmVzb2x2ZSB0byBhbiBBQ1RJVkVcbiAqIGJ1bmRsZSBhbmQgZXZlcnkgYG1pblF1YW50aXRpZXNgIGtleSBtdXN0IGJlIG9uZSBvZiB0aGUgY29tYm8ncyBgYnVuZGxlSWRzYC5cbiAqIEEgdHlwbydkIG1lbWJlciBvciBzdHJheSBtaW5RdWFudGl0eSBrZXkgb3RoZXJ3aXNlIHNoaXBzIGEgcGVybWFuZW50bHktaW5lcnRcbiAqIGNvbWJvIChtaXNzaW5nIGJ1bmRsZSB0cmVhdGVkIGFzIHVuaXQgcHJpY2UgMCwgb3IgYSBtaW4gbmV2ZXIgc2F0aXNmaWFibGUpLFxuICogc2lsZW50bHkgbmV2ZXIgYXBwbHlpbmcuIFRocm93cyBzbyBtaXNjb25maWcgZmFpbHMgZmFzdCBhdCBib290LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Q29tYm9zVmFsaWQoY29tYm9zOiBDb21ib0Rpc2NvdW50Q29uZmlnW10sIGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogdm9pZCB7XG4gIGNvbnN0IGFjdGl2ZUlkcyA9IG5ldyBTZXQoYnVuZGxlcy5maWx0ZXIoKGIpID0+IGIuaXNBY3RpdmUpLm1hcCgoYikgPT4gYi5pZCkpO1xuICBmb3IgKGNvbnN0IGNvbWJvIG9mIGNvbWJvcykge1xuICAgIGZvciAoY29uc3QgaWQgb2YgY29tYm8uYnVuZGxlSWRzKSB7XG4gICAgICBpZiAoIWFjdGl2ZUlkcy5oYXMoaWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tYm8gXCIke2NvbWJvLmlkfVwiIHJlZmVyZW5jZXMgYnVuZGxlIFwiJHtpZH1cIiwgd2hpY2ggaXMgbm90IGFuIGFjdGl2ZSBidW5kbGUuYCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbWJvLm1pblF1YW50aXRpZXMgPz8ge30pKSB7XG4gICAgICBpZiAoIWNvbWJvLmJ1bmRsZUlkcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tYm8gXCIke2NvbWJvLmlkfVwiIG1pblF1YW50aXRpZXMga2V5IFwiJHtrZXl9XCIgaXMgbm90IG9uZSBvZiBpdHMgYnVuZGxlSWRzLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiogVGhlIHZvbHVtZS1kaXNjb3VudCBwZXJjZW50IGFwcGx5aW5nIHRvIGBxdWFudGl0eWAgdW5pdHMgb2YgYSBidW5kbGUg4oCUIHRoZVxuICogIGhpZ2hlc3QgYHZvbHVtZVRpZXJzYCBlbnRyeSB3aG9zZSBgbWluUXVhbnRpdHkg4omkIHF1YW50aXR5YCwgZWxzZSAwLiBNaXJyb3JzXG4gKiAgYHZvbHVtZURpc2NvdW50UGN0YCBpbiBhcGkvYmlsbGluZydzIGNvbWJvLXByaWNpbmcgKHdoaWNoIGNhbid0IGJlIGltcG9ydGVkIHRoZVxuICogIG90aGVyIHdheSk7IHRoZSBjb21ibyBjcmVkaXQgbWF0aCBhbmQgdGhpcyBndWFyZHJhaWwgTVVTVCB1c2UgdGhlIHNhbWUgYmFzaXMuICovXG5mdW5jdGlvbiB2b2x1bWVEaXNjb3VudFBjdEF0KGJ1bmRsZTogQnVuZGxlQ29uZmlnIHwgdW5kZWZpbmVkLCBxdWFudGl0eTogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHBjdCA9IDA7XG4gIGZvciAoY29uc3QgdCBvZiBidW5kbGU/LnZvbHVtZVRpZXJzID8/IFtdKSBpZiAocXVhbnRpdHkgPj0gdC5taW5RdWFudGl0eSkgcGN0ID0gdC5kaXNjb3VudFBlcmNlbnQ7XG4gIHJldHVybiBwY3Q7XG59XG5cbi8qKlxuICogR3VhcmRyYWlsOiBhIGNvbWJvIHdob3NlIGNvbWJpbmVkIHByaWNlIGlzIOKJpSBpdHMgbWluaW11bS1jb21wb3NpdGlvbiBiYXNrZXQgZ3JhbnRzXG4gKiBubyBjcmVkaXQgKHRoZSBjcmVkaXQgY2xhbXBzIHRvICQwKSBhbmQgaXMgc2lsZW50bHkgaW5lcnQuIFdhcm4gbG91ZGx5IGluc3RlYWQgc28gYVxuICogbWlzY29uZmlndXJlZCBgQklMTElOR19DT01CT18qYCBvdmVycmlkZSBpcyBjYXVnaHQuIE5vbi1mYXRhbC5cbiAqL1xuZnVuY3Rpb24gd2Fybk9uTm9uRGlzY291bnRDb21ib3MoY29tYm9zOiBDb21ib0Rpc2NvdW50Q29uZmlnW10sIGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogdm9pZCB7XG4gIC8vIENvbWJvIG1lbWJlcnMgYXJlIGFsd2F5cyBidW5kbGVzOyByZXNvbHZlIHRoZWlyIChlbnYtZWZmZWN0aXZlKSB1bml0IHByaWNlcyBvbmNlLlxuICBjb25zdCBieUlkID0gbmV3IE1hcChidW5kbGVzLm1hcCgoYikgPT4gW2IuaWQsIGJdKSk7XG4gIGZvciAoY29uc3QgY29tYm8gb2YgY29tYm9zKSB7XG4gICAgZm9yIChjb25zdCBpbnRlcnZhbCBvZiBbJ21vbnRobHknLCAnYW5udWFsJ10gYXMgY29uc3QpIHtcbiAgICAgIC8vIFBvc3Qtdm9sdW1lIGJhc2lzIChtaXJyb3JzIGBjb21ib0Jhc2lzQ2VudHNgKTogYSBtZW1iZXIgd2l0aCB2b2x1bWUgdGllcnMgaXNcbiAgICAgIC8vIGJhc2lzZWQgb24gaXRzIERJU0NPVU5URUQgdW5pdCBhdCB0aGUgY29tYm8ncyBtaW5RdHksIHNvIHRoaXMgZ3VhcmRyYWlsIGNhbid0XG4gICAgICAvLyBzaWxlbnRseSBtaXNzIGEgY29tYm8gdGhhdCBncmFudHMgbm8gcmVhbCBjcmVkaXQgb25jZSB2b2x1bWUgaXMgYXBwbGllZC5cbiAgICAgIGNvbnN0IGJhc2tldCA9IGNvbWJvLmJ1bmRsZUlkcy5yZWR1Y2UoKHMsIGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IGIgPSBieUlkLmdldChpZCk7XG4gICAgICAgIGNvbnN0IHF0eSA9IGNvbWJvLm1pblF1YW50aXRpZXM/LltpZF0gPz8gMTtcbiAgICAgICAgY29uc3QgcmF3VW5pdCA9IGI/LnByaWNlc1tpbnRlcnZhbF0gPz8gMDtcbiAgICAgICAgY29uc3QgdW5pdCA9IE1hdGgucm91bmQoKHJhd1VuaXQgKiAoMTAwIC0gdm9sdW1lRGlzY291bnRQY3RBdChiLCBxdHkpKSkgLyAxMDApO1xuICAgICAgICByZXR1cm4gcyArIHVuaXQgKiBxdHk7XG4gICAgICB9LCAwKTtcbiAgICAgIGlmIChjb21iby5wcmljZXNbaW50ZXJ2YWxdID49IGJhc2tldCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oYFtiaWxsaW5nLWNvbmZpZ10gQ29tYm8gXCIke2NvbWJvLmlkfVwiICR7aW50ZXJ2YWx9IHByaWNlICR7Y29tYm8ucHJpY2VzW2ludGVydmFsXX0g4omlIG1lbWJlciBiYXNrZXQgJHtiYXNrZXR9OyBpdCBncmFudHMgbm8gZGlzY291bnQuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IEJVTkRMRV9HQiA9IDEwMjQgKiAxMDI0ICogMTAyNDtcblxuLyoqXG4gKiBBcHBseSBhIHBlci1idW5kbGUgZ3JhbnQgb3ZlcnJpZGUuIEVhY2ggc3RhY2thYmxlIHBhY2sgZ3JhbnRzIGV4YWN0bHkgb25lXG4gKiBxdW90YSBkaW1lbnNpb24sIHNvIGBCSUxMSU5HX0JVTkRMRV88SUQ+X0dSQU5UYCByZXR1bmVzIHRoYXQgYW1vdW50IChlLmcuIG1ha2VcbiAqIHRoZSBQbHVnaW4gUGFjayBncmFudCArNTAgaW5zdGVhZCBvZiArMjUpIOKAlCBwYXJhbGxlbCB0byB0aGUgcHJpY2Ugb3ZlcnJpZGVzLlxuICogSWdub3JlZCBmb3IgbXVsdGktZGltZW5zaW9uIG9yIGZlYXR1cmUtb25seSAoZW1wdHktZ3JhbnQpIGJ1bmRsZXMsIGFuZCBmb3IgYVxuICogbWFsZm9ybWVkL25lZ2F0aXZlIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcHBseUdyYW50T3ZlcnJpZGUoaWQ6IHN0cmluZywgZ3JhbnRzOiBHcmFudE1hcCk6IEdyYW50TWFwIHtcbiAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnZbYEJJTExJTkdfQlVORExFXyR7aWQudG9VcHBlckNhc2UoKX1fR1JBTlRgXTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGdyYW50cyk7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCB8fCByYXcgPT09ICcnIHx8IGtleXMubGVuZ3RoICE9PSAxKSByZXR1cm4gZ3JhbnRzO1xuICBjb25zdCBuID0gcGFyc2VJbnQocmF3LCAxMCk7XG4gIGlmIChOdW1iZXIuaXNOYU4obikgfHwgbiA8IDApIHJldHVybiBncmFudHM7XG4gIC8vIGBrZXlzYCBjYW1lIGZyb20gYSBHcmFudE1hcCwgc28gaXRzIHNvbGUga2V5IGlzIGEgUXVvdGFUaWVyTGltaXRzIGZpZWxkLlxuICByZXR1cm4geyBba2V5c1swXSBhcyBrZXlvZiBRdW90YVRpZXJMaW1pdHNdOiBuIH07XG59XG5cbi8qKlxuICogQXBwbHkgYSBwZXItYnVuZGxlIHRpZXItYXZhaWxhYmlsaXR5IG92ZXJyaWRlLiBgQklMTElOR19CVU5ETEVfPElEPl9USUVSU2AgaXMgYVxuICogSlNPTiBhcnJheSBvZiB0aWVyIElEcyB0aGF0IG1heSBwdXJjaGFzZSB0aGUgYnVuZGxlIChlLmcuIGBbXCJkZXZlbG9wZXJcIixcInByb1wiXWApXG4gKiDigJQgcGFyYWxsZWwgdG8gdGhlIHByaWNlL2dyYW50IG92ZXJyaWRlcy4gRmFsbHMgYmFjayB0byBgZGVmYXVsdFRpZXJzYCB3aGVuXG4gKiB1bnNldCwgbWFsZm9ybWVkLCBlbXB0eSwgb3IgY29udGFpbmluZyBhbiB1bmtub3duIHRpZXIuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5VGllcnNPdmVycmlkZShpZDogc3RyaW5nLCBkZWZhdWx0VGllcnM6IFF1b3RhVGllcltdKTogUXVvdGFUaWVyW10ge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltgQklMTElOR19CVU5ETEVfJHtpZC50b1VwcGVyQ2FzZSgpfV9USUVSU2BdO1xuICBpZiAoIXJhdykgcmV0dXJuIGRlZmF1bHRUaWVycztcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkgfHwgcGFyc2VkLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGRlZmF1bHRUaWVycztcbiAgICBjb25zdCB2YWxpZCA9IHBhcnNlZC5maWx0ZXIoKHQpOiB0IGlzIFF1b3RhVGllciA9PiB0eXBlb2YgdCA9PT0gJ3N0cmluZycgJiYgaXNWYWxpZFRpZXIodCkpO1xuICAgIHJldHVybiB2YWxpZC5sZW5ndGggPT09IHBhcnNlZC5sZW5ndGggPyB2YWxpZCA6IGRlZmF1bHRUaWVycztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGRlZmF1bHRUaWVycztcbiAgfVxufVxuXG50eXBlIFZvbHVtZVRpZXIgPSB7IG1pblF1YW50aXR5OiBudW1iZXI7IGRpc2NvdW50UGVyY2VudDogbnVtYmVyIH07XG5cbi8qKlxuICogQXBwbHkgYSBwZXItYnVuZGxlIHZvbHVtZS10aWVyIG92ZXJyaWRlLiBgQklMTElOR19CVU5ETEVfPElEPl9WT0xVTUVfVElFUlNgIGlzIGFcbiAqIEpTT04gYXJyYXkgb2YgYHsgbWluUXVhbnRpdHksIGRpc2NvdW50UGVyY2VudCB9YCAoZS5nLlxuICogYFt7XCJtaW5RdWFudGl0eVwiOjUsXCJkaXNjb3VudFBlcmNlbnRcIjoxMH1dYCkg4oCUIHBhcmFsbGVsIHRvIHRoZSBwcmljZS9ncmFudC90aWVyXG4gKiBvdmVycmlkZXMuIEZhbGxzIGJhY2sgdG8gYGRlZmF1bHRUaWVyc2Agd2hlbiB1bnNldCwgbWFsZm9ybWVkLCBvciBjb250YWluaW5nIGFuXG4gKiBpbnZhbGlkIGVudHJ5IChtaW5RdWFudGl0eSDiiaUgMSwgMCA8IGRpc2NvdW50UGVyY2VudCDiiaQgMTAwKS4gU29ydGVkIGFzY2VuZGluZyBieVxuICogbWluUXVhbnRpdHkgc28gdGhlIFwiaGlnaGVzdCBtYXRjaGluZyB0aWVyIHdpbnNcIiBsb29rdXAgaXMgZGV0ZXJtaW5pc3RpYy5cbiAqL1xuZnVuY3Rpb24gYXBwbHlWb2x1bWVUaWVyc092ZXJyaWRlKGlkOiBzdHJpbmcsIGRlZmF1bHRUaWVycz86IFZvbHVtZVRpZXJbXSk6IFZvbHVtZVRpZXJbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52W2BCSUxMSU5HX0JVTkRMRV8ke2lkLnRvVXBwZXJDYXNlKCl9X1ZPTFVNRV9USUVSU2BdO1xuICBjb25zdCBzb3J0QXNjID0gKHQ6IFZvbHVtZVRpZXJbXSkgPT4gWy4uLnRdLnNvcnQoKGEsIGIpID0+IGEubWluUXVhbnRpdHkgLSBiLm1pblF1YW50aXR5KTtcbiAgY29uc3QgZmFsbGJhY2sgPSAoKSA9PiAoZGVmYXVsdFRpZXJzID8gc29ydEFzYyhkZWZhdWx0VGllcnMpIDogdW5kZWZpbmVkKTtcbiAgaWYgKCFyYXcpIHJldHVybiBmYWxsYmFjaygpO1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSB8fCBwYXJzZWQubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICAvLyBFYWNoIGVudHJ5OiBpbnRlZ2VyIG1pblF1YW50aXR5IOKJpSAxLCAwIDwgZGlzY291bnRQZXJjZW50IOKJpCAxMDAuXG4gICAgY29uc3QgdmFsaWQgPSBwYXJzZWQuZmlsdGVyKCh0KTogdCBpcyBWb2x1bWVUaWVyID0+XG4gICAgICB0ICYmIHR5cGVvZiB0Lm1pblF1YW50aXR5ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHQubWluUXVhbnRpdHkpICYmIHQubWluUXVhbnRpdHkgPj0gMVxuICAgICAgJiYgdHlwZW9mIHQuZGlzY291bnRQZXJjZW50ID09PSAnbnVtYmVyJyAmJiB0LmRpc2NvdW50UGVyY2VudCA+IDAgJiYgdC5kaXNjb3VudFBlcmNlbnQgPD0gMTAwKTtcbiAgICBpZiAodmFsaWQubGVuZ3RoICE9PSBwYXJzZWQubGVuZ3RoKSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBzb3J0QXNjKHZhbGlkKTtcbiAgICAvLyBSZWplY3QgYSBub24tbW9ub3RvbmljIGN1cnZlOiBidXlpbmcgTU9SRSBtdXN0IG5ldmVyIGVhcm4gYSBTTUFMTEVSIGRpc2NvdW50LFxuICAgIC8vIGFuZCBkdXBsaWNhdGUgdGhyZXNob2xkcyBhcmUgYW1iaWd1b3VzLiAoYHZvbHVtZURpc2NvdW50UGN0YCBwaWNrcyB0aGUgbGFzdFxuICAgIC8vIHF1YWxpZnlpbmcgdGllciwgc28gYSBkZXNjZW5kaW5nIHBlcmNlbnQgd291bGQgcGVuYWxpemUgaGlnaGVyIHF1YW50aXRpZXMuKVxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc29ydGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoc29ydGVkW2ldLm1pblF1YW50aXR5ID09PSBzb3J0ZWRbaSAtIDFdLm1pblF1YW50aXR5KSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICAgIGlmIChzb3J0ZWRbaV0uZGlzY291bnRQZXJjZW50IDw9IHNvcnRlZFtpIC0gMV0uZGlzY291bnRQZXJjZW50KSByZXR1cm4gZmFsbGJhY2soKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvcnRlZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbGxiYWNrKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXJjaGFzYWJsZSBhZGQtb24gYnVuZGxlcyAoZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQgwqczKS4gR3JhbnRzIGFyZSBwZXItdW5pdFxuICogZGVsdGFzIG9uIFF1b3RhVGllckxpbWl0czsgcHJpY2VzIChjZW50cywgYEJJTExJTkdfQlVORExFXzxJRD5fTU9OVEhMWWAgL1xuICogYF9BTk5VQUxgKSwgdGhlIHNpbmdsZS1kaW1lbnNpb24gZ3JhbnQgYW1vdW50IChgQklMTElOR19CVU5ETEVfPElEPl9HUkFOVGApLFxuICogYW5kIHRoZSBwdXJjaGFzYWJsZS10aWVyIGxpc3QgKGBCSUxMSU5HX0JVTkRMRV88SUQ+X1RJRVJTYCkgYXJlIGFsbFxuICogZW52LW92ZXJyaWRhYmxlLiBBbm51YWwg4omIIDEww5cgbW9udGhseS5cbiAqL1xuZnVuY3Rpb24gbG9hZEJ1bmRsZXMoKTogQnVuZGxlQ29uZmlnW10ge1xuICBjb25zdCBiID0gKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZ3JhbnRzOiBHcmFudE1hcCxcbiAgICBtb250aGx5OiBudW1iZXIsXG4gICAgYXZhaWxhYmxlRm9yVGllcnM6IFF1b3RhVGllcltdLFxuICAgIHNvcnRPcmRlcjogbnVtYmVyLFxuICAgIGV4dHJhOiB7IGZlYXR1cmVzPzogc3RyaW5nW107IHN0YWNrYWJsZT86IGJvb2xlYW47IG1heFF1YW50aXR5PzogbnVtYmVyOyByZXF1aXJlcz86IHN0cmluZ1tdOyByZXF1aXJlc0ZlYXR1cmVzPzogc3RyaW5nW107IHZvbHVtZVRpZXJzPzogVm9sdW1lVGllcltdIH0gPSB7fSxcbiAgKTogQnVuZGxlQ29uZmlnID0+IHtcbiAgICAvLyBSZXNvbHZlIG1vbnRobHkgZmlyc3Qgc28gdGhlIGFubnVhbCBmYWxsYmFjayB0cmFja3MgYSBgX01PTlRITFlgIG92ZXJyaWRlXG4gICAgLy8gKGFubnVhbCDiiYggMTDDlyB0aGUgKmVmZmVjdGl2ZSogbW9udGhseSwgbm90IHRoZSBoYXJkY29kZWQgZGVmYXVsdCkuXG4gICAgY29uc3QgcmVzb2x2ZWRNb250aGx5ID0gZW52Q2VudHMocHJvY2Vzcy5lbnZbYEJJTExJTkdfQlVORExFXyR7aWQudG9VcHBlckNhc2UoKX1fTU9OVEhMWWBdLCBtb250aGx5KTtcbiAgICBjb25zdCB2b2x1bWVUaWVycyA9IGFwcGx5Vm9sdW1lVGllcnNPdmVycmlkZShpZCwgZXh0cmEudm9sdW1lVGllcnMpO1xuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGdyYW50czogYXBwbHlHcmFudE92ZXJyaWRlKGlkLCBncmFudHMpLFxuICAgICAgLi4uKGV4dHJhLmZlYXR1cmVzID8geyBmZWF0dXJlczogZXh0cmEuZmVhdHVyZXMgfSA6IHt9KSxcbiAgICAgIC4uLihleHRyYS5tYXhRdWFudGl0eSAhPT0gdW5kZWZpbmVkID8geyBtYXhRdWFudGl0eTogZXh0cmEubWF4UXVhbnRpdHkgfSA6IHt9KSxcbiAgICAgIC4uLihleHRyYS5yZXF1aXJlcyA/IHsgcmVxdWlyZXM6IGV4dHJhLnJlcXVpcmVzIH0gOiB7fSksXG4gICAgICAuLi4oZXh0cmEucmVxdWlyZXNGZWF0dXJlcyA/IHsgcmVxdWlyZXNGZWF0dXJlczogZXh0cmEucmVxdWlyZXNGZWF0dXJlcyB9IDoge30pLFxuICAgICAgLi4uKHZvbHVtZVRpZXJzID8geyB2b2x1bWVUaWVycyB9IDoge30pLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IHJlc29sdmVkTW9udGhseSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudltgQklMTElOR19CVU5ETEVfJHtpZC50b1VwcGVyQ2FzZSgpfV9BTk5VQUxgXSwgcmVzb2x2ZWRNb250aGx5ICogMTApLFxuICAgICAgfSxcbiAgICAgIHN0YWNrYWJsZTogZXh0cmEuc3RhY2thYmxlID8/IHRydWUsXG4gICAgICBhdmFpbGFibGVGb3JUaWVyczogYXBwbHlUaWVyc092ZXJyaWRlKGlkLCBhdmFpbGFibGVGb3JUaWVycyksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIHNvcnRPcmRlcixcbiAgICB9O1xuICB9O1xuXG4gIC8vIEJ1bmRsZXMgYXJlIHB1cmNoYXNhYmxlIG9uIGV2ZXJ5IFNFTEVDVEFCTEUgdGllciAoZXhjbHVkZXMgYHVubGltaXRlZGAsIHdoaWNoXG4gIC8vIGlzIHRoZSBiaWxsaW5nLW9mZiB0aWVyIGFuZCBidXlzIG5vdGhpbmcpIOKAlCBzbyB0aGlzIGlzIGV4YWN0bHkgU1RBTkRBUkRfVElFUlMuXG4gIGNvbnN0IEFMTDogUXVvdGFUaWVyW10gPSBbLi4uU1RBTkRBUkRfVElFUlNdO1xuICBjb25zdCBidW5kbGVzOiBCdW5kbGVDb25maWdbXSA9IFtcbiAgICAvLyBgc2VhdGAgYW5kIGBwaXBlbGluZV9wYWNrYCBhcmUgdGhlIHRpZXIgZGlmZmVyZW50aWF0b3JzLCBzbyBib3RoIGFyZSBUZWFtK1xuICAgIC8vIE9OTFkg4oCUIGEgc2luZ2xlLXNlYXQgRGV2ZWxvcGVyL1BybyBjYW4ndCBjaGVhcGx5IHN0YWNrIHNlYXRzL3BpcGVsaW5lcyB0b1xuICAgIC8vIHVuZGVyY3V0IFRlYW0gKDMgc2VhdHMgLyA2IHBpcGVsaW5lcyk7IHRoZXkgbXVzdCB1cGdyYWRlLiBgc2VhdGAgaXMgZ3JhbnVsYXJcbiAgICAvLyAocGVyLXNlYXQpIHdpdGggdm9sdW1lIHRpZXJzICg1LzE1LzQwIOKGkiAxMC8yMC8zMCUpLiBUaGUgb3RoZXIgY2FwYWNpdHkgcGFja3NcbiAgICAvLyAocGx1Z2luL2FwaS9haS9zdG9yYWdlKSBhcmUgTk9UIGRpZmZlcmVudGlhdG9ycywgc28gdGhleSBzdGF5IGFsbC10aWVyLlxuICAgIGIoJ3NlYXQnLCAnTWVtYmVyIFNlYXQnLCAnMSBhZGRpdGlvbmFsIG1lbWJlciBzZWF0JywgeyBzZWF0czogMSB9LCAxOTk5LCBbJ3RlYW0nLCAnZW50ZXJwcmlzZSddLCAwLFxuICAgICAgeyB2b2x1bWVUaWVyczogW3sgbWluUXVhbnRpdHk6IDUsIGRpc2NvdW50UGVyY2VudDogMTAgfSwgeyBtaW5RdWFudGl0eTogMTUsIGRpc2NvdW50UGVyY2VudDogMjAgfSwgeyBtaW5RdWFudGl0eTogNDAsIGRpc2NvdW50UGVyY2VudDogMzAgfV0gfSksXG4gICAgYigncGlwZWxpbmVfcGFjaycsICdQaXBlbGluZSBQYWNrICgrNSknLCAnNSBhZGRpdGlvbmFsIHBpcGVsaW5lcycsIHsgcGlwZWxpbmVzOiA1IH0sIDE1MDAsIFsndGVhbScsICdlbnRlcnByaXNlJ10sIDEpLFxuICAgIGIoJ3BsdWdpbl9wYWNrJywgJ1BsdWdpbiBQYWNrICgrMjUpJywgJzI1IGFkZGl0aW9uYWwgcGx1Z2lucycsIHsgcGx1Z2luczogMjUgfSwgMTAwMCwgQUxMLCAyKSxcbiAgICBiKCdhcGlfcGFjaycsICdBUEkgUGFjayAoKzEwMGspJywgJzEwMCwwMDAgYWRkaXRpb25hbCBBUEkgY2FsbHMgLyBwZXJpb2QnLCB7IGFwaUNhbGxzOiAxMDBfMDAwIH0sIDE5OTksIEFMTCwgMyksXG4gICAgYignYWlfcGFjaycsICdBSSBQYWNrICgrMi41ayknLCAnMiw1MDAgYWRkaXRpb25hbCBBSSBjYWxscyAvIHBlcmlvZCcsIHsgYWlDYWxsczogMjUwMCB9LCAxOTk5LCBBTEwsIDQpLFxuICAgIGIoJ3N0b3JhZ2VfcGFjaycsICdTdG9yYWdlIFBhY2sgKCsxMCBHQiknLCAnMTAgR0IgYWRkaXRpb25hbCByZWdpc3RyeSBzdG9yYWdlJywgeyBzdG9yYWdlQnl0ZXM6IDEwICogQlVORExFX0dCIH0sIDE5OTksIEFMTCwgNSksXG4gICAgLy8gTk9URTogYHNzb2AgaXMgTk9UIHNvbGQgYXMgYW4gYWRkLW9uLiBJdCBpcyBhIFRJRVIgZmVhdHVyZSBmcm9tIFRlYW0gdXBcbiAgICAvLyAoVElFUl9GRUFUVVJFUy50ZWFtKSBhbmQgbm90aGluZyBiZWxvdyBUZWFtIGNhbiBidXkgaXQuIFRoZSBidW5kbGUgdGhhdFxuICAgIC8vIHVzZWQgdG8gZXhpc3QgaGVyZSB3YXMgJDQwL21vIG9uIFBybyBvbmx5IOKAlCBQcm8gKCQzOSkgKyB0aGUgYWRkLW9uIGNhbWUgdG9cbiAgICAvLyBleGFjdGx5IFRlYW0gKCQ3OSksIHdoaWNoIGFscmVhZHkgaW5jbHVkZXMgU1NPICphbmQqIHRlYW1zICphbmQqIGRvbWFpblxuICAgIC8vIHJlZ2lzdHJhdGlvbiwgc28gaXQgd2FzIHN0cmljdGx5IGRvbWluYXRlZC4gSXQgd2FzIGFsc28gZnVuY3Rpb25hbGx5XG4gICAgLy8gYnJva2VuIGJlbG93IFRlYW06IFNTTyByZWZ1c2VzIGFuIGlkZW50aXR5IHdob3NlIGVtYWlsIGRvbWFpbiB0aGUgb3JnIGhhc1xuICAgIC8vIG5vdCBETlMtdmVyaWZpZWQgKGBhc3NlcnRTc29JZGVudGl0eVRydXN0ZWRgLCB3aGljaCBleGVtcHRzIG9ubHlcbiAgICAvLyBHb29nbGUtaXNzdWVkIGlkZW50aXRpZXMpLCBhbmQgcmVnaXN0ZXJpbmcgYSBkb21haW4gdG8gdmVyaWZ5IGlzIElUU0VMRiBhXG4gICAgLy8gaGFyZCBUZWFtL0VudGVycHJpc2UgdGllciBjaGVjayAocGxhdGZvcm0gYG9yZy1kb21haW4tc2VydmljZWApLiBTbyBhIFByb1xuICAgIC8vIGJ1eWVyJ3MgT2t0YSAvIEVudHJhIC8gZ2VuZXJpYy1PSURDIC8gU0FNTCBjb25uZWN0aW9uIGZhaWxlZCBhdCBjYWxsYmFja1xuICAgIC8vIHdpdGggT0lEQ19FTUFJTF9ET01BSU5fTk9UX1ZFUklGSUVELCB3aXRoIG5vIHdheSB0byBmaXggaXQgb24gUHJvLiBTZWxsaW5nXG4gICAgLy8gU1NPIGJlbG93IFRlYW0gd291bGQgbWVhbiBnaXZpbmcgYXdheSBkb21haW4gcmVnaXN0cmF0aW9uIHRvbywgYW5kIHRoYXQgaXNcbiAgICAvLyB0aGUgVGVhbSBkaWZmZXJlbnRpYXRvci5cblxuICAgIC8vIERPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MuIElOQ0xVREVEIGluIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpLFxuICAgIC8vIHNvIHRoZSBhZGQtb24gaXMgb2ZmZXJlZCB0byBldmVyeSBvdGhlciB0aWVyIChkZXZlbG9wZXIvcHJvL3RlYW0pLiBQcmljZWRcbiAgICAvLyBhcyBhbiBhbmFseXRpY3Mgc3VyZmFjZSwgbm90IGFuIGVudGVycHJpc2UgaWRlbnRpdHkgZ2F0ZS5cbiAgICAvLyBMZWFkIHRpbWUgaXMgTUVBU1VSRUQgY29tbWl0IOKGkiBkZXBsb3kgKHJlcG9ydGluZydzIGRlcGxveSBldmVudHMpLCBub3QgYSBwcm94eS5cbiAgICBiKCdhZHZhbmNlZF9yZXBvcnRpbmcnLCAnQWR2YW5jZWQgUmVwb3J0aW5nIChET1JBKScsICdET1JBIGRlbGl2ZXJ5IG1ldHJpY3Mg4oCUIGRlcGxveW1lbnQgZnJlcXVlbmN5LCBsZWFkIHRpbWUgKGNvbW1pdCDihpIgZGVwbG95KSwgY2hhbmdlIGZhaWx1cmUgcmF0ZSwgTVRUUiwgcGVyZm9ybWFuY2UgYmFuZHMgKyB0cmVuZCcsIHt9LCAzMDAwLCBbJ2RldmVsb3BlcicsICdwcm8nLCAndGVhbSddLCA4LCB7IGZlYXR1cmVzOiBbJ2FkdmFuY2VkX3JlcG9ydGluZyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIFBlci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlLiBJTkNMVURFRCBpblxuICAgIC8vIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpOyB0aGUgYWRkLW9uIGlzIG9mZmVyZWQgdG8gVGVhbSBvbmx5IOKAlCBEZXZlbG9wZXJcbiAgICAvLyBhbmQgUHJvIGNhbid0IG5lc3QgdGVhbXMgKFRFQU1fQ0FQQUJMRV9USUVSUyksIHNvIHRoZXJlJ2QgYmUgbm90aGluZyB0b1xuICAgIC8vIGJyZWFrIGRvd24uIFByaWNlZCBhdCAkMzAvbW8gKCQzMDAveXIpIOKAlCBwYXJpdHkgd2l0aCBET1JBLCBpdHMgYW5hbHl0aWNzXG4gICAgLy8gc2libGluZy4gT3ZlcnJpZGFibGUgdmlhIEJJTExJTkdfQlVORExFX1RFQU1fVVNBR0VfQU5BTFlUSUNTX01PTlRITFkvX0FOTlVBTC5cbiAgICBiKCd0ZWFtX3VzYWdlX2FuYWx5dGljcycsICdUZWFtIFVzYWdlIEFuYWx5dGljcycsICdQZXItdGVhbSB1c2FnZSBicmVha2Rvd24gYWNyb3NzIHRoZSBvcmcg4oaSIHRlYW0gc3VidHJlZSAoYWxsIHF1b3RhIGRpbWVuc2lvbnMpJywge30sIDMwMDAsIFsndGVhbSddLCA5LCB7IGZlYXR1cmVzOiBbJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gICAgLy8gUmV0ZW50aW9uIHBhY2tzIChkb2NzL2JpbGxpbmctYnVuZGxlcy5tZCkuIFN0YWNrYWJsZSBjYXBhY2l0eSBwYWNrcyB0aGF0XG4gICAgLy8gcmFpc2UgdGhlIHJlcG9ydGluZyByZXRlbnRpb24gZW50aXRsZW1lbnQgYmlsbGluZyBzeW5jcyB0byByZXBvcnRpbmcnc1xuICAgIC8vIGBkb3JhX3NldHRpbmdzYC4gTk9UIHF1b3RhLW1ldGVyZWQgZmxvdyDigJQgYGV2ZW50UmV0ZW50aW9uRGF5c2AvYGRvcmFSZXRlbnRpb25EYXlzYFxuICAgIC8vIGFyZSBhYnNlbnQgZnJvbSBWQUxJRF9RVU9UQV9UWVBFUywgc28gdGhleSBuZXZlciByaWRlIHRoZSBxdW90YS1zZXJ2aWNlIGxlZy5cbiAgICAvLyBTdGFuZGFyZCBSZXRlbnRpb24gUGFjazogKzkwZCBzdGFuZGFyZC1ldmVudCByZXRlbnRpb24gKGJhc2UgMzAg4oaSIDEyMCDihpIgMjEw4oCmKS5cbiAgICAvLyBDYXBwZWQgYXQgNyAoMzAgKyA3w5c5MCA9IDY2MCDiiaQgdGhlIDczMC1kYXkgcmV0ZW50aW9uIGNlaWxpbmcpLlxuICAgIGIoJ3JldGVudGlvbl9wYWNrJywgJ1N0YW5kYXJkIFJldGVudGlvbiBQYWNrICgrOTBkKScsICc5MCBhZGRpdGlvbmFsIGRheXMgb2Ygc3RhbmRhcmQgcGlwZWxpbmUtZXZlbnQgcmV0ZW50aW9uJywgeyBldmVudFJldGVudGlvbkRheXM6IDkwIH0sIDE1MDAsIEFMTCwgMTAsIHsgbWF4UXVhbnRpdHk6IDcgfSksXG4gICAgLy8gRE9SQSBIaXN0b3J5IFBhY2s6ICszNjVkIERPUkEgcmV0ZW50aW9uIEFORCBwZXItb3JnIHJlcG9ydC1xdWVyeSB3aW5kb3cgKHRoZVxuICAgIC8vIHdpbmRvdyBjYXAgdHJhY2tzIGRvcmFSZXRlbnRpb25EYXlzKS4gT25seSBtZWFuaW5nZnVsIHdpdGggQWR2YW5jZWQgUmVwb3J0aW5nXG4gICAgLy8g4oCUIElOQ0xVREVEIGluIEVudGVycHJpc2UsIGFuIGFkZC1vbiBvbiBkZXZlbG9wZXIvcHJvL3RlYW0g4oCUIHNvIGl0XG4gICAgLy8gYHJlcXVpcmVzRmVhdHVyZXNgIGl0ICh0aGUgdGllciBPUiBhIGhlbGQgYnVuZGxlIHNhdGlzZmllcyBpdCkuIENhcHBlZCBhdCAxXG4gICAgLy8gKDE4MCArIDM2NSA9IDU0NSDiiaQgdGhlIDczMC1kYXkgcmV0ZW50aW9uIGNlaWxpbmcpLlxuICAgIGIoJ2RvcmFfaGlzdG9yeV9wYWNrJywgJ0RPUkEgSGlzdG9yeSBQYWNrICgrMzY1ZCknLCAnMzY1IGFkZGl0aW9uYWwgZGF5cyBvZiBET1JBIGhpc3RvcnkgKyByZXBvcnQtcXVlcnkgd2luZG93IChyZXF1aXJlcyBBZHZhbmNlZCBSZXBvcnRpbmcpJywgeyBkb3JhUmV0ZW50aW9uRGF5czogMzY1IH0sIDMwMDAsIEFMTCwgMTEsIHsgbWF4UXVhbnRpdHk6IDEsIHJlcXVpcmVzRmVhdHVyZXM6IFsnYWR2YW5jZWRfcmVwb3J0aW5nJ10gfSksXG4gICAgLy8gQ29tcGxpYW5jZSBjb250ZW50IGFkZC1vbnMgKGRvY3MvcGxhbnMvY29tcGxpYW5jZS1hZGRvbnMubWQpLiBGZWF0dXJlIGJ1bmRsZXNcbiAgICAvLyBnYXRpbmcgYWNjZXNzIHRvIGN1cmF0ZWQgc3lzdGVtLW9yZyBwdWJsaXNoZWQgcnVsZSBzZXRzLiBJTkNMVURFRCBpblxuICAgIC8vIEVudGVycHJpc2UvVW5saW1pdGVkICh2aWEgQUxMX0ZFQVRVUkVfRkxBR1MpOyBzb2xkIHRvIERldmVsb3Blci9Qcm8vVGVhbS5cbiAgICAvLyBTdGFuZGFyZCA9IH4yMCBDSS9DRCBiZXN0LXByYWN0aWNlIHJ1bGVzLiBBZHZhbmNlZCA9IFNPQzIvUENJL0NJUyBmcmFtZXdvcmtcbiAgICAvLyBsaWJyYXJpZXM7IFJFUVVJUkVTIFN0YW5kYXJkIChvciBidXkgdGhlIFN1aXRlIGNvbWJvIGZvciBib3RoIGF0IDMwJSBvZmYpLlxuICAgIGIoJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnLCAnU3RhbmRhcmQgQ29tcGxpYW5jZScsICdDdXJhdGVkIENJL0NEIGJlc3QtcHJhY3RpY2UgY29tcGxpYW5jZSBydWxlcycsIHt9LCAyOTkwLCBbJ2RldmVsb3BlcicsICdwcm8nLCAndGVhbSddLCAxMiwgeyBmZWF0dXJlczogWydjb21wbGlhbmNlX3N0YW5kYXJkJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gICAgYignY29tcGxpYW5jZV9hZHZhbmNlZCcsICdBZHZhbmNlZCBDb21wbGlhbmNlJywgJ0N1cmF0ZWQgZnJhbWV3b3JrIGNvbXBsaWFuY2UgbGlicmFyaWVzIChTT0MyIC8gUENJLURTUyAvIENJUyknLCB7fSwgOTk5MCwgWydkZXZlbG9wZXInLCAncHJvJywgJ3RlYW0nXSwgMTMsIHsgZmVhdHVyZXM6IFsnY29tcGxpYW5jZV9hZHZhbmNlZCddLCBzdGFja2FibGU6IGZhbHNlLCByZXF1aXJlczogWydjb21wbGlhbmNlX3N0YW5kYXJkJ10gfSksXG4gIF07XG4gIGFzc2VydEJ1bmRsZVJlcXVpcmVzVmFsaWQoYnVuZGxlcyk7XG4gIHJldHVybiBidW5kbGVzO1xufVxuXG4vKipcbiAqIENvbmZpZy1sb2FkIGd1YXJkcmFpbCBmb3IgdGhlIGByZXF1aXJlc2AgLyBgcmVxdWlyZXNGZWF0dXJlc2AgcHJlcmVxdWlzaXRlcy4gQVxuICogYHJlcXVpcmVzYCBlbnRyeSB0aGF0IGRvZXNuJ3QgcmVzb2x2ZSB0byBhbiBBQ1RJVkUgYnVuZGxlIOKAlCBvciB0aGF0IHBhcnRpY2lwYXRlc1xuICogaW4gYSBjeWNsZSDigJQgc2lsZW50bHkgbWFrZXMgdGhlIHJlZmVyZW5jaW5nIGJ1bmRsZSB1bnB1cmNoYXNhYmxlICh0aGUgYWRkb25cbiAqIHJvdXRlIHJlamVjdHMgd2l0aCA0MDAgZm9yZXZlciBiZWNhdXNlIHRoZSBwcmVyZXF1aXNpdGUgY2FuIG5ldmVyIGJlXG4gKiBzYXRpc2ZpZWQpLiBDYXRjaCBpdCBhdCBsb2FkIHdpdGggYSBjbGVhciBlcnJvciByYXRoZXIgdGhhbiBzaGlwcGluZyBhIGRlYWQgU0tVLlxuICpcbiAqICAtIEV2ZXJ5IGlkIGluIGEgYnVuZGxlJ3MgYHJlcXVpcmVzYCBNVVNUIG5hbWUgYW4gYWN0aXZlIGJ1bmRsZSBpbiB0aGUgY2F0YWxvZy5cbiAqICAtIFRoZSBgcmVxdWlyZXNgIGdyYXBoIE1VU1QgYmUgYWN5Y2xpYyAoYSDihpIgYiDihpIgYSBjYW4gbmV2ZXIgYmUgc2F0aXNmaWVkKS5cbiAqICAtIEV2ZXJ5IGByZXF1aXJlc0ZlYXR1cmVzYCBlbnRyeSBNVVNUIGJlIGEgcmVhbCBmZWF0dXJlIGZsYWcsIGF0dGFpbmFibGUgb25cbiAqICAgIEVWRVJZIHRpZXIgdGhlIGJ1bmRsZSBpcyBzb2xkIHRvIOKAlCBlaXRoZXIgdGllci1pbmNsdWRlZCAoYFRJRVJfRkVBVFVSRVNgKSBvclxuICogICAgZ3JhbnRlZCBieSBhbiBhY3RpdmUgYnVuZGxlIG9mZmVyZWQgb24gdGhhdCBzYW1lIHRpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRCdW5kbGVSZXF1aXJlc1ZhbGlkKGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogdm9pZCB7XG4gIGNvbnN0IGFjdGl2ZSA9IG5ldyBNYXAoYnVuZGxlcy5maWx0ZXIoKGIpID0+IGIuaXNBY3RpdmUpLm1hcCgoYikgPT4gW2IuaWQsIGJdKSk7XG5cbiAgLy8gMS4gVmFsaWRpdHk6IGV2ZXJ5IHJlcXVpcmVzIGlkIHJlc29sdmVzIHRvIGFuIGFjdGl2ZSBidW5kbGUuXG4gIGZvciAoY29uc3QgYnVuZGxlIG9mIGJ1bmRsZXMpIHtcbiAgICBmb3IgKGNvbnN0IHJlcUlkIG9mIGJ1bmRsZS5yZXF1aXJlcyA/PyBbXSkge1xuICAgICAgaWYgKCFhY3RpdmUuaGFzKHJlcUlkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtiaWxsaW5nLWNvbmZpZ10gQnVuZGxlIFwiJHtidW5kbGUuaWR9XCIgcmVxdWlyZXMgXCIke3JlcUlkfVwiLCB3aGljaCBpcyBub3QgYW4gYWN0aXZlIGJ1bmRsZSBpbiB0aGUgY2F0YWxvZyDigJQgaXQgd291bGQgYmUgcGVybWFuZW50bHkgdW5wdXJjaGFzYWJsZS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIDFiLiBGZWF0dXJlIHByZXJlcXVpc2l0ZXM6IGEgcmVhbCBmbGFnLCBhdHRhaW5hYmxlIG9uIGV2ZXJ5IHNvbGQtdG8gdGllci5cbiAgZm9yIChjb25zdCBidW5kbGUgb2YgYnVuZGxlcykge1xuICAgIGZvciAoY29uc3QgZmxhZyBvZiBidW5kbGUucmVxdWlyZXNGZWF0dXJlcyA/PyBbXSkge1xuICAgICAgaWYgKCFpc1ZhbGlkRmVhdHVyZUZsYWcoZmxhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYmlsbGluZy1jb25maWddIEJ1bmRsZSBcIiR7YnVuZGxlLmlkfVwiIHJlcXVpcmVzRmVhdHVyZXMgXCIke2ZsYWd9XCIsIHdoaWNoIGlzIG5vdCBhIGZlYXR1cmUgZmxhZy5gKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgdGllciBvZiBidW5kbGUuYXZhaWxhYmxlRm9yVGllcnMpIHtcbiAgICAgICAgY29uc3QgdGllckluY2x1ZGVzID0gKFRJRVJfRkVBVFVSRVNbdGllcl0gPz8gW10pLmluY2x1ZGVzKGZsYWcpO1xuICAgICAgICBjb25zdCBidXlhYmxlID0gWy4uLmFjdGl2ZS52YWx1ZXMoKV0uc29tZSgobykgPT4gby5hdmFpbGFibGVGb3JUaWVycy5pbmNsdWRlcyh0aWVyKSAmJiAoby5mZWF0dXJlcyA/PyBbXSkuaW5jbHVkZXMoZmxhZykpO1xuICAgICAgICBpZiAoIXRpZXJJbmNsdWRlcyAmJiAhYnV5YWJsZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbYmlsbGluZy1jb25maWddIEJ1bmRsZSBcIiR7YnVuZGxlLmlkfVwiIHJlcXVpcmVzIGZlYXR1cmUgXCIke2ZsYWd9XCIsIHdoaWNoIHRoZSAke3RpZXJ9IHRpZXIgbmVpdGhlciBpbmNsdWRlcyBub3IgY2FuIGJ1eSDigJQgaXQgd291bGQgYmUgcGVybWFuZW50bHkgdW5wdXJjaGFzYWJsZSB0aGVyZS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAyLiBBY3ljbGljaXR5OiBERlMgb3ZlciB0aGUgcmVxdWlyZXMgZWRnZXMsIHRyYWNraW5nIHRoZSBjdXJyZW50IHBhdGguXG4gIGNvbnN0IFZJU0lUSU5HID0gMTtcbiAgY29uc3QgRE9ORSA9IDI7XG4gIGNvbnN0IHN0YXRlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICBjb25zdCB2aXNpdCA9IChpZDogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHMgPSBzdGF0ZS5nZXQoaWQpO1xuICAgIGlmIChzID09PSBET05FKSByZXR1cm47XG4gICAgaWYgKHMgPT09IFZJU0lUSU5HKSB7XG4gICAgICBjb25zdCBjeWNsZSA9IFsuLi5wYXRoLnNsaWNlKHBhdGguaW5kZXhPZihpZCkpLCBpZF0uam9pbignIC0+ICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYmlsbGluZy1jb25maWddIEJ1bmRsZSBcInJlcXVpcmVzXCIgY3ljbGUgZGV0ZWN0ZWQ6ICR7Y3ljbGV9LmApO1xuICAgIH1cbiAgICBzdGF0ZS5zZXQoaWQsIFZJU0lUSU5HKTtcbiAgICBmb3IgKGNvbnN0IHJlcUlkIG9mIGFjdGl2ZS5nZXQoaWQpPy5yZXF1aXJlcyA/PyBbXSkge1xuICAgICAgdmlzaXQocmVxSWQsIFsuLi5wYXRoLCBpZF0pO1xuICAgIH1cbiAgICBzdGF0ZS5zZXQoaWQsIERPTkUpO1xuICB9O1xuXG4gIGZvciAoY29uc3QgYnVuZGxlIG9mIGFjdGl2ZS5rZXlzKCkpIHtcbiAgICB2aXNpdChidW5kbGUsIFtdKTtcbiAgfVxufVxuIl19
|
|
@@ -238,10 +238,6 @@ export interface RateLimitConfig {
|
|
|
238
238
|
readonly max: number;
|
|
239
239
|
/** Rate limit window in milliseconds (env: `LIMITER_WINDOWMS`). */
|
|
240
240
|
readonly windowMs: number;
|
|
241
|
-
/** Include legacy `X-RateLimit-*` headers. */
|
|
242
|
-
readonly legacyHeaders: boolean;
|
|
243
|
-
/** Include standard `RateLimit-*` headers (RFC 6585). */
|
|
244
|
-
readonly standardHeaders: boolean;
|
|
245
241
|
}
|
|
246
242
|
/** Price configuration for a single billing plan (in cents). */
|
|
247
243
|
export interface BillingPlanPrices {
|
|
@@ -273,7 +269,7 @@ export interface BundleConfig {
|
|
|
273
269
|
* constrained to real quota fields so a typo is a compile error (was
|
|
274
270
|
* `Record<string, number>`, where a misspelled key was silently unenforceable). */
|
|
275
271
|
readonly grants: Readonly<Partial<Record<keyof QuotaTierLimits, number>>>;
|
|
276
|
-
/** Feature flags granted by a feature bundle (e.g. `
|
|
272
|
+
/** Feature flags granted by a feature bundle (e.g. `advanced_reporting`). */
|
|
277
273
|
readonly features?: readonly string[];
|
|
278
274
|
/** Per-unit price (cents). Stripe multiplies by quantity. */
|
|
279
275
|
readonly prices: BillingPlanPrices;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
export {};
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciwgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBBdXRoQ29uZmlnO1xuICByZWFkb25seSBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gIHJlYWRvbmx5IHJlZ2lzdHJ5OiBSZWdpc3RyeUNvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Ib3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Qb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogQXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyaWMgc2VydmljZSBzY2FmZm9sZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIHJlYWRvbmx5IGp3dDoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYEpXVF9FWFBJUkVTX0lOYCkuXG4gICAgICpcbiAgICAgKiBUaGVyZSBpcyBubyBKV1QgU0VDUkVUIGhlcmUgYW55IG1vcmUuIEV2ZXJ5IHRva2VuIGlzIGFzeW1tZXRyaWM6IGEgdXNlclxuICAgICAqIHRva2VuIGlzIEVTMjU2IHNpZ25lZCBieSBwbGF0Zm9ybSBhbG9uZSAoYHNlcnZpY2VzL3Rva2VuLXNpZ25pbmdgKSwgYW5kIGFuXG4gICAgICogaW50ZXJuYWwgc2VydmljZSB0b2tlbiBpcyBFUzI1NiBzaWduZWQgYnkgdGhlIENBTExJTkcgc2VydmljZSB3aXRoIGl0cyBvd25cbiAgICAgKiBrZXkgKCMxNCwgYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgLyBgU0VSVklDRV9LRVlfQlVORExFX0ZJTEVgKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogYmNyeXB0IHNhbHQgcm91bmRzIGZvciBwYXNzd29yZCBoYXNoaW5nIChlbnY6IGBCQ1JZUFRfU0FMVF9ST1VORFNgKS4gKi9cbiAgICByZWFkb25seSBzYWx0Um91bmRzOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHJlZnJlc2hUb2tlbjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmApLiBUaGVyZSBpcyBub1xuICAgICAqIHJlZnJlc2gtdG9rZW4gU0VDUkVUIGFueSBtb3JlOiBhIHJlZnJlc2ggdG9rZW4gaXMgYSB1c2VyIHRva2VuLCBzaWduZWRcbiAgICAgKiB3aXRoIHBsYXRmb3JtJ3MgRVMyNTYga2V5IGxpa2UgZXZlcnkgb3RoZXIgY3JlZGVudGlhbCBhIHBlcnNvbiBob2xkcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJhY2tvZmZEZWxheU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHdvcmtlclRpbWVvdXRNczogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wRGlyTWF4QWdlTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxTWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxQmFja29mZkJhc2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRDb25maWcge1xuICAvKiogUm9vdCBkaXJlY3RvcnkgZm9yIGJ1aWxkIHRlbXAgZmlsZXMuICovXG4gIHJlYWRvbmx5IHRlbXBSb290OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSBwdXNoVGltZW91dE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBidWlsZGtpdGQgc29ja2V0IHRoZSBwbHVnaW4ncyBgYnVpbGRjdGxgIGNvbm5lY3RzIHRvLiBJbiBrOHNcbiAgICogYW5kIGNvbXBvc2UgdGhpcyBpcyBhIHNoYXJlZCBlbXB0eURpci90bXBmcyB2b2x1bWUgbW91bnRlZCBmcm9tIHRoZVxuICAgKiBidWlsZGtpdGQgc2lkZWNhci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxka2l0QWRkcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZWFkb25seSBsb2dMZXZlbDogc3RyaW5nO1xuICByZWFkb25seSBsb2dGb3JtYXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhY2luZzoge1xuICAgIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc2NhblNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIFdoZW4gZmFsc2UsIHRoZSBzY2hlZHVsZXIgc2tpcHMgc2NhbnMvc2NoZWR1bGVzIGZvciB0aGUgc3lzdGVtIG9yZy4gRGVmYXVsdDogZmFsc2UuICovXG4gIHJlYWRvbmx5IHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBzY2FuIHNjaGVkdWxlciAobXMpLiBEZWZhdWx0OiAzMDAwMDAuICovXG4gIHJlYWRvbmx5IHNjYW5Mb2NrVHRsTXM6IG51bWJlcjtcbiAgLyoqIEhvdyBvZnRlbiB0aGUgZGlnZXN0IHNjaGVkdWxlciBjaGVja3MgZm9yIGR1ZSBkaWdlc3RzIChtcykuIERlZmF1bHQ6IDM2MDAwMDAuICovXG4gIHJlYWRvbmx5IGRpZ2VzdFNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBkaWdlc3Qgc2NoZWR1bGVyIChtcykuIERlZmF1bHQ6IDMwMDAwMC4gKi9cbiAgcmVhZG9ubHkgZGlnZXN0TG9ja1R0bE1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVsaWJlcmF0ZWx5IGV4cHJlc3NlZCBpbiBQTEFJTiBEQVRBIChudW1iZXJzLCBzdHJpbmdzLCBzdHJpbmcgdW5pb25zKSByYXRoZXJcbiAqIHRoYW4gQ0RLIHZhbHVlIG9iamVjdHMgKGBEdXJhdGlvbmAsIGBSdW50aW1lYCwgYFJldGVudGlvbkRheXNgLCAuLi4pLiBDb25maWcgaXNcbiAqIGxvYWRlZCBieSBldmVyeSBzZXJ2aWNlLCBidXQgb25seSB0aGUgQ0RLIGVudHJ5IHBvaW50IChgQHBpcGVsaW5lLWJ1aWxkZXIvXG4gKiBwaXBlbGluZS1jb3JlL2Nka2ApIGJ1aWxkcyBzdGFja3MgIHR5cGluZyB0aGlzIGJsb2NrIHdpdGggQ0RLIGNsYXNzZXMgcHV0XG4gKiBgYXdzLWNkay1saWJgIG9uIHRoZSBpbXBvcnQgZ3JhcGggb2YgYENvbmZpZ2AsIGFuZCB0aGVyZWZvcmUgb2YgZXZlcnkgQVBJXG4gKiBzZXJ2aWNlIHRoYXQgcmVhZHMgc28gbXVjaCBhcyBhIHBvcnQgbnVtYmVyLiBDb252ZXJzaW9uIHRvIENESyBvYmplY3RzIGhhcHBlbnNcbiAqIGF0IHRoZSBjb25zdHJ1Y3QgYm91bmRhcnkgaW4gYGNvbmZpZy9hd3MtY29uZmlnLWNkay50c2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ29uZmlnIHtcbiAgcmVhZG9ubHkgbGFtYmRhOiB7XG4gICAgLyoqIExhbWJkYSBydW50aW1lIGlkZW50aWZpZXIsIGUuZy4gYCdub2RlanMyNC54J2AgKGVudjogYExBTUJEQV9SVU5USU1FYCkuICovXG4gICAgcmVhZG9ubHkgcnVudGltZTogc3RyaW5nO1xuICAgIC8qKiBGdW5jdGlvbiB0aW1lb3V0IGluIHNlY29uZHMgKGVudjogYExBTUJEQV9USU1FT1VUYCkuICovXG4gICAgcmVhZG9ubHkgdGltZW91dFNlY29uZHM6IG51bWJlcjtcbiAgICByZWFkb25seSBtZW1vcnlTaXplOiBudW1iZXI7XG4gICAgLyoqIExhbWJkYSBDUFUgYXJjaGl0ZWN0dXJlIChlbnY6IGBMQU1CREFfQVJDSElURUNUVVJFYCwgYEFSTV82NGAgb3IgYHg4Nl82NGApLiAqL1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogJ2FybTY0JyB8ICd4ODZfNjQnO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgLyoqIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgbmFtZSwgZS5nLiBgJ1NNQUxMJ2AgKGVudjogYENPREVCVUlMRF9DT01QVVRFX1RZUEVgKS4gKi9cbiAgICByZWFkb25seSBjb21wdXRlVHlwZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbiAgLyoqIEluY2x1ZGUgbGVnYWN5IGBYLVJhdGVMaW1pdC0qYCBoZWFkZXJzLiAqL1xuICByZWFkb25seSBsZWdhY3lIZWFkZXJzOiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBzdGFuZGFyZCBgUmF0ZUxpbWl0LSpgIGhlYWRlcnMgKFJGQyA2NTg1KS4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRIZWFkZXJzOiBib29sZWFuO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcHVyY2hhc2FibGUgYWRkLW9uIGJ1bmRsZTogYSBxdWFudGl0eS1zdGFja2FibGUgcGFjayB0aGF0IEFERFMgdG8gdGhlXG4gKiBhY2NvdW50J3MgYmFzZSAodGllcikgbGltaXRzIGFuZCBhZGRzIGEgcmVjdXJyaW5nIGxpbmUgaXRlbS4gU2VlXG4gKiBkb2NzL2JpbGxpbmctYnVuZGxlcy5tZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBQZXItdW5pdCBkZWx0YXMgb24gYFF1b3RhVGllckxpbWl0c2AgZmllbGRzLCBlLmcuIGB7IHNlYXRzOiA1IH1gLiBLZXlzIGFyZVxuICAgKiAgY29uc3RyYWluZWQgdG8gcmVhbCBxdW90YSBmaWVsZHMgc28gYSB0eXBvIGlzIGEgY29tcGlsZSBlcnJvciAod2FzXG4gICAqICBgUmVjb3JkPHN0cmluZywgbnVtYmVyPmAsIHdoZXJlIGEgbWlzc3BlbGxlZCBrZXkgd2FzIHNpbGVudGx5IHVuZW5mb3JjZWFibGUpLiAqL1xuICByZWFkb25seSBncmFudHM6IFJlYWRvbmx5PFBhcnRpYWw8UmVjb3JkPGtleW9mIFF1b3RhVGllckxpbWl0cywgbnVtYmVyPj4+O1xuICAvKiogRmVhdHVyZSBmbGFncyBncmFudGVkIGJ5IGEgZmVhdHVyZSBidW5kbGUgKGUuZy4gYHNzb2ApLiAqL1xuICByZWFkb25seSBmZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUGVyLXVuaXQgcHJpY2UgKGNlbnRzKS4gU3RyaXBlIG11bHRpcGxpZXMgYnkgcXVhbnRpdHkuICovXG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIC8qKiBUcnVlIGZvciBzdGFja2FibGUgcmVzb3VyY2UgcGFja3M7IGZhbHNlIGZvciBhIGJvb2xlYW4gZmVhdHVyZSBidW5kbGUuICovXG4gIHJlYWRvbmx5IHN0YWNrYWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1heGltdW0gcHVyY2hhc2FibGUgcXVhbnRpdHkgZm9yIGEgc3RhY2thYmxlIHBhY2suIEVuZm9yY2VkIGJ5IHRoZSBhZGRvblxuICAgKiBwdXJjaGFzZS9wcmV2aWV3IHJvdXRlIChgcXVhbnRpdHkg4omkIG1heFF1YW50aXR5YCwgcmVqZWN0IG92ZXItY2FwKS4gVXNlZCB0b1xuICAgKiBrZWVwIHJldGVudGlvbiBwYWNrcyB1bmRlciB0aGUgNzMwLWRheSByZXRlbnRpb24gY2VpbGluZyAoZS5nLiB0aGUgU3RhbmRhcmRcbiAgICogUmV0ZW50aW9uIFBhY2sgY2FwcyBhdCA3IHNvIDMwICsgN8OXOTAgPSA2NjAg4omkIDczMCkuIEFic2VudCDih5IgdW5ib3VuZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UXVhbnRpdHk/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwZXItdW5pdCB2b2x1bWUgZGlzY291bnQgdGllcnMgZm9yIGEgc3RhY2thYmxlIHBhY2s6IGF0IOKJpSBgbWluUXVhbnRpdHlgXG4gICAqIHB1cmNoYXNlZCB1bml0cywgYGRpc2NvdW50UGVyY2VudGAgY29tZXMgb2ZmIHRoZSBsaW5lIHN1YnRvdGFsICh1bml0IMOXIHF1YW50aXR5KS5cbiAgICogVGhlIGhpZ2hlc3QgbWF0Y2hpbmcgdGllciB3aW5zLiBSZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZSBjcmVkaXQgKGxpa2UgYVxuICAgKiBjb21ibyksIHNvIHRoZSBwcm92aWRlciBzdGlsbCBjaGFyZ2VzIHVuaXTDl3F0eSBhbmQgdGhlIGNyZWRpdCBvZmZzZXRzIHRoZVxuICAgKiBiYWxhbmNlLiBFbnYtb3ZlcnJpZGFibGUgdmlhIGBCSUxMSU5HX0JVTkRMRV88SUQ+X1ZPTFVNRV9USUVSU2AgKEpTT04pLiBVc2VkIGJ5XG4gICAqIHRoZSBwZXItc2VhdCBgc2VhdGAgYnVuZGxlLiBBYnNlbnQg4oeSIG5vIHZvbHVtZSBkaXNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZVRpZXJzPzogcmVhZG9ubHkgeyByZWFkb25seSBtaW5RdWFudGl0eTogbnVtYmVyOyByZWFkb25seSBkaXNjb3VudFBlcmNlbnQ6IG51bWJlciB9W107XG4gIC8qKiBCYXNlIHRpZXJzIHRoaXMgYnVuZGxlIGlzIG9mZmVyZWQgdG8uICovXG4gIHJlYWRvbmx5IGF2YWlsYWJsZUZvclRpZXJzOiByZWFkb25seSBRdW90YVRpZXJbXTtcbiAgLyoqXG4gICAqIFByZXJlcXVpc2l0ZSBidW5kbGUgaWRzIHRoYXQgbXVzdCBiZSBoZWxkIChvciBwdXJjaGFzZWQgaW4gdGhlIHNhbWUgYWN0aW9uKVxuICAgKiBiZWZvcmUgdGhpcyBidW5kbGUgY2FuIGJlIGFkZGVkLiBFbmZvcmNlZCBieSB0aGUgYWRkb24gcHVyY2hhc2UvcHJldmlldyByb3V0ZVxuICAgKiAocmVqZWN0IHdpdGggNDAwIHdoZW4gdW5tZXQpOyBhIGNvbWJvIHRoYXQgaW5jbHVkZXMgdGhlIHByZXJlcXVpc2l0ZSBzYXRpc2ZpZXNcbiAgICogaXQuIFVzZWQgYnkgYGNvbXBsaWFuY2VfYWR2YW5jZWRgIChgcmVxdWlyZXM6IFsnY29tcGxpYW5jZV9zdGFuZGFyZCddYCkuXG4gICAqIEFic2VudCDih5Igbm8gcHJlcmVxdWlzaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFByZXJlcXVpc2l0ZSBGRUFUVVJFIGZsYWdzIHRoZSBhY2NvdW50IG11c3QgaG9sZCDigJQgZnJvbSBpdHMgcGxhbiB0aWVyXG4gICAqIChgVElFUl9GRUFUVVJFU2ApIG9yIGZyb20gYSBmZWF0dXJlIGJ1bmRsZSBpdCBob2xkcyBhZnRlciB0aGUgY2hhbmdlIOKAlCBiZWZvcmVcbiAgICogdGhpcyBidW5kbGUgY2FuIGJlIGFkZGVkLiBEaXN0aW5jdCBmcm9tIHtAbGluayByZXF1aXJlc30gYmVjYXVzZSBhIGZlYXR1cmUgY2FuXG4gICAqIGJlIHRpZXItaW5jbHVkZWQgKG5vIGJ1bmRsZSB0byBuYW1lKTogZS5nLiBgZG9yYV9oaXN0b3J5X3BhY2tgIG5lZWRzXG4gICAqIGBhZHZhbmNlZF9yZXBvcnRpbmdgLCB3aGljaCBFbnRlcnByaXNlIGluY2x1ZGVzIGFuZCBsb3dlciB0aWVycyBidXkgYXMgYW5cbiAgICogYWRkLW9uLiBFbmZvcmNlZCBieSB0aGUgYWRkb24gcHVyY2hhc2UvcHJldmlldyByb3V0ZSAoNDAwIHdoZW4gdW5tZXQpLCBhbmQgYVxuICAgKiBoZWxkIGJ1bmRsZSB3aG9zZSBmZWF0dXJlIHByZXJlcXVpc2l0ZSBkaXNhcHBlYXJzIChpdHMgZ3JhbnRpbmcgYnVuZGxlIHJlbW92ZWQsXG4gICAqIG9yIGEgZG93bmdyYWRlIHRvIGEgdGllciB3aXRob3V0IGl0KSBpcyBjYXNjYWRlLXJlbW92ZWQuIEFic2VudCDih5Igbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzRmVhdHVyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tYm8gZGlzY291bnQ6IHdoZW4gYW4gYWNjb3VudCBob2xkcyBFVkVSWSBidW5kbGUgaW4gYGJ1bmRsZUlkc2AsIHRoZSBwYWlyXG4gKiBpcyBiaWxsZWQgYXQgYHByaWNlc2AgKHRoZSBjb21iaW5lZCBwcmljZSkgaW5zdGVhZCBvZiB0aGUgc3VtIG9mIHRoZSBtZW1iZXJzJ1xuICogaW5kaXZpZHVhbCBwcmljZXMuIFJlYWxpemVkIGFzIGEgcmVjdXJyaW5nIHVzYWdlIGNyZWRpdCBmb3IgdGhlIGRpZmZlcmVuY2Ug4oCUXG4gKiBuZXZlciBhIHByb3ZpZGVyIGNvdXBvbiDigJQgY29uc2lzdGVudCB3aXRoIHRoZSB1c2FnZS1jcmVkaXQgZGlzY291bnQgbW9kZWwuIFNlZVxuICogZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQgwqdDb21ibyBwcmljaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbWJvRGlzY291bnRDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgbWVtYmVyIGJ1bmRsZSBpZHMgdGhhdCBtdXN0IEFMTCBiZSBwcmVzZW50IGZvciB0aGUgY29tYm8gdG8gYXBwbHkuICovXG4gIHJlYWRvbmx5IGJ1bmRsZUlkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQZXItbWVtYmVyIG1pbmltdW0gcXVhbnRpdHkgKGJ1bmRsZUlkIOKGkiBjb3VudDsgYWJzZW50IOKHkiAxKS4gTGV0cyBhIHN0YWNrYWJsZVxuICAgKiAgY2FwYWNpdHkgcGFjayBhbmNob3IgYSBjb21ibyDigJQgZS5nLiBgeyBzZWF0OiA1IH1gID0gXCLiiaUgNSBzZWF0c1wiLiBUaGUgY3JlZGl0XG4gICAqICBiYXNpcyB1c2VzIHRoaXMgbWluaW11bSwgc28gZXh0cmEgdW5pdHMgbmV2ZXIgaW5mbGF0ZSB0aGUgZGlzY291bnQuICovXG4gIHJlYWRvbmx5IG1pblF1YW50aXRpZXM/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgLyoqIFRoZSBjb21iaW5lZCBwcmljZSBmb3IgdGhlIG1pbmltdW0gc2V0IChjZW50cykuIFRoZSBjcmVkaXQgaXNcbiAgICogIGDOoyBtZW1iZXIgdW5pdCBwcmljZSDDlyBtaW5RdHkg4oiSIHByaWNlc2AsIGNsYW1wZWQg4omlIDAuICovXG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIC8qKiBEZXRlcm1pbmlzdGljIHRpZS1icmVhayBhbW9uZyBlcXVhbC10b3RhbCBvcHRpbWFsIHBhY2tpbmdzIHdoZW4gY29tYm9zIG92ZXJsYXBcbiAgICogIChsb3dlciB3aW5zKS4gKi9cbiAgcmVhZG9ubHkgc29ydE9yZGVyOiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyArIGFkZC1vbiBidW5kbGUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ0NvbmZpZyB7XG4gIHJlYWRvbmx5IHBsYW5zOiByZWFkb25seSBCaWxsaW5nUGxhbkNvbmZpZ1tdO1xuICByZWFkb25seSBidW5kbGVzOiByZWFkb25seSBCdW5kbGVDb25maWdbXTtcbiAgcmVhZG9ubHkgY29tYm9EaXNjb3VudHM6IHJlYWRvbmx5IENvbWJvRGlzY291bnRDb25maWdbXTtcbn1cbiJdfQ==
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciwgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBBdXRoQ29uZmlnO1xuICByZWFkb25seSBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gIHJlYWRvbmx5IHJlZ2lzdHJ5OiBSZWdpc3RyeUNvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Ib3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm1Qb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogQXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyaWMgc2VydmljZSBzY2FmZm9sZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIHJlYWRvbmx5IGp3dDoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYEpXVF9FWFBJUkVTX0lOYCkuXG4gICAgICpcbiAgICAgKiBUaGVyZSBpcyBubyBKV1QgU0VDUkVUIGhlcmUgYW55IG1vcmUuIEV2ZXJ5IHRva2VuIGlzIGFzeW1tZXRyaWM6IGEgdXNlclxuICAgICAqIHRva2VuIGlzIEVTMjU2IHNpZ25lZCBieSBwbGF0Zm9ybSBhbG9uZSAoYHNlcnZpY2VzL3Rva2VuLXNpZ25pbmdgKSwgYW5kIGFuXG4gICAgICogaW50ZXJuYWwgc2VydmljZSB0b2tlbiBpcyBFUzI1NiBzaWduZWQgYnkgdGhlIENBTExJTkcgc2VydmljZSB3aXRoIGl0cyBvd25cbiAgICAgKiBrZXkgKCMxNCwgYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgLyBgU0VSVklDRV9LRVlfQlVORExFX0ZJTEVgKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogYmNyeXB0IHNhbHQgcm91bmRzIGZvciBwYXNzd29yZCBoYXNoaW5nIChlbnY6IGBCQ1JZUFRfU0FMVF9ST1VORFNgKS4gKi9cbiAgICByZWFkb25seSBzYWx0Um91bmRzOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHJlZnJlc2hUb2tlbjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGVudjogYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmApLiBUaGVyZSBpcyBub1xuICAgICAqIHJlZnJlc2gtdG9rZW4gU0VDUkVUIGFueSBtb3JlOiBhIHJlZnJlc2ggdG9rZW4gaXMgYSB1c2VyIHRva2VuLCBzaWduZWRcbiAgICAgKiB3aXRoIHBsYXRmb3JtJ3MgRVMyNTYga2V5IGxpa2UgZXZlcnkgb3RoZXIgY3JlZGVudGlhbCBhIHBlcnNvbiBob2xkcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJhY2tvZmZEZWxheU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHdvcmtlclRpbWVvdXRNczogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wRGlyTWF4QWdlTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxTWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxQmFja29mZkJhc2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRDb25maWcge1xuICAvKiogUm9vdCBkaXJlY3RvcnkgZm9yIGJ1aWxkIHRlbXAgZmlsZXMuICovXG4gIHJlYWRvbmx5IHRlbXBSb290OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSBwdXNoVGltZW91dE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBidWlsZGtpdGQgc29ja2V0IHRoZSBwbHVnaW4ncyBgYnVpbGRjdGxgIGNvbm5lY3RzIHRvLiBJbiBrOHNcbiAgICogYW5kIGNvbXBvc2UgdGhpcyBpcyBhIHNoYXJlZCBlbXB0eURpci90bXBmcyB2b2x1bWUgbW91bnRlZCBmcm9tIHRoZVxuICAgKiBidWlsZGtpdGQgc2lkZWNhci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxka2l0QWRkcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZWFkb25seSBsb2dMZXZlbDogc3RyaW5nO1xuICByZWFkb25seSBsb2dGb3JtYXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhY2luZzoge1xuICAgIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc2NhblNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIFdoZW4gZmFsc2UsIHRoZSBzY2hlZHVsZXIgc2tpcHMgc2NhbnMvc2NoZWR1bGVzIGZvciB0aGUgc3lzdGVtIG9yZy4gRGVmYXVsdDogZmFsc2UuICovXG4gIHJlYWRvbmx5IHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBzY2FuIHNjaGVkdWxlciAobXMpLiBEZWZhdWx0OiAzMDAwMDAuICovXG4gIHJlYWRvbmx5IHNjYW5Mb2NrVHRsTXM6IG51bWJlcjtcbiAgLyoqIEhvdyBvZnRlbiB0aGUgZGlnZXN0IHNjaGVkdWxlciBjaGVja3MgZm9yIGR1ZSBkaWdlc3RzIChtcykuIERlZmF1bHQ6IDM2MDAwMDAuICovXG4gIHJlYWRvbmx5IGRpZ2VzdFNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIENyb3NzLXBvZCBsZWFkZXItbG9jayBUVEwgZm9yIHRoZSBkaWdlc3Qgc2NoZWR1bGVyIChtcykuIERlZmF1bHQ6IDMwMDAwMC4gKi9cbiAgcmVhZG9ubHkgZGlnZXN0TG9ja1R0bE1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVsaWJlcmF0ZWx5IGV4cHJlc3NlZCBpbiBQTEFJTiBEQVRBIChudW1iZXJzLCBzdHJpbmdzLCBzdHJpbmcgdW5pb25zKSByYXRoZXJcbiAqIHRoYW4gQ0RLIHZhbHVlIG9iamVjdHMgKGBEdXJhdGlvbmAsIGBSdW50aW1lYCwgYFJldGVudGlvbkRheXNgLCAuLi4pLiBDb25maWcgaXNcbiAqIGxvYWRlZCBieSBldmVyeSBzZXJ2aWNlLCBidXQgb25seSB0aGUgQ0RLIGVudHJ5IHBvaW50IChgQHBpcGVsaW5lLWJ1aWxkZXIvXG4gKiBwaXBlbGluZS1jb3JlL2Nka2ApIGJ1aWxkcyBzdGFja3MgIHR5cGluZyB0aGlzIGJsb2NrIHdpdGggQ0RLIGNsYXNzZXMgcHV0XG4gKiBgYXdzLWNkay1saWJgIG9uIHRoZSBpbXBvcnQgZ3JhcGggb2YgYENvbmZpZ2AsIGFuZCB0aGVyZWZvcmUgb2YgZXZlcnkgQVBJXG4gKiBzZXJ2aWNlIHRoYXQgcmVhZHMgc28gbXVjaCBhcyBhIHBvcnQgbnVtYmVyLiBDb252ZXJzaW9uIHRvIENESyBvYmplY3RzIGhhcHBlbnNcbiAqIGF0IHRoZSBjb25zdHJ1Y3QgYm91bmRhcnkgaW4gYGNvbmZpZy9hd3MtY29uZmlnLWNkay50c2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ29uZmlnIHtcbiAgcmVhZG9ubHkgbGFtYmRhOiB7XG4gICAgLyoqIExhbWJkYSBydW50aW1lIGlkZW50aWZpZXIsIGUuZy4gYCdub2RlanMyNC54J2AgKGVudjogYExBTUJEQV9SVU5USU1FYCkuICovXG4gICAgcmVhZG9ubHkgcnVudGltZTogc3RyaW5nO1xuICAgIC8qKiBGdW5jdGlvbiB0aW1lb3V0IGluIHNlY29uZHMgKGVudjogYExBTUJEQV9USU1FT1VUYCkuICovXG4gICAgcmVhZG9ubHkgdGltZW91dFNlY29uZHM6IG51bWJlcjtcbiAgICByZWFkb25seSBtZW1vcnlTaXplOiBudW1iZXI7XG4gICAgLyoqIExhbWJkYSBDUFUgYXJjaGl0ZWN0dXJlIChlbnY6IGBMQU1CREFfQVJDSElURUNUVVJFYCwgYEFSTV82NGAgb3IgYHg4Nl82NGApLiAqL1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogJ2FybTY0JyB8ICd4ODZfNjQnO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgLyoqIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgbmFtZSwgZS5nLiBgJ1NNQUxMJ2AgKGVudjogYENPREVCVUlMRF9DT01QVVRFX1RZUEVgKS4gKi9cbiAgICByZWFkb25seSBjb21wdXRlVHlwZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbn1cblxuLyoqIFByaWNlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGJpbGxpbmcgcGxhbiAoaW4gY2VudHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhblByaWNlcyB7XG4gIHJlYWRvbmx5IG1vbnRobHk6IG51bWJlcjtcbiAgcmVhZG9ubHkgYW5udWFsOiBudW1iZXI7XG59XG5cbi8qKiBGdWxsIGJpbGxpbmcgcGxhbiBkZWZpbml0aW9uIHVzZWQgZm9yIHNlZWRpbmcgYW5kIHJ1bnRpbWUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ1BsYW5Db25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpZXI6IFF1b3RhVGllcjtcbiAgcmVhZG9ubHkgcHJpY2VzOiBCaWxsaW5nUGxhblByaWNlcztcbiAgcmVhZG9ubHkgZmVhdHVyZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNEZWZhdWx0OiBib29sZWFuO1xuICByZWFkb25seSBzb3J0T3JkZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHB1cmNoYXNhYmxlIGFkZC1vbiBidW5kbGU6IGEgcXVhbnRpdHktc3RhY2thYmxlIHBhY2sgdGhhdCBBRERTIHRvIHRoZVxuICogYWNjb3VudCdzIGJhc2UgKHRpZXIpIGxpbWl0cyBhbmQgYWRkcyBhIHJlY3VycmluZyBsaW5lIGl0ZW0uIFNlZVxuICogZG9jcy9iaWxsaW5nLWJ1bmRsZXMubWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogUGVyLXVuaXQgZGVsdGFzIG9uIGBRdW90YVRpZXJMaW1pdHNgIGZpZWxkcywgZS5nLiBgeyBzZWF0czogNSB9YC4gS2V5cyBhcmVcbiAgICogIGNvbnN0cmFpbmVkIHRvIHJlYWwgcXVvdGEgZmllbGRzIHNvIGEgdHlwbyBpcyBhIGNvbXBpbGUgZXJyb3IgKHdhc1xuICAgKiAgYFJlY29yZDxzdHJpbmcsIG51bWJlcj5gLCB3aGVyZSBhIG1pc3NwZWxsZWQga2V5IHdhcyBzaWxlbnRseSB1bmVuZm9yY2VhYmxlKS4gKi9cbiAgcmVhZG9ubHkgZ3JhbnRzOiBSZWFkb25seTxQYXJ0aWFsPFJlY29yZDxrZXlvZiBRdW90YVRpZXJMaW1pdHMsIG51bWJlcj4+PjtcbiAgLyoqIEZlYXR1cmUgZmxhZ3MgZ3JhbnRlZCBieSBhIGZlYXR1cmUgYnVuZGxlIChlLmcuIGBhZHZhbmNlZF9yZXBvcnRpbmdgKS4gKi9cbiAgcmVhZG9ubHkgZmVhdHVyZXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIFBlci11bml0IHByaWNlIChjZW50cykuIFN0cmlwZSBtdWx0aXBsaWVzIGJ5IHF1YW50aXR5LiAqL1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICAvKiogVHJ1ZSBmb3Igc3RhY2thYmxlIHJlc291cmNlIHBhY2tzOyBmYWxzZSBmb3IgYSBib29sZWFuIGZlYXR1cmUgYnVuZGxlLiAqL1xuICByZWFkb25seSBzdGFja2FibGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXhpbXVtIHB1cmNoYXNhYmxlIHF1YW50aXR5IGZvciBhIHN0YWNrYWJsZSBwYWNrLiBFbmZvcmNlZCBieSB0aGUgYWRkb25cbiAgICogcHVyY2hhc2UvcHJldmlldyByb3V0ZSAoYHF1YW50aXR5IOKJpCBtYXhRdWFudGl0eWAsIHJlamVjdCBvdmVyLWNhcCkuIFVzZWQgdG9cbiAgICoga2VlcCByZXRlbnRpb24gcGFja3MgdW5kZXIgdGhlIDczMC1kYXkgcmV0ZW50aW9uIGNlaWxpbmcgKGUuZy4gdGhlIFN0YW5kYXJkXG4gICAqIFJldGVudGlvbiBQYWNrIGNhcHMgYXQgNyBzbyAzMCArIDfDlzkwID0gNjYwIOKJpCA3MzApLiBBYnNlbnQg4oeSIHVuYm91bmRlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1heFF1YW50aXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogT3B0aW9uYWwgcGVyLXVuaXQgdm9sdW1lIGRpc2NvdW50IHRpZXJzIGZvciBhIHN0YWNrYWJsZSBwYWNrOiBhdCDiiaUgYG1pblF1YW50aXR5YFxuICAgKiBwdXJjaGFzZWQgdW5pdHMsIGBkaXNjb3VudFBlcmNlbnRgIGNvbWVzIG9mZiB0aGUgbGluZSBzdWJ0b3RhbCAodW5pdCDDlyBxdWFudGl0eSkuXG4gICAqIFRoZSBoaWdoZXN0IG1hdGNoaW5nIHRpZXIgd2lucy4gUmVhbGl6ZWQgYXMgYSByZWN1cnJpbmcgdXNhZ2UgY3JlZGl0IChsaWtlIGFcbiAgICogY29tYm8pLCBzbyB0aGUgcHJvdmlkZXIgc3RpbGwgY2hhcmdlcyB1bml0w5dxdHkgYW5kIHRoZSBjcmVkaXQgb2Zmc2V0cyB0aGVcbiAgICogYmFsYW5jZS4gRW52LW92ZXJyaWRhYmxlIHZpYSBgQklMTElOR19CVU5ETEVfPElEPl9WT0xVTUVfVElFUlNgIChKU09OKS4gVXNlZCBieVxuICAgKiB0aGUgcGVyLXNlYXQgYHNlYXRgIGJ1bmRsZS4gQWJzZW50IOKHkiBubyB2b2x1bWUgZGlzY291bnQuXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVUaWVycz86IHJlYWRvbmx5IHsgcmVhZG9ubHkgbWluUXVhbnRpdHk6IG51bWJlcjsgcmVhZG9ubHkgZGlzY291bnRQZXJjZW50OiBudW1iZXIgfVtdO1xuICAvKiogQmFzZSB0aWVycyB0aGlzIGJ1bmRsZSBpcyBvZmZlcmVkIHRvLiAqL1xuICByZWFkb25seSBhdmFpbGFibGVGb3JUaWVyczogcmVhZG9ubHkgUXVvdGFUaWVyW107XG4gIC8qKlxuICAgKiBQcmVyZXF1aXNpdGUgYnVuZGxlIGlkcyB0aGF0IG11c3QgYmUgaGVsZCAob3IgcHVyY2hhc2VkIGluIHRoZSBzYW1lIGFjdGlvbilcbiAgICogYmVmb3JlIHRoaXMgYnVuZGxlIGNhbiBiZSBhZGRlZC4gRW5mb3JjZWQgYnkgdGhlIGFkZG9uIHB1cmNoYXNlL3ByZXZpZXcgcm91dGVcbiAgICogKHJlamVjdCB3aXRoIDQwMCB3aGVuIHVubWV0KTsgYSBjb21ibyB0aGF0IGluY2x1ZGVzIHRoZSBwcmVyZXF1aXNpdGUgc2F0aXNmaWVzXG4gICAqIGl0LiBVc2VkIGJ5IGBjb21wbGlhbmNlX2FkdmFuY2VkYCAoYHJlcXVpcmVzOiBbJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnXWApLlxuICAgKiBBYnNlbnQg4oeSIG5vIHByZXJlcXVpc2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBQcmVyZXF1aXNpdGUgRkVBVFVSRSBmbGFncyB0aGUgYWNjb3VudCBtdXN0IGhvbGQg4oCUIGZyb20gaXRzIHBsYW4gdGllclxuICAgKiAoYFRJRVJfRkVBVFVSRVNgKSBvciBmcm9tIGEgZmVhdHVyZSBidW5kbGUgaXQgaG9sZHMgYWZ0ZXIgdGhlIGNoYW5nZSDigJQgYmVmb3JlXG4gICAqIHRoaXMgYnVuZGxlIGNhbiBiZSBhZGRlZC4gRGlzdGluY3QgZnJvbSB7QGxpbmsgcmVxdWlyZXN9IGJlY2F1c2UgYSBmZWF0dXJlIGNhblxuICAgKiBiZSB0aWVyLWluY2x1ZGVkIChubyBidW5kbGUgdG8gbmFtZSk6IGUuZy4gYGRvcmFfaGlzdG9yeV9wYWNrYCBuZWVkc1xuICAgKiBgYWR2YW5jZWRfcmVwb3J0aW5nYCwgd2hpY2ggRW50ZXJwcmlzZSBpbmNsdWRlcyBhbmQgbG93ZXIgdGllcnMgYnV5IGFzIGFuXG4gICAqIGFkZC1vbi4gRW5mb3JjZWQgYnkgdGhlIGFkZG9uIHB1cmNoYXNlL3ByZXZpZXcgcm91dGUgKDQwMCB3aGVuIHVubWV0KSwgYW5kIGFcbiAgICogaGVsZCBidW5kbGUgd2hvc2UgZmVhdHVyZSBwcmVyZXF1aXNpdGUgZGlzYXBwZWFycyAoaXRzIGdyYW50aW5nIGJ1bmRsZSByZW1vdmVkLFxuICAgKiBvciBhIGRvd25ncmFkZSB0byBhIHRpZXIgd2l0aG91dCBpdCkgaXMgY2FzY2FkZS1yZW1vdmVkLiBBYnNlbnQg4oeSIG5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlc0ZlYXR1cmVzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBzb3J0T3JkZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNvbWJvIGRpc2NvdW50OiB3aGVuIGFuIGFjY291bnQgaG9sZHMgRVZFUlkgYnVuZGxlIGluIGBidW5kbGVJZHNgLCB0aGUgcGFpclxuICogaXMgYmlsbGVkIGF0IGBwcmljZXNgICh0aGUgY29tYmluZWQgcHJpY2UpIGluc3RlYWQgb2YgdGhlIHN1bSBvZiB0aGUgbWVtYmVycydcbiAqIGluZGl2aWR1YWwgcHJpY2VzLiBSZWFsaXplZCBhcyBhIHJlY3VycmluZyB1c2FnZSBjcmVkaXQgZm9yIHRoZSBkaWZmZXJlbmNlIOKAlFxuICogbmV2ZXIgYSBwcm92aWRlciBjb3Vwb24g4oCUIGNvbnNpc3RlbnQgd2l0aCB0aGUgdXNhZ2UtY3JlZGl0IGRpc2NvdW50IG1vZGVsLiBTZWVcbiAqIGRvY3MvYmlsbGluZy1idW5kbGVzLm1kIMKnQ29tYm8gcHJpY2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21ib0Rpc2NvdW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG1lbWJlciBidW5kbGUgaWRzIHRoYXQgbXVzdCBBTEwgYmUgcHJlc2VudCBmb3IgdGhlIGNvbWJvIHRvIGFwcGx5LiAqL1xuICByZWFkb25seSBidW5kbGVJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUGVyLW1lbWJlciBtaW5pbXVtIHF1YW50aXR5IChidW5kbGVJZCDihpIgY291bnQ7IGFic2VudCDih5IgMSkuIExldHMgYSBzdGFja2FibGVcbiAgICogIGNhcGFjaXR5IHBhY2sgYW5jaG9yIGEgY29tYm8g4oCUIGUuZy4gYHsgc2VhdDogNSB9YCA9IFwi4omlIDUgc2VhdHNcIi4gVGhlIGNyZWRpdFxuICAgKiAgYmFzaXMgdXNlcyB0aGlzIG1pbmltdW0sIHNvIGV4dHJhIHVuaXRzIG5ldmVyIGluZmxhdGUgdGhlIGRpc2NvdW50LiAqL1xuICByZWFkb25seSBtaW5RdWFudGl0aWVzPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIC8qKiBUaGUgY29tYmluZWQgcHJpY2UgZm9yIHRoZSBtaW5pbXVtIHNldCAoY2VudHMpLiBUaGUgY3JlZGl0IGlzXG4gICAqICBgzqMgbWVtYmVyIHVuaXQgcHJpY2Ugw5cgbWluUXR5IOKIkiBwcmljZXNgLCBjbGFtcGVkIOKJpSAwLiAqL1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICAvKiogRGV0ZXJtaW5pc3RpYyB0aWUtYnJlYWsgYW1vbmcgZXF1YWwtdG90YWwgb3B0aW1hbCBwYWNraW5ncyB3aGVuIGNvbWJvcyBvdmVybGFwXG4gICAqICAobG93ZXIgd2lucykuICovXG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xuICByZWFkb25seSBpc0FjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIEJpbGxpbmcgcGxhbnMgKyBhZGQtb24gYnVuZGxlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdDb25maWcge1xuICByZWFkb25seSBwbGFuczogcmVhZG9ubHkgQmlsbGluZ1BsYW5Db25maWdbXTtcbiAgcmVhZG9ubHkgYnVuZGxlczogcmVhZG9ubHkgQnVuZGxlQ29uZmlnW107XG4gIHJlYWRvbmx5IGNvbWJvRGlzY291bnRzOiByZWFkb25seSBDb21ib0Rpc2NvdW50Q29uZmlnW107XG59XG4iXX0=
|
|
@@ -88,8 +88,6 @@ export function loadRateLimitConfig() {
|
|
|
88
88
|
return {
|
|
89
89
|
max: parseInt(process.env.LIMITER_MAX || '100', 10),
|
|
90
90
|
windowMs: parseInt(process.env.LIMITER_WINDOWMS || '900000', 10),
|
|
91
|
-
legacyHeaders: false,
|
|
92
|
-
standardHeaders: true,
|
|
93
91
|
};
|
|
94
92
|
}
|
|
95
93
|
/**
|
|
@@ -153,4 +151,4 @@ export function validateAuthConfig(config) {
|
|
|
153
151
|
throw new Error(`Auth configuration validation failed:\n${errors.map(e => ` - ${e}`).join('\n')}`);
|
|
154
152
|
}
|
|
155
153
|
}
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDO1NBQzFFO1FBQ0QsVUFBVSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3hELFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxvQkFBb0I7UUFFaEYsVUFBVSxFQUFFO1lBQ1YsT0FBTyxFQUFF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Q0FDbkYsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICcuL2FwcC1jb25maWcuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJDb25maWcsIEF1dGhDb25maWcsIFJhdGVMaW1pdENvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzLmpzJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdzZXJ2ZXItY29uZmlnJyk7XG5cbi8qKlxuICogTG9hZCBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBQT1JUYCDigJQgSFRUUCBsaXN0ZW4gcG9ydCAoZGVmYXVsdDogYDMwMDBgKVxuICogLSBgQ09SU19PUklHSU5gIOKAlCBDb21tYS1zZXBhcmF0ZWQgYWxsb3dlZCBvcmlnaW5zIChkZWZhdWx0OiBgUExBVEZPUk1fQkFTRV9VUkxgKVxuICogLSBgQ09SU19DUkVERU5USUFMU2Ag4oCUIEFsbG93IGNyZWRlbnRpYWxzOyBzZXQgdG8gYCdmYWxzZSdgIHRvIGRpc2FibGUgKGRlZmF1bHQ6IGB0cnVlYClcbiAqIC0gYFRSVVNUX1BST1hZYCDigJQgRXhwcmVzcyB0cnVzdCBwcm94eSBob3BzIChkZWZhdWx0OiBgMWApXG4gKiAtIGBQTEFURk9STV9CQVNFX1VSTGAg4oCUIEZyb250ZW5kIFVSTCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGRlZmF1bHQ6IGAnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MydgKVxuICpcbiAqIEByZXR1cm5zIFNlcnZlciBjb25maWd1cmF0aW9uIHdpdGggcG9ydCwgQ09SUywgdHJ1c3QgcHJveHksIGFuZCBwbGF0Zm9ybSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTZXJ2ZXJDb25maWcoKTogU2VydmVyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QT1JUIHx8ICczMDAwJywgMTApLFxuICAgIGNvcnM6IHtcbiAgICAgIGNyZWRlbnRpYWxzOiBwcm9jZXNzLmVudi5DT1JTX0NSRURFTlRJQUxTICE9PSAnZmFsc2UnLFxuICAgICAgb3JpZ2luOiBwcm9jZXNzLmVudi5DT1JTX09SSUdJTlxuICAgICAgICA/IHByb2Nlc3MuZW52LkNPUlNfT1JJR0lOLnNwbGl0KCcsJykubWFwKG8gPT4gby50cmltKCkpXG4gICAgICAgIDogW3Byb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8IENvcmVDb25zdGFudHMuREVGQVVMVF9QTEFURk9STV9VUkxdLFxuICAgIH0sXG4gICAgdHJ1c3RQcm94eTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuVFJVU1RfUFJPWFkgfHwgJzEnLCAxMCksXG4gICAgcGxhdGZvcm1Vcmw6IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8IENvcmVDb25zdGFudHMuREVGQVVMVF9QTEFURk9STV9VUkwsXG5cbiAgICBodHRwQ2xpZW50OiB7XG4gICAgICB0aW1lb3V0OiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9USU1FT1VUIHx8ICc1MDAwJywgMTApLFxuICAgICAgbWF4UmV0cmllczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfTUFYX1JFVFJJRVMgfHwgJzInLCAxMCksXG4gICAgICByZXRyeURlbGF5TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TIHx8ICcyMDAnLCAxMCksXG4gICAgfSxcblxuICAgIHNzZToge1xuICAgICAgbWF4Q2xpZW50c1BlclJlcXVlc3Q6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVCB8fCAnMTAnLCAxMCksXG4gICAgICBjbGllbnRUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9DTElFTlRfVElNRU9VVF9NUyB8fCAnMTgwMDAwMCcsIDEwKSxcbiAgICAgIGNsZWFudXBJbnRlcnZhbE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfQ0xFQU5VUF9JTlRFUlZBTF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIH0sXG5cbiAgICBzZXJ2aWNlczoge1xuICAgICAgcGx1Z2luSG9zdDogcHJvY2Vzcy5lbnYuUExVR0lOX1NFUlZJQ0VfSE9TVCB8fCAncGx1Z2luJyxcbiAgICAgIHBsdWdpblBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBwaXBlbGluZUhvc3Q6IHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFUlZJQ0VfSE9TVCB8fCAncGlwZWxpbmUnLFxuICAgICAgcGlwZWxpbmVQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QSVBFTElORV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBtZXNzYWdlSG9zdDogcHJvY2Vzcy5lbnYuTUVTU0FHRV9TRVJWSUNFX0hPU1QgfHwgJ21lc3NhZ2UnLFxuICAgICAgbWVzc2FnZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52Lk1FU1NBR0VfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgcGxhdGZvcm1Ib3N0OiBwcm9jZXNzLmVudi5QTEFURk9STV9TRVJWSUNFX0hPU1QgfHwgJ3BsYXRmb3JtJyxcbiAgICAgIHBsYXRmb3JtUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgY29tcGxpYW5jZUhvc3Q6IHByb2Nlc3MuZW52LkNPTVBMSUFOQ0VfU0VSVklDRV9IT1NUIHx8ICdjb21wbGlhbmNlJyxcbiAgICAgIGNvbXBsaWFuY2VQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5DT01QTElBTkNFX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGJpbGxpbmdIb3N0OiBwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfSE9TVCB8fCAnYmlsbGluZycsXG4gICAgICBiaWxsaW5nUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBiaWxsaW5nVGltZW91dDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX1RJTUVPVVQgfHwgJzUwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSldUX0VYUElSRVNfSU5gIOKAlCBKV1QgbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDcyMDBgID0gMiBob3VycylcbiAqIC0gYEJDUllQVF9TQUxUX1JPVU5EU2Ag4oCUIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZGVmYXVsdDogYDEyYClcbiAqIC0gYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmAg4oCUIFJlZnJlc2ggdG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDI1OTIwMDBgID0gMzAgZGF5cylcbiAqXG4gKiBAcmV0dXJucyBBdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIHdpdGggc2FmZSBkZWZhdWx0cyAoZW1wdHkgc3RyaW5ncyB3aGVuIGVudiB2YXJzIGFyZSB1bnNldCkuXG4gKiBDYWxsIHtAbGluayB2YWxpZGF0ZUF1dGhDb25maWd9IGF0IHNlcnZlciBzdGFydHVwIHRvIGVuZm9yY2UgcmVxdWlyZWQgc2VjcmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBdXRoQ29uZmlnKCk6IEF1dGhDb25maWcge1xuICByZXR1cm4ge1xuICAgIGp3dDoge1xuICAgICAgZXhwaXJlc0luOiBwYXJzZUludChwcm9jZXNzLmVudi5KV1RfRVhQSVJFU19JTiB8fCAnNzIwMCcsIDEwKSxcbiAgICAgIHNhbHRSb3VuZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJDUllQVF9TQUxUX1JPVU5EUyB8fCAnMTInLCAxMCksXG4gICAgfSxcbiAgICByZWZyZXNoVG9rZW46IHtcbiAgICAgIGV4cGlyZXNJbjogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOIHx8ICcyNTkyMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCByYXRlIGxpbWl0aW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTElNSVRFUl9NQVhgIOKAlCBNYXggcmVxdWVzdHMgcGVyIHdpbmRvdyAoZGVmYXVsdDogYDEwMGApXG4gKiAtIGBMSU1JVEVSX1dJTkRPV01TYCDigJQgUmF0ZSBsaW1pdCB3aW5kb3cgaW4gbXMgKGRlZmF1bHQ6IGA5MDAwMDBgID0gMTUgbWludXRlcylcbiAqXG4gKiBAcmV0dXJucyBSYXRlIGxpbWl0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSYXRlTGltaXRDb25maWcoKTogUmF0ZUxpbWl0Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBtYXg6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfTUFYIHx8ICcxMDAnLCAxMCksXG4gICAgd2luZG93TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfV0lORE9XTVMgfHwgJzkwMDAwMCcsIDEwKSxcbiAgICBsZWdhY3lIZWFkZXJzOiBmYWxzZSxcbiAgICBzdGFuZGFyZEhlYWRlcnM6IHRydWUsXG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gYW5kIGxvZyB3YXJuaW5ncyBmb3IgaW5zZWN1cmUgc2V0dGluZ3MuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIFNlcnZlciBjb25maWd1cmF0aW9uIHRvIHZhbGlkYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNlcnZlckNvbmZpZyhjb25maWc6IFNlcnZlckNvbmZpZyk6IHZvaWQge1xuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBDaGVjayBDT1JTIGNvbmZpZ3VyYXRpb25cbiAgY29uc3Qgb3JpZ2luID0gY29uZmlnLmNvcnMub3JpZ2luO1xuICBjb25zdCBpc1dpbGRjYXJkID0gb3JpZ2luID09PSAnKicgfHwgKEFycmF5LmlzQXJyYXkob3JpZ2luKSAmJiBvcmlnaW4uaW5jbHVkZXMoJyonKSk7XG4gIGlmIChpc1dpbGRjYXJkKSB7XG4gICAgd2FybmluZ3MucHVzaCgnQ09SUyBvcmlnaW4gc2V0IHRvIHdpbGRjYXJkICgqKSAtIGNvbnNpZGVyIHJlc3RyaWN0aW5nIHRvIHNwZWNpZmljIGRvbWFpbnMnKTtcbiAgfVxuICBpZiAoaXNXaWxkY2FyZCAmJiBjb25maWcuY29ycy5jcmVkZW50aWFscykge1xuICAgIC8vIEJyb3dzZXJzIHJlamVjdCB0aGlzIGNvbWJpbmF0aW9uLCBidXQgaXQgaW5kaWNhdGVzIGEgbWlzY29uZmlndXJhdGlvblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdTRUNVUklUWSBFUlJPUjogQ09SU19PUklHSU49KiB3aXRoIENPUlNfQ1JFREVOVElBTFM9dHJ1ZSBpcyBhbiBpbnZhbGlkIGFuZCBpbnNlY3VyZSBjb25maWd1cmF0aW9uLiAnICtcbiAgICAgICdTZXQgQ09SU19PUklHSU4gdG8gc3BlY2lmaWMgZG9tYWlucyBvciBkaXNhYmxlIENPUlNfQ1JFREVOVElBTFMuJyxcbiAgICApO1xuICB9XG5cbiAgLy8gQ2hlY2sgcGxhdGZvcm0gVVJMIHVzZXMgSFRUUFNcbiAgaWYgKGNvbmZpZy5wbGF0Zm9ybVVybC5zdGFydHNXaXRoKCdodHRwOi8vJykgJiZcbiAgICAhY29uZmlnLnBsYXRmb3JtVXJsLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSkge1xuICAgIHdhcm5pbmdzLnB1c2goJ1BsYXRmb3JtIFVSTCB1c2VzIEhUVFAgaW5zdGVhZCBvZiBIVFRQUyAtIGluc2VjdXJlIGZvciBwcm9kdWN0aW9uJyk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oJ1NlcnZlciBjb25maWd1cmF0aW9uIHdhcm5pbmdzOicpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiBsb2cud2FybihgICAtICR7d2FybmluZ31gKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uICh0b2tlbiBsaWZldGltZXMpLlxuICogQ2FsbCB0aGlzIGF0IHNlcnZlciBzdGFydHVwLCBub3QgZHVyaW5nIENESyBzeW50aGVzaXMuXG4gKlxuICogTm8gU0VDUkVUIGlzIHZhbGlkYXRlZCBhbnkgbW9yZTogdGhlcmUgaXMgbm9uZSBsZWZ0LiBVc2VyIHRva2VucyBhcmUgRVMyNTZcbiAqIHNpZ25lZCBieSBwbGF0Zm9ybSAod2hvc2Ugc2lnbmluZyBrZXkgaXMgdmFsaWRhdGVkIGF0IHBsYXRmb3JtJ3MgYm9vdCwgd2hlcmVcbiAqIGl0IGlzIGxvYWRlZCkgYW5kIGludGVybmFsIHNlcnZpY2UgdG9rZW5zIGFyZSBFUzI1NiBzaWduZWQgcGVyIHNlcnZpY2UgKCMxNCksXG4gKiB3aG9zZSBrZXkgYW5kIGJ1bmRsZSBgY3JlYXRlQXBwYCByZXF1aXJlcyBhdCBzdGFydHVwLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBBdXRoIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0b2tlbiBsaWZldGltZXMgYXJlIG91dCBvZiByYW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBdXRoQ29uZmlnKGNvbmZpZzogQXV0aENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIEpXVCBleHBpcmF0aW9uIHRpbWVzXG4gIGlmIChjb25maWcuand0LmV4cGlyZXNJbiA+IDg2NDAwKSB7XG4gICAgZXJyb3JzLnB1c2goJ0pXVCBleHBpcmF0aW9uIG11c3Qgbm90IGV4Y2VlZCAyNCBob3VycyAoODY0MDAgc2Vjb25kcyknKTtcbiAgfSBlbHNlIGlmIChjb25maWcuand0LmV4cGlyZXNJbiA+IDcyMDApIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdKV1QgZXhwaXJhdGlvbiB0aW1lIGlzIGdyZWF0ZXIgdGhhbiAyIGhvdXJzIC0gc2hvcnRlciBleHBpcmF0aW9uIHJlY29tbWVuZGVkJyk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oJ0F1dGggY29uZmlndXJhdGlvbiB3YXJuaW5nczonKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4gbG9nLndhcm4oYCAgLSAke3dhcm5pbmd9YCkpO1xuICB9XG5cbiAgLy8gVGhyb3cgZXJyb3JzXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBBdXRoIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQ6XFxuJHtlcnJvcnMubWFwKGUgPT4gYCAgLSAke2V9YCkuam9pbignXFxuJyl9YCxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHaEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDO1NBQzFFO1FBQ0QsVUFBVSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3hELFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxvQkFBb0I7UUFFaEYsVUFBVSxFQUFFO1lBQ1YsT0FBTyxFQUFF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bnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICcuL2FwcC1jb25maWcuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJDb25maWcsIEF1dGhDb25maWcsIFJhdGVMaW1pdENvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzLmpzJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdzZXJ2ZXItY29uZmlnJyk7XG5cbi8qKlxuICogTG9hZCBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBQT1JUYCDigJQgSFRUUCBsaXN0ZW4gcG9ydCAoZGVmYXVsdDogYDMwMDBgKVxuICogLSBgQ09SU19PUklHSU5gIOKAlCBDb21tYS1zZXBhcmF0ZWQgYWxsb3dlZCBvcmlnaW5zIChkZWZhdWx0OiBgUExBVEZPUk1fQkFTRV9VUkxgKVxuICogLSBgQ09SU19DUkVERU5USUFMU2Ag4oCUIEFsbG93IGNyZWRlbnRpYWxzOyBzZXQgdG8gYCdmYWxzZSdgIHRvIGRpc2FibGUgKGRlZmF1bHQ6IGB0cnVlYClcbiAqIC0gYFRSVVNUX1BST1hZYCDigJQgRXhwcmVzcyB0cnVzdCBwcm94eSBob3BzIChkZWZhdWx0OiBgMWApXG4gKiAtIGBQTEFURk9STV9CQVNFX1VSTGAg4oCUIEZyb250ZW5kIFVSTCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGRlZmF1bHQ6IGAnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MydgKVxuICpcbiAqIEByZXR1cm5zIFNlcnZlciBjb25maWd1cmF0aW9uIHdpdGggcG9ydCwgQ09SUywgdHJ1c3QgcHJveHksIGFuZCBwbGF0Zm9ybSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTZXJ2ZXJDb25maWcoKTogU2VydmVyQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QT1JUIHx8ICczMDAwJywgMTApLFxuICAgIGNvcnM6IHtcbiAgICAgIGNyZWRlbnRpYWxzOiBwcm9jZXNzLmVudi5DT1JTX0NSRURFTlRJQUxTICE9PSAnZmFsc2UnLFxuICAgICAgb3JpZ2luOiBwcm9jZXNzLmVudi5DT1JTX09SSUdJTlxuICAgICAgICA/IHByb2Nlc3MuZW52LkNPUlNfT1JJR0lOLnNwbGl0KCcsJykubWFwKG8gPT4gby50cmltKCkpXG4gICAgICAgIDogW3Byb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8IENvcmVDb25zdGFudHMuREVGQVVMVF9QTEFURk9STV9VUkxdLFxuICAgIH0sXG4gICAgdHJ1c3RQcm94eTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuVFJVU1RfUFJPWFkgfHwgJzEnLCAxMCksXG4gICAgcGxhdGZvcm1Vcmw6IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8IENvcmVDb25zdGFudHMuREVGQVVMVF9QTEFURk9STV9VUkwsXG5cbiAgICBodHRwQ2xpZW50OiB7XG4gICAgICB0aW1lb3V0OiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9USU1FT1VUIHx8ICc1MDAwJywgMTApLFxuICAgICAgbWF4UmV0cmllczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfTUFYX1JFVFJJRVMgfHwgJzInLCAxMCksXG4gICAgICByZXRyeURlbGF5TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TIHx8ICcyMDAnLCAxMCksXG4gICAgfSxcblxuICAgIHNzZToge1xuICAgICAgbWF4Q2xpZW50c1BlclJlcXVlc3Q6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVCB8fCAnMTAnLCAxMCksXG4gICAgICBjbGllbnRUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9DTElFTlRfVElNRU9VVF9NUyB8fCAnMTgwMDAwMCcsIDEwKSxcbiAgICAgIGNsZWFudXBJbnRlcnZhbE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfQ0xFQU5VUF9JTlRFUlZBTF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIH0sXG5cbiAgICBzZXJ2aWNlczoge1xuICAgICAgcGx1Z2luSG9zdDogcHJvY2Vzcy5lbnYuUExVR0lOX1NFUlZJQ0VfSE9TVCB8fCAncGx1Z2luJyxcbiAgICAgIHBsdWdpblBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBwaXBlbGluZUhvc3Q6IHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFUlZJQ0VfSE9TVCB8fCAncGlwZWxpbmUnLFxuICAgICAgcGlwZWxpbmVQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QSVBFTElORV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBtZXNzYWdlSG9zdDogcHJvY2Vzcy5lbnYuTUVTU0FHRV9TRVJWSUNFX0hPU1QgfHwgJ21lc3NhZ2UnLFxuICAgICAgbWVzc2FnZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52Lk1FU1NBR0VfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgcGxhdGZvcm1Ib3N0OiBwcm9jZXNzLmVudi5QTEFURk9STV9TRVJWSUNFX0hPU1QgfHwgJ3BsYXRmb3JtJyxcbiAgICAgIHBsYXRmb3JtUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgY29tcGxpYW5jZUhvc3Q6IHByb2Nlc3MuZW52LkNPTVBMSUFOQ0VfU0VSVklDRV9IT1NUIHx8ICdjb21wbGlhbmNlJyxcbiAgICAgIGNvbXBsaWFuY2VQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5DT01QTElBTkNFX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGJpbGxpbmdIb3N0OiBwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfSE9TVCB8fCAnYmlsbGluZycsXG4gICAgICBiaWxsaW5nUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBiaWxsaW5nVGltZW91dDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX1RJTUVPVVQgfHwgJzUwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSldUX0VYUElSRVNfSU5gIOKAlCBKV1QgbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDcyMDBgID0gMiBob3VycylcbiAqIC0gYEJDUllQVF9TQUxUX1JPVU5EU2Ag4oCUIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZGVmYXVsdDogYDEyYClcbiAqIC0gYFJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTmAg4oCUIFJlZnJlc2ggdG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogYDI1OTIwMDBgID0gMzAgZGF5cylcbiAqXG4gKiBAcmV0dXJucyBBdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIHdpdGggc2FmZSBkZWZhdWx0cyAoZW1wdHkgc3RyaW5ncyB3aGVuIGVudiB2YXJzIGFyZSB1bnNldCkuXG4gKiBDYWxsIHtAbGluayB2YWxpZGF0ZUF1dGhDb25maWd9IGF0IHNlcnZlciBzdGFydHVwIHRvIGVuZm9yY2UgcmVxdWlyZWQgc2VjcmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBdXRoQ29uZmlnKCk6IEF1dGhDb25maWcge1xuICByZXR1cm4ge1xuICAgIGp3dDoge1xuICAgICAgZXhwaXJlc0luOiBwYXJzZUludChwcm9jZXNzLmVudi5KV1RfRVhQSVJFU19JTiB8fCAnNzIwMCcsIDEwKSxcbiAgICAgIHNhbHRSb3VuZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJDUllQVF9TQUxUX1JPVU5EUyB8fCAnMTInLCAxMCksXG4gICAgfSxcbiAgICByZWZyZXNoVG9rZW46IHtcbiAgICAgIGV4cGlyZXNJbjogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOIHx8ICcyNTkyMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCByYXRlIGxpbWl0aW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTElNSVRFUl9NQVhgIOKAlCBNYXggcmVxdWVzdHMgcGVyIHdpbmRvdyAoZGVmYXVsdDogYDEwMGApXG4gKiAtIGBMSU1JVEVSX1dJTkRPV01TYCDigJQgUmF0ZSBsaW1pdCB3aW5kb3cgaW4gbXMgKGRlZmF1bHQ6IGA5MDAwMDBgID0gMTUgbWludXRlcylcbiAqXG4gKiBAcmV0dXJucyBSYXRlIGxpbWl0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSYXRlTGltaXRDb25maWcoKTogUmF0ZUxpbWl0Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBtYXg6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfTUFYIHx8ICcxMDAnLCAxMCksXG4gICAgd2luZG93TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkxJTUlURVJfV0lORE9XTVMgfHwgJzkwMDAwMCcsIDEwKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgbG9nIHdhcm5pbmdzIGZvciBpbnNlY3VyZSBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmVyIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VydmVyQ29uZmlnKGNvbmZpZzogU2VydmVyQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIENPUlMgY29uZmlndXJhdGlvblxuICBjb25zdCBvcmlnaW4gPSBjb25maWcuY29ycy5vcmlnaW47XG4gIGNvbnN0IGlzV2lsZGNhcmQgPSBvcmlnaW4gPT09ICcqJyB8fCAoQXJyYXkuaXNBcnJheShvcmlnaW4pICYmIG9yaWdpbi5pbmNsdWRlcygnKicpKTtcbiAgaWYgKGlzV2lsZGNhcmQpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdDT1JTIG9yaWdpbiBzZXQgdG8gd2lsZGNhcmQgKCopIC0gY29uc2lkZXIgcmVzdHJpY3RpbmcgdG8gc3BlY2lmaWMgZG9tYWlucycpO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkICYmIGNvbmZpZy5jb3JzLmNyZWRlbnRpYWxzKSB7XG4gICAgLy8gQnJvd3NlcnMgcmVqZWN0IHRoaXMgY29tYmluYXRpb24sIGJ1dCBpdCBpbmRpY2F0ZXMgYSBtaXNjb25maWd1cmF0aW9uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1NFQ1VSSVRZIEVSUk9SOiBDT1JTX09SSUdJTj0qIHdpdGggQ09SU19DUkVERU5USUFMUz10cnVlIGlzIGFuIGludmFsaWQgYW5kIGluc2VjdXJlIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgJ1NldCBDT1JTX09SSUdJTiB0byBzcGVjaWZpYyBkb21haW5zIG9yIGRpc2FibGUgQ09SU19DUkVERU5USUFMUy4nLFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBwbGF0Zm9ybSBVUkwgdXNlcyBIVFRQU1xuICBpZiAoY29uZmlnLnBsYXRmb3JtVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJlxuICAgICFjb25maWcucGxhdGZvcm1VcmwuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUGxhdGZvcm0gVVJMIHVzZXMgSFRUUCBpbnN0ZWFkIG9mIEhUVFBTIC0gaW5zZWN1cmUgZm9yIHByb2R1Y3Rpb24nKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignU2VydmVyIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6Jyk7XG4gICAgd2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IGxvZy53YXJuKGAgIC0gJHt3YXJuaW5nfWApKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gKHRva2VuIGxpZmV0aW1lcykuXG4gKiBDYWxsIHRoaXMgYXQgc2VydmVyIHN0YXJ0dXAsIG5vdCBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAqXG4gKiBObyBTRUNSRVQgaXMgdmFsaWRhdGVkIGFueSBtb3JlOiB0aGVyZSBpcyBub25lIGxlZnQuIFVzZXIgdG9rZW5zIGFyZSBFUzI1NlxuICogc2lnbmVkIGJ5IHBsYXRmb3JtICh3aG9zZSBzaWduaW5nIGtleSBpcyB2YWxpZGF0ZWQgYXQgcGxhdGZvcm0ncyBib290LCB3aGVyZVxuICogaXQgaXMgbG9hZGVkKSBhbmQgaW50ZXJuYWwgc2VydmljZSB0b2tlbnMgYXJlIEVTMjU2IHNpZ25lZCBwZXIgc2VydmljZSAoIzE0KSxcbiAqIHdob3NlIGtleSBhbmQgYnVuZGxlIGBjcmVhdGVBcHBgIHJlcXVpcmVzIGF0IHN0YXJ0dXAuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIEF1dGggY29uZmlndXJhdGlvbiB0byB2YWxpZGF0ZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRva2VuIGxpZmV0aW1lcyBhcmUgb3V0IG9mIHJhbmdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUF1dGhDb25maWcoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgSldUIGV4cGlyYXRpb24gdGltZXNcbiAgaWYgKGNvbmZpZy5qd3QuZXhwaXJlc0luID4gODY0MDApIHtcbiAgICBlcnJvcnMucHVzaCgnSldUIGV4cGlyYXRpb24gbXVzdCBub3QgZXhjZWVkIDI0IGhvdXJzICg4NjQwMCBzZWNvbmRzKScpO1xuICB9IGVsc2UgaWYgKGNvbmZpZy5qd3QuZXhwaXJlc0luID4gNzIwMCkge1xuICAgIHdhcm5pbmdzLnB1c2goJ0pXVCBleHBpcmF0aW9uIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDIgaG91cnMgLSBzaG9ydGVyIGV4cGlyYXRpb24gcmVjb21tZW5kZWQnKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignQXV0aCBjb25maWd1cmF0aW9uIHdhcm5pbmdzOicpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiBsb2cud2FybihgICAtICR7d2FybmluZ31gKSk7XG4gIH1cblxuICAvLyBUaHJvdyBlcnJvcnNcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEF1dGggY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBgICAtICR7ZX1gKS5qb2luKCdcXG4nKX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -14,11 +14,9 @@ export declare const TriggerType: {
|
|
|
14
14
|
};
|
|
15
15
|
export type TriggerType = (typeof TriggerType)[keyof typeof TriggerType];
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* These match the keys produced by `getCustomKey(namespace, property)`
|
|
21
|
-
* and looked up by `buildConfigFromMetadata`.
|
|
17
|
+
* Metadata key constants — re-exported from `@pipeline-builder/api-core`, which
|
|
18
|
+
* owns the single catalog the browser's metadata picker reads as well. Importing
|
|
19
|
+
* `MetadataKeys` from `@pipeline-builder/pipeline-core` keeps working.
|
|
22
20
|
*
|
|
23
21
|
* @example
|
|
24
22
|
* ```typescript
|
|
@@ -28,88 +26,7 @@ export type TriggerType = (typeof TriggerType)[keyof typeof TriggerType];
|
|
|
28
26
|
* };
|
|
29
27
|
* ```
|
|
30
28
|
*/
|
|
31
|
-
export
|
|
32
|
-
readonly SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:selfmutation';
|
|
33
|
-
readonly CROSS_ACCOUNT_KEYS: 'aws:cdk:pipelines:codepipeline:crossaccountkeys';
|
|
34
|
-
readonly DOCKER_ENABLED_FOR_SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:dockerenabledforselfmutation';
|
|
35
|
-
readonly DOCKER_ENABLED_FOR_SYNTH: 'aws:cdk:pipelines:codepipeline:dockerenabledforsynth';
|
|
36
|
-
readonly ENABLE_KEY_ROTATION: 'aws:cdk:pipelines:codepipeline:enablekeyrotation';
|
|
37
|
-
readonly PUBLISH_ASSETS_IN_PARALLEL: 'aws:cdk:pipelines:codepipeline:publishassetsinparallel';
|
|
38
|
-
readonly REUSE_CROSS_REGION_SUPPORT_STACKS: 'aws:cdk:pipelines:codepipeline:reusecrossregionsupportstacks';
|
|
39
|
-
readonly USE_CHANGE_SETS: 'aws:cdk:pipelines:codepipeline:usechangesets';
|
|
40
|
-
readonly USE_PIPELINE_ROLE_FOR_ACTIONS: 'aws:cdk:pipelines:codepipeline:usepipelineroleforactions';
|
|
41
|
-
readonly ARTIFACT_BUCKET: 'aws:cdk:pipelines:codepipeline:artifactbucket';
|
|
42
|
-
readonly ASSET_PUBLISHING_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:assetpublishingcodebuilddefaults';
|
|
43
|
-
readonly CDK_ASSETS_CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cdkassetscliversion';
|
|
44
|
-
readonly CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cliversion';
|
|
45
|
-
readonly CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:codebuilddefaults';
|
|
46
|
-
readonly CODE_PIPELINE: 'aws:cdk:pipelines:codepipeline:codepipeline';
|
|
47
|
-
readonly CROSS_REGION_REPLICATION_BUCKETS: 'aws:cdk:pipelines:codepipeline:crossregionreplicationbuckets';
|
|
48
|
-
readonly DOCKER_CREDENTIALS: 'aws:cdk:pipelines:codepipeline:dockercredentials';
|
|
49
|
-
readonly PIPELINE_NAME: 'aws:cdk:pipelines:codepipeline:pipelinename';
|
|
50
|
-
readonly PIPELINE_TYPE: 'aws:cdk:pipelines:codepipeline:pipelinetype';
|
|
51
|
-
readonly PIPELINE_ROLE: 'aws:cdk:pipelines:codepipeline:role';
|
|
52
|
-
readonly SELF_MUTATION_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:selfmutationcodebuilddefaults';
|
|
53
|
-
readonly SYNTH: 'aws:cdk:pipelines:codepipeline:synth';
|
|
54
|
-
readonly SYNTH_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:synthcodebuilddefaults';
|
|
55
|
-
readonly ACTION_ROLE: 'aws:cdk:pipelines:codebuildstep:actionrole';
|
|
56
|
-
readonly ADDITIONAL_INPUTS: 'aws:cdk:pipelines:codebuildstep:additionalinputs';
|
|
57
|
-
readonly BUILD_ENVIRONMENT: 'aws:cdk:pipelines:codebuildstep:buildenvironment';
|
|
58
|
-
readonly CACHE: 'aws:cdk:pipelines:codebuildstep:cache';
|
|
59
|
-
readonly COMMANDS: 'aws:cdk:pipelines:codebuildstep:commands';
|
|
60
|
-
readonly CODE_BUILD_ENV: 'aws:cdk:pipelines:codebuildstep:env';
|
|
61
|
-
readonly ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:codebuildstep:envfromcfnoutputs';
|
|
62
|
-
readonly FILE_SYSTEM_LOCATIONS: 'aws:cdk:pipelines:codebuildstep:filesystemlocations';
|
|
63
|
-
readonly INPUT: 'aws:cdk:pipelines:codebuildstep:input';
|
|
64
|
-
readonly INSTALL_COMMANDS: 'aws:cdk:pipelines:codebuildstep:installcommands';
|
|
65
|
-
readonly LOGGING: 'aws:cdk:pipelines:codebuildstep:logging';
|
|
66
|
-
readonly PARTIAL_BUILD_SPEC: 'aws:cdk:pipelines:codebuildstep:partialbuildspec';
|
|
67
|
-
readonly PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:codebuildstep:primaryoutputdirectory';
|
|
68
|
-
readonly PROJECT_NAME: 'aws:cdk:pipelines:codebuildstep:projectname';
|
|
69
|
-
readonly STEP_ROLE: 'aws:cdk:pipelines:codebuildstep:role';
|
|
70
|
-
readonly ROLE_POLICY_STATEMENTS: 'aws:cdk:pipelines:codebuildstep:rolepolicystatements';
|
|
71
|
-
readonly TIMEOUT: 'aws:cdk:pipelines:codebuildstep:timeout';
|
|
72
|
-
readonly SHELL_ADDITIONAL_INPUTS: 'aws:cdk:pipelines:shellstep:additionalinputs';
|
|
73
|
-
readonly SHELL_COMMANDS: 'aws:cdk:pipelines:shellstep:commands';
|
|
74
|
-
readonly SHELL_ENV: 'aws:cdk:pipelines:shellstep:env';
|
|
75
|
-
readonly SHELL_ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:shellstep:envfromcfnoutputs';
|
|
76
|
-
readonly SHELL_INPUT: 'aws:cdk:pipelines:shellstep:input';
|
|
77
|
-
readonly SHELL_INSTALL_COMMANDS: 'aws:cdk:pipelines:shellstep:installcommands';
|
|
78
|
-
readonly SHELL_PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:shellstep:primaryoutputdirectory';
|
|
79
|
-
readonly PRIVILEGED: 'aws:cdk:codebuild:buildenvironment:privileged';
|
|
80
|
-
readonly BUILD_IMAGE: 'aws:cdk:codebuild:buildenvironment:buildimage';
|
|
81
|
-
readonly CERTIFICATE: 'aws:cdk:codebuild:buildenvironment:certificate';
|
|
82
|
-
readonly COMPUTE_TYPE: 'aws:cdk:codebuild:buildenvironment:computetype';
|
|
83
|
-
readonly DOCKER_SERVER: 'aws:cdk:codebuild:buildenvironment:dockerserver';
|
|
84
|
-
readonly ENVIRONMENT_VARIABLES: 'aws:cdk:codebuild:buildenvironment:environmentvariables';
|
|
85
|
-
readonly FLEET: 'aws:cdk:codebuild:buildenvironment:fleet';
|
|
86
|
-
readonly NETWORK_TYPE: 'aws:cdk:ec2:network:type';
|
|
87
|
-
readonly NETWORK_VPC_ID: 'aws:cdk:ec2:network:vpcid';
|
|
88
|
-
readonly NETWORK_SUBNET_IDS: 'aws:cdk:ec2:network:subnetids';
|
|
89
|
-
readonly NETWORK_SUBNET_TYPE: 'aws:cdk:ec2:network:subnettype';
|
|
90
|
-
readonly NETWORK_AVAILABILITY_ZONES: 'aws:cdk:ec2:network:availabilityzones';
|
|
91
|
-
readonly NETWORK_SUBNET_GROUP_NAME: 'aws:cdk:ec2:network:subnetgroupname';
|
|
92
|
-
readonly NETWORK_SECURITY_GROUP_IDS: 'aws:cdk:ec2:network:securitygroupids';
|
|
93
|
-
readonly NETWORK_TAGS: 'aws:cdk:ec2:network:tags';
|
|
94
|
-
readonly NETWORK_VPC_NAME: 'aws:cdk:ec2:network:vpcname';
|
|
95
|
-
readonly NETWORK_REGION: 'aws:cdk:ec2:network:region';
|
|
96
|
-
readonly ROLE_TYPE: 'aws:cdk:iam:role:type';
|
|
97
|
-
readonly ROLE_ARN: 'aws:cdk:iam:role:rolearn';
|
|
98
|
-
readonly ROLE_NAME: 'aws:cdk:iam:role:rolename';
|
|
99
|
-
readonly ROLE_MUTABLE: 'aws:cdk:iam:role:mutable';
|
|
100
|
-
readonly SECURITY_GROUP_TYPE: 'aws:cdk:ec2:securitygroup:type';
|
|
101
|
-
readonly SECURITY_GROUP_IDS: 'aws:cdk:ec2:securitygroup:securitygroupids';
|
|
102
|
-
readonly SECURITY_GROUP_MUTABLE: 'aws:cdk:ec2:securitygroup:mutable';
|
|
103
|
-
readonly SECURITY_GROUP_NAME: 'aws:cdk:ec2:securitygroup:securitygroupname';
|
|
104
|
-
readonly SECURITY_GROUP_VPC_ID: 'aws:cdk:ec2:securitygroup:vpcid';
|
|
105
|
-
readonly NOTIFICATION_TOPIC_ARN: 'aws:cdk:notifications:topic:arn';
|
|
106
|
-
readonly NOTIFICATION_EVENTS: 'aws:cdk:notifications:events';
|
|
107
|
-
readonly ENABLE_EXECUTION_EVENTS: 'aws:cdk:operations:executionevents';
|
|
108
|
-
readonly ENABLE_METRICS: 'aws:cdk:operations:metrics';
|
|
109
|
-
readonly ARTIFACT_RETENTION_DAYS: 'aws:cdk:operations:artifactretentiondays';
|
|
110
|
-
readonly PIPELINE_VARIABLES: 'aws:cdk:operations:variables';
|
|
111
|
-
readonly KMS_KEY_ARN: 'aws:cdk:encryption:kmskeyarn';
|
|
112
|
-
};
|
|
29
|
+
export { MetadataKeys, type MetadataKey } from '@pipeline-builder/api-core';
|
|
113
30
|
/**
|
|
114
31
|
* Prefix for AWS CDK metadata keys.
|
|
115
32
|
* Keys with this prefix are handled by the metadata extraction functions
|
|
@@ -16,11 +16,9 @@ export const TriggerType = {
|
|
|
16
16
|
SCHEDULE: 'SCHEDULE',
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* These match the keys produced by `getCustomKey(namespace, property)`
|
|
23
|
-
* and looked up by `buildConfigFromMetadata`.
|
|
19
|
+
* Metadata key constants — re-exported from `@pipeline-builder/api-core`, which
|
|
20
|
+
* owns the single catalog the browser's metadata picker reads as well. Importing
|
|
21
|
+
* `MetadataKeys` from `@pipeline-builder/pipeline-core` keeps working.
|
|
24
22
|
*
|
|
25
23
|
* @example
|
|
26
24
|
* ```typescript
|
|
@@ -30,102 +28,11 @@ export const TriggerType = {
|
|
|
30
28
|
* };
|
|
31
29
|
* ```
|
|
32
30
|
*/
|
|
33
|
-
export
|
|
34
|
-
// ── CodePipeline (namespace: pipelines:codepipeline) ──
|
|
35
|
-
SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:selfmutation',
|
|
36
|
-
CROSS_ACCOUNT_KEYS: 'aws:cdk:pipelines:codepipeline:crossaccountkeys',
|
|
37
|
-
DOCKER_ENABLED_FOR_SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:dockerenabledforselfmutation',
|
|
38
|
-
DOCKER_ENABLED_FOR_SYNTH: 'aws:cdk:pipelines:codepipeline:dockerenabledforsynth',
|
|
39
|
-
ENABLE_KEY_ROTATION: 'aws:cdk:pipelines:codepipeline:enablekeyrotation',
|
|
40
|
-
PUBLISH_ASSETS_IN_PARALLEL: 'aws:cdk:pipelines:codepipeline:publishassetsinparallel',
|
|
41
|
-
REUSE_CROSS_REGION_SUPPORT_STACKS: 'aws:cdk:pipelines:codepipeline:reusecrossregionsupportstacks',
|
|
42
|
-
USE_CHANGE_SETS: 'aws:cdk:pipelines:codepipeline:usechangesets',
|
|
43
|
-
USE_PIPELINE_ROLE_FOR_ACTIONS: 'aws:cdk:pipelines:codepipeline:usepipelineroleforactions',
|
|
44
|
-
ARTIFACT_BUCKET: 'aws:cdk:pipelines:codepipeline:artifactbucket',
|
|
45
|
-
ASSET_PUBLISHING_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:assetpublishingcodebuilddefaults',
|
|
46
|
-
CDK_ASSETS_CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cdkassetscliversion',
|
|
47
|
-
CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cliversion',
|
|
48
|
-
CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:codebuilddefaults',
|
|
49
|
-
CODE_PIPELINE: 'aws:cdk:pipelines:codepipeline:codepipeline',
|
|
50
|
-
CROSS_REGION_REPLICATION_BUCKETS: 'aws:cdk:pipelines:codepipeline:crossregionreplicationbuckets',
|
|
51
|
-
DOCKER_CREDENTIALS: 'aws:cdk:pipelines:codepipeline:dockercredentials',
|
|
52
|
-
PIPELINE_NAME: 'aws:cdk:pipelines:codepipeline:pipelinename',
|
|
53
|
-
PIPELINE_TYPE: 'aws:cdk:pipelines:codepipeline:pipelinetype',
|
|
54
|
-
PIPELINE_ROLE: 'aws:cdk:pipelines:codepipeline:role',
|
|
55
|
-
SELF_MUTATION_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:selfmutationcodebuilddefaults',
|
|
56
|
-
SYNTH: 'aws:cdk:pipelines:codepipeline:synth',
|
|
57
|
-
SYNTH_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:synthcodebuilddefaults',
|
|
58
|
-
// ── CodeBuildStep (namespace: pipelines:codebuildstep) ──
|
|
59
|
-
ACTION_ROLE: 'aws:cdk:pipelines:codebuildstep:actionrole',
|
|
60
|
-
ADDITIONAL_INPUTS: 'aws:cdk:pipelines:codebuildstep:additionalinputs',
|
|
61
|
-
BUILD_ENVIRONMENT: 'aws:cdk:pipelines:codebuildstep:buildenvironment',
|
|
62
|
-
CACHE: 'aws:cdk:pipelines:codebuildstep:cache',
|
|
63
|
-
COMMANDS: 'aws:cdk:pipelines:codebuildstep:commands',
|
|
64
|
-
CODE_BUILD_ENV: 'aws:cdk:pipelines:codebuildstep:env',
|
|
65
|
-
ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:codebuildstep:envfromcfnoutputs',
|
|
66
|
-
FILE_SYSTEM_LOCATIONS: 'aws:cdk:pipelines:codebuildstep:filesystemlocations',
|
|
67
|
-
INPUT: 'aws:cdk:pipelines:codebuildstep:input',
|
|
68
|
-
INSTALL_COMMANDS: 'aws:cdk:pipelines:codebuildstep:installcommands',
|
|
69
|
-
LOGGING: 'aws:cdk:pipelines:codebuildstep:logging',
|
|
70
|
-
PARTIAL_BUILD_SPEC: 'aws:cdk:pipelines:codebuildstep:partialbuildspec',
|
|
71
|
-
PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:codebuildstep:primaryoutputdirectory',
|
|
72
|
-
PROJECT_NAME: 'aws:cdk:pipelines:codebuildstep:projectname',
|
|
73
|
-
STEP_ROLE: 'aws:cdk:pipelines:codebuildstep:role',
|
|
74
|
-
ROLE_POLICY_STATEMENTS: 'aws:cdk:pipelines:codebuildstep:rolepolicystatements',
|
|
75
|
-
TIMEOUT: 'aws:cdk:pipelines:codebuildstep:timeout',
|
|
76
|
-
// ── ShellStep (namespace: pipelines:shellstep) ──
|
|
77
|
-
SHELL_ADDITIONAL_INPUTS: 'aws:cdk:pipelines:shellstep:additionalinputs',
|
|
78
|
-
SHELL_COMMANDS: 'aws:cdk:pipelines:shellstep:commands',
|
|
79
|
-
SHELL_ENV: 'aws:cdk:pipelines:shellstep:env',
|
|
80
|
-
SHELL_ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:shellstep:envfromcfnoutputs',
|
|
81
|
-
SHELL_INPUT: 'aws:cdk:pipelines:shellstep:input',
|
|
82
|
-
SHELL_INSTALL_COMMANDS: 'aws:cdk:pipelines:shellstep:installcommands',
|
|
83
|
-
SHELL_PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:shellstep:primaryoutputdirectory',
|
|
84
|
-
// ── BuildEnvironment (namespace: codebuild:buildenvironment) ──
|
|
85
|
-
PRIVILEGED: 'aws:cdk:codebuild:buildenvironment:privileged',
|
|
86
|
-
BUILD_IMAGE: 'aws:cdk:codebuild:buildenvironment:buildimage',
|
|
87
|
-
CERTIFICATE: 'aws:cdk:codebuild:buildenvironment:certificate',
|
|
88
|
-
COMPUTE_TYPE: 'aws:cdk:codebuild:buildenvironment:computetype',
|
|
89
|
-
DOCKER_SERVER: 'aws:cdk:codebuild:buildenvironment:dockerserver',
|
|
90
|
-
ENVIRONMENT_VARIABLES: 'aws:cdk:codebuild:buildenvironment:environmentvariables',
|
|
91
|
-
FLEET: 'aws:cdk:codebuild:buildenvironment:fleet',
|
|
92
|
-
// ── Network configuration (namespace: ec2:network) ──
|
|
93
|
-
NETWORK_TYPE: 'aws:cdk:ec2:network:type',
|
|
94
|
-
NETWORK_VPC_ID: 'aws:cdk:ec2:network:vpcid',
|
|
95
|
-
NETWORK_SUBNET_IDS: 'aws:cdk:ec2:network:subnetids',
|
|
96
|
-
NETWORK_SUBNET_TYPE: 'aws:cdk:ec2:network:subnettype',
|
|
97
|
-
NETWORK_AVAILABILITY_ZONES: 'aws:cdk:ec2:network:availabilityzones',
|
|
98
|
-
NETWORK_SUBNET_GROUP_NAME: 'aws:cdk:ec2:network:subnetgroupname',
|
|
99
|
-
NETWORK_SECURITY_GROUP_IDS: 'aws:cdk:ec2:network:securitygroupids',
|
|
100
|
-
NETWORK_TAGS: 'aws:cdk:ec2:network:tags',
|
|
101
|
-
NETWORK_VPC_NAME: 'aws:cdk:ec2:network:vpcname',
|
|
102
|
-
NETWORK_REGION: 'aws:cdk:ec2:network:region',
|
|
103
|
-
// ── IAM role configuration (namespace: iam:role) ──
|
|
104
|
-
ROLE_TYPE: 'aws:cdk:iam:role:type',
|
|
105
|
-
ROLE_ARN: 'aws:cdk:iam:role:rolearn',
|
|
106
|
-
ROLE_NAME: 'aws:cdk:iam:role:rolename',
|
|
107
|
-
ROLE_MUTABLE: 'aws:cdk:iam:role:mutable',
|
|
108
|
-
// ── Security group configuration (namespace: ec2:securitygroup) ──
|
|
109
|
-
SECURITY_GROUP_TYPE: 'aws:cdk:ec2:securitygroup:type',
|
|
110
|
-
SECURITY_GROUP_IDS: 'aws:cdk:ec2:securitygroup:securitygroupids',
|
|
111
|
-
SECURITY_GROUP_MUTABLE: 'aws:cdk:ec2:securitygroup:mutable',
|
|
112
|
-
SECURITY_GROUP_NAME: 'aws:cdk:ec2:securitygroup:securitygroupname',
|
|
113
|
-
SECURITY_GROUP_VPC_ID: 'aws:cdk:ec2:securitygroup:vpcid',
|
|
114
|
-
// ── Notifications (namespace: notifications) ──
|
|
115
|
-
NOTIFICATION_TOPIC_ARN: 'aws:cdk:notifications:topic:arn',
|
|
116
|
-
NOTIFICATION_EVENTS: 'aws:cdk:notifications:events',
|
|
117
|
-
// ── Pipeline operations (namespace: operations — custom synth in PipelineBuilder) ──
|
|
118
|
-
ENABLE_EXECUTION_EVENTS: 'aws:cdk:operations:executionevents',
|
|
119
|
-
ENABLE_METRICS: 'aws:cdk:operations:metrics',
|
|
120
|
-
ARTIFACT_RETENTION_DAYS: 'aws:cdk:operations:artifactretentiondays',
|
|
121
|
-
PIPELINE_VARIABLES: 'aws:cdk:operations:variables',
|
|
122
|
-
// ── Encryption (namespace: encryption — custom synth in PipelineBuilder) ──
|
|
123
|
-
KMS_KEY_ARN: 'aws:cdk:encryption:kmskeyarn',
|
|
124
|
-
};
|
|
31
|
+
export { MetadataKeys } from '@pipeline-builder/api-core';
|
|
125
32
|
/**
|
|
126
33
|
* Prefix for AWS CDK metadata keys.
|
|
127
34
|
* Keys with this prefix are handled by the metadata extraction functions
|
|
128
35
|
* (metadataForCodePipeline, etc.) and should NOT be passed as CodeBuild environment variables.
|
|
129
36
|
*/
|
|
130
37
|
export const CDK_METADATA_PREFIX = 'aws:cdk:';
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9waXBlbGluZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBc0MsTUFBTSw0QkFBNEIsQ0FBQztBQUV6Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTTtJQUNaLHdHQUF3RztJQUN4RyxJQUFJLEVBQUUsTUFBTTtJQUNaLGdHQUFnRztJQUNoRyxRQUFRLEVBQUUsVUFBVTtDQUNaLENBQUM7QUFJWDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQix5REFBeUQ7SUFDekQsYUFBYSxFQUFFLDZDQUE2QztJQUM1RCxrQkFBa0IsRUFBRSxpREFBaUQ7SUFDckUsZ0NBQWdDLEVBQUUsNkRBQTZEO0lBQy9GLHdCQUF3QixFQUFFLHNEQUFzRDtJQUNoRixtQkFBbUIsRUFBRSxrREFBa0Q7SUFDdkUsMEJBQTBCLEVBQUUsd0RBQXdEO0lBQ3BGLGlDQUFpQyxFQUFFLDhEQUE4RDtJQUNqRyxlQUFlLEVBQUUsOENBQThDO0lBQy9ELDZCQUE2QixFQUFFLDBEQUEwRDtJQUN6RixlQUFlLEVBQUUsK0NBQStDO0lBQ2hFLG9DQUFvQyxFQUFFLGlFQUFpRTtJQUN2RyxzQkFBc0IsRUFBRSxvREFBb0Q7SUFDNUUsV0FBVyxFQUFFLDJDQUEyQztJQUN4RCxtQkFBbUIsRUFBRSxrREFBa0Q7SUFDdkUsYUFBYSxFQUFFLDZDQUE2QztJQUM1RCxnQ0FBZ0MsRUFBRSw4REFBOEQ7SUFDaEcsa0JBQWtCLEVBQUUsa0RBQWtEO0lBQ3RFLGFBQWEsRUFBRSw2Q0FBNkM7SUFDNUQsYUFBYSxFQUFFLDZDQUE2QztJQUM1RCxhQUFhLEVBQUUscUNBQXFDO0lBQ3BELGlDQUFpQyxFQUFFLDhEQUE4RDtJQUNqRyxLQUFLLEVBQUUsc0NBQXNDO0lBQzdDLHlCQUF5QixFQUFFLHVEQUF1RDtJQUVsRiwyREFBMkQ7SUFDM0QsV0FBVyxFQUFFLDRDQUE0QztJQUN6RCxpQkFBaUIsRUFBRSxrREFBa0Q7SUFDckUsaUJBQWlCLEVBQUUsa0RBQWtEO0lBQ3JFLEtBQUssRUFBRSx1Q0FBdUM7SUFDOUMsUUFBUSxFQUFFLDBDQUEwQztJQUNwRCxjQUFjLEVBQUUscUNBQXFDO0lBQ3JELG9CQUFvQixFQUFFLG1EQUFtRDtJQUN6RSxxQkFBcUIsRUFBRSxxREFBcUQ7SUFDNUUsS0FBSyxFQUFFLHVDQUF1QztJQUM5QyxnQkFBZ0IsRUFBRSxpREFBaUQ7SUFDbkUsT0FBTyxFQUFFLHlDQUF5QztJQUNsRCxrQkFBa0IsRUFBRSxrREFBa0Q7SUFDdEUsd0JBQXdCLEVBQUUsd0RBQXdEO0lBQ2xGLFlBQVksRUFBRSw2Q0FBNkM7SUFDM0QsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxzQkFBc0IsRUFBRSxzREFBc0Q7SUFDOUUsT0FBTyxFQUFFLHlDQUF5QztJQUVsRCxtREFBbUQ7SUFDbkQsdUJBQXVCLEVBQUUsOENBQThDO0lBQ3ZFLGNBQWMsRUFBRSxzQ0FBc0M7SUFDdEQsU0FBUyxFQUFFLGlDQUFpQztJQUM1QywwQkFBMEIsRUFBRSwrQ0FBK0M7SUFDM0UsV0FBVyxFQUFFLG1DQUFtQztJQUNoRCxzQkFBc0IsRUFBRSw2Q0FBNkM7SUFDckUsOEJBQThCLEVBQUUsb0RBQW9EO0lBRXBGLGlFQUFpRTtJQUNqRSxVQUFVLEVBQUUsK0NBQStDO0lBQzNELFdBQVcsRUFBRSwrQ0FBK0M7SUFDNUQsV0FBVyxFQUFFLGdEQUFnRDtJQUM3RCxZQUFZLEVBQUUsZ0RBQWdEO0lBQzlELGFBQWEsRUFBRSxpREFBaUQ7SUFDaEUscUJBQXFCLEVBQUUseURBQXlEO0lBQ2hGLEtBQUssRUFBRSwwQ0FBMEM7SUFFakQsdURBQXVEO0lBQ3ZELFlBQVksRUFBRSwwQkFBMEI7SUFDeEMsY0FBYyxFQUFFLDJCQUEyQjtJQUMzQyxrQkFBa0IsRUFBRSwrQkFBK0I7SUFDbkQsbUJBQW1CLEVBQUUsZ0NBQWdDO0lBQ3JELDBCQUEwQixFQUFFLHVDQUF1QztJQUNuRSx5QkFBeUIsRUFBRSxxQ0FBcUM7SUFDaEUsMEJBQTBCLEVBQUUsc0NBQXNDO0lBQ2xFLFlBQVksRUFBRSwwQkFBMEI7SUFDeEMsZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLGNBQWMsRUFBRSw0QkFBNEI7SUFFNUMscURBQXFEO0lBQ3JELFNBQVMsRUFBRSx1QkFBdUI7SUFDbEMsUUFBUSxFQUFFLDBCQUEwQjtJQUNwQyxTQUFTLEVBQUUsMkJBQTJCO0lBQ3RDLFlBQVksRUFBRSwwQkFBMEI7SUFFeEMsb0VBQW9FO0lBQ3BFLG1CQUFtQixFQUFFLGdDQUFnQztJQUNyRCxrQkFBa0IsRUFBRSw0Q0FBNEM7SUFDaEUsc0JBQXNCLEVBQUUsbUNBQW1DO0lBQzNELG1CQUFtQixFQUFFLDZDQUE2QztJQUNsRSxxQkFBcUIsRUFBRSxpQ0FBaUM7SUFFeEQsaURBQWlEO0lBQ2pELHNCQUFzQixFQUFFLGlDQUFpQztJQUN6RCxtQkFBbUIsRUFBRSw4QkFBOEI7SUFFbkQsc0ZBQXNGO0lBQ3RGLHVCQUF1QixFQUFFLG9DQUFvQztJQUM3RCxjQUFjLEVBQUUsNEJBQTRCO0lBQzVDLHVCQUF1QixFQUFFLDBDQUEwQztJQUNuRSxrQkFBa0IsRUFBRSw4QkFBOEI7SUFFbEQsNkVBQTZFO0lBQzdFLFdBQVcsRUFBRSw4QkFBOEI7Q0FDbkMsQ0FBQztBQUVYOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuXG4vLyBSZS1leHBvcnQgc2hhcmVkIHR5cGVzIGZyb20gYXBpLWNvcmUgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBDb21wdXRlVHlwZSwgUGx1Z2luVHlwZSwgdHlwZSBNZXRhRGF0YVR5cGUsIHR5cGUgVmlzaWJpbGl0eSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuLyoqXG4gKiBQaXBlbGluZSB0cmlnZ2VyIGJlaGF2aW9yLlxuICpcbiAqIEBwcm9wZXJ0eSBOT05FIC0gTWFudWFsIHRyaWdnZXIgb25seSwgcGlwZWxpbmUgZG9lcyBub3Qgc3RhcnQgYXV0b21hdGljYWxseVxuICogQHByb3BlcnR5IEFVVE8gLSBBdXRvbWF0aWMgdHJpZ2dlciBvbiBzb3VyY2UgY2hhbmdlcyAoUzMvR2l0SHViOiBwb2xsaW5nLCBDb2RlU3RhcjogcHVzaC1iYXNlZCB3ZWJob29rKVxuICovXG5leHBvcnQgY29uc3QgVHJpZ2dlclR5cGUgPSB7XG4gIE5PTkU6ICdOT05FJyxcbiAgLyoqIEF1dG9tYXRpYyB0cmlnZ2VyIG9uIHNvdXJjZSBjaGFuZ2VzLiBVc2VzIHBvbGxpbmcgZm9yIFMzL0dpdEh1YiwgcHVzaC1iYXNlZCB3ZWJob29rIGZvciBDb2RlU3Rhci4gKi9cbiAgQVVUTzogJ0FVVE8nLFxuICAvKiogU2NoZWR1bGVkIHRyaWdnZXIgdmlhIEV2ZW50QnJpZGdlIHJ1bGUuIFJlcXVpcmVzIGEgY3JvbiBleHByZXNzaW9uIGluIHRoZSBzb3VyY2Ugb3B0aW9ucy4gKi9cbiAgU0NIRURVTEU6ICdTQ0hFRFVMRScsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgVHJpZ2dlclR5cGUgPSAodHlwZW9mIFRyaWdnZXJUeXBlKVtrZXlvZiB0eXBlb2YgVHJpZ2dlclR5cGVdO1xuXG5cbi8qKlxuICogQ29uc3RhbnRzIGZvciBtZXRhZGF0YSBrZXlzIHRvIGF2b2lkIHN0cmluZyB0eXBvcy5cbiAqXG4gKiBLZXkgZm9ybWF0OiBgYXdzOmNkazp7bmFtZXNwYWNlfTp7cHJvcGVydHl9YCAoYWxsIGxvd2VyY2FzZSkuXG4gKiBUaGVzZSBtYXRjaCB0aGUga2V5cyBwcm9kdWNlZCBieSBgZ2V0Q3VzdG9tS2V5KG5hbWVzcGFjZSwgcHJvcGVydHkpYFxuICogYW5kIGxvb2tlZCB1cCBieSBgYnVpbGRDb25maWdGcm9tTWV0YWRhdGFgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZXRhZGF0YSA9IHtcbiAqICAgW01ldGFkYXRhS2V5cy5TRUxGX01VVEFUSU9OXTogdHJ1ZSxcbiAqICAgW01ldGFkYXRhS2V5cy5QVUJMSVNIX0FTU0VUU19JTl9QQVJBTExFTF06IHRydWVcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IE1ldGFkYXRhS2V5cyA9IHtcbiAgLy8g4pSA4pSAIENvZGVQaXBlbGluZSAobmFtZXNwYWNlOiBwaXBlbGluZXM6Y29kZXBpcGVsaW5lKSDilIDilIBcbiAgU0VMRl9NVVRBVElPTjogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpzZWxmbXV0YXRpb24nLFxuICBDUk9TU19BQ0NPVU5UX0tFWVM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6Y3Jvc3NhY2NvdW50a2V5cycsXG4gIERPQ0tFUl9FTkFCTEVEX0ZPUl9TRUxGX01VVEFUSU9OOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmRvY2tlcmVuYWJsZWRmb3JzZWxmbXV0YXRpb24nLFxuICBET0NLRVJfRU5BQkxFRF9GT1JfU1lOVEg6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6ZG9ja2VyZW5hYmxlZGZvcnN5bnRoJyxcbiAgRU5BQkxFX0tFWV9ST1RBVElPTjogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTplbmFibGVrZXlyb3RhdGlvbicsXG4gIFBVQkxJU0hfQVNTRVRTX0lOX1BBUkFMTEVMOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnB1Ymxpc2hhc3NldHNpbnBhcmFsbGVsJyxcbiAgUkVVU0VfQ1JPU1NfUkVHSU9OX1NVUFBPUlRfU1RBQ0tTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnJldXNlY3Jvc3NyZWdpb25zdXBwb3J0c3RhY2tzJyxcbiAgVVNFX0NIQU5HRV9TRVRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnVzZWNoYW5nZXNldHMnLFxuICBVU0VfUElQRUxJTkVfUk9MRV9GT1JfQUNUSU9OUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTp1c2VwaXBlbGluZXJvbGVmb3JhY3Rpb25zJyxcbiAgQVJUSUZBQ1RfQlVDS0VUOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmFydGlmYWN0YnVja2V0JyxcbiAgQVNTRVRfUFVCTElTSElOR19DT0RFX0JVSUxEX0RFRkFVTFRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmFzc2V0cHVibGlzaGluZ2NvZGVidWlsZGRlZmF1bHRzJyxcbiAgQ0RLX0FTU0VUU19DTElfVkVSU0lPTjogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpjZGthc3NldHNjbGl2ZXJzaW9uJyxcbiAgQ0xJX1ZFUlNJT046ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6Y2xpdmVyc2lvbicsXG4gIENPREVfQlVJTERfREVGQVVMVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6Y29kZWJ1aWxkZGVmYXVsdHMnLFxuICBDT0RFX1BJUEVMSU5FOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmNvZGVwaXBlbGluZScsXG4gIENST1NTX1JFR0lPTl9SRVBMSUNBVElPTl9CVUNLRVRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmNyb3NzcmVnaW9ucmVwbGljYXRpb25idWNrZXRzJyxcbiAgRE9DS0VSX0NSRURFTlRJQUxTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmRvY2tlcmNyZWRlbnRpYWxzJyxcbiAgUElQRUxJTkVfTkFNRTogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpwaXBlbGluZW5hbWUnLFxuICBQSVBFTElORV9UWVBFOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnBpcGVsaW5ldHlwZScsXG4gIFBJUEVMSU5FX1JPTEU6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6cm9sZScsXG4gIFNFTEZfTVVUQVRJT05fQ09ERV9CVUlMRF9ERUZBVUxUUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpzZWxmbXV0YXRpb25jb2RlYnVpbGRkZWZhdWx0cycsXG4gIFNZTlRIOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnN5bnRoJyxcbiAgU1lOVEhfQ09ERV9CVUlMRF9ERUZBVUxUUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpzeW50aGNvZGVidWlsZGRlZmF1bHRzJyxcblxuICAvLyDilIDilIAgQ29kZUJ1aWxkU3RlcCAobmFtZXNwYWNlOiBwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCkg4pSA4pSAXG4gIEFDVElPTl9ST0xFOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDphY3Rpb25yb2xlJyxcbiAgQURESVRJT05BTF9JTlBVVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmFkZGl0aW9uYWxpbnB1dHMnLFxuICBCVUlMRF9FTlZJUk9OTUVOVDogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6YnVpbGRlbnZpcm9ubWVudCcsXG4gIENBQ0hFOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjYWNoZScsXG4gIENPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjb21tYW5kcycsXG4gIENPREVfQlVJTERfRU5WOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDplbnYnLFxuICBFTlZfRlJPTV9DRk5fT1VUUFVUUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6ZW52ZnJvbWNmbm91dHB1dHMnLFxuICBGSUxFX1NZU1RFTV9MT0NBVElPTlM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmZpbGVzeXN0ZW1sb2NhdGlvbnMnLFxuICBJTlBVVDogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6aW5wdXQnLFxuICBJTlNUQUxMX0NPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDppbnN0YWxsY29tbWFuZHMnLFxuICBMT0dHSU5HOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpsb2dnaW5nJyxcbiAgUEFSVElBTF9CVUlMRF9TUEVDOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwYXJ0aWFsYnVpbGRzcGVjJyxcbiAgUFJJTUFSWV9PVVRQVVRfRElSRUNUT1JZOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwcmltYXJ5b3V0cHV0ZGlyZWN0b3J5JyxcbiAgUFJPSkVDVF9OQU1FOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwcm9qZWN0bmFtZScsXG4gIFNURVBfUk9MRTogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6cm9sZScsXG4gIFJPTEVfUE9MSUNZX1NUQVRFTUVOVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOnJvbGVwb2xpY3lzdGF0ZW1lbnRzJyxcbiAgVElNRU9VVDogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6dGltZW91dCcsXG5cbiAgLy8g4pSA4pSAIFNoZWxsU3RlcCAobmFtZXNwYWNlOiBwaXBlbGluZXM6c2hlbGxzdGVwKSDilIDilIBcbiAgU0hFTExfQURESVRJT05BTF9JTlBVVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpzaGVsbHN0ZXA6YWRkaXRpb25hbGlucHV0cycsXG4gIFNIRUxMX0NPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmNvbW1hbmRzJyxcbiAgU0hFTExfRU5WOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmVudicsXG4gIFNIRUxMX0VOVl9GUk9NX0NGTl9PVVRQVVRTOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmVudmZyb21jZm5vdXRwdXRzJyxcbiAgU0hFTExfSU5QVVQ6ICdhd3M6Y2RrOnBpcGVsaW5lczpzaGVsbHN0ZXA6aW5wdXQnLFxuICBTSEVMTF9JTlNUQUxMX0NPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmluc3RhbGxjb21tYW5kcycsXG4gIFNIRUxMX1BSSU1BUllfT1VUUFVUX0RJUkVDVE9SWTogJ2F3czpjZGs6cGlwZWxpbmVzOnNoZWxsc3RlcDpwcmltYXJ5b3V0cHV0ZGlyZWN0b3J5JyxcblxuICAvLyDilIDilIAgQnVpbGRFbnZpcm9ubWVudCAobmFtZXNwYWNlOiBjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudCkg4pSA4pSAXG4gIFBSSVZJTEVHRUQ6ICdhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OnByaXZpbGVnZWQnLFxuICBCVUlMRF9JTUFHRTogJ2F3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6YnVpbGRpbWFnZScsXG4gIENFUlRJRklDQVRFOiAnYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpjZXJ0aWZpY2F0ZScsXG4gIENPTVBVVEVfVFlQRTogJ2F3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6Y29tcHV0ZXR5cGUnLFxuICBET0NLRVJfU0VSVkVSOiAnYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpkb2NrZXJzZXJ2ZXInLFxuICBFTlZJUk9OTUVOVF9WQVJJQUJMRVM6ICdhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OmVudmlyb25tZW50dmFyaWFibGVzJyxcbiAgRkxFRVQ6ICdhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OmZsZWV0JyxcblxuICAvLyDilIDilIAgTmV0d29yayBjb25maWd1cmF0aW9uIChuYW1lc3BhY2U6IGVjMjpuZXR3b3JrKSDilIDilIBcbiAgTkVUV09SS19UWVBFOiAnYXdzOmNkazplYzI6bmV0d29yazp0eXBlJyxcbiAgTkVUV09SS19WUENfSUQ6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnZwY2lkJyxcbiAgTkVUV09SS19TVUJORVRfSURTOiAnYXdzOmNkazplYzI6bmV0d29yazpzdWJuZXRpZHMnLFxuICBORVRXT1JLX1NVQk5FVF9UWVBFOiAnYXdzOmNkazplYzI6bmV0d29yazpzdWJuZXR0eXBlJyxcbiAgTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVM6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOmF2YWlsYWJpbGl0eXpvbmVzJyxcbiAgTkVUV09SS19TVUJORVRfR1JPVVBfTkFNRTogJ2F3czpjZGs6ZWMyOm5ldHdvcms6c3VibmV0Z3JvdXBuYW1lJyxcbiAgTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFM6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnNlY3VyaXR5Z3JvdXBpZHMnLFxuICBORVRXT1JLX1RBR1M6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnRhZ3MnLFxuICBORVRXT1JLX1ZQQ19OQU1FOiAnYXdzOmNkazplYzI6bmV0d29yazp2cGNuYW1lJyxcbiAgTkVUV09SS19SRUdJT046ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnJlZ2lvbicsXG5cbiAgLy8g4pSA4pSAIElBTSByb2xlIGNvbmZpZ3VyYXRpb24gKG5hbWVzcGFjZTogaWFtOnJvbGUpIOKUgOKUgFxuICBST0xFX1RZUEU6ICdhd3M6Y2RrOmlhbTpyb2xlOnR5cGUnLFxuICBST0xFX0FSTjogJ2F3czpjZGs6aWFtOnJvbGU6cm9sZWFybicsXG4gIFJPTEVfTkFNRTogJ2F3czpjZGs6aWFtOnJvbGU6cm9sZW5hbWUnLFxuICBST0xFX01VVEFCTEU6ICdhd3M6Y2RrOmlhbTpyb2xlOm11dGFibGUnLFxuXG4gIC8vIOKUgOKUgCBTZWN1cml0eSBncm91cCBjb25maWd1cmF0aW9uIChuYW1lc3BhY2U6IGVjMjpzZWN1cml0eWdyb3VwKSDilIDilIBcbiAgU0VDVVJJVFlfR1JPVVBfVFlQRTogJ2F3czpjZGs6ZWMyOnNlY3VyaXR5Z3JvdXA6dHlwZScsXG4gIFNFQ1VSSVRZX0dST1VQX0lEUzogJ2F3czpjZGs6ZWMyOnNlY3VyaXR5Z3JvdXA6c2VjdXJpdHlncm91cGlkcycsXG4gIFNFQ1VSSVRZX0dST1VQX01VVEFCTEU6ICdhd3M6Y2RrOmVjMjpzZWN1cml0eWdyb3VwOm11dGFibGUnLFxuICBTRUNVUklUWV9HUk9VUF9OQU1FOiAnYXdzOmNkazplYzI6c2VjdXJpdHlncm91cDpzZWN1cml0eWdyb3VwbmFtZScsXG4gIFNFQ1VSSVRZX0dST1VQX1ZQQ19JRDogJ2F3czpjZGs6ZWMyOnNlY3VyaXR5Z3JvdXA6dnBjaWQnLFxuXG4gIC8vIOKUgOKUgCBOb3RpZmljYXRpb25zIChuYW1lc3BhY2U6IG5vdGlmaWNhdGlvbnMpIOKUgOKUgFxuICBOT1RJRklDQVRJT05fVE9QSUNfQVJOOiAnYXdzOmNkazpub3RpZmljYXRpb25zOnRvcGljOmFybicsXG4gIE5PVElGSUNBVElPTl9FVkVOVFM6ICdhd3M6Y2RrOm5vdGlmaWNhdGlvbnM6ZXZlbnRzJyxcblxuICAvLyDilIDilIAgUGlwZWxpbmUgb3BlcmF0aW9ucyAobmFtZXNwYWNlOiBvcGVyYXRpb25zIOKAlCBjdXN0b20gc3ludGggaW4gUGlwZWxpbmVCdWlsZGVyKSDilIDilIBcbiAgRU5BQkxFX0VYRUNVVElPTl9FVkVOVFM6ICdhd3M6Y2RrOm9wZXJhdGlvbnM6ZXhlY3V0aW9uZXZlbnRzJyxcbiAgRU5BQkxFX01FVFJJQ1M6ICdhd3M6Y2RrOm9wZXJhdGlvbnM6bWV0cmljcycsXG4gIEFSVElGQUNUX1JFVEVOVElPTl9EQVlTOiAnYXdzOmNkazpvcGVyYXRpb25zOmFydGlmYWN0cmV0ZW50aW9uZGF5cycsXG4gIFBJUEVMSU5FX1ZBUklBQkxFUzogJ2F3czpjZGs6b3BlcmF0aW9uczp2YXJpYWJsZXMnLFxuXG4gIC8vIOKUgOKUgCBFbmNyeXB0aW9uIChuYW1lc3BhY2U6IGVuY3J5cHRpb24g4oCUIGN1c3RvbSBzeW50aCBpbiBQaXBlbGluZUJ1aWxkZXIpIOKUgOKUgFxuICBLTVNfS0VZX0FSTjogJ2F3czpjZGs6ZW5jcnlwdGlvbjprbXNrZXlhcm4nLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBQcmVmaXggZm9yIEFXUyBDREsgbWV0YWRhdGEga2V5cy5cbiAqIEtleXMgd2l0aCB0aGlzIHByZWZpeCBhcmUgaGFuZGxlZCBieSB0aGUgbWV0YWRhdGEgZXh0cmFjdGlvbiBmdW5jdGlvbnNcbiAqIChtZXRhZGF0YUZvckNvZGVQaXBlbGluZSwgZXRjLikgYW5kIHNob3VsZCBOT1QgYmUgcGFzc2VkIGFzIENvZGVCdWlsZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDREtfTUVUQURBVEFfUFJFRklYID0gJ2F3czpjZGs6JzsiXX0=
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9waXBlbGluZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBc0MsTUFBTSw0QkFBNEIsQ0FBQztBQUV6Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTTtJQUNaLHdHQUF3RztJQUN4RyxJQUFJLEVBQUUsTUFBTTtJQUNaLGdHQUFnRztJQUNoRyxRQUFRLEVBQUUsVUFBVTtDQUNaLENBQUM7QUFJWDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLDRCQUE0QixDQUFDO0FBRTVFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuXG4vLyBSZS1leHBvcnQgc2hhcmVkIHR5cGVzIGZyb20gYXBpLWNvcmUgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBDb21wdXRlVHlwZSwgUGx1Z2luVHlwZSwgdHlwZSBNZXRhRGF0YVR5cGUsIHR5cGUgVmlzaWJpbGl0eSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuLyoqXG4gKiBQaXBlbGluZSB0cmlnZ2VyIGJlaGF2aW9yLlxuICpcbiAqIEBwcm9wZXJ0eSBOT05FIC0gTWFudWFsIHRyaWdnZXIgb25seSwgcGlwZWxpbmUgZG9lcyBub3Qgc3RhcnQgYXV0b21hdGljYWxseVxuICogQHByb3BlcnR5IEFVVE8gLSBBdXRvbWF0aWMgdHJpZ2dlciBvbiBzb3VyY2UgY2hhbmdlcyAoUzMvR2l0SHViOiBwb2xsaW5nLCBDb2RlU3RhcjogcHVzaC1iYXNlZCB3ZWJob29rKVxuICovXG5leHBvcnQgY29uc3QgVHJpZ2dlclR5cGUgPSB7XG4gIE5PTkU6ICdOT05FJyxcbiAgLyoqIEF1dG9tYXRpYyB0cmlnZ2VyIG9uIHNvdXJjZSBjaGFuZ2VzLiBVc2VzIHBvbGxpbmcgZm9yIFMzL0dpdEh1YiwgcHVzaC1iYXNlZCB3ZWJob29rIGZvciBDb2RlU3Rhci4gKi9cbiAgQVVUTzogJ0FVVE8nLFxuICAvKiogU2NoZWR1bGVkIHRyaWdnZXIgdmlhIEV2ZW50QnJpZGdlIHJ1bGUuIFJlcXVpcmVzIGEgY3JvbiBleHByZXNzaW9uIGluIHRoZSBzb3VyY2Ugb3B0aW9ucy4gKi9cbiAgU0NIRURVTEU6ICdTQ0hFRFVMRScsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgVHJpZ2dlclR5cGUgPSAodHlwZW9mIFRyaWdnZXJUeXBlKVtrZXlvZiB0eXBlb2YgVHJpZ2dlclR5cGVdO1xuXG5cbi8qKlxuICogTWV0YWRhdGEga2V5IGNvbnN0YW50cyDigJQgcmUtZXhwb3J0ZWQgZnJvbSBgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmVgLCB3aGljaFxuICogb3ducyB0aGUgc2luZ2xlIGNhdGFsb2cgdGhlIGJyb3dzZXIncyBtZXRhZGF0YSBwaWNrZXIgcmVhZHMgYXMgd2VsbC4gSW1wb3J0aW5nXG4gKiBgTWV0YWRhdGFLZXlzYCBmcm9tIGBAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlYCBrZWVwcyB3b3JraW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZXRhZGF0YSA9IHtcbiAqICAgW01ldGFkYXRhS2V5cy5TRUxGX01VVEFUSU9OXTogdHJ1ZSxcbiAqICAgW01ldGFkYXRhS2V5cy5QVUJMSVNIX0FTU0VUU19JTl9QQVJBTExFTF06IHRydWVcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHsgTWV0YWRhdGFLZXlzLCB0eXBlIE1ldGFkYXRhS2V5IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFByZWZpeCBmb3IgQVdTIENESyBtZXRhZGF0YSBrZXlzLlxuICogS2V5cyB3aXRoIHRoaXMgcHJlZml4IGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRhZGF0YSBleHRyYWN0aW9uIGZ1bmN0aW9uc1xuICogKG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lLCBldGMuKSBhbmQgc2hvdWxkIE5PVCBiZSBwYXNzZWQgYXMgQ29kZUJ1aWxkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IENES19NRVRBREFUQV9QUkVGSVggPSAnYXdzOmNkazonOyJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -41,5 +41,4 @@ export * from './core/security-group-types.js';
|
|
|
41
41
|
export * from './core/id-generator.js';
|
|
42
42
|
export { replaceNonAlphanumeric, extractMetadataEnv } from './core/metadata-helpers.js';
|
|
43
43
|
export * from './pipeline/plugin-spec.js';
|
|
44
|
-
export { ErrorCode, createLogger, } from '@pipeline-builder/api-core';
|
|
45
44
|
export * from './template/index.js';
|
package/lib/index.js
CHANGED
|
@@ -46,8 +46,6 @@ export * from './core/id-generator.js';
|
|
|
46
46
|
export { replaceNonAlphanumeric, extractMetadataEnv } from './core/metadata-helpers.js';
|
|
47
47
|
// Plugin domain type (the synth-time authoring types live in the `/cdk` entry)
|
|
48
48
|
export * from './pipeline/plugin-spec.js';
|
|
49
|
-
// Re-export from api-core (only items consumed by external packages)
|
|
50
|
-
export { ErrorCode, createLogger, } from '@pipeline-builder/api-core';
|
|
51
49
|
// Template engine — synth-time scripting for pipeline config + plugin specs
|
|
52
50
|
export * from './template/index.js';
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUVILGdCQUFnQjtBQUNoQixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXpFLDhCQUE4QjtBQUM5QixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhGLCtFQUErRTtBQUMvRSxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLDRFQUE0RTtBQUM1RSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQG1vZHVsZSBAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlXG4gKlxuICogQXBwbGljYXRpb24gY29uZmlndXJhdGlvbiwgcGlwZWxpbmUgZG9tYWluIHR5cGVzLCBhbmQgdGhlIHRlbXBsYXRlIGVuZ2luZS5cbiAqXG4gKiBUaGlzIGVudHJ5IHBvaW50IGlzIGRlbGliZXJhdGVseSBGUkVFIG9mIGBhd3MtY2RrLWxpYmAuIFRoZSBDREsgY29uc3RydWN0cyBsaXZlXG4gKiBiZWhpbmQgYSBzZXBhcmF0ZSBzdWJwYXRoIOKAlCBgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZS9jZGtgIOKAlCBiZWNhdXNlIHRoZVxuICogQVBJIHNlcnZpY2VzIGNvbnN1bWUgdGhpcyBwYWNrYWdlIGZvciBjb25maWcgYW5kIGRvbWFpbiB0eXBlcyBvbmx5LCBhbmQgYW5cbiAqIGBleHBvcnQgKmAgb2YgdGhlIGNvbnN0cnVjdHMgZnJvbSBoZXJlIHB1dCB0aGUgd2hvbGUgb2YgYGF3cy1jZGstbGliYCBvbiB0aGVcbiAqIGltcG9ydCBncmFwaCBvZiBldmVyeSBzZXJ2aWNlIHRoYXQgcmVhZCBzbyBtdWNoIGFzIGEgcG9ydCBudW1iZXIuIEFueXRoaW5nIHRoYXRcbiAqIGltcG9ydHMgYGF3cy1jZGstbGliYCwgYXQgdHlwZSBsZXZlbCBvciB2YWx1ZSBsZXZlbCwgYmVsb25ncyBpbiBgY2RrLnRzYC5cbiAqXG4gKiAqKkNvbmZpZyoqXG4gKiAtIENvbmZpZyDigJQgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBzaW5nbGV0b24gKGVudmlyb25tZW50LWRyaXZlbilcbiAqIC0gQ29uZmlnVHlwZXMg4oCUIHR5cGVkIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlc1xuICpcbiAqICoqVHlwZXMqKlxuICogLSBQaXBlbGluZVR5cGUsIENvbXB1dGVUeXBlLCBQbHVnaW5UeXBlLCBWaXNpYmlsaXR5IOKAlCBwaXBlbGluZSBkb21haW4gZW51bXNcbiAqIC0gUm9sZVR5cGVzLCBTZWN1cml0eUdyb3VwVHlwZXMg4oCUIGluZnJhc3RydWN0dXJlIHR5cGUgZGVmaW5pdGlvbnNcbiAqIC0gUGx1Z2luU3BlYyDigJQgYSBwbHVnaW4ncyBkZWNsYXJlZCBjb250cmFjdFxuICogLSBJZEdlbmVyYXRvciDigJQgZGV0ZXJtaW5pc3RpYyBJRCBnZW5lcmF0aW9uXG4gKlxuICogKipIZWxwZXJzKipcbiAqIC0gcmVwbGFjZU5vbkFscGhhbnVtZXJpYywgZXh0cmFjdE1ldGFkYXRhRW52IOKAlCBzdHJpbmcgYW5kIG1ldGFkYXRhIHV0aWxpdGllc1xuICpcbiAqICoqUmUtZXhwb3J0cyBmcm9tIGFwaS1jb3JlKipcbiAqIC0gRXJyb3JDb2RlLCBjcmVhdGVMb2dnZXJcbiAqXG4gKiBUaGUgUG9zdGdyZXMvRHJpenpsZSBkYXRhIGxheWVyIChkYiwgc2NoZW1hLCBDcnVkU2VydmljZSwgcXVlcnkgYnVpbGRlcnMsXG4gKiBmaWx0ZXIvY29tcGxpYW5jZSB0eXBlcywgZXRjLikgaXMgTk9UIHJlLWV4cG9ydGVkIGhlcmUg4oCUIGltcG9ydCB0aG9zZVxuICogZGlyZWN0bHkgZnJvbSBgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YWAuXG4gKi9cblxuLy8gQ29uZmlndXJhdGlvblxuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvYXBwLWNvbmZpZy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9jb25maWctdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvZW50aXRsZW1lbnRzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnL3NlcnZpY2UtY2xpZW50LmpzJztcbmV4cG9ydCB7IHBhcnNlUGxhdGZvcm1CYXNlVXJsIH0gZnJvbSAnLi9jb25maWcvaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzJztcblxuLy8gQ29yZSB0eXBlcyAocHVibGljIHN1cmZhY2UpXG5leHBvcnQgKiBmcm9tICcuL2NvcmUvcGlwZWxpbmUtdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL3JvbGUtdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL3NlY3VyaXR5LWdyb3VwLXR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9pZC1nZW5lcmF0b3IuanMnO1xuZXhwb3J0IHsgcmVwbGFjZU5vbkFscGhhbnVtZXJpYywgZXh0cmFjdE1ldGFkYXRhRW52IH0gZnJvbSAnLi9jb3JlL21ldGFkYXRhLWhlbHBlcnMuanMnO1xuXG4vLyBQbHVnaW4gZG9tYWluIHR5cGUgKHRoZSBzeW50aC10aW1lIGF1dGhvcmluZyB0eXBlcyBsaXZlIGluIHRoZSBgL2Nka2AgZW50cnkpXG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3BsdWdpbi1zcGVjLmpzJztcblxuLy8gVGVtcGxhdGUgZW5naW5lIOKAlCBzeW50aC10aW1lIHNjcmlwdGluZyBmb3IgcGlwZWxpbmUgY29uZmlnICsgcGx1Z2luIHNwZWNzXG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlL2luZGV4LmpzJztcbiJdfQ==
|
package/lib/template/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { tokenize, hasTemplate, TokenizerError, MAX_FIELD_SIZE_BYTES, MAX_PATH_D
|
|
|
2
2
|
export { resolve, lookupPath, dependencies, type Scope, type EvalError, } from './evaluator.js';
|
|
3
3
|
export { walkAndBind, type WalkEntry, type FieldPredicate, } from './walker.js';
|
|
4
4
|
export { topoSort, type TopoNode, type TopoResult, } from './topo-sort.js';
|
|
5
|
-
export { validateTemplates, detectCycles, allowedScopeRoots, type TemplateError, type
|
|
5
|
+
export { validateTemplates, detectCycles, allowedScopeRoots, type TemplateError, type TemplateValidationResult, } from './validate.js';
|
|
6
6
|
import { ErrorCode } from '@pipeline-builder/api-core';
|
|
7
7
|
import { type Scope } from './evaluator.js';
|
|
8
8
|
import { type FieldPredicate } from './walker.js';
|
package/lib/template/index.js
CHANGED
|
@@ -102,4 +102,4 @@ export function resolveSelfReferencing(doc, scope, isTemplatable, fieldToScopePa
|
|
|
102
102
|
}
|
|
103
103
|
return { errors };
|
|
104
104
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsR0FLdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEdBR2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsV0FBVyxHQUdaLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxRQUFRLEdBR1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsR0FHbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsd0VBQXdFO0FBRXhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBTS9EOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEdBQU0sRUFDTixLQUFZLEVBQ1osYUFBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztJQUMzQyw0RUFBNEU7SUFDNUUsNkVBQTZFO0lBQzdFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0gs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QyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsR0FBRyxHQUFrRCxDQUFDO2dCQUM3RCxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxvQkFBb0I7b0JBQzlDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztvQkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2lCQUNiLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7XG4gIHRva2VuaXplLFxuICBoYXNUZW1wbGF0ZSxcbiAgVG9rZW5pemVyRXJyb3IsXG4gIE1BWF9GSUVMRF9TSVpFX0JZVEVTLFxuICBNQVhfUEFUSF9ERVBUSCxcbiAgTUFYX0lERU5USUZJRVJfTEVOR1RILFxuICB0eXBlIFRva2VuLFxuICB0eXBlIExpdGVyYWxUb2tlbixcbiAgdHlwZSBFeHByVG9rZW4sXG4gIHR5cGUgU291cmNlUG9zaXRpb24sXG59IGZyb20gJy4vdG9rZW5pemVyLmpzJztcblxuZXhwb3J0IHtcbiAgcmVzb2x2ZSxcbiAgbG9va3VwUGF0aCxcbiAgZGVwZW5kZW5jaWVzLFxuICB0eXBlIFNjb3BlLFxuICB0eXBlIEV2YWxFcnJvcixcbn0gZnJvbSAnLi9ldmFsdWF0b3IuanMnO1xuXG5leHBvcnQge1xuICB3YWxrQW5kQmluZCxcbiAgdHlwZSBXYWxrRW50cnksXG4gIHR5cGUgRmllbGRQcmVkaWNhdGUsXG59IGZyb20gJy4vd2Fsa2VyLmpzJztcblxuZXhwb3J0IHtcbiAgdG9wb1NvcnQsXG4gIHR5cGUgVG9wb05vZGUsXG4gIHR5cGUgVG9wb1Jlc3VsdCxcbn0gZnJvbSAnLi90b3BvLXNvcnQuanMnO1xuXG5leHBvcnQge1xuICB2YWxpZGF0ZVRlbXBsYXRlcyxcbiAgZGV0ZWN0Q3ljbGVzLFxuICBhbGxvd2VkU2NvcGVSb290cyxcbiAgdHlwZSBUZW1wbGF0ZUVycm9yLFxuICB0eXBlIFZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4vdmFsaWRhdGUuanMnO1xuXG4vLyAtLSBDb252ZW5pZW5jZTogaGlnaC1sZXZlbCByZXNvbHZlKCkgdGhhdCB3YWxrcyArIHJlc29sdmVzICsgbWVhc3VyZXNcblxuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgcmVzb2x2ZSBhcyBldmFsdWF0b3JSZXNvbHZlLCB0eXBlIFNjb3BlIH0gZnJvbSAnLi9ldmFsdWF0b3IuanMnO1xuaW1wb3J0IHsgdG9wb1NvcnQgfSBmcm9tICcuL3RvcG8tc29ydC5qcyc7XG5pbXBvcnQgeyB3YWxrQW5kQmluZCwgdHlwZSBGaWVsZFByZWRpY2F0ZSB9IGZyb20gJy4vd2Fsa2VyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVzdWx0IHtcbiAgZXJyb3JzOiBBcnJheTx7IGNvZGU6IEVycm9yQ29kZTsgbWVzc2FnZTogc3RyaW5nOyBmaWVsZD86IHN0cmluZzsgcGF0aD86IHN0cmluZyB9Pjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFsbCB0ZW1wbGF0ZXMgaW5zaWRlIGBkb2NgIGJ5IG11dGF0aW5nIHN0cmluZyBmaWVsZHMgaW4gcGxhY2UuXG4gKiBgZG9jYCBpcyB0cmVhdGVkIGFzIG9wYXF1ZSDigJQgb25seSBzdHJpbmcgZmllbGRzIHRoYXQgbWF0Y2ggYGlzVGVtcGxhdGFibGVgXG4gKiBhcmUgcmV3cml0dGVuLiBSZXR1cm5zIGNvbGxlY3RlZCBlcnJvcnMgKGVtcHR5IGFycmF5IG9uIHN1Y2Nlc3MpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRlbXBsYXRlczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZG9jOiBULFxuICBzY29wZTogU2NvcGUsXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuKTogUmVzb2x2ZVJlc3VsdCB7XG4gIGNvbnN0IGVycm9yczogUmVzb2x2ZVJlc3VsdFsnZXJyb3JzJ10gPSBbXTtcbiAgLy8gaW5jbHVkZUxpdGVyYWxPbmx5OiBsaXRlcmFsLW9ubHkgZmllbGRzIChhIGJhcmUgYHt7e3tgIGVzY2FwZSkgc3RpbGwgbmVlZFxuICAvLyByZXdyaXRpbmcgc28gdGhlIHRva2VuaXplcidzIGB7e3t7YCDihpIgYHt7YCB1bmVzY2FwZSBsYW5kcyBpbiB0aGUgZG9jdW1lbnQuXG4gIGNvbnN0IGVudHJpZXMgPSB3YWxrQW5kQmluZChkb2MsIGlzVGVtcGxhdGFibGUsIHRydWUpO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsdWUgPSBldmFsdWF0b3JSZXNvbHZlKGVudHJ5LnRva2Vucywgc2NvcGUsIGVudHJ5LmZpZWxkKTtcbiAgICAgIGVudHJ5LnNldCh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBlID0gZXJyIGFzIEVycm9yICYgeyBjb2RlPzogRXJyb3JDb2RlOyBwYXRoPzogc3RyaW5nIH07XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6IGUuY29kZSA/PyBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgZmllbGQ6IGVudHJ5LmZpZWxkLFxuICAgICAgICBwYXRoOiBlLnBhdGgsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgZXJyb3JzIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHNlbGYtcmVmZXJlbmNpbmcgZG9jdW1lbnQgKGUuZy4gcGlwZWxpbmUuanNvbiB3aGVyZVxuICogbWV0YWRhdGEgZmllbGRzIHJlZmVyZW5jZSBlYWNoIG90aGVyKS4gVG9wb2xvZ2ljYWxseSBvcmRlcnMgdGhlXG4gKiByZXNvbHV0aW9uIHNvIGRlcGVuZGVuY2llcyBjb21lIGZpcnN0LiBNdXRhdGVzIGBkb2NgIGluIHBsYWNlLlxuICpcbiAqIGBmaWVsZFRvU2NvcGVQYXRoYCBtYXBzIGVhY2ggZmllbGQgKGUuZy4gYG1ldGFkYXRhLmVudmApIHRvIHRoZSBzY29wZVxuICogcGF0aCBpdCBwb3B1bGF0ZXMgKHR5cGljYWxseSB0aGUgc2FtZSwgc2FucyBhbnkgYXJyYXkgaW5kaWNlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2VsZlJlZmVyZW5jaW5nPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIHNjb3BlOiBTY29wZSxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGZpZWxkVG9TY29wZVBhdGg6IChmaWVsZDogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsLFxuKTogUmVzb2x2ZVJlc3VsdCB7XG4gIC8vIGluY2x1ZGVMaXRlcmFsT25seTogYSBzZWxmLXJlZmVyZW5jaW5nIGZpZWxkIHRoYXQgaXMgb25seSBhIGB7e3t7YCBlc2NhcGVcbiAgLy8gc3RpbGwgbmVlZHMgaXRzIHVuZXNjYXBlIHdyaXR0ZW4gYmFjayAoc2FtZSByYXRpb25hbGUgYXMgcmVzb2x2ZVRlbXBsYXRlcykuXG4gIGNvbnN0IGVudHJpZXMgPSB3YWxrQW5kQmluZChkb2MsIGlzVGVtcGxhdGFibGUsIHRydWUpO1xuICAvLyBCdWlsZCB0b3BvIG5vZGVzIGtleWVkIGJ5IHRhcmdldCBzY29wZSBwYXRoXG4gIGNvbnN0IG5vZGVzID0gZW50cmllc1xuICAgIC5tYXAoZSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBmaWVsZFRvU2NvcGVQYXRoKGUuZmllbGQpO1xuICAgICAgaWYgKCFrZXkpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgZGVwczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgdCBvZiBlLnRva2VucykgaWYgKHQua2luZCA9PT0gJ2V4cHInKSBkZXBzLnB1c2godC5wYXRoLmpvaW4oJy4nKSk7XG4gICAgICByZXR1cm4geyBrZXksIGRlcHMsIGVudHJ5OiBlIH07XG4gICAgfSlcbiAgICAuZmlsdGVyKChuKTogbiBpcyBOb25OdWxsYWJsZTx0eXBlb2Ygbj4gPT4gbiAhPT0gbnVsbCk7XG5cbiAgY29uc3QgeyBvcmRlcmVkLCBjeWNsZXMgfSA9IHRvcG9Tb3J0KG5vZGVzLm1hcChuID0+ICh7IGtleTogbi5rZXksIGRlcHM6IG4uZGVwcyB9KSkpO1xuICBjb25zdCBlcnJvcnM6IFJlc29sdmVSZXN1bHRbJ2Vycm9ycyddID0gW107XG4gIGlmIChjeWNsZXMubGVuZ3RoKSB7XG4gICAgZm9yIChjb25zdCBjIG9mIGN5Y2xlcykge1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfQ1lDTEUsXG4gICAgICAgIG1lc3NhZ2U6IGBUZW1wbGF0ZSBjeWNsZSBkZXRlY3RlZDogJHtjLmpvaW4oJyAtPiAnKX1gLFxuICAgICAgICBwYXRoOiBjLmpvaW4oJyAtPiAnKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4geyBlcnJvcnMgfTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgaW4gdG9wbyBvcmRlcjsgbXVsdGlwbGUgZW50cmllcyBtYXkgc2hhcmUgYSBzY29wZSBrZXkgKGUuZy4gb25lXG4gIC8vIHBpcGVsaW5lIGZpZWxkIGNvdWxkIG1hcCB0byB0aGUgc2FtZSBzY29wZSBwYXRoIOKAlCB1bmxpa2VseSBoZXJlKSwgc29cbiAgLy8gaXRlcmF0ZSBhbGwgZW50cmllcyB3aG9zZSBrZXkgPT0gb3JkZXJlZFtpXS5cbiAgY29uc3QgYnlLZXkgPSBuZXcgTWFwPHN0cmluZywgdHlwZW9mIG5vZGVzPigpO1xuICBmb3IgKGNvbnN0IG4gb2Ygbm9kZXMpIHtcbiAgICBjb25zdCBsaXN0ID0gYnlLZXkuZ2V0KG4ua2V5KSA/PyBbXTtcbiAgICBsaXN0LnB1c2gobik7XG4gICAgYnlLZXkuc2V0KG4ua2V5LCBsaXN0KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IG9mIG9yZGVyZWQpIHtcbiAgICBmb3IgKGNvbnN0IG4gb2YgYnlLZXkuZ2V0KGtleSkgPz8gW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZhbHVhdG9yUmVzb2x2ZShuLmVudHJ5LnRva2Vucywgc2NvcGUsIG4uZW50cnkuZmllbGQpO1xuICAgICAgICBuLmVudHJ5LnNldCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgZSA9IGVyciBhcyBFcnJvciAmIHsgY29kZT86IEVycm9yQ29kZTsgcGF0aD86IHN0cmluZyB9O1xuICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgY29kZTogZS5jb2RlID8/IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgZmllbGQ6IG4uZW50cnkuZmllbGQsXG4gICAgICAgICAgcGF0aDogZS5wYXRoLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgZXJyb3JzIH07XG59XG5cbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsR0FLdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEdBR2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsV0FBVyxHQUdaLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxRQUFRLEdBR1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsR0FHbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsd0VBQXdFO0FBRXhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBTS9EOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEdBQU0sRUFDTixLQUFZLEVBQ1osYUFBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztJQUMzQyw0RUFBNEU7SUFDNUUsNkVBQTZFO0lBQzdFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLENBQUMsR0FBRyxHQUFrRCxDQUFDO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLG9CQUFvQjtnQkFDOUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO2dCQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTthQUNiLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxHQUFNLEVBQ04sS0FBWSxFQUNaLGFBQTZCLEVBQzdCLGdCQUFrRDtJQUVsRCw0RUFBNEU7SUFDNUUsOEVBQThFO0lBQzlFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELDhDQUE4QztJQUM5QyxNQUFNLEtBQUssR0FBRyxPQUFPO1NBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNQLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU07Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNqQyxDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQThCLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFFekQsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLElBQUksRUFBRSxTQUFTLENBQUMsY0FBYztnQkFDOUIsT0FBTyxFQUFFLDRCQUE0QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNyRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLHVFQUF1RTtJQUN2RSwrQ0FBK0M7SUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFDOUMsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsR0FBRyxHQUFrRCxDQUFDO2dCQUM3RCxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxvQkFBb0I7b0JBQzlDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztvQkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2lCQUNiLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7XG4gIHRva2VuaXplLFxuICBoYXNUZW1wbGF0ZSxcbiAgVG9rZW5pemVyRXJyb3IsXG4gIE1BWF9GSUVMRF9TSVpFX0JZVEVTLFxuICBNQVhfUEFUSF9ERVBUSCxcbiAgTUFYX0lERU5USUZJRVJfTEVOR1RILFxuICB0eXBlIFRva2VuLFxuICB0eXBlIExpdGVyYWxUb2tlbixcbiAgdHlwZSBFeHByVG9rZW4sXG4gIHR5cGUgU291cmNlUG9zaXRpb24sXG59IGZyb20gJy4vdG9rZW5pemVyLmpzJztcblxuZXhwb3J0IHtcbiAgcmVzb2x2ZSxcbiAgbG9va3VwUGF0aCxcbiAgZGVwZW5kZW5jaWVzLFxuICB0eXBlIFNjb3BlLFxuICB0eXBlIEV2YWxFcnJvcixcbn0gZnJvbSAnLi9ldmFsdWF0b3IuanMnO1xuXG5leHBvcnQge1xuICB3YWxrQW5kQmluZCxcbiAgdHlwZSBXYWxrRW50cnksXG4gIHR5cGUgRmllbGRQcmVkaWNhdGUsXG59IGZyb20gJy4vd2Fsa2VyLmpzJztcblxuZXhwb3J0IHtcbiAgdG9wb1NvcnQsXG4gIHR5cGUgVG9wb05vZGUsXG4gIHR5cGUgVG9wb1Jlc3VsdCxcbn0gZnJvbSAnLi90b3BvLXNvcnQuanMnO1xuXG5leHBvcnQge1xuICB2YWxpZGF0ZVRlbXBsYXRlcyxcbiAgZGV0ZWN0Q3ljbGVzLFxuICBhbGxvd2VkU2NvcGVSb290cyxcbiAgdHlwZSBUZW1wbGF0ZUVycm9yLFxuICB0eXBlIFRlbXBsYXRlVmFsaWRhdGlvblJlc3VsdCxcbn0gZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5cbi8vIC0tIENvbnZlbmllbmNlOiBoaWdoLWxldmVsIHJlc29sdmUoKSB0aGF0IHdhbGtzICsgcmVzb2x2ZXMgKyBtZWFzdXJlc1xuXG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyByZXNvbHZlIGFzIGV2YWx1YXRvclJlc29sdmUsIHR5cGUgU2NvcGUgfSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0LmpzJztcbmltcG9ydCB7IHdhbGtBbmRCaW5kLCB0eXBlIEZpZWxkUHJlZGljYXRlIH0gZnJvbSAnLi93YWxrZXIuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVSZXN1bHQge1xuICBlcnJvcnM6IEFycmF5PHsgY29kZTogRXJyb3JDb2RlOyBtZXNzYWdlOiBzdHJpbmc7IGZpZWxkPzogc3RyaW5nOyBwYXRoPzogc3RyaW5nIH0+O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYWxsIHRlbXBsYXRlcyBpbnNpZGUgYGRvY2AgYnkgbXV0YXRpbmcgc3RyaW5nIGZpZWxkcyBpbiBwbGFjZS5cbiAqIGBkb2NgIGlzIHRyZWF0ZWQgYXMgb3BhcXVlIOKAlCBvbmx5IHN0cmluZyBmaWVsZHMgdGhhdCBtYXRjaCBgaXNUZW1wbGF0YWJsZWBcbiAqIGFyZSByZXdyaXR0ZW4uIFJldHVybnMgY29sbGVjdGVkIGVycm9ycyAoZW1wdHkgYXJyYXkgb24gc3VjY2VzcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGVtcGxhdGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIHNjb3BlOiBTY29wZSxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4pOiBSZXNvbHZlUmVzdWx0IHtcbiAgY29uc3QgZXJyb3JzOiBSZXNvbHZlUmVzdWx0WydlcnJvcnMnXSA9IFtdO1xuICAvLyBpbmNsdWRlTGl0ZXJhbE9ubHk6IGxpdGVyYWwtb25seSBmaWVsZHMgKGEgYmFyZSBge3t7e2AgZXNjYXBlKSBzdGlsbCBuZWVkXG4gIC8vIHJld3JpdGluZyBzbyB0aGUgdG9rZW5pemVyJ3MgYHt7e3tgIOKGkiBge3tgIHVuZXNjYXBlIGxhbmRzIGluIHRoZSBkb2N1bWVudC5cbiAgY29uc3QgZW50cmllcyA9IHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSwgdHJ1ZSk7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGV2YWx1YXRvclJlc29sdmUoZW50cnkudG9rZW5zLCBzY29wZSwgZW50cnkuZmllbGQpO1xuICAgICAgZW50cnkuc2V0KHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGUgPSBlcnIgYXMgRXJyb3IgJiB7IGNvZGU/OiBFcnJvckNvZGU7IHBhdGg/OiBzdHJpbmcgfTtcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogZS5jb2RlID8/IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICBmaWVsZDogZW50cnkuZmllbGQsXG4gICAgICAgIHBhdGg6IGUucGF0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgc2VsZi1yZWZlcmVuY2luZyBkb2N1bWVudCAoZS5nLiBwaXBlbGluZS5qc29uIHdoZXJlXG4gKiBtZXRhZGF0YSBmaWVsZHMgcmVmZXJlbmNlIGVhY2ggb3RoZXIpLiBUb3BvbG9naWNhbGx5IG9yZGVycyB0aGVcbiAqIHJlc29sdXRpb24gc28gZGVwZW5kZW5jaWVzIGNvbWUgZmlyc3QuIE11dGF0ZXMgYGRvY2AgaW4gcGxhY2UuXG4gKlxuICogYGZpZWxkVG9TY29wZVBhdGhgIG1hcHMgZWFjaCBmaWVsZCAoZS5nLiBgbWV0YWRhdGEuZW52YCkgdG8gdGhlIHNjb3BlXG4gKiBwYXRoIGl0IHBvcHVsYXRlcyAodHlwaWNhbGx5IHRoZSBzYW1lLCBzYW5zIGFueSBhcnJheSBpbmRpY2VzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTZWxmUmVmZXJlbmNpbmc8VCBleHRlbmRzIG9iamVjdD4oXG4gIGRvYzogVCxcbiAgc2NvcGU6IFNjb3BlLFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgZmllbGRUb1Njb3BlUGF0aDogKGZpZWxkOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwsXG4pOiBSZXNvbHZlUmVzdWx0IHtcbiAgLy8gaW5jbHVkZUxpdGVyYWxPbmx5OiBhIHNlbGYtcmVmZXJlbmNpbmcgZmllbGQgdGhhdCBpcyBvbmx5IGEgYHt7e3tgIGVzY2FwZVxuICAvLyBzdGlsbCBuZWVkcyBpdHMgdW5lc2NhcGUgd3JpdHRlbiBiYWNrIChzYW1lIHJhdGlvbmFsZSBhcyByZXNvbHZlVGVtcGxhdGVzKS5cbiAgY29uc3QgZW50cmllcyA9IHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSwgdHJ1ZSk7XG4gIC8vIEJ1aWxkIHRvcG8gbm9kZXMga2V5ZWQgYnkgdGFyZ2V0IHNjb3BlIHBhdGhcbiAgY29uc3Qgbm9kZXMgPSBlbnRyaWVzXG4gICAgLm1hcChlID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGZpZWxkVG9TY29wZVBhdGgoZS5maWVsZCk7XG4gICAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBkZXBzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCB0IG9mIGUudG9rZW5zKSBpZiAodC5raW5kID09PSAnZXhwcicpIGRlcHMucHVzaCh0LnBhdGguam9pbignLicpKTtcbiAgICAgIHJldHVybiB7IGtleSwgZGVwcywgZW50cnk6IGUgfTtcbiAgICB9KVxuICAgIC5maWx0ZXIoKG4pOiBuIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBuPiA9PiBuICE9PSBudWxsKTtcblxuICBjb25zdCB7IG9yZGVyZWQsIGN5Y2xlcyB9ID0gdG9wb1NvcnQobm9kZXMubWFwKG4gPT4gKHsga2V5OiBuLmtleSwgZGVwczogbi5kZXBzIH0pKSk7XG4gIGNvbnN0IGVycm9yczogUmVzb2x2ZVJlc3VsdFsnZXJyb3JzJ10gPSBbXTtcbiAgaWYgKGN5Y2xlcy5sZW5ndGgpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgY3ljbGVzKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9DWUNMRSxcbiAgICAgICAgbWVzc2FnZTogYFRlbXBsYXRlIGN5Y2xlIGRldGVjdGVkOiAke2Muam9pbignIC0+ICcpfWAsXG4gICAgICAgIHBhdGg6IGMuam9pbignIC0+ICcpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGVycm9ycyB9O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBpbiB0b3BvIG9yZGVyOyBtdWx0aXBsZSBlbnRyaWVzIG1heSBzaGFyZSBhIHNjb3BlIGtleSAoZS5nLiBvbmVcbiAgLy8gcGlwZWxpbmUgZmllbGQgY291bGQgbWFwIHRvIHRoZSBzYW1lIHNjb3BlIHBhdGgg4oCUIHVubGlrZWx5IGhlcmUpLCBzb1xuICAvLyBpdGVyYXRlIGFsbCBlbnRyaWVzIHdob3NlIGtleSA9PSBvcmRlcmVkW2ldLlxuICBjb25zdCBieUtleSA9IG5ldyBNYXA8c3RyaW5nLCB0eXBlb2Ygbm9kZXM+KCk7XG4gIGZvciAoY29uc3QgbiBvZiBub2Rlcykge1xuICAgIGNvbnN0IGxpc3QgPSBieUtleS5nZXQobi5rZXkpID8/IFtdO1xuICAgIGxpc3QucHVzaChuKTtcbiAgICBieUtleS5zZXQobi5rZXksIGxpc3QpO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2Ygb3JkZXJlZCkge1xuICAgIGZvciAoY29uc3QgbiBvZiBieUtleS5nZXQoa2V5KSA/PyBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBldmFsdWF0b3JSZXNvbHZlKG4uZW50cnkudG9rZW5zLCBzY29wZSwgbi5lbnRyeS5maWVsZCk7XG4gICAgICAgIG4uZW50cnkuc2V0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCBlID0gZXJyIGFzIEVycm9yICYgeyBjb2RlPzogRXJyb3JDb2RlOyBwYXRoPzogc3RyaW5nIH07XG4gICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiBlLmNvZGUgPz8gRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SLFxuICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICBmaWVsZDogbi5lbnRyeS5maWVsZCxcbiAgICAgICAgICBwYXRoOiBlLnBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4geyBlcnJvcnMgfTtcbn1cblxuIl19
|
|
@@ -9,7 +9,7 @@ export interface TemplateError {
|
|
|
9
9
|
path?: string;
|
|
10
10
|
cycle?: string[];
|
|
11
11
|
}
|
|
12
|
-
export interface
|
|
12
|
+
export interface TemplateValidationResult {
|
|
13
13
|
valid: boolean;
|
|
14
14
|
errors: TemplateError[];
|
|
15
15
|
}
|
|
@@ -32,7 +32,7 @@ export declare function allowedScopeRoots(roots: string[]): (path: string[]) =>
|
|
|
32
32
|
* `isKnownPath` (the scope-shape predicate). Template text is parsed
|
|
33
33
|
* fresh on each call.
|
|
34
34
|
*/
|
|
35
|
-
export declare function validateTemplates<T extends object>(doc: T, isTemplatable: FieldPredicate, isKnownPath: (path: string[]) => boolean):
|
|
35
|
+
export declare function validateTemplates<T extends object>(doc: T, isTemplatable: FieldPredicate, isKnownPath: (path: string[]) => boolean): TemplateValidationResult;
|
|
36
36
|
/**
|
|
37
37
|
* Detect cycles in a self-referencing document. Caller supplies the
|
|
38
38
|
* templatable predicate and a function to extract the scope-path that
|
package/lib/template/validate.js
CHANGED
|
@@ -93,4 +93,4 @@ export function detectCycles(doc, isTemplatable, fieldToScopePath) {
|
|
|
93
93
|
function mkErr(field, pos, code, message, path) {
|
|
94
94
|
return { field, line: pos.line, col: pos.col, code, message, ...(path && { path }) };
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBbUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQXVCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFpQjdFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBTSxFQUNOLGFBQTZCLEVBQzdCLFdBQXdDO0lBRXhDLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQXlDLEVBQUUsQ0FBQztJQUV6RCx5RUFBeUU7SUFDekUsZ0NBQWdDO0lBQ2hDLFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2pELElBQUksQ0FBQztZQUNILE9B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Q1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyRCxLQUFLLEVBQUUsQ0FBQztLQUNULENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELCtFQUErRTtBQUUvRSxTQUFTLEtBQUssQ0FDWixLQUFhLEVBQ2IsR0FBbUIsRUFDbkIsSUFBZSxFQUNmLE9BQWUsRUFDZixJQUFhO0lBRWIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBkZXBlbmRlbmNpZXMgfSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5pbXBvcnQgeyB0eXBlIFNvdXJjZVBvc2l0aW9uLCB0eXBlIFRva2VuLCBUb2tlbml6ZXJFcnJvciwgdG9rZW5pemUgfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0LmpzJztcbmltcG9ydCB7IHR5cGUgRmllbGRQcmVkaWNhdGUsIHZpc2l0U3RyaW5ncywgd2Fsa0FuZEJpbmQgfSBmcm9tICcuL3dhbGtlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVFcnJvciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbD86IG51bWJlcjtcbiAgY29kZTogRXJyb3JDb2RlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGN5Y2xlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlc3VsdCB7XG4gIHZhbGlkOiBib29sZWFuO1xuICBlcnJvcnM6IFRlbXBsYXRlRXJyb3JbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHByZWRpY2F0ZSB0aGF0IGFjY2VwdHMgYSB0ZW1wbGF0ZSBwYXRoIHdoZW4gaXRzIHJvb3QgaXMgaW4gdGhlXG4gKiBnaXZlbiBhbGxvdy1saXN0LiBVc2VkIGJ5IHRoZSB2YWxpZGF0b3IgdG8gY2hlY2sgdGhhdCBldmVyeSBge3sgcGF0aCB9fWBcbiAqIHJlc29sdmVzIHRvIGEga25vd24gc2NvcGUgcm9vdCAoYHBpcGVsaW5lYCwgYHBsdWdpbmAsIGBlbnZgLCDigKYpLlxuICpcbiAqIE9ubHkgdGhlIHJvb3Qgc2VnbWVudCBpcyBjaGVja2VkIOKAlCB3ZSBkb24ndCBlbmZvcmNlIGV4YWN0IG5lc3RlZC1rZXlcbiAqIGV4aXN0ZW5jZSBoZXJlIGJlY2F1c2UgbWV0YWRhdGEgLyB2YXJzIGtleXMgYXJlIHVzZXItcHJvdmlkZWQgcGVyIHBpcGVsaW5lXG4gKiBhbmQgbm90IGtub3duIGF0IHBsdWdpbiB1cGxvYWQgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG93ZWRTY29wZVJvb3RzKHJvb3RzOiBzdHJpbmdbXSk6IChwYXRoOiBzdHJpbmdbXSkgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHJvb3RzKTtcbiAgcmV0dXJuIChwYXRoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHBhdGhbMF07XG4gICAgcmV0dXJuICEhcm9vdCAmJiBhbGxvd2VkLmhhcyhyb290KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbGwgdGVtcGxhdGUgdG9rZW5zIGluIGEgZG9jdW1lbnQgaGF2ZSB3ZWxsLWZvcm1lZCBwYXRocyBhbmRcbiAqIHBvaW50IGF0IGFsbG93ZWQgc2NvcGUgcm9vdHMuIFJldHVybnMgYWxsIGVycm9ycyBmb3VuZCDigJQgZG9lcyBOT1Qgc3RvcFxuICogb24gZmlyc3QuXG4gKlxuICogQ2FsbGVyIHN1cHBsaWVzIGBpc1RlbXBsYXRhYmxlYCAodGhlIHNjaGVtYSBhbGxvdy1saXN0KSBhbmRcbiAqIGBpc0tub3duUGF0aGAgKHRoZSBzY29wZS1zaGFwZSBwcmVkaWNhdGUpLiBUZW1wbGF0ZSB0ZXh0IGlzIHBhcnNlZFxuICogZnJlc2ggb24gZWFjaCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZW1wbGF0ZXM8VCBleHRlbmRzIG9iamVjdD4oXG4gIGRvYzogVCxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGlzS25vd25QYXRoOiAocGF0aDogc3RyaW5nW10pID0+IGJvb2xlYW4sXG4pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgY29uc3QgZXJyb3JzOiBUZW1wbGF0ZUVycm9yW10gPSBbXTtcbiAgY29uc3QgZW50cmllczogeyBmaWVsZDogc3RyaW5nOyB0b2tlbnM6IFRva2VuW10gfVtdID0gW107XG5cbiAgLy8gUGFzcyAxOiBwYXJzZSBldmVyeSB0ZW1wbGF0YWJsZSBmaWVsZCwgY29sbGVjdGluZyBwYXJzZSBlcnJvcnMgaW5zdGVhZFxuICAvLyBvZiB0aHJvd2luZyBvbiB0aGUgZmlyc3Qgb25lLlxuICB2aXNpdFN0cmluZ3MoZG9jLCBpc1RlbXBsYXRhYmxlLCAoZmllbGQsIHNvdXJjZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBlbnRyaWVzLnB1c2goeyBmaWVsZCwgdG9rZW5zOiB0b2tlbml6ZShzb3VyY2UpIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFRva2VuaXplckVycm9yKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHsgZmllbGQsIGxpbmU6IGVyci5wb3MubGluZSwgY29sOiBlcnIucG9zLmNvbCwgY29kZTogRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHsgZmllbGQsIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUiwgbWVzc2FnZTogU3RyaW5nKGVycikgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBQYXNzIDI6IHZhbGlkYXRlIGVhY2ggZXhwcidzIHBhdGggaXMgc2hhcGUtYWxsb3dlZCBhbmQgbm90IHJlc2VydmVkXG4gIGZvciAoY29uc3QgeyBmaWVsZCwgdG9rZW5zIH0gb2YgZW50cmllcykge1xuICAgIGZvciAoY29uc3QgdG9rIG9mIHRva2Vucykge1xuICAgICAgaWYgKHRvay5raW5kICE9PSAnZXhwcicpIGNvbnRpbnVlO1xuICAgICAgaWYgKHRvay5wYXRoWzBdID09PSAnc2VjcmV0cycpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWtFcnIoZmllbGQsIHRvay5wb3MsIEVycm9yQ29kZS5URU1QTEFURV9TRUNSRVRTX1JFU0VSVkVELFxuICAgICAgICAgICdcXCdzZWNyZXRzXFwnIGlzIGEgcmVzZXJ2ZWQgc2NvcGUg4oCUIHVzZSB0aGUgcGx1Z2luXFwncyBcXCdzZWNyZXRzOlxcJyBmaWVsZCBpbnN0ZWFkJyxcbiAgICAgICAgICB0b2sucGF0aC5qb2luKCcuJykpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWlzS25vd25QYXRoKHRvay5wYXRoKSkge1xuICAgICAgICBlcnJvcnMucHVzaChta0VycihmaWVsZCwgdG9rLnBvcywgRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSCxcbiAgICAgICAgICBgVGVtcGxhdGUgcmVmZXJlbmNlcyB1bmtub3duIHNjb3BlIHJvb3QgJyR7dG9rLnBhdGhbMF19J2AsXG4gICAgICAgICAgdG9rLnBhdGguam9pbignLicpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsIGVycm9ycyB9O1xufVxuXG4vKipcbiAqIERldGVjdCBjeWNsZXMgaW4gYSBzZWxmLXJlZmVyZW5jaW5nIGRvY3VtZW50LiBDYWxsZXIgc3VwcGxpZXMgdGhlXG4gKiB0ZW1wbGF0YWJsZSBwcmVkaWNhdGUgYW5kIGEgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgc2NvcGUtcGF0aCB0aGF0XG4gKiBlYWNoIHRlbXBsYXRlIGZpZWxkIHdyaXRlcyB0byAoc2FtZSB2YWx1ZSB1c2VkIGFzIGEga2V5IGluIGRlcHMpLlxuICpcbiAqIEV4YW1wbGUgZm9yIHBpcGVsaW5lLmpzb246IHRoZSBmaWVsZCBgbWV0YWRhdGEuZW52YCB3cml0ZXMgdG8gc2NvcGVcbiAqIHBhdGggYG1ldGFkYXRhLmVudmA7IGEgdGVtcGxhdGUgYHt7IG1ldGFkYXRhLnJlZ2lvbiB9fWAgaW4gdGhhdCBmaWVsZFxuICogZGVjbGFyZXMgYSBkZXBlbmRlbmN5IG9uIGBtZXRhZGF0YS5yZWdpb25gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0Q3ljbGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuICBmaWVsZFRvU2NvcGVQYXRoOiAoZmllbGQ6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCxcbik6IFRlbXBsYXRlRXJyb3JbXSB7XG4gIGNvbnN0IG5vZGVzID0gW107XG4gIGZvciAoY29uc3QgZW50cnkgb2Ygd2Fsa0FuZEJpbmQoZG9jLCBpc1RlbXBsYXRhYmxlKSkge1xuICAgIGNvbnN0IGtleSA9IGZpZWxkVG9TY29wZVBhdGgoZW50cnkuZmllbGQpO1xuICAgIGlmICgha2V5KSBjb250aW51ZTtcbiAgICBub2Rlcy5wdXNoKHsga2V5LCBkZXBzOiBkZXBlbmRlbmNpZXMoZW50cnkudG9rZW5zKSB9KTtcbiAgfVxuICBjb25zdCB7IGN5Y2xlcyB9ID0gdG9wb1NvcnQobm9kZXMpO1xuICByZXR1cm4gY3ljbGVzLm1hcChjID0+ICh7XG4gICAgZmllbGQ6IGNbMF0hLFxuICAgIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9DWUNMRSxcbiAgICBtZXNzYWdlOiBgVGVtcGxhdGUgY3ljbGUgZGV0ZWN0ZWQ6ICR7Yy5qb2luKCcgLT4gJyl9YCxcbiAgICBjeWNsZTogYyxcbiAgfSkpO1xufVxuXG4vLyAtLSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIG1rRXJyKFxuICBmaWVsZDogc3RyaW5nLFxuICBwb3M6IFNvdXJjZVBvc2l0aW9uLFxuICBjb2RlOiBFcnJvckNvZGUsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgcGF0aD86IHN0cmluZyxcbik6IFRlbXBsYXRlRXJyb3Ige1xuICByZXR1cm4geyBmaWVsZCwgbGluZTogcG9zLmxpbmUsIGNvbDogcG9zLmNvbCwgY29kZSwgbWVzc2FnZSwgLi4uKHBhdGggJiYgeyBwYXRoIH0pIH07XG59XG5cbiJdfQ==
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBbUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQXVCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFpQjdFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBTSxFQUNOLGFBQTZCLEVBQzdCLFdBQXdDO0lBRXhDLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQXlDLEVBQUUsQ0FBQztJQUV6RCx5RUFBeUU7SUFDekUsZ0NBQWdDO0lBQ2hDLFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2pELElBQUksQ0FBQztZQUNILE9B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Q1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyRCxLQUFLLEVBQUUsQ0FBQztLQUNULENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELCtFQUErRTtBQUUvRSxTQUFTLEtBQUssQ0FDWixLQUFhLEVBQ2IsR0FBbUIsRUFDbkIsSUFBZSxFQUNmLE9BQWUsRUFDZixJQUFhO0lBRWIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBkZXBlbmRlbmNpZXMgfSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5pbXBvcnQgeyB0eXBlIFNvdXJjZVBvc2l0aW9uLCB0eXBlIFRva2VuLCBUb2tlbml6ZXJFcnJvciwgdG9rZW5pemUgfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0LmpzJztcbmltcG9ydCB7IHR5cGUgRmllbGRQcmVkaWNhdGUsIHZpc2l0U3RyaW5ncywgd2Fsa0FuZEJpbmQgfSBmcm9tICcuL3dhbGtlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVFcnJvciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbD86IG51bWJlcjtcbiAgY29kZTogRXJyb3JDb2RlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGN5Y2xlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVWYWxpZGF0aW9uUmVzdWx0IHtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIGVycm9yczogVGVtcGxhdGVFcnJvcltdO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgcHJlZGljYXRlIHRoYXQgYWNjZXB0cyBhIHRlbXBsYXRlIHBhdGggd2hlbiBpdHMgcm9vdCBpcyBpbiB0aGVcbiAqIGdpdmVuIGFsbG93LWxpc3QuIFVzZWQgYnkgdGhlIHZhbGlkYXRvciB0byBjaGVjayB0aGF0IGV2ZXJ5IGB7eyBwYXRoIH19YFxuICogcmVzb2x2ZXMgdG8gYSBrbm93biBzY29wZSByb290IChgcGlwZWxpbmVgLCBgcGx1Z2luYCwgYGVudmAsIOKApikuXG4gKlxuICogT25seSB0aGUgcm9vdCBzZWdtZW50IGlzIGNoZWNrZWQg4oCUIHdlIGRvbid0IGVuZm9yY2UgZXhhY3QgbmVzdGVkLWtleVxuICogZXhpc3RlbmNlIGhlcmUgYmVjYXVzZSBtZXRhZGF0YSAvIHZhcnMga2V5cyBhcmUgdXNlci1wcm92aWRlZCBwZXIgcGlwZWxpbmVcbiAqIGFuZCBub3Qga25vd24gYXQgcGx1Z2luIHVwbG9hZCB0aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb3dlZFNjb3BlUm9vdHMocm9vdHM6IHN0cmluZ1tdKTogKHBhdGg6IHN0cmluZ1tdKSA9PiBib29sZWFuIHtcbiAgY29uc3QgYWxsb3dlZCA9IG5ldyBTZXQocm9vdHMpO1xuICByZXR1cm4gKHBhdGgpID0+IHtcbiAgICBjb25zdCByb290ID0gcGF0aFswXTtcbiAgICByZXR1cm4gISFyb290ICYmIGFsbG93ZWQuaGFzKHJvb3QpO1xuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGFsbCB0ZW1wbGF0ZSB0b2tlbnMgaW4gYSBkb2N1bWVudCBoYXZlIHdlbGwtZm9ybWVkIHBhdGhzIGFuZFxuICogcG9pbnQgYXQgYWxsb3dlZCBzY29wZSByb290cy4gUmV0dXJucyBhbGwgZXJyb3JzIGZvdW5kIOKAlCBkb2VzIE5PVCBzdG9wXG4gKiBvbiBmaXJzdC5cbiAqXG4gKiBDYWxsZXIgc3VwcGxpZXMgYGlzVGVtcGxhdGFibGVgICh0aGUgc2NoZW1hIGFsbG93LWxpc3QpIGFuZFxuICogYGlzS25vd25QYXRoYCAodGhlIHNjb3BlLXNoYXBlIHByZWRpY2F0ZSkuIFRlbXBsYXRlIHRleHQgaXMgcGFyc2VkXG4gKiBmcmVzaCBvbiBlYWNoIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlbXBsYXRlczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZG9jOiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgaXNLbm93blBhdGg6IChwYXRoOiBzdHJpbmdbXSkgPT4gYm9vbGVhbixcbik6IFRlbXBsYXRlVmFsaWRhdGlvblJlc3VsdCB7XG4gIGNvbnN0IGVycm9yczogVGVtcGxhdGVFcnJvcltdID0gW107XG4gIGNvbnN0IGVudHJpZXM6IHsgZmllbGQ6IHN0cmluZzsgdG9rZW5zOiBUb2tlbltdIH1bXSA9IFtdO1xuXG4gIC8vIFBhc3MgMTogcGFyc2UgZXZlcnkgdGVtcGxhdGFibGUgZmllbGQsIGNvbGxlY3RpbmcgcGFyc2UgZXJyb3JzIGluc3RlYWRcbiAgLy8gb2YgdGhyb3dpbmcgb24gdGhlIGZpcnN0IG9uZS5cbiAgdmlzaXRTdHJpbmdzKGRvYywgaXNUZW1wbGF0YWJsZSwgKGZpZWxkLCBzb3VyY2UpID0+IHtcbiAgICB0cnkge1xuICAgICAgZW50cmllcy5wdXNoKHsgZmllbGQsIHRva2VuczogdG9rZW5pemUoc291cmNlKSB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUb2tlbml6ZXJFcnJvcikge1xuICAgICAgICBlcnJvcnMucHVzaCh7IGZpZWxkLCBsaW5lOiBlcnIucG9zLmxpbmUsIGNvbDogZXJyLnBvcy5jb2wsIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUiwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcnMucHVzaCh7IGZpZWxkLCBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsIG1lc3NhZ2U6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gUGFzcyAyOiB2YWxpZGF0ZSBlYWNoIGV4cHIncyBwYXRoIGlzIHNoYXBlLWFsbG93ZWQgYW5kIG5vdCByZXNlcnZlZFxuICBmb3IgKGNvbnN0IHsgZmllbGQsIHRva2VucyB9IG9mIGVudHJpZXMpIHtcbiAgICBmb3IgKGNvbnN0IHRvayBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICh0b2sua2luZCAhPT0gJ2V4cHInKSBjb250aW51ZTtcbiAgICAgIGlmICh0b2sucGF0aFswXSA9PT0gJ3NlY3JldHMnKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKG1rRXJyKGZpZWxkLCB0b2sucG9zLCBFcnJvckNvZGUuVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCxcbiAgICAgICAgICAnXFwnc2VjcmV0c1xcJyBpcyBhIHJlc2VydmVkIHNjb3BlIOKAlCB1c2UgdGhlIHBsdWdpblxcJ3MgXFwnc2VjcmV0czpcXCcgZmllbGQgaW5zdGVhZCcsXG4gICAgICAgICAgdG9rLnBhdGguam9pbignLicpKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0tub3duUGF0aCh0b2sucGF0aCkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWtFcnIoZmllbGQsIHRvay5wb3MsIEVycm9yQ29kZS5URU1QTEFURV9VTktOT1dOX1BBVEgsXG4gICAgICAgICAgYFRlbXBsYXRlIHJlZmVyZW5jZXMgdW5rbm93biBzY29wZSByb290ICcke3Rvay5wYXRoWzBdfSdgLFxuICAgICAgICAgIHRvay5wYXRoLmpvaW4oJy4nKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLCBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgY3ljbGVzIGluIGEgc2VsZi1yZWZlcmVuY2luZyBkb2N1bWVudC4gQ2FsbGVyIHN1cHBsaWVzIHRoZVxuICogdGVtcGxhdGFibGUgcHJlZGljYXRlIGFuZCBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIHNjb3BlLXBhdGggdGhhdFxuICogZWFjaCB0ZW1wbGF0ZSBmaWVsZCB3cml0ZXMgdG8gKHNhbWUgdmFsdWUgdXNlZCBhcyBhIGtleSBpbiBkZXBzKS5cbiAqXG4gKiBFeGFtcGxlIGZvciBwaXBlbGluZS5qc29uOiB0aGUgZmllbGQgYG1ldGFkYXRhLmVudmAgd3JpdGVzIHRvIHNjb3BlXG4gKiBwYXRoIGBtZXRhZGF0YS5lbnZgOyBhIHRlbXBsYXRlIGB7eyBtZXRhZGF0YS5yZWdpb24gfX1gIGluIHRoYXQgZmllbGRcbiAqIGRlY2xhcmVzIGEgZGVwZW5kZW5jeSBvbiBgbWV0YWRhdGEucmVnaW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEN5Y2xlczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZG9jOiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgZmllbGRUb1Njb3BlUGF0aDogKGZpZWxkOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwsXG4pOiBUZW1wbGF0ZUVycm9yW10ge1xuICBjb25zdCBub2RlcyA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSkpIHtcbiAgICBjb25zdCBrZXkgPSBmaWVsZFRvU2NvcGVQYXRoKGVudHJ5LmZpZWxkKTtcbiAgICBpZiAoIWtleSkgY29udGludWU7XG4gICAgbm9kZXMucHVzaCh7IGtleSwgZGVwczogZGVwZW5kZW5jaWVzKGVudHJ5LnRva2VucykgfSk7XG4gIH1cbiAgY29uc3QgeyBjeWNsZXMgfSA9IHRvcG9Tb3J0KG5vZGVzKTtcbiAgcmV0dXJuIGN5Y2xlcy5tYXAoYyA9PiAoe1xuICAgIGZpZWxkOiBjWzBdISxcbiAgICBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfQ1lDTEUsXG4gICAgbWVzc2FnZTogYFRlbXBsYXRlIGN5Y2xlIGRldGVjdGVkOiAke2Muam9pbignIC0+ICcpfWAsXG4gICAgY3ljbGU6IGMsXG4gIH0pKTtcbn1cblxuLy8gLS0gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBta0VycihcbiAgZmllbGQ6IHN0cmluZyxcbiAgcG9zOiBTb3VyY2VQb3NpdGlvbixcbiAgY29kZTogRXJyb3JDb2RlLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHBhdGg/OiBzdHJpbmcsXG4pOiBUZW1wbGF0ZUVycm9yIHtcbiAgcmV0dXJuIHsgZmllbGQsIGxpbmU6IHBvcy5saW5lLCBjb2w6IHBvcy5jb2wsIGNvZGUsIG1lc3NhZ2UsIC4uLihwYXRoICYmIHsgcGF0aCB9KSB9O1xufVxuXG4iXX0=
|
package/package.json
CHANGED
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"axios": "1.19.0",
|
|
35
35
|
"jsonwebtoken": "9.0.3",
|
|
36
|
-
"@pipeline-builder/api-core": "4.1.
|
|
37
|
-
"@pipeline-builder/pipeline-data": "4.1.
|
|
36
|
+
"@pipeline-builder/api-core": "4.1.9",
|
|
37
|
+
"@pipeline-builder/pipeline-data": "4.1.10"
|
|
38
38
|
},
|
|
39
39
|
"keywords": [
|
|
40
40
|
"ci-cd",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"access": "public",
|
|
91
91
|
"registry": "https://registry.npmjs.org/"
|
|
92
92
|
},
|
|
93
|
-
"version": "4.1.
|
|
93
|
+
"version": "4.1.10",
|
|
94
94
|
"bugs": {
|
|
95
95
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
96
96
|
},
|
|
@@ -150,7 +150,19 @@
|
|
|
150
150
|
"^uuid$": "<rootDir>/../../jest-uuid-stub.js",
|
|
151
151
|
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
152
152
|
},
|
|
153
|
-
"
|
|
153
|
+
"restoreMocks": true,
|
|
154
|
+
"setupFilesAfterEnv": [
|
|
155
|
+
"<rootDir>/../../jest-env-guard.js"
|
|
156
|
+
],
|
|
157
|
+
"maxWorkers": 1,
|
|
158
|
+
"coverageThreshold": {
|
|
159
|
+
"global": {
|
|
160
|
+
"statements": 94,
|
|
161
|
+
"branches": 84,
|
|
162
|
+
"functions": 90,
|
|
163
|
+
"lines": 94
|
|
164
|
+
}
|
|
165
|
+
}
|
|
154
166
|
},
|
|
155
167
|
"types": "lib/index.d.ts",
|
|
156
168
|
"type": "module",
|