@pipeline-builder/pipeline-data 4.3.7 → 4.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/pipeline-step-resolution.js +4 -4
- package/lib/api/reporting/analytics-queries.js +19 -18
- package/lib/api/reporting/plugin-exposure.js +3 -2
- package/lib/database/index.d.ts +1 -1
- package/lib/database/index.js +2 -2
- package/lib/database/pg-result.d.ts +11 -1
- package/lib/database/pg-result.js +14 -1
- package/lib/testing/exports.json +1 -0
- package/package.json +2 -2
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { and, eq, sql } from 'drizzle-orm';
|
|
19
19
|
import { schema } from '../database/drizzle-schema.js';
|
|
20
|
-
import { executeRows } from '../database/pg-result.js';
|
|
20
|
+
import { anyText, executeRows } from '../database/pg-result.js';
|
|
21
21
|
import { withTenantTx } from '../database/tenancy.js';
|
|
22
22
|
/** `Build/scan` → `['Build', 'scan']`; `synth` → `['synth', 'synth']`. */
|
|
23
23
|
export function stageAndStep(label) {
|
|
@@ -108,11 +108,11 @@ export async function declaredPipelinesForPlugin(target, limit) {
|
|
|
108
108
|
if (wanted.length === 0)
|
|
109
109
|
return { pipelines: [], truncated: false };
|
|
110
110
|
const pipelines = await executeRows(tx, sql `
|
|
111
|
-
SELECT p.id::text AS id, p.org_id, p.props FROM pipelines p WHERE p.id::text =
|
|
111
|
+
SELECT p.id::text AS id, p.org_id, p.props FROM pipelines p WHERE p.id::text = ${anyText(wanted)} AND p.deleted_at IS NULL
|
|
112
112
|
`);
|
|
113
113
|
const steps = await executeRows(tx, sql `
|
|
114
114
|
SELECT pipeline_id, stage_name, step_name, resolved_version, resolved_digest, root_org_id
|
|
115
|
-
FROM pipeline_plugin_resolution WHERE pipeline_id =
|
|
115
|
+
FROM pipeline_plugin_resolution WHERE pipeline_id = ${anyText(wanted)}
|
|
116
116
|
`);
|
|
117
117
|
return {
|
|
118
118
|
truncated,
|
|
@@ -160,4 +160,4 @@ export async function pipelineStepLookups(orgId, pipelineId) {
|
|
|
160
160
|
.where(and(eq(L().orgId, orgId), eq(L().pipelineId, pipelineId)))
|
|
161
161
|
.orderBy(L().stepKey));
|
|
162
162
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtc3RlcC1yZXNvbHV0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3BpcGVsaW5lLXN0ZXAtcmVzb2x1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBNEJ0RCwwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3hDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELHdGQUF3RjtBQUN4RixNQUFNLFVBQVUsV0FBVyxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7SUFDN0QsT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksUUFBUSxFQUFFLENBQUM7QUFDaEcsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxLQU14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QUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEosT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSTtRQUMxQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksRUFBRTtLQUN2QyxDQUFDO0lBQ0YsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxRCxNQUFNLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDckQsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsS0FBYSxFQUFFLFVBQWtCO0lBQ3pFLE9BQU8sWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzlDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDaEUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFrRSxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQZXItU1RFUCBwbHVnaW4gcmVzb2x1dGlvbiBzdGF0ZSBvZiBhIHBpcGVsaW5lLCBiZXlvbmQgdGhlIHZlcnNpb24tbGV2ZWxcbiAqIHJlcG9ydGluZyB0YWJsZXM6XG4gKlxuICogIC0ge0BsaW5rIGRlY2xhcmVkUmVzb2x1dGlvbn0g4oCUIHRoZSByb3dzIGBwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbmAgYW5kIHRoZVxuICogICAgZGVjbGFyZWQgZXhwb3N1cmVzIGFyZSB3cml0dGVuIGZyb20sIGdpdmVuIHRoZSBwaXBlbGluZSdzIHBsdWdpbiBzdGVwcyBhbmRcbiAqICAgIGEgcmVzb2x2ZXIuIE9ORSBhc3NlbWJseSBmb3IgYm90aCB3cml0ZXJzOiB0aGUgcGlwZWxpbmUgc2VydmljZSBvbiBhIHNhdmVcbiAqICAgIChyZXNvbHZpbmcgdGhlIHdheSBpdHMgY29udHJhY3QgY2hlY2sgZG9lcykgYW5kIHRoZSBwbHVnaW4gc2VydmljZSB3aGVuIGFcbiAqICAgIHB1Ymxpc2gsIGEgZmxhZyAvIHVuZmxhZyBvciBhIHlhbmsgY2hhbmdlcyB3aGF0IGEgZGVjbGFyZWQgcmFuZ2UgcmVzb2x2ZXMgdG9cbiAqICAgIChyZXNvbHZpbmcgdGhlIHdheSBgL3BsdWdpbnMvbG9va3VwYCBkb2VzKS4gVGhlIHN0ZXAgbGlzdCBjb21lcyBmcm9tIHRoZVxuICogICAgY2FsbGVyIChwaXBlbGluZS1jb3JlJ3MgYGNvbGxlY3RQbHVnaW5TdGVwc2AsIHdoaWNoIHRoaXMgcGFja2FnZSBjYW5ub3RcbiAqICAgIGltcG9ydCksIGFuZCB0aGUgd3JpdGVzIHN0YXkgd2l0aCB0aGUgY2FsbGVyLCBzbyBlYWNoIGNhbiB0ZXN0IGl0cyBvd24uXG4gKiAgLSBgcGlwZWxpbmVfc3RlcF9sb29rdXBzYCDigJQgd2hhdCBzeW50aCB3YXMgVE9MRCBwZXIgc3RlcCBhdCBpdHMgbGFzdCBsb29rdXBcbiAqICAgICh7QGxpbmsgcmVjb3JkU3RlcExvb2t1cH0pLCB3aGVuIHN5bnRoIHNlbmRzIHRoZSBzdGVwJ3MgY29udGV4dC5cbiAqL1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgdHlwZSB7IEV4cG9zdXJlU3RlcCwgUmVzb2x2ZWRTdGVwLCBTY2FuU3RhdGUgfSBmcm9tICcuL3JlcG9ydGluZy9wbHVnaW4tZXhwb3N1cmUuanMnO1xuaW1wb3J0IHsgc2NoZW1hIH0gZnJvbSAnLi4vZGF0YWJhc2UvZHJpenpsZS1zY2hlbWEuanMnO1xuaW1wb3J0IHsgZXhlY3V0ZVJvd3MgfSBmcm9tICcuLi9kYXRhYmFzZS9wZy1yZXN1bHQuanMnO1xuaW1wb3J0IHsgd2l0aFRlbmFudFR4IH0gZnJvbSAnLi4vZGF0YWJhc2UvdGVuYW5jeS5qcyc7XG5cbi8qKiBPbmUgcGx1Z2luIHN0ZXAgb2YgYSBwaXBlbGluZSwgYXMgcGlwZWxpbmUtY29yZSdzIGBjb2xsZWN0UGx1Z2luU3RlcHNgICsgYHBsdWdpbkxvb2t1cEZpbHRlcmAgZGVzY3JpYmUgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY2xhcmVkU3RlcElucHV0IHtcbiAgLyoqIGBzeW50aGAgb3IgYDxzdGFnZU5hbWU+LzxhbGlhcyA/PyBuYW1lPmAuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcHVibGlzaGVyPzogc3RyaW5nO1xuICAvKiogVGhlIHJlZmVyZW5jZSdzIG93biBgZmlsdGVyYCAoaXRzIGB2ZXJzaW9uYCBpcyB0aGUgZGVjbGFyZWQgc3BlYykuICovXG4gIGZpbHRlcj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogVGhlIGxvb2t1cCBmaWx0ZXIgc3ludGggd291bGQgc2VuZCBmb3IgaXQuICovXG4gIGxvb2t1cEZpbHRlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBXaGF0IGEgc3RlcCdzIHJlZmVyZW5jZSByZXNvbHZlZCB0by4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjbGFyZWRTdGVwUGx1Z2luIHtcbiAgaWQ6IHN0cmluZztcbiAgLyoqIFRoZSBsaXN0aW5nJ3MgcHVibGlzaGVyOyBudWxsIGZvciBhbiBvcmcgcm93LiAqL1xuICBwdWJsaXNoZXI6IHN0cmluZyB8IG51bGw7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBpbWFnZURpZ2VzdD86IHN0cmluZyB8IG51bGw7XG4gIHNjYW4/OiBTY2FuU3RhdGU7XG59XG5cbi8qKiBBIHJlc29sdmVyJ3MgYW5zd2VyOiBhIHBsdWdpbiwgYSByZWZ1c2FsICh0aGUgcmVmZXJlbmNlIGNhbid0IHJlc29sdmUpLCBvciBub3RoaW5nIGF0IGFsbC4gKi9cbmV4cG9ydCB0eXBlIERlY2xhcmVkU3RlcFJlc29sdXRpb24gPSB7IHBsdWdpbjogRGVjbGFyZWRTdGVwUGx1Z2luIH0gfCB7IHJlZnVzYWw6IHVua25vd24gfSB8IG51bGw7XG5cbi8qKiBgQnVpbGQvc2NhbmAg4oaSIGBbJ0J1aWxkJywgJ3NjYW4nXWA7IGBzeW50aGAg4oaSIGBbJ3N5bnRoJywgJ3N5bnRoJ11gLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YWdlQW5kU3RlcChsYWJlbDogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gIGNvbnN0IGF0ID0gbGFiZWwuaW5kZXhPZignLycpO1xuICByZXR1cm4gYXQgPT09IC0xID8gW2xhYmVsLCBsYWJlbF0gOiBbbGFiZWwuc2xpY2UoMCwgYXQpLCBsYWJlbC5zbGljZShhdCArIDEpXTtcbn1cblxuLyoqIFRoZSBzdGVwIGxhYmVsIGEgcmVzb2x1dGlvbiByb3cgc3RhbmRzIGZvciAodGhlIGludmVyc2Ugb2Yge0BsaW5rIHN0YWdlQW5kU3RlcH0pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0ZXBMYWJlbE9mKHN0YWdlTmFtZTogc3RyaW5nLCBzdGVwTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0YWdlTmFtZSA9PT0gc3RlcE5hbWUgJiYgc3RhZ2VOYW1lID09PSAnc3ludGgnID8gJ3N5bnRoJyA6IGAke3N0YWdlTmFtZX0vJHtzdGVwTmFtZX1gO1xufVxuXG4vKipcbiAqIFRoZSBkZWNsYXJlZCByZXNvbHV0aW9uIHJvd3Mgb2YgYSBwaXBlbGluZSBhbmQgdGhlIHN0ZXBzIGl0cyBERUNMQVJFRFxuICogZXhwb3N1cmVzIHJlY29uY2lsZSBhZ2FpbnN0LiBFYWNoIHN0ZXAgcmVzb2x2ZXMgYXMgc3ludGggd291bGQsIHBsdXMgd2hhdCBhblxuICogVU5WRVJTSU9ORUQgcmVmZXJlbmNlIHJlc29sdmVzIHRvIG5vdyAodGhlIFwibGF0ZXN0XCIgdGhlIHZlcnNpb24gZ2FwIGlzIG1lYXN1cmVkXG4gKiBhZ2FpbnN0KS4gQSByZWZ1c2VkIHJlZmVyZW5jZSBpcyByZWNvcmRlZCB3aXRoIG5vIHJlc29sdmVkIHZlcnNpb24gYW5kXG4gKiBgd2l0aGluUG9saWN5OiBmYWxzZWAgcmF0aGVyIHRoYW4gZHJvcHBlZDogXCJ0aGlzIHN0ZXAgY2FuIG5vIGxvbmdlciByZXNvbHZlXCJcbiAqIGlzIHByZWNpc2VseSB3aGF0IHRoZSBvdXRkYXRlZCBzZWN0aW9uIHNob3VsZCBzaG93LiBFYWNoIGRpc3RpbmN0IGZpbHRlciBpc1xuICogcmVzb2x2ZWQgb25jZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY2xhcmVkUmVzb2x1dGlvbihpbnB1dDoge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIHJvb3RPcmdJZD86IHN0cmluZyB8IG51bGw7XG4gIHN0ZXBzOiByZWFkb25seSBEZWNsYXJlZFN0ZXBJbnB1dFtdO1xuICByZXNvbHZlOiAoZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUHJvbWlzZTxEZWNsYXJlZFN0ZXBSZXNvbHV0aW9uPjtcbn0pOiBQcm9taXNlPHsgcm93czogUmVzb2x2ZWRTdGVwW107IGV4cG9zdXJlU3RlcHM6IEV4cG9zdXJlU3RlcFtdIH0+IHtcbiAgY29uc3QgbWVtbyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPERlY2xhcmVkU3RlcFJlc29sdXRpb24+PigpO1xuICBjb25zdCByZXNvbHZlID0gKGZpbHRlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShPYmplY3QuZW50cmllcyhmaWx0ZXIpLnNvcnQoKFthXSwgW2JdKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpKTtcbiAgICBsZXQgaGl0ID0gbWVtby5nZXQoa2V5KTtcbiAgICBpZiAoIWhpdCkge1xuICAgICAgaGl0ID0gaW5wdXQucmVzb2x2ZShmaWx0ZXIpO1xuICAgICAgbWVtby5zZXQoa2V5LCBoaXQpO1xuICAgIH1cbiAgICByZXR1cm4gaGl0O1xuICB9O1xuICBjb25zdCByb3dzID0gbmV3IE1hcDxzdHJpbmcsIFJlc29sdmVkU3RlcD4oKTtcbiAgY29uc3QgZXhwb3N1cmVTdGVwczogRXhwb3N1cmVTdGVwW10gPSBbXTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIGlucHV0LnN0ZXBzKSB7XG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IGF3YWl0IHJlc29sdmUoc3RlcC5sb29rdXBGaWx0ZXIpO1xuICAgIGNvbnN0IHBsdWdpbiA9IHJlc29sdXRpb24gJiYgJ3BsdWdpbicgaW4gcmVzb2x1dGlvbiA/IHJlc29sdXRpb24ucGx1Z2luIDogbnVsbDtcbiAgICBjb25zdCBsYXRlc3QgPSBhd2FpdCByZXNvbHZlKHsgbmFtZTogc3RlcC5uYW1lLCAuLi4oc3RlcC5wdWJsaXNoZXIgPyB7IHB1Ymxpc2hlcjogc3RlcC5wdWJsaXNoZXIgfSA6IHt9KSwgaXNBY3RpdmU6IHRydWUgfSk7XG4gICAgY29uc3QgbGF0ZXN0UGx1Z2luID0gbGF0ZXN0ICYmICdwbHVnaW4nIGluIGxhdGVzdCA/IGxhdGVzdC5wbHVnaW4gOiBudWxsO1xuICAgIGNvbnN0IFtzdGFnZU5hbWUsIHN0ZXBOYW1lXSA9IHN0YWdlQW5kU3RlcChzdGVwLmxhYmVsKTtcbiAgICByb3dzLnNldChgJHtzdGFnZU5hbWV9XFx1MDAwMCR7c3RlcE5hbWV9YCwge1xuICAgICAgb3JnSWQ6IGlucHV0Lm9yZ0lkLFxuICAgICAgcGlwZWxpbmVJZDogaW5wdXQucGlwZWxpbmVJZCxcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIHN0ZXBOYW1lLFxuICAgICAgcGx1Z2luUHVibGlzaGVyOiBwbHVnaW4/LnB1Ymxpc2hlciA/PyBzdGVwLnB1Ymxpc2hlciA/PyBudWxsLFxuICAgICAgcGx1Z2luTmFtZTogcGx1Z2luPy5uYW1lID8/IHN0ZXAubmFtZSxcbiAgICAgIGRlY2xhcmVkVmVyc2lvbjogdHlwZW9mIHN0ZXAuZmlsdGVyPy52ZXJzaW9uID09PSAnc3RyaW5nJyA/IHN0ZXAuZmlsdGVyLnZlcnNpb24gOiBudWxsLFxuICAgICAgcmVzb2x2ZWRWZXJzaW9uOiBwbHVnaW4/LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgIHJlc29sdmVkUGx1Z2luSWQ6IHBsdWdpbj8uaWQgPz8gbnVsbCxcbiAgICAgIHJlc29sdmVkRGlnZXN0OiBwbHVnaW4/LmltYWdlRGlnZXN0ID8/IG51bGwsXG4gICAgICBsYXRlc3RWZXJzaW9uOiBsYXRlc3RQbHVnaW4/LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgIHdpdGhpblBvbGljeTogIShyZXNvbHV0aW9uICYmICdyZWZ1c2FsJyBpbiByZXNvbHV0aW9uKSxcbiAgICAgIHJvb3RPcmdJZDogaW5wdXQucm9vdE9yZ0lkID8/IG51bGwsXG4gICAgfSk7XG4gICAgaWYgKHBsdWdpbikge1xuICAgICAgZXhwb3N1cmVTdGVwcy5wdXNoKHtcbiAgICAgICAgcGx1Z2luUHVibGlzaGVyOiBwbHVnaW4ucHVibGlzaGVyLFxuICAgICAgICBwbHVnaW5OYW1lOiBwbHVnaW4ubmFtZSxcbiAgICAgICAgcGx1Z2luVmVyc2lvbjogcGx1Z2luLnZlcnNpb24sXG4gICAgICAgIGltYWdlRGlnZXN0OiBwbHVnaW4uaW1hZ2VEaWdlc3QgPz8gbnVsbCxcbiAgICAgICAgc2NhbjogcGx1Z2luLnNjYW4gPz8ge30sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcm93czogWy4uLnJvd3MudmFsdWVzKCldLCBleHBvc3VyZVN0ZXBzIH07XG59XG5cbi8qKiBBIHBpcGVsaW5lIHdob3NlIGRlY2xhcmVkIHN0ZXBzIHJlZmVyZW5jZSBhIHBsdWdpbiwgd2l0aCB3aGF0IHJlLXJlc29sdmluZyBpdCBuZWVkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjbGFyZWRQaXBlbGluZVJlZiB7XG4gIHBpcGVsaW5lSWQ6IHN0cmluZztcbiAgb3JnSWQ6IHN0cmluZztcbiAgcm9vdE9yZ0lkOiBzdHJpbmcgfCBudWxsO1xuICBwcm9wczogdW5rbm93bjtcbiAgLyoqIFRoZSBzdGVwIHJvd3MgYXMgbGFzdCByZWNvcmRlZDogYHN0YWdlXFwwc3RlcGAg4oaSIHJlc29sdmVkIHZlcnNpb24gKyBkaWdlc3QuICovXG4gIGN1cnJlbnQ6IE1hcDxzdHJpbmcsIHsgcmVzb2x2ZWRWZXJzaW9uOiBzdHJpbmcgfCBudWxsOyByZXNvbHZlZERpZ2VzdDogc3RyaW5nIHwgbnVsbCB9Pjtcbn1cblxuLyoqXG4gKiBUaGUgTElWRSBwaXBlbGluZXMgd2hvc2UgZGVjbGFyZWQgc3RlcHMgcmVmZXJlbmNlIGEgcGx1Z2luIOKAlCBhIGxpc3RpbmcgKGV2ZXJ5XG4gKiBvcmcncyBwaXBlbGluZXMgbmFtaW5nIHRoYXQgcHVibGlzaGVyKSBvciBhbiBvcmcncyBvd24gcGx1Z2luICh0aGF0IG9yZydzIGFuZFxuICogaXRzIHRlYW1zJyB1bnF1YWxpZmllZCByZWZlcmVuY2VzKSDigJQgb2xkZXN0IGNvbXB1dGF0aW9uIGZpcnN0LCBhdCBtb3N0IGBsaW1pdGAuXG4gKiBNdXN0IHJ1biB3aXRoIGEgc2NvcGUgdGhhdCBjYW4gcmVhZCBldmVyeSBvcmcncyByb3dzIChlbGV2YXRlZCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNsYXJlZFBpcGVsaW5lc0ZvclBsdWdpbihcbiAgdGFyZ2V0OiB7IHBsdWdpbk5hbWU6IHN0cmluZzsgcHVibGlzaGVyOiBzdHJpbmcgfSB8IHsgcGx1Z2luTmFtZTogc3RyaW5nOyBvcmdJZDogc3RyaW5nIH0sXG4gIGxpbWl0OiBudW1iZXIsXG4pOiBQcm9taXNlPHsgcGlwZWxpbmVzOiBEZWNsYXJlZFBpcGVsaW5lUmVmW107IHRydW5jYXRlZDogYm9vbGVhbiB9PiB7XG4gIGNvbnN0IG93bmVyID0gJ3B1Ymxpc2hlcicgaW4gdGFyZ2V0XG4gICAgPyBzcWxgci5wbHVnaW5fcHVibGlzaGVyID0gJHt0YXJnZXQucHVibGlzaGVyfWBcbiAgICA6IHNxbGByLnBsdWdpbl9wdWJsaXNoZXIgSVMgTlVMTCBBTkQgKGxvd2VyKHIub3JnX2lkKSA9ICR7dGFyZ2V0Lm9yZ0lkLnRvTG93ZXJDYXNlKCl9IE9SIGxvd2VyKHIucm9vdF9vcmdfaWQpID0gJHt0YXJnZXQub3JnSWQudG9Mb3dlckNhc2UoKX0pYDtcbiAgcmV0dXJuIHdpdGhUZW5hbnRUeChhc3luYyAodHgpID0+IHtcbiAgICBjb25zdCBpZHMgPSBhd2FpdCBleGVjdXRlUm93czx7IHBpcGVsaW5lX2lkOiBzdHJpbmcgfT4odHgsIHNxbGBcbiAgICAgIFNFTEVDVCByLnBpcGVsaW5lX2lkLCBNSU4oci5jb21wdXRlZF9hdCkgQVMgb2xkZXN0XG4gICAgICAgIEZST00gcGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb24gclxuICAgICAgICBKT0lOIHBpcGVsaW5lcyBwIE9OIHAuaWQ6OnRleHQgPSByLnBpcGVsaW5lX2lkIEFORCBwLmRlbGV0ZWRfYXQgSVMgTlVMTFxuICAgICAgIFdIRVJFIHIucGx1Z2luX25hbWUgPSAke3RhcmdldC5wbHVnaW5OYW1lfSBBTkQgJHtvd25lcn1cbiAgICAgICBHUk9VUCBCWSByLnBpcGVsaW5lX2lkXG4gICAgICAgT1JERVIgQlkgb2xkZXN0XG4gICAgICAgTElNSVQgJHtsaW1pdCArIDF9XG4gICAgYCk7XG4gICAgY29uc3QgdHJ1bmNhdGVkID0gaWRzLmxlbmd0aCA+IGxpbWl0O1xuICAgIGNvbnN0IHdhbnRlZCA9IGlkcy5zbGljZSgwLCBsaW1pdCkubWFwKChyKSA9PiByLnBpcGVsaW5lX2lkKTtcbiAgICBpZiAod2FudGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgcGlwZWxpbmVzOiBbXSwgdHJ1bmNhdGVkOiBmYWxzZSB9O1xuICAgIGNvbnN0IHBpcGVsaW5lcyA9IGF3YWl0IGV4ZWN1dGVSb3dzPHsgaWQ6IHN0cmluZzsgb3JnX2lkOiBzdHJpbmc7IHByb3BzOiB1bmtub3duIH0+KHR4LCBzcWxgXG4gICAgICBTRUxFQ1QgcC5pZDo6dGV4dCBBUyBpZCwgcC5vcmdfaWQsIHAucHJvcHMgRlJPTSBwaXBlbGluZXMgcCBXSEVSRSBwLmlkOjp0ZXh0ID0gQU5ZKCR7d2FudGVkfSkgQU5EIHAuZGVsZXRlZF9hdCBJUyBOVUxMXG4gICAgYCk7XG4gICAgY29uc3Qgc3RlcHMgPSBhd2FpdCBleGVjdXRlUm93czx7IHBpcGVsaW5lX2lkOiBzdHJpbmc7IHN0YWdlX25hbWU6IHN0cmluZzsgc3RlcF9uYW1lOiBzdHJpbmc7IHJlc29sdmVkX3ZlcnNpb246IHN0cmluZyB8IG51bGw7IHJlc29sdmVkX2RpZ2VzdDogc3RyaW5nIHwgbnVsbDsgcm9vdF9vcmdfaWQ6IHN0cmluZyB8IG51bGwgfT4odHgsIHNxbGBcbiAgICAgIFNFTEVDVCBwaXBlbGluZV9pZCwgc3RhZ2VfbmFtZSwgc3RlcF9uYW1lLCByZXNvbHZlZF92ZXJzaW9uLCByZXNvbHZlZF9kaWdlc3QsIHJvb3Rfb3JnX2lkXG4gICAgICAgIEZST00gcGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb24gV0hFUkUgcGlwZWxpbmVfaWQgPSBBTlkoJHt3YW50ZWR9KVxuICAgIGApO1xuICAgIHJldHVybiB7XG4gICAgICB0cnVuY2F0ZWQsXG4gICAgICBwaXBlbGluZXM6IHBpcGVsaW5lcy5tYXAoKHApID0+IHtcbiAgICAgICAgY29uc3Qgb3duID0gc3RlcHMuZmlsdGVyKChzKSA9PiBzLnBpcGVsaW5lX2lkID09PSBwLmlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwaXBlbGluZUlkOiBwLmlkLFxuICAgICAgICAgIG9yZ0lkOiBwLm9yZ19pZCxcbiAgICAgICAgICByb290T3JnSWQ6IG93bi5maW5kKChzKSA9PiBzLnJvb3Rfb3JnX2lkKT8ucm9vdF9vcmdfaWQgPz8gbnVsbCxcbiAgICAgICAgICBwcm9wczogcC5wcm9wcyxcbiAgICAgICAgICBjdXJyZW50OiBuZXcgTWFwKG93bi5tYXAoKHMpID0+IFtgJHtzLnN0YWdlX25hbWV9XFx1MDAwMCR7cy5zdGVwX25hbWV9YCwgeyByZXNvbHZlZFZlcnNpb246IHMucmVzb2x2ZWRfdmVyc2lvbiwgcmVzb2x2ZWREaWdlc3Q6IHMucmVzb2x2ZWRfZGlnZXN0IH1dKSksXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqIE9uZSBzdGVwJ3MgbG9va3VwIG91dGNvbWUsIGFzIGAvcGx1Z2lucy9sb29rdXBgIHJlY29yZHMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBMb29rdXBSZWNvcmQge1xuICBvcmdJZDogc3RyaW5nO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHN0ZXBLZXk6IHN0cmluZztcbiAgcGx1Z2luUHVibGlzaGVyPzogc3RyaW5nIHwgbnVsbDtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZXF1ZXN0ZWRWZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb2x2ZWRWZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb2x2ZWRQbHVnaW5JZD86IHN0cmluZyB8IG51bGw7XG4gIGltYWdlRGlnZXN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgd2FybmluZ3M6IEFycmF5PHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHNldmVyaXR5Pzogc3RyaW5nIH0+O1xuICByZWZ1c2FsPzogeyBjb2RlOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGw7XG4gIGxvb2tlZFVwQXQ/OiBEYXRlO1xufVxuXG5jb25zdCBMID0gKCkgPT4gc2NoZW1hLnBpcGVsaW5lU3RlcExvb2t1cDtcblxuLyoqXG4gKiBSZWNvcmQgKHJlcGxhY2UpIG9uZSBzdGVwJ3MgbGFzdCBsb29rdXAgb3V0Y29tZS4gUnVucyB1bmRlciB0aGUgQ0FMTEVSJ3NcbiAqIHNjb3BlLCB3aGljaCBSTFMgcGlucyB0byBpdHMgb3duIG9yZzogYSBjb250ZXh0IG5hbWluZyBhbm90aGVyIG9yZydzIHBpcGVsaW5lXG4gKiBpcyByZWZ1c2VkIGJ5IHRoZSBjYWxsZXIgYmVmb3JlIGl0IGdldHMgaGVyZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlY29yZFN0ZXBMb29rdXAocjogU3RlcExvb2t1cFJlY29yZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB2YWx1ZXMgPSB7XG4gICAgb3JnSWQ6IHIub3JnSWQsXG4gICAgcGlwZWxpbmVJZDogci5waXBlbGluZUlkLFxuICAgIHN0ZXBLZXk6IHIuc3RlcEtleSxcbiAgICBwbHVnaW5QdWJsaXNoZXI6IHIucGx1Z2luUHVibGlzaGVyID8/IG51bGwsXG4gICAgcGx1Z2luTmFtZTogci5wbHVnaW5OYW1lLFxuICAgIHJlcXVlc3RlZFZlcnNpb246IHIucmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgIHJlc29sdmVkVmVyc2lvbjogci5yZXNvbHZlZFZlcnNpb24gPz8gbnVsbCxcbiAgICByZXNvbHZlZFBsdWdpbklkOiByLnJlc29sdmVkUGx1Z2luSWQgPz8gbnVsbCxcbiAgICBpbWFnZURpZ2VzdDogci5pbWFnZURpZ2VzdCA/PyBudWxsLFxuICAgIHdhcm5pbmdzOiByLndhcm5pbmdzLnNsaWNlKDAsIDUwKS5tYXAoKHcpID0+ICh7IGNvZGU6IHcuY29kZSwgbWVzc2FnZTogdy5tZXNzYWdlLnNsaWNlKDAsIDIwMDApLCAuLi4ody5zZXZlcml0eSA/IHsgc2V2ZXJpdHk6IHcuc2V2ZXJpdHkgfSA6IHt9KSB9KSksXG4gICAgcmVmdXNhbDogci5yZWZ1c2FsID8/IG51bGwsXG4gICAgbG9va2VkVXBBdDogci5sb29rZWRVcEF0ID8/IG5ldyBEYXRlKCksXG4gIH07XG4gIGNvbnN0IHsgcGlwZWxpbmVJZDogX3AsIHN0ZXBLZXk6IF9zLCAuLi51cGRhdGUgfSA9IHZhbHVlcztcbiAgYXdhaXQgd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguaW5zZXJ0KEwoKSkudmFsdWVzKHZhbHVlcylcbiAgICAub25Db25mbGljdERvVXBkYXRlKHsgdGFyZ2V0OiBbTCgpLnBpcGVsaW5lSWQsIEwoKS5zdGVwS2V5XSwgc2V0OiB1cGRhdGUgfSkpO1xufVxuXG4vKiogQSBwaXBlbGluZSdzIHJlY29yZGVkIHN0ZXAgbG9va3VwcyAoaXRzIG9yZyBvbmx5KS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwaXBlbGluZVN0ZXBMb29rdXBzKG9yZ0lkOiBzdHJpbmcsIHBpcGVsaW5lSWQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8dHlwZW9mIHNjaGVtYS5waXBlbGluZVN0ZXBMb29rdXAuJGluZmVyU2VsZWN0Pj4ge1xuICByZXR1cm4gd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguc2VsZWN0KCkuZnJvbShMKCkpXG4gICAgLndoZXJlKGFuZChlcShMKCkub3JnSWQsIG9yZ0lkKSwgZXEoTCgpLnBpcGVsaW5lSWQsIHBpcGVsaW5lSWQpKSlcbiAgICAub3JkZXJCeShMKCkuc3RlcEtleSkpIGFzIFByb21pc2U8QXJyYXk8dHlwZW9mIHNjaGVtYS5waXBlbGluZVN0ZXBMb29rdXAuJGluZmVyU2VsZWN0Pj47XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtc3RlcC1yZXNvbHV0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3BpcGVsaW5lLXN0ZXAtcmVzb2x1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQTRCdEQsMEVBQTBFO0FBQzFFLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYTtJQUN4QyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCx3RkFBd0Y7QUFDeEYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUFpQixFQUFFLFFBQWdCO0lBQzdELE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ2hHLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtC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UGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyLVNURVAgcGx1Z2luIHJlc29sdXRpb24gc3RhdGUgb2YgYSBwaXBlbGluZSwgYmV5b25kIHRoZSB2ZXJzaW9uLWxldmVsXG4gKiByZXBvcnRpbmcgdGFibGVzOlxuICpcbiAqICAtIHtAbGluayBkZWNsYXJlZFJlc29sdXRpb259IOKAlCB0aGUgcm93cyBgcGlwZWxpbmVfcGx1Z2luX3Jlc29sdXRpb25gIGFuZCB0aGVcbiAqICAgIGRlY2xhcmVkIGV4cG9zdXJlcyBhcmUgd3JpdHRlbiBmcm9tLCBnaXZlbiB0aGUgcGlwZWxpbmUncyBwbHVnaW4gc3RlcHMgYW5kXG4gKiAgICBhIHJlc29sdmVyLiBPTkUgYXNzZW1ibHkgZm9yIGJvdGggd3JpdGVyczogdGhlIHBpcGVsaW5lIHNlcnZpY2Ugb24gYSBzYXZlXG4gKiAgICAocmVzb2x2aW5nIHRoZSB3YXkgaXRzIGNvbnRyYWN0IGNoZWNrIGRvZXMpIGFuZCB0aGUgcGx1Z2luIHNlcnZpY2Ugd2hlbiBhXG4gKiAgICBwdWJsaXNoLCBhIGZsYWcgLyB1bmZsYWcgb3IgYSB5YW5rIGNoYW5nZXMgd2hhdCBhIGRlY2xhcmVkIHJhbmdlIHJlc29sdmVzIHRvXG4gKiAgICAocmVzb2x2aW5nIHRoZSB3YXkgYC9wbHVnaW5zL2xvb2t1cGAgZG9lcykuIFRoZSBzdGVwIGxpc3QgY29tZXMgZnJvbSB0aGVcbiAqICAgIGNhbGxlciAocGlwZWxpbmUtY29yZSdzIGBjb2xsZWN0UGx1Z2luU3RlcHNgLCB3aGljaCB0aGlzIHBhY2thZ2UgY2Fubm90XG4gKiAgICBpbXBvcnQpLCBhbmQgdGhlIHdyaXRlcyBzdGF5IHdpdGggdGhlIGNhbGxlciwgc28gZWFjaCBjYW4gdGVzdCBpdHMgb3duLlxuICogIC0gYHBpcGVsaW5lX3N0ZXBfbG9va3Vwc2Ag4oCUIHdoYXQgc3ludGggd2FzIFRPTEQgcGVyIHN0ZXAgYXQgaXRzIGxhc3QgbG9va3VwXG4gKiAgICAoe0BsaW5rIHJlY29yZFN0ZXBMb29rdXB9KSwgd2hlbiBzeW50aCBzZW5kcyB0aGUgc3RlcCdzIGNvbnRleHQuXG4gKi9cblxuaW1wb3J0IHsgYW5kLCBlcSwgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHR5cGUgeyBFeHBvc3VyZVN0ZXAsIFJlc29sdmVkU3RlcCwgU2NhblN0YXRlIH0gZnJvbSAnLi9yZXBvcnRpbmcvcGx1Z2luLWV4cG9zdXJlLmpzJztcbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gJy4uL2RhdGFiYXNlL2RyaXp6bGUtc2NoZW1hLmpzJztcbmltcG9ydCB7IGFueVRleHQsIGV4ZWN1dGVSb3dzIH0gZnJvbSAnLi4vZGF0YWJhc2UvcGctcmVzdWx0LmpzJztcbmltcG9ydCB7IHdpdGhUZW5hbnRUeCB9IGZyb20gJy4uL2RhdGFiYXNlL3RlbmFuY3kuanMnO1xuXG4vKiogT25lIHBsdWdpbiBzdGVwIG9mIGEgcGlwZWxpbmUsIGFzIHBpcGVsaW5lLWNvcmUncyBgY29sbGVjdFBsdWdpblN0ZXBzYCArIGBwbHVnaW5Mb29rdXBGaWx0ZXJgIGRlc2NyaWJlIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNsYXJlZFN0ZXBJbnB1dCB7XG4gIC8qKiBgc3ludGhgIG9yIGA8c3RhZ2VOYW1lPi88YWxpYXMgPz8gbmFtZT5gLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHB1Ymxpc2hlcj86IHN0cmluZztcbiAgLyoqIFRoZSByZWZlcmVuY2UncyBvd24gYGZpbHRlcmAgKGl0cyBgdmVyc2lvbmAgaXMgdGhlIGRlY2xhcmVkIHNwZWMpLiAqL1xuICBmaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFRoZSBsb29rdXAgZmlsdGVyIHN5bnRoIHdvdWxkIHNlbmQgZm9yIGl0LiAqL1xuICBsb29rdXBGaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogV2hhdCBhIHN0ZXAncyByZWZlcmVuY2UgcmVzb2x2ZWQgdG8uICovXG5leHBvcnQgaW50ZXJmYWNlIERlY2xhcmVkU3RlcFBsdWdpbiB7XG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgbGlzdGluZydzIHB1Ymxpc2hlcjsgbnVsbCBmb3IgYW4gb3JnIHJvdy4gKi9cbiAgcHVibGlzaGVyOiBzdHJpbmcgfCBudWxsO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgaW1hZ2VEaWdlc3Q/OiBzdHJpbmcgfCBudWxsO1xuICBzY2FuPzogU2NhblN0YXRlO1xufVxuXG4vKiogQSByZXNvbHZlcidzIGFuc3dlcjogYSBwbHVnaW4sIGEgcmVmdXNhbCAodGhlIHJlZmVyZW5jZSBjYW4ndCByZXNvbHZlKSwgb3Igbm90aGluZyBhdCBhbGwuICovXG5leHBvcnQgdHlwZSBEZWNsYXJlZFN0ZXBSZXNvbHV0aW9uID0geyBwbHVnaW46IERlY2xhcmVkU3RlcFBsdWdpbiB9IHwgeyByZWZ1c2FsOiB1bmtub3duIH0gfCBudWxsO1xuXG4vKiogYEJ1aWxkL3NjYW5gIOKGkiBgWydCdWlsZCcsICdzY2FuJ11gOyBgc3ludGhgIOKGkiBgWydzeW50aCcsICdzeW50aCddYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFnZUFuZFN0ZXAobGFiZWw6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICBjb25zdCBhdCA9IGxhYmVsLmluZGV4T2YoJy8nKTtcbiAgcmV0dXJuIGF0ID09PSAtMSA/IFtsYWJlbCwgbGFiZWxdIDogW2xhYmVsLnNsaWNlKDAsIGF0KSwgbGFiZWwuc2xpY2UoYXQgKyAxKV07XG59XG5cbi8qKiBUaGUgc3RlcCBsYWJlbCBhIHJlc29sdXRpb24gcm93IHN0YW5kcyBmb3IgKHRoZSBpbnZlcnNlIG9mIHtAbGluayBzdGFnZUFuZFN0ZXB9KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwTGFiZWxPZihzdGFnZU5hbWU6IHN0cmluZywgc3RlcE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdGFnZU5hbWUgPT09IHN0ZXBOYW1lICYmIHN0YWdlTmFtZSA9PT0gJ3N5bnRoJyA/ICdzeW50aCcgOiBgJHtzdGFnZU5hbWV9LyR7c3RlcE5hbWV9YDtcbn1cblxuLyoqXG4gKiBUaGUgZGVjbGFyZWQgcmVzb2x1dGlvbiByb3dzIG9mIGEgcGlwZWxpbmUgYW5kIHRoZSBzdGVwcyBpdHMgREVDTEFSRURcbiAqIGV4cG9zdXJlcyByZWNvbmNpbGUgYWdhaW5zdC4gRWFjaCBzdGVwIHJlc29sdmVzIGFzIHN5bnRoIHdvdWxkLCBwbHVzIHdoYXQgYW5cbiAqIFVOVkVSU0lPTkVEIHJlZmVyZW5jZSByZXNvbHZlcyB0byBub3cgKHRoZSBcImxhdGVzdFwiIHRoZSB2ZXJzaW9uIGdhcCBpcyBtZWFzdXJlZFxuICogYWdhaW5zdCkuIEEgcmVmdXNlZCByZWZlcmVuY2UgaXMgcmVjb3JkZWQgd2l0aCBubyByZXNvbHZlZCB2ZXJzaW9uIGFuZFxuICogYHdpdGhpblBvbGljeTogZmFsc2VgIHJhdGhlciB0aGFuIGRyb3BwZWQ6IFwidGhpcyBzdGVwIGNhbiBubyBsb25nZXIgcmVzb2x2ZVwiXG4gKiBpcyBwcmVjaXNlbHkgd2hhdCB0aGUgb3V0ZGF0ZWQgc2VjdGlvbiBzaG91bGQgc2hvdy4gRWFjaCBkaXN0aW5jdCBmaWx0ZXIgaXNcbiAqIHJlc29sdmVkIG9uY2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNsYXJlZFJlc29sdXRpb24oaW5wdXQ6IHtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICBvcmdJZDogc3RyaW5nO1xuICByb290T3JnSWQ/OiBzdHJpbmcgfCBudWxsO1xuICBzdGVwczogcmVhZG9ubHkgRGVjbGFyZWRTdGVwSW5wdXRbXTtcbiAgcmVzb2x2ZTogKGZpbHRlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFByb21pc2U8RGVjbGFyZWRTdGVwUmVzb2x1dGlvbj47XG59KTogUHJvbWlzZTx7IHJvd3M6IFJlc29sdmVkU3RlcFtdOyBleHBvc3VyZVN0ZXBzOiBFeHBvc3VyZVN0ZXBbXSB9PiB7XG4gIGNvbnN0IG1lbW8gPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxEZWNsYXJlZFN0ZXBSZXNvbHV0aW9uPj4oKTtcbiAgY29uc3QgcmVzb2x2ZSA9IChmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmVudHJpZXMoZmlsdGVyKS5zb3J0KChbYV0sIFtiXSkgPT4gYS5sb2NhbGVDb21wYXJlKGIpKSk7XG4gICAgbGV0IGhpdCA9IG1lbW8uZ2V0KGtleSk7XG4gICAgaWYgKCFoaXQpIHtcbiAgICAgIGhpdCA9IGlucHV0LnJlc29sdmUoZmlsdGVyKTtcbiAgICAgIG1lbW8uc2V0KGtleSwgaGl0KTtcbiAgICB9XG4gICAgcmV0dXJuIGhpdDtcbiAgfTtcbiAgY29uc3Qgcm93cyA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvbHZlZFN0ZXA+KCk7XG4gIGNvbnN0IGV4cG9zdXJlU3RlcHM6IEV4cG9zdXJlU3RlcFtdID0gW107XG4gIGZvciAoY29uc3Qgc3RlcCBvZiBpbnB1dC5zdGVwcykge1xuICAgIGNvbnN0IHJlc29sdXRpb24gPSBhd2FpdCByZXNvbHZlKHN0ZXAubG9va3VwRmlsdGVyKTtcbiAgICBjb25zdCBwbHVnaW4gPSByZXNvbHV0aW9uICYmICdwbHVnaW4nIGluIHJlc29sdXRpb24gPyByZXNvbHV0aW9uLnBsdWdpbiA6IG51bGw7XG4gICAgY29uc3QgbGF0ZXN0ID0gYXdhaXQgcmVzb2x2ZSh7IG5hbWU6IHN0ZXAubmFtZSwgLi4uKHN0ZXAucHVibGlzaGVyID8geyBwdWJsaXNoZXI6IHN0ZXAucHVibGlzaGVyIH0gOiB7fSksIGlzQWN0aXZlOiB0cnVlIH0pO1xuICAgIGNvbnN0IGxhdGVzdFBsdWdpbiA9IGxhdGVzdCAmJiAncGx1Z2luJyBpbiBsYXRlc3QgPyBsYXRlc3QucGx1Z2luIDogbnVsbDtcbiAgICBjb25zdCBbc3RhZ2VOYW1lLCBzdGVwTmFtZV0gPSBzdGFnZUFuZFN0ZXAoc3RlcC5sYWJlbCk7XG4gICAgcm93cy5zZXQoYCR7c3RhZ2VOYW1lfVxcdTAwMDAke3N0ZXBOYW1lfWAsIHtcbiAgICAgIG9yZ0lkOiBpbnB1dC5vcmdJZCxcbiAgICAgIHBpcGVsaW5lSWQ6IGlucHV0LnBpcGVsaW5lSWQsXG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGVwTmFtZSxcbiAgICAgIHBsdWdpblB1Ymxpc2hlcjogcGx1Z2luPy5wdWJsaXNoZXIgPz8gc3RlcC5wdWJsaXNoZXIgPz8gbnVsbCxcbiAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbj8ubmFtZSA/PyBzdGVwLm5hbWUsXG4gICAgICBkZWNsYXJlZFZlcnNpb246IHR5cGVvZiBzdGVwLmZpbHRlcj8udmVyc2lvbiA9PT0gJ3N0cmluZycgPyBzdGVwLmZpbHRlci52ZXJzaW9uIDogbnVsbCxcbiAgICAgIHJlc29sdmVkVmVyc2lvbjogcGx1Z2luPy52ZXJzaW9uID8/IG51bGwsXG4gICAgICByZXNvbHZlZFBsdWdpbklkOiBwbHVnaW4/LmlkID8/IG51bGwsXG4gICAgICByZXNvbHZlZERpZ2VzdDogcGx1Z2luPy5pbWFnZURpZ2VzdCA/PyBudWxsLFxuICAgICAgbGF0ZXN0VmVyc2lvbjogbGF0ZXN0UGx1Z2luPy52ZXJzaW9uID8/IG51bGwsXG4gICAgICB3aXRoaW5Qb2xpY3k6ICEocmVzb2x1dGlvbiAmJiAncmVmdXNhbCcgaW4gcmVzb2x1dGlvbiksXG4gICAgICByb290T3JnSWQ6IGlucHV0LnJvb3RPcmdJZCA/PyBudWxsLFxuICAgIH0pO1xuICAgIGlmIChwbHVnaW4pIHtcbiAgICAgIGV4cG9zdXJlU3RlcHMucHVzaCh7XG4gICAgICAgIHBsdWdpblB1Ymxpc2hlcjogcGx1Z2luLnB1Ymxpc2hlcixcbiAgICAgICAgcGx1Z2luTmFtZTogcGx1Z2luLm5hbWUsXG4gICAgICAgIHBsdWdpblZlcnNpb246IHBsdWdpbi52ZXJzaW9uLFxuICAgICAgICBpbWFnZURpZ2VzdDogcGx1Z2luLmltYWdlRGlnZXN0ID8/IG51bGwsXG4gICAgICAgIHNjYW46IHBsdWdpbi5zY2FuID8/IHt9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJvd3M6IFsuLi5yb3dzLnZhbHVlcygpXSwgZXhwb3N1cmVTdGVwcyB9O1xufVxuXG4vKiogQSBwaXBlbGluZSB3aG9zZSBkZWNsYXJlZCBzdGVwcyByZWZlcmVuY2UgYSBwbHVnaW4sIHdpdGggd2hhdCByZS1yZXNvbHZpbmcgaXQgbmVlZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY2xhcmVkUGlwZWxpbmVSZWYge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIHJvb3RPcmdJZDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvcHM6IHVua25vd247XG4gIC8qKiBUaGUgc3RlcCByb3dzIGFzIGxhc3QgcmVjb3JkZWQ6IGBzdGFnZVxcMHN0ZXBgIOKGkiByZXNvbHZlZCB2ZXJzaW9uICsgZGlnZXN0LiAqL1xuICBjdXJyZW50OiBNYXA8c3RyaW5nLCB7IHJlc29sdmVkVmVyc2lvbjogc3RyaW5nIHwgbnVsbDsgcmVzb2x2ZWREaWdlc3Q6IHN0cmluZyB8IG51bGwgfT47XG59XG5cbi8qKlxuICogVGhlIExJVkUgcGlwZWxpbmVzIHdob3NlIGRlY2xhcmVkIHN0ZXBzIHJlZmVyZW5jZSBhIHBsdWdpbiDigJQgYSBsaXN0aW5nIChldmVyeVxuICogb3JnJ3MgcGlwZWxpbmVzIG5hbWluZyB0aGF0IHB1Ymxpc2hlcikgb3IgYW4gb3JnJ3Mgb3duIHBsdWdpbiAodGhhdCBvcmcncyBhbmRcbiAqIGl0cyB0ZWFtcycgdW5xdWFsaWZpZWQgcmVmZXJlbmNlcykg4oCUIG9sZGVzdCBjb21wdXRhdGlvbiBmaXJzdCwgYXQgbW9zdCBgbGltaXRgLlxuICogTXVzdCBydW4gd2l0aCBhIHNjb3BlIHRoYXQgY2FuIHJlYWQgZXZlcnkgb3JnJ3Mgcm93cyAoZWxldmF0ZWQpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjbGFyZWRQaXBlbGluZXNGb3JQbHVnaW4oXG4gIHRhcmdldDogeyBwbHVnaW5OYW1lOiBzdHJpbmc7IHB1Ymxpc2hlcjogc3RyaW5nIH0gfCB7IHBsdWdpbk5hbWU6IHN0cmluZzsgb3JnSWQ6IHN0cmluZyB9LFxuICBsaW1pdDogbnVtYmVyLFxuKTogUHJvbWlzZTx7IHBpcGVsaW5lczogRGVjbGFyZWRQaXBlbGluZVJlZltdOyB0cnVuY2F0ZWQ6IGJvb2xlYW4gfT4ge1xuICBjb25zdCBvd25lciA9ICdwdWJsaXNoZXInIGluIHRhcmdldFxuICAgID8gc3FsYHIucGx1Z2luX3B1Ymxpc2hlciA9ICR7dGFyZ2V0LnB1Ymxpc2hlcn1gXG4gICAgOiBzcWxgci5wbHVnaW5fcHVibGlzaGVyIElTIE5VTEwgQU5EIChsb3dlcihyLm9yZ19pZCkgPSAke3RhcmdldC5vcmdJZC50b0xvd2VyQ2FzZSgpfSBPUiBsb3dlcihyLnJvb3Rfb3JnX2lkKSA9ICR7dGFyZ2V0Lm9yZ0lkLnRvTG93ZXJDYXNlKCl9KWA7XG4gIHJldHVybiB3aXRoVGVuYW50VHgoYXN5bmMgKHR4KSA9PiB7XG4gICAgY29uc3QgaWRzID0gYXdhaXQgZXhlY3V0ZVJvd3M8eyBwaXBlbGluZV9pZDogc3RyaW5nIH0+KHR4LCBzcWxgXG4gICAgICBTRUxFQ1Qgci5waXBlbGluZV9pZCwgTUlOKHIuY29tcHV0ZWRfYXQpIEFTIG9sZGVzdFxuICAgICAgICBGUk9NIHBpcGVsaW5lX3BsdWdpbl9yZXNvbHV0aW9uIHJcbiAgICAgICAgSk9JTiBwaXBlbGluZXMgcCBPTiBwLmlkOjp0ZXh0ID0gci5waXBlbGluZV9pZCBBTkQgcC5kZWxldGVkX2F0IElTIE5VTExcbiAgICAgICBXSEVSRSByLnBsdWdpbl9uYW1lID0gJHt0YXJnZXQucGx1Z2luTmFtZX0gQU5EICR7b3duZXJ9XG4gICAgICAgR1JPVVAgQlkgci5waXBlbGluZV9pZFxuICAgICAgIE9SREVSIEJZIG9sZGVzdFxuICAgICAgIExJTUlUICR7bGltaXQgKyAxfVxuICAgIGApO1xuICAgIGNvbnN0IHRydW5jYXRlZCA9IGlkcy5sZW5ndGggPiBsaW1pdDtcbiAgICBjb25zdCB3YW50ZWQgPSBpZHMuc2xpY2UoMCwgbGltaXQpLm1hcCgocikgPT4gci5waXBlbGluZV9pZCk7XG4gICAgaWYgKHdhbnRlZC5sZW5ndGggPT09IDApIHJldHVybiB7IHBpcGVsaW5lczogW10sIHRydW5jYXRlZDogZmFsc2UgfTtcbiAgICBjb25zdCBwaXBlbGluZXMgPSBhd2FpdCBleGVjdXRlUm93czx7IGlkOiBzdHJpbmc7IG9yZ19pZDogc3RyaW5nOyBwcm9wczogdW5rbm93biB9Pih0eCwgc3FsYFxuICAgICAgU0VMRUNUIHAuaWQ6OnRleHQgQVMgaWQsIHAub3JnX2lkLCBwLnByb3BzIEZST00gcGlwZWxpbmVzIHAgV0hFUkUgcC5pZDo6dGV4dCA9ICR7YW55VGV4dCh3YW50ZWQpfSBBTkQgcC5kZWxldGVkX2F0IElTIE5VTExcbiAgICBgKTtcbiAgICBjb25zdCBzdGVwcyA9IGF3YWl0IGV4ZWN1dGVSb3dzPHsgcGlwZWxpbmVfaWQ6IHN0cmluZzsgc3RhZ2VfbmFtZTogc3RyaW5nOyBzdGVwX25hbWU6IHN0cmluZzsgcmVzb2x2ZWRfdmVyc2lvbjogc3RyaW5nIHwgbnVsbDsgcmVzb2x2ZWRfZGlnZXN0OiBzdHJpbmcgfCBudWxsOyByb290X29yZ19pZDogc3RyaW5nIHwgbnVsbCB9Pih0eCwgc3FsYFxuICAgICAgU0VMRUNUIHBpcGVsaW5lX2lkLCBzdGFnZV9uYW1lLCBzdGVwX25hbWUsIHJlc29sdmVkX3ZlcnNpb24sIHJlc29sdmVkX2RpZ2VzdCwgcm9vdF9vcmdfaWRcbiAgICAgICAgRlJPTSBwaXBlbGluZV9wbHVnaW5fcmVzb2x1dGlvbiBXSEVSRSBwaXBlbGluZV9pZCA9ICR7YW55VGV4dCh3YW50ZWQpfVxuICAgIGApO1xuICAgIHJldHVybiB7XG4gICAgICB0cnVuY2F0ZWQsXG4gICAgICBwaXBlbGluZXM6IHBpcGVsaW5lcy5tYXAoKHApID0+IHtcbiAgICAgICAgY29uc3Qgb3duID0gc3RlcHMuZmlsdGVyKChzKSA9PiBzLnBpcGVsaW5lX2lkID09PSBwLmlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwaXBlbGluZUlkOiBwLmlkLFxuICAgICAgICAgIG9yZ0lkOiBwLm9yZ19pZCxcbiAgICAgICAgICByb290T3JnSWQ6IG93bi5maW5kKChzKSA9PiBzLnJvb3Rfb3JnX2lkKT8ucm9vdF9vcmdfaWQgPz8gbnVsbCxcbiAgICAgICAgICBwcm9wczogcC5wcm9wcyxcbiAgICAgICAgICBjdXJyZW50OiBuZXcgTWFwKG93bi5tYXAoKHMpID0+IFtgJHtzLnN0YWdlX25hbWV9XFx1MDAwMCR7cy5zdGVwX25hbWV9YCwgeyByZXNvbHZlZFZlcnNpb246IHMucmVzb2x2ZWRfdmVyc2lvbiwgcmVzb2x2ZWREaWdlc3Q6IHMucmVzb2x2ZWRfZGlnZXN0IH1dKSksXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqIE9uZSBzdGVwJ3MgbG9va3VwIG91dGNvbWUsIGFzIGAvcGx1Z2lucy9sb29rdXBgIHJlY29yZHMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBMb29rdXBSZWNvcmQge1xuICBvcmdJZDogc3RyaW5nO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHN0ZXBLZXk6IHN0cmluZztcbiAgcGx1Z2luUHVibGlzaGVyPzogc3RyaW5nIHwgbnVsbDtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICByZXF1ZXN0ZWRWZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb2x2ZWRWZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb2x2ZWRQbHVnaW5JZD86IHN0cmluZyB8IG51bGw7XG4gIGltYWdlRGlnZXN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgd2FybmluZ3M6IEFycmF5PHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHNldmVyaXR5Pzogc3RyaW5nIH0+O1xuICByZWZ1c2FsPzogeyBjb2RlOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGw7XG4gIGxvb2tlZFVwQXQ/OiBEYXRlO1xufVxuXG5jb25zdCBMID0gKCkgPT4gc2NoZW1hLnBpcGVsaW5lU3RlcExvb2t1cDtcblxuLyoqXG4gKiBSZWNvcmQgKHJlcGxhY2UpIG9uZSBzdGVwJ3MgbGFzdCBsb29rdXAgb3V0Y29tZS4gUnVucyB1bmRlciB0aGUgQ0FMTEVSJ3NcbiAqIHNjb3BlLCB3aGljaCBSTFMgcGlucyB0byBpdHMgb3duIG9yZzogYSBjb250ZXh0IG5hbWluZyBhbm90aGVyIG9yZydzIHBpcGVsaW5lXG4gKiBpcyByZWZ1c2VkIGJ5IHRoZSBjYWxsZXIgYmVmb3JlIGl0IGdldHMgaGVyZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlY29yZFN0ZXBMb29rdXAocjogU3RlcExvb2t1cFJlY29yZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB2YWx1ZXMgPSB7XG4gICAgb3JnSWQ6IHIub3JnSWQsXG4gICAgcGlwZWxpbmVJZDogci5waXBlbGluZUlkLFxuICAgIHN0ZXBLZXk6IHIuc3RlcEtleSxcbiAgICBwbHVnaW5QdWJsaXNoZXI6IHIucGx1Z2luUHVibGlzaGVyID8/IG51bGwsXG4gICAgcGx1Z2luTmFtZTogci5wbHVnaW5OYW1lLFxuICAgIHJlcXVlc3RlZFZlcnNpb246IHIucmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgIHJlc29sdmVkVmVyc2lvbjogci5yZXNvbHZlZFZlcnNpb24gPz8gbnVsbCxcbiAgICByZXNvbHZlZFBsdWdpbklkOiByLnJlc29sdmVkUGx1Z2luSWQgPz8gbnVsbCxcbiAgICBpbWFnZURpZ2VzdDogci5pbWFnZURpZ2VzdCA/PyBudWxsLFxuICAgIHdhcm5pbmdzOiByLndhcm5pbmdzLnNsaWNlKDAsIDUwKS5tYXAoKHcpID0+ICh7IGNvZGU6IHcuY29kZSwgbWVzc2FnZTogdy5tZXNzYWdlLnNsaWNlKDAsIDIwMDApLCAuLi4ody5zZXZlcml0eSA/IHsgc2V2ZXJpdHk6IHcuc2V2ZXJpdHkgfSA6IHt9KSB9KSksXG4gICAgcmVmdXNhbDogci5yZWZ1c2FsID8/IG51bGwsXG4gICAgbG9va2VkVXBBdDogci5sb29rZWRVcEF0ID8/IG5ldyBEYXRlKCksXG4gIH07XG4gIGNvbnN0IHsgcGlwZWxpbmVJZDogX3AsIHN0ZXBLZXk6IF9zLCAuLi51cGRhdGUgfSA9IHZhbHVlcztcbiAgYXdhaXQgd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguaW5zZXJ0KEwoKSkudmFsdWVzKHZhbHVlcylcbiAgICAub25Db25mbGljdERvVXBkYXRlKHsgdGFyZ2V0OiBbTCgpLnBpcGVsaW5lSWQsIEwoKS5zdGVwS2V5XSwgc2V0OiB1cGRhdGUgfSkpO1xufVxuXG4vKiogQSBwaXBlbGluZSdzIHJlY29yZGVkIHN0ZXAgbG9va3VwcyAoaXRzIG9yZyBvbmx5KS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwaXBlbGluZVN0ZXBMb29rdXBzKG9yZ0lkOiBzdHJpbmcsIHBpcGVsaW5lSWQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8dHlwZW9mIHNjaGVtYS5waXBlbGluZVN0ZXBMb29rdXAuJGluZmVyU2VsZWN0Pj4ge1xuICByZXR1cm4gd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguc2VsZWN0KCkuZnJvbShMKCkpXG4gICAgLndoZXJlKGFuZChlcShMKCkub3JnSWQsIG9yZ0lkKSwgZXEoTCgpLnBpcGVsaW5lSWQsIHBpcGVsaW5lSWQpKSlcbiAgICAub3JkZXJCeShMKCkuc3RlcEtleSkpIGFzIFByb21pc2U8QXJyYXk8dHlwZW9mIHNjaGVtYS5waXBlbGluZVN0ZXBMb29rdXAuJGluZmVyU2VsZWN0Pj47XG59XG4iXX0=
|