@pipeline-builder/api-core 5.2.10 → 5.2.11

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.
@@ -11,7 +11,7 @@
11
11
  * individually — no shared To: line).
12
12
  */
13
13
  /** A notification event number. */
14
- export type EcosystemNotificationEventId = 'N1' | 'N2' | 'N3' | 'N4' | 'N5' | 'N6' | 'N7' | 'N8' | 'N9' | 'N10' | 'N11' | 'N12' | 'N13' | 'N14' | 'N15' | 'N16' | 'N17' | 'N18' | 'N19' | 'N20' | 'N21' | 'N22' | 'N23' | 'N24' | 'N25' | 'N26' | 'N27' | 'N28' | 'N29' | 'N30' | 'N31' | 'N32' | 'N33';
14
+ export type EcosystemNotificationEventId = 'N1' | 'N2' | 'N3' | 'N4' | 'N5' | 'N6' | 'N7' | 'N8' | 'N9' | 'N10' | 'N11' | 'N12' | 'N13' | 'N14' | 'N15' | 'N16' | 'N17' | 'N18' | 'N19' | 'N20' | 'N21' | 'N22' | 'N23' | 'N24' | 'N25' | 'N26' | 'N27' | 'N28' | 'N29' | 'N30' | 'N31' | 'N32' | 'N33' | 'N34';
15
15
  /** A delivery channel. In-app is the source of truth; email is the courtesy copy. */
16
16
  export type EcosystemNotificationChannel = 'in_app' | 'email';
17
17
  /** A per-user EMAIL opt-out key. In-app is never optional. */
@@ -33,7 +33,7 @@ export interface EcosystemEventSpec {
33
33
  channels: readonly EcosystemNotificationChannel[];
34
34
  /**
35
35
  * Email opt-out key, or `null` when the email is TRANSACTIONAL / security
36
- * (N1, N3–N5, N7–N10, N18–N23, N25, N28–N33 can't be turned off).
36
+ * (N1, N3–N5, N7–N10, N18–N23, N25, N28–N34 can't be turned off).
37
37
  */
38
38
  preference: EcosystemEmailPreference | null;
39
39
  /** When the email is batched rather than immediate, its cadence. */
@@ -48,7 +48,7 @@ export declare const ECOSYSTEM_NOTIFICATION_EVENTS: Readonly<Record<EcosystemNot
48
48
  /** Whether `value` is a notification event number. */
49
49
  export declare function isEcosystemNotificationEvent(value: unknown): value is EcosystemNotificationEventId;
50
50
  /** Org-local permissions an {@link EcosystemRecipientSpec} `org_permission` rule may name. */
51
- export type EcosystemOrgRecipientPermission = 'publishers:manage' | 'plugin_installs:manage' | 'plugins:write' | 'pipelines:write';
51
+ export type EcosystemOrgRecipientPermission = 'publishers:manage' | 'plugin_installs:manage' | 'plugins:write' | 'pipelines:write' | 'toolchain:manage';
52
52
  /** System-org permissions a `moderators` rule may name. */
53
53
  export type EcosystemModeratorPermission = 'plugins:moderate' | 'publishers:verify';
54
54
  /**
@@ -58,7 +58,8 @@ export type EcosystemModeratorPermission = 'plugins:moderate' | 'publishers:veri
58
58
  * `orgId` picks the inbox; defaults to the user's last active org.
59
59
  * - `org_permission` — active members of `orgId` holding `permission`
60
60
  * (Publisher managers = `publishers:manage`, Org approvers =
61
- * `plugin_installs:manage`, plugin writers = `plugins:write`). With
61
+ * `plugin_installs:manage`, plugin writers = `plugins:write`, toolchain
62
+ * managers = `toolchain:manage`). With
62
63
  * `inheritFromRoot`, a team with no holders falls back to its root org's
63
64
  * holders; with none anywhere, the org's owners.
64
65
  * - `org_members` — the named users, but only those who are ACTIVE members of
@@ -53,6 +53,13 @@ export const ECOSYSTEM_NOTIFICATION_EVENTS = {
53
53
  // Routed to the org's pipeline writers under the same security settings.
54
54
  N32: { description: 'Pipeline blocked by a plugin vulnerability policy', channels: ['in_app', 'email'], preference: null, allowsAddress: true },
55
55
  N33: { description: 'Pipeline vulnerability risk acceptance lapsed', channels: ['in_app', 'email'], preference: null, allowsAddress: true },
56
+ // Managed toolchain hygiene (docs/plans/bootstrap-image-versioning.md §10): an
57
+ // org's toolchain default (to its `toolchain:manage` holders) or a pipeline's
58
+ // pinned release (to the org's pipeline writers) was yanked or deprecated,
59
+ // picked up a KEV or fixable Critical finding, or fell more than three
60
+ // releases behind the platform default. Transactional: it says the org's
61
+ // pipelines are building on something it should move off.
62
+ N34: { description: 'Managed toolchain: a release you use was yanked, deprecated, found vulnerable or fell behind; the platform default moved; your org joined a canary; or a pipeline needs a re-deploy to recover', channels: ['in_app', 'email'], preference: null },
56
63
  };
57
64
  /** Whether `value` is a notification event number. */
58
65
  export function isEcosystemNotificationEvent(value) {
@@ -62,7 +69,7 @@ export function isEcosystemNotificationEvent(value) {
62
69
  export const ECOSYSTEM_NOTIFY_SUBJECT_MAX = 500;
63
70
  export const ECOSYSTEM_NOTIFY_TEXT_MAX = 10000;
64
71
  const MAX_RECIPIENT_RULES = 50;
65
- const ORG_PERMISSIONS = ['publishers:manage', 'plugin_installs:manage', 'plugins:write', 'pipelines:write'];
72
+ const ORG_PERMISSIONS = ['publishers:manage', 'plugin_installs:manage', 'plugins:write', 'pipelines:write', 'toolchain:manage'];
66
73
  /** At most this many users in one `org_members` rule. */
67
74
  export const ECOSYSTEM_ORG_MEMBERS_MAX = 100;
68
75
  const MODERATOR_PERMISSIONS = ['plugins:moderate', 'publishers:verify'];
@@ -139,7 +146,7 @@ export function parseEcosystemNotifyRequest(body) {
139
146
  return 'body must be an object';
140
147
  const b = body;
141
148
  if (!isEcosystemNotificationEvent(b.event))
142
- return 'event must be one of N1..N33';
149
+ return 'event must be one of N1..N34';
143
150
  const spec = ECOSYSTEM_NOTIFICATION_EVENTS[b.event];
144
151
  if (!nonEmptyString(b.subject, ECOSYSTEM_NOTIFY_SUBJECT_MAX))
145
152
  return `subject is required (max ${ECOSYSTEM_NOTIFY_SUBJECT_MAX})`;
@@ -240,4 +247,4 @@ export function renderEcosystemDigest(event, items) {
240
247
  text: items.map((i) => `• ${i.subject}`).join('\n').slice(0, ECOSYSTEM_NOTIFY_TEXT_MAX),
241
248
  };
242
249
  }
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lY29zeXN0ZW0tbm90aWZpY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBZ0N0QzswRUFDMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQThFO0lBQzFILHlCQUF5QixFQUFFLGNBQWM7SUFDekMsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQywwQkFBMEIsRUFBRSxlQUFlO0lBQzNDLGtDQUFrQyxFQUFFLHVCQUF1QjtDQUM1RCxDQUFDO0FBS0YscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUF3Qm5ELDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBdUU7SUFDL0csRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLDRDQUE0QyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRTtJQUM3SCxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsbURBQW1ELEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ3hLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxtQ0FBbUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDcEgsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRTtJQUNsSCxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7SUFDeEcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLDBDQUEwQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUMvSixFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsMkNBQTJDLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7SUFDakgsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLDBEQUEwRCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO0lBQ2hJLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtJQUNwRyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsNkRBQTZELEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7SUFDcEksR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDhDQUE4QyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUU7SUFDM0ksR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUU7SUFDekgsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLG1EQUFtRCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNsSyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsb0NBQW9DLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRTtJQUNqSSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ2pKLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLHlCQUF5QixFQUFFO0lBQzlILEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxzQ0FBc0MsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7SUFDNUosR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO0lBQ2hHLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxvQ0FBb0MsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtJQUMzRyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsMENBQTBDLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7SUFDakgsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO0lBQ3hHLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO0lBQ3BGLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxxREFBcUQsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtJQUM1SCxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ2pKLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxzQ0FBc0MsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtJQUM3RyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsNENBQTRDLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFO0lBQ2hJLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxpREFBaUQsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDaEssR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO0lBQzFHLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtJQUN2Ryw0RUFBNEU7SUFDNUUsK0VBQStFO0lBQy9FLDRFQUE0RTtJQUM1RSw2RUFBNkU7SUFDN0UsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLHdEQUF3RCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDcEosR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLG9EQUFvRCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDaEosK0VBQStFO0lBQy9FLCtFQUErRTtJQUMvRSw0RUFBNEU7SUFDNUUseUVBQXlFO0lBQ3pFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxtREFBbUQsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO0lBQy9JLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO0NBQzVJLENBQUM7QUFFRixzREFBc0Q7QUFDdEQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEtBQWM7SUFDekQsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pILENBQUM7QUFvREQsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUM7QUFDL0MsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFL0IsTUFBTSxlQUFlLEdBQXNCLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDL0gseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztBQUM3QyxNQUFNLHFCQUFxQixHQUFzQixDQUFDLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDM0YsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUM7QUFFakQsU0FBUyxjQUFjLENBQUMsQ0FBVSxFQUFFLEdBQUcsR0FBRyxHQUFHO0lBQzNDLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFZLEVBQUUsSUFBd0I7SUFDNUQsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxrQ0FBa0MsQ0FBQztJQUMvRSxNQUFNLENBQUMsR0FBRyxHQUE4QixDQUFDO0lBQ3pDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsS0FBSyxNQUFNO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUFFLE9BQU8sNkJBQTZCLENBQUM7WUFDcEUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sdUNBQXVDLENBQUM7WUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM5RixLQUFLLGdCQUFnQjtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsT0FBTyxzQ0FBc0MsQ0FBQztZQUM1RSxJQUFJLE9BQU8sQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQUUsT0FBTywwREFBMEQsQ0FBQztZQUNuSixPQUFPO2dCQUNMLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQTZDO2dCQUMzRCxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDakUsQ0FBQztRQUNKLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sbUNBQW1DLENBQUM7WUFDekUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxPQUFPLHVEQUF1RCxDQUFDO1lBQzFKLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyx5QkFBeUI7Z0JBQUUsT0FBTyx1Q0FBdUMseUJBQXlCLFFBQVEsQ0FBQztZQUM5SCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0YsQ0FBQztRQUNELEtBQUssWUFBWSxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLENBQUMsQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQUUsT0FBTyxzREFBc0QsQ0FBQztZQUNySixJQUFJLENBQUMsQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO2dCQUFFLE9BQU8sd0NBQXdDLENBQUM7WUFDdkksTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUNqQyxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxPQUFPLHdDQUF3QyxDQUFDO1lBQ3BKLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBMEM7Z0JBQ3hELEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLHFCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsT0FBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDNUQsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLGFBQWE7WUFDaEIsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUNqQyxLQUFLLFNBQVM7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsT0FBTywwRkFBMEYsQ0FBQztZQUMzSCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsT0FBTyx1Q0FBdUMsQ0FBQztZQUNoSCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ2xFO1lBQ0UsT0FBTyx3QkFBd0IsQ0FBQztJQUNwQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsSUFBYTtJQUN2RCxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLHdCQUF3QixDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxHQUFHLElBQStCLENBQUM7SUFDMUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLDhCQUE4QixDQUFDO0lBQ2xGLE1BQU0sSUFBSSxHQUFHLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsNEJBQTRCLENBQUM7UUFBRSxPQUFPLDRCQUE0Qiw0QkFBNEIsR0FBRyxDQUFDO0lBQ2pJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQztRQUFFLE9BQU8seUJBQXlCLHlCQUF5QixHQUFHLENBQUM7SUFDckgsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLHNDQUFzQyxDQUFDO0lBQzdHLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CO1FBQUUsT0FBTyxXQUFXLG1CQUFtQixrQkFBa0IsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBNkIsRUFBRSxDQUFDO0lBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxRQUFvRCxDQUFDO0lBQ3pELElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sb0NBQW9DLENBQUM7UUFDdkcsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBaUMsQ0FBQyxDQUFDLENBQUM7UUFDakcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDLEtBQUsseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyRixRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUEwQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUztRQUFFLE9BQU8sNkJBQTZCLENBQUM7SUFDeEcsT0FBTztRQUNMLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztRQUNkLFVBQVU7UUFDVixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7UUFDekIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDckQsQ0FBQztBQUNKLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBRTNDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBK0IsRUFBRSxHQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUU7SUFDN0YsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELENBQUMsQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1FBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7WUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxLQWU1QztJQUNDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxtQkFBbUIsQ0FBQztJQUMvQyw2RUFBNkU7SUFDN0Usb0VBQW9FO0lBQ3BFLHlFQUF5RTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssbUJBQW1CLENBQUM7SUFDL0MsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksT0FBTztRQUNyRCxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDZixDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRSxHQUFHO2tCQUNoRCxDQUFDLFNBQVM7b0JBQ1YsQ0FBQyxDQUFDLGtHQUFrRzswQkFDaEcseURBQXlEO29CQUM3RCxDQUFDLENBQUMsMENBQTBDLENBQUM7a0JBQzdDLHNGQUFzRjtZQUMxRixDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRSxFQUFFO2tCQUMvQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsd0VBQXdFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztLQUNuRyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsS0FBbUMsRUFDbkMsS0FBOEM7SUFFOUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUUsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDcEcsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLE9BQU8sWUFBWSxLQUFLLENBQUMsTUFBTSxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLDRCQUE0QixDQUFDO1FBQzFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDO0tBQ3hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHBsdWdpbi1lY29zeXN0ZW0gbm90aWZpY2F0aW9uIGNvbnRyYWN0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKSxcbiAqIHNoYXJlZCBieSB0aGUgc2VuZGVyICh0aGUgcGx1Z2luIHNlcnZpY2UncyBlbnF1ZXVlIEFQSSBhbmQgZGlnZXN0XG4gKiBkaXNwYXRjaGVyKSBhbmQgdGhlIHJlbGF5IChwbGF0Zm9ybSBgUE9TVCAvaW50ZXJuYWwvbm90aWZ5LWVtYWlsYCkuXG4gKlxuICogUmVjaXBpZW50cyB0cmF2ZWwgYXMgUlVMRVMsIG5ldmVyIGFzIGxpc3RzOiBwbGF0Zm9ybSByZXNvbHZlcyBlYWNoXG4gKiB7QGxpbmsgRWNvc3lzdGVtUmVjaXBpZW50U3BlY30gYWdhaW5zdCBpdHMgdXNlci9Sb2xlIGRpcmVjdG9yeSBBVCBTRU5EIFRJTUUsXG4gKiBzbyBhIGRpZ2VzdCB0aGF0IGZsdXNoZXMgdG9tb3Jyb3cgcmVhY2hlcyB0b21vcnJvdydzIG1vZGVyYXRvcnMsIHRoZSBwbHVnaW5cbiAqIHNlcnZpY2UgbmV2ZXIgaGFuZGxlcyBhbiBlbWFpbCBhZGRyZXNzIG9yIGEgbWVtYmVyc2hpcCBsaXN0LCBhbmQgYSBwdWJsaXNoZXJcbiAqIGNhbiBuZXZlciBsZWFybiB3aG8gaW5zdGFsbGVkIHRoZWlyIHBsdWdpbiAodGhlIHJlbGF5IG1haWxzIGVhY2ggcmVjaXBpZW50XG4gKiBpbmRpdmlkdWFsbHkg4oCUIG5vIHNoYXJlZCBUbzogbGluZSkuXG4gKi9cblxuLyoqIEEgbm90aWZpY2F0aW9uIGV2ZW50IG51bWJlci4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQgPVxuICB8ICdOMScgfCAnTjInIHwgJ04zJyB8ICdONCcgfCAnTjUnIHwgJ042JyB8ICdONycgfCAnTjgnIHwgJ045JyB8ICdOMTAnXG4gIHwgJ04xMScgfCAnTjEyJyB8ICdOMTMnIHwgJ04xNCcgfCAnTjE1JyB8ICdOMTYnIHwgJ04xNycgfCAnTjE4JyB8ICdOMTknIHwgJ04yMCdcbiAgfCAnTjIxJyB8ICdOMjInIHwgJ04yMycgfCAnTjI0JyB8ICdOMjUnIHwgJ04yNicgfCAnTjI3JyB8ICdOMjgnIHwgJ04yOSdcbiAgfCAnTjMwJyB8ICdOMzEnIHwgJ04zMicgfCAnTjMzJztcblxuLyoqIEEgZGVsaXZlcnkgY2hhbm5lbC4gSW4tYXBwIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGg7IGVtYWlsIGlzIHRoZSBjb3VydGVzeSBjb3B5LiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCA9ICdpbl9hcHAnIHwgJ2VtYWlsJztcblxuLyoqIEEgcGVyLXVzZXIgRU1BSUwgb3B0LW91dCBrZXkuIEluLWFwcCBpcyBuZXZlciBvcHRpb25hbC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSA9XG4gIHwgJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJ1xuICB8ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnXG4gIHwgJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCdcbiAgfCAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnO1xuXG4vKiogVGhlIGZpZWxkIGVhY2ggcHJlZmVyZW5jZSBrZXkgaXMgc3RvcmVkIHVuZGVyIGluIHRoZSB1c2VyJ3MgcGVyLW9yZ1xuICogIGBub3RpZmljYXRpb25zLmVjb3N5c3RlbWAgcHJlZmVyZW5jZXMgKHBsYXRmb3JtIGBVc2VyUHJlZmVyZW5jZXNgKS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFM6IFJlYWRvbmx5PFJlY29yZDxFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UsIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkPj4gPSB7XG4gICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCc6ICdyZXZpZXdzRW1haWwnLFxuICAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJzogJ3VwZ3JhZGVzRW1haWwnLFxuICAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJzogJ2luc3RhbGxzRW1haWwnLFxuICAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnOiAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJyxcbn07XG5cbi8qKiBTdG9yZWQgZmllbGQgbmFtZXMgb2YgdGhlIGVjb3N5c3RlbSBlbWFpbCBwcmVmZXJlbmNlcyAoYWxsIGRlZmF1bHQgYHRydWVgKS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkID0gJ3Jldmlld3NFbWFpbCcgfCAndXBncmFkZXNFbWFpbCcgfCAnaW5zdGFsbHNFbWFpbCcgfCAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJztcblxuLyoqIEV2ZXJ5IHN0b3JlZCBlY29zeXN0ZW0gZW1haWwtcHJlZmVyZW5jZSBmaWVsZC4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRF9OQU1FUzogcmVhZG9ubHkgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGRbXSA9XG4gIE9iamVjdC52YWx1ZXMoRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTKTtcblxuLyoqIEhvdyBvZnRlbiBhIGJhdGNoZWQgZW1haWwgaXMgZmx1c2hlZC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbURpZ2VzdENhZGVuY2UgPSAnaG91cmx5JyB8ICdkYWlseScgfCAnd2Vla2x5JztcblxuLyoqIE9uZSBldmVudCdzIGRlbGl2ZXJ5IHJ1bGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1FdmVudFNwZWMge1xuICAvKiogT25lLWxpbmUgZGVzY3JpcHRpb24gKGRvY3MsIGxvZ3MpLiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQ2hhbm5lbHMgdGhlIGV2ZW50IGlzIGRlbGl2ZXJlZCBvbi4gKi9cbiAgY2hhbm5lbHM6IHJlYWRvbmx5IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXTtcbiAgLyoqXG4gICAqIEVtYWlsIG9wdC1vdXQga2V5LCBvciBgbnVsbGAgd2hlbiB0aGUgZW1haWwgaXMgVFJBTlNBQ1RJT05BTCAvIHNlY3VyaXR5XG4gICAqIChOMSwgTjPigJNONSwgTjfigJNOMTAsIE4xOOKAk04yMywgTjI1LCBOMjjigJNOMzMgY2FuJ3QgYmUgdHVybmVkIG9mZikuXG4gICAqL1xuICBwcmVmZXJlbmNlOiBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UgfCBudWxsO1xuICAvKiogV2hlbiB0aGUgZW1haWwgaXMgYmF0Y2hlZCByYXRoZXIgdGhhbiBpbW1lZGlhdGUsIGl0cyBjYWRlbmNlLiAqL1xuICBkaWdlc3Q/OiBFY29zeXN0ZW1EaWdlc3RDYWRlbmNlO1xuICAvKiogQWxsb3dlZCB0byBhZGRyZXNzIGEgcmF3IGVtYWlsOiB0aGUgYW5vbnltb3VzIFNVQk1JVFRFUiAodGhlXG4gICAqICB0cmFuc2FjdGlvbmFsIHN1Ym1pc3Npb24gbm90aWNlcykgYW5kIGFuIG9yZydzIFZFUklGSUVEIGV4dGVybmFsXG4gICAqICBzZWN1cml0eSBhZGRyZXNzICh0aGUgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgTjMw4oCTTjMzKS4gKi9cbiAgYWxsb3dzQWRkcmVzcz86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgbm90aWZpY2F0aW9uIGV2ZW50IHRhYmxlLCBhcyBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTOiBSZWFkb25seTxSZWNvcmQ8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCwgRWNvc3lzdGVtRXZlbnRTcGVjPj4gPSB7XG4gIE4xOiB7IGRlc2NyaXB0aW9uOiAnQW5vbnltb3VzIHN1Ym1pc3Npb24gcmVjZWl2ZWQgKG1hZ2ljIGxpbmspJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMjogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gdmVyaWZpZWQsIGVudGVyZWQgdGhlIG1vZGVyYXRpb24gcXVldWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE4zOiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBmYWlsZWQgYXV0b21hdGVkIGdhdGVzJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBONDogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE41OiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBjbGFpbWVkIGJ5IGFuIGFjY291bnQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBONjogeyBkZXNjcmlwdGlvbjogJ1ZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBzdWJtaXR0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE43OiB7IGRlc2NyaXB0aW9uOiAnVmVyaWZpZWQgYXBwbGljYXRpb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOODogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gYWN0aW9uIG9uIGEgbGlzdGluZyAoc3VzcGVuZCwgeWFuaywgdGFrZWRvd24pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjk6IHsgZGVzY3JpcHRpb246ICdPd25lcnNoaXAgdHJhbnNmZXIgcmVxdWVzdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjEwOiB7IGRlc2NyaXB0aW9uOiAnT3duZXJzaGlwIHRyYW5zZmVyIGFjY2VwdGVkLCBkZWNsaW5lZCwgYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMTE6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIHJlcXVlc3RlZCAocG9saWN5IHJlcXVpcmVzIGFwcHJvdmFsKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTI6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIGFwcHJvdmVkIG9yIGRlbmllZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTM6IHsgZGVzY3JpcHRpb246ICdOZXcgdmVyc2lvbiBhdmFpbGFibGUgd2l0aGluIGFuIGluc3RhbGxcXCdzIHBvbGljeScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJywgZGlnZXN0OiAnd2Vla2x5JyB9LFxuICBOMTQ6IHsgZGVzY3JpcHRpb246ICdMaXN0aW5nIGRlcHJlY2F0ZWQgb3IgdW5tYWludGFpbmVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4xNTogeyBkZXNjcmlwdGlvbjogJ05ldyBvciBlZGl0ZWQgcmV2aWV3IG9uIGEgbGlzdGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnLCBkaWdlc3Q6ICdob3VybHknIH0sXG4gIE4xNjogeyBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hlciByZXBsaWVkIHRvIHlvdXIgcmV2aWV3JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCcgfSxcbiAgTjE3OiB7IGRlc2NyaXB0aW9uOiAnUmV2aWV3IGhlbGQgKHJlcG9ydHMsIGJ1cnN0LCBmaWx0ZXIpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBOMTg6IHsgZGVzY3JpcHRpb246ICdZb3VyIHJldmlldyB3YXMgcmVtb3ZlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4xOTogeyBkZXNjcmlwdGlvbjogJ1JldmlldyBmbGFnZ2VkIGFzIGEgc2VjdXJpdHkgaXNzdWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjA6IHsgZGVzY3JpcHRpb246ICdBZHZpc29yeSBkcmFmdCBhdXRvLWNyZWF0ZWQgKENWRSByZXNjYW4pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIxOiB7IGRlc2NyaXB0aW9uOiAnQWR2aXNvcnkgcHVibGlzaGVkIG9yIHdpdGhkcmF3bicsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMjogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gU0xBIGJyZWFjaCcsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIzOiB7IGRlc2NyaXB0aW9uOiAnQWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI0OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IHN1Ym1pdHRlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjI1OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI2OiB7IGRlc2NyaXB0aW9uOiAnTGlzdGluZyBvciB2ZXJzaW9uIHBhdXNlZCBieSBpdHMgcHVibGlzaGVyJywgY2hhbm5lbHM6IFsnaW5fYXBwJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4yNzogeyBkZXNjcmlwdGlvbjogJ0luc3RhbGxlZCBsaXN0aW5nIGF1dG8tdXBkYXRlZCB3aXRoaW4gaXRzIHJhbmdlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnLCBkaWdlc3Q6ICd3ZWVrbHknIH0sXG4gIE4yODogeyBkZXNjcmlwdGlvbjogJ0EgcmVxdWVzdCBuZWVkcyBhIHNlY29uZCBhcHByb3ZhbCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yOTogeyBkZXNjcmlwdGlvbjogJ1BsYW4gY2hhbmdlIGFmZmVjdHMgcHVibGlzaGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIC8vIFBlci1vcmcgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQgXCJTY2FuIGdhdGVzXCIpLlxuICAvLyBSZWNpcGllbnRzIGZvbGxvdyB0aGUgb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbiBzZXR0aW5nczsgdGhlIG9yZydzXG4gIC8vIHdlYmhvb2sgKGlmIGFueSkgaXMgc2VudCBieSB0aGUgcGx1Z2luIHNlcnZpY2UgaXRzZWxmLiBOMzEncyBlbWFpbCBob25vcnNcbiAgLy8gdGhlIG9yZydzIGRpZ2VzdCBzZXR0aW5nICh0aGUgc2VuZGVyIGJhdGNoZXMgaXQpLCBOMzAgaXMgYWx3YXlzIGltbWVkaWF0ZS5cbiAgTjMwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHZlcnNpb24gYmxvY2tlZCAodW5zY2FubmVkIG9yIGZpeGFibGUgQ3JpdGljYWwpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjMxOiB7IGRlc2NyaXB0aW9uOiAnUmVzY2FuIGZvdW5kIG5ldyBDcml0aWNhbC9IaWdoIGluIGEgcGx1Z2luIHZlcnNpb24nLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICAvLyBQaXBlbGluZS1vd25lciBub3RpY2VzOiBhIGxvb2t1cCAvIHJ1bnRpbWUgY2hlY2sgUkVGVVNFRCBhIHBpcGVsaW5lJ3MgcGx1Z2luXG4gIC8vIHZlcnNpb24gKGRlZHVwbGljYXRlZCBwZXIgcGlwZWxpbmUgKyB2ZXJzaW9uIHBlciBkYXkpLCBhbmQgYSB0aW1lLWJveGVkIHJpc2tcbiAgLy8gYWNjZXB0YW5jZSBvZiBhIHBpcGVsaW5lJ3MgZmluZGluZ3MgTEFQU0VEICh0aGUgZmluZGluZ3MgYXJlIGxpdmUgYWdhaW4pLlxuICAvLyBSb3V0ZWQgdG8gdGhlIG9yZydzIHBpcGVsaW5lIHdyaXRlcnMgdW5kZXIgdGhlIHNhbWUgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIE4zMjogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGJsb2NrZWQgYnkgYSBwbHVnaW4gdnVsbmVyYWJpbGl0eSBwb2xpY3knLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMzM6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSB2dWxuZXJhYmlsaXR5IHJpc2sgYWNjZXB0YW5jZSBsYXBzZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxufTtcblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhIG5vdGlmaWNhdGlvbiBldmVudCBudW1iZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFMsIHZhbHVlKTtcbn1cblxuLyoqIE9yZy1sb2NhbCBwZXJtaXNzaW9ucyBhbiB7QGxpbmsgRWNvc3lzdGVtUmVjaXBpZW50U3BlY30gYG9yZ19wZXJtaXNzaW9uYCBydWxlIG1heSBuYW1lLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbiA9ICdwdWJsaXNoZXJzOm1hbmFnZScgfCAncGx1Z2luX2luc3RhbGxzOm1hbmFnZScgfCAncGx1Z2luczp3cml0ZScgfCAncGlwZWxpbmVzOndyaXRlJztcbi8qKiBTeXN0ZW0tb3JnIHBlcm1pc3Npb25zIGEgYG1vZGVyYXRvcnNgIHJ1bGUgbWF5IG5hbWUuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Nb2RlcmF0b3JQZXJtaXNzaW9uID0gJ3BsdWdpbnM6bW9kZXJhdGUnIHwgJ3B1Ymxpc2hlcnM6dmVyaWZ5JztcblxuLyoqXG4gKiBBIHJlY2lwaWVudCBSVUxFLCByZXNvbHZlZCBieSBwbGF0Zm9ybSBhdCBzZW5kIHRpbWU6XG4gKlxuICogIC0gYHVzZXJgIOKAlCBvbmUgdXNlciAoUmVxdWVzdGVyLCBSZXZpZXcgYXV0aG9yLCB0aGUgYWZmZWN0ZWQgdXNlciBvZiBOMjMpLlxuICogICAgYG9yZ0lkYCBwaWNrcyB0aGUgaW5ib3g7IGRlZmF1bHRzIHRvIHRoZSB1c2VyJ3MgbGFzdCBhY3RpdmUgb3JnLlxuICogIC0gYG9yZ19wZXJtaXNzaW9uYCDigJQgYWN0aXZlIG1lbWJlcnMgb2YgYG9yZ0lkYCBob2xkaW5nIGBwZXJtaXNzaW9uYFxuICogICAgKFB1Ymxpc2hlciBtYW5hZ2VycyA9IGBwdWJsaXNoZXJzOm1hbmFnZWAsIE9yZyBhcHByb3ZlcnMgPVxuICogICAgYHBsdWdpbl9pbnN0YWxsczptYW5hZ2VgLCBwbHVnaW4gd3JpdGVycyA9IGBwbHVnaW5zOndyaXRlYCkuIFdpdGhcbiAqICAgIGBpbmhlcml0RnJvbVJvb3RgLCBhIHRlYW0gd2l0aCBubyBob2xkZXJzIGZhbGxzIGJhY2sgdG8gaXRzIHJvb3Qgb3JnJ3NcbiAqICAgIGhvbGRlcnM7IHdpdGggbm9uZSBhbnl3aGVyZSwgdGhlIG9yZydzIG93bmVycy5cbiAqICAtIGBvcmdfbWVtYmVyc2Ag4oCUIHRoZSBuYW1lZCB1c2VycywgYnV0IG9ubHkgdGhvc2Ugd2hvIGFyZSBBQ1RJVkUgbWVtYmVycyBvZlxuICogICAgYG9yZ0lkYCBhdCBzZW5kIHRpbWUgKGFuIG9yZydzIGNob3NlbiBzZWN1cml0eSByZWNpcGllbnRzOiBhIHN0YWxlIGlkLCBvclxuICogICAgc29tZW9uZSB3aG8gbGVmdCwgcmVjZWl2ZXMgbm90aGluZykuXG4gKiAgLSBgbW9kZXJhdG9yc2Ag4oCUIHRoZSBzeXN0ZW0gb3JnJ3MgaG9sZGVycyBvZiBgcGVybWlzc2lvbmAgKHRoZSBFY29zeXN0ZW1cbiAqICAgIE1hbmFnZXIgcm9sZSksIG1pbnVzIGFueW9uZSB3aXRoIGEgY29uZmxpY3Qgb2YgaW50ZXJlc3QgKG1lbWJlcnMgb2ZcbiAqICAgIGBleGNsdWRlTWVtYmVyc09mT3JnSWRgLCBvciB0aGUgbGlzdGVkIHVzZXJzKTsgc3VwZXJhZG1pbnMgd2hlbiBlbXB0eS5cbiAqICAtIGBzdXBlcmFkbWluc2Ag4oCUIGV2ZXJ5IHBsYXRmb3JtIHN1cGVyYWRtaW4uXG4gKiAgLSBgYWRkcmVzc2Ag4oCUIGEgcmF3IGFkZHJlc3M7IG9ubHkgdGhlIGFub255bW91cyBTVUJNSVRURVIgbm90aWNlcyAoTjEsIE4zLFxuICogICAgTjQpLCB3aG9zZSByZWNpcGllbnQgaGFzIG5vIGFjY291bnQsIGFuZCBhbiBvcmcncyBWRVJJRklFRCBleHRlcm5hbFxuICogICAgc2VjdXJpdHkgYWRkcmVzcyBvbiB0aGUgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgKE4zMOKAk04zMykuXG4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVJlY2lwaWVudFNwZWMgPVxuICB8IHsga2luZDogJ3VzZXInOyB1c2VySWQ6IHN0cmluZzsgb3JnSWQ/OiBzdHJpbmcgfVxuICB8IHsga2luZDogJ29yZ19wZXJtaXNzaW9uJzsgb3JnSWQ6IHN0cmluZzsgcGVybWlzc2lvbjogRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbjsgaW5oZXJpdEZyb21Sb290PzogYm9vbGVhbiB9XG4gIHwgeyBraW5kOiAnb3JnX21lbWJlcnMnOyBvcmdJZDogc3RyaW5nOyB1c2VySWRzOiBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnbW9kZXJhdG9ycyc7IHBlcm1pc3Npb246IEVjb3N5c3RlbU1vZGVyYXRvclBlcm1pc3Npb247IGV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZD86IHN0cmluZzsgZXhjbHVkZVVzZXJJZHM/OiBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnc3VwZXJhZG1pbnMnIH1cbiAgfCB7IGtpbmQ6ICdhZGRyZXNzJzsgZW1haWw6IHN0cmluZyB9O1xuXG4vKiogVGhlIGJvZHkgb2YgYW4gZWNvc3lzdGVtIHNlbmQgdGhyb3VnaCBwbGF0Zm9ybSdzIG5vdGlmeSByZWxheS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB7XG4gIGV2ZW50OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkO1xuICByZWNpcGllbnRzOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjW107XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIFBsYWluLXRleHQgYm9keSAoZW1haWwgYm9keSBhbmQgaW4tYXBwIGNvbnRlbnQpLiAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBTdWJzZXQgb2YgdGhlIGV2ZW50J3MgY2hhbm5lbHMgdG8gZGVsaXZlciBvbiAoZGVmYXVsdDogYWxsIG9mIHRoZW0pLiBUaGVcbiAgICogIGRpZ2VzdCBkaXNwYXRjaGVyIHNlbmRzIGBbJ2VtYWlsJ11gIGJlY2F1c2UgaW4tYXBwIHdlbnQgb3V0IGF0IGVucXVldWUuICovXG4gIGNoYW5uZWxzPzogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdO1xuICAvKiogRGVsaXZlciB0aGUgZW1haWwgZXZlbiB0byB1c2VycyB3aG8gb3B0ZWQgb3V0IOKAlCBmb3IgYW4gZXZlbnQgd2hvc2VcbiAgICogIG5vcm1hbGx5LW9wdGlvbmFsIGVtYWlsIGlzIG1hbmRhdG9yeSBpbiB0aGlzIGluc3RhbmNlIChOMjQgeWFuaywgYWR2aXNvcnlcbiAgICogIGFuZCBzZWN1cml0eS1maXggcmVxdWVzdHMpLiAqL1xuICBtYW5kYXRvcnk/OiBib29sZWFuO1xufVxuXG4vKiogSGFyZCBjYXBzLCBtYXRjaGluZyB0aGUgbWVzc2FnZSBzZXJ2aWNlJ3Mgb3duIGxpbWl0cy4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYID0gNTAwO1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVggPSAxMDAwMDtcbmNvbnN0IE1BWF9SRUNJUElFTlRfUlVMRVMgPSA1MDtcblxuY29uc3QgT1JHX1BFUk1JU1NJT05TOiByZWFkb25seSBzdHJpbmdbXSA9IFsncHVibGlzaGVyczptYW5hZ2UnLCAncGx1Z2luX2luc3RhbGxzOm1hbmFnZScsICdwbHVnaW5zOndyaXRlJywgJ3BpcGVsaW5lczp3cml0ZSddO1xuLyoqIEF0IG1vc3QgdGhpcyBtYW55IHVzZXJzIGluIG9uZSBgb3JnX21lbWJlcnNgIHJ1bGUuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX09SR19NRU1CRVJTX01BWCA9IDEwMDtcbmNvbnN0IE1PREVSQVRPUl9QRVJNSVNTSU9OUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3BsdWdpbnM6bW9kZXJhdGUnLCAncHVibGlzaGVyczp2ZXJpZnknXTtcbmNvbnN0IEVNQUlMX1NIQVBFID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG5cbmZ1bmN0aW9uIG5vbkVtcHR5U3RyaW5nKHY6IHVua25vd24sIG1heCA9IDI1NSk6IHYgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2LnRyaW0oKS5sZW5ndGggPiAwICYmIHYubGVuZ3RoIDw9IG1heDtcbn1cblxuZnVuY3Rpb24gcGFyc2VSZWNpcGllbnQocmF3OiB1bmtub3duLCBzcGVjOiBFY29zeXN0ZW1FdmVudFNwZWMpOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjIHwgc3RyaW5nIHtcbiAgaWYgKCFyYXcgfHwgdHlwZW9mIHJhdyAhPT0gJ29iamVjdCcpIHJldHVybiAnZWFjaCByZWNpcGllbnQgbXVzdCBiZSBhbiBvYmplY3QnO1xuICBjb25zdCByID0gcmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBzd2l0Y2ggKHIua2luZCkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLnVzZXJJZCkpIHJldHVybiAndXNlciByZWNpcGllbnQgbmVlZHMgdXNlcklkJztcbiAgICAgIGlmIChyLm9yZ0lkICE9PSB1bmRlZmluZWQgJiYgIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ3VzZXIgcmVjaXBpZW50IG9yZ0lkIG11c3QgYmUgYSBzdHJpbmcnO1xuICAgICAgcmV0dXJuIHsga2luZDogJ3VzZXInLCB1c2VySWQ6IHIudXNlcklkLCAuLi4oci5vcmdJZCA/IHsgb3JnSWQ6IHIub3JnSWQgYXMgc3RyaW5nIH0gOiB7fSkgfTtcbiAgICBjYXNlICdvcmdfcGVybWlzc2lvbic6XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ29yZ19wZXJtaXNzaW9uIHJlY2lwaWVudCBuZWVkcyBvcmdJZCc7XG4gICAgICBpZiAodHlwZW9mIHIucGVybWlzc2lvbiAhPT0gJ3N0cmluZycgfHwgIU9SR19QRVJNSVNTSU9OUy5pbmNsdWRlcyhyLnBlcm1pc3Npb24pKSByZXR1cm4gJ29yZ19wZXJtaXNzaW9uIHJlY2lwaWVudCBuYW1lcyBhbiB1bnN1cHBvcnRlZCBwZXJtaXNzaW9uJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdvcmdfcGVybWlzc2lvbicsXG4gICAgICAgIG9yZ0lkOiByLm9yZ0lkLFxuICAgICAgICBwZXJtaXNzaW9uOiByLnBlcm1pc3Npb24gYXMgRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbixcbiAgICAgICAgLi4uKHIuaW5oZXJpdEZyb21Sb290ID09PSB0cnVlID8geyBpbmhlcml0RnJvbVJvb3Q6IHRydWUgfSA6IHt9KSxcbiAgICAgIH07XG4gICAgY2FzZSAnb3JnX21lbWJlcnMnOiB7XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ29yZ19tZW1iZXJzIHJlY2lwaWVudCBuZWVkcyBvcmdJZCc7XG4gICAgICBjb25zdCB1c2VycyA9IHIudXNlcklkcztcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh1c2VycykgfHwgdXNlcnMubGVuZ3RoID09PSAwIHx8ICF1c2Vycy5ldmVyeSgodSkgPT4gbm9uRW1wdHlTdHJpbmcodSkpKSByZXR1cm4gJ29yZ19tZW1iZXJzIHJlY2lwaWVudCBuZWVkcyBhIG5vbi1lbXB0eSB1c2VySWRzIGFycmF5JztcbiAgICAgIGlmICh1c2Vycy5sZW5ndGggPiBFQ09TWVNURU1fT1JHX01FTUJFUlNfTUFYKSByZXR1cm4gYG9yZ19tZW1iZXJzIHJlY2lwaWVudCBuYW1lcyBhdCBtb3N0ICR7RUNPU1lTVEVNX09SR19NRU1CRVJTX01BWH0gdXNlcnNgO1xuICAgICAgcmV0dXJuIHsga2luZDogJ29yZ19tZW1iZXJzJywgb3JnSWQ6IHIub3JnSWQsIHVzZXJJZHM6IFsuLi5uZXcgU2V0KHVzZXJzIGFzIHN0cmluZ1tdKV0gfTtcbiAgICB9XG4gICAgY2FzZSAnbW9kZXJhdG9ycyc6IHtcbiAgICAgIGlmICh0eXBlb2Ygci5wZXJtaXNzaW9uICE9PSAnc3RyaW5nJyB8fCAhTU9ERVJBVE9SX1BFUk1JU1NJT05TLmluY2x1ZGVzKHIucGVybWlzc2lvbikpIHJldHVybiAnbW9kZXJhdG9ycyByZWNpcGllbnQgbmFtZXMgYW4gdW5zdXBwb3J0ZWQgcGVybWlzc2lvbic7XG4gICAgICBpZiAoci5leGNsdWRlTWVtYmVyc09mT3JnSWQgIT09IHVuZGVmaW5lZCAmJiAhbm9uRW1wdHlTdHJpbmcoci5leGNsdWRlTWVtYmVyc09mT3JnSWQpKSByZXR1cm4gJ2V4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCBtdXN0IGJlIGEgc3RyaW5nJztcbiAgICAgIGNvbnN0IGV4Y2x1ZGUgPSByLmV4Y2x1ZGVVc2VySWRzO1xuICAgICAgaWYgKGV4Y2x1ZGUgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoZXhjbHVkZSkgfHwgIWV4Y2x1ZGUuZXZlcnkoKHUpID0+IG5vbkVtcHR5U3RyaW5nKHUpKSkpIHJldHVybiAnZXhjbHVkZVVzZXJJZHMgbXVzdCBiZSBhbiBhcnJheSBvZiBpZHMnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ21vZGVyYXRvcnMnLFxuICAgICAgICBwZXJtaXNzaW9uOiByLnBlcm1pc3Npb24gYXMgRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbixcbiAgICAgICAgLi4uKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkID8geyBleGNsdWRlTWVtYmVyc09mT3JnSWQ6IHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkIGFzIHN0cmluZyB9IDoge30pLFxuICAgICAgICAuLi4oZXhjbHVkZSA/IHsgZXhjbHVkZVVzZXJJZHM6IGV4Y2x1ZGUgYXMgc3RyaW5nW10gfSA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3N1cGVyYWRtaW5zJzpcbiAgICAgIHJldHVybiB7IGtpbmQ6ICdzdXBlcmFkbWlucycgfTtcbiAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgIGlmICghc3BlYy5hbGxvd3NBZGRyZXNzKSByZXR1cm4gJ2FkZHJlc3MgcmVjaXBpZW50cyBhcmUgb25seSBhbGxvd2VkIGZvciBhbm9ueW1vdXMtc3VibWlzc2lvbiBhbmQgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMnO1xuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLmVtYWlsLCAzMjApIHx8ICFFTUFJTF9TSEFQRS50ZXN0KHIuZW1haWwpKSByZXR1cm4gJ2FkZHJlc3MgcmVjaXBpZW50IG5lZWRzIGEgdmFsaWQgZW1haWwnO1xuICAgICAgcmV0dXJuIHsga2luZDogJ2FkZHJlc3MnLCBlbWFpbDogci5lbWFpbC50cmltKCkudG9Mb3dlckNhc2UoKSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ3Vua25vd24gcmVjaXBpZW50IGtpbmQnO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW4ge0BsaW5rIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3R9LiBSZXR1cm5zIHRoZSBub3JtYWxpemVkIHJlcXVlc3QsXG4gKiBvciBhbiBlcnJvciBzdHJpbmcgKHRoZSByZWxheSdzIDQwMCkuIFB1cmUsIHNvIGJvdGggdGhlIHNlbmRlciAoZmFpbCBhdFxuICogZW5xdWV1ZSwgbm90IGF0IDA5OjAwIHRvbW9ycm93KSBhbmQgdGhlIHJlbGF5IHVzZSB0aGUgc2FtZSBydWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdChib2R5OiB1bmtub3duKTogRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB8IHN0cmluZyB7XG4gIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHJldHVybiAnYm9keSBtdXN0IGJlIGFuIG9iamVjdCc7XG4gIGNvbnN0IGIgPSBib2R5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAoIWlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQoYi5ldmVudCkpIHJldHVybiAnZXZlbnQgbXVzdCBiZSBvbmUgb2YgTjEuLk4zMyc7XG4gIGNvbnN0IHNwZWMgPSBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UU1tiLmV2ZW50XTtcbiAgaWYgKCFub25FbXB0eVN0cmluZyhiLnN1YmplY3QsIEVDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVgpKSByZXR1cm4gYHN1YmplY3QgaXMgcmVxdWlyZWQgKG1heCAke0VDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVh9KWA7XG4gIGlmICghbm9uRW1wdHlTdHJpbmcoYi50ZXh0LCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYKSkgcmV0dXJuIGB0ZXh0IGlzIHJlcXVpcmVkIChtYXggJHtFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYfSlgO1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYi5yZWNpcGllbnRzKSB8fCBiLnJlY2lwaWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ3JlY2lwaWVudHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSc7XG4gIGlmIChiLnJlY2lwaWVudHMubGVuZ3RoID4gTUFYX1JFQ0lQSUVOVF9SVUxFUykgcmV0dXJuIGBhdCBtb3N0ICR7TUFYX1JFQ0lQSUVOVF9SVUxFU30gcmVjaXBpZW50IHJ1bGVzYDtcbiAgY29uc3QgcmVjaXBpZW50czogRWNvc3lzdGVtUmVjaXBpZW50U3BlY1tdID0gW107XG4gIGZvciAoY29uc3QgcmF3IG9mIGIucmVjaXBpZW50cykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmVjaXBpZW50KHJhdywgc3BlYyk7XG4gICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdzdHJpbmcnKSByZXR1cm4gcGFyc2VkO1xuICAgIHJlY2lwaWVudHMucHVzaChwYXJzZWQpO1xuICB9XG4gIGxldCBjaGFubmVsczogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdIHwgdW5kZWZpbmVkO1xuICBpZiAoYi5jaGFubmVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGIuY2hhbm5lbHMpIHx8IGIuY2hhbm5lbHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ2NoYW5uZWxzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknO1xuICAgIGNvbnN0IGJhZCA9IGIuY2hhbm5lbHMuZmlsdGVyKChjKSA9PiAhc3BlYy5jaGFubmVscy5pbmNsdWRlcyhjIGFzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWwpKTtcbiAgICBpZiAoYmFkLmxlbmd0aCA+IDApIHJldHVybiBgZXZlbnQgJHtiLmV2ZW50fSBpcyBub3QgZGVsaXZlcmVkIG9uOiAke2JhZC5qb2luKCcsICcpfWA7XG4gICAgY2hhbm5lbHMgPSBbLi4ubmV3IFNldChiLmNoYW5uZWxzIGFzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXSldO1xuICB9XG4gIGlmIChiLm1hbmRhdG9yeSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBiLm1hbmRhdG9yeSAhPT0gJ2Jvb2xlYW4nKSByZXR1cm4gJ21hbmRhdG9yeSBtdXN0IGJlIGEgYm9vbGVhbic7XG4gIHJldHVybiB7XG4gICAgZXZlbnQ6IGIuZXZlbnQsXG4gICAgcmVjaXBpZW50cyxcbiAgICBzdWJqZWN0OiBiLnN1YmplY3QudHJpbSgpLFxuICAgIHRleHQ6IGIudGV4dC50cmltKCksXG4gICAgLi4uKGNoYW5uZWxzID8geyBjaGFubmVscyB9IDoge30pLFxuICAgIC4uLihiLm1hbmRhdG9yeSA9PT0gdHJ1ZSA/IHsgbWFuZGF0b3J5OiB0cnVlIH0gOiB7fSksXG4gIH07XG59XG5cbi8qKiBUaGUgVVRDIGhvdXIgZGlnZXN0cyBmbHVzaCBhdCAoXCJkYWlseSBkaWdlc3QgZW1haWwgKDA5OjAwIFVUQylcIikuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX0RJR0VTVF9IT1VSX1VUQyA9IDk7XG5cbi8qKlxuICogVGhlIG5leHQgZmx1c2ggdGltZSBmb3IgYSBkaWdlc3QgY2FkZW5jZSwgc3RyaWN0bHkgYWZ0ZXIgYG5vd2A6XG4gKiBgaG91cmx5YCDihpIgdGhlIG5leHQgdG9wIG9mIHRoZSBob3VyOyBgZGFpbHlgIOKGkiB0aGUgbmV4dCAwOTowMCBVVEM7XG4gKiBgd2Vla2x5YCDihpIgdGhlIG5leHQgTW9uZGF5IDA5OjAwIFVUQy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lKGNhZGVuY2U6IEVjb3N5c3RlbURpZ2VzdENhZGVuY2UsIG5vdzogRGF0ZSA9IG5ldyBEYXRlKCkpOiBEYXRlIHtcbiAgY29uc3QgdCA9IG5ldyBEYXRlKG5vdy5nZXRUaW1lKCkpO1xuICBpZiAoY2FkZW5jZSA9PT0gJ2hvdXJseScpIHtcbiAgICB0LnNldFVUQ01pbnV0ZXMoMCwgMCwgMCk7XG4gICAgdC5zZXRVVENIb3Vycyh0LmdldFVUQ0hvdXJzKCkgKyAxKTtcbiAgICByZXR1cm4gdDtcbiAgfVxuICB0LnNldFVUQ0hvdXJzKEVDT1NZU1RFTV9ESUdFU1RfSE9VUl9VVEMsIDAsIDAsIDApO1xuICBpZiAodC5nZXRUaW1lKCkgPD0gbm93LmdldFRpbWUoKSkgdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5Jykge1xuICAgIC8vIGdldFVUQ0RheTogMCA9IFN1bmRheSDigKYgMSA9IE1vbmRheS5cbiAgICB3aGlsZSAodC5nZXRVVENEYXkoKSAhPT0gMSkgdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVtcGxhdGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEEgcmVuZGVyZWQgbm90aWNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50IHtcbiAgc3ViamVjdDogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTjIzIOKAlCBzb21lb25lIHdhcyBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIHN5c3RlbSBvcmcncyBFY29zeXN0ZW1cbiAqIE1hbmFnZXIgcm9sZS4gU2VudCB0byBldmVyeSBzdXBlcmFkbWluIGFuZCB0byB0aGUgYWZmZWN0ZWQgdXNlcjtcbiAqIHRyYW5zYWN0aW9uYWwgKG5vIG9wdC1vdXQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRWNvc3lzdGVtTWFuYWdlckNoYW5nZShpbnB1dDoge1xuICAvKiogVGhlIGFmZmVjdGVkIHVzZXIncyBkaXNwbGF5IG5hbWUgb3IgZW1haWwuICovXG4gIHVzZXI6IHN0cmluZztcbiAgYWRkZWQ6IGJvb2xlYW47XG4gIC8qKiBXaG8gbWFkZSB0aGUgY2hhbmdlIChzdXBlcmFkbWlucyBvbmx5IGNhbiksIHdoZW4ga25vd24uICovXG4gIGFjdG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFJvbGUgYWN0dWFsbHkgZ3JhbnRlZC4gVGhpcyBub3RpY2UgZmlyZXMgZm9yIEFOWSBSb2xlIGNhcnJ5aW5nIGFcbiAgICogc3lzdGVtLW9yZy1vbmx5IHBlcm1pc3Npb24g4oCUIGBlY29zeXN0ZW1Sb2xlTmFtZWAgcmV0dXJucyB3aGljaGV2ZXIgb25lIGl0XG4gICAqIGlzIOKAlCBzbyBoYXJkLWNvZGluZyBcIkVjb3N5c3RlbSBNYW5hZ2VyXCIgYW5ub3VuY2VkIHN0YWZmaW5nICoqQ29uc29sZVxuICAgKiBBZG1pbmlzdHJhdG9yKiogKGEgcmVhZC93cml0ZSBzaGVsbCBvdmVyIGV2ZXJ5IHRlbmFudCdzIHJvd3MpIG9yICoqU3VwcG9ydFxuICAgKiBMZWFkKiogKGBpbXBlcnNvbmF0aW9uOm9wZW5gKSBhcyBhIHBsdWdpbi1tb2RlcmF0aW9uIGdyYW50LiBUaGUgYXVkaXQgcm93XG4gICAqIGhhZCB0aGUgbmFtZSBhbGwgYWxvbmc7IHRoZSBtZXNzYWdlIG9wZXJhdG9ycyBhY3R1YWxseSByZWFkIGRpZCBub3QuXG4gICAqL1xuICByb2xlPzogc3RyaW5nO1xufSk6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnQge1xuICBjb25zdCB2ZXJiID0gaW5wdXQuYWRkZWQgPyAnYWRkZWQgdG8nIDogJ3JlbW92ZWQgZnJvbSc7XG4gIGNvbnN0IGJ5ID0gaW5wdXQuYWN0b3IgPyBgIGJ5ICR7aW5wdXQuYWN0b3J9YCA6ICcnO1xuICBjb25zdCByb2xlID0gaW5wdXQucm9sZSA/PyAnRWNvc3lzdGVtIE1hbmFnZXInO1xuICAvLyBUaGUgYm9keSBkZXNjcmliZXMgd2hhdCB0aGUgUk9MRSBkb2VzLCBzbyBpdCBjYW4gb25seSBzcGVhayBmb3IgdGhlIG9uZSBpdFxuICAvLyB3YXMgd3JpdHRlbiBhYm91dC4gRm9yIGFueSBvdGhlciwgc2F5IHdoYXQgaGFwcGVuZWQgYW5kIGxlYXZlIHRoZVxuICAvLyBjYXBhYmlsaXRpZXMgdG8gdGhlIFJvbGUgaXRzZWxmIHJhdGhlciB0aGFuIGRlc2NyaWJpbmcgdGhlIHdyb25nIG9uZXMuXG4gIGNvbnN0IGVjb3N5c3RlbSA9IHJvbGUgPT09ICdFY29zeXN0ZW0gTWFuYWdlcic7XG4gIHJldHVybiB7XG4gICAgc3ViamVjdDogYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlICR7cm9sZX0gcm9sZWAsXG4gICAgdGV4dDogaW5wdXQuYWRkZWRcbiAgICAgID8gYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlICR7cm9sZX0gcm9sZSR7Ynl9LmBcbiAgICAgICAgKyAoZWNvc3lzdGVtXG4gICAgICAgICAgPyAnIEVjb3N5c3RlbSBNYW5hZ2VycyBkZWNpZGUgcHVibGlzaCByZXF1ZXN0cywgbW9kZXJhdGUgc3VibWlzc2lvbnMgYW5kIHJldmlld3MsIHZlcmlmeSBwdWJsaXNoZXJzJ1xuICAgICAgICAgICAgKyAnIGFuZCBwdWJsaXNoIGFkdmlzb3JpZXMgZm9yIHRoZSB3aG9sZSBwbHVnaW4gZWNvc3lzdGVtLidcbiAgICAgICAgICA6ICcgSXQgY2FycmllcyBzeXN0ZW0tb3JnLW9ubHkgcGVybWlzc2lvbnMuJylcbiAgICAgICAgKyAnIFRoZSByb2xlIHdvcmtzIG9ubHkgZnJvbSB0aGUgc3lzdGVtIG9yZ2FuaXphdGlvbiBhbmQgcmVxdWlyZXMgYSB0d28tZmFjdG9yIHNpZ24taW4uJ1xuICAgICAgOiBgJHtpbnB1dC51c2VyfSB3YXMgJHt2ZXJifSB0aGUgJHtyb2xlfSByb2xlJHtieX1gXG4gICAgICAgICsgKGVjb3N5c3RlbSA/ICcgYW5kIGNhbiBubyBsb25nZXIgbWFuYWdlIG9yIGFwcHJvdmUgYW55dGhpbmcgaW4gdGhlIHBsdWdpbiBlY29zeXN0ZW0uJyA6ICcuJyksXG4gIH07XG59XG5cbi8qKlxuICogQ29hbGVzY2Ugc2V2ZXJhbCBxdWV1ZWQgbm90aWNlcyBpbnRvIG9uZSBkaWdlc3QgZW1haWw6IGEgY291bnQtYmVhcmluZ1xuICogc3ViamVjdCBhbmQgb25lIGxpbmUgcGVyIGl0ZW0gKGVhY2ggaXRlbSdzIHN1YmplY3QpLCBvbGRlc3QgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFY29zeXN0ZW1EaWdlc3QoXG4gIGV2ZW50OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkLFxuICBpdGVtczogcmVhZG9ubHkgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudFtdLFxuKTogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIGlmIChpdGVtcy5sZW5ndGggPT09IDEpIHJldHVybiBpdGVtc1swXSE7XG4gIGNvbnN0IHNwZWMgPSBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UU1tldmVudF07XG4gIGNvbnN0IGNhZGVuY2UgPSBzcGVjLmRpZ2VzdCA9PT0gJ2hvdXJseScgPyAnSG91cmx5JyA6IHNwZWMuZGlnZXN0ID09PSAnd2Vla2x5JyA/ICdXZWVrbHknIDogJ0RhaWx5JztcbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiBgJHtjYWRlbmNlfSBkaWdlc3Q6ICR7aXRlbXMubGVuZ3RofSDDlyAke3NwZWMuZGVzY3JpcHRpb259YC5zbGljZSgwLCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYKSxcbiAgICB0ZXh0OiBpdGVtcy5tYXAoKGkpID0+IGDigKIgJHtpLnN1YmplY3R9YCkuam9pbignXFxuJykuc2xpY2UoMCwgRUNPU1lTVEVNX05PVElGWV9URVhUX01BWCksXG4gIH07XG59XG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lY29zeXN0ZW0tbm90aWZpY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBZ0N0QzswRUFDMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQThFO0lBQzFILHlCQUF5QixFQUFFLGNBQWM7SUFDekMsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQywwQkFBMEIsRUFBRSxlQUFlO0lBQzNDLGtDQUFrQyxFQUFFLHVCQUF1QjtDQUM1RCxDQUFDO0FBS0YscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUF3Qm5ELDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBdUU7SUFDL0csRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLDRDQUE0QyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRTtJQUM3SCxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsbURBQW1ELEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ3hLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxtQ0FBbUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDcEgsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFB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QUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztLQUN4RixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBwbHVnaW4tZWNvc3lzdGVtIG5vdGlmaWNhdGlvbiBjb250cmFjdCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCksXG4gKiBzaGFyZWQgYnkgdGhlIHNlbmRlciAodGhlIHBsdWdpbiBzZXJ2aWNlJ3MgZW5xdWV1ZSBBUEkgYW5kIGRpZ2VzdFxuICogZGlzcGF0Y2hlcikgYW5kIHRoZSByZWxheSAocGxhdGZvcm0gYFBPU1QgL2ludGVybmFsL25vdGlmeS1lbWFpbGApLlxuICpcbiAqIFJlY2lwaWVudHMgdHJhdmVsIGFzIFJVTEVTLCBuZXZlciBhcyBsaXN0czogcGxhdGZvcm0gcmVzb2x2ZXMgZWFjaFxuICoge0BsaW5rIEVjb3N5c3RlbVJlY2lwaWVudFNwZWN9IGFnYWluc3QgaXRzIHVzZXIvUm9sZSBkaXJlY3RvcnkgQVQgU0VORCBUSU1FLFxuICogc28gYSBkaWdlc3QgdGhhdCBmbHVzaGVzIHRvbW9ycm93IHJlYWNoZXMgdG9tb3Jyb3cncyBtb2RlcmF0b3JzLCB0aGUgcGx1Z2luXG4gKiBzZXJ2aWNlIG5ldmVyIGhhbmRsZXMgYW4gZW1haWwgYWRkcmVzcyBvciBhIG1lbWJlcnNoaXAgbGlzdCwgYW5kIGEgcHVibGlzaGVyXG4gKiBjYW4gbmV2ZXIgbGVhcm4gd2hvIGluc3RhbGxlZCB0aGVpciBwbHVnaW4gKHRoZSByZWxheSBtYWlscyBlYWNoIHJlY2lwaWVudFxuICogaW5kaXZpZHVhbGx5IOKAlCBubyBzaGFyZWQgVG86IGxpbmUpLlxuICovXG5cbi8qKiBBIG5vdGlmaWNhdGlvbiBldmVudCBudW1iZXIuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkID1cbiAgfCAnTjEnIHwgJ04yJyB8ICdOMycgfCAnTjQnIHwgJ041JyB8ICdONicgfCAnTjcnIHwgJ044JyB8ICdOOScgfCAnTjEwJ1xuICB8ICdOMTEnIHwgJ04xMicgfCAnTjEzJyB8ICdOMTQnIHwgJ04xNScgfCAnTjE2JyB8ICdOMTcnIHwgJ04xOCcgfCAnTjE5JyB8ICdOMjAnXG4gIHwgJ04yMScgfCAnTjIyJyB8ICdOMjMnIHwgJ04yNCcgfCAnTjI1JyB8ICdOMjYnIHwgJ04yNycgfCAnTjI4JyB8ICdOMjknXG4gIHwgJ04zMCcgfCAnTjMxJyB8ICdOMzInIHwgJ04zMycgfCAnTjM0JztcblxuLyoqIEEgZGVsaXZlcnkgY2hhbm5lbC4gSW4tYXBwIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGg7IGVtYWlsIGlzIHRoZSBjb3VydGVzeSBjb3B5LiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCA9ICdpbl9hcHAnIHwgJ2VtYWlsJztcblxuLyoqIEEgcGVyLXVzZXIgRU1BSUwgb3B0LW91dCBrZXkuIEluLWFwcCBpcyBuZXZlciBvcHRpb25hbC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSA9XG4gIHwgJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJ1xuICB8ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnXG4gIHwgJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCdcbiAgfCAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnO1xuXG4vKiogVGhlIGZpZWxkIGVhY2ggcHJlZmVyZW5jZSBrZXkgaXMgc3RvcmVkIHVuZGVyIGluIHRoZSB1c2VyJ3MgcGVyLW9yZ1xuICogIGBub3RpZmljYXRpb25zLmVjb3N5c3RlbWAgcHJlZmVyZW5jZXMgKHBsYXRmb3JtIGBVc2VyUHJlZmVyZW5jZXNgKS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFM6IFJlYWRvbmx5PFJlY29yZDxFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UsIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkPj4gPSB7XG4gICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCc6ICdyZXZpZXdzRW1haWwnLFxuICAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJzogJ3VwZ3JhZGVzRW1haWwnLFxuICAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJzogJ2luc3RhbGxzRW1haWwnLFxuICAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnOiAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJyxcbn07XG5cbi8qKiBTdG9yZWQgZmllbGQgbmFtZXMgb2YgdGhlIGVjb3N5c3RlbSBlbWFpbCBwcmVmZXJlbmNlcyAoYWxsIGRlZmF1bHQgYHRydWVgKS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkID0gJ3Jldmlld3NFbWFpbCcgfCAndXBncmFkZXNFbWFpbCcgfCAnaW5zdGFsbHNFbWFpbCcgfCAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJztcblxuLyoqIEV2ZXJ5IHN0b3JlZCBlY29zeXN0ZW0gZW1haWwtcHJlZmVyZW5jZSBmaWVsZC4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRF9OQU1FUzogcmVhZG9ubHkgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGRbXSA9XG4gIE9iamVjdC52YWx1ZXMoRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTKTtcblxuLyoqIEhvdyBvZnRlbiBhIGJhdGNoZWQgZW1haWwgaXMgZmx1c2hlZC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbURpZ2VzdENhZGVuY2UgPSAnaG91cmx5JyB8ICdkYWlseScgfCAnd2Vla2x5JztcblxuLyoqIE9uZSBldmVudCdzIGRlbGl2ZXJ5IHJ1bGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1FdmVudFNwZWMge1xuICAvKiogT25lLWxpbmUgZGVzY3JpcHRpb24gKGRvY3MsIGxvZ3MpLiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQ2hhbm5lbHMgdGhlIGV2ZW50IGlzIGRlbGl2ZXJlZCBvbi4gKi9cbiAgY2hhbm5lbHM6IHJlYWRvbmx5IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXTtcbiAgLyoqXG4gICAqIEVtYWlsIG9wdC1vdXQga2V5LCBvciBgbnVsbGAgd2hlbiB0aGUgZW1haWwgaXMgVFJBTlNBQ1RJT05BTCAvIHNlY3VyaXR5XG4gICAqIChOMSwgTjPigJNONSwgTjfigJNOMTAsIE4xOOKAk04yMywgTjI1LCBOMjjigJNOMzQgY2FuJ3QgYmUgdHVybmVkIG9mZikuXG4gICAqL1xuICBwcmVmZXJlbmNlOiBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UgfCBudWxsO1xuICAvKiogV2hlbiB0aGUgZW1haWwgaXMgYmF0Y2hlZCByYXRoZXIgdGhhbiBpbW1lZGlhdGUsIGl0cyBjYWRlbmNlLiAqL1xuICBkaWdlc3Q/OiBFY29zeXN0ZW1EaWdlc3RDYWRlbmNlO1xuICAvKiogQWxsb3dlZCB0byBhZGRyZXNzIGEgcmF3IGVtYWlsOiB0aGUgYW5vbnltb3VzIFNVQk1JVFRFUiAodGhlXG4gICAqICB0cmFuc2FjdGlvbmFsIHN1Ym1pc3Npb24gbm90aWNlcykgYW5kIGFuIG9yZydzIFZFUklGSUVEIGV4dGVybmFsXG4gICAqICBzZWN1cml0eSBhZGRyZXNzICh0aGUgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgTjMw4oCTTjMzKS4gKi9cbiAgYWxsb3dzQWRkcmVzcz86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgbm90aWZpY2F0aW9uIGV2ZW50IHRhYmxlLCBhcyBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTOiBSZWFkb25seTxSZWNvcmQ8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCwgRWNvc3lzdGVtRXZlbnRTcGVjPj4gPSB7XG4gIE4xOiB7IGRlc2NyaXB0aW9uOiAnQW5vbnltb3VzIHN1Ym1pc3Npb24gcmVjZWl2ZWQgKG1hZ2ljIGxpbmspJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMjogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gdmVyaWZpZWQsIGVudGVyZWQgdGhlIG1vZGVyYXRpb24gcXVldWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE4zOiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBmYWlsZWQgYXV0b21hdGVkIGdhdGVzJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBONDogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE41OiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBjbGFpbWVkIGJ5IGFuIGFjY291bnQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBONjogeyBkZXNjcmlwdGlvbjogJ1ZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBzdWJtaXR0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE43OiB7IGRlc2NyaXB0aW9uOiAnVmVyaWZpZWQgYXBwbGljYXRpb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOODogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gYWN0aW9uIG9uIGEgbGlzdGluZyAoc3VzcGVuZCwgeWFuaywgdGFrZWRvd24pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjk6IHsgZGVzY3JpcHRpb246ICdPd25lcnNoaXAgdHJhbnNmZXIgcmVxdWVzdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjEwOiB7IGRlc2NyaXB0aW9uOiAnT3duZXJzaGlwIHRyYW5zZmVyIGFjY2VwdGVkLCBkZWNsaW5lZCwgYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMTE6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIHJlcXVlc3RlZCAocG9saWN5IHJlcXVpcmVzIGFwcHJvdmFsKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTI6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIGFwcHJvdmVkIG9yIGRlbmllZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTM6IHsgZGVzY3JpcHRpb246ICdOZXcgdmVyc2lvbiBhdmFpbGFibGUgd2l0aGluIGFuIGluc3RhbGxcXCdzIHBvbGljeScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJywgZGlnZXN0OiAnd2Vla2x5JyB9LFxuICBOMTQ6IHsgZGVzY3JpcHRpb246ICdMaXN0aW5nIGRlcHJlY2F0ZWQgb3IgdW5tYWludGFpbmVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4xNTogeyBkZXNjcmlwdGlvbjogJ05ldyBvciBlZGl0ZWQgcmV2aWV3IG9uIGEgbGlzdGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnLCBkaWdlc3Q6ICdob3VybHknIH0sXG4gIE4xNjogeyBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hlciByZXBsaWVkIHRvIHlvdXIgcmV2aWV3JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCcgfSxcbiAgTjE3OiB7IGRlc2NyaXB0aW9uOiAnUmV2aWV3IGhlbGQgKHJlcG9ydHMsIGJ1cnN0LCBmaWx0ZXIpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBOMTg6IHsgZGVzY3JpcHRpb246ICdZb3VyIHJldmlldyB3YXMgcmVtb3ZlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4xOTogeyBkZXNjcmlwdGlvbjogJ1JldmlldyBmbGFnZ2VkIGFzIGEgc2VjdXJpdHkgaXNzdWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjA6IHsgZGVzY3JpcHRpb246ICdBZHZpc29yeSBkcmFmdCBhdXRvLWNyZWF0ZWQgKENWRSByZXNjYW4pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIxOiB7IGRlc2NyaXB0aW9uOiAnQWR2aXNvcnkgcHVibGlzaGVkIG9yIHdpdGhkcmF3bicsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMjogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gU0xBIGJyZWFjaCcsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIzOiB7IGRlc2NyaXB0aW9uOiAnQWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI0OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IHN1Ym1pdHRlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjI1OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI2OiB7IGRlc2NyaXB0aW9uOiAnTGlzdGluZyBvciB2ZXJzaW9uIHBhdXNlZCBieSBpdHMgcHVibGlzaGVyJywgY2hhbm5lbHM6IFsnaW5fYXBwJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4yNzogeyBkZXNjcmlwdGlvbjogJ0luc3RhbGxlZCBsaXN0aW5nIGF1dG8tdXBkYXRlZCB3aXRoaW4gaXRzIHJhbmdlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnLCBkaWdlc3Q6ICd3ZWVrbHknIH0sXG4gIE4yODogeyBkZXNjcmlwdGlvbjogJ0EgcmVxdWVzdCBuZWVkcyBhIHNlY29uZCBhcHByb3ZhbCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yOTogeyBkZXNjcmlwdGlvbjogJ1BsYW4gY2hhbmdlIGFmZmVjdHMgcHVibGlzaGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIC8vIFBlci1vcmcgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQgXCJTY2FuIGdhdGVzXCIpLlxuICAvLyBSZWNpcGllbnRzIGZvbGxvdyB0aGUgb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbiBzZXR0aW5nczsgdGhlIG9yZydzXG4gIC8vIHdlYmhvb2sgKGlmIGFueSkgaXMgc2VudCBieSB0aGUgcGx1Z2luIHNlcnZpY2UgaXRzZWxmLiBOMzEncyBlbWFpbCBob25vcnNcbiAgLy8gdGhlIG9yZydzIGRpZ2VzdCBzZXR0aW5nICh0aGUgc2VuZGVyIGJhdGNoZXMgaXQpLCBOMzAgaXMgYWx3YXlzIGltbWVkaWF0ZS5cbiAgTjMwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHZlcnNpb24gYmxvY2tlZCAodW5zY2FubmVkIG9yIGZpeGFibGUgQ3JpdGljYWwpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjMxOiB7IGRlc2NyaXB0aW9uOiAnUmVzY2FuIGZvdW5kIG5ldyBDcml0aWNhbC9IaWdoIGluIGEgcGx1Z2luIHZlcnNpb24nLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICAvLyBQaXBlbGluZS1vd25lciBub3RpY2VzOiBhIGxvb2t1cCAvIHJ1bnRpbWUgY2hlY2sgUkVGVVNFRCBhIHBpcGVsaW5lJ3MgcGx1Z2luXG4gIC8vIHZlcnNpb24gKGRlZHVwbGljYXRlZCBwZXIgcGlwZWxpbmUgKyB2ZXJzaW9uIHBlciBkYXkpLCBhbmQgYSB0aW1lLWJveGVkIHJpc2tcbiAgLy8gYWNjZXB0YW5jZSBvZiBhIHBpcGVsaW5lJ3MgZmluZGluZ3MgTEFQU0VEICh0aGUgZmluZGluZ3MgYXJlIGxpdmUgYWdhaW4pLlxuICAvLyBSb3V0ZWQgdG8gdGhlIG9yZydzIHBpcGVsaW5lIHdyaXRlcnMgdW5kZXIgdGhlIHNhbWUgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIE4zMjogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGJsb2NrZWQgYnkgYSBwbHVnaW4gdnVsbmVyYWJpbGl0eSBwb2xpY3knLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMzM6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSB2dWxuZXJhYmlsaXR5IHJpc2sgYWNjZXB0YW5jZSBsYXBzZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICAvLyBNYW5hZ2VkIHRvb2xjaGFpbiBoeWdpZW5lIChkb2NzL3BsYW5zL2Jvb3RzdHJhcC1pbWFnZS12ZXJzaW9uaW5nLm1kIMKnMTApOiBhblxuICAvLyBvcmcncyB0b29sY2hhaW4gZGVmYXVsdCAodG8gaXRzIGB0b29sY2hhaW46bWFuYWdlYCBob2xkZXJzKSBvciBhIHBpcGVsaW5lJ3NcbiAgLy8gcGlubmVkIHJlbGVhc2UgKHRvIHRoZSBvcmcncyBwaXBlbGluZSB3cml0ZXJzKSB3YXMgeWFua2VkIG9yIGRlcHJlY2F0ZWQsXG4gIC8vIHBpY2tlZCB1cCBhIEtFViBvciBmaXhhYmxlIENyaXRpY2FsIGZpbmRpbmcsIG9yIGZlbGwgbW9yZSB0aGFuIHRocmVlXG4gIC8vIHJlbGVhc2VzIGJlaGluZCB0aGUgcGxhdGZvcm0gZGVmYXVsdC4gVHJhbnNhY3Rpb25hbDogaXQgc2F5cyB0aGUgb3JnJ3NcbiAgLy8gcGlwZWxpbmVzIGFyZSBidWlsZGluZyBvbiBzb21ldGhpbmcgaXQgc2hvdWxkIG1vdmUgb2ZmLlxuICBOMzQ6IHsgZGVzY3JpcHRpb246ICdNYW5hZ2VkIHRvb2xjaGFpbjogYSByZWxlYXNlIHlvdSB1c2Ugd2FzIHlhbmtlZCwgZGVwcmVjYXRlZCwgZm91bmQgdnVsbmVyYWJsZSBvciBmZWxsIGJlaGluZDsgdGhlIHBsYXRmb3JtIGRlZmF1bHQgbW92ZWQ7IHlvdXIgb3JnIGpvaW5lZCBhIGNhbmFyeTsgb3IgYSBwaXBlbGluZSBuZWVkcyBhIHJlLWRlcGxveSB0byByZWNvdmVyJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbn07XG5cbi8qKiBXaGV0aGVyIGB2YWx1ZWAgaXMgYSBub3RpZmljYXRpb24gZXZlbnQgbnVtYmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTLCB2YWx1ZSk7XG59XG5cbi8qKiBPcmctbG9jYWwgcGVybWlzc2lvbnMgYW4ge0BsaW5rIEVjb3N5c3RlbVJlY2lwaWVudFNwZWN9IGBvcmdfcGVybWlzc2lvbmAgcnVsZSBtYXkgbmFtZS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb24gPSAncHVibGlzaGVyczptYW5hZ2UnIHwgJ3BsdWdpbl9pbnN0YWxsczptYW5hZ2UnIHwgJ3BsdWdpbnM6d3JpdGUnIHwgJ3BpcGVsaW5lczp3cml0ZScgfCAndG9vbGNoYWluOm1hbmFnZSc7XG4vKiogU3lzdGVtLW9yZyBwZXJtaXNzaW9ucyBhIGBtb2RlcmF0b3JzYCBydWxlIG1heSBuYW1lLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbiA9ICdwbHVnaW5zOm1vZGVyYXRlJyB8ICdwdWJsaXNoZXJzOnZlcmlmeSc7XG5cbi8qKlxuICogQSByZWNpcGllbnQgUlVMRSwgcmVzb2x2ZWQgYnkgcGxhdGZvcm0gYXQgc2VuZCB0aW1lOlxuICpcbiAqICAtIGB1c2VyYCDigJQgb25lIHVzZXIgKFJlcXVlc3RlciwgUmV2aWV3IGF1dGhvciwgdGhlIGFmZmVjdGVkIHVzZXIgb2YgTjIzKS5cbiAqICAgIGBvcmdJZGAgcGlja3MgdGhlIGluYm94OyBkZWZhdWx0cyB0byB0aGUgdXNlcidzIGxhc3QgYWN0aXZlIG9yZy5cbiAqICAtIGBvcmdfcGVybWlzc2lvbmAg4oCUIGFjdGl2ZSBtZW1iZXJzIG9mIGBvcmdJZGAgaG9sZGluZyBgcGVybWlzc2lvbmBcbiAqICAgIChQdWJsaXNoZXIgbWFuYWdlcnMgPSBgcHVibGlzaGVyczptYW5hZ2VgLCBPcmcgYXBwcm92ZXJzID1cbiAqICAgIGBwbHVnaW5faW5zdGFsbHM6bWFuYWdlYCwgcGx1Z2luIHdyaXRlcnMgPSBgcGx1Z2luczp3cml0ZWAsIHRvb2xjaGFpblxuICogICAgbWFuYWdlcnMgPSBgdG9vbGNoYWluOm1hbmFnZWApLiBXaXRoXG4gKiAgICBgaW5oZXJpdEZyb21Sb290YCwgYSB0ZWFtIHdpdGggbm8gaG9sZGVycyBmYWxscyBiYWNrIHRvIGl0cyByb290IG9yZydzXG4gKiAgICBob2xkZXJzOyB3aXRoIG5vbmUgYW55d2hlcmUsIHRoZSBvcmcncyBvd25lcnMuXG4gKiAgLSBgb3JnX21lbWJlcnNgIOKAlCB0aGUgbmFtZWQgdXNlcnMsIGJ1dCBvbmx5IHRob3NlIHdobyBhcmUgQUNUSVZFIG1lbWJlcnMgb2ZcbiAqICAgIGBvcmdJZGAgYXQgc2VuZCB0aW1lIChhbiBvcmcncyBjaG9zZW4gc2VjdXJpdHkgcmVjaXBpZW50czogYSBzdGFsZSBpZCwgb3JcbiAqICAgIHNvbWVvbmUgd2hvIGxlZnQsIHJlY2VpdmVzIG5vdGhpbmcpLlxuICogIC0gYG1vZGVyYXRvcnNgIOKAlCB0aGUgc3lzdGVtIG9yZydzIGhvbGRlcnMgb2YgYHBlcm1pc3Npb25gICh0aGUgRWNvc3lzdGVtXG4gKiAgICBNYW5hZ2VyIHJvbGUpLCBtaW51cyBhbnlvbmUgd2l0aCBhIGNvbmZsaWN0IG9mIGludGVyZXN0IChtZW1iZXJzIG9mXG4gKiAgICBgZXhjbHVkZU1lbWJlcnNPZk9yZ0lkYCwgb3IgdGhlIGxpc3RlZCB1c2Vycyk7IHN1cGVyYWRtaW5zIHdoZW4gZW1wdHkuXG4gKiAgLSBgc3VwZXJhZG1pbnNgIOKAlCBldmVyeSBwbGF0Zm9ybSBzdXBlcmFkbWluLlxuICogIC0gYGFkZHJlc3NgIOKAlCBhIHJhdyBhZGRyZXNzOyBvbmx5IHRoZSBhbm9ueW1vdXMgU1VCTUlUVEVSIG5vdGljZXMgKE4xLCBOMyxcbiAqICAgIE40KSwgd2hvc2UgcmVjaXBpZW50IGhhcyBubyBhY2NvdW50LCBhbmQgYW4gb3JnJ3MgVkVSSUZJRUQgZXh0ZXJuYWxcbiAqICAgIHNlY3VyaXR5IGFkZHJlc3Mgb24gdGhlIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzIChOMzDigJNOMzMpLlxuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1SZWNpcGllbnRTcGVjID1cbiAgfCB7IGtpbmQ6ICd1c2VyJzsgdXNlcklkOiBzdHJpbmc7IG9yZ0lkPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdvcmdfcGVybWlzc2lvbic7IG9yZ0lkOiBzdHJpbmc7IHBlcm1pc3Npb246IEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb247IGluaGVyaXRGcm9tUm9vdD86IGJvb2xlYW4gfVxuICB8IHsga2luZDogJ29yZ19tZW1iZXJzJzsgb3JnSWQ6IHN0cmluZzsgdXNlcklkczogc3RyaW5nW10gfVxuICB8IHsga2luZDogJ21vZGVyYXRvcnMnOyBwZXJtaXNzaW9uOiBFY29zeXN0ZW1Nb2RlcmF0b3JQZXJtaXNzaW9uOyBleGNsdWRlTWVtYmVyc09mT3JnSWQ/OiBzdHJpbmc7IGV4Y2x1ZGVVc2VySWRzPzogc3RyaW5nW10gfVxuICB8IHsga2luZDogJ3N1cGVyYWRtaW5zJyB9XG4gIHwgeyBraW5kOiAnYWRkcmVzcyc7IGVtYWlsOiBzdHJpbmcgfTtcblxuLyoqIFRoZSBib2R5IG9mIGFuIGVjb3N5c3RlbSBzZW5kIHRocm91Z2ggcGxhdGZvcm0ncyBub3RpZnkgcmVsYXkuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3Qge1xuICBldmVudDogRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZDtcbiAgcmVjaXBpZW50czogRWNvc3lzdGVtUmVjaXBpZW50U3BlY1tdO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIC8qKiBQbGFpbi10ZXh0IGJvZHkgKGVtYWlsIGJvZHkgYW5kIGluLWFwcCBjb250ZW50KS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3Vic2V0IG9mIHRoZSBldmVudCdzIGNoYW5uZWxzIHRvIGRlbGl2ZXIgb24gKGRlZmF1bHQ6IGFsbCBvZiB0aGVtKS4gVGhlXG4gICAqICBkaWdlc3QgZGlzcGF0Y2hlciBzZW5kcyBgWydlbWFpbCddYCBiZWNhdXNlIGluLWFwcCB3ZW50IG91dCBhdCBlbnF1ZXVlLiAqL1xuICBjaGFubmVscz86IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXTtcbiAgLyoqIERlbGl2ZXIgdGhlIGVtYWlsIGV2ZW4gdG8gdXNlcnMgd2hvIG9wdGVkIG91dCDigJQgZm9yIGFuIGV2ZW50IHdob3NlXG4gICAqICBub3JtYWxseS1vcHRpb25hbCBlbWFpbCBpcyBtYW5kYXRvcnkgaW4gdGhpcyBpbnN0YW5jZSAoTjI0IHlhbmssIGFkdmlzb3J5XG4gICAqICBhbmQgc2VjdXJpdHktZml4IHJlcXVlc3RzKS4gKi9cbiAgbWFuZGF0b3J5PzogYm9vbGVhbjtcbn1cblxuLyoqIEhhcmQgY2FwcywgbWF0Y2hpbmcgdGhlIG1lc3NhZ2Ugc2VydmljZSdzIG93biBsaW1pdHMuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWCA9IDUwMDtcbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYID0gMTAwMDA7XG5jb25zdCBNQVhfUkVDSVBJRU5UX1JVTEVTID0gNTA7XG5cbmNvbnN0IE9SR19QRVJNSVNTSU9OUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3B1Ymxpc2hlcnM6bWFuYWdlJywgJ3BsdWdpbl9pbnN0YWxsczptYW5hZ2UnLCAncGx1Z2luczp3cml0ZScsICdwaXBlbGluZXM6d3JpdGUnLCAndG9vbGNoYWluOm1hbmFnZSddO1xuLyoqIEF0IG1vc3QgdGhpcyBtYW55IHVzZXJzIGluIG9uZSBgb3JnX21lbWJlcnNgIHJ1bGUuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX09SR19NRU1CRVJTX01BWCA9IDEwMDtcbmNvbnN0IE1PREVSQVRPUl9QRVJNSVNTSU9OUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3BsdWdpbnM6bW9kZXJhdGUnLCAncHVibGlzaGVyczp2ZXJpZnknXTtcbmNvbnN0IEVNQUlMX1NIQVBFID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG5cbmZ1bmN0aW9uIG5vbkVtcHR5U3RyaW5nKHY6IHVua25vd24sIG1heCA9IDI1NSk6IHYgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2LnRyaW0oKS5sZW5ndGggPiAwICYmIHYubGVuZ3RoIDw9IG1heDtcbn1cblxuZnVuY3Rpb24gcGFyc2VSZWNpcGllbnQocmF3OiB1bmtub3duLCBzcGVjOiBFY29zeXN0ZW1FdmVudFNwZWMpOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjIHwgc3RyaW5nIHtcbiAgaWYgKCFyYXcgfHwgdHlwZW9mIHJhdyAhPT0gJ29iamVjdCcpIHJldHVybiAnZWFjaCByZWNpcGllbnQgbXVzdCBiZSBhbiBvYmplY3QnO1xuICBjb25zdCByID0gcmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBzd2l0Y2ggKHIua2luZCkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLnVzZXJJZCkpIHJldHVybiAndXNlciByZWNpcGllbnQgbmVlZHMgdXNlcklkJztcbiAgICAgIGlmIChyLm9yZ0lkICE9PSB1bmRlZmluZWQgJiYgIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ3VzZXIgcmVjaXBpZW50IG9yZ0lkIG11c3QgYmUgYSBzdHJpbmcnO1xuICAgICAgcmV0dXJuIHsga2luZDogJ3VzZXInLCB1c2VySWQ6IHIudXNlcklkLCAuLi4oci5vcmdJZCA/IHsgb3JnSWQ6IHIub3JnSWQgYXMgc3RyaW5nIH0gOiB7fSkgfTtcbiAgICBjYXNlICdvcmdfcGVybWlzc2lvbic6XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ29yZ19wZXJtaXNzaW9uIHJlY2lwaWVudCBuZWVkcyBvcmdJZCc7XG4gICAgICBpZiAodHlwZW9mIHIucGVybWlzc2lvbiAhPT0gJ3N0cmluZycgfHwgIU9SR19QRVJNSVNTSU9OUy5pbmNsdWRlcyhyLnBlcm1pc3Npb24pKSByZXR1cm4gJ29yZ19wZXJtaXNzaW9uIHJlY2lwaWVudCBuYW1lcyBhbiB1bnN1cHBvcnRlZCBwZXJtaXNzaW9uJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdvcmdfcGVybWlzc2lvbicsXG4gICAgICAgIG9yZ0lkOiByLm9yZ0lkLFxuICAgICAgICBwZXJtaXNzaW9uOiByLnBlcm1pc3Npb24gYXMgRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbixcbiAgICAgICAgLi4uKHIuaW5oZXJpdEZyb21Sb290ID09PSB0cnVlID8geyBpbmhlcml0RnJvbVJvb3Q6IHRydWUgfSA6IHt9KSxcbiAgICAgIH07XG4gICAgY2FzZSAnb3JnX21lbWJlcnMnOiB7XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ29yZ19tZW1iZXJzIHJlY2lwaWVudCBuZWVkcyBvcmdJZCc7XG4gICAgICBjb25zdCB1c2VycyA9IHIudXNlcklkcztcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh1c2VycykgfHwgdXNlcnMubGVuZ3RoID09PSAwIHx8ICF1c2Vycy5ldmVyeSgodSkgPT4gbm9uRW1wdHlTdHJpbmcodSkpKSByZXR1cm4gJ29yZ19tZW1iZXJzIHJlY2lwaWVudCBuZWVkcyBhIG5vbi1lbXB0eSB1c2VySWRzIGFycmF5JztcbiAgICAgIGlmICh1c2Vycy5sZW5ndGggPiBFQ09TWVNURU1fT1JHX01FTUJFUlNfTUFYKSByZXR1cm4gYG9yZ19tZW1iZXJzIHJlY2lwaWVudCBuYW1lcyBhdCBtb3N0ICR7RUNPU1lTVEVNX09SR19NRU1CRVJTX01BWH0gdXNlcnNgO1xuICAgICAgcmV0dXJuIHsga2luZDogJ29yZ19tZW1iZXJzJywgb3JnSWQ6IHIub3JnSWQsIHVzZXJJZHM6IFsuLi5uZXcgU2V0KHVzZXJzIGFzIHN0cmluZ1tdKV0gfTtcbiAgICB9XG4gICAgY2FzZSAnbW9kZXJhdG9ycyc6IHtcbiAgICAgIGlmICh0eXBlb2Ygci5wZXJtaXNzaW9uICE9PSAnc3RyaW5nJyB8fCAhTU9ERVJBVE9SX1BFUk1JU1NJT05TLmluY2x1ZGVzKHIucGVybWlzc2lvbikpIHJldHVybiAnbW9kZXJhdG9ycyByZWNpcGllbnQgbmFtZXMgYW4gdW5zdXBwb3J0ZWQgcGVybWlzc2lvbic7XG4gICAgICBpZiAoci5leGNsdWRlTWVtYmVyc09mT3JnSWQgIT09IHVuZGVmaW5lZCAmJiAhbm9uRW1wdHlTdHJpbmcoci5leGNsdWRlTWVtYmVyc09mT3JnSWQpKSByZXR1cm4gJ2V4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCBtdXN0IGJlIGEgc3RyaW5nJztcbiAgICAgIGNvbnN0IGV4Y2x1ZGUgPSByLmV4Y2x1ZGVVc2VySWRzO1xuICAgICAgaWYgKGV4Y2x1ZGUgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoZXhjbHVkZSkgfHwgIWV4Y2x1ZGUuZXZlcnkoKHUpID0+IG5vbkVtcHR5U3RyaW5nKHUpKSkpIHJldHVybiAnZXhjbHVkZVVzZXJJZHMgbXVzdCBiZSBhbiBhcnJheSBvZiBpZHMnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ21vZGVyYXRvcnMnLFxuICAgICAgICBwZXJtaXNzaW9uOiByLnBlcm1pc3Npb24gYXMgRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbixcbiAgICAgICAgLi4uKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkID8geyBleGNsdWRlTWVtYmVyc09mT3JnSWQ6IHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkIGFzIHN0cmluZyB9IDoge30pLFxuICAgICAgICAuLi4oZXhjbHVkZSA/IHsgZXhjbHVkZVVzZXJJZHM6IGV4Y2x1ZGUgYXMgc3RyaW5nW10gfSA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3N1cGVyYWRtaW5zJzpcbiAgICAgIHJldHVybiB7IGtpbmQ6ICdzdXBlcmFkbWlucycgfTtcbiAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgIGlmICghc3BlYy5hbGxvd3NBZGRyZXNzKSByZXR1cm4gJ2FkZHJlc3MgcmVjaXBpZW50cyBhcmUgb25seSBhbGxvd2VkIGZvciBhbm9ueW1vdXMtc3VibWlzc2lvbiBhbmQgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMnO1xuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLmVtYWlsLCAzMjApIHx8ICFFTUFJTF9TSEFQRS50ZXN0KHIuZW1haWwpKSByZXR1cm4gJ2FkZHJlc3MgcmVjaXBpZW50IG5lZWRzIGEgdmFsaWQgZW1haWwnO1xuICAgICAgcmV0dXJuIHsga2luZDogJ2FkZHJlc3MnLCBlbWFpbDogci5lbWFpbC50cmltKCkudG9Mb3dlckNhc2UoKSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ3Vua25vd24gcmVjaXBpZW50IGtpbmQnO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW4ge0BsaW5rIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3R9LiBSZXR1cm5zIHRoZSBub3JtYWxpemVkIHJlcXVlc3QsXG4gKiBvciBhbiBlcnJvciBzdHJpbmcgKHRoZSByZWxheSdzIDQwMCkuIFB1cmUsIHNvIGJvdGggdGhlIHNlbmRlciAoZmFpbCBhdFxuICogZW5xdWV1ZSwgbm90IGF0IDA5OjAwIHRvbW9ycm93KSBhbmQgdGhlIHJlbGF5IHVzZSB0aGUgc2FtZSBydWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdChib2R5OiB1bmtub3duKTogRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB8IHN0cmluZyB7XG4gIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHJldHVybiAnYm9keSBtdXN0IGJlIGFuIG9iamVjdCc7XG4gIGNvbnN0IGIgPSBib2R5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAoIWlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQoYi5ldmVudCkpIHJldHVybiAnZXZlbnQgbXVzdCBiZSBvbmUgb2YgTjEuLk4zNCc7XG4gIGNvbnN0IHNwZWMgPSBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UU1tiLmV2ZW50XTtcbiAgaWYgKCFub25FbXB0eVN0cmluZyhiLnN1YmplY3QsIEVDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVgpKSByZXR1cm4gYHN1YmplY3QgaXMgcmVxdWlyZWQgKG1heCAke0VDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVh9KWA7XG4gIGlmICghbm9uRW1wdHlTdHJpbmcoYi50ZXh0LCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYKSkgcmV0dXJuIGB0ZXh0IGlzIHJlcXVpcmVkIChtYXggJHtFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYfSlgO1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYi5yZWNpcGllbnRzKSB8fCBiLnJlY2lwaWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ3JlY2lwaWVudHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSc7XG4gIGlmIChiLnJlY2lwaWVudHMubGVuZ3RoID4gTUFYX1JFQ0lQSUVOVF9SVUxFUykgcmV0dXJuIGBhdCBtb3N0ICR7TUFYX1JFQ0lQSUVOVF9SVUxFU30gcmVjaXBpZW50IHJ1bGVzYDtcbiAgY29uc3QgcmVjaXBpZW50czogRWNvc3lzdGVtUmVjaXBpZW50U3BlY1tdID0gW107XG4gIGZvciAoY29uc3QgcmF3IG9mIGIucmVjaXBpZW50cykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmVjaXBpZW50KHJhdywgc3BlYyk7XG4gICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdzdHJpbmcnKSByZXR1cm4gcGFyc2VkO1xuICAgIHJlY2lwaWVudHMucHVzaChwYXJzZWQpO1xuICB9XG4gIGxldCBjaGFubmVsczogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdIHwgdW5kZWZpbmVkO1xuICBpZiAoYi5jaGFubmVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGIuY2hhbm5lbHMpIHx8IGIuY2hhbm5lbHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ2NoYW5uZWxzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknO1xuICAgIGNvbnN0IGJhZCA9IGIuY2hhbm5lbHMuZmlsdGVyKChjKSA9PiAhc3BlYy5jaGFubmVscy5pbmNsdWRlcyhjIGFzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWwpKTtcbiAgICBpZiAoYmFkLmxlbmd0aCA+IDApIHJldHVybiBgZXZlbnQgJHtiLmV2ZW50fSBpcyBub3QgZGVsaXZlcmVkIG9uOiAke2JhZC5qb2luKCcsICcpfWA7XG4gICAgY2hhbm5lbHMgPSBbLi4ubmV3IFNldChiLmNoYW5uZWxzIGFzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXSldO1xuICB9XG4gIGlmIChiLm1hbmRhdG9yeSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBiLm1hbmRhdG9yeSAhPT0gJ2Jvb2xlYW4nKSByZXR1cm4gJ21hbmRhdG9yeSBtdXN0IGJlIGEgYm9vbGVhbic7XG4gIHJldHVybiB7XG4gICAgZXZlbnQ6IGIuZXZlbnQsXG4gICAgcmVjaXBpZW50cyxcbiAgICBzdWJqZWN0OiBiLnN1YmplY3QudHJpbSgpLFxuICAgIHRleHQ6IGIudGV4dC50cmltKCksXG4gICAgLi4uKGNoYW5uZWxzID8geyBjaGFubmVscyB9IDoge30pLFxuICAgIC4uLihiLm1hbmRhdG9yeSA9PT0gdHJ1ZSA/IHsgbWFuZGF0b3J5OiB0cnVlIH0gOiB7fSksXG4gIH07XG59XG5cbi8qKiBUaGUgVVRDIGhvdXIgZGlnZXN0cyBmbHVzaCBhdCAoXCJkYWlseSBkaWdlc3QgZW1haWwgKDA5OjAwIFVUQylcIikuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX0RJR0VTVF9IT1VSX1VUQyA9IDk7XG5cbi8qKlxuICogVGhlIG5leHQgZmx1c2ggdGltZSBmb3IgYSBkaWdlc3QgY2FkZW5jZSwgc3RyaWN0bHkgYWZ0ZXIgYG5vd2A6XG4gKiBgaG91cmx5YCDihpIgdGhlIG5leHQgdG9wIG9mIHRoZSBob3VyOyBgZGFpbHlgIOKGkiB0aGUgbmV4dCAwOTowMCBVVEM7XG4gKiBgd2Vla2x5YCDihpIgdGhlIG5leHQgTW9uZGF5IDA5OjAwIFVUQy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lKGNhZGVuY2U6IEVjb3N5c3RlbURpZ2VzdENhZGVuY2UsIG5vdzogRGF0ZSA9IG5ldyBEYXRlKCkpOiBEYXRlIHtcbiAgY29uc3QgdCA9IG5ldyBEYXRlKG5vdy5nZXRUaW1lKCkpO1xuICBpZiAoY2FkZW5jZSA9PT0gJ2hvdXJseScpIHtcbiAgICB0LnNldFVUQ01pbnV0ZXMoMCwgMCwgMCk7XG4gICAgdC5zZXRVVENIb3Vycyh0LmdldFVUQ0hvdXJzKCkgKyAxKTtcbiAgICByZXR1cm4gdDtcbiAgfVxuICB0LnNldFVUQ0hvdXJzKEVDT1NZU1RFTV9ESUdFU1RfSE9VUl9VVEMsIDAsIDAsIDApO1xuICBpZiAodC5nZXRUaW1lKCkgPD0gbm93LmdldFRpbWUoKSkgdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5Jykge1xuICAgIC8vIGdldFVUQ0RheTogMCA9IFN1bmRheSDigKYgMSA9IE1vbmRheS5cbiAgICB3aGlsZSAodC5nZXRVVENEYXkoKSAhPT0gMSkgdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVtcGxhdGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEEgcmVuZGVyZWQgbm90aWNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50IHtcbiAgc3ViamVjdDogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTjIzIOKAlCBzb21lb25lIHdhcyBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIHN5c3RlbSBvcmcncyBFY29zeXN0ZW1cbiAqIE1hbmFnZXIgcm9sZS4gU2VudCB0byBldmVyeSBzdXBlcmFkbWluIGFuZCB0byB0aGUgYWZmZWN0ZWQgdXNlcjtcbiAqIHRyYW5zYWN0aW9uYWwgKG5vIG9wdC1vdXQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRWNvc3lzdGVtTWFuYWdlckNoYW5nZShpbnB1dDoge1xuICAvKiogVGhlIGFmZmVjdGVkIHVzZXIncyBkaXNwbGF5IG5hbWUgb3IgZW1haWwuICovXG4gIHVzZXI6IHN0cmluZztcbiAgYWRkZWQ6IGJvb2xlYW47XG4gIC8qKiBXaG8gbWFkZSB0aGUgY2hhbmdlIChzdXBlcmFkbWlucyBvbmx5IGNhbiksIHdoZW4ga25vd24uICovXG4gIGFjdG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFJvbGUgYWN0dWFsbHkgZ3JhbnRlZC4gVGhpcyBub3RpY2UgZmlyZXMgZm9yIEFOWSBSb2xlIGNhcnJ5aW5nIGFcbiAgICogc3lzdGVtLW9yZy1vbmx5IHBlcm1pc3Npb24g4oCUIGBlY29zeXN0ZW1Sb2xlTmFtZWAgcmV0dXJucyB3aGljaGV2ZXIgb25lIGl0XG4gICAqIGlzIOKAlCBzbyBoYXJkLWNvZGluZyBcIkVjb3N5c3RlbSBNYW5hZ2VyXCIgYW5ub3VuY2VkIHN0YWZmaW5nICoqQ29uc29sZVxuICAgKiBBZG1pbmlzdHJhdG9yKiogKGEgcmVhZC93cml0ZSBzaGVsbCBvdmVyIGV2ZXJ5IHRlbmFudCdzIHJvd3MpIG9yICoqU3VwcG9ydFxuICAgKiBMZWFkKiogKGBpbXBlcnNvbmF0aW9uOm9wZW5gKSBhcyBhIHBsdWdpbi1tb2RlcmF0aW9uIGdyYW50LiBUaGUgYXVkaXQgcm93XG4gICAqIGhhZCB0aGUgbmFtZSBhbGwgYWxvbmc7IHRoZSBtZXNzYWdlIG9wZXJhdG9ycyBhY3R1YWxseSByZWFkIGRpZCBub3QuXG4gICAqL1xuICByb2xlPzogc3RyaW5nO1xufSk6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnQge1xuICBjb25zdCB2ZXJiID0gaW5wdXQuYWRkZWQgPyAnYWRkZWQgdG8nIDogJ3JlbW92ZWQgZnJvbSc7XG4gIGNvbnN0IGJ5ID0gaW5wdXQuYWN0b3IgPyBgIGJ5ICR7aW5wdXQuYWN0b3J9YCA6ICcnO1xuICBjb25zdCByb2xlID0gaW5wdXQucm9sZSA/PyAnRWNvc3lzdGVtIE1hbmFnZXInO1xuICAvLyBUaGUgYm9keSBkZXNjcmliZXMgd2hhdCB0aGUgUk9MRSBkb2VzLCBzbyBpdCBjYW4gb25seSBzcGVhayBmb3IgdGhlIG9uZSBpdFxuICAvLyB3YXMgd3JpdHRlbiBhYm91dC4gRm9yIGFueSBvdGhlciwgc2F5IHdoYXQgaGFwcGVuZWQgYW5kIGxlYXZlIHRoZVxuICAvLyBjYXBhYmlsaXRpZXMgdG8gdGhlIFJvbGUgaXRzZWxmIHJhdGhlciB0aGFuIGRlc2NyaWJpbmcgdGhlIHdyb25nIG9uZXMuXG4gIGNvbnN0IGVjb3N5c3RlbSA9IHJvbGUgPT09ICdFY29zeXN0ZW0gTWFuYWdlcic7XG4gIHJldHVybiB7XG4gICAgc3ViamVjdDogYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlICR7cm9sZX0gcm9sZWAsXG4gICAgdGV4dDogaW5wdXQuYWRkZWRcbiAgICAgID8gYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlICR7cm9sZX0gcm9sZSR7Ynl9LmBcbiAgICAgICAgKyAoZWNvc3lzdGVtXG4gICAgICAgICAgPyAnIEVjb3N5c3RlbSBNYW5hZ2VycyBkZWNpZGUgcHVibGlzaCByZXF1ZXN0cywgbW9kZXJhdGUgc3VibWlzc2lvbnMgYW5kIHJldmlld3MsIHZlcmlmeSBwdWJsaXNoZXJzJ1xuICAgICAgICAgICAgKyAnIGFuZCBwdWJsaXNoIGFkdmlzb3JpZXMgZm9yIHRoZSB3aG9sZSBwbHVnaW4gZWNvc3lzdGVtLidcbiAgICAgICAgICA6ICcgSXQgY2FycmllcyBzeXN0ZW0tb3JnLW9ubHkgcGVybWlzc2lvbnMuJylcbiAgICAgICAgKyAnIFRoZSByb2xlIHdvcmtzIG9ubHkgZnJvbSB0aGUgc3lzdGVtIG9yZ2FuaXphdGlvbiBhbmQgcmVxdWlyZXMgYSB0d28tZmFjdG9yIHNpZ24taW4uJ1xuICAgICAgOiBgJHtpbnB1dC51c2VyfSB3YXMgJHt2ZXJifSB0aGUgJHtyb2xlfSByb2xlJHtieX1gXG4gICAgICAgICsgKGVjb3N5c3RlbSA/ICcgYW5kIGNhbiBubyBsb25nZXIgbWFuYWdlIG9yIGFwcHJvdmUgYW55dGhpbmcgaW4gdGhlIHBsdWdpbiBlY29zeXN0ZW0uJyA6ICcuJyksXG4gIH07XG59XG5cbi8qKlxuICogQ29hbGVzY2Ugc2V2ZXJhbCBxdWV1ZWQgbm90aWNlcyBpbnRvIG9uZSBkaWdlc3QgZW1haWw6IGEgY291bnQtYmVhcmluZ1xuICogc3ViamVjdCBhbmQgb25lIGxpbmUgcGVyIGl0ZW0gKGVhY2ggaXRlbSdzIHN1YmplY3QpLCBvbGRlc3QgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFY29zeXN0ZW1EaWdlc3QoXG4gIGV2ZW50OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkLFxuICBpdGVtczogcmVhZG9ubHkgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudFtdLFxuKTogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIGlmIChpdGVtcy5sZW5ndGggPT09IDEpIHJldHVybiBpdGVtc1swXSE7XG4gIGNvbnN0IHNwZWMgPSBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UU1tldmVudF07XG4gIGNvbnN0IGNhZGVuY2UgPSBzcGVjLmRpZ2VzdCA9PT0gJ2hvdXJseScgPyAnSG91cmx5JyA6IHNwZWMuZGlnZXN0ID09PSAnd2Vla2x5JyA/ICdXZWVrbHknIDogJ0RhaWx5JztcbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiBgJHtjYWRlbmNlfSBkaWdlc3Q6ICR7aXRlbXMubGVuZ3RofSDDlyAke3NwZWMuZGVzY3JpcHRpb259YC5zbGljZSgwLCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYKSxcbiAgICB0ZXh0OiBpdGVtcy5tYXAoKGkpID0+IGDigKIgJHtpLnN1YmplY3R9YCkuam9pbignXFxuJykuc2xpY2UoMCwgRUNPU1lTVEVNX05PVElGWV9URVhUX01BWCksXG4gIH07XG59XG4iXX0=
@@ -34,6 +34,10 @@ export declare enum ErrorCode {
34
34
  * was called from an active org other than the system org — a token minted in
35
35
  * a tenant org is refused even for the same user. Switch to the system org. */
36
36
  SYSTEM_ORG_REQUIRED = "SYSTEM_ORG_REQUIRED",
37
+ /** A non-system org tried to create a plugin under a managed toolchain name
38
+ * (`MANAGED_TOOLCHAIN_PLUGINS`: `pipeline-bootstrap`, `cdk-synth`). A custom
39
+ * synth environment is published under another name. */
40
+ PLUGIN_MANAGED_NAME_RESERVED = "PLUGIN_MANAGED_NAME_RESERVED",
37
41
  /** The publisher hasn't accepted the CURRENT publisher terms version, so it
38
42
  * can't submit new requests (existing listings are unaffected). */
39
43
  PUBLISHER_TERMS_REQUIRED = "PUBLISHER_TERMS_REQUIRED",
@@ -82,6 +86,40 @@ export declare enum ErrorCode {
82
86
  TEMPLATE_CONTRACT_VIOLATION = "TEMPLATE_CONTRACT_VIOLATION",
83
87
  TEMPLATE_SIZE_EXCEEDED = "TEMPLATE_SIZE_EXCEEDED",
84
88
  TEMPLATE_VALIDATION_FAILED = "TEMPLATE_VALIDATION_FAILED",
89
+ /** A managed toolchain name in a publish, submission, listing or install path:
90
+ * managed releases are never listed in the ecosystem. */
91
+ PLUGIN_MANAGED_NOT_LISTABLE = "PLUGIN_MANAGED_NOT_LISTABLE",
92
+ /** An upload of a prerelease (`-dev.N`) version of a managed toolchain name:
93
+ * a release version is always a plain semver. */
94
+ PLUGIN_MANAGED_PRERELEASE = "PLUGIN_MANAGED_PRERELEASE",
95
+ /** A generic plugin route (update, deprecate/yank, delete, purge) was called on
96
+ * a managed toolchain name — for the system org too. Release lifecycle lives
97
+ * only in the Toolchain console, which acts on both halves at once. */
98
+ TOOLCHAIN_USE_CONSOLE = "TOOLCHAIN_USE_CONSOLE",
99
+ /** The CLI could not resolve the bootstrap image (D2) — unreachable platform,
100
+ * no default, a deleted pin, a signature failure, or a local-spec deploy
101
+ * without `--toolchain-file`. Never falls back. */
102
+ BOOTSTRAP_IMAGE_UNRESOLVED = "BOOTSTRAP_IMAGE_UNRESOLVED",
103
+ /** No platform default release exists (D11). Never "highest version". */
104
+ TOOLCHAIN_NO_DEFAULT = "TOOLCHAIN_NO_DEFAULT",
105
+ /** The resolver found halves with different release versions — a bug, never served. */
106
+ TOOLCHAIN_PAIR_MISMATCH = "TOOLCHAIN_PAIR_MISMATCH",
107
+ /** A pin or org default names a release that is not eligible (D15) at set time. */
108
+ TOOLCHAIN_RELEASE_NOT_ELIGIBLE = "TOOLCHAIN_RELEASE_NOT_ELIGIBLE",
109
+ /** A managed `cdk-synth` step carries its own version; pin the release instead. */
110
+ TOOLCHAIN_PIN_VIA_RELEASE = "TOOLCHAIN_PIN_VIA_RELEASE",
111
+ /** Yanking the platform default with no live previous default to restore. */
112
+ TOOLCHAIN_DEFAULT_REQUIRED = "TOOLCHAIN_DEFAULT_REQUIRED",
113
+ /** `expectedCurrentDefault` did not match the current platform default. */
114
+ TOOLCHAIN_DEFAULT_CHANGED = "TOOLCHAIN_DEFAULT_CHANGED",
115
+ /** A second D14 initial-default call. */
116
+ TOOLCHAIN_INITIAL_ALREADY_SET = "TOOLCHAIN_INITIAL_ALREADY_SET",
117
+ /** §8 guards on setting the platform default — one code per guard. */
118
+ TOOLCHAIN_GUARD_UNSCANNED = "TOOLCHAIN_GUARD_UNSCANNED",
119
+ TOOLCHAIN_GUARD_VULN_FLOOR = "TOOLCHAIN_GUARD_VULN_FLOOR",
120
+ TOOLCHAIN_GUARD_METADATA = "TOOLCHAIN_GUARD_METADATA",
121
+ TOOLCHAIN_GUARD_PAIR_INCOMPLETE = "TOOLCHAIN_GUARD_PAIR_INCOMPLETE",
122
+ TOOLCHAIN_GUARD_CANARY_GATE = "TOOLCHAIN_GUARD_CANARY_GATE",
85
123
  /** The pipeline-manager CLI is older than the platform's
86
124
  * `PIPELINE_MANAGER_MIN_VERSION`; the fix is `pipeline-manager --upgrade`. */
87
125
  CLIENT_UPGRADE_REQUIRED = "CLIENT_UPGRADE_REQUIRED",
@@ -113,6 +151,9 @@ export declare enum ErrorCode {
113
151
  /** A freeze named an image digest that is not the version's stored digest
114
152
  * (fail closed: what was requested is not what would be published). */
115
153
  PLUGIN_DIGEST_MISMATCH = "PLUGIN_DIGEST_MISMATCH",
154
+ /** A re-upload of an existing (name, version) of a managed toolchain name:
155
+ * a release is immutable — build a new version instead. */
156
+ PLUGIN_VERSION_IMMUTABLE = "PLUGIN_VERSION_IMMUTABLE",
116
157
  /** A publish request needs the org's publisher profile, which doesn't exist
117
158
  * yet (docs/plugin-publishing.md). Claim a handle first. */
118
159
  PUBLISHER_REQUIRED = "PUBLISHER_REQUIRED",
@@ -39,6 +39,10 @@ export var ErrorCode;
39
39
  * was called from an active org other than the system org — a token minted in
40
40
  * a tenant org is refused even for the same user. Switch to the system org. */
41
41
  ErrorCode["SYSTEM_ORG_REQUIRED"] = "SYSTEM_ORG_REQUIRED";
42
+ /** A non-system org tried to create a plugin under a managed toolchain name
43
+ * (`MANAGED_TOOLCHAIN_PLUGINS`: `pipeline-bootstrap`, `cdk-synth`). A custom
44
+ * synth environment is published under another name. */
45
+ ErrorCode["PLUGIN_MANAGED_NAME_RESERVED"] = "PLUGIN_MANAGED_NAME_RESERVED";
42
46
  /** The publisher hasn't accepted the CURRENT publisher terms version, so it
43
47
  * can't submit new requests (existing listings are unaffected). */
44
48
  ErrorCode["PUBLISHER_TERMS_REQUIRED"] = "PUBLISHER_TERMS_REQUIRED";
@@ -89,6 +93,41 @@ export var ErrorCode;
89
93
  ErrorCode["TEMPLATE_CONTRACT_VIOLATION"] = "TEMPLATE_CONTRACT_VIOLATION";
90
94
  ErrorCode["TEMPLATE_SIZE_EXCEEDED"] = "TEMPLATE_SIZE_EXCEEDED";
91
95
  ErrorCode["TEMPLATE_VALIDATION_FAILED"] = "TEMPLATE_VALIDATION_FAILED";
96
+ /** A managed toolchain name in a publish, submission, listing or install path:
97
+ * managed releases are never listed in the ecosystem. */
98
+ ErrorCode["PLUGIN_MANAGED_NOT_LISTABLE"] = "PLUGIN_MANAGED_NOT_LISTABLE";
99
+ /** An upload of a prerelease (`-dev.N`) version of a managed toolchain name:
100
+ * a release version is always a plain semver. */
101
+ ErrorCode["PLUGIN_MANAGED_PRERELEASE"] = "PLUGIN_MANAGED_PRERELEASE";
102
+ /** A generic plugin route (update, deprecate/yank, delete, purge) was called on
103
+ * a managed toolchain name — for the system org too. Release lifecycle lives
104
+ * only in the Toolchain console, which acts on both halves at once. */
105
+ ErrorCode["TOOLCHAIN_USE_CONSOLE"] = "TOOLCHAIN_USE_CONSOLE";
106
+ // Pipeline toolchain releases (docs/plans/bootstrap-image-versioning.md §13).
107
+ /** The CLI could not resolve the bootstrap image (D2) — unreachable platform,
108
+ * no default, a deleted pin, a signature failure, or a local-spec deploy
109
+ * without `--toolchain-file`. Never falls back. */
110
+ ErrorCode["BOOTSTRAP_IMAGE_UNRESOLVED"] = "BOOTSTRAP_IMAGE_UNRESOLVED";
111
+ /** No platform default release exists (D11). Never "highest version". */
112
+ ErrorCode["TOOLCHAIN_NO_DEFAULT"] = "TOOLCHAIN_NO_DEFAULT";
113
+ /** The resolver found halves with different release versions — a bug, never served. */
114
+ ErrorCode["TOOLCHAIN_PAIR_MISMATCH"] = "TOOLCHAIN_PAIR_MISMATCH";
115
+ /** A pin or org default names a release that is not eligible (D15) at set time. */
116
+ ErrorCode["TOOLCHAIN_RELEASE_NOT_ELIGIBLE"] = "TOOLCHAIN_RELEASE_NOT_ELIGIBLE";
117
+ /** A managed `cdk-synth` step carries its own version; pin the release instead. */
118
+ ErrorCode["TOOLCHAIN_PIN_VIA_RELEASE"] = "TOOLCHAIN_PIN_VIA_RELEASE";
119
+ /** Yanking the platform default with no live previous default to restore. */
120
+ ErrorCode["TOOLCHAIN_DEFAULT_REQUIRED"] = "TOOLCHAIN_DEFAULT_REQUIRED";
121
+ /** `expectedCurrentDefault` did not match the current platform default. */
122
+ ErrorCode["TOOLCHAIN_DEFAULT_CHANGED"] = "TOOLCHAIN_DEFAULT_CHANGED";
123
+ /** A second D14 initial-default call. */
124
+ ErrorCode["TOOLCHAIN_INITIAL_ALREADY_SET"] = "TOOLCHAIN_INITIAL_ALREADY_SET";
125
+ /** §8 guards on setting the platform default — one code per guard. */
126
+ ErrorCode["TOOLCHAIN_GUARD_UNSCANNED"] = "TOOLCHAIN_GUARD_UNSCANNED";
127
+ ErrorCode["TOOLCHAIN_GUARD_VULN_FLOOR"] = "TOOLCHAIN_GUARD_VULN_FLOOR";
128
+ ErrorCode["TOOLCHAIN_GUARD_METADATA"] = "TOOLCHAIN_GUARD_METADATA";
129
+ ErrorCode["TOOLCHAIN_GUARD_PAIR_INCOMPLETE"] = "TOOLCHAIN_GUARD_PAIR_INCOMPLETE";
130
+ ErrorCode["TOOLCHAIN_GUARD_CANARY_GATE"] = "TOOLCHAIN_GUARD_CANARY_GATE";
92
131
  // Client too old (426)
93
132
  /** The pipeline-manager CLI is older than the platform's
94
133
  * `PIPELINE_MANAGER_MIN_VERSION`; the fix is `pipeline-manager --upgrade`. */
@@ -124,6 +163,9 @@ export var ErrorCode;
124
163
  /** A freeze named an image digest that is not the version's stored digest
125
164
  * (fail closed: what was requested is not what would be published). */
126
165
  ErrorCode["PLUGIN_DIGEST_MISMATCH"] = "PLUGIN_DIGEST_MISMATCH";
166
+ /** A re-upload of an existing (name, version) of a managed toolchain name:
167
+ * a release is immutable — build a new version instead. */
168
+ ErrorCode["PLUGIN_VERSION_IMMUTABLE"] = "PLUGIN_VERSION_IMMUTABLE";
127
169
  /** A publish request needs the org's publisher profile, which doesn't exist
128
170
  * yet (docs/plugin-publishing.md). Claim a handle first. */
129
171
  ErrorCode["PUBLISHER_REQUIRED"] = "PUBLISHER_REQUIRED";
@@ -202,6 +244,7 @@ export const ErrorCodeStatus = {
202
244
  [ErrorCode.REAUTH_REQUIRED]: 401,
203
245
  [ErrorCode.INSUFFICIENT_PERMISSIONS]: 403,
204
246
  [ErrorCode.SYSTEM_ORG_REQUIRED]: 403,
247
+ [ErrorCode.PLUGIN_MANAGED_NAME_RESERVED]: 403,
205
248
  [ErrorCode.PUBLISHER_TERMS_REQUIRED]: 403,
206
249
  [ErrorCode.PUBLISHER_ROOT_ORG_REQUIRED]: 403,
207
250
  [ErrorCode.PUBLISHER_SUSPENDED]: 403,
@@ -230,6 +273,23 @@ export const ErrorCodeStatus = {
230
273
  [ErrorCode.TEMPLATE_CONTRACT_VIOLATION]: 400,
231
274
  [ErrorCode.TEMPLATE_SIZE_EXCEEDED]: 400,
232
275
  [ErrorCode.TEMPLATE_VALIDATION_FAILED]: 400,
276
+ [ErrorCode.PLUGIN_MANAGED_NOT_LISTABLE]: 400,
277
+ [ErrorCode.PLUGIN_MANAGED_PRERELEASE]: 400,
278
+ [ErrorCode.TOOLCHAIN_USE_CONSOLE]: 400,
279
+ [ErrorCode.TOOLCHAIN_RELEASE_NOT_ELIGIBLE]: 400,
280
+ [ErrorCode.TOOLCHAIN_PIN_VIA_RELEASE]: 400,
281
+ [ErrorCode.TOOLCHAIN_NO_DEFAULT]: 409,
282
+ [ErrorCode.TOOLCHAIN_DEFAULT_REQUIRED]: 409,
283
+ [ErrorCode.TOOLCHAIN_DEFAULT_CHANGED]: 409,
284
+ [ErrorCode.TOOLCHAIN_INITIAL_ALREADY_SET]: 409,
285
+ [ErrorCode.TOOLCHAIN_GUARD_UNSCANNED]: 409,
286
+ [ErrorCode.TOOLCHAIN_GUARD_VULN_FLOOR]: 409,
287
+ [ErrorCode.TOOLCHAIN_GUARD_METADATA]: 409,
288
+ [ErrorCode.TOOLCHAIN_GUARD_PAIR_INCOMPLETE]: 409,
289
+ [ErrorCode.TOOLCHAIN_GUARD_CANARY_GATE]: 409,
290
+ [ErrorCode.TOOLCHAIN_PAIR_MISMATCH]: 500,
291
+ // BOOTSTRAP_IMAGE_UNRESOLVED is raised by the CLI, never sent by a service.
292
+ [ErrorCode.BOOTSTRAP_IMAGE_UNRESOLVED]: 500,
233
293
  [ErrorCode.CLIENT_UPGRADE_REQUIRED]: 426,
234
294
  [ErrorCode.QUOTA_EXCEEDED]: 429,
235
295
  [ErrorCode.AI_MEMBER_SHARE_EXCEEDED]: 429,
@@ -244,6 +304,7 @@ export const ErrorCodeStatus = {
244
304
  [ErrorCode.PLUGIN_VERSION_FROZEN]: 409,
245
305
  [ErrorCode.PLUGIN_VERSION_IN_USE]: 409,
246
306
  [ErrorCode.PLUGIN_DIGEST_MISMATCH]: 409,
307
+ [ErrorCode.PLUGIN_VERSION_IMMUTABLE]: 409,
247
308
  [ErrorCode.PUBLISHER_REQUIRED]: 409,
248
309
  [ErrorCode.PUBLISHER_HANDLE_RESERVED]: 409,
249
310
  [ErrorCode.PUBLISH_GATE_FAILED]: 409,
@@ -277,4 +338,4 @@ export const ErrorCodeStatus = {
277
338
  export function getStatusForErrorCode(code) {
278
339
  return ErrorCodeStatus[code] ?? 500;
279
340
  }
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lcnJvci1jb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQU4sSUFBWSxTQStMWDtBQS9MRCxXQUFZLFNBQVM7SUFDbkIsOEJBQThCO0lBQzlCLDBDQUE2QixDQUFBO0lBQzdCLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9COzs7dURBR21EO0lBQ25ELDBDQUE2QixDQUFBO0lBQzdCOzhFQUMwRTtJQUMxRSxnREFBbUMsQ0FBQTtJQUVuQyw2QkFBNkI7SUFDN0Isa0VBQXFELENBQUE7SUFDckQ7d0VBQ29FO0lBQ3BFLDhEQUFpRCxDQUFBO0lBQ2pEO29FQUNnRTtJQUNoRSxnRUFBbUQsQ0FBQTtJQUNuRDtrRUFDOEQ7SUFDOUQsZ0VBQW1ELENBQUE7SUFDbkQ7O29GQUVnRjtJQUNoRix3REFBMkMsQ0FBQTtJQUMzQzt3RUFDb0U7SUFDcEUsa0VBQXFELENBQUE7SUFDckQ7MkJBQ3VCO0lBQ3ZCLHdFQUEyRCxDQUFBO0lBQzNELG9EQUFvRDtJQUNwRCx3REFBMkMsQ0FBQTtJQUMzQztnRkFDNEU7SUFDNUUsd0NBQTJCLENBQUE7SUFDM0Isd0ZBQXdGO0lBQ3hGLHNFQUF5RCxDQUFBO0lBQ3pEO3lEQUNxRDtJQUNyRCxnRUFBbUQsQ0FBQTtJQUNuRDsyREFDdUQ7SUFDdkQsNERBQStDLENBQUE7SUFDL0M7OzJDQUV1QztJQUN2QywwREFBNkMsQ0FBQTtJQUM3QywwQ0FBNkIsQ0FBQTtJQUM3QiwwREFBNkMsQ0FBQTtJQUU3Qyx5QkFBeUI7SUFDekIsb0NBQXVCLENBQUE7SUFDdkIsNENBQStCLENBQUE7SUFDL0I7OzJEQUV1RDtJQUN2RCx3REFBMkMsQ0FBQTtJQUMzQzs7K0RBRTJEO0lBQzNELDBE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Q0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRztJQUMvQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHO0lBQ2hDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsR0FBRztJQUNwQyxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLEdBQUc7Q0FDaEQsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQWU7SUFDbkQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTdGFuZGFyZGl6ZWQgZXJyb3IgY29kZXMgdXNlZCBhY3Jvc3MgYWxsIEFQSSBtaWNyb3NlcnZpY2VzLlxuICogVXNlIHRoZXNlIGNvZGVzIGluIGVycm9yIHJlc3BvbnNlcyBmb3IgY29uc2lzdGVudCBjbGllbnQgaGFuZGxpbmcuXG4gKlxuICogRWFjaCBIVFRQIHN0YXR1cyBjYXRlZ29yeSBoYXMgb25lIHByaW1hcnkgY29kZS4gVXNlIHRoZSBgZGV0YWlsc2BcbiAqIGZpZWxkIGluIGVycm9yIHJlc3BvbnNlcyBmb3Igc3ViLXR5cGUgaW5mb3JtYXRpb24gKGUuZy4gd2hpY2ggcXVvdGFcbiAqIHdhcyBleGNlZWRlZCwgd2hpY2ggZmllbGQgZmFpbGVkIHZhbGlkYXRpb24pLlxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICAvLyBBdXRoZW50aWNhdGlvbiBlcnJvcnMgKDQwMSlcbiAgVU5BVVRIT1JJWkVEID0gJ1VOQVVUSE9SSVpFRCcsXG4gIFRPS0VOX0VYUElSRUQgPSAnVE9LRU5fRVhQSVJFRCcsXG4gIFRPS0VOX0lOVkFMSUQgPSAnVE9LRU5fSU5WQUxJRCcsXG4gIFRPS0VOX01JU1NJTkcgPSAnVE9LRU5fTUlTU0lORycsXG4gIFRPS0VOX1JFVk9LRUQgPSAnVE9LRU5fUkVWT0tFRCcsXG4gIC8qKiBUaGUgc2Vzc2lvbiBpcyBub3QgTUZBLWdyYWRlIChgYWFsYCBiZWxvdyB0aGUgcm91dGUncyBgbWluQXNzdXJhbmNlYCkuXG4gICAqICBUaGUgY2xpZW50IHNlbmRzIHRoZSBwZXJzb24gdG8gZW5yb2wgLyBzaWduIGluIGFnYWluIHdpdGggYSBzZWNvbmRcbiAgICogIGZhY3RvciDigJQgaXQgbXVzdCBOT1Qgc2lnbiB0aGVtIG91dCBvciByZXRyeSBhIHRva2VuIHJlZnJlc2gsIHNpbmNlIGFcbiAgICogIHJlZnJlc2ggY2FuIG5ldmVyIHJhaXNlIHRoZSBhc3N1cmFuY2UgbGV2ZWwuICovXG4gIE1GQV9SRVFVSVJFRCA9ICdNRkFfUkVRVUlSRUQnLFxuICAvKiogVGhlIHNlc3Npb24gaXMgTUZBLWdyYWRlIGJ1dCBpdHMgYGF1dGhfdGltZWAgaXMgb2xkZXIgdGhhbiB0aGUgcm91dGUnc1xuICAgKiAgYG1heEFnZWAg4oCUIHRoZSBwZXJzb24gbXVzdCBhdXRoZW50aWNhdGUgYWdhaW4gKG5vdCBtZXJlbHkgcmVmcmVzaCkuICovXG4gIFJFQVVUSF9SRVFVSVJFRCA9ICdSRUFVVEhfUkVRVUlSRUQnLFxuXG4gIC8vIEF1dGhvcml6YXRpb24gZXJyb3JzICg0MDMpXG4gIElOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyA9ICdJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMnLFxuICAvKiogQSBtYWNoaW5lIGNyZWRlbnRpYWwgKHNlcnZpY2UgcHJpbmNpcGFsLCBvcmcgc2VydmljZSBhY2NvdW50LCBvciBhblxuICAgKiAgZXhjaGFuZ2VkIGFjY2VzcyBrZXkpIHJlYWNoZWQgYSByb3V0ZSB0aGF0IHJlcXVpcmVzIGEgcGVyc29uLiAqL1xuICBIVU1BTl9TRVNTSU9OX1JFUVVJUkVEID0gJ0hVTUFOX1NFU1NJT05fUkVRVUlSRUQnLFxuICAvKiogQSBib290c3RyYXAtYWRtaW4gZW5yb2xtZW50IHNlc3Npb24gKGBtZmFFbnJvbGxtZW50UGVuZGluZ2ApIHJlYWNoZWQgYVxuICAgKiAgcm91dGUgb3V0c2lkZSB0aGUgZW5yb2xtZW50IC8gc2lnbi1vdXQgLyBzZXR1cCBhbGxvd2xpc3QuICovXG4gIE1GQV9FTlJPTExNRU5UX1JFUVVJUkVEID0gJ01GQV9FTlJPTExNRU5UX1JFUVVJUkVEJyxcbiAgLyoqIEEgcmVhZC1vbmx5IGltcGVyc29uYXRpb24gdG9rZW4gKGBpbXBlcnNvbmF0aW9uUmVhZE9ubHlgKSBhdHRlbXB0ZWQgYVxuICAgKiAgc3RhdGUtY2hhbmdpbmcgcmVxdWVzdCAoYW55dGhpbmcgYnV0IEdFVC9IRUFEL09QVElPTlMpLiAqL1xuICBJTVBFUlNPTkFUSU9OX1JFQURfT05MWSA9ICdJTVBFUlNPTkFUSU9OX1JFQURfT05MWScsXG4gIC8qKiBBIHBsdWdpbi1lY29zeXN0ZW0gZ292ZXJuYW5jZSByb3V0ZSAoZG9jcy9ydW5ib29rcy9lY29zeXN0ZW0tbW9kZXJhdGlvbi5tZClcbiAgICogIHdhcyBjYWxsZWQgZnJvbSBhbiBhY3RpdmUgb3JnIG90aGVyIHRoYW4gdGhlIHN5c3RlbSBvcmcg4oCUIGEgdG9rZW4gbWludGVkIGluXG4gICAqICBhIHRlbmFudCBvcmcgaXMgcmVmdXNlZCBldmVuIGZvciB0aGUgc2FtZSB1c2VyLiBTd2l0Y2ggdG8gdGhlIHN5c3RlbSBvcmcuICovXG4gIFNZU1RFTV9PUkdfUkVRVUlSRUQgPSAnU1lTVEVNX09SR19SRVFVSVJFRCcsXG4gIC8qKiBUaGUgcHVibGlzaGVyIGhhc24ndCBhY2NlcHRlZCB0aGUgQ1VSUkVOVCBwdWJsaXNoZXIgdGVybXMgdmVyc2lvbiwgc28gaXRcbiAgICogIGNhbid0IHN1Ym1pdCBuZXcgcmVxdWVzdHMgKGV4aXN0aW5nIGxpc3RpbmdzIGFyZSB1bmFmZmVjdGVkKS4gKi9cbiAgUFVCTElTSEVSX1RFUk1TX1JFUVVJUkVEID0gJ1BVQkxJU0hFUl9URVJNU19SRVFVSVJFRCcsXG4gIC8qKiBQdWJsaXNoaW5nIGlzIGRvbmUgZnJvbSB0aGUgUk9PVCBvcmc7IGEgdGVhbSBvcmcgY2FuJ3Qgb3duIGEgcHVibGlzaGVyIG9yXG4gICAqICBzdWJtaXQgcmVxdWVzdHMuICovXG4gIFBVQkxJU0hFUl9ST09UX09SR19SRVFVSVJFRCA9ICdQVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRUQnLFxuICAvKiogVGhlIHB1Ymxpc2hlciBpcyBzdXNwZW5kZWQgYnkgdGhlIHN5c3RlbSBvcmcuICovXG4gIFBVQkxJU0hFUl9TVVNQRU5ERUQgPSAnUFVCTElTSEVSX1NVU1BFTkRFRCcsXG4gIC8qKiBUaGUgb3JnYW5pemF0aW9uJ3MgYWRtaW5pc3RyYXRvcnMgc3dpdGNoZWQgQUkgZmVhdHVyZXMgb2ZmIChgYWlFbmFibGVkOiBmYWxzZWBcbiAgICogIG9uIHRoZSBvcmcncyBBSSBjb25maWd1cmF0aW9uKS4gRXZlcnkgQUkgZW50cnkgcG9pbnQgcmVmdXNlcyB3aXRoIGl0LiAqL1xuICBBSV9ESVNBQkxFRCA9ICdBSV9ESVNBQkxFRCcsXG4gIC8qKiBUZW5hbnQgcHVibGlzaGluZyBpcyBzd2l0Y2hlZCBvZmYgb24gdGhpcyBpbnN0YW5jZSAoYFBMVUdJTl9QVUJMSVNISU5HX0VOQUJMRURgKS4gKi9cbiAgUExVR0lOX1BVQkxJU0hJTkdfRElTQUJMRUQgPSAnUExVR0lOX1BVQkxJU0hJTkdfRElTQUJMRUQnLFxuICAvKiogUmV2aWV3IHdyaXRlcyBhcmUgc3dpdGNoZWQgb2ZmIG9uIHRoaXMgaW5zdGFuY2UgKGBQTFVHSU5fUkVWSUVXU19FTkFCTEVEYCk6XG4gICAqICByZXZpZXdzIHN0YXkgcmVhZGFibGUsIG5vdGhpbmcgbmV3IGlzIHdyaXR0ZW4uICovXG4gIFBMVUdJTl9SRVZJRVdTX0RJU0FCTEVEID0gJ1BMVUdJTl9SRVZJRVdTX0RJU0FCTEVEJyxcbiAgLyoqIEEgbWVtYmVyIG9mIHRoZSBwdWJsaXNoZXIncyBvd24gb3JnYW5pemF0aW9uIHRyaWVkIHRvIHJldmlldyAob3Igdm90ZSBvbiBhXG4gICAqICByZXZpZXcgb2YpIG9uZSBvZiBpdHMgbGlzdGluZ3MgKHNlbGYtcHJvbW90aW9uKS4gKi9cbiAgUkVWSUVXX1NFTEZfUFJPTU9USU9OID0gJ1JFVklFV19TRUxGX1BST01PVElPTicsXG4gIC8qKiBTZXBhcmF0aW9uIG9mIGR1dGllczogdGhlIGNhbGxlciBtYXkgbm90IGRlY2lkZSB0aGlzIHJlcXVlc3Qg4oCUXG4gICAqICBpdCBjYW1lIGZyb20gYW4gb3JnIHRoZXkgYmVsb25nIHRvLCB0aGV5IHVwbG9hZGVkIHRoZSB2ZXJzaW9uLCBvciB0aGV5XG4gICAqICBnYXZlIHRoZSBmaXJzdCBvZiB0d28gYXBwcm92YWxzLiAqL1xuICBTRVBBUkFUSU9OX09GX0RVVElFUyA9ICdTRVBBUkFUSU9OX09GX0RVVElFUycsXG4gIE9SR19NSVNNQVRDSCA9ICdPUkdfTUlTTUFUQ0gnLFxuICBDT01QTElBTkNFX1ZJT0xBVElPTiA9ICdDT01QTElBTkNFX1ZJT0xBVElPTicsXG5cbiAgLy8gTm90IGZvdW5kIGVycm9ycyAoNDA0KVxuICBOT1RfRk9VTkQgPSAnTk9UX0ZPVU5EJyxcbiAgT1JHX05PVF9GT1VORCA9ICdPUkdfTk9UX0ZPVU5EJyxcbiAgLyoqIFRoZSBlbWFpbCBnaXZlbiB0byBcImFkZCBtZW1iZXJcIiBoYXMgbm8gYWNjb3VudC4gRGlzdGluY3QgZnJvbSBOT1RfRk9VTkRcbiAgICogIGJlY2F1c2UgaXQgaXMgQUNUSU9OQUJMRTogdGhlIGNhbGxlcidzIGludGVudCBpcyBzYXRpc2ZpYWJsZSBieSBzZW5kaW5nIGFuXG4gICAqICBpbnZpdGF0aW9uLCBhbmQgYSBiYXJlIDQwNCBuYW1lZCBubyB3YXkgZm9yd2FyZC4gKi9cbiAgVVNFUl9OT1RfUkVHSVNURVJFRCA9ICdVU0VSX05PVF9SRUdJU1RFUkVEJyxcbiAgLyoqIFRoZSBhbm9ueW1vdXMgcGx1Z2luIHN1Ym1pc3Npb24gQVBJIGlzIG9mZiBvbiB0aGlzIGluc3RhbmNlXG4gICAqICAoYEFOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEYCwgb3Igb3V0Ym91bmQgZW1haWwgaXNuJ3QgY29uZmlndXJlZCkg4oCUXG4gICAqICBhbnN3ZXJlZCBhcyBhIHBsYWluIDQwNCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFNVQk1JU1NJT05TX0RJU0FCTEVEID0gJ1NVQk1JU1NJT05TX0RJU0FCTEVEJyxcblxuICAvLyBWYWxpZGF0aW9uIGVycm9ycyAoNDAwKVxuICBWQUxJREFUSU9OX0VSUk9SID0gJ1ZBTElEQVRJT05fRVJST1InLFxuICBNSVNTSU5HX1JFUVVJUkVEX0ZJRUxEID0gJ01JU1NJTkdfUkVRVUlSRURfRklFTEQnLFxuICAvKiogQSBwcm9vZi1vZi13b3JrIGFuc3dlciBpcyBtaXNzaW5nLCBtYWxmb3JtZWQsIGV4cGlyZWQsIHRvbyBlYXN5LCB3cm9uZyxcbiAgICogIG9yIHdhcyBhbHJlYWR5IHVzZWQgKGFub255bW91cyBzdWJtaXNzaW9ucykuICovXG4gIFBST09GX09GX1dPUktfSU5WQUxJRCA9ICdQUk9PRl9PRl9XT1JLX0lOVkFMSUQnLFxuICBURU1QTEFURV9VTktOT1dOX1BBVEggPSAnVEVNUExBVEVfVU5LTk9XTl9QQVRIJyxcbiAgVEVNUExBVEVfQ1lDTEUgPSAnVEVNUExBVEVfQ1lDTEUnLFxuICBURU1QTEFURV9QQVJTRV9FUlJPUiA9ICdURU1QTEFURV9QQVJTRV9FUlJPUicsXG4gIFRFTVBMQVRFX1RZUEVfTUlTTUFUQ0ggPSAnVEVNUExBVEVfVFlQRV9NSVNNQVRDSCcsXG4gIFRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRUQgPSAnVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCcsXG4gIFRFTVBMQVRFX0NPTlRSQUNUX1ZJT0xBVElPTiA9ICdURU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT04nLFxuICBURU1QTEFURV9TSVpFX0VYQ0VFREVEID0gJ1RFTVBMQVRFX1NJWkVfRVhDRUVERUQnLFxuICBURU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRCA9ICdURU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRCcsXG5cbiAgLy8gQ2xpZW50IHRvbyBvbGQgKDQyNilcbiAgLyoqIFRoZSBwaXBlbGluZS1tYW5hZ2VyIENMSSBpcyBvbGRlciB0aGFuIHRoZSBwbGF0Zm9ybSdzXG4gICAqICBgUElQRUxJTkVfTUFOQUdFUl9NSU5fVkVSU0lPTmA7IHRoZSBmaXggaXMgYHBpcGVsaW5lLW1hbmFnZXIgLS11cGdyYWRlYC4gKi9cbiAgQ0xJRU5UX1VQR1JBREVfUkVRVUlSRUQgPSAnQ0xJRU5UX1VQR1JBREVfUkVRVUlSRUQnLFxuXG4gIC8vIFF1b3RhL1JhdGUgbGltaXQgZXJyb3JzICg0MjkpXG4gIFFVT1RBX0VYQ0VFREVEID0gJ1FVT1RBX0VYQ0VFREVEJyxcbiAgLyoqIFRoZSBjYWxsZXIncyBwZXItbWVtYmVyIHNoYXJlIG9mIHRoZSBvcmcncyBgYWlDYWxsc2AgKG9yZyBzZXR0aW5nXG4gICAqICBgYWlDYWxsc1Blck1lbWJlclBjdGApIGlzIHNwZW50IGZvciB0aGlzIHBlcmlvZCDigJQgdGhlIG9yZyBpdHNlbGYgbWF5IGhhdmUgaGVhZHJvb20uICovXG4gIEFJX01FTUJFUl9TSEFSRV9FWENFRURFRCA9ICdBSV9NRU1CRVJfU0hBUkVfRVhDRUVERUQnLFxuICAvKiogVGhlIG9yZydzIHBlci1wZXJpb2QgQUkgdG9rZW4gYnVkZ2V0IChvcmcgc2V0dGluZyBgYWlUb2tlbkJ1ZGdldGApIGlzIHNwZW50LiAqL1xuICBBSV9UT0tFTl9CVURHRVRfRVhDRUVERUQgPSAnQUlfVE9LRU5fQlVER0VUX0VYQ0VFREVEJyxcbiAgUkFURV9MSU1JVF9FWENFRURFRCA9ICdSQVRFX0xJTUlUX0VYQ0VFREVEJyxcbiAgLyoqIEFuIGFub255bW91cyBzdWJtaXR0ZXIgKHBlciB2ZXJpZmllZCBlbWFpbCwgb3IgcGVyIGNsaWVudCBJUCkgaXMgYXQgdGhlXG4gICAqICByb2xsaW5nIDI0LWhvdXIgc3VibWlzc2lvbiBjYXAuICovXG4gIFNVQk1JU1NJT05fTElNSVQgPSAnU1VCTUlTU0lPTl9MSU1JVCcsXG5cbiAgLy8gUGF5bG9hZCBlcnJvcnMgKDQxMylcbiAgUEFZTE9BRF9UT09fTEFSR0UgPSAnUEFZTE9BRF9UT09fTEFSR0UnLFxuXG4gIC8vIENvbmZsaWN0IGVycm9ycyAoNDA5KVxuICBDT05GTElDVCA9ICdDT05GTElDVCcsXG4gIERVUExJQ0FURV9FTlRSWSA9ICdEVVBMSUNBVEVfRU5UUlknLFxuICBTQ0FOX0NPTkZMSUNUID0gJ1NDQU5fQ09ORkxJQ1QnLFxuICAvKiogQSBwbHVnaW4gaW1hZ2UncyBjb3NpZ24gc2lnbmF0dXJlIChvciBpdHMgc2lnbmVkIFNCT00gYXR0ZXN0YXRpb24pIGRpZFxuICAgKiAgbm90IHZlcmlmeSBhZ2FpbnN0IHRoZSBwbGF0Zm9ybSdzIHBsdWdpbi1zaWduaW5nIGtleSDigJQgdGhlIHJlZ2lzdHJ5XG4gICAqICBjb250ZW50IG5vIGxvbmdlciBtYXRjaGVzIHdoYXQgdGhlIHBsYXRmb3JtIGJ1aWx0IGFuZCBzaWduZWQuICovXG4gIElNQUdFX1ZFUklGSUNBVElPTl9GQUlMRUQgPSAnSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcsXG4gIC8qKiBUaGUgcGx1Z2luIHZlcnNpb24gaXMgaW1tdXRhYmxlIOKAlCBhIHB1Ymxpc2ggcmVxdWVzdCByZWZlcmVuY2VzIGl0XG4gICAqICAoYGZyb3plbl9hdGAgc2V0KSBvciBpdCBpcyBwdWJsaXNoZWQgdG8gYSBsaXN0aW5nIOKAlCBzbyBpdCBjYW4gYmUgbmVpdGhlclxuICAgKiAgcmUtdXBsb2FkZWQsIGVkaXRlZCBub3IgZGVsZXRlZCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFBMVUdJTl9WRVJTSU9OX0ZST1pFTiA9ICdQTFVHSU5fVkVSU0lPTl9GUk9aRU4nLFxuICAvKiogVGhlIHBsdWdpbiB2ZXJzaW9uIGlzIHJlZmVyZW5jZWQgYnkgb25lIG9mIHRoZSBvcmcncyBwaXBlbGluZXMsIG9yIHB1Ymxpc2hlZFxuICAgKiAgdG8gYW4gZWNvc3lzdGVtIGxpc3Rpbmc7IGRlbGV0aW5nIGl0IG5lZWRzIGA/Zm9yY2U9dHJ1ZWAgcGx1cyBhIHN0ZXAtdXAuICovXG4gIFBMVUdJTl9WRVJTSU9OX0lOX1VTRSA9ICdQTFVHSU5fVkVSU0lPTl9JTl9VU0UnLFxuICAvKiogQSBmcmVlemUgbmFtZWQgYW4gaW1hZ2UgZGlnZXN0IHRoYXQgaXMgbm90IHRoZSB2ZXJzaW9uJ3Mgc3RvcmVkIGRpZ2VzdFxuICAgKiAgKGZhaWwgY2xvc2VkOiB3aGF0IHdhcyByZXF1ZXN0ZWQgaXMgbm90IHdoYXQgd291bGQgYmUgcHVibGlzaGVkKS4gKi9cbiAgUExVR0lOX0RJR0VTVF9NSVNNQVRDSCA9ICdQTFVHSU5fRElHRVNUX01JU01BVENIJyxcbiAgLyoqIEEgcHVibGlzaCByZXF1ZXN0IG5lZWRzIHRoZSBvcmcncyBwdWJsaXNoZXIgcHJvZmlsZSwgd2hpY2ggZG9lc24ndCBleGlzdFxuICAgKiAgeWV0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gQ2xhaW0gYSBoYW5kbGUgZmlyc3QuICovXG4gIFBVQkxJU0hFUl9SRVFVSVJFRCA9ICdQVUJMSVNIRVJfUkVRVUlSRUQnLFxuICAvKiogVGhlIHJlcXVlc3RlZCBwdWJsaXNoZXIgaGFuZGxlIGlzIHJlc2VydmVkIChPZmZpY2lhbC9WZXJpZmllZFxuICAgKiAgcmVzZXJ2YXRpb25zLCBjb25mdXNhYmxlcykuIFN1Ym1pdCBhIGBjbGFpbWAgcmVxdWVzdCBpbnN0ZWFkLiAqL1xuICBQVUJMSVNIRVJfSEFORExFX1JFU0VSVkVEID0gJ1BVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRUQnLFxuICAvKiogQSBwdWJsaXNoIHJlcXVlc3QgZmFpbGVkIGEgc3VibWl0IGdhdGUgKHB1YmxpYyB2aXNpYmlsaXR5LCBTUERYIGxpY2Vuc2UsXG4gICAqICBSRUFETUUsIHNpZ25hdHVyZSwgc2NhbiwgdnVsbmVyYWJpbGl0eSBnYXRlIOKApik7IGBkZXRhaWxzLmdhdGVzYCBsaXN0cyB0aGVtLiAqL1xuICBQVUJMSVNIX0dBVEVfRkFJTEVEID0gJ1BVQkxJU0hfR0FURV9GQUlMRUQnLFxuICAvKiogQSBWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gKG9yIGl0cyBkZWNpc2lvbikgZnJvbSBhbiBvcmcgd2hvc2UgcGxhblxuICAgKiAgbGFja3MgdGhlIGB2ZXJpZmllZF9wdWJsaXNoZXJgIGZlYXR1cmUgKFRlYW0rLCBkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgVkVSSUZJRURfUExBTl9SRVFVSVJFRCA9ICdWRVJJRklFRF9QTEFOX1JFUVVJUkVEJyxcbiAgLyoqIEEgVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIGZyb20gYW4gb3JnIHdpdGggbm8gRE5TLXZlcmlmaWVkIGRvbWFpbi4gKi9cbiAgVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEID0gJ1ZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRCcsXG4gIC8qKiBBIFZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBmcm9tIGFuIG9yZyB3aG9zZSBvd25lciBoYXMgbm8gc2Vjb25kXG4gICAqICBmYWN0b3IgKHBhc3NrZXkgb3IgYXV0aGVudGljYXRvciBhcHApLiAqL1xuICBWRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRUQgPSAnVkVSSUZJRURfT1dORVJfTUZBX1JFUVVJUkVEJyxcbiAgLyoqIEEgcGx1Z2luIHJlZmVyZW5jZSBuYW1lcyBhbiBlY29zeXN0ZW0gbGlzdGluZyB0aGUgb3JnIGhhc24ndCBpbnN0YWxsZWQgKG9yXG4gICAqICB3aG9zZSBpbnN0YWxsIGlzIHBlbmRpbmcsIGRlbmllZCwgb3IgZG9lc24ndCBjb3ZlciB0aGUgdmVyc2lvbiBhc2tlZCBmb3I7XG4gICAqICBgZGV0YWlscy5yZWFzb25gKSDigJQgZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCAqL1xuICBQTFVHSU5fTk9UX0lOU1RBTExFRCA9ICdQTFVHSU5fTk9UX0lOU1RBTExFRCcsXG4gIC8qKiBUaGUgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5IHJlZnVzZXMgdGhlIGxpc3Rpbmc6IGl0cyB0aWVyIGlzbid0IGFsbG93ZWQsXG4gICAqICB0aGUgbGlzdGluZyBpcyBibG9ja2VkLCBvciBhbiBhZHZpc29yeSBibG9ja3MgdGhlIHZlcnNpb24gKGBkZXRhaWxzLnJlYXNvbmApLiAqL1xuICBQTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1kgPSAnUExVR0lOX0JMT0NLRURfQllfUE9MSUNZJyxcbiAgLyoqIFRoZSBsaXN0aW5nIG9yIHZlcnNpb24gY2FuJ3QgYmUgdXNlZDogeWFua2VkLCBzdXNwZW5kZWQsIG9yIHBhdXNlZCBmb3IgbmV3XG4gICAqICBpbnN0YWxscyAoYGRldGFpbHMucmVhc29uYCkuICovXG4gIFBMVUdJTl9VTkFWQUlMQUJMRSA9ICdQTFVHSU5fVU5BVkFJTEFCTEUnLFxuICAvKiogQW4gYXV0by1jcmVhdGVkIHBsYWNlaG9sZGVyIHBsdWdpbiBjYW4ndCB0YWtlIHRoZSBuYW1lIG9mIGEgbGlzdGVkIHBsdWdpblxuICAgKiDigJQgaW5zdGFsbCB0aGUgbGlzdGluZyBpbnN0ZWFkLiAqL1xuICBQTFVHSU5fTkFNRV9MSVNURUQgPSAnUExVR0lOX05BTUVfTElTVEVEJyxcbiAgLyoqIEFuIGFub255bW91cyBzdWJtaXNzaW9uIG5hbWVzIGEgY29tbXVuaXR5IGxpc3RpbmcgYW5vdGhlciBzdWJtaXR0ZXIgb3ducyxcbiAgICogIGEgcmVzZXJ2ZWQgbmFtZSwgYW4gT2ZmaWNpYWwvVmVyaWZpZWQgbGlzdGluZydzIG5hbWUsIG9yIG9uZSBjb25mdXNhYmxlXG4gICAqICB3aXRoIGEgdG9wIGxpc3Rpbmc7IGBkZXRhaWxzLnJlYXNvbmAgc2F5cyB3aGljaC4gKi9cbiAgTkFNRV9UQUtFTiA9ICdOQU1FX1RBS0VOJyxcbiAgLyoqIEFuIFVOUVVBTElGSUVEIHJlZmVyZW5jZSBuYW1lcyBhIHBsdWdpbiB0aGUgb3JnIERFTEVURUQ6IHJlZnVzZWQgcmF0aGVyXG4gICAqICB0aGFuIHNpbGVudGx5IGZhbGxpbmcgdGhyb3VnaCB0byBhIHNhbWUtbmFtZWQgbGlzdGluZywgd2hpY2ggd291bGQgc3dhcCB0aGVcbiAgICogIGltYWdlIGEgcGlwZWxpbmUgcnVucyB3aXRob3V0IGFueW9uZSBjaG9vc2luZyBpdCAoYGRldGFpbHMuc3RhdGU6ICdkZWxldGVkJ2ApLiAqL1xuICBQTFVHSU5fREVMRVRFRCA9ICdQTFVHSU5fREVMRVRFRCcsXG5cbiAgLy8gUGx1Z2luIGJ1aWxkIG91dGNvbWVzICg0MjIpIOKAlCB0ZXJtaW5hbCBidWlsZCBmYWlsdXJlcywgcmVwb3J0ZWQgb24gdGhlIGJ1aWxkXG4gIC8vIHN0cmVhbSBhbmQgaW4gdGhlIGJ1aWxkJ3MgZmFpbHVyZSByZWNvcmQsIG5ldmVyIGFuc3dlcmVkIG9uIGEgcmVxdWVzdC5cbiAgLyoqIFRoZSBidWlsdCBpbWFnZSBjb3VsZCBub3QgYmUgdnVsbmVyYWJpbGl0eS1zY2FubmVkIGFmdGVyIGV2ZXJ5IHJldHJ5LCBzb1xuICAgKiAgbm90aGluZyB3YXMgcGVyc2lzdGVkIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgSU1BR0VfU0NBTl9VTkFWQUlMQUJMRSA9ICdJTUFHRV9TQ0FOX1VOQVZBSUxBQkxFJyxcbiAgLyoqIFRoZSBidWlsdCBpbWFnZSBoYXMgbW9yZSBmaXhhYmxlIENyaXRpY2FsIGZpbmRpbmdzIHRoYW4gdGhlIHBsYXRmb3JtXG4gICAqICBmbG9vciBgUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTYDsgdGhlIG1lc3NhZ2UgbGlzdHMgdGhlbSB3aXRoIHRoZWlyIGZpeGVzLiAqL1xuICBQTFVHSU5fVlVMTl9HQVRFID0gJ1BMVUdJTl9WVUxOX0dBVEUnLFxuICAvKiogQW4gdXBsb2FkIHdob3NlIE5BTUUgd291bGQgb3ZlcnJpZGUgYSBsaXN0aW5nIG9yIHRoZSBwYXJlbnQgb3JnJ3MgcGx1Z2luLFxuICAgKiAgcmVmdXNlZCBiZWNhdXNlIHRoZSBjb25zdW1wdGlvbiBwb2xpY3kgc2F5cyBgc2hhZG93aW5nOiBkZW55YC4gKi9cbiAgUExVR0lOX05BTUVfU0hBRE9XUyA9ICdQTFVHSU5fTkFNRV9TSEFET1dTJyxcblxuICAvLyBCaWxsaW5nIGVycm9yc1xuICBQQVlNRU5UX01FVEhPRF9SRVFVSVJFRCA9ICdQQVlNRU5UX01FVEhPRF9SRVFVSVJFRCcsIC8vIDQwMlxuICBESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEID0gJ0RJU0NPVU5UX0NFSUxJTkdfRVhDRUVERUQnLCAvLyA0MDBcbiAgRElTQ09VTlRfTk9UX0ZPVU5EID0gJ0RJU0NPVU5UX05PVF9GT1VORCcsIC8vIDQwNFxuICBESVNDT1VOVF9JTkFDVElWRSA9ICdESVNDT1VOVF9JTkFDVElWRScsIC8vIDQwOVxuICBQTEFOX09WRVJfQ0FQID0gJ1BMQU5fT1ZFUl9DQVAnLCAvLyA0MDlcbiAgQURET05fT1ZFUl9DQVAgPSAnQURET05fT1ZFUl9DQVAnLCAvLyA0MDlcblxuICAvLyBTZXJ2ZXIgZXJyb3JzICg1MDApXG4gIElOVEVSTkFMX0VSUk9SID0gJ0lOVEVSTkFMX0VSUk9SJyxcbiAgREFUQUJBU0VfRVJST1IgPSAnREFUQUJBU0VfRVJST1InLFxuXG4gIC8vIE5vdCBpbXBsZW1lbnRlZCAoNTAxKSDigJQgdGhlIGNvbmZpZ3VyZWQgcHJvdmlkZXIgaGFzIG5vIHN1Y2ggY2FwYWJpbGl0eVxuICBOT1RfSU1QTEVNRU5URUQgPSAnTk9UX0lNUExFTUVOVEVEJyxcblxuICAvLyBTZXJ2aWNlIHVuYXZhaWxhYmxlICg1MDMpXG4gIFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnU0VSVklDRV9VTkFWQUlMQUJMRScsXG4gIENPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRSA9ICdDT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEUnLFxufVxuXG4vKipcbiAqIE1hcHMgZXJyb3IgY29kZXMgdG8gdGhlaXIgZGVmYXVsdCBIVFRQIHN0YXR1cyBjb2Rlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEVycm9yQ29kZVN0YXR1czogUmVjb3JkPEVycm9yQ29kZSwgbnVtYmVyPiA9IHtcbiAgW0Vycm9yQ29kZS5VTkFVVEhPUklaRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fRVhQSVJFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9JTlZBTElEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX01JU1NJTkddOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fUkVWT0tFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5NRkFfUkVRVUlSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuUkVBVVRIX1JFUVVJUkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OU106IDQwMyxcbiAgW0Vycm9yQ29kZS5TWVNURU1fT1JHX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9URVJNU19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1NVU1BFTkRFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUFVCTElTSElOR19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5BSV9ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUkVWSUVXU19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5SRVZJRVdfU0VMRl9QUk9NT1RJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuU0VQQVJBVElPTl9PRl9EVVRJRVNdOiA0MDMsXG4gIFtFcnJvckNvZGUuSFVNQU5fU0VTU0lPTl9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5NRkFfRU5ST0xMTUVOVF9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5JTVBFUlNPTkFUSU9OX1JFQURfT05MWV06IDQwMyxcbiAgW0Vycm9yQ29kZS5PUkdfTUlTTUFUQ0hdOiA0MDMsXG4gIFtFcnJvckNvZGUuQ09NUExJQU5DRV9WSU9MQVRJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuTk9UX0ZPVU5EXTogNDA0LFxuICBbRXJyb3JDb2RlLk9SR19OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuVVNFUl9OT1RfUkVHSVNURVJFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5TVUJNSVNTSU9OU19ESVNBQkxFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SXTogNDAwLFxuICBbRXJyb3JDb2RlLk1JU1NJTkdfUkVRVUlSRURfRklFTERdOiA0MDAsXG4gIFtFcnJvckNvZGUuUFJPT0ZfT0ZfV09SS19JTlZBTElEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9DWUNMRV06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9UWVBFX01JU01BVENIXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NJWkVfRVhDRUVERURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuQ0xJRU5UX1VQR1JBREVfUkVRVUlSRURdOiA0MjYsXG4gIFtFcnJvckNvZGUuUVVPVEFfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuQUlfTUVNQkVSX1NIQVJFX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLkFJX1RPS0VOX0JVREdFVF9FWENFRURFRF06IDQyOSxcbiAgW0Vycm9yQ29kZS5SQVRFX0xJTUlUX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLlNVQk1JU1NJT05fTElNSVRdOiA0MjksXG4gIFtFcnJvckNvZGUuUEFZTE9BRF9UT09fTEFSR0VdOiA0MTMsXG4gIFtFcnJvckNvZGUuQ09ORkxJQ1RdOiA0MDksXG4gIFtFcnJvckNvZGUuRFVQTElDQVRFX0VOVFJZXTogNDA5LFxuICBbRXJyb3JDb2RlLlNDQU5fQ09ORkxJQ1RdOiA0MDksXG4gIFtFcnJvckNvZGUuSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVkVSU0lPTl9GUk9aRU5dOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX1ZFUlNJT05fSU5fVVNFXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9ESUdFU1RfTUlTTUFUQ0hdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSF9HQVRFX0ZBSUxFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9QTEFOX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX05PVF9JTlNUQUxMRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUExVR0lOX0JMT0NLRURfQllfUE9MSUNZXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9VTkFWQUlMQUJMRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTkFNRV9MSVNURURdOiA0MDksXG4gIFtFcnJvckNvZGUuTkFNRV9UQUtFTl06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fREVMRVRFRF06IDQxMCxcbiAgW0Vycm9yQ29kZS5JTUFHRV9TQ0FOX1VOQVZBSUxBQkxFXTogNDIyLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WVUxOX0dBVEVdOiA0MjIsXG4gIFtFcnJvckNvZGUuUExVR0lOX05BTUVfU0hBRE9XU106IDQwOSxcbiAgW0Vycm9yQ29kZS5QQVlNRU5UX01FVEhPRF9SRVFVSVJFRF06IDQwMixcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEXTogNDAwLFxuICBbRXJyb3JDb2RlLkRJU0NPVU5UX05PVF9GT1VORF06IDQwNCxcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9JTkFDVElWRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTEFOX09WRVJfQ0FQXTogNDA5LFxuICBbRXJyb3JDb2RlLkFERE9OX09WRVJfQ0FQXTogNDA5LFxuICBbRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SXTogNTAwLFxuICBbRXJyb3JDb2RlLkRBVEFCQVNFX0VSUk9SXTogNTAwLFxuICBbRXJyb3JDb2RlLk5PVF9JTVBMRU1FTlRFRF06IDUwMSxcbiAgW0Vycm9yQ29kZS5TRVJWSUNFX1VOQVZBSUxBQkxFXTogNTAzLFxuICBbRXJyb3JDb2RlLkNPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRV06IDUwMyxcbn07XG5cbi8qKlxuICogR2V0IHRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciBhbiBlcnJvciBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRm9yRXJyb3JDb2RlKGNvZGU6IEVycm9yQ29kZSk6IG51bWJlciB7XG4gIHJldHVybiBFcnJvckNvZGVTdGF0dXNbY29kZV0gPz8gNTAwO1xufVxuIl19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lcnJvci1jb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQU4sSUFBWSxTQXlPWDtBQXpPRCxXQUFZLFNBQVM7SUFDbkIsOEJBQThCO0lBQzlCLDBDQUE2QixDQUFBO0lBQzdCLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9COzs7dURBR21EO0lBQ25ELDBDQUE2QixDQUFBO0lBQzdCOzhFQUMwRTtJQUMxRSxnREFBbUMsQ0FBQTtJQUVuQyw2QkFBNkI7SUFDN0Isa0VBQXFELENBQUE7SUFDckQ7d0VBQ29FO0lBQ3BFLDhEQUFpRCxDQUFBO0lBQ2pEO29FQUNnRTtJQUNoRSxnRUFBbUQsQ0FBQTtJQUNuRDtrRUFDOEQ7SUFDOUQsZ0VBQW1ELENBQUE7SUFDbkQ7O29GQUVnRjtJQUNoRix3REFBMkMsQ0FBQTtJQUMzQzs7NkRBRXlEO0lBQ3pELDBFQUE2RCxDQUFBO0lBQzdEO3dFQUNvRTtJQUNwRSxrRUFBcUQsQ0FBQTtJQUNyRDsyQkFDdUI7SUFDdkIsd0VBQTJELENBQUE7SUFDM0Qsb0RBQW9EO0lBQ3BELHdEQUEyQyxDQUFBO0lBQzNDO2dGQUM0RTtJQUM1RSx3Q0FBMkIsQ0FBQTtJQUMzQix3RkFBd0Y7SUFDeEYsc0VBQXlELENBQUE7SUFDekQ7eURBQ3FEO0lBQ3JELGdFQUFtRCxDQUFBO0lBQ25EOzJEQUN1RDtJQUN2RCw0REFBK0MsQ0FBQTtJQUMvQzs7MkNBRXVDO0lBQ3ZDLDBEQUE2QyxDQUFBO0lBQzdDLDBDQUE2QixDQUFBO0lBQzdCLDBEQUE2QyxDQUFBO0lBRTdDLHlCQUF5QjtJQUN6QixvQ0FBdUIsQ0FBQTtJQUN2Qiw0Q0FBK0IsQ0FBQTtJQUMvQjs7MkRBRXVEO0lBQ3ZELHdEQUEyQyxDQUFBO0lBQzNDOzsrREFFMkQ7SUFDM0QsMERBQTZDLENBQUE7SUFFN0MsMEJBQTBCO0lBQzFCLGtEQUFxQyxDQUFBO0lBQ3JDLDhEQUFpRCxDQUFBO0lBQ2pEO3VEQUNtRDtJQUNuRCw0REFBK0MsQ0FBQTtJQUMvQyw0REFBK0MsQ0FBQTtJQUMvQyw4Q0FBaUMsQ0FBQTtJQUNqQywwREFBNkMsQ0FBQTtJQUM3Qyw4REFBaUQsQ0FBQTtJQUNqRCxvRUFBdUQsQ0FBQTtJQUN2RCx3RUFBMkQsQ0FBQTtJQUMzRCw4REFBaUQsQ0FBQTtJQUNqRCxzRUFBeUQsQ0FBQTtJQUN6RDs4REFDMEQ7SUFDMUQsd0VBQTJELENBQUE7SUFDM0Q7c0RBQ2tEO0lBQ2xELG9FQUF1RCxDQUFBO0lBQ3ZEOzs0RUFFd0U7SUFDeEUsNERBQStDLENBQUE7SUFDL0MsOEVBQThFO0lBQzlFOzt3REFFb0Q7SUFDcEQsc0VBQXlELENBQUE7SUFDekQseUVBQXlFO0lBQ3pFLDBEQUE2QyxDQUFBO0lBQzdDLHVGQUF1RjtJQUN2RixnRUFBbUQsQ0FBQTtJQUNuRCxtRkFBbUY7SUFDbkYsOEVBQWlFLENBQUE7SUFDakUsbUZBQW1GO0lBQ25GLG9FQUF1RCxDQUFBO0lBQ3ZELDZFQUE2RTtJQUM3RSxzRUFBeUQsQ0FBQTtJQUN6RCwyRUFBMkU7SUFDM0Usb0VBQXVELENBQUE7SUFDdkQseUNBQXlDO0lBQ3pDLDRFQUErRCxDQUFBO0lBQy9ELHNFQUFzRTtJQUN0RSxvRUFBdUQsQ0FBQTtJQUN2RCxzRUFBeUQsQ0FBQTtJQUN6RCxrRUFBcUQsQ0FBQTtJQUNyRCxnRkFBbUUsQ0FBQTtJQUNuRSx3RUFBMkQsQ0FBQTtJQUUzRCx1QkFBdUI7SUFDdkI7bUZBQytFO0lBQy9FLGdFQUFtRCxDQUFBO0lBRW5ELGdDQUFnQztJQUNoQyw4Q0FBaUMsQ0FBQTtJQUNqQzs4RkFDMEY7SUFDMUYsa0VBQXFELENBQUE7SUFDckQsbUZBQW1GO0lBQ25GLGtFQUFxRCxDQUFBO0lBQ3JELHdEQUEyQyxDQUFBO0lBQzNDOzBDQUNzQztJQUN0QyxrREFBcUMsQ0FBQTtJQUVyQyx1QkFBdUI7SUFDdkIsb0RBQXVDLENBQUE7SUFFdkMsd0JBQXdCO0lBQ3hCLGtDQUFxQixDQUFBO0lBQ3JCLGdEQUFtQyxDQUFBO0lBQ25DLDRDQUErQixDQUFBO0lBQy9COzt3RUFFb0U7SUFDcEUsb0VBQXVELENBQUE7SUFDdkQ7O3VFQUVtRTtJQUNuRSw0REFBK0MsQ0FBQTtJQUMvQzttRkFDK0U7SUFDL0UsNERBQStDLENBQUE7SUFDL0M7NEVBQ3dFO0lBQ3hFLDhEQUFpRCxDQUFBO0lBQ2pEO2dFQUM0RDtJQUM1RCxrRUFBcUQsQ0FBQTtJQUNyRDtpRUFDNkQ7SUFDN0Qsc0RBQXlDLENBQUE7SUFDekM7d0VBQ29FO0lBQ3BFLG9FQUF1RCxDQUFBO0lBQ3ZEO3NGQUNrRjtJQUNsRix3REFBMkMsQ0FBQTtJQUMzQztxRkFDaUY7SUFDakYsOERBQWlELENBQUE7SUFDakQsZ0ZBQWdGO0lBQ2hGLGtFQUFxRCxDQUFBO0lBQ3JEO2lEQUM2QztJQUM3Qyx3RUFBMkQsQ0FBQTtJQUMzRDs7d0RBRW9EO0lBQ3BELDBEQUE2QyxDQUFBO0lBQzdDO3dGQUNvRjtJQUNwRixrRUFBcUQsQ0FBQTtJQUNyRDt1Q0FDbUM7SUFDbkMsc0RBQXlDLENBQUE7SUFDekM7d0NBQ29DO0lBQ3BDLHNEQUF5QyxDQUFBO0lBQ3pDOzsyREFFdUQ7SUFDdkQsc0NBQXlCLENBQUE7SUFDekI7O3lGQUVxRjtJQUNyRiw4Q0FBaUMsQ0FBQTtJQUVqQywrRUFBK0U7SUFDL0UseUVBQXlFO0lBQ3pFOzZEQUN5RDtJQUN6RCw4REFBaUQsQ0FBQTtJQUNqRDtxRkFDaUY7SUFDakYsa0RBQXFDLENBQUE7SUFDckM7eUVBQ3FFO0lBQ3JFLHdEQUEyQyxDQUFBO0lBRTNDLGlCQUFpQjtJQUNqQixnRUFBbUQsQ0FBQTtJQUNuRCxvRUFBdUQsQ0FBQTtJQUN2RCxzREFBeUMsQ0FBQTtJQUN6QyxvREFBdUMsQ0FBQTtJQUN2Qyw0Q0FBK0IsQ0FBQTtJQUMvQiw4Q0FBaUMsQ0FBQTtJQUVqQyxzQkFBc0I7SUFDdEIsOENBQWlDLENBQUE7SUFDakMsOENBQWlDLENBQUE7SUFFakMseUVBQXlFO0lBQ3pFLGdEQUFtQyxDQUFBO0lBRW5DLDRCQUE0QjtJQUM1Qix3REFBMkMsQ0FBQTtJQUMzQyw4RUFBaUUsQ0FBQTtBQUNuRSxDQUFDLEVBek9XLFNBQVMsS0FBVCxTQUFTLFFBeU9wQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUE4QjtJQUN4RCxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHO0lBQzdCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUc7SUFDOUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHO0lBQzlCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUc7SUFDOUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRztJQUM3QixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHO0lBQ2hDLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRztJQUN6QyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUMsRUFBRSxHQUFHO0lBQzdDLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRztJQUN6QyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEdBQUc7SUFDNUMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHO0lBQ3BDLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsR0FBRztJQUMzQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHO0lBQzVCLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsR0FBRztJQUN4QyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEdBQUc7SUFDdEMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxHQUFHO0lBQ3JDLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsR0FBRztJQUN2QyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEdBQUc7SUFDeEMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRSxHQUFHO0lBQ3hDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUc7SUFDN0IsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxHQUFHO0lBQ3JDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxHQUFHO0lBQ3JDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRztJQUNqQyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUc7SUFDdkMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsRUFBRSxHQUFHO0lBQ3RDLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsR0FBRztJQUN0QyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsR0FBRztJQUNyQyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUc7SUFDdkMsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsRUFBRSxHQUFHO0lBQzFDLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsR0FBRztJQUM1QyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUc7SUFDdkMsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsRUFBRSxHQUFHO0lBQzNDLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsR0FBRztJQUM1QyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEdBQUc7SUFDMUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsRUFBRSxHQUFHO0lBQ3RDLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsR0FBRztJQUMvQyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEdBQUc7SUFDMUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxHQUFHO0lBQ3JDLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsR0FBRztJQUMzQyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEdBQUc7SUFDMUMsQ0FBQyxTQUFTLENBQUMsNkJBQTZCLENBQUMsRUFBRSxHQUFHO0lBQzlDLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsR0FBRztJQUMxQyxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEdBQUc7SUFDM0MsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHO0lBQ3pDLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLEVBQUUsR0FBRztJQUNoRCxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEdBQUc7SUFDNUMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRSxHQUFHO0lBQ3hDLDRFQUE0RTtJQUM1RSxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEdBQUc7SUFDM0MsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRSxHQUFHO0lBQ3hDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHO0lBQ3pDLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRztJQUN6QyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHO0lBQ2pDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRztJQUNsQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHO0lBQ3pCLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUc7SUFDaEMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEdBQUc7SUFDMUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsRUFBRSxHQUFHO0lBQ3RDLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsR0FBRztJQUN0QyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUc7SUFDdkMsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHO0lBQ3pDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRztJQUNuQyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEdBQUc7SUFDMUMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHO0lBQ3BDLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsR0FBRztJQUN2QyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEdBQUc7SUFDekMsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsRUFBRSxHQUFHO0lBQzVDLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsR0FBRztJQUNyQyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEdBQUc7SUFDekMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxHQUFHO0lBQ25DLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRztJQUNuQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHO0lBQzNCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHO0lBQ3ZDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRztJQUNqQyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRSxHQUFHO0lBQ3hDLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsR0FBRztJQUMxQyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUc7SUFDbkMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxHQUFHO0lBQ2xDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUc7SUFDOUIsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRztJQUMvQixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRztJQUNoQyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsRUFBRSxHQUFHO0NBQ2hELENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUFlO0lBQ25ELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU3RhbmRhcmRpemVkIGVycm9yIGNvZGVzIHVzZWQgYWNyb3NzIGFsbCBBUEkgbWljcm9zZXJ2aWNlcy5cbiAqIFVzZSB0aGVzZSBjb2RlcyBpbiBlcnJvciByZXNwb25zZXMgZm9yIGNvbnNpc3RlbnQgY2xpZW50IGhhbmRsaW5nLlxuICpcbiAqIEVhY2ggSFRUUCBzdGF0dXMgY2F0ZWdvcnkgaGFzIG9uZSBwcmltYXJ5IGNvZGUuIFVzZSB0aGUgYGRldGFpbHNgXG4gKiBmaWVsZCBpbiBlcnJvciByZXNwb25zZXMgZm9yIHN1Yi10eXBlIGluZm9ybWF0aW9uIChlLmcuIHdoaWNoIHF1b3RhXG4gKiB3YXMgZXhjZWVkZWQsIHdoaWNoIGZpZWxkIGZhaWxlZCB2YWxpZGF0aW9uKS5cbiAqL1xuZXhwb3J0IGVudW0gRXJyb3JDb2RlIHtcbiAgLy8gQXV0aGVudGljYXRpb24gZXJyb3JzICg0MDEpXG4gIFVOQVVUSE9SSVpFRCA9ICdVTkFVVEhPUklaRUQnLFxuICBUT0tFTl9FWFBJUkVEID0gJ1RPS0VOX0VYUElSRUQnLFxuICBUT0tFTl9JTlZBTElEID0gJ1RPS0VOX0lOVkFMSUQnLFxuICBUT0tFTl9NSVNTSU5HID0gJ1RPS0VOX01JU1NJTkcnLFxuICBUT0tFTl9SRVZPS0VEID0gJ1RPS0VOX1JFVk9LRUQnLFxuICAvKiogVGhlIHNlc3Npb24gaXMgbm90IE1GQS1ncmFkZSAoYGFhbGAgYmVsb3cgdGhlIHJvdXRlJ3MgYG1pbkFzc3VyYW5jZWApLlxuICAgKiAgVGhlIGNsaWVudCBzZW5kcyB0aGUgcGVyc29uIHRvIGVucm9sIC8gc2lnbiBpbiBhZ2FpbiB3aXRoIGEgc2Vjb25kXG4gICAqICBmYWN0b3Ig4oCUIGl0IG11c3QgTk9UIHNpZ24gdGhlbSBvdXQgb3IgcmV0cnkgYSB0b2tlbiByZWZyZXNoLCBzaW5jZSBhXG4gICAqICByZWZyZXNoIGNhbiBuZXZlciByYWlzZSB0aGUgYXNzdXJhbmNlIGxldmVsLiAqL1xuICBNRkFfUkVRVUlSRUQgPSAnTUZBX1JFUVVJUkVEJyxcbiAgLyoqIFRoZSBzZXNzaW9uIGlzIE1GQS1ncmFkZSBidXQgaXRzIGBhdXRoX3RpbWVgIGlzIG9sZGVyIHRoYW4gdGhlIHJvdXRlJ3NcbiAgICogIGBtYXhBZ2VgIOKAlCB0aGUgcGVyc29uIG11c3QgYXV0aGVudGljYXRlIGFnYWluIChub3QgbWVyZWx5IHJlZnJlc2gpLiAqL1xuICBSRUFVVEhfUkVRVUlSRUQgPSAnUkVBVVRIX1JFUVVJUkVEJyxcblxuICAvLyBBdXRob3JpemF0aW9uIGVycm9ycyAoNDAzKVxuICBJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMgPSAnSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TJyxcbiAgLyoqIEEgbWFjaGluZSBjcmVkZW50aWFsIChzZXJ2aWNlIHByaW5jaXBhbCwgb3JnIHNlcnZpY2UgYWNjb3VudCwgb3IgYW5cbiAgICogIGV4Y2hhbmdlZCBhY2Nlc3Mga2V5KSByZWFjaGVkIGEgcm91dGUgdGhhdCByZXF1aXJlcyBhIHBlcnNvbi4gKi9cbiAgSFVNQU5fU0VTU0lPTl9SRVFVSVJFRCA9ICdIVU1BTl9TRVNTSU9OX1JFUVVJUkVEJyxcbiAgLyoqIEEgYm9vdHN0cmFwLWFkbWluIGVucm9sbWVudCBzZXNzaW9uIChgbWZhRW5yb2xsbWVudFBlbmRpbmdgKSByZWFjaGVkIGFcbiAgICogIHJvdXRlIG91dHNpZGUgdGhlIGVucm9sbWVudCAvIHNpZ24tb3V0IC8gc2V0dXAgYWxsb3dsaXN0LiAqL1xuICBNRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCA9ICdNRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCcsXG4gIC8qKiBBIHJlYWQtb25seSBpbXBlcnNvbmF0aW9uIHRva2VuIChgaW1wZXJzb25hdGlvblJlYWRPbmx5YCkgYXR0ZW1wdGVkIGFcbiAgICogIHN0YXRlLWNoYW5naW5nIHJlcXVlc3QgKGFueXRoaW5nIGJ1dCBHRVQvSEVBRC9PUFRJT05TKS4gKi9cbiAgSU1QRVJTT05BVElPTl9SRUFEX09OTFkgPSAnSU1QRVJTT05BVElPTl9SRUFEX09OTFknLFxuICAvKiogQSBwbHVnaW4tZWNvc3lzdGVtIGdvdmVybmFuY2Ugcm91dGUgKGRvY3MvcnVuYm9va3MvZWNvc3lzdGVtLW1vZGVyYXRpb24ubWQpXG4gICAqICB3YXMgY2FsbGVkIGZyb20gYW4gYWN0aXZlIG9yZyBvdGhlciB0aGFuIHRoZSBzeXN0ZW0gb3JnIOKAlCBhIHRva2VuIG1pbnRlZCBpblxuICAgKiAgYSB0ZW5hbnQgb3JnIGlzIHJlZnVzZWQgZXZlbiBmb3IgdGhlIHNhbWUgdXNlci4gU3dpdGNoIHRvIHRoZSBzeXN0ZW0gb3JnLiAqL1xuICBTWVNURU1fT1JHX1JFUVVJUkVEID0gJ1NZU1RFTV9PUkdfUkVRVUlSRUQnLFxuICAvKiogQSBub24tc3lzdGVtIG9yZyB0cmllZCB0byBjcmVhdGUgYSBwbHVnaW4gdW5kZXIgYSBtYW5hZ2VkIHRvb2xjaGFpbiBuYW1lXG4gICAqICAoYE1BTkFHRURfVE9PTENIQUlOX1BMVUdJTlNgOiBgcGlwZWxpbmUtYm9vdHN0cmFwYCwgYGNkay1zeW50aGApLiBBIGN1c3RvbVxuICAgKiAgc3ludGggZW52aXJvbm1lbnQgaXMgcHVibGlzaGVkIHVuZGVyIGFub3RoZXIgbmFtZS4gKi9cbiAgUExVR0lOX01BTkFHRURfTkFNRV9SRVNFUlZFRCA9ICdQTFVHSU5fTUFOQUdFRF9OQU1FX1JFU0VSVkVEJyxcbiAgLyoqIFRoZSBwdWJsaXNoZXIgaGFzbid0IGFjY2VwdGVkIHRoZSBDVVJSRU5UIHB1Ymxpc2hlciB0ZXJtcyB2ZXJzaW9uLCBzbyBpdFxuICAgKiAgY2FuJ3Qgc3VibWl0IG5ldyByZXF1ZXN0cyAoZXhpc3RpbmcgbGlzdGluZ3MgYXJlIHVuYWZmZWN0ZWQpLiAqL1xuICBQVUJMSVNIRVJfVEVSTVNfUkVRVUlSRUQgPSAnUFVCTElTSEVSX1RFUk1TX1JFUVVJUkVEJyxcbiAgLyoqIFB1Ymxpc2hpbmcgaXMgZG9uZSBmcm9tIHRoZSBST09UIG9yZzsgYSB0ZWFtIG9yZyBjYW4ndCBvd24gYSBwdWJsaXNoZXIgb3JcbiAgICogIHN1Ym1pdCByZXF1ZXN0cy4gKi9cbiAgUFVCTElTSEVSX1JPT1RfT1JHX1JFUVVJUkVEID0gJ1BVQkxJU0hFUl9ST09UX09SR19SRVFVSVJFRCcsXG4gIC8qKiBUaGUgcHVibGlzaGVyIGlzIHN1c3BlbmRlZCBieSB0aGUgc3lzdGVtIG9yZy4gKi9cbiAgUFVCTElTSEVSX1NVU1BFTkRFRCA9ICdQVUJMSVNIRVJfU1VTUEVOREVEJyxcbiAgLyoqIFRoZSBvcmdhbml6YXRpb24ncyBhZG1pbmlzdHJhdG9ycyBzd2l0Y2hlZCBBSSBmZWF0dXJlcyBvZmYgKGBhaUVuYWJsZWQ6IGZhbHNlYFxuICAgKiAgb24gdGhlIG9yZydzIEFJIGNvbmZpZ3VyYXRpb24pLiBFdmVyeSBBSSBlbnRyeSBwb2ludCByZWZ1c2VzIHdpdGggaXQuICovXG4gIEFJX0RJU0FCTEVEID0gJ0FJX0RJU0FCTEVEJyxcbiAgLyoqIFRlbmFudCBwdWJsaXNoaW5nIGlzIHN3aXRjaGVkIG9mZiBvbiB0aGlzIGluc3RhbmNlIChgUExVR0lOX1BVQkxJU0hJTkdfRU5BQkxFRGApLiAqL1xuICBQTFVHSU5fUFVCTElTSElOR19ESVNBQkxFRCA9ICdQTFVHSU5fUFVCTElTSElOR19ESVNBQkxFRCcsXG4gIC8qKiBSZXZpZXcgd3JpdGVzIGFyZSBzd2l0Y2hlZCBvZmYgb24gdGhpcyBpbnN0YW5jZSAoYFBMVUdJTl9SRVZJRVdTX0VOQUJMRURgKTpcbiAgICogIHJldmlld3Mgc3RheSByZWFkYWJsZSwgbm90aGluZyBuZXcgaXMgd3JpdHRlbi4gKi9cbiAgUExVR0lOX1JFVklFV1NfRElTQUJMRUQgPSAnUExVR0lOX1JFVklFV1NfRElTQUJMRUQnLFxuICAvKiogQSBtZW1iZXIgb2YgdGhlIHB1Ymxpc2hlcidzIG93biBvcmdhbml6YXRpb24gdHJpZWQgdG8gcmV2aWV3IChvciB2b3RlIG9uIGFcbiAgICogIHJldmlldyBvZikgb25lIG9mIGl0cyBsaXN0aW5ncyAoc2VsZi1wcm9tb3Rpb24pLiAqL1xuICBSRVZJRVdfU0VMRl9QUk9NT1RJT04gPSAnUkVWSUVXX1NFTEZfUFJPTU9USU9OJyxcbiAgLyoqIFNlcGFyYXRpb24gb2YgZHV0aWVzOiB0aGUgY2FsbGVyIG1heSBub3QgZGVjaWRlIHRoaXMgcmVxdWVzdCDigJRcbiAgICogIGl0IGNhbWUgZnJvbSBhbiBvcmcgdGhleSBiZWxvbmcgdG8sIHRoZXkgdXBsb2FkZWQgdGhlIHZlcnNpb24sIG9yIHRoZXlcbiAgICogIGdhdmUgdGhlIGZpcnN0IG9mIHR3byBhcHByb3ZhbHMuICovXG4gIFNFUEFSQVRJT05fT0ZfRFVUSUVTID0gJ1NFUEFSQVRJT05fT0ZfRFVUSUVTJyxcbiAgT1JHX01JU01BVENIID0gJ09SR19NSVNNQVRDSCcsXG4gIENPTVBMSUFOQ0VfVklPTEFUSU9OID0gJ0NPTVBMSUFOQ0VfVklPTEFUSU9OJyxcblxuICAvLyBOb3QgZm91bmQgZXJyb3JzICg0MDQpXG4gIE5PVF9GT1VORCA9ICdOT1RfRk9VTkQnLFxuICBPUkdfTk9UX0ZPVU5EID0gJ09SR19OT1RfRk9VTkQnLFxuICAvKiogVGhlIGVtYWlsIGdpdmVuIHRvIFwiYWRkIG1lbWJlclwiIGhhcyBubyBhY2NvdW50LiBEaXN0aW5jdCBmcm9tIE5PVF9GT1VORFxuICAgKiAgYmVjYXVzZSBpdCBpcyBBQ1RJT05BQkxFOiB0aGUgY2FsbGVyJ3MgaW50ZW50IGlzIHNhdGlzZmlhYmxlIGJ5IHNlbmRpbmcgYW5cbiAgICogIGludml0YXRpb24sIGFuZCBhIGJhcmUgNDA0IG5hbWVkIG5vIHdheSBmb3J3YXJkLiAqL1xuICBVU0VSX05PVF9SRUdJU1RFUkVEID0gJ1VTRVJfTk9UX1JFR0lTVEVSRUQnLFxuICAvKiogVGhlIGFub255bW91cyBwbHVnaW4gc3VibWlzc2lvbiBBUEkgaXMgb2ZmIG9uIHRoaXMgaW5zdGFuY2VcbiAgICogIChgQU5PTllNT1VTX1NVQk1JU1NJT05TX0VOQUJMRURgLCBvciBvdXRib3VuZCBlbWFpbCBpc24ndCBjb25maWd1cmVkKSDigJRcbiAgICogIGFuc3dlcmVkIGFzIGEgcGxhaW4gNDA0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgU1VCTUlTU0lPTlNfRElTQUJMRUQgPSAnU1VCTUlTU0lPTlNfRElTQUJMRUQnLFxuXG4gIC8vIFZhbGlkYXRpb24gZXJyb3JzICg0MDApXG4gIFZBTElEQVRJT05fRVJST1IgPSAnVkFMSURBVElPTl9FUlJPUicsXG4gIE1JU1NJTkdfUkVRVUlSRURfRklFTEQgPSAnTUlTU0lOR19SRVFVSVJFRF9GSUVMRCcsXG4gIC8qKiBBIHByb29mLW9mLXdvcmsgYW5zd2VyIGlzIG1pc3NpbmcsIG1hbGZvcm1lZCwgZXhwaXJlZCwgdG9vIGVhc3ksIHdyb25nLFxuICAgKiAgb3Igd2FzIGFscmVhZHkgdXNlZCAoYW5vbnltb3VzIHN1Ym1pc3Npb25zKS4gKi9cbiAgUFJPT0ZfT0ZfV09SS19JTlZBTElEID0gJ1BST09GX09GX1dPUktfSU5WQUxJRCcsXG4gIFRFTVBMQVRFX1VOS05PV05fUEFUSCA9ICdURU1QTEFURV9VTktOT1dOX1BBVEgnLFxuICBURU1QTEFURV9DWUNMRSA9ICdURU1QTEFURV9DWUNMRScsXG4gIFRFTVBMQVRFX1BBUlNFX0VSUk9SID0gJ1RFTVBMQVRFX1BBUlNFX0VSUk9SJyxcbiAgVEVNUExBVEVfVFlQRV9NSVNNQVRDSCA9ICdURU1QTEFURV9UWVBFX01JU01BVENIJyxcbiAgVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCA9ICdURU1QTEFURV9TRUNSRVRTX1JFU0VSVkVEJyxcbiAgVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OID0gJ1RFTVBMQVRFX0NPTlRSQUNUX1ZJT0xBVElPTicsXG4gIFRFTVBMQVRFX1NJWkVfRVhDRUVERUQgPSAnVEVNUExBVEVfU0laRV9FWENFRURFRCcsXG4gIFRFTVBMQVRFX1ZBTElEQVRJT05fRkFJTEVEID0gJ1RFTVBMQVRFX1ZBTElEQVRJT05fRkFJTEVEJyxcbiAgLyoqIEEgbWFuYWdlZCB0b29sY2hhaW4gbmFtZSBpbiBhIHB1Ymxpc2gsIHN1Ym1pc3Npb24sIGxpc3Rpbmcgb3IgaW5zdGFsbCBwYXRoOlxuICAgKiAgbWFuYWdlZCByZWxlYXNlcyBhcmUgbmV2ZXIgbGlzdGVkIGluIHRoZSBlY29zeXN0ZW0uICovXG4gIFBMVUdJTl9NQU5BR0VEX05PVF9MSVNUQUJMRSA9ICdQTFVHSU5fTUFOQUdFRF9OT1RfTElTVEFCTEUnLFxuICAvKiogQW4gdXBsb2FkIG9mIGEgcHJlcmVsZWFzZSAoYC1kZXYuTmApIHZlcnNpb24gb2YgYSBtYW5hZ2VkIHRvb2xjaGFpbiBuYW1lOlxuICAgKiAgYSByZWxlYXNlIHZlcnNpb24gaXMgYWx3YXlzIGEgcGxhaW4gc2VtdmVyLiAqL1xuICBQTFVHSU5fTUFOQUdFRF9QUkVSRUxFQVNFID0gJ1BMVUdJTl9NQU5BR0VEX1BSRVJFTEVBU0UnLFxuICAvKiogQSBnZW5lcmljIHBsdWdpbiByb3V0ZSAodXBkYXRlLCBkZXByZWNhdGUveWFuaywgZGVsZXRlLCBwdXJnZSkgd2FzIGNhbGxlZCBvblxuICAgKiAgYSBtYW5hZ2VkIHRvb2xjaGFpbiBuYW1lIOKAlCBmb3IgdGhlIHN5c3RlbSBvcmcgdG9vLiBSZWxlYXNlIGxpZmVjeWNsZSBsaXZlc1xuICAgKiAgb25seSBpbiB0aGUgVG9vbGNoYWluIGNvbnNvbGUsIHdoaWNoIGFjdHMgb24gYm90aCBoYWx2ZXMgYXQgb25jZS4gKi9cbiAgVE9PTENIQUlOX1VTRV9DT05TT0xFID0gJ1RPT0xDSEFJTl9VU0VfQ09OU09MRScsXG4gIC8vIFBpcGVsaW5lIHRvb2xjaGFpbiByZWxlYXNlcyAoZG9jcy9wbGFucy9ib290c3RyYXAtaW1hZ2UtdmVyc2lvbmluZy5tZCDCpzEzKS5cbiAgLyoqIFRoZSBDTEkgY291bGQgbm90IHJlc29sdmUgdGhlIGJvb3RzdHJhcCBpbWFnZSAoRDIpIOKAlCB1bnJlYWNoYWJsZSBwbGF0Zm9ybSxcbiAgICogIG5vIGRlZmF1bHQsIGEgZGVsZXRlZCBwaW4sIGEgc2lnbmF0dXJlIGZhaWx1cmUsIG9yIGEgbG9jYWwtc3BlYyBkZXBsb3lcbiAgICogIHdpdGhvdXQgYC0tdG9vbGNoYWluLWZpbGVgLiBOZXZlciBmYWxscyBiYWNrLiAqL1xuICBCT09UU1RSQVBfSU1BR0VfVU5SRVNPTFZFRCA9ICdCT09UU1RSQVBfSU1BR0VfVU5SRVNPTFZFRCcsXG4gIC8qKiBObyBwbGF0Zm9ybSBkZWZhdWx0IHJlbGVhc2UgZXhpc3RzIChEMTEpLiBOZXZlciBcImhpZ2hlc3QgdmVyc2lvblwiLiAqL1xuICBUT09MQ0hBSU5fTk9fREVGQVVMVCA9ICdUT09MQ0hBSU5fTk9fREVGQVVMVCcsXG4gIC8qKiBUaGUgcmVzb2x2ZXIgZm91bmQgaGFsdmVzIHdpdGggZGlmZmVyZW50IHJlbGVhc2UgdmVyc2lvbnMg4oCUIGEgYnVnLCBuZXZlciBzZXJ2ZWQuICovXG4gIFRPT0xDSEFJTl9QQUlSX01JU01BVENIID0gJ1RPT0xDSEFJTl9QQUlSX01JU01BVENIJyxcbiAgLyoqIEEgcGluIG9yIG9yZyBkZWZhdWx0IG5hbWVzIGEgcmVsZWFzZSB0aGF0IGlzIG5vdCBlbGlnaWJsZSAoRDE1KSBhdCBzZXQgdGltZS4gKi9cbiAgVE9PTENIQUlOX1JFTEVBU0VfTk9UX0VMSUdJQkxFID0gJ1RPT0xDSEFJTl9SRUxFQVNFX05PVF9FTElHSUJMRScsXG4gIC8qKiBBIG1hbmFnZWQgYGNkay1zeW50aGAgc3RlcCBjYXJyaWVzIGl0cyBvd24gdmVyc2lvbjsgcGluIHRoZSByZWxlYXNlIGluc3RlYWQuICovXG4gIFRPT0xDSEFJTl9QSU5fVklBX1JFTEVBU0UgPSAnVE9PTENIQUlOX1BJTl9WSUFfUkVMRUFTRScsXG4gIC8qKiBZYW5raW5nIHRoZSBwbGF0Zm9ybSBkZWZhdWx0IHdpdGggbm8gbGl2ZSBwcmV2aW91cyBkZWZhdWx0IHRvIHJlc3RvcmUuICovXG4gIFRPT0xDSEFJTl9ERUZBVUxUX1JFUVVJUkVEID0gJ1RPT0xDSEFJTl9ERUZBVUxUX1JFUVVJUkVEJyxcbiAgLyoqIGBleHBlY3RlZEN1cnJlbnREZWZhdWx0YCBkaWQgbm90IG1hdGNoIHRoZSBjdXJyZW50IHBsYXRmb3JtIGRlZmF1bHQuICovXG4gIFRPT0xDSEFJTl9ERUZBVUxUX0NIQU5HRUQgPSAnVE9PTENIQUlOX0RFRkFVTFRfQ0hBTkdFRCcsXG4gIC8qKiBBIHNlY29uZCBEMTQgaW5pdGlhbC1kZWZhdWx0IGNhbGwuICovXG4gIFRPT0xDSEFJTl9JTklUSUFMX0FMUkVBRFlfU0VUID0gJ1RPT0xDSEFJTl9JTklUSUFMX0FMUkVBRFlfU0VUJyxcbiAgLyoqIMKnOCBndWFyZHMgb24gc2V0dGluZyB0aGUgcGxhdGZvcm0gZGVmYXVsdCDigJQgb25lIGNvZGUgcGVyIGd1YXJkLiAqL1xuICBUT09MQ0hBSU5fR1VBUkRfVU5TQ0FOTkVEID0gJ1RPT0xDSEFJTl9HVUFSRF9VTlNDQU5ORUQnLFxuICBUT09MQ0hBSU5fR1VBUkRfVlVMTl9GTE9PUiA9ICdUT09MQ0hBSU5fR1VBUkRfVlVMTl9GTE9PUicsXG4gIFRPT0xDSEFJTl9HVUFSRF9NRVRBREFUQSA9ICdUT09MQ0hBSU5fR1VBUkRfTUVUQURBVEEnLFxuICBUT09MQ0hBSU5fR1VBUkRfUEFJUl9JTkNPTVBMRVRFID0gJ1RPT0xDSEFJTl9HVUFSRF9QQUlSX0lOQ09NUExFVEUnLFxuICBUT09MQ0hBSU5fR1VBUkRfQ0FOQVJZX0dBVEUgPSAnVE9PTENIQUlOX0dVQVJEX0NBTkFSWV9HQVRFJyxcblxuICAvLyBDbGllbnQgdG9vIG9sZCAoNDI2KVxuICAvKiogVGhlIHBpcGVsaW5lLW1hbmFnZXIgQ0xJIGlzIG9sZGVyIHRoYW4gdGhlIHBsYXRmb3JtJ3NcbiAgICogIGBQSVBFTElORV9NQU5BR0VSX01JTl9WRVJTSU9OYDsgdGhlIGZpeCBpcyBgcGlwZWxpbmUtbWFuYWdlciAtLXVwZ3JhZGVgLiAqL1xuICBDTElFTlRfVVBHUkFERV9SRVFVSVJFRCA9ICdDTElFTlRfVVBHUkFERV9SRVFVSVJFRCcsXG5cbiAgLy8gUXVvdGEvUmF0ZSBsaW1pdCBlcnJvcnMgKDQyOSlcbiAgUVVPVEFfRVhDRUVERUQgPSAnUVVPVEFfRVhDRUVERUQnLFxuICAvKiogVGhlIGNhbGxlcidzIHBlci1tZW1iZXIgc2hhcmUgb2YgdGhlIG9yZydzIGBhaUNhbGxzYCAob3JnIHNldHRpbmdcbiAgICogIGBhaUNhbGxzUGVyTWVtYmVyUGN0YCkgaXMgc3BlbnQgZm9yIHRoaXMgcGVyaW9kIOKAlCB0aGUgb3JnIGl0c2VsZiBtYXkgaGF2ZSBoZWFkcm9vbS4gKi9cbiAgQUlfTUVNQkVSX1NIQVJFX0VYQ0VFREVEID0gJ0FJX01FTUJFUl9TSEFSRV9FWENFRURFRCcsXG4gIC8qKiBUaGUgb3JnJ3MgcGVyLXBlcmlvZCBBSSB0b2tlbiBidWRnZXQgKG9yZyBzZXR0aW5nIGBhaVRva2VuQnVkZ2V0YCkgaXMgc3BlbnQuICovXG4gIEFJX1RPS0VOX0JVREdFVF9FWENFRURFRCA9ICdBSV9UT0tFTl9CVURHRVRfRVhDRUVERUQnLFxuICBSQVRFX0xJTUlUX0VYQ0VFREVEID0gJ1JBVEVfTElNSVRfRVhDRUVERUQnLFxuICAvKiogQW4gYW5vbnltb3VzIHN1Ym1pdHRlciAocGVyIHZlcmlmaWVkIGVtYWlsLCBvciBwZXIgY2xpZW50IElQKSBpcyBhdCB0aGVcbiAgICogIHJvbGxpbmcgMjQtaG91ciBzdWJtaXNzaW9uIGNhcC4gKi9cbiAgU1VCTUlTU0lPTl9MSU1JVCA9ICdTVUJNSVNTSU9OX0xJTUlUJyxcblxuICAvLyBQYXlsb2FkIGVycm9ycyAoNDEzKVxuICBQQVlMT0FEX1RPT19MQVJHRSA9ICdQQVlMT0FEX1RPT19MQVJHRScsXG5cbiAgLy8gQ29uZmxpY3QgZXJyb3JzICg0MDkpXG4gIENPTkZMSUNUID0gJ0NPTkZMSUNUJyxcbiAgRFVQTElDQVRFX0VOVFJZID0gJ0RVUExJQ0FURV9FTlRSWScsXG4gIFNDQU5fQ09ORkxJQ1QgPSAnU0NBTl9DT05GTElDVCcsXG4gIC8qKiBBIHBsdWdpbiBpbWFnZSdzIGNvc2lnbiBzaWduYXR1cmUgKG9yIGl0cyBzaWduZWQgU0JPTSBhdHRlc3RhdGlvbikgZGlkXG4gICAqICBub3QgdmVyaWZ5IGFnYWluc3QgdGhlIHBsYXRmb3JtJ3MgcGx1Z2luLXNpZ25pbmcga2V5IOKAlCB0aGUgcmVnaXN0cnlcbiAgICogIGNvbnRlbnQgbm8gbG9uZ2VyIG1hdGNoZXMgd2hhdCB0aGUgcGxhdGZvcm0gYnVpbHQgYW5kIHNpZ25lZC4gKi9cbiAgSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCA9ICdJTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEJyxcbiAgLyoqIFRoZSBwbHVnaW4gdmVyc2lvbiBpcyBpbW11dGFibGUg4oCUIGEgcHVibGlzaCByZXF1ZXN0IHJlZmVyZW5jZXMgaXRcbiAgICogIChgZnJvemVuX2F0YCBzZXQpIG9yIGl0IGlzIHB1Ymxpc2hlZCB0byBhIGxpc3Rpbmcg4oCUIHNvIGl0IGNhbiBiZSBuZWl0aGVyXG4gICAqICByZS11cGxvYWRlZCwgZWRpdGVkIG5vciBkZWxldGVkIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgUExVR0lOX1ZFUlNJT05fRlJPWkVOID0gJ1BMVUdJTl9WRVJTSU9OX0ZST1pFTicsXG4gIC8qKiBUaGUgcGx1Z2luIHZlcnNpb24gaXMgcmVmZXJlbmNlZCBieSBvbmUgb2YgdGhlIG9yZydzIHBpcGVsaW5lcywgb3IgcHVibGlzaGVkXG4gICAqICB0byBhbiBlY29zeXN0ZW0gbGlzdGluZzsgZGVsZXRpbmcgaXQgbmVlZHMgYD9mb3JjZT10cnVlYCBwbHVzIGEgc3RlcC11cC4gKi9cbiAgUExVR0lOX1ZFUlNJT05fSU5fVVNFID0gJ1BMVUdJTl9WRVJTSU9OX0lOX1VTRScsXG4gIC8qKiBBIGZyZWV6ZSBuYW1lZCBhbiBpbWFnZSBkaWdlc3QgdGhhdCBpcyBub3QgdGhlIHZlcnNpb24ncyBzdG9yZWQgZGlnZXN0XG4gICAqICAoZmFpbCBjbG9zZWQ6IHdoYXQgd2FzIHJlcXVlc3RlZCBpcyBub3Qgd2hhdCB3b3VsZCBiZSBwdWJsaXNoZWQpLiAqL1xuICBQTFVHSU5fRElHRVNUX01JU01BVENIID0gJ1BMVUdJTl9ESUdFU1RfTUlTTUFUQ0gnLFxuICAvKiogQSByZS11cGxvYWQgb2YgYW4gZXhpc3RpbmcgKG5hbWUsIHZlcnNpb24pIG9mIGEgbWFuYWdlZCB0b29sY2hhaW4gbmFtZTpcbiAgICogIGEgcmVsZWFzZSBpcyBpbW11dGFibGUg4oCUIGJ1aWxkIGEgbmV3IHZlcnNpb24gaW5zdGVhZC4gKi9cbiAgUExVR0lOX1ZFUlNJT05fSU1NVVRBQkxFID0gJ1BMVUdJTl9WRVJTSU9OX0lNTVVUQUJMRScsXG4gIC8qKiBBIHB1Ymxpc2ggcmVxdWVzdCBuZWVkcyB0aGUgb3JnJ3MgcHVibGlzaGVyIHByb2ZpbGUsIHdoaWNoIGRvZXNuJ3QgZXhpc3RcbiAgICogIHlldCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuIENsYWltIGEgaGFuZGxlIGZpcnN0LiAqL1xuICBQVUJMSVNIRVJfUkVRVUlSRUQgPSAnUFVCTElTSEVSX1JFUVVJUkVEJyxcbiAgLyoqIFRoZSByZXF1ZXN0ZWQgcHVibGlzaGVyIGhhbmRsZSBpcyByZXNlcnZlZCAoT2ZmaWNpYWwvVmVyaWZpZWRcbiAgICogIHJlc2VydmF0aW9ucywgY29uZnVzYWJsZXMpLiBTdWJtaXQgYSBgY2xhaW1gIHJlcXVlc3QgaW5zdGVhZC4gKi9cbiAgUFVCTElTSEVSX0hBTkRMRV9SRVNFUlZFRCA9ICdQVUJMSVNIRVJfSEFORExFX1JFU0VSVkVEJyxcbiAgLyoqIEEgcHVibGlzaCByZXF1ZXN0IGZhaWxlZCBhIHN1Ym1pdCBnYXRlIChwdWJsaWMgdmlzaWJpbGl0eSwgU1BEWCBsaWNlbnNlLFxuICAgKiAgUkVBRE1FLCBzaWduYXR1cmUsIHNjYW4sIHZ1bG5lcmFiaWxpdHkgZ2F0ZSDigKYpOyBgZGV0YWlscy5nYXRlc2AgbGlzdHMgdGhlbS4gKi9cbiAgUFVCTElTSF9HQVRFX0ZBSUxFRCA9ICdQVUJMSVNIX0dBVEVfRkFJTEVEJyxcbiAgLyoqIEEgVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIChvciBpdHMgZGVjaXNpb24pIGZyb20gYW4gb3JnIHdob3NlIHBsYW5cbiAgICogIGxhY2tzIHRoZSBgdmVyaWZpZWRfcHVibGlzaGVyYCBmZWF0dXJlIChUZWFtKywgZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFZFUklGSUVEX1BMQU5fUkVRVUlSRUQgPSAnVkVSSUZJRURfUExBTl9SRVFVSVJFRCcsXG4gIC8qKiBBIFZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBmcm9tIGFuIG9yZyB3aXRoIG5vIEROUy12ZXJpZmllZCBkb21haW4uICovXG4gIFZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRCA9ICdWRVJJRklFRF9ET01BSU5fUkVRVUlSRUQnLFxuICAvKiogQSBWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gZnJvbSBhbiBvcmcgd2hvc2Ugb3duZXIgaGFzIG5vIHNlY29uZFxuICAgKiAgZmFjdG9yIChwYXNza2V5IG9yIGF1dGhlbnRpY2F0b3IgYXBwKS4gKi9cbiAgVkVSSUZJRURfT1dORVJfTUZBX1JFUVVJUkVEID0gJ1ZFUklGSUVEX09XTkVSX01GQV9SRVFVSVJFRCcsXG4gIC8qKiBBIHBsdWdpbiByZWZlcmVuY2UgbmFtZXMgYW4gZWNvc3lzdGVtIGxpc3RpbmcgdGhlIG9yZyBoYXNuJ3QgaW5zdGFsbGVkIChvclxuICAgKiAgd2hvc2UgaW5zdGFsbCBpcyBwZW5kaW5nLCBkZW5pZWQsIG9yIGRvZXNuJ3QgY292ZXIgdGhlIHZlcnNpb24gYXNrZWQgZm9yO1xuICAgKiAgYGRldGFpbHMucmVhc29uYCkg4oCUIGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQgKi9cbiAgUExVR0lOX05PVF9JTlNUQUxMRUQgPSAnUExVR0lOX05PVF9JTlNUQUxMRUQnLFxuICAvKiogVGhlIG9yZydzIGNvbnN1bXB0aW9uIHBvbGljeSByZWZ1c2VzIHRoZSBsaXN0aW5nOiBpdHMgdGllciBpc24ndCBhbGxvd2VkLFxuICAgKiAgdGhlIGxpc3RpbmcgaXMgYmxvY2tlZCwgb3IgYW4gYWR2aXNvcnkgYmxvY2tzIHRoZSB2ZXJzaW9uIChgZGV0YWlscy5yZWFzb25gKS4gKi9cbiAgUExVR0lOX0JMT0NLRURfQllfUE9MSUNZID0gJ1BMVUdJTl9CTE9DS0VEX0JZX1BPTElDWScsXG4gIC8qKiBUaGUgbGlzdGluZyBvciB2ZXJzaW9uIGNhbid0IGJlIHVzZWQ6IHlhbmtlZCwgc3VzcGVuZGVkLCBvciBwYXVzZWQgZm9yIG5ld1xuICAgKiAgaW5zdGFsbHMgKGBkZXRhaWxzLnJlYXNvbmApLiAqL1xuICBQTFVHSU5fVU5BVkFJTEFCTEUgPSAnUExVR0lOX1VOQVZBSUxBQkxFJyxcbiAgLyoqIEFuIGF1dG8tY3JlYXRlZCBwbGFjZWhvbGRlciBwbHVnaW4gY2FuJ3QgdGFrZSB0aGUgbmFtZSBvZiBhIGxpc3RlZCBwbHVnaW5cbiAgICog4oCUIGluc3RhbGwgdGhlIGxpc3RpbmcgaW5zdGVhZC4gKi9cbiAgUExVR0lOX05BTUVfTElTVEVEID0gJ1BMVUdJTl9OQU1FX0xJU1RFRCcsXG4gIC8qKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbiBuYW1lcyBhIGNvbW11bml0eSBsaXN0aW5nIGFub3RoZXIgc3VibWl0dGVyIG93bnMsXG4gICAqICBhIHJlc2VydmVkIG5hbWUsIGFuIE9mZmljaWFsL1ZlcmlmaWVkIGxpc3RpbmcncyBuYW1lLCBvciBvbmUgY29uZnVzYWJsZVxuICAgKiAgd2l0aCBhIHRvcCBsaXN0aW5nOyBgZGV0YWlscy5yZWFzb25gIHNheXMgd2hpY2guICovXG4gIE5BTUVfVEFLRU4gPSAnTkFNRV9UQUtFTicsXG4gIC8qKiBBbiBVTlFVQUxJRklFRCByZWZlcmVuY2UgbmFtZXMgYSBwbHVnaW4gdGhlIG9yZyBERUxFVEVEOiByZWZ1c2VkIHJhdGhlclxuICAgKiAgdGhhbiBzaWxlbnRseSBmYWxsaW5nIHRocm91Z2ggdG8gYSBzYW1lLW5hbWVkIGxpc3RpbmcsIHdoaWNoIHdvdWxkIHN3YXAgdGhlXG4gICAqICBpbWFnZSBhIHBpcGVsaW5lIHJ1bnMgd2l0aG91dCBhbnlvbmUgY2hvb3NpbmcgaXQgKGBkZXRhaWxzLnN0YXRlOiAnZGVsZXRlZCdgKS4gKi9cbiAgUExVR0lOX0RFTEVURUQgPSAnUExVR0lOX0RFTEVURUQnLFxuXG4gIC8vIFBsdWdpbiBidWlsZCBvdXRjb21lcyAoNDIyKSDigJQgdGVybWluYWwgYnVpbGQgZmFpbHVyZXMsIHJlcG9ydGVkIG9uIHRoZSBidWlsZFxuICAvLyBzdHJlYW0gYW5kIGluIHRoZSBidWlsZCdzIGZhaWx1cmUgcmVjb3JkLCBuZXZlciBhbnN3ZXJlZCBvbiBhIHJlcXVlc3QuXG4gIC8qKiBUaGUgYnVpbHQgaW1hZ2UgY291bGQgbm90IGJlIHZ1bG5lcmFiaWxpdHktc2Nhbm5lZCBhZnRlciBldmVyeSByZXRyeSwgc29cbiAgICogIG5vdGhpbmcgd2FzIHBlcnNpc3RlZCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIElNQUdFX1NDQU5fVU5BVkFJTEFCTEUgPSAnSU1BR0VfU0NBTl9VTkFWQUlMQUJMRScsXG4gIC8qKiBUaGUgYnVpbHQgaW1hZ2UgaGFzIG1vcmUgZml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncyB0aGFuIHRoZSBwbGF0Zm9ybVxuICAgKiAgZmxvb3IgYFBMVUdJTl9WVUxOX01BWF9GSU5ESU5HU2A7IHRoZSBtZXNzYWdlIGxpc3RzIHRoZW0gd2l0aCB0aGVpciBmaXhlcy4gKi9cbiAgUExVR0lOX1ZVTE5fR0FURSA9ICdQTFVHSU5fVlVMTl9HQVRFJyxcbiAgLyoqIEFuIHVwbG9hZCB3aG9zZSBOQU1FIHdvdWxkIG92ZXJyaWRlIGEgbGlzdGluZyBvciB0aGUgcGFyZW50IG9yZydzIHBsdWdpbixcbiAgICogIHJlZnVzZWQgYmVjYXVzZSB0aGUgY29uc3VtcHRpb24gcG9saWN5IHNheXMgYHNoYWRvd2luZzogZGVueWAuICovXG4gIFBMVUdJTl9OQU1FX1NIQURPV1MgPSAnUExVR0lOX05BTUVfU0hBRE9XUycsXG5cbiAgLy8gQmlsbGluZyBlcnJvcnNcbiAgUEFZTUVOVF9NRVRIT0RfUkVRVUlSRUQgPSAnUEFZTUVOVF9NRVRIT0RfUkVRVUlSRUQnLCAvLyA0MDJcbiAgRElTQ09VTlRfQ0VJTElOR19FWENFRURFRCA9ICdESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEJywgLy8gNDAwXG4gIERJU0NPVU5UX05PVF9GT1VORCA9ICdESVNDT1VOVF9OT1RfRk9VTkQnLCAvLyA0MDRcbiAgRElTQ09VTlRfSU5BQ1RJVkUgPSAnRElTQ09VTlRfSU5BQ1RJVkUnLCAvLyA0MDlcbiAgUExBTl9PVkVSX0NBUCA9ICdQTEFOX09WRVJfQ0FQJywgLy8gNDA5XG4gIEFERE9OX09WRVJfQ0FQID0gJ0FERE9OX09WRVJfQ0FQJywgLy8gNDA5XG5cbiAgLy8gU2VydmVyIGVycm9ycyAoNTAwKVxuICBJTlRFUk5BTF9FUlJPUiA9ICdJTlRFUk5BTF9FUlJPUicsXG4gIERBVEFCQVNFX0VSUk9SID0gJ0RBVEFCQVNFX0VSUk9SJyxcblxuICAvLyBOb3QgaW1wbGVtZW50ZWQgKDUwMSkg4oCUIHRoZSBjb25maWd1cmVkIHByb3ZpZGVyIGhhcyBubyBzdWNoIGNhcGFiaWxpdHlcbiAgTk9UX0lNUExFTUVOVEVEID0gJ05PVF9JTVBMRU1FTlRFRCcsXG5cbiAgLy8gU2VydmljZSB1bmF2YWlsYWJsZSAoNTAzKVxuICBTRVJWSUNFX1VOQVZBSUxBQkxFID0gJ1NFUlZJQ0VfVU5BVkFJTEFCTEUnLFxuICBDT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnQ09NUExJQU5DRV9TRVJWSUNFX1VOQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBNYXBzIGVycm9yIGNvZGVzIHRvIHRoZWlyIGRlZmF1bHQgSFRUUCBzdGF0dXMgY29kZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBFcnJvckNvZGVTdGF0dXM6IFJlY29yZDxFcnJvckNvZGUsIG51bWJlcj4gPSB7XG4gIFtFcnJvckNvZGUuVU5BVVRIT1JJWkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX0VYUElSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fSU5WQUxJRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9NSVNTSU5HXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX1JFVk9LRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuTUZBX1JFUVVJUkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLlJFQVVUSF9SRVFVSVJFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5JTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlNdOiA0MDMsXG4gIFtFcnJvckNvZGUuU1lTVEVNX09SR19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTUFOQUdFRF9OQU1FX1JFU0VSVkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9URVJNU19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1NVU1BFTkRFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUFVCTElTSElOR19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5BSV9ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUkVWSUVXU19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5SRVZJRVdfU0VMRl9QUk9NT1RJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuU0VQQVJBVElPTl9PRl9EVVRJRVNdOiA0MDMsXG4gIFtFcnJvckNvZGUuSFVNQU5fU0VTU0lPTl9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5NRkFfRU5ST0xMTUVOVF9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5JTVBFUlNPTkFUSU9OX1JFQURfT05MWV06IDQwMyxcbiAgW0Vycm9yQ29kZS5PUkdfTUlTTUFUQ0hdOiA0MDMsXG4gIFtFcnJvckNvZGUuQ09NUExJQU5DRV9WSU9MQVRJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuTk9UX0ZPVU5EXTogNDA0LFxuICBbRXJyb3JDb2RlLk9SR19OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuVVNFUl9OT1RfUkVHSVNURVJFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5TVUJNSVNTSU9OU19ESVNBQkxFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SXTogNDAwLFxuICBbRXJyb3JDb2RlLk1JU1NJTkdfUkVRVUlSRURfRklFTERdOiA0MDAsXG4gIFtFcnJvckNvZGUuUFJPT0ZfT0ZfV09SS19JTlZBTElEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9DWUNMRV06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9UWVBFX01JU01BVENIXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NJWkVfRVhDRUVERURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuUExVR0lOX01BTkFHRURfTk9UX0xJU1RBQkxFXTogNDAwLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9NQU5BR0VEX1BSRVJFTEVBU0VdOiA0MDAsXG4gIFtFcnJvckNvZGUuVE9PTENIQUlOX1VTRV9DT05TT0xFXTogNDAwLFxuICBbRXJyb3JDb2RlLlRPT0xDSEFJTl9SRUxFQVNFX05PVF9FTElHSUJMRV06IDQwMCxcbiAgW0Vycm9yQ29kZS5UT09MQ0hBSU5fUElOX1ZJQV9SRUxFQVNFXTogNDAwLFxuICBbRXJyb3JDb2RlLlRPT0xDSEFJTl9OT19ERUZBVUxUXTogNDA5LFxuICBbRXJyb3JDb2RlLlRPT0xDSEFJTl9ERUZBVUxUX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlRPT0xDSEFJTl9ERUZBVUxUX0NIQU5HRURdOiA0MDksXG4gIFtFcnJvckNvZGUuVE9PTENIQUlOX0lOSVRJQUxfQUxSRUFEWV9TRVRdOiA0MDksXG4gIFtFcnJvckNvZGUuVE9PTENIQUlOX0dVQVJEX1VOU0NBTk5FRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5UT09MQ0hBSU5fR1VBUkRfVlVMTl9GTE9PUl06IDQwOSxcbiAgW0Vycm9yQ29kZS5UT09MQ0hBSU5fR1VBUkRfTUVUQURBVEFdOiA0MDksXG4gIFtFcnJvckNvZGUuVE9PTENIQUlOX0dVQVJEX1BBSVJfSU5DT01QTEVURV06IDQwOSxcbiAgW0Vycm9yQ29kZS5UT09MQ0hBSU5fR1VBUkRfQ0FOQVJZX0dBVEVdOiA0MDksXG4gIFtFcnJvckNvZGUuVE9PTENIQUlOX1BBSVJfTUlTTUFUQ0hdOiA1MDAsXG4gIC8vIEJPT1RTVFJBUF9JTUFHRV9VTlJFU09MVkVEIGlzIHJhaXNlZCBieSB0aGUgQ0xJLCBuZXZlciBzZW50IGJ5IGEgc2VydmljZS5cbiAgW0Vycm9yQ29kZS5CT09UU1RSQVBfSU1BR0VfVU5SRVNPTFZFRF06IDUwMCxcbiAgW0Vycm9yQ29kZS5DTElFTlRfVVBHUkFERV9SRVFVSVJFRF06IDQyNixcbiAgW0Vycm9yQ29kZS5RVU9UQV9FWENFRURFRF06IDQyOSxcbiAgW0Vycm9yQ29kZS5BSV9NRU1CRVJfU0hBUkVfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuQUlfVE9LRU5fQlVER0VUX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLlJBVEVfTElNSVRfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuU1VCTUlTU0lPTl9MSU1JVF06IDQyOSxcbiAgW0Vycm9yQ29kZS5QQVlMT0FEX1RPT19MQVJHRV06IDQxMyxcbiAgW0Vycm9yQ29kZS5DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5EVVBMSUNBVEVfRU5UUlldOiA0MDksXG4gIFtFcnJvckNvZGUuU0NBTl9DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX0ZST1pFTl06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVkVSU0lPTl9JTl9VU0VdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX0RJR0VTVF9NSVNNQVRDSF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVkVSU0lPTl9JTU1VVEFCTEVdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSF9HQVRFX0ZBSUxFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9QTEFOX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX05PVF9JTlNUQUxMRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUExVR0lOX0JMT0NLRURfQllfUE9MSUNZXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9VTkFWQUlMQUJMRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTkFNRV9MSVNURURdOiA0MDksXG4gIFtFcnJvckNvZGUuTkFNRV9UQUtFTl06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fREVMRVRFRF06IDQxMCxcbiAgW0Vycm9yQ29kZS5JTUFHRV9TQ0FOX1VOQVZBSUxBQkxFXTogNDIyLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WVUxOX0dBVEVdOiA0MjIsXG4gIFtFcnJvckNvZGUuUExVR0lOX05BTUVfU0hBRE9XU106IDQwOSxcbiAgW0Vycm9yQ29kZS5QQVlNRU5UX01FVEhPRF9SRVFVSVJFRF06IDQwMixcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEXTogNDAwLFxuICBbRXJyb3JDb2RlLkRJU0NPVU5UX05PVF9GT1VORF06IDQwNCxcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9JTkFDVElWRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTEFOX09WRVJfQ0FQXTogNDA5LFxuICBbRXJyb3JDb2RlLkFERE9OX09WRVJfQ0FQXTogNDA5LFxuICBbRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SXTogNTAwLFxuICBbRXJyb3JDb2RlLkRBVEFCQVNFX0VSUk9SXTogNTAwLFxuICBbRXJyb3JDb2RlLk5PVF9JTVBMRU1FTlRFRF06IDUwMSxcbiAgW0Vycm9yQ29kZS5TRVJWSUNFX1VOQVZBSUxBQkxFXTogNTAzLFxuICBbRXJyb3JDb2RlLkNPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRV06IDUwMyxcbn07XG5cbi8qKlxuICogR2V0IHRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciBhbiBlcnJvciBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRm9yRXJyb3JDb2RlKGNvZGU6IEVycm9yQ29kZSk6IG51bWJlciB7XG4gIHJldHVybiBFcnJvckNvZGVTdGF0dXNbY29kZV0gPz8gNTAwO1xufVxuIl19
@@ -8,7 +8,7 @@ export * from './reserved-tags.js';
8
8
  export * from './quota-catalog.js';
9
9
  export * from './wire-vocabulary.js';
10
10
  export { type ComplianceExemptionRequest } from './compliance-exemption.js';
11
- export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, type PluginCatalogCategory, PLUGIN_CATALOG_FIELDS, type PluginCatalogField, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, type MetadataSource, type MetadataSources, } from './plugin-catalog.js';
11
+ export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, type PluginCatalogCategory, PLUGIN_CATALOG_FIELDS, type PluginCatalogField, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, type MetadataSource, type MetadataSources, MANAGED_TOOLCHAIN_PLUGINS, type ManagedToolchainPlugin, isManagedToolchainPlugin, managedToolchainRefName, managedRefPinsVersion, toolchainReleasePin, BUILD_IMAGE_STEP_KEY, BUILD_IMAGE_MANIFEST_STAGE, BUILD_IMAGE_MANIFEST_ACTION, } from './plugin-catalog.js';
12
12
  export { type HttpRequest, } from './http.js';
13
13
  export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, type QuotaTier, type QuotaTierLimits, QUOTA_TIERS, VALID_TIERS, STANDARD_TIERS, TEAM_CAPABLE_TIERS, SEAT_PACK_TIERS, seatRemedy, type SeatRemedy, DEFAULT_TIER, QUOTA_RESET_DAYS, CPU_CREDITS_PERIOD_DAYS, quotaPeriodDays, nextQuotaResetDate, AUTOMATION_CALLS_SIZING, automationCallsFor, quotaGracePct, enforcedQuotaLimit, } from './quota-tiers.js';
14
14
  export * from './build-catalog.js';