@pipeline-builder/pipeline-manager 3.4.169 → 3.4.170
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/create-pat.d.ts.map +1 -1
- package/dist/commands/create-pat.js +14 -25
- package/dist/commands/entity-get.d.ts +51 -0
- package/dist/commands/entity-get.d.ts.map +1 -0
- package/dist/commands/entity-get.js +68 -0
- package/dist/commands/entity-list.d.ts +39 -0
- package/dist/commands/entity-list.d.ts.map +1 -0
- package/dist/commands/entity-list.js +87 -0
- package/dist/commands/get-pipeline.d.ts.map +1 -1
- package/dist/commands/get-pipeline.js +24 -67
- package/dist/commands/get-plugin.d.ts.map +1 -1
- package/dist/commands/get-plugin.js +25 -68
- package/dist/commands/list-pipelines.d.ts.map +1 -1
- package/dist/commands/list-pipelines.js +56 -127
- package/dist/commands/list-plugins.d.ts.map +1 -1
- package/dist/commands/list-plugins.js +45 -112
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +16 -38
- package/dist/utils/auth-utils.d.ts +68 -0
- package/dist/utils/auth-utils.d.ts.map +1 -0
- package/dist/utils/auth-utils.js +77 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pat.d.ts","sourceRoot":"","sources":["../../src/commands/create-pat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-pat.d.ts","sourceRoot":"","sources":["../../src/commands/create-pat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoLhD"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import https from 'https';
|
|
4
3
|
import axios from 'axios';
|
|
5
4
|
import { Command } from 'commander';
|
|
6
5
|
import pico from 'picocolors';
|
|
7
6
|
import { generateExecutionId, TIMEOUTS } from '../config/cli.constants.js';
|
|
7
|
+
import { assertCredentialTlsAllowed, credentialHttpsAgent, postLogin, resolveCredentials, switchOrganization } from '../utils/auth-utils.js';
|
|
8
8
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
9
9
|
import { printDebug, printError, printInfo, printKeyValue, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
10
10
|
import { checkAuthRateLimit, recordAuthFailure, recordAuthSuccess } from '../utils/rate-limiter.js';
|
|
11
|
-
import { isProductionEnv } from '../utils/tls.js';
|
|
12
11
|
const { bold, cyan, green, magenta, yellow } = pico;
|
|
13
12
|
const MAX_EXPIRES_DAYS = 365;
|
|
14
13
|
/**
|
|
@@ -54,14 +53,10 @@ export function createPat(program) {
|
|
|
54
53
|
// SECURITY: this POSTs a plaintext password (login + step-up). Never send it
|
|
55
54
|
// over an unverified TLS connection in production — a MITM would harvest it.
|
|
56
55
|
// Mirrors the guard in `login`. Non-production still honors --no-verify-ssl.
|
|
57
|
-
|
|
58
|
-
printError('Refusing to disable TLS verification in production (NODE_ENV=production) — credentials must not be transmitted over an unverified connection. Use a valid certificate, or unset NODE_ENV for local/self-signed development.');
|
|
59
|
-
process.exit(ERROR_CODES.AUTHENTICATION);
|
|
60
|
-
}
|
|
56
|
+
assertCredentialTlsAllowed(options.verifySsl);
|
|
61
57
|
// Credentials from flags OR PLATFORM_IDENTIFIER/PLATFORM_PASSWORD env (so the
|
|
62
58
|
// password need not appear in shell history / `ps`).
|
|
63
|
-
const identifier = options
|
|
64
|
-
const password = options.password || process.env.PLATFORM_PASSWORD;
|
|
59
|
+
const { identifier, password } = resolveCredentials(options);
|
|
65
60
|
const quiet = options.quiet ?? false;
|
|
66
61
|
try {
|
|
67
62
|
// Validate name.
|
|
@@ -101,15 +96,12 @@ export function createPat(program) {
|
|
|
101
96
|
console.log('');
|
|
102
97
|
printInfo('Authenticating', { identifier, url: options.url, verifySsl: options.verifySsl });
|
|
103
98
|
}
|
|
104
|
-
const httpsAgent =
|
|
99
|
+
const httpsAgent = credentialHttpsAgent(options.verifySsl);
|
|
105
100
|
const timeout = TIMEOUTS.HTTP_REQUEST;
|
|
106
101
|
// 1) Login → session access token.
|
|
107
|
-
const loginUrl = `${options.url}/api/auth/login`;
|
|
108
|
-
printDebug('POST', { url: loginUrl });
|
|
109
102
|
let accessToken;
|
|
110
103
|
try {
|
|
111
|
-
|
|
112
|
-
accessToken = res.data?.data?.accessToken;
|
|
104
|
+
accessToken = await postLogin({ url: options.url, identifier, password, httpsAgent, timeout });
|
|
113
105
|
}
|
|
114
106
|
catch (error) {
|
|
115
107
|
recordAuthFailure(identifier, options.url);
|
|
@@ -126,17 +118,14 @@ export function createPat(program) {
|
|
|
126
118
|
if (options.org) {
|
|
127
119
|
if (!quiet)
|
|
128
120
|
printInfo('Switching to organization', { orgId: options.org });
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
accessToken = switched;
|
|
138
|
-
if (!quiet)
|
|
139
|
-
printSuccess(`Switched to organization ${options.org}`);
|
|
121
|
+
accessToken = await switchOrganization({
|
|
122
|
+
url: options.url,
|
|
123
|
+
orgId: options.org,
|
|
124
|
+
accessToken,
|
|
125
|
+
httpsAgent,
|
|
126
|
+
timeout,
|
|
127
|
+
quiet,
|
|
128
|
+
});
|
|
140
129
|
}
|
|
141
130
|
// 3) Step-up — re-verify the password to unlock the gated create call.
|
|
142
131
|
// The returned token is short-lived (~60s), so we use it immediately.
|
|
@@ -206,4 +195,4 @@ export function createPat(program) {
|
|
|
206
195
|
}
|
|
207
196
|
});
|
|
208
197
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUtcGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBdUJwRCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQWdCO0lBQ3hDLE9BQU87U0FDSixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsV0FBVyxDQUFDLDZFQUE2RSxDQUFDO1NBQzFGLGNBQWMsQ0FBQyxlQUFlLEVBQUUsNENBQTRDLENBQUM7U0FDN0UsTUFBTSxDQUFDLHVCQUF1QixFQUFFLDZCQUE2QixnQkFBZ0IsR0FBRyxFQUFFLElBQUksQ0FBQztTQUN2RixNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUM7U0FDakQsTUFBTSxDQUFDLCtCQUErQixFQUFFLG1CQUFtQixDQUFDO1NBQzVELE1BQU0sQ0FBQywyQkFBMkIsRUFBRSx5Q0FBeUMsQ0FBQztTQUM5RSxNQUFNLENBQUMsZUFBZSxFQUFFLGlFQUFpRSxDQUFDO1NBQzFGLE1BQU0sQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSx3QkFBd0IsQ0FBQztTQUNyRyxNQUFNLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxDQUFDO1NBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUNqRSxNQUFNLENBQUMsU0FBUyxFQUFFLG1EQUFtRCxDQUFDO1NBQ3RFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUUxQyw2RUFBNkU7UUFDN0UsNkVBQTZFO1FBQzdFLDZFQUE2RTtRQUM3RSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDckQsVUFBVSxDQUFDLDZOQUE2TixDQUFDLENBQUM7WUFDMU8sT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELDhFQUE4RTtRQUM5RSxxREFBcUQ7UUFDckQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQ3pFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUVyQyxJQUFJLENBQUM7WUFDSCxpQkFBaUI7WUFDakIsTUFBTSxJQUFJLEdBQUcsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsVUFBVSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCw2QkFBNkI7WUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEUsVUFBVSxDQUFDLG1EQUFtRCxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2xGLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBRS9CLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdCLFVBQVUsQ0FBQyxnR0FBZ0csQ0FBQyxDQUFDO2dCQUM3RyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLFlBQVksQ0FBQywrR0FBK0csQ0FBQyxDQUFDO1lBQ2hJLENBQUM7WUFFRCwrRUFBK0U7WUFDL0UsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxXQUFXLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsU0FBUyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUM5RixDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFFdEMsbUNBQW1DO1lBQ25DLE1BQU0sUUFBUSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDakQsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksV0FBK0IsQ0FBQztZQUNwQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUMxQixRQUFRLEVBQ1IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQ3hCLEVBQUUsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUN6RSxDQUFDO2dCQUNGLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUM7WUFDNUMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQyxVQUFVLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELGlCQUFpQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFM0MsOEVBQThFO1lBQzlFLG9CQUFvQjtZQUNwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUs7b0JBQUUsU0FBUyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRSxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLHNCQUFzQixDQUFDO2dCQUN2RCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FDaEMsU0FBUyxFQUNULEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFDL0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLFVBQVUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQ25ILENBQUM7Z0JBQ0YsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2QsVUFBVSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7b0JBQ3RFLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUNELFdBQVcsR0FBRyxRQUFRLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxLQUFLO29CQUFFLFlBQVksQ0FBQyw0QkFBNEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUVELHVFQUF1RTtZQUN2RSx5RUFBeUU7WUFDekUsTUFBTSxTQUFTLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztZQUNwRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUNoQyxTQUFTLEVBQ1QsRUFBRSxRQUFRLEVBQUUsRUFDWixFQUFFLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsVUFBVSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FDbkgsQ0FBQztZQUNGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztZQUN0RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLFVBQVUsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBRUQscUJBQXFCO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDOUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FDN0IsTUFBTSxFQUNOLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUN2RTtnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtvQkFDbEMsZUFBZSxFQUFFLFVBQVUsV0FBVyxFQUFFO29CQUN4QyxpQkFBaUIsRUFBRSxXQUFXO2lCQUMvQjtnQkFDRCxVQUFVO2dCQUNWLE9BQU87YUFDUixDQUNGLENBQUM7WUFFRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxVQUFVLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVELDJFQUEyRTtZQUMzRSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzlDLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLGFBQWEsQ0FBQztnQkFDWixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJO2dCQUN6QixnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLFdBQVc7Z0JBQ3pDLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLEdBQUcsSUFBSSxTQUFTO2dCQUM3QyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDNUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFNBQVMsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxvREFBb0QsSUFBSSxPQUFPLFVBQVUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzRyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztnQkFDdEMsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUE2QixFQUFFLE9BQU8sQ0FBQztnQkFDeEUsVUFBVSxDQUFDLHFCQUFxQixFQUFFO29CQUNoQyxNQUFNLEVBQUUsTUFBTSxJQUFJLGFBQWE7b0JBQy9CLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7YUFDbEcsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUV4ZWN1dGlvbklkLCBUSU1FT1VUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGNoZWNrQXV0aFJhdGVMaW1pdCwgcmVjb3JkQXV0aEZhaWx1cmUsIHJlY29yZEF1dGhTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvcmF0ZS1saW1pdGVyLmpzJztcbmltcG9ydCB7IGlzUHJvZHVjdGlvbkVudiB9IGZyb20gJy4uL3V0aWxzL3Rscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEsIHllbGxvdyB9ID0gcGljbztcblxuLyoqIExvZ2luL3N3aXRjaC1vcmcgcmVzcG9uc2Ug4oCUIGNhcnJpZXMgdGhlIHNlc3Npb24gYWNjZXNzIHRva2VuLiAqL1xuaW50ZXJmYWNlIEF1dGhSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE6IHsgYWNjZXNzVG9rZW46IHN0cmluZzsgcmVmcmVzaFRva2VuOiBzdHJpbmcgfTtcbn1cblxuLyoqIFN0ZXAtdXAgcmVzcG9uc2Ug4oCUIGEgc2hvcnQtbGl2ZWQgKDYwcykgSldUIGJvdW5kIHRvIHRoZSB1c2VyJ3Mgc3ViLiAqL1xuaW50ZXJmYWNlIFN0ZXBVcFJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZGF0YTogeyBzdGVwVXBUb2tlbjogc3RyaW5nIH07XG59XG5cbi8qKiBDcmVhdGUtUEFUIHJlc3BvbnNlIOKAlCB0aGUgcmF3IHRva2VuIGlzIHJldHVybmVkIGV4YWN0bHkgb25jZS4gKi9cbmludGVyZmFjZSBDcmVhdGVQYXRSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE6IHtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHBhdDogeyBqdGk6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU/OiBzdHJpbmcgfCBudWxsIH07XG4gIH07XG59XG5cbmNvbnN0IE1BWF9FWFBJUkVTX0RBWVMgPSAzNjU7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgY3JlYXRlLXBhdGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBNaW50cyBhIG5hbWVkIFBlcnNvbmFsIEFjY2VzcyBUb2tlbiDigJQgYSBkdXJhYmxlLCBpbmRpdmlkdWFsbHktcmV2b2NhYmxlIEFQSVxuICogY3JlZGVudGlhbCDigJQgZm9yIENJL2F1dG9tYXRpb24uIFVubGlrZSBgbG9naW5gICh3aGljaCByZXR1cm5zIGEgc2hvcnQtbGl2ZWRcbiAqIHNlc3Npb24gdG9rZW4pLCBhIFBBVCBpcyB0aGUgcmlnaHQgbG9uZy1saXZlZCBjcmVkZW50aWFsIGZvciBzY3JpcHRzLlxuICpcbiAqIFRoZSBwbGF0Zm9ybSBnYXRlcyBQQVQgY3JlYXRpb24gYmVoaW5kIHN0ZXAtdXAgcmUtYXV0aGVudGljYXRpb24sIHNvIHRoaXNcbiAqIGNvbW1hbmQgY2hhaW5zIHRocmVlIGNhbGxzOiBsb2dpbiAo4oaSIGFjY2VzcyB0b2tlbiksIHN0ZXAtdXAgd2l0aCB0aGUgc2FtZVxuICogcGFzc3dvcmQgKOKGkiBzdGVwLXVwIHRva2VuKSwgdGhlbiBQT1NUIC91c2VyL3BhdHMuIFRoZSBQQVQgYmluZHMgdG8gdGhlIHVzZXInc1xuICogYWN0aXZlIG9yZzsgcGFzcyBgLS1vcmdgIHRvIHN3aXRjaCBmaXJzdCAocGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcpLlxuICpcbiAqIFRoZSByYXcgdG9rZW4gaXMgcHJpbnRlZCBPTkNFLiBgLS1xdWlldGAgcHJpbnRzIG9ubHkgYGV4cG9ydCBQTEFURk9STV9UT0tFTj3igKZgXG4gKiBzbyBpdCBjYW4gYmUgYGV2YWxgJ2Qg4oCUIHRoZSBQQVQgaXMgaXRzZWxmIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIFBMQVRGT1JNX1BBU1NXT1JEPXNlY3JldCBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaS1kZXBsb3kgLXUgY2lAZXhhbXBsZS5jb21cbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpIC0tZXhwaXJlcy1kYXlzIDMwIC11IGNpQGV4YW1wbGUuY29tIC1wIHNlY3JldFxuICogZXZhbCAkKFBMQVRGT1JNX1BBU1NXT1JEPXNlY3JldCBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaSAtdSBjaUBleGFtcGxlLmNvbSAtLXF1aWV0KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXQocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3BhdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBuYW1lZCBQZXJzb25hbCBBY2Nlc3MgVG9rZW4gKGxvbmctbGl2ZWQgQ0xJL2F1dG9tYXRpb24gY3JlZGVudGlhbCknKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLS1uYW1lIDxuYW1lPicsICdIdW1hbi1yZWFkYWJsZSB0b2tlbiBuYW1lIChlLmcuIGNpLWRlcGxveSknKVxuICAgIC5vcHRpb24oJy0tZXhwaXJlcy1kYXlzIDxkYXlzPicsIGBUb2tlbiBsaWZldGltZSBpbiBkYXlzICgxLSR7TUFYX0VYUElSRVNfREFZU30pYCwgJzkwJylcbiAgICAub3B0aW9uKCctLXNjb3BlIDxzY29wZT4nLCAnT3B0aW9uYWwgdG9rZW4gc2NvcGUnKVxuICAgIC5vcHRpb24oJy11LCAtLWlkZW50aWZpZXIgPGlkZW50aWZpZXI+JywgJ1VzZXJuYW1lIG9yIGVtYWlsJylcbiAgICAub3B0aW9uKCctcCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIChwcmVmZXIgUExBVEZPUk1fUEFTU1dPUkQgZW52KScpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdCaW5kIHRoZSB0b2tlbiB0byBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiAoc3dpdGNoZXMgYWN0aXZlIG9yZyknKVxuICAgIC5vcHRpb24oJy0tdXJsIDx1cmw+JywgJ1BsYXRmb3JtIGJhc2UgVVJMJywgcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcblxuICAgICAgLy8gU0VDVVJJVFk6IHRoaXMgUE9TVHMgYSBwbGFpbnRleHQgcGFzc3dvcmQgKGxvZ2luICsgc3RlcC11cCkuIE5ldmVyIHNlbmQgaXRcbiAgICAgIC8vIG92ZXIgYW4gdW52ZXJpZmllZCBUTFMgY29ubmVjdGlvbiBpbiBwcm9kdWN0aW9uIOKAlCBhIE1JVE0gd291bGQgaGFydmVzdCBpdC5cbiAgICAgIC8vIE1pcnJvcnMgdGhlIGd1YXJkIGluIGBsb2dpbmAuIE5vbi1wcm9kdWN0aW9uIHN0aWxsIGhvbm9ycyAtLW5vLXZlcmlmeS1zc2wuXG4gICAgICBpZiAob3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlICYmIGlzUHJvZHVjdGlvbkVudigpKSB7XG4gICAgICAgIHByaW50RXJyb3IoJ1JlZnVzaW5nIHRvIGRpc2FibGUgVExTIHZlcmlmaWNhdGlvbiBpbiBwcm9kdWN0aW9uIChOT0RFX0VOVj1wcm9kdWN0aW9uKSDigJQgY3JlZGVudGlhbHMgbXVzdCBub3QgYmUgdHJhbnNtaXR0ZWQgb3ZlciBhbiB1bnZlcmlmaWVkIGNvbm5lY3Rpb24uIFVzZSBhIHZhbGlkIGNlcnRpZmljYXRlLCBvciB1bnNldCBOT0RFX0VOViBmb3IgbG9jYWwvc2VsZi1zaWduZWQgZGV2ZWxvcG1lbnQuJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWRlbnRpYWxzIGZyb20gZmxhZ3MgT1IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBlbnYgKHNvIHRoZVxuICAgICAgLy8gcGFzc3dvcmQgbmVlZCBub3QgYXBwZWFyIGluIHNoZWxsIGhpc3RvcnkgLyBgcHNgKS5cbiAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBvcHRpb25zLmlkZW50aWZpZXIgfHwgcHJvY2Vzcy5lbnYuUExBVEZPUk1fSURFTlRJRklFUjtcbiAgICAgIGNvbnN0IHBhc3N3b3JkID0gb3B0aW9ucy5wYXNzd29yZCB8fCBwcm9jZXNzLmVudi5QTEFURk9STV9QQVNTV09SRDtcbiAgICAgIGNvbnN0IHF1aWV0ID0gb3B0aW9ucy5xdWlldCA/PyBmYWxzZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgbmFtZS5cbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiBvcHRpb25zLm5hbWUgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5uYW1lLnRyaW0oKSA6ICcnO1xuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdUb2tlbiBuYW1lIGlzIHJlcXVpcmVkICgtLW5hbWUpJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Rva2VuIG5hbWUgbXVzdCBiZSAxMDAgY2hhcmFjdGVycyBvciBmZXdlcicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGV4cGlyeSDihpIgc2Vjb25kcy5cbiAgICAgICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoTnVtYmVyKG9wdGlvbnMuZXhwaXJlc0RheXMpKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGF5cykgfHwgZGF5cyA8IDEgfHwgZGF5cyA+IE1BWF9FWFBJUkVTX0RBWVMpIHtcbiAgICAgICAgICBwcmludEVycm9yKGAtLWV4cGlyZXMtZGF5cyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9FWFBJUkVTX0RBWVN9YCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IGRheXMgKiA4NjQwMDtcblxuICAgICAgICAvLyBDcmVkZW50aWFscyByZXF1aXJlZCDigJQgc3RlcC11cCBuZWVkcyBhIHBhc3N3b3JkLCBzbyAtLXJlZnJlc2ggY2FuJ3Qgd29yayBoZXJlLlxuICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgIXBhc3N3b3JkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignY3JlYXRlLXBhdCByZXF1aXJlcyAtLWlkZW50aWZpZXIgYW5kIC0tcGFzc3dvcmQgKG9yIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQgZW52KScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1Bhc3NpbmcgLS1wYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lIGNhbiBleHBvc2UgaXQgdmlhIHNoZWxsIGhpc3Rvcnk7IHByZWZlciB0aGUgUExBVEZPUk1fUEFTU1dPUkQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJhdGUgbGltaXRpbmcg4oCUIHByZXZlbnQgYnJ1dGUgZm9yY2UgKGtleWVkIHRvIGlkZW50aWZpZXIgKyB1cmwsIGxpa2UgbG9naW4pLlxuICAgICAgICBjb25zdCByYXRlTGltaXRNc2cgPSBjaGVja0F1dGhSYXRlTGltaXQoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICBpZiAocmF0ZUxpbWl0TXNnKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcihyYXRlTGltaXRNc2cpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGUgUGVyc29uYWwgQWNjZXNzIFRva2VuJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bWFnZW50YShgW0VYRS0ke2V4ZWN1dGlvbklkfV1gKX0gJHtjeWFuKGJvbGQoJ0NyZWF0ZSBQZXJzb25hbCBBY2Nlc3MgVG9rZW4nKSl9YCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnQXV0aGVudGljYXRpbmcnLCB7IGlkZW50aWZpZXIsIHVybDogb3B0aW9ucy51cmwsIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBodHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBvcHRpb25zLnZlcmlmeVNzbCA/PyB0cnVlIH0pO1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gVElNRU9VVFMuSFRUUF9SRVFVRVNUO1xuXG4gICAgICAgIC8vIDEpIExvZ2luIOKGkiBzZXNzaW9uIGFjY2VzcyB0b2tlbi5cbiAgICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHtvcHRpb25zLnVybH0vYXBpL2F1dGgvbG9naW5gO1xuICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IGxvZ2luVXJsIH0pO1xuICAgICAgICBsZXQgYWNjZXNzVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBheGlvcy5wb3N0PEF1dGhSZXNwb25zZT4oXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHsgaWRlbnRpZmllciwgcGFzc3dvcmQgfSxcbiAgICAgICAgICAgIHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sIGh0dHBzQWdlbnQsIHRpbWVvdXQgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGFjY2Vzc1Rva2VuID0gcmVzLmRhdGE/LmRhdGE/LmFjY2Vzc1Rva2VuO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlY29yZEF1dGhGYWlsdXJlKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIHByaW50RXJyb3IoJ0xvZ2luIGZhaWxlZDogbm8gYWNjZXNzIHRva2VuIGluIHJlc3BvbnNlJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmRBdXRoU3VjY2VzcyhpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG5cbiAgICAgICAgLy8gMikgT3B0aW9uYWxseSBiaW5kIHRvIGEgc3BlY2lmaWMgb3JnIChwZXJzaXN0cyBhcyB0aGUgYWN0aXZlIG9yZywgd2hpY2ggdGhlXG4gICAgICAgIC8vICAgIFBBVCBpbmhlcml0cykuXG4gICAgICAgIGlmIChvcHRpb25zLm9yZykge1xuICAgICAgICAgIGlmICghcXVpZXQpIHByaW50SW5mbygnU3dpdGNoaW5nIHRvIG9yZ2FuaXphdGlvbicsIHsgb3JnSWQ6IG9wdGlvbnMub3JnIH0pO1xuICAgICAgICAgIGNvbnN0IHN3aXRjaFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvYXV0aC9zd2l0Y2gtb3JnYDtcbiAgICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IHN3aXRjaFVybCB9KTtcbiAgICAgICAgICBjb25zdCBzd2l0Y2hSZXMgPSBhd2FpdCBheGlvcy5wb3N0PEF1dGhSZXNwb25zZT4oXG4gICAgICAgICAgICBzd2l0Y2hVcmwsXG4gICAgICAgICAgICB7IG9yZ2FuaXphdGlvbklkOiBvcHRpb25zLm9yZyB9LFxuICAgICAgICAgICAgeyBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAgfSwgaHR0cHNBZ2VudCwgdGltZW91dCB9LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3dpdGNoZWQgPSBzd2l0Y2hSZXMuZGF0YT8uZGF0YT8uYWNjZXNzVG9rZW47XG4gICAgICAgICAgaWYgKCFzd2l0Y2hlZCkge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignT3JnYW5pemF0aW9uIHN3aXRjaCBmYWlsZWQ6IG5vIGFjY2VzcyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWNjZXNzVG9rZW4gPSBzd2l0Y2hlZDtcbiAgICAgICAgICBpZiAoIXF1aWV0KSBwcmludFN1Y2Nlc3MoYFN3aXRjaGVkIHRvIG9yZ2FuaXphdGlvbiAke29wdGlvbnMub3JnfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMykgU3RlcC11cCDigJQgcmUtdmVyaWZ5IHRoZSBwYXNzd29yZCB0byB1bmxvY2sgdGhlIGdhdGVkIGNyZWF0ZSBjYWxsLlxuICAgICAgICAvLyAgICBUaGUgcmV0dXJuZWQgdG9rZW4gaXMgc2hvcnQtbGl2ZWQgKH42MHMpLCBzbyB3ZSB1c2UgaXQgaW1tZWRpYXRlbHkuXG4gICAgICAgIGNvbnN0IHN0ZXBVcFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvYXV0aC9zdGVwLXVwYDtcbiAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiBzdGVwVXBVcmwgfSk7XG4gICAgICAgIGNvbnN0IHN0ZXBVcFJlcyA9IGF3YWl0IGF4aW9zLnBvc3Q8U3RlcFVwUmVzcG9uc2U+KFxuICAgICAgICAgIHN0ZXBVcFVybCxcbiAgICAgICAgICB7IHBhc3N3b3JkIH0sXG4gICAgICAgICAgeyBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAgfSwgaHR0cHNBZ2VudCwgdGltZW91dCB9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdGVwVXBUb2tlbiA9IHN0ZXBVcFJlcy5kYXRhPy5kYXRhPy5zdGVwVXBUb2tlbjtcbiAgICAgICAgaWYgKCFzdGVwVXBUb2tlbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1N0ZXAtdXAgdmVyaWZpY2F0aW9uIGZhaWxlZDogbm8gc3RlcC11cCB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0KSBDcmVhdGUgdGhlIFBBVC5cbiAgICAgICAgY29uc3QgcGF0VXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS91c2VyL3BhdHNgO1xuICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IHBhdFVybCB9KTtcbiAgICAgICAgY29uc3QgcGF0UmVzID0gYXdhaXQgYXhpb3MucG9zdDxDcmVhdGVQYXRSZXNwb25zZT4oXG4gICAgICAgICAgcGF0VXJsLFxuICAgICAgICAgIHsgbmFtZSwgZXhwaXJlc0luLCAuLi4ob3B0aW9ucy5zY29wZSA/IHsgc2NvcGU6IG9wdGlvbnMuc2NvcGUgfSA6IHt9KSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICAgICAgICAgICAgJ1gtU3RlcC1VcC1Ub2tlbic6IHN0ZXBVcFRva2VuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG9rZW4gPSBwYXRSZXMuZGF0YT8uZGF0YT8udG9rZW47XG4gICAgICAgIGNvbnN0IHBhdCA9IHBhdFJlcy5kYXRhPy5kYXRhPy5wYXQ7XG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUgdG9rZW4gZmFpbGVkOiBubyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBRdWlldCBtb2RlOiBlbWl0IG9ubHkgdGhlIGV4cG9ydCBsaW5lICh0aGUgUEFUIGlzIGEgdmFsaWQgQmVhcmVyIHRva2VuKS5cbiAgICAgICAgaWYgKHF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke3Rva2VufWApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQZXJzb25hbCBhY2Nlc3MgdG9rZW4gY3JlYXRlZCcpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdOYW1lJzogcGF0Py5uYW1lID8/IG5hbWUsXG4gICAgICAgICAgJ1Rva2VuIElEIChqdGkpJzogcGF0Py5qdGkgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0V4cGlyZXMnOiBwYXQ/LmV4cGlyZXNBdCA/PyBgJHtkYXlzfSBkYXkocylgLFxuICAgICAgICAgIC4uLihwYXQ/LnNjb3BlID8geyBTY29wZTogcGF0LnNjb3BlIH0gOiB7fSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKHllbGxvdyhib2xkKCdDb3B5IHlvdXIgdG9rZW4gbm93IOKAlCBpdCB3aWxsIG5vdCBiZSBzaG93biBhZ2FpbjonKSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbih0b2tlbikpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGlwOiB1c2UgaXQgYXMgUExBVEZPUk1fVE9LRU4gZm9yIHN1YnNlcXVlbnQgY29tbWFuZHM6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKCcgIGV4cG9ydCBQTEFURk9STV9UT0tFTj08dG9rZW4+JykpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICAjIG9yOiAgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lICR7bmFtZX0gLXUgJHtpZGVudGlmaWVyfSAtLXF1aWV0KWApKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXJyb3IucmVzcG9uc2U/LnN0YXR1cztcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKGVycm9yLnJlc3BvbnNlPy5kYXRhIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZTtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUgdG9rZW4gZmFpbGVkJywge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdjcmVhdGUtcGF0JywgZXhlY3V0aW9uSWQsIGlkZW50aWZpZXI6IG9wdGlvbnMuaWRlbnRpZmllciwgdXJsOiBvcHRpb25zLnVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUtcGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFpQnBELE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0FBRTdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBZ0I7SUFDeEMsT0FBTztTQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxXQUFXLENBQUMsNkVBQTZFLENBQUM7U0FDMUYsY0FBYyxDQUFDLGVBQWUsRUFBRSw0Q0FBNEMsQ0FBQztTQUM3RSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsNkJBQTZCLGdCQUFnQixHQUFHLEVBQUUsSUFBSSxDQUFDO1NBQ3ZGLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxzQkFBc0IsQ0FBQztTQUNqRCxNQUFNLENBQUMsK0JBQStCLEVBQUUsbUJBQW1CLENBQUM7U0FDNUQsTUFBTSxDQUFDLDJCQUEyQixFQUFFLHlDQUF5QyxDQUFDO1NBQzlFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsaUVBQWlFLENBQUM7U0FDMUYsTUFBTSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLHdCQUF3QixDQUFDO1NBQ3JHLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFDO1NBQ2pFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsbURBQW1ELENBQUM7U0FDdEUsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4QixNQUFNLFdBQVcsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBRTFDLDZFQUE2RTtRQUM3RSw2RUFBNkU7UUFDN0UsNkVBQTZFO1FBQzdFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5Qyw4RUFBOEU7UUFDOUUscURBQXFEO1FBQ3JELE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7UUFFckMsSUFBSSxDQUFDO1lBQ0gsaUJBQWlCO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQzlDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLFVBQVUsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xFLFVBQVUsQ0FBQyxtREFBbUQsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUUvQixpRkFBaUY7WUFDakYsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixVQUFVLENBQUMsZ0dBQWdHLENBQUMsQ0FBQztnQkFDN0csT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQixZQUFZLENBQUMsK0dBQStHLENBQUMsQ0FBQztZQUNoSSxDQUFDO1lBRUQsK0VBQStFO1lBQy9FLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsV0FBVyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBRXRDLG1DQUFtQztZQUNuQyxJQUFJLFdBQStCLENBQUM7WUFDcEMsSUFBSSxDQUFDO2dCQUNILFdBQVcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQyxVQUFVLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELGlCQUFpQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFM0MsOEVBQThFO1lBQzlFLG9CQUFvQjtZQUNwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUs7b0JBQUUsU0FBUyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztvQkFDckMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO29CQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ2xCLFdBQVc7b0JBQ1gsVUFBVTtvQkFDVixPQUFPO29CQUNQLEtBQUs7aUJBQ04sQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELHVFQUF1RTtZQUN2RSx5RUFBeUU7WUFDekUsTUFBTSxTQUFTLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztZQUNwRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUNoQyxTQUFTLEVBQ1QsRUFBRSxRQUFRLEVBQUUsRUFDWixFQUFFLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsVUFBVSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FDbkgsQ0FBQztZQUNGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztZQUN0RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLFVBQVUsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBRUQscUJBQXFCO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDOUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FDN0IsTUFBTSxFQUNOLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUN2RTtnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtvQkFDbEMsZUFBZSxFQUFFLFVBQVUsV0FBVyxFQUFFO29CQUN4QyxpQkFBaUIsRUFBRSxXQUFXO2lCQUMvQjtnQkFDRCxVQUFVO2dCQUNWLE9BQU87YUFDUixDQUNGLENBQUM7WUFFRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxVQUFVLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVELDJFQUEyRTtZQUMzRSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzlDLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLGFBQWEsQ0FBQztnQkFDWixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJO2dCQUN6QixnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLFdBQVc7Z0JBQ3pDLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLEdBQUcsSUFBSSxTQUFTO2dCQUM3QyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDNUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFNBQVMsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxvREFBb0QsSUFBSSxPQUFPLFVBQVUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzRyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztnQkFDdEMsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUE2QixFQUFFLE9BQU8sQ0FBQztnQkFDeEUsVUFBVSxDQUFDLHFCQUFxQixFQUFFO29CQUNoQyxNQUFNLEVBQUUsTUFBTSxJQUFJLGFBQWE7b0JBQy9CLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7YUFDbEcsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGdlbmVyYXRlRXhlY3V0aW9uSWQsIFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQsIGNyZWRlbnRpYWxIdHRwc0FnZW50LCBwb3N0TG9naW4sIHJlc29sdmVDcmVkZW50aWFscywgc3dpdGNoT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBjaGVja0F1dGhSYXRlTGltaXQsIHJlY29yZEF1dGhGYWlsdXJlLCByZWNvcmRBdXRoU3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL3JhdGUtbGltaXRlci5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEsIHllbGxvdyB9ID0gcGljbztcblxuLyoqIFN0ZXAtdXAgcmVzcG9uc2Ug4oCUIGEgc2hvcnQtbGl2ZWQgKDYwcykgSldUIGJvdW5kIHRvIHRoZSB1c2VyJ3Mgc3ViLiAqL1xuaW50ZXJmYWNlIFN0ZXBVcFJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZGF0YTogeyBzdGVwVXBUb2tlbjogc3RyaW5nIH07XG59XG5cbi8qKiBDcmVhdGUtUEFUIHJlc3BvbnNlIOKAlCB0aGUgcmF3IHRva2VuIGlzIHJldHVybmVkIGV4YWN0bHkgb25jZS4gKi9cbmludGVyZmFjZSBDcmVhdGVQYXRSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE6IHtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHBhdDogeyBqdGk6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU/OiBzdHJpbmcgfCBudWxsIH07XG4gIH07XG59XG5cbmNvbnN0IE1BWF9FWFBJUkVTX0RBWVMgPSAzNjU7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgY3JlYXRlLXBhdGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBNaW50cyBhIG5hbWVkIFBlcnNvbmFsIEFjY2VzcyBUb2tlbiDigJQgYSBkdXJhYmxlLCBpbmRpdmlkdWFsbHktcmV2b2NhYmxlIEFQSVxuICogY3JlZGVudGlhbCDigJQgZm9yIENJL2F1dG9tYXRpb24uIFVubGlrZSBgbG9naW5gICh3aGljaCByZXR1cm5zIGEgc2hvcnQtbGl2ZWRcbiAqIHNlc3Npb24gdG9rZW4pLCBhIFBBVCBpcyB0aGUgcmlnaHQgbG9uZy1saXZlZCBjcmVkZW50aWFsIGZvciBzY3JpcHRzLlxuICpcbiAqIFRoZSBwbGF0Zm9ybSBnYXRlcyBQQVQgY3JlYXRpb24gYmVoaW5kIHN0ZXAtdXAgcmUtYXV0aGVudGljYXRpb24sIHNvIHRoaXNcbiAqIGNvbW1hbmQgY2hhaW5zIHRocmVlIGNhbGxzOiBsb2dpbiAo4oaSIGFjY2VzcyB0b2tlbiksIHN0ZXAtdXAgd2l0aCB0aGUgc2FtZVxuICogcGFzc3dvcmQgKOKGkiBzdGVwLXVwIHRva2VuKSwgdGhlbiBQT1NUIC91c2VyL3BhdHMuIFRoZSBQQVQgYmluZHMgdG8gdGhlIHVzZXInc1xuICogYWN0aXZlIG9yZzsgcGFzcyBgLS1vcmdgIHRvIHN3aXRjaCBmaXJzdCAocGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcpLlxuICpcbiAqIFRoZSByYXcgdG9rZW4gaXMgcHJpbnRlZCBPTkNFLiBgLS1xdWlldGAgcHJpbnRzIG9ubHkgYGV4cG9ydCBQTEFURk9STV9UT0tFTj3igKZgXG4gKiBzbyBpdCBjYW4gYmUgYGV2YWxgJ2Qg4oCUIHRoZSBQQVQgaXMgaXRzZWxmIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIFBMQVRGT1JNX1BBU1NXT1JEPXNlY3JldCBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaS1kZXBsb3kgLXUgY2lAZXhhbXBsZS5jb21cbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpIC0tZXhwaXJlcy1kYXlzIDMwIC11IGNpQGV4YW1wbGUuY29tIC1wIHNlY3JldFxuICogZXZhbCAkKFBMQVRGT1JNX1BBU1NXT1JEPXNlY3JldCBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaSAtdSBjaUBleGFtcGxlLmNvbSAtLXF1aWV0KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXQocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3BhdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBuYW1lZCBQZXJzb25hbCBBY2Nlc3MgVG9rZW4gKGxvbmctbGl2ZWQgQ0xJL2F1dG9tYXRpb24gY3JlZGVudGlhbCknKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLS1uYW1lIDxuYW1lPicsICdIdW1hbi1yZWFkYWJsZSB0b2tlbiBuYW1lIChlLmcuIGNpLWRlcGxveSknKVxuICAgIC5vcHRpb24oJy0tZXhwaXJlcy1kYXlzIDxkYXlzPicsIGBUb2tlbiBsaWZldGltZSBpbiBkYXlzICgxLSR7TUFYX0VYUElSRVNfREFZU30pYCwgJzkwJylcbiAgICAub3B0aW9uKCctLXNjb3BlIDxzY29wZT4nLCAnT3B0aW9uYWwgdG9rZW4gc2NvcGUnKVxuICAgIC5vcHRpb24oJy11LCAtLWlkZW50aWZpZXIgPGlkZW50aWZpZXI+JywgJ1VzZXJuYW1lIG9yIGVtYWlsJylcbiAgICAub3B0aW9uKCctcCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIChwcmVmZXIgUExBVEZPUk1fUEFTU1dPUkQgZW52KScpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdCaW5kIHRoZSB0b2tlbiB0byBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiAoc3dpdGNoZXMgYWN0aXZlIG9yZyknKVxuICAgIC5vcHRpb24oJy0tdXJsIDx1cmw+JywgJ1BsYXRmb3JtIGJhc2UgVVJMJywgcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcblxuICAgICAgLy8gU0VDVVJJVFk6IHRoaXMgUE9TVHMgYSBwbGFpbnRleHQgcGFzc3dvcmQgKGxvZ2luICsgc3RlcC11cCkuIE5ldmVyIHNlbmQgaXRcbiAgICAgIC8vIG92ZXIgYW4gdW52ZXJpZmllZCBUTFMgY29ubmVjdGlvbiBpbiBwcm9kdWN0aW9uIOKAlCBhIE1JVE0gd291bGQgaGFydmVzdCBpdC5cbiAgICAgIC8vIE1pcnJvcnMgdGhlIGd1YXJkIGluIGBsb2dpbmAuIE5vbi1wcm9kdWN0aW9uIHN0aWxsIGhvbm9ycyAtLW5vLXZlcmlmeS1zc2wuXG4gICAgICBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZChvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIC8vIENyZWRlbnRpYWxzIGZyb20gZmxhZ3MgT1IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBlbnYgKHNvIHRoZVxuICAgICAgLy8gcGFzc3dvcmQgbmVlZCBub3QgYXBwZWFyIGluIHNoZWxsIGhpc3RvcnkgLyBgcHNgKS5cbiAgICAgIGNvbnN0IHsgaWRlbnRpZmllciwgcGFzc3dvcmQgfSA9IHJlc29sdmVDcmVkZW50aWFscyhvcHRpb25zKTtcbiAgICAgIGNvbnN0IHF1aWV0ID0gb3B0aW9ucy5xdWlldCA/PyBmYWxzZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgbmFtZS5cbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiBvcHRpb25zLm5hbWUgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5uYW1lLnRyaW0oKSA6ICcnO1xuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdUb2tlbiBuYW1lIGlzIHJlcXVpcmVkICgtLW5hbWUpJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Rva2VuIG5hbWUgbXVzdCBiZSAxMDAgY2hhcmFjdGVycyBvciBmZXdlcicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGV4cGlyeSDihpIgc2Vjb25kcy5cbiAgICAgICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoTnVtYmVyKG9wdGlvbnMuZXhwaXJlc0RheXMpKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGF5cykgfHwgZGF5cyA8IDEgfHwgZGF5cyA+IE1BWF9FWFBJUkVTX0RBWVMpIHtcbiAgICAgICAgICBwcmludEVycm9yKGAtLWV4cGlyZXMtZGF5cyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9FWFBJUkVTX0RBWVN9YCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IGRheXMgKiA4NjQwMDtcblxuICAgICAgICAvLyBDcmVkZW50aWFscyByZXF1aXJlZCDigJQgc3RlcC11cCBuZWVkcyBhIHBhc3N3b3JkLCBzbyAtLXJlZnJlc2ggY2FuJ3Qgd29yayBoZXJlLlxuICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgIXBhc3N3b3JkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignY3JlYXRlLXBhdCByZXF1aXJlcyAtLWlkZW50aWZpZXIgYW5kIC0tcGFzc3dvcmQgKG9yIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQgZW52KScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1Bhc3NpbmcgLS1wYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lIGNhbiBleHBvc2UgaXQgdmlhIHNoZWxsIGhpc3Rvcnk7IHByZWZlciB0aGUgUExBVEZPUk1fUEFTU1dPUkQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJhdGUgbGltaXRpbmcg4oCUIHByZXZlbnQgYnJ1dGUgZm9yY2UgKGtleWVkIHRvIGlkZW50aWZpZXIgKyB1cmwsIGxpa2UgbG9naW4pLlxuICAgICAgICBjb25zdCByYXRlTGltaXRNc2cgPSBjaGVja0F1dGhSYXRlTGltaXQoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICBpZiAocmF0ZUxpbWl0TXNnKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcihyYXRlTGltaXRNc2cpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGUgUGVyc29uYWwgQWNjZXNzIFRva2VuJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bWFnZW50YShgW0VYRS0ke2V4ZWN1dGlvbklkfV1gKX0gJHtjeWFuKGJvbGQoJ0NyZWF0ZSBQZXJzb25hbCBBY2Nlc3MgVG9rZW4nKSl9YCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnQXV0aGVudGljYXRpbmcnLCB7IGlkZW50aWZpZXIsIHVybDogb3B0aW9ucy51cmwsIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBodHRwc0FnZW50ID0gY3JlZGVudGlhbEh0dHBzQWdlbnQob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gVElNRU9VVFMuSFRUUF9SRVFVRVNUO1xuXG4gICAgICAgIC8vIDEpIExvZ2luIOKGkiBzZXNzaW9uIGFjY2VzcyB0b2tlbi5cbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCBwb3N0TG9naW4oeyB1cmw6IG9wdGlvbnMudXJsLCBpZGVudGlmaWVyLCBwYXNzd29yZCwgaHR0cHNBZ2VudCwgdGltZW91dCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWNvcmRBdXRoRmFpbHVyZShpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY2Nlc3NUb2tlbikge1xuICAgICAgICAgIHJlY29yZEF1dGhGYWlsdXJlKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcbiAgICAgICAgICBwcmludEVycm9yKCdMb2dpbiBmYWlsZWQ6IG5vIGFjY2VzcyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgcmVjb3JkQXV0aFN1Y2Nlc3MoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuXG4gICAgICAgIC8vIDIpIE9wdGlvbmFsbHkgYmluZCB0byBhIHNwZWNpZmljIG9yZyAocGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcsIHdoaWNoIHRoZVxuICAgICAgICAvLyAgICBQQVQgaW5oZXJpdHMpLlxuICAgICAgICBpZiAob3B0aW9ucy5vcmcpIHtcbiAgICAgICAgICBpZiAoIXF1aWV0KSBwcmludEluZm8oJ1N3aXRjaGluZyB0byBvcmdhbml6YXRpb24nLCB7IG9yZ0lkOiBvcHRpb25zLm9yZyB9KTtcbiAgICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHN3aXRjaE9yZ2FuaXphdGlvbih7XG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgb3JnSWQ6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMykgU3RlcC11cCDigJQgcmUtdmVyaWZ5IHRoZSBwYXNzd29yZCB0byB1bmxvY2sgdGhlIGdhdGVkIGNyZWF0ZSBjYWxsLlxuICAgICAgICAvLyAgICBUaGUgcmV0dXJuZWQgdG9rZW4gaXMgc2hvcnQtbGl2ZWQgKH42MHMpLCBzbyB3ZSB1c2UgaXQgaW1tZWRpYXRlbHkuXG4gICAgICAgIGNvbnN0IHN0ZXBVcFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvYXV0aC9zdGVwLXVwYDtcbiAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiBzdGVwVXBVcmwgfSk7XG4gICAgICAgIGNvbnN0IHN0ZXBVcFJlcyA9IGF3YWl0IGF4aW9zLnBvc3Q8U3RlcFVwUmVzcG9uc2U+KFxuICAgICAgICAgIHN0ZXBVcFVybCxcbiAgICAgICAgICB7IHBhc3N3b3JkIH0sXG4gICAgICAgICAgeyBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAgfSwgaHR0cHNBZ2VudCwgdGltZW91dCB9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdGVwVXBUb2tlbiA9IHN0ZXBVcFJlcy5kYXRhPy5kYXRhPy5zdGVwVXBUb2tlbjtcbiAgICAgICAgaWYgKCFzdGVwVXBUb2tlbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1N0ZXAtdXAgdmVyaWZpY2F0aW9uIGZhaWxlZDogbm8gc3RlcC11cCB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0KSBDcmVhdGUgdGhlIFBBVC5cbiAgICAgICAgY29uc3QgcGF0VXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS91c2VyL3BhdHNgO1xuICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IHBhdFVybCB9KTtcbiAgICAgICAgY29uc3QgcGF0UmVzID0gYXdhaXQgYXhpb3MucG9zdDxDcmVhdGVQYXRSZXNwb25zZT4oXG4gICAgICAgICAgcGF0VXJsLFxuICAgICAgICAgIHsgbmFtZSwgZXhwaXJlc0luLCAuLi4ob3B0aW9ucy5zY29wZSA/IHsgc2NvcGU6IG9wdGlvbnMuc2NvcGUgfSA6IHt9KSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICAgICAgICAgICAgJ1gtU3RlcC1VcC1Ub2tlbic6IHN0ZXBVcFRva2VuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG9rZW4gPSBwYXRSZXMuZGF0YT8uZGF0YT8udG9rZW47XG4gICAgICAgIGNvbnN0IHBhdCA9IHBhdFJlcy5kYXRhPy5kYXRhPy5wYXQ7XG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUgdG9rZW4gZmFpbGVkOiBubyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBRdWlldCBtb2RlOiBlbWl0IG9ubHkgdGhlIGV4cG9ydCBsaW5lICh0aGUgUEFUIGlzIGEgdmFsaWQgQmVhcmVyIHRva2VuKS5cbiAgICAgICAgaWYgKHF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke3Rva2VufWApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQZXJzb25hbCBhY2Nlc3MgdG9rZW4gY3JlYXRlZCcpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdOYW1lJzogcGF0Py5uYW1lID8/IG5hbWUsXG4gICAgICAgICAgJ1Rva2VuIElEIChqdGkpJzogcGF0Py5qdGkgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0V4cGlyZXMnOiBwYXQ/LmV4cGlyZXNBdCA/PyBgJHtkYXlzfSBkYXkocylgLFxuICAgICAgICAgIC4uLihwYXQ/LnNjb3BlID8geyBTY29wZTogcGF0LnNjb3BlIH0gOiB7fSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKHllbGxvdyhib2xkKCdDb3B5IHlvdXIgdG9rZW4gbm93IOKAlCBpdCB3aWxsIG5vdCBiZSBzaG93biBhZ2FpbjonKSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbih0b2tlbikpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGlwOiB1c2UgaXQgYXMgUExBVEZPUk1fVE9LRU4gZm9yIHN1YnNlcXVlbnQgY29tbWFuZHM6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKCcgIGV4cG9ydCBQTEFURk9STV9UT0tFTj08dG9rZW4+JykpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICAjIG9yOiAgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lICR7bmFtZX0gLXUgJHtpZGVudGlmaWVyfSAtLXF1aWV0KWApKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXJyb3IucmVzcG9uc2U/LnN0YXR1cztcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKGVycm9yLnJlc3BvbnNlPy5kYXRhIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZTtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUgdG9rZW4gZmFpbGVkJywge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdjcmVhdGUtcGF0JywgZXhlY3V0aW9uSWQsIGlkZW50aWZpZXI6IG9wdGlvbnMuaWRlbnRpZmllciwgdXJsOiBvcHRpb25zLnVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type OutputFormat } from '../config/cli.constants.js';
|
|
3
|
+
import { ApiClient } from '../utils/api-client.js';
|
|
4
|
+
/** Options common to the single-entity `get` commands. */
|
|
5
|
+
export interface GetEntityOptions {
|
|
6
|
+
id: string;
|
|
7
|
+
format: OutputFormat;
|
|
8
|
+
output?: string;
|
|
9
|
+
verifySsl?: boolean;
|
|
10
|
+
showProps?: boolean;
|
|
11
|
+
showMetadata?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Per-entity configuration for {@link runGetEntity}. Captures everything that
|
|
15
|
+
* differs between `get-pipeline` and `get-plugin`; the surrounding scaffold
|
|
16
|
+
* (header, SSL warning, fetch, summary table, execution summary, file output,
|
|
17
|
+
* error handling) is identical and lives in the runner.
|
|
18
|
+
*/
|
|
19
|
+
export interface GetEntitySpec<TEntity extends {
|
|
20
|
+
id: string;
|
|
21
|
+
}> {
|
|
22
|
+
/** Title-case entity label, e.g. `'Pipeline'`. Drives headers and messages. */
|
|
23
|
+
label: string;
|
|
24
|
+
/** Response-envelope key the entity is nested under, e.g. `'pipeline'`. */
|
|
25
|
+
responseKey: string;
|
|
26
|
+
/** Build the single-entity GET URL from the authenticated client. */
|
|
27
|
+
urlFor: (client: ApiClient, id: string) => string;
|
|
28
|
+
/** Ordered key/value summary rendered as a table. */
|
|
29
|
+
summary: (entity: TEntity) => Record<string, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* Optional extra JSON block shown after the summary (pipeline properties /
|
|
32
|
+
* plugin metadata). Return `null` to omit.
|
|
33
|
+
*/
|
|
34
|
+
extra?: (options: GetEntityOptions, entity: TEntity) => {
|
|
35
|
+
infoLabel: string;
|
|
36
|
+
payload: object;
|
|
37
|
+
} | null;
|
|
38
|
+
/** Command name for error-handler context, e.g. `'get-pipeline'`. */
|
|
39
|
+
commandName: string;
|
|
40
|
+
/** Key under which the id is reported in error context, e.g. `'pipelineId'`. */
|
|
41
|
+
idContextKey: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Shared implementation of the single-entity `get` commands. Fetches one entity
|
|
45
|
+
* by ID, prints a summary (and optional properties/metadata block), and writes
|
|
46
|
+
* the raw entity in the requested format.
|
|
47
|
+
*/
|
|
48
|
+
export declare function runGetEntity<TEntity extends {
|
|
49
|
+
id: string;
|
|
50
|
+
}>(program: Command, options: GetEntityOptions, spec: GetEntitySpec<TEntity>): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=entity-get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-get.d.ts","sourceRoot":"","sources":["../../src/commands/entity-get.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOnD,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC3D,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,qDAAqD;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtG,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC/D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import pico from 'picocolors';
|
|
5
|
+
import {} from '../config/cli.constants.js';
|
|
6
|
+
import { ApiClient } from '../utils/api-client.js';
|
|
7
|
+
import { createAuthenticatedClient, printCommandHeader, printExecutionSummary, printSslWarning, validateEntityId } from '../utils/command-utils.js';
|
|
8
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
9
|
+
import { extractSingleResponse, outputData, printError, printInfo, printKeyValue, printSection, printSuccess } from '../utils/output-utils.js';
|
|
10
|
+
const { dim } = pico;
|
|
11
|
+
/**
|
|
12
|
+
* Shared implementation of the single-entity `get` commands. Fetches one entity
|
|
13
|
+
* by ID, prints a summary (and optional properties/metadata block), and writes
|
|
14
|
+
* the raw entity in the requested format.
|
|
15
|
+
*/
|
|
16
|
+
export async function runGetEntity(program, options, spec) {
|
|
17
|
+
const executionId = printCommandHeader(`Get ${spec.label}`);
|
|
18
|
+
const lower = spec.label.toLowerCase();
|
|
19
|
+
try {
|
|
20
|
+
printSslWarning(options.verifySsl);
|
|
21
|
+
printInfo('Request parameters', {
|
|
22
|
+
id: options.id,
|
|
23
|
+
format: options.format,
|
|
24
|
+
output: options.output || '(console)',
|
|
25
|
+
});
|
|
26
|
+
const entityId = validateEntityId(options.id, spec.label);
|
|
27
|
+
const client = createAuthenticatedClient(options);
|
|
28
|
+
console.log('');
|
|
29
|
+
printSection(`Fetching ${spec.label}`);
|
|
30
|
+
const startTime = Date.now();
|
|
31
|
+
const response = await client.get(spec.urlFor(client, entityId));
|
|
32
|
+
const duration = Date.now() - startTime;
|
|
33
|
+
const entity = extractSingleResponse(response, spec.responseKey, 'id');
|
|
34
|
+
if (!entity) {
|
|
35
|
+
printError(`No ${lower} returned from API`);
|
|
36
|
+
throw new Error(`Failed to retrieve ${lower} with ID: ${entityId}`);
|
|
37
|
+
}
|
|
38
|
+
console.log('');
|
|
39
|
+
printSection(`${spec.label} Retrieved Successfully`);
|
|
40
|
+
printKeyValue(spec.summary(entity));
|
|
41
|
+
const extra = spec.extra?.(options, entity);
|
|
42
|
+
if (extra) {
|
|
43
|
+
console.log('');
|
|
44
|
+
printInfo(extra.infoLabel, { keys: Object.keys(extra.payload).length });
|
|
45
|
+
console.log(dim('─'.repeat(process.stdout.columns || 80)));
|
|
46
|
+
console.log(JSON.stringify(extra.payload, null, 2));
|
|
47
|
+
console.log(dim('─'.repeat(process.stdout.columns || 80)));
|
|
48
|
+
}
|
|
49
|
+
printExecutionSummary(executionId, duration);
|
|
50
|
+
outputData(entity, {
|
|
51
|
+
format: options.format,
|
|
52
|
+
file: options.output,
|
|
53
|
+
silent: false,
|
|
54
|
+
});
|
|
55
|
+
if (options.output) {
|
|
56
|
+
console.log('');
|
|
57
|
+
printSuccess(`${spec.label} data saved`, { path: options.output });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
62
|
+
debug: program.opts().debug,
|
|
63
|
+
exit: true,
|
|
64
|
+
context: { command: spec.commandName, executionId, [spec.idContextKey]: options.id },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9lbnRpdHktZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEosT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBc0NyQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQWdCLEVBQ2hCLE9BQXlCLEVBQ3pCLElBQTRCO0lBRTVCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV2QyxJQUFJLENBQUM7UUFDSCxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRTtZQUM5QixFQUFFLEVBQUUsT0FBTyxDQUFD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ckUsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1NBQ3JGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4uL3V0aWxzL2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludEV4ZWN1dGlvblN1bW1hcnksIHByaW50U3NsV2FybmluZywgdmFsaWRhdGVFbnRpdHlJZCB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UsIG91dHB1dERhdGEsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGRpbSB9ID0gcGljbztcblxuLyoqIE9wdGlvbnMgY29tbW9uIHRvIHRoZSBzaW5nbGUtZW50aXR5IGBnZXRgIGNvbW1hbmRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRFbnRpdHlPcHRpb25zIHtcbiAgaWQ6IHN0cmluZztcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIG91dHB1dD86IHN0cmluZztcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgc2hvd1Byb3BzPzogYm9vbGVhbjtcbiAgc2hvd01ldGFkYXRhPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQZXItZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIHtAbGluayBydW5HZXRFbnRpdHl9LiBDYXB0dXJlcyBldmVyeXRoaW5nIHRoYXRcbiAqIGRpZmZlcnMgYmV0d2VlbiBgZ2V0LXBpcGVsaW5lYCBhbmQgYGdldC1wbHVnaW5gOyB0aGUgc3Vycm91bmRpbmcgc2NhZmZvbGRcbiAqIChoZWFkZXIsIFNTTCB3YXJuaW5nLCBmZXRjaCwgc3VtbWFyeSB0YWJsZSwgZXhlY3V0aW9uIHN1bW1hcnksIGZpbGUgb3V0cHV0LFxuICogZXJyb3IgaGFuZGxpbmcpIGlzIGlkZW50aWNhbCBhbmQgbGl2ZXMgaW4gdGhlIHJ1bm5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRFbnRpdHlTcGVjPFRFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfT4ge1xuICAvKiogVGl0bGUtY2FzZSBlbnRpdHkgbGFiZWwsIGUuZy4gYCdQaXBlbGluZSdgLiBEcml2ZXMgaGVhZGVycyBhbmQgbWVzc2FnZXMuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBSZXNwb25zZS1lbnZlbG9wZSBrZXkgdGhlIGVudGl0eSBpcyBuZXN0ZWQgdW5kZXIsIGUuZy4gYCdwaXBlbGluZSdgLiAqL1xuICByZXNwb25zZUtleTogc3RyaW5nO1xuICAvKiogQnVpbGQgdGhlIHNpbmdsZS1lbnRpdHkgR0VUIFVSTCBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIGNsaWVudC4gKi9cbiAgdXJsRm9yOiAoY2xpZW50OiBBcGlDbGllbnQsIGlkOiBzdHJpbmcpID0+IHN0cmluZztcbiAgLyoqIE9yZGVyZWQga2V5L3ZhbHVlIHN1bW1hcnkgcmVuZGVyZWQgYXMgYSB0YWJsZS4gKi9cbiAgc3VtbWFyeTogKGVudGl0eTogVEVudGl0eSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBleHRyYSBKU09OIGJsb2NrIHNob3duIGFmdGVyIHRoZSBzdW1tYXJ5IChwaXBlbGluZSBwcm9wZXJ0aWVzIC9cbiAgICogcGx1Z2luIG1ldGFkYXRhKS4gUmV0dXJuIGBudWxsYCB0byBvbWl0LlxuICAgKi9cbiAgZXh0cmE/OiAob3B0aW9uczogR2V0RW50aXR5T3B0aW9ucywgZW50aXR5OiBURW50aXR5KSA9PiB7IGluZm9MYWJlbDogc3RyaW5nOyBwYXlsb2FkOiBvYmplY3QgfSB8IG51bGw7XG4gIC8qKiBDb21tYW5kIG5hbWUgZm9yIGVycm9yLWhhbmRsZXIgY29udGV4dCwgZS5nLiBgJ2dldC1waXBlbGluZSdgLiAqL1xuICBjb21tYW5kTmFtZTogc3RyaW5nO1xuICAvKiogS2V5IHVuZGVyIHdoaWNoIHRoZSBpZCBpcyByZXBvcnRlZCBpbiBlcnJvciBjb250ZXh0LCBlLmcuIGAncGlwZWxpbmVJZCdgLiAqL1xuICBpZENvbnRleHRLZXk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTaGFyZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNpbmdsZS1lbnRpdHkgYGdldGAgY29tbWFuZHMuIEZldGNoZXMgb25lIGVudGl0eVxuICogYnkgSUQsIHByaW50cyBhIHN1bW1hcnkgKGFuZCBvcHRpb25hbCBwcm9wZXJ0aWVzL21ldGFkYXRhIGJsb2NrKSwgYW5kIHdyaXRlc1xuICogdGhlIHJhdyBlbnRpdHkgaW4gdGhlIHJlcXVlc3RlZCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5HZXRFbnRpdHk8VEVudGl0eSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9PihcbiAgcHJvZ3JhbTogQ29tbWFuZCxcbiAgb3B0aW9uczogR2V0RW50aXR5T3B0aW9ucyxcbiAgc3BlYzogR2V0RW50aXR5U3BlYzxURW50aXR5Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcihgR2V0ICR7c3BlYy5sYWJlbH1gKTtcbiAgY29uc3QgbG93ZXIgPSBzcGVjLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgdHJ5IHtcbiAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgIHByaW50SW5mbygnUmVxdWVzdCBwYXJhbWV0ZXJzJywge1xuICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCB8fCAnKGNvbnNvbGUpJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVudGl0eUlkID0gdmFsaWRhdGVFbnRpdHlJZChvcHRpb25zLmlkLCBzcGVjLmxhYmVsKTtcbiAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuXG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIHByaW50U2VjdGlvbihgRmV0Y2hpbmcgJHtzcGVjLmxhYmVsfWApO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoc3BlYy51cmxGb3IoY2xpZW50LCBlbnRpdHlJZCkpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgIGNvbnN0IGVudGl0eSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxURW50aXR5PihyZXNwb25zZSwgc3BlYy5yZXNwb25zZUtleSwgJ2lkJyk7XG4gICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgIHByaW50RXJyb3IoYE5vICR7bG93ZXJ9IHJldHVybmVkIGZyb20gQVBJYCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSAke2xvd2VyfSB3aXRoIElEOiAke2VudGl0eUlkfWApO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBwcmludFNlY3Rpb24oYCR7c3BlYy5sYWJlbH0gUmV0cmlldmVkIFN1Y2Nlc3NmdWxseWApO1xuICAgIHByaW50S2V5VmFsdWUoc3BlYy5zdW1tYXJ5KGVudGl0eSkpO1xuXG4gICAgY29uc3QgZXh0cmEgPSBzcGVjLmV4dHJhPy4ob3B0aW9ucywgZW50aXR5KTtcbiAgICBpZiAoZXh0cmEpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIHByaW50SW5mbyhleHRyYS5pbmZvTGFiZWwsIHsga2V5czogT2JqZWN0LmtleXMoZXh0cmEucGF5bG9hZCkubGVuZ3RoIH0pO1xuICAgICAgY29uc29sZS5sb2coZGltKCfilIAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKSkpO1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXh0cmEucGF5bG9hZCwgbnVsbCwgMikpO1xuICAgICAgY29uc29sZS5sb2coZGltKCfilIAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKSkpO1xuICAgIH1cblxuICAgIHByaW50RXhlY3V0aW9uU3VtbWFyeShleGVjdXRpb25JZCwgZHVyYXRpb24pO1xuXG4gICAgb3V0cHV0RGF0YShlbnRpdHksIHtcbiAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIHByaW50U3VjY2VzcyhgJHtzcGVjLmxhYmVsfSBkYXRhIHNhdmVkYCwgeyBwYXRoOiBvcHRpb25zLm91dHB1dCB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDogeyBjb21tYW5kOiBzcGVjLmNvbW1hbmROYW1lLCBleGVjdXRpb25JZCwgW3NwZWMuaWRDb250ZXh0S2V5XTogb3B0aW9ucy5pZCB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type OutputFormat } from '../config/cli.constants.js';
|
|
3
|
+
import { type Config } from '../utils/config-loader.js';
|
|
4
|
+
import { type CommonFilterParams } from '../utils/list-command-utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Per-entity configuration for {@link runListEntity}. Captures everything that
|
|
7
|
+
* differs between `list-pipelines` and `list-plugins`; the surrounding scaffold
|
|
8
|
+
* (header, filter display, pagination, query, results summary, output, perf
|
|
9
|
+
* metrics, error handling) is identical and lives in the runner.
|
|
10
|
+
*/
|
|
11
|
+
export interface ListEntitySpec<TItem, TFilter extends CommonFilterParams> {
|
|
12
|
+
/** Plural title-case label, e.g. `'Pipelines'`. Drives headers and messages. */
|
|
13
|
+
labelPlural: string;
|
|
14
|
+
/** Response-envelope key the items are nested under, e.g. `'pipelines'`. */
|
|
15
|
+
responseKey: string;
|
|
16
|
+
/** Build the list URL from the resolved config. */
|
|
17
|
+
listUrl: (config: Config) => string;
|
|
18
|
+
/** Merge entity-specific filters onto the common (pagination/sort) base. */
|
|
19
|
+
buildFilters: (options: Record<string, unknown>, base: CommonFilterParams) => TFilter;
|
|
20
|
+
/** Human-readable active-filter map shown before the query. */
|
|
21
|
+
activeFilters: (filters: TFilter) => Record<string, unknown>;
|
|
22
|
+
/** Optional table-only statistics block; return `null` to omit. */
|
|
23
|
+
statistics?: (items: TItem[]) => Record<string, unknown> | null;
|
|
24
|
+
/** Rows to serialize (full items when the show-flag is set, else a slim map). */
|
|
25
|
+
rows: (items: TItem[], options: Record<string, unknown>) => unknown;
|
|
26
|
+
/** Command name for error-handler context, e.g. `'list-pipelines'`. */
|
|
27
|
+
commandName: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Shared implementation of the list commands. Applies common + entity-specific
|
|
31
|
+
* filters, queries the API, prints a results summary (and optional statistics),
|
|
32
|
+
* and writes the rows in the requested format.
|
|
33
|
+
*/
|
|
34
|
+
export declare function runListEntity<TItem, TFilter extends CommonFilterParams>(program: Command, options: Record<string, unknown> & {
|
|
35
|
+
format?: OutputFormat;
|
|
36
|
+
output?: string;
|
|
37
|
+
verifySsl?: boolean;
|
|
38
|
+
}, spec: ListEntitySpec<TItem, TFilter>): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=entity-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-list.d.ts","sourceRoot":"","sources":["../../src/commands/entity-list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAsB,KAAK,kBAAkB,EAA6C,MAAM,gCAAgC,CAAC;AAGxI;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB;IACvE,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,4EAA4E;IAC5E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACtF,+DAA+D;IAC/D,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,mEAAmE;IACnE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,iFAAiF;IACjF,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IACpE,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB,EAC3E,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EAClG,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAuFf"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { formatDuration } from '../config/cli.constants.js';
|
|
5
|
+
import { createAuthenticatedClient, printCommandHeader, printSslWarning } from '../utils/command-utils.js';
|
|
6
|
+
import {} from '../utils/config-loader.js';
|
|
7
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
8
|
+
import { buildCommonFilters, displayListResults, displayPaginationInfo } from '../utils/list-command-utils.js';
|
|
9
|
+
import { extractListResponse, outputData, printInfo, printKeyValue, printSection } from '../utils/output-utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Shared implementation of the list commands. Applies common + entity-specific
|
|
12
|
+
* filters, queries the API, prints a results summary (and optional statistics),
|
|
13
|
+
* and writes the rows in the requested format.
|
|
14
|
+
*/
|
|
15
|
+
export async function runListEntity(program, options, spec) {
|
|
16
|
+
const executionId = printCommandHeader(`List ${spec.labelPlural}`, `Query ${spec.labelPlural}`);
|
|
17
|
+
const startTime = Date.now();
|
|
18
|
+
try {
|
|
19
|
+
const filterParams = spec.buildFilters(options, buildCommonFilters(options));
|
|
20
|
+
// Display active filters
|
|
21
|
+
const activeFilters = spec.activeFilters(filterParams);
|
|
22
|
+
if (Object.keys(activeFilters).length > 0) {
|
|
23
|
+
printInfo('Active Filters');
|
|
24
|
+
printKeyValue(activeFilters);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
printInfo(`No filters applied - fetching all ${spec.labelPlural.toLowerCase()}`);
|
|
28
|
+
}
|
|
29
|
+
displayPaginationInfo(filterParams);
|
|
30
|
+
// Security warning for SSL verification disabled
|
|
31
|
+
printSslWarning(options.verifySsl);
|
|
32
|
+
// Create authenticated API client
|
|
33
|
+
const client = createAuthenticatedClient(options);
|
|
34
|
+
const config = client.getConfig();
|
|
35
|
+
// Query
|
|
36
|
+
console.log('');
|
|
37
|
+
printSection(`Querying ${spec.labelPlural}`);
|
|
38
|
+
printInfo('Sending request to API...');
|
|
39
|
+
const requestStart = Date.now();
|
|
40
|
+
const response = await client.get(spec.listUrl(config), filterParams);
|
|
41
|
+
const requestDuration = Date.now() - requestStart;
|
|
42
|
+
// Handle response
|
|
43
|
+
const { items, total, hasMore } = extractListResponse(response, spec.responseKey);
|
|
44
|
+
console.log('');
|
|
45
|
+
printSection('✓ Query Complete');
|
|
46
|
+
// Display results summary
|
|
47
|
+
displayListResults(items, total, hasMore, spec.labelPlural, requestDuration, filterParams);
|
|
48
|
+
// Display statistics
|
|
49
|
+
if (items.length > 0 && options.format === 'table') {
|
|
50
|
+
const stats = spec.statistics?.(items);
|
|
51
|
+
if (stats) {
|
|
52
|
+
console.log('');
|
|
53
|
+
printInfo('Statistics');
|
|
54
|
+
printKeyValue(stats);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Output data in requested format
|
|
58
|
+
console.log('');
|
|
59
|
+
if (options.output) {
|
|
60
|
+
printInfo('Saving to file', { path: options.output, format: options.format });
|
|
61
|
+
}
|
|
62
|
+
outputData(spec.rows(items, options), {
|
|
63
|
+
format: options.format,
|
|
64
|
+
file: options.output,
|
|
65
|
+
});
|
|
66
|
+
// Performance metrics
|
|
67
|
+
console.log('');
|
|
68
|
+
printKeyValue({
|
|
69
|
+
'Execution ID': executionId,
|
|
70
|
+
'Total Duration': formatDuration(Date.now() - startTime),
|
|
71
|
+
});
|
|
72
|
+
console.log('');
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
76
|
+
debug: program.opts().debug,
|
|
77
|
+
exit: true,
|
|
78
|
+
context: {
|
|
79
|
+
command: spec.commandName,
|
|
80
|
+
executionId,
|
|
81
|
+
filters: options,
|
|
82
|
+
verifySsl: options.verifySsl,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZW50aXR5LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNHLE9BQU8sRUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUEyQixrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQTJCbkg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUNqQyxPQUFnQixFQUNoQixPQUFrRyxFQUNsRyxJQUFvQztJQUVwQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU3QixJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTdFLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxJ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WUFDWixjQUFjLEVBQUUsV0FBVztZQUMzQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztTQUN6RCxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3pCLFdBQVc7Z0JBQ1gsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUzthQUM3QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIHR5cGUgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnLWxvYWRlci5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGJ1aWxkQ29tbW9uRmlsdGVycywgdHlwZSBDb21tb25GaWx0ZXJQYXJhbXMsIGRpc3BsYXlMaXN0UmVzdWx0cywgZGlzcGxheVBhZ2luYXRpb25JbmZvIH0gZnJvbSAnLi4vdXRpbHMvbGlzdC1jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IGV4dHJhY3RMaXN0UmVzcG9uc2UsIG91dHB1dERhdGEsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuLyoqXG4gKiBQZXItZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIHtAbGluayBydW5MaXN0RW50aXR5fS4gQ2FwdHVyZXMgZXZlcnl0aGluZyB0aGF0XG4gKiBkaWZmZXJzIGJldHdlZW4gYGxpc3QtcGlwZWxpbmVzYCBhbmQgYGxpc3QtcGx1Z2luc2A7IHRoZSBzdXJyb3VuZGluZyBzY2FmZm9sZFxuICogKGhlYWRlciwgZmlsdGVyIGRpc3BsYXksIHBhZ2luYXRpb24sIHF1ZXJ5LCByZXN1bHRzIHN1bW1hcnksIG91dHB1dCwgcGVyZlxuICogbWV0cmljcywgZXJyb3IgaGFuZGxpbmcpIGlzIGlkZW50aWNhbCBhbmQgbGl2ZXMgaW4gdGhlIHJ1bm5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RW50aXR5U3BlYzxUSXRlbSwgVEZpbHRlciBleHRlbmRzIENvbW1vbkZpbHRlclBhcmFtcz4ge1xuICAvKiogUGx1cmFsIHRpdGxlLWNhc2UgbGFiZWwsIGUuZy4gYCdQaXBlbGluZXMnYC4gRHJpdmVzIGhlYWRlcnMgYW5kIG1lc3NhZ2VzLiAqL1xuICBsYWJlbFBsdXJhbDogc3RyaW5nO1xuICAvKiogUmVzcG9uc2UtZW52ZWxvcGUga2V5IHRoZSBpdGVtcyBhcmUgbmVzdGVkIHVuZGVyLCBlLmcuIGAncGlwZWxpbmVzJ2AuICovXG4gIHJlc3BvbnNlS2V5OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aGUgbGlzdCBVUkwgZnJvbSB0aGUgcmVzb2x2ZWQgY29uZmlnLiAqL1xuICBsaXN0VXJsOiAoY29uZmlnOiBDb25maWcpID0+IHN0cmluZztcbiAgLyoqIE1lcmdlIGVudGl0eS1zcGVjaWZpYyBmaWx0ZXJzIG9udG8gdGhlIGNvbW1vbiAocGFnaW5hdGlvbi9zb3J0KSBiYXNlLiAqL1xuICBidWlsZEZpbHRlcnM6IChvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgYmFzZTogQ29tbW9uRmlsdGVyUGFyYW1zKSA9PiBURmlsdGVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgYWN0aXZlLWZpbHRlciBtYXAgc2hvd24gYmVmb3JlIHRoZSBxdWVyeS4gKi9cbiAgYWN0aXZlRmlsdGVyczogKGZpbHRlcnM6IFRGaWx0ZXIpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogT3B0aW9uYWwgdGFibGUtb25seSBzdGF0aXN0aWNzIGJsb2NrOyByZXR1cm4gYG51bGxgIHRvIG9taXQuICovXG4gIHN0YXRpc3RpY3M/OiAoaXRlbXM6IFRJdGVtW10pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgLyoqIFJvd3MgdG8gc2VyaWFsaXplIChmdWxsIGl0ZW1zIHdoZW4gdGhlIHNob3ctZmxhZyBpcyBzZXQsIGVsc2UgYSBzbGltIG1hcCkuICovXG4gIHJvd3M6IChpdGVtczogVEl0ZW1bXSwgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHVua25vd247XG4gIC8qKiBDb21tYW5kIG5hbWUgZm9yIGVycm9yLWhhbmRsZXIgY29udGV4dCwgZS5nLiBgJ2xpc3QtcGlwZWxpbmVzJ2AuICovXG4gIGNvbW1hbmROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2hhcmVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsaXN0IGNvbW1hbmRzLiBBcHBsaWVzIGNvbW1vbiArIGVudGl0eS1zcGVjaWZpY1xuICogZmlsdGVycywgcXVlcmllcyB0aGUgQVBJLCBwcmludHMgYSByZXN1bHRzIHN1bW1hcnkgKGFuZCBvcHRpb25hbCBzdGF0aXN0aWNzKSxcbiAqIGFuZCB3cml0ZXMgdGhlIHJvd3MgaW4gdGhlIHJlcXVlc3RlZCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5MaXN0RW50aXR5PFRJdGVtLCBURmlsdGVyIGV4dGVuZHMgQ29tbW9uRmlsdGVyUGFyYW1zPihcbiAgcHJvZ3JhbTogQ29tbWFuZCxcbiAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7IGZvcm1hdD86IE91dHB1dEZvcm1hdDsgb3V0cHV0Pzogc3RyaW5nOyB2ZXJpZnlTc2w/OiBib29sZWFuIH0sXG4gIHNwZWM6IExpc3RFbnRpdHlTcGVjPFRJdGVtLCBURmlsdGVyPixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcihgTGlzdCAke3NwZWMubGFiZWxQbHVyYWx9YCwgYFF1ZXJ5ICR7c3BlYy5sYWJlbFBsdXJhbH1gKTtcbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGZpbHRlclBhcmFtcyA9IHNwZWMuYnVpbGRGaWx0ZXJzKG9wdGlvbnMsIGJ1aWxkQ29tbW9uRmlsdGVycyhvcHRpb25zKSk7XG5cbiAgICAvLyBEaXNwbGF5IGFjdGl2ZSBmaWx0ZXJzXG4gICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IHNwZWMuYWN0aXZlRmlsdGVycyhmaWx0ZXJQYXJhbXMpO1xuICAgIGlmIChPYmplY3Qua2V5cyhhY3RpdmVGaWx0ZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICBwcmludEluZm8oJ0FjdGl2ZSBGaWx0ZXJzJyk7XG4gICAgICBwcmludEtleVZhbHVlKGFjdGl2ZUZpbHRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmludEluZm8oYE5vIGZpbHRlcnMgYXBwbGllZCAtIGZldGNoaW5nIGFsbCAke3NwZWMubGFiZWxQbHVyYWwudG9Mb3dlckNhc2UoKX1gKTtcbiAgICB9XG5cbiAgICBkaXNwbGF5UGFnaW5hdGlvbkluZm8oZmlsdGVyUGFyYW1zKTtcblxuICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQob3B0aW9ucyk7XG4gICAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gICAgLy8gUXVlcnlcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgcHJpbnRTZWN0aW9uKGBRdWVyeWluZyAke3NwZWMubGFiZWxQbHVyYWx9YCk7XG4gICAgcHJpbnRJbmZvKCdTZW5kaW5nIHJlcXVlc3QgdG8gQVBJLi4uJyk7XG5cbiAgICBjb25zdCByZXF1ZXN0U3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChcbiAgICAgIHNwZWMubGlzdFVybChjb25maWcpLFxuICAgICAgZmlsdGVyUGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk7XG4gICAgY29uc3QgcmVxdWVzdER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHJlcXVlc3RTdGFydDtcblxuICAgIC8vIEhhbmRsZSByZXNwb25zZVxuICAgIGNvbnN0IHsgaXRlbXMsIHRvdGFsLCBoYXNNb3JlIH0gPSBleHRyYWN0TGlzdFJlc3BvbnNlPFRJdGVtPihyZXNwb25zZSwgc3BlYy5yZXNwb25zZUtleSk7XG5cbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgcHJpbnRTZWN0aW9uKCfinJMgUXVlcnkgQ29tcGxldGUnKTtcblxuICAgIC8vIERpc3BsYXkgcmVzdWx0cyBzdW1tYXJ5XG4gICAgZGlzcGxheUxpc3RSZXN1bHRzKGl0ZW1zLCB0b3RhbCwgaGFzTW9yZSwgc3BlYy5sYWJlbFBsdXJhbCwgcmVxdWVzdER1cmF0aW9uLCBmaWx0ZXJQYXJhbXMpO1xuXG4gICAgLy8gRGlzcGxheSBzdGF0aXN0aWNzXG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5mb3JtYXQgPT09ICd0YWJsZScpIHtcbiAgICAgIGNvbnN0IHN0YXRzID0gc3BlYy5zdGF0aXN0aWNzPy4oaXRlbXMpO1xuICAgICAgaWYgKHN0YXRzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdTdGF0aXN0aWNzJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoc3RhdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE91dHB1dCBkYXRhIGluIHJlcXVlc3RlZCBmb3JtYXRcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgaWYgKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgICBwcmludEluZm8oJ1NhdmluZyB0byBmaWxlJywgeyBwYXRoOiBvcHRpb25zLm91dHB1dCwgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCB9KTtcbiAgICB9XG5cbiAgICBvdXRwdXREYXRhKHNwZWMucm93cyhpdGVtcywgb3B0aW9ucyksIHtcbiAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICB9KTtcblxuICAgIC8vIFBlcmZvcm1hbmNlIG1ldHJpY3NcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAnVG90YWwgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSxcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGNvbW1hbmQ6IHNwZWMuY29tbWFuZE5hbWUsXG4gICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICBmaWx0ZXJzOiBvcHRpb25zLFxuICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/get-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"get-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/get-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgClD"}
|